-
Die
vorliegende Erfindung bezieht sich allgemein auf Computerprozessoroperationen
und Computerprozessorarchitekturen. Die vorliegende Erfindung bezieht
sich insbesondere auf die Leistungsoptimierung durch spekulatives
Vorabrufen und Vorausräumen
von Daten in einem Prozessorsystem, bei dem Befehle ungeordnet ausgeführt werden
können.
-
Ein
Hochleistungsprozessor, z. B. ein superskalarer Prozessor, bei dem
zwei oder mehrere skalare Operationen parallel durchgeführt werden,
kann entworfen sein, um Befehle ungeordnet, d. h. in einer Reihenfolge,
die sich von derselben unterscheidet, die durch das Programm definiert
ist, das in dem Prozessor läuft,
auszuführen.
Das heißt,
bei diesem Hochleistungsprozessorsystem werden Befehle dann ausgeführt, wenn
sie ausgeführt
werden können,
und nicht wenn sie in der Folge, die durch das Programm definiert
ist, erscheinen. Nach der ungeordneten Ausführung von Befehlen werden die
Resultate typischerweise schließlich
neu geordnet, um der ordnungsgemäßen Befehlsreihenfolge
zu entsprechen, bevor die Resultate zurück zu dem Programm weitergeleitet
werden, das in dem Prozessor läuft.
-
Gemäß der U.S.
5,758,178 ('178)
(die der
DE 19650519
A1 entpricht) kann ein Prozessorsystem mit ungeordneter
Ausführung
einen oder mehrere Prozessoren umfassen, wobei jeder derselben eine
Speicherwarteschlange (MQUEUE; MQUEUE = Memory QUEUE) zum Empfangen
und Ausführen von
Befehlen aufweist, die auf Speicherzugriffe zu dem Cachespeicher
(DCACHE) oder der Speicherhierarchie gerichtet sind. Die MQUEUE
umfaßt
eine Mehrzahl von Befehlsverarbeitungsvorrichtungen zum Empfangen
und dem ungeordneten Ausführen von
jeweiligen Speicherbefehlen. Jede Befehlsverarbeitungsvor richtung
umfaßt
ein Befehlsregister zum Speichern eines Befehls und einen Adressenneuanordnungspufferschlitz
(ARBSLOT; ARBSLOT = Adress Reorder Buffer SLOT) zum Speichern der
Datenadresse der Befehlsausführungsresultate.
Eine Abhängig-Vom-Verfehlen-
(DM-; DM = Dependent-On-Miss) Anzeigelogik in jedem ARBSLOT verhindert
insbesondere eine Anfrage von dem jeweiligen ARBSLOT derselben zu
der Speicherhierarchie nach fehlenden Daten, die in dem DCACHE nicht
anwesend sind, wenn ein weiterer ARBSLOT die fehlenden Daten bereits
aus der Speicherhierarchie angefordert hat.
-
1 zeigt beispielsweise insbesondere
ein Blockdiagramm der relevanten Abschnitte des Computersystems
zum Darstellen des Betriebs des Abschnitts der Befehlsverarbeitungsvorrichtung 39b der MQUEUE.
Die MQUEUE umfaßt
einen oder mehrere ARBSLOTs 48 (wobei lediglich einer derselben
gezeigt ist). Wenn ein ARBSLOT 48 eine Cachezeile von dem
DCACHE 24 anfordert, aktiviert der ARBSLOT 48 ein
Signal ACCESS_REQ 115 (Zugriffsanforderung), das von einer
Adresse ACCESS_ADDR 114 (Zugriffsadresse) begleitet wird.
Bei dem Fall, daß es einen
möglichen
Treffer in dem DCACHE 24 gibt, wird der Statusanzeiger 82 (oder
die Statusanzeiger, wenn der Cache assoziativ ist) eine gültige Cachezeile
oder gültige
Cachezeilen widerspiegeln. Eine Etikettvergleichsvorrichtung 108 liest
ferner das Etikett (= TAG) DCACHE TAG (s) 81 und vergleicht
dasselbe mit dem Etikett ACCESS_TAG 116, das der Zugriffsadresse
ACCESS_ADDR 114 zugeordnet ist. Wenn eine Übereinstimmung
vorliegt, folgert die Etikettvergleichsvorrichtung 108,
daß ein
Treffer aufgetreten ist, und deaktiviert das Signal ~HIT 118 (Treffer),
um einen Treffer anzuzeigen, was bewirkt, daß der ARBSLOT 48 sich
selbst als erledigt (= done) etikettiert. Das Resultat der Operation
wird in einem Umbenennungsregister (nicht gezeigt) so lange gehalten,
bis sich der Befehl zurückzieht,
wenn derselbe zu einem architektonischen Register (nicht gezeigt)
bewegt wird.
-
Wenn
der Cachezugriff, z. B. basierend auf einem Statusanzeiger 82,
der eine ungültige
Cachezeile(n) anzeigt, oder alternativ, wenn das Etikett DCACHE
TAG (s) 81 nicht mit dem Etikett ACCESS_TAG 116 übereinstimmt,
zu einem Cacheverfehlen führt,
dann aktiviert die Etikettvergleichsvorrichtung 108 das
Signal ~HIT 118, um ein Verfehlen zu dem ARBSLOT 48 anzuzeigen.
Unter der Annahme, daß dies
der erste ARBSLOT 48 ist, der versucht, auf diese fehlende
Datenzeile zuzugreifen, bewirkt die DM-Anzeigerlogik 135,
daß das
Fehlanforderungssignal MISS_REQUEST 111 zu dem Verfehlen-Entscheider 107 ausgegeben
wird. Der Verfehlen-Entscheider 107 entscheidet durch Priorisieren der
verschiedenen Fehlanforderungen, die durch die verschiedenen ARBSLOTs 48 erzeugt
werden können.
Schließlich
gibt der Verfehlen-Entscheider 107 ein
Signal MISS_GRANTED (VERFEHLEN GEWÄHRT) 112 aus, um die
Fehlanforderung zu gewähren.
Dieses Signal wird zu dem ARBSLOT 48 gesendet, der seinerseits
das Verfehlen-Steuersignal MISS_CAV 101 zu der Systemschnittstellensteuerung 102 aktiviert.
Die Systemschnittstellensteue rung 102 führt ihrerseits eine Speicheranforderung zu
der Speicherhierarchie (nicht gezeigt) nach der Datenzeile basierend
auf der Adresse MISS/COPY_IN-ADDR 104 (Verfehlen/Kopieren_Hinein-Adresse),
die von dem ARBSLOT 48 zu der Systemschnittstellensteuerung 102 weitergeleitet
wird, durch.
-
Sobald
die Datenzeile von der Speicherhierarchie zu der Systemschnittstellensteuerung 102 übertragen
ist, gibt die Systemschnittstellensteuerung 102 die Datenzeile
zu dem DCACHE 24 weiter, wie es durch den Bezugspfeil 105 gezeigt
ist, aktiviert das Steuersignal COPY_IN zu dem DCACHE 24 und gibt
die Statusbits zu dem DCACHE 24 aus. Gleichzeitig aktiviert
die Systemschnittstellensteuerung 102 das Steuersignal
COPY_IN 103 zu den ARBSLOTs 48 und plaziert die
zugeordnete Adresse in der MISS/COPY_IN-ADDR 104 zu den
ARBSLOTs 48.
-
Wenn
ein weiterer ARBSLOT 48 versucht, auf den DCACHE 24 nach
einer fehlenden Datenzeile, die derzeit von der Speicherhierarchie
angefordert wird, zuzugreifen, dann wird der spezielle ARBSLOT 48 durch
den Statusanzeiger 82 beraten, da der Statusanzeiger 82 einen
Verfehlen-Anhängig-Status oder
daß die
Cachezeile durch einen weiteren ARBSLOT 48 angefordert
wird, anzeigt. Eine redundante Speicheranforderung nach einer Datenzeile,
die bereits angefordert wurde, wird daher vermieden. Eine detailliertere
Beschreibung der Speicherwarteschlange (MQUEUE) und des DM-Anzeigers 135 kann
in den oben aufgelisteten U.S.-Patenten, z. B. dem '178-Patent, gefunden
werden.
-
Während moderne
Hochleistungsprozessoren, z. B. ein superskalarer Prozessor, der
oben beschrieben ist, stark die Befehlsausführungszeit verbessert haben,
ist eine langsame Speicherzugriffszeit immer noch ein wesentliches
Hindernis für
einen Prozessor, der mit seiner voller Geschwindigkeit läuft. Wenn
Anforderungen nach Daten aus dem Cachespeicher erfüllt werden
können,
können
Verzögerungen,
die einem Zu griff zu der langsameren Speicherhierarchie zugeordnet
sind – auf
die üblicherweise
als eine Cacheverfehlen-Latenz Bezug genommen wird – vermieden
werden. Das Reduzieren der Häufigkeit
des Cacheverfehlens ist daher ein Ziel bei Hochleistungsprozessorentwürfen.
-
Bei
einem Mehrprozessorsystem ist außerdem immer dann, wenn ein
Prozessor eine Datenzeile anfordert, eine Kohärenzprüfung erforderlich, um zu bestimmen,
ob jeweilige Caches der anderen Prozessoren die angeforderte Datenzeile
enthalten, und/oder ob ein Zurückschreiben
(oder Ausräumen) der
Datenzeile zu der Speicherhierarchie erforderlich ist, z. B. wenn
die Datenzeile durch den speziellen Prozessor, der die Datenzeile
besitzt, modifiziert wurde. Die Kohärenzprüfung trägt zu Verzögerungen bei den Speicherzugriffen
bei – auf
die im folgenden als Kohärenzprüflatenz
Bezug genommen wird.
-
Das
spekulative Vorabrufen und Vorausräumen basiert auf einer gut
bekannten Ortstheorie, die die räumliche
Ortstheorie genannt wird, die darauf achtet, daß wenn auf Informationen durch
den Prozessor zugegriffen wird, auf Informationen, deren Adressen
nahe zu den Informationen, auf die zugegriffen wird, sind, ebenso
zugegriffen wird. Dies ist insbesondere wahr, wenn die Lade- oder
Speicher-Operation, die das Cacheverfehlen bewirkt hat, ein Teil
der Befehlscodefolge ist, die auf eine Datensatzlänge zugreift,
die länger
als eine Cachezeile ist, d. h. wenn die Befehlscodefolge auf Daten
Bezug nimmt, die mehrere Datenzeilen überspannen. Bei einem System,
das ein Vorabrufen und/oder Vorausräumen und nicht ein Abrufen
(und/oder Ausräumen) von
lediglich Daten, auf die derzeit zugegriffen wird, in (oder aus)
den Cachespeicher verwendet, kann ein Block von Daten (oder eine
oder mehrere Cachezeilen) in der Nähe, der die Daten umfaßt, auf
die derzeit zugegriffen wird, in den Cachespeicher gebracht werden
(und/oder aus demselben ausgeräumt
werden). Dieses spekulative Vorabrufen und Vorausräumen von
zusätzlichen
Datenzeilen in den oder aus dem Datencache, bevor dieselben durch
spätere Speicherbezugnahmebefehle
erforderlich sind, kann mindestens einen Teil der Cacheverfehllatenz
und der Kohärenzprüflatenz
verstecken und daher die Gesamtleistung des Prozessorsystems verbessern.
-
Im
vorhergehenden existieren jedoch ungünstigerweise keine bekannten
Lösungen
zum Implementieren des Vorabrufens und/oder Vorausräumens von
Datenzeilen in Prozessoren, die eine ungeordnete Ausführung von
Befehlen durchführen.
Bei einem System das ein spekulatives Vorabrufen und/oder Vorausräumen verwendet,
das oben beschrieben ist, betrifft jede zusätzliche Speicheranforderung,
die aus einer ungeordneten Ausführung
von Befehlen resultiert, eine Speichertransaktion, die eine Übertragung
einer Zahl von Datenzeilen (und nicht einer einzigen Datenzeile
ohne das Vorabrufen und Vorausräumen
von zusätzlichen
Datenzeilen) erfordert, und kann zu einem sogar noch stärker erhöhten Verkehr über den
Systembus führen,
kann die übermäßige Verwendung
der Systemschnittstellenbandbreite verschlimmern und kann daher
die Systemleistung gefährden.
-
Die
Aufgabe der vorliegenden Erfindung besteht darin, eine Vorrichtung
zum Minimieren der Cachekohärenzprüflatenz
bei einem System mit einer ungeordneten Befehlsausführung, das
eine Mehrzahl von Prozessoren aufweist, und ein Verfahren zum Minimieren
der Cachekohärenzprüflatenz
bei einem System mit einer ungeordneten Befehlsausführung, das
eine Mehrzahl von Prozessoren aufweist, zu schaffen, die ein effizientes
System und ein effizientes Verfahren zum Vorabrufen von einer oder
mehreren Datenzeilen aus einer Speicherhierarchie zu einem Cachespeicher
ermöglichen,
ohne die Systemleistung eines Systems mit einer ungeordneten Verarbeitung
zu gefährden.
-
Diese
Aufgabe wird durch eine Vorrichtung zum Minimieren der Cachekohärenzprüflatenz
bei einem System mit einer ungeordneten Befehlsausführung, das
eine Mehrzahl von Prozes soren aufweist, gemäß Anspruch 1 und durch ein
Verfahren zum Minimieren der Cachekohärenzprüflatenz bei einem System mit
einer ungeordneten Befehlsausführung, das
eine Mehrzahl von Prozessoren aufweist, gemäß Anspruch 11 gelöst.
-
Ein
Vorteil der vorliegenden Erfindung besteht darin, daß dieselbe
ein effizientes System und effizientes Verfahren zum Vorabrufen
von einer oder mehreren Datenzeilen von einer Speicherhierarchie zu
einem Cachespeicher ermöglicht,
während
dieselbe mehrere redundante Speicheranforderungen bei dem Fall eines
Cacheverfehlens bei einem System mit einem ungeordneten Verarbeiten
minimiert.
-
Ein
weiterer Vorteil der vorliegenden Erfindung besteht darin, daß dieselbe
ein effizientes System und effizientes Verfahren zum Vorausräumen von
einer oder mehreren Datenzeilen aus einem Cachespeicher bei einem
System mit einer ungeordneten Befehlsausführung mit mehreren Prozessoren
ermöglicht,
ohne zu der Systemkomplexität
beizutragen und um dadurch die Kohärenzprüflatenz des Systems zu minimieren.
-
Gemäß den Prinzipien
der vorliegenden Erfindung weist eine Vorrichtung zum Minimieren
der Cachekohärenzprüflatenz
in einem System mit einer ungeordneten Befehlsausführung, das
eine Mehrzahl von Prozessoren aufweist, mindestens eine Cachekohärenzprüfvorrichtung,
die einem ersten der Mehrzahl von Prozessoren zugeordnet ist, wobei
die mindestens eine Cachekohärenzprüfvorrichtung
konfiguriert ist, um ein Anwesenheitssignal auszugeben, das anzeigt,
daß eine
erste Datenzeile, die durch einen zweiten der Mehrzahl von Prozessoren
angefordert wird, in einem Cachespeicher anwesend ist, der dem ersten
der Mehrzahl von Prozessoren zugeordnet ist, mindestens einen Vorausräumschlitz,
der konfiguriert ist, um bei dem Empfang des Anwesenheitssignals mindestens
eine zusätzliche
Datenzeile zu bestimmen, die aus dem Cachespeicher, der dem ersten der
Mehrzahl von Prozessoren zugeordnet ist, zu der Speicherhierarchie
vorausgeräumt
werden soll, und eine Logik auf, die dem mindestens einen Vorausräumschlitz
zugeordnet ist, wobei die Logik konfiguriert ist, um eine Anzeige
zu liefern, ob die mindestens eine zusätzliche Datenzeile bereits
zu der Speicherhierarchie vom dem Cachespeicher ausgeräumt ist.
-
Gemäß einem
weiteren Aspekt der Prinzipien der vorliegenden Erfindung weist
ein Verfahren zum Minimieren der Cachekohärenzprüflatenz in einem System mit
einer ungeordneten Befehlsausführung,
das eine Mehrzahl von Prozessoren aufweist, zusätzlich das Erfassen einer Anforderung
eines Zugriffs auf eine erste Datenzeile von einer Speicherhierarchie,
wobei die Anforderung durch einen ersten der Mehrzahl von Prozessoren
durchgeführt
wird, das Bestimmen, ob die erste Datenzeile in einem Cachespeicher,
der einem zweiten der Mehrzahl von Prozessoren zugeordnet ist, anwesend
ist, das Berechnen einer Adresse von mindestens einer zusätzlichen
Datenzeile, die von dem Cachespeicher zu der Speicherhierarchie
vorausgeräumt
werden soll, und das Bestimmen auf, ob eine vorher durchgeführte Anforderung
der mindestens einen zusätzlichen
Datenzeile von dem Cachespeicher anhängig ist.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung sind nachfolgend unter Bezugnahme auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein Blockdiagramm, das
die relevanten Abschnitte eines Vermächtniscomputersystems zeigt,
das einen Prozessor für
eine ungeordnete Befehlsausführung
aufweist;
-
2 ein Blockdiagramm eines
exemplarischen Ausführungsbeispiels
des Vorabruf/Vorausräum-Schlitzes
(DPRESLOT) gemäß den Prinzipien der
vorliegenden Erfindung;
-
2A ein Blockdiagramm eines
exemplarischen Ausführungsbeispiels
der Cachetorentscheidungslogik ge mäß einem bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung;
-
3 ein Flußdiagramm
eines exemplarischen Ausführungsbeispiels
des Vorabrufverfahrens gemäß den Prinzipien
der vorliegenden Erfindung;
-
4 ein Blockdiagramm eines
exemplarischen Ausführungsbeispiels
des Cachekohärenzprüfschlitzes
(CCCSLOT) gemäß den Prinzipien
der vorliegenden Erfindung; und
-
5 ein Flußdiagramm
eines exemplarischen Ausführungsbeispiels
des Vorausräumverfahrens
gemäß den Prinzipien
der vorliegenden Erfindung.
-
Für Vereinfachungs-
und Darstellungs-Zwecke sind die Prinzipien der vorliegenden Erfindung hauptsächlich unter
Bezugnahme auf ein exemplarisches Ausführungsbeispiel, insbesondere
unter Bezugnahme auf ein Beispiel, bei dem ein spezifischer Schaltungsentwurf
implementiert ist, beschrieben. Fachleuten ist es jedoch ohne weiteres
offensichtlich, daß die
gleichen Prinzipien gleichermaßen
auf andere Schaltungsentwürfe
anwendbar sind und in denselben implementiert werden können, und
daß jede solche
Variation innerhalb der Modifikationen liegt, die nicht von dem
wahren Geist und dem Schutzbereich der vorliegenden Erfindung abweichen.
-
Gemäß den Prinzipien
der vorliegenden Erfindung ist ein Vorarruf/Vorausräum-Schlitz
(DPRESLOT) in einer Speicherwarteschlange (MQUEUE) des Prozessors
mit einer ungeordneten Ausführung vorgesehen.
Der DPRESLOT überwacht
die Transaktionen zwischen einer Systemschnittstelle, z. B. dem
Systembus, und einem Adreßneuordnungspufferschlitz
(ARBSLOT) und/oder zwischen der Systemschnittstelle und einem Cachekohärenzprüfschlitz
(CCCSLOT). Wenn ein Cacheverfehlen erfaßt wird, bewirkt der DPRESLOT,
daß eine
oder mehrere Cachezeilen zusätzlich
zu der Datenzeile, die das aktuelle Cacheverfehlen bewirkt hat,
aus der Speicherhierarchie in den Cachespeicher (DCACHE) in der Erwartung,
daß die
zusätzlichen
Daten in naher Zukunft erforderlich sind, vorabgerufen werden. Wenn ein
Cachezurückschreiben
als ein Resultat einer Cachekohärenzprüfung erfaßt wird,
bewirkt der DPRESLOT, daß eine
oder mehrere Cachezeilen zusätzlich
zu der Datenzeile, die derzeit zurückgeschrieben wird, aus der
Speicherhierarchie von dem jeweiligen Cachespeicher (DCACHE) des
Prozessors, der die Zeile besitzt, in der Erwartung, daß die zusätzlichen
Daten für
den anfordernden Prozessor in naher Zukunft erforderlich sind, vorausgeräumt werden.
Eine Logik, die in dem DPRESLOT umfaßt ist, verhindert eine Cachefehlanforderung
nach den zusätzlichen
Daten, wenn eine weitere Anforderung bereits nach diesen Daten durchgefüht wurde.
Ein spekulatives Vorabrufen und Vorausräumen der zusätzlichen
Datenzeilen minimiert die Cacheverfehllatenz und die Kohärenzprüflatenz
eines Prozessors mit einer ungeordneten Befehlsausführung.
-
Gemäß eine bevorzugten
Ausführungsbeispiel
der vorliegenden Erfindung werden insbesondere einer oder mehrere
DPRESLOT(s) zu der Befehlsverarbeitungsvorrichtung 39b (1) hinzugefügt. Alternativ
können
einer oder mehrere ARBSLOTs, die in 1 gezeigt
sind, modifiziert werden, um die Funktionen des DPRESLOT durchzuführen, die
nun detailliert beschrieben sind.
-
2 zeigt ein Blockdiagramm
eines exemplarischen Ausführungsbeispiels
des Vorabruf/Vorausräum-Schlitzes
(DPRESLOT) 200 gemäß den Prinzipien
der vorliegenden Erfindung, der ein Register 136 zum Speichern
eines Nicht-Treffer-(~HIT-) Anzeigers 36a, der durch das
Signal ~HIT 118 von der Etikettvergleichsvorrichtung 108 (1) eingestellt wird, einen
Cacheindex 136b und ein reales Adreßetikett (TAG) 136c,
die als eine Adresse ADDR 128 bzw. als ein TAG 134 von
der Nachbaradressenlogik 213 empfangen werden, und wahlweise
bei einem bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung einen Verfehlen-Typ-Speicher (= Miss Type
Store) 136d zum Halten einer Speicherflag (STORE), die
von einem MISS_STORE-Eingang 214 empfangen wird, umfaßt. Die
einzelne Bitflag STORE zeigt an, ob der verarbeitete Speicherzugriffsbefehl eine
Lese- oder eine Schreib-Operation
durchführt, und
wird aus dem Befehl abgeleitet, der derzeit in der Befehlsverarbeitungsvorrichtung 39b (1) verarbeitet wird. Die
Flag STORE wird durch den DCACHE 24 verwendet, um den Cachebetrieb
bezüglich
der vorabgerufenen Datenzeile(n), die mit dem Speicherzugriffsbefehl,
der durchgeführt
wird, übereinstimmend
zu halten.
-
Die
Nachbaradressenlogik 213 empfängt die Adresse, die in der
MISS/COPY_IN-ADDR 104 anwesend ist, die ein Teil der Transaktionsschnittstelle zwischen
der Befehlsverarbeitungsvorrichtung 39b (1) und der Systemschnittstellensteuerung 102 (1) ist. Die Nachbaradressenlogik 213 erzeugt Adressen,
die benachbart zu der Adresse positioniert sind, die durch die MISS/COPY_IN-ADDR 104 empfangen
werden, durch beispielsweise Invertieren von einem oder mehreren
niederwertigen Bits der empfangenen Adresse oder durch die Verwendung
eines Zählers,
um eine Zahl von Adressen zu erzeugen. Bei diesem exemplarischen
Ausführungsbeispiel wird
das niederwertigste Bit (LSB; LSB = Least Significant Bit) der empfangenen
Adresse invertiert, um eine einzige Adresse zu erzeugen, die eine
Position aufweist, die unmittelbar am nächsten, d. h. unmittelbar vorhergehend
oder unmittelbar folgend, zu der empfangenen Adresse ist.
-
Die
benachbarte Adresse(n), die daher erzeugt wird, wird zu ADDR 128 zur
Speicherung in dem CACHE INDEX 136b des Registers 136 ausgegeben.
Die Nachbaradressenlogik 213 liefert ferner das TAG 134,
das eine reale Seitenzahl (RPN; RPN = Real Page Number) ist, die
der benachbarten Adresse bei dem bevorzugten Ausführungsbeispiel zugeordnet
ist, zur Speicherung in dem TAG 136c des Registers 136.
Das Register 136 empfängt
ein Aktualisierungssignal 212. Während das Aktualisierungssignal 212 aktiv
ist, aktualisiert das Register 136 den Inhalt desselben,
d. h. den Inhalt von jedem der Felder desselben, d. h. das ~HIT 136a,
den CACHE-INDEX 136b, das TAG 136c und die STORE 136d.
-
Das
Aktualisierungssignal 212 wird von dem Invertierer 219 ausgegeben,
der als Eingangssignal desselben ein Signal BUSY (= BESCHÄFTIGT) 204 von
dem Busy-Latch (= Beschäftigt-Latch) 203 empfängt. Das
Busy-Latch 203 kann beispielsweise ein Einstell-und-Neueinstell-
(S-R-) Flip-Flop aufweisen und weist zwei Eingangssignale SET (=
EINSTELLEN) 205 und CLR (= CLEAR = LÖSCHEN) 206 auf, die
das Signal BUSY 204 einstellen bzw. neu einstellen. Wenn
das Signal BUSY 204 eingestellt ist, d. h. aktiv ist, wird
das Aktualisierungssignal 212 aktiv und das Aktualisieren
des Registers 136 wird daher angehalten. Der SET-Eingang 205 empfängt ein
decodiertes Ausgangssignal von dem Decodierer 202, der Eingangssignale
MISS_CAV 101 und TRANS_TYPE 201 empfängt. Das
TRANS_TYPE 201 kann entweder ein "Ladeverfehlen", das aus einem Lesebefehl resultiert,
ein "Speicherverfehlen", das aus einem Schreibbefehl
resultiert, oder eine Kohärenzprüfantwort
sein, ist jedoch nicht darauf begrenzt. TRANS_TYPE 201 wird
aus dem Befehl, der derzeit durch die Befehlsverarbeitungsvorrichtung 39b (1) verarbeitet wird, und/oder
aus Signalen abgeleitet, die von der Systemschnittstellensteuerung 102 (1) empfangen werden.
-
Der
Decodierer 202 gibt ein aktives Signal SET 205 aus,
wenn MISS_CAV 101 eine gültige Adresse anzeigt, die
in der MISS/COPY_IN-ADDR 104 anwesend ist, und wenn das
TRANS_TYPE 201 anzeigt, daß die Transaktion, die in der
Transaktionsschnittstelle zwischen der Befehlsverarbeitungsvorrichtung 39b (1) und der Systemschnittstellensteuerung 102 (1) verarbeitet wird, eine
Speicherzugriffsanforderung ist, die aus einem Cacheverfehlen für einen
der ARBSLOTs 48 resultiert, oder die aus einer Cachekohärenzprüfung resultiert,
die detaillierter im folgenden beschrieben ist.
-
Das
Register 136 aktualisiert kontinuierlich den Inhalt desselben,
solange das Signal BUSY 204 inaktiv bleibt (d. h. wenn
das Aktualisierungssignal 212 aktiv ist). Wenn das Signal
BUSY 204 aktiv wird, hält
das Register 136 das Aktualisieren des Inhalts desselben
an, und der DPRESLOT 200 gibt eine ACCESS_REQ 115 (die
in 1 gezeigt ist), die
den aktuellen Inhalt des CACHE-INDEX 136b, des TAG 136c und
der STORE 136d darstellt, in dem ACCESS_ADDR 114,
dem ACCESS_TAG 116 und dem ACCESS_STORE 218 zu
dem DCACHE 24 aus.
-
Bei
dem Fall, daß es
einen möglichen
Treffer in dem DCACHE 24 gibt, wird der Statusanzeiger 82 eine
gültige
Cachezeile(n) widerspiegeln, wie es detaillierter in dem '178-Patent beschrieben
ist. Die Etikettvergleichsvorrichtung 108 liest ferner
das (die) Etikett(en) DCACHE TAG(s) 81 und vergleicht dasselbe
(dieselben) mit dem Etikett ACCESS_TAG 116, das der Zugriffsadresse
ACCESS_ADDR 114 zugeordnet ist. Wenn es eine Übereinstimmung
gibt, folgert die Etikettvergleichsvorrichtung 108, daß es einen
Treffer gibt, und deaktiviert das Signal ~HIT 118, um einen
Treffer anzuzeigen, was bewirkt, daß das Eingangssignal CLR 206 des
Busy-Latch 203 aktiviert wird, was bewirkt, daß das Signal
BUSY 204 deaktiviert wird.
-
Wenn
der Cachezugriff basierend auf einem Statusanzeiger 82 verfehlt,
oder wenn alternativ das Etikett DCACHE TAG 81 nicht mit
dem Etikett ACCESS_TAG 116 übereinstimmt, dann aktiviert
die Etikettvergleichsvorrichtung 108 das Signal ~HIT 118,
um ein Verfehlen anzuzeigen. Eine Vergleichsvorrichtung 145 empfängt einen
Cacheindex von der Adresse MISS/COPY_IN-ADDR 104, wie es
durch den Bezugspfeil 146 angezeigt wird, und vergleicht dieselbe
mit dem CACHE-INDEX 136b von dem Register 136,
wie es durch einen Bezugspfeil 147 gezeigt ist. Die Resultate
der Vergleichsvorrichtung 145 werden zu einem UND-Gatter 214 weitergeleitet,
wie es durch einen Bezugspfeil 149 gezeigt ist. Vorausgesetzt,
daß das
Verfehlensteuersignal MISS_CAV 101 aktiviert ist, kann
das Vergleichssignal 149 bewirken, daß das Busy-Latch 203 neu
eingestellt wird, was bewirkt, daß das Signal BUSY 204 deaktiviert wird.
Bei diesem exemplarischen Ausführungsbeispiel
ermöglicht
das Vergleichssignal 149, daß das Aktualisieren des Registers 136,
nachdem das Signal MISS_GRANTED 112 durch den DPRESLOT 200 empfangen
wird, wieder aufgenommen wird.
-
Das
Busy-Latch 203 kann ebenfalls neu eingestellt werden, wenn
es bereits eine anhängige
Anforderung der Cachezeile gibt. Wenn einer der ARBSLOTs 148 bereits
die gleiche Cachezeile von der Speicherhierarchie (nicht gezeigt)
angefordert hat, dann wird der DPRESLOT 200 durch den Statusanzeiger 82 (1), da der Statusanzeiger 82 einen Verfehlen-Anhängig-Status,
wie es detaillierter in dem '178-Patent beschrieben
ist, anzeigen wird, beraten. In diesem Fall aktiviert die Etikettvergleichsvorrichtung 108 das
Signal HIT DM 121 (wie es in 1 gezeigt
ist), das zusammen mit einem Signal ACCESS_+_2, das durch die Bezugsziffer 158 bezeichnet
ist, und das zwei Zyklen nach dem Signal ACCESS_REQ 115 (3) darstellt, in das UND-Logikgatter 211 eingespeist
wird, was bewirkt, daß das Signal
BUSY 204 deaktiviert wird.
-
Eine
noch weitere Gelegenheit, bei der das Busy-Latch 203 gelöscht werden
kann, ist dann, wenn ein Signal, das ein Auftreten eines unerwarteten
katastrophalen Ereignisses anzeigt, von dem Eingang 208 des
ODER-Logikgatters 207 empfangen wird. Ein unerwartetes
katastrophales Ereignis kann beispielsweise eine CPU-Falle sein.
-
Da
das Signal BUSY 204 in das UND-Logikgatter 137 eingespeist
wird, wenn dasselbe inaktiv ist, d. h. in einem deaktivierten Zustand
ist, wird DPRESLOT 200 an dem Erzeugen einer MISS_REQUEST 111 gehindert.
Das deaktivierte Signal BUSY 204 bewirkt ferner, daß das Register 136 fortfährt, den
Inhalt desselben zu aktualisieren.
-
Wenn
auf der anderen Seite die ACCESS_REQ 115 dieser benachbarten
Cachezeile ein Verfehlen verursacht hat, d. h. das Signal ~HIT 139 und
das Signal BUSY 204 sind aktiviert, dann wird das UND-Logikgatter 137 das
Fehlanforderungssignal MISS_REQUEST 111 zu dem Verfehlen-Entscheider 107 (1) ausgeben. Der Verfehlen-Entscheider 107 entscheidet
durch Priorisieren der verschiedenen Fehlanforderungen, die durch
die verschiedenen ARBSLOTs 48 und/oder den DPRESLOT 200 erzeugt
werden können.
Der Verfehlen-Entscheider 107 gibt
schließlich
ein Signal MISS_GRANTED 112 aus, um die Fehlanforderung zu
gewähren.
Dieses Signal wird zu dem Treiber 213 in dem DPRESLOT 200 gesendet,
der seinerseits das Verfehlen-Steuersignal MISS_CAV 101 zu
der Systemschnittstellensteuerung 102 aktiviert. Die Systemschnittstellensteuerung 102 führt ihrerseits eine
Speicheranforderung zu der Speicherhierarchie (nicht gezeigt) nach
der Datenzeile basierend auf der Adresse MISS/COPY_IN-ADDR 104 durch.
-
2A zeigt ein exemplarisches
Blockdiagramm der relevanten Abschnitte der Cachetorentscheidungslogik
gemäß einem
bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung, bei der drei Treiber 220 hinzugefügt sind,
wobei jeder derselben aktiviert ist, d. h. das Signal ausgeben kann,
das in den jeweiligen Eingangssignalen, wenn das Signal CACHE_GRANT 221 durch
den Cachetorentscheider 222 aktiviert wird, der ein Teil
des DCACHE 24 sein kann, dargestellt ist. Das Signal CACHE_GRANT 221 wird
bei einem Empfang und bei einer Entscheidung des Signals CACHE_REQ 223 aktiviert,
das von dem UND-Logikgatter 224 empfangen wird. Das UND-Logikgatter 224 empfängt seinerseits
als Eingangssignale desselben den Taktpuls 225, das Signal
BUSY, das ~ACCESS+1 (d. h. das Komplement von einem Taktzyklus nach ACCESS_REQ 115) 226 und
das ~ACCESS+2 (d. h. das Komplement von zwei Taktzyklen nach ACCESS_REQ 115) 158.
-
Das
Verfahren der erfinderischen Vorabrufoperation ist nun unter Bezugnahme
auf ein exemplarisches Flußdiagramm,
das in 3 gezeigt ist,
beschrieben. Bei einem Schritt 301 wird die Transaktionsschnittstelle
zwischen der Befehlsver arbeitungsvorrichtung 39b und der
Systemschnittstellensteuerung 102 (auf die einfach als
die "Transaktionsschnittstelle" im folgenden Bezug
genommen wird) kontinuierlich nach einer Anwesenheit einer Transaktion überwacht,
was beispielsweise durch Überwachen
einer Aktivierung des MISS_CAV 101 bei dem exemplarischen
DPRESLOT 200, der in 2 gezeigt
ist, durchgeführt
werden kann.
-
Sobald
eine Transaktion erfaßt
wird, wird bei einem Schritt 302 eine Bestimmung durchgeführt, ob es
eine gültige
Adresse gibt, die in der Transaktionsschnittstelle anwesend ist.
Bei dem in 2 gezeigten
Beispiel kann die Anwesenheit einer gültigen Adresse, z. B. wenn
das Signal MISS_CAV 101 aktiviert ist, vermutet werden.
Wenn bestimmt ist, daß eine
gültige
Adresse nicht in der Transaktionsschnittstelle anwesend ist, dann
kehrt das Verfahren zu dem Schritt 301 zurück, d. h.
das Überwachen
der Transaktionsschnittstelle wird fortgefahren.
-
Auf
der anderen Seite fährt,
wenn eine gültige
Adresse erfaßt
wird, das Verfahren zu einem Schritt 303 fort, während dessen
eine Bestimmung durchgeführt
wird, ob die Transaktion eine Speicherzugriffsanforderung ist, die
aus einem Cacheverfehlen resultiert. Bei dem Beispiel von 2 kann diese Bestimmung
basierend auf dem TRANS_TYPE 201 durchgeführt werden.
Wenn bestimmt wird, daß die Transaktion
kein Cacheverfehlen ist, dann kehrt das Verfahren zu dem Schritt 301 zurück, d. h.
das Überwachen
der Transaktionsschnittstelle wird fortgefahren.
-
Wenn
jedoch die Transaktion eine Speicherzugriffsanforderung ist, die
aus einem Cacheverfehlen resultiert, dann wird bei einem Schritt 304 das Überwachen
der Transaktionsschnittstelle angehalten. Bei dem DPRESLOT 200 wird
beispielsweise das Aktualisieren des Registers 136 durch
Einstellen des Busy-Latch 203 angehalten. Dann werden bei
einem Schritt 305 eine oder mehrere Adressen von Datenzeilen,
die vorabgerufen werden sollen, berechnet. Bei dem DPRESLOT 200 berechnet
beispielsweise die Nachbaradressenlogik 213 die vorabzurufenden
Adressen durch Invertieren von einem oder mehreren Bits (z. B. des
niederwertigsten Bits (LSB; LSB = Least Significant Bit)) der Adresse
der Datenzeile, deren versuchter Zugriff das Cacheverfehlen bewirkt
hat, die in dem MISS/COPY_IN-ADDR 104 anwesend ist.
-
Bei
einem Schritt 306 wird eine Cachenachschlagoperation für die Adressen
durchgeführt,
die während
des obigen Schritts 305 berechnet werden. Bei dem Beispiel
von 2 gibt beispielsweise
der DPRESLOT 200 eine ACCESS_REQ 115, die den aktuellen
Inhalt des CACHE-INDEX 136b, des TAG 136c und
der STORE 136d darstellt, in dem ACCESS_ADDR 114,
dem ACCESS_TAG 116 und dem ACCESS_STORE 218, zu
dem DCACHE 24 aus.
-
Bei
einem Schritt 307 wird das Resultat der Cachenachschlagoperation
untersucht, um zu bestimmen, ob die vorabzurufenden Datenzeilen
bereits in dem Cachespeicher anwesend sind, d. h. ob ein Cachetreffer
auftritt. Bei dem Beispiel von 2 bestimmt
beispielsweise DPRESLOT 200, daß ein Cachetreffer aufgetreten
ist, indem beobachtet wird, daß das
~HIT 118 durch die Etikettvergleichsvorrichtung 108,
deaktiviert wird. Wenn ein Cachetreffer aufgetreten ist, kehrt das
Verfahren zu dem Schritt 301 zurück und das Überwachen der Transaktionsschnittstelle
wird wieder aufgenommen.
-
Wenn
jedoch bei einem Schritt 307 ein Cacheverfehlen erfaßt wird,
fährt das
Verfahren zu einem Schritt 308 fort, bei dem eine Bestimmung durchgeführt wird,
ob eine Anforderung der vorabzurufenden Datenzeile(n), z. B. durch
einen ARBSLOT 48 bei dem Beispiel, das in 2 gezeigt ist, bereits durchgeführt wurde.
Bei dem Beispiel von 2 kann
eine anhängige
Anforderung der Datenzeile aus dem HIT_DM 121 erfaßt werden.
Wenn bestimmt wird, daß eine
Anforderung der Datenzeile bereits anhängig ist, dann kehrt das Verfah ren
zu dem Schritt 301 zurück
und das Überwachen
der Transaktionsschnittstelle wird wieder aufgenommen.
-
Bei
einem Schritt 309 wird schließlich, wenn keine vorhergehenden
Anforderungen der Datenzeile anhängig
sind, eine Anforderung nach der vorabzurufenden Datenzeile, z. B.
durch Ausgeben des MISS_REQUEST 111 bei dem Beispiel von 2, ausgegeben, was schließlich dazu
führt,
daß das MISS_CAV 101 aktiviert
wird und einen Speicherhierarchiezugriff nach der Datenzeile(n)
bewirkt. Bei einem bevorzugten Ausführungsbeispiel kehrt, sobald die
Anforderung der vorabzurufenden Datenzeile(n) ausgegeben ist (MISS_CAV 101 feuert
ab), das Verfahren unmittelbar zu dem Schritt 301 zurück, und das
gesamte Verfahren wird kontinuierlich wiederholt. In 2 handhabt beispielsweise
die Systemschnittstellensteuerung 102 vorteilhafterweise
den tatsächlichen
Zugriff der Speicherhierarchie, was es ermöglicht, daß DPRESLOT 200 das
oben beschriebene Verfahren fortfährt. Wenn die Adresse der vorabzurufenden
Datenzeile in der MISS/COPY_IN-ADDR 104 als ein Teil der
Anforderung zu der Systemschnittstellensteuerung 102 plaziert
ist, empfängt
die Vergleichsvorrichtung 145 einen identischen Cacheindex
in beiden Eingangssignalen 146 und 147 derselben,
und das Signal BUSY 204 wird daher deaktiviert, was bewirkt,
daß das
Register 136 das Aktualisieren des Inhalts desselben wieder
aufnimmt.
-
Wenn
eine Fehlanforderung durch einen Befehl in ARBSLOT 48 eingeleitet
wird, der mit der Adresse in dem Vergleichseingangssignal 147 übereinstimmt
bevor DPRESLOT 200 das Signal MISS_GRANTED 112 empfängt, wird
das Signal BUSY 204 deaktiviert und das Aktualisieren des
Registers 136 wird weiter wieder aufgenommen.
-
Das
erfinderische Cachevorausräumsystem und
das erfinderische Verfahren gemäß den Prinzipien
der vorliegenden Erfindung sind im folgenden unter Bezugnahme auf
exemplarische Ausführungsbeispiele,
die in den 4 und 5 gezeigt sind, beschrieben.
-
Gemäß einem
bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung werden einer oder mehrere Cachekohärenzprüfschlitze
(CCCSLOT) zu der Befehlsverarbeitungsvorrichtung 39b (1) hinzugefügt. Bei
der Alternative können
einer oder mehrere der ARBSLOTs, die in 1 gezeigt sind, modifiziert sein, um
die Funktionen des CCCSLOT, die detaillierter im folgenden beschrieben
sind, zu übernehmen.
-
4 zeigt insbesondere ein
Blockdiagramm eines exemplarischen Ausführungsbeispiels des Cachekohärenzprüfschlitzes
(CCCSLOT), der wie ein ARBSLOT 48, wie in dem '178-Patent beschrieben,
erscheinen und auf eine ähnliche
Art und Weise funktionieren kann, wobei die Hauptunterschiede unter
anderem das Hinzufügen
des Erledigt-Latches 402 und des Treibers 407 sind,
und daß die
Adresse 128 und das Etikett 134 von der Systemschnittstellensteuerung 102 und
nicht von dem Adreßrechner 58 empfangen
werden.
-
Wenn
einer der mehreren Prozessoren in einem Mehrprozessorberechnungssystem
eine oder mehrere Datenzeilen von der Speicherhierarchie anfordert,
erscheint die Speicheranforderung und die Adresse(n) von der einen
oder den mehreren Datenzeilen in der Systemschnittstelle 22 (1). Die Systemschnittstelle 102 von
jedem Prozessor gibt beim Erfassen der Speicheranforderung ein Signal CCC_INSERT 401 zu
der Befehlsverarbeitungsvorrichtung 39b derselben aus.
-
Zu
diesem Zweck empfängt
bei dem bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung ein jeweiliger CCCSLOT 400 von
jedem der Prozessoren die ADDR 128, das TAG 134 und
das Signal CCC_INSERT 401 von der Systemschnittstellensteuerung 102,
wobei die ADDR 128 und das TAG 134 der Datenzeile
zugeordnet sind, die durch einen weiteren Prozessor in dem System
angefordert wird. Das Signal CCC_INSERT 401 dient als ein
Taktsignal zu dem Register 136 des CCCSLOT 400,
was dem Register 136 daher ermöglicht, den CACHE-INDEX 136b desselben
und das TAG 136c mit der ADDR 128 bzw. dem TAG 134 zu
aktualisieren. Das Signal CCC_INSERT 401 wird ferner in
den Lösch- (CLR-;
CLR = CLEAR) Eingang des Erledigt-Latches 402 eingespeist,
das z. B. ein Einstell-und-Neueinstell- (S-R-; S-R = SET-RESET)
Flip-Flop sein kann. Wenn das CLR-Eingangssignal empfangen wird, wird
das Ausgangssignal des Erledigt-Latches 402 inaktiv. Der
Invertierer 510 invertiert das Ausgangssignal des Erledigt-Latches 402,
wodurch ein aktives Signal ~DONE (= ERLEDIGT) dem Eingang des UND-Logikgatters 137,
wie gezeigt, dargestellt wird.
-
Beim
Empfang des Signals CCC_INSERT 401 gibt der CCCSLOT 400 ein
Signal ACCESS_REQ 115 zu dem DCACHE 24 aus und plaziert
den CACHEE-INDEX 136b und das TAG 134 in der ACCESS_ADDR 114 bzw.
dem ACCESS_TAG 116. Ansprechend darauf gibt der DCACHE 24 das (die)
DCACHE_TAG(s) 81 und den STATUS 82, wie in 1 gezeigt, aus. Auf eine
sehr ähnliche
Art und Weise, wie im vorhergehenden in dem '178-Patent hinsichtlich des ARBSLOT 48 beschrieben,
wird eine MISS_REQUEST 111 erzeugt, wenn die Datenzeile, die
der ADDR 128 und dem TAG 134 entspricht, in dem
DCACHE 24 abwesend ist, und wenn keine andere Anforderung
der gleichen Datenzeile anhängig ist.
Wenn der VERFEHLEN-ENTSCHEIDER (= MISS_ARBITRATOR) 107 das
Signal MISS_GRANTED 112 ansprechend auf die MISS_REQUEST 111 zurückgibt,
wird das Signal MISS_GRANTED 112 in den SET-Eingang des
Erledigt-Latches 402 eingespeist, wodurch ein aktives Signal
DONE erzeugt wird, um zu verhindern, daß eine weitere MISS_REQUEST 111 ausgegeben
wird.
-
Das
Signal MISS_GRANTED 112 ermöglicht ferner, daß der Treiber 407 den
aktuellen Inhalt des HIT 136a des Registers 136 weiter
zu dem Signal CCC_MISS/HIT 408 gibt, das zu der Systemschnittstellensteuerung 102 gesendet
wird. Basierend auf dem empfangenen Signal CCC_MISS/HIT 408 und dem
STATUS 82 bestimmt die Systemschnittstellensteuerung 102, ob
ein Zurückschreiben
oder Ausräumen
der Datenzeile (d. h. auf die durch die MISS/COPY_IN-ADDR 104 gezeigt
wird) aus dem DCACHE 24 zu der Speicherhierarchie (nicht
gezeigt) erforderlich ist. Bei einem Ausführungsbeispiel der vorliegenden
Erfindung bewirkt immer dann, wenn die Datenzeile in dem DCACHE 24 gefunden wird,
d. h. wenn CCC_MISS/HIT 408 inaktiv ist, und der STATUS 82 anzeigt,
daß die
Cachezeile verunreinigt ist, die Systemschnittstellensteuerung 102, daß die Datenzeile
(d. h. auf die durch MISS/COPY_IN-ADDR 104 gezeigt wird)
aus dem Prozessor geschrieben wird, der die Cachezeile angefordert
hat.
-
Wenn
der DPRESLOT 200 das angezeigte Cachekohärenzprüfresultat
an dem Eingang TRANS_TYPE 201 empfängt, der durch den CCCSLOT 400 getrieben
wird, leitet der DPRESLOT 200 eine Vorausräumoperation
gemäß den Prinzipien
der vorliegenden Erfindung ein, die im folgenden unter Bezugnahme
auf die 2 und 5 beschrieben ist.
-
5 zeigt insbesondere ein
Flußdiagramm eines
exemplarischen Ausführungsbeispiels
des Vorausräumverfahrens,
wobei bei einem Schritt 501 desselben die Transaktionsschnittstelle
zwischen der Befehlsverarbeitungsvorrichtung 39b und der
Systemschnittstellensteuerung 102 (auf die einfach als die "Transaktionsschnittstelle" im folgenden Bezug genommen
wird) kontinuierlich nach einer Anwesenheit einer Transaktion überwacht
wird, was beispielsweise durch Überwachen
einer Aktivierung des MISS_CAV 101 bei dem exemplarischen
DPRESLOT 200, der in 2 gezeigt
ist, durchgeführt
werden kann.
-
Sobald
eine Transaktion erfaßt
ist, wird eine Bestimmung, ob es eine gültige Adresse gibt, die in der
Transaktionsschnittstelle anwesend ist, z. B. durch Erfassen, daß das Signal
MISS_CAV 101 aktiviert ist (Schritt 502) durchgeführt. Wenn
bestimmt ist, daß eine
gültige
Adresse nicht in der Transaktionsschnittstelle anwesend ist, dann
kehrt das Verfahren zu dem Schritt 501 zurück, d. h.
das Überwachen der
Transaktionsschnittstelle fährt
fort.
-
Wenn
auf der anderen Seite eine gültige Adresse
erfaßt
wird, fährt
das Verfahren zu einem Schritt 503 fort, während dessen
eine Bestimmung durchgeführt
wird, ob die Transaktion eine Kohärenzantwort ist, die aus einer
Cachekohärenzprüfung resultiert.
Wenn bestimmt wird, daß die
Transaktion keine Cachekohärenzantwort
ist, dann kehrt das Verfahren zu dem Schritt 501 zurück, d. h.
das Überwachen
der Transaktionsschnittstelle fährt
fort.
-
Wenn
jedoch die Transaktion eine Kohärenzantwort
ist, z. B. eine Kohärenzantworttransaktion, die
das Kopieren von unsauberen Daten erfordert, wie es durch den STATUS 82 angezeigt
ist, wird das Überwachen
der Transaktionsschnittstelle, beispielsweise durch Einstellen des
Busy-Latch 203, um das Aktualisieren des Registers 136 anzuhalten,
angehalten. Dann werden bei einem Schritt 505 eine oder mehrere
Adressen von Datenzeilen, die vorausgeräumt werden sollen, berechnet.
Die Nachbaradressenlogik 213 berechnet die vorauszuräumenden Adressen
durch Invertieren von einem oder mehreren Bits (z. B. des niederwertigsten
Bits (LSB)) der Adresse der Datenzeile, die in der MISS/COPY_IN-ADDR 104 anwesend
ist.
-
Bei
einem Schritt 506 wird eine Cachenachschlagoperation für die Adressen
durchgeführt,
die während
des obigen Schritts 505 berechnet werden. Der DPRESLOT 200 gibt
eine ACCESS_REQ 115, die den aktuellen Inhalt des CACHE-INDEX 136b, des
TAG 136c und der STORE 136d darstellt, in dem ACCESS_ADDR 114,
dem ACCESS_TAG 116 bzw. dem ACCESS_STORE 218,
zu dem DCACHE 24 aus.
-
Bei
einem Schritt 507 wird das Resultat der Cachenachschlagoperation
untersucht, um zu bestimmen, ob die vorauszuräumende(n) Datenzeile(n) in
dem Cachespeicher anwesend ist, d. h. DPRESLOT 200 bestimmt
durch Beobachten, daß das ~HIT 118 durch
die Etikettvergleichsvorrichtung 108 deaktiviert wird,
daß ein
Cachetreffer aufgetreten ist. Wenn ein Cacheverfehlen aufgetreten
ist, kehrt das Verfahren zu dem Schritt 501 zurück und das Überwachen
der Transaktionsschnittstelle wird wieder aufgenommen.
-
Wenn
jedoch bei dem Schritt 507 ein Cachetreffer erfaßt wird,
fährt das
Verfahren zu dem Schritt 508 fort, bei dem eine Bestimmung,
ob eine Anforderung der (den) vorauszuräumenden Datenzeile(n) bereits
durchgeführt
wurde, z. B. durch einen ARBSLOT 48, der in 1 gezeigt ist, durch Beobachten eines
HIT DM 121 durchgeführt
wird. Wenn bestimmt wird, daß eine
Anforderung einer Datenzeile bereits anhängig ist, dann kehrt das Verfahren
zu dem Schritt 501 zurück
und das Überwachen
der Transaktionsschnittstelle wird wieder aufgenommen.
-
Schließlich wird
bei einem Schritt 509, wenn keine vorhergehenden Anforderungen
nach der Datenzeile anhängig
sind, eine Ausräumtransaktion
für die
vorauszuräumende
Datenzeile, z. B. durch Ausgeben der MISS_REQUEST 111,
die bewirkt, daß ein Speicherhierarchiezugriff
durch die Systemschnittstellensteuerung 102 die Datenzeile(n)
von dem DCACHE 24 zu der Speicherhierarchie schreibt, ausgegeben.
Zu diesem Zweck kann das Eingangssignal ~HIT zu dem UND-Logikgatter 137 für den Zweck des
Verwendens des DPRESLOT 200 für eine Vorausräumoperation
invertiert werden, z. B. wenn das TRANS_TYPE 201 eine Cachekohärenzprüfung anzeigt.
Bei einem bevorzugten Ausführungsbeispiel der
vorliegenden Erfindung wird der STATUS 82 berücksichtigt,
und die vorauszuräumende
Datenzeile wird lediglich ausgeräumt,
wenn der Status der vorauszuräumenden
Datenzeile anzeigt, daß die
Daten unsauber sind. Bei der Alternative kann die vorauszuräumende Datenzeile
ohne Rücksicht
auf den Status derselben ausgeräumt
werden. Bei einem bevorzugten Ausführungsbeispiel kehrt, sobald
die Anforderung nach der (den) vorauszuräumenden Datenzeile(n) ausgegeben
ist, das Verfahren unmittelbar zu dem Schritt 501 zurück und das
gesamte Verfahren wird kontinuierlich wiederholt.
-
Wie
es offensichtlich ist, ist ein effizientes System zum Vorabrufen
und/oder Vorausräumen
von einer oder mehreren Datenzeilen, das nicht die anderen Komponenten
von einem System mit einem ungeordneten Verarbeiten beeinflußt und ohne
weiteres in dasselbe integriert werden kann und das ferner die redundanten
mehreren Speicheranforderungen minimiert, beschrieben.