DE69736105T2 - Hierarchische durchsuchlogik für ungeordnete lade/speicherausführungssteuerung - Google Patents

Hierarchische durchsuchlogik für ungeordnete lade/speicherausführungssteuerung Download PDF

Info

Publication number
DE69736105T2
DE69736105T2 DE69736105T DE69736105T DE69736105T2 DE 69736105 T2 DE69736105 T2 DE 69736105T2 DE 69736105 T DE69736105 T DE 69736105T DE 69736105 T DE69736105 T DE 69736105T DE 69736105 T2 DE69736105 T2 DE 69736105T2
Authority
DE
Germany
Prior art keywords
logic
entries
group
level
entry
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
DE69736105T
Other languages
English (en)
Other versions
DE69736105D1 (de
Inventor
E. Jeffrey San Jose TRULL
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.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices 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
Priority claimed from US08/592,209 external-priority patent/US5754812A/en
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE69736105D1 publication Critical patent/DE69736105D1/de
Application granted granted Critical
Publication of DE69736105T2 publication Critical patent/DE69736105T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

  • Technisches Gebiet
  • Diese Erfindung betrifft Prozessoren und betrifft insbesondere die Steuerung einer Befehlsausführung außerhalb der Reihenfolge in einem Prozessor mit mehreren Ausführungseinheiten.
  • Hintergrund der Erfindung
  • Computer für Allgemeinzwecke führen Programme aus, die typischerweise in einer ausführbaren Form als geordnete Sequenzen aus Maschinenbefehlen vorhanden sind. Für Menschen lesbare Darstellungen eines Programms werden in Sequenzen aus Maschinenbefehlen für eine gewünschte Zielarchitektur umgewandelt, beispielsweise in eine Objektkodierung für einen Prozessor entsprechend der x86-Prozessorarchitektur, wobei dies in einem Prozess stattfindet, der als Kompilierung bekannt ist. Typischerweise werden Computerprogramme mit der vereinfachenden Annahme gestaltet, kodiert und kompiliert, dass die resultierende Objektkodierung in einer bestimmten Reihenfolge ausgeführt wird. Jedoch wird trotz dieser Annahme in modernen Prozessorgestaltungsverfahren versucht, Möglichkeiten einer gleichzeitigen Ausführung von Maschinenbefehlen, d. h. einen Parallelismus für Befehle, auszunutzen.
  • Um den Rechendurchsatz zu maximieren, können „superskalare" Verfahren angewendet werden, um parallele Befehle mehreren Ausführungseinheiten zuzuordnen. Im Gegensatz dazu beinhalten Pipeline-Verfahren beziehungsweise überlappende Verfahren das Ausnutzen der Parallelität von Befehlen innerhalb von Stufen oder Schritten einer einzelnen Funktionseinheit oder eines Ausführungspfades. Superskalare Verfahren, die auf dem Gebiet superskalarer Prozessoren bekannt sind, beinhalten die Befehlsausgabe außerhalb der Reihenfolge, den Befehlsabschluss außerhalb der Reihenfolge und die spekulative Ausführung von Befehlen.
  • Die Befehlsausgabe außerhalb der Reihenfolge beinhaltet das Ausgeben von Befehlen zu Ausführungseinheiten mit nur geringem Bezug zu der tatsächlichen Reihenfolge von Befehlen in der Ausführungskodierung. Ein superskalarer Prozessor, der die Ausgabe außerhalb der Reihenfolge ausnutzt, ist lediglich durch Abhängigkeiten zwischen der Ausgabe (Ergebnissen) eines gegebenen Befehls und den Eingaben (Operanden) der nachfolgenden Befehle bei der Erstellung seiner Befehlsausgabesequenz beschränkt. Die Vervollständigung bzw. der Befehlsabschluss außerhalb der Reihenfolge ist andererseits eine Technik, die es ermöglicht, dass ein gegebener Befehl vor dem Ende eines Befehls abgeschlossen wird (beispielsweise wird das Ergebnis gespeichert), der in der Programmabfolge vorher angeordnet ist. Schließlich beinhaltet die spekulative Ausführung das Ausführen einer Befehlssequenz auf der Grundlage vorhergesagter Resultate (beispielsweise einer Verzweigung). Die spekulative Ausführung (d. h. die Ausführung unter der Annahme, dass Verzweigungen korrekt vorhergesagt sind) ermöglicht es einem Prozessor, Befehle auszuführen, ohne dass auf die tatsächliche Bewertung der Verzweigungsbedingungen gewartet werden muss. Unter der Annahme, dass Verzweigungen häufiger korrekt als falsch vorhergesagt werden und unter der Annahme, dass ein vernünftiges, effizientes Verfahren zum Rückgängigmachen der Ergebnisse einer nicht korrekten Vorhersage verfügbar ist, kann die Befehlsparallelität (d. h. die Anzahl an für die parallele Ausführung verfügbaren Befehlen) typischerweise durch die spekulative Ausführung erhöht werden (siehe Johnson, superskalare Prozessorgestaltung, Prentice-Hall, Inc., New Jersey, 1991, Seiten 63 bis 77 für Analysezwecke).
  • Das Ausführen von Befehlen außerhalb der Reihenfolge, d. h. das Ausgeben und Abschließen von Befehlen außerhalb der Sequenzreihenfolge, kann das Leistungsverhalten eines superskalaren Prozessors erhöhen, indem es dem superskalaren Prozessor möglich ist, mehrere Ausführungseinheiten zu unterhalten, die parallel arbeiten, wodurch der Durchsatz verbessert wird. Folglich kann eine Ablauforganisationseinheit beziehungsweise eine Disponiereinheit für einen superskalaren Prozessor das Gesamtleistungsverhalten verbessern, indem diese bestimmt, welche Befehle außerhalb der Reihenfolge ausgeführt werden können und indem diese Befehle zu geeigneten Ausführungseinheiten zugeführt oder ausgegeben werden. Eine Ablauforganisationseinheit beziehungsweise eine Disponiereinheit für einen superskalaren Prozessor muss auch Interrupt- und Einfangbefehle handhaben. In vielen Prozessorarchitekturen einschließlich der x86-Prozessorarchitektur ist es erforderlich, dass ein Systemzustand bekannt ist, unmittelbar bevor oder nachdem ein Befehl einen Fehler, einen Interrupt- oder einen Einfangbefehl erzeugt. Dies führt zu einem Problem, wenn Befehle außerhalb der Reihenfolge auszuführen sind. Daher muss die Disponiereinheit in der Lage sein, Befehle ungeschehen zu machen und den Systemzustand so zu rekonstruieren, als ob Befehle in der Reihenfolge ausgeführt werden.
  • Systemarchitekturen zum Ausnutzen der Befehlsparallelität, die mit jedem dieser Verfahren verknüpft ist, wurden in einer Vielzahl von Artikeln und Schriften vorgeschlagen. Für eine Erläuterung siehe beispielsweise Johnson, Seiten 127 bis 146 (Ausgabe außerhalb der Reihenfolge), Seiten 103 bis 126 (Befehlabschluss außerhalb der Reihenfolge und Abhängigkeit), Seiten 87 bis 102 (Rekonstruktion nach Verzweigungsfehlvorhersage). WO-A-94/08287 beschreibt ein System und ein Verfahren zum Handhaben von Lade- und/oder Speicher- beziehungsweise Schreiboperationen in einem superskalaren Mikroprozessor. Eine Lade/Speicher- beziehungsweise Schreibeinheit behandelt Cache-Speicheranforderungen außerhalb der Reihenfolge, erkennt Adressenkollisionen und ordnet Daten an.
  • Überblick über die Erfindung
  • Es wurde herausgefunden, dass Lade bzw. Lese- und Schreiboperationen im Allgemeinen unabhängig und außerhalb der Reihenfolge im Bezug zueinander in einem Prozessor ausgeführt werden können, der ein Lade/Speicher- bzw. Schreibausführungssteuerungssystem für außerhalb der Reihe auszuführende Befehle bereitstellt. Eine Abtastlogik bzw. eine Suchlogik, die das relative Alter von Schreiboperationen in Bezug auf eine spezielle Lade- bzw. Leseoperation (und von Ladeoperationen in Bezug auf eine spezielle Schreiboperation) überwacht, ermöglicht ein Lade/Schreib-Ausführungssteuerungssystem, das gemäß der vorliegenden Erfindung aufgebaut ist, um jüngere Schreiboperationen zu halten, bis ältere Ladeoperationen abgeschlossen sind (und um jüngere Ladeoperationen zu halten, bis ältere Schreiboperationen abgeschlossen sind). Insbesondere sorgen diverse Ausführungsformen einer hierarchisch organisierten Suchlogik beziehungsweise Abtastlogik in Baumstruktur, die gemäß der vorliegenden Erfindung aufgebaut ist, dafür, dass Anzeigen bzw. Indikationen für ältere Schreiboperationen und ältere Ladeoperationen mit sehr wenigen Gatter-Verzögerungen bereitgestellt werden, selbst in Prozessorausführungsformen, die zum gleichzeitigen Bewerten einer großen Anzahl von Operationen ausgebildet sind. Die in Verbindung mit der Suchlogik arbeitende Adressenübereinstimmungslogik erlaubt, dass das Lade-Schreib-Ausführungssteuerungssystem Lade-, Schreib- (und Schreib-, Lade-,) Abhängigkeiten vermeiden kann. In einem Prozessor mit einer Ladeeinheit und einer Schreibeinheit ermöglicht ein derartiges Lade/Schreibausführungssteuerungssystem Befehle zu laden und zu speichern, die allgemein im Bezug zueinander außerhalb der Reihenfolge aus geführt werden, wobei Datenabhängigkeiten zwischen den Lade- und Schreibbefehlen hervorgerufen werden.
  • Kurze Beschreibung der Zeichnungen
  • Die vorliegende Erfindung kann besser verstanden werden und die zahlreichen Aufgaben, Merkmale und Vorteile werden für den Fachmann offenkundig, indem auf die begleitenden Zeichnungen Bezug genommen wird.
  • 1 ist eine Blockansicht eines superskalaren Computerprozessors, der eine Steuerung der Ausführung bzw. der Abarbeitung außerhalb der Reihenfolge gemäß einer Ausführungsform der vorliegenden Erfindung bereitstellt.
  • 2 ist eine Blockansicht, die eine Disponiereinheit zeigt, die gemäß einer Ausführungsform der vorliegenden Erfindung aufgebaut ist.
  • 3 ist eine Ansicht einer Pipelinestufenverarbeitung, in der Systemstufen beim Ausführen von Befehlen gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt sind.
  • 4 ist eine Blockansicht von Ausführungssteuerungskomponenten für Lade- und Schreiboperationen außerhalb der Reihenfolge gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 5 ist ein Schaltbild einer Ladehaltelogik gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 6 ist ein Schaltbild einer Schreibhaltelogik gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 7 ist eine Blockansicht, die die Suchlogik gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 8 ist ein Logikdiagramm, das eine gruppeninterne Logik für die Suchlogik gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung zeigt.
  • 9 ist ein Logikdiagramm, das eine gruppenüberspannende Logik der ersten und der zweiten Ebene für eine Suchlogik gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 10 ist ein Logikdiagramm, das eine gruppenüberspannende Logik der dritten Ebene für die Suchlogik gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 11 ist eine Blockansicht eines Computersystems mit einem Prozessor, der eine Lade/Schreibausführungssteuerung außer der Reihenfolge gemäß einer Ausführungsform der vorliegenden Erfindung bereitstellt
  • 12 ist ein Logikdiagramm, das eine alternative Such- und Kombinierlogik zur Verbesserung des Verhaltens von Geschwindigkeitspfaden von Op-quad-0 abhängigen Bereichen der Suchlogik zeigt.
  • Die Verwendung gleicher Bezugszeichen in unterschiedlichen Zeichnungen soll ähnliche oder identische Komponenten betreffen.
  • Art beziehungsweise Arten zum Ausführen der Erfindung
  • 2 zeigt eine beispielhafte Ausführungsform einer Ablauforganisationseinheit bzw. Disponiereinheit 180 mit 24 Einträgen (die als Zeilen gezeigt sind), wobei jeder Eintrag mit einer anhängigen Op bzw. Operation verknüpft ist. Jeder Eintrag umfasst eine Reihe von Feldern, die gemeinsam als Disponierreservoir 240 dargestellt sind, um statische und dynamische Daten, die mit einer anhängigen Operation verknüpft sind, zu repräsentieren. Des weiteren stellt die Disponiereinheit 180 eine Reihe von spezialisierten Logikblöcken bereit, die kollektiv als Steuerlogik 230 gezeigt sind und die mit den Einträgen des Disponierreservoirs 240 verbunden sind, um mit anhängigen Operationen verknüpfte Daten zu empfangen. Die spezialisierten Logikblöcke (die als Spalten 231, 232, 233, 235 und 236 gezeigt sind) der Steuerlogik 230 tiefem Signale, die die Aneinanderreihung der Operations-(Op)ausführung steuern und das Zuführen von Operanden zu und das Verteilen von Ergebnissen von den Ausführungseinheiten steuern. Die Steuerlogik 230 umfasst eine Ausgabeauswahllogik 231, eine Operandenauswahllogik 232, eine Lade-, Schreibsortierlogik 234, eine Statusflaggenhandhabungslogik 235 und eine selbst modifizierende Kodierungsunterstützungslogik 536.
  • Die Ausgabeauswahllogik 231 steuert die Ausgabe von Operationen aus dem Disponierreservoir 240 zur Ausgabe an verfügbare Ausführungseinheiten während jedes Zyklus. Die Operandenauswahllogik 232 ermittelt eine geeignete Quelle für Operandendaten, die von den Operationen gefordert werden, die zu den Ausführungseinheiten ausgegeben wurden. Abhängig von Datenabhängigkeiten und der Anordnung von Operationen innerhalb der Ausführungsmaschine 150, kann die geeignete Quelle eine Registerdatei 190, ein Zielwertefeld, das mit einem weiteren anhängigen Operations-Eintrag (Zielwertefelder für Disponiereinheiteneinträge sind kollektiv als 250 dargestellt) verknüpf ist, oder das Ergebnis einer abgeschlossenen Operation sein, das auf einem der Ergebnisbusse (die gemeinsam als Ergebnisbusse 272 gezeigt sind) geliefert wird. Steuersignale, die von der Ausgabeauswahllogik 231 und der Operandenauswahllogik 232 bereit gestellt werden, ermöglichen es der Disponiereinheit 180, Operationen von dem Disponierreservoir 240 an verfügbare Ausführungseinheiten auszugeben und die geeignete Operandenquelle für jede ausgegebene Operation auszuwählen.
  • Die Disponiereinheit 180 enthält ein Zielwertfeld, das mit jedem Disponiereinheitseintrag verknüpft ist. Kollektiv sind diese Zielwertfelder als 250 gezeigt. Zusammen mit der Operandenauswahllogik 232 ergeben die Zielwertfelder 250 einen Umordnungspuffer und eine Umbenennung impliziter Register. Operandenwerte, die mit Systemregistern der Registerdatei 190 verknüpft sind, sind in den Zielwertfeldern 250 repräsentiert und werden typischerweise den Ausführungseinheiten als Registeroperandenwerte über Operandenbusse 271 zugeführt. Jedoch können Operandenwerte stattdessen von der Registerdatei 190 geliefert werden, wenn keines der Zielwertfelder 250 einen aktuelleren Registerzustand repräsentiert (d. h. einen bisher nicht zugewiesenen Registerzustand). Ergebnisse abgeschlossener Operationen werden über Ergebnisbusse 272 dem Zielwertfeld des Disponiereinheitseintrages zugeführt, der mit der abgeschlossenen Operation verknüpft ist. Des weiteren können diese Ergebnisse auch den Ausführungseinheiten als Operanden für anhängige Operationen zugeführt werden. Ergebnisse werden über die Ergebnisbusse 272 weitergeleitet.
  • Die Felder eines Disponierreservoireintrages (die anschaulich als Disponierreservoireintrag 240.1 gezeigt sind) enthalten Informationen im Hinblick auf eine Operation (Op), die auf die Ausführung wartet, die gerade ausgeführt wird oder die abgeschlossen ist. Die meisten der Felder eines Disponierreservoireintrages werden initialisiert, wenn ein Befehlsdekodierer 130 eine neue Operation in das Disponierreservoir 240 einlädt. Jedoch können andere Felder später eingeladen oder aktualisiert werden. Beispielsweise wird ein Zustandsfeld (das für jeden Eintrag als Feld 242 gezeigt ist) aktualisiert, wenn die entsprechende Operation die Stufen einer Ausführungs-Pipeline durchläuft. Speicherfelder, die einen Wert ab dem Einladen einer Operation in das Disponierreservoir 240 bis zur Rücknahme aus der Disponiereinheit 180 halten, werden als "statische Felder" bezeichnet. Felder, die mit neuen Werten aktualisiert werden können, werden als „dynamische Felder" bezeichnet. Im Rahmen der Lade/Schreib-Ausführungssteuerung werden zwei Felder, das Typenfeld 241 und das Zustandsfeld 242 weiter erläutert.
  • Ein 3-bit-Feld „Typ" [2:0] jedes Disponierreservoireintrages (in 2 als Typenfeld 241 gezeigt) spezifiziert die Operationsart, bzw. den Operationstyp, der dem Disponierreservoireintrag zugeordnet ist. Die Operationsart ist insbesondere für Ausgabeauswahlzwecke wichtig (beispielsweise sollten Ladeoperationen an eine Ladeeinheit, etwa 150, ausgegeben werden); jedoch kann die Steuerung der Reihenfolge der Lade/Schreiboperationen auch das Typenfeld 241 benutzen. Die folgenden Signale werden aus dem Typenfeld 241 heraus dekodiert:
    000= eine spezielle Operation, die tatsächlich nicht ausgeführt ist.
    010=LU eine Ladeoperation, die von der Ladeeinheit 152 ausgeführt wird.
    10x=SU eine Schreiboperation, die von der Schreib- bzw. Speichereinheit 153 ausgeführt wird.
    101=ST eine Schreiboperation, die den Speicher anspricht oder zumindest eine fehlbare Adresse erzeugt (d. h. nicht eine LEA-Operation).
    11x=RU eine Registeroperation, die von der Registereinheit X 154 oder möglicherweise von der Registereinheit Y 155 ausgeführt wird.
    110=RUX eine Registeroperation, die nur von der Registereinheit X 154 ausgeführt werden kann.
    111=RUY eine Registeroperation, die von der Registereinhit X 154 oder der Registereinheit Y 155 ausführbar ist.
  • Ein 4-bit-Feld "Zustand" [3:0] jedes Disponierreservoireintrages (das in 2 als Typenzustand 242 gezeigt ist) gibt den aktuellen Ausführungszustand einer Operation an (S3, S2, S1 und S0 sind alternative Signalnamen für „Zustand" [3:0]). Fünf mögliche Zustände des Typenfeldes 242 werden durch Verschieben eines Feldes aus Einsen wie folgt kodiert:
    0000 nicht ausgegeben
    0001 Stufe 0
    0011 Stufe 1
    0111 Stufe 2
    1111 abgeschlossen
  • Zwischenzustände entsprechen der aktuellen Ausführungsstufe einer Operation gemäß dem Eintrag, in welchem das Typenfeld auftritt. Die Bits werden aktualisiert (durch Verschieben nach links), wenn die Operation erfolgreich ausgegeben wurde und die Stufe verlässt. Zustand [3:0] wird auch während irgendwelcher Abbruchzyklen auf 1111 gesetzt.
  • Einteilung der Disponiereinheit in Vierer-Operationen (quad-Operationen)
  • Die Disponiereinhit 180 umfasst 24 Einträge in dem Disponierreservoir 240 und Zielwertfelder 250, die als ein FIFO verwaltet sind. Daten, die neuen Operationen entsprechen, werden „eingeladen bzw. eingelesen" und im Verlaufe der Ausführung nach „unten" verschoben und werden aus der Unterseite des Speicherreservoirs 240 als abgeschlossen zurückgenommen. Um die Steuerung zu vereinfachen, verwaltet die Disponiereinheit 180 das Disponierreservoir 240 und die Zielwertfelder 250 auf einer Op-Quad-Basis bzw. auf Basis von Vierer-Operationen. Operationen werden in das Disponierreservoir 240 in Gruppen aus vier eingeladen, durch dieses hindurch geschoben und daraus zurückgenommen. Auf diese Weise stimmt die „Granularität" der Disponiereinheit mit der Dekodierbandbreite des em-Kodierungs-ROM 142 und MacDec 141 des Befehlsdekodierers 140 überein. Die Disponiereinheit 180 verwaltet daher 24 Operationseinträge als sechs Vierer-Operations-Einträge in einem FIFO mit der Tiefe sechs und der Breite vier.
  • Trotz der Organisation mit Vierer-Operationen der Disponiereinheit 180 können viele Aspekte der Funktionsweise der Disponiereinheit am Besten erstanden werden, indem das Disponierreservoir 240, die Zielwertfelder 250 und die Steuerlogik 230 im Zusammenhang mit einer Granularität bzw. Unterteilung von 24 Einträgen betrachtet werden. Für anschauliche Zwecke wird die folgende Erläuterung im Hinblick auf eine Disponiereinheit 180 mit 24 Einträgen angegeben.
  • Operations-(Op)zeitablauf- und ausführungsstufen
  • Jeder Eintrag des Disponierreservoirs 240 umfasst Felder, die anhängige Operationen beschreiben. Diese Felder speichern statische Informationen, die ursprünglich aus den Operationen abgeleitet sind, die von dem Befehlsdekodierer 140 abgeholt oder dekodiert wurden, und speichern ebenso dynamische Zustandsinfonnationen, die sich aus der Operationsausführung ergeben oder die den Ausführungspipeline-Status einer gegebenen Operation kennzeichnen.
  • Aus Sicht der Prozessorsteuerung ist die Disponiereinheit 180 eine nach Reihenfolge geordnete Serie aus Befehlen aus Operations-Zustandsinformation (Disponierreservoir 240) mit einer zugeordneten Steuerlogik 230, die für das Ausgegeben von Operationen an entsprechende Ausführungseinheiten Steuersignale erzeugen, um die Operationsausführung durch Sequenzen aus Pipelinestufen zu steuern und um schließlich die Operationen aus der Disponiereinheit abgeschlossen zurückzunehmen. Wie in 2 gezeigt ist, umfasst die Steuerlogik 230 fünf spezialisierte Blöcke einer Steuerlogik (die Ausgabeauswahllogik 231, die Operandenauswahllogik 232, die Lade-Schreibsortierlogik 234, die Statusflaggenhandhabungslogik 235 und die selbst-modifizierende Kodierungsunterstützungslogik 236), wovon jede Bereiche (anschaulich als Bereiche 234.3 der Lade-, Schreib-Sortierlogik 234 gezeigt) zum Empfangen von Information von entsprechenden Einträgen des Disponierreservoir 240 aufweist. Steuerlogikblöcke tiefem Steuersignale zu den Ausführungseinheiten. Beispielsweise liefert die Lade-Schreib-Sortierlogik 234 Steuersignale zu der Ladeeinheit 152 und der Schreibeinheit 153 über Steuerleitungen, die gemeinsam als 273 dargestellt sind.
  • Die speziellen Steuersignale, die von den Steuerlogikblöcken des Disponierreservoirs 240 bereitgestellt werden, hängen von dem Zustand der Felder in den Operationseinträgen ab. Insbesondere bezeichnet das Zustandsfeld [3:0] den Vorgang des Ausführens zugeordneter Operationen. Aus Sicht der Logikstruktur basiert die gesamte sequentielle Verarbeitung innerhalb der Disponiereinheit auf einzelnen Zyklen. Entscheidungen über Zustandsübergänge werden bei jedem Taktzyklus auf der Grundlage des Maschinenzustandes während des Taktzyklus getroffen. Der Aufbau der Disponiereinheit 180 gibt die Pipeline-Natur der Operationsausführung wieder. Die Disponiereinheit 180 (und entsprechend jeder Eintrag) kann in viele unterschiedliche aber unabhängige Logikbereiche unterteilt werden, wovon jeder direkt einer speziellen Verarbeitungsstufe einer gegebenen Art einer Operation oder Ausführungspipeline zugeordnet ist.
  • Es wird nun mit Bezug zu 3 die Pipeline-Stufenverarbeitung in der Ausführungsmaschine 150 beschrieben. Sobald eine Operation in die Ausführungsmaschine 150 eingeladen ist, durchläuft die Operation drei oder vier Pipeline-Stufen und entsprechende Übergänge zwischen vier oder fünf Zuständen, die durch das Feld „Zustand" [3:0] innerhalb des Disponiereinheitseintrages repräsentiert sind, der der Operation zugeordnet ist. Die Befehlsabholung und Befehlsdekodierung werden vor der Ausführungsmaschine 150 ausgeführt, daher ist die erste Pipeline-Stufe in Bezug auf die Disponiereinheit die Ausgabestufe. 3 zeigt die Pipeline-Stufenbearbeitung für Registeroperationen (RegOp) und Lade/Schreiboperationen (LdStOp).
  • Die Disponiereinheit 180 übt die primäre Steuerung für das Ausführen der Pipeline während der Ausgabe- und Operandenabholstufen 330 und 340 aus. Die Verarbeitung innerhalb der Ausgabestufe 330 und in der Operandenabholstufe 340 kann in zwei Phasen pro Stufe aufgeteilt werden, wobei jede Phase normalerweise einen halben Taktzyklus in Anspruch nimmt. Die Ausgabestufe 330 umfasst eine Ausgabeauswahlphase und eine Rundfunkphase, während die Operandenabholstufe 340 eine Operandenauswahlphase und eine Operandenweiterieitungsphase enthält.
  • Ausgabestufe
  • Während der Ausgabeauswahlphase 330.1 der Ausgabestufe 330 wählt die Disponiereinheit 180 die nächsten Operationen aus, die in die Pipelines einzuladen sind, die mit der Ladeeinheit 152, der Schreibeinheit 153, der Registereinheit X 154 und der Registereinheit Y 155 verknüpft sind (die Auswahl von vier Operationen findet gleichzeitig statt). Während der Rundfunkphase 330.2 der Ausgabestufe 330 wird Information über jeden der Registeroperanden für jede ausgewählte Operation an alle Disponiereinträge und zu einer externen Logik (einschließlich der Registerdatei 190 und den Ausführungseinheiten) gesendet. Auf diese Weise initialisiert die Rundfunkphase 330.2 die Erkennung von Operandenwerte, die in einem der Zielwertfelder 250 der Disponiereinheit 180 oder in der Registerdatei 190 vorhanden sind, oder die den Ergebnissen entsprechen, die auf den Ergebnisbussen 272 einer der Ausführungseinheiten zu erzeugen sind (beispielsweise der Ladeeinheit 152, der Schreibeinheit 153 oder den Registereinheiten 154 und 155).
  • Operandenabholstufe
  • Während der Operandenauswahlphase 340.1 der Operandenabholstufe 340 bestimmt die Disponiereinheit 180 bis zu acht Operandenwerten (vier Operationen·zwei Operanden/Operation) und bestimmt den Status jedes Operandenwertes, d. h., ob ein gültiger Wert tatsächlich aus der bezeichneten Quelle verfügbar ist. Auf der Grundlage dieser Information bestimmt die Disponiereinheit 180, welche Operationen in der Operandenabholstufe 0 (Stufe 340) in ihre entsprechenden Ausführungspfade weitergehen, d. h. in die Stufe 1 (Stufe 350) nach der Operandenweiterleitungsphase. Entscheidungen über das Weiterleiten werden unabhängig für jede Operation getroffen und lediglich Operandenabhängigkeiten beschränken die Reihenfolge, mit der die Operationen tatsächlich ausgeführt werden. Beim Fehlen derartiger Datenabhängigkeiten werden Operationen, die an unterschiedliche Ausführungseinheiten ausgegeben werden, im Allgemeinen über ihre entsprechenden Pipelines in beliebiger Reihenfolge in Bezug auf jene Operationen ausgeführt, die anderen Ausführungseinheiten zugeordnet sind. Eine Ausnahme für diese allgemeine Regel betrifft die entsprechende Reihenfolge von Ladeoperationen und Schreiboperationen (d. h. LdOp und StOp) und wird nachfolgend detaillierter erläutert.
  • Ausführungsstufen für LdStOp
  • Die ersten beiden Stufen in Bezug auf die Disponiereinheit, d. h. die „Operandenausgabe"-Stufe 330 und die „Operandenabhol"- Stufe 340 sind für Registeroperationen (RegOp) und Lade/Schreiboperationen (LdStOps) üblich. Nachfolgende Stufen sind die Ausführungsstufen. Zu den Registeroperationen gehören eine einzelne Ausführungsstufe 350, da alle Registeroperationen in einem einzelnen Taktzyklus ausgeführt werden. Sobald eine Registeroperation in die Ausführungsstufe eintritt, wird sie stets erfolgreich abgeschlossen und verlässt die Stufe 350 am Ende dieses Taktzyklus. Lade/Schreiboperationen besitzen andererseits zwei Ausführungsstufen 352 und 360, während welchen eine Adressenberechnung, eine Segment- und Seitenübersetzung (und Schutzüberprüfung) und eine Daten-Cache-Speicherzugriffsoperation (im Falle von Ladeoperationen) jeweils stattfinden. Anders als Registeroperationen könne Lade/Schreiboperationen für beliebige Zeitdauern in der jeweiligen Stufe 360 oder 370 gehalten werde. Die meisten Halteereignisse treten in der zweiten Stufe 370 auf. Sehr häufig ergeben sich Halteereignisse in der Stufe 370 aus Nichttreffern für den Daten- Cachespeicher 170, aus Nichttreffern der Daten-TLB 171 und aus Seitenfehlern. Halteereignisse in der Stufe 360 ergeben sich aus falsch zugeordneten Speicherreferenzen und aus der Stufe 370, wenn diese von einer Lade/Schreiboperation, die nicht bis zum Abschluss weitergeht, besetzt und blockiert ist.
  • Während der Operandenweiterleitungsphase 340.2 der Operandenabholstufe 340 überträgt die Disponiereinheit 180 Operandenwerte von den zugeordneten Quellen über Operandenbusse und/oder Ergebnisbusse, die in 2 kollektiv als Busse 271 und 272 gezeigt sind, zu den Ausführungseinheiten, etwa die Ladeeinheit 152, die Schriebeinheit 153, die Registereinheit X 154 und die Registereinheit Y 155. Die beispielhafte Ausführungsform beinhaltet neun Operandenbusse 271, von denen acht Operandenwerte für Operationen in der Stufe 0 bereitstellen. Ferner treten in der anschaulichen Ausführungsform Operandenübertragungen auf, unabhängig davon, ob Werte gültig sind, wodurch die Steuerlogik vereinfacht wird. Wenn ein Operandenwert nicht gültig ist, wird dieser von der entsprechenden Ausführungseinheit ignoriert, da die Disponiereinheit 180 die zugeordnete Operation nicht an die Stufe 1 weiterleitet. Unmittelbare Werte für Registeroperationen werden als ein Teil des zuvor beschriebenen Registeroperandenweiterleitungsmechanismus behandelt. In derartigen Fällen wird der unmittelbare Wert direkt von dem speziellen Zielwertfeld 250 zu den Einträgen der Disponiereinheit 180 weitergeleitet, die der Operation zugeordnet sind.
  • Verschiebewerte werden ebenso während der Operandenweiterleitungsphase 340.2 über Verschiebebusse 189.4 zu der Ladeeinheit 152 und der Schreibeinheit 153 (unabhängige Werte für jede Einheit) übertragen. Diese Verschiebungen sind 32-Bit-Werte und stammen stets von Einträgen der Disponiereinheit 180. Die Auswahl des Eintrags geschieht während der Operandenauswahlphase 340.1. Wenn eine Ladeoperation oder eine Schreiboperation in die Stufe 1 eintritt, speichern die Ladeeinheit 152 und die Schreibeinheit 153 zugeordnete Verschiebe- und Operandenwerte.
  • Die Disponiereinheit 180 richtet einen Vier-Phasen-Steuermechanismus (wie er zuvor beschrieben ist) ein, um die Adressenoperanden und die Verschiebung bereitzustellen; jedoch erfordern Schreiboperationen einen Schreibdatenoperanden zusätzlich zu den Adressenoperanden und den Verschiebewerten. Die Disponiereinheit 180 führt einen Vier-Phasen-Prozess zum Erhalten der Speicherdaten für eine Schreiboperation aus. Der Vorgang zum Erhalten der Schreiboperationsdaten ist ähnlich zu dem zuvor be schriebenen Prozess; jedoch werden die Schreibdaten während der Ausführungsstufe 2 (370) der Schreibpipeline ermittelt. Der Prozess zum Bereitstellen der Schreibdaten wird mit den Stufen 1 und 2 der Schreiboperation synchronisiert und enthält eine Auswahlphase 390.1, die die Schreiboperation in der Ausführungsstufe 1 kennzeichnet, eine Rundfunkphase 390.2, in der die Quelle eines Datenoperanden beschreibende Information gesendet wird, eine Datenoperandenauswahlphase 390.3 und eine Datenoperandenweiterleitungsphase 390.4. Im Wesentlichen werden die Schreibdaten parallel zur Schreiboperationsausführung abgeholt; und der eigentliche Datenwert wird erhalten und der Schreibwarteschlange 159 beim Abschluss der Schreiboperationsverarbeitung zugeführt. Wenn ein gültiger Schreibdatenwert nicht verfügbar ist, wird die Schreiboperation in der Stufe 2 gehalten.
  • Bedingungen für die Lade-Schreib-Reihenfolge
  • Ebenso wie ein gewisses Maß an Ausführungsreihenfolge zwischen Operationen, die tatsächliche Datenabhängigkeiten aufweisen (im Gegensatz zu lediglich einer Berücksichtigung einer Registerarchitektur, die von der Disponiereinheit 180 durch Anwendung der Registerumbenennung vermieden wird), beibehalten werden muss, muss auch die Ausführungsreihenfolge zwischen Ladeoperationen und Schreiboperationen, die von der gleichen Speicherstelle auslesen (oder in diese schreiben) beibehalten werden.
  • Im Allgemeinen können Ladeoperationen und Schreiboperationen außerhalb der Reihenfolge zueinander ausgeführt werden; wenn jedoch eine jüngere Ladeoperation und eine ältere Schreiboperation auf die gleiche Speicherstelle zugreifen, sollte die ältere Schreiboperation die Daten für die jüngere Ladeoperation (d. h. die jüngere Ladeoperation sollte auf die ältere Schreiboperation warten) bereitstellen. In einem derartigen Falle werden die Schreibdaten der jüngeren Ladeoperation über den Daten-Cache-Speicher 170 bereitgestellt. In ähnlicher Weise muss eine ältere Ladeoperation abgeschlossen sein, bevor ein jüngerer Schreibvorgang auf die gleiche Speicherstelle zugreifen darf. In einem derartigen Falle muss die ältere Schreiboperation warten. Eine Kombination der Steuerlogik in der Disponiereinheit 180 und den Lade- und Schreibeinheit 152 und 153 erzwingt derartige Bedingungen für die Reihenfolge der Lade- und Schreiboperationen.
  • Steuerung der Lade-Schreib-Reihenfolge
  • Zusätzlich zu der Disponierlogik, die mit der Operationsausgabe und der Operandenabholung verknüpft ist, enthalten Einträge der Disponiereinheit 180 eine Lade/Schreib-Sortierlogik 234 zum Bereitstellen einer Ausführungssteuerung für Lade-Schreiboperationen außerhalb der Reihenfolge. Zwei Bereiche der Lade-Schreib-Sortierlogik 234, die der Ladeeinheit 152, bzw. der Schreibeinheit 153 zugeordnet sind, sind in 4 als Ladereihenfolgelogik 434a und Schreibreihenfolgelogik 434b gezeigt. Zusammen mit der Ladehaltelogik 403 und der Schreibhaltelogik 413 in den entsprechenden Ausführungseinheiten erzwingt die Lade-Schreib-Sortierlogik 234 entsprechende Reihenfolgebedingungen für die Ausführungen der Lade- und Schreiboperationen.
  • Ladehaltelogik
  • Es sei der Anschauung halber auf die Ladeeinheit 152 verwiesen; die Ladehaltelogik 403 prüft im Hinblick auf Schreiboperationen in diversen Pipelinestufen, die älter sind als die Ladeoperation in der Stufe 2 (LU2 402) der Ladeeinheit 152. Insbesondere prüft die Ladehaltelogik 403 im Hinblick auf ältere Schreiboperationen in der Stufe 0, der Stufe 1 (SU1 411) und der Stufe 2 (SU2 412), d. h. die Stufen 340, 352 und 360 aus 3. Drei Signale (SC_SU2OLDER, SC_SU1OLDER und SC_SU0OLDER), die der Ladehaltelogik 403 von der Ordnungslogik 434a zugeführt werden, geben eine ältere Schreiboperation in den Stufen 2, 1 oder 0 an. Genauer gesagt, SC_SU0OLDER gibt das Vorhandensein einer älteren Schreiboperation in den Bearbeitungsstufen vor den Ausführungsstufen 1 und 2 (beispielsweise Operandenabholstufe 0 340 oder Ausgabestufe 330) an. Die Ladehaltelogik 403 empfängt ferner eine Speicherteiladresse für die Ladeoperation in der Stufe 2 (LU2 402) der Ladeeinheit 152 und stellt selektiv ein Haltesignal (LU2_Hold) für LU2 402 unter der nunmehr beschriebenen Bedingungen bereit.
  • Eine ältere Schreiboperation in der Stufe 0 (oder in einer früheren Stufe) bewirkt, dass die Ladehaltelogik 403 die aktuelle Ladaoperation in der Stufe 2 der Ladeeinheit 152 bedingungslos hält. Andererseits hält eine ältere Schreiboperation in der Stufe 2 oder in der Stufe 1 die aktuelle Ladeoperation nur, wenn es auch eine Übereinstimmung zwischen den Speicheradressen für die Ladeoperation in der Stufe 2 und der älteren Schreiboperation gibt. Die folgende RTL beschreibt die Gestalt und die Funktionsweise der Ladehaltelogik 403:
    Figure 00150001
  • Die Ladehaltelogik 403 liefert das LU2_Hold- Signal zu LU2 402, um eine Ausführung einer Stufe 2-Ladeoperation zu verhindern, wenn eine beliebige der oben genannten Kombinationen von Teiladressen übereinstimmt (AddrMatch1 oder AddMatch2) und relative Altersangaben (SC_SU2OLDER, SC_SU1OLDER und SC_SU0OLDER) auf der Disponiereinheit 180 vorhanden sind. Wenn bisher noch eine lineare Adresse für eine Schreiboperation in der Stufe 0 berechnet ist, wird eine jüngere Ladeoperation in der Stufe 2 bedingungslos für eine ältere Stufe 0-Schreiboperation angehalten. Wenn die ältere Schreiboperation zu den Stufen 1 und 2 weitergeht, kann eine Teiladressenfehlanpassung entstehen, so dass keine Bedingungen hinsichtlich der Reihenfolge durch das Abschließen außerhalb der Reihenfolge der jüngeren Ladeoperation und die ältere Schreiboperation verletzt werden, und die Ladehaltelogik 403 deaktiviert das Halten gemäß der LU2_Hold-Gleichung.
  • In der hierin beschriebenen beispielhaften Ausführungsform wird eine Teiladressenangleichung auf der Grundlage eines unteren Anteils der linearen Adressen für die möglicherweise übereinstimmende Ladeoperation und Schreiboperation ausgeführt. Die Teilübereinstimmung ist so gestaltet, dass ein ausreichend großer Satz an Bits ausgewählt wird, um die Anzahl falscher Übereinstimmungen zu begrenzen, während die Geschwindigkeit und der Einfluss auf den kritischen Pfad der Adressenübereinstimmungsschaltung berücksichtigt wird. In der beispielhaften Ausführungsform beruht die teilweise Übereinstimmung der linearen Adresse auf den unteren Bits entsprechender linearer Adressen (d. h. LinAddr (9,3), SU2_PageOffset (9,3) und SU1_LinAddr (9,3)) und gleicht einen akzeptablen Pegel an falschen Übereinstimmungen mit einer gewünschten Schnelligkeit der Übereinstimmung aus, obwohl alternative Ausführungsformen eine höhere oder geringere Anzahl an Adressenbits für die Übereinstimmung verwenden und die Übereinstimmungsuntersuchungen auf der Grundlage virtueller, logischer, linearer oder physikalischer Adressen ausführen können.
  • Es sind auch acht-bit-Bytemarkierungen (ByteMark, SU1_ByteMark und SU2_ByteMark) in der Teiladressenübereinstimmung beteiligt. Diese Bytemarkierungen sind erweiterte Varianten entsprechender Adressenbits 0, 1 und 2, die die speziellen Bytes kennzeichnen, auf denen Ladeoperationen oder Schreiboperationen operieren, da in der beispielhaften Ausführungsform (eine Prozessorimplementierung gemäß der x86 Prozessorarchitektur) 1-Byte, 2-Byte, 4-Byte und 8-Byte Ladeoperationen und Schreiboperationen unterstützt werden. In der beispielhaften Ausführungsform werden diese Bytemarkierungen verglichen, um eine Überlappung und damit Abhängigkeiten zwischen den speziellen Bytes zu erkennen, aus denen eine Ladeoperation liest und in die eine Schreiboperation schreibt.
  • Es sind weitere Terme in der RTL enthalten, die die Ladehaltelogik 403 beschreiben. Beispielsweise verhindert die Ladehaltelogik 403 ferner das Ausführen nicht spekulativer Ladeoperationen, d. h. solcher Ladeoperationen, die nicht in der Nähe einer älteren Speichertransaktion auslesen können, wie dies durch DTB_InhSptivLd angegeben ist. Nicht spekulative Ladeoperationen behalten strikt die Reihenfolge in Bezug auf alle älteren Lade/Schreiboperationen und nicht nur für ältere Schreiboperationen bei. Für nicht spekulative Ladeoperationen stellt die Ladehaltelogik 403 sicher, dass keine älteren Speichertrankaktionen anhängig sind. Da die Disponiereinheit 180 Ladeoperationen geordnet zueinander ausgibt, was darauf hinausläuft, dass sichergestellt wird, dass es keine älteren Schreiboperationen gibt, die noch an den Datencache-Speicher 170 zu übergeben sind. Die Disponiereinheit 180 überwacht den Status der Schreiboperationen über die Schreibwarteschlange 159 für den Datencache-Speicher 170 und liefert ein SC_LdOldest-Signal, das angibt, dass keine älteren zugeordneten Schreiboperationen vorhanden sind.
  • Gemäß 4 empfängt die Ladehaltelogik 403 Angaben über das relativer Alter der Ladeoperationen in der LU2 402 der Ladeeinheit 152 von der Ladereihenfolgelogik 434a. Insbesondere empfängt die Ladehaltelogik 403 eine SC_SU2OLDER-Angabe, eine SC_SU1OLDER-Angabe und eine SC_SU0OLDER-Angabe aus der entsprechenden Suchlogik (SU2-älter-Suchlogik 434a.1, SU1-älter-Suchlogik 434a.2 und SU0-älter-Suchlogik 434a.3) der Ladereihenfolgenlogik 434a. Die Ladehaltelogik 403 empfängt ferner Teiladressensignale für die Schreiboperationen in Stufen SU1 411 und SU2 412 der Schreibeinheit 153 und für die Ladeoperation in LU2 402 der Ladeeinheit 152. Auf der Grundlage dieser Eingangssignale setzt die Ladehaltelogik 403 selektiv ein Haltesignal (LU2_Hold), das die Ladeoperationen LU2 402 (und auch für nachfolgende Ladeoperationen) gemäß der obigen RTL-Beschreibung unterbricht.
  • Ladeoperationen (einschließlich Operationen, Operanden, Verschiebungswerten und gewissen Steuersignalen) treffen bei LU1 401 über entsprechende Busse und Leitungen ein, die anschaulich als kollektiver Bus 189 gezeigt sind. Speicherstellen, die durch die Ladeoperationen in LU2 402 adressiert sind, werden über den Datencache-Speicher 170 angesprochen, wenn LU2_Hold nicht gesetzt (oder freigegeben) ist und werden den Ausführungseinheiten und der Disponiereinheit 180 über einen Ergebnisbus 189.2 (nicht gezeigt) des kollektiven Busses 189 zugeführt. Beide Stufen der Ladeeinheit 152 (LU1 401 und LU2 402) kommunizieren mit der Daten-TLB 171 und mit anderen Speicherverwaltungsdatenstrukturen, die in den diversen Ebenen der Speicherhierarchie vorhanden sind (L1-Datencache 170, L2 Cache 110, Hauptspeicher, etc.), um virtuelle (oder lineare) Adressen in physikalische Adressen umzuwandeln.
  • Der Fachmann erkennt, dass eine Vielzahl geeigneter Implementierungen der Ladehaltelogik 403 entsprechend der oben beschriebenen RTL möglich sind. Die Ladahaltelogik 403 ist eine beliebige geeignete Implementierung. 5 zeigt eine derartige geeignete Ausführung in Form einer kombinatorischen Logik.
  • Schreibhaltelogik
  • Die Schreibeinheit 153 umfasst eine analoge Haltelogik in Form einer Schreibhaltelogik 413, die im Hinblick auf Ladeoperationen in diversen Pipelinestufen prüft, die älter als die Schreiboperation in der Stufe 2 (SU2 412) der Schreibeinheit 153 sind. Obwohl die Gestaltung der Schreibhaltelogik 413 analog zur Ladehaltelogik 403 ist, sind die beiden nicht symmetrisch. Die Schreibhaltelogik 413 führt eine Prüfung im Bezug auf ältere Ladeoperationen in der Stufe 1 (LU1 401) und der Stufe 2 (LU2 402) durch, d. h. in Bezug auf die Stufen 352 und 360 aus 3. Zwei Signale (SC_LU2OLDER und SC_LU1OLDER), die der Schreibhaltelogik 413 von der Schreibreihenfolgelogik 434b zugeführt werden, zei gen eine ältere Ladeoperation in den Stufen 2 bzw. 1 an. Genauer gesagt, SC_LU1OLDER gibt das Vorhandensein einer älteren Ladeoperation in Stufen der Verarbeitung vor der Ausführungsstufe 2 (beispielsweise Ausführungsstufe 1 352, Operandenabholstufe 0 340 oder Ausgabestufe 330) an. Die Schreibhaltelogik 413 empfängt ferner Speicherteiladressen für die Schreiboperationen in der Stufe 2 (SU2 412) der Schreibeinheit 153 und setzt selektiv ein Haltesignal (SU2_Hold) für SU2 412 unter Bedingungen, die nunmehr beschrieben werden.
  • Eine ältere Ladeoperation in der Stufe 1 (oder in einer früheren Stufe) bewirkt, dass die Schreibhaltelogik 413 bedingungslos die aktuelle Schreiboperationen der Stufe 2 der Schreibeinheit 153 anhält. Andererseits hält eine ältere Ladeoperation in der Stufe 2 die aktuelle Schreiboperationen nur dann, wenn es eine Übereinstimmung zwischen den Speicheradressen für die Schreiboperationen in der Stufe 2 und der älteren Ladeoperation gibt. Die folgende RTL beschreibt den Aufbau und die Funktionsweise der Schreibhaltelogik 413:
    Figure 00180001
  • Die Schreibhaltelogik 413 liefert das SU2_Hold-Signal zu SU2 412, um das Ausführen einer Schreiboperation der Stufe 2 zu verhindern, wenn eine der oben spezifizierten Kombinationen aus Übereinstimmungen von Teiladressen (AddrMatch2) und relativen Altersangaben (SC_LU2OLDER und SC_LU1OLDER) aus der Disponiereinheit 180 vorhanden ist. Eine jüngere Schreiboperation in der Stufe 2 wird unbedingt im Hinblick auf eine ältere Ladeoperation der Stufe 1 (oder früher) angehalten. Wenn die ältere Ladeoperation zur Stufe 2 weitergeht, kann eine auftretende Teiladressenfehlübereinstimmung ergeben, dass keine Anforderungen hinsichtlich der Reihenfolge durch den Abschluss außerhalb der Reihenfolge der jungem Schreiboperation und der älteren Ladeoperation verletzt werden und die Schreibhaltelogik 413 gibt das Halten gemäß der SU2_Hold-Gleichung frei.
  • Wie bei der Ladehaltelogik 403 führt die Schreibhaltelogik 413 eine Adressenteilübereinstimmung auf der Grundlage der unteren Bereiche (d. h. LinAddr (9,3) und LU2_PageOffset (9,3)) linearer Adressen für Schreiboperationen und Ladeoperationen durch. Bytemarkierungen (ByteMark und LU2_ByteMark) sind ebenso in der Adressenteilübereinstimmung enthalten.
  • In der beispielhaften Ausführungsform ist die Schreibhaltelogik 413 ebenso wie die Ladehaltelogik 403 überbestimmt in dem Satz der Bedingungen, die ein Halten bewirken können. Jedoch ist der Aufbau der Schreibhaltelogik 413 noch stärker einschließend als der Aufbau der Ladehaltelogik 403. Beispielsweise hält die Schreibhaltelogik 413 eine jüngere Schreiboperation der Stufe 2 auf Kosten einer älteren Ladeoperation der Stufe 1, die gerade eine Adressenübereinstimmung prüft. In alternativen Ausführungsformen kann die Menge an Bedingungen präziser (oder weniger präzise) abgegrenzt werden, die ein Halten in der Schreibhaltelogik 413 und/oder der Ladehaltelogik 403 hervorrufen. In der anschaulichen Ausführungsform wird jedoch die Bedingung für das Halten von der Schreibhaltelogik 413 weniger präzise auf der Grundlage einer Abschätzung abgegrenzt, dass in einem typischen Befehlsprofil Ladeoperationen häufiger von Schreiboperationen als umgekehrt abhängig sind.
  • Gemäß 4 erhält die Schreibhaltelogik 413 Angaben über das relative Alter der Ladeoperation in SU2 412 der Schreibeinheit 153 von der Schreibreihenfolgelogik 434b. Insbesondere empfängt die Schreibhaltelogik 413 eine SC_LU2OLDER-Angabe und eine SC_LU1OLDER-Angabe von der entsprechenden Suchlogik (LU2-älter-Suchlogik 434b.1 und LU1-älter-Suchlogik 434b.2) der Schreibreihenfolgenlogik 434b. Die Schreibhaltelogik 413 empfängt ferner Teiladressensignale für die Ladeoperationen in der LU2 402 Stufe der Ladeeinheit 152 und für die Schreiboperation SU2 412 der Schreibeinheit 153. Auf der Grundlage dieser Eingangssignale setzt die Schreibhaltelogik 413 selektiv ein Haltesignal (SU2_Hold), das die Schreiboperationen SU2 412 (und auch nachfolgende Schreiboperationen) gemäß der obigen RTL-Beschreibung unterbricht.
  • Schreiboperationen (einschließlich Operationen, Operanden, Verschiebungswerten und gewissen Steuersignalen) treffen bei SU1 411 über entsprechende Busse und Leitungen ein, die anschaulich zusammen als kollektiver Bus 189 gezeigt sind. Speicheradressen und Schreiboperanden für die Schreiboperationen in SU2 412 werden der Schreibwarte schlange 159 zugeführt, wenn SU2_Hold nicht gesetzt (oder deaktiviert) ist. Die Schreibwarteschlange 159 schreibt wiederum Schreiboperanden in den Adressenraum über den Datencache-Speicher 170. Beide Stufen der Schreibeinheit 153 (SU2 411 und SU2 412) kommunizieren mit dem Daten-TLB 171 und mit anderen Speicherverwaltungsdatenstrukturen, die in den diversen Ebenen der Speicherhierarchie vorhanden sind (L1-Datencache-Speicher 170, L2-Cache-Speicher 110, Hauptspeicher, etc.), um virtuelle (oder lineare) Adresse in physikalische Adressen umzuwandeln.
  • Der Fachmann erkennt eine Vielzahl geeigneter Implementierungen für die Schreibhaltelogik 413, die mit der oben beschriebenen RTL im Einklang sind. Die Schreibhaltelogik 413 ist eine beliebige geeignete Einrichtung. 6 zeigt eine derartige geeignete Einrichtung in kombinatorischer Logik.
  • Disponiereinheitslogik mit Suchlogik
  • Die Disponiereinheit 180 unterstützt ferner das Beibehalten einer ausreichenden Ausführungsordnung zwischen Ladeoperationen und Speicheroperationen. In der anschaulichen Ausführungsform tritt diese Unterstützung in Form von Suchlogikinstanzen auf, die Angaben über das relative Alter für die Ladehaltelogik 403 und die Schreibhaltelogik 413 bereitstellen. Wie zuvor beschrieben ist, wird die Reihenfolge beibehalten, indem Operationen in der Stufe 2 der Lade- und Schreibpipelines gehalten werden (d. h. bei LU2 402 und SU2 412). Die Reihenfolge der Ausführung wird für die Schreiboperationen beibehalten, die Speicherplätze betreffen. In der anschaulichen Ausführungsform wird keine Reihenfolge für LEA-Schreiboperationen (Laden effektiver Adresse) erzwungen, die nicht tatsächlich den Speicher ansprechen, obwohl CDA- und CIA-Schreiboperationen (prüfe dateneffektive Adresse und prüfe befehlseffektive Adresse), die fehlerhafte Adressen erzeugen, in dem Ordnungsschema enthalten sind, um damit die Schaltungsgestaltung zu vereinfachen. Es werden keine Ladeoperationen von dem Ordnungsschema ausgeschlossen, da alle Ladeoperationen den Speicher ansprechen. Alternative Ausführungsformen können Operationen, etwa LEA, CDA und CIA-Schreiboperationen nach Bedarf enthalten oder ausschließen.
  • Es sei wiederum auf 2 verwiesen; die Lade- Schreib- Sortierlogik 234 in der Disponiereinheit 180 liefert Angaben über das relative Alter von Lade/Schreiboperationen in Bezug auf die speziellen Ladeoperationen und Schreiboperationen in der Stufe 2 der entsprechenden Lade- und Schreibausführungseinheiten. Die Lade-Schreib-Sortierlogik 234 greift auf Typenfelder 241 [2:0] und Zustandsfelder 242 [3:0] jedes Operationseintrages (als anschauliches Beispiel sei der Operationseintrag 240.1 genannt) in dem Disponierreservoir 240 zu und liefert die Angaben über das relative Alter (beispielsweise SC_SU2OLDER, SC_SU1OLDER und SC_SU0OLDER) an die Ladeeinheit 152 und liefert Angaben über das relative Ladealter (beispielsweise SC_LU2OLDER und SC_LU1OLDER) an die Schreibeinheit 153 über Leitungen, die gemeinsam als 189.5 gezeigt sind.
  • In 4 ist die Lade-Schreib-Sortierlogik 234 als Ladereihenfolgelogik 434a und Schreibreihenfolgelogik 434b in Form von entsprechenden Bereichen gezeigt. Für Ladeoperationen bestimmt die Ladereihenfolgelogik 434a das relative Alter der Ladeoperation in LU2 402 in Bezug auf die Schreiboperation (wenn eine vorhanden ist) in SU2 412, in Bezug auf die Schreiboperation (wenn eine vorhanden ist) in SU1 411 und in Bezug auf andere Schreiboperationen in vorhergehenden Stufen der Verarbeitung. Für Schreiboperationen bestimmt die Schreibreihenfolgelogik 434b das relative Alter der Schreiboperationen in SU2 412 in Bezug auf die Ladeoperation (falls eine vorhanden ist) in LU2 402 und in Bezug auf andere Ladeoperationen in vorhergehenden Verarbeitungsstufen.
  • 4 zeigt die Ladereihenfolgelogik 434a mit drei Komponenteninstanzen der Suchlogik, d.h., SU2-älter-Suchlogik 434a.1, SU1-älter-Suchlogik 434a.2 und SU0-älter-Suchlogik 434a.3. Jede Suchlogikinstanz verwendet die Typenfelder 241 [2:0] und die Zustandsfelder 242 [3:0] (nicht gezeigt) der Operationseinträge in dem Disponierreservoir 240, um entsprechende Angaben über das relative Alter bereitzustellen. Die SU2-älter-Suchlogik 434a.1 liefert SC_SU2OLDER; SU1-älter-Suchlogik 434a.2 stellt SC_SU1OLDER bereit; und SU0-älter-Suchlogik 434a.3 liefert SC_SU0OLDER.
  • Die Gestaltung der Schreibreihenfolgelogik 434b ist analog aber nicht symmetrisch zu dem Aufbau der Ladereihenfolgelogik 434a. Insbesondere beinhaltet die Schreibreihenfolgelogik 434b zwei Komponenteninstanzen an Suchlogik, d. h. die LU2-älter-Suchlogik 434b.1 und die LU1-älter-Suuhlogik 434b.2. Wie bei der Ladereihenfolgelogik 434a verwendet jede Suchlogikinstanz der Schreibreihenfolgelogik 434b die Typenfelder 241 [2:0] und die Zustandsfelder 242 [3:0], um entsprechende Angaben über das relative Alter bereitzustellen. Die LU2-älter-Suchlogik 434b.1 liefert SC-LU2OLDER und die LU1-älter-Suchlogik 434b.2 liefert SC_LU1OLDER. Obwohl die Ladereihenfolgelogik 434a und die Schreibreihenfolgelogik 434b zum Zwecke der Darstellung als unabhängige Suchlogiken gezeigt sind, erkennt der Fachmann, dass diese eine Logik gemeinsam aus den Komponenteninstanzen der Suchlogik benutzen können, beispielsweise eine Erkennungsschaltung für den Typ [2:0] und den Zustand [3:0].
  • In einer gegenwärtig bevorzugten Ausführungsform enthalten die Ladereihenfolgelogik 434a und die Schreibreihenfolgelogik 434b eine Suchlogik mit hierarchischer Gestaltung (anstatt einer vorausschauenden Logik), die nunmehr mit Bezug zu den 4 bis 10 beschrieben wird. Während einer ersten Phase der Stufe 2 für eine Lade/Schreiboperation durchsuchen die Suchlogiken der Ladenreihenfolgelogik 434a und/oder der Schreibreihenfolgelogik 434b die nach Alter geordneten Operationseinträgen 240 der Disponiereinheit 180 nach älteren Lade/Schreiboperationen des entgegengesetzten Typs, d. h. die Ladenreihenfolgelogik 434a sucht nach älteren Schreiboperationen und die Schreibreihenfolgelogik 434b sucht nach älteren Ladeoperationen. In einer beispielhaften Ausführungsform enthalten jede von drei Instanzen der Suchlogik der Ladereihenfolgelogik 434a und jede von zwei Instanzen der Suchlogik der Schreibreihenfolgelogik 434b eine hierarchisch organisierte Suchlogik zur Abtastung bzw. zum Durchsuchen in der Gruppen der nach Alter geordneten Operationseinträgen 240 sowie auch über die Gruppen hinweg. 7 bis 10 zeigen eine Suchlogik für eine beispielhafte Disponiereinheit in einer Ausführungsform mit vierundzwanzig (24) Operationseinträgen, die in acht (8) Gruppen aus drei (3) Operationseinträgen angeordnet sind. Der Fachmann erkennt auf der Grundlage der folgenden Beschreibung, dass geeignete Variationen mit unterschiedlichen Anzahlen an Operationseinträgen und Gruppenanordnungen möglich sind.
  • Die allgemeine Struktur der beispielhaften Suchlogik für eine Ausführungsform mit 24 Operationseinträgen/8 Gruppen der Disponiereinheit 180 ist nunmehr mit Bezug zur 7 beschrieben. Instanzen der Anwesenheitsindikationslogik 710 erkennen Kombinationen aus Werten des Typenfeldes [2:0] und Zustandsfeldes [3:0], die mit der speziellen eingerichteten Suchlogik verknüpft sind (d. h. SU2-älter-Suchlogik 434a.1, SU1-älter-Suchlogik 434a.2, SU0-älter-Suchlogik 434a.3, LU2-älter-Suchlogik 434b.1 oder LU1-älter-Suchlogik 434b.2). Beispielweise erkennt die Anwesenheitsindikationslogik 710 für die SU1-älter-Suchlogik 434a.2, die gemäß 7 eingerichtet ist, ob der entsprechende Operationseintrag eine Schreiboperation der Stufe 1 enthält. Jede der 23 Instanzen der Anwesenheitsindikationslogik 710 liefert entsprechende Anwesenheitsangaben (bei spielsweise P[1], P[2], ... P[23]), die für eine spezielle Instanz der Suchlogik zur Verwendung von der Innergruppenlogik 740 und/oder gruppenüberspannenden Logik geeignet sind (d. h., eine gruppenüberspannende Logik der ersten Ebene 760, gruppenüberspannende Logik der zweiten Ebene 750 und/oder gruppenüberspannende Logik der dritten Ebene 730). In der Ausführungsform aus 7 ist P[0] nicht verwendet.
  • Entsprechende Instanzen einer Auswahlindikationslogik 720 erkennen ebenso Kombinationen an Werten für das Typenfeld [2:0] und das Zustandsfeld [3:0]; jedoch sind im Falle der Instanzen der Auswahlindikationslogik 720 die Kombinationen der Werte des Typenfeldes [2:0] und Zustandfeldes [3:0], die erkannt wurden, kennzeichnend für eine Ladeoperation der Stufe 2 (d. h. für eine Ladeoperation in LU2 402) für Suchlogikinstanzen der Ladereihenfolgelogik 434a und für eine Schreiboperation der Stufe 2 (d. h. eine Schreiboperation in SU2 412) für die Suchlogikinstanzen der Schreibreichenfolgelogik 434b. Jede der 23 Instanzen der Auswahlindikationslogik 720 liefert entsprechende Auswahlindikationen bzw. Angaben (beispielsweise SEL[0], SEL[1], ... SEL[22]), die für die Lade- oder Schreibreihenfolgenbildung einer speziellen Suchlogikinstanz zur Verwendung in der gruppeninternen Logik 740 und/oder der gruppenüberspannenden Logik geeignet sind (d. h. die gruppenüberspannende Logik der ersten Ebene 760, die gruppenüberspannende Logik der zweiten Ebene 750 und/oder die gruppenüberspannende Logik der dritten Ebene 730). In der Ausführungsform aus 7 ist SEL[23] nicht verwendet.
  • Die gruppeninterne Logik 740 liefert Angaben, wobei jede für die Anwesenheit einer Operation innerhalb einer entsprechenden Gruppe aus Operationen kennzeichnend ist, die mit der Kombination des Typs [2:0] und des Zustandes [3:0] übereinstimmt, die von der Anwesenheitsindikationslogik 710 der speziellen Suchlogik erkannt wurde, und die älter ist als ein ausgewählter Operationseintrag innerhalb der gleichen Gruppe. Auswahlindikationen (beispielsweise SEL[0], SEL[1], ...SEL[22]), die entsprechend mit Operationseinträgen des Disponierreservoirs 240 verknüpft sind, sind kennzeichnend für den ausgewählten Opereinseintrag, auf dem das Absuchen nach einem älteren Operationseintrag beruht. In hierin zum Einrichten der Suchlogik für die Ladereihenfolgelogik 434a und die Schreibreihenfolgelogik 434b beschriebenen Ausführungsformen wird eine einzelne Operationseintragsauswahlangabe jeder Instanz einer Suchlogik, die gemäß 7 eingerichtet ist, bereitgestellt. Die einzelne Operationseintragsauswahlangabe, die auf diese Weise bereitgestellt wird, entspricht einer Lade/Schreiboperation in der Stufe 2 der Ladeeinheit 152 oder der Schreibeinheit 153, falls eine Operation vorhanden ist, d. h. diese entspricht einer Ladeoperation der Stufe 2 für SC_SUxOLDER-Suchlogik und entspricht einer Schreiboperation der Stufe 2 für SC_LUxOLDER-Suchlogik. In alternativen Ausführungsformen können unterschiedliche Arten an Operationen in unterschiedlichen Stufen der Ausführung mit geeigneten Modifizierungen an der Operationseintragsauswahlindikationslogik ausgewählt werden und ferner können mehrere Auswahlindikationen für Vergleiche des relativen Alters (oder einer anderen Priorität) den dadurch gekennzeichneten mehreren Operationseinträgen zugeführt werden.
  • In der anschauliche Ausführungsform aus 8 beinhaltet die gruppeninterne Logik 740 eine Logik für jede Gruppe (anschaulich als „within-grp_2"- Logik 842), die durch einen Oder-Nicht-Und-Gatterkomplex mit sechs Eingängen eingerichtet ist. Selbstverständlich erkennt der Fachmann, dass eine breite Fülle anderer geeigneter Logikkonfigurationen zur Bereitstellung von Indikationen, die den ausgewählten Operationseintrag angeben, und ein Erkennung einer ältern Operation in einer speziellen Operationseintragsgruppe möglich sind. Gruppeninterne Angaben für jede Gruppe (d. h. SUM[0], SUM[1], ...SUM[7]) werden teilweise in der Kombinierlogik 770 kombiniert, von der einige Gatter in 8 gezeigt sind.
  • 9 zeigt die gruppenüberspannende Logik der ersten Ebene 760 und die gruppenüberspannende Logik der zweiten Ebene 760, wobei diese gemeinsam überlappende Logikbereiche benutzen. Die gruppenüberspannende Logik der ersten Ebene 760 liefert Indikationen (SOP1_S2P3 und S4P5-S6P7), die den ausgewählten Operationseintrag in einer ersten Gruppe aus Operationseinträgen angeben und die Erkennung einer älteren Operation in einer benachbarten Gruppe aus älteren Operationseinträgen ermöglichen, beispielsweise für den ausgewählten Operationseintrag in grp_0 und einer Erkennung einer älteren Operation in grp_1, des ausgewählten Operationseintrags in grp_2 und die Erkennung einer älteren Operation in grp_3, etc.. In der anschaulichen Ausführungsform aus 9 ist die gruppenüberspannende Logik der ersten Ebene 760 durch erste Stufen von NAND-Gattern bzw. Nicht-UND-Gattern und zweite Stufen von UND-Gattern eingerichtet. Die UND-Gatterfunktion wird durch einen Bereich komplexer UND-Nicht-ODER-Gatter 772 und 773 mit vier Eingängen dargestellt, die Nicht-ODER-Funktion davon ist mit der Kombinierlogik 770 verknüpft. Der Fachmann erkennt jedoch, dass eine Fülle von anderen geeigneten Logikkonfigurationen zur Bereitstellung von Indikationen, die den ausgewählten Operationseintrag in einer ersten Gruppe der Operationseinträge und die Erkennung einer älteren Operation in einer zweiten Gruppe aus Operationseinträge angeben, möglich ist. Die gruppenüberspannenden Angaben der ersten Ebene für jedes Paar benachbarter Gruppen werden teilweise in der Kombinierlogik 770 kombiniert, von der einige Gatter in 9 gezeigt sind.
  • Die gruppenüberspannende Logik der zweiten Ebene 750 liefert Angaben (S01P23 und S45P67), die den ausgewählten Operationseintrag in einer von zwei benachbarten Gruppen aus Operationseinträgen und die Erkennung einer älteren Operation in einer von zwei benachbarten Gruppen älterer Operationseinträge angeben, beispielsweise sind diese kennzeichnend für den ausgewählten Operationseintrag in der grp_0 oder grp_1 und für eine Erkennung einer älteren Operation in grp_2 oder grp_3, für den ausgewählten Operationseintrag in grp_4 oder grp_5 und die Erkennung einer älteren Operation in der grp_6 oder grp_7, etc.. In der anschaulichen Ausführungsform aus 9 ist die gruppenumspannende Logik der zweiten Ebene 750 durch erste Stufen von NAND-Gattern, zweite Stufen komplexer ODER-Nicht-UND-Gatter (951 und 952) mit vier Eingängen und dritten Stufen von Invertern eingerichtet. Der Fachmann erkennt jedoch, dass eine Fülle anderer geeigneter Logikkonfigurationen zur Bereitstellung der Indikationen möglich ist, die den ausgewählten Operationseintrag in einer von zwei Gruppen aus Operationseinträgen und die Erkennung einer älteren Operation in mindestens einer der beiden Gruppen aus älteren Operationseinträgen angeben.
  • 10 zeigt die gruppenüberspannende Logik der dritten Ebene 730, die unmittelbare Angaben (Sgrp_0123 und Pgrp_4567) bereitstellt, die entsprechend den ausgewählten Operationseintrag, der in einer der ersten vier Gruppen aus Operationseinträgen ist und die Erkennung einer älteren Operation in einer der vier Gruppen aus älteren Operationseinträgen angeben, d. h. es wird der ausgewählte Operationseintrag in grp_0, grp_1, grp_2 oder grp_3 und die Erkennung einer älteren Operation in grp_4, grp_5, grp_6 oder grp_7 angegeben. In der beispielhaften Ausführungsform der 7 und 10 werden unmittelbare Angaben Sgrp_0123 und Pgrp_4567 von den NAND-Gattern der ersten Stufe und den ODER-Gattern der zweiten Stufe bereitgestellt und es wird eine Konjunktion der unmittelbaren Angaben Sgrp_0123 und Pgrp_4567 von der UND-Funktion des UND-Nicht-ODER-Gatters 771 mit drei Eingängen bereitgestellt. Auf diese Weise werden Teile der gruppenumspannenden Funktion der dritten Ebene und das Kombinieren der Logikfunktion durch den UND-Nicht-ODER-Gatterkomplex 771 bereitgestellt. Der Fachmann erkennt jedoch, dass eine Fülle anderer geeigneter Logikkonfigurationen zur Bereitstellung der Angaben verwendet werden können, die den ausgewählten Operationseintrag in einer aus vier Gruppen aus Operationseinträgen und die Erkennung einer älteren Operation in mindestens einer der vier anderen Gruppen aus älteren Operationseinträgen angeben.
  • Es sei wieder auf 7 verwiesen; die Kombinierlogik 770 kombiniert Angaben aus der gruppeninternen Logik 740 und der gruppenumspannenden Logik (d. h. der gruppenumspannenden Logik der ersten Ebene 760, der gruppenumspannenden Logik der zweiten Ebenen 750 und der gruppenumspannenden Logik der dritten Ebene 730), um eine Angabe des relativen Alters für die speziell eingerichtete Suchlogik bereitzustellen. Zusammen bilden das ODER-Gatter, das Nicht-ODER-Gatter und das Nicht-UND (NAND)-Gatter Stufen der Kombinierlogik 770, die eine äquivalente DeMorgan-Struktur einer ODER-Baumstruktur bilden. Der Fachmann erkennt jedoch, dass eine Fülle anderer geeigneter Logikkonfigurationen zum Kombinieren der gruppenumspannenden und gruppeninternen Angaben möglich sind, um eine zusammengesetzte Angabe des relativen Alters bereitzustellen. Vorteilhafterweise benötigt der Logikaufbau der Kombinierlogik 770, wenn diese in Verbindung mit der gruppeninternen Logik 740, der gruppenumspannenden Logik der ersten Ebene 760, der gruppenumspannenden Logik der zweiten Ebene 750 und der gruppenumspannenden Logik der dritten Ebene 730 betrachtet wird, nicht mehr als fünf invertierende Gatterverzögerungen entlang jedes Pfades.
  • Es können eine größere oder geringere Anzahl an Operationseinträgen mit ähnlich vorteilhaften Anzahlen an Gattenverzögerungen berücksichtigt werden. Beispielsweise erkennt der Fachmann, dass die Anzahl der Operationseinträge von 2x, 4x, etc. mit analogen gruppeninternen und gruppenumspannenden Logiken und Kombinierlogiken verwaltet werden können, wobei eine zusätzliche Verzögerung durch invertierende Gatter für jede binäre Größenordnung mit einer zunehmenden Anzahl an Operationseinträgen einhergeht. Eine kleinere Anzahl an Operationseinträgen kann in ähnlicher Weise mit analogen Reduzierungen der Verzögerungen der invertierenden Gatter berücksichtigt werden. Allgemeiner gesagt, eine Familie aus Suchlogikimplementierungen gemäß der vorliegenden Erfindung benötigt für eine größere oder kleinere Anzahl an Operationseinträgen (beispielsweise 3, 6, 12, 48, 96, ...), die als dreier-Gruppen durchsucht werden, eine Verzögerung invertierender Gatter von log2 (N/3) + 2, wobei N die Anzahl der Operationseinträge ist. Ausführungsformen gemäß einer derartigen Familie aus Suchlogikimp lementierungen beinhalten log2 (N/3) aufeinaderfolgende Ebenen einer hierarchisch organisierten gruppenumspannenden Logik.
  • Dreielementige Gruppen sind vorteilhaft in der beispielhaften Ausführungsform mit 24 Operationseinträgen, die hierin beschrieben ist, aufgrund der ganzzahligen Vielfachen von drei, die den 24 Operationseinträgen zugeordnet sind und aufgrund der Fülle von Logikzellenbibliotheken, die verfügbar sind. Nichtsdestotrotz sind auch größere oder kleinere Gruppen in jeder Ebene der gruppenumspannenden Hierarchie möglich; der Fachmann erkennt geeignete Gatter und komplexe Gatter. Obwohl ferner Gruppen mit gleichförmiger Größe gezeigt sind und die gruppenumspannende Logik mit einer Operationseintragsabdeckung dargestellt ist, die dem Doppelten bei jeder nachfolgenden Ebene der gruppenumspannenden Hierarchie entspricht, sind aber auch alternative Ausführungsformen mit ungleichförmiger Gruppengröße und einer anderen Zunahme der Abdeckung der Operationseinträge in nachfolgenden Ebenen der gruppenumspannenden Hierarchie möglich. Der Fachmann erkennt geeignete Modifizierungen an den Suchlogikstrukturen.
  • Wie der Fachmann erkennt, sind die Grenzen zwischen der gruppeninternen Logik und der gruppenumspannenden Logik (beispielsweise die gruppeninterne Logik 740, die gruppenumspannende Logik der ersten Ebene 760, die gruppenumspannende Logik der zweiten Ebene 750 und die gruppenumspannende Logik der dritten Ebene 730) und der Kombinierlogik 770 in gewisser Weise willkürlich und es sind eine Fülle von Grenzdefinitionen geeignet. Fernen können gewisse Logikfunktionen zwischen Logikblöcken, die in den unterschiedlichen Zeichnungen dargestellt sind, gemeinsam benutzt werden. Beispielsweise kann eine Logik, die in beiden 9 und 10 gezeigt ist, um die Auswahlindikationen zu gruppieren (beispielsweise SELgrp[0], SELgrp[1], SELgrp[2] und SELgrp[3]) und um Anwesenheitsindikationen zu gruppieren (beispielsweise Pgrp[4], Pgrp[5], Pgrp[6] und Pgrp[7]), von der gruppenumspannenden Logik der ersten Ebene 760, der gruppenumspannenden Logik der zweiten Ebene 750 und der gruppenumspannenden Logik der dritten Ebene 730 gemeinsam benutzt werden.
  • Es sei eine einzelne Instanz der Suchlogik, d. h. SU2-älter-Duchlogik 434a.1, näher betrachtet, die gemäß den 7 bis 10 eingerichtet ist; dieser beinhaltet die Anwesenheitsindikationslogik 710, die ausgebildet ist, eine Anwesenheitsindikation in jenen Operationseinträgen der Operationseinträge 240 bereitzustellen, die mit einer Schreiboperation der Stufe 2 verknüpft sind. Die Auswahlindikationen werden von Instanzen der Auswahlindikationslogik 720 bereitgestellt, um einen speziellen Operationseintrag, falls einer vorhanden ist, der Operationseinträge 240 zu kennzeichnen, der mit einer Ladeoperation der Stufe 2 (d. h. einer Ladeoperation LU2 402) verknüpft ist. Auf der Grundlage der Anwesenheits- und Auswahlindikationen liefert die gruppeninterne Logik 740 gruppeninterne Indikationen, die die Ladeoperation der Stufe 2 in einer der Operationseinträge kennzeichnen, die mit einer Gruppe verknüpft sind und die für das Vorhandensein einer Schreiboperation der Stufe 2 in einen älteren Operationseintrag der gleichen Gruppenkennzeichnend sind. Die gruppenumspannende Logik der ersten Ebene 760 liefert gruppenumspannende Indikationen der ersten Gruppe, die die Ladeoperation der Stufe 2 in einen der Operationseinträge kennzeichnen, die mit einer speziellen Gruppe verknüpft sind und kennzeichnet die Anwesenheit einer Schreiboperation der Stufe 2 in einem Operationseintrag, der mit einer benachbarten älteren Gruppe verknüpft ist. Analog liefert die gruppenumspannende Logik der zweiten Ebene 750 gruppenumspannende Indikationen der zweiten Ebene, die die Ladeoperation der Stufe 2 in einem der Operationseinträge, die mit einem Paar benachbarter Gruppen verknüpft sind und das Vorhandensein einer Schreiboperation der Stufe 2 in einem Operationseintrag, der mit einem benachbarten Paar aus älteren Gruppen verknüpft ist, kennzeichnen. Schließlich liefert die gruppenumspannende Logik der dritten Ebene 730 gruppenumspannende Indikationen der dritten Ebene, die die Ladeoperation der Stufe 2 in einen der Operationseinträge, der mit einem Satz aus vier benachbarten Gruppen verknüpft ist und das Vorhandensein einer Schreiboperation der Stufe 2 in einem Operationseintrag, der mit einem benachbarten Satz aus vier älteren Gruppen verknüpft ist, kennzeichnen. Eine Indikation für eine ältere Schreiboperation der Stufe 2 wird von der Kombinierlogik 770 (als das SC_SU2Older-Signal) geliefert, wenn die gruppeninterne Logik oder die gruppenumspannende Logik eine entsprechende Angabe für eine ältere Schreiboperation der Stufe 2 liefert.
  • Die Gestaltung und die Betriebsweise der verbleibenden Suchlogik der Ladereihenfolgelogik 434a ist ähnlich. Beispielsweise durchsuchen die gruppeninterne Logik und gruppenumspannende Logik der SU1-älter-Suchlogik 434a.2 die Einträge der Disponiereinheit 180, und die Kombiniermultiplexlogik 434a.5 liefert das SC_SU1Older-Signal an die Ladehaltelogik 403. In ähnlicher Weise durchsucht die gruppeninterne Logik und die gruppenumspannende Logik der SU0-älter-Suchlogik 434a.3 die Einträge der Disponiereinheit 180 und die zugeordnete Kombinierlogik 434a.6 liefert das SC_SU0Older-Signal an die Ladehaltelogik 403. Angaben über das relative Alter (SCSU2Older, SC_SU1Older und SC_SU0Older) werden der Ladehaltelogik 403 zugeführt, die bestimmt, welche SU-Adressen Komparatorsignale (AddrMatch1 oder AddrMatch2) zu untersuchen sind und allgemeiner, ob die Ladeoperation der Stufe 2 zu halten ist.
  • Die Suchlogikinstanzen für die Schreibreihenfolgelogik 434b sind analog ausgestattet. Für die Anschaulichkeit sei eine einzelne Instanz der Suchlogik, d. h. die LU2-älter-Scuhlogik 434b.1, dargestellt, die gemäß den 7 bis 10 eingerichtet ist; diese enthält die Anwesenheitsindikationslogik 710, die ausgebildet ist, eine Anwesenheitsindikation an jene Operationseinträgen der Operationseinträge 240 zu liefern, die mit einer Ladeoperation der Stufe 2 verknüpft sind. Auswahlindikationen werden von Instanzen der Auswahlindikationslogik 720 bereitgestellt, um den speziellen Operationseintrag, falls vorhanden, der Operationseinträge 240 anzugeben, der mit einer Schreiboperation der Stufe 2 verknüpft ist (d. h. einer Schreiboperation in SU2 412). Auf der Grundlage der Anwesenheits- und Auswahlindikationen liefert die gruppeninterne Logik 740 gruppeninterne Indikationen, die die Schreiboperation der Stufe 2 in einem der Operationseinträge, der mit einer speziellen Gruppe verknüpft ist und die Anwesenheit einer Ladeoperation der Stufe2 in einem älteren Operationseintrag der gleichen Gruppe kennzeichnen. Die gruppenumspannende Logik der ersten Ebene 760 liefert gruppenumspannende Indikationen der ersten Ebene, die die Schreiboperationen der Stufe 2 in einem der Operationseinträge, die mit einer speziellen Gruppe verknüpft sind und die Anwesenheit einer Ladeoperation der Stufe 2 in einem Operationseintrag, der mit einer benachbarten älteren Gruppe verknüpft ist, kennzeichnen. In analoger Weise liefert die gruppenumspannende Logik der zweiten Ebene 750 gruppenumspannende Indikationen der zweiten Ebene, die die Schreiboperationen der Stufe 2 in einem der Operationseinträge, der mit einem Paar benachbarter Gruppen verknüpft ist und die Anwesenheit einer Ladeoperation der Stufe 2 in einem Operationseintrag, der mit einem benachbarten Paar aus älteren Gruppen verknüpft ist, kennzeichnen. Schließlich liefert die gruppenumspannende Logik der Ebene 3 730 gruppenumspannende Indikationen der dritten Ebene, die eine Schreiboperation der Stufe 2 in einem der Operationseinträge, der mit einem Satz aus vier benachbarten Gruppen verknüpft ist und die Anwesenheit einer Ladeoperation der Stufe 2 in einem Operationseintrag, der mit einem benachbarten Satz aus vier älteren Gruppen verknüpft ist, kennzeichnen. Eine Indikation einer älteren Ladeoperation der Stufe 2 wird von der Kombinierlogik 770 bereitgestellt (als das SC_LU2Older-Signal), wenn die gruppeninterne Logik oder eine gruppenumspannende Logik eine entsprechende Indikation für eine ältere Ladeoperation der Stufe 2 bereitstellt.
  • Der Aufbau und die Funktionsweise der verbleibenden Instanzen der Suchlogik der Schreibreihenfolgelogik 434b sind ähnlich. Insbesondere durchsucht die gruppeninterne Logik oder die gruppenumspannende Logik der LU1-älter-Suchlogik 434b.2 die Einträge der Disponiereinheit 180, und die Kombinierlogik 434b.5 liefert das SC_LU1Older-Signal an die Schreibhaltelogik 413. Indikationen über das relative Alter (SC_LU2Older und SC_LU1Older) werden der Schreibhaltelogik 413 zugeführt, die bestimmt, ob der Adressenkomparator der LU Stufe 2 (AddrMatch2) zu untersuchen ist und ob die Schreiboperation der Stufe 2 zu halten ist.
  • Die Anwesenheitsindikationen auf Operationseintragsebene P[x] beruhen auf dem Zustandsfeld [3:0] (insbesondere den S1-, S2- und S3-Bits) und dem Typenfeld [2:0] (ST oder LU) eines Eintrages. Für die drei Instanzen der Ladeoperationssuchlogik wird das ST-Bit anstelle des SU-Bits verwendet. Dies unterscheidet die Schreiboperationen, die tatsächlich den Speicher ansprechen, von LEA-Operationen, die lediglich logische Adresse erzeugen.
  • Die folgenden Operationseintagsgleichungen, die als LUst2, LUst1 und LUst0 bezeichnet sind, bezeichnen die P[x]-Terme, die einem Operationseintrag x für die Suchlogik entsprechen, die zuvor als SU2-älter-Suchlogik 434a.1, SU1-älter-Suchlogik 434a.2 und SU0-älter-Suchlogik 434a.3 bezeichnet sind. In ähnlicher Weise bezeichnen Eintragsgleichungen, die als SU1d2 und SU1d1 benannt sind, die P[x]-Terme, die einem Operationseintrag x entsprechen, für die Suchlogik, die zuvor entsprechend als LU2-älter-Suchlogik 434b.1 und LU1-älter-Suchlogik 434b.2 benannt ist. Operationseintragsgleichungen
    Figure 00300001
  • In der beispielhaften Ausführungsform erweitern (S2 + S1 SU2_FirstAddrV) und (S2 + S1 LU2_FirstAddrV)-Terme die Operationseintragsgleichungen, um das Unterbrechen von Lade/Schreiboperationen der Stufe 1 zu handhaben, die die erste Hälfte eines fehljustierten Speicherzugriffes ausführen.
  • Mit Verweis auf 8 ist eine anschauliche Ausführungsform einer Such- und Kombinierlogik 841 mit Gattern zeigt, die SUM_01 bestimmen. Die Gestaltung der anschaulichen Ausführungsform ist ähnlich zu jener der Gatter, die SUM_234 und SUM_567 bestimmen, die ebenso dargestellt sind. In einer Ausführungsform zur Handhabung einer vergleichsweise langsamen Ausführung von Eintragsindikationen für Operationseinträge, die mit einem ersten Operations-Quadrupel verknüpft sind, d. h. Operationseinträge 0, 1, 2 und 3 der grp_0 und grp_1, wird die alternative Logik zur Bestimmung von SUM_01 841a gegenwärtig bevorzugt. Eine derartige alternative Logik 841a zur Bestimmung von SUM_01 ist in 12 gezeigt und umfasst die komplexen Gatter 1201, 1202 und 1203. Vorteilhafterweise benötigt die alternative, die SUM_01 bestimmende Logik 841a lediglich drei Verzögerungen invertierender Gatter in den Signalwegen, die von den Operationseintragsfeldwerten von Operations-Quadrupel 0 abhängen, die von dem Befehlsdekodierer 140 geliefert werden. Insbesondere stellt die alternative, die SUM_01 bestimmende Logik 841a einen kürzeren Signalweg für Signale bereit, die von den Werten des Typfeldes [2:0] und des Zustandfeldes [3:0] der Operationen 0, 1, 2 und 3 abhängen und ordnet ferner die schnelleren Eingänge der komplexen Gatter 1201, 1202 und 1203 diesen Signalen zu. Auf diese Weise wird der Einfluss der Wartezeit des Entreffens von Operationseinträgen verringert.
  • Prozessor- und Systemausführungsformen
  • 1 zeigt eine superskalare Prozessorausführungsform der vorliegenden Erfindung. Der superskalare Prozessor 100 umfasst eine Ausführungseinheit bzw. Ausführungsmaschine 150, die eine Architektur mit reduziertem Berechnungsbefehlssatz (RISC), einen Befehlsdekodierer 140, Cache-Speicher und eine Systemschnittstelle 120 aufweist, die Zugriff zu einem Adressenraum bietet, der in dem entsprechenden Speichersubsystem 122 repräsentiert ist und Zugriff zu Einrichtungen auf lokalen Bussen (nicht gezeigt) bietet.
  • Der superskalare Prozessor 100 umfasst einen Cache-Speicher, der in der hierin beschriebenen Ausführungsform mit einem separaten Datenbereich und Befehlsbereich ausgebildet ist. Der Datencache-Speicher 170 und der Befehlscache-Speicher 130 sind (über die Cachesteuerlogik 160 und die Systemschnittstelle 120) mit dem Adressenraum verbunden, der in dem Speichersubsystem 122 abgebildet ist, der einen Hauptspeicher enthält und optional zusätzliche Cache-Speicherebenen aufweist, die anschaulich als ein L2-Cache-Speicher gezeigt sind. Zugriff zu einer L2-Cache-Ebene, d. h. auf die L2-Cachesteuerlogik und einen L2-Datenbereich (nicht gezeigt) kann über die Systemschnittstelle 120 erfolgen. Alternativ kann die L2-Cachesteuerlogik zwischen der Cachesteuerlogik 160 (für L1) und der Systemschnittstelle 120 angeordnet sein.
  • Cache-Speichersysteme sind im Stand der Technik gut bekannt. Insbesondere sind geeignete Formen mit einer Aufteilung einer „Harvard Architektur" für Befehls- und Datencache-Speicher (etwa 170 und 130) und Mehrebenen-Cache-Hierarchien im Stand der Technik für Cache-Speicher gut bekannt. In vielerlei Hinsicht ist das Cache-Subsystem des superskalare Prozessors 190 (d. h. der Datencache-Speicher 170, der Befehlscache-Speicher 130, die Cachesteuerlogik 160 und ein optionaler L2-Cache-Speicher) in einer derartigen Weise geeignet aufgebaut. Jedoch ist aus anderen Gründen als dem Zwischenspeicherverhalten der Befehlscache-Speicher 130 integral mit einer Vordekodierungslogik (nicht gezeigt) versehen. Eine derartige integrierte Vordekodierungslogik erkennt x86-Befehlsgrenzen in dem abgeholten Befehlsstrom und ermöglicht das rasche Dekodieren von Befehlen mittels des Befehlsdekodierers 140.
  • Es sei wieder auf 1 verwiesen; es werden Befehlssequenzen von dem Speichersubsystem in den Befehlscache-Speicher 130 für eine vorweggenommene Ausführung mittels der Ausführungsmaschine 150 eingeladen. Gemäß der Ausführungsform des Prozessors 100, die in 1 gezeigt ist, sind Befehle in dem Befehlscache-Speicher 130 CISC-Befehle, die aus einem komplexen Befehlssatz ausgewählt sind, etwa dem x86-Befehissatz, der in Prozessoren entsprechend der x86-Prozessorarchitektur eingerichtet ist. Der Befehlsdekodierer 140 wandelt die CISC-Befehle, die aus dem Befehlscache-Speicher 130 erhalten werden, in Operationen für die Ausführungsmaschine 150 um. In der Ausführungsform aus 1 sind diese Operationen RISC-artige Operationen (im Weiteren als Operationen oder Op bezeichnet) und ein einzelner x86-Befehl aus dem Befehlscache-Speicher 130 wird in eine oder mehrere Operationen für die Ausführungsmaschine 150 dekodiert. Individuelle Operationen gehören zu einer von mehreren Typengruppen mit Registeroperationen (RegOp), Lade-Schreib- bzw. Speicheroperationen (LdStOp), Ladeoperationen für unmittelbare Werte (LIMMOp), Spezialoperationen (SpecOp) und Fließkomma-Operationen (FpOp). In alternativen Ausführungsformen können andere Befehlssätze dekodiert werden und können unterschiedliche Operationsarten zur Ausführung bereitstellen.
  • Der Befehlsdekodierer 140 umfasst zwei Befehlsübersetzungsbereiche, einen Hardwareübersetzungsbereich MacDec 141 und einen ROM-basierten Übersetzungsbereich 142 und umfasst ferner eine Verzweigungsvorhersagelogik 143. Die häufigsten x86-Befehle werden in kurze Sequenzen aus einem bis vier Operationen unter Anwendung mehrerer paralleler Hardwaredekodierer, die in dem Hardwareübersetzungsbereich 141 enthalten sind, übersetzt. Der Hardwareübersetzungsbereich 141 dekodiert diese üblichen x86-Befehle, die aus dem Befehlscache-Speicher 130 erhalten werden, in kurze Sequenzen aus Operationen, die dann der Disponiereinheit 180 zugeführt werden. Weniger häufige x86-Befehle und jene x86-Befehle, die in Operationssequenzen mit mehr als vier Operationen übersetzt werden, werden von einem ROM-basierten Übersetzungsbereich 142 übersetzt, der eine übersetzte Sequenz aus Operationen, die dem speziellen zu übersetzenden x86-Befehl entsprechen, abholt (aus dem ROM). Übersetzte Operationssequenzen von einer beliebigen Quelle, unabhängig davon, ob diese durch Hardwaredekodierer erzeugt werden oder aus dem ROM abgeholt werden, werden der Disponiereinheit 180 für die Ausführung mittels der Ausführungsmaschine 150 zugeführt.
  • Es sei wieder auf 1 verwiesen; die Ausführungsmaschine 150 umfasst eine Disponiereinheit 180, eine Registerdatei 190 und mehrere Ausführungseinheiten, die von der Disponiereinheit 180 ausgegebene Operationen empfangen und ausführen. In der Ausführungsform aus 1 umfasst die Ausführungsmaschine 150 sieben Ausführungseinheiten: die Ladeeinheit 152, die Schreibeinheit 153, die Registereinheiten 154 und 155, die Fließkommaeinheit 156, die Multimediaeinheit 157 und eine Verzweigungseinheit 158, obwohl alternative Ausführungsformen mehr oder weniger Ausführungseinheiten aufweisen können. In einer beispielhaften Ausführungsform werden die Fließkommaeinheit 156 und die Multimediaeinheit 157 weggelassen. Die Ausführungsmaschine 150 umfasst ferner eine Schreibwarteschlange 159, die zwischen der Schreibeinheit 153 und dem Datencache-Speicher 170 angeordnet ist.
  • Die Disponiereinheit 180 ist als ein geordnetes Array bzw. Feld aus Speichereinträgen und damit verbundenen Logikblöcken aufgebaut, die zusammen eine Ausgabe außerhalb der Reihenfolge von Operationen zu Ausführungseinheiten und zur Weiterleitung von Operationsergebnissen zu einer oder mehreren Ausführungseinheiten unterstützen. Das geordnete Array aus Speichereinträgen und Logikblöcken umfasst ferner einen Umordnungspuffer und ermöglicht das Umbenennen der Architekturregister, die in der Registerdatei 190 definiert sind und ermöglicht eine spekulative Wiederherstellung der Aus führung. Der Befehlsdekodierer 140 versorgt die Disponiereinheit 180 mit neuen Operationen, die aus dem Befehlsstrom dekodiert wurden. Die Disponiereinheit 180 speichert wiederum Daten, die mit jeder neuen empfangenen Operation verknüpft sind, (in einem Speichereintrag) und bewahrt diese Daten. Auf diese Weise überwacht die Disponiereinheit 180 den Status jeder Operation und der zugeordneten Daten, wenn die Operation ausgegeben wird an eine Ausführungseinheit und von dieser ausgeführt wird. Nachdem eine gewisse Operation vollständig ausgeführt ist und die Datenabhängigkeiten aufgelöst sind, wird diese zurückgenommen bzw. abgeschlossen und der entsprechende Eintrag der Disponiereinheit wird freigegeben.
  • Die Disponiereinheit 180 ist mit Ausführungseinheiten (d. h. der Ladeeinheit 152, der Schreibeinheit 153, den Registereinheiten 154 und 155, der Fließkommaeinheit 156, der Multimediaeinheit 157 und der Verzweigungseinheit 158) über eine Gruppe aus Bussen und Steuerleitungen, die gemeinsam als ein Bus 189 gezeigt sind, verbunden. Die Disponiereinheit 180 liefert Operationen, Registeroperanden und Steuersignale zu den Ausführungseinheiten und empfängt Ergebniswerte und Statusindikationen von den Ausführungseinheiten, über den Bus 189, wie dies anschaulich dargestellt ist. Selbstverständlich müssen alle Busse und Steuerleitungen vollständig angeschlossen sein und der Bus 189 dient lediglich zur Veranschaulichung einer bidirektionalen Anbindung der Disponiereinheit 180 an die Ausführungseinheiten.
  • Die Ladeeinheit 152 und die Schreibeinheit 153 führen Lade/Schreiboperationen aus, wobei entsprechend Daten aus dem adressierbaren Speicher ausgelesen oder in diesen geschrieben werden. Abhängig von dem Zwischenspeicherungszustand einer speziellen Speicheradresse kann eine Lade/Schreiboperation in dem L1-Datencache-Speicher 170, in einem L2-Cache-Speicher (nicht gezeigt) oder in dem Hauptspeicher (ebenso nicht gezeigt) abgeschlossen werden. Die Schreibwarteschlange 159 speichert temporär Daten aus der Schreibeinheit 153, so dass die Schreibeinheit 153 und die Ladeeinheit 152 parallel arbeiten können, ohne dass konflikterzeugende Zugriffe auf den Datencache-Speicher 170 erzeugt werden. Die Registereinheiten 154 und 155 führen Registeroperationen aus, die auf Daten operieren, die mit den Architekturregistern der Registerdatei 190 verknüpft sind.
  • Es werden eine Vielzahl von Computersystemkonfigurationen berücksichtigt, wobei jede erfindungsgemäß eine Ausführungssteuerung für Lade/Schreiboperationen außerhalb der Reihenfolge ermöglicht. Beispielsweise umfasst ein derartiges Computersystem (z. B. das Computersystem 1000): einen Prozessor 100, der eine Ausführungssteuerung für Lade/Schreiboperationen außerhalb der Reihenfolge gemäß der vorliegenden Erfindung bereitstellt, ein Speichersubsystem (beispielsweise RAM 1020), einen Anzeigeadapter 1010, eine Diskettensteuerung/Adapter 1030, diverse Eingabe/Ausgabeschnittstellen und Adapter (beispielsweise parallele Schnittstelle 1009, serielle Schnittstelle 1008, LAN-Adapter 1007, etc.) und entsprechende externe Geräte (beispielsweise eine Anzeigeeinrichtung 1001, einen Drucker 1002, ein Modem 1003, eine Tastatur 1006 und einen Datenspeicher). Der Datenspeicher umfasst Einrichtungen, etwa eine Festplatte 1032, ein Diskettenlaufwerk 1031, eine Magnetbandeinheit, ein CD-ROM Laufwerk, eine Musikeinrichtung, ein redundantes Array aus kostengünstigen Speicherscheiben (RAID), einen Flashspeicher, etc..
  • Weitere Ausführungsformen
  • Das Folgende zeigt weitere Ausführungsformen gemäß der vorliegenden Erfindung:
    Eine Suchlogik für das Anzeigen des Vorhandenseins von einem oder mehreren älteren Einträgen, die ein Operationstypkriterium erfüllen, in einem nach Alter geordnetem Array aus Operationseinträgen mit einem ausgewählten Eintrag. Die Suchlogik umfasst eine erste gruppeninterne Logik, die angeschlossen ist, um eine Auswahlindikation und eine Operationstypkriteriumsindikation für jeden Eintrag in einer ersten Gruppe der Operationseinträge zu empfangen. Jede derartige Auswahlindikation gibt entsprechend an, ob der entsprechende Eintrag der ausgewählte Eintrag ist oder nicht, wobei die erste gruppeninterne Logik eine erste Verbindung des ausgewählten Eintrags und einer älteren Operation kennzeichnet, die das Operationstypkriterium in der ersten Gruppe erfüllt. Die Suchlogik umfasst ferner eine zweite gruppeninterne Logik, die angeschlossen ist, eine Auswahlindikation und eine Operationstypkriteriumsindikation für jeden Eintrag in einer zweiten Gruppe der Operationseinträge zu empfangen. Jede derartige Auswahlindikation gibt entsprechend an, ob der entsprechende Eintrag der ausgewählte Eintrag ist, wobei die zweite gruppeninterne Logik eine zweite Verbindung des ausgewählten Eintrags und einer älteren Operation angibt, die das Operationstypkriterium in der zweiten Gruppe erfüllt. Die Suchlogik umfasst ferner eine erste gruppenumspannende Logik, die angeschlossen ist, die Auswahlindikation für jeden Eintrag in der ersten Gruppe der Operationseinträge und die Operationstypkriteriumsindikation für jeden Eintrag in der zweiten Gruppe der Operationseinträge zu empfangen, wobei die erste gruppenumspannende Logik eine dritte Verbindung des ausgewählten Eintrags in der ersten Gruppe und einer älteren Operation angibt, die das Operationstypkriterium in der zweiten Gruppe erfüllt; und eine Kombinierlogik, die mit der ersten gruppeninternen Logik, der zweiten gruppeninternen Logik und der ersten gruppenumspannenden Logik verbunden ist, um Identifizierungssignale davon zu erhalten, wobei die Kombinierlogik einen älteren Eintrag, der durch das Signal gekennzeichnet ist, in Reaktion auf eines der Identifizierungssignale bereitstellt.
  • Die zuvor beschriebene Suchlogik kann ferner eine dritte und eine vierte gruppeninterne Logik aufweisen, die entsprechend angeschlossen sind, um Auswahlindikationen und Operationstypkriteriumsindikationen für jeden Eintrag in einer entsprechenden dritten oder vierten Gruppe der Operationseinträge zu empfangen, wobei die dritte und vierte gruppeninterne Logik entsprechend vierte und fünfte Verbindungen bzw. Konjunktionen des ausgewählten Eintrages und einer älteren Operation angeben, die das Operationstypkriterium in der entsprechenden dritten bzw. vierten Gruppe erfüllt; die Logik kann ferner eine zweite gruppenüberspannende Logik aufweisen, die angeschlossen ist, die Auswahlindikation für jeden Eintrag in der dritten Gruppe der Operationseinträge und die Operationstypkriteriumsindikation für jeden Eintrag in der vierten Gruppe der Operationseinträge zu empfangen, wobei die zweite gruppenüberspannende Logik eine sechste Verbindung des ausgewählten Eintrags in der dritten Gruppe und einer älteren Operation angibt, die das Operationstypkriterium in der vierten Gruppe erfüllt, wobei die Kombinierlogik ferner mit der dritten gruppeninternen Logik, der vierten gruppeninternen Logik und der zweiten gruppenüberspannenden Logik verbunden ist, um vierte, fünfte und sechste Verbindungssignale davon zu empfangen, wobei die Kombinierlogik einen älteren Eintrag, der durch das Signal angegeben ist, in Reaktion auf das erste, das zweite, das dritte, das vierte, das fünfte oder das sechste Verbindungssignal angibt.
  • Alternativ kann die Suchlogik ferner aufweisen: eine dritte und eine vierte gruppeninterne Logik, die jeweils angeschlossen sind, Auswahlindikationen und Operationstypkriteriumsindikationen für jeden Eintrag in einer entsprechenden dritten bzw. vierten Gruppe der Operationseinträge zu empfangen, wobei die dritte und die vierte gruppeninterne Logik entsprechend eine vierte bzw. eine fünfte Verbindung des ausgewählten Eintrags und einer älteren Operation angeben, die das Operationstypkriterium in der entsprechenden dritte bzw. vierten Gruppe erfüllt; eine zweite gruppenüberspannende Logik, die ange schlossen ist, die Auswahlindikation für jeden Eintrag in der dritten Gruppe der Operationseinträge und die Operationstypkriteriumsindikation für jeden Eintrag in der vierten Gruppe der Operationseinträge zu empfangen, wobei die zweite gruppenüberspannende Logik eine sechste Verbindung des ausgewählten Eintrags in der dritten Gruppe und einer älteren Operation angibt, die das Operationstypkriterium in der vierten Gruppe erfüllt, wobei die Kombinierlogik ferner mit der dritten gruppeninternen Logik, der vierten gruppeninternen Logik und der zweiten gruppenüberspannenden Logik verbunden ist, um vierte, fünfte und sechste Verbindungssignale davon zu erhalten, wobei die Kombinierlogik einen älteren Eintrag, der durch das Signal gekennzeichnet ist, in Reaktion auf das erste, zweite, dritte, vierte, fünfte oder sechste Verbindungssignal bereitstellt.
  • Gemäß einer weiteren Ausführungsform wird ein Prozessor bereitgestellt mit einer Ladeeinheit und einer Schreibeinheit, einer Lade/Schreibausführungssteuerung, die ausgebildet ist, um Lade- und Speicherbefehle im Allgemeinen außerhalb der Reihenfolge in Bezug zueinander ausführen zu können, um damit Datenabhängigkeiten zwischen den Lade- und Schreibbefehlen zu erzwingen. Die Lade/Schreibausführungssteuerung umfasst ein nach Alter geordnetes Array aus Disponiereinheitsoperationseinträgen, wobei jeder Disponiereinheitsoperationseintrag eine entsprechende Operation in einer Operationsabfolge kennzeichnet. Eine Ladehaltelogik ist mit der Ladeeinheit verbunden, um in selektiver Weise das Ausführen einer Ladeoperation in der Ladeeinheit beim Empfang einer Indikation für eine ältere Schreiboperation zu verhindern; eine Abtastketten- bzw. Durchsuch- oder Suchkettenlogik ist mit den Operationseinträgen und der Ladahaltelogik verbunden, wobei die Suchkettenlogik Indikationen für ältere Schreiboperationen bereitstellt, die das Vorhandensein einer älteren Schreiboperation in Bezug auf eine Ladeoperation in der Ladeeinheit angeben, wobei die Suchlogik eine gruppeninterne Logik enthält, die angeschlossen ist, entsprechende Auswahl- und erste Kriteriumssignale für jeden Eintrag in entsprechenden Gruppen der ersten Ebene benachbarter Einträge zu empfangen und entsprechende Verbindungen des ausgewählten Eintrags und eines Eintrags höherer Ordnung in den entsprechenden Gruppen der ersten Ebene zu erkennen; einer ersten gruppenüberspannenden Logik der ersten Ebenen, die angeschlossen ist, entsprechende Auswahl- und erste Kriteriumssignale entsprechend den Einträgen aus benachbarten Gruppen der ersten Ebene höherer Ordnung und tieferer Ordnung zu empfangen und entsprechende Verbindungen des ausgewählten Eintrags in den Gruppen der ersten Eben mit geringerer Ordnung oder dem Eintrag mit höherer Ordnung in der entsprechenden Gruppe der ersten Ebene höherer Ordnung zu erkennen; und eine Kombinier logik, die mit der gruppeninternen Logik und der ersten gruppenüberspannenden Logik der ersten Ebene verbunden ist, um davon Verbindungssignale zu erhalten, wobei die Kombinierlogik ein Signal „Eintrag höherer Ordnung erkannt" in Reaktion auf eines der Verbindungssignale bereitstellt.
  • Obwohl die Erfindung mit Bezug zu diversen Ausführungsformen beschrieben ist, erkennt man, dass diese Ausführungsformen anschaulich sind und den Schutzbereich der Erfindung nicht beschränken. Es können viele Variationen, Modifizierungen, Hinzufügungen und Verbesserungen der Ausführungsformen, wie sie beschrieben sind, durchgeführt werden. Beispielsweise ist die Organisation von Operationseinträgen in der Disponiereinheit 180 als Vierer-Operationen lediglich anschaulich. Alternative Ausführungsformen können andere Strukturen und/oder Verfahren zur Darstellung der Natur und des Zustandes von Operationen in einem Computer mit mehreren und/oder in Pipeline-Struktur vorgesehenen Ausführungseinheiten verwenden. Die Suchlogik kann ausgebildet sein, eine größere oder eine geringere Anzahl an Operationseinträgen, die in größeren oder kleineren Gruppen zusammengefasst sind, zu verarbeiten. Des Weiteren sind eine Vielzahl von Gatter-/Gatterkomplex-Ebenen als Logikgestaltungen abwendbar, ohne von der hierin beschriebenen hierarchischen Organisation abzuweichen. In alternativen Ausführungsformen kann eine unterschiedliche Verteilung von Strukturen und Funktionen innerhalb der Ladeeinheit 152 und der Schreibeinheit 153 vorgesehen sein. Beispielsweise können die Ladeeinheit 152 und die Schreibeinheit 153 unabhängig modifiziert werden, um eine größere oder geringere Anzahl an Ausführungsstufen zu enthalten. Entsprechende Änderungen an dem gewünschten Satz an Suchlogikinstanzen sind für den Fachmann offensichtlich. Strukturen für den Adressenvergleich können in unterschiedlicher Weise zwischen der Ladeeinheit 152 und der Schreibeinheit 153 verteilt sein. Des Weiteren können in alternativen Ausführungsformen eine größere oder geringere Anzahl an Suchlogikinstanzen zum Halten von Ladeoperationen und Schreiboperationen vorgesehen sein. Der Adressenvergleich kann zu Gunsten einer konservativeren Haltestrategie vermieden werden. Des Weitem können Strukturen und Funktionen, die hierin als Hardware in der anschaulichen Ausführungsform dargestellt sind, auch als Software, Firmware oder als Mikrokodierung in alternativen Ausführungsformen eingerichtet sein. Diese und weitere Variationen, Modifizierungen, Hinzufügungen und Verbesserungen liegen innerhalb des Schutzbereiches der Erfindung, wie sie durch folgenden Patentansprüche definiert ist.

Claims (18)

  1. Durchsuchkettenlogik (700) zur Anzeige des Vorhandenseins eines Eintrages, der ein erstes Kriterium erfüllt, in einem geordneten Feld (240) aus N Einträgen, wobei die N Einträge von einem Eintrag niedrigsten Ranges zu einem Eintrag höchsten Ranges reichen, und wobei jeder Eintrag eine definierte Position in der Reihenfolge aufweist, und wobei das Feld einen ausgewählten Eintrag enthält, wenn der das erste Kriterium erfüllende Eintrag eine höhere Position in der Reihenfolge als der ausgewählte Eintrag aufweist, jeder Eintrag eine Logik (720, 710) aufweist, um ein entsprechendes Auswahlsignal und ein Übereinstimmungssignal für das erste Kriterium bereitzustellen, wobei die Durchsuchlogik (700) hierarchisch organisiert ist, um Ebenen von Gruppen mit Einträgen zu definieren, und wobei die Durchsuchlogik umfasst: eine gruppeninterne Logik (740), die angeschlossen ist, das entsprechende Auswahlsignal und das Übereinstimmungssignal für das erste Kriterium für jeden Eintrag in entsprechenden Gruppen der ersten Ebene benachbarter Einträge zu empfangen und entsprechende Verbindungen des ausgewählten Eintrags und des Eintrags höheren Ranges in den entsprechenden Gruppen der ersten Ebene zu erkennen und ein Signal für eine gruppeninterne Verbindung bereitzustellen; eine gruppenumspannende Logik der ersten Ebene (760), die angeschlossen ist, die entsprechenden Auswahlsignale und Übereinstimmungssignale für das erste Kriterium, die den Einträgen von benachbarten Gruppen der ersten Ebene mit geringerem Rang und höherem Rang entsprechen, zu empfangen und die entsprechenden Verbindungen des ausgewählten Eintrags in einer der Gruppen der ersten Ebene mit geringerem Rang und dem Eintrag mit höherem Rang in der entsprechenden Gruppe der ersten Ebene mit höherem Rang zu erkennen und ein gruppenumspannendes Verbindungssignal bereitzustellen; und eine Kombinierlogik (770), die mit der gruppeninternen Logik und der gruppenumspannenden Logik der ersten Ebene verbunden ist, um das gruppeninterne Verbindungssignal und das gruppenumspannende Verbindungssignal zu empfangen, wobei die Kombinierlogik ein Signal zur Erkennung eines Eintrags höheren Ranges, das das Vorhandensein des ausgewählten Eintrags und mindestens eines Eintrags höheren Ranges anzeigt, der das erste Kriterium erfüllt, in Reaktion auf eines der Verbindungssignale bereitstellt.
  2. Durchsuchlogik nach Anspruch 1, wobei die Einträge Operations-(Op) Einträge zur Bewertung in Ausführungseinheiten (152 bis 158) eines Prozessors mit mehreren Ausführungseinheiten aufweisen, wobei die Op-Einträge nach Alter geordnet sind, wobei höherrangige Einträge ältere Op-Einträge und niederrangige Einträge jüngere Op-Einträge aufweisen; wobei der ausgewählte Eintrag einen Ladeoperations-(LdOp) Eintrag aufweist; und wobei das erste Kriterium mit einem Schreiboperations-(StOp) Eintrag übereinstimmt.
  3. Durchsuchlogik nach Anspruch 1, wobei die Einträge Operations-(Op) Einträge zur Bewertung in Ausführungseinheiten (152 bis 158) eines Prozessors mit mehreren Ausführungseinheiten aufweisen; wobei die Op-Einträge nach Alter geordnet sind, wobei höherrangige Einträge ältere Op-Einträge und niederrangige Einträge jüngere Op-Einträge aufweisen; wobei der ausgewählte Eintrag einen Schreiboperations-(StOp) Eintrag aufweist; und wobei das erste Kriterium mit einem Ladeoperations-(LdOp) Eintrag übereinstimmt.
  4. Durchsuchlogik nach Anspruch 1, wobei die Einträge Operations-(Op) Einträge zur Bewertung in Ausführungseinheiten (152 bis 158) eines Prozessors mit mehreren Ausführungseinheiten aufweisen, wobei der Prozessor mit mehreren Ausführungseinheiten eine Ladeeinheit (152) und eine Schreibeinheit (153) aufweist; wobei die Op-Einträge nach Alter geordnet sind und wobei höherrangige Einträge ältere Op-Einträge und niederrangigere Einträge jüngere Op-Einträge aufweisen; wobei der ausgewählte Eintrag einen ausgewählten Op-Eintrag aufweist, der einer Schreiboperation (StOp) oder einer Ladeoperation (LdOp) in einer letzten Stufe der Bewertung in einer entsprechenden Schreibeinheit oder Ladeeinheit entspricht; und wobei das erste Kriterium mit der anderen der Schreiboperation (StOp) oder der Ladeoperation (LdOp) in einer vorbestimmten Stufe der Bewertung in der entsprechenden Schreibeinheit oder Ladeeinheit übereinstimmt.
  5. Durchsuchlogik zum Schreiben älterer Instanzen und zum Laden älterer Instanzen, wobei die Logik gemäß Anspruch 4 aufgebaut ist, wobei die Auswahlsignale für die Durchsuchlogik zum Schreiben älterer Instanzen kennzeichnend sind für einen der Op-Einträge, falls vorhanden, die einer Stufe-2-LdOp in der Ladeeinheit entsprechen, wobei die Auswahlsignale für die Durchsuchlogik zum Laden älterer Instanzen kennzeichnend sind für einen der Op-Einträge, falls vorhanden, der einer Stufe-2-StOp in der Schreibeinheit entspricht, wobei die Übereinstimmungssignale für das erste Kriterium für die Durchsuchlogik zum Schreiben älterer Instanzen kennzeichnend sind für eine StOp in einer ersten vorbestimmten Stufe der Bewertung in der Schreibeinheit, und wobei die Übereinstimmungssignale für das erste Kriterium für die Durchsuchlogik zur Ladung älterer Instanzen kennzeichnend sind für eine LdOp in einer zweiten vorbestimmten Stufe der Bewertung bei der Ladeeinheit, wobei das Signal zur Erkennung höherrangiger Einträge der Durchsuchlogik zum Schreiben älterer Instanzen ein „Schreib-älter"-Signal und das Signal zur Erkennung eines höherrangigen Eintrags der Durchsuchlogik zum Laden älterer Instanzen ein „Lade-älter"-Signal ist.
  6. Durchsuchlogik nach Anspruch 1, die ferner umfasst: eine gruppenumspannende Logik der zweiten Ebene (750), die angeschlossen ist, das entsprechende Auswahlsignal und das Übereinstimmungssignal für das erste Kriterium zu empfangen, die Einträgen von benachbarten niederrangigen und höherrangigen Gruppen der zweiten Ebene entsprechen, und um eine entsprechende Verbindung des ausgewählten Eintrags in einer der niederrangigeren Gruppen der zweiten Ebene mit dem höherrangigen Eintrag in der entsprechenden höherrangigeren Gruppe der zweiten Ebene zu erkennen, und wobei die Kombinierlogik (770) ferner mit der gruppenumspannenden Logik der zweiten Ebene verbunden ist, um ein Verbindungssignal davon zu empfangen, wobei die Kombinierlogik ein Signal zur Erkennung eines höherrangigen Eintrags in Reaktion auf eines der Verbindungssignale einschließlich jenes von der gruppenumspannenden Logik der zweiten Ebene bereitstellt.
  7. Durchsuchlogik nach Anspruch 6, wobei jede der Gruppen der ersten Ebene in den Gruppen der zweiten Ebene hierarchisch definiert ist.
  8. Durchsuchlogik nach Anspruch 6, wobei jede der Gruppen der ersten Ebene drei Einträge des geordneten Feldes (240) aufweist und wobei jede der Gruppen der zweiten Ebene sechs Einträge des geordneten Feldes aufweist.
  9. Durchsuchlogik nach Anspruch 1, die ferner umfasst: sukzessive Ebenen aus hierarchisch organisierten gruppenumspannenden Logiken (750, 730), die angeschlossen sind, das entsprechende Auswahlsignal und das Übereinstimmungssignal für das erste Kriterium, die den Einträgen von sukzessiv größeren Gruppen benachbarter Einträgen entsprechen, zu empfangen, und in jeder aufeinanderfolgenden Ebene entsprechende Verbindungen des ausgewählten Eintrags in einer niederrangigen Gruppe und des höherrangigen Eintrags in der entsprechenden höherrangigen Gruppe zu erkennen, und wobei die Kombinierlogik (770) ferner mit jeder sukzessiven Ebenen hierarchisch organisierter gruppenumspannender Logiken verbunden ist, um Verbindungssignale davon zu empfangen, wobei die Kombinierlogik ein Signal zur Erkennung höherrangiger Einträge in Reaktion auf eines der Verbindungssignale einschließlich jener von den aufeinanderfolgenden Ebenen hierarchisch organisierter gruppenumspannender Logiken bereitstellt.
  10. Durchsuchlogik nach Anspruch 9, wobei jede der Gruppen erster Ordnung drei Einträge des geordneten Feldes aufweist, und wobei jede der aufeinanderfolgend größer werdenden Gruppen benachbarter Einträge die doppelte Anzahl der Einträge des dann enthaltenen geordneten Feldes aufweist.
  11. Durchsuchlogik nach Anspruch 9, wobei das geordnete Feld nach Alter geordnet ist und vierundzwanzig (24) Operationseinträge enthält; wobei jede der Gruppen erster Ordnung drei (3) benachbarte Einträge aus dem nach Alter geordneten Feld enthält; und wobei die Gruppen der ersten Ebene und jede der aufeinanderfolgend größeren Gruppen benachbarter Einträge zusammen vier (4) Ebenen hierarchisch definierter Gruppen aus benachbarten Einträgen definieren, wobei in jeder die Anzahl der darin enthaltenen benachbarten Einträge verdoppelt ist.
  12. Durchsuchlogik nach Anspruch 9, wobei das geordnete Feld nach Alter geordnet und vierundzwanzig (24) Operationseinträge aufweist; und wobei die Logikpfade, die durch die Durchsuchlogik zum Berechnen des Signals zur Erkennung der höherrangigen Einträge aus einer Kennzeichnung der Eintragsebenenauswahl und einer Kennzeichnung der Übereinstimmung des ersten Kriteriums definiert sind, einheitlich nicht größer als fünf (5) Gateverzögerungszeiten sind.
  13. Durchsuchlogik nach Anspruch 9, wobei das geordnete Feld ein nach Alter geordnetes Feld aus Operationseinträgen ist; wobei der ausgewählte Eintrag einer Ladeoperation oder einer Schreiboperation in einer ausgewählten Ausführungsstufe entspricht; und wobei das erste Kriterium ist, ob die Art der Operation gleich der anderen Operation aus der Schreib- oder Ladeoperation ist.
  14. Superskalarer Prozessor mit: einer Ladeeinheit (152) und einer Schreibeinheit (153), einer Lade- und Schreibausführungssteuerlogik (180), die mit der Ladeeinheit und der Schreibeinheit verbunden ist, um Lade- und Schreibinstruktionen im Allgemeinen ungeordnet im Hinblick aufeinander ausführen zu können, wobei Datenabhängigkeiten zwischen gewissen Lade/Schreibinstruktionen berücksichtigt werden, wobei die Lade/Schreibausführungssteuerung eine Durchsuchlogik nach Anspruch 1 umfasst.
  15. Durchsuchlogik nach Anspruch 1, wobei eine Gruppe der ersten Ebene eine Gruppe aus drei (3) benachbarten Feldeinträgen umfasst; log2 (N/3) Ebenen hierarchisch organisierter gruppenumspannender Logiken angeschlossen sind, um entsprechende Auswahl- und Übereinstimmungssignale für das erste Kriterium zu empfangen, die den Einträgen aus sukzessiv größeren Gruppen benachbarter Einträge entsprechen, um bei jeder aufeinanderfolgenden Ebene entsprechende Verbindungen zu dem ausgewählten Eintrag in einer niederrangigen Gruppe und dem höherrangigen Feldeintrag in der entsprechenden höherrangigen Gruppe zu erkennen; und die hierarchisch organisierte Durchsuchlogik aus nicht mehr als log2 (N/3) + 2 Verzögerungszeiten von invertierenden Gates besteht.
  16. Verfahren zur Anzeige des Vorhandenseins, in einem nach Alter geordneten Feld (240) aus Operations-(Op) Einträgen mit einem ausgewählten Op-Eintrag, eines oder mehrerer älterer Einträge, die ein Operationstypkriterium erfüllen, wobei die Einträge in Gruppen aus einer vorbestimmten Größe angeordnet sind und jeder Eintrag eine definierte Ordnungsposition besitzt, wobei das Verfahren die Schritte umfasst: Erfassen einer gruppeninternen Verbindung des ausgewählten Op-Eintrags mit einer älteren Op, die das Operationstypkriterium in einer ersten Gruppe der Op-Einträge erfüllt; Erfassen einer gruppeninternen Verbindung des ausgewählten Op-Eintrags mit einer älteren Op, die das Operationstypkriterium in jeder folgenden älteren Gruppe einschließlich der aufeinanderfolgenden zweiten, dritten und vierten Gruppe der Op-Einträge erfüllt; Erfassen einer gruppenumspannenden Verbindung der ersten Ebene des ausgewählten Op-Eintrags in der ersten Gruppe aus Op-Einträgen mit einer älteren Op, die das Operationstypkriterium in der zweiten Gruppe aus Op-Einträgen erfüllt; Erfassen einer ersten gruppenumspannenden Verbindung der ersten Ebene des ausgewählten Op-Eintrags mit einer älteren Op, die das Operationstypkriterium in jedem aufeinanderfolgenden Paar aus Gruppen aus Op-Einträgen einschließlich in der dritten und vierten Gruppe aus Op-Einträgen erfüllt; und Kombinieren des Erfassens der gruppeninternen Verbindung für die erste Gruppe, des Erfassens der gruppeninternen Verbindungen für jede aufeinanderfolgende Gruppe, des Erfassens der ersten gruppenumspannenden Verbindung der ersten Ebene für erste und zweite Gruppen und des Erfassens der gruppenumspannenden Verbindungen der ersten Ebene für jedes aufeinanderfolgende Paar aus Gruppen, um ein Signal bereitzustellen, das eine Op kennzeichnet, die das Operationstypkriterium erfüllt und älter ist als die ausgewählte Op, die in dem Feld aus Op-Einträgen auftritt.
  17. Verfahren nach Anspruch 16, das ferner den Schritt umfasst: Erfassen einer gruppenumspannenden Verbindung der zweiten Ebene des ausgewählten Op-Eintrags in der ersten oder der zweiten Gruppe einer älteren Op, die das Operationstypkriterium in der dritten oder der vierten Gruppe erfüllt; wobei der Kombinierschritt ferner umfasst: Kombinieren des Erfassens der gruppenumspannenden Verbindung der zweiten Ebene mit dem Erfassen der gruppeninternen und gruppenumspannenden Verbindung der ersten Ebene, um ein Signal bereitzustellen, das eine Op kennzeichnet, die das Operationstypkriterium erfüllt und älter als die ausgewählte Op ist, die in dem Feld aus Op-Einträgen auftritt.
  18. Verfahren nach Anspruch 16, das ferner den Schritt umfasst: Erfassen aufeinanderfolgender Ebenen gruppenumspannender Verbindungen bei aufeinanderfolgenden Ebenen hierarchisch organisierter zusammengesetzter Gruppen, wobei eine Verbindung bei einer speziellen Ebene der zusammengesetzten Gruppen aufritt, wenn der ausgewählte Op-Eintrag in einem der beiden zusammengesetzten Gruppen ist und eine ältere Op, die das Operationstypkriterium erfüllt, in der zweiten Gruppe der beiden zusammengesetzten Gruppen ist; wobei der Schritt des Kombinierens ferner umfasst: Kombinieren des Erfassens gruppenumspannender Verbindungen bei jeder aufeinanderfolgenden Ebene hierarchisch organisierter zusammengesetzter Gruppen mit dem Erfassen gruppeninterner und gruppenumspannender Verbindungen der ersten Ebene, um ein Signal bereitzustellen, das eine Op kennzeichnet, die das Operationstypkriterium erfüllt, und älter ist als die ausgewählte Op, die in dem Feld aus Op-Einträgen aufritt.
DE69736105T 1996-01-26 1997-01-22 Hierarchische durchsuchlogik für ungeordnete lade/speicherausführungssteuerung Expired - Lifetime DE69736105T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US08/592,209 US5754812A (en) 1995-10-06 1996-01-26 Out-of-order load/store execution control
US592209 1996-01-26
US08/740,119 US5835747A (en) 1996-01-26 1996-10-23 Hierarchical scan logic for out-of-order load/store execution control
US740119 1996-10-23
PCT/US1997/000294 WO1997027538A1 (en) 1996-01-26 1997-01-22 Hierarchical scan logic for out-of-order load/store execution control

Publications (2)

Publication Number Publication Date
DE69736105D1 DE69736105D1 (de) 2006-07-27
DE69736105T2 true DE69736105T2 (de) 2007-01-11

Family

ID=27081403

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69736105T Expired - Lifetime DE69736105T2 (de) 1996-01-26 1997-01-22 Hierarchische durchsuchlogik für ungeordnete lade/speicherausführungssteuerung

Country Status (6)

Country Link
US (1) US5835747A (de)
EP (1) EP0876646B1 (de)
JP (1) JP3681761B2 (de)
AU (1) AU1530997A (de)
DE (1) DE69736105T2 (de)
WO (1) WO1997027538A1 (de)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987595A (en) * 1997-11-25 1999-11-16 Intel Corporation Method and apparatus for predicting when load instructions can be executed out-of order
US6192464B1 (en) * 1997-12-31 2001-02-20 Intel Corporation Method and apparatus for decoding one or more instructions after renaming destination registers
US6212622B1 (en) 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Mechanism for load block on store address generation
US6122727A (en) * 1998-08-24 2000-09-19 Advanced Micro Devices, Inc. Symmetrical instructions queue for high clock frequency scheduling
US6212623B1 (en) 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Universal dependency vector/queue entry
DE69922238T2 (de) * 1998-08-24 2005-11-03 Advanced Micro Devices, Inc., Sunnyvale Mechanismus zur blockierung von ladeoperationen auf adressengeneration von speicherbefehlen und universeller abhängigkeitsvektor
US6141747A (en) * 1998-09-22 2000-10-31 Advanced Micro Devices, Inc. System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word
US6223259B1 (en) * 1998-10-30 2001-04-24 Telefonaktiebolaget Lm Ericsson (Publ) Reducing read cycle of memory read request for data to be partially modified by a pending write request
US6167492A (en) 1998-12-23 2000-12-26 Advanced Micro Devices, Inc. Circuit and method for maintaining order of memory access requests initiated by devices coupled to a multiprocessor system
US6304955B1 (en) * 1998-12-30 2001-10-16 Intel Corporation Method and apparatus for performing latency based hazard detection
EP1050806A1 (de) * 1999-05-03 2000-11-08 STMicroelectronics SA Speicheradressenvergleich
US6523109B1 (en) 1999-10-25 2003-02-18 Advanced Micro Devices, Inc. Store queue multimatch detection
US6481251B1 (en) 1999-10-25 2002-11-19 Advanced Micro Devices, Inc. Store queue number assignment and tracking
US6694424B1 (en) 2000-01-03 2004-02-17 Advanced Micro Devices, Inc. Store load forward predictor training
US6622235B1 (en) 2000-01-03 2003-09-16 Advanced Micro Devices, Inc. Scheduler which retries load/store hit situations
US6651161B1 (en) * 2000-01-03 2003-11-18 Advanced Micro Devices, Inc. Store load forward predictor untraining
US6542984B1 (en) 2000-01-03 2003-04-01 Advanced Micro Devices, Inc. Scheduler capable of issuing and reissuing dependency chains
US6564315B1 (en) 2000-01-03 2003-05-13 Advanced Micro Devices, Inc. Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction
US6622237B1 (en) 2000-01-03 2003-09-16 Advanced Micro Devices, Inc. Store to load forward predictor training using delta tag
DE10110578B4 (de) * 2000-03-29 2004-06-03 International Business Machines Corporation Hierarchisches Prioritätsfilter mit integrierter Serialisierung
US6662293B1 (en) * 2000-05-23 2003-12-09 Sun Microsystems, Inc. Instruction dependency scoreboard with a hierarchical structure
US6857060B2 (en) 2001-03-30 2005-02-15 Intel Corporation System, apparatus and method for prioritizing instructions and eliminating useless instructions
US6963961B1 (en) * 2001-07-09 2005-11-08 Lsi Logic Corporation Increasing DSP efficiency by independent issuance of store address and data
US6803786B1 (en) 2003-03-11 2004-10-12 Xilinx, Inc. Structures and methods providing columns of tightly coupled processor and RAM blocks within an array of logic blocks
US7321964B2 (en) * 2003-07-08 2008-01-22 Advanced Micro Devices, Inc. Store-to-load forwarding buffer using indexed lookup
US7376817B2 (en) * 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads
US11106469B2 (en) 2019-08-14 2021-08-31 International Business Machines Corporation Instruction selection mechanism with class-dependent age-array

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4180861A (en) * 1978-03-31 1979-12-25 Ncr Corporation Selectively operable mask generator
JPS55147744A (en) * 1979-05-07 1980-11-17 Hitachi Ltd Memory controlling unit
JPS6462764A (en) * 1987-09-03 1989-03-09 Agency Ind Science Techn Vector computer
JP3153906B2 (ja) * 1989-02-24 2001-04-09 アドヴァンスド マイクロ デヴァイセス インコーポレイテッド コンピュータの分散型パイプライン制御装置及び方法
US5095458A (en) * 1990-04-02 1992-03-10 Advanced Micro Devices, Inc. Radix 4 carry lookahead tree and redundant cell therefor
JPH0820949B2 (ja) * 1991-11-26 1996-03-04 松下電器産業株式会社 情報処理装置
DE69327688T2 (de) * 1992-08-12 2000-09-07 Advanced Micro Devices Inc Befehlsdecoder
EP0663083B1 (de) * 1992-09-29 2000-12-20 Seiko Epson Corporation System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor
US5450560A (en) * 1992-12-21 1995-09-12 Motorola, Inc. Pointer for use with a buffer and method of operation
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
JPH0793152A (ja) * 1993-09-20 1995-04-07 Fujitsu Ltd マイクロプロセッサ制御装置
DE69427265T2 (de) * 1993-10-29 2002-05-02 Advanced Micro Devices Inc Superskalarbefehlsdekoder
US5724536A (en) * 1994-01-04 1998-03-03 Intel Corporation Method and apparatus for blocking execution of and storing load operations during their execution
US5689693A (en) * 1994-04-26 1997-11-18 Advanced Micro Devices, Inc. Range finding circuit for selecting a consecutive sequence of reorder buffer entries using circular carry lookahead
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5745726A (en) * 1995-03-03 1998-04-28 Fujitsu, Ltd Method and apparatus for selecting the oldest queued instructions without data dependencies
US5754812A (en) * 1995-10-06 1998-05-19 Advanced Micro Devices, Inc. Out-of-order load/store execution control
US5745724A (en) * 1996-01-26 1998-04-28 Advanced Micro Devices, Inc. Scan chain for rapidly identifying first or second objects of selected types in a sequential list
US5748934A (en) * 1996-05-31 1998-05-05 Hewlett-Packard Company Operand dependency tracking system and method for a processor that executes instructions out of order and that permits multiple precision data words

Also Published As

Publication number Publication date
JP2000515268A (ja) 2000-11-14
AU1530997A (en) 1997-08-20
JP3681761B2 (ja) 2005-08-10
DE69736105D1 (de) 2006-07-27
EP0876646B1 (de) 2006-06-14
US5835747A (en) 1998-11-10
WO1997027538A1 (en) 1997-07-31
EP0876646A1 (de) 1998-11-11

Similar Documents

Publication Publication Date Title
DE69736105T2 (de) Hierarchische durchsuchlogik für ungeordnete lade/speicherausführungssteuerung
DE4301417C2 (de) Computersystem mit Einrichtung zur parallelen Befehlsausführung
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69724771T2 (de) Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle
DE68929483T2 (de) Datenprozessor mit einer Befehlseinheit, die einen Cachespeicher und einen ROM aufweist.
DE69916962T2 (de) Datenverarbeitungssystem mit bedingter Ausführung von erweiterten Verbundbefehlen
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE69431998T2 (de) Superskalare Rechnerarchitektur mit Softwarescheduling
DE19914617C2 (de) Prozessor und Verfahren zum Ausführen von Befehlen an gepackten Daten
DE2542740C2 (de) Datenverarbeitungsanlage mit einer Mikroprogrammsteuerung
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE4222776C2 (de) Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE60205363T2 (de) Mikroprozessor mit einem performance-drosselmechanismus für das energiemanagement
DE60032794T2 (de) Bit-dekompression-verarbeitung mit einem vielseitigen ausrichtungswerkzeug
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE69908175T2 (de) Verbesserte befehlsdekodierung durch paralleldekodierungsalgorithmus
DE4206062A1 (de) Pipelineverarbeitung von instruktionen
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE2855106A1 (de) Einrichtung zur durchfuehrung von instruktionsverzweigungen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

8328 Change in the person/name/address of the agent

Representative=s name: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER,