-
Diese
Erfindung betrifft eine Cache-Einrichtung mit einem Cache-Speicher
und einem sekundären
Speicher, wobei die Cache-Einrichtung
einen Port zum Empfangen von Datenanforderungen aufweist.
-
Der
Bedarf an schnelleren und leistungsfähigeren Personalcomputern führte zu
vielen technologischen Fortschritten in der Computerindustrie einschließlich der
Entwicklung schnellerer Speicher. Historisch ist die Leistung eines
Personalcomputers mit der Geschwindigkeit des Zugriffes auf den
Speicher verknüpft,
um Daten wiederzugewinnen, die durch Befehle bearbeitet worden sind,
und um Daten wiederzugewinnen, die die Befehle selbst codieren. Die
Leistung von Hochgeschwindigkeitsprozessoren wurde durch langsame
Datenzugriffszeiten behindert. Um die Datenzugriffe zu beschleunigen,
wurde ein als "Cache-Speicher" bekannter schneller
Speicher entwickelt.
-
Ein
Cache-Speicher ist relativ klein und arbeitet bei einer höheren Geschwindigkeit
als ein Hauptspeicher infolge entweder einer direkteren Kopplung
mit dem Prozessor oder von Hardwareanpassungen. Der Cache-Speicher
speichert die jüngst benutzten
Datenblöcke
derart, daß ein
Zugreifen auf diese Blöcke
schneller ist als ein Zugreifen auf ein Hauptspeicher.
-
Die
Verwendung von Cache-Speichern gestattet es gewöhnlich dem Prozessor, die Anzahl
der Warteperioden zu reduzieren, die dem Wiedergewinnen (Lesen)
von Daten aus dem Speicher zugeordnet sind. Wenn der Datenanforderer
eine Anforderung nach Daten ausgibt, bestimmt der Cache-Speicher,
ob die Daten in dem Cache-Speicher vorhanden sind. Wenn die Daten
in dem Cache-Speicher vorhanden
sind, tritt eine als Cache-Speicher"Treffer" ("Hit") bezeichnete Situation
ein und die Daten werden an den Datenanforderer mit einer relativ
geringen Wartezeit weitergeleitet. Wenn die Daten nicht in dem Cache-Speicher vorhanden
sind, tritt eine als Cache-Speicher "Fehlversuch" ("Miss") bezeichnete Situation
ein und der Cache-Speicher führt
verschiedene Operationen aus. Als erstes gewinnt der Cache-Speicher
die angeforderten Daten aus einem sekundären Speicher. Dann sendet der
Cache-Speicher die angeforderten Daten an den Datenanforderer und
speichert die wiedergewonnenen Daten in dem Cache-Speicher selbst.
Der sekundäre
Speicher kann ein Hauptspeicher oder ein weiterer Cache-Speicher sein, das
heißt
ein Mehr-Ebenen-Cache-Speicher. Die Wiedergewinnung von Daten aus dem
sekundären
Speicher ist oftmals eine viel langsamere Operation.
-
Die
meisten Cache-Speicher weisen zwei Subsysteme auf, ein "Cache-Tag-Array" und ein "Cache-Daten-Array". Das Cache-Tag-Array speichert Einträge für Adressen
des sekundären
Speichers, die den Daten-Array-Einträgen zugeordnet sind. Die Adressen
werden verwendet, um zu bestimmen, ob eine Datenanforderung zu einem
Cache-Speicher-Treffer führt.
Das Cache-Daten-Array
speichert und liefert die Daten in Erwiderung der Datenanforderungen.
Bei Mehr-Ebenen-Cache-Speichern weist jedes Cache-Daten-Array ein
zugehöriges
Tag-Array auf.
-
Pipelines
haben die Leistung von Prozessoren weiter verbessert, indem eine
Verarbeitung parallel und in Stufen durchgeführt wird. Im Unterschied zur
seriellen Verarbeitung, bei der sämtliche Stufen die Verarbeitung
eines Befehls abschließen,
bevor die Verarbeitung des nächsten
Befehls begonnen wird, überlappt
eine Pipeline-Einrichtung (zeitlich verschachtelte Einrichtung)
die Stufen, indem verschiedene Befehle zur gleichen Zeit verarbeitet
werden. Die effektive Verarbeitungsgeschwindigkeit jedes Befehls
bleibt ungeändert,
aber der Durchsatz für
die Befehlsverarbeitung wird erhöht,
da verschiedene Befehle durch verschiedene einzelne Pipeline-Stufen parallel
verarbeitet werden können.
Da Datenanforderungen wiederholt an Speicher gerichtet werden, können pipelineverschachtelte
Datenanforderungsteile die Verarbeitung der Datenanforderungen beschleunigen.
-
1A ist
ein Zeitdiagramm für
zwei serielle Datenanforderungen an einen Cache-Speicher, der einen
Pipeline-verschachtelten Anforderungsport aufweist. Die Pipeline
hat vier Stufen, das heißt
eine Verzögerung
(Latenz) von Vier, und bei jedem Taktzyklus kann eine Datenanforderung
starten, das heißt,
es ergibt sich eine Bandbreite von Eins pro Takt. Die erste und
die zweite Anforderung werden bei t = 0 bzw. t = 1 empfangen. Bei
dem veranschaulichten Pipeline-Datenanforderungsport wird der Treffer-
oder Fehlversuch-Status einer Datenanforderung in der dritten Stufe
bekannt. Somit gibt es ein Nacheilen von drei Taktzyklen zwischen
dem Zeitpunkt, zu welchem der Port die Verarbeitung einer Datenanforderung
startet, und dem Zeitpunkt, zu welchem bekannt wird, daß die Datenanforderung
ohne eine langsame Datenwiedergewinnung aus einem sekundären Speicher
abgeschlossen werden kann.
-
Datenanforderungen
können
entweder "geordnet" oder "ungeordnet" sein. Die Ordnung
diktiert die sequentielle Reihenfolge, in welcher zueinander geordnete
Anforderungen von der Hardware abgeschlossen werden sollten. Ein
Beispiel einer geordneten Relation verlangt, daß eine früher ausgegebene Anforderung,
beispielsweise die erste Anforderung gemäß 1A, vor
einer später
ausgegebenen Anforderung, beispielsweise der zweiten Anforderung
gemäß 1A,
abgeschlossen wird. Andere Ordnungsrelationen existieren, beispielsweise
können
gleichzeitig ausgegebene Datenanforderungen mit der Reihenfolge
eines Programms geordnet sein. Im folgenden sind "frühere" geordnete Operationen als
solche definiert, die vor "späteren" geordneten Operationen
abgeschlossen werden sollten. "Früher" und "später" ist nicht auf die
Programmreihenfolge beschränkt.
Wenn zwei Anforderungen "ungeordnet" sind, kann die Hardware
die beiden Anforderungen in einer beliebigen Reihenfolge abschließen. Das
Ordnen der Datenanforderungen kann die Verarbeitung der Datenanforderungen
durch einen pipelineverschachtelten Cache-Speicher verlangsamen.
-
1B ist
ein Zeitdiagramm, das veranschaulicht, weshalb die Verarbeitung
geordneter Datenanforderungen problematisch sein kann. Die erste und
die zweite Datenanforderung sind jeweils die frühere und die spätere geordnete
Anforderung an den Cache-Speicher gemäß 1A, welche
zu t = 0 bzw. t = 1 empfangen werden. In 1B führt die
erste Anforderung zu einem Cache-Speicher-Fehlversuch. Die erste
Anforderung wird in mehr als vier Taktzyklen abgeschlossen, weil
die angeforderten Daten bei einem Cache-Speicher-Fehlversuch aus
einem langsamen sekundären
Speicher wiedergewonnen werden müssen.
Andererseits wird die zweite Anforderung in vier Zyklen abgeschlossen,
weil die zweite Datenanforderung zu einem Cache-Speicher-Treffer führt. Somit kann das serielle
Ausgeben geordneter Datenanforderungen in Situationen von Cache-Speicher-Fehlversuchen zu
Wiedergewinnungen (Retrievals) führen,
die die Ordnungsrelationen verletzen.
-
1C zeigt
ein Verfahren zum Vermeiden von Datenwiedergewinnungen, die die
Ordnungsbeziehungen verletzen. Die Ausgabe der zweiten oder späteren geordneten
Datenanforderung wird verzögert,
bis t = 3 ist, das heißt,
bis der Treffer/Fehlversuch-Status der ersten Anforderung bekannt
ist. Bei dem veranschaulichten Pipeline-Cache-Speicher wartet die
zweite Anforderung drei Taktzyklen, bis der Treffer/Fehlversuch-Status der ersten
Anforderung bestimmt ist. Die Notwendigkeit des Wartens auf den Status
der früheren
Anforderungen reduziert die Geschwindigkeit zur Verarbeitung geordneter
Datenanforderungen, das heißt
erhöht
die Latenz und vermindert die Vorteile des Pipelining.
-
Ein
Multi-Porting kann die Geschwindigkeit eines Speichers weiter erhöhen, indem
die Verarbeitung mehrerer Datenanforderungen während jedes Taktzyklus ermöglicht wird. 2A ist
ein Zeitdiagramm für
einen doppelten (dualen) pipelineverschachtelten Datenanforderungsport
von vier Stufen bei einem Cache-Speicher. Zwei Datenanforderungen
können
in jedem Taktzyklus empfangen werden. So kann der doppelte Datenanforderungsport
den Durchsatz für
Datenanforderungen verdoppeln, das heißt, die Bandbreite beträgt zwei
pro Takt. Cache-Speicher-Treffer und -Fehlversuche sind in der dritten
Stufe bekannt, was ein Nacheilen von drei Taktimpulsen bedeutet,
ein Nacheilen, das zu Problemen bei der Verarbeitung geordneter
Datenanforderungen führen
kann.
-
2B ist
ein Zeitdiagramm, das ein Problem bei der Verarbeitung geordneter
Anforderungen bei dem doppelten Pipe line-Datenanforderungsport gemäß 2A veranschaulicht.
Die erste und zweite Datenanforderung sind seriell geordnet, das
heißt, die
erste Datenanforderung ist die frühere Anforderung. Zum Zeitpunkt
t = 2 wird festgestellt, daß die erste
Datenanforderung einen Cache-Speicher-Fehlversuch registriert. Die
zweite Datenanforderung registriert einen Cache-Speicher-Treffer und kann
zum Zeitpunkt t = 3, das heißt
vor der früheren
ersten Datenanforderung, abgeschlossen werden, weil die erste Datenanforderung
eine langsame Datenwiedergewinnung aus dem sekundären Speicher
für ihren
Abschluß benötigt. Geordnete
Datenanforderungen können
nicht durch ein solches Verfahren bei einem Mehr-Port-Speicher verarbeitet
werden, weil ein späterer
geordneter Befehl infolge eines Cache-Speicher-Fehlversuchs vor einer früheren Anforderung abgeschlossen
werden könnte.
-
Die
Zeitleiste gemäß 2C veranschaulicht
ein Verfahren der Verarbeitung geordneter Anforderungen bei dem
doppelten Pipeline-Datenanforderungsport gemäß 2A. In
Erwiderung eines Cache-Speicher-Fehlversuchs für die frühere geordnete Datenanforderung,
das heißt
die erste Datenanforderung, werden sämtliche anhängigen Anforderungen in der
Pipeline gespült
(einer Flush-Operation unterzogen). Die Flush-Operation eliminiert Ordnungsverletzungen.
Allerdings reduziert die Flush-Operation außerdem die Geschwindigkeit
des Speichers und die Vorteile der Pipeline, weil einige der der Flush-Operation
unterzogene Anforderungen möglicherweise
nicht geordnet sind.
-
Aus
dem
US-Patent Nr. 5,506,957 ist
ein System bekannt, das vorgesehen ist, um Out-Of-Order-Gleitkommadaten über die
Verwendung von zwei Datenports und Datenbusse zu synchronisieren. Eine
Festkommaeinheit (FPU) und eine Gleitkommaeinheit (FXU) sind miteinander
verbunden, so daß es der
FXU ermöglicht
wird, ein Synchronisationssignal an die FPU zur Verfügung zu
stellen. Gemäß Spalte 2,
Zeilen 25 bis 31 wird dann, wenn ein Cache-Fehlversuch auftritt,
der einen ersten der Busse beeinflußt, der diesen Daten entsprechende
Befehl angehalten. Jegliche nachfolgenden Gleitkommabefehle werden
dann von der FPU auf dem zweiten Bus empfangen, der keinem Fehlversuch
ausgesetzt war. Auf diese Weise werden Außer-Der-Reihe-Befehlsausführungen
in der FPU implementiert. Gemäß Spalte 4,
Zeile 65 bis Spalte 5, Zeile 30 wird ein "Load not ready" Kommando von der FXU an die FPU zur
Verfügung
gestellt, wenn ein Cache-Fehlversuch an einem Datenport erfaßt wird,
wobei dieses Signal die FPU darüber
informiert, daß Daten
für irgendeinen nachfolgenden
Befehl auf dem anderen Datenport eintreffen. Die Außer-Der-Reihe-Befehle
können dann
ausgeführt
werden, bevor der Cache-Fehlversuch aufgelöst wird. Die Druckschrift beschreibt
somit ein System, das die Implementierung von Außer-Der-Reihe-Gleitkommabefehlen gestattet.
-
Ausgehend
von diesem Stand der Technik ist es eine Aufgabe der Erfindung,
die mit einem Fehlversuch bei einer pipelineverschachtelten Cache-Einrichtung
verbundenen zeitlichen Verzögerungen
zu verringen.
-
Diese
Aufgabe wird erfindungsgemäß durch eine
Datenverarbeitungseinrichtung mit den Merkmalen des Anspruchs 1
gelöst.
-
Vorteilhafte
und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
-
Andere
Vorteile der Erfindung werden beim Lesen der folgenden detaillierten
Beschreibung und bei Bezugnahme auf die Zeichnungen klar, in welchen:
-
1A eine
Zeitleiste ist, die das Voranschreiten zweier sequentiell empfangener
Datenanforderungen in einem Pipeline-verschachtelten Datenanforderungsport
eines bekannten Cache-Speichers veranschaulicht;
-
1B eine
Zeitleiste ist, die ein Problem bei der sequentiellen Verarbeitung
zweier "geordneter" Datenanforderungen
bei dem Pipeline-Datenanforderungsport gemäß 1A veranschaulicht;
-
1C eine
Zeitleiste ist, die ein bekanntes Verfahren der Verarbeitung "geordneter" Datenanforderungen
bei dem bekannten Cache-Speicher gemäß 1A veranschaulicht;
-
2A eine
Zeitleiste ist, die das Voranschreiten von zwei Datenanforderungen
bei einem doppelten Pipeline-ver schachtelten Datenanforderungsport
eines bekannten Cache-Speichers
veranschaulicht;
-
2B eine
Zeitleiste ist, die ein Problem bei der Verarbeitung zweier "geordneter" Datenanforderungen
bei dem bekannten Cache-Speicher gemäß 2A veranschaulicht;
-
2C eine
Zeitleiste ist, die veranschaulicht, wie Flush-Operationen benutzt
werden können, um
geordnete Datenanforderungen bei dem bekannten Cache-Speicher gemäß 2A zu
verarbeiten;
-
3A eine
Blockdarstellung eines Ausführungsbeispiels
einer Einrichtung zum Verarbeiten geordneter Datenanforderungen
ist;
-
3B eine
Zeitleiste ist, die Verfahren zum Verarbeiten späterer Datenanforderungen in
Erwiderung eines Speicher-Fehlversuchs einer früheren geordneten Datenanforderung
veranschaulicht;
-
4A ein
Ablaufdiagramm ist, das ein Ausführungsbeispiel
eines Verfahrens zum Verarbeiten geordneter Datenanforderungen an
den Speicher gemäß 3A veranschaulicht;
-
4B ein
Ablaufdiagramm ist, das ein spezielles Ausführungsbeispiel des Verfahrens
gemäß 4A veranschaulicht;
-
5 ein
Ablaufdiagramm ist, das ein alternatives Ausführungsbeispiel eines Verfahrens
zum Verarbeiten geordneter Datenanforderungen an den Speicher gemäß 3A veranschaulicht;
-
6 eine
Blockdarstellung eines Ausführungsbeispiels
einer Einrichtung zum Verarbeiten geordneter Datenanforderungen
an ein Mehr-Ebenen-Cache-Speichersystem ist; und
-
7 eine
Blockdarstellung des Ausführungsbeispiels
zum Verarbeiten geordneter Datenanforderungen aus verschiedenen
Ausführungseinheiten
ist.
-
3A zeigt
ein Ausführungsbeispiel
der vorliegenden Erfindung, welches einen Prozessor 100 mit
einer Ausführungseinheit 105,
einem Pipeline-verschachtelten Datenanforderungsport 110,
einer Steuerlogik 115 und einem Cache-Speicher 120 enthält. Der
Pipeline-verschachtelte Port 110 weist ein Cache-Tag-Array
auf. Darüber
hinaus kann sich, obwohl dies nicht in 3A gezeigt
ist, die Steuerlogik 115 bei einigen alternativen Ausführungsbeispielen
in dem Pipeline-Datenanforderungsport 110 aufhalten. Der
Pipeline-Datenanforderungsport 110 kann
ein Mehrfach-Datenanforderungs-Port
für den Cache-Speicher 120 sein.
-
Die
Ausführungseinheit 105 ist
in der Lage, mehrere geordnete Datenanforderungen an dem Cache-Speicher 120 während eines
Taktzyklus auszugeben. Die Ausführungseinheit 105 erwartet,
daß jede
geordnete Datenanforderung in der Reihenfolge abgeschlossen wird,
in der sie ursprünglich
an den Pipeline-Port 110 ausgegeben
worden ist. Der Cache-Speicher 120 kann darüber hinaus
Datenanforderungen von weiteren Ausführungseinheiten (die nicht
gezeigt sind) empfangen. Die weiteren Datenanforderungen können auch
ungeordnet in Bezug auf die Datenanforderungen aus der Ausführungseinheit 105 sein.
Die Steuerlogik 115 ist in der Lage, eine geordnete Datenanforderung
in einen Vorabruf (prefetch) zu konvertieren, sofern der Pipeline-verschachtelte
Port 110 feststellt, daß eine frühere Datenanforderung, die
in Bezug auf die weitere geordnete Datenanforderung geordnet ist,
einen Cache-Speicher-Fehlversuch
registriert. Mit anderen Worten, die Steuerlogik 115 bei
dem Ausführungsbeispiel
gemäß 3 konvertiert im Falle eines Cache-Speicher-"Fehlversuchs" für eine frühere geordnete
Datenanforderung eine nachfolgende geordnete Datenanforderung in
einen Vorabruf.
-
Es
wird noch auf 3A Bezug genommen; ein Vorabruf
gewinnt (liest) die angeforderten Daten aus einem (nicht gezeigten)
sekundären
Speicher und speichert die gelesenen Daten in dem primären Speicher,
beispielsweise dem Cache-Speicher 120, ohne die Daten an
den ursprünglichen
Datenanforderer, beispielsweise die Ausführungseinheit 105,
weiterzuleiten. Bei einigen Ausführungsbeispielen
werden Datenanforderungen nur dann in Vorabrufe in der oben beschriebenen
Weise konvertiert, wenn bei der zu konvertierenden Datenanforderung
selbst festgestellt wird, daß sie
ein Cache-Speicher-Fehlversuch ist.
-
Es
wird noch auf 3A Bezug genommen; der Cache-Speicher 120 kann
einen Mehrfach-Pipeline-Datenanforderungsport aufweisen, der in
der Lage ist, mehrere Datenanforderungen während jedes Taktzyklus zu akzeptieren.
So kann die Ausführungseinheit 105 eine
Mehrzahl geordneter Datenanforderungen an den Pipeline-Port 110 während jedes Taktzyklus
ausgeben. Beispielsweise kann die Ausführungseinheit 105 eine
Mehrzahl geordneter Datenanforderungen während eines ersten Taktzyklus ausgeben
und dann eine weitere Mehrzahl geordneter Datenanforderungen während eines
zweiten Taktzyklus ausgeben. Der Pipeline-Datenanforderungsport 110 kann
darüber
hinaus Da tenanforderungen von weiteren (nicht gezeigten) Ausführungseinheiten empfangen.
Die weiteren Datenanforderungen können in Bezug auf die Datenanforderungen
aus der veranschaulichten Ausführungseinheit 105 geordnet sein
oder nicht. So kann der Pipeline-Port 110 geordnete und
nicht geordnete Datenanforderungen gleichzeitig empfangen. Das veranschaulichte
Ausführungsbeispiel
sorgt dafür,
daß die
angeforderten Informationen an die Ausführungseinheit 105 in
der ausgegebenen Reihenfolge zurückgegeben
werden, unabhängig
davon, ob ein Cache-Speicher"Treffer" oder -"Fehlversuch" während der
Verarbeitung der Datenanforderung auftritt.
-
4A zeigt
ein Ausführungsbeispiel
eines Verfahrens 190 zum Verarbeiten von Datenanforderungen, beispielsweise
von Anforderungen an den Speicher 120 gemäß 3A,
wobei einige der Datenanforderungen untereinander geordnet sind.
Am Block 200 werden mehrere Datenanforderungen an den Speicher 120 ausgegeben.
Die mehreren Datenanforderungen umfassen wenigstens zwei Datenanforderungen,
die zueinander geordnet sind. Beispielsweise können die zwei Datenanforderungen von
derselben Ausführungseinheit,
beispielsweise der Ausführungseinheit 105 gemäß 3A,
herrühren.
Die Mehrzahl der Datenanforderungen kann in einem oder in mehreren
Taktzyklen ausgegeben werden und kann ungeordnete Datenanforderungen
umfassen. Am Block 210 bestimmt der Pipeline-Port 110,
ob eine frühere
Anforderung der geordneten Datenanforderungen ein Speicher-Treffer
ist, das heißt, ob
sich die angeforderten Daten in dem Speicher 120 befinden.
Beim Block 215 konvertiert die Steuerlogik 115 eine
spätere
Anforderung der geordneten Datenanforderungen in einen Vorabruf,
sofern von einer früheren
geordneten Datenanforderung bestimmt worden ist, daß sie ein
Cache-Speicher-Fehlversuch ist.
Bei einigen Ausführungsbeispielen
werden sämtliche
Datenanforderungen, die in Bezug auf die Datenanforderung, von der
festgestellt worden ist, daß sie
ein Cache-Speicher-Fehlversuch
ist, später
eingeordnet sind, in Vorabrufe konvertiert. Beim Block 220 führt der
Pipeline-Port 110 die frühere und die spätere geordnete
Datenanforderung an den Speicher 120 aus, wenn im Block 210 festgestellt
worden ist, daß die
frühere
geordnete Datenanforderung zu einem Speicher-Treffer führt.
-
Es
wird auf die 3A und 4A Bezug genommen;
eine spätere
Datenanforderung wird dann nicht in einen Vorabruf konvertiert,
wenn ein Cache-Speicher-Fehlversuch bei einer früheren Datenanforderung, welche
in Bezug auf die spätere
Datenanforderung nicht geordnet ist, auftritt. Beispielsweise führt ein
Cache-Speicher-Fehlversuch bei einer Datenanforderung durch eine
zweite Ausführungseinheit
(die nicht in 3 gezeigt ist) nicht
zu einer Konvertierung einer Datenanforderung von der Ausführungseinheit 105 in
einen Vorabruf bei einigen Ausführungsbeispielen.
Dennoch können
Datenanforderungen aus verschiedenen Ausführungseinheiten bei anderen
Ausführungsbeispielen
in Bezug zueinander geordnet sein.
-
4B veranschaulicht
ein spezielles Ausführungsbeispiel 225 des
Verfahrens gemäß 4A, bei
dem eine spätere
geordnete Datenanforderung, von der selbst festgestellt wird, daß sie ein
Cache-Speicher-Treffer ist, nicht in einen Vorabruf konvertiert
wird. Die Blöcke 200, 210, 215 und 220 wurden
bereits in Bezug auf 4A beschrieben. Am Block 230 bestimmt
der Pipeline-Datenanforderungsport 110, ob eine spätere der
geordneten Datenanforderungen ein Cache-Speicher-Treffer ist. Beim
Block 235 spült
(flushes) der Pipeline-Anforderungsport 110 die
spätere
der geordneten Datenanforderungen, wenn bestimmt wird, daß die spätere der
geordneten Datenanforderungen ein Cache-Speicher-Treffer ist, das
heißt,
ohne diese späteren
geordneten Datenanforderungen in Vorabrufe zu konvertieren. Blöcke 230 und 235 werden
an einzelnen Anforderungen ausgeführt und können separat für verschiedene
spätere
geordnete Datenanforderungen ausgeführt werden. Die Flush-Operation
des Blockes 235 kann die Effizienz des Prozessors gemäß 3A verbessern,
da ein Vorabruf für Datenanforderungen, die
einen Cache-Speicher-Treffer registrieren, nutzlos ist.
-
Das
Verfahren 240 gemäß 5 ist
ein spezielles Ausführungsbeispiel
des Verfahrens gemäß 4A.
Die Blöcke 200, 210, 215 und 220 wurden bereits
unter Bezugnahme auf 4A beschrieben. Zusätzlich schließt am Block 245 der
Pipeline-Port 110 die Datenanforderungen ab, die in Bezug
auf die frühere
geordnete Anforderung, von der festgestellt worden ist, daß sie ein
Cache-Speicher-Fehlversuch ist, ungeordnet sind. Beim Block 250 werden
die späteren
geordneten Datenanforderungen in Erwiderung des Abschlusses der
früheren
geordneten Anforderung, von der zuvor im Block 210 festgestellt
worden ist, daß sie
ein Speicher-Fehlversuch ist, neu ausgegeben. Die späteren geordneten
Datenanforderungen umfassen die in einen Vorabruf beim Block 215 konvertierte
Anforderung und darüber
hinaus möglicherweise
weitere geordnete Anforderungen, z. B. die einer Flush-Operation
beim Block 235 gemäß 4B unterzogenen
Anforderungen. Die späteren geordneten
Anforderungen müssen
neu ausgegeben werden, da sie noch nicht die angeforderten Daten
an die Datenanforderer, beispielsweise die Ausführungseinheit 105,
geliefert haben. Die Verfahren gemäß den 4A und 5 werden
jedes Mal dann wiederholt, wenn die Ausführungseinheit 105 geordnete
Datenanforderungen an den Pipeline-Port 110 ausgibt.
-
Es
wird auf die 4A, 4B und 5 Bezug
genommen; die verschiedenen Ausführungsbeispiele
können
die Bandbreite eines Cache-Speichers 120 verbessern und
die Verzögerung
(Latenz) verringern. Zunächst
werden geordnete Datenanforderungen spekulativ ohne Verzögerung ausgegeben, bis
frühere
geordnete Anforderungen abgeschlossen sind. Zweitens werden dann,
wenn eine frühere
geordnete Anforderung einen Cache-Speicher-Fehlversuch registriert, später spekulativ
ausgegebene geordnete Anforderungen in Vorabrufe konvertiert. Die Konvertierungen
in Vorabrufe verringern die Verzögerungen,
wenn konvertierte Datenanforderungen später neu ausgegeben werden.
Drit tens wird dann, wenn eine spätere
Datenanforderung nicht in Bezug auf eine frühere Datenanforderung geordnet
ist, die spätere
Datenanforderung nicht einer Flush-Operation unterzogen, wenn die
frühere
Datenanforderung einen Speicher-Fehlversuch registriert. Die Verfahren
gemäß den 4A, 4B und 5 ermöglichen
es einem Speicher, geordnete Datenanforderungen ohne die bei dem
Pipeline-Port gemäß 1C verwendete
Verzögerung
zu empfangen und Außer-der-Reihe-Abschlüsse auf
eine Weise zu vermeiden, die weniger nachteilig für die Bandbreite
und die Verzögerung
ist, als die von dem Pipeline-Port gemäß 2C verwendete
Flush-Operation.
-
Sofern
die erste geordnete Datenanforderung in dem Cache-Speicher 120 gemäß 3A ein Fehlversuch
ist, so könnten
gemäß den Verfahren der 4A, 4B und 5 eine
oder mehrere der verbleibenden später geordneten Datenanforderungen
durch den Pipeline-Port 110 und die Steuerlogik 115 in
Vorabrufe konvertiert werden. Die Cache-Speicher-Pipeline könnte einer
Flush-Operation unterzogen werden, und sowohl die geordneten Anforderungen,
die konvertiert wurden, als auch die geordneten Anforderungen, die
der Flush-Operation unterzogen wurden, könnten entweder von der Ausführungseinheit 105 oder
dem Pipeline-Port 110 selbst neu ausgegeben werden.
-
Die
Verfahren 190 und 225 gemäß den 4A und 4B können durch
die Zeitleiste gemäß 3B veranschaulicht
werden. Ausschließlich zu
Zwecken der Veranschaulichung stellt jeder durch 3B beschriebene
Taktzyklus des Pipeline-Port eine verschiedene Stufe einer vierstufigen
Dual-Port-Pipeline dar, bei welcher der Speicher-Treffer- oder -Fehler-Status
in der dritten Stufe bestimmt wird. Die erste und die zweite Datenanforderung
werden von den Pipeline-verschachtelten Ports zum Zeitpunkt t =
0 empfangen und die dritte und die vierte Datenanforderung werden
zu t = 1 empfangen. Bei dem veranschaulichten Beispiel wird der
Status der ersten Datenanforderung, einer geordneten Datenanforderung,
als Fehlversuch zum Zeitpunkt t = 2 bestimmt. In Erwiderung des
Speicher- Fehlversuchs der
ersten Datenanforderung konvertiert der Pipeline-Port die späteren anhängigen Anforderungen, welche
in Bezug auf die erste Anforderung geordnete Anforderungen sind,
in Vorabrufe und ermöglicht
es den weiteren anhängigen
Anforderungen, welche in Bezug auf die erste Anforderung ungeordnet
sind, abgeschlossen zu werden. Einige Ausführungsbeispiele spülen (flush)
sämtliche
geordneten Anforderungen, von denen bekannt ist, daß sie Speicher-Treffer
darstellen und später
als die erste Anforderung sind, statt sie zu konvertieren, weil
Vorabrufe für
solche Datenanforderungen nicht nützlich sind – die angeforderten
Daten befinden sich bereits in dem Cache-Speicher. Ein Ausführungsbeispiel
könnte
nur die zweite Datenanforderung in einen Vorabruf konvertieren,
weil der Speicher-Treffer- oder -Fehlversuch-Status der noch späteren dritten
und vierten Anforderung unbekannt ist, wenn für die erste Anforderung zum
Zeitpunkt t = 2 festgestellt wird, daß sie ein Speicher-Fehlversuch
ist. Bei diesem Ausführungsbeispiel
werden die dritte und die vierte Anforderung aus der Pipeline gespült (flush),
wenn sie in Bezug auf die erste Datenanforderung geordnet sind,
und dann in Erwiderung des Abschlusses der ersten Datenanforderung
neu ausgegeben. Andere Ausführungsbeispiele
konvertieren sämtliche
geordneten Anforderungen in früheren
Pipeline-Stufen in Vorabrufe, beispielsweise die dritte und die
vierte Anforderung, weil der Speicher-Treffer- oder -Fehlversuch-Status
solcher Anforderungen unbekannt ist, wenn der Fehlversuch-Status
der früheren
geordneten Anforderung, beispielsweise der ersten Anforderung, zum
Zeitpunkt t = 2 auftritt.
-
6 zeigt
ein weiteres Ausführungsbeispiel,
das eine 3-Ebenen-Pipeline-Cache-Speicherarchitektur aufweist. Der
Prozessor 500 enthält
eine Ausführungseinheit 501,
einen primären
Cache-Speicher L0 502, einen sekundären Cache-Speicher L1 505,
eine Cache-Speicher-Steuereinrichtung 510 für den L1-Cache-Speicher 505,
eine Steuerlogik 515 und eine Bus-Steuereinrichtung 517. Die Bus-Steuereinrichtung 517 ist über einen
Front-Side-Bus 570 mit einer Speichersteuereinrichtung 540 des
Hauptspeichers 550 gekoppelt. Der Prozessor ist über einen
Front-Side-Bus 570 mit einer Speichersteuereinrichtung 540 des
Hauptspeichers 550 gekoppelt. Der Prozessor ist über einen
Backside-Bus 580 mit einem tertiären Cache-Speicher oder Cache-Speicher
der dritten Ebene L2 575 gekoppelt. Der tertiäre Cache-Speicher 575 hält sich
auf einem Cache-Chip 585 und somit außerhalb des Chips für den Prozessor 500 auf.
-
Wie
es in 6 gezeigt ist, weist die L1-Cache-Speichersteuereinrichtung 510 die
Steuerlogik 515 für
die Pipeline-verschachtelten Anforderungsports auf, die die in den 4A, 4B und 5 veranschaulichten
Verfahren implementieren. Unter Verwendung des Verfahrens der vorliegenden
Erfindung ist die L1-Cache-Speichersteuereinrichtung 510 in
der Lage, eine Mehrzahl geordneter Datenanforderungen im wesentlichen
gleichzeitig zu empfangen und zu verarbeiten, das heißt, ohne
auf den Abschluß einer
früheren
geordneten Anforderung zu warten. Die Cache-Speichersteuereinrichtung
und die Steuerlogik 510, 515 konvertieren eine
spätere anhängige geordnete
Datenanforderung an den L1-Cache-Speicher 505 in einen
Vorabruf von Daten aus dem L2-Cache-Speicher 575, wenn
sie feststellen, daß eine
frühere
geordnete Datenanforderung zu einem Fehlversuch in dem L1-Cache-Speicher 505 führt.
-
Die
Steuerlogiken 115, 515 gemäß den 3 und 6,
die zum Implementieren der in den 4A, 4B und 5 veranschaulichten
Verfahren verwendet werden, können
von Fachleuten konstruiert werden, die diese Offenbarung kennen. Die
Steuerlogik 115, 515 kann als Hardware oder Software
implementiert werden. Obwohl die Steuerlogik 515 bei dem
speziellen Ausführungsbeispiel
gemäß 6 sich
in der Cache-Speichersteuereinrichtung 510 aufhält, ist
dies darüber
hinaus nicht erforderlich, um die Erfindung auszuführen. Es
könnte möglich sein,
die Cache-Speicher-Latenz der geordneten Datenanforderungen zu reduzieren,
indem eine ähnliche
Steuerlogik irgendwo in dem Datenverarbeitungssystem implementiert
wird, beispielsweise für
geordnete Datenanforderungen an irgendeine Kombination der L0-,
L1- und L2-Cache-Speicher 502, 510, 575.
-
Die
vorliegende Erfindung zum Verringern der Latenz und zum Erhöhen der
Bandbreite für
geordnete Datenanforderungen ist auf eine beliebige Speicherarchitektur
anwendbar und nicht auf die Cache-Speicher-Architekturen gemäß den 3 und 6 beschränkt.
-
7 veranschaulicht
ein Ausführungsbeispiel
eines Datenverarbeitungssystems 400 für geordnete Speicheranforderungen
aus zwei Ausführungseinheiten 410, 430.
Ein Prozessor 405 enthält die
erste Ausführungseinheit 410,
einen pipelineverschachtelten Datenanforderungsport 415 und
einen Speicher 425. Der Pipeline-Anforderungsport 415 behandelt
Datenanforderungen an den Speicher 425. Sowohl die erste
als auch die zweite Ausführungseinheit 410, 430 können Datenanforderungen an
den Speicher 425 über
den Pipeline-Anforderungsport 415 ausgeben. Die Datenanforderungen aus
jeder der Ausführungseinheiten 410, 430 sind
jeweils geordnet. Bei einigen Ausführungsbeispielen sind die Datenanforderungen
aus der ersten Ausführungseinheit 410 in
Bezug auf die Datenanforderungen aus der zweiten Ausführungseinheit 430 nicht geordnet.
Bei einigen Ausführungsbeispielen
gehören
die erste und die zweite Ausführungseinheit 410, 430 zu
demselben Prozessor 405. Bei anderen Ausführungsbeispielen
ist die zweite Ausführungseinheit 430 ein
separater Prozessor. Der Pipeline-verschachtelte Datenanforderungsport 415 kann
eine Mehrzahl von Datenanforderungen verarbeiten, wobei ein Teil
der Anforderungen geordnet ist und ein Teil der Anforderungen ungeordnet.
-
Es
wird noch auf 7 Bezug genommen; der Pipeline-Anforderungsport 415 verarbeitet
Datenanforderungen gemäß den in
den 4A und 4B veranschaulichten
Verfahren. In Erwiderung auf geordnete Datenanforderungen, welche
Fehlversuche in dem Speicher 425 sind, erzeugte Vorabrufe lesen
Daten aus einem sekundären
Speicher 435. Der Pipeline-Port 415 übermittelt
Vorabrufanforderungen an den sekundären Speicher 435 über einen Bus 440 und
liest vorabgerufene, in dem Speicher 425 zu speichernde
Daten über
den Bus 440. Bei einigen Ausführungs beispielen ist der Bus 440 ein
Systembus, der darüber
hinaus Signale zwischen weiteren (nicht gezeigten) Hardware-Strukturen übermittelt.
Vorabrufe an den sekundären
Speicher 435 können
langsamer sein als Datenanforderungen an den Speicher 425,
was zum Teil auf die langsame Geschwindigkeit von Transaktionen über den
Bus 440 und zum Teil auf die geringere Geschwindigkeit
des sekundären
Speichers 435 zurückzuführen sein kann.
Bei einigen Ausführungsbeispielen
kann der sekundäre
Speicher 435 ein außerhalb
des Prozessors 405 befindlicher Speicher sein, während der Speicher 425 ein
interner Cache-Speicher
sein kann.