DE19506734A1 - Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange - Google Patents
Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer BusanforderungswarteschlangeInfo
- 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
Links
- 230000015654 memory Effects 0.000 title claims description 436
- 238000000034 method Methods 0.000 title claims description 20
- 230000007246 mechanism Effects 0.000 claims description 34
- 239000000872 buffer Substances 0.000 description 145
- 230000004044 response Effects 0.000 description 64
- 230000003111 delayed effect Effects 0.000 description 53
- 238000012546 transfer Methods 0.000 description 52
- 238000004891 communication Methods 0.000 description 42
- 239000003795 chemical substances by application Substances 0.000 description 26
- 230000006870 function Effects 0.000 description 16
- 238000012544 monitoring process Methods 0.000 description 16
- 230000008859 change Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 7
- 230000000903 blocking effect Effects 0.000 description 7
- 238000001514 detection method Methods 0.000 description 7
- 230000001934 delay Effects 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 6
- 230000008707 rearrangement Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000014616 translation Effects 0.000 description 6
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 4
- 230000009471 action Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 239000004973 liquid crystal related substance Substances 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- SUBDBMMJDZJVOS-UHFFFAOYSA-N 5-methoxy-2-{[(4-methoxy-3,5-dimethylpyridin-2-yl)methyl]sulfinyl}-1H-benzimidazole Chemical compound N=1C2=CC(OC)=CC=C2NC=1S(=O)CC1=NC=C(C)C(OC)=C1C SUBDBMMJDZJVOS-UHFFFAOYSA-N 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 235000014459 Sorbus Nutrition 0.000 description 2
- 241001092391 Sorbus Species 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000029142 excretion Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 125000002066 L-histidyl group Chemical group [H]N1C([H])=NC(C([H])([H])[C@](C(=O)[*])([H])N([H])[H])=C1[H] 0.000 description 1
- 101150034459 Parpbp gene Proteins 0.000 description 1
- 235000010678 Paulownia tomentosa Nutrition 0.000 description 1
- 240000002834 Paulownia tomentosa Species 0.000 description 1
- 241001494479 Pecora Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining 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.
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.
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.
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.
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.
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)
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)
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)
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)
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 |
-
1994
- 1994-03-02 US US08/205,040 patent/US5623628A/en not_active Expired - Lifetime
- 1994-08-11 GB GB9416273A patent/GB2287334B/en not_active Expired - Lifetime
- 1994-08-11 SG SG1996001871A patent/SG50458A1/en unknown
- 1994-11-10 TW TW083110423A patent/TW311192B/zh not_active IP Right Cessation
-
1995
- 1995-02-27 DE DE19506734A patent/DE19506734A1/de not_active Withdrawn
- 1995-02-28 PL PL95307473A patent/PL178832B1/pl not_active IP Right Cessation
-
1998
- 1998-09-21 HK HK98110785A patent/HK1010067A1/xx not_active IP Right Cessation
Patent Citations (1)
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)
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 |