DE10113191A1 - Spekulatives Vorausräumen von Daten in einem Prozessorsystem mit einer ungeordneten Ausführung - Google Patents
Spekulatives Vorausräumen von Daten in einem Prozessorsystem mit einer ungeordneten AusführungInfo
- Publication number
- DE10113191A1 DE10113191A1 DE10113191A DE10113191A DE10113191A1 DE 10113191 A1 DE10113191 A1 DE 10113191A1 DE 10113191 A DE10113191 A DE 10113191A DE 10113191 A DE10113191 A DE 10113191A DE 10113191 A1 DE10113191 A1 DE 10113191A1
- Authority
- DE
- Germany
- Prior art keywords
- cache
- data
- processors
- minimizing
- address
- 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.)
- Granted
Links
- 238000005457 optimization Methods 0.000 title description 2
- 238000000034 method Methods 0.000 claims abstract description 42
- 238000012360 testing method Methods 0.000 claims abstract description 7
- 230000001960 triggered effect Effects 0.000 claims 2
- 108090000623 proteins and genes Proteins 0.000 claims 1
- 238000012545 processing Methods 0.000 description 15
- 238000012544 monitoring process Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 238000007781 pre-processing Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 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
-
- 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 or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Das spekulative Vorabrufen und Vorausräumen von zusätzlichen Cachezeilen minimiert die Cacheverfehllatenz und die Kohärenzprüflatenz eines Prozessors mit einer ungeordneten Befehlsausführung. Ein Vorabruf/Vorausräum-Schlitz (DPRESLOT) ist in einer Speicherwarteschlange des Prozessors mit einer ungeordneten Ausführung vorgesehen. Der DPRESLOT überwacht die Transaktionen zwischen einer Systemschnittstelle, z. B. dem Systembus, und einem Adreßneuordnungspufferschlitz und/oder zwischen der Systemschnittstelle und einem Cachekohärenzprüfschlitz. 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, von der Haupthierarchie in den Cachespeicher 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, zu der Haupthierarchie von dem jeweiligen Cachespeicher des Prozessors, der die Zeile besitzt, vorausgeräumt werden.
Description
Die vorliegende Erfindung bezieht sich allgemein auf Compu
terprozessoroperationen und Computerprozessorarchitekturen.
Die vorliegende Erfindung bezieht sich insbesondere auf die
Leistungsoptimierung durch spekulatives Vorabrufen und Vor
ausräumen von Daten in einem Prozessorsystem, bei dem Be
fehle ungeordnet ausgeführt werden können.
Ein Hochleistungsprozessor, z. B. ein superskalarer Prozes
sor, bei dem zwei oder mehrere skalare Operationen parallel
durchgeführt werden, kann entworfen sein, um Befehle unge
ordnet, 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 ausge
führt, wenn sie ausgeführt werden können, und nicht wenn
sie in der Folge, die durch das Programm definiert ist, er
scheinen. Nach der ungeordneten Ausführung von Befehlen
werden die Resultate typischerweise schließlich neu geord
net, um der ordnungsgemäßen Befehlsreihenfolge zu entspre
chen, bevor die Resultate zurück zu dem Programm weiterge
leitet werden, das in dem Prozessor läuft.
Beispiele von Prozessorarchitekturen, die Befehle ungeord
net ausführen, sind in dem U. S.-Patent Nr. 5,758,178 (er
teilt am 26. Mai 1998, mit dem Titel "Miss Tracking System
and Method"), dem U. S.-Patent Nr. 5,761,713 (erteilt am
2. Juni 1998, mit dem Titel "Address Aggregation System and
Method for Increasing Troughput to a Multi-Banked Data
Cache From a Processor by Concurrently Forwarding an Ad
dress to Each Bank"), dem U. S.-Patent Nr. 5,838,942
(erteilt am 17. November 1998, mit dem Titel "Panic Trap
System and Method"), dem U. S.-Patent Nr. 5,809,275 (erteilt
am 15. September 1998 mit dem Titel "Store-to Load Hazard
Resolution System and Method for a Processor that Executes
Instructions Out of Order"), dem U. S.-Patent Nr. 5,799,167
(erteilt am 25. August 1998 mit dem Titel "Instruction Nul
lifaction System and Method for a Processor that Executes
Instructions Out of Order") beschrieben, die alle von Gregg
Lesartre sind, der einer der Erfinder ist, und die der Be
vollmächtigten übertragen und alle ausdrücklich hierin und
durch Bezugnahme in ihrer Gesamtheit aufgenommen sind.
Detaillierter beschrieben, z. B. in dem U. S.-Patent Nr. 5,758,178
('178), 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 Befehlsverarbeitungsvor
richtungen zum Empfangen und dem ungeordneten Ausführen von
jeweiligen Speicherbefehlen. Jede Befehlsverarbeitungsvor
richtung umfaßt ein Befehlsregister zum Speichern eines Be
fehls und einen Adressenneuanordnungspufferschlitz (ARB
SLOT; ARBSLOT = Adress Reorder Buffer SLOT) zum Speichern
der Datenadresse der Befehlsausführungsresultate. Eine Ab
hängig-Vom-Verfehlen-(DM-; DM = Dependent-On-Miss)Anzei
gelogik in jedem ARBSLOT verhindert insbesondere eine An
frage von dem jeweiligen ARBSLOT derselben zu der Speicher
hierarchie nach fehlenden Daten, die in dem DCACHE nicht
anwesend sind, wenn ein weiterer ARBSLOT die fehlenden Da
ten bereits aus der Speicherhierarchie angefordert hat.
Fig. 1 zeigt beispielsweise insbesondere ein Blockdiagramm
der relevanten Abschnitte des Computersystems zum Darstel
len des Betriebs des Abschnitts der Befehlsverarbeitungs
vorrichtung 39b der MQUEUE. Die MQUEUE umfaßt einen oder
mehrere ARBSLOTs 48 (wobei lediglich einer derselben ge
zeigt 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ül
tige Cachezeilen widerspiegeln. Eine Etikettvergleichsvor
richtung 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 Etikettver
gleichsvorrichtung 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 ge
zeigt) 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 Statusan
zeiger 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 Cacheverfeh
len 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 zuzu
greifen, bewirkt die DM-Anzeigerlogik 135, daß das Fehlan
forderungssignal 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 Ver
fehlen-Steuersignal MISS_CAV 101 zu der Systemschnittstel
lensteuerung 102 aktiviert. Die Systemschnittstellensteue
rung 102 führt ihrerseits eine Speicheranforderung zu der
Speicherhierarchie (nicht gezeigt) nach der Datenzeile ba
sierend auf der Adresse MISS/COPY_IN-ADDR 104 (Verfeh
len/Kopieren_Hinein-Adresse), die von dem ARBSLOT 48 zu der
Systemschnittstellensteuerung 102 weitergeleitet wird,
durch.
Sobald die Datenzeile von der Speicherhierarchie zu der Sy
stemschnittstellensteuerung 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 Steuer
signal COPY_IN 103 zu den ARBSLOTs 48 und plaziert die zu
geordnete Adresse in der MISS/COPY_IN-ADDR 104 zu den ARBS
LOTs 48.
Wenn ein weiterer ARBSLOT 48 versucht, auf den DCACHE 24
nach einer fehlenden Datenzeile, die derzeit von der Spei
cherhierarchie 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 an
gefoidert wird, anzeigt. Eine redundante Speicheranforde
rung 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 super
skalarer Prozessor, der oben beschrieben ist, stark die Be
fehlsausfü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 Be
zug 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 Daten
zeile 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 ei
ner gut bekannten Ortstheorie, die die räumliche Ortstheo
rie genannt wird, die darauf achtet, daß, wenn auf Informa
tionen durch den Prozessor zugegriffen wird, auf Informa
tionen, 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 Be
fehlscodefolge ist, die auf eine Datensatzlänge zugreift,
die länger als eine Cachezeile ist, d. h. wenn die Be
fehlseodefolge auf Daten Bezug nimmt, die mehrere Datenzei
len überspannen. Bei einem System, das ein Vorabrufen
und/oder Vorausräumen und nicht ein Abrufen (und/oder Aus
rä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 Speicher
bezugnahmebefehle erforderlich sind, kann mindestens einen
Teil der Cacheverfehllatenz und der Kohärenzprüflatenz ver
stecken 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 Vor
ausräumen verwendet, das oben beschrieben ist, betrifft je
de zusätzliche Speicheranforderung, die aus einer ungeord
neten Ausführung von Befehlen resultiert, eine Speicher
transaktion, die eine Übertragung einer Zahl von Datenzei
len (und nicht einer einzigen Datenzeile ohne das Vorabru
fen und Vorausräumen von zusätzlichen Datenzeilen) erfor
dert, 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 ei
ner oder mehreren Datenzeilen aus einer Speicherhierarchie
zu einem Cachespeicher ermöglichen, ohne die Systemleistung
eines Systems mit einer ungeordneten Verarbeitung zu ge
fährden.
Diese Aufgabe wird durch eine Vorrichtung zum Minimieren
der Cachekohärenzprüflatenz bei einem System mit einer un
geordneten 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 ei
ner Speicherhierarchie zu einem Cachespeicher ermöglicht,
während dieselbe mehrere redundante Speicheranforderungen
bei dem Fall eines Cacheverfehlens bei einem System mit ei
nem 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 Daten
zeilen aus einem Cachespeicher bei einem System mit einer
ungeordneten Befehlsausführung mit mehreren Prozessoren er
mö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 Anwe
senheitssignal auszugeben, das anzeigt, daß eine erste Da
tenzeile, die durch einen zweiten der Mehrzahl von Prozes
soren 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 konfigu
riert ist, um eine Anzeige zu liefern, ob die mindestens
eine zusätzliche Datenzeile bereits zu der Speicherhierar
chie 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 Be
fehlsausführung, das eine Mehrzahl von Prozessoren auf
weist, zusätzlich das Erfassen einer Anforderung eines Zu
griffs auf eine erste Datenzeile von einer Speicherhierar
chie, 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ätzli
chen Datenzeile, die von dem Cachespeicher zu der Speicher
hierarchie vorausgeräumt werden soll, und das Bestimmen
auf, ob eine vorher durchgeführte Anforderung der minde
stens 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:
Fig. 1 ein Blockdiagramm, das die relevanten Abschnitte
eines Vermächtniscomputersystems zeigt, das einen
Prozessor für eine ungeordnete Befehlsausführung
aufweist;
Fig. 2 ein Blockdiagramm eines exemplarischen Ausfüh
rungsbeispiels des Vorabruf/Vorausräum-Schlitzes
(DPRESLOT) gemäß den Prinzipien der vorliegenden
Erfindung;
Fig. 2A ein Blockdiagramm eines exemplarischen Ausfüh
rungsbeispiels der Cachetorentscheidungslogik ge
mäß einem bevorzugten Ausführungsbeispiel der
vorliegenden Erfindung;
Fig. 3 ein Flußdiagramm eines exemplarischen Ausfüh
rungsbeispiels des Vorabrufverfahrens gemäß den
Prinzipien der vorliegenden Erfindung;
Fig. 4 ein Blockdiagramm eines exemplarischen Ausfüh
rungsbeispiels des Cachekohärenzprüfschlitzes
(CCCSLOT) gemäß den Prinzipien der vorliegenden
Erfindung; und
Fig. 5 ein Flußdiagramm eines exemplarischen Ausfüh
rungsbeispiels des Vorausräumverfahrens gemäß den
Prinzipien der vorliegenden Erfindung.
Für Vereinfachungs- und Darstellungs-Zwecke sind die Prin
zipien der vorliegenden Erfindung hauptsächlich unter Be
zugnahme auf ein exemplarisches Ausführungsbeispiel, insbe
sondere unter Bezugnahme auf ein Beispiel, bei dem ein spe
zifischer Schaltungsentwurf implementiert ist, beschrieben.
Fachleuten ist es jedoch ohne weiteres offensichtlich, daß
die gleichen Prinzipien gleichermaßen auf andere Schal
tungsentwü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
Vorabruf/Vorausräum-Schlitz (DPRESLOT) in einer Speicher
warteschlange (MQUEUE) des Prozessors mit einer ungeordne
ten Ausführung vorgesehen. Der DPRESLOT überwacht die
Transaktionen zwischen einer Systemschnittstelle, z. B. dem
Systembus, und einem Adreßneuordnungspufferschlitz (ARB
SLOT) 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 zu
sätzlichen Daten in naher Zukunft erforderlich sind, vorab
gerufen werden. Wenn ein Cachezurückschreiben als ein Re
sultat 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 Er
wartung, 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, verhin
dert eine Cachefehlanforderung nach den zusätzlichen Daten,
wenn eine weitere Anforderung bereits nach diesen Daten
durchgeführt wurde. Ein spekulatives Vorabrufen und Voraus
räumen der zusätzlichen Datenzeilen minimiert die Cachever
fehllatenz und die Kohärenzprüflatenz eines Prozessors mit
einer ungeordneten Befehlsausführung.
Gemäß einem bevorzugten Ausführungsbeispiel der vorliegen
den Erfindung werden insbesondere einer oder mehrere
DPRESLOT(s) zu der Befehlsverarbeitungsvorrichtung 39b
(Fig. 1) hinzugefügt. Alternativ können einer oder mehrere
ARBSLOTs, die in Fig. 1 gezeigt sind, modifiziert werden,
um die Funktionen des DPRESLOT durchzuführen, die nun de
tailliert beschrieben sind.
Fig. 2 zeigt ein Blockdiagramm eines exemplarischen Ausfüh
rungsbeispiels des Vorabruf/Vorausräum-Schlitzes (DPRESLOT)
200 gemäß den Prinzipien der vorliegenden Erfindung, der
ein Register 136 zum Speichern eines Nicht-Treffer- (~HIT-)
Anzeigers 136a, der durch das Signal ~HIT 118 von der Eti
kettvergleichsvorrichtung 108 (Fig. 1) eingestellt wird,
einen CACHE-INDEX 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
(Fig. 1) verarbeitet wird. Die Flag STORE wird durch den
DCACHE 24 verwendet, um den Cachebetrieb bezüglich der
vorabgerufenen Datenzeile(n), die mit dem Speicherzugriffs
befehl, 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 Befehlsverarbei
tungsvorrichtung 39b (Fig. 1) und der Systemschnittstellen
steuerung 102 (Fig. 1) ist. Die Nachbaradressenlogik 213
erzeugt Adressen, die benachbart zu der Adresse positio
niert 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 Adres
sen zu erzeugen. Bei diesem exemplarischen Ausführungsbei
spiel wird das niederwertigste Bit (LSB; LSB = Least Signi
ficant 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 Regi
sters 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 Spei
cherung in dem TAG 136c des Registers 136. Das Register 136
empfängt ein Aktualisierungssignal 212. Während das Aktua
lisierungssignal 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 Aktualisierungs
signal 212 aktiv und das Aktualisieren des Registers 136
wird daher angehalten. Der SET-Eingang 205 empfängt ein de
codiertes Ausgangssignal von dem Decodierer 202, der Ein
gangssignale 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ärenz
TRANS_TYPE 201 wird aus dem Befehl, der derzeit durch die
Befehlsverarbeitungsvorrichtung 39b (Fig. 1) verarbeitet
wird, und/oder aus Signalen abgeleitet, die von der System
schnittstellensteuerung 102 (Fig. 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 Transaktions
schnittstelle zwischen der Befehlsverarbeitungsvorrichtung
39b (Fig. 1) und der Systemschnittstellensteuerung 102
(Fig. 1) verarbeitet wird, eine Speicherzugriffsanforderung
ist, die aus einem Cacheverfehlen für einen der ARBSLOTs 48
resultiert, oder die aus einer Cachekohärenzprüfung resul
tiert, 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 Fig. 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 Cachezei
le(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 Eti
kettvergleichsvorrichtung 108, daß es einen Treffer gibt,
und deaktiviert das Signal ~HIT 118, um einen Treffer anzu
zeigen, 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 Vergleichsvor
richtung 145 empfängt einen Cacheindex von der Adresse
MISS/COPY_IN-ADDR 104, wie es durch den Bezugspfeil 146 an
gezeigt 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ührungsbei
spiel ermöglicht das Vergleichssignal 149, daß das Aktuali
sieren des Registers 136, nachdem das Signal MISS_GRANTED
112 durch den DPRESLOT 200 empfangen wird, wieder aufgenom
men 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) ange
fordert hat, dann wird der DPRESLOT 200 durch den Statusan
zeiger 82 (Fig. 1), da der Statusanzeiger 82 einen Verfeh
len-Anhängig-Status, wie es detaillierter in dem '178-
Patent beschrieben ist, anzeigen wird, beraten. In diesem
Fall aktiviert die Etikettvergleichsvorrichtung 108 das Si
gnal HIT_DM 121 (wie es in Fig. 1 gezeigt ist), das zusam
men mit einem Signal ACCESS_+_2, das durch die Bezugsziffer
158 bezeichnet ist, und das zwei Zyklen nach dem Signal
ACCESS_REQ 115 (Fig. 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 an
zeigt, von dem Eingang 208 des ODER-Logikgatters 207 emp
fangen wird. Ein unerwartetes katastrophales Ereignis kann
beispielsweise eine CPU-Falle sein.
Da das Signal BUSY 204 in das UND-Logikgatter 137 einge
speist wird, wenn dasselbe inaktiv ist, d. h. in einem de
aktivierten 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 be
nachbarten 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 Fehlanforderungs
signal MISS_REQUEST 111 zu dem Verfehlen-Entscheider 107
(Fig. 1) ausgeben. Der Verfehlen-Entscheider 107 entschei
det 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 System
schnittstellensteuerung 102 führt ihrerseits eine Speicher
anforderung zu der Speicherhierarchie (nicht gezeigt) nach
der Datenzeile basierend auf der Adresse MISS/COPY_IN-ADDR
104 durch.
Fig. 2A zeigt ein exemplarisches Blockdiagramm der relevan
ten Abschnitte der Cachetorentscheidungslogik gemäß einem
bevorzugten Ausführungsbeispiel der vorliegenden Erfindung,
bei der drei Treiber 220 hinzugefügt sind, wobei jeder der
selben 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 Fig. 3 gezeigt ist, beschrieben. Bei einem Schritt 301
wird die Transaktionsschnittstelle zwischen der Befehlsver
arbeitungsvorrichtung 39b und der Systemschnittstellen
steuerung 102 (auf die einfach als die "Transaktions
schnittstelle" im folgenden Bezug genommen wird) kontinu
ierlich nach einer Anwesenheit einer Transaktion überwacht,
was beispielsweise durch Überwachen einer Aktivierung des
MISS_CAV 101 bei dem exemplarischen DPRESLOT 200, der in
Fig. 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 Adres
se gibt, die in der Transaktionsschnittstelle anwesend ist.
Bei dem in Fig. 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 an
wesend ist, dann kehrt das Verfahren zu dem Schritt 301 zu
rück, d. h. das Überwachen der Transaktionsschnittstelle
wird fortgefahren.
Auf der anderen Seite fährt, wenn eine gültige Adresse er
faßt wird, das Verfahren zu einem Schritt 303 fort, während
dessen eine Bestimmung durchgeführt wird, ob die Transakti
on eine Speicherzugriffsanforderung ist, die aus einem
Cacheverfehlen resultiert. Bei dem Beispiel von Fig. 2 kann
diese Bestimmung basierend auf dem TRANS_TYPE 201 durchge
fü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 Transaktionsschnitt
stelle wird fortgefahren.
Wenn jedoch die Transaktion eine Speicherzugriffsanforde
rung ist, die aus einem Cacheverfehlen resultiert, dann
wird bei einem Schritt 304 das Überwachen der Transaktions
schnittstelle angehalten. Bei dem DPRESLOT 200 wird bei
spielsweise das Aktualisieren des Registers 136 durch Ein
stellen des Busy-Latch 203 angehalten. Dann werden bei ei
nem 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 Fig. 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 Cachenach
schlagoperation untersucht, um zu bestimmen, ob die vorab
zurufenden Datenzeilen bereits in dem Cachespeicher anwe
send sind, d. h. ob ein Cachetreffer auftritt. Bei dem Bei
spiel von Fig. 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 aufge
nommen.
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 Fig. 2 gezeigt ist, be
reits durchgeführt wurde. Bei dem Beispiel von Fig. 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 Trans
aktionsschnittstelle wird wieder aufgenommen.
Bei einem Schritt 309 wird schließlich, wenn keine vorher
gehenden Anforderungen der Datenzeile anhängig sind, eine
Anforderung nach der vorabzurufenden Datenzeile, z. B.
durch Ausgeben des MISS_REQUEST 111 bei dem Beispiel von
Fig. 2, ausgegeben, was schließlich dazu führt, daß das
MISS_CAV 101 aktiviert wird und einen Speicherhierarchiezu
griff 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 wie
derholt. In Fig. 2 handhabt beispielsweise die System
schnittstellensteuerung 102 vorteilhafterweise den tatsäch
lichen 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 Vergleichsein
gangssignal 147 übereinstimmt bevor DPRESLOT 200 das Signal
MISS_GRANTED 112 empfängt, wird das Signal BUSY 204 deakti
viert und das Aktualisieren des Registers 13C wird weiter
wieder aufgenommen.
Das erfinderische Cachevorausräumsystem und das erfinderi
sche Verfahren gemäß den Prinzipien der vorliegenden Erfin
dung sind im folgenden unter Bezugnahme auf exemplarische
Ausführungsbeispiele, die in den Fig. 4 und 5 gezeigt sind,
beschrieben.
Gemäß einem bevorzugten Ausführungsbeispiel der vorliegen
den Erfindung werden einer oder mehrere Cachekohärenzprüf
schlitze (CCCSLOT) zu der Befehlsverarbeitungsvorrichtung
39b (Fig. 1) hinzugefügt. Bei der Alternative können einer
oder mehrere der ARBSLOTs, die in Fig. 1 gezeigt sind, mo
difiziert sein, um die Funktionen des CCCSLOT, die detail
lierter im folgenden beschrieben sind, zu übernehmen.
Fig. 4 zeigt insbesondere ein Blockdiagramm eines exempla
rischen 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 ande
rem das Hinzufügen des Erledigt-Latches 402 und des Trei
bers 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 Mehrprozessor
berechnungssystem eine oder mehrere Datenzeilen von der
Speicherhierarchie anfordert, erscheint die Speicheranfor
derung und die Adresse(n) von der einen oder den mehreren
Datenzeilen in der Systemschnittstelle 22 (Fig. 1). Die Sy
stemschnittstelle 102 von jedem Prozessor gibt beim Erfas
sen der Speicheranforderung ein Signal CCC_INSERT 401 zu
der Befehlsverarbeitungsvorrichtung 39b derselben aus.
Zu diesem Zweck empfängt bei dem bevorzugten Ausführungs
beispiel 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 Systemschnittstellen
steuerung 102, wobei die ADDR 128 und das TAG 134 der Da
tenzeile zugeordnet sind, die durch einen weiteren Prozes
sor 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 in
aktiv. Der Invertierer 510 invertiert das Ausgangssignal
des Erledigt-Latches 402, wodurch ein aktives Signal ~DONE
(= ~ERLEDIGT) dem Eingang des UND-Logikgatters 137, wie ge
zeigt, dargestellt wird.
Beim Empfang des Signals CCC_INSERT 401 gibt der CCCSLOT
400 ein Signal ACCESS_REQ 115 zu dem DCACHE 24 aus und pla
ziert den CACHE-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 Fig. 1 gezeigt, aus. Auf eine sehr ähnli
che 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 Daten
zeile anhängig ist. Wenn der VERFEHLEN-ENTSCHEIDER (=
MISS_ARBITRATOR) 107 das Signal MISS_GRANTED 112 anspre
chend 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 Regi
sters 136 weiter zu dem Signal CCC_MISS/HIT 408 gibt, das
zu der Systemschnittstellensteuerung 102 gesendet wird. Ba
sierend 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) er
forderlich ist. Bei einem Ausführungsbeispiel der vorlie
genden 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üfre
sultat an dem Eingang TRANS_TYPE 201 empfängt, der durch
den CCCSLOT 400 getrieben wird, leitet der DPRESLOT 200 ei
ne Vorausräumoperation gemäß den Prinzipien der vorliegen
den Erfindung ein, die im folgenden unter Bezugnahme auf
die Fig. 2 und 5 beschrieben ist.
Fig. 5 zeigt insbesondere ein Flußdiagramm eines exemplari
schen Ausführungsbeispiels des Vorausräumverfahrens, wobei
bei einem Schritt 501 desselben die Transaktionsschnitt
stelle zwischen der Befehlsverarbeitungsvorrichtung 39b und
der Systemschnittstellensteuerung 102 (auf die einfach als
die "Transaktionsschnittstelle" im folgenden Bezug genommen
wird) kontinuierlich nach einer Anwesenheit einer Transak
tion überwacht wird, was beispielsweise durch Überwachen
einer Aktivierung des MISS_CAV 101 bei dem exemplarischen
DPRESLOT 200, der in Fig. 2 gezeigt ist, durchgeführt wer
den kann.
Sobald eine Transaktion erfaßt ist, wird eine Bestimmung,
ob es eine gültige Adresse gibt, die in der Transaktions
schnittstelle anwesend ist, z. B. durch Erfassen, daß das
Signal MISS_CAV 101 aktiviert ist (Schritt 502) durchge
fü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äh
rend dessen eine Bestimmung durchgeführt wird, ob die
Transaktion eine Kohärenzantwort ist, die aus einer Cache
kohä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 un
sauberen Daten erfordert, wie es durch den STATUS 82 ange
zeigt ist, wird das Überwachen der Transaktionsschnittstel
le, beispielsweise durch Einstellen des Busy-Latch 203, um
das Aktualisieren des Registers 136 anzuhalten, angehalten.
Dann werden bei einem Schritt 505 eine oder mehrere Adres
sen von Datenzeilen, die vorausgeräumt werden sollen, be
rechnet. Die Nachbaradressenlogik 213 berechnet die voraus
zuräumenden Adressen durch Invertieren von einem oder meh
reren 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 Cachenach
schlagoperation untersucht, um zu bestimmen, ob die voraus
zuräumende(n) Datenzeile(n) in dem Cachespeicher anwesend
ist, d. h. DPRESLOT 200 bestimmt durch Beobachten, daß das
~HIT 118 durch die Etikettvergleichsvorrichtung 108 deakti
viert wird, daß ein Cachetreffer aufgetreten ist. Wenn ein
Cacheverfehlen aufgetreten ist, kehrt das Verfahren zu dem
Schritt 501 zurück und das Überwachen der Transaktions
schnittstelle 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äu
menden Datenzeile(n) bereits durchgeführt wurde, z. B.
durch einen ARBSLOT 48, der in Fig. 1 gezeigt ist, durch
Beobachten eines HIT_DM 121 durchgeführt wird. Wenn be
stimmt 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 vorher
gehenden Anforderungen nach der Datenzeile anhängig sind,
eine Ausräumtransaktion für die vorauszuräumende Datenzei
le, z. B. durch Ausgeben der MISS_REQUEST 111, die bewirkt,
daß ein Speicherhierarchiezugriff durch die Systemschnitt
stellensteuerung 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 unsau
ber sind. Bei der Alternative kann die vorauszuräumende Da
tenzeile ohne Rücksicht auf den Status derselben ausgeräumt
werden. Bei einem bevorzugten Ausführungsbeispiel kehrt,
sobald die Anforderung nach der (den) vorauszuräumenden Da
tenzeile(n) ausgegeben ist, das Verfahren unmittelbar zu
dem Schritt 501 zurück und das gesamte Verfahren wird kon
tinuierlich 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 mini
miert, beschrieben.
Claims (18)
1. Vorrichtung (100) zum Minimieren einer Cachekohärenz
prüflatenz in einem System mit einer ungeordneten Be
fehlsausführung, das eine Mehrzahl von Prozessoren
aufweist, mit folgenden Merkmalen:
mindestens einer Cachekohärenzprüfvorrichtung (400), die einem ersten der Mehrzahl von Prozessoren zugeord net ist, wobei die mindestens eine Cachekohärenzprüf vorrichtung (400) konfiguriert ist, um ein Anwesen heitssignal (408) auszugeben, das anzeigt, daß eine erste Datenzeile, die durch einen zweiten der Mehrzahl von Prozessoren angefordert wird, in einem Cachespei cher (24) anwesend ist, der dem ersten der Mehrzahl von Prozessoren zugeordnet ist;
mindestens einem Vorausräumschlitz (200), der konfigu riert ist, um beim Empfang des Anwesenheitssignals (408) mindestens eine zusätzliche Datenzeile zu bestimmen, die aus dem Cachespeicher (24), der dem er sten der Mehrzahl von Prozessoren zugeordnet ist, zu dem zweiten der Mehrzahl von Prozessoren vorausgeräumt werden soll; und
einer Logik, die dem mindestens einem Vorausräum schlitz (200) zugeordnet ist, wobei die Logik konfigu riert ist, um eine Anzeige zu liefern, ob die mindes tens eine zusätzliche Datenzeile bereits aus dem Cachespeicher (24) ausgeräumt wird.
mindestens einer Cachekohärenzprüfvorrichtung (400), die einem ersten der Mehrzahl von Prozessoren zugeord net ist, wobei die mindestens eine Cachekohärenzprüf vorrichtung (400) konfiguriert ist, um ein Anwesen heitssignal (408) auszugeben, das anzeigt, daß eine erste Datenzeile, die durch einen zweiten der Mehrzahl von Prozessoren angefordert wird, in einem Cachespei cher (24) anwesend ist, der dem ersten der Mehrzahl von Prozessoren zugeordnet ist;
mindestens einem Vorausräumschlitz (200), der konfigu riert ist, um beim Empfang des Anwesenheitssignals (408) mindestens eine zusätzliche Datenzeile zu bestimmen, die aus dem Cachespeicher (24), der dem er sten der Mehrzahl von Prozessoren zugeordnet ist, zu dem zweiten der Mehrzahl von Prozessoren vorausgeräumt werden soll; und
einer Logik, die dem mindestens einem Vorausräum schlitz (200) zugeordnet ist, wobei die Logik konfigu riert ist, um eine Anzeige zu liefern, ob die mindes tens eine zusätzliche Datenzeile bereits aus dem Cachespeicher (24) ausgeräumt wird.
2. Vorrichtung (100) zum Minimieren der Cachekohärenz
prüflatenz gemäß Anspruch 1, bei der der mindestens
eine Vorausräumschlitz (200) folgende Merkmale auf
weist:
eine Nachbaradressenlogik (213), die konfiguriert ist, um eine oder mehrere zusätzliche Adressen zu liefern, die der mindestens einen zusätzlichen Datenzeile ent sprechen, wobei die mindestens eine zusätzliche Daten zeile eine Speicherposition aufweist, die benachbart zu der ersten Datenzeile ist.
eine Nachbaradressenlogik (213), die konfiguriert ist, um eine oder mehrere zusätzliche Adressen zu liefern, die der mindestens einen zusätzlichen Datenzeile ent sprechen, wobei die mindestens eine zusätzliche Daten zeile eine Speicherposition aufweist, die benachbart zu der ersten Datenzeile ist.
3. Vorrichtung (100) zum Minimieren der Cachekohärenz
prüflatenz gemäß Anspruch 2, bei der
die Nachbaradressenlogik (213) eine erste Adresse emp
fängt, die der ersten Datenzeile entspricht, und eine
oder mehrere zusätzliche Adressen durch Invertieren
von einem oder mehreren Bits der ersten Adresse lie
fert.
4. Vorrichtung (100) zum Minimieren der Cachekohärenz
prüflatenz gemäß Anspruch 3, bei der
das eine oder die mehreren Bits der ersten Adresse ein
niederwertigstes Bit der ersten Adresse aufweisen.
5. Vorrichtung (100) zum Minimieren der Cachekohärenz
prüflatenz gemäß Anspruch 2, 3 oder 4, mit ferner fol
genden Merkmalen:
einem Beschäftigt-Latch (203), das ein Einstell-Ein gangssignal (205) und ein Lösch-Eingangssignal (206) aufweist, wobei das Beschäftigt-Latch (203) konfigu riert ist, um ein Beschäftigt-Signal (204) auszugeben, und das Beschäftigt-Signal (204) aktiv ist, wenn das Einstell-Eingangssignal (205) ausgelöst ist, und inak tiv ist, wenn das Lösch-Eingangssignal (206) ausgelöst ist; und
einem Register (136), das konfiguriert ist, um einen Cacheindex (136b) und ein Etikett (136c) zu speichern, wobei beide derselben aus einer Adresse abgeleitet werden, die von der Nachbaradressenlogik (213) empfan gen wird, wobei das Register (136) die Adresse von der Nachbaradressenlogik (213) beim Empfang eines Aktuall sierungssignals (212) empfängt, wobei das Aktualisie rungssignal durch Invertieren des Beschäftigt-Signals (204) erzeugt wird.
einem Beschäftigt-Latch (203), das ein Einstell-Ein gangssignal (205) und ein Lösch-Eingangssignal (206) aufweist, wobei das Beschäftigt-Latch (203) konfigu riert ist, um ein Beschäftigt-Signal (204) auszugeben, und das Beschäftigt-Signal (204) aktiv ist, wenn das Einstell-Eingangssignal (205) ausgelöst ist, und inak tiv ist, wenn das Lösch-Eingangssignal (206) ausgelöst ist; und
einem Register (136), das konfiguriert ist, um einen Cacheindex (136b) und ein Etikett (136c) zu speichern, wobei beide derselben aus einer Adresse abgeleitet werden, die von der Nachbaradressenlogik (213) empfan gen wird, wobei das Register (136) die Adresse von der Nachbaradressenlogik (213) beim Empfang eines Aktuall sierungssignals (212) empfängt, wobei das Aktualisie rungssignal durch Invertieren des Beschäftigt-Signals (204) erzeugt wird.
6. Vorrichtung (100) zum Minimieren der Cachekohärenz
prüflatenz gemäß Anspruch 5, mit ferner folgendem
Merkmal:
einer Decodierlogik (202) zum Empfangen eines Transak tionstyps (201), wobei die Decodierlogik (202) konfi guriert ist, um das Einstell-Eingangssignal (205) des Beschäftigt-Latch (203) auszulösen, wenn der empfange ne Transaktionstyp (201) einen Empfang des Anwesen heitssignals (408) anzeigt.
einer Decodierlogik (202) zum Empfangen eines Transak tionstyps (201), wobei die Decodierlogik (202) konfi guriert ist, um das Einstell-Eingangssignal (205) des Beschäftigt-Latch (203) auszulösen, wenn der empfange ne Transaktionstyp (201) einen Empfang des Anwesen heitssignals (408) anzeigt.
7. Vorrichtung (100) zum Minimieren der Cachekohärenz
prüflatenz gemäß Anspruch 5 oder 6, bei der
der mindestens eine Vorausräumschlitz (200) konfigu
riert ist, um zu bestimmen, ob die mindestens eine zu
sätzliche Datenzeile in dem Cachespeicher (24) anwe
send ist, wenn das Beschäftigt-Signal (204) aktiv ist.
8. Vorrichtung (100) zum Minimieren der Cachekohärenz
prüflatenz gemäß einem der Ansprüche 2 bis 7, bei der
die mindestens eine Cachekohärenzprüfvorrichtung (400)
konfiguriert ist, um das Anwesenheitssignal (48) aus
zugeben, wenn die erste Datenzeile zu dem zweiten der
Mehrzahl von Prozessoren aus dem Cachespeicher (24)
ausgeräumt wurde.
9. Vorrichtung (100) zum Minimieren der Cachekohärenz
prüflatenz gemäß Anspruch 5, 6 oder 7, bei der
der mindestens eine Vorausräumschlitz (200) konfigu
riert ist, um zu bewirken, daß die mindestens eine zu
sätzliche Datenzeile zu dem zweiten der Mehrzahl von
Prozessoren aus dem Cachespeicher (24) ausgeräumt
wird, wenn das Beschäftigt-Signal (204) aktiv ist.
10. Vorrichtung (100) zum Minimieren der Cachekohärenz
prüflatenz gemäß einem der Ansprüche 1 bis 9, bei der
der mindestens eine Vorausräumschlitz (200) konfigu
riert ist, um zu bewirken, daß die mindestens eine zu
sätzliche Datenzeile zu dem zweiten der Mehrzahl von
Prozessoren aus dem Cachespeicher (24) ausgeräumt
wird, wenn bestimmt wird, daß die mindestens eine zu
sätzliche Datenzeile in dem Cachespeicher (24) anwe
send ist.
11. Verfahren zum Minimieren der Cachekohärenzprüflatenz
in einem System mit einer ungeordneten Befehlsausfüh
rung, das eine Mehrzahl von Prozessoren aufweist, mit
folgenden Schritten:
Erfassen einer Anforderung eines Zugriffs auf eine er ste Datenzeile von einer Speicherhierarchie, wobei die Anforderung durch einen ersten der Mehrzahl von Pro zessoren durchgeführt wird;
Bestimmen, ob die erste Datenzeile in einem Cachespei cher (24) anwesend ist, der einem zweiten der Mehrzahl von Prozessoren zugeordnet ist;
Berechnen einer Adresse von mindestens einer zusätzli chen Datenzeile, die aus dem Cachespeicher zu dem zweiten der Mehrzahl von Prozessoren vorausgeräumt werden soll; und
Bestimmen, ob eine vorher durchgeführte Anforderung nach der mindestens einen zusätzlichen Datenzeile aus dem Cachespeicher anhängig ist.
Erfassen einer Anforderung eines Zugriffs auf eine er ste Datenzeile von einer Speicherhierarchie, wobei die Anforderung durch einen ersten der Mehrzahl von Pro zessoren durchgeführt wird;
Bestimmen, ob die erste Datenzeile in einem Cachespei cher (24) anwesend ist, der einem zweiten der Mehrzahl von Prozessoren zugeordnet ist;
Berechnen einer Adresse von mindestens einer zusätzli chen Datenzeile, die aus dem Cachespeicher zu dem zweiten der Mehrzahl von Prozessoren vorausgeräumt werden soll; und
Bestimmen, ob eine vorher durchgeführte Anforderung nach der mindestens einen zusätzlichen Datenzeile aus dem Cachespeicher anhängig ist.
12. Verfahren zum Minimieren der Cachekohärenzprüflatenz
gemäß Anspruch 11, bei dem der Schritt des Berechnens
der Adresse von der mindestens einen zusätzlichen Da
tenzeile folgenden Schritt aufweist:
Invertieren von einem oder mehreren Bits einer Adresse der ersten Datenzeile.
Invertieren von einem oder mehreren Bits einer Adresse der ersten Datenzeile.
13. Verfahren zum Minimieren der Cachekohärenzprüflatenz
gemäß Anspruch 12, bei dem
das eine oder die mehreren Bits ein niederwertigstes
Bit aufweisen.
14. Verfahren zum Minimieren der Cachekohärenzprüflatenz
gemäß Anspruch 11, 12 oder 13, mit ferner folgendem
Schritt:
Verhindern eines Ausräumens der mindestens einen zu sätzlichen Datenzeile zu dem zweiten der Mehrzahl von Prozessoren, wenn die vorher durchgeführte Anforderung anhängig ist.
Verhindern eines Ausräumens der mindestens einen zu sätzlichen Datenzeile zu dem zweiten der Mehrzahl von Prozessoren, wenn die vorher durchgeführte Anforderung anhängig ist.
15. Verfahren zum Minimieren der Cachekohärenzprüflatenz
gemäß einem der Ansprüche 11 bis 14, mit ferner fol
gendem Schritt:
Ausgeben einer Anforderung der mindestens einen zu sätzlichen Datenzeile, die zu dem zweiten der Mehrzahl von Prozessoren ausgeräumt werden soll, wenn die vor her durchgeführte Anforderung nicht anhängig ist.
Ausgeben einer Anforderung der mindestens einen zu sätzlichen Datenzeile, die zu dem zweiten der Mehrzahl von Prozessoren ausgeräumt werden soll, wenn die vor her durchgeführte Anforderung nicht anhängig ist.
16. Verfahren zum Minimieren der Cachekohärenzprüflatenz
gemäß einem der Ansprüche 11 bis 15, mit ferner fol
gendem Schritt:
Bestimmen, ob die mindestens eine zusätzliche Daten zeile in dem Cachespeicher (24) anwesend ist.
Bestimmen, ob die mindestens eine zusätzliche Daten zeile in dem Cachespeicher (24) anwesend ist.
17. Verfahren zum Minimieren der Cachekohärenzprüflatenz
gemäß Anspruch 16, mit ferner folgendem Schritt:
Ausgeben einer Anforderung der mindestens einen zu sätzlichen Datenzeile, die zu dem zweiten der Mehrzahl von Prozessoren ausgeräumt werden soll, wenn die min destens eine zusätzliche Datenzeile in dem Cachespei cher (24) anwesend ist.
Ausgeben einer Anforderung der mindestens einen zu sätzlichen Datenzeile, die zu dem zweiten der Mehrzahl von Prozessoren ausgeräumt werden soll, wenn die min destens eine zusätzliche Datenzeile in dem Cachespei cher (24) anwesend ist.
18. Verfahren zum Minimieren der Cachekohärenzprüflatenz
gemäß Anspruch 16 oder 17, mit ferner folgendem
Schritt:
Verhindern, daß die mindestens eine zusätzliche Daten zeile zu dem zweiten der Mehrzahl von Prozessoren aus geräumt wird, wenn die mindestens eine zusätzliche Da tenzeile nicht in dem Cachespeicher (24) anwesend ist.
Verhindern, daß die mindestens eine zusätzliche Daten zeile zu dem zweiten der Mehrzahl von Prozessoren aus geräumt wird, wenn die mindestens eine zusätzliche Da tenzeile nicht in dem Cachespeicher (24) anwesend ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/565,013 US6408363B1 (en) | 2000-05-04 | 2000-05-04 | Speculative pre-flush of data in an out-of-order execution processor system |
US09/565,013 | 2000-05-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE10113191A1 true DE10113191A1 (de) | 2001-11-08 |
DE10113191B4 DE10113191B4 (de) | 2004-11-04 |
Family
ID=24256843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10113191A Expired - Fee Related DE10113191B4 (de) | 2000-05-04 | 2001-03-19 | Spekulatives Vorausräumen von Daten in einem Prozessorsystem mit einer ungeordneten Ausführung |
Country Status (2)
Country | Link |
---|---|
US (1) | US6408363B1 (de) |
DE (1) | DE10113191B4 (de) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2329680A1 (en) * | 1999-12-30 | 2001-06-30 | Michael A. Cook | Three layer washer |
US6704842B1 (en) * | 2000-04-12 | 2004-03-09 | Hewlett-Packard Development Company, L.P. | Multi-processor system with proactive speculative data transfer |
US7000081B2 (en) * | 2002-02-12 | 2006-02-14 | Ip-First, Llc | Write back and invalidate mechanism for multiple cache lines |
US8281079B2 (en) * | 2004-01-13 | 2012-10-02 | Hewlett-Packard Development Company, L.P. | Multi-processor system receiving input from a pre-fetch buffer |
US7406565B2 (en) * | 2004-01-13 | 2008-07-29 | Hewlett-Packard Development Company, L.P. | Multi-processor systems and methods for backup for non-coherent speculative fills |
US7383409B2 (en) | 2004-01-13 | 2008-06-03 | Hewlett-Packard Development Company, L.P. | Cache systems and methods for employing speculative fills |
US7380107B2 (en) * | 2004-01-13 | 2008-05-27 | Hewlett-Packard Development Company, L.P. | Multi-processor system utilizing concurrent speculative source request and system source request in response to cache miss |
US7360069B2 (en) * | 2004-01-13 | 2008-04-15 | Hewlett-Packard Development Company, L.P. | Systems and methods for executing across at least one memory barrier employing speculative fills |
US7409500B2 (en) * | 2004-01-13 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | Systems and methods for employing speculative fills |
US7376794B2 (en) * | 2004-01-13 | 2008-05-20 | Hewlett-Packard Development Company, L.P. | Coherent signal in a multi-processor system |
US8301844B2 (en) * | 2004-01-13 | 2012-10-30 | Hewlett-Packard Development Company, L.P. | Consistency evaluation of program execution across at least one memory barrier |
US7340565B2 (en) * | 2004-01-13 | 2008-03-04 | Hewlett-Packard Development Company, L.P. | Source request arbitration |
US7409503B2 (en) * | 2004-01-13 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | Register file systems and methods for employing speculative fills |
US7962696B2 (en) * | 2004-01-15 | 2011-06-14 | Hewlett-Packard Development Company, L.P. | System and method for updating owner predictors |
US7240165B2 (en) * | 2004-01-15 | 2007-07-03 | Hewlett-Packard Development Company, L.P. | System and method for providing parallel data requests |
US9852074B2 (en) * | 2015-01-12 | 2017-12-26 | Alcatel Lucent | Cache-optimized hash table data structure |
US10489298B2 (en) * | 2015-07-28 | 2019-11-26 | Hewlett Packard Enterprise Development Lp | Hardware flush assist |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5214766A (en) * | 1989-04-28 | 1993-05-25 | International Business Machines Corporation | Data prefetching based on store information in multi-processor caches |
US5787267A (en) * | 1995-06-07 | 1998-07-28 | Monolithic System Technology, Inc. | Caching method and circuit for a memory system with circuit module architecture |
US5758178A (en) * | 1996-03-01 | 1998-05-26 | Hewlett-Packard Company | Miss tracking system and method |
US5881303A (en) * | 1996-07-01 | 1999-03-09 | Sun Microsystems, Inc. | Multiprocessing system configured to perform prefetch coherency activity with separate reissue queue for each processing subnode |
US5848254A (en) * | 1996-07-01 | 1998-12-08 | Sun Microsystems, Inc. | Multiprocessing system using an access to a second memory space to initiate software controlled data prefetch into a first address space |
US6247107B1 (en) * | 1998-04-06 | 2001-06-12 | Advanced Micro Devices, Inc. | Chipset configured to perform data-directed prefetching |
-
2000
- 2000-05-04 US US09/565,013 patent/US6408363B1/en not_active Expired - Fee Related
-
2001
- 2001-03-19 DE DE10113191A patent/DE10113191B4/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6408363B1 (en) | 2002-06-18 |
DE10113191B4 (de) | 2004-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69721961T2 (de) | Mikroprozessor mit einem Nachschreibcachespeicher | |
DE10085373B4 (de) | Verfahren zum Flushen von Cache-Zeilen | |
DE10113191B4 (de) | Spekulatives Vorausräumen von Daten in einem Prozessorsystem mit einer ungeordneten Ausführung | |
DE60222402T2 (de) | Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher | |
DE69636452T2 (de) | Mehrprozessor-cachespeicherkohärenzprotokoll für einen lokalbus | |
DE19983793B4 (de) | System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher | |
DE69531933T2 (de) | Busarchitektur in hochgradiger pipeline-ausführung | |
DE4218003C2 (de) | Cache-Steuereinrichtung für ein sekundäres Cache-Speichersystem | |
DE60009151T2 (de) | Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung | |
DE69816044T2 (de) | Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken | |
DE60005860T2 (de) | Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle | |
DE112006003453T5 (de) | Per-Satz-Relaxation der Cache-Inklusion | |
DE60210633T2 (de) | Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung | |
DE10262164B4 (de) | Computersystem mit einer hierarchischen Cacheanordnung | |
DE112007001171T5 (de) | Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf | |
DE19506734A1 (de) | Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange | |
DE112004002267T5 (de) | Ruhezustandsmechansimus für virtuelles Multithreading | |
DE112010004322T5 (de) | Vorhersagen und Vermeiden von Operand-Speichervorgang-Vergleich-Gefahren in Mikroprozessoren mit abweichender Reihenfolge | |
DE4335475A1 (de) | Datenverarbeitungseinrichtung mit Cache-Speicher | |
DE112004001854T5 (de) | System und Verfahren zur Handhabung von Sonderinstruktionen in einem Prozessor auf Grundlage eines Cache-Speichers mit Ablaufverfolgung | |
DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
DE10006430B4 (de) | Verfahren zur Aufrechterhaltung einer Kohärenz für ein Multi-Prozessor-System | |
DE10393803T5 (de) | Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff | |
DE10219621A1 (de) | Schnelle Prioritätsbestimmungsschaltung mit rotierender Priorität | |
DE10045188A1 (de) | Cacheadresskonfliktvorrichtung ohne Speicherpuffer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE |
|
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |