DE19506734A1 - Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange - Google Patents

Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange

Info

Publication number
DE19506734A1
DE19506734A1 DE19506734A DE19506734A DE19506734A1 DE 19506734 A1 DE19506734 A1 DE 19506734A1 DE 19506734 A DE19506734 A DE 19506734A DE 19506734 A DE19506734 A DE 19506734A DE 19506734 A1 DE19506734 A1 DE 19506734A1
Authority
DE
Germany
Prior art keywords
bus
memory
data
cache
processor
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.)
Withdrawn
Application number
DE19506734A
Other languages
English (en)
Inventor
James M Brayton
Michael W Rhodehamel
Nitin V Sarangdhar
Glenn J Hinton
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE19506734A1 publication Critical patent/DE19506734A1/de
Withdrawn 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Description

Die vorliegende Erfindung betrifft Computersysteme und ins­ besondere Computersysteme mit mehreren Ebenen von hierarchi­ schen Speichern, deren Konsistenz aufrechterhalten werden muß.
Computersysteme können mehrere hierarchisch angeordnete Speicherebenen aufweisen. Beispielsweise kann ein Computer einen Hauptspeicher mit wahlfreiem Zuriff (RAM) und eine zen­ trale Verarbeitungseinheit (CPU), die eine oder mehrere Ebenen von Cache-Speichern enthält, aufweisen. Jede Cache-Speicher­ ebene ist im allgemeinen schneller und kleiner als die Ebene über ihr, jedoch teurer sowohl preislich als auch gemessen in der benötigten Siliziumfläche. Cache-Speicher werden vorgese­ hen, um die Ausführungsgeschwindigkeit eines ausgeführten Programms in einer für das Programm transparenten Weise zu beschleunigen. Jeder Cache-Speicher wird zum schnelleren Zu­ griff durch die CPU zum Halten von gültigen Daten verwendet, die von dem Programm in logischer Hinsicht als in dem RAM befindlich angesehen werden. Ein solches System kann einen primären (L1-)Cache-Speicher, der vorteilhafterweise in der CPU angeordnet ist, einen sekundären (L2-)Cache-Speicher, der in der CPU als On-Chip- oder Off-Chip-Speicher angeordnet sein kann, und einen tertiären (L3-)Cache-Speicher aufweisen, der üblicherweise eher auf der Mutterplatine angeordnet würde. Andere Konfigurationen sind natürlich möglich.
Da dieselben logischen Daten an physikalisch unterschied­ lichen Stellen in Cache-Speichern einer oder mehrerer Ebenen vorhanden sein können, und da eine gegebene logische Datenein­ heit zu diesen verschiedenen Ebenen zu unterschiedlichen Zeiten geschrieben werden kann, ist es nötig, die logische Kohärenz oder Konsistenz zwischen den Speicherebenen aufrechtzuerhalten.
Fortgeschrittene Computersysteme können mehrere Teilnehmer enthalten, die in der Lage sind, aus dem Speicher zu lesen und/oder in den Speicher zu schreiben. Dies stellt höhere Anforderungen an die Cache-Speicher-Konsistenz-Anforderung. Solche Teilnehmer können verschiedene Einheiten innerhalb einer einzigen CPU enthalten. Außerdem können sie mehrere CPUs in einem einzigen System enthalten. Sie können auch andere Arten von Teilnehmern, beispielsweise Steuereinrichtungen für den direkten Speicherzugriff (DMA) oder ähnliches aufweisen.
In einem solchen System sind die verschiedenen Cache-Spei­ cher möglicherweise mit verschiedenen Kombinationen von Bussen gekoppelt. Um die Systemleistung zu verbessern, ist es wün­ schenswert, daß die verschiedenen Teilnehmer auf die Cache- Speicher über diese Busse in einer nicht blockierenden Weise zugreifen.
Aufgabe der Erfindung ist es, die Cache-Speicherkonsistenz zu verbessern und ein nicht-blockierendes Cache-Speichern in mehreren Ebenen zu ermöglichen. Insbesondere ist ein System mit einem oder allen der folgenden Eigenschaften wünschenswert: Instruktionsverarbeitung außer der Reihe, spekulative Ausfüh­ rung von Instruktionen, insbesondere von solchen, die Busanfor­ derungen enthalten, tiefe Bus-Pipeline-Verarbeitung, Unterstüt­ zung von selbstmodifizierendem Code, Unabhängigkeit beim Laden von Befehls- und Daten-Cache-Speicher, Integration des L2- Cache-Speichers und internes Cache-Speichern in mehreren Ebe­ nen.
Diese Aufgabe wird durch ein Computersystem mit den Merkma­ len des Anspruchs 1 sowie durch ein Verfahren mit den Merkmalen des Anspruchs 3 gelöst.
Die Erfindung stellt ein Computersystem und ein von diesem ausgeführtes Verfahren zur Verfügung, das einen Mechanismus zum Sicherstellen der Konsistenz zwischen Daten verschiedener Ebenen der Cache-Speicherung in einem hierarchischen Mehrebe­ nen-Speichersystem aufweist. Der Cache-Konsistenzmechanismus enthält eine externe Bus-Anforderungswarteschlange und einen zugehörigen Mechanismus, die zum Überwachen und Steuern der Ausgabe von Datenanforderungen, beispielsweise Leseanforderun­ gen und Schreibanforderungen, an einen externen Bus miteinander kooperieren. Das Computersystem enthält eine oder mehrere CPUs, von denen jede den Konsistenzmechanismus aufweist.
Im folgenden wird die Erfindung anhand in der Zeichnung dargestellter Ausführungsbeispiele näher beschrieben. In der Zeichnung sind ähnliche Elemente mit gleichen Bezugszeichen bezeichnet. In der Zeichnung zeigen:
Fig. 1 ein Mehrprozessor-Computersystem mit einem Satz von Prozessoren und einem Speichersubsystem;
Fig. 2 ein Blockschaltbild eines Mehrprozessor-Compu­ tersystems, in dem die Erfindung ausgeführt werden kann;
Fig. 3 ein Blockschaltbild mit einem Bus-Gruppen-Sy­ stem, in dem die Erfindung ausgeführt werden kann;
Fig. 4 eine Übersicht über ein erfindungsgemäßes Mehr­ prozessor-Computersystem;
Fig. 5 ein Zeitablaufdiagramm von zwei Bustransaktionen bei einem Ausführungsbeispiel der Erfindung;
Fig. 6 ein Blockschaltbild des Speichersubsystems eines Prozessors, der in einem Ausführungsbeispiel des erfindungsgemäßen Computersystems enthalten ist;
Fig. 7 ein Blockschaltbild, das ein Ausführungsbeispiel eines erfindungsgemäßen Prozessors veranschaulicht;
Fig. 8 ein Blockschaltbild eines Prozessors in dem Mehrprozessor-Computersystem;
Fig. 9 ein Blockschaltbild des erfindungsgemäßen Sy­ stems;
Fig. 10 ein Blockschaltbild, das weitere Details der externen Bus-Anforderungswarteschlange zeigt;
Fig. 11 die Umordnungsschaltung, die einen Umordnungs­ puffer mit einem Satz von ROB-Einträgen (RE0 bis REn) enthält, die Ergebnisdaten von der ungeordneten spekulativen Ausführung von physikalischen Mikrobefehlen zwischenspeichern;
Fig. 12 eine Speicherladeschaltung, die eine Adreßer­ zeugungsschaltung, eine Speicherordnungsschaltung, eine Daten­ übersetzungs-Nachschlage-Pufferschaltung (DTLB) und eine Daten-Cache-Speicherschaltung aufweist;
Fig. 13 einen Prozessor eines Ausführungsbeispiels, der einen internen Daten-Cache-Speicher, eine Speicherzugriffsschaltung und Transaktionswarteschlangen zum Verfolgen zurück­ gestellter Transaktionen aufweist;
Fig. 14 eine Knotenschnittstellenschaltung für ein Aus­ führungsbeispiel, das Transaktionswarteschlangen zum Verfolgen zurückgestellter Transaktionen und zum Aussenden zurückgestellter Transaktionen zwischen Bus-Gruppen aufweist;
Fig. 15 ein Beispiel eines Abbruch- und Neuabferti­ gungsprozesses;
Fig. 16 ein Ablaufdiagramm, das die Schritte zur Schaf­ fung eines Speicherkonsistenzmodells (d. h. eine Prozeßordnung) in einem Mehrprozessorsystem beschreibt;
Fig. 17-18 ein Ablaufdiagramm, das die Behandlung einer Kommunikationstransaktion durch die Knotenschnittstellenschaltung veranschaulicht;
Fig. 19 ein Ablaufdiagramm, das eine Lesetransaktion eines anfordernden Busteilnehmers veranschaulicht;
Fig. 20 ein Ablaufdiagramm, das eine Schreibtransaktion oder eine Invalidierungstransaktion eines anfordernden Busteilnehmers veranschaulicht;
Fig. 21 ein vereinfachtes Ablaufdiagramm der Arbeits­ weise eines Ausführungsbeispiels des erfindungsgemäßen Computersystems;
Fig. 22 ein Ablaufdiagramm, das die Schritte zum Unter­ stützen einer Operation zum Speicher auf einem Pipeline-Bus bei einem Ausführungsbeispiel der Erfindung beschreibt;
Fig. 23 ein Ablaufdiagramm, das die Schritte zum Aus­ führen einer Leseoperation auf einem Pipeline- Bus bei einem Ausführungsbeispiel der Erfindung beschreibt;
Fig. 24 ein Ablaufdiagramm, das die Schritte zum Aktua­ lisieren der Cache-Speicherzustände bei einer Leseoperation bei einem anderen Ausführungsbeispiel der Erfindung beschreibt;
Fig. 25 ein Ablaufdiagramm, das die Schritte zum Aktua­ lisieren der Cache-Speicherzustände bei einer Leseoperation bei einem anderen Ausführungsbeispiel der Erfindung beschreibt;
Fig. 26 ein Ablaufdiagramm, das die Schritte zum Aus­ führen einer Schreiboperation auf einem Pipeline-Bus bei einem Ausführungsbeispiel der Erfindung beschreibt;
Fig. 27 ein Ablaufdiagramm, das die Schritte zum Aktua­ lisieren der Cache-Speicherzustände bei einer Schreiboperation bei einem anderen Ausführungsbeispiel der Erfindung beschreibt;
Fig. 28 ein Ablaufdiagramm, das die Schritte zum Aktua­ lisieren der Cache-Speicherzustände bei einer Schreiboperation bei einem weiteren Ausführungsbeispiel der Erfindung beschreibt;
Fig. 29 ein Ablaufdiagramm, das die Schritte zum Aus­ führen einer Cache-Zeilen- Invalidierungsoperation auf einem Pipeline-Bus bei einem Ausführungsbeispiel der Erfindung be­ schreibt.
Fig. 1 zeigt ein Mehrprozessor-Computersystem 120. Das Mehrprozessor-Computersystem 120 weist einen Satz von Prozesso­ ren 122-124, und ein Speichersubsystem 126 auf. Die Prozessoren 122-124 und das Speichersubsystem 126 kommunizieren über einen Mehrprozessorbus 128.
Jeder Prozessor 122-124 holt sich einen Strom von Makroin­ struktionen von dem Speichersubsystem 126 über den Mehrprozes­ sorbus 128. Jeder Prozessor 122-124 führt den zugehörigen Strom von Makroinstruktionen aus und verwaltet die Datenspeicherung in dem Speichersubsystem 126.
Fig. 2 zeigt eine Übersicht über ein Mehrprozessor-Compu­ tersystem, in dem die Erfindung ausgeführt werden kann. Das Computersystem weist allgemein einen Prozessorsystembus oder ein anderes Kommunikationsmittel 201 zum Informationsaustausch eines oder mehrerer Prozessoren 202 und 203 auf. Der Prozessor­ systembus 201 enthält Adreß-, Daten- und Steuerbusse. Wie oben beschrieben, können die Prozessoren 202 und 203 einen kleinen, extrem schnellen internen Cache-Speicher zum vorübergehenden Speichern von Daten und Instruktionen auf dem Chip aufweisen, der im allgemeinen als ein primärer (L1-)Cache-Speicher be­ zeichnet wird. Ferner kann ein größerer, langsamerer sekundärer (L2-)Cache-Speicher 204 mit dem Prozessor 202 zum temporären Speichern von Daten und Instruktionen mit dem Prozessor 202 gekoppelt sein. In dem derzeit bevorzugten Ausführungsbeispiel sind der L1- und der L2-Cache-Speicher in der gleichen Chip- Verkapselung wie der Prozessor 202 enthalten.
Mit dem Prozessorsystembus 202 ist außerdem der Prozessor 203 gekoppelt zur Informationsverarbeitung gemeinsam mit dem Prozessor 202. Der Prozessor 203 kann ein paralleler Prozessor sein, der ähnlich oder gleich dem Prozessor 202 ist. Alternativ kann der Prozessor 203 ein Coprozessor sein, beispielsweise ein digitaler Signalprozessor. Darüber hinaus können mit dem Pro­ zessorsystembus 201 ein tertiärer (L3-)Cache-Speicher 211 zum temporären Speichern von Daten und Instruktionen zur Verwendung durch andere Einrichtungen in dem Computersystem (z. B. durch den Prozessor 202, 203 usw.) und eine L3-Cache-Steuereinrich­ tung 210 zum Steuern des Zugriffes auf den L3-Cache-Speicher 211 gekoppelt sein. Die L3-Cache-Steuereinrichtung 210 ist außerdem mit dem Speichersystembus 215 gekoppelt.
Ein Speichersystembus oder eine andere Kommunikationsein­ richtung 215 zum Austauschen von Informationen ist mit dem Prozessor 202 gekoppelt, um dem Prozessor 202 und den anderen Einrichtungen in dem Computersystem den Zugriff auf Speicher- und Eingabe/Ausgabe(I/O)-Subsysteme zu ermöglichen. Eine Spei­ chersteuereinrichtung 222 ist mit dem Speichersystembus 215 gekoppelt, um den Zugriff auf einen RAM oder eine andere dyna­ mische Speichereinrichtung 221 zum Speichern von Informationen und Instruktionen für die Prozessoren 202 und 203 (üblicherweise als Hauptspeicher bezeichnet) zu ermöglichen. Die Speichersteuereinrichtung 212 erhält die Ordnung der Lese- und Schreiboperationen auf der Basis spezieller, im folgenden beschriebener Regeln aufrecht. Eine Massenspeichereinrichtung 225, beispielsweise eine magnetische Platte und ein Platten­ laufwerk zum Speichern von Informationen und Instruktionen, und eine Anzeigeeinrichtung 223, beispielsweise eine Kathoden­ strahlröhre (CRT) oder eine Flüssigkristallanzeige (LCD) zum Anzeigen von Informationen sind mit dem Speichersystembus 215 gekoppelt.
Eine Eingabe/Ausgabe(I/O)-Brücke 224 ist mit dem Speicher­ systembus 215 und einem I/O-Bus 231 gekoppelt, um einen Kommu­ nikationspfad oder eine Gateway für Einrichtungen entweder an dem Speichersystembus 215 oder an dem I/O-Bus 231 zu Einrich­ tungen auf dem anderen Bus zur Datenübertragung zu ermöglichen. Im wesentlichen ist die Brücke 224 eine Schnittstelle zwischen dem System-I/O-Bus 231 und dem Speichersystembus 215. Speziell wandelt die Brücke 224 den Byte/Wort/Doppelwort-Datenübertra­ gungsverkehr vom I/O-Bus 231 in Verkehr mit Zeilenbreite auf dem Speichersystembus 215 um.
Der I/O-Bus 231 tauscht Informationen zwischen den Einrich­ tungen in dem Computersystem aus. Zu den Einrichtungen, die mit dem System-I/O-Bus 231 gekoppelt sein können, gehört eine Anzeigeeinrichtung 232, beispielsweise eine Kathodenstrahlröhre oder eine Flüssigkristallanzeige, eine alphanumerische Eingabe­ einrichtung mit alphanumerischen und anderen Tasten zum Über­ mitteln von Informationen und Befehlsauswahlen zu anderen Einrichtungen des Computersystems (z. B. Prozessor 202) und einer Cursorsteuereinrichtung 234 zum Steuern der Cursorbewe­ gung. Darüber hinaus können eine Hardcopy-Einrichtung 235, beispielsweise ein Plotter oder ein Drucker, zum Ermöglichen einer visuellen Darstellung der Computerbilder und eine Massen­ speichereinrichtung 236, beispielsweise eine magnetische Platte und ein Plattenlaufwerk, zum Speichern von Informationen und Instruktionen mit dem Systembus 231 gekoppelt sein.
Selbstverständlich werden bestimmte Ausführungsformen und Verwendungen der vorliegenden Erfindung nicht alle oben genann­ ten Komponenten erfordern oder enthalten. Beispielsweise können bei bestimmten Ausführungsbeispielen die L3-Cache-Steuerein­ richtung und der L3-Cache-Speicher entfallen. Bei solchen Ausführungsformen befinden sich der Prozessor 202 und 203 direkt an dem Speichersystembus 215. Bei anderen Ausführungs­ beispielen wird es nicht erforderlich sein, eine Anzeigeein­ richtung zum Anzeigen von Informationen vorzusehen. Bestimmte Implementierungen der vorliegenden Erfindung können zusätzliche Prozessoren oder andere Komponenten enthalten.
Fig. 3 zeigt ein Blockschaltbild mit einem Busgruppensy­ stem, in dem die Erfindung ausgeführt werden kann. Die vorlie­ gende Erfindung kann in Mehrprozessor-Computersysteme mit einem oder mehreren Gruppen von Teilnehmern verwendet werden. Fig. 3 zeigt zwei solcher Gruppen 301 und 302. Jede dieser Gruppen weist eine Anzahl von Teilnehmern auf. Beispielsweise weist die Gruppe 301 die vier Teilnehmer 303 bis 306 und einen Cache- Speicher 307 auf. Die Teilnehmer 303 bis 306 können andere Mikroprozessoren, Coprozessoren, digitale Signalprozessoren, DMA-Steuereinrichtungen, I/O-Einrichtungen, I/O-Brücken, Netzwerkeinrichtungen/-steuereinrichtungen und/oder separate Cache-Speicher mit oder ohne zugehörigen Prozessoren aufweisen. Kurz gesagt, kann ein Teilnehmer eine beliebige Einrichtung sein, die Lade- und/oder Speicheroperationen ausführen kann. Der Cache-Speicher 307 wird von den vier Teilnehmern 303 bis 306 geteilt. Jede Gruppe ist mit einem Systembus 308 gekoppelt. Die Gruppen 301 bis 302 sind mit verschiedenen anderen Kompo­ nenten des Computersystems über eine Systemschnittstelle 309 gekoppelt. Die Systemschnittstelle 309 enthält eine Hochge­ schwindigkeits-I/O-Schnittstelle 310 als Schnittstelle des Computersystems mit der Außenwelt und eine Speicherschnittstel­ le 311, die den Zugriff auf einen Hauptspeicher, beispielsweise eine DRAM-Speichermatrix ermöglicht.
Bei der Erfindung wird eine Prozessorreihenfolge(-ordnung) von der für die meisten Prozessorsystemarchitekturen geschrie­ benen vorhandenen Software inhärent vorausgesetzt. Das Unter­ stützen der Prozessorordnung impliziert, daß Speicheroperatio­ nen, die von irgendeinem Prozessor in dem System erzeugt wer­ den, in der gleichen Reihenfolge von allen Prozessoren des Systems beobachtet werden. In anderen Worten, die Reihenfolge (Ordnung) der Speicherungen muß aufrechterhalten werden. Quellcodes, die eine Produzenten/Konsumenten-Beziehung benöti­ gen, hängen von dieser Unterstützung zur Sicherstellung einer richtigen Funktionalität ab.
Angenommen, der Prozessor 303 ist ein Informationsproduzent und der Prozessor 304 ein Konsument dieser vom Prozessor 303 erzeugten Informationen. Die Codesequenzen für sowohl den Produzentenprozessor als auch den Konsumentenprozessor sind wie folgt:
Produzent
Konsument
W1: Speicherdaten an die Adresse X
R1: Während Flag = 0; Loop a1
W2: Speichere 1 für das Flag (W=write; R=Read) R2: Lade Daten von der Adresse X
Folglich führt der Produzentprozessor 303 eine Schreibope­ ration W1 von Daten an die Adresse X aus und danach eine zweite Schreiboperation W2, um das Flag auf "1" zu setzen, wobei dies anzeigt, daß die Daten an der Adresse X gültig sind. In der Zwischenzeit führt der Konsumentprozessor 304 kontinuierlich eine Leseoperation R1 aus, um feststellen zu können, ob das Flag auf "1" gesetzt wurde. Diese R1-Leseoperation wird konti­ nuierlich ausgeführt, bis das Flag auf "1" gesetzt ist (durch Produzentprozessor 303). Wenn festgestellt wird, daß das Flag gesetzt ist (z. B. "1"), führt der Konsumentprozessor eine Leseoperation R2 zum Laden der Daten von der Adresse X aus. Damit dieser Befehlsteil erfolgreich in dem Mehrprozessorsystem ausgeführt wird, sollte die Reihenfolge, in der W1 und W2 von dem Produzentprozessor 303 geschrieben werden, die gleiche sein, in der R1 und R2 dem Konsumentprozessor 304 aktualisiert erscheinen.
Bei der vorliegenden Erfindung wird die Leistungsfähigkeit durch das Implementieren einer spekulativen Prozessorreihenfol­ ge (oder -ordnung), bei gleichzeitigem Vermeiden von Prozessor­ ordnungsverletzungen maximiert. Bei dem derzeitig bevorzugten Ausführungsbeispiel bleiben Speicheroperation in der Reihen­ folge und sind konsistent. Jedoch wird es Ladeoperationen gestattet, andere Ladeoperationen vorbeizulassen. Speicherin­ struktionen werden unverzüglich ausgeschieden (retired) und bleiben in dem Speicherpuffer, da das Ausscheiden (retirement) keinen Cache-Speicherzugriff erfordert. Diese Speicheroperatio­ nen, bekannt als "Senior"-Speicheroperationen werden im Hinter­ grund zum Speicher ausgeführt. Der Inhalt des Cache/Speichersystems bleibt ungeändert.
Wenn zwei aufeinanderfolgende Speicheroperationen (d. h. W1 und W2) in den Senior-Speicherpuffer ausgeschieden sind, ist die Existenz der Speicheroperationen nur für den Produzentpro­ zessor, jedoch für keinen Konsumentprozessor sichtbar. Wenn der Produzentprozessor von den gleichen Adreßstellen liest, wird vom Speicherpuffer direkt zu dem Kern weitergeleitet. Dieser Mechanismus ist als "Speicherweiterleiten" ("store forwarding") bekannt. Wichtig ist, daß dieser Mechanismus die Prozessorord­ nung des Prozessors im Hinblick auf seine eigenen Schreibopera­ tionen aufrechterhält. Wenn zu diesem Zeitpunkt irgendein Konsumentprozessor in dem System von den zwei Stellen liest, wird keine die Auswirkungen der zwei Speicheroperationen re­ flektieren. Das stellt sicher, daß die Prozessorordnung in bezug auf alle anderen Prozessoren für die zwei Schreibopera­ tionen aufrechtgehalten wird. Von den so ausgeschiedenen Se­ nior-Speicheroperationen verläßt jeweils eine pro Zeiteinheit den Speicheroperationspuffer. Dies bewirkt eine Speichersyste­ maktualisierung. Auf diese Weise wird sichergestellt, daß die W1-Speicheroperation die erste ist, die den Senior-Speicherope­ rationspuffer verläßt. Da keine nachfolgende Speicheroperation die Senior-Speicheroperation-Puffereinheit verlassen darf, ist die Aktualisierung des Systemspeichers gesichert.
Wenn eine Ladeoperation eine andere Ladeoperation (z. B. spekulative Ladeoperationen) durchläßt, überwacht (snoops) der Ladeoperationenpuffer die Speicheroperationen von den anderen Prozessoren. Wenn eine externe Speicheroperation mit einer Ladeoperation in Konflikt gerät, die bereits beendet wurde, obwohl eine frühere Ladeoperation noch aussteht, zeigt dies die Erfassung eines Fehlers an. Bei einem Ausführungsbeispiel wird eine Ladeoperation als noch ausstehend betrachtet, wenn sie noch nicht vom Speicher geladen wurde. Bei einem anderen Aus­ führungsbeispiel bedeutet "noch ausstehend", daß auf den Spei­ cher zugegriffen wurde, aber daß die Ladeoperation noch nicht ausgeschieden (retired) wurde. Bei diesem Ausführungsbeispiel können falsche Fehleranzeigen auftreten. Dies verhindert die Richtigkeit nicht, aber mindert die Leistungsfähigkeit. Die illegale Ladeoperation und alle nachfolgenden Mikrooperationen (Mikrocode mit Quellfeldern, Zielen, Direktdaten und Flags) werden abgebrochen. Die Sequenz wird dann erneut bei der Lade­ operation gestartet, die die Abbruchbedingung ausgelöst hat. Indem die Ladeoperation zu einer späteren Zeit erneut abgefer­ tigt wird, werden die richtigen Daten gelesen.
Nun wird ein Beispiel beschrieben, um die Prozessorord­ nungsoperation im Hinblick auf die Lese/Schreibsequenz (R1, R2, W1 und W2) für den oben beschriebenen Produzentprozessor 303 und Konsumentprozessor 304 zu veranschaulichen. Es sei angenom­ men, daß die Ladeoperation R2 spekulativ vor der Ladeoperation R1 verarbeitet wird, was zu einem Prozessorordnungsfehler führt. Dieser Fehler wird erfaßt, wenn die Speicheroperation W2 einen Snoop-Treffer für die bereits beendete Ladeoperation R2 verursacht, während die Ladeoperation R1 noch aussteht. Wenn der Fehler erfaßt wird, wird er durch Abbrechen der Ladeopera­ tion R2 berichtigt. Außerdem werden alle nachfolgenden spekula­ tiven Zustände gelöscht. Später wird die Ladeoperation R2 erneut abgefertigt. Sie greift dann auf die gültigen Daten zu.
Fig. 4 zeigt eine Übersicht über ein erfindungsgemäßes Mehrprozessor-Computersystems. Das Computersystem weist einen Prozessor-Speicher-Bus oder eine andere Kommunikationseinrich­ tung 401 zum Austauschen von Informationen eines oder mehrerer Prozessoren 402 und 403 auf. Der Prozessorsystembus 401 enthält Adreß-, Daten- und Steuerbusse. Die Prozessoren 402 und 403 können einen internen kleinen, extrem schnellen primären (L1-) Cache-Speicher aufweisen, um Daten und Instruktionen auf dem Chip temporär zu speichern. Ferner kann ein größerer langsame­ rer sekundärer (L2-)Cache-Speicher 404 mit dem Prozessor 402 zum temporären Speichern von Daten und Instruktionen mit dem Prozessor 402 gekoppelt sein. Bei einem Ausführungsbeispiel sind die Prozessoren 402 und 403 zur INTEL-Architektur kompati­ ble Mikroprozessoren; jedoch kann die vorliegende Erfindung jede Mikroprozessorart, auch verschiedene Arten von Prozessoren verwenden.
Der Prozessor 403 ist zum Verarbeiten von Informationen ge­ meinsam mit dem Prozessor 402 ebenfalls mit dem Prozessor- Speicher-Bus 401 gekoppelt. Der Prozessor 403 kann ein paralle­ ler Prozessor, beispielsweise ein dem Prozessor 402 ähnlicher oder gleicher Prozessor sein. Alternativ kann der Prozessor 403 ein Coprozessor, beispielsweise ein digitaler Signalprozessor sein. Der Prozessor-Speicher-Bus 401 ermöglicht einen Zugriff des Systems zu dem Speicher und den Eingabe/Ausgabe(I/O)-Subsy­ stemen. Eine Speichersteuereinrichtung 422 ist mit dem Prozes­ sor-Speicher-Bus 401 gekoppelt, um den Zugriff auf einen Nur- Lese-Speicher (RAM) oder auf eine andere dynamische Speicher­ einrichtung 421 (üblicherweise als Hauptspeicher bezeichnet) zum Speichern von Informationen und Instruktionen für die Prozessoren 402 und 403 zu steuern. Die Speichersteuereinrich­ tung 422 hält eine strenge Ordnung der Lese- und Schreibopera­ tionen aufrecht. Eine Massendatenspeichereinrichtung 425, beispielsweise eine Magnetplatte und ein Plattenlaufwerk, zum Speichern von Informationen und Instruktionen und eine Anzeige­ einrichtung 423, beispielsweise eine Kathodenstrahlröhre (CRT) oder eine Flüssigkristallanzeige (LCD), zum Anzeigen von Infor­ mationen für den Computerbenutzer sind mit dem Prozessor-Spei­ cher-Bus 401 gekoppelt.
Bei einem Ausführungsbeispiel enthält die Speichersteuer­ einrichtung 422 einen Snarfing- oder Wegnahmepuffer 470, einen Cache-Zeilenpuffer 471, eine implizite Rückschreib(IW)-Logik 472 und eine Verschmelzungslogik (merge logic) 473. Der Snar­ fing-Puffer 470 ist ein temporärer Datenpuffer zur Speicherung von Daten, die vom Bus weggenommen (snarfed off) wurden. Der Cache-Zeilenpuffer 471 ist ein temporärer Datenpuffer, der zum Speichern von von dem Bus weggenommenen Daten einer impliziten Rückschreib-Datenübertragung verwendet wird. Bei einem Ausfüh­ rungsbeispiel speichert die IW-Logik 472 (IW-Implicit Write­ back) von dem Bus empfangene Daten entweder in den Snarfing- Puffer 470 oder in den Cache-Zeilenpuffer 471, und zwar in Abhängigkeit von der Datenquelle. Bei einem anderen Ausfüh­ rungsbeispiel überträgt die IW-Logik 472 die Daten ohne Zwi­ schenspeichern in einem temporären Puffer direkt zum Hauptspei­ cher. Die IW-Logik 472 kann außerdem eine implizite Rück­ schreibantwort auf den Bus ausgeben, und zwar in Abhängigkeit von der Anforderung und davon, ob die Speichersteuereinrichtung 422 Daten übertragen wird, um der Anforderung nachzukommen. In einem Modus ist die IW-Logik 472 mit dem Bus über eine Bus­ schnittstelle 475 gekoppelt, die Daten von dem Bus wegnimmt und Daten auf den Bus gibt.
Die Verschmelzungslogik 473 vereinigt die Daten in dem Snarfing-Puffer 470 und dem Cache-Zeilenpuffer 471 und spei­ chert die Cache-Speicherzeile dann im Hauptspeicher 421. In einem Modus speichert die Verschmelzungslogik 473 die Cache- Speicherzeile über eine Speicherschnittstelle 476 in den Haupt­ speicher 471. Bei einem Ausführungsbeispiel stellen der Snar­ fing- Puffer 470 und der Cache-Speicherzeilenpuffer 471 mehrere Puffer dar. Das heißt, daß die Speichersteuereinrichtung 421 mehrere Snarfing-Puffer und mehrere Cache-Speicherzeilenpuffer enthält. Zusätzliche Puffer sind nicht dargestellt, um die Zeichnungen übersichtlich zu halten.
Im folgenden wird detaillierter beschrieben, wie die Spei­ chersteuereinrichtung 422 den Snarfing-Puffer 470, den Cache- Speicherzeilenpuffer 471, die IW-Logik 472 und die Verschmel­ zungslogik 473 in der vorliegenden Erfindung verwendet. Die Datenübertragung zwischen der Speichersteuereinrichtung 422 und dem Bus und zwischen der Speichersteuereinrichtung 422 und dem Hauptspeicher 421 ist für den Fachmann klar und wird deshalb nicht weiter beschrieben.
Bei einem anderen Ausführungsbeispiel sind der Snarfing- Puffer 470, der Cache-Speicherzeilenpuffer 471, die IW-Logik 472, die Verschmelzungslogik 473 in anderen Teilnehmern auf dem Bus enthalten. Beispielsweise können die Prozessoren 402 oder 403 der Fig. 4 diese zusätzliche Logik enthalten, Daten vom Bus wegnehmen (snarfen) und sie zur Speicherung in dem internen Speicher des Teilnehmers verschmelzen. Bei einem Modus enthal­ ten die Prozessoren 402 und 403 einen temporären Speicherpuffer zum Speichern der vereinigten Datenzeile; auf diese Weise kann eine nachfolgende Anforderung nach der gleichen Datenzeile direkt von dem temporären Speicherpuffer anstelle vom Speicher erfüllt werden. Bei einem anderen Modus speichern die Teilneh­ mer die vereinigte Cache-Speicherzeile in einem L2-Cache-Spei­ cher, wie dem L2-Cache-Speicher 404 gemäß Fig. 4.
Bei einem Ausführungsbeispiel enthält der Prozessor 402 au­ ßerdem einen mit einer Cache-Steuereinrichtung 439 gekoppelten L1-Cache-Speicher 438. Bei einem Modus legt die Cache-Steuer­ einrichtung 439 Signale an den Prozessor-Speicher-Bus 401 an und empfängt Signale von dem Bus 401 über die Busschnittstelle 441. Die Cache-Steuereinrichtung 439 überprüft Anforderungen auf dem Bus 401, um festzustellen, ob der Cache-Speicher 438 eine Kopie der angeforderten Cache-Speicherzeile aufweist, indem sie den Zustand der Cache-Speicherzeile wie oben be­ schrieben überprüft. Die Cache-Steuereinrichtung 439 kann in Abhängigkeit von dem Zustand der Cache-Speicherzeile einen HIT#-Signal oder ein HITM#-Signal ausgeben, was unten näher beschrieben wird. Bei einem Modus überträgt die Cache-Steuer­ einrichtung 439 die Cache-Speicherzeile des Cache-Speichers 438 zu dem Bus 401, wenn sie ein HITM#-Signal in Antwort auf die Anforderung anlegt. Bei einem Ausführungsbeispiel gibt die Cache-Steuereinrichtung 439 die Cache-Speicherzeile über die Busschnittstelle 441 auf den Prozessor-Speicher-Bus 401. Die Signalausgabe und das Übertragen von Daten an und von dem Bus 401 durch die Cache-Steuereinrichtung 439 ist für den Fachmann klar und wird deshalb nicht weiter beschrieben.
Bei einem alternativen Ausführungsbeispiel steuert die Cache-Steuereinrichtung 439 außerdem einen mit dem Prozessor 402 gekoppelten L2-Cache-Speicher. Das Zusammenwirken von Cache-Steuereinrichtung 439 und Cache-Speicher 404 entspricht dem oben beschriebenen Zusammenwirken zwischen Cache-Speicher 438 und Cache-Steuereinrichtung 439.
Der gezeigte Prozessor 402 enthält ein weiteres Detail. Die übrigen Teilnehmer an dem Prozessor-Speicher-Bus 401 können diese zusätzliche im Prozessor 402 gezeigte Logik ebenfalls aufweisen. Bei einem Ausführungsbeispiel enthalten alle Teil­ nehmer an dem Bus, die Anforderungen ausgeben, einen Cache- Speicher 438 und eine Cache-Steuereinrichtung 439. Diese zu­ sätzliche Logik ist nicht bei allen Teilnehmern dargestellt, um die Zeichnungen nicht zu überladen.
Eine Eingabe/Ausgabe(I/O)-Brücke 424 ist mit dem Prozessor- Speicher-Bus 401 und dem System-I/O-Bus 431 gekoppelt, um einen Kommunikationspfad oder ein Gateway für Einrichtungen an entwe­ der dem Prozessor-Speicher-Bus 401 oder dem I/O-Bus 431 zur Verfügung zu stellen, um auf Daten zwischen Einrichtungen an dem anderen Bus zugreifen zu können oder diese zu übertragen. Wesentlich ist, daß die Brücke 424 eine Schnittstelle zwischen dem System-I/O-Bus 431 und dem Prozessor-Speicher-Bus 401 ist.
Der I/O-Bus 431 tauscht Informationen mit Peripheriegeräten in dem Computersystem aus. Geräte, die mit dem Systembus 431 gekoppelt sein können, sind eine Anzeigeeinrichtung 432, bei­ spielsweise eine Kathodenstrahlröhre oder eine Flüssigkri­ stallanzeige, eine alphanumerische Eingabeeinrichtung 433 einschließlich alphanumerischer und anderer Tasten zum Austau­ schen von Informationen und Befehlsauswahlen mit anderen Ein­ richtungen in dem Computersystem (z. B. mit dem Prozessor 402), und eine Cursor-Steuereinrichtung 434 zum Steuern der Cursorbe­ wegung. Ferner können mit dem Systembus 431 eine Hardcopy- Einrichtung 435, beispielsweise ein Plotter oder ein Drucker, zur visuellen Darstellung der Computerbilder und eine Massen­ speichereinrichtung 436, beispielsweise eine Magnetplatte und ein Plattenlaufwerk, zum Speichern von Informationen und Instr­ uktionen gekoppelt sein.
Bei manchen Ausführungsformen kann es nicht erforderlich sein, eine Anzeigeeinrichtung für anzuzeigende Informationen zur Verfügung zu stellen. Bestimmte Ausführungsformen der vorliegenden Erfindung können zusätzliche Prozessoren oder andere Komponenten enthalten. Außerdem können bestimmte Ausfüh­ rungsformen der vorliegenden Erfindung möglicherweise nicht sämtliche o.g. Komponenten erfordern oder enthalten. Beispiels­ weise können der Prozessor 403, die Anzeigeeinrichtung 423 oder die Massenspeichereinrichtung 425 nicht mit dem Prozessor- Speicher-Bus 401 gekoppelt sein. Außerdem können die in der Darstellung mit dem System-I/O-Bus 431 gekoppelten Peripherie­ geräte mit dem Prozessor-Speicher-Bus 401 gekoppelt sein; zusätzlich kann in einigen Ausführungsbeispielen nur ein einzi­ ger Bus existieren, wobei die Prozessoren 402 und 403, die Speichersteuereinrichtung 422 und die Peripheriegeräte 432 bis 436 mit dem einen Bus gekoppelt sind.
Verschiedene Phasen von unterschiedlichen Transaktionen können sich überlappen, wobei eine Pipeline der Busverwendung entsteht und die Busleistung verbessert wird. Fig. 5 zeigt beispielsweise überlappte Anforderungs/Antwortphasen für zwei Transaktionen. Es wird auf Fig. 5 Bezug genommen. Jede Transak­ tion beginnt mit einer Zuteilungsentscheidungsphase, in der ein anfordernder Teilnehmer Busbesitzer wird. Die zweite Phase ist die Anforderungsphase, in der der Busbesitzer Anforderungs- und Adreßinformationen auf den Bus gibt. Die dritte Phase der Transaktion ist eine Fehlerphase, drei Takte nach der Anforde­ rungsphase. Die Fehlerphase zeigt alle sofort von der Anforde­ rung ausgelösten Fehler an. Die vierte Phase einer Transaktion ist eine Snoop- bzw. Überwachungsphase, vier oder mehr Takte nach der Anforderungsphase. Die Snoop-Phase zeigt an, ob die bei einer Transaktion zugegriffene Cache-Speicherzeile in dem Cache-Speicher irgendeines Teilnehmers gültig oder modifiziert (oder "dirty") vorliegt.
Die Antwortphase zeigt an, ob die Transaktion fehlgeschla­ gen oder erfolgreich ist, ob die Antwort unmittelbar oder verzögert ist und ob die Transaktion Datenphasen enthält. Wenn eine Transaktion eine von der Antwortphase ausgelöste Daten­ phase enthält, dann beginnt sie mit der Datenübertragung mit der Antwortphase.
Die Verwendung eines Pipeline-Systems kann verschiedene Probleme mit sich bringen. Im Beispiel gemäß Fig. 5 wird bei­ spielsweise das Anforderungssignal 1 im Takt T1 und das Anfor­ derungssignal 2 im Takt T4 gesendet. Wenn die Anforderungen 1 und 2 Anforderungen für die gleiche Adresse sind, muß das System die Cache-Speicherkonsistenz aufrechterhalten, um beide Anforderungen 1 und 2 richtig auszuführen.
Die Festlegung eines globalen Überwachungstaktes löst die­ ses Problem. Das heißt, es wird ein Taktzyklus festgelegt, in dem das gesamte System als die Transaktion überwachend angese­ hen wird. Bei einem Ausführungsbeispiel ist dieser globale Überwachungstakt in der Snoop-Phase. Auf diese Weise behandelt jeder Teilnehmer vor der Snoop-Phase einer bestimmten Transak­ tion diese Transaktion so, als ob sie noch nie stattgefunden hätte. Dies geschieht, obwohl der anfordernde Teilnehmer eine Anforderung auf den Bus getrieben hat. Nach der Snoop-Phase jedoch behandelt jeder Teilnehmer die Anforderung so, als ob sie stattgefunden hätte.
Der globale Überwachungstakt ist in der Snoop-Phase, da je­ der Teilnehmer das Schicksal der Transaktion in der Snoop-Phase kennt. Das heißt, es ist bekannt, ob ein Teilnehmer eine der Anforderung entsprechende modifizierte Cache-Speicherzeile aufweist, und die Teilnehmer wissen, ob sie den Zustand ihrer eigenen Cache-Speicherzeile aktualisieren müssen. Auf diese Weise sind der Teilnehmer bzw. die Teilnehmer bekannt, die von der Antwort an den anfordernden Teilnehmer betroffen sind.
Es ist anzumerken, daß unter gewissen Umständen eine be­ stimmte Transaktion möglicherweise nicht bei der Snoop-Phase für diese Transaktion global überwacht wird. Bei Systemen, die eine Mehrbus-Hierarchie verwenden, wird die derzeitige Transak­ tion beispielsweise global überwacht, wenn der Besitz der angeforderten Cache-Speicherzeile in der Busgruppe des die Anforderung herausgebenden Prozessors erfüllt werden kann (unabhängig davon, ob sie in einem modifizierten oder geteilten Zustand ist). Jedoch kann die Situation auftreten, daß die Cache-Speicherzeile nicht innerhalb der Busgruppe in Besitz ist und entweder in einer anderen Gruppe oder im Systemspeicher ist, der über den Gruppen-Manager der derzeitigen Gruppe er­ reicht wird. In einem solchen Fall ist der Gruppen-Manager für das Erlangen des Besitzes der Cache-Speicherzeile verantwort­ lich. Drei verschiedene Szenarien gibt es in einem solchen Fall.
Bei dem ersten Szenarium ist der Besitz des Systembusses der nächsten Ebene unmittelbar verfügbar. Infolgedessen kann der Besitz der Cache-Speicherzeile von der Snoop-Phase der derzeitigen Transaktion garantiert werden. Auf diese Weise wird die Transaktion, wie oben beschrieben, in der Snoop-Phase der derzeitigen Transaktion global überwacht. Bei einem zweiten Szenarium ist der Besitz des Systembusses der nächsten Ebene nicht unmittelbar verfügbar, kann aber dennoch zu einer späte­ ren Zeit erlangt werden. Ferner kann die Cache-Speicherzeile an den anfordernden Prozessor zurückgegeben werden. Bei diesem Moment verzögert der Gruppen-Manager die globale Überwachung der Transaktion. Wenn schließlich der Besitz des Systembusses der nächsten Ebene erlangt ist, gibt der Gruppen-Manager den Besitz der Cache-Speicherzeilen mit einer verzögerten Antwort zurück. Während der Snoop-Phase der verzögerten Antwort wird die Transaktion global überwacht. Schließlich könnte der Besitz des Systembusses der nächsten Ebene nicht möglich sein, um ein gegenseitiges Sperren zu vermeiden. Folglich wird die Transak­ tion abgebrochen und ein weiteres Mal erneut versucht. Die Transaktion wird solange nicht global überwacht, bis die wie­ derholte Transaktion erfolgreich beendet wurde. Die erneut versuchte Transaktion wird während des Wiederholens global überwacht auf der Basis des Falles, unter den sie fällt.
Die Zustände der zugehörigen Cache-Speicherzeilen werden während der Snoop-Phase aktualisiert, um den globalen Überwa­ chungstakt zu unterstützen. D.h., die Cache-Speicherzeilenzu­ stände werden in dem globalen Überwachungstakt aktualisiert, um das richtige Systemverhalten sicherzustellen. Wenn in dem Beispiel gemäß Fig. 5 die Anforderungen 1 und 2 beides Lesean­ forderungen zu der gleichen Cache-Speicherzeile sind, werden die Cache-Speicherzeilenzustände, die infolge der Anforderung 1 aktualisiert werden müssen, vor der Snoop-Phase für die Anfor­ derung 2 aktualisiert. Andernfalls können der oder die Teilneh­ mer nicht die notwendigen HIT#- oder HITM#-Signale für die Anforderung 2 anlegen.
Die Snoop-Phase für Anforderung 1 der Fig. 5 beginnt bei­ spielsweise im Takt 7. Im Takt 7 legen alle Teilnehmer an den Bus HIT#- und HITM#-Signale an oder nehmen diese zurück, in Abhängigkeit von dem Zustand der angeforderten Cache-Speicher­ zeile in ihren Cache-Speichern. Diese Signale werden von allen Teilnehmern an dem Bus in dem nächsten Takt, Takt 8, überwacht. Bei einem Ausführungsbeispiel aktualisiert jeder Teilnehmer an dem Bus seinen Cache-Speicherzustand im Takt 7, wobei er gleichzeitig die HIT#- und HITM#-Signale anlegt oder zurück­ nimmt. Auf diese Weise hat jeder Teilnehmer bis zum Takt 8 seinen Snoop-Zustand aktualisiert. In dem in Fig. 2 gezeigten Beispiel beginnt die Snoop-Phase für Anforderung 2 im Takt 10. Auf diese Weise legt jeder Teilnehmer die richtigen HIT#- und HITM#-Signale in der Snoop-Phase für die Anforderung 2 an oder nimmt diese zurück, selbst wenn die Anforderung 2 eine Anforde­ rung für die gleiche Cache-Speicherzeile wie Anforderung 1 ist, da der Zustand des Cache-Speichers jedes Teilnehmers bis zum Takt 8 aktualisiert ist.
Bei einem anderen Ausführungsbeispiel aktualisiert jeder Teilnehmer seinen Cache-Speicherzustand im Takt 8 oder im Takt 9 bei der Beobachtung der Snoop-HIT#- und/oder -HITM#-Signale im Takt 8. Bei dem in Fig. 5 dargestellten Beispiel wird die Cache-Speicherkonsistenz aufrechterhalten, wenn die Cache- Speicherzustände vor der Snoop-Phase für Anforderung 2 aktuali­ siert werden.
Auf diese Weise wahrt die Aktualisierung der Cache-Spei­ cherzustände im Takt 8 oder im Takt 9 die Speicherkonsistenz.
Fig. 6 ist ein Blockschaltbild des Speichersubsystems des Prozessors P₀ bei einem Ausführungsbeispiel des erfindungsgemä­ ßen Computersystems. Es ist klar, daß andere Subsystemarchitek­ turen zur Implementierung der vorliegenden Erfindung verwendet werden können. Während der Ausführung eines Programms in dem Prozessor P₀ wird zunächst eine Instruktion herangeholt und dann in eine oder mehrere primitive Operationen decodiert. Diese primitiven Operationen (Mikrobefehle oder "Mikro-ops") laufen dann durch die Maschine - möglicherweise werden sie untereinander außer der Reihe bzw. ungeordnet ausgeführt - bis sie schließlich ausgeschieden werden. Die Verarbeitung des Prozessors P₀ ist auf diese Weise am besten als Serie von Prozessen zu verstehen, die Mikrobefehle enthalten, die von einem Satz von verschiedenen Makrobefehlen abgeleitet sind und die über einen Satz von Puffern kommunizieren.
Die Ausführung eines Programms mit dem Prozessor P₀ beginnt mit dem Heranholen der Instruktionen von dem Speicher und dem Eingeben der herangeholten Instruktionen in einen Puffer oder eine Warteschlange. Danach werden die Instruktionen in einen Satz von primitiven Mikrobefehlen konvertiert. Ein separater Zuweisungsprozeß bestimmt, zu welchen der vielen physikalischen Register Ergebnisse der Mikrobefehle gesteuert werden sollen. Wenn die Ressourcen zugewiesen sind, werden die zugehörigen Operanden herangeholt und bereitgestellt, indem sie in eine Reservierungsstation (RS) gegeben werden. Die Reservierungssta­ tion ist ein Puffer, der die noch nicht ausgeführten Mikrobe­ fehle enthält. Wenn Daten für eine gegebene Instruktion bereit sind, fertigt die RS die Instruktion zu einer von mehreren Ausführungseinheiten entsprechend den Datenabhängigkeiten und der Verfügbarkeit von Ausführungseinheiten ab. Wenn die Ausfüh­ rungseinheit die angeforderte Operation ausführt, wird eine Rückschreiboperation zu der Reservierungsstation ausgeführt.
Die Außer-der-Reihe-Maschine des Prozessors P₀ enthält au­ ßerdem einen Umordnungspuffer (ROB - re-order buffer). Dies ist eine Funktionseinheit, in der spekulative Ergebnisse gesammelt, erneut geordnet und dann ausgeschieden werden. Das Ausscheiden ist der aktive Prozeß, einen beendeten Mikrobefehl aus dem Umordnungspuffer zu entfernen und seinen Zustand als solchen permanenten Architekturzustand festzulegen, der von dem ur­ sprünglichen Quellprogramm zugewiesen wurde.
Es wird weiter auf Fig. 6 Bezug genommen. Das Speicher­ subsystem empfängt Zuteilungsoperationen (meistens Speicher- Leseoperationen und Speicher-Schreiboperationen) von dem Außer­ der-Reihe- (O-O-O bzw. out-of-order) Abfertigungskern 621. Der Abfertigungskern 621 enthält die Reservierungsstation und den Umordnungspuffer des Prozessors. Das Speichersubsystem empfängt Zuteilungsoperationen von der Reservierungsstation und gibt Daten- und Fehlerinformation zu der RS und dem ROB zurück. Wenn das Speichersubsystem einen Speicher-Lese-Mikrobefehl (d. h. einen Lade-Mikrobefehl) empfängt, gibt es eine Anforderung zum Lesen von Daten vom externen Speicher 612 an den Bus 611 aus. Wenn das Subsystem einen Speicher-Schreib-Mikrobefehl (d. h. einen Speicher-Mikrobefehl) empfängt, kann es Daten zu dem externen Speicher 612, einem I/O-Peripheriegerät oder zu einem anderen mit dem Systembus 611 gekoppelten Teilnehmer zurück­ schreiben. Da die Reservierungsstation des Kerns 621 auf der Basis von Datenflußabhängigkeiten arbeitet, muß das Speicher­ subsystem des Prozessors P₀ Fehler der Speicherordnung fest­ stellen.
Das Speichersubsystem der Fig. 6 enthält eine Daten-Cache- Speichereinheit (DCU) 637 mit einer 8K-Zweiwege-satzassoziati­ ven Matrix mit einer Cache-Zeilenlänge von 32 Bytes bei dem gewählten Ausführungsbeispiel. Die DCU 637 ist in vier Daten­ bänke aufgeteilt. Das erlaubt zwei Zugriffe (eine Ladeopera­ tion, eine Speicheroperation) gleichzeitig, wenn sie auf zwei separaten Bänken stattfinden. Die DCU 637 sorgt für eine 2- Zyklus-Zugriffszeit auf die Lade- und Speicheroperationen, die in dem Cache-Speicher einen Treffer erzielen. Darüberhinaus ist der DCU ein nicht-blockierender Cache, was bedeutet, daß er eingehende Zugriffsoperationen verarbeiten kann, während er unter Verwendung des externen Busses 611 (über die externe Busschnittstelle 640) Cache-Speicher-Fehlversuche weiterverar­ beitet. Die Daten-Cache-Speichereinheit 637 enthält vier Füll­ puffer, die jeweils 256-Bits groß sind und die zum Speichern ausstehender Cache-Speicherzugriffe verwendet werden. Die DCU 637 blockiert Cache-Speicher-Fehlzugriffe nur, wenn alle Füll­ puffer belegt sind. Die DCU 637 verwendet ein Modifi­ ziert/Exklusiv/Geteilt/Ungültig(MESI)-Protokoll zur Unterstüt­ zung der Cache-Speicher-Kohärenz für Mehrprozessor-Computersy­ steme.
Das Speichersubsystem des Prozessors P₀ weist außerdem ei­ nen Datenübersetzungs-Nachschlage-Puffer (DTLB) 628 auf, der für Speicherzugriffe lineare Adressen in physikalische Adressen übersetzt. Der DTLB 628 führt eine Nachschlageoperation in einer Cache-Speichermatrix aus, die die Abbildung vom linearen zum physikalischen Adreßraum enthält. Der DTLB 628 speichert außerdem Cache-Speicherbereichsinformationen mit jeder physika­ lischen Adresse und kann zwei Adreßübersetzungen in jedem Taktzyklus ausführen.
Bei dem ausgewählten Ausführungsbeispiel enthält der DTLB 628 eine kleine Seitenmatrix und eine große Seitenmatrix. Die kleine Matrix enthält Matrixadreßinformationen für 4-KB-Seiten­ größen und 64 Einträge. Die große Seitenmatrix enthält Adreßin­ formationen für 2-MB- und 4-MB-Seitengrößen und enthält 8 Einträge. Beide Matrizen sind 4-Wege-satzassoziative Cache- Speicher. Der DTLB 628 überprüft die Speicherzugriffe auch auf Schutzberechtigungen, Ausnahmen, Traps, Datenunterbrechungs­ punkte usw. Wenn der Übersetzungspuffer eine Ausnahme irgendei­ ner Art erfaßt, gibt er Fehlerinformationen an den Umordnungs­ puffer des Abfertigungskerns zurück und weist den Rest des Subsystems an, den Zugriff abzubrechen.
Das Speichersubsystem der Fig. 6 enthält außerdem einen Speicherordnungspuffer (MOB-memory order buffer), der das Abfertigen in dem Speichersubsystem steuert. In Fig. 6 ist der Speicherordnungspuffer als einen Ladeoperationspuffer 630 und einen Speicheroperationspuffer 631 enthaltend dargestellt. Diese Puffer handhaben alle Lade- und Speicheroperationen und verfolgen die Verarbeitung dieser Operationen beim Durchlauf durch den Prozessor. Wenn eine Operation abgefertigt ist und aufgrund eines Adreß- oder Ressourcenkonfliktes nicht beendet werden kann, blockiert der MOB die Operation und speichert die Abhängigkeitsinformationen. Der Ladeoperationspuffer 630 ent­ hält 16 Einträge, während der Speicheroperationspuffer 631 12 Einträge enthält. Die Einträge dies Ladeoperationspuffers 630 und des Speicheroperationspuffers 631 werden als Mikrobefehle zugewiesen und werden in den ROB des Außer-der-Reihe-Abferti­ gungskerns 621 ausgegeben.
Der Speicherordnungspuffer dient als eine Art Reservie­ rungsstation zweiter Ordnung. Der MOB fertigt blockierte Opera­ tionen erneut ab, wenn die Blockierungsquelle entfernt ist. Einige Speicheroperationen können nicht spekulativ ausgeführt werden, so daß der MOB den Ausscheidungsprozeß überwacht und nicht-spekulative Operationen zur richtigen Zeit abfertigt. Der Speicherordnungspuffer fertigt außerdem Speicherschreibopera­ tionen (d. h. Speicheroperationen) zum Daten-Cache-Speicher 637 ab.
Zur Veranschaulichung zeigt Fig. 6, wie der Kern 671 eine Speicheroperation abfertigt, die in zwei Mikrobefehle decodiert wird: einen Adreßspeicher-Mikrobefehl (STA) und eine Datenspei­ cheroperation (STD), dargestellt durch die Blöcke 624 bzw. 625. Vom Kern 621 abgefertigte Lade-Mikrobefehle sind in Fig. 6 durch den Block 623 dargestellt.
Alle von der Reservierungsstation abgefertigten Mikrobe­ fehle werden von dem Ladeoperations- und vom Speicheroperati­ onspuffer verfolgt. Die Speichere-Daten-Mikrobefehle werden beispielsweise direkt in den Speicherpuffer 631 eingegeben, während die Speichere-Adresse- und Lade-Daten-Mikrobefehle von der DTLB 628 in ihre physikalischen Adresse übersetzt werden. Physikalische Adressen für die Lade-Daten- und Speichere- Adresse-Mikrobefehle sind in Fig. 6 durch die Blöcke 634 bzw. 635 dargestellt. Speichere-Adresse-Mikrobefehle werden in den Speicheroperationspuffer 631 eingegeben, während Lade-Daten- Mikrobefehle an den Ladeoperationspuffern und die Daten-Cache- Speichereinheit 637 gesendet werden.
Die Daten-Cache-Speichereinheit 637 liefert, wie bereits oben beschrieben, die zugehörigen physikalischen Daten dem Abfertigungskern 621 zurück oder gibt einen Speicherzugriff zum Hauptspeicher über die externe Busschnittstelle 640 und den Systembus 611 aus. Wenn sowohl der Speichere-Adresse- als auch der Speichere-Daten-Mikrobefehl zugeteilt und nicht länger spekulativ sind, kombiniert der Speicherordnungspuffer des Speichersubsystems diese und teilt diese als Speicheroperation der DCU 637, wie durch den Block 641 gezeigt. In manchen Fällen werden Speicheroperationen auch nach dem Ausscheiden zwischen­ gespeichert, wenn sie keine Abhängigkeit mit anderen Operatio­ nen erzeugen.
Wichtig ist, daß Speicheroperationen nicht spekulativ oder ungeordnet ausgeführt werden können, da es keine Möglichkeit gibt, eine Schreiboperation, die nicht ausgeführt werden soll­ te, rückgängig zu machen. Das Speichern von Adressen und die Berechnung von Speicherdaten kann jedoch spekulativ und unge­ ordnet ausgeführt werden, um die Prozessorleistung zu erhöhen.
Wie oben ausgeführt, werden Speicheroperationen in zwei Mi­ krobefehle aufgeteilt: Einen Speichere-Adresse (STA)-Mikrobefehl und einen Speichere-Daten (STD)-Mikrobefehl. Der STA-Mikrobefehl ist durch den Block 624 dargestellt und ist eine Adreßberech­ nung und -übersetzung. Der STD-Mikrobefehl ist durch den Block 625 dargestellt und enthält eine Datenkonvertierungsoperation. Diese beiden Operationen schreiben ihre Daten in den Speiche­ roperationspuffer 631, der physikalisch in drei Einheiten aufgeteilt ist. Der Speicherordnungspuffer enthält lineare Adreß-, Status- und Mikrobefehlsinformationen. Die DCU 637 enthält die derzeitigen physikalischen Adressen.
Bei einem Ausführungsbeispiel enthält der Speicheroperati­ onspuffer 631 12 Einträge und speichert bis zu 12 Speicherope­ rationen. Der Speicherpuffer 631 wird verwendet, um alle Spei­ cheroperationen in die Warteschlange einzureihen, bevor sie zum Speicher abgefertigt werden. Der Puffer 631 überprüft außerdem alle Ladeoperationen auf Speicheradreßkonflikte. Diese Überprü­ fung sorgt dafür, daß die Ladeoperationen konsistent mit den vorher ausgeführten Speicheroperationen sind, die noch in dem Speicheroperationspuffer bleiben.
Der Ladeoperationspuffer 630 enthält 16 Puffereinträge und speichert bis zu 16 Ladeoperationen. Der Ladepuffer wird ver­ wendet, um Ladeoperationen in die Warteschlange einzureihen. Alle Ladeoperationen laufen in den Ladeoperationspuffer und können auf diese Weise überwacht werden (snooped); von dort werden sie erneut abgefertigt. Die Warteschlangenoperationen werden dann erneut vom Ladeoperationspuffer 630 abgefertigt, wenn der Konflikt beseitigt wurde. Die Prozessorordnung wird für Ladeoperationen aufrechtgehalten, indem externe Schreibope­ rationen auf beendete Ladeoperationen überwacht werden (snooped). Gemäß der Erfindung veranlaßt eine Schreiboperation eines Teilnehmers zu einer spekulativen Lese-Speicherstelle, die Außer-der-Reihe-Maschine zum Löschen und Neustarten der Ladeoperation. Dieser Aspekt der Erfindung wird im folgenden detaillierter beschrieben.
In dem Speichersubsystem werden Ressourcen zugewiesen, wenn eine Speicher- oder Ladeoperation in die Reservierungsstation eingegeben wird. Die Puffer 630 und 631 empfangen die spekula­ tiven Lade- und Speichere-Adresse-Operationen von der Reservie­ rungsstation in dem Abfertigungskern 621. Eine Ladeoperation wird in zwei Mikrobefehle decodiert, während eine Speicherope­ ration in Speichere-Daten und Speichere-Adresse-Mikrobefehle decodiert wird. Zu der Zuweisungszeit wird die Operation mit ihrem möglichen Platz in dem Puffer 630 oder 631 gekennzeichnet (tagged). Die Reservierungsstation liefert den Befehlscode, während die Adreßerzeugungseinheit des Prozessors die lineare Adresse für einen Zugriff berechnet und zur Verfügung stellt. Diese Operationen werden entweder unmittelbar ausgeführt, oder sie werden in den Speicherordnungspuffer zur späteren Abferti­ gung geschrieben. In dem Fall einer Ladeoperation wird es von der Daten-Cache-Speichereinheit 637 erwartet, die Daten zum Kern 621 zurückzugeben. Parallel werden Adreß- und Statusbits in den Ladeoperationspuffer geschrieben, um die Beendigung der Operation zu signalisieren.
Bei dem erfindungsgemäßen Computersystem wird eine strenge Ordnung von dem Prozessor P₀ emuliert, selbst wenn es eine inhärent schwach-geordnete Maschine ist. Das heißt, P₀ ist ein Prozessor, der in der Lage ist, Instruktionen außer der Reihe auszuführen; P₀ ermöglicht es, Ladeoperationen an Ladeoperatio­ nen vorbeizulassen, trotzdem repräsentiert er das Architektur­ modell der strengen Ordnung (d. h. kein Durchlassen) durch das spekulative Prozessorordnen. Alle beendeten und nicht ausge­ schiedenen Ladeoperationen überwachen (snoop) den externen Bus 11 nach externen Speicheroperationen (d. h. Schreiboperationen) Wenn eine externe Schreiboperationsadresse mit einer nicht ausgeschiedenen Ladeoperationsadresse übereinstimmt, dann wird mit einem Flag ein Prozessorordnungsfehler angezeigt. Anstatt die mit einem Flag gekennzeichnete Ladeoperation auszuscheiden, wie es normalerweise üblich wäre, wird die Ladeoperation zusam­ men mit allen nachfolgenden Mikrobefehlen abgebrochen. Der Prozessor startet dann das Neu-Ausgeben der Mikrobefehle, wobei er mit der abgebrochenen Ladeoperation beginnt.
Bei dem derzeitigen Ausführungsbeispiel der Erfindung ist diese Schrittsequenz als RONuke-Operation (re-order nu­ ke) bekannt. Bei einer RONuke-Operation wird die Ladeoperation abgebrochen; die spekulative Verarbeitung des Computersystems wird abgebrochen, und der Prozessor beginnt erneut mit der Ausführung bei der abgebrochenen Ladeoperation.
Eine andere Betrachtungsweise des Problems, das zwischen Prozessoren eines Mehrprozessorsystems auftreten kann, ist die folgende: Wenn Ladeoperationen außer-der-Reihe ausgeführt werden, können sie die Speicheroperationen von einem anderen Prozessor tatsächlich ungeordnet erscheinen lassen. Dies ergibt sich, wenn eine spätere Lade-Operation eine frühere Ladeopera­ tion durchläßt, die noch nicht ausgeführt wurde. Die spätere Ladeoperation liest alte Daten, während die frühere Ladeopera­ tion, wenn sie ausgeführt ist, die Möglichkeit hat, neue, von einem anderen Prozessor geschriebene Daten zu lesen. Diese Ladeoperationen würden die Prozessorordnungsregeln verletzen, wenn es ihnen erlaubt wäre, den Architekturzustand festzulegen. Um dies zu verhindern, überwacht (snoops) der Ladeoperati­ onspuffer 630 alle Daten-Schreiboperationen auf dem externen Bus 611. Das ist in Fig. 6 durch die Snoop-Leitung veranschau­ licht, die den Ladeoperationspuffer 630 über die Busschnitt­ stelleneinheit 640 mit dem externen Bus 611 koppelt. Wenn irgendein Prozessor zu einer Stelle schreibt, die spekulativ gelesen werden, werden die Ladeoperation und nachfolgende Operationen gelöscht und zur Gewinnung der richtigen Daten erneut ausgeführt.
Es sei angenommen, daß der Prozessor #1 ein strenges Spei­ cherordnungsmodell aufweist, d. h. annimmt, daß Speicheropera­ tionen in der ursprünglichen Programmreihenfolge auftreten. Es sei ferner angenommen, daß der Prozessor #2 ein außer der Reihe verarbeitender Prozessor ist, z. B. Prozessor P₀. Wenn der Prozessor #2 bereit ist, die erste Ladeoperation zur Speicher­ stelle 5 auszuführen, wird der externe Bus 611 vom Ladepuffer 630 überwacht, um festzustellen, ob die Gefahr besteht, die strenge Ordnung zu verletzen. Wenn die Ladeoperation zur Spei­ cherstelle 5 zur Ausführung ansteht und eine Speicheroperation auf dem externen Bus 611 zur Speicherstelle 5 vorliegt, läuft der Prozessor #2 Gefahr, die strenge Ordnung zu verletzen. Gemäß der Erfindung unternimmt der Prozessor #2 eine berichti­ gende Aktion, um das natürlich schwache Ordnungsmodell zu vermeiden, das normalerweise herauskommen würde. Der Prozessor #2 erledigt dies, indem er zunächst die spekulativen Zustände der Maschine beseitigt und dann beginnend mit der abgebrochenen Ladeoperation erneut ausführt.
Es sei daran erinnert, daß der Ladeoperationspuffer 630 in dem Speichersubsystem alle ausstehenden Ladeoperationen für den Prozessor zu jeder gegebenen Zeit verfolgt. Wenn eine Ladeope­ ration auftritt - oder in Zukunft auftreten wird - liegt die Adresse in dem Ladeoperationspuffer 630 vor. Der Prozessor P₀ überwacht den Bus 11 hinsichtlich Speicheroperationen von anderen Teilnehmern, indem er diese Adressen überwacht (snoops). Wenn eine Adresse mit einer im Ladeoperationspuffer 630 zur Ausführung anstehenden Adresse übereinstimmt, dann besteht die mögliche Gefahr für das Verletzen der strengen Ordnung. Der Ladepuffer 630 überwacht den externen Bus 611 und sucht nach Speicheroperationen auf dem Bus, die mit der in dem Puffer 630 vorliegenden Adresse übereinstimmen. Wenn der ge­ kennzeichnete (tagged) (Snoop-Treffer) Ladeoperationseintrag des Ladeoperationspuffers ggf. versucht ausgeschieden zu wer­ den, wird der Maschinenzustand zunächst zerstört. Der Prozessor gibt dann beginnend mit der abgebrochenen Ladeoperation die Instruktionen erneut aus.
In Fig. 7 ist ein Blockschaltbild gezeigt, in dem ein er­ findungsgemäßer Prozessor 700 dargestellt ist. Der Prozessor 700 weist eine Ausführungseinheit 701, eine Bus-Steuereinrich­ tung 702, eine Daten-Cache-Speicher-Steuereinrichtung 703, einen Daten-Cache-Speicher 704 und eine Instruktionsheranhol- und -ausgabeeinheit 705 mit einem integrierten Instruktions- Cache-Speicher 706 auf. Die Elemente 701 bis 706 sind in der dargestellten Weise miteinander gekoppelt. Sie kooperieren miteinander, um in einer Pipeline Instruktionen heranzuholen, auszugeben und auszuführen und Ergebnisse zu sichern.
Die Instruktionsheranhol- und -ausgabeeinheit 705 holt die Instruktionen von einem externen Speicher über die Bus-Steuer­ einrichtung 702 und einen externen Systembus heran. Die Bus- Steuereinrichtung 702 koordiniert die Datenübertragung zwischen den externen Komponenten und dem Prozessor 700. Außerdem koor­ diniert die Bus-Steuereinrichtung 702 Cache-Speicher-Kohärenz­ übertragungen. Die Instruktions-Heranhol- und -ausgabeeinheit 705 gibt diese Instruktionen dann in einer geordneten Sequenz an die Ausführungseinheit 701 aus. Im wesentlichen führt die Ausführungseinheit 701 solche Funktionen wie Addieren, Subtra­ hieren, logische UND-Operationen und Integer-Multiplikationen aus. Einige dieser Instruktionen werden spekulativ herangeholt und abgefertigt. Die Ausführungseinheit 701 hält diese Integer- und Gleitkomma-Instruktionen und führt diese aus, wenn ihre Operandenabhängigkeiten von Ausführungsergebnissen von vorange­ gangenen Instruktionen gelöst sind. In ähnlicher Weise hält die Ausführungseinheit 701 Lade- und Speicherinstruktionen und sendet sie an den Speicherordnungspuffer 708.
Die Ausscheidelogik 707 schreibt die Zustände dieser Instr­ uktionen in demjenigen permanenten Architekturstand fest, der von dem ursprünglichen Quellcode bestimmt war. In dem Speicher­ ordnungspuffer 708 werden Lade- und Speicheroperationen auf Speicherordnungseffekte überprüft. Speicher- und/oder Ladeope­ rationen werden, ggf. aufgeschoben, bis Ordnungsinkonsistenten gelöst sind.
Der Speicherordnungspuffer 708 weist einen Speicheroperati­ onspuffer 709 und einen Ladeoperationspuffer 710 auf. Der Speicheroperationspuffer 709 hat eine First-in-First-out(FIFO)- Struktur zum Speichern von Adreß-, Größen-, Daten- und anderen Schlüsselattributen. Der obere Zeiger der Struktur zeigt auf die als letztes ausgeschiedene Speicheroperation. Die unterste Speicheroperation des Speicheroperationspuffers 709 (d. h. die am längsten ausgeschiedene Speicheroperation) ist diejenige, die zum Schreiben in ein Speichersubsystem, beispielsweise den Daten-Cache-Speicher 704, bereit ist. Der Speicheroperati­ onspuffer 708 ist nur für den Prozessorkern (z. B. Ausführungs­ einheit 701 und Instruktionsheranhol- und -ausgabeeinheit 705) sichtbar. Externe Überwachungsoperationen (snoops) erkennen das Vorhandensein der Speicheroperation nicht.
Der Ladeoperationspuffer 710 ist ein Arbeitspuffer, der von dem Speichersubsystem verwendet wird, um die Zugriffsordnung von Speicherladeoperationen durchzuführen. Jede Ladeoperation wird mit dem Speicheroperation-Puffer-ID (SBID) von der voran­ gegangenen Speicheroperation gekennzeichnet. Dieser SBID stellt die relative Stelle der Ladeoperation im Vergleich zu allen Speicheroperationen in der Ausführungssequenz dar. Wenn die Ladeoperation im Speicher ausgeführt wird, wird ihre SBID als Anfangspunkt zur Abgrenzung der Ladeoperation gegen alle älte­ ren Ladeoperationen in dem Puffer verwendet.
Wenn die Ladeoperationen ungeordnet ausgeführt werden, könnten diese Ladeoperationen dazu führen, daß die Ladeopera­ tionen von anderen Prozessoren ungeordnet erscheinen. Diese Situation könnte auftreten, wenn eine jüngere Ladeoperation eine noch nicht ausgeführte, ältere Ladeoperation durchlassen würde (z. B. Leseoperation R₂ wird vor einer früheren Leseopera­ tion R₁ ausgeführt). Diese jüngere Ladeoperation liest alte Daten, während die ältere Ladeoperation neue, von einem anderen Prozessor geschriebene Daten lesen könnte. Diese Ladeoperatio­ nen würden die Prozessorordnung verletzen, wenn ihr Zustand festgeschrieben werden könnte. Die Erfindung verhindert diese Verletzung, indem sie den Ladeoperationspuffer 709 verwendet, um alle Daten-Schreiboperationen von anderen Teilnehmern am Bus 712 zu überwachen (snoop). Der Begriff snooping bezieht sich auf die Tätigkeit des Überwachens des Daten- und Adreßverkehrs in Hinsicht auf bestimmte Werte. Wenn ein anderer Prozessor zu einer Stelle schreibt, die spekulativ gelesen wurde, werden die Ladeoperation und nachfolgende Operationen gelöscht und erneut ausgeführt, um die richtigen Daten abzurufen (z. B. die Prozes­ sorordnung wiederherzustellen).
Die Daten-Cache-Speicher-Steuereinrichtung 703 steuert den Datenzugriff auf den Daten-Cache-Speicher 704. Der Daten-Cache- Speicher 704 ist ein schneller, kleiner, in der Hardware ent­ haltener Arbeitspufferspeicher, der von Lade- und Speicherope­ rationen in weniger Taktzyklen erreicht werden kann als der Hauptspeicher. Die Daten-Cache-Speicher-Steuereinrichtung 703 und der Daten-Cache-Speicher 704 antworten unmittelbar auf die Ladeinstruktionen, indem sie, gegebenenfalls Daten senden. Dagegen werden Speicherinstruktionen zwischengespeichert. Anders gesagt, werden Instruktionen nicht notwendigerweise in der Ordnung ausgeführt/gesendet, in der sie ausgegeben wurden. Außerdem werden einige Instruktionen spekulativ ausge­ führt/gesendet. Auf jeden Fall werden die Ausführungsergebnisse der Integer-, Gleitkomma-, und Ladeinstruktionen zwischenge­ speichert und dann ausgeschieden oder geordnet festgeschrieben. Im Vergleich dazu werden die zwischengespeicherten Speicherins­ truktionen ausgeschieden oder geordnet festgeschrieben und danach im "Hintergrund" abgefertigt, wie es dem Speichersystem paßt. Spekulative Integer-, Gleitkomma- und Lade-Ausführungser­ gebnisse und zwischengespeicherte Speicheroperationen von falsch vorhergesagten Verzweigungen werden gelöscht.
Die Instruktionsheranhol- und -ausführungseinheit 705 steht stellvertretend für eine breite Kategorie von Intruktions- Heranhol- und Ausgabeelementen, die in vielen Computersystemen zu finden sind. Deren Aufbau und Funktionen sind bekannt. Bei dem bevorzugten Ausführungsbeispiel enthält die Instruktions- Heranhol- und Ausgabeeinheit 705 einen Instruktions-Cache- Speicher 706. Der Instruktions-Cache-Speicher 706 ist ein schneller lokaler Speicher, der die auszuführenden Instru­ ktionen hält. Wenn ein Programm versucht, auf eine Instruktion zuzugreifen, die nicht mehr oder nicht länger in dem Cache- Speicher ist, wartet der Prozessor solange, bis die Hardware die gewünschten Instruktionen von einem anderen Cache-Speicher oder einem untergeordneten Speicher heranholt. Es ist die Aufgabe der Instruktions-Heranhol- und -Ausgabeeinheit 705, zu entscheiden, auf welchen Instruktions-Cache-Speichereintrag zum Erreichen einer maximalen Programmleistung als nächstes zuge­ griffen werden soll. Bei dem bevorzugten Ausführungsbeispiel ist der Instruktions-Cache-Speicher 706 und der Daten-Cache- Speicher 704 in einer Speicherhierarchie angeordnet.
Fig. 8 zeigt den Prozessor 822. Der Prozessor 822 weist ei­ nen Front-End-Bereich auf, der eine Busschnittstellenschaltung 830 und eine Instruktions-Heranhol- und Mikrobefehlsausgabe­ schaltung 832 enthält. Der Prozessor 822 weist außerdem einen Registerumbenennungsbereich mit einer Register-Alias-Schaltung 834 und einer Zuweiserschaltung 836 auf. Der Prozessor 822 weist außerdem einen Bereich zur Außer-der-Reihe-Ausführung auf, der eine Reservierungs- und Abfertigungsschaltung 838, eine Ausführungsschaltung 840, eine Umordnungsschaltung 842 und eine Real-Register-Schaltung 844 aufweist.
Die Busschnittstellenschaltung 830 gibt die Übertragung von Adreß-, Daten- und Steuerinformationen über den Mehrprozessor­ bus 828 frei. Die Instruktionsheranhol- und Mikrobefehlsausga­ beschaltung 832 holt einen Strom von Makroinstruktionen von dem Speichersubsystem 826 über den Mehrprozessorbus 828 und die Busschnittstellenschaltung 830. Die Instruktionsheranhol- und Mikrobefehlsausgabeschaltung 832 implementiert die spekulative Verzweigungsvorhersage zur Maximierung des Heranhol-Durchsatzes der Makroinstruktionen.
Bei einem Ausführungsbeispiel ist der über den Mehrprozes­ sorbus 828 abgerufene Strom von Makroinstruktionen ein Strom von Makroinstruktionen für einen Mikroprozessor der INTEL- Architektur. Die Makroinstruktionen für Mikroprozessoren mit der INTEL-Architektur laufen auf einem Satz von Architekturre­ gistern, einschließlich einem EAX-Register, einem EBX-Register, einem ECX-Register und einem EDX-Register usw.
Die Instruktionsheranhol- und Mikrobefehlsausgabeschaltung 832 konvertiert die Makroinstruktionen des eingehenden Stroms von Makroinstruktionen in einen geordneten Strom von Mikrobe­ fehlen, im folgenden als logische Mikrobefehle bezeichnet. Die Instruktionsheranhol- und Mikrobefehlsausgabeschaltung 832 erzeugt einen oder mehrere logische Mikrobefehle für jede eingehende Makroinstruktion. Die zu jeder Makroinstruktion gehörenden logischen Mikrobefehle sind Mikrobefehle eines reduzierten Instruktionssatzes, die die Funktion der zugehöri­ gen Makroinstruktion ausführen. Der logische Mikrobefehl spezi­ fiziert arithmetische und logische Operationen genauso wie Lade- und Speicheroperationen zu dem Speichersubsystem 826.
Die Instruktionsheranhol- und Mikrobefehlsausgabeschaltung 832 überträgt den eingehenden Strom von logischen Mikrobefehlen zu der Register-Alias-Schaltung 834 und zu der Zuweiserschal­ tung 836 über einen Bus 850 für logische Mikrobefehle. Bei einem Ausführungsbeispiel gibt die Instruktionsheranhol- und Mikrobefehlsausgabeschaltung 832 bis zu vier geordnete logische Mikrobefehle während jedes Taktzyklusses des Prozessors 822 aus. Alternativ können die geordneten logischen Mikrobefehle auf vier während jedes Taktzyklusses beschränkt werden, um den Platzbedarf der integrierten Schaltung für den Prozessor 822 zu minimieren.
Die Instruktionsheranhol- und Mikrobefehlsausgabeschaltung 832 enthält einen Mikroinstruktionssequenzer und einen zugehö­ rigen Steuerspeicher. Der Mikroinstruktionssequenzer implemen­ tiert Mikroprogramme, um verschiedene Funktionen für den Pro­ zessor 822 auszuführen, einschließlich Fehlerbeseitigungsfunk­ tionen und Prozessorordnungsfunktionen.
Jeder von der Instruktionsheranhol- und Mikrobefehlsausga­ beschaltung 832 erzeugte logische Mikrobefehl weist einen Befehlscode, ein Paar von logischen Quellen und ein logisches Ziel auf. Jede logische Quelle kann ein Register spezifizieren oder einen Direktdatenwert zur Verfügung stellen. Die logischen Register-Quellen und die logischen Ziele der logischen Mikrobe­ fehle spezifizieren Architekturregister der ursprünglichen Makroinstruktionen. Außerdem spezifizieren die logischen Regi­ ster-Quellen und die logischen Ziele der logischen Mikrobefehle temporäre Register für von dem Mikroinstruktionssequenzer der Instruktionsheranhol- und Mikrobefehlsausgabeschaltung 832 implementierten Mikrobefehlscode.
Die Register-Alias-Schaltung 834 empfängt die geordneten logischen Mikrobefehle über den logischen Mikrobefehlsbus 850 und erzeugt einen zugehörigen Satz von geordneten physikali­ schen Mikrobefehlen, indem sie die logischen Quellen und die logischen Ziele der logischen Mikrobefehle umbenennt. Die Register-Alias-Schaltung 834 empfängt die geordneten logischen Mikrobefehle über den logischen Mikrobefehlsbus 850, bildet die logischen Quelladressen und die logischen Zieladressen jedes logischen Mikrobefehls in physikalische Quelladressen und eine physikalische Zieladresse ab und überträgt die geordneten physikalischen Mikrobefehle über einen physikalischen Mikrobe­ fehlsbus 852.
Jeder physikalische Mikrobefehl weist den Befehlscode des zugehörigen logischen Mikrobefehls auf, ein Paar von physikali­ schen Quelladressen und eine physikalische Zieladresse. Jede physikalische Quelladresse kann ein physikalisches Register spezifizieren oder einen Direktdatenwert zur Verfügung stellen. Die physikalischen Register-Quelladressen des physikalischen Mikrobefehls spezifizieren die in der Umordnungsschaltung 842 enthaltenen physikalischen Register und die in der Real-Regi­ ster-Schaltung 844 enthaltenen Register für einen festgeschrie­ benem Zustand (committed state registers). Die physikalischen Zieladressen der physikalischen Mikrobefehle spezifizieren die in der Umordnungsschaltung 842 enthaltenen physikalischen Register.
Die Register-Alias-Schaltung 834 überträgt die logischen Zieladressen der logischen Mikrobefehle über einen Bus 854 für logische Zieladressen. Die über den Bus 854 für logische Zielad­ ressen übertragenen logischen Zieladressen identifizieren die Architekturregister, die den physikalischen Zieladressen auf dem Bus 852 für physikalische Mikrobefehle entsprechen.
Die Zuweiserschaltung 836 verfolgt die verfügbaren Ressour­ cen in der Umordnungsschaltung 842 der Reservierungsstation und Abfertigungsschaltung 838 und der Ausführungsschaltung 840. Die Zuweiserschaltung 836 weist den physikalischen Mikrobefehlen auf dem Bus 852 für physikalische Mikrobefehle physikalische Zieladressen in der Umordnungsschaltung 842 und Reservierungs­ stationseinträge in der Reservierungsstations- und Abferti­ gungsschaltung 838 zu. Die Zuweiserschaltung 836 weist außerdem den physikalischen Mikrobefehlen auf dem Bus 852 für physikali­ sche Mikrobefehle, die einen eine Lade-Speicher-Operation spezifizierenden Befehlscode aufweisen, Ladeoperationspuffer- Einträge in einem Speicherordnungspuffer in der Ausführungs­ schaltung 840 zu.
Die Zuweiserschaltung 836 überträgt die zugewiesenen physi­ kalischen Zieladressen über einen Bus 856 für physikalische Zieladressen an die Register-Alias-Schaltung 834. Die zugewie­ senen physikalischen Zieladressen spezifizieren physikalische Register in der Umordnungsschaltung 842 zum Zwischenpuffern spekulativer Ergebnisse für die physikalischen Mikrobefehle. Die zugeordneten physikalischen Zieladressen werden von der Register-Alias-Schaltung 834 zur Umbenennung der logischen Zieladressen der logischen Mikrobefehle in physikalische Ziel­ adressen verwendete.
Die Zuweiserschaltung 836 weist die physikalischen Register der Umordnungsschaltung 842 den physikalischen Mikrobefehlen in der gleichen Reihenfolge zu, in der die logischen Mikrobefehle über den Bus 850 für logische Mikrobefehle empfangen wurden. Die Zuweiserschaltung 836 verwaltet einen Zuweisungszeiger für das Zuweisen der physikalischen Register der Umordnungsschal­ tung 842. Der Zuweisungszeiger zeigt für jeden Satz von über den Bus 850 für logische Mikrobefehle empfangenen logischen Mikrobefehlen auf einen nächsten Satz von aufeinanderfolgenden physikalischen Registern in der Umordnungsschaltung 842. Die Ordnung der den physikalischen Mikrobefehlen in der Umordnungs­ schaltung 842 zugewiesenen physikalischen Register spiegelt die Ordnung der ursprünglichen Mikrobefehle wieder.
Die Zuweiserschaltung 836 spezifiziert die Reservierungs­ stationseinträge für die physikalischen Mikrobefehle auf dem Bus 852 für physikalische Mikrobefehle, indem sie Reservie­ rungsstationseintrags-Auswahlsignale über einen Reservierungs­ stations-Auswahlbus 866 zu der Reservierungsstations- und Abfertigungsschaltung 838 überträgt.
Die Zuweiserschaltung 836 weist allen physikalischen Mikro­ befehlen auf dem Bus 852 für physikalische Mikrobefehle, die einen Lade-Speicher-Befehlscode spezifizieren, Ladeoperati­ onspuffer-Einträge zu. Die Zuweiserschaltung 836 weist die Ladepuffereinträge zu, indem sie über einen Ladeoperationspuf­ fer-ID-Bus 872 Ladeoperationspufferbezeichner zu der Reservie­ rungs- und Abfertigungsschaltung 838 überträgt.
Die Reservierungs- und Abfertigungsschaltung 838 hält die physikalischen Mikrobefehle, die auf die Ausführung durch die Ausführungsschaltung 840 warten. Die Reservierungs- und Abfer­ tigungsschaltung 838 empfängt die geordneten physikalischen Mikrobefehle über den Bus 852 für physikalische Mikrobefehle, assembliert die Quelldaten für die physikalischen Mikrobefehle und fertigt die physikalischen Mikrobefehle zur Ausführungs­ schaltung 840 ab.
Die Reservierungs- und Abfertigungsschaltung 838 empfängt die physikalischen Mikrobefehle über den Bus 850 für physikali­ sche Mikrobefehle und speichert die physikalischen Mikrobefehle in verfügbare Reservierungsstationseinträgen. Die Reservie­ rungs- und Abfertigungsschaltung 838 assembliert die Quelldaten für die physikalischen Mikrobefehle und fertigt die physikali­ schen Mikrobefehle zu geeigneten Ausführungseinheiten in der Ausführungsschaltung 840 ab, wenn die Quelldaten assembliert sind.
Die Reservierungs- und Abfertigungsschaltung 838 empfängt die Quelldaten für die anhängigen physikalischen Mikrobefehle über einen Quelldatenbus 858 von der Umordnungsschaltung 842 und der Real-Register-Schaltung 844. Die Reservierungs- und Abfertigungsschaltung 838 empfängt außerdem während des Rück­ schreibens von spekulativen Ergebnissen von der Ausführungs­ schaltung 840 zu der Umordnungsschaltung 842 über einen Ergeb­ nisbus 862 Quelldaten für die anhängigen physikalischen Mikro­ befehle von der Ausführungsschaltung 840.
Die Reservierungs- und Abfertigungsschaltung 838 plant die physikalischen Mikrobefehle zur Ausführung ein, die fertig assemblierte Quelldaten aufweisen. Die Reservierungs- und Abfertigungsschaltung 838 fertigt zur Ausführungsschaltung 840 über einen Mikrobefehls-Abfertigungsbus 860 die bereiten physi­ kalischen Mikrobefehle ab. Die Reservierungs- und Abfertigungs­ schaltung 838 plant die Ausführung der physikalischen Mikrobe­ fehle außer der Reihe entsprechend der Verfügbarkeit der Quell­ daten für die physikalischen Mikrobefehle und entsprechend der Verfügbarkeit der Ausführungseinheitsressourcen in der Ausfüh­ rungsschaltung 840 ein.
Die Ausführungsschaltung 840 schreibt die spekulativen Er­ gebnisse von der ungeordneten Ausführung der physikalischen Mikrobefehle über den Ergebnisbus 862 in die Umordnungsschal­ tung 842 zurück. Die Rückschreiboperationen der spekulativen Ergebnisse von der Ausführungsschaltung 840 sind aufgrund der ungeordneten Abfertigung von physikalischen Mikrobefehlen durch die Reservierungs- und Abfertigungsschaltung 838 und aufgrund der variierenden Anzahl der zur Ausführung der verschiedenen Arten der physikalischen Mikrobefehle benötigten Zyklen des Prozessors 822 ungeordnet.
Bei einem Ausführungsbeispiel weist die Ausführungsschal­ tung 840 einen Satz von fünf Ausführungseinheiten EU0-EU4 auf. Die Reservierungs- und Abfertigungsschaltung 838 fertigt zu den Ausführungseinheiten EU0-EU4 bis zu fünf physikalische Mikrobe­ fehle über den Mikrobefehls-Abfertigungsbus 860 gleichzeitig ab.
Die Ausführungseinheit EU0 führt Funktionen der arithmeti­ schen Logikeinheit (ALU) einschließlich Integer-Multiplikati­ ons- und -Divisionsoperation sowie Gleitkomma-Additions­ -Multiplikations- und -Divisions-Mikrobefehle aus. Die Ausführungseinheit EU1 führt ALU-Integer-Funktionen und Sprung­ operationen aus. Die Ausführungseinheit EU2 führt Integer- und Gleitkomma-Ladeoperationen vom Speicher genauso wie Funktionen zum Laden linearer Adressen und Segment-Registeroperationen aus. Die Ausführungseinheit EU3 führt Integer- und Gleitkomma- Speicheroperationen und Segmentregisteroperationen aus. Die Ausführungseinheit EU4 führt Integer- und Gleitkomma- Datenspeicher-Operationen aus.
Die Umordnungsschaltung 842 enthält die physikalischen Re­ gister, die spekulative Ergebnisse für die physikalischen Mikrobefehle zwischenspeichern. Jedes physikalische Register in der Umordnungsschaltung 842 ist für Integer-Datenwerte und für Gleitkomma-Datenwerte geeignet.
Die Real-Register-Schaltung 844 enthält Register für fest­ geschriebene Zustände (committed state registers), die den Architekturregistern des ursprünglichen Stroms von Makroin­ struktionen entsprechen. Jedes Register für festgeschriebene Zustände in der Real-Register-Schaltung 844 ist für Integer- Datenwerte und für Gleitkomma-Datenwerte geeignet.
Bei einem Ausführungsbeispiel weisen die Register der Real- Register-Schaltung 44 die EAX-, EBX-, ECX- und EDX-Register usw. eines Mikroprozessors mit INTEL-Architektur genauso wie die Flags eines Prozessors der INTEL-Architektur auf. Die Real- Register-Schaltung 844 enthält außerdem Register mit festge­ schriebenem Zustand für die Mikrobefehlsregister, die von dem in der Instruktionsheranhol- und Mikrobefehlsausgabeschaltung 832 ausgeführten Mikrobefehlscode verwendet werden.
Die Umordnungsschaltung 842 und die Real-Register-Schaltung 844 empfangen die physikalischen Mikrobefehle über den Bus 852 für physikalische Mikrobefehle. Die physikalischen Quelladres­ sen der physikalischen Mikrobefehle spezifizieren physikalische Register in der Umordnungsschaltung 842 und Register für fest­ geschriebene Zustände in der Real-Register-Datei 844, die die Daten für die physikalischen Mikrobefehle enthalten.
Die Umordnungsschaltung 842 und die Real-Register-Schaltung 844 lesen die von den physikalischen Quelladressen spezifizier­ ten Daten und übertragen die Quelldaten zu der Reservierungs- und Abfertigungsschaltung 838 über einen Quelldatenbus 858. Jede physikalische Quelladresse des physikalischen Mikrobefehls enthält ein Real-Register-Datei-Gültig(RRFV)-Flag, das anzeigt, ob die Quelldaten in einem physikalischen Register in der Umordnungsschaltung 842 oder in einem Register mit festge­ schriebenem Zustand in der Real-Register-Datei 844 enthalten sind.
Die physikalischen Zieladressen der physikalischen Mikrobe­ fehle auf dem Bus 852 für physikalische Mikrobefehle spezifi­ zieren die physikalischen Register in der Umordnungsschaltung 842, um die spekulativen Ergebnisse der ungeordneten Ausführung der physikalischen Mikrobefehle zwischenzuspeichern. Die Umord­ nungsschaltung 842 empfängt die physikalischen Zieladressen der physikalischen Mikrobefehle über den Bus 852 für physikalische Mikrobefehle und löscht die von den physikalischen Zieladressen spezifizierten physikalischen Register.
Die Umordnungsschaltung 842 empfängt die den physikalischen Mikrobefehlen entsprechenden logischen Zieladressen über den Bus 854 für logische Zieladressen und speichert die logischen Zieladressen in den von den physikalischen Zieladressen der physikalischen Mikrobefehle spezifizierten physikalischen Registern. Die logischen Zieladressen in den physikalischen Registern der Umordnungsschaltung 842 spezifizieren die Regi­ ster mit festgeschriebenem Zustand in der Real-Register-Schal­ tung 844 zum Ausscheiden der physikalischen Mikrobefehle.
Eine Ausscheidelogikschaltung 846 weist die physikalischen Mikrobefehle, indem sie die in den physikalischen Registern der Umordnungsschaltung 842 gehaltenen spekulativen Ergebnisse in einen Architekturzustand in der gleichen Reihenfolge festlegt, in der die ursprünglichen logischen Mikrobefehle empfangen wurden. Die Ausscheidelogikschaltung 846 veranlaßt die Übertra­ gung der spekulativen Ergebnisdaten in der Umordnungsschaltung 842 zu zugehörigen Registern mit festgeschriebenem Zustand in der Real-Register-Schaltung 844 über einen Ausscheidebus 864. Bei einem Ausführungsbeispiel scheidet die Ausscheidelogik­ schaltung 846 bis zu vier physikalische Registeroperationen während jedes Zyklusses des Prozessors 822 aus. Bei einem anderem Ausführungsbeispiel scheidet die Ausscheidelogikschal­ tung 846 bis zu drei physikalische Registeroperationen während jedes Zyklusses des Prozessors 822 aus, um den Platzbedarf der integrierten Schaltung zu minimieren.
Die Ausscheidelogikschaltung 846 veranlaßt außerdem die Umordnungsschaltung 842, die Makroinstruktions-Zeiger-Delta­ werte für die ausscheidenden physikalischen Mikrobefehle über einen Makroinstruktions-Zeiger Offset-Bus 820 während des Ausscheidens zu übertragen.
Die Neustartschaltung 848 empfängt die Makroinstruktions- Zeiger-Deltawerte über den Makroinstruktions-Zeiger-Offset-Bus 820. Die Neustartschaltung 848 berechnet gemäß den Makroin­ struktions-Zeiger-Deltawerten für die ausscheidenden ROB-Ein­ träge einen festgeschriebenen (verbindlichen) Instruktionszei­ gerwert.
Die Ausscheidelogikschaltung 846 verwaltet einen Ausschei­ dezeiger zu den physikalischen Registern in der Umordnungs­ schaltung 842. Der Ausscheidezeiger zeigt auf auszuscheidende Sätze von aufeinanderfolgenden physikalischen Ausscheide-Regi­ ster. Der Ausscheidezeiger folgt dem Zuweisungszeiger durch die physikalischen Register in der Umordnungsschaltung 842, wenn die Ausscheidelogik die spekulativen Ergebnisse der physikali­ schen Register in dem festgeschriebenen (verbindlichen) Zustand ausscheidet. Die Ausscheidelogikschaltung 846 scheidet die physikalischen Registeroperationen geordnet aus, da die physi­ kalischen Register den physikalischen Mikrobefehlen zugewiesen wurden.
Die Ausscheidelogikschaltung 846 sendet die von dem Aus­ scheidezeiger spezifizierten physikalischen Ausscheideadressen über einen Ausscheidehinweisbus 870 aus. Der Speicherordnungs­ puffer in der Ausführungsschaltung 840 empfängt die physikali­ schen Ausscheidezieladressen und gibt einen Satz von Speicher­ ordnungs-Neustartsignalen 876 aus. Die Speicherordnungs-Neu­ startsignale 876 zeigen an, ob eine einer der ausscheidenden physikalischen Zieladressen entsprechende Speicher-Ladeopera­ tion eine mögliche Prozessorordnungsverletzung verursacht hat.
Die Speicherordnung-Neustartsignale 876 zeigen an, welche der ausscheidenden physikalischen Zieladressen die mögliche Prozes­ sorordnungsverletzung verursacht hat.
Die Speicherordnungs-Neustartsignale 876 werden von der Neustartschaltung 848 empfangen. Wenn die Speicherordnungs- Neustartsignale 876 eine mögliche Prozessorordnungsverletzung anzeigen, gibt die Neustartschaltung 848 ein Umordnungslöschsi­ gnal 878 aus. Das Umordnungslöschsignal 878 veranlaßt die Umordnungsschaltung 842, die spekulativen Ergebnisdaten für die unausgeschiedenen physikalischen Mikrobefehle zu löschen. Das Umordnungslöschsignal 878 veranlaßt die Reservierungs- und Abfertigungsschaltung 838, die anhängigen physikalischen Mikro­ befehle zu löschen, die die Abfertigung zu der Ausführungs­ schaltung 848 erwarten. Das Umordnungslöschsignal 878 veranlaßt außerdem die Zuweiserschaltung 836, den Zuweisungszeiger zum Zuweisen der physikalischen Register in der Umordnungsschaltung 842 zurückzusetzen und veranlaßt die Ausscheidelogikschaltung 846, den Ausscheidezeiger zum Ausscheiden der physikalischen Register zurückzusetzen.
Wenn die Speicherordnungs-Neustartsignale 876 eine mögliche Prozessorordnungsverletzung anzeigen, verwendet die Neustart­ schaltung 848 die über den Makroinstruktions-Zeiger-Offset-Bus 820 empfangenen Makroinstruktions-Zeiger-Deltawerte, um einen Neustartinstruktionszeigerwert zu berechnen. Der Neustartin­ struktionszeigerwert spezifiziert die Makroinstruktion, die zu dem physikalischen Mikrobefehl gehört, der die mögliche Spei­ cherordnungsverletzung erzeugt hat. Die Neustartschaltung 848 überträgt den Neustartinstruktionszeigerwert zu der Instrukti­ onsheranhol-und Mikrobefehlsausgabeschaltung 832 über einen Neustart-Vektorbus 822.
Die Instruktionsheranhol- und Mikrobefehlsausgabeschaltung 842 empfängt den Instruktionszeigerwert über einen Neustart- Vektorbus 822. Das Umordnungslöschsignal 878 veranlaßt den Mikroinstruktionssequenzer der Instruktionsheranhol- und Mikro­ befehlsausgabeschaltung 832, den geordneten Strom von logischen Mikrobefehlen, die von der Umordnungsschaltung 842 vor dem Ausscheiden gelöscht wurden, erneut auszugeben. Die Instrukti­ onsheranhol- und Mikrobefehlsausgabeschaltung 832 gibt die logischen Mikrobefehle erneut aus, indem sie einen Makroin­ struktionsstrom beginnend bei der Makroinstruktionsadresse heranholt, die vom dem Neustartinstruktionszeigerwert spezifi­ ziert wird, und indem sie den Makroinstruktionsstrom in logi­ sche Mikrobefehle konvertiert und die logischen Mikrobefehle über den Bus für logische Mikrobefehle überträgt.
Wenn die Speicherordnungs-Neustartsignale 876 keine mögli­ che Prozessorordnungsverletzung anzeigen, dann geht das Aus­ scheiden der physikalischen Registeroperationen, die durch die ausscheidenden physikalischen Zieladressen spezifiziert sind, weiter. Die Umordnungsschaltung 842 überprüft die Gültig-Flags für die ausscheidenden physikalischen Zieladressen. Die Umord­ nungsschaltung 842 scheidet die spekulativen Ergebnisdaten für jede ausscheidende physikalische Registeroperation aus, wenn das Gültig-Flag der ausscheidenden physikalischen Registerope­ ration gültige spekulative Daten anzeigt. Die Umordnungsschal­ tung 842 scheidet eine physikalische Registeroperation aus, indem sie die Übertragung der spekulativen Ergebnisdaten zu Registern mit festgeschriebenen Zuständen in der Real-Register- Schaltung 844, die durch die logischen Zieladressen der physi­ kalischen Register spezifiziert sind, veranlaßt.
Die Register-Alias-Schaltung 834 und die Zuweiserschaltung 836 empfangen die ausscheidenden physikalischen Zieladressen über einen Ausscheidehinweisbus 870. Die Register-Alias-Schal­ tung 834 aktualisiert die Register-Alias-Tabelle entsprechend, um das Ausscheiden widerzuspiegeln. Die Zuweiserschaltung 836 markiert die ausgeschiedenen physikalischen Register in der Umordnungsschaltung 842 als für eine Zuweisung verfügbar.
Fig. 9 zeigt das Computersystem 910 nach der Erfindung. Das Computersystem enthält einen Systembus 912, der mehrere ver­ schiedene Busse, beispielsweise einen Hauptsystembus, einen Zwischen-Prozessor-Kommunikationsbus, einen lokalen Netzbus oder andere solche Busse, enthalten kann, von denen jeder eine Gruppe von Busleitungen für eine oder mehrere Funktionen, z. B. zur Daten-, Adreß- und Steuerinformationsübertragung aufordnet.
Aus Gründen der Übersichtlichkeit der Fig. 9, und um dem Leser das Verständnis der Erfindung zu erleichtern, sind alle diese Busse durch Bus 912 dargestellt, der im folgenden als externer Bus 912 bezeichnet wird. Zur Veranschaulichung wurde die Zeichnung weiter vereinfacht. Mit dem externen Bus sind verschiedene repräsentativ dargestellte Computersystemkomponen­ ten gekoppelt, einschließlich einem Speichersubsystem (RAM), einem Festplattenlaufwerk (HD). Andere derartige Komponenten können au 99999 00070 552 001000280000000200012000285919988800040 0002019506734 00004 99880ch mit dem externen Bus gekoppelt sein.
Mit dem externen Bus sind außerdem eine oder mehrere CPUs gekoppelt. Es können außerdem ein oder mehrere Steckplätze vorgesehen werden, um zusätzliche CPUs aufzunehmen. Solche zusätzlichen CPUs können zu dem System hinzugefügt werden, um seine Leistung zu erhöhen und können Erweiterungs- bzw. Upgrade-CPUs enthalten, die den vorher vorliegenden CPUs über­ legen sind, oder sie können zusätzliche Mehrprozessor-CPUs enthalten, die mit den anderen vorhandenen CPUs zusammenarbei­ ten bzw. im Tandem-Betrieb laufen, oder sie können Verbesse­ rung-CPUs, beispielsweise mathematische Coprozessoren oder Graphikbeschleuniger, enthalten, die in Ergänzung zu den ande­ ren CPUs arbeiten. Ein solches Mehrprozessor(MP)-System kann homogen sein, indem es nur CPUs von einer einzigen Architektur (ISA) aufweist, oder es kann heterogen ausgebildet sein, indem es CPUs von verschiedenen Architekturen enthält. Bei einem Ausführungsbeispiel können die CPUs Mikroprozessoren mit INTEL- Architektur sein. In jedem Fall sind Steckplätze für eine zusätzliche oder mehrere zusätzliche CPU(s) mit ihrem(n) zuge­ hörigem(n) L1-Cache-Speicher(n) und einem oder mehreren optio­ nalen L2-Cache-Speichern vorgesehen.
Jede der CPUs kann die im folgenden in Bezug auf die CPU 914 beispielhaft beschriebenen Merkmale aufweisen und jeder der Steckplätze kann eine Busverbindung für solche Merkmale in der oder den zusätzlichen CPU(s) zur Verfügung stellen.
Die CPU 914 kann selbstverständlich über die dargestellten Merkmale hinaus weitere Merkmale aufweisen. Solche Merkmale wurden wieder aus Gründen der Übersichtlichkeit in Fig. 9 weggelassen. Beispielsweise sind übliche Zusatzeinrichtungen, wie Gleitkomma- und Integer-Ausführungseinheiten nicht darge­ stellt, und auch nicht die weniger bekannten Zusatzeinrichtun­ gen, wie eine Außer-der-Reihe Maschine oder ein spekulativer Ausführungsmechanismus.
Zur Veranschaulichung kann die CPU 914 so beschrieben wer­ den, als wenn sie eine externe Busanforderungswarteschlangen­ einheit (EBRQ - external bus request queue) aufweist und um diese herum gebaut wurde. Die CPU 914 weist außerdem eine Warteschlange-zum-externen-Bus-Anforderungslogikeinheit (EBRL - external bus request logic) auf, die mit dem externen Bus und der EBRQ gekoppelt ist.
Die CPU 914 weist eine mit der EBRQ gekoppelte Anforde­ rungspriorisierungs- und Bestätigungseinheit (RPA - request prioritization and acknowledgement) auf. Eine Instruktionsher­ anholeinheit (IFU - instruction fetch unit) ist mit der RPA gekoppelt. Außerdem ist eine Daten-Cache-Speichereinheit (DC) mit der RPA gekoppelt. Die CPU kann eine primäre Cache-Spei­ chereinheit (L1) aufweisen, entweder einen gemeinsamen Cache- Speicher oder, wie in Fig. 9 gezeigt, einen Daten-L1-Cache- Speicher in der DCU und einem Instruktions-L1-Cache-Speicher in der IFU.
Die CPU 914 enthält außerdem eine mit der EBRQ gekoppelte Statusverfolgungs-Logikeinheit (STL status tracking logic). Die STL ist mit dem externen Bus und dem rückseitigen Bus entweder, wie dargestellt, direkt oder indirekt gekoppelt und liefert Informationen, die den Status der jeweiligen Busse anzeigen.
Solche Statusinformationen können beispielsweise anzeigen, ob der Bus belegt ist, Überwachungsoperationen ausführt, Paritäts­ fehler aufweist und andere solche Informationen, die zur Imple­ mentierung des erfindungsgemäßen Verfahrens hilfreich sind. Die STL kann außerdem verfolgen: den Status der von dem externen Bus zurückgegebenen Daten, den Status der zu dem L1-Cache- Speicher gesendeten Daten (Instruktions- und/oder Daten-L1), den Status der zu dem L2-Cache-Speicher gesendeten Daten, den Cache-Speicherzustand der Daten, beispielsweise den MESI-Sta­ tus, den Snoop-Status der Anforderung, zu der Datenrückgabe an den L2-Cache-Speicher zugehörige Informationen, den Fehlersta­ tus, wie beispielsweise Adreßfehler, Datenfehler und/oder Antwortfehler vom externen Bus. Die STL kann auch den Status jeder Anforderung verfolgen, wobei die Statusinformationen beispielsweise enthalten: ob die Anforderung zur Bearbeitung durch den BBL/L2 (backside bus logic/level two cache) ansteht, ob die Anforderung derzeitig von dem BBL/L2 abgearbeitet wird, ob die Anforderung zur Bearbeitung auf dem externen Bus an­ steht, ob die Anforderung derzeitig auf dem externen Bus bear­ beitet wird, ob die Anforderung zur Rückgabe an die BBL/L2 ansteht, ob die Daten an den BBL/L2 zurückgegeben werden, und ob die Anforderung erledigt/beendet ist.
Eine Warteschlange- zum-Rückseitenbus-Anforderungslogikein­ heit (BSBRL-backside bus request logic) ist mit dem EBRQ und einer Rückseitbuslogikeinheit (BBL) gekoppelt.
Die BBL koppelt die CPU 914 mit einem Cache-Speicher, bei­ spielsweise einer sekundären Cache-Speichereinheit (L2). Der L2-Cache-Speicher kann in der CPU entweder als chipeigener Cache-Speicher oder in einem Mehrchip-Modul angeordnet sein, oder er kann als physikalisch separat gepackter Chip konzipiert sein. Bei einem Ausführungsbeispiel einer dieser Konfiguratio­ nen ist der L2-Cache-Speicher vorteilhafterweise mit der CPU 914 über einen rückseitigen Bus 916 gekoppelt. Dies verringert den Busverkehr auf dem externen Bus 912.
Es ist klar, daß ein hierarchisches Mehrebenen-Speicher­ system mit einer breiten Vielfalt von Konfigurationen konstru­ iert werden kann. Bei manchen Konfigurationen kann es einen virtuellen Speicher enthalten, in dem ein Teil der Festplatte als weitere Cache-Speicherebene behandelt wird.
Bei dem System gemäß Fig. 9 können verschiedene Komponen­ ten, wie die DCU, die IFU, die BBL/L2, die CPUs, die DMA und andere Komponenten, als Busanforderungen auf dem externen Bus ausgebende und empfangende Teilnehmer agieren. Die EBRQ nimmt Busanforderungen von jedem der Teilnehmer in der CPU/L2 auf und reiht sie auf und von dem externen Bus ein. In dem dargestell­ ten Ausführungsbeispiel handhabt die EBRQ externe Busanforde­ rungen von und zu dem DCU, der IFU und der BBL/L2.
Verschiedene Busteilnehmer können gemäß verschiedener Aus­ führungsbeispiele verschiedene Busanforderungen ausführen. Bei einem Ausführungsbeispiel enthalten solche Busanforderungen Lese- und Schreibanforderungen und können von der DCU, der IFU und der BBL/L2 wie in Tabelle 1 gezeigt, angefordert werden.
Die DCU-Lese- und -Schreibanforderungen sind natürlich Da­ ten-Lese- und Schreiboperationen. Die IFU-Leseanforderung ist natürlich eine Instruktionsheranholoperation. Externe Busanfor­ derungen von der DCU und der IFU werden generell auf den L2- Cache-Speicher gerichtet; DCU- und IFU-Operationen auf dem externen Bus wurden üblicherweise bereits in dem L1-Cache- Speicher nachgeschlagen, führten jedoch zu Fehlversuchen.
Die BBL/L2-Schreibanforderung kann ein " geändertes Opfer- Rückschreiben" ("dirty victim writeback") sein. Wenn der L2- Cache-Speicher voll ist, erfordern neue Cache-Speicherzeilenzu­ ordnungen, daß eine bereits belegte Cache-Speicherzeile aus dem Speicher geschrieben wird. Diese herausgeschriebene Cache- Speicherzeile wird als "Opfer" einer Cache-Speicherzeilenerset­ zung bezeichnet. Eine geopferte Zeile muß nur herausgeschreiben werden, wenn sie Daten enthält, die im Hinblick auf die nicht Cache-gespeicherten Daten (oder die in einer höheren Ebene Cache-gespeicherten Daten), die diese Zeile darstellen, geän­ dert wurde. Solch eine geänderte Zeile ist "dirty". Wenn eine nicht geänderte Zeile zwangsgeräumt wird, kann sie einfach überschrieben und ignoriert werden, da die woanders existieren­ den Daten immer noch an der Adresse gültig sind.
Buskonflikte können auftreten, wenn ein anfordernder Teil­ nehmer eine Schreiboperation zu einer gegebenen Adresse ausgibt und ein anderer Teilnehmer eine Lese- oder eine Schreiboperati­ on zu der gleichen Adresse ausgibt. Die verschiedenen Einheiten können völlig unabhängig voneinander arbeiten, aber können gelegentlich Anforderungen zu der gleichen Adresse senden. Die Reihenfolge, in der diese Anforderungen zur gleichen Adresse auf den externen Bus gegeben werden und die Art und Weise, wie sie abgearbeitet werden, ist im Hinblick auf das Aufrechterhal­ ten der Speicherkonsistenz kritisch. Verschiedene Ordnungssche­ men können verwendet werden, wie beispielsweise das strenge oder das schwache Ordnen. Jedoch, unabhängig davon, welches Ordnen verwendet wird, muß es konsistent verwendet werden.
Wenn eine anfordernde Einheit eine Leseoperation und eine andere anfordernde Einheit eine Schreiboperation zu der glei­ chen Adresse ausgeben, muß die erste Einheit die Daten empfan­ gen, die die zweite Einheit ausgibt. Dies kann erreicht werden, indem die Schreiboperation auf dem externen Bus vor der Lese­ operation ausgegeben wird und dadurch, daß garantiert wird, daß die Schreiboperation beendet ist. Alternativ kann es dadurch erreicht werden, daß ein anderer Mechanismus für die Leseopera­ tion anfordernde Einheit zum Empfangen der Daten von der die Schreiboperation anfordernde Einheit vorgesehen werden.
Bei dem in Fig. 9 dargestellten Ausführungsbeispiel akzep­ tiert die EBRQ die neuen Anforderungen von der IFU und der DCU über die RPA und legt diese Anforderungen der BBL über die BSBRL vor, so daß die BBL bestimmen kann, ob deren L2-Cache- Speicher die angeforderte Adresse enthält oder, mit anderen Worten, ob der L2-Cache-Speicher eine Cache-Speicherzeile enthält, die von der Adresse im Speicher zwischengespeicherte Daten speichert. Wenn ein L2-Cache-Fehlversuch auftritt, signalisiert die BBL dies und verlangt, daß die Anforderung von dem externen Bus abgearbeitet wird. Das kann bedeuten, daß sie von einem (nicht dargestellten) L3-Cache-Speicher abgearbeitet werden kann, oder direkt vom Haupt-RAM. Wenn die Anforderung eine Leseanforderung ist und die Daten nicht in dem L2-Cache- Speicher sind, kann der BBL in dem L2-Cache-Speicher Platz für die Daten machen, die schließlich von der Anforderung zurückge­ geben werden, indem eine Zeile von dem L2-Cache-Speicher wie oben beschrieben zwangsgeräumt bzw. geopfert wird.
Fig. 10 zeigt weitere Details der EBRQ. Die EBRQ enthält eine Warteschlange 1020. Um über einen breiten Anwendungsbe­ reich eine hohe Leistung zu erzielen, kann die Warteschlange 1020 vorteilhafterweise einen first-in/first-out-(FIFO-) Warteschlangenmechanismus verwenden, um auszuwählen, welche Anforderung zur Bedienung zur BBL/L2 gesendet werden soll. Andere Verfahren können bei anderen Ausführungsbeispielen verwendet werden.
Die Warteschlange 1020 enthält einen oder mehrere Einträge. In dem dargestellten Ausführungsbeispiel enthält sie vier Einträge an den Warteschlangenstellen 0 bis 3. Jeder Eintrag kann verschiedene Informationen über eine zugehörige Anforde­ rung enthalten. Beispielsweise kann der Eintrag eine Kennung (ID) der Anforderung, einen Typ (TYPE) der Anforderung, bei­ spielsweise Lese- oder Schreiboperation, eine Adresse (ADDR), an die die Anforderung gerichtet ist, und den derzeitigen Status (STATUS) der Anforderung enthalten. Je nach Wunsch können weitere Informationen enthalten sein.
Ein Warteschlangenmanager 1022 steuert die Zuweisung und Freigabe von Einträgen in der Warteschlange 1020. Neueinträge in der Warteschlange werden zugewiesen, wenn eine Anforderung von der IFU oder der DCU von der RPA angenommen wird. Einträge werden von der Warteschlange freigegeben, wenn sie erfolgreich von der BBL/LC bedient wurden oder wenn sie ausgegeben wurden und erfolgreich auf dem externen Bus beendet wurden und (fakultativ) ihre Daten zu der BBL/L2 zurückgegeben haben, oder wenn ein die vorzeitige Freigabe erfordernder ernster Fehler auftritt, beispielsweise wenn verschiedene Adreßparitätsfehler auftreten oder wenn eine harte Fehlerantwort auf dem externen Bus zurückgegeben wird.
Die EBRQ kann außerdem eine Liste 1024 von Dirty-Opfer- Zeile-Opferungsanforderungen enthalten. Sie kann einen oder mehrere Einträge enthalten. Bei dem dargestellten Ausführungs­ beispiel enthält sie zwei Einträge an den Listenstellen 0 und 1. Jeder Eintrag kann verschiedene Informationen über die zwangsgeräumten Zeilen enthalten, beispielsweise die Adresse (ADDR) der Daten in der Zeile und den Status (STATUS) der Zwangsräumungsrückschreibanforderung.
Ein Listenmanager 1026 steuert die Zuweisung und Freigabe der Einträge in der Liste 1024.
Wenn eine neue Anforderung von der DCU oder der IFU an­ kommt, weist der Manager 1022 den nächsten verfügbaren Eintrag am Ende der Warteschlange 1020 gemäß einem vorgegebenen Algo­ rithmus zu. Die Details dieses Algorithmus sind zum Verständnis der Erfindung nicht erforderlich. Wichtig ist, daß die neue Anforderung an das Ende der FIFO gesetzt wird.
Wenn die Anforderung den Anfang der FIFO erreicht, entfernt der Manager 1022 sie, und die EBRQ legt sie der BBL vor. Wenn die BBL aus irgendeinem Grund nicht in der Lage ist, die Anfor­ derung zu diesem bestimmten Zeitpunkt zu bedienen, weist die BBL die Anforderung zurück, und der Manager 1022 fügt die Anforderung wieder in die Warteschlange ein.
Bei einem Ausführungsbeispiel wird die zurückgewiesene An­ forderung an das Ende der FIFO zurückgegeben.
Anforderungen, die dem externen Bus vorgelegt werden, könn­ en dem gleichen Zurückweisungs- und Wiedereinfügungsschema unterworfen sein. Beispielsweise kann ein externer Bus-Pari­ tätsfehler die Anforderung zwingen, zurückgewiesen und zu einer späteren Zeit wieder ausgegeben zu werden.
Bei einem Ausführungsbeispiel müssen zurückgewiesene Anfor­ derungen im Hinblick auf andere Anforderungen nicht, wie oben beschrieben, den gleichen Ordnungsanforderungen unterworfen werden, jedoch müssen bei einem solchen Ausführungsbeispiel geeignete Schritte unternommen werden, um die Speicherkonsi­ stenz sicherzustellen.
Das oben detailliert beschriebene Schema stellt sicher, daß keine Anforderung "ungerecht" behandelt wird. Es sorgt jedoch für eine hohe Systemleistung. Es gibt jedoch zusätzliche Erwä­ gungen, mit denen sich die Erfindung befaßt.
In dem in Fig. 9 dargestellten Ausführungsbeispiel, bei dem die DCU, die IFU und die BBL/L2 Lese- und Schreibanforderungen ausgeben können, gibt es vier Speicherordnungsprobleme, die behandelt werden müssen. Diese sind in Tabelle 2 dargestellt.
Bei dem dargestellten Ausführungsbeispiel wird der Fall ei­ ner DCU-Leseoperation vs. eine DCU-Leseoperation ignoriert, da die DCU keine zwei, einen Konflikt auslösenden Anforderungen zu der gleichen Adresse ausgibt.
Dieser vierte Fall liegt in einem Mehrprozessorsystem vor. Bei diesem Ausführungsbeispiel kann eine Leseanforderung zu einer gegebenen Adresse, die von einem Prozessor auf den exter­ nen Bus gegeben wurde, solange nicht unmittelbar von einer von einem anderen Prozessor auf den externen Bus ausgegebenen Schreibanforderung zu der gleichen Adresse gefolgt werden, bis es garantiert ist, daß die Leseanforderung den bzw. die Cache- Speicher des zweiten Prozessors überwacht (snooped) hat und alle darin zwischengespeicherten modifizierten Daten empfangen hat.
Es ist somit klar, daß die ersten drei Fälle sich nur auf den internen Bereich einer CPU beziehen.
Die dargestellten Komponenten des Systems der vorliegenden Erfindung kooperieren, um zahlreiche Mechanismen oder Verfahren auszuführen, die zusammen dazu dienen, in der EBRQ Speicherord­ nungsprobleme zu verhindern. Zu diesen Mechanismen können bei verschiedenen Ausführungsbeispielen gehören: (A) ein Blockie­ rungsmechanismus für gleiche Adressen, (B) ein Mechanismus zum Handhaben selbstmodifizierender Befehlscodes und einen Busüber­ wachungs(Bussnooping)-Mechanismus, (C) einen Rückwärtsabfrage­ mechanismus, (D) einen Konfliktadressen-Puffermechanismus und (E) andere, allgemeinere Mechanismen.
Bei dem in Fig. 9 gezeigten Ausführungsbeispiel enthält die CPU 914 außerdem einen Blockierungsmechanismus 930 für gleiche Adressen, einen selbstmodifizierenden Befehlscode- und Überwa­ chungsmechanismus 932, einen Rückwärtsabfragemechanismus 934 und einen Konfliktadressen-Puffermechanismus 936.
Der Blockierungsmechanismus für gleiche Adressen stellt si­ cher, daß, wenn eine neue Anforderung der BBL zum Nachschlagen in dem L2-Cache-Speicher vorgelegt wird, ihre Adresse mit jeder Adresse in der EBRQ verglichen wird, die zu einer Anforderung gehört, die den L2-Cache-Speicher bereits durchlaufen hat. Wenn eine Übereinstimmung gefunden wird, wird die neue Anforderung von der BBL zurückgewiesen und wie oben beschrieben an das Ende der FIFO gestellt,.
Der Selbstmodifizierungs-Befehlscode- und Selbstüberwa­ chungs-Mechanismus stellt sicher, daß, wenn eine IFU-Anforde­ rung der BBL zur Bedienung vorgelegt wird, eine selbstmodifi­ zierende Befehlscodeüberwachung (self-modifying-code snoop) auf der DCU und der EBRQ durchgeführt wird, um das Vorhandensein modifizierter Daten entweder in der DCU oder in dem Verfahren des Schreibens einer Anforderung in die EBRQ zu erfassen. Wenn modifizierte Daten gefunden werden, wird die Anforderung auf den externen Bus mit einer Anweisung gesendet, sich selbst zu überwachen oder in der CPU nach den modifizierten Daten zurück­ zuschauen.
Der Rückwärtsabfragemechanismus stellt sicher, daß, wenn die BBL/L2 eine Geänderte-Opfer-Zeile zwangsräumt, die Adresse in der DCU und der EBRQ gesucht wird, um festzustellen, ob eine später modifizierte Version der gleichen Daten existiert. Wenn festgestellt wird, daß eine solche existiert, wird die Busan­ forderung von dem L2-Cache-Speicheropfervorgang einfach von der Liste entfernt und nie auf den externen Bus aufgegeben.
Der Konfliktadressen-Puffermechanismus stellt sicher, daß, wenn eine Anforderung von irgendeinem Teilnehmer auf den exter­ nen Bus gegeben wird, seine Adresse in einem (nicht dargestell­ ten) Konflikt-Adressenpuffer gespeichert wird. Vergleiche mit diesem Puffer hindern die CPU daran, irgendeine Anforderung aus zugeben, die mit einer vorher ausgegebenen Anforderung zu der gleichen Adresse in Konflikt geraten könnte, bis die vorher ausgegebene Anforderung als sicher garantiert werden kann. Eine Anforderung ist sicher, wenn sie das sogenannte Fehlerfen­ ster und das globale Überwachungsfenster durchlaufen hat und somit garantiert beendet ist.
Diese Mechanismen arbeiten wie folgt zusammen, um zu ver­ hindern, daß der Speicher umgeordnet werden muß, oder anders gesagt, um Cache-Speicher-Inkonsistenzen zu verhindern.
In dem Fall einer DCU-Schreiboperation vs. eine IFU-Lese­ operation, wenn die IFU-Leseoperation von der BBL zuerst be­ dient wird, detektiert der Selbstmodifizierungs-Befehlscode Überwachungsmechanismus das Vorliegen der hinausgehenden modi­ fizierten Daten in der EBRQ und instruiert die EBRQ, den exter­ nen Bus zur Selbstüberwachung (self-snoop) der CPU zu steuern. Das Selbstüberwachen führt dazu, daß die modifizierten Daten für die DCU-Schreiboperation durch einen impliziten Rück­ schreibmechanismus der CPU herausgeschrieben werden, und daß die DCU-Schreiboperation abgebrochen wird.
In dem Fall DCU-Schreiboperation vs. BBL/L2-Schreiboperati­ on, wenn die L2-Cache-Speicher-geänderte-Opfer-Zeile-Anforde­ rung vorgelegt wird, findet der Rückwärtsabfragemechanismus die DCU-Schreibanforderung bereits im Ablauf vor und wird die BBL/L2-Schreibanforderung abbrechen.
In dem Fall DCU-Leseoperation oder IFU-Leseoperation vs. BBL/L2-Schreiboperation, wenn eine DCU-Leseoperation oder eine IFU-Leseoperation in die FIFO eintritt, während eine BBL/L2- Schreiboperation zur gleichen Adresse auftritt, wird das Vor­ beikommen der Leseoperation an der BBL/L2-Schreiboperation durch den Blockiermechanismus für gleiche Adressen blockiert.
In dem Fall externe Leseoperation vs. interne Schreibopera­ tion verhindert der Konfliktadressen-Puffermechanismus, daß die interne Schreiboperation auf den externen Bus gegeben wird, bis die Überwachung (snoop) von der externen Leseoperation garan­ tiert beendet ist. Wenn die Überwachungs- bzw. Snoop-Operation die ausgehenden modifizierten Daten trifft, wird die Schreiban­ forderung abgebrochen.
Fig. 11 zeigt die Umordnungsschaltung 1142. Die Umordnungs­ schaltung 1142 enthält einen Umordnungspuffer 1182 mit einem Satz von ROB-Einträgen (RE0 bis REn). Die ROB-Einträge RE0 bis REn sind physikalische Register, die spekulative Ergebnisdaten von der ungeordneten Ausführung der physikalischen Mikrobefehle zwischenspeichern. Bei einem Ausführungsbeispiel weisen die ROB-Einträge RE0 bis REn einen Satz von 64 physikalischen Registern auf. Bei einem anderen Ausführungsbeispiel weisen die ROB-Einträge RE0 bis REn einen Satz von 40 physikalischen Registern auf.
Jeder ROB-Eintrag weist ein Gültig-Flag (V), einen Ergeb­ nisdatenwert, einen Satz von Flags, eine Flag-Maske, ein logi­ sches Ziel (LDST), Fehlerdaten und einen Instruktionszeigerdel­ tawert (IPDELTA) auf.
Das Gültig-Flag zeigt ein, ob der Ergebnisdatenwert für den zugehörigen ROB-Eintrag gültig ist. Die Umordnungsschaltung 1142 löscht das Gültig-Flag für jeden neu zugeordneten ROB- Eintrag, um einen ungültigen Ergebnisdatenwert anzuzeigen. Die Umordnungsschaltung 1142 setzt das Gültig-Flag, wenn spekula­ tive Ergebnisdaten von der Ausführungsschaltung 1140 zu dem ROB-Eintrag zurückgeschrieben werden.
Der Ergebnisdatenwert ist ein spekulatives Ergebnis von der ungeordneten Ausführung des zugehörigen physikalischen Mikrobe­ fehls. Der Ergebnisdatenwert kann entweder ein Integer-Daten­ wert oder ein Gleitkomma-Datenwert sein. Bei einem Ausführungs­ beispiel weist das Ergebnisdatenwertfeld jedes ROB-Eintrags RE0 bis REn 86 Bits zum Unterbringen sowohl von Integer- als auch von Gleitkomma-Datenwerten auf.
Die Flags und die Flag-Maske stellen spekulative Architek­ tur-Flag-Informationen zur Verfügung. Die spekulativen, archi­ tektonischen Flag-Informationen werden beim Ausscheiden des zugehörigen ROB-Eintrags zu den architektonischen Flags der Real-Register-Schaltung 1144 übertragen.
Das logische Ziel LDST spezifiziert ein Register mit fest­ geschriebenem Zustand in der Real-Register-Schaltung 1144. Der Ergebnisdatenwert des zugehörigen ROB-Eintrags wird während des Ausscheidens des ROB-Eintrags in das von LDST spezifizierte Register mit festgeschriebenem Zustand übertragen.
Die Fehlerdaten enthalten Fehlerinformationen für den feh­ lerhaft verarbeitenden Mikrobefehlscode, der in der Instrukti­ onsheranhol- und Mikrobefehlsausgabeschaltung 1132 ausgeführt wird. Wenn ein Fehler auftritt, liest der Fehlerhandhabungsmi­ krobefehl die Fehlerdaten, um die Fehlerursache festzustellen.
Der IPDELTA ist ein Makroinstruktionszeiger-Deltawert, der die zu dem physikalischen Register gehörige Makroinstruktion identifiziert.
Die Umordnungsschaltung 1142 empfängt die physikalischen Mikrobefehle pmop_0 bis pmop_3 über den Bus 1152 für physikali­ sche Mikrobefehle. Die Umordnungsschaltung 1142 liest die von den physikalischen Mikrobefehlen pmop_0 bis pmop_3 spezifizier­ ten Quelldaten von dem Umordnungspuffer 1182. Die Umordnungs­ schaltung 1142 überträgt die Ergebnisdatenwerte und die Gültig- Flags von den durch die physikalischen Quellen psrc1 und psrc2 der physikalischen Mikrobefehle spezifizierten ROB-Einträge zu der Reservierungs- und Abfertigungsschaltung 1138 über den Quelldatenbus 1158.
Beispielsweise werden die Ergebnisdatenwerte und die Gül­ tig-Flags von den von den physikalischen Quellen psrc1 und psrc2 des pmop_0 spezifizierten ROB-Einträgen als Quelldaten src1/src2 data_0 über den Quelldatenbus 1158 übertragen. Die Quelldaten src1/src2 data_0 stellen von den physikalischen Quellen psrc1 und psrc2 des pmop_0 spezifizierte Quelldaten zur Verfügung, wenn die zugehörigen Gültig-Flags gültige Quelldaten anzeigen.
In ähnlicher Weise überträgt die Umordnungsschaltung 1142 Ergebnisdatenwerte und Gültig-Flags von den zugehörigen ROB- Einträgen als Quelldaten src1/src2 data_1 bis Quelldaten src1/src2 data_3 über den Quellbus 1158 für die physikalischen Mikrobefehle pmop_1 bis pmop_3.
Die Umordnungsschaltung 1142 löscht die Gültig-Bits der durch die physikalischen Ziele pdst der physikalischen Mikrobe­ fehle pmop_0 bis pmop_3 spezifizierten ROB-Einträge, die über den Bus 1152 für physikalische Mikrobefehle empfangen wurden. Die Umordnungsschaltung 1142 löscht die Gültig-Bits, um anzu­ zeigen, daß der zugehörige Ergebnisdatenwert nicht gültig ist, da die physikalischen Mikrobefehle pmop_0 bis pmop_3, die diesen Ergebnisdatenwert erzeugen, in der Reservierungs- und Abfertigungsschaltung 1138 assembliert werden.
Die Umordnungsschaltung 1142 empfängt die logischen Ziele ldst_0 bis ldst_3 und die Makroinstruktions-Zeigerdeltas mipd_0 bis mipd_3 über den Bus 1154 für logische Ziele. Die Umord­ nungsschaltung 1142 speichert die logischen Ziele ldst_0 bis ldst_3 in die LDST-Felder der von den physikalischen Zielen pdst der physikalischen Mikrobefehle pmop_0 bis pmop_3 spezifi­ zierten ROB-Einträge. Die Umordnungsschaltung 1142 speichert die Makroinstruktions-Zeigerdeltas mipd_0 bis mipd_3 in die IPDELTA-Felder der durch die physikalischen Ziele pdst der physikalischen Mikrobefehle pmop_0 bis pmop_3 spezifierten ROB- Einträge.
Beispielsweise speichert die Umordnungsschaltung 1142 ld­ st_0 und mipd_0 in die von dem physikalischen Ziel pdst des pmop_0 spezifizierten LDST- und IPDELTA-Felder des ROB. Das logische Ziel in dem LDST-Feld eines ROB-Eintrags spezifiziert ein Register mit festgeschriebenem Zustand in der Real-Regi­ ster-Schaltung 1144 zum Ausscheiden des zugehörigen ROB-Ein­ trags. Das Makroinstruktions-Zeigerdelta in dem IPDELTA-Feld eines ROB-Eintrags spezifiziert die ursprüngliche Makroinstruk­ tion des zugehörigen ROB-Eintrags.
Die Umordnungsschaltung 1142 empfängt Informationen zum Rückschreiben spekulativer Ergebnisse von der Ausführungsschal­ tung 1140 über den Ergebnisbus 1162. Informationen zum Rück­ schreiben spekulativer Ergebnisse von den Ausführungseinheiten EU0 bis EU4 enthalten Ergebnisdatenwerte, physikalische Ziele pdst und Fehlerdaten.
Die Umordnungsschaltung 1142 speichert die Informationen zum Rückschreiben spekulativer Ergebnisse von den Ausführungs­ einheiten EU0 bis EU4 in die von den physikalischen Zielen pdst auf dem Ergebnisbus 1162 spezifizierten ROB-Einträge. Für jede Ausführungseinheit EU0 bis EU4 speichert die Umordnungsschal­ tung 1142 den Ergebnisdatenwert in das Ergebnisdatenwertfeld und speichert die Fehlerdaten des von dem physikalischen Ziel pdst spezifizierten ROB-Eintrags.
Die Ergebnisdatenwerte von den Ausführungsschaltungen 1140 enthalten jeweils ein Gültig-Flag. Jedes Gültig-Flag wird in dem Gültig-Flag-Feld des von dem physikalischen Ziel pdst spezifizierten ROB-Eintrags gespeichert. Die Ausführungseinhei­ ten EU0 bis EU4 setzen die Gültig-Flags, um anzuzeigen, ob die zugehörigen Ergebnisdatenwerte gültig sind.
Die Umordnungsschaltung 1142 empfängt die physikalischen Ausscheideziele über den Ausscheidehinweisbus 1170. Die physi­ kalischen Ausscheideziele veranlassen die Umordnungsschaltung 1142, die spekulativen Ergebnisdatenwerte in den ROB-Einträgen RE0 bis REn auf den architektonischen Zustand festzuschreiben, in dem die spekulativen Ergebnisdatenwerte zu der Real-Regi­ ster-Schaltung 1144 über den Ausscheidebus 1164 übertragen werden.
Der Ausscheidebus 1164 führt die spekulativen Ergebnisse für einen Satz von ausscheidenden Mikrobefehlen rm_0 bis rm_4. Jeder ausscheidende Mikrobefehl rm_0 bis rm_4 weist einen Ergebnisdatenwert und ein logisches Ziel ldst von einem der ROB-Einträge RE0 bis REn auf.
Die ausscheidenden physikalischen Ziele von der Ausscheide­ logikschaltung 1164 veranlassen die Umordnungsschaltung 1142 außerdem dazu, die Makroinstruktions-Zeigerdeltas für die ausscheidenden ROB-Einträge über den Makroinstruktions-Zeiger- Offset-Bus 1120 zu der Neustartschaltung 1148 zu übertragen.
Die Umordnungsschaltung 1142 empfängt das Umordnungs-Lösch­ signal 1178 von der Neustartschaltung 1148. Das Umordnungs- Löschsignal 1178 veranlaßt die Umordnungsschaltung 1142, alle ROB-Einträge zu löschen.
Fig. 12 zeigt eine Lade-Speicher-Schaltung in der Ausfüh­ rungsschaltung 1240. Die Lade-Speicher-Schaltung weist eine Adreßerzeugungsschaltung 1200, eine Speicherordnungsschaltung 1202, eine Datenübersetzungs-Nachschlage-Puffer(DTLB)-Schaltung 104 und eine Daten-Cache-Speicherschaltung 1206 auf.
Die Adreßerzeugungsschaltung 1200 empfängt zugeteilte phy­ sikalische Lade-Speicher-Mikrobefehle von der Reservierungs- und Abfertigungsschaltung 1238 über den Mikrobefehls-Abferti­ gungsbus 1260. Jeder abgefertigte physikalische Lade-Speicher- Mikrobefehl auf dem Mikrobefehls-Abfertigungsbus 1260 weist einen Befehlscode, ein Paar Quelldatenwerte src1_data und src2_data, ein physikalisches Ziel pdst und eine Lade-Puffer- Kennung lbid auf.
Die Adreßerzeugungsschaltung 1200 bestimmt für jeden abge­ fertigten physikalischen Lade-Speicher-Mikrobefehl eine den Quelldatenwerten src1_data und src2_data entsprechende lineare Adresse. Die lineare Adresse kann auch als virtuelle Adresse bezeichnet werden. Bei einem Ausführungsbeispiel enthält die Adreßerzeugungsschaltung 1200 Speichersegmentregister und erzeugt die lineare Adresse gemäß der Speichersegmentierung der Mikroprozessoren mit Intel-Architektur. Die Adreßerzeugungs­ schaltung 1200 überträgt lineare Lade-Speicher-Mikrobefehle zu der Speicherordnungsschaltung 1202 über einen linearen Operati­ onsbus 1290. Jede lineare Lade-Speicher-Operation auf dem linearen Operationsbus 1290 entspricht einem über den Mikrobe­ fehl-Abfertigungsbus 1260 empfangenen, abgefertigten physikali­ schen Lade-Speicher-Mikrobefehl. Jeder lineare Lade-Speicher- Mikrobefehl enthält den Befehlscode des zugehörigen physikali­ schen Lade-Speicher-Mikrobefehls die von den zugehörigen Quelldatenwerten src1_data und src2_data bestimmte lineare Adresse, das zugehörige physikalische Ziel pdst und die zugehö­ rige Lade-Puffer-Kennung lbid.
Die Speicherordnungsschaltung 1202 enthält einen Lade-Puf­ fer. Die Speicherordnungsschaltung 1202 empfängt die linearen Lade-Speicher-Mikrobefehle über den linearen Operationsbus 1290. Die Speicherordnungsschaltung 1202 speichert die linearen Lade-Speicher-Mikrobefehle entsprechend der zugehörigen Lade- Puffer-Kennung lbid in den Lade-Puffer. Die Speicherordnungs­ schaltung 1202 teilt die linearen Lade-Speicher-Mikrobefehle von dem Lade-Puffer der DTLB-Schaltung 104 über den linearen Operationsbus 1290 zu.
Die DTLB-Schaltung 1204 empfängt die zugeteilten linearen Lade-Speicher-Mikrobefehle von der Speicherordnungsschaltung 1212 über den linearen Operationsbus 1290. Die DTLB-Schaltung 1204 stellt der Daten-Cache-Speicherschaltung 106 über einen Lese-Bus 1294 für jeden von der Speicherordnungsschaltung 1202 empfangenen linearen Lade-Speicher-Mikrobefehl eine physikali­ sche Adresse zur Verfügung.
Die DTLB-Schaltung 1204 konvertiert die zugehörigen lineare Adresse l_addr in eine physikalische Adresse für das Speicher­ subsystem 1226. Die DTLB-Schaltung 1204 bildet die lineare Adresse l_addr jedes linearen Lade-Speicher-Mikrobefehls gemäß einem vorgegebenen Speicher-Seitenabbildungsmechanismus in eine physikalische Adresse ab.
Die DTLB-Schaltung 1204 überträgt die der linearen Adresse l_addr jedes linearen Lade-Speicher-Mikrobefehls zugeordnete, abgebildete physikalische Adresse über einen Bus 1296 für physikalische Adressen zu der Speicherordnungsschaltung 1212. Die Speicherordnungsschaltung 1212 speichert die physikalischen Adressen für jeden linearen Lade-Speicher-Mikrobefehl in dem zugehörigen Lade-Puffer-Eintrag. Bei einem Ausführungsbeispiel speichert die Speicherordnungsschaltung 1202 einen Teil der physikalischen Adressen für jeden linearen Lade-Speicher-Mikro­ befehl in dem zugehörigen Lade-Puffer-Eintrag.
Die Daten-Cache-Speicherschaltung 1206 liest die von der physikalischen Adresse auf dem Lese-Bus 1294 spezifizierten Daten. Wenn die physikalische Adresse einen Cache-Speicher- Fehlversuch verursacht, holt die Daten-Cache-Speicherschaltung 1206 die benötigte Cache-Speicherzeile von dem Speichersubsy­ stem 1226 heran. Die Daten-Cache-Speicherschaltung 1206 emp­ fängt über einen Schnittstellenbus 1274 und die Schnittstellen­ schaltung 1230, die mit dem Mehrprozessorbus 1228 gekoppelt ist, Cache-Speicherzeilen von dem Speichersubsystem 1226.
Die Daten-Cache-Speicherschaltung 1206 überträgt die Lese­ operations-Ergebnisdaten, eine zugehöriges Gültig-Bit und Fehlerdaten für den Lesezugriff zu der Umordnungsschaltung 1222 und der Reservierungs- und Abfertigungsschaltung 1238 über den Ergebnisbus 1262. Der Ergebnisbus 1262 führt außerdem das physikalische Ziel von dem zugehörigen Lade-Puffer in der Speicherordnungsschaltung 1202. Die Speicherordnungsschaltung 1206 tastet die Buszyklen auf dem Mehrprozessorbus 1228 über die Busschnittstellenschaltung 1230 und den Schnittstellenbus 1274 ab bzw. überwacht (snoops) diese.
Die Speicherordnungsschaltung 1202 überwacht (snoops) den Mehrprozessorbus 1228 bezüglich einer externen Speicheropera­ tion oder einer Leseoperation für eine Besitzoperation von einem der Prozessoren 1223 bis 1224, die eine Prozessorord­ nungsverletzung für eine der zugeteilten linearen Lade-Spei­ cher-Mikrobefehle verursachen könnte. Die Speicherordnungs­ schaltung überwacht bzw. snoops den Mehrprozessorbus 1228 im Hinblick auf eine externe Speicheroperation, die auf die physi­ kalische Adresse einer in dem Lade-Puffer gespeicherten, be­ reits zugeteilten linearen Lade-Speicher-Mikrobefehls zielt.
Während des Ausscheidens jedes physikalischen Lade-Spei­ cher-Mikrobefehls erzeugt die Speicherordnungsschaltung 1202 die Speicherordnungs-Neustartsignale 1276, um eine mögliche Prozessorordnungsverletzung entsprechend der Snoop-Erfassung anzuzeigen.
Fig. 13 zeigt den Prozessor 1320 gemäß einem Ausführungs­ beispiel der Erfindung. Der Prozessor 1320 weist einen internen Daten-Cache-Speicher 1302, eine Speicher-Zugriffsschaltung 1304, eine Instruktionsheranholpipeline 1306, eine Außer-der- Reihe-Abfertigungsschaltung 1308 und eine Ausführungsschaltung 1310 auf. Der Prozessor 1320 weist außerdem eine geordnete Warteschlangenschaltung 1300, eine Snoop-Warteschlangenschal­ tung 1312 und eine Warteschlangenschaltung 1314 für ausstehende Transaktionen auf.
Die Instruktionsheranholpipeline 1306 holt gemäß einer se­ quentiellen Programmordnung einen Instruktionsstrom von dem Speichersubsystem 1326 heran. Die Instruktionsheranholpipeline 1306 überträgt den Instruktionsstrom zu der Außer-der-Reihe- Abfertigungsschaltung 1308. Die Abfertigungsschaltung 1308 fertigt die Instruktionen des Instruktionsstromes entsprechend der Verfügbarkeit der Quelldaten der Instruktionen und der Ausführungsressourcen in der Ausführungsschaltung 1310 und nicht in der sequentiellen Programmreihenfolge an die Ausfüh­ rungsschaltung 1310 ab.
Die Abfertigungsschaltung 1308 fertigt Speicherzugriffsin­ struktionen, einschließlich Lade- und Speicherinstruktionen, an die Speicherzugriffsschaltung 1304 ab. Die Speicherzugriffs­ schaltung 1304 führt die Speicherzugriffsinstruktionen durch Zugreifen auf den internen Daten-Cache-Speicher 1302 aus. Die Speicherzugriffsschaltung 1304 gibt Kommunikationstransaktionen in die Warteschlangenschaltung 1314 für ausstehende Transaktio­ nen ein. Jeder Eintrag in die Transaktions-Warteschlangenschal­ tung 1314 entspricht einer von dem Prozessor 1320 über dem Bus 1330 ausgegebenen Kommunikationstransaktion. Jeder Eintrag in der Transaktions-Warteschlangenschaltung 1314 zeigt an, ob die zugehörige Kommunikationstransaktion verzögert ist und zeigt den Cache-Speicherendzustand für die Cache-Speicherzeile ent­ sprechend der Beendigung der Kommunikationstransaktion an.
Die In-der-Reihenfolge-Warteschlangenschaltung 1300 proto­ kolliert Bustransaktionsinformationen für den Bus 1330. Jeder Eintrag in der geordneten Warteschlangenschaltung 1300 ent­ spricht einer Transaktion auf den Bus 1330. Jeder Eintrag in der geordneten Warteschlangenschaltung 1300 enthält den Status der DEFER- und HITM-Signale für die zugehörigen Transaktionen. Die Transaktions-Warteschlangenschaltung 1314 erhält Informa­ tionen zur Bestimmung des Cache-Speicher-Endzustandes für Kommunikationstransaktionen von der Warteschlangenschaltung 1300.
Die Snoop-Warteschlangenschaltung 1312 liest den Status der DEFER- und HITM-Signale von der geordneten Warteschlangenschal­ tung 1300. Die Snoop-Warteschlangenschaltung 1312 bestimmt Snoop-Besitzübertragungen für jeden Eintrag der geordneten Warteschlangenschaltung 1300. Die Snoop-Warteschlangenschaltung 1312 bestimmt, ob eine Aktion erfordert, daß der Prozessor 1320 den Snoop-Besitz für eine Cache-Speicherzeile erlangt oder verschiebt den Snoop-Besitz für die Cache-Speicherzeile oder gewinnt den Snoop-Besitz während einer verzögerten Transaktion zurück.
Die Speicherzugriffsschaltung 1304 und die Transaktions- Warteschlangenschaltung 1314 halten die Cache-Speicherzustände für die Cache-Speicherzeilen in dem internen Cache-Speicher 1310 aufrecht. Die Cache-Speicherzustände für den internen Daten-Cache-Speicher 13,02 enthalten einen modifizierten Zu­ stand, einen exklusiven Zustand, einen geteilten Zustand und einen ungültigen Zustand (MESI). Eine Cache-Speicherzeile mit ungültigem Zustand ist in dem internen Daten-Cache-Speicher 1302 keine Variable.
Eine Cache-Speicherzeile in dem modifizierten Zustand wird in modifizierter Form in dem internen Daten-Cache-Speicher 1302 gespeichert. Eine modifizierte Cache-Speicherzeile in dem internen Daten-Cache-Speicher 1302 ist derzeitig nicht in dem Speichersubsystem 1326 oder in einem gültigen Zustand in ir­ gendeinem internen Daten-Cache-Speicher der Prozessoren 1321 bis 1323 oder dem Eingabe/Ausgabe-Subsystem 1325. Eine modifi­ zierte Cache-Speicherzeile in dem internen Daten-Cache-Speicher 1302 ist in ähnlicher Weise nicht in dem Speichersubsystem 1355 oder in irgendeinem der internen Daten-Cache-Speicher der Prozessoren 1350 bis 1352 oder dem Eingabe/Ausgabe-Subsystem 1354 gespeichert.
Eine Cache-Speicherzeile im exklusiven Zustand ist in dem internen Daten-Cache-Speicher 1302 gespeichert. Die Cache- Speicherzeile im exklusiven Zustand liegt außerdem entweder im Speichersubsystem 1326 oder dem Speichersubsystem 1355 aktuell vor.
Eine Cache-Speicherzeile in dem geteilten Zustand wird in dem internen Daten-Cache-Speicher 1302 gespeichert. Die Cache- Speicherzeile in dem geteilten Zustand kann außerdem in einem internen Daten-Cache-Speicher von einem der Prozessoren 1321 bis 1322 oder 1350 bis 1352 gespeichert sein und liegt entweder in dem Speichersubsystem 1326 oder dem Speichersubsystem 1355 aktuell vor.
Fig. 14 zeigt die Knotenschnittstellenschaltung 1424 für ein Ausführungsbeispiel der Erfindung. Die Knotenschnittstel­ lenschaltung 1424 weist eine In-der-Reihenfolge-Warteschlangen­ schaltung 1470, eine Eingangs-Warteschlangenschaltung 1474 und eine Abgangs-Warteschlangenschaltung 1476 auf. Die Knoten­ schnittstellenschaltung 1424 weist außerdem eine Konflikt- Erfassungsschaltung 1472, einen Cache-Speicher-Kohärenz-Manager 1478 und eine Fern-Schnittstellenschaltung 1480 auf.
Die In-der-Reihe-Warteschlangenschaltung 1470 protokolliert Kommunikationstransaktionsinformationen für den Bus 1430. Jeder Eintrag in der Warteschlangenschaltung 1470 entspricht einer Transaktion auf dem Bus 1430. Die Warteschlangenschaltung 1470 überträgt Kommunikationstransaktionen, die Zugriff auf die Busgruppe 1412 erfordern, in die Eingangs-Warteschlangenschal­ tung 1474. Die In-der-Reihe-Warteschlangenschaltung 1470 er­ zeugt verzögerte Antworttransaktionseinträge in der Abgangs- Warteschlangenschaltung 1476 für solche Kommunikationstransak­ tionen, die den Zugriff auf die Busgruppe 1412 erfordern und folglich für eine spätere verzögerte Antwort-Transaktion.
Die Fern-Schnittstellenschaltung 1480 greift auf Kommunika­ tionstransaktionen von der Eingangs-Warteschlangenschaltung 1474 zu und führt den geforderten Zugriff zu der Busgruppe 1412 über den Systemverbindungsbus 1440 aus. Die Fern-Schnittstel­ lenschaltung 1480 sammelt zurückgegebene Cache-Speicherzeilen- Daten und den Snoop-Status von der Bus-Gruppe 1412 und schreibt die Cache-Speicherzeilen-Daten und den Snoop-Status in die zugehörigen Verzögerte-Antwort-Transaktionseinträge in der Abgangs-Warteschlangenschaltung 1476. Die Abgangs-Warteschlan­ genschaltung 1476 gibt die assemblierten verzögerten Antwort­ transaktionen über den Bus 1430 aus. Die Fern-Schnittstellen­ schaltung 1480 entfernt die beendeten Ferntransaktionen aus der Eingangs-Warteschlangenschaltung 1474.
Die Konflikt-Erfassungsschaltung 1472 greift auf die Ein­ gangs-Warteschlangenschaltung 1474 und die In-der-Reihe-Warte­ schlangenschaltung 1470 zu. Die Konflikt-Erfassungsschaltung 1472 bestimmt, ob eine von der In-der-Reihe-Warteschlangen­ schaltung 1470 protokollierte Transaktion auf dieselbe Cache- Speicherzeile gerichtet ist, auf die eine Ferntransaktion in der Eingangs-Warteschlangenschaltung 1474 protokolliert ist. Die Konflikt-Erfassungsschaltung 1472 gibt einen Invalidiere­ eine-Zeile-Eintrag für eine Rückinvalidierungstransaktion in die Abgangs-Warteschlangenschaltung 1426 ein, wenn der in Konflikt stehende Fernzugriff auf eine Cache-Speicherzeile erfaßt wird. Die Rückinvalidierungstransaktion wird später über den Bus 1430 ausgegeben, um ein erneutes Versuchen des Kon­ fliktzugriffes zu veranlassen.
Fig. 15 zeigt ein Beispiel eines Abbruch- und Neuabferti­ gungsprozesses. Es ist eine Programmablaufsequenz 1501 mit mehreren Zuständen 1502 bis 1512 dargestellt. Die spekulative Verarbeitung führt dazu, daß eine spekulative Ladeoperation R2 vor einer früheren Ladeoperation R1 beendet wird. Diese Verlet­ zung wird durch Überwachen (snooping) des Ladeoperationspuffers bei Ausführung der externen Speicheroperation W2 erfaßt. Die erfaßte Verletzung führt dazu, daß die R2-Ladeoperation 1508 zusammen mit allen anderen nachfolgenden Zuständen 1509 bis 1512 gelöscht wird. Später wird die R2-Ladeoperation neu zuge­ teilt. Außerdem werden alle folgenden spekulativen Zustände 1514 bis 1516 neu berechnet.
Bei dem derzeitig bevorzugten Ausführungsbeispiel wird nur eine Untermenge der physikalischen Adreßbits überwacht (snooped). Dieses Ausführungsbeispiel kann falsche Snoop-Tref­ fer verursachen, wenn die Teiladresse mit einer Alias-Adresse übereinstimmt. Falsche Snoop-Treffer sind im Hinblick auf die Richtigkeit der Prozessorordnung kein Problem. Jedoch führen die falschen Snoop-Treffer zur Erzeugung falscher Fehler und Fehlerbehebungen. Übermäßig viele falsche Snoop-Treffer würden die Leistung vermindern. Die Verwendung einer Untermenge von physikalischen Adreßbits ist daher ein Kompromiß zwischen der Hardwarespeicherung der Adresse und der Leistungssteigerung. Außerdem verwaltet das Speichersystem Speicheroperationen in Blöcken (chunks) von Cache-Speicherzeilen (z. B. 32 Bytes), so daß die Speicheroperation nur über diesen Bereich (z. B. 32 Bytes) sichtbar ist.
Fig. 16 ist ein Ablaufdiagramm, daß die Schritte zur Er­ stellung eines Speicherkonsistenzmodells (d. h. Prozeßordnung) in einem Mehrprozessorsystem beschreibt. Im Schritt 1601 wird den Speicheroperationen eine strikte Prozessorordnung aufer­ legt. In anderen Worten, es wird Speicheroperationen nicht ermöglicht, andere Speicheroperationen passieren zu lassen. Ladeoperationen können andere Ladeoperationen oder andere Speicheroperationen passieren lassen. Wenn ein anderer Prozes­ sor eine Speicheroperation ausführt, wird der Ladeoperati­ onspuffer des ursprünglichen Prozessors überwacht (snooped), Schritte 1603 und 1604. Im Schritt 1605 wird bestimmt, ob die Snoop-Operation zu einem Treffer führt. Ein Treffer tritt auf, wenn die Speicheroperation mit einer derzeitig in dem Ladeope­ rationspuffer angeordneten Ladeoperation übereinstimmt. Wenn die Snoop-Operation nicht zu einem Treffer führt (d. h. einem Fehlversuch), wird der Schritt 1601 wiederholt. Es ist zu beachten, daß nicht-überwachten (non-snooped) und überwachten (snooped) aber keinen Treffer erzeugenden Ladeoperationen gestattet wird, auf normale Weise im Schritt 1606 auszuschei­ den.
Wenn die Snoop-Operation zu einem Treffer führt, wird be­ stimmt, ob der Ladeoperationspuffer eine frühere Ladeoperation enthält, die noch aussteht, Schritt 1607. Wenn es eine solche frühere ausstehende Ladeoperation nicht gibt, dann können die beendeten Speicheroperationen und die spekulativen Ladeopera­ tionen im Schritt 1606 ausscheiden. Der Begriff Ausscheiden bezieht sich auf die Tätigkeit des Entfernens eines beendeten Mikrobefehls von dem Umordnungspuffer und auf das Festschreiben seines Zustandes auf den permanenten architektonischen Zustand, der von der ursprünglichen Instruktion vorgesehen war. Schritt 1601 wird nach Schritt 1606 wiederholt. Andernfalls ist ein Prozessorfehler aufgetreten und erfaßt worden. Der Fehler führt zur Erzeugung eines Fehlersignals. Das Fehlersignal von dem Speichersubsystem wird,zum Abbrechen der illegalen Ladeopera­ tion (d. h. der Ladeoperation, die den Fehler verursachte) verwendet, Schritt 1608. Danach wird die der illegalen Ladeope­ ration folgende Programmsequenz abgebrochen und zu einer späte­ ren Zeit neugestartet, Schritt 1609. Das Verfahren wird begin­ nend am Schritt 1601 wiederholt.
Die Fig. 17 und 18 sind Ablaufdiagramme, die die Handhabung einer Kommunikationstransaktion durch die Knotenschnittstellen­ schaltung darstellen. Beim Block 1700 initiiert ein den Bus anfordernder Teilnehmer eine Kommunikationstransaktion über den Bus.
Im Entscheidungsblock 1702 bestimmt die Knotenschnittstel­ lenschaltung, ob die von der Kommunikationstransaktion spezifi­ zierte Anforderung in der Bus-Gruppe erfüllt werden kann. Wenn die Anforderung in der Bus-Gruppe beendet werden kann, dann geht die Steuerung zum Block 1704 weiter. Im Block 1704 been­ det die Knotenschnittstellenschaltung die angeforderte Kommuni­ kationstransaktion geordnet, d. h. indem die Kommunikations­ transaktion nicht verzögert bzw. zurückgestellt wird.
Wenn die Knotenschnittstellenschaltung im Entscheidungs­ block 1702 feststellt, daß die Anforderung nicht in der Bus- Gruppe erfüllt werden kann, dann geht die Steuerung zu dem Entscheidungsblock 1706 weiter. Im Entscheidungsblock 1706 bestimmt die Konflikt-Erfassungsschaltung, ob eine verzögerte Transaktion ansteht, die mit der Kommunikationstransaktion in Konflikt gerät. Eine anstehende verzögerte Transaktion gerät mit der Kommunikationstransaktion der anstehenden verzögerten Transaktion in Konflikt, wenn die Kommunikationstransaktion auf die gleiche Cache-Speicherzeile von Daten gerichtet ist. Wenn eine anstehende verzögerte Transaktion nicht mit der Kommunika­ tionstransaktion in Konflikt gerät, dann geht die Steuerung zum Block 1708 weiter.
Im Block 1708 verzögert die Knotenschnittstellenschaltung die Kommunikationstransaktion, indem sie das DEFER-Signal während der Snoop-Phase der Kommunikationstransaktion anlegt und dann eine verzögerte Antwort während der Antwortphase der Kommunikationstransaktion angelegt wird. Die Knotenschnittstel­ le erzeugt außerdem einen Verzögerte-Antwort-Transaktionsein­ trag in der Abgangs-Warteschlange. Danach beendet die Fern- Schnittstellenschaltung im Block 1710 die Kommunikationstrans­ aktion durch Zugriff auf die Bus-Gruppe. Im Block 1710 empfängt die Fern-Schnittstellenschaltung einen neuen Cache-Speicherzu­ stand für die von der Kommunikationstransaktion spezifizierte Cache-Speicherzeile von der Bus-Gruppe und weist den neuen Cache-Speicherzustand und die Cache-Speicherzeilen-Daten, falls erforderlich, in dem zugehörigen Verzögerte-Antwort-Transakti­ onseintrag in der Abgangs-Warteschlange an.
Danach initiiert die Knotenschnittstellenschaltung am Block 1712 die zugehörige verzögerte Antworttransaktion von der Abgangs-Warteschlange auf den Bus. Im Entscheidungsblock 1814 bestimmt die Knotenschnittstellenschaltung, ob die Kommunikati­ onstransaktion ein erneutes Versuchen erfordert. Die Transak­ tion erfordert eine Wiederholung, wenn sie nicht erfolgreich zur Bus-Gruppe 1712 beendet wurde. Wenn die Kommunikations­ transaktion eine Wiederholung im Entscheidungsblock 1814 erfor­ dert, dann geht die Steuerung zum Block 1816 weiter.
Im Block 1816 legt die Knotenschnittstellenschaltung das DEFER-Signal während der Snoop-Phase der verzögerten Antwort­ transaktion an. Danach läßt die Knotenschnittstellenschaltung im Block 1818 den Snoop-Besitz für die von der Kommunikations­ transaktion spezifizierte Cache-Speicherzeile fallen und im Block 1819 zeigt die Knotenschnittstellenschaltung eine Wieder­ holung für die Kommunikationstransaktion an. Der Snoop-Besitz wird von dem ursprünglich anfordernden Busteilnehmer für die Kommunikationstransaktion angenommen.
Wenn die Transaktion im Entscheidungsblock 1814 keinen er­ neuten Versuch erfordert, dann geht die Steuerung zum Entschei­ dungsblock 1820 weiter. Im Entscheidungsblock 1820 bestimmt die Schnittstellenschaltung, ob die von der Kommunikationstransak­ tion spezifierte Cache-Speicherzeile mit einem mit der Bus- Gruppe gekoppelten Busteilnehmer geteilt wird. Wenn die Cache- Speicherzeile geteilt wird, dann geht die Steuerung zum Block 1822 weiter.
Im Block 1822 legt die Knotenschnittstellenschaltung das HIT-Signal oder das HITM-Signal während der Snoop-Phase der verzögerten Antworttransaktion gemäß den Snoop-Ergebnissen für die Kommunikationstransaktion von der Bus-Gruppe an. Wenn die Cache-Speicherzeile nicht geteilt wird, dann geht die Steuerung zum Block 1824 weiter. Im Block 1824 legt die Knotenschnitt­ stellenschaltung das HIT- oder das HITM-Signal während der Snoop-Phase der verzögerten Antworttransaktion nicht an. In jedem Fall gibt die Knotenschnittstellenschaltung den Snoop- Besitz für die Cache-Speicherzeile der Kommunikationstransak­ tion im Block 182,6 an den anfordernden Busteilnehmer weiter.
Wenn eine anhängige verzögerte Transaktion mit der Kommuni­ kationstransaktion nicht in Konflikt steht, dann geht die Steuerung vom Entscheidungsblock 1706 zum Entscheidungsblock 1728 weiter. Im Entscheidungsblock 1728 bestimmt die Knoten­ schnittstellenschaltung, ob mehrere verzögerte Transaktionen aktiviert sind. Wenn nicht mehrere verzögerte Transaktionen aktiviert sind, dann geht die Steuerung zum Block 1730 weiter. Im Block 1730 zeigt die Knotenschnittstellenschaltung einen Neuversuch für die Kommunikationstransaktion an. Der anfor­ dernde Busteilnehmer versucht später erneut die Kommunikations­ transaktion, wobei er zur Beendigung der anhängigen verzögerten Transaktion Zeit verstreichen läßt.
Wenn im Entscheidungsblock 1728 mehrere verzögerte Transak­ tionen aktiviert sind, dann geht die Steuerung zum Block 1732 weiter. Im Block 1732 verzögert die Knotenschnittstellenschal­ tung die Kommunikationstransaktion, indem sie das DEFER-Signal während der Snoop-Phase und eine verzögerte Antwort während der Antwortphase der Kommunikationstransaktion anzeigt.
Danach wird im Block 1734 die erste anhängige verzögerte Transaktion gemäß der Sequenz der Blöcke 1710 bis 1712 und 1814 bis 1826 beendet.
Danach bestimmt der Cache-Speicher-Kohärenz-Manager im Ent­ scheidungsblock 1736, ob ein kollidierender Snoop-Besitz zwi­ schen der im Block 1734 beendeten ersten verzögerten Transak­ tion und der im Block 1732 verzögerten Transaktion (der zweiten verzögerten Transaktion) vorliegt. Ein Snoop-Besitz-Konflikt auf die gleiche Cache-Speicherzeile gerichtet sind. Wenn im Entscheidungsblock 1736 kein kollidierender Snoop-Besitz vor­ liegt, dann geht die Steuerung zum Block 1738 weiter. Im Block 1738 beendet die Knotenschnittstellenschaltung die im Block 1732 verzögerte Kommunikationstransaktion gemäß den Blöcken 1710 bis 1712 und 1814 bis 1826.
Wenn ein kollidierender Snoop-Besitz im Entscheidungsblock 1736 vorliegt, dann geht die Steuerung zum Block 1740 weiter. Die Knotenschnittstellenschaltung initiiert im Block 1740 eine Invalidiere-Zeile-Kommunikationstransaktion auf dem Bus zu dem anfordernden Busteilnehmer für die kollidierende, im Block 1734 beendete verzögerte Transaktion. Die Invalidierungsanforderung ist eine nachträgliche Invalidierung für die erste verzögerte Transaktion, die die Cache-Speicherzeile mit kollidierendem Snoop-Besitz invalidiert. Danach beendet die Knotenschnittstel­ lenschaltung im Block 1742 die im Block 1732 verzögerte Kommu­ nikationstransaktion gemäß den Blöcken 1710 und 1712 und 1814 bis 1826.
Fig. 19 ist ein Ablaufdiagramm, das eine Leseanforderung eines anfordernden Busteilnehmers veranschaulicht. Der anfor­ dernde Busteilnehmer initiiert im Block 1900 eine Lesetransak­ tion auf dem Bus.
Während der Snoop-Phase der Lesetransaktion im Entschei­ dungsblock 1902 tastet der anfordernde Busteilnehmer den Zu­ stand des DEFER- und des HITM-Signals auf dem Bus ab. Wenn im Entscheidungsblock 1902 das DEFER-Signal angelegt und das HITM- Signal nicht angelegt ist, dann geht die Steuerung zu dem Block 1906 weiter. Andernfalls geht die Steuerung zum Block 1904 weiter. Im Block 1904 führt der anfordernde Busteilnehmer normale Cache-Speicherzustandsübergänge aus, da die Lesetrans­ aktion geordnet beendet wird.
Im Block 1906 setzt der anfordernde Busteilnehmer den Snoop-Besitz für die von der Lesetransaktion spezifizierte Cache-Speicherzeile nicht voraus. Im Entscheidungsblock 1908 führt der anfordernde Busteilnehmer eine Prüfoperation im Hinblick auf eine verzögerte Antwort während der Antwortphase der Lesetransaktion aus. Wenn im Entscheidungsblock 1908 keine verzögerte Antwort angezeigt wird, dann geht die Steuerung zum Block 1910 weiter. Im Block 1910 wiederholt der anfordernde Busteilnehmer die Lesetransaktion, wenn der adressierte Bus­ teilnehmer während der Antwortphase der Lesetransaktion Wieder­ holung angezeigt hat.
Wenn im Entscheidungsblock 1908 eine verzögerte Antwort an­ gezeigt wurde, dann geht die Steuerung zum Block 1912 weiter. Im Block 1912 wartet der anfordernde Busteilnehmer auf eine verzögerte Antworttransaktion auf dem Bus. Danach tastet der anfordernde Busteilnehmer im Entscheidungsblock 1914 das DEFER- Signal während der Snoop-Phase der verzögerten Antworttransak­ tion ab. Wenn das DEFER-Signal während der Snoop-Phase der verzögerten Antworttransaktion angelegt ist, dann geht die Steuerung zum Block 1916 weiter. Im Block 1916 hält der anfor­ dernde Busteilnehmer die Cache-Speicherzeile der Lesetransakti­ on weiter im ungültigen Zustand. Danach versucht der anfor­ dernde Busteilnehmer im Block 1918 die Lesetransaktion erneut, indem er die Lesetransaktion über den Bus erneut initiiert.
Wenn das DEFER-Signal während der Snoop-Phase der verzöger­ ten Antworttransaktion im Entscheidungsblock 1914 nicht ange­ legt ist, dann geht die Steuerung zum Entscheidungsblock 1920 weiter. Wenn das MIT-Signal oder das HITM-Signal während der Snoop-Phase der verzögerten Antworttransaktion im Entschei­ dungsblock 1920 nicht angelegt ist, dann geht die Steuerung zum Block 1924 weiter. Im Block 1924 setzt der anfordernde Busteil­ nehmer den Besitz der in der Lesetransaktion spezifizierten Cache-Speicherzeile in dem geteilten Cache-Speicherzustand voraus.
Wenn das HIT- oder das HITM-Signal während der Snoop-Phase der verzögerten Antworttransaktion im Entscheidungsblock 1920 nicht angelegt ist, dann geht die Steuerung zu dem Block 1922 weiter. Im Block 1922 setzt der anfordernde Teilnehmer den Besitz der in der Lesetransaktion spezifizierten Cache-Spei­ cherzeile in dem exklusiven Cache-Speicherzustand voraus.
Fig. 20 ist ein Ablaufdiagramm, das eine Schreibtransaktion oder eine Invalidierungstransaktion von einem anfordernden Busteilnehmer über den Bus veranschaulicht. Im Block 2000 initiiert der anfordernde Busteilnehmer die Schreib- oder Invalidierungstransaktion über den Bus.
Während der Snoop-Phase der Schreib- oder der Invalidie­ rungstransaktion im Entscheidungsblock 2002 tastet der anfor­ dernde Busteilnehmer den Zustand des DEFER- und des HITM-Si­ gnals auf dem Bus ab. Wenn im Entscheidungsblock 2002 das DEFER-Signal angelegt und das HITM-Signal nicht angelegt ist, dann geht die Steuerung zum Block 2006 weiter. Andernfalls geht die Steuerung zum Block 2004 weiter. Im Block 2004 führt der anfordernde Busteilnehmer normale Cache-Speicherzustandsüber­ gänge aus, da die Schreib- oder Invalidierungstransaktion geordnet beendet wird.
Im Block 2006 setzt der anfordernde Busteilnehmer den Snoop-Besitz für die von der Schreib- oder der Invalidie­ rungstransaktion spezifizierte Cache-Speicherzeile nicht vor­ aus. Im Entscheidungsblock 2008 führt der anfordernde Busteil­ nehmer eine Prüfoperation im Hinblick auf eine verzögerte Antwort während der Antwortphase der Schreib- oder der Invali­ dierungstransaktion aus. Wenn im Entscheidungsblock 2008 keine verzögerte Antwort angezeigt wird, dann geht die Steuerung zum Block 2010 weiter. Im Block 2010 versucht der anfordernde Busteilnehmer die Schreib- oder Invalidierungstransaktion erneut, wenn der adressierte Busteilnehmer während der Antwort­ phase der Schreib- oder Invalidierungstransaktion einen Neuver­ such angezeigt hat.
Wenn im Entscheidungsblock 2008 eine verzögerte Antwort an­ gezeigt wird, dann geht die Steuerung zum Block 2012 weiter.
Der anfordernde Busteilnehmer wartet im Block 2012 auf eine verzögerte Antworttransaktion auf dem Bus.
Wenn im Entscheidungsblock 2014 das DEFER-Signal während der Snoop-Phase der verzögerten Antworttransaktion angelegt ist, dann geht die Steuerung zum Block 2016 weiter. Im Block 2016 führt der anfordernde Busteilnehmer keine Cache-Speicher­ zustandsänderungen für die von der Schreib- oder der Invalidie­ rungstransaktion spezifizierte Cache-Speicherzeile aus. Danach versucht der anfordernde Busteilnehmer im Block 2018 die Schreib- oder Invalidierungstransaktion über den Bus erneut.
Wenn das DEFER-Signal während der Snoop-Phase der verzöger­ ten Antworttransaktion im Entscheidungsblock 2014 nicht ange­ legt ist, dann geht die Steuerung zum Entscheidungsblock 2020 weiter. Der anfordernde Busteilnehmer bestimmt im Entschei­ dungsblock 2020, ob das HITM-Signal während der Snoop-Phase der verzögerten Antworttransaktion angelegt ist. Wenn das HITM- Signal im Entscheidungsblock 2020 nicht angelegt ist, dann geht die Steuerung zum Block 2022 weiter. Im Block 2022 ändert der anfordernde Busteilnehmer den Cache-Speicherzustand für die Cache-Speicherzeile der Schreib- oder Invalidierungstransaktion in Abhängigkeit von den SNOOP-Ergebnissen in den exklusiven Zustand oder den modifizierten Zustand.
Wenn das HITM-Signal während der Snoop-Phase im Entschei­ dungsblock 2020 angelegt ist, dann geht die Steuerung zum Block 2024. Im Block 2024 liest der anfordernde Busteilnehmer die Cache-Speicherzeile während der Datenphase der verzögerten Antworttransaktion. Danach verschmilzt der anfordernde Busteil­ nehmer im Block 2026 die zurückgegebene Cache-Speicherzeile mit internen Daten und schreibt die vereinigte Cache-Speicherzeile in den internen Cache-Speicher des anfordernden Busteilnehmers zurück.
Fig. 21 zeigt ein Ablaufdiagramm, das die Schritte zum Aus­ führen einer Transaktion gemäß einem Ausführungsbeispiel der Erfindung beschreibt. Zu Beginn im Schritt 2101, führt der externe Bus eine Snoop-Operation aus. Als nächstes wird im Schritt 2102 bestimmt, ob eine Speichertransaktion auf dem externen Bus aufgetreten ist. Falls dies zutrifft, wird der Schritt 2101 wiederholt. Andernfalls wird im Schritt 2103 bestimmt, ob eine Ladeoperation zur gleichen Adresse aufgetre­ ten ist. Wenn keine Ladeoperation zur gleichen Adresse aufge­ treten ist, wird der Schritt 2101 wiederholt. Andernfalls werden die Ladeoperation und das spekulative Verfahren im Schritt 2104 abgebrochen. Die Ausführung wird dann im Schritt 2105 von der Ladeoperation an neu gestartet.
Fig. 22 zeigt ein Ablaufdiagramm, das die Schritte zeigt, die bei einem Ausführungsbeispiel der Erfindung ausgeführt werden. Zu Beginn, im Schritt 2205, gibt ein Teilnehmer an dem Prozessor-Speicher-Bus eine Anforderung auf den Bus aus, die an einen anderen Teilnehmer an dem Bus oder vielleicht an eine Einrichtung an dem System-I/O-Bus gerichtet ist. Die Anforde­ rung wird in der Anforderungsphase ausgegeben, nachdem dem Prozessor während der Zuteilungsentscheidungsphase der Bus zugeteilt wurde. Wenn keine Fehler auftreten, die einen Abbruch der Anforderung in der Fehlerphase erfordern, führen alle Teilnehmer an dem Bus eine Snoop-Suchfunktion in der Snoop- Phase im Schritt 2210 aus.
Während der Snoop-Phase bestimmt jeder eine Snoop-Suchfunk­ tion ausführende Teilnehmer, ob er eine der Anforderung ent­ sprechende Cache-Speicherzeile in einem modifizierten Zustand aufweist (Schritt 2215). Wenn kein Teilnehmer an dem Bus eine modifizierte Kopie der Cache-Speicherzeile aufweist, dann nimmt jeder Teilnehmer auf dem Bus das Signal HITM# zurück und legt entweder das Signal HIT# an oder nimmt dieses zurück (Schritt 2216). In einigen Situationen können die Cache-Speicherzeilen von Teilnehmern in einem geteilten Zustand sein, und zwar in Abhängigkeit von der Natur der Anforderung; diese Teilnehmer legen ein HIT#-Signal an. Alle anderen Teilnehmer nehmen ein HIT#-Signal zurück. Jeder Teilnehmer auf dem Bus ändert dann den Zustand seiner Cache-Speicherzeile in seinen Ziel-Cache- Speicherzustand (Schritt 2220). Dieser Ziel-Cache-Speicherzu­ stand hängt von der Natur der im Schritt 2205 ausgegebenen und oben detaillierter erörterten Anforderung ab. Der Prozessor empfängt dann von dem Zielteilnehmer und der Speichersteuerein­ richtung in der Antwortphase im Schritt 2225 eine Antwort. Falls erforderlich (z. B. bei einer Leseanforderung) empfängt der Prozessor außerdem Daten von dem Zielteilnehmer in der Datenübertragungsphase.
Wenn jedoch ein eine Snoop-Suchfunktion ausführender Teil­ nehmer eine modifizierte Kopie der zugehörigen Cache-Speicher­ zeile aufweist, dann legt der Prozessor ein HITM#-Signal wäh­ rend der Snoop-Phase im Schritt 2230 an. Außerdem nehmen alle anderen Teilnehmer auf dem Bus ein HIT#-Signal zurück. Der Prozessor nimmt das HIT# zurück, da bei diesem Ausführungsbei­ spiel ein Prozessor beim normalen Betrieb ein HIT# zurücknimmt, wenn er ein HITM# anlegt. Alle anderen Teilnehmer nehmen das HIT# zurück, da kein anderer Teilnehmer eine gültige Kopie der Cache-Speicherzeile aufweisen kann, wenn der Prozessor eine modifizierte Kopie hat. Alle Teilnehmer auf dem Bus überwachen die HIT#- und die HITM#-Signale. Das HITM#-Signal von dem Prozessor informiert sowohl den Prozessor als auch die Spei­ cher-Steuereinrichtung, daß der Prozessor die jüngste Version der angeforderten Cache-Speicher-Zeile hat, und daß jeder Zugriff zu der Cache-Speicherzeile daher die in dem Prozessor enthaltene Kopie der Cache-Speicherzeile einbeziehen sollte. Die Antwort von dem Prozessor und der Speicher-Steuereinrich­ tung auf das HITM#-Signal hängt von der Natur der Anforderung, wie oben detaillierter beschrieben, ab.
Als nächstes muß jeder Teilnehmer an dem Bus den Zustand seiner Cache-Speicherzeile in seinen Ziel-Cache-Speicherzustand ändern (Schritt 2235). Dieser Ziel-Cache-Speicherzustand hängt von der Natur der im Schritt 2205 ausgegebenen Anforderung ab und wird im folgenden detaillierter beschrieben.
Der anfordernde Teilnehmer empfängt während der Antwortpha­ se im Schritt 2240 eine Antwort. Der Inhalt der Antwort hängt von der anfänglichen Anforderung ab, davon, ob der Zielteilneh­ mer antworten kann und ob ein HITM#-Signal von einem Teilnehmer an den Bus angelegt wurde. Wenn das HITM#-Signal von dem Pro­ zessor angelegt wurde, dann werden Daten von dem Prozessor während der Datenübertragungsphase auf den Bus gesendet. Die Speichersteuereinrichtung und/oder der Prozessor können dann die Daten latch-speichern oder von dem Bus wegnehmen. Wie die Speichersteuereinrichtung und/oder der Prozessor die Daten verwenden, hängt von der ursprünglichen Anforderung ab, wie im folgenden detaillierter beschrieben wird.
Der Prozessor sendet die ganze Cache-Speicherzeile in der Datenübertragungsphase im Schritt 2245 auf den Bus, nachdem er das HITM#-Signal angelegt hat. Diese Aktion von dem Prozessor wird als "implizite Rückschreib-Datenübertragung" bezeichnet. Die implizite Rückschreib-Datenübertragung wird von einem Prozessor in der Datenübertragungsphase einer Transaktion ausgeführt, wenn dieser Prozessor ein HITM#-Signal während der Snoop-Phase für die Transaktion anlegt.
Fig. 23 zeigt ein Ablaufdiagramm, das die Schritte während einer Leseanforderung in dem System für ein Ausführungsbeispiel der Erfindung zeigt. Während der Anforderungsphase gibt der anfordernde Prozessor eine Anforderung auf den Bus (Schritt 2305). Die in Fig. 23 dargestellte Anforderung ist eine auf den Hauptspeicher gerichtete Leseanforderung. Wie oben beschrieben, führen alle Teilnehmer an dem Bus eine Snoop-Suchfunktion im Schritt 2310 aus, um festzustellen, ob ein Teilnehmer eine Kopie der angeforderten Cache-Speicherzeile in einem modifi­ zierten Zustand aufweist (Schritt 2315).
Falls kein Teilnehmer an dem Bus eine modifizierte Kopie der Cache-Speicherzeile aufweist, hängen die folgenden Schritte davon ab, ob irgendein Teilnehmer eine in einem gültigen Zu­ stand befindliche Kopie der Cache-Speicherzeile hat (Schritt 2320). Wenn ein Teilnehmer eine in einem gültigen Zustand befindliche Cache-Speicherzeile aufweist, dann legt der Teil­ nehmer ein HIT#-Signal an und nimmt ein HITM#-Signal zurück, Schritt 2325. Alle Teilnehmer ohne eine gültige Kopie nehmen sowohl das HIT#- als auch das HITM#-Signal zurück. Auf diese Weise wissen die Teilnehmer an dem Bus, daß ein oder mehrere Teilnehmer eine gültige Kopie der Cache-Speicherzeile aufwei­ sen, daß aber kein Teilnehmer eine modifizierte Kopie der Cache-Speicherzeile hat. Daher ändert jeder Teilnehmer an dem Bus mit einer gültigen Kopie der Cache-Speicher-Zeile den Zustand dieser Cache-Speicherzeile in den geteilten Zustand (Schritt 2330). Der anfordernde Teilnehmer ändert seinen Zu­ stand für diese Cache-Speicherzeile auch in den geteilten Zustand, da der Prozessor eine gültige Kopie der Cache-Spei­ cherzeile in der Datenübertragungsphase erhalten wird, wie im folgenden beschrieben wird.
Bei einem alternativen in Fig. 24 dargestellten Ausfüh­ rungsbeispiel ändert jeder Teilnehmer in Abhängigkeit von der ursprünglichen Leseanforderung den Zustand in seinen Zielzu­ stand. Wie in Fig. 24 dargestellt, hängt der Zielzustand davon ab, ob die ursprüngliche Anforderung eine Lesezuweisungsanfor­ derung war (Schritt 2428). Der Prozessor kann beispielsweise keine Lesezuweisung anfordern, um anzuzeigen, daß er in seinem Cache-Speicher keine Kopie der Cache-Speicherzeile hält. Wenn der Prozessor eine Lesezuweisung anfordert, dann ändert jeder Teilnehmer an dem Bus mit einer gültigen Kopie der Cache-Spei­ cherzeile, einschließlich dem Prozessor, den Zustand dieser Cache-Speicherzeile in den geteilten Zustand (Schritt 2431). Wenn der Prozessor jedoch keine Lesezuweisung anfordert, dann hält jeder Teilnehmer an dem Bus seinen Cache-Speicherzustand für diese Cache-Speicherzeile aufrecht (Schritt 2432). Auf diese Weise bleibt ein im exklusiven Zustand befindlicher Teilnehmer in diesem Zustand und Teilnehmer im geteilten Zu­ stand bleiben im geteilten Zustand.
Es wird erneut auf den Schritt 2320 in dem Ausführungsbei­ spiel gemäß Fig. 23 Bezug genommen. Wenn kein Teilnehmer an dem Bus eine gültige Kopie der Cache-Speicherzeile aufweist, dann nehmen alle Teilnehmer sowohl das HIT#- als auch das HITM#- Signal im Schritt 2335 zurück. Auf diese Weise ändert der Prozessor seine Kopie der Cache-Speicherzeile in den exklusiven Zustand, da er die Cache-Speicherzeile von der Speichersteuer­ einrichtung in der Datenübertragungsphase empfangen wird; bei allen anderen Teilnehmern bleibt die Cache-Speicherzeile im ungültigen Zustand (Schritt 2340).
Die Speichersteuereinrichtung kommt der Leseanforderung un­ abhängig davon nach, ob ein Teilnehmer eine gültige Kopie der Cache-Speicherzeile hat, da kein Teilnehmer eine modifizierte Kopie der angeforderten Cache-Speicherzeile aufweist. Die Speicher-Steuereinrichtung gibt dem Prozessor in der Antwort­ phase eine normale Antwort aus und sendet die zugehörigen Daten während der Datenübertragungsphase im Schritt 2350 auf den Bus. Der Prozessor ruft die Daten im Schritt 2375 vom Bus ab und beginnt, die Daten wie benötigt zu verwenden.
Es wird erneut auf den Schritt 2315 Bezug genommen. Wenn ein Teilnehmer an den Bus, beispielsweise ein Prozessor, eine modifizierte Kopie der angeforderten Cache-Speicherzeile auf­ weist, dann legt der Prozessor ein HITM#-Signal an und nimmt ein HIT#-Signal während der Snoop-Phase im Schritt 2355 zurück. Alle anderen Teilnehmer an dem Bus nehmen sowohl das HIT#- als auch das HITM#-Signal zurück. Das Anlegen des HITM#-Signals informiert die Speichersteuereinrichtung, daß ein anderer Teilnehmer an dem Bus die jüngste Version angeforderter Daten hat. Auf diese Weise weiß die Speichersteuereinrichtung, daß sie ihre Version der angeforderten Cache-Speicherzeile nicht zu dem Prozessor nicht übertragen soll.
Die Cache-Speicherzustände für diese Cache-Speicherzeile werden auch in den Prozessoren in der Snoop-Phase im Schritt 2360 aktualisiert. Ein Prozessor überträgt den Besitz der Cache-Speicherzeile an den anfordernden Prozessor. In einem Modus ändern beide Prozessoren ihre Cache-Speicherzeilenzustän­ de in dem geteilten Zustand und stellen sicher, daß der Haupt­ speicher seine Version der Cache-Speicherzeile aktualisiert. Ein Ausführungsbeispiel der vorliegenden Erfindung folgt dieser Vorgehensweise, Schritt 2360, aufgrund deren effizienter Hand­ habung von partiellen Rückschreibdatenübertragungen, die im folgenden detaillierter beschrieben werden. In einem anderen Modus könnte der Prozessor die Cache-Speicherzeile zu einem anderen Prozessor übertragen und seine Cache-Speicherzeile in den ungültigen Zustand ändern, während er Prozessor seine Cache-Speicherzeile in den modifizierten oder exklusiven Zu­ stand ändert.
Wenn beide Prozessoren ihre Cache-Speicherzeilenzustände in den geteilten Zustand ändern, legt kein Prozessor in der Snoop- Phase für nachfolgende Transaktionen auf dem Bus ein HITM#- Signal für diese Cache-Speicherzeile an. Die Speichersteuerein­ richtung ist dafür verantwortlich, auf alle nachfolgenden Anforderungen für diese Cache-Speicherzeile zu antworten (bis ein anderer Cache-speichernder Teilnehmer den Besitz der Cache- Speicherzeile wiedergewinnt und seinen Cache-Speicherzeilenzu­ stand in den modifizierten Zustand ändert).
Bei einem anderen, in Fig. 25 gezeigten Ausführungsbeispiel aktualisiert jeder Teilnehmer in Abhängigkeit von der ursprüng­ lichen Leseanforderung seinen Cache-Speicherzustand. Wie in Fig. 25 gezeigt, hängt der Zielzustand davon ab, ob die ur­ sprüngliche Anforderung eine Lesezuweisanforderung war (Schritt 2557). Wenn der Prozessor eine Lesezuweisung anfordert, dann ändert der Teilnehmer mit einer modifizierten Kopie der Cache- Speicherzeile den Zustand dieser Cache-Speicherzeile in dem geteilten Zustand, und der Prozessor ändert seine Cache-Spei­ cherzeile in dem geteilten Zustand (Schritt 2561). Wenn der Prozessor jedoch keine Lesezuweisung anfordert, dann ändert der Teilnehmer mit einer modifizierten Kopie der Cache-Speicher­ zeile diese Cache-Speicherzeile in den exklusiven Zustand und der Prozessor bleibt im ungültigen Zustand (Schritt 2562). Der Teilnehmer mit einer modifizierten Kopie der Cache-Speicher­ zeile bleibt nicht im ungültigen Zustand, da der Hauptspeicher eine Kopie der Cache-Speicherzeile empfängt, wie im folgenden beschrieben wird.
Es wird erneut auf das Ausführungsbeispiel gemäß Fig. 23 Bezug genommen. Für den Fachmann ist es klar, daß, obwohl der Besitz der Cache-Speicherzeile vor der tatsächlichen Übertra­ gung der Cache-Speicherzeilendaten übertragen wird, die Cache- Speicherkonsistenz aufgrund der Pipeline-Natur des Busses erhalten bleibt. Das heißt, eine nachfolgende Anforderung kann darüber informiert werden, daß die Daten von dem Hauptspeicher selbst dann kommen können, wenn die modifizierte Version noch in dem Cache-Speicher des Prozessors ist. Zu der Zeit jedoch, zu der die Datenübertragungsphase für die nachfolgende Anforde­ rung ansteht, sind die Daten bereits zu dem Hauptspeicher in der Datenübertragungsphase einer vorherigen Transaktion über­ tragen worden.
Nach dem Aktualisieren der Cache-Speicherzustände gibt die Speichersteuereinrichtung eine implizite Rückschreibantwort in der Antwortphase im Schritt 2365 an den Prozessor aus. Das Anlegen des HITM#-Signals informiert die Speichersteuereinrich­ tung darüber, daß sie ihre Version der Cache-Speicherzeile nicht zu dem Prozessor übertragen sollte; auf diese Weise gibt die Speichersteuereinrichtung eine implizite Rückschreibantwort anstelle einer normalen Antwort aus. Die implizite Rück­ schreibantwort informiert den Prozessor, daß die Anforderung nicht abgerufen wurde, sondern daß ein anderer Teilnehmer an dem Bus eine modifizierte Kopie der angeforderten Cache-Spei­ cherzeile hat und mit den angeforderten Daten antworten wird.
Der Prozessor sendet die gesamte modifizierte Cache-Spei­ cherzeile in der Datenübertragungsphase im Schritt 2370 auf den Bus. Bei einem Ausführungsbeispiel der vorliegenden Erfindung sendet der Prozessor in Antwort auf ein Signal von der Spei­ chersteuereinrichtung, das anzeigt, daß der Bus zur Datenüber­ tragung bereit ist, auf den Bus. Die Speichersteuereinrichtung gibt dieses Signal während der Antwortphase aus, wenn sie einen verfügbaren Cache-Speicherzeilenpuffer aufweist, in welchen sie die Cache-Speicherzeile eingeben kann. Wie in Fig. 23 gezeigt, nehmen sowohl die Speichersteuereinrichtung als auch der anfor­ dernde Teilnehmer die Daten in den Schritten 2380 bzw. 2375 vom Bus. Der anfordernde Prozessor nimmt die Daten im Schritt 2375 von dem Bus und beginnt sie, wie benötigt zu verwenden.
Die Speichersteuereinrichtung nimmt die Daten ebenfalls (im Schritt 2380) vom Bus. Diese Aktion der Speichersteuereinrich­ tung wird als "Snarfing" der Daten ("Schnorren") bezeichnet, da die Speichersteuereinrichtung die Daten von dem Bus nimmt, die von einem anderen Teilnehmer angefordert wurden. Die Speicher­ steuereinrichtung schreibt die Daten dann im Schritt 2385 zum Hauptspeicher, wobei die Cache-Speicherkonsistenz aufrechtge­ halten wird. Das heißt, wenn der Prozessor Daten anfordert, die in einem modifizierten Zustand in einem anderen Prozessor vorliegen, überträgt der Prozessor, wie oben beschrieben, die Daten zu dem anderen Prozessor und beide Prozessoren ändern ihre Cache-Speicherzeile in den geteilten Zustand. Der geteilte Zustand erfordert jedoch, daß der Hauptspeicher auch die jüng­ ste Version der Cache-Speicherzeile enthält. Auf diese Weise haben durch die Snarf-Operation der Cache-Speicherzeile und das Schreiben der Cache-Speicherzeile in den Hauptspeicher sowohl die Prozessoren als auch der Hauptspeicher die jüngste Kopie der Cache-Speicherzeile.
In einer Mehrbus-Hierarchie dient der Gruppen-Manager als Speichersteuereinrichtung an dem Bus aus- den in der mit Fig. 23 zusammenhängenden Beschreibung genannten Gründen. Beispielswei­ se führt der Gruppen-Manager eine Snarf-Operation der Daten weg vom Bus aus und aktualisiert seinen Cache-Speicher eher, als die die Daten mit der Snarf-Operation wegnehmende Speichersteu­ ereinrichtung. In einer solchen Situation verzögert der Grup­ pen-Manager die Anforderung entweder oder wiederholt sie, abhängig davon, ob der Besitz des Busses der nächsten Ebene verfügbar ist. In dieser Situation wird die globale Transakti­ onsüberwachung, die im Schritt 2340 abgelaufen wäre, sowie das Datensenden auf den Bus im Schritt 2350 in der oben beschriebe­ nen Weise verzögert.
Fig. 26 zeigt ein Ablaufdiagramm, das die von einem Ausfüh­ rungsbeispiel der Erfindung während einer Schreiboperation durchgeführten Schritte beschreibt. Der anfordernde Prozessor gibt während der Anforderungsphase im Schritt 2605 eine Anfor­ derung auf den Bus. Die in Fig. 26 gezeigt Anforderung ist eine auf den Hauptspeicher gezielte Schreiboperation. Alle anderen Teilnehmer an dem Bus führen im Schritt 2610 eine Snoop-Such­ funktion aus, um zu bestimmen, ob ein Teilnehmer eine in einem modifizierten Zustand befindliche Kopie der Cache-Speicherzeile hat, in die geschrieben wird, Schritt 2615.
Außer, daß Teilnehmer eine Snoop-Suchfunktion ausführen, sendet der Prozessor seine Schreibdaten im Schritt 2620 auf den Bus. Die Schreibdaten werden von der Speichersteuereinrichtung im Schritt 2625 empfangen. Wie in Fig. 26 dargestellt, findet diese Schreibdatenübertragung von dem anfordernden Prozessor unabhängig davon statt, ob ein Teilnehmer an dem Bus eine modifizierte oder gültige Kopie der Cache-Speicherzeile auf­ weist. Nach einem Ausführungsbeispiel der Erfindung sendet der Prozessor die Schreibdaten auf den Bus, wenn er in der Snoop- Phase ein Signal von der Speichersteuereinrichtung empfängt, das anzeigt, daß die Speichersteuereinrichtung zur Datenüber­ tragung bereit ist.
In dem Fall, daß kein Teilnehmer an dem Bus eine modifi­ zierte Kopie der Cache-Speicherzeile aufweist, nehmen alle Teilnehmer an dem Bus sowohl das HIT#- als auch das HITM#- Signal im Schritt 2630 zurück. Das Vorliegen der Schreibopera­ tion zeigt allen eine Snoop-Operation ausführenden Teilnehmern, daß ihre Kopie der Cache-Speicherzeile invalidiert werden muß. Alle eine Snoop-Operation ausführenden Teilnehmer ändern auf diese Weise den Zustand ihrer Cache-Speicherzeile in den ungül­ tigen Zustand, Schritt 2635. Die Wegnahme der HIT#- und HITM#- Signale zeigt der Speichersteuereinrichtung an, daß sie der Schreibanforderung nachkommen muß, da in keinem Cache-Speicher eines Teilnehmers eine gültige oder modifizierte Kopie der Cache-Speicherzeile vorliegt. Die Speichersteuereinrichtung gibt daher dem Prozessor in der Antwortphase im Schritt 2640 eine normale Antwort aus. Die Speichersteuereinrichtung, die die Daten im Schritt 2625 empfangen hat, schreibt die Daten dann im Schritt 2645 in den Hauptspeicher, wobei sie die Schreiboperation beendet.
Bei einem anderen, in Fig. 27 dargestellten Ausführungsbei­ spiel liegt jeder Teilnehmer ein HIT#-Signal an oder nimmt dieses zurück und aktualisiert seinen Cache-Speicherzustand, unabhängig von der ursprünglichen Leseanforderung (Schritte 2728). Wenn der Prozessor eine Schreibzuordnung anfordert, dann nehmen alle Teilnehmer die HIT#- und HITM#-Signale im Schritt 2731 zurück. Alle eine Snoop-Operation ausführenden Teilnehmer ändern außerdem im Schritt 2732 den Zustand ihrer Cache-Spei­ cherzeile in den ungültigen Zustand. Wenn der Prozessor jedoch keine Schreibzuordnung anfordert, dann nimmt ein Teilnehmer oder nehmen mehrere Teilnehmer mit einer geteilten oder exklu­ siven Kopie der Cache-Speicherzeile die Daten mit einer Snarf- Operation weg, legt bzw. legen ein HIT#-Signal an und nimmt bzw. nehmen ein HITM#-Signal zurück (Schritt 2737). Der bzw. die Teilnehmer, der bzw. die ein HIT#-Signal angelegt (hat) haben, änder(t/n) den Zustand (seiner) ihrer Cache-Speicherzeile nicht; alle anderen Teilnehmer an dem Bus gehen in den ungülti­ gen Zustand über (Schritt 2739). In einem Modus führt der Teilnehmer bzw. führen die Teilnehmer keine Snarf-Operation an den Daten aus und (legt)legen ein HIT#-Signal an, wenn (er) sie keine gültige Kopie der Cache-Speicherzeile (wünscht)wünschen.
Es wird erneut auf den Schritt 2615 des Ausführungsbei­ spiels gemäß Fig. 26 Bezug genommen. Wenn ein Teilnehmer an dem Bus, beispielsweise der Prozessor, eine modifizierte Kopie der angeforderten Cache-Speicherzeile hat, dann legt der Prozessor ein HITM#-Signal an und nimmt ein HIT#-Signal während der Snoop-Phase zurück (Schritt 2650). Da der Prozessor eine modi­ fizierte Kopie der Cache-Speicherzeile aufweist, legen alle anderen Teilnehmer außerdem ein HIT#-Signal an den Bus. Das Anlegen eines HITM#-Signals informiert die Speichersteuerein­ richtung, daß ein anderer Teilnehmer an dem Bus die jüngste Version der angeforderten Daten hat. Auf diese Weise weiß die Speichersteuereinrichtung, daß das Ausführen der Speicheropera­ tion durch den Prozessor allein die Cache-Speicherkonsistenz nicht aufrechterhalten kann.
Wenn die Schreiboperation durch den Prozessor eine parti­ elle Schreibdatenübertragung ist, dann ist durch diese Schreib­ operation beispielsweise nicht die gesamte Cache-Speicherzeile modifiziert. Wenn eine jüngere Version der Cache-Speicherzeile in dem Cache-Speicher des Prozessors existiert, können Teile der Cache-Speicherzeile in dem Prozessor, in die von dem ande­ ren Prozessor nicht geschrieben wurde, von früheren Schreibope­ rationen modifiziert worden sein. Auf diese Weise würde der Hauptspeicher eine unrichtige Kopie der Daten selbst dann enthalten, wenn er glaubt, daß er die jüngste Kopie hat, sofern die Cache-Speicherzeile in dem Prozessor nicht berücksichtigt würde.
Die Zustände der Cache-Speicherzeile werden in der Snoop- Phase in der oben beschriebenen Weise aktualisiert. Alle eine Snoop-Operation ausführenden Teilnehmer an dem Bus ändern ihre Cache-Speicherzeilen in den ungültigen Zustand im Schritt 2655.
Die Speichersteuereinrichtung hat das von dem Prozessor im Schritt 2650 ausgegebene HITM#-Signal überwacht. Auf diese Weise weiß die Speichersteuereinrichtung, daß eine modifizierte Version der Cache-Speicherzeile in einem Cache-Speicher eines Teilnehmers vorliegt. In Antwort darauf speichert die Prozes­ sorsteuereinrichtung die im Schritt 2625 empfangenen Schreibda­ ten temporär in dem Snarfing-Puffer und hält die Daten in dem Snarfing-Puffer, bis der Rest der Cache-Speicherzeile, wie unten beschrieben wird, über den Bus übertragen wird. Außerdem gibt die Speichersteuereinrichtung eine implizite Rück­ schreibantwort an den Prozessor im Schritt 2660 aus. Die impli­ zite Rückschreibantwort informiert den Prozessor, daß ein anderer Teilnehmer an dem Bus eine modifizierte Kopie der Cache-Speicherzeile aufweist und daß diese modifizierte Cache- Speicherzeile während der Datenübertragungsphase auf den Bus gesendet wird.
Bei einem anderen in Fig. 28 gezeigten Ausführungsbeispiel kann der Teilnehmer, der das HITM#-Signal angelegt hat, die Schreibdaten auch von dem Bus wegnehmen. Ob der Prozessor die Daten von dem Bus nimmt, hängt von der verwendeten Schreibzu­ ordnungspolitik ab (Schritt 2852). Das heißt, wenn der Prozes­ sor keine Schreibzuordnung anfordert, dann nimmt der andere Prozessor die Daten von dem Bus und schreibt die Daten in seinen Cache-Speicher (Schritt 2856). Der Prozessor ändert außerdem seinen Zustand für die Cache-Speicherzeile in den exklusiven Zustand. Wenn der Prozessor jedoch eine Schreibzu­ ordnung anfordert, dann nimmt der andere Prozessor die Daten nicht von dem Bus und ändert seine Cache-Speicherzeile in den ungültigen Zustand (Schritt 2855).
Es wird erneut auf das Ausführungsbeispiel gemäß Fig. 26 Bezug genommen. Der Hauptspeicher enthält die jüngste Version der Cache-Speicherzeile. Dies geschieht so, daß der Hauptspei­ cher aktualisiert wird, anstelle daß kontinuierlich die Teil­ nehmer-Speicher aktualisiert werden.
Der Prozessor gibt daher in der Datenübertragungsphase die gesamte modifizierte Cache-Speicherzeile auf den Bus (Schritt 2665). Diese Datenübertragung ist die implizite Rückschreibda­ tenübertragung. Die implizite Rückschreibdatenübertragung muß durchgeführt werden, damit die Speichersteuereinrichtung mit dem zusätzlichen Teil der Cache-Speicherzeile versorgt wird, in den von dem Prozessor möglicherweise nicht geschrieben wurde. Bei einem Ausführungsbeispiel der Erfindung sendet der andere Prozessor die Cache-Speicherzeile in Antwort auf ein zweites, die Bereitschaft zur Datenübertragung anzeigendes Signal von der Speichersteuereinrichtung auf den Bus. Die Speichersteuer­ einrichtung sendet dieses Signal in der Antwortphase, wenn sie einen verfügbaren Cache-Speicherzeilen-Puffer hat, in den sie die Cache-Speicherzeile eingeben kann.
Die Speichersteuereinrichtung nimmt die modifizierte Cache- Speicherzeile von der impliziten Rückschreibdatenübertragung vom Bus weg (Schritt 2670). In einem Modus werden die Daten in einem Cache-Speicherzeilen-Puffer in der Speichersteuereinrich­ tung temporär gespeichert. Die Daten werden dann mit dem in dem oben beschriebenen Snarfing-Puffer gespeicherten Daten verei­ nigt, und die vereinigte Cache-Speicherzeile wird im Schritt 2675 zu dem Hauptspeicher geschrieben. Um die Vereinigung auszuführen, kombiniert die Speichersteuereinrichtung den Teil der Cache-Speicherzeile in dem Snarfing-Puffer mit den von der impliziten Rückschreibdatenübertragung empfangenen Daten, die nicht mit dem aktualisierten Teil in dem Snarfing-Puffer über­ lappen.
Wichtig ist, daß obwohl sich die obige Beschreibung auf partielle Schreibdatenübertragung richtet, die verwendeten Schritte genauso ihre Anwendung bei einer nichtpartiellen Schreibdatenübertragung finden. Das heißt, wenn die gesamte Cache-Speicherzeile von einer Schreiboperation von dem Prozes­ sor aktualisiert wird, dann wir die gesamte Cache-Speicherzeile in dem Snarfing-Puffer in der Speichersteuereinrichtung gespei­ chert. Wenn die Speichersteuereinrichtung danach die Verschmel­ zung im Schritt 2665 ausführt, sind die in dem Snarfing-Puffer gespeicherten Daten einfach das Ergebnis der Verschmelzung; keine Daten der impliziten Rückschreibdatenübertragung werden bei der Verschmelzung verwendet.
Bei einem Ausführungsbeispiel ändert der anfordernde Pro­ zessor seinen Zustand für die Cache-Speicherzeile in den ungül­ tigen Zustand in der Snoop-Phase. Bei einem anderen Ausfüh­ rungsbeispiel ändert der Prozessor seinen Zustand für die Cache-Speicherzeile in dem geteilten oder dem exklusiven Zu­ stand, und zwar in Abhängigkeit davon, ob ein anderer Teilneh­ mer auch eine Kopie der Cache-Speicherzeile hat. Bei einem Modus nimmt der Prozessor die impliziten Rückschreibdaten mit einer Snarf-Operation von dem Bus, wenn ein HITM#-Signal wäh­ rend der Snoop-Phase angelegt war. Der Prozessor vereinigt die Daten dann mit seinen ursprünglichen Schreibdaten und aktuali­ siert seinen Cache-Speicher mit der vereinigten Cache-Speicher­ zeile. Der Prozessor würde auf diese Weise den Zustand für seine Cache-Speicherzeile in den exklusiven Zustand ändern. Wenn kein HITM#-Signal angelegt war, ändert der Prozessor in einem anderen Modus seinen Cache-Speicherzeilen-Zustand in den exklusiven Zustand oder den geteilten Zustand, wenn andere Teilnehmer an dem Bus eine gültige Kopie der Cache-Speicher­ zeile enthalten.
Der Gruppen-Manager dient als Speichersteuereinrichtung an dem Bus aus den in Zusammenhang mit Fig. 26 erörterten Gründen. Beispielsweise empfängt der Gruppen-Manager Schreibdaten von dem Prozessor, vereinigt sie mit der impliziten Rückschreibda­ tenübertragung von einem anderen Prozessor und speichert die vereinigte Cache-Speicherzeile in seinem eigenen Cache-Spei­ cher. Der Gruppen-Manager hätte auf diese Weise eine modifi­ zierte Kopie der Cache-Speicherzeile für alle nachfolgenden Anforderungen zu dieser Cache-Speicherzeile. Es könnte die Situation auftreten, daß die Cache-Speicherzeile zu der der Prozessor schreibt in der Gruppe ungültig ist, und daß auf den Bus der nächsten Ebene zugegriffen werden muß. In einer solchen Situation verzögert der Gruppen-Manager die Anforderung oder er versucht sie erneut, was davon abhängt, ob der Besitz des Busses der nächsten Ebene verfügbar ist. In dieser Situation wird die globale Transaktionsüberwachung, die in Schritt 2635 stattfindet, sowie der Schreibschritt 2645 in der oben be­ schriebenen Weise verzögert.
Wie in den Fig. 22 bis 26 gezeigt, verhält sich der eine Snoop-Operation aus führende Teilnehmer mit einer modifizierten Kopie der angeforderten Cache-Speicherzeile bei einer Lesean­ forderung und einer Schreibanforderung in ähnlicher Weise. Das heißt, der eine Snoop-Operation ausführende Teilnehmer legt ein HITM#-Signal an und nimmt ein HIT#-Signal zurück und sendet die zugehörige Cache-Speicherzeile zu der richtigen Zeit auf den Bus. Aufgrund dieser ähnlichen Handhabungsweise verwaltet ein Ausführungsbeispiel der Erfindung Schreibdatenübertragungen, partielle Schreibdatenübertragungen und Leseanforderungen mit einer minimalen Logikkomplexität in jedem Teilnehmer.
Fig. 29 zeigt ein Ablaufdiagramm, das die von einem Ausfüh­ rungsbeispiel der Erfindung während einer Invalidierungs-Cache- Speicherzeilen-Anforderung ausgeführten Schritte beschreibt. Wie in Fig. 22 beschrieben wurde, gibt der anfordernde Teilneh­ mer eine Anforderung auf den Bus während der Anforderungsphase im Schritt 2905 aus. Die in Fig. 29 dargestellte Anforderung ist eine Invalidierungsanforderung für eine Cache-Speicher­ zeile. Das heißt, der Prozessor gibt eine Anforderung zum Invalidieren einer bestimmten Cache-Speicherzeile in jedem anderen Cache-Speicher aus. Dies könnte beispielsweise gesche­ hen, wenn der Prozessor eine Kopie der Cache-Speicherzeile in seinem Cache-Speicher im geteilten Zustand aufweist und zu dieser schreiben möchte; der Prozessor kann alle anderen Cache- Speicherzeilen invalidieren und dann seinen Cache-Speicherzu­ stand in den modifizierten Zustand aktualisieren und in die Cache-Speicherzeile in seinem eigenen Cache-Speicher schreiben.
Alle Teilnehmer an dem Bus führen, wie oben beschrieben, eine Snoop-Operation im Schritt 2910 aus, um zu bestimmen, ob ein Teilnehmer eine Kopie der Cache-Speicherzeile in einem modifizierten Zustand aufweist (Schritt 2915). Wenn kein Teil­ nehmer an dem Bus eine modifizierte Kopie der Cache-Speicher­ zeile aufweist, nimmt jeder Teilnehmer die HIT#- und HIM#- Signale im Schritt 2920 zurück. Die Invalidierungsanforderung wird dann für jeden Teilnehmer an dem Bus mit Ausnahme des Prozessor fortgesetzt, wobei die Kopie der Cache-Speicherzeile jedes Teilnehmers invalidiert wird, und der Cache-Speicherzei­ len-Besitz auf den Prozessor übergeht (d. h. die Cache-Speicher­ zeile in dem Prozessor wird in den modifizierten Zustand geän­ dert) (Schritt 2925). Die Speichersteuereinrichtung gibt dann eine normale Beendigungsantwort an den Prozessor im Schritt 2930 aus, und die Verarbeitung geht weiter.
Wenn jedoch ein Teilnehmer an dem Bus, beispielsweise ein anderer Prozessor, eine modifizierte Kopie der angeforderten Cache-Speicherzeile hat, dann legt der andere Prozessor ein HITM#-Signal an und nimmt ein HIT#-Signal während der Snoop- Phase im Schritt 2935 zurück. Alle anderen Teilnehmer an dem Bus nehmen außerdem ein HIT#-Signal während der Snoop-Phase zurück. Das Anlegen des HITM#-Signals informiert den Prozessor, daß ein anderer Teilnehmer an dem Bus derzeit den Besitz der Cache-Speicherzeile hat. Daher muß der Besitz der Cache-Spei­ cherzeile übertragen werden.
Wie oben, werden die internen Cache-Speicherzustände der Prozessoren in der Snoop-Phase modifiziert. Die Cache-Speicher­ zeile in dem Prozessor wird daher in den modifizierten Zustand geändert und die Cache-Speicherzeile in dem anderen Prozessor wird in den ungültigen Zustand geändert (Schritt 2940). Daher erhält der Prozessor im Schritt 2940 den Besitz der Cache- Speicherzeile selbst, wenn die aktuellen Daten noch nicht übertragen wurden.
Das Aktualisieren der Cache-Speicherzustände in der Snoop- Phase garantiert, daß modifizierte Daten nicht verloren gehen. Wenn die nächste Anforderung an den Bus ein Zugriff zu dersel­ ben Cache-Speicherzeile ist, legt der Prozessor daher ein HITM#-Signal an, da er den Besitz der Cache-Speicherzeile hat. Zu der Zeit, zu der die Datenübertragung für diese nächste Anforderung stattfinden muß, hat der Prozessor, wie oben ausg­ eführt wurde, die jüngste Version der Cache-Speicherzeile in seinem Cache-Speicher.
Der andere Prozessor gibt in der Datenübertragungsphase ei­ ne implizite Rückschreibdatenübertragung der Cache-Speicher­ zeile aus (Schritt 2945). Diese Übertragung umfaßt die gesamte zu dem Prozessor übertragene Cache-Speicherzeile. Bei einem Ausführungsbeispiel der Erfindung gibt der andere Prozessor die Cache-Speicherzeile in Abhängigkeit von einem die Bereitschaft zur Datenübertragung anzeigenden Signal von der Speichersteuer­ einrichtung auf den Bus. Die Speichersteuereinrichtung gibt dieses Signal während der Antwortphase aus, wenn sie einen verfügbaren Cache-Speicherzeilen-Puffer hat, in den sie die Cache-Speicherzeile eingeben kann.
Der Prozessor nimmt die Daten vom Bus und die Speichersteu­ ereinrichtung nimmt die Daten mit einer Snarf-Operation vom Bus (Schritt 2950). Die Cache-Speicherzeile in dem Prozessor befin­ det sich nun im modifizierten Zustand und der Hauptspeicher hat außerdem die jüngste Version der modifizierten Cache-Speicher­ zeile. Alternativ könnte der Hauptspeicher seinen Cache-Spei­ cherzustand in den exklusiven Zustand ändern, da der Hauptspei­ cher eine gültige Kopie aufweist. Wie oben in Bezug auf die Fig. 23 bis 28 beschrieben wurde, dient in einer Mehrbus-Hier­ archie der Gruppen-Manager für die anhand 03468 00070 552 001000280000000200012000285910335700040 0002019506734 00004 03349von Fig. 29 erörter­ ten Zwecke als Speichersteuereinrichtung an dem Bus: Beispiels­ weise nimmt der Gruppen-Manager im Schritt 2950 Daten vom Bus. Zur Invalidierung einer Cache-Speicherzeile wird die Cache- Speicherzeile für alle Cache-Speicher in allen Gruppen invali­ diert. Es kann auf diese Weise der Fall auftreten, daß die Cache-Speicherzeile, die invalidiert wird, auch in der Gruppe enthalten ist und daß zu ihrer Invalidierung auf den Bus der nächsten Ebene zugegriffen werden muß. In einer solchen Situa­ tion verzögert der Gruppen-Manager die Anforderung entweder oder er versucht sie erneut, was davon abhängt, ob der Besitz des Busses der nächsten Ebene verfügbar ist. Wie oben beschrie­ ben, wird in dieser Situation die globale Transaktionsüberwa­ chung, die im Schritt 2925 stattgefunden hätte, verzögert.
Bei einem anderen Ausführungsbeispiel der vorliegenden Er­ findung vereinigt der eine Snoop-Operation aus führende Teilneh­ mer, (d. h. der Teilnehmer der eine modifizierte Kopie der angeforderten Cache-Speicherzeile aufweist) anstelle der Spei­ chersteuereinrichtung die Daten. In dem Fall einer partiellen Schreibdatenübertragung nimmt ein Prozessor die partiellen Schreibdaten von dem Bus. Der Prozessor überträgt die Cache- Speicherzeile dann von seinem eigenen Cache-Speicher in einen temporären Speicherpuffer und vereinigt die Cache-Speicherzeile mit den partiellen Schreibdaten. Auf diese Weise hält der Prozessor eine modifizierte Kopie der Cache-Speicherzeile aufrecht und nimmt von der Speichersteuereinrichtung die Ver­ antwortung für die Datenverschmelzung.
Bei Beendigung der Verschmelzung hat der Prozessor zwei Möglichkeiten: der Cache-Speicher für den Prozessor kann aktua­ lisiert werden oder die Cache-Speicherzeile kann in den Haupt­ speicher geschrieben werden. Wenn der Prozessor den Cache- Speicher aktualisiert, führt dies bei einem Ausführungsbeispiel der Erfindung dazu, daß der temporäre Puffer aktualisiert und der Pufferinhalt nur dann zu dem Cache-Speicher geschrieben wird, wenn ein Fehlversuch zu dem temporären Puffer vorliegt. Auf diese Weise antwortet der Prozessor effizient auf mehrere Anforderungen zu der gleichen Cache-Speicherzeile.
Die zweite Möglichkeit ist, daß der Prozessor den Haupt­ speicher aktualisiert. Auf diese Weise überträgt der Prozessor bei Beendigung der Verschmelzungsoperation die Cache-Speicher- Zeile über den Bus zum Hauptspeicher. Diese Übertragung ist eine separate Transaktion und wird daher durch eine Entschei­ dungsoperation für den Bus ausgeführt und durch Ausgeben einer Schreibanforderung zum Speicher in der Anforderungsphase, wenn der Zugriff zum Bus gewährt ist.
Es wurde gezeigt, daß gemäß der Erfindung in einem Pipe­ line-Bussystem auf diese Weise die Cache-Speicherkonsistenz aufrechterhalten wird. Bei einem Ausführungsbeispiel werden Speicherzugriffe in einer einzigen Transaktion erfüllt, unab­ hängig, ob die zugegriffenen Daten in einer Hauptspeicherein­ heit des Busses oder einem Cache-Speicher in einem Teilnehmer an dem Bus enthalten sind.
Für den Fachmann ist es klar, daß, obwohl die oben be­ schriebenen Ausführungsbeispiele Lese-, Schreib- und Invalidie­ rungsoperationen erörtern, die Erfindung nicht auf diese Opera­ tionen beschränkt ist.

Claims (5)

1. Computersystem (910) mit einem Bus (912), einem mit dem Bus gekoppelten Mehr-Ebenen-Speichersystem (L1, L2-Cache, RAM), einer mit dem Bus und dem Mehr-Ebenen-Speichersystem gekoppelten CPU (914),
gekennzeichnet durch,
einen Cache-Speicher-Konsistenz-Mechanismus zum Sicherstel­ len der Datenkonsistenz zwischen verschiedenen Ebenen von Cache-Speichern in dem Speichersystem, wobei der Cache-Spei­ cher-Konsistenz-Mechanismus aufweist
eine Busanforderungswarteschlange (EBRQ, 1020) zum Sicherstellen, daß Anforderungen zu einer gleichen Adresse gemäß einem vorgegebenen Speicherordnungsschema auf den Bus ausgegeben und bedient werden.
2. Computersystem nach Anspruch 1, dadurch gekennzeichnet, daß die Busanforderungswarteschlange (1020) einen FIFO-Speicher zum Einreihen externer Busanforderung aufweist.
3. Verfahren zum Betreiben eines Computersystems zur Auf­ rechterhaltung der Speicherkonsistenz, wobei das Computersystem einen zeitverschachtelt betriebenen (Pipeline-) externen Bus, eine oder mehrere mit dem externen Bus gekoppelte CPUs, ein mit dem externen Bus gekoppeltes, einen Hauptspeicher und eine oder mehrere Ebenen von Cache-Speichern enthaltendes Speichersystem,
dadurch gekennzeichnet,
daß in der bzw. den mit dem externen Bus gekoppelten CPU(s) jeweils eine Busanforderungswarteschlange vorgesehen wird,
daß ein Programm auf der CPU bzw. den CPUs ausgeführt wird, das mehrere Speicherdatenanforderungen enthält, von denen das Programm erwartet, daß sie in einer vorgegebenen Reihenfolge bedient werden;
daß die Speicherdatenanforderungen in einer zeitverschach­ telten (Pipeline-)Reihenfolge auf den Bus ausgegeben werden;
daß die ausgegebenen Speicherdatenanforderungen in Einträ­ gen in die Busanforderungswarteschlange(n) eingereiht werden, um jede ausgegebene Speicherdatenanforderung betreffende Statusinformationen zu überwachen; und
daß die Einträge zum Aufrechterhalten der Speicherkonsi­ stenz aktualisiert werden, wobei sichergestellt wird, daß jede Anforderung aktuelle Daten empfängt, und wobei die Anforderun­ gen in der vorgegebenen Reihenfolge bedient werden.
4. Verfahren nach Anspruch 3, wobei die CPU einen Busteil­ nehmer (DCU, IFU) mit einem primären (L1)-Cache-Speicher auf­ weist, dadurch gekennzeichnet,
daß beim Ausgeben von dem Busteilnehmer eine vorgegebene Daten spezifizierende Anforderung ausgeben wird, die anzeigt, daß nicht in dem L1-Cache-Speicher nach den vorgegebenen Daten nachgesehen wurde; und
daß in Abhängigkeit von dem ein Nicht-Nachsehen in dem L1- Cache-Speicher anzeigenden Busteilnehmer von dem L1-Cache- Speicher zu einer späteren Zeit eine Self-Snooping-Operation ausgeführt wird.
5. Verfahren nach Anspruch 3 oder 4, wobei die Busanforde­ rungswarteschlange einen FIFO-Speicher mit einem Anfang und einem Ende aufweist, dadurch gekennzeichnet,
daß beim Einreihen in die Busanforderungs-Warteschlange An­ forderungen an den Anfang der FIFO eingegeben werden;
daß beim Aktualisieren die Anforderungen vom Anfang zum En­ de der FIFO weitergegeben werden;
daß nach Gleiche-Adressen-Konflikten zwischen einer aktuel­ len Anforderung und einer zuvor ausgegebenen Anforderung, die in die Busanforderungswarteschlange eingegeben wurde und den L2-Speicher passiert hat, gesucht wird; und
daß die aktuelle Anforderung blockiert wird, indem sie zum Anfang der FIFO zurückgesendet wird, wenn ein Gleiche-Adressen- Konflikt gefunden wird.
DE19506734A 1994-03-02 1995-02-27 Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange Withdrawn DE19506734A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/205,040 US5623628A (en) 1994-03-02 1994-03-02 Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue

Publications (1)

Publication Number Publication Date
DE19506734A1 true DE19506734A1 (de) 1995-09-07

Family

ID=22760538

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19506734A Withdrawn DE19506734A1 (de) 1994-03-02 1995-02-27 Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange

Country Status (7)

Country Link
US (1) US5623628A (de)
DE (1) DE19506734A1 (de)
GB (1) GB2287334B (de)
HK (1) HK1010067A1 (de)
PL (1) PL178832B1 (de)
SG (1) SG50458A1 (de)
TW (1) TW311192B (de)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1021768A1 (de) * 1996-09-16 2000-07-26 Corollary, Inc. System und verfahren zum unterhalten von speicherkohärent in einem rechnersystem mit multiplen systembussen
DE10045188B4 (de) * 2000-02-21 2005-11-03 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto Cacheadresskonfliktvorrichtung
CN104011694A (zh) * 2011-12-21 2014-08-27 英特尔公司 用于存储器层次知晓的生产者-消费者指令的装置和方法
US9990287B2 (en) 2011-12-21 2018-06-05 Intel Corporation Apparatus and method for memory-hierarchy aware producer-consumer instruction

Families Citing this family (173)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
EP0636256B1 (de) * 1992-03-31 1997-06-04 Seiko Epson Corporation Befehlsablauffolgeplanung von einem risc-superskalarprozessor
EP0638183B1 (de) * 1992-05-01 1997-03-05 Seiko Epson Corporation Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
EP0682789B1 (de) * 1992-12-31 1998-09-09 Seiko Epson Corporation System und verfahren zur änderung der namen von registern
US5884091A (en) * 1993-12-08 1999-03-16 Intel Corporation Computer system having a central processing unit responsive to the identity of an upgrade processor
US6029217A (en) * 1994-10-03 2000-02-22 International Business Machines Corporation Queued arbitration mechanism for data processing system
US6237082B1 (en) 1995-01-25 2001-05-22 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received
US5903741A (en) * 1995-01-25 1999-05-11 Advanced Micro Devices, Inc. Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions
US5901302A (en) * 1995-01-25 1999-05-04 Advanced Micro Devices, Inc. Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US5878244A (en) * 1995-01-25 1999-03-02 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received
US5812799A (en) * 1995-06-07 1998-09-22 Microunity Systems Engineering, Inc. Non-blocking load buffer and a multiple-priority memory system for real-time multiprocessing
US5933618A (en) * 1995-10-30 1999-08-03 Advanced Micro Devices, Inc. Speculative register storage for storing speculative results corresponding to register updated by a plurality of concurrently recorded instruction
US5778438A (en) * 1995-12-06 1998-07-07 Intel Corporation Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests
US5745781A (en) * 1995-12-26 1998-04-28 International Business Machines Corporation Memoryless communications adapter including queueing and matching primitives for scalable distributed parallel computer systems
US5813034A (en) * 1996-01-25 1998-09-22 Unisys Corporation Method and circuitry for modifying data words in a multi-level distributed data processing system
EP0882266A1 (de) 1996-02-20 1998-12-09 Intergraph Corporation Hochverfügbarer superserver
US5778422A (en) * 1996-04-04 1998-07-07 International Business Machines Corporation Data processing system memory controller that selectively caches data associated with write requests
US5920891A (en) * 1996-05-20 1999-07-06 Advanced Micro Devices, Inc. Architecture and method for controlling a cache memory
US5829010A (en) * 1996-05-31 1998-10-27 Sun Microsystems, Inc. Apparatus and method to efficiently abort and restart a primary memory access
US5829038A (en) * 1996-06-20 1998-10-27 Intel Corporation Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure
US5845107A (en) * 1996-07-03 1998-12-01 Intel Corporation Signaling protocol conversion between a processor and a high-performance system bus
US5835950A (en) * 1996-07-12 1998-11-10 Samsung Electronics Co., Ltd. Self-invalidation method for reducing coherence overheads in a bus-based shared-memory multiprocessor apparatus
US5946468A (en) * 1996-07-26 1999-08-31 Advanced Micro Devices, Inc. Reorder buffer having an improved future file for storing speculative instruction execution results
US5915110A (en) * 1996-07-26 1999-06-22 Advanced Micro Devices, Inc. Branch misprediction recovery in a reorder buffer having a future file
US5872951A (en) * 1996-07-26 1999-02-16 Advanced Micro Design, Inc. Reorder buffer having a future file for storing speculative instruction execution results
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US5787469A (en) * 1996-09-06 1998-07-28 Intel Corporation System and method for exclusively writing tag during write allocate requests
US5923857A (en) * 1996-09-06 1999-07-13 Intel Corporation Method and apparatus for ordering writeback data transfers on a bus
US5983342A (en) * 1996-09-12 1999-11-09 Advanced Micro Devices, Inc. Superscalar microprocessor employing a future file for storing results into multiportion registers
US5926832A (en) * 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
US6088769A (en) * 1996-10-01 2000-07-11 International Business Machines Corporation Multiprocessor cache coherence directed by combined local and global tables
JPH10154100A (ja) * 1996-11-25 1998-06-09 Canon Inc 情報処理システム及び装置及びその制御方法
US5864692A (en) * 1996-12-16 1999-01-26 Hewlett-Packard Company Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions
US5905876A (en) * 1996-12-16 1999-05-18 Intel Corporation Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system
US5875472A (en) * 1997-01-29 1999-02-23 Unisys Corporation Address conflict detection system employing address indirection for use in a high-speed multi-processor system
US6173371B1 (en) * 1997-04-14 2001-01-09 International Business Machines Corporation Demand-based issuance of cache operations to a processor bus
US6055608A (en) * 1997-04-14 2000-04-25 International Business Machines Corporation Method and system for speculatively sourcing cache memory data within a multiprocessor data-processing system
US6076147A (en) * 1997-06-24 2000-06-13 Sun Microsystems, Inc. Non-inclusive cache system using pipelined snoop bus
US6269426B1 (en) * 1997-06-24 2001-07-31 Sun Microsystems, Inc. Method for operating a non-blocking hierarchical cache throttle
US6061766A (en) * 1997-06-24 2000-05-09 Sun Microsystems, Inc. Non-inclusive cache method using pipelined snoop bus
US6148371A (en) * 1997-06-25 2000-11-14 Sun Microsystems, Inc. Multi-level non-blocking cache system with inhibiting thrashing
US6154812A (en) * 1997-06-25 2000-11-28 Sun Microsystems, Inc. Method for inhibiting thrashing in a multi-level non-blocking cache system
US6154815A (en) * 1997-06-25 2000-11-28 Sun Microsystems, Inc. Non-blocking hierarchical cache throttle
US5930819A (en) * 1997-06-25 1999-07-27 Sun Microsystems, Inc. Method for performing in-line bank conflict detection and resolution in a multi-ported non-blocking cache
US5991855A (en) * 1997-07-02 1999-11-23 Micron Electronics, Inc. Low latency memory read with concurrent pipe lined snoops
US6138209A (en) * 1997-09-05 2000-10-24 International Business Machines Corporation Data processing system and multi-way set associative cache utilizing class predict data structure and method thereof
US6260117B1 (en) 1997-09-18 2001-07-10 International Business Machines Corporation Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency
US6141021A (en) * 1997-12-12 2000-10-31 Intel Corporation Method and apparatus for eliminating contention on an accelerated graphics port
US6460119B1 (en) * 1997-12-29 2002-10-01 Intel Corporation Snoop blocking for cache coherency
US6148372A (en) * 1998-01-21 2000-11-14 Sun Microsystems, Inc. Apparatus and method for detection and recovery from structural stalls in a multi-level non-blocking cache system
US6430654B1 (en) * 1998-01-21 2002-08-06 Sun Microsystems, Inc. Apparatus and method for distributed non-blocking multi-level cache
US6061764A (en) * 1998-01-26 2000-05-09 Intel Corporation Coherent variable length reads which implicates multiple cache lines by a memory controller connected to a serial and a pipelined bus utilizing a plurality of atomic transactions
US6253291B1 (en) * 1998-02-13 2001-06-26 Sun Microsystems, Inc. Method and apparatus for relaxing the FIFO ordering constraint for memory accesses in a multi-processor asynchronous cache system
US6567426B1 (en) * 1998-03-05 2003-05-20 Silicon Graphics, Inc. Preemptive timer multiplexed shared memory access
FR2777370B1 (fr) * 1998-04-09 2000-06-23 Sgs Thomson Microelectronics Architecture de dsp optimisee pour les acces memoire
US6269360B1 (en) 1998-04-24 2001-07-31 International Business Machines Corporation Optimization of ordered stores on a pipelined bus via self-initiated retry
US6553403B1 (en) * 1998-06-03 2003-04-22 International Business Machines Corporation System, method and computer program product for monitoring in a distributed computing environment
US6460070B1 (en) 1998-06-03 2002-10-01 International Business Machines Corporation Mobile agents for fault diagnosis and correction in a distributed computer environment
US6549932B1 (en) * 1998-06-03 2003-04-15 International Business Machines Corporation System, method and computer program product for discovery in a distributed computing environment
US6493802B1 (en) * 1998-06-18 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus for performing speculative memory fills into a microprocessor
US6094716A (en) * 1998-07-14 2000-07-25 Advanced Micro Devices, Inc. Register renaming in which moves are accomplished by swapping rename tags
US6377582B1 (en) 1998-08-06 2002-04-23 Intel Corporation Decentralized ring arbitration for multiprocessor computer systems
US6574219B1 (en) 1998-08-06 2003-06-03 Intel Corp Passive message ordering on a decentralized ring
US6112283A (en) * 1998-08-06 2000-08-29 Intel Corporation Out-of-order snooping for multiprocessor computer systems
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
AU5686299A (en) * 1998-08-20 2000-03-14 Raycer, Inc. Method and apparatus for generating texture
US6249851B1 (en) * 1998-08-25 2001-06-19 Stmicroelectronics, Inc. Computer system having non-blocking cache and pipelined bus interface unit
US6081874A (en) * 1998-09-29 2000-06-27 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect
US6067603A (en) * 1998-10-01 2000-05-23 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect
US6801207B1 (en) * 1998-10-09 2004-10-05 Advanced Micro Devices, Inc. Multimedia processor employing a shared CPU-graphics cache
US6483516B1 (en) * 1998-10-09 2002-11-19 National Semiconductor Corporation Hierarchical texture cache
US6240503B1 (en) 1998-11-12 2001-05-29 Advanced Micro Devices, Inc. Cumulative lookahead to eliminate chained dependencies
US6338125B1 (en) 1998-12-23 2002-01-08 Cray Inc. Dynamic slot allocation and tracking of multiple memory requests
US6314500B1 (en) * 1999-01-11 2001-11-06 International Business Machines Corporation Selective routing of data in a multi-level memory architecture based on source identification information
US6356485B1 (en) 1999-02-13 2002-03-12 Integrated Device Technology, Inc. Merging write cycles by comparing at least a portion of the respective write cycle addresses
US6321328B1 (en) * 1999-03-22 2001-11-20 Hewlett-Packard Company Processor having data buffer for speculative loads
EP1050812A1 (de) * 1999-05-03 2000-11-08 STMicroelectronics SA Datenspeicherung im Rechnerspeicher
US6460133B1 (en) * 1999-05-20 2002-10-01 International Business Machines Corporation Queue resource tracking in a multiprocessor system
US6434677B1 (en) * 1999-06-01 2002-08-13 Intel Corporation Method and apparatus for altering data length to zero to maintain cache coherency
US6532523B1 (en) * 1999-10-13 2003-03-11 Oak Technology, Inc. Apparatus for processing memory access requests
US6748589B1 (en) 1999-10-20 2004-06-08 Transmeta Corporation Method for increasing the speed of speculative execution
US6557048B1 (en) * 1999-11-01 2003-04-29 Advanced Micro Devices, Inc. Computer system implementing a system and method for ordering input/output (IO) memory operations within a coherent portion thereof
US6519649B1 (en) 1999-11-09 2003-02-11 International Business Machines Corporation Multi-node data processing system and communication protocol having a partial combined response
US6591307B1 (en) 1999-11-09 2003-07-08 International Business Machines Corporation Multi-node data processing system and method of queue management in which a queued operation is speculatively cancelled in response to a partial combined response
US6519665B1 (en) 1999-11-09 2003-02-11 International Business Machines Corporation Multi-node data processing system and communication protocol in which a stomp signal is propagated to cancel a prior request
US6671712B1 (en) 1999-11-09 2003-12-30 International Business Machines Corporation Multi-node data processing system having a non-hierarchical interconnect architecture
US6848003B1 (en) * 1999-11-09 2005-01-25 International Business Machines Corporation Multi-node data processing system and communication protocol that route write data utilizing a destination ID obtained from a combined response
US6557078B1 (en) * 2000-02-21 2003-04-29 Hewlett Packard Development Company, L.P. Cache chain structure to implement high bandwidth low latency cache memory subsystem
US6507892B1 (en) 2000-02-21 2003-01-14 Hewlett-Packard Company L1 cache memory
US6434672B1 (en) * 2000-02-29 2002-08-13 Hewlett-Packard Company Methods and apparatus for improving system performance with a shared cache memory
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
US6877029B1 (en) * 2000-07-20 2005-04-05 Silicon Graphics, Inc. Method and apparatus for managing node controllers using partitions in a computer system
US6981101B1 (en) 2000-07-20 2005-12-27 Silicon Graphics, Inc. Method and system for maintaining data at input/output (I/O) interfaces for a multiprocessor system
US7069306B1 (en) 2000-07-20 2006-06-27 Silicon Graphics, Inc. Providing shared and non-shared access to memory in a system with plural processor coherence domains
US6738869B1 (en) * 2000-08-29 2004-05-18 Intel Corporation Arrangements for out-of-order queue cache coherency and memory write starvation prevention
US6462423B1 (en) 2000-08-31 2002-10-08 Micron Technology, Inc. Flip-chip with matched lines and ground plane
US6627999B2 (en) 2000-08-31 2003-09-30 Micron Technology, Inc. Flip-chip with matched signal lines, ground plane and ground bumps adjacent signal bumps
JP2002082832A (ja) * 2000-09-08 2002-03-22 Nec Corp キャッシュ更新方法及びキャッシュ更新制御システム並びに記録媒体
US6477622B1 (en) * 2000-09-26 2002-11-05 Sun Microsystems, Inc. Simplified writeback handling
US6721813B2 (en) * 2001-01-30 2004-04-13 Advanced Micro Devices, Inc. Computer system implementing a system and method for tracking the progress of posted write transactions
US6622203B2 (en) * 2001-05-29 2003-09-16 Agilent Technologies, Inc. Embedded memory access method and system for application specific integrated circuits
US6813623B2 (en) * 2001-06-15 2004-11-02 International Business Machines Corporation Method and apparatus for chunk based transaction logging with asynchronous input/output for a database management system
KR100567099B1 (ko) * 2001-06-26 2006-03-31 썬 마이크로시스템즈, 인코포레이티드 L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치
US6865695B2 (en) * 2001-07-26 2005-03-08 International Business Machines Corpoation Robust system bus recovery
US6785776B2 (en) * 2001-07-26 2004-08-31 International Business Machines Corporation DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
US6782456B2 (en) * 2001-07-26 2004-08-24 International Business Machines Corporation Microprocessor system bus protocol providing a fully pipelined input/output DMA write mechanism
US7394823B2 (en) * 2001-11-20 2008-07-01 Broadcom Corporation System having configurable interfaces for flexible system configurations
US6842822B2 (en) 2002-04-05 2005-01-11 Freescale Semiconductor, Inc. System and method for cache external writing
US20030195939A1 (en) * 2002-04-16 2003-10-16 Edirisooriya Samatha J. Conditional read and invalidate for use in coherent multiprocessor systems
US7003630B1 (en) * 2002-06-27 2006-02-21 Mips Technologies, Inc. Mechanism for proxy management of multiprocessor storage hierarchies
US7017025B1 (en) * 2002-06-27 2006-03-21 Mips Technologies, Inc. Mechanism for proxy management of multiprocessor virtual memory
US7062636B2 (en) * 2002-09-19 2006-06-13 Intel Corporation Ordering scheme with architectural operation decomposed into result producing speculative micro-operation and exception producing architectural micro-operation
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US6996645B1 (en) * 2002-12-27 2006-02-07 Unisys Corporation Method and apparatus for spawning multiple requests from a single entry of a queue
US7096289B2 (en) * 2003-01-16 2006-08-22 International Business Machines Corporation Sender to receiver request retry method and apparatus
US7216202B1 (en) * 2003-02-25 2007-05-08 Sun Microsystems, Inc. Method and apparatus for supporting one or more servers on a single semiconductor chip
US7043626B1 (en) 2003-10-01 2006-05-09 Advanced Micro Devices, Inc. Retaining flag value associated with dead result data in freed rename physical register with an indicator to select set-aside register instead for renaming
US7502892B2 (en) * 2003-12-30 2009-03-10 Intel Corporation Decoupling request for ownership tag reads from data read operations
TWI242134B (en) * 2004-02-12 2005-10-21 Via Tech Inc Data extraction method and system
US7599044B2 (en) 2005-06-23 2009-10-06 Apple Inc. Method and apparatus for remotely detecting presence
US20060080511A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Enhanced bus transactions for efficient support of a remote cache directory copy
US20060100997A1 (en) * 2004-10-27 2006-05-11 Wall Gary C Data caching
US7242169B2 (en) * 2005-03-01 2007-07-10 Apple Inc. Method and apparatus for voltage compensation for parasitic impedance
US7577930B2 (en) 2005-06-23 2009-08-18 Apple Inc. Method and apparatus for analyzing integrated circuit operations
US9298311B2 (en) * 2005-06-23 2016-03-29 Apple Inc. Trackpad sensitivity compensation
US7433191B2 (en) * 2005-09-30 2008-10-07 Apple Inc. Thermal contact arrangement
US7598711B2 (en) * 2005-11-23 2009-10-06 Apple Inc. Power source switchover apparatus and method
US7366847B2 (en) * 2006-02-06 2008-04-29 Azul Systems, Inc. Distributed cache coherence at scalable requestor filter pipes that accumulate invalidation acknowledgements from other requestor filter pipes using ordering messages from central snoop tag
JP4820654B2 (ja) * 2006-02-06 2011-11-24 富士通セミコンダクター株式会社 サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ
US20090006712A1 (en) * 2007-06-29 2009-01-01 Fatma Ehsan Data ordering in a multi-node system
US9081901B2 (en) * 2007-10-31 2015-07-14 Raytheon Company Means of control for reconfigurable computers
US8006039B2 (en) * 2008-02-25 2011-08-23 International Business Machines Corporation Method, system, and computer program product for merging data
CN101676887B (zh) * 2008-08-15 2012-07-25 北京北大众志微系统科技有限责任公司 一种基于ahb总线结构的总线监听方法及装置
US8447932B2 (en) * 2010-06-22 2013-05-21 International Business Machines Corporation Recover store data merging
US8850129B2 (en) * 2010-06-24 2014-09-30 International Business Machines Corporation Memory ordered store system in a multiprocessor computer system
US8688962B2 (en) * 2011-04-01 2014-04-01 Intel Corporation Gather cache architecture
US9411748B2 (en) 2011-12-20 2016-08-09 Intel Corporation Secure replay protected storage
US9405707B2 (en) 2011-12-20 2016-08-02 Intel Corporation Secure replay protected storage
US20130212210A1 (en) * 2012-02-10 2013-08-15 General Electric Company Rule engine manager in memory data transfers
US9015423B2 (en) * 2012-06-14 2015-04-21 International Business Machines Corporation Reducing store operation busy times
US9304925B2 (en) * 2012-10-24 2016-04-05 Texas Instruments Incorporated Distributed data return buffer for coherence system with speculative address support
US9785556B2 (en) * 2014-12-23 2017-10-10 Intel Corporation Cross-die interface snoop or global observation message ordering
US9858190B2 (en) * 2015-01-27 2018-01-02 International Business Machines Corporation Maintaining order with parallel access data streams
US10204047B2 (en) * 2015-03-27 2019-02-12 Intel Corporation Memory controller for multi-level system memory with coherency unit
US11216720B2 (en) 2015-10-08 2022-01-04 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that manages power consumption based on memory accesses per period
US10228911B2 (en) 2015-10-08 2019-03-12 Via Alliance Semiconductor Co., Ltd. Apparatus employing user-specified binary point fixed point arithmetic
US11029949B2 (en) 2015-10-08 2021-06-08 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit
US10366050B2 (en) 2015-10-08 2019-07-30 Via Alliance Semiconductor Co., Ltd. Multi-operation neural network unit
US11221872B2 (en) 2015-10-08 2022-01-11 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that interrupts processing core upon condition
US10380481B2 (en) 2015-10-08 2019-08-13 Via Alliance Semiconductor Co., Ltd. Neural network unit that performs concurrent LSTM cell calculations
US10664751B2 (en) * 2016-12-01 2020-05-26 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either cache memory or neural network unit memory
US10725934B2 (en) 2015-10-08 2020-07-28 Shanghai Zhaoxin Semiconductor Co., Ltd. Processor with selective data storage (of accelerator) operable as either victim cache data storage or accelerator memory and having victim cache tags in lower level cache wherein evicted cache line is stored in said data storage when said data storage is in a first mode and said cache line is stored in system memory rather then said data store when said data storage is in a second mode
US11226840B2 (en) 2015-10-08 2022-01-18 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that interrupts processing core upon condition
US10776690B2 (en) 2015-10-08 2020-09-15 Via Alliance Semiconductor Co., Ltd. Neural network unit with plurality of selectable output functions
GB2547189A (en) * 2016-02-03 2017-08-16 Swarm64 As Cache and method
US20170293646A1 (en) * 2016-04-07 2017-10-12 Imagination Technologies Limited Apparatus and methods for out of order item selection and status updating
US10303605B2 (en) * 2016-07-20 2019-05-28 Intel Corporation Increasing invalid to modified protocol occurrences in a computing system
US10423876B2 (en) 2016-12-01 2019-09-24 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either victim cache or neural network unit memory
US10395165B2 (en) 2016-12-01 2019-08-27 Via Alliance Semiconductor Co., Ltd Neural network unit with neural memory and array of neural processing units that collectively perform multi-word distance rotates of row of data received from neural memory
US10438115B2 (en) 2016-12-01 2019-10-08 Via Alliance Semiconductor Co., Ltd. Neural network unit with memory layout to perform efficient 3-dimensional convolutions
US10430706B2 (en) 2016-12-01 2019-10-01 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either last level cache slice or neural network unit memory
US10417560B2 (en) 2016-12-01 2019-09-17 Via Alliance Semiconductor Co., Ltd. Neural network unit that performs efficient 3-dimensional convolutions
US10515302B2 (en) 2016-12-08 2019-12-24 Via Alliance Semiconductor Co., Ltd. Neural network unit with mixed data and weight size computation capability
US10289516B2 (en) * 2016-12-29 2019-05-14 Intel Corporation NMONITOR instruction for monitoring a plurality of addresses
US10565494B2 (en) 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
US10565492B2 (en) 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
US10140574B2 (en) 2016-12-31 2018-11-27 Via Alliance Semiconductor Co., Ltd Neural network unit with segmentable array width rotator and re-shapeable weight memory to match segment width to provide common weights to multiple rotator segments
US10586148B2 (en) 2016-12-31 2020-03-10 Via Alliance Semiconductor Co., Ltd. Neural network unit with re-shapeable memory
US9912957B1 (en) * 2017-04-01 2018-03-06 Intel Corporation Lossless compression for multisample render targets alongside fragment compression
US10613979B2 (en) 2017-11-30 2020-04-07 International Business Machines Corporation Accelerator memory coherency with single state machine
US20230315643A1 (en) * 2022-03-29 2023-10-05 Microsoft Technology Licensing, Llc Cache Data Provided Based on Data Availability

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0329942A2 (de) * 1988-02-22 1989-08-30 International Business Machines Corporation Speicherwarteschlange für eine festgekoppelte Mehrprozessorenkonfiguration mit einem zweistufigen Cache-Pufferspeicher

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3675217A (en) * 1969-12-23 1972-07-04 Ibm Sequence interlocking and priority apparatus
US4136386A (en) * 1977-10-06 1979-01-23 International Business Machines Corporation Backing store access coordination in a multi-processor system
GB2244158B (en) * 1990-04-30 1994-09-07 Sun Microsystems Inc Cache memory arrangement with write buffer pipeline providing for concurrent cache determinations
DE69127936T2 (de) * 1990-06-29 1998-05-07 Digital Equipment Corp Busprotokoll für Prozessor mit write-back cache
IE860318L (en) * 1990-10-01 1986-08-05 Digital Equipment Corp System bus for a multi-cache data processing system
US5261071A (en) * 1991-03-21 1993-11-09 Control Data System, Inc. Dual pipe cache memory with out-of-order issue capability

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0329942A2 (de) * 1988-02-22 1989-08-30 International Business Machines Corporation Speicherwarteschlange für eine festgekoppelte Mehrprozessorenkonfiguration mit einem zweistufigen Cache-Pufferspeicher

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1021768A1 (de) * 1996-09-16 2000-07-26 Corollary, Inc. System und verfahren zum unterhalten von speicherkohärent in einem rechnersystem mit multiplen systembussen
EP1021768A4 (de) * 1996-09-16 2002-08-14 Corollary Inc System und verfahren zum unterhalten von speicherkohärent in einem rechnersystem mit multiplen systembussen
US6622214B1 (en) 1996-09-16 2003-09-16 Intel Corporation System and method for maintaining memory coherency in a computer system having multiple system buses
DE10045188B4 (de) * 2000-02-21 2005-11-03 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto Cacheadresskonfliktvorrichtung
CN104011694A (zh) * 2011-12-21 2014-08-27 英特尔公司 用于存储器层次知晓的生产者-消费者指令的装置和方法
US9990287B2 (en) 2011-12-21 2018-06-05 Intel Corporation Apparatus and method for memory-hierarchy aware producer-consumer instruction

Also Published As

Publication number Publication date
PL178832B1 (pl) 2000-06-30
GB2287334A (en) 1995-09-13
GB2287334B (en) 1998-03-25
US5623628A (en) 1997-04-22
TW311192B (de) 1997-07-21
GB9416273D0 (en) 1994-10-05
SG50458A1 (en) 1998-07-20
HK1010067A1 (en) 1999-06-11
PL307473A1 (en) 1995-09-04

Similar Documents

Publication Publication Date Title
DE19506734A1 (de) Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange
DE112007003801B3 (de) Vorrichtung mit einer speichereinheit und einer logik zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
DE60038693T2 (de) Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor
DE10296989B4 (de) Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms
DE4218003C2 (de) Cache-Steuereinrichtung für ein sekundäres Cache-Speichersystem
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE60029619T2 (de) Verfahren, vorrichtung, medium und programm zur aufnahme und zum verlassen von mehreren fäden in einem vielfadenprozessor
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE69133257T2 (de) Vorrichtung und verfahren zur schnellen paketvermittlung
DE19580990C2 (de) Verfahren und Einrichtung zum Ausführen verzögerter Transaktionen
DE69531933T2 (de) Busarchitektur in hochgradiger pipeline-ausführung
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE112010004322T5 (de) Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE19782177B4 (de) Verfahren zur Durchführung von TLB-Shootdown-Operationen in einem Multiprozessorsystem
DE10085373B4 (de) Verfahren zum Flushen von Cache-Zeilen
DE102019104394A1 (de) Befehlssatzarchitektur zum ermöglichen von energieeffizientem rechnen für exascalearchitekturen
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
R009 Remittal by federal patent court to dpma for new decision or registration
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140902