DE69636822T2 - Datenbankeinheit ausgerüstet um daten im uhrzyklus zu speichern und anwendungsverfahren - Google Patents

Datenbankeinheit ausgerüstet um daten im uhrzyklus zu speichern und anwendungsverfahren Download PDF

Info

Publication number
DE69636822T2
DE69636822T2 DE69636822T DE69636822T DE69636822T2 DE 69636822 T2 DE69636822 T2 DE 69636822T2 DE 69636822 T DE69636822 T DE 69636822T DE 69636822 T DE69636822 T DE 69636822T DE 69636822 T2 DE69636822 T2 DE 69636822T2
Authority
DE
Germany
Prior art keywords
load
data
write
cache
memory
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
DE69636822T
Other languages
English (en)
Other versions
DE69636822D1 (de
Inventor
M. Thang Austin TRAN
K. James Austin PRICKETT
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
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE69636822D1 publication Critical patent/DE69636822D1/de
Application granted granted Critical
Publication of DE69636822T2 publication Critical patent/DE69636822T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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
    • 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/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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • Hintergrund der Erfindung
  • 1. Gebiet der Erfindung
  • Diese Erfindung betrifft das Gebiet der superskalaren Mikroprozessoren und betrifft insbesondere eine Lade/Schreibeinheit bzw. eine Lade/Speichereinheit und einen Datenzwischenspeicher bzw. einen Datencache-Speicher in einem superskalaren Mikroprozessor.
  • 2. Beschreibung des Stands der Technik
  • Superskalare Mikroprozessoren erreichen ein hohes Leistungsvermögen durch das gleichzeitige Ausführen mehrerer Befehle innerhalb eines Taktzyklus und durch Verwenden des kürzest möglichen Taktzyklus, der mit dem Aufbau vereinbar ist. Im hierin verwendeten Sinne bezeichnet der Begriff „Taktzyklus oder Taktperiode" ein Zeitintervall, während welchem die Verarbeitungsstufen bzw. Pipelinestufen eines Mikroprozessors ihre vorgesehenen Funktionen ausführen. Am Ende eines Taktzyklus werden die entsprechenden Werte zur nächsten Pipelinestufe weitergeleitet.
  • Da superskalare Mikroprozessoren mehrere Befehle pro Taktzyklus ausführen und der Taktzyklus kurz ist, ist ein Speichersystem mit hoher Bandbreite erforderlich, um Befehle und Daten für den superskalaren Mikroprozessor bereitzustellen (d. h. ein Speichersystem, das eine große Anzahl an Bytes in einer kurzen Zeitdauer bereitstellen kann). Ohne ein Speichersystem mit großer Bandbreite würde der Mikroprozessor eine große Anzahl an Taktzyklen damit verbringen, auf bereitzustellende Befehle und Daten zu warten und er würde dann die empfangenen Befehle und/oder die von den empfangenen Daten abhängigen Befehle in einer relativ kleinen Anzahl an Taktzyklen abarbeiten. Das Gesamtleistungsverhalten würde sich auf Grund der großen Anzahl an ungenutzte Taktzyklen verschlechtern. Jedoch sind superskalare Mikroprozessoren typischerweise als Computersysteme mit einem großen Hauptspeicher ausgebildet, der aus dynamischen Speicherzellen mit wahlfreiem Zugriff (DRAM) aufgebaut ist. DRAM-Zellen zeichnen sich durch Zugriffszeiten aus, die deutlich länger sind als der Taktzyklus moderner superskalarer Mikroprozessoren. Ferner bieten DRAM-Zellen typischerweisen einen relativ schmalen Ausgabebus, um die gespeicherten Daten an den superskalaren Mikroprozessor auszugeben. Daher stellen DRAM-Zellen ein Speichersystem bereit, das eine relativ geringe Anzahl an Bytes in einer relativ langen Zeitdauer bereitstellen kann und das damit kein Speichersystem mit großer Bandbreite bildet.
  • Da superskalare Mikroprozessoren typischerweise nicht als ein Computersystem ausgebildet sind, die ein Speichersystem mit ausreichender Bandbreite zum kontinuierlichen Bereitstellen von Befehlen und Daten aufweisen, sind superskalare Mikroprozessoren häufig mit Cache-Speichern bzw. schnellen Zwischenspeichern versehen. Cache-Speicher sind mehrere Blöcke aus Speicherplätzen, die auf dem gleichen Siliziumsubstrat wie der Mikroprozessor vorgesehen sind oder in der Nähe davon angeschlossen sind. Die Blöcke aus Speicherplätzen werden verwendet, um zuvor abgeholte Befehlsbytes oder Datenbytes zu halten. Die Bytes können von dem Cache-Speicher zum Ziel (Register oder eine Befehlsverarbeitungspipeline) in rascher Weise übertragen werden. Üblicherweise werden ein oder zwei Taktzyklen benötigt, im Gegensatz zu einer großen Anzahl an Taktzyklen, um Bytes aus einem DRAM-Hauptspeichersystem zu übertragen.
  • Cache-Speicher können in einer „assoziativen" Struktur organisiert sein. In einer assoziativen Struktur wird auf die Blöcke der Speicherplätze in Form eines zweidimensionalen Arrays mit Reihen und Spalten zugegriffen. Wenn ein Cache-Speicher nach Bytes durchsucht wird, die an einer Adresse angeordnet sind, werden eine Anzahl von Bits aus der Adresse als ein „Index" für den Cache-Speicher verwendet. Der Index wählt eine spezielle Reihe oder Zeile innerhalb des zweidimensionalen Arrays aus, und daher ist die Anzahl der Adressenbits, die für den Index erforderlich ist, durch die Anzahl der Reihen, die in dem Cache-Speicher vorgesehen sind, festgelegt. Die Adressen, die den Bytes zugeordnet sind, die in den mehreren Blöcken einer Reihe gespeichert sind, werden geprüft, um zu bestimmen, ob eine der Adressen, die in der Reihe gespeichert ist, mit der angeforderten Adresse übereinstimmt. Wenn eine Übereinstimmung erkannt wird, wird gesagt, dass der Zugriff ein „Treffer" ist, und der Cache-Speicher stellt die zugehörigen Bytes bereit. Wenn keine Übereinstimmung ermittelt wird, wird der Zugriff als ein „Nichttreffer" bezeichnet. Wenn ein Nichttreffer erkannt wird, werden die Bytes aus dem Speichersystem in den Cache-Speicher übertragen. Die Adressen, die den Bytes zugeordnet sind, die in dem Cache-Speicher gespeichert sind, werden ebenso gespeichert. Diese gespeicherten Adressen werden als „Markierungen" oder „Markierungsadressen" bezeichnet.
  • Die Speicherblöcke, die in einer Reihe angeordnet sind, bilden die Spalten der Reihe. Jeder Speicherblock wird als ein „Weg" bezeichnet; mehrere Wege bilden eine Reihe. Der Weg wird ausgewählt, indem ein Wegewert zu dem Cache-Speicher bereitgestellt wird. Der Wegewert wird bestimmt, indem die Markierungen für eine Reihe überprüft werden und eine Übereinstimmung zwischen einer der Markierungen und der angeforderten Adresse gefunden wird. Ein Cache-Speicher, der mit einem einzelnen Weg pro Reihe ausgebildet ist, wird als ein „direkt zugeordneter bzw. abgebildeter Cache-Speicher" bezeichnet. In einem direkt zugeordneten Cache-Speicher muss die Markierung untersucht werden, um zu bestimmen, ob ein Zugriff ein Treffer ist; es ist jedoch die Untersuchung der Markierung nicht erforderlich, um auszuwählen, welche Bytes zu den Ausgängen des Cache-Speichers übertragen werden.
  • Sowohl direkt zugeordnet als auch assoziative Cache-Speicher werden in superskalaren Mikroprozessoren mit hoher Taktfrequenz (d. h. kurzen Taktzyklen) eingesetzt. Für beide Arten an Cache-Speichern kann ein einzelner Lesevorgang oder ein einzelner Schreibvorgang in einem Taktzyklus ausgeführt werden, wenn der Cache-Speicher mit einem einzelnen Anschluss bzw. Port versehen ist. Selbst wenn der Cache-Speicher mit mehreren Anschlüssen bzw. Ports versehen ist, kann im Allgemeinen der gleiche Speicherblock nicht innerhalb des gleichen Taktzyklus ausgelesen und beschrieben werden. Cache-Speicher sind große Strukturen, die typischerweise den Hauptanteil (oder den gesamten) Anteil eines Taktzyklus erfordern, um eine Leseoperation oder eine Schreiboperation auszuführen, auf Grund der großen auftretenden Kapazitäten und anderer gut bekannter Eigenschaften im Hinblick auf die Cache-Speicher-Arrays. Des weiteren beinhaltet das Lesen und das Beschreiben der gleichen Speicherstelle in einem Taktzyklus ein deutliches Vergrößern des Arrays und damit auch ein Langsammachen des Arrays, wodurch die Taktzyklusdauer und die Siliziumfläche eines superskalaren Mikroprozessors beeinflusst werden.
  • Auf Grund des Erfordernisses, dass eine Speicherstelle eines Cache-Speichers nicht im gleichen Taktzyklus ausgelesen und beschrieben werden kann, erfordern Schreibbefehle zwei Cache-Zugriffe für die Abarbeitung. Der erste Cache-Zugriff liest den Cache-Speicher aus, um zu prüfen, ob die mit dem Schreibbefehl verknüpfte Adresse ein Treffer ist. Wenn die Adresse ein Treffer ist, dann wird ein zweiter Zyklus verwendet, um die Schreibdaten in den Cache-Speicher zu schreiben. Wenn die Adresse ein Nichttreffer ist, werden die mit der Adresse verknüpften Bytes in den Cache-Speicher übertragen. Nachdem die Bytes übertagen sind, greift der Schreibbefehl erneut auf den Cache- Speicher zu, um die Schreibdaten in dem Cache-Speicher abzulegen. Eine Lösung des Problems, das Schreibbefehle mindestens zwei Cache-Zugriffe erfordern, ist daher wünschenswert.
  • Die europäische Patentanmeldung EP-A-0 0061 570 (IBM) offenbart eine Datenspeichereinheit mit einem Datencache-Speicher mit Cache-Zeilen, die so verriegelt werden können, dass sie in dem Cache-Speicher erhalten bleiben, bis die Verriegelung freigegeben wird.
  • Die europäische Patentanmeldung EP-A-0 436 092 (IBM) offenbart die Verwaltung von Schreibanforderungen außerhalb der Programmreihenfolge in einer Datenspeichereinheit.
  • Überblick über die Erfindung
  • Die zuvor dargestellten Probleme werden zum großen Teil durch eine Datenspeichereinheit gelöst, in der eine Lade/Schreib-Einheit und ein Datencache-Speicher gemäß der vorliegenden Erfindung verwendet sind. Die Lade/Schreibeinheit ist mit einem Lade/Schreib-Puffer mit einem geprüften Bit und einem Wegefeld für jede Pufferspeicherstelle versehen. Für Lade/Schreiboperationsbefehle wird das geprüfte Bit der Speicherstelle, die den Schreibanteil des Befehls enthält, gesetzt, wenn der Ladebereich bzw. Ladeanteil des Befehls auf den Datencache-Speicher zugreift und diesen trifft. Ferner wird auch das Wegefeld der Speicherstelle auf den Weg des Datencache-Speichers festgelegt, den der Ladebereich trifft. Der Datencache-Speicher ist mit einem Verriegelungsmechanismus für jede Cache-Zeile, die in dem Datencache-Speicher gespeichert ist, versehen. Wenn der Ladeanteil eines Lade/Schreibbefehls ausgeführt wird, wird die zugehörige Zeile verriegelt, so dass die Zeile in dem Datencache-Speicher verbleibt, bis ein Schreibbefehl ausgeführt wird. Auf diese Weise wird sichergestellt, dass der Schreibbereich bzw. Schreibanteil des Lade/Schreiboperationsbefehls den Datencache-Speicher in dem Weg trifft, der durch das Wegefeld, das mit dem Schreibanteil verknüpft ist, angegeben ist.
  • Die Lade/Schreibeinheit und der Datencache-Speicher ermöglichen die vorteilhafte Verringerung des Schreibanteils von Lade/Schreiboperationsbefehlen von zwei Taktzyklen des Daten-Zugriffes auf einen einzelnen Taktzyklus des Datencache-Zugriffes. Das Leistungsverhalten eines superskalaren Mikroprozessors, in dem eine derartige Datenspeichereinheit eingesetzt ist, kann verbessert werden, indem mehr Datencache-Zugriffe in einer gegebenen Anzahl an Taktzyklen ermöglicht wird, in denen die Lade/Schreiboperationsbefehle ausgeführt werden.
  • Allgemein gesagt, betrifft die vorliegende Erfindung eine Datenspeichereinheit mit einer Lade/Schreibeinheit und einem Datencache-Speicher. Die Lade/Schreibeinheit ist ausgebildet Lade- und Schreibbefehle auszuführen und enthält mehrere erste Speicherstellen, die ausgebildet sind, anhängige Schreibbefehle und dazugehörige Schreibdaten zu speichern. Jede der mehreren Speicherstellen ist ausgebildet, ein geprüftes Bit zu speichern. Der Datencache-Speicher ist mit der Lade/Schreib-Einheit gekoppelt und enthält mehrere zweite Speicherstellen, die ausgebildet sind, die Cache-Zeilen zu speichern. Der Datencache-Speicher ist ausgebildet, eine in den mehreren zweiten Speicherstellen gespeicherte Cache-Zeile zu verriegeln, so dass die Cache-Zeile in den mehreren Speicherstellen zumindest bis zu einem Taktzyklus gespeichert bleibt, in welchem die Verriegelung freigegeben wird.
  • Die vorliegende Erfindung betrifft ferner ein Verfahren zum Speichern von Schreibdaten in einem Datencache-Speicher, ohne dass zuerst der Datencache-Speicher nach einem Treffer in einer Adresse, die mit den Schreibdaten verknüpft ist, überprüft werden muss. Das Verfahren umfasst das Speichern der Schreibdaten in dem Datencache-Speicher während eines ersten Taktzyklus, in welchem ein geprüftes Bit, das den Schreibdaten zugeordnet ist, gesetzt wird.
  • Kurze Beschreibung der Zeichnungen
  • Weitere Aufgaben und Vorteile der Erfindung werden beim Studium der folgenden detaillierten Beschreibung unter Bezugnahme auf die begleitenden Zeichnungen deutlich, in denen:
  • 1 eine Blockansicht eines superskalaren Mikroprozessors ist mit einer Lade/Schreibeinheit und einem Datencache-Speicher gemäß der vorliegenden Erfindung;
  • 2 eine Ansicht ist, die gewisse interne Komponenten der Lade/Schreib-Einheit mit einem Lade/Schreibpuffer gemäß der vorliegenden Erfindung zeigt;
  • 3 eine Ansicht der Bitfelder eines Speicherplatzes des Lade/Schreibpuffers ist, der in 2 gezeigt ist;
  • 4a eine Ansicht eines Markierungseintrags für den Datencache-Speicher gemäß der vorliegenden Erfindung ist; und
  • 4b eine Ansicht eines Datencache-Markierungsarrays mit Markierungseinträgen, die in 4a gezeigt ist, wobei ein Rücksetzmechanismus für das Verriegelungsbit des Markierungseintrags enthalten ist.
  • Obwohl die Erfindung diversen Modifizierungen und alternativen Formen unterliegen kann, sind dennoch spezielle Ausführungsformen hierin beispielhaft in den Zeichnungen gezeigt und im Weiteren detailliert beschrieben. Es sollte beachtet werden, dass die Zeichnungen und die detaillierte Beschreibung davon nicht beabsichtigen, die Erfindung auf die spezielle offenbarte Form einzuschränken, sondern die Erfindung soll vielmehr alle Modifizierungen, Äquivalente und Alternativen abdecken, die innerhalb des Grundgedankens und Schutzbereichs der vorliegenden Erfindung, wie sie durch die angefügten Patentansprüche definiert ist, liegen.
  • Detaillierte Beschreibung der Erfindung
  • Es sei zunächst auf 1 verwiesen; es wird eine Blockansicht eines superskalaren Mikroprozessors 200 mit einer Lade/Schreibeinheit 222 und einem Datencache-Speicher 224 gemäß der vorliegenden Erfindung gezeigt. Wie in der Ausführungsform aus 1 dargestellt ist, umfasst der superskalare Mikroprozessor 200 eine Vorabhol/Vordecodiereinheit 202 und eine Verzweigungsvorhersageeinheit 220, die mit einem Befehlscache-Speicher 204 verbunden sind. Die Befehlsausrichteinheit 206 ist zwischen dem Befehlscache-Speicher 204 und mehreren Decodiereinheit 208a bis 208f (die gemeinsam als Decodiereinheiten 208 bezeichnet werden) angeschlossen. Jede Decodiereinheit 208a bis 208f ist mit einer entsprechenden Reservierstation 210a bis 210f verbunden (die gemeinsam als Reservierstationen 210 bezeichnet werden), und jede Reservierstation 210a bis 210f ist mit einer entsprechenden Funktionseinheit 212a bis 212f verbunden (die gemeinsam als Funktionseinheiten 212 bezeichnet werden). Die Decodiereinheiten 218, die Reservierstationen 210 und die Funktionseinheiten 212 sind ferner mit einem Umordnungspuffer 216, einer Registerdatei 218 und einer Lade/Schreibeinheit 222 verbunden. Ein Datencache-Speicher 224 ist schließlich mit der Lade/Schreibeinheit 222 verbunden, und eine MROM-Einheit 209 ist so gezeigt, dass diese mit der Befehlsausrichteinheit 206 verbunden ist.
  • Allgemein gesagt, ist der Befehlscache-Speicher 204 ein Hochgeschwindigkeitscache-Speicher, der vorgesehen ist, um temporär Schreibbefehle zu speichern, bevor diese an die Decodiereinheiten 208 ausgegeben werden. In einer Ausführungsform ist der Befehlscache-Speicher 204 ausgebildet, bis zu 32 Kilobytes an Befehlscodierung zwischenzuspeichern, die jeweils in Zeilen aus 16 Bytes eingeteilt sind, wobei jedes Byte aus 8 Bits besteht. Während des Betriebs wird die Befehlscodierung dem Befehlscache-Speicher 204 zugeführt, indem Codierung aus dem Hauptspeicher (nicht gezeigt) über die Vorabhol/Vordecodier-Einheit 202 vorläufig abgeholt wird. Zu beachten ist, dass der Befehlscache-Speicher 204 in einer teilassoziativen, in einer vollständig assoziativen oder einer direkt zugeordneten Konfiguration eingerichtet sein kann.
  • Die Vorabhol/Vordecodiereinheit 202 ist vorgesehen, um Befehlscodierung aus dem Hauptspeicher zur Speicherung innerhalb des Befehlscache-Speichers 204 vorläufig abzurufen. In einer Ausführungsform ist die Vorabhol/Vordecodiereinheit 202 ausgebildet, eine 64-Bit breite Codierung blockweise aus dem Hauptspeicher in den Befehlscache-Speicher 204 zu übertragen. Selbstverständlich können eine Vielzahl spezifischer Codierungsvorabholverfahren und Algorithmen in der Vorabhol/Vordecodiereinheit 202 eingerichtet sein.
  • Wenn die Vorabhol/Vordecodiereinheit 202 Befehle aus dem Hauptspeicher abholt, erzeugt sie drei Vordecodierbits, die jedem Byte einer Befehlscodierung zugeordnet sind: ein Startbit, ein Endbit und ein „Funktionsbit". Die Vordecodierungsbits bilden Markierungen, die die Grenzen jedes Befehls angeben. Die Vordecodiermarkierungen können auch zusätzliche Informationen übertragen, etwa, ob ein gegebener Befehl direkt von den Decodiereinheiten 208 decodiert werden kann, oder ob der Befehl ausgeführt werden muss, indem eine Mikrocodierungsprozedur aufgerufen wird, die von der MROM-Einheit 202 gesteuert wird, wie dies nachfolgend detaillierter beschrieben ist.
  • Tabelle 1 gibt eine Codierung der Vordecodierungsmarkierungen an. Wie in der Tabelle gezeigt ist, wird, wenn ein gegebenes Byte das erste Byte eines ersten Befehls ist, das Startbit für dieses Byte gesetzt. Wenn das Byte das letzte Byte eines Befehls ist, wird das Endbit für dieses Byte gesetzt. Wenn ein spezieller Befehl nicht direkt von den Decodiereinheiten 208 decodiert werden kann, wird das Funktionsbit, das mit dem ersten Byte des Befehls verknüpft ist, gesetzt. Wenn andererseits der Befehl direkt von den Decodiereinheiten 208 decodiert werden kann, wird das mit dem ersten Byte des Befehls verknüpfte Funktionsbit zurückgesetzt. Das Funktionsbit für das zweite Byte eines speziellen Befehls wird zurückgesetzt, wenn die Operationscodierung das erste Byte ist, und dieses wird gesetzt, wenn die Operationscodierung bzw. der Op-Code das zweite Byte ist. Zu beachten ist, dass in Situationen, in denen die Operationscodierung das zweite Byte ist, das erste Byte ein Präfixbyte ist. Die Funktionsbitwerte für die Befehlsbytenummern 3 bis 8 geben an, ob das Byte ein MODRM- oder SIB-Byte ist, oder ob das Byte Verschiebungsdaten oder unmittelbare Daten enthält. Tabelle 1: Codierung von Start-, End- und Funktionsbits
    Figure 00080001
  • Wie zuvor angegeben ist, können in einer Ausführungsform gewisse Befehle innerhalb des x-86-Befehlssatzes direkt von der Decodiereinheit 208 decodiert werden. Diese Befehle werden als Befehle mit „schnellem Pfad" bezeichnet. Die restlichen Befehle des x-86-Befehlssatzes werden als „MROM-Befehle" bezeichnet. MROM-Befehle werden durch Aufrufen der MROM-Einheit 209 ausgeführt. Genauer gesagt, wenn ein MROM-Befehl auftritt, analysiert die MROM-Einheit 209 den Befehl und zerlegt diesen in eine Reihe von mehreren definierten Befehlen mit schnellem Pfad, um eine gewünschte Operation zu bewirken. Eine Auflistung beispielhafter x-86-Befehle, die als Befehle mit schnellem Pfad eingestuft sind, sowie eine Beschreibung der Art und Weise der Handhabung sowohl von Befehlen mit schnellem Pfad als auch von MROM-Befehlen wird nachfolgend angegeben.
  • Die Befehlsausrichteinheit 206 ist vorgesehen, um Befehle mit variabler Bytelänge von dem Befehlscache-Speicher 204 zu festgelegten Ausgabepositionen zu lenken, die durch die Decodiereinheiten 208a bis 208f gebildet sind. Die Befehlsausrichteinheit 206 wählt unabhängig und parallel Befehle aus drei Gruppen von Befehlsbytes aus, die von dem Befehlscache-Speicher 204 bereitgestellt werden, und ordnet diese Bytes in drei Gruppen von vorläufigen Ausgabepositionen an. Jede Gruppe an Ausgabepositionen ist einer der drei Gruppen aus Befehlsbytes zugeordnet. Die vorläufigen Ausgabepositionen werden dann zusammengeführt, um die endgültigen Ausgabepositionen zu bilden, wovon jede mit einer der Decodiereinheiten 208 gekoppelt ist.
  • Bevor mit einer detaillierten Beschreibung der Lade/Schreib-Einheit 222 und dem Datencache-Speicher 224 fortgefahren werden soll, werden allgemeine Aspekte hinsichtlich weiterer Untersysteme, die in dem beispielhaften superskalaren Mikroprozessor 200 aus 1 eingesetzt werden, beschrieben. Für die Ausführungsform aus 1 enthält jede der Decodiereinheiten 208 eine Decodierschaltung zum Decodieren der vorbestimmten Befehle mit schnellem Pfad, die zuvor benannt sind. Des weiteren leitetet jede Decodiereinheit 208a bis 208f Verschiebungsdaten und unmittelbare Daten an eine entsprechende Reservierstationseinheit 210a bis 210f. Ausgangssignale von den Decodiereinheiten 208 enthalten bitcodierte Ausführungsbefehle für die Funktionseinheiten 212 sowie Operandenadressinformationen, unmittelbare Daten und/oder Verschiebungsdaten.
  • Der superskalare Mikroprozessor aus 1 unterstützt eine Ausführung außerhalb der Reihenfolge und verwendet daher den Umordnungspuffer 216, um den ursprünglichen Programmablauf für Registerauslese- und Schreiboperationen zu überwachen, um damit eine Registerumbenennung zu implementieren, um eine spekulative Befehlsausführung und eine Wiederherstellung bei Verzweigungsfehlvorhersage zu ermöglichen und um eine präzise Ausnahmebehandlung zu ermöglichen. Wie der Fachmann erkennt, ist eine temporäre Speicherstelle innerhalb des Umordnungspuffers 216 beim Decodieren eines Befehls reserviert, der das Aktualisieren eines Registers beinhaltet, um damit spekulative Registerzustände zu speichern. Der Umordnungspuffer 216 kann in einer Konfiguration „zuerst hinein-zuerst heraus" eingerichtet sein, wobei spekulative Ergebnisse zur „Hinterseite" des Puffers wandern, wenn sie als gültig erkannt und in die Registerdatei geschrieben werden, wodurch Platz geschaffen wird für Einträge an der „Vorderseite" des Puffers. Andere spezielle Konfigurationen des Umordnungspuffers 216 sind ebenso möglich, wie dies nachfolgend beschrieben ist. Wenn eine Verzweigungsvorhersage nicht korrekt ist, können die Ergebnisse der spekulativ ausgeführten Befehle zusammen mit dem falsch vorhergesagten Pfad in dem Puffer als ungültig erklärt werden, bevor diese in die Registerdatei 218 beschrieben werden.
  • Die bitcodierten Ausführungsbefehle und die unmittelbaren Daten, die an den Ausgängen der Decodiereinheiten 208a bis 208f bereitgestellt werden, werden direkt an die entsprechenden Reservierstationseinheiten 210a bis 210f weitergeleitet. In einer Ausführungsform ist jede Reservierstationseinheit 210a bis 210f in der Lage, Befehlsinformationen zu halten (d. h. bitcodierte Ausführungsbits sowie Operandenwerte, Operandenmarkierungen und/oder unmittelbare Daten) bis zu drei anhängige Befehle, die auf die Ausgabe zu der entsprechenden Funktionseinheit warten. Zu beachten ist, dass für die Ausführungsform in 1 jede Decodiereinheit 208a bis 208f einer entsprechenden Reservierstationseinheit 210a bis 210f zugeordnet ist, und dass jede Reservierstationseinheit 210a bis 210f in ähnlicher Weise einer speziellen Funktionseinheit 212a bis 212f zugeordnet ist. Folglich werden 6 spezielle „Ausgabepositionen" durch die Decodiereinheiten 208a, die Reservierstationseinheiten 210a und die Funktionseinheiten 212 gebildet. Befehle, die durch die Decodiereinheit 208a der Ausgabeposition 0 zugeordnet und dort ausgegeben werden, werden an die Reservierstation 210a und nachfolgend zu der Funktionseinheit 212a zur Ausführung weitergeleitet. In ähnlicher Weise werden Befehle, die von der Decodiereinheit 208b ausgerichtet und ausgegeben werden, zu der Reservierstationseinheit 210b und weiter zur Funktionseinheit 212 geleitet, usw.
  • Beim Decodieren eines speziellen Befehls werden, wenn ein erforderlicher Operand eine Registerstelle ist, Registeradresseninformationen an den Umordnungspuffer 216 und gleichzeitig an die Registerdatei 218 weitergeleitet. Der Fachmann weiß, dass die x86-Registerdatei reale Register mit 32 Bit enthält (d. h. diese werden typischerweise als EAX, EBX, ECX, EDX, EBP, ESI, EDI und ESP bezeichnet). Der Umordnungspuffer 216 enthält temporäre Speicherstellen für Ergebnisse, die den Inhalt dieser Register ändern, wodurch eine Ausführung außerhalb der Reihenfolge ermöglicht wird. Eine temporäre Speicherstelle des Umordnungspuffers 216 wird für jeden Befehl reserviert, der beim Decodieren erkannt wird, den Inhalt einer der realen Register zu modifizieren. Daher kann während diverser Punkte während des Ausführens des speziellen Programms der Umordnungspuffer 216 eine oder mehrere Speicherstellen aufweisen, die den spekulativ ausgeführten Inhalt eines gegebenen Register enthalten. Wenn nachfolgend auf die Decodierung eines gegebenen Befehls bestimmt wird, dass der Umordnungspuffer 216 eine vorhergehende Stelle oder Stellen aufweist, die einem Register zugeordnet sind, das als ein Operand in dem gegebenen Befehl verwendet wird, leitet der Umordnungspuffer 216 an die entsprechende Reservierstation weiter: 1) den Wert in der jüngsten zugeordneten Speicherstelle oder 2) eine Markierung für die jüngste zugeordnete Speicherstelle, wenn der Wert von der Funktionseinheit noch nicht erzeugt ist, die schließlich den vorhergehenden Befehl ausführt. Wenn der Umordnungspuffer eine Speicherstelle aufweist, die für ein gegebenes Register reserviert ist, wird der Operandenwert (oder die Markierung) von dem Umordnungspuffer 216 anstelle von der Registerdatei 218 bereitgestellt. Wenn keine Speicherstelle für ein erforderliches Register in dem Umordnungspuffer 216 reserviert ist, wird der Wert direkt aus der Registerdatei 218 genommen. Wenn der Operand einer Speicherstelle entspricht, wird der Operandenwert der Reservierstationseinheit über die Lade/Schreibeinheit 222 zugeführt.
  • Einzelheiten im Hinblick auf geeignete Einrichtungen für Umordnungspuffer können in der Veröffentlichung „Superskalare Mikroprozessorgestaltung" von Mike Johnson, Prentice-Hall, Englewood Cliffs, New Jersey, 1991 und in der anhängigen Patentanmeldung mit dem gleichen Anmelder mit dem Titel „Superskalare Mikroprozessoren mit hoher Leistungsfähigkeit", Anmelde-Nr. 08/146,382, eingereicht am 29. Oktober 1993 von Witt, et. all gefunden werden. Diese Dokumente sind hierin durch Bezugnahme in ihrer Gesamtheit mit eingeschlossen.
  • Die Reservierstationseinheiten 210a bis 210f sind vorgesehen, um temporär Schreibbefehlsinformation zu speichern, die spekulativ von den entsprechenden Funktionseinheiten 212a bis 212f auszuführen sind. Wie zuvor angegeben ist, kann jede Reservierstationseinheit 210a bis 210f Schreibbefehlsinformation für bis zu 3 anhängige Befehle speichern. Jede der sechs Reservierstationen 210a bis 210f enthält Speicherstellen, um bitcodierte Ausführungsbefehle zu speichern, die von der entsprechenden Funktionseinheit spekulativ auszuführen sind, und um die Werte von Operanden zu speichern. Wenn ein spezieller Operand nicht verfügbar ist, wird eine Markierung für diesen Operanden von dem Umordnungspuffer 216 bereitgestellt und wird in der entsprechenden Reservierstation gespeichert, bis das Ergebnis erzeugt ist (d. h. durch Abschluss des Ausführens eines vorhergehenden Befehls). Zu beachten ist, dass, wenn ein Befehl von einer der Funktionseinheiten 212a bis 212f ausgeführt wird, das Ergebnis dieses Befehls direkt zu einer der Reservierstationseinheiten 210a bis 210f weitergeleitet wird, die auf dieses Ergebnis wartet, gleichzeitig dazu wird das Ergebnis zur Aktualisierung des Umordnungspuffers 216 weitergeleitet (diese Technik wird üblicherweise als „Ergebnisweiterleitung" bezeichnet). Befehle werden an Funktionseinheiten zum Ausführen ausgegeben, nachdem Werte von einem oder mehreren erforderlichen Operanden verfügbar sind. D. h., wenn ein Operand, der mit einem anhängigen Befehl innerhalb einer der Reservierstationseinheiten 210a bis 210f verknüpft ist, mit einer Speicherstelle eines vorhergehenden Ergebniswertes innerhalb des Umordnungspuffers 216 markiert ist, der einem Befehl entspricht, der den erforderlichen Operanden modifiziert, wird der Befehl nicht an die entsprechende Funktionseinheit 212 ausgegeben, bis das Operandenergebnis für den vorhergehenden Befehl erhalten wird. Folglich kann die Reihenfolge, in der die Befehle ausgeführt werden, unter Umständen nicht der Reihenfolge der ursprünglichen Programmbefehlssequenz entsprechen. Der Umordnungspuffer 216 stellt sicher, dass die Kohärenz in Situationen beibehalten wird, in denen Abhängigkeiten der Form „Lesen nach Schreiben" auftreten.
  • In einer Ausführungsform ist jede der Funktionseinheiten 212 so gestaltet, dass Ganzzahlarithmetikoperationen der Addition und Subtraktion, sowie Verschiebungen, Rotationen, logische Operationen und Verzweigungsoperationen ausgeführt werden. Zu beachten ist, dass eine Fliesskommaeinheit (nicht gezeigt) eingesetzt werden kann, um Fliesskommaoperationen auszuführen.
  • Jede der Funktionseinheiten 212 stellt auch Informationen hinsichtlich des Ausführens bedingter Verzweigungsbefehle für die Verzweigungsvorhersageeinheit 220 bereit. Wenn eine Verzweigungsvorhersage nicht korrekt war, verwirft die Verzweigungsvorhersageeinheit 220 Befehle, die auf die falsch vorhergesagte Verzweigung folgen und die bereits in der Befehlsverarbeitungspipeline enthalten sind, und veranlasst die Vorabhol/Vordecodiereinheit 202, die erforderlichen Befehle aus dem Befehlscache-Speicher 204 oder dem Hauptspeicher abzuholen. Zu beachten ist, dass in derartigen Situationen Ergebnisse von Befehlen in der ursprünglichen Programmabfolge, die nach dem falsch vorhergesagten Verzweigungsbefehl auftreten, verworfen werden, wozu auch jene Befehle gehören, die spekulativ ausgeführt und temporär in der Lade/Schreibeinheit 222 und in dem Umordnungspuffer 216 gespeichert sind. Beispielhafte Konfigurationen für geeignete Verzweigungsvorhersagemechanismen sind gut bekannt.
  • Ergebnisse, die von den Funktionseinheiten 212 erzeugt werden, werden an den Umordnungspuffer 216 gesendet, wenn ein Registerwert aktualisiert wird, und werden an die Lade/Schreibeinheit 222 gesendet, wenn der Inhalt einer Speicherstelle geändert wird. Wenn das Ergebnis in einem Register zu speichern ist, speichert der Umordnungspuffer 216 das Ergebnis in der Speicherstelle, die für den Wert des Registers reserviert wurde, wenn der Befehl decodiert wurde. Wie zuvor angegeben ist, werden Ergebnisse auch allgemein adressiert an die Reservierstationseinheiten 210a bis 210f ausgegeben, wenn anhängige Befehle auf die Ergebnisse vorhergehender Befehle warten, um damit die erforderliche Operandenwerte zu erhalten.
  • Allgemein gesagt, stellt die Lade/Schreibeinheit 222 eine Schnittstelle zwischen den Funktionseinheiten 212a bis 212f und dem Datencache-Speicher 224 bereit. In einer Ausführungsform ist die Lade/Schreibeinheit 222 mit einem Lade/Schreibpuffer mit 16 Speicherplätzen für Daten- und Adressinformationen für anhängige Ladeoperationen oder Schreiboperationen versehen. Die Decodiereinheiten 208 führen eine Verteilung des Zugriffes auf die Lade/Schreibeinheit 222 aus. Wenn der Puffer voll ist, muss eine Decodiereinheit warten bis die Lade/Schreibeinheit 222 Platz für die anhängige Lade- oder Schreibanforderungsinformation enthält. Die Funktionseinheiten 212 liefern den Lade/Schreibbefehl und die dazugehörigen Adressen- und Dateninformationen an die Lade/Schreibeinheit 222. Die Lade/Schreibeinheit 222 führt die Lade/Schreibbefehle aus, indem auf den Datencache-Speicher 224 zugegriffen wird, und veranlasst, dass der Datencache-Speicher 224 eine Zeile aus dem Hauptspeicher abholt, wenn ein nicht spekulativer Lade/Schreib-Befehl den Cache-Speicher nicht trifft. Die Lade/Schreibeinheit 222 gibt die angeforderten Daten für die Ladebefehle an den Umordnungspuffer 216 sowie an Reservierstationen 210 zurück, die auf die Daten wartet. Schreibdaten werden in den Datencache-Speicher 224 durch die Lade/Schreibeinheit 222 gespeichert. Die Lade/Schreibeinheit 222 führt eine Abhängigkeitsprüfung für Ladebefehle im Hinblick auf anhängige Schreibbefehle aus, um sicherzustellen, dass die Datenkohärenz bewahrt bleibt.
  • Der Datencache-Speicher 224 ist ein Hochgeschwindigkeitscache-Speicher, der zum temporären Speichern von Daten vorgesehen ist, die zwischen der Lade/Schreib-Einheit 222 und dem Hauptspeichersubsystem ausgetauscht werden. In einer Ausführungsform besitzt der Datencache-Speicher 224 eine Kapazität zum Speichern bis zu 32 Kilobytes aus Daten in einer teilassoziativen Struktur mit 8 Wegen mit 32 Bytezeilen. Es ist zu beachten, dass der Datencache-Speicher 224 in einer Vielzahl spezieller Speicherkonfigurationen, zu denen eine teilassoziative Konfiguration gehört, eingerichtet werden kann.
  • 2 zeigt eine Ansicht mehrerer wichtiger Komponenten der Lade/Schreibeinheit 222, die in einer Ausführungsform der vorliegenden Erfindung eingesetzt sind. Die Lade/Schreibeinheit 222 besitzt einen Eingabebus 250, der mit den Funktionseinheiten 212 zur Bereitstellung von Lade/Schreibbefehlen, Adressen- und Dateninformationen verbunden ist. Der Eingabebus 250 übermittelt Information an einen Lade/Scheib-Puffer 251. Der Lade/Schreibpuffer 251 speichert Information, die anhängige Lade- und Schreibbefehle betrifft. Ein Anforderungsbus 253 überträgt eine Lade/Schreibanforderung an den Datencache-Speicher 224, wie dies von einer Multiplexerschaltung 254 unter der Steuerung einer Ausgabesteuerschaltung 255 ausgewählt wird. Von dem Datencache-Speicher läuft ein Treffer-Wege-Bus 256 zurück, der mit dem Lade/Schreibpuffer 251 verbunden ist. Über den Treffer/Wege-Bus 256 erhält die Lade/Schreib-Einheit 222 Treffer/Nichttreffer-Information und den Wegewert des Datencache-Speichers 224, der für den Treffer für die Anforderungen, die auf dem Anforderungsbus 253 übertragen werden, erkannt wird. Eine Rücksetzsignalleitung 257 ist mit dem Umordnungspuffer 216 verbunden, um Schaltungen zu steuern, die mit dem Lade/Schreibpuffer 251 verknüpft sind.
  • Allgemein gesagt wählt die Lade/Schreib-Einheit 222 eine Lade- oder Schreibspeicheranforderung aus, die über den Anforderungsbus 253 zu dem Datencache-Speicher 224 zu übertragen ist. Ein „geprüftes Bit" in der zugeordneten Pufferspeicherstelle wird gesetzt, wenn die aktuelle Anforderung den Datencache-Speicher 224 trifft. Das geprüfte Bit bleibt solange gesetzt, bis der Befehl gültig ist und das Rücksetzsignal auf der Rücksetzsignalleitung 257 wird nicht gesetzt. Ferner wird auch der Wegewert aus dem Datencache-Speicher 224, der den Weg angibt, der von der aktuellen Anforderungsadresse getroffen wird, in der zugeordneten Pufferspeicherstelle in einem Wegefeld gespeichert. Das Aktualisieren der Lade/Schreibpufferspeicherstelle der aktuellen Anforderung durch die Cache-Information, die mit der aktuellen Anforderung verknüpft ist, dient einem dreifachen Zweck: 1) Ladebefehle, die nicht den Datencache-Speicher treffen, werden durch die Nichttrefferinformation aktualisiert, 2) Schreibbefehle werden entsprechend dem Treffer und dem Weg für den Zugriff im zweiten Zyklus aktualisiert, während welchem der Schreibvorgang passiert, 3) Schreibbefehle, die Teil eines „Lade/Schreib-Operations"-Befehls sind, werden entsprechend dem Wegewert und dem Trefferwert für den zugeordneten Ladebefehl aktualisiert, wodurch ermöglicht wird, dass die Schreiboperation mit lediglich einem einzelnen Zugriff auf den Datencache-Speicher 224 ausgeführt wird.
  • Lade/Schreib-Operationsbefehle sind x86-Befehle, die eine Speicherstelle sowohl als Quelle als auch als Ziel verwenden. Anders ausgedrückt, einer der Operanden eines Lade/Schreib-Operationsbefehls ist eine Speicherstelle und das Ergebnis des Lade/Schreib-Operationsbefehls wird in der Speicherstelle gespeichert. Lade/Schreib-Operationsbefehle werden, wenn sie auf dem superskalaren Mikroprozessor 200 ausgeführt werden, sowohl als ein Ladebefehl als auch ein Schreibbefehl an die Lade/Schreibeinheit 222 ausgegeben, wobei die gleiche Umordnungspuffermarkierung den beiden Befehlen zugeordnet ist. Der Ladebefehl und der Schreibbefehl werden beide in der gleichen Speicherstelle innerhalb des Lade/Schreibpuffers 251 gespeichert. Es wird die Treffer- und Wegeinformation für den Cache-Speicher für den Schreibanteil des Lade/Schreib-Operationsbefehls aufgezeichnet, wenn der Ladeanteil ausgeführt wird, und der erste Taktzyklus des normalen Schreibzugriffs mit zwei Zyklen kann vermieden werden. Es ist wichtig sicherzustellen, dass in Taktzyklen zwischen dem Ausführen des Ladeanteils und dem Ausführen des Schreibanteils eines Lade/Schreiboperationsbefehls die zugeordnete Datencache-Zeile in dem Datencache-Speicher bleibt. Diese Funktion wird durch die Verwendung eines Verriegelungsbits eingerichtet, wie dies nachfolgend detaillierter beschrieben ist.
  • Wie in der Ausführungsform aus 2 gezeigt ist, ist der Lade/Schreib-Puffer 251 ein lineares Array aus Speicherplätzen, die eine Umordnungspuffermarkierung (das als Markierungsfeld in 2 angegeben ist), ein geprüftes Bit (das C-Feld) und ein Wegefeld (das W-Feld), das mit den Lade/Schreib-Befehlen verknüpft ist, enthalten. In einer Ausführungsform ist der Lade/Schreib-Puffer 251 mit 16 Speicherstellen versehen. Wie nachfolgend detaillierter beschrieben ist, werden auch andere Informationen in jedem Lade/Schreib-Puffereintrag gespeichert. Jeder Speicherstelle ist ein Block aus Logikschaltungen zugeordnet, um das geprüfte Bit bei jedem Taktzyklus zu aktualisieren.
  • Eine Ausführungsform der Logikschaltungen, die einem einzelnen Eintrag zugeordnet sind, sind in 2 als Und-Gatter 258, 259 und 261 sowie als ein Oder-Gatter 260 gezeigt. Ähnliche Schaltungen können für jede Speicherstelle innerhalb des Lade/Schreib-Puffers 251 vorgesehen werden. Das Und-Gatter 261 decodiert den Puffereintrag der Anforderung auf dem Anforderungsbus 253. Wenn der Puffereintrag mit dem Puffereintrag übereinstimmt, der dieser Gruppe aus Logikschaltungen zugeordnet ist, dann ist dieser für die Aktualisierung vorgesehen. Der Ausgang des Und-Gatters 261 ist auf hohem Pegel, wenn der Eintrag für die Aktualisierung vorgesehen ist. Das Und-Gatter 258 empfängt das Ausgangssignal des Und-Gatters 261 sowie das Trefferbit aus dem Cache-Speicher. Das Und-Gatter 258 bildet einen der Eingänge für das Oder-Gatter 260, das das geprüfte Bit innerhalb der Speicherstelle setzt oder zurücksetzt. Wenn daher dieser Puffereintrag aktuell auf den Datencache-Speicher 224 zugreift und der Zugriff ein Treffer ist, ist das Ausgangssignal des Und-Gatters 258 (und daher des Oder-Gatters 260) eine logische 1 und das geprüfte Bit wird gesetzt. Das Und-Gatter 259 empfängt den aktuellen Status des geprüften Bits und ist mit der Zurücksetzsignalleitung 257 aus dem Umordnungspuffer 216 verbunden. Das Zurücksetzsignal, das auf der Zurücksetzsignalleitung 257 übertragen wird, wird von dem Umordnungspuffer 216 gesetzt, wenn eine Ausnahme, eine Verzweigungsfehlvorhersage oder ein anderes Ereignis auftritt, das bewirkt, dass der Ablauf von Befehlen sich von dem Pfad unterscheidet, der vorhergesagt wurde. Wenn diese Arten an Ereignissen auftreten, kann es notwendig sein, einige der Befehle in dem Lade/Schreib-Puffer über einen Mechanismus zwischen der Lade/Schreib-Einheit 222 und dem Umordnungspuffer 216 (nicht gezeigt) zu löschen. Daher werden die geprüften Bits in dem Lade/Schreibpuffer 251 zurückgesetzt, da die Verriegelungsbits in dem Datencache-Speicher 224 zurückgesetzt werden (wie dies nachfolgend erläutert ist). Das Und-Gatter 259 liefert diese Funktion. Das geprüfte Bit bleibt gesetzt, sofern das Zurücksetzsignal nicht gesetzt ist, und wenn dieses gesetzt wird, wird das geprüfte Bit zurückgesetzt.
  • Der Multiplexer 254 und die Ausgangssteuereinheit 255 werden verwendet, um Anforderungen nach einem Zugriff auf dem Datencache-Speicher 224 in einem gegebenen Taktzyklus auszuwählen. In einer Ausführungsform werden bis zu zwei Anforderungen bei jedem Taktzyklus ausgewählt. In dieser Ausführungsform verwirklicht die Ausgangssteuereinheit 255 ein Prioritätsschema zum Auswählen von Operationen aus dem Lade/Schreib-Puffer 251, wobei Schreibbefehle, die nicht mehr spekulativ sind und Ladebefehle, die nicht mehr spekulativ sind und den Datencache-Speicher nicht getroffen haben, eine hohe Priorität erhalten, und wobei Ladebefehle, die spekulativ sind, eine geringe Priorität erhalten. Zu beachten ist, dass die Multiplexerschaltung 254 als mehrere Multiplexerschaltungen verwirklicht sein kann, die die Anforderungen erzeugen, die über den Anforderungsbus 253 übermittelt werden. Der Anforderungsbus 253 überträgt zumindest die Adresse, die der Anforderung zugeordnet ist, übermittelt, ob die Anforderung eine Ladeanforderung oder eine Schreibanforderung ist, und übermittelt den Wegewert, das geprüfte Bit und die Schreibdaten für Schreibanforderungen. Der Datencache-Speicher 264 ist ausgebildet, Daten in der Cache-Zeile zu speichern, die durch die Anforderungsadresse indiziert ist und von dem zugehörigen Wegewert ausgewählt ist, wenn das geprüfte Bit gesetzt ist. Wenn das geprüfte Bit nicht gesetzt ist, liest der Datencache-Speicher 224 Zeilen aus dem Cache-Speicher aus, um nach einem Cache-Treffer für die Anforderungsadresse zu suchen. In einer Ausführungsform wird das Lade/Schreib-Operationsbit für Ladeanforderungen übertragen (wie dies nachfolgend erläutert ist).
  • Es ist zu beachten, dass der Lade/Schreibpuffer 251 sich in der Zahl der Einträge von Ausführungsform zu Ausführungsform unterscheiden kann. Ferner kann der Lade/Schreib-Puffer 251 als ein separater Ladepuffer und ein separater Schreibpuffer vorgesehen werden, wobei der Ladepuffer alle Ladebefehle und der Schreibpuffer alle Schreibbefehle speichert. Ferner ist zu beachten, dass mehr als eine einzelne Anforderung pro Taktzyklus auf dem Anforderungsbus 253 übertragen werden kann.
  • In einer weiteren Ausführungsform werden die Adressen, die auf den Datencache-Speicher 224 zugreifen, mit den Adressen verglichen, die in dem Lade/Schreibpuffer 251 gespeichert sind. Diese Ausführungsform ist allgemeiner als die vorhergehende Ausführungsform, indem die Schreibbefehle, die den Zugriff mit zwei Zyklen vermeiden, nicht der Schreibanteil eines Lade/Schreiboperationsbefehls sein müssen. Jedoch ist die Verriegelung des Cache-Speichers komplizierter. Das Verriegelungsbit, das mit einer angesprochen Cache-Zeile verknüpft ist, muss gesetzt werden, wenn ein geprüftes Bit auf Grund des Cache-Zugriffes gesetzt ist, anstatt dass eine Verriegelung auf der Grundlage der Tatsache eintritt, dass die Ladeoperation ein Teil eines Lade/Schreiboperationsbefehls ist. Diese Ausführungsform verriegelt allgemein die Cache-Zeile in einem Taktzyklus nach dem Taktzyklus, in welchem der Zugriff auftritt.
  • 3 zeigt eine Ansicht der Bitfelder in einer Lade/Schreibpufferspeicherzelle für eine Ausführungsform des Lade/Schreib-Puffers 251. Ein Feld 300 enthält die Umordnungspuffermarkierung für die Speicherstelle sowie ein Gültigkeitsbit, das angibt, wenn es gesetzt ist, dass die Speicherstelle aktuell einen gültigen Ladebefehl oder Schreibbefehl enthält. Ein Feld 301 speichert die mit dem Ladebefehl oder dem Schreibbefehl verknüpfte Adresse, wie sie von den Funktionseinheiten 212 bereitgestellt wird. Ein Gültigkeitsbit ist ferner in dem Feld 301 enthalten, das, wenn es gesetzt ist, angibt, dass die Adresse gültig ist. Die Ausgangssteuereinheit 255 wählt solange einen Lade/Schreib-Befehl für den Zugriff auf den Datencache-Speicher 224 nicht, bis das Adressengültigkeitsbit gesetzt ist. Ein Feld 302 speichert die mit Schreibbefehlen verknüpften Daten sowie ein Gültigkeitsbit, das, wenn es gesetzt ist, angibt, dass das Datenfeld gültig ist. Ein Bit 303 ist das geprüfte Bit, das zuvor erläutert ist, und ein Feld 304 ist das zuvor erläuterte Wegefeld. Ein Bit 305 ist ein Bit, das für Ladebefehle verwendet wird und angibt, wenn es gesetzt ist, dass der Ladebefehl der Ladeanteil eines Lade/Schreiboperationsbefehls ist. Dieses Bit wird verwendet, um zu bestimmen, ob das Verriegelungsbit für eine zugeordnete Cache-Zeile zu setzen ist oder nicht, wie dies nachfolgend detaillierter beschrieben ist. Es ist zu beachten, dass andere Bits den Speicherstellen in diversen Ausführungsformen der Lade/Schreibeinheit 222 hinzugefügt werden können. Beispielsweise kann ein Nichttrefferbit und ein Abhängigkeitsbit hinzugefügt werden, um anzugeben, dass ein Befehl den Datencache-Speicher nicht trifft und dass ein Befehl abhängig ist von einem Schreibbefehl, der in einer anderen Speicherstelle innerhalb des Lade/Schreib-Puffers liegt.
  • 4a ist eine Ansicht der Bitfelder in dem Datencache-Markierungseintrag gemäß einer Ausführungsform. Der Markierungseintrag ist mit einem Statusfeld 401 versehen, das den Status der zugeordneten Cache-Zeile angibt. In einer Ausführungsform ist das Statusfeld 401 ein zwei Bit breites Feld, um einen MESI-Status für jede Cache-Zeile zu kodieren. Wie der Fachmann weiß, gibt ein MESI-Status einen modifizierten oder „schmutzigen" Zustand an, in welchem die Cache-Zeile in Bezug auf den Inhalt modifiziert ist, der in der zugeordneten Adresse in dem Hauptspeicher gespeichert ist, und daher kann die Cache-Zeile in den Hauptspeicher zurückgeschrieben werden, wenn diese aus dem Datencache-Speicher 224 abgerufen wird; d.h., ein exklusiver Zustand, in welchem die Datencache-Zeile in dem Datencache-Speicher 224 gespeichert ist und es existieren keine anderen Kopien der Cache-Zeile in anderen superskalaren Mikroprozessoren, die in einem System mit dem superskalaren Mikroprozessor 200 eingerichtet sind; ein gemeinsam benutzter Zustand, in welchem die Cache-Zeile in dem Datencache-Speicher 224 gespeichert ist, und keine weiteren Kopien der Cache-Zeile in anderen supeskalaren Mikroprozessoren gespeichert sind, die in einem System mit dem superskalaren Mikroprozessor 200 vorgesehen sind; und ein ungültiger Zustand, der angibt, dass die zugeordnete Cache-Zeile nicht gültig ist und dass die darin gespeicherten Bytes nicht verwendet werden sollen.
  • Das Feld 402 des Markierungseintrags enthält die Markierung des Eintrags. Wie zuvor erläutert ist, ist eine Markierung der Anteil der Adresse, der in einzigartiger Weise angibt, welche Bytes aus dem Hauptspeicher in der Cache-Zeile zu speichern sind. In einer Ausführungsform ist das Feld 402 20 Bits breit und enthält die 20 höchstrangigen Bits der Adresse, die den in der Cache-Zeile gespeicherten Bytes entspricht. Das Bit 403 ist das zuvor genannte Verriegelungsbit. Wenn das Bit 403 gesetzt ist, dann wird die zugeordnete Cache-Zeile nicht aus dem Datencache-Speicher 224 entfernt, wenn eine neue Cache-Zeile aus dem Hauptspeicher abgeholt wird. Stattdessen muss eine andere Cache-Zeile innerhalb der Reihe entfernt werden. Das Verriegelungsbit 403 wird gesetzt, wenn ein Ladebefehl bei entsprechendem gesetzten Lade/Schreiboperationsbit auf die zugeordnete Cache-Zeile zugreift und als Treffer erkannt wird. Da jeder Markierungseintrag mit einem Verriegelungsbit versehen ist, kann das Datencache-Markierungsarray 404 Verriegelungsinformationen für mehrere Cache-Zeilen gleichzeitig bewahren. Das Verriegelungsbit 403 wird zurückgesetzt, wenn ein Schreibbefehl für die zugeordnete Cache-Zeile ausgeführt wird, oder wenn das Zurücksetzsignal, das auf der Zurücksetzsignalleitung 257 übertragen wird, von dem Umordnungspuffer 216 gesetzt wird (wie dies nachfolgend detaillierter beschreiben ist).
  • Ein Szenario, in dem spezielle Aufmerksamkeit erforderlich ist, betrifft den Fall, wenn der Ladeanteil eines Lade/Schreiboperationsbefehls auf eine Cache-Zeile zugreift, wenn das Verriegelungsbit bereits gesetzt ist. Das Verriegelungsbit im gesetzten Zustand gibt an, dass ein vorhergehender Lade/Schreiboperationsbefehl auf die Cache-Zeile mit seinem Ladeanteil zugegriffen hat, aber der Schreibanteil noch nicht ausgeführt ist. Wenn der Schreibanteil des vorhergehenden Lade/Schreiboperationsbefehls in die Cache-Zeile schreibt, wird dadurch das Verriegelungsbit zurückgesetzt, wie dies zuvor angegeben ist. Daher wird das Verriegelungsbit nicht zurückgesetzt, bevor der Schreibanteil des aktuellen Lade/Schreiboperationsbefehls auf den Datencache-Speicher 224 zugreift, und die zugeordnete Zeile wird von dem Cache-Speicher entfernt. Die Abhängigkeitsprüfung innerhalb der Lade/Schreibeinheit 222 verhindert, dass der Ladeanteil auf den Cache- Speicher zugreift (wie nachfolgend detaillierter mit Bezug zu den 5 bis 7 beschrieben ist). Stattdessen können die Ladedaten durch den Lade/Schreib-Puffer 251 bereitgestellt. In einer Ausführungsform wird das geprüfte Bit für den zugeordneten Schreibanteil nicht gesetzt. Daher erfordert der Schreibanteil des Lade/Schreiboperationsbefehls zwei Datencache-Zugriffe, um mit diesem Szenario vollständig ausgeführt zu werden. In einer weiteren Ausführungsform wird das geprüfte Bit für den zugeordneten Schreibanteil gesetzt, und es wird ein Bit für den Schreibbefehl gesetzt, der die Daten für den Ladeanteil bereitstellt, wodurch angegeben wird, dass das Verriegelungsbit nicht gesetzt werden soll, wenn dabei auf dem Datencache-Speicher 224 zugegriffen wird. In dieser Ausführungsform werden beide Schreiboperationen in einem einzelnen Zugriff auf den Cache-Speicher abgeschlossen.
  • 4b zeigt eine Blockansicht eines Datencache-Markierungsarrays 404, das mit dem Datencache-Speicher 224 verknüpft ist. In einer Ausführungsform ist der Datencache-Speicher 224 ein teilassoziativer Speicher mit 8 Wegen und somit enthält jede Reihe des Datencache-Markierungsarrays 404 8 Einträge der Art, wie dies in 4a gezeigt ist. Das Cache-Markierungsarray 404 ist ferner mit der Zurücksetzsignalleitung 257 verbunden, so dass während eines Taktzyklus, in welchem das Zurücksetzsignal gesetzt ist, jedes Verriegelungsbit innerhalb des Datencache-Markierungsarray 404 zurückgesetzt wird. Das Zurücksetzsignal ermöglicht es, dass die Verriegelungsbits zurückgesetzt werden, wenn der Umordnungspuffer 216 erkennt, dass ein Lade/Schreib-Operationsbefehl gelöscht wird. Zu beispielhaften Gründen für das Löschen gehören eine Verzweigungsfehlvorhersage für einen Verzweigungsbefehl vor dem Lade/Schreiboperationsbefehl und eine Ausnahme, die mit einem Befehl vor dem Lade/Schreiboperationsbefehl verknüpft ist. Derartige Löschereignisse können in einem Taktzyklus zwischen dem Ausführen des Ladeanteils eines Lade/Schreiboperationsbefehls und dem Schreibanteil des Befehls auftreten. Wenn ein Verriegelungsbit, das von einem Lade/Schreiboperationsbefehl gesetzt wurde, der später gelöscht wurde, nicht zurückgesetzt wird, dann verbleibt die Zeile in dem Datencache-Speicher 224 in nicht definierter Weise (da kein weiterer Schreibbefehl in die Zeile schreiben würde, um das Verriegelungsbit zurückzusetzen). Daher werden alle Verriegelungsbits in den Fällen zurückgesetzt, in denen ein Lade/Schreiboperationsbefehl nach dem Ausführen des Ladeanteils des Befehls gelöscht wird. Wenn Schreibanteile von Lade/Schreiboperationsbefehlen, die nicht gelöscht wurden, wenn das obige Zurücksetzen auftrat, weiterhin in dem Lade/Schreib-Puffer 251 vorhanden sind (siehe 2), dann sind die geprüften Bits dieser Schreiboperationen zurückgesetzt (wie in 2 und Und-Gatter 251 gezeigt ist), und diese Schreiboperationen beanspruchen zwei Zyklen für die Ausführung. Ereignisse, die das Setzen des Zurücksetzsignals hervorrufen, sind in superskalaren Mikroprozessoren relativ selten und so weisen die meisten Lade/Schreiboperationensbefehle den Vorteil des Schreibens in einem einzelnen Zyklus auf.
  • Zu beachten ist, dass das Datencache-Markierungsarray 404 als Teil als Datencache-Arrays 224 eingerichtet sein kann, das die Datenbytes speichert, oder es kann als ein physikalisch separates Array eingerichtet sein. Ferner kann die assoziative Funktion des Datencache-Speichers 224 sich von Ausführungsform zu Ausführungsform unterscheiden. In einer direkt zugeordneten Ausführungsform des Datencache-Speichers 224 wird das Wegefeld in den Speicherstellen des Lade/Schreib-Puffers 251 nicht verwendet.
  • Entsprechend der obigen Offenbarung ist eine Lade/Schreib-Einheit und ein Datencache-Speicher für einen superskalaren Mikroprozessor beschrieben. Die Kombination der Lade/Schreib-Einheit und des Datencache-Speichers ermöglicht, dass ein Schreibanteil von Lade/Schreiboperationensbefehlen in einem einzelnen Taktzyklus beim Zugreifen auf den Datencache-Speicher ausgeführt werden, im Gegensatz zu Zugriffen mit zwei Taktzyklen, wie sie typischerweise von Schreiboperationen benötigt werden, um die zugeordnete Cache-Zeile zu ermitteln und die Daten zu speichern. Somit kann ein höheres Leistungsvermögen durch die Reduzierung eines Datencache-Zugriffzyklus aus den meisten Lade/Schreiboperationsbefehlen erreicht werden.

Claims (16)

  1. Datenspeichereinheit mit: einer Lade/Schreib-Einheit (222), die ausgebildet ist, Lade- und Schreibbefehle auszuführen, wobei die Lade/Schreib-Einheit mehrere erste Speicherplätze (251) aufweist, die ausgebildet sind, anhängige Schreibbefehle und zugeordnete Schreibdaten zu speichern, und wobei jeder der mehreren Speicherplätze ferner ausgebildet ist, ein geprüftes Bit zu speichern; und einem Datencache-Speicher (224), der mit der Lade/Schreib-Einheit verbunden ist, wobei der Datencache-Speicher mehrere zweite Speicherplätze aufweist, die ausgebildet sind, Cache-Zeilen zu speichern, wobei der Datencache-Speicher ausgebildet ist, eine in den mehreren zweiten Speicherplätzen gespeicherte Cache-Zeile zu sichern, so dass die Cache-Zeile in den mehreren Speicherplätzen bis zumindest einem Taktzyklus, in welchem die Sicherung aufgelöst wird, gespeichert bleibt, und wobei das in einem der ersten Speicherplätze gespeicherte geprüfte Bit gesetzt wird, wenn ein Ladebefehl auf den Datencache-Speicher mit einer Ladeadresse zugreift, die innerhalb der gleichen Cache-Zeile liegt wie eine einem Schreibbefehl zugeordnete Adresse, der in dem einen der mehreren ersten Speicherplätze gespeichert ist, und wobei das geprüfte Bit gesetzt wird, wenn die Ladeadresse als eine den Datencache-Speicher treffende Adresse erkannt wird.
  2. Datenspeichereinheit nach Anspruch 1, wobei der Datencache-Speicher ferner ausgebildet ist, mehrere der Cache-Zeilen gleichzeitig zu sichern.
  3. Datenspeichereinheit nach Anspruch 1, wobei jeder der mehreren ersten Speicherplätze in der Lade/Schreib-Einheit ausgebildet ist, einen Wegewert zu speichern.
  4. Datenspeichereinheit nach Anspruch 3, wobei der in einem der mehreren ersten Speicherplätze gespeicherte Wegewert bereitgestellt wird, wenn der Ladebefehl auf den Datencache-Speicher mit einer Ladeadresse zugreift, die in der gleichen Cache-Zeile liegt wie die Adresse, die dem Schreibbefehl zugeordnet ist, der in dem einen der mehreren ersten Speicherplätze gespeichert ist, und wobei der Wegewert der Weg des Datencache-Speichers ist, der als von der Ladeadresse getroffen erkannt wird.
  5. Datenspeichereinheit gemäß einem der vorhergehenden Ansprüche, wobei der Datencache-Speicher ausgebildet ist, ein Sicherungsbit zu setzen, das mit der zu sichernden Cache-Zeile verknüpft ist.
  6. Datenspeichereinheit nach Anspruch 5, wobei das Sicherungsbit durch den Datencache-Speicher gesetzt wird, und wobei das Sicherungsbit gesetzt wird, wenn die Ladeadresse als Treffer in den Datencache-Speicher erkannt wird.
  7. Datenspeichereinheit nach Anspruch 6 oder Anspruch 7, wobei das Sicherungsbit zurückgesetzt wird, wenn ein Lade-Operation-Schreib-Befehl gelöscht wird.
  8. Datenspeichereinheit nach Anspruch 1, wobei das geprüfte Bit zurückgesetzt wird, wenn ein Lade-Operation-Schreib-Befehl gelöscht wird.
  9. Datenspeichereinheit nach Anspruch 1, wobei der Datencache-Speicher ferner ausgebildet ist, die Schreibdaten in eine empfangende Cache-Zeile zu übertragen, die in den mehreren zweiten Speicherplätzen in dem Datencache-Speicher gespeichert ist, wenn das mit dem Schreibdaten verknüpfte geprüfte Bit gesetzt ist, wobei die empfangende Cache-Zeile durch eine den Schreibdaten zugeordnet Adresse und einem der Adresse zugeordneten Wegewert gekennzeichnet ist.
  10. Datenspeichereinheit nach Anspruch 9, wobei die Schreibdaten, die den Schreibdaten zugeordnete Adresse und der Wegewert von der Lade/Schreib-Einheit bereitgestellt werden, wobei die Schreibdaten, die den Schreibdaten zugeordnete Adresse und der Wegewert in einem der mehreren ersten Speicherplätze in der Lade/Schreib-Einheit gespeichert sind.
  11. Datenspeichereinheit nach Anspruch 1, wobei die mehreren ersten Speicherplätze in der Lade/Schreib-Einheit ferner ausgebildet sind, anhängige Ladebefehle zu speichern, so dass die mehreren ersten Speicherplätze in der Lade/Schreib-Einheit einen einheitlichen Lade/Schreib-Puffer bilden.
  12. Verfahren zum Speichern von Schreibdaten in einem Daten-Cache-Speicher, ohne dass zunächst der Datencache-Speicher auf einen Treffer hin an einer Adresse, die den Schreibdaten zugeordnet ist, zu überprüfen ist, wobei das Verfahren umfasst: Zuordnen eines geprüften Bits zu den Schreibdaten, Speichern der Schreibdaten in dem Datencache-Speicher, wenn das geprüfte Bit gesetzt ist, Setzen des geprüften Bits während eines Taktzyklus, in welchem ein Ladebefehl, der eine Ladeadresse innerhalb der gleichen Cache-Zeile wie die den Schreibdaten zugeordnete Adresse aufweist, auf den Datencache-Speicher zugreift und als Treffer in den Datencache-Speicher erkannt wird, und Setzen eines der Cache-Zeile zugeordneten Sicherungsbits während des Taktzyklus.
  13. Verfahren nach Anspruch 12, das ferner umfasst: Speichern eines der Cache-Zeile zugeordneten Wegewertes in einem den Schreibdaten zugeordneten Speicherplatz während des Taktzyklus.
  14. Verfahren nach Anspruch 12 oder Anspruch 13, das ferner umfasst: Zurücksetzen des Sicherungsbits während eines nachfolgenden Taktzyklus, in welchem ein Befehl vom Typ „Laden-Operation-Schreiben" gelöscht wird.
  15. Verfahren nach Anspruch 14, das ferner Zurücksetzen des Sicherungsbits während des nachfolgenden Taktzyklus umfasst.
  16. Verfahren nach Anspruch 14, das ferner Zurücksetzen des der Cache-Zeile zugeordneten Sicherungsbits während eines Taktzyklus umfasst, in welchem ein Befehl zum Schreiben in die Cache-Zeile ausgeführt wird.
DE69636822T 1996-07-16 1996-07-16 Datenbankeinheit ausgerüstet um daten im uhrzyklus zu speichern und anwendungsverfahren Expired - Lifetime DE69636822T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US1996/011988 WO1998002818A1 (en) 1996-07-16 1996-07-16 A data memory unit configured to store data in one clock cycle and method for operating same

Publications (2)

Publication Number Publication Date
DE69636822D1 DE69636822D1 (de) 2007-02-15
DE69636822T2 true DE69636822T2 (de) 2007-10-04

Family

ID=22255488

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69636822T Expired - Lifetime DE69636822T2 (de) 1996-07-16 1996-07-16 Datenbankeinheit ausgerüstet um daten im uhrzyklus zu speichern und anwendungsverfahren

Country Status (4)

Country Link
EP (1) EP1005675B1 (de)
JP (1) JP3824657B2 (de)
DE (1) DE69636822T2 (de)
WO (1) WO1998002818A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8495272B2 (en) * 2006-11-29 2013-07-23 International Business Machines Corporation Method to save bus switching power and reduce noise in an engineered bus
US8127114B2 (en) * 2007-03-28 2012-02-28 Qualcomm Incorporated System and method for executing instructions prior to an execution stage in a processor

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4513367A (en) * 1981-03-23 1985-04-23 International Business Machines Corporation Cache locking controls in a multiprocessor
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
EP0459233A3 (en) * 1990-05-29 1992-04-08 National Semiconductor Corporation Selectively locking memory locations within a microprocessor's on-chip cache
US5353425A (en) * 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
JPH07334428A (ja) * 1994-06-14 1995-12-22 Toshiba Corp キャッシュメモリ

Also Published As

Publication number Publication date
JP3824657B2 (ja) 2006-09-20
EP1005675B1 (de) 2007-01-03
DE69636822D1 (de) 2007-02-15
EP1005675A1 (de) 2000-06-07
WO1998002818A1 (en) 1998-01-22
JP2001505327A (ja) 2001-04-17

Similar Documents

Publication Publication Date Title
DE69427734T2 (de) Linearadressierter Mikroprozessorcachespeicher
DE69514165T2 (de) Mehrstufige Cache-Speicheranordnung
DE68928513T2 (de) Verfahren zur Vorverarbeitung mehrerer Befehle
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE68922326T2 (de) Speicherwarteschlange für eine festgekoppelte Mehrprozessorenkonfiguration mit einem zweistufigen Cache-Pufferspeicher.
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE69908193T2 (de) Ausführung von speicher- und ladeoperationen mittels einer linkdatei
DE60025028T2 (de) Speicherpuffer, der daten, basierend auf index und freiwilliger weisebemusterung überträgt
DE69605943T2 (de) Anordnung und verfahren zur mikrokodemodifikation
DE60102017T2 (de) Räumungsfilter für adressenübersetzungspuffer
DE69620807T2 (de) Datenverarbeitungsvorrichtung zum Vorziehen einer Datenstruktur aus dem Hauptspeicher oder seinem Cachespeicher
DE69033331T2 (de) Sprungvorhersage
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE69518676T2 (de) Cache-Speicheranordnung für einen Speicher
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE69434669T2 (de) Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
DE112005003098B4 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE69429061T2 (de) Superskalarmikroprozessoren
DE69427672T2 (de) Befehlscachespeicher für Befehle mit variabler Byteslänge
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE69612991T2 (de) System zur bearbeitung von selbstmodifizierendem kode
DE10085373B4 (de) Verfahren zum Flushen von Cache-Zeilen
DE69702350T2 (de) Verzweigungsvorhersageschema für cachespeicherzeile, das von sätzen eines set-assoziativen cachespeichers gemeinsam verwendet wird
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE10045188B4 (de) Cacheadresskonfliktvorrichtung

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: ADVANCED MICRO DEVICES INC., SUNNYVALE, CALIF., US

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,