-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht
sich auf das Gebiet der Datenspeicherung. Insbesondere bezieht diese
Erfindung sich auf Cache-Speicher-Subsysteme.
-
Hintergrund
-
Die Computertechnologie entwickelt
sich ständig,
was zu Mikroprozessoren führt,
die schneller und schneller arbeiten. Um den Vorteil dieser schnelleren
Mikroprozessoren voll auszunutzen, müssen die Datenspeicherkapazitäten mit
der erhöhten
Geschwindigkeit Schritt halten. Ein Hochgeschwindigkeitsspeicher
ist jedoch sehr kostspielig, wobei die Kosten durch den von vielen
modernen Softwareprogrammen benötigte
großen
Speicherumfang noch weiter steigen.
-
Das Problem mit dem kostspieligen
Speicher kann durch ein Cache-Speicher-Subsystem gelöst werden.
Ein Cache-Speicher-Subsystem ist eine Speichereinheit, die generell
viel kleiner als die Systemspeichereinheit ist, aber bei einer bedeutend
höheren
Geschwindigkeit als der Systemspeicher arbeitet. Das Ziel des Cache-Speichers
ist es, die Informationen (egal ob es sich um Daten oder Befehle handelt),
die der Mikroprozessor als nächstes
verwendet, zu enthalten. Wegen der höheren Geschwindigkeit des Cache-Speichers
können
diese Informationen dann viel schneller an den Mikroprozessor zurückgegeben
werden.
-
Die Betriebsweise der Cache-Speicher-Subsysteme
variiert, aber im allgemeinen werden Daten zwischen dem Systemspeicher
und dem Cache-Speicher ein- und ausgelagert. Wenn der Mikroprozessor
Informationen, beispielsweise einen Befehl, den er ausführen wird,
oder Daten, die sich auf einen Befehl beziehen, aus dem Speicher
anfordert, sendet der Mikroprozessor die Speicheradresse der gewünschten
Informatio nen an den Cache-Speicher. Falls die Informationen im
Cache-Speicher enthalten sind,
gibt der Cache-Speicher ein Signal an den Mikroprozessor aus, welche
dies angibt; dieses Signal wird im allgemeinen als „Treffer" bezeichnet. Danach gibt
der Cache-Speicher dem Mikroprozessor die angeforderten Informationen
zurück.
Somit empfängt der
Mikroprozessor die angeforderten Informationen schneller wegen der
höheren
Geschwindigkeit des Cache-Speichers.
-
Sollte der Cache-Speicher aber die
vom Mikroprozessor angeforderten Informationen nicht enthalten,
wird ein Signal, das im allgemeinen als „Fehlversuch" bezeichnet wird,
dem Mikroprozessor zurückgegeben.
Der Fehlversuch zeigt dem Mikroprozessor an, daß er die Informationen aus
dem langsameren Systemspeicher wiedergewinnen muß. Alternativ kann die Cache-Speicher-Steuereinrichtung
die Informationen aus dem Systemspeicher wiedergewinnen und diese
Informationen an den Mikroprozessor zurückgeben. Gleichgültig welches
Subsystem die Informationen aus dem Systemspeicher wiedergewinnt,
werden die wiedergewonnenen Informationen ebenfalls im Cache-Speicher gespeichert.
Um diese Informationen im Cache-Speicher zu speichern, müssen jedoch
andere Daten im Cache-Speicher überschrieben
werden. D. h. andere Informationen können an dem Speicherplatz,
an den die neuen Informationen geschrieben werden, vorhanden sein. Bei
einigen Systemen wird diese Situation dadurch gelöst, daß die an
einem bestimmten Speicherplatz des Cache-Speichers gespeicherten
Informationen in den Systemspeicher und die im Systemspeicher gespeicherten
Informationen in diesen bestimmten Speicherplatz des Cache-Speichers übertragen
werden.
-
Ob der Cache-Speicher die Informationen
an einem bestimmten Speicherplatz in den Systemspeicher übertragen
muß, hängt auch
von der verwendeten Cache-Vorgehensweise ab. Einige Cache-Vorgehensweisen übertragen
beispielsweise die Informationen immer in den Systemspeicher, wenn
die Informationen im Cache aktualisiert werden. Wenn die neuen Informa tionen
aus dem Systemspeicher wiedergewonnen werden, brauchen die Informationen im
Cache daher nicht an den Systemspeicher übertragen zu werden.
-
Der Cache-Speicher ist im allgemeinen
viel kleiner als der Systemspeicher. Daher wird nur ein Abschnitt
der Speicheradresse, der Cache-Index genannt wird, als ein Index
im Cache-Speicher verwendet. Ein zweiter Abschnitt der Speicheradresse,
der allgemein „Tag-Abschnitt" genannt wird, wird
verwendet, um zu entscheiden, ob die im Cache-Speicher gespeicherten
Informationen die angeforderten Informationen sind. Mehrfachsystem-Speicheradressen verweisen
somit auf denselben Slot im Cache-Speicher. Sollte der Mikroprozessor
eine Speicheradresse anfordern, die einem schon von einer anderen
Cache-Zeile verwendeten Slot in dem Cache-Speicher entspricht, gibt
es einen Konflikt.
-
Cache-Speicher-Subsysteme sind häufig in mehrere
Cache-Zeilen unterteilt,
wobei der Cache-Index-Abschnitt der Speicheradresse einer dieser
Cache-Zeilen entspricht. Jede Cache-Zeile enthält mehrere Bytes, wobei das
vom Mikroprozessor angeforderte bestimmte Byte in der Speicherzelle
als ein Offset angezeigt wird. Der Systemspeicher ist oft auch in
die gleiche Zeilengröße wie der
Cache-Speicher unterteilt. Diese Zeilen im Systemspeicher werden
Datenzeilen genannt.
-
Ein bekannter Typ von Cache-Speicher-Subsystem
zum Lösen
von Cache-Zeilen-Konflikten ist der direkt-abgebildete Cache. Bei
einem direkt-abgebildeten Cache wird im Falle eines Konflikts die
im Cache gespeicherte Cache-Zeile in den Systemspeicher übertragen,
und die Datenzeile, die der Anforderung aus dem Mikroprozessor entspricht,
wird in diesen Speicherplatz im Cache-Speicher übertragen. Ein solches Cache-Speicher-System
hat mehrere Vorteile. Erstens ist die Hardware-Komplexität zum Implementieren
des Cache-Speichers relativ einfach. Das Tag des Speicherplatzes
wird mit der Anforderung verglichen und die Cache-Zeile wird an
den Mikroprozessor zurückgegeben,
falls die Tags übereinstimmen.
-
Wenn sie nicht übereinstimmen, werden die Daten
aus dem Systemspeicher wiedergewonnen.
-
Zweitens kostet das Cache-Speicher-Subsystem
relativ wenig. Hierfür
gibt es zwei Gründe.
Die oben erläuterte
reduzierte Logikkomplexität
vermindert den finanziellen Aufwand für das System. Darüber hinaus
erlaubt die geringe Komplexität,
daß der Cache-Speicher
Zellen statischen Speichers mit wahlfreiem Zugriff (SRAM) verwendet.
SRAMs sind umfangreich erhältlich
und im Vergleich zu vielen anderen Speicherzellentypen kostengünstig.
-
Unter bestimmten Umständen sind
die Leistungen des direkt abgebildeten Caches jedoch mangelhaft.
Die Speicheradresse A und die Speicheradresse B können beispielsweise
auf denselben Cache-Speicherplatz, Speicherplatz X, verweisen. Falls der
Mikroprozessor zuerst die Speicheradresse A anfordert, werden die
Daten in der Adresse A in Speicherplatz X gespeichert. Falls der
Mikroprozessor im nächsten
Taktzyklus die Adresse B anfordert, werden die Daten im Speicherplatz
X dem Systemspeicher (bei Adresse A) zurückgegeben, und die Daten in Adresse
B werden in Speicherplatz X gespeichert. Die nächste Anforderung des Mikroprozessors
kann dann wiederum für
die Adresse A sein. Die Daten im Speicherplatz X werden daher dem
Systemspeicher (bei Adresse B) zurückgegeben und die Daten in
der Adresse A wieder im Speicherplatz X gespeichert. Es gibt daher
ein sehr schlechtes Treffer-Verhältnis
(d. h. Anzahl von Cache-Treffern bezogen auf die Gesamtanzahl von
Zugriffen auf den Cache), falls der Mikroprozessor Anforderungen
in der folgenden Reihenfolge stellt: Adresse A, Adresse B, Adresse
A, Adresse B, Adresse A, Adresse B usw. Es ist daher klar, daß die Leistungen
eines direkt-abgebildeten Caches schlecht sind, wenn der Mikroprozessor
abwechselnd die Adresse A und Adresse B anfordert.
-
Ein zweiter Cache-Speichertyp, der
diesen Leistungsnachteil überwindet,
ist der Zwei-Wege-satzassoziative-Cache- Speicher. Ein Zwei-Wege-satzassoziativer
Cache enthält
zwei „Wege", die als zwei direkt-abgebildete
Caches, die zusammenarbeiten, verstanden werden können (aus
diesem Grund wird ein direkt-abgebildeter Cache manchmal Ein-Weg-Cache
genannt). Falls es bei einem Zwei-Wege-Cache einen Konflikt gibt,
werden die im ersten Weg des Caches gespeicherten Daten in den zweiten
weg des Caches übertragen,
und die neuen Daten werden aus dem Systemspeicher in den ersten
Weg des Caches wiedergewonnen. Beide Datenzeilen werden somit im
Cache-Speicher gespeichert. Sollte der Mikroprozessor ständig abwechselnd Adresse
A und Adresse B anfordern, so wie es oben beschrieben wurde, wird
jede Anforderung daher zu einem Treffer im Cache führen, was
ein besseres Treffer-Verhältnis
zur Folge hat. Beide Datenzeilen verbleiben im Cache, bis es einen
zweiten Konflikt gibt, d. h. eine dritte Anforderung, die auf denselben Speicherplatz
zugreift.
-
Es ist daher klar, daß der Zwei-Wege-Cache einige
der Leistungsprobleme des direkt-abgebildeten Caches löst. Diese
erhöhte
Leistung ist jedoch mit verschiedenen Kosten verbunden. Erstens
ist die Logikkomplexität
zum Betreiben eines Zwei-Wege-Caches größer. Der Zwei-Wege-Cache muß eine zusätzliche
Logik enthalten, um beide Cache-Zeilen in beiden Richtungen zu überwachen
und die korrekten Daten zurückzugeben,
wenn eine Anforderung aus dem Mikroprozessor zu einem Treffer im
Cache führt.
Zweitens verwenden Zwei-Wege-Caches im allgemeinen maßgeschneiderte
Speicherzellen anstatt Standard-SRAMs. Der finanzielle Aufwand für das Cache-System
ist daher höher.
-
Eine dritte Überlegung bezüglich der
Kosten ist, daß ein
Zwei-Wege-Cache mehr Energie als ein direkt-abgebildeter Cache verbraucht.
Der direkt-abgebildete Cache greift nur auf eine Cache-Zeile zu, um
zu bestimmen, ob es einen Treffer gibt. Bei einem Zwei-Wege-Cache
wird jedoch auf beide Cache-Zeilen
zugegriffen, um zu bestimmen, ob es einen Treffer gibt, wobei die
korrekte Zeile dem Mikroprozessor zurückge geben wird, falls es einen
Treffer gibt. Es ist daher klar, daß der Zwei-Wege-Cache doppelt
soviel Energie wie der direkt abgebildete Cache verbraucht, weil
er auf doppelt so viele Cache-Zeilen zugreift.
-
Ein Beispiel eines bekannten spaltenassoziativen-Cache-Speichers ist in
der Internationalen Patentanmeldung Nr. WO94 03856A (Massachusetts Institute
of Technology) beschrieben worden. Darüber hinaus ist der Cache-Speicher
in der veröffentlichten
Europäischen
Patentanmeldung Nr. EP-A-0581425
(Sun Microsystems, Inc.) sowie in dem Artikel "Inexpensive implementations of set associativity" von Kessler R. E.
et al behandelt worden, der in Computer Architecture News, Vol.
17, Nr. 3, Juni 1989, Seite 131–139,
XP000035297, veröffentlicht
wurde.
-
Es wäre daher vorteilhaft, ein Cache-Speicher-Subsystem
zur Verfügung
zu stellen, das schnell arbeitet, um den Vorteil der erhöhten Geschwindigkeit
der modernen Mikroprozessoren auszunutzen. Die vorliegende Erfindung
stellt eine solche Lösung
bereit.
-
Darüber hinaus wäre es vorteilhaft,
ein Cache-Speicher-Subsystem
bereitzustellen, das sowohl die Vorteile eines direkt abgebildeten
Caches als auch die erhöhte
Leistung des Zwei-Wege-Caches aufweist. Die vorliegende Erfindung
stellt einen Cache-Speicher bereit, der dadurch gekennzeichnet ist, daß er im
Vergleich zum Zwei-Wege-Cache weniger komplex ist, weniger kostet
und weniger Energie verbraucht. Die vorliegende Erfindung schafft
ferner höhere
Treffer-Verhältnisse
als herkömmliche
direkt-abgebildete Caches.
-
ZUSAMMENFASSENDE DARSTELLUNG
DER ERFINDUNG
-
Ein Zwei-Wege-satzassoziativer-Cache-Speicher
wird hier beschrieben und in den beigefügten Ansprüchen beansprucht.
-
Bei einer Ausführungsform enthält der Cache-Speicher
sowohl ein Satz-Array als auch ein Daten-Array. Das Daten-Array
enthält
mehrere Elemente, wobei jedes Element eine Ca che-Zeile enthalten kann.
Das Satz-Array enthält
mehrere Sätze,
wobei jeder Satz einem Element im Daten-Array entspricht. Jeder
Satz im Satz-Array enthält
Informationen, die anzeigen, ob eine vom Cache-Speicher empfangene Adresse
mit der Cache-Zeile im entsprechenden Element des Daten-Arrays übereinstimmt
(vorausgesetzt, daß das
Element eine Cache-Zeile
enthält).
-
Jeder Satz enthält Tag-Informationen sowie Zustandsinformationen.
Die Tag-Informationen verweisen auf eine der Cache-Zeilen im Daten-Array. Falls
das Tag eines bestimmten Satzes mit dem Tag-Abschnitt der vom Cache-Speicher
empfangenen Adresse übereinstimmt,
ist die diesem bestimmten Satz zugeordnete Cache-Zeile die angeforderte Cache-Zeile.
Die Zustandsinformationen des bestimmten Satzes zeigen die Anzahl
der in diesen bestimmten Satz abgebildeten Cache-Zeilen an.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die vorliegende Erfindung wird anhand
einiger Beispiele und nicht zur Beschränkung in den Figuren der beigefügten Zeichnungen
veranschaulicht, in denen gleiche Bezugszeichen auf ähnliche
Elemente hinweisen, und in denen:
-
1 einen Überblick über ein
beispielhaftes Computersystem der vorliegenden Erfindung zeigt.
-
2 zeigt
das Satz-Array sowie das entsprechende Daten-Array eines Cache-Speichers
bei einer Ausführungsform
der vorliegenden Erfindung.
-
3A zeigt
eine Bit-Abbildung zum Bestimmen der Informationen über den
Jüngst-benutzten-Satz
bei einer Ausführungsform
der vorliegenden Erfindung.
-
3B zeigt
die Logikschaltung zum Bestimmen der Informationen über den
Jüngst-benutzten-Satz
bei einer alternativen Ausführungsform
der vorliegenden Erfindung.
-
4 ist
eine Blockdarstellung eines Cache-Speicher-Subsystems bei einer Ausführungsform
der vorliegenden Erfindung.
-
5A und 5B zeigen die Schritte, denen von
einer Ausführungsform
der vorliegenden Erfindung zum Betreiben des Cache-Speicher-Subsystems
gemäß 4 gefolgt wird.
-
6 ist
eine Blockdarstellung eines Cache-Speicher-Subsystems bei einer alternativen Ausführungsform
der vorliegenden Erfindung.
-
7A und 7B zeigen die Schritte, denen von einer
Ausführungsform
der vorliegenden Erfindung zum Betreiben des Cache-Speicher-Subsystems
gemäß 6 gefolgt wird.
-
8 ist
eine Blockdarstellung eines Cache-Speicher-Subsystems bei einer weiteren Ausführungsform
der vorliegenden Erfindung.
-
9A und 9B zeigen die Schritte, denen von
einer Ausführungsform
der vorliegenden Erfindung zum Betreiben des Cache-Speicher-Subsystems
gemäß 8 gefolgt wird.
-
DETAILLIERTE BESCHREIBUNG
-
In der nachfolgenden detaillierten
Beschreibung werden zahlreiche spezielle Details erwähnt, um
ein genaues Verständnis
der vorliegenden Erfindung zu ermöglichen. Für Fachleute ist es jedoch klar,
daß die
vorliegende Erfindung ohne diese speziellen Details ausgeführt werden
kann. An anderen Stellen sind bekannte Methoden, Verfahren, Bauelemente und
Schaltungen nicht ausführlich
beschrieben worden, um die Aspekte der vorliegenden Erfindung nicht
zu verdecken.
-
1 zeigt
einen Überblick über ein
beispielhaftes Computersystem gemäß der vorliegenden Erfindung.
Das Computersystem enthält
im allgemeinen einen Systembus oder eine andere Kommunikationseinrichtung 100 zum
Kommunizieren von Informationen sowie eine mit dem Bus 100 gekoppelte zentrale
Verarbeitungseinheit (CPU) 101 zum Verarbeiten von Informationen
und Befehlen. Bei einer Ausführungsform
verwendet die vorliegende Erfindung einen Intel®-Architektur-Mikroprozessor
als CPU 101; die vorliegende Erfindung kann jedoch jeden
Mikroprozessor-Architekturtyp verwenden. Bei einer Ausführungsform
weist der Bus 100 einen Adreß-, einen Daten- sowie einen
Steuerbus auf. Das Computersystem enthält ferner einen mit dem Bus 100 gekoppelten
Systemspeicher oder Speicher mit wahlfreiem Zugriff (RAM) 104 zum
Speichern von Informationen und Befehlen für die CPU 101, einen
mit dem Bus 100 gekoppelten Nur-Lese-Speicher (ROM) 105 zum
Speichern von statischen Informationen und Befehlen für die CPU 101,
eine mit dem Bus 100 gekoppelte Datenspeichereinrichtung 106,
wie z. B. eine Magnetplatte und ein Plattenlaufwerk, zum Speichern
von Informationen und Befehlen, eine mit dem Bus 100 gekoppelte
Anzeigeeinrichtung 107 zum Anzeigen von Informationen an
den Benutzer des Computers, eine mit dem Bus 100 gekoppelte
alphanumerische Eingabeeinrichtung 108 mit alphanumerischen
Tasten und Funktionstasten zum Kommunizieren von Informationen und
Befehlsselektionen an die CPU 101, eine mit dem Bus 100 gekoppelte Cursor-Steuereinrichtung 109 zum
Kommunizieren von Benutzereingabe-Informationen und Befehlsselektionen
an die CPU 101 sowie ein mit dem Bus 100 gekoppeltes
Hard-Copy-Gerät 111,
wie z. B. einen Plotter oder Printer, zum Bereitstellen einer visuellen Darstellung
der Computerbilder.
-
Die bei dem Computersystem der vorliegenden
Erfindung verwendete Anzeigeeinrichtung 107 kann ein Flüssigkristall gerät, eine
Kathodenstrahlröhre
oder eine andere Anzeigeeinrichtung sein, die zum Erstellen graphischer
Bilder sowie für
den Benutzer erkennbarer alphanumerischer Zeichen (und ideographischer
Zeichensätze)
geeignet ist. Die Cursor-Steuereinrichtung 109 ermöglicht es
dem Benutzer des Computers, die zweidimensionale Bewegung eines
sichtbaren Symbols (z. B. eines Cursors oder Zeigers) auf einem
Anzeigebildschirm der Anzeigeeinrichtung 107 dynamisch
zu signalisieren. Viele Ausführungsformen
der Cursor-Steuereinrichtung sind bekannt, z. B. der Trackball,
die Maus, der Joystick oder spezielle Tasten auf der alphanumerischen Eingabeeinrichtung 108,
die die Bewegung in einer gegebenen Verschieberichtung oder - weise signalisieren
können.
Es ist klar, daß der
Cursor auch unter Verwendung spezieller Tasten sowie Tastenfolgen-Befehle über Eingaben
mit Hilfe der Tastatur gesteuert und/oder aktiviert werden kann.
Alternativ kann der Cursor über
Eingaben von mehreren speziell angepaßten Cursor-Steuereinrichtungen,
einschließlich
der speziell für
Behinderte entwickelten Einrichtungen, gesteuert und/oder aktiviert
werden.
-
Die CPU 101 umfaßt einen
internen Bus oder eine andere Kommunikationseinrichtung 115 zum Kommunizieren
von Informationen zwischen Bauelementen innerhalb der CPU 101 sowie
an und von Bauelementen außerhalb
der CPU 101. Außerdem enthält die CPU 101 eine
Befehlsausführungseinheit 116.
Diese Befehlsausführungseinheit 116 gewinnt die
Befehle wieder und führt
diese aus. Darüber
hinaus gewinnt die Befehlsausführungseinheit 116 Daten
aus den Datenspeichereinrichtungen im Computersystem. Diese Daten
und Befehle können
im Systemspeicher 104, im ROM 105, in der Datenspeichereinrichtung 106 usw.
gespeichert werden. Die CPU 101 enthält außerdem einen primären Cache
(L1-Cache) 117 zum Speichern von der Ausführungseinheit 116 zu
verwendenden Daten und Befehlen. Es sei angemerkt, daß die CPU 101 zusätzliche
Bauelemente aufweist, die aber nicht gezeigt sind, um die Zeichnungen nicht
zu überhäufen und
die vorliegende Erfindung nicht zu verdecken.
-
Die CPU 101 ist mit einem
sekundären
Cache (L2-Cache) 118 über
den L2-Bus 119 gekoppelt. Der L2-Cache 118 ist
ein zusätzlicher
Cache zum Speichern von von der Ausführungseinheit 116 zu verwendenden
Daten und Befehlen. Bei einer Ausführungsform der vorliegenden
Erfindung ist der L2-Cache 118 sowohl größer als
auch langsamer als der L1-Cache 117. Der L2-Cache 118 enthält einen L2-Controller 120 zum
Steuern des Betriebs des L2-Caches sowie einen L2-RAM 121 zum Speichern der
im L2-Cache 118 enthaltenen Daten und Befehle. Bei der
gezeigten Ausführungsform
ist der L2-Controller 120 im L2-Cache 118 enthalten. Alternativ könnte der
L2-Controller 120 in der CPU 101 enthalten sein.
-
Es ist klar, daß das Computersystem gemäß 1 nur ein Beispiel ist.
Bei einigen Ausführungsformen
der vorliegenden Erfindung können
zusätzliche
Prozessoren oder andere Bauelemente im Computersystem enthalten
sein. Einige Ausführungsformen
der vorliegenden Erfindung benötigen
vielleicht nicht alle oben genannten Bauelemente oder weisen nicht
alle auf. Die Anzeigeeinrichtung 107 oder das Hard-Copy-Gerät 111 braucht
beispielsweise nicht mit dem Bus 100 gekoppelt zu werden.
Gewisse Ausführungsformen
können
außerdem
die Bauelemente anders koppeln. Der L2-Cache 118 kann beispielsweise
direkt mit dem Systembus 100 anstatt mit dem internen Bus 115 gekoppelt
werden.
-
2 zeigt
einen Cache-Index oder ein Satz-Array 201 sowie ein entsprechendes
Daten-Array 221 eines Cache-Speichers bei einer Ausführungsform
der vorliegenden Erfindung. Das Satz-Array 201 enthält 2·n Datensätze und
das Daten-Array 221 2·n
Elemente. Jeder Datensatz des Satz-Arrays 201 entspricht
einem einzigen Element im Daten-Array 221.
-
Das gezeigte Satz-Array 201 ist
ein einziges, physikalisch zusammenhängendes Array. Das Satz-Array 201 kann
jedoch als ein Zwei-Wege-satzassoziativer-Cache behandelt wer den.
In 2 ist dies durch
Weg 0 und Weg 1 gezeigt, wobei jeder Weg n Sätze enthält. Eine vom Cache-Speicher
empfangene Adresse enthält
einen Abschnitt, der ein Satz-Index ist, beispielsweise den Satz-Index 205. Der
Satz-Index 205 identifiziert eindeutig einen bestimmten
Satz im Satz-Array 201, egal ob der Satz sich im Weg 0
oder Weg 1 befindet. Die Größe (d. h. die
Anzahl von Bits) des Satz-Indexes 205 wird von der Anzahl
der Sätze
im Satz-Array 201 bestimmt.
-
Vorausgesetzt, daß Weg 0 und Weg 1 so eingeteilt
sind, wie es in 2 gezeigt
ist, ist der Unterschied zwischen einem Satz-Index, der einen Satz
im Weg 0 identifiziert, und einem Satz-Index, der einen Satz im
Weg 1 identifiziert, das am höchsten
bewertete Bit des Satz-Indexes. Falls alle Bits des Satz-Indexes 205,
einschließlich
des am höchsten
bewerteten Bits, beispielsweise Nullen sind, wird der Satz-Index 205 auf
Satz 1 des Weges 0 des Satz-Arrays 201 abgebildet. Falls
aber das am höchsten
bewertete Bit des Satz-Indexes 205 eine Eins ist und falls
alle weiteren Bits Nullen sind, bildet der Satz-Index 205 Indizes
auf Satz 1 des Weges 1 des Satz-Arrays 201 ab.
-
Es ist daher klar, daß das Satz-Array 201 im wesentlichen
wie ein direkt-abgebildeter Cache arbeiten kann. Das heißt, daß jeder
Satz-Index auf einen bestimmten Satz des Satz-Arrays 201 abbildet. Es
sei jedoch angemerkt, daß das
am höchsten
bewertete Bit des Satz-Indexes einfach umgekehrt werden muß, um auf
den entsprechenden Satz eines anderen Weges zuzugreifen. Beim Satz-Index
für Satz 4
des Weges 1 muß,
falls der Benutzer auf Satz 4 des Weges 0 zugreifen möchte, beispielsweise
einfach das am höchsten
bewertete Bit des Satz-Indexes in eine 0 umgekehrt werden.
-
Bei einer Ausführungsform der vorliegenden Erfindung
enthält
jeder Satz im Satz-Array 201 ein Tag-Feld sowie ein Zustandsfeld.
Das Tag-Feld eines gegebenen Satzes identifiziert die im entsprechenden
Element des Daten-Arrays 221 gespeicherte Cache-Zeile.
Das Tag-Feld des Satzes 2 des Weges 0 im Satz-Array 201 zeigt
beispielsweise die Speicheradresse des Elements 2 des Daten-Arrays 221 an. Die
im Tag-Feld eines gegebenen Satzes gespeicherten Informationen werden
als ein Teil der Speicheradressenanforderung von dem Prozessor empfangen.
Das Zustandsfeld eines gegebenen Satzes innerhalb des Satz-Arrays 201 zeigt
an, wie viele Cache-Zeilen auf den Satz abgebildet werden, so wie
es nachstehend ausführlicher
beschrieben wird. Bei einer alternativen Ausführungsform der vorliegenden Erfindung
werden zwei Satz-Arrays verwendet; ein Satz-Array enthält die Tag-Felder
und das zweite Satz-Array
die Zustandsfelder. Unter Bezug auf 4 wird
diese Ausführungsform
nachstehend ausführlicher
beschrieben.
-
Es ist für Fachleute klar, daß alternative
Ausführungsformen
der vorliegenden Erfindung Satz-Arrays mit zusätzlichen Informationen verwenden
können.
Bei einer Ausführungsform
der vorliegenden Erfindung enthält
das Satz-Array 201 beispielsweise Paritätsbits für jeden Satz, die zur Fehlerprüfung verwendet
werden, sowie Statusbits; die die Gültigkeit der Cache-Zeile wiedergeben
(z. B. unter Verwendung des bekannten MESI-Protokolls).
-
Bei einer Ausfürhungsform der vorliegenden Erfindung
enthält
das Satz-Array 201 insgesamt 1.024 Sätze. Jeder Weg enthält somit 512 Sätze und der
Satz-Index 205 10 Bits. Das Daten-Array 221 enthält daher
auch 1.024 Elemente. Bei einer Ausführungsform der vorliegenden
Erfindung ist jedes Element im Daten-Array 221 eine einzelne
Cache-Zeile für
das Computersystem. Bei einer Ausführungsform besteht diese Cache-Zeile aus 32 Bytes.
Es ist jedoch klar, daß diese
Größen des
Satz-Arrays, des Daten-Arrays und der Cache-Zeile nur Beispiele sind;
diese Bauelemente können
eine beliebige Größe haben.
-
Wie es oben erwähnt wurde, kann jeder Satz im
Satz-Array 201 ein Zustandsfeld aufweisen. Bei einer Ausführungsform
der vorliegenden Erfindung zeigt das Zustandsfeld die Anzahl von
Cache-Zeilen an, die auf diesen bestimmten Satz abgebil det werden.
Jeder Satz-Index identifiziert einen Satz des Satz-Arrays 201 eindeutig.
Da mehrere Datenzeilen denselben Satz-Index haben können, wenn
die Datenzeilen als Cache-Zeilen in den Cache übertragen werden, ermöglicht die
vorliegende Erfindung aber, daß ein
Satz-Index auf mehrere Cache-Zeilen
abbildet. Bei dieser Ausführungsform
gibt es drei mögliche Zustände für das Zustandsfeld.
Diese drei Zustände sind:
direkt, gepaart und geborgt.
-
Der Direkt-Zustand zeigt an, daß nur eine einzige
Cache-Zeile auf
diesen Satz abgebildet wird; d. h. nur eine Cache-Zeile wird dem Satz
zugeordnet. Ein Satz im Direkt-Zustand kann entweder in den Geborgt-Zustand
oder den Gepaart-Zustand übergehen oder
im Direkt-Zustand verbleiben.
-
Ein Satz im Gepaart-Zustand zeigt
an, daß zwei
Cache-Zeilen auf
diesen Satz abgebildet werden; d. h. zwei Cache-Zeilen sind diesem Satz zugeordnet.
In dieser Situation werden die einer der Cache-Zeilen zugeordneten
Informationen (d. h. das Tag, der Zustand, die Daten usw.) in diesem
Satz und seinen entsprechenden Daten-Array-Elementen gespeichert.
Dieser Satz wird dann „Primärsatz" genannt. Die der
zweiten Cache-Zeile zugeordneten Informationen werden im entsprechenden
Satz und Daten-Array-Element des anderen Weges gespeichert, der „Partnersatz" genannt wird. Auf
den Partnersatz kann zugegriffen werden, indem das am höchsten bewertete
Bit des Satz-Indexes für
den Primärsatz
einfach umgekehrt wird. Falls der Primärsatz beispielsweise Satz 4
des Weges 0 ist, ist der Partnersatz Satz 4 des Weges 1. Ein Satz
im Gepaart-Zustand kann in den Direkt-Zustand übergehen oder im Gepaart-Zustand
verbleiben.
-
Falls ein Satz sich im Geborgt-Zustand
befindet, werden keine Cache-Zeilen auf diesen Satz abgebildet.
Dies zeigt einen von zwei Umständen
an; erstens kann dieser Satz vom entsprechenden Satz des anderen
Weges verwendet werden. Das heißt, daß der entsprechende
Satz des anderen Weges sich im Gepaart-Zustand befindet, und daß die zweite Cache-Zeile
auf diesen Satz abgebildet wird. Zweitens kann der entsprechende
Satz des anderen Weges sich auch im Geborgt-Zustand befinden, wodurch
angezeigt wird, daß keine
Cache-Zeile auf entweder diesen Satz oder den entsprechenden Satz des
anderen Weges (d. h. den Partnersatz dieses Satzes) abgebildet wird.
Ein Satz im Geborgt-Zustand kann entweder in den Direkt-Zustand übergehen
oder im Geborgt-Zustand verbleiben. Beim Systemstart werden alle
Sätze im
Satz-Array 201 in den Geborgt-Zustand initialisiert.
-
Es sei angemerkt, daß jedes
Paar entsprechender Sätze
(bei denen die Satz-Indizes eines Paars entsprechender Sätze sich
nur durch das am höchsten
bewertete Bit unterscheiden) eine Primärsatz-/Partnersatz-Kombination
darstellt. Jeder der Sätze
kann der Primärsatz
oder der Partnersatz sein. Der vom Satz-Index indizierte Satz legt
fest, welcher Satz der Primärsatz
und welcher der Partnersatz ist. Der vom Satz-Index indizierte Satz
ist der Primärsatz; der
entsprechende Satz im anderen Weg ist der Partnersatz. Es sei ferner
angemerkt, daß der
Primärsatz
auch davon abhängen
kann, welcher der beiden Sätze
zuletzt verwendet wurde, so wie es nachstehend näher erläutert wird.
-
Es sei ferner angemerkt, daß, immer
wenn sich ein bestimmter Satz im Gepaart-Zustand befindet, der Partnersatz
des Satzes sich im Geborgt-Zustand befindet. Die Verwendung der
Gepaart-/Geborgt-Zustände
führt zur
Erstellung eines Zwei-Wege-Caches. Das heißt, falls ein gegebener Satz
sich im Gepaart-Zustand befindet, enthält er die Informationen für eine Cache-Zeile
und sein Partnersatz die Informationen für die zweite Cache-Zeile, die
auf diesen Satz abgebildet wird.
-
Es ist daher klar, daß der Cache-Speicher sich
wie ein direkt-abgebildeter Cache benimmt, bis es einen Konflikt
zwischen zwei Cache-Zeilen gibt. Wenn es einen solchen Konflikt
gibt, benimmt der Cache-Speicher sich wie ein Zwei-Wege-satzassoziativer
Cache.
-
Durch das Verwenden der Zustandsfelder
im Satz-Array 201 kann für einige Anforderungen vorläufig festgelegt
werden, ob eine Anforderung einen Cache-Treffer oder einen -Fehlversuch
erzielt. Falls die aus dem Prozessor empfangene Anforderung einen
Satz im Geborgt-Zustand indiziert, ist die Anforderung mit Sicherheit
ein Fehlversuch. Das heißt, daß der Geborgt-Zustand
anzeigt, daß keine
Cache-Zeilen auf diesen Satz abgebildet werden. Es gibt daher keinen
Grund, das Tag der Anforderung mit dem Tag des Primärsatzes
oder des Partnersatzes des Satz-Arrays 201 zu vergleichen.
-
Falls die Anforderung aus dem Prozessor
in einen Satz indiziert, der sich im Direkt-Zustand befindet, kann
die Anforderung entweder zu einem Treffer oder zu einem Fehlversuch
im Cache führen.
Das Tag-Feld für
den indizierten Satz muß mit
dem Tag-Feld der Anforderung aus dem Prozessor verglichen werden,
um zu bestimmen, ob es einen Treffer gibt oder nicht. Der Partnersatz
braucht jedoch nicht überprüft zu werden,
weil der Direkt-Zustand anzeigt, daß nur eine einzige Zeile auf
diesen Satz abgebildet ist. Das Tag-Feld von nur einem einzigen
Satz muß mit
dem Tag-Feld der aus dem Prozessor empfangenen Adresse verglichen
werden. Somit ist es für Fachleute
klar, daß der
Cache sich wie ein direktabgebildeter Cache verhält, wenn jeder Satz des Satz-Arrays 201 sich
entweder im Direkt- oder Geborgt-Zustand befindet.
-
Falls die Anforderung aus dem Prozessor
einen Satz im Satz-Array 201 indiziert, der sich im Gepaart-Zustand
befindet, kann die Anforderung entweder zu einem Treffer oder zu
einem Fehlversuch im Cache führen.
Bei einer Ausführungsform
der vorliegenden Erfindung wird das Tag-Feld der Anforderung zuerst
mit dem Tag-Feld des Primärsatzes
verglichen. Falls die Tag-Felder übereinstimmen, wird die dem
Primärsatz
zugeordnete Cache-Zeile dem Prozessor zurückgegeben. Sollte das Tag-Feld
des Primärsatzes
jedoch nicht mit dem der Anforderung übereinstimmen, dann wird das
Tag-Feld des Partnersatzes mit dem der Anforderung verglichen. Falls das
Tag des Partnersatzes und das der Anforderung übereinstimmen, dann wird die
dem Partnersatz zugeordnete Cache-Zeile dem Prozessor zurückgegeben.
Andernfalls wird dem Prozessor eine Fehlversuchs-Anzeige zurückgegeben.
-
Wenn ein Satz sich im Gepaart-Zustand
befindet, verhalten dieser Satz und sein Partnersatz sich daher
fast wie ein Zwei-Wege-Cache. Die beiden Sätzen arbeiten jedoch nicht
genau wie ein Zwei-Wege-Cache, weil auf den zweiten Satz nur zugegriffen
wird, wenn der erste Satz ein Fehlversuch ist.
-
Bei einer Ausführungsform der vorliegenden Erfindung
ist der Primärsatz
der Jüngst-benutzte-Satz
(MRU-Satz). Der MRU-Satz ist der Satz, auf den der Prozessor zuletzt
zugegriffen hat. Der Primärsatz
könnte
daher jeder Satz des Primärsatz-/Partnersatz-Paares
sein, so wie es nachstehend ausführlicher
erläutert
wird.
-
Bei den Ausführungsformen gemäß 4 und 6 wird die MRU-Logik verwendet, wenn
auf den L2-Cache zugegriffen wird. Die MRU-Logik (oder der MRU-Indikator)
zeigt an, auf welchen Satz des Primärsatz-/Partnersatz-Paares der
Prozessor zuletzt zugegriffen hat. Bei den Ausführungsformen gemäß 4 und 6 wird der MRU-Satz als der Primärsatz und
der Am-längsten-unbenutzte-Satz
(LRU-Satz) als der Partnersatz bezeichnet. Wenn die Anforderung
aus dem Prozessor ein Fehlversuch ist, wird entweder die Cache-Zeile
des Primärsatzes
oder die des Partnersatzes in den Systemspeicher übertragen,
um einen freien Speicherplatz für
die aus dem Systemspeicher eingehende Cache-Zeile bereitzustellen.
Bei einer Ausführungsform
ist die Cache-Zeile, die am längsten
unbenutzt ist (d. h. der Partnersatz), die Zeile, die durch die
aus dem Systemspeicher eingehende Cache-Zeile ausgetauscht wird. Durch
die Verwendung der MRU-Logik ist die korrekte, in den Systemspeicher
zu übertragende
Cache-Zeile daher bekannt.
-
3A zeigt
eine Bit-Abbildung zum Bestimmen der Informationen über den
Jüngst-benutzten-Satz
bei einer Ausführungsform
der vorliegenden Erfindung. 3A zeigt
eine Bit-Abbildung 310 mit zehn Eingabeleitungen sowie
einer Ausgabeleitung. Die zehn Eingabeleitungen zur Bit-Abbildung 310 sind
die zehn Bits des Satz-Indexes in das Satz-Array 201. Mit
zehn Eingaben kann die Bit-Abbildung 310 daher auf 1.024
eindeutige Speicherplätze
zugreifen. Bei diesen zehn Eingaben gibt die Bit-Abbildung 310 ein
einziges Bit, das MRU-Bit 311, aus, das der MRU-Indikator
für den
gegebenen Satz ist, der in die Bit-Abbildung 310 eingegeben
wurde. Bei einer Ausführungsform
wird der Jüngst-benutzte-Satz
dadurch bestimmt, daß das
am höchsten
bewertete Bit des Satz-Indexes nicht umgekehrt wird, falls das MRU-Bit 311 eine „0" ist. Falls aber
das MRU-Bit 311 eine „1" ist, wird der Jüngst-benutzte-Satz
dadurch angezeigt, daß das
am höchsten
bewertete Bit des Satz-Indexes umgekehrt wird. Der Satzindex indiziert beispielsweise
einen Satz im Satz-Array 201. Falls das MRU-Bit 311 eine „0" ist, ist der Satz-Index
der Index des Primärsatzes.
Falls aber das MRU-Bit 311 eine „1" ist, ist dieser Satz-Index der Index
des Partnersatzes.
-
3B zeigt
die Logikschaltung zum Bestimmen der Informationen über den
Jüngst-benutzten-Satz
bei einer alternativen Ausführungsform
der vorliegenden Erfindung. 3B zeigt
eine Bit-Abbildung 320 mit neun Eingabeleitungen.
-
Diese neun Eingabeleitungen sind
die neun am niedrigsten bewerteten Bits des Satz-Indexes der aus
dem Prozessor empfangenen Adresse. Zusammen mit der Ausgabe aus
der Bit-Abbildung 320 wird das am höchsten bewertete Bit des Satz-Indexes
in ein herkömmliches
Exklusiv-ODER-Gatter 322 eingegeben. Anstatt des am höchsten bewerteten
Bits, das in das Gatter 322 eingegeben wurde, wird die Ausgabe
des Exklusiv-ODER-Gatters 322 danach als
das am höchsten
bewertete Bit des Satz-Indexes (d. h. Bit 14) verwendet. Das Ergebnis
der Schaltung in 3B zeigt
daher das gegenwärtig
am höchsten bewertete
Bit an und nicht, ob das am höchsten
bewertete Bit umgekehrt werden soll, so wie es in 3A beschrieben wurde.
-
Bei einer Ausführungsform der vorliegenden Erfindung
wird die MRU-Logik dadurch initialisiert, daß jeder Speicherplatz in der
Bit-Abbildung (entweder Bit-Abbildung 310 der 3A oder Bit-Abbildung 320 der 3B) beim Systemstart auf „0" gesetzt wird. Bei
dieser Ausführungsform
kann die MRU-Logik unter Verwendung der Logikschaltung gemäß 3A oder der Logikschaltung
gemäß 3B implementiert werden.
Die MRU-Logik wird dann aktualisiert, wenn ein Satz aus dem Direkt-Zustand
in den Gepaart-Zustand übergeht,
so wie es nachstehend ausführlicher
erläutert
wird.
-
4 ist
eine Blockdarstellung eines Cache-Speicher-Subsystems bei einer Ausführungsform
der vorliegenden Erfindung. Bei dieser Ausführungsform werden sowohl die
MRU-Logik als auch die Zustandsinformationen in dem integrierten Schaltkreis-Paket
(IC-Paket) gespeichert, in dem die CPU sich befindet, und der sekundäre Cache
(L2-Cache) befindet sich in einem separaten IC-Paket. 4 zeigt die Logikschaltung
sowohl für
die CPU 402 als auch für
den L2-Cache 403. Die Trennung zwischen diesen beiden IC-Paketen
ist durch die Grenzlinie 401 gezeigt.
-
Die CPU 402 weist eine Befehlsausführungseinheit 404,
einen Primär-Cache
(L1-Cache) und -Controller 406, eine MRU-Logik 407,
einen L2-Zustands-Controller 408 sowie ein Zustands-Array 409 auf.
Die CPU 402 enthält
außerdem
einen internen Bus 404 zum Kommunizieren von Informationen
zwischen den verschiedenen Bauelementen der CPU 402. Es
ist für
Fachleute klar, daß die
CPU 402 mehrere zusätzliche
Bauelemente enthält,
die benötigt
werden, um die CPU 402 zu betreiben, z. B. eine arithmetische
Logikeinheit. In 4 sind
diese zusätzlichen
Bauelemente jedoch nicht gezeigt, um die Zeichnung nicht zu überladen
und die vorliegende Erfindung nicht zu verdecken.
-
Die Befehlsausführungseinheit 405 führt Befehle
aus, die aus den im Computersystem arbeitenden Programmen wiedergewonnen
werden. Diese Ausführung
beinhaltet die Wiederge winnung von sowohl Befehlen als auch Daten
aus dem Speicher des Computersystems. Wenn die Befehlsausführungseinheit 405 zusätzliche
Befehle oder Daten benötigt, fordert
sie zuerst die Informationen aus dem L1-Cache und -Controller 406 an.
Falls die Anforderung aus der Befehlsausführungseinheit 405 zu
einem Treffer im L1-Cache 406 führt, werden die angeforderten
Informationen der Befehlsausführungseinheit 405 zurückgegeben.
Falls jedoch die Anforderung aus der Befehlsausführungseinheit 405 zu
einem Fehlversuch im L1-Cache 406 führt, wird die vom L1-Cache und
-Controller 406 empfangene Adresse in den L2-Zustands-Controller 408 eingegeben.
Bei einer Ausführungsform
der vorliegenden Erfindung ist der L1-Cache und -Controller 406 ein
herkömmlicher
Cache-Speicher. Bei einer alternativen Ausführungsform ist der L1-Cache
und -Controller 406 ein Cache-Speicher gemäß der vorliegenden
Erfindung.
-
Die MRU-Logik 407 ist die
Logikschaltung, die die MRU-Informationen
zur Verfügung
stellt, so wie es in 3A und 3B gezeigt ist. Die Anforderung aus
der Befehlsausführungseinheit 405 wird
gleichzeitig in die MRU-Logik 407 und den L1-Cache 406 eingegeben,
wodurch es ermöglicht
wird, parallel auf die MRU-Informationen für den gegebenen Satz im L2-Cache 403 und
im L1-Cache 406 zuzugreifen. Dadurch stehen die MRU-Informationen,
wie z. B. das in 3A erläuterte MRU-Bit 311 oder
das in 3B erläuterte Bit 14,
dem L2-Zustands-Controller 408 zu dem
gleichen Zeitpunkt zur Verfügung,
zu dem der L1-Cache und -Controller 406 die Adresse der
Anforderung an den L2-Zustands-Controller 408 ausgibt.
-
Der L2-Zustands-Controller 408 empfängt eine
Eingabe sowohl aus dem L1-Cache 408 als auch aus der MRU-Logik 407.
Der L2-Zustands-Controller 408 kombiniert die aus der MRU-Logik 407 empfangenen
Informationen mit den am niedrigsten bewerteten Bits des aus dem
L1-Cache 406 empfangenen angeforderten Satz-Indexes. Auf
diese Weise erzeugt der L2-Zustands-Controller 408 die
Adresse für
den Primärsatz
(d. h. den Jüngst-benutzten-Satz des
Partnersatz-/Primärsatz-Paares).
-
Der L2-Zustands-Controller 408 ist
ferner mit dem Zustands-Array 409 gekoppelt. Das Zustands-Array 409 enthält das Zustandsfeld
für jeden Satz
im L2-Cache. Das Zustandsfeld für
einen gegebenen Satz zeigt an, ob dieser Satz sich im Direkt-, Gepaart-
oder Geborgt-Zustand befindet. Falls die Anforderung zu einem Fehlversuch
im L1-Cache führt,
dann bestimmt der L2-Zustands-Controller 408 den Zustand
des Primärsatzes
für die
Anforderung. Auf Vorinformationen, wie z. B. ob sich der Satz im Geborgt-Zustand
befindet und daher garantiert ein Fehlversuch sein wird, kann in
dem IC-Paket zugegriffen werden, in dem sich die CPU 402 befindet, ohne
auf den L2-Cache 403 zuzugreifen. Unter bestimmten Umständen kann
eine Fehlversuchs-Anzeige daher an die Befehlsausführungseinheit 405 zurückgegeben
werden, ohne die Zeitverzögerung
dadurch zu verursachen, daß auf
das separate IC-Paket des L2-Caches 403 zugegriffen wird.
-
Falls die Anforderung zu einem Fehlversuch in
dem L1-Cache 406 führt und
falls der L2-Zustands-Controller 408 bestimmt, daß der Satz
sich entweder im Direkt- oder im Gepaart-Zustand befindet, wird
auf den L2-Cache 403 zugegriffen. Die aus der Ausführungseinheit 405 angeforderte
Adresse wird aus dem L2-Zustands-Controller 408 in den L2-Cache 403 eingegeben.
Diese Adresse wird als Adresse 420 gezeigt, die 32 Bits
enthält.
Die 16 am höchsten
bewerteten Bits der Adresse 420 enthalten das Tag-Feld
der Anforderung aus der Ausführungseinheit 405.
Dieses Tag-Feld wird verwendet, um zu bestimmen, ob die dem Primärsatz zugeordnete
Cache-Zeile mit der Anforderung übereinstimmt,
so wie es nachstehend ausführlicher
erläutert
wird. Bits [14:5] der Adresse 420 sind der Index in das
Satz-Array 422, so wie es oben unter Bezug auf 2 erläutert wurde. Die fünf am niedrigsten
bewerteten Bits der Adresse 420 sind das Offset in der
Cache-Zeile des Daten-Arrays 424. Das heißt, Bits
[4:0] der Adresse 420 zeigen an, welches Byte innerhalb
der angeforderten Cache-Zeile im Falle eines Treffers der Ausführungseinheit 405 zuerst
zurückgegeben werden
sollte.
-
Auf den auf der Adresse 420 basierenden Primärsatz wird
zugegriffen, und das Tag für
diesen Satz wird in die Tag-Vergleichslogik 426 eingegeben. Die
Tag-Vergleichslogik 426 vergleicht das Tag für den Primärsatz mit
dem Tag-Feld aus der Adresse 420. Das Ergebnis dieses Vergleichs
wird danach in die Steuerlogik 428 eingegeben. Es sei angemerkt, daß die Bits
[14:5] der Adresse 420 ferner in das Daten-Array 424 eingegeben
werden. Das Daten-Array 424 gibt daher die Cache-Zeile aus, die dem
von der Adresse 420 indizierten Satz zugeordnet ist. Falls
die Tag-Vergleichslogik 426 anzeigt, daß das Tag des Primärsatzes
und das der Adresse 420 übereinstimmen, gibt die Steuerlogik 428 an
die CPU 402 eine Treffer-Anzeige zusammen mit der Cache-Zeile
aus dem Daten-Array 424 zurück.
-
Sollte aber die Tag-Vergleichslogik 426 anzeigen,
daß die
Tags nicht übereinstimmen, überprüft die Steuerlogik 428 den
Partnersatz oder gibt einen Fehlversuch zurück, je nachdem, ob der Primärsatz sich
im Direkt- oder Gepaart-Zustand befindet. Der Zustand des Primärsatzes
wird als eine Eingabe aus dem L2-Zustands-Controller 408 empfangen.
Falls der Primärsatz
sich im Direkt-Zustand befindet, gibt die Steuerlogik 428 eine
Fehlversuchs-Anzeige zurück.
Falls aber der Primärsatz
sich im Gepaart-Zustand befindet, greift die Steuerlogik 428 unter
Verwendung des Satz-Indexes des Amlängsten-unbenutzten-Satzes (LRU-Satzes)
sowohl auf das Satz-Array 422 als auch auf das Daten-Array 424 zu. Wie
es oben erläutert
wurde, passiert dies, indem das am höchsten bewertete Bit des Satz-Indexes,
z. B. Bit [14] der Adresse 420, umgekehrt wird.
Die Tag-Vergleichslogik 426 vergleicht das Tag aus dem Satz-Array 422 des
LRU-Satzes wird mit dem aus der Adresse 420 empfangenen
Tag. Das Ergebnis dieses Vergleichs wird danach an die Steuerlogik 428 ausgegeben. Falls
die Tag-Vergleichslogik 426 einen Treffer anzeigt, dann
wird die Cache-Zeile aus dem dem LRU-Satz zugeordneten Daten-Array 424 zusammen
mit einer Treffer-Anzeige an die CPU 420 zurückgegeben.
Sollte aber die Tag-Vergleichslogik 426 einen Fehlversuch
anzeigen, gibt die Steuerlogik 428 an die CPU 402 eine
Fehlversuchs-Anzeige zurück.
-
Bei einer Ausführungsform der vorliegenden Erfindung
gewinnt die Steuerlogik 428 alle von dem L2-Cache 403 benötigten Datenzeilen
aus dem Systemspeicher wieder. Bei einer alternativen Ausführungsform
gewinnt der L1-Cache und -Controller 406 alle benötigten Datenzeilen
aus dem Systemspeicher wieder. Bei einer weiteren alternativen Ausführungsform
gewinnt die Ausführungseinheit 405 alle
benötigten
Datenzeilen aus dem Systemspeicher wieder.
-
5A und 5B zeigen die Schritte gemäß einer
Ausführungsform
der vorliegenden Erfindung zum Betreiben des Cache-Speicher-Subsystems
der 4. Eine Anforderung
nach Informationen wird zuerst von der Ausführungseinheit der CPU ausgegeben,
Schritt 505. Bei einer Ausführungsform der vorliegenden
Erfindung hat diese Anforderung die Form einer Adresse, wie z. B.
der in 4 gezeigten Adresse 420.
Diese Anforderung aus der Ausführungseinheit
wird verwendet, um auf den L1-Cache zuzugreifen, Schritt 506,
und um auf die MRU-Logik zuzugreifen, Schritt 508. Wie
es in 5A gezeigt ist, werden
die Schritte 506 und 508 parallelausgeführt.
-
Nach dem Empfang der Anforderung
aus der Ausführungseinheit
bestimmt der L1-Cache und -Controller, ob die Anforderung zu einem
Treffer im L1-Cache führt,
Schritt 510. Falls die Anforderung zu einem Treffer im
L1-Cache führt,
wird die angeforderte Cache-Zeile an die Ausführungseinheit aus dem L1-Cache
zurückgegeben,
Schritt 512, wodurch der Anforderung nachgekommen ist.
Sollte die Anforderung jedoch zu einem Fehlversuch im L1-Cache führen, bestimmt
der L2-Zustands-Controller, ob der von der Anforderung aus der Aus führungseinheit
indizierte Primärsatz
sich im Geborgt-Zustand befindet, Schritt 515. Der Primärsatz ist
der Satz, der von der aus der Ausführungseinheit empfangenen Satzadresse
indiziert wird, die durch die im Schritt 508 empfangenen
MRU-Informationen modifiziert ist. Der Partnersatz ist der Satz,
der unter Verwendung der am niedrigsten bewerteten Bits der Primärsatz-Adresse
sowie des am höchsten
bewerteten Bits der umgekehrten Primärsatz-Adresse indiziert wird.
Der Primärsatz
ist daher der Jüngst-benutzte-Satz
und der Partnersatz der Am-längsten-unbenutzte-Satz.
-
Sollte der Primärsatz sich im Geborgt-Zustand
befinden, weiß der
L2-Zustands-Controller sofort, daß die Anforderung aus der Ausführungseinheit zu
einem Fehlversuch im L2-Cache führt.
Die angeforderte Datenzeile wird daher aus dem Systemspeicher wiedergewonnen,
Schritt 520. Die aus dem Systemspeicher wiedergewonnene
Datenzeile wird danach an die Ausführungseinheit sowie an den
L2-Cache zurückgegeben,
Schritt 525. Die Cache-Zeile wird daraufhin im L2-Cache
in der Daten-Array-Zeile gespeichert, die dem Primärsatz entspricht,
und der Zustand des Primärsatzes
sowie der Zustand des Partnersatzes werden beide in den Direkt-Zustand aktualisiert,
Schritt 530. Bei einer Ausführungsform der vorliegenden
Erfindung wird die Cache-Zeile außerdem im L1-Cache gespeichert.
-
Es wird wieder auf Schritt 515 Bezug
genommen. Sollte der Primärsatz
sich nicht im Geborgt-Zustand befinden, gibt der L2-Zustands-Controller
dem L2-Cache sowohl die Primärsatz-Adresse
als auch eine Anzeige aus, aus der hervorgeht, ob der Primärsatz sich
im Direkt- oder Gepaart-Zustand befindet, Schritt 535.
Die Tag-Vergleichslogik im L2-Cache bestimmt danach, ob das Tag
des Primärsatzes
und das der angeforderten Adresse übereinstimmen, Schritt 540.
Falls die Tags übereinstimmen,
führt die
Anforderung zu einem Treffer im L2-Cache, und die mit dem Primärsatz übereinstimmende
Ca che-Zeile wird der Ausführungseinheit
aus dem Daten-Array im L2-Cache zurückgegeben, Schritt 542.
-
Sollten die Tags beim Schritt 540 jedoch nicht übereinstimmen,
bestimmt die Steuerlogik im L2-Cache auf der Basis der aus dem L2-Zustands-Controller
empfangenen Eingabe, ob der Primärsatz
sich im Direkt-Zustand befindet, Schritt 544 der 5B. Falls der Primärsatz sich
im Direkt-Zustand befindet, wird die angeforderte Datenzeile aus dem
Systemspeicher wiedergewonnen, Schritt 545. Diese Datenzeile
wird an die Ausführungseinheit
zurückgegeben
und im Partnersatz gespeichert, Schritt 550. Bei einer
Ausführungsform
der vorliegenden Erfindung wird die Datenzeile außerdem im
L1-Cache gespeichert. Die MRU-Logik wird danach aktualisiert, Schritt 555,
um anzuzeigen, daß der
Partnersatz der Jüngst-benutzte-Satz ist. Der Zustand
des Primärsatzes
wird dann in den Gepaart-Zustand und der des Partnersatzes in den
Geborgt-Zustand aktualisiert, Schritt 560.
-
Bei einer Ausführungsform der vorliegenden Erfindung
enthält
die MRU-Logik eine Bit-Abbildung mit zehn Eingabeleitungen, so wie
es in 3A gezeigt ist.
Bei dieser Ausführungsform
wird die MRU-Logik aktualisiert, um anzuzeigen, daß der Partnersatz
der MRU-Satz ist (Schritt 555), indem eine „1" in der Bit-Abbildung
an dem von den zehn Bits des Satz-Indexes des Primärsatzes
bestimmten Speicherplatz und eine „0" in der Bit-Abbildung an dem von den
zehn Bits des Satz-Indexes des Partnersatzes bestimmten Speicherplatz
gespeichert werden. Bei einer alternativen Ausführungsform der vorliegenden
Erfindung enthält
die MRU-Logik eine Bit-Abbildung mit neun Eingabeleitungen, so wie
es in 3B gezeigt ist.
Bei dieser Ausführungsform wird
die MRU-Logik aktualisiert, um anzuzeigen, daß der Partnersatz der MRU-Satz
ist, indem das Bit in der Bit-Abbildung an dem von den neun am niedrigsten
bewerteten Bits des Satz-Indexes des Primärsatzes bestimmten Speicherplatz
umgekehrt wird.
-
Es wird wieder auf Schritt 544 Bezug
genommen. Sollte der Primärsatz
sich weder im Direkt- noch im Geborgt-Zustand befinden, muß er sich
im Gepaart-Zustand befinden. Im Schritt 540 es schon festgestellt
worden, daß das
Tag des Primärsatzes nicht
mit dem Tag der Anforderung übereinstimmt. Die
Tag-Vergleichslogik bestimmt daher, ob das Tag des Partnersatzes
mit dem der Anforderung übereinstimmt,
Schritt 575. Sollte die Anforderung im Schritt 575 zu
einem Treffer im Partnersatz führen
(d. h. die Tags stimmen überein),
wird die dem Partnersatz zugeordnete Cache-Zeile der aus dem L2-Cache
an die Ausführungseinheit
zurückgegeben,
Schritt 580. Die MRU-Logik wird danach aktualisiert, um
anzuzeigen, daß der
vorherige Am-längsten-unbenutzte-Satz
jetzt der Jüngst-benutzte-Satz
ist, Schritt 585. Die MRU-Logik wird aktualisiert, so wie
es im oben stehenden Schritt 555 erläutert wurde.
-
Es wird wieder auf Schritt 575 Bezug
genommen. Sollte die Anforderung zu einem Fehlversuch im Partnersatz
führen
(d. h. die Tags stimmen nicht überein),
wird die angeforderte Datenzeile aus dem Systemspeicher wiedergewonnen,
Schritt 590. Diese Datenzeile wird danach sowohl an die
Ausführungseinheit
als auch an den L2-Cache zurückgegeben, Schritt 595.
Bei einer Ausführungsform
wird die Datenzeile außerdem
an den L1-Cache zurückgegeben und
darin gespeichert. Der L2-Cache speichert diese Datenzeile im Partnersatz.
Die MRU-Logik wird daraufhin aktualisiert, um anzuzeigen, daß der vorherige Am-längsten-unbenutzte-Satz
jetzt der Jüngst-benutzte-Satz ist, Schritt 585.
-
6 ist
eine Blockdarstellung eines Cache-Speicher-Subsystems bei einer alternativen Ausführungsform
der vorliegenden Erfindung. Die in 6 gezeigte
Ausführungsform ähnelt der
in 4 gezeigten, aber
die Zustandsinformationen für
jeden Satz im Satz-Array werden in dem IC-Paket gespeichert, in
dem der L2-Cache 603 sich befindet, und nicht in dem IC-Paket,
in dem die CPU 602 sich befindet. 6 zeigt die CPU 602 sowie den
L2-Cache 603, die von der Grenzlinie 601 getrennt
werden.
-
Die CPU 602 weist einen
internen Bus 604, eine Befehlsausführungseinheit 605 sowie
einen L1-Cache und -Controller 606 auf. Die Funktionsweise
dieser Bauelemente wurde oben unter Bezugnahme auf 4 beschrieben. Die CPU 602 enthält außerdem die
MRU-Logik 607, die der MRU-Logik 407 gemäß 4 ähnlich ist. Die MRU-Logik 607 bestimmt
aber, ob das am höchsten
bewertete Bit des aus dem L1-Cache 606 empfangenen Satz-Indexes umgekehrt
werden soll und kehrt auch gegebenenfalls das am höchsten bewertete
Bit um, um den Index des Primärsatzes
zu erhalten. Der Satz-Index-Abschnitt der Adresse 620,
der in den L2-Cache 603 aus der MRU-Logik 607 eingegeben
wird, enthält somit
den Satz-Index des Primärsatzes
(d. h. des Jüngst-benutzten-Satzes).
Wie es oben unter Bezugnahme auf die Adresse 420 der 4 erläutert wurde, enthält die Adresse 620 der 6 32 Bits. Bits [31:15]
sind das Tag-Feld der Adresse, Bits (14:5] der Satz-Index und Bits [4:0]
das Offset in die Cache-Zeile.
-
Jeder Satz des Satz-Arrays 622 weist
ein Tag-Feld sowie ein Zustandsfeld auf. Das Satz-Array 622 wird
von Bits [14:5] der Adresse 620 indiziert, wobei die Tag-
und Zustandsinformationen des indizierten Satzes in die Tag-Vergleichslogik 626 bzw.
in die Zustands-Vergleichslogik 627 eingegeben werden.
Die Tag-Vergleichslogik 626 vergleicht das Tag des indizierten
Satzes mit dem der Adresse 620 und gibt der Steuerlogik 628 das
Ergebnis aus. Entsprechend bestimmt die Zustands-Vergleichslogik 627 den
Zustand des indizierten Satzes und gibt der Steuerlogik 628 diese
Information aus. Die Zustands-Vergleichslogik 627 zeigt
an, ob der Satz sich im Direkt-, Gepaart- oder Geborgt-Zustand befindet.
-
Als Eingabe empfängt die Steuerlogik 628 das
Ergebnis des Tag-Vergleichs aus der Tag-Vergleichslogik 626 sowie
den Zustand des indizierten Satzes aus der Zustands-Vergleichs logik 627.
Aufgrund dieser Informationen bestimmt die Steuerlogik 628,
ob die Anforderung aus der Ausführungseinheit 605 zu
einem Treffer oder Fehlversuch im L2-Cache 603 führt.
-
Je nach dem Ergebnis aus der Tag-Vergleichslogik 626 und
dem aus der Zustands-Vergleichslogik 627 empfangenen Zustand
des indizierten Satzes gibt die Steuerlogik 628 der Ausführungseinheit 605 entweder
eine Treffer- oder Fehlversuchs-Anzeige zurück. Es sei angemerkt, daß die Steuerlogik 628 eventuell
sowohl auf den Primärsatz als
auch auf den Partnersatz zugreifen muß, falls der indizierte Satz
sich im Gepaart-Zustand befindet. Nachstehend wird es unter Bezugnahme
auf 7A und 7B ausführlicher erläutert, ob
die Steuerlogik 628 auf beide Sätze zugreift, und ob der Ausführungseinheit 605 eine
Treffer- oder Fehlversuchs-Anzeige zurückgeben wird.
-
Bei einer Ausführungsform der vorliegenden Erfindung
gewinnt die Steuerlogik 628 alle benötigten Datenzeilen aus dem
Systemspeicher wieder. Bei einer alternativen Ausführungsform
gewinnt der L1-Cache und -Controller 606 alle benötigten Datenzeilen aus
dem Systemspeicher wieder. Bei einer weiteren alternativen Ausführungsform
gewinnt die Befehlsausführungseinheit 605 alle
benötigten
Datenzeilen aus dem Systemspeicher wieder.
-
7A und 7B zeigen die Schritte gemäß einer
Ausführungsform
der vorliegenden Erfindung zum Betreiben des Cache-Speicher-Subsystems
gemäß 6. Zuerst wird eine Anforderung
aus der Ausführungseinheit
auf dem Prozessor ausgegeben, Schritt 705. Diese Anforderung
nach Informationen ist eine Anforderung nach einer Daten- oder Cache-Zeile
und kann Befehls- oder Dateninformationen zur Verwendung durch den
Prozessor enthalten. Bei einer Ausführungsform der vorliegenden
Erfindung ist diese Anforderung eine Adresse.
-
Die Anforderung aus der Ausführungseinheit wird
sowohl in den L1-Cache, Schritt 706, als auch in die MRU-Logik
eingegeben, Schritt 708. Die MRU-Logik, auf die im Schritt 708 zugegriffen
wird, zeigt den Primärsatz
(d. h. den Jüngst-benutzten-Satz)
für den
indizierten Satz im L2-Cache an, der gegebenenfalls von der vorliegenden
Erfindung verwendet wird, so wie es nachstehend erläutert wird.
Nach dem Empfang der Anforderung aus der Ausführungseinheit bestimmt der
L1-Cache, ob die Anforderung
zu einem Treffer im L1-Cache führt, Schritt 710.
Falls die Anforderung zu einem Treffer im L1-Cache führt, wird
die angeforderte Cache-Zeile der Ausführungseinheit aus dem L1-Cache
zurückgegeben,
Schritt 712.
-
Falls die Anforderung zu einem Fehlversuch im
L1-Cache führt,
bestimmt die Tag-Vergleichslogik, ob das Tag des Primärsatzes
mit dem Tag der Anforderung übereinstimmt,
Schritt 715. Dies erfolgt, wie es oben erläutert wurde,
durch einen Vergleich zwischen dem Tag-Feld der Anforderung aus
der Ausführungseinheit
und dem Tag-Feld des Primärsatzes im
Satz-Array des L2-Caches.
Falls die Tags übereinstimmen,
wird die angeforderte Cache-Zeile an die Ausführungseinheit aus dem L2-Cache
zurückgegeben,
Schritt 720.
-
Sollten die Tags jedoch nicht übereinstimmen,
bestimmt die Steuerlogik im L2-Cache, ob der Primärsatz sich
im Geborgt-Zustand befindet, Schritt 725. Falls der Primärsatz sich
im Geborgt-Zustand befindet, führt
die Anforderzung zu einem Fehlversuch im L2-Cache. Die angeforderte
Datenzeile wird daher aus dem Systemspeicher des Computersystems
wiedergewonnen, Schritt 730. Diese Datenzeile wird sowohl
an die Ausführungseinheit
als auch an den L2-Cache zurückgegeben,
Schritt 735. Die aus dem Systemspeicher wiedergewonnene
Datenzeile wird im Daten-Array des L2-Caches gespeichert, das dem
von der ursprünglichen
Anforderung aus der Ausführungseinheit
indizierten Satz (d. h. dem Primärsatz)
entspricht. Der Zustand des Primärsatzes sowie
der Zustand des Partnersatzes werden danach beide in den Direkt-Zustand
aktualisiert, Schritt 740. Bei einer Ausführungsform
der vor liegenden Erfindung wird die Datenzeile ebenfalls im L1-Cache
und -Controller gespeichert.
-
Es wird wieder auf Schritt 725 Bezug
genommen. Sollte der Primärsatz
sich nicht im Geborgt-Zustand befinden, wird entschieden, ob der
Primärsatz sich
im Direkt-Zustand befindet, Schritt 745 der 7B. Falls der Primärsatz sich
im Direkt-Zustand befindet, wird die angeforderte Datenzeile aus
dem Systemspeicher wiedergewonnen, Schritt 750. Diese Datenzeile
wird danach an die Ausführungseinheit zurückgegeben
und im Partnersatz im L2-Cache gespeichert, Schritt 755.
Bei einer Ausführungsform wird
die Datenzeile außerdem
im L1-Cache gespeichert. Die MRU-Logik für den Primärsatz wird daraufhin aktualisiert,
um anzuzeigen, daß der
Partnersatz der Jüngst-benutzte-Satz
ist, Schritt 760. Die MRU-Logik wird aktualisiert, so wie
es oben unter Bezugnahme auf 5A und 5B erläutert wurde. Der Zustand des
Primärsatzes
wird danach in den Gepaart-Zustand und der Zustand des Partnersatzes
in den Geborgt-Zustand aktualisiert, Schritt 765.
-
Es wird wieder auf Schritt 745 Bezug
genommen. Sollte der Partnersatz sich weder im Direkt- noch im Geborgt-Zustand
befinden, muß er
sich im Gepaart-Zustand befinden. Da es im Schritt 715 schon
entschieden worden ist, ob die Anforderung zu einem Treffer im Primärsatz führt, wird
jetzt entschieden, ob die Anforderung zu einem Treffer im Partnersatz
führt,
Schritt 770 (d. h. ob das Tag des Partnersatzes und das
der Anforderung übereinstimmen). Falls
die Tags übereinstimmen,
wird die angeforderte Cache-Zeile an die Ausführungseinheit aus dem L2-Cache
zurückgegeben,
Schritt 775. Die MRU-Logik wird danach aktualisiert, um
anzuzeigen, daß der Partnersatz
der Jüngst-benutzte-Satz
ist, Schritt 780. Die MRU-Logik wird aktualisiert, so wie
es oben unter Bezugnahme auf 5A und 5B erläutert wurde.
-
Sollten die Tags jedoch nicht übereinstimmen,
wird die angeforderte Datenzeile aus dem Systemspeicher wiedergewonnen,
Schritt 785. Diese Datenzeile wird an die Ausführungs einheit
zurückgegeben
und im Partnersatz im L2-Cache gespeichert, Schritt 790.
Bei einer Ausführungsform
wird die Datenzeile außerdem
im L1-Cache gespeichert. Die MRU-Logik wird danach aktualisiert,
um anzuzeigen, daß der
Partnersatz der Jüngst-benutzte-Satz
ist, Schritt 780, so wie es oben erläutert wurde.
-
8 ist
eine Blockdarstellung eines Cache-Speicher-Subsystems bei einer weiteren Ausführungsform
der vorliegenden Erfindung. Das Cache-Speicher-Subsystem gemäß 8 ist dem System gemäß 6 ähnlich und enthält eine
CPU 802 sowie einen L2-Cache 803, die durch die
Trennlinie 801 getrennt sind. Die CPU 802 weist
einen internen Bus 804, eine Befehlsausführungseinheit 805 sowie einen
L1-Cache und -Controller 806 auf. Der Betrieb dieser Bauteile
ist oben unter Bezugnahme auf 4 und 6 beschrieben. Es sei jedoch
angemerkt, daß die CPU
keine der MRU-Logik 607 gemäß 6 analoge MRU-Logik enthält. Die
Ausführungsform
der 8 stellt sicher,
daß der
Jüngst-benutzte-Satz
der Primärsatz
ist, indem die Cache-Zeilen ausgetauscht werden, wenn dies erforderlich
ist, so wie es nachstehend ausführlicher
erläutert
wird.
-
Der L2-Cache 803 ähnelt dem
L2-Cache 603 gemäß 6. Entsprechend dem L2-Cache 603 gemäß 6 enthält der L2-Cache 803 ein Satz-Array 822,
ein Daten-Array 824, eine Tag-Vergleichslogik 826, eine Zustands-Vergleichslogik 827 und
Steuerlogik 828. Die Tag-Vergleichslogik 826 vergleicht
das Tag-Feld der Anforderung 820 mit dem Tag-Feld des indizierten
Satzes aus dem Satz-Array 822 und gibt das Ergebnis an
die Steuerlogik 828 aus. Entsprechend bestimmt die Zustands-Vergleichslogik 827 den
Zustand des indizierten Satzes im Satz-Array 822 und gibt
das Ergebnis an die Steuerlogik 828 aus. Bei der Ausführungsform
gemäß 8 ist der Primärsatz der
von der Anforderung aus der Ausführungseinheit 805 indizierte
Satz ohne die auf der MRU-Logik basierte Änderung.
-
Der L2-Cache 803 weist außerdem eine
Austauschlogik 830 auf, die mit der Steuerlogik 828,
dem Satz-Array 822 und dem Daten-Array 824 gekoppelt ist.
Bei der Ausführungsform
gemäß 8 verbleibt der Jüngst-benutzte-Satz
immer in dem Satz, der sich im Gepaart-Zustand befindet. Daher wird
kein zusätzlicher
MRU-Indikator, wie z. B. eine Bit-Abbildung, benötigt, um zu bestimmen, welcher
Satz der Jüngst-benutzte-Satz
ist.
-
Die Austauschlogik 830 enthält eine
Austauschsteuerlogik 831, einen Satz-Array-Puffer 832 sowie
einen Daten-Array-Puffer 833. Der Satz-Array-Puffer 832 ist
ein herkömmlicher
Puffer, der ein temporärer
Speicherplatz für
das Tag-Feld sowie
für weitere
in einem Satz des Satz-Arrays 822 gespeicherte Daten ist.
Der Daten-Array-Puffer 833 ist ein herkömmlicher Puffer, der ein temporärer Speicherplatz
für die
in einem Element des Daten-Arrays 824 gespeicherte Cache-Zeile
ist. Die Austauschsteuerlogik 831 steuert das Übertragen
von Informationen aus dem Satz-Array 822 und dem Daten-Array 824 aus
einem in einen anderen Satz. Die Austauschlogik 830 wechselt
zwei Sätze,
wenn die Steuerlogik 828 dies entsprechend anzeigt. Dies
kann in zwei Fällen vorkommen.
Der erste ist, wenn der indizierte Satz sich im Direkt-Zustand befindet,
aber die Anforderung zu einem Fehlversuch im Cache führt. In
dieser Situation wird die angeforderte Zeile aus dem Systemspeicher
wiedergewonnen und in den Partnersatz des L2-Caches 803 gespeichert.
Der Partnersatz und der indizierte Satz werden dann ausgetauscht,
so wie es nachstehend unter Bezug auf 9A und 9B ausführlicher erläutert wird.
Wenn der indizierte Satz sich im Gepaart-Zustand befindet und die
Anforderung zu einem Fehlversuch im Primärsatz führt, wird in ähnlicher
Weise eine Cache-Zeile aus dem Systemspeicher in den Partnersatz
wiedergewonnen, und ein Austausch muß stattfinden, oder die Anforderung
führt zu
einem Treffer im Partnersatz, wobei der Partnersatz in diesem Fall
der Jüngst-benutzte-Satz
ist und ein Austausch stattfindet. Unter Bezugnahme auf 9A und 9B wird dies nachstehend ausführlicher
erläutert.
-
9A und 9B zeigen die Schritte gemäß einer
Ausführungsform
der vorliegenden Erfindung zum Betreiben des Cache-Speicher-Subsystems
gemäß 8. Zuerst wird eine Anforderung aus der Ausführungseinheit
auf dem Prozessor ausgegeben, Schritt 905. Bei einer Ausführungsform
der vorliegenden Erfindung hat diese Anforderung die Form einer Adresse.
Aufgrund dieser Anforderung wird auf den L1-Cache zugegriffen, Schritt 908.
Falls die Anforderung zu einem Treffer im L1-Cache führt, Schritt 910, wird
die angeforderte Cache-Zeile an die Ausführungseinheit aus dem L1-Cache
zurückgegeben, Schritt 912.
-
Sollte die Anforderung jedoch zu
einem Fehlversuch im L1-Cache führen,
wird die Anforderung an den L2-Cache gesendet, und die Tag-Vergleichslogik bestimmt,
ob das Tag der Anforderung und das des Primärsatzes übereinstimmen, Schritt 915.
Sollten die Tags übereinstimmen,
führt die
Anforderung zu einem Treffer im L2-Cache, und die angeforderte Cache-Zeile wird an die
Ausführungseinheit
aus dem L2-Cache zurückgegeben,
Schritt 917. Falls die Tags aber nicht übereinstimmen, überprüft der L2-Cache den
Zustand des Primärsatzes.
-
Die Zustands-Vergleichslogik bestimmt,
ob der Primärsatz
sich im Geborgt-Zustand befindet, Schritt 920. Sollte der
Primärsatz
sich im Geborgt-Zustand befinden, wird die Daten-Zeile aus dem Systemspeicher
wiedergewonnen, Schritt 925. Die Datenzeile wird daraufhin
an die Ausführungseinheit und
den L2-Cache zurückgegeben,
Schritt 930. Bei einer Ausführungsform wird die Datenzeile
außerdem
im L1-Cache gespeichert. Der L2-Cache speichert diese Datenzeile
im Primärsatz
und aktualisiert sowohl den Zustand des Primärsatzes als auch den Zustand
des Partnersatzes in den Direkt-Zustand, Schritt 935.
-
Es wird wieder auf Schritt 920 Bezug
genommen. Sollte der Primärsatz
sich nicht im Geborgt-Zustand befinden, bestimmt die Zustands-Vergleichslogik,
ob der Satz sich im Direkt-Zustand befindet, Schritt 940 der 9B. Falls der Primärsatz sich
im Direkt-Zustand befindet, wird die Datenzeile aus dem Systemspeicher
wiedergewonnen, Schritt 945. Die Datenzeile wird danach
an die Ausführungseinheit zurückgegeben
und im Partnersatz im L2-Cache gespeichert, Schritt 950.
Bei einer Ausführungsform wird
die Datenzeile außerdem
im L1-Cache gespeichert. Die Austauschlogik im L2-Cache tauscht
daraufhin die Zeile des Primärsatzes
mit der des Partnersatzes aus, Schritt 955. Der Zustand
des Primärsatzes
wird danach in den Gepaart-Zustand und der Zustand des Partnersatzes
in den Geborgt-Zustand aktualisiert, Schritt 960. Es ist
daher klar, daß durch das
Wiedergewinnen der Datenzeile aus dem Systemspeicher in den Partnersatz
und durch das darauf folgende Austauschen des Partnersatzes und
des Primärsatzes
der Primärsatz
die Jüngst-benutzte-Cache-Zeile
enthält.
-
Die Austauschsteuerlogik tauscht
die Zeile des Primärsatzes
und die des Partnersatzes, indem sie die beiden Datenzeilen im Daten-Array
sowie die zugehörigen
Tags (und alle zusätzlichen
Paritätsbits) des
Satz-Arrays wechselt. Es sei angemerkt, daß die im Zustands-Array gespeicherten
Zustandsinformationen nicht gewechselt werden. Dieses Austauschen kann
auf viele verschiedene herkömmliche
Weisen ausgeführt
werden. Bei einer Ausführungsform
der vorliegenden Erfindung werden die auszutauschenden Informationen
im Daten- bzw. Satz-Array
des Primärsatzes
aus den beiden Arrays in Puffer in der Austauschsteuerlogik übertragen.
Die auszutauschenden Informationen im Daten- bzw. Satz-Array des
Partnersatzes werden daraufhin in den Primärsatz der Arrays übertragen.
Die in den Austauschpuffern gespeicherten Informationen werden danach
in den Partnersatz der Arrays über tragen,
wodurch die im Primär-
und Partnersatz enthaltenen Daten und Informationen gewechselt werden.
-
Es wird wieder auf Schritt 940 Bezug
genommen. Sollte der Primärsatz
sich nicht im Direkt-Zustand befinden, bestimmt die Tag-Vergleichslogik,
ob das Tag der Anforderung und das des Partnersatzes übereinstimmen,
Schritt 965. Falls die Tags übereinstimmen, wird die angeforderte
Cache-Zeile an die Ausführungseinheit
aus dem Partnersatz zurückgegeben,
Schritt 970. Die Austauschsteuerlogik im L2-Cache tauscht
daraufhin die Zeile des Primärsatzes
und die des Partnersatzes, Schritt 975. Der Primärsatz verbleibt
somit im Gepaart-Zustand
und der Partnersatz im Geborgt-Zustand, wobei der Primärsatz die
Jüngst-benutzte-Cache-Zeile
enthält.
-
Es wird wieder auf Schritt 965 Bezug
genommen. Sollten, die Tags nicht übereinstimmen, wird die angeforderte
Datenzeile aus dem Systemspeicher wiedergewonnen, Schritt 980.
Die angeforderte Datenzeile wird aus dem Systemspeicher wiedergewonnen,
an die Ausführungseinheit
zurückgegeben
und im Partnersatz im L2-Cache gespeichert, Schritt 985. Bei
einer Ausführungsform
wird die Datenzeile außerdem
im L1-Cache gespeichert. Die Austauschsteuerlogik im L2-Cache tauscht
dann die Zeile des Primärsatzes
und die des Partnersatzes, Schritt 975.
-
Bei der in 9A und 9B gezeigten
Ausführungsform
ist es daher klar, daß die
angeforderte Datenzeile aus dem Systemspeicher wiedergewonnen und
im Partnersatz des indizierten Satzes gespeichert wird, und daß die Cache-Zeile
des Primärsatzes
und die des Partnersatzes ausgetauscht werden, wenn die Anforderung
zu einem Fehlversuch sowohl im Primärsatz als auch im Partnersatz
führt.
Der Primärsatz
verbleibt somit im Gepaart-Zustand und der Partnersatz im Geborgt-Zustand,
und der Primärsatz enthält die Jüngst-benutzte-Cache-Zeile.
-
Bei einer alternativen Ausführungsform
der vorliegenden Erfindung speichert der L2-Cache die Datenzeilen
aus dem Sy stemspeicher direkt in den Primärsatz und nicht in den Partnersatz,
so wie es oben erläutert
wurde. Durch das direkte Speichern der Datenzeilen in den Primärsatz wird
vermieden, daß der
L2-Cache den Primärsatz
und den Partnersatz austauschen muß.
-
Es sei angemerkt, daß obwohl
die obigen Beschreibung nicht das Aktualisieren des L1-Caches erläutert, wenn
die Anforderung zu Fehlversuchen im L1-Cache, sondern zu Treffern
im L2-Cache führt, der
Cache-Zeilen-Treffer im L2-Cache nicht nur an die Befehlsausführungseinheit
der CPU zurückgegeben,
sondern auch im L1-Cache gespeichert werden kann. Ob der L1-Cache
in dieser Situation aktualisiert wird, hängt von der verwendeten Cache-Vorgehensweise
ab, was für
Fachleute klar ist.
-
Es sei ferner angemerkt, daß die obige
Beschreibung ein Computersystem beschreibt, das sowohl einen L1-Cache
als auch einen L2-Cache aufweist. Es ist jedoch klar, daß Systeme
mit nur einem Cache auch den Cache-Speicher der vorliegenden Erfindung
verwenden kann.
-
Entsprechend beschreibt die obige
Beschreibung den Cache-Speicher der vorliegenden Erfindung, so wie
er in einem L2-Cache implementiert ist. Es ist jedoch klar, daß die Lehre
der vorliegenden Erfindung auf einen Cache jeden Levels und nicht
ausschließlich
auf L2-Caches anwendbar ist. Ein System, das nur einen L1-Cache
aufweist, würde
beispielsweise wie oben erläutert
implementiert werden, obwohl die Anforderung aus der Befehlsausführungseinheit
derart geprüft
wird, daß sie
nur Treffer in einem und nicht in zwei Caches erzielt. Es ist für Fachleute
klar, daß die
MRU-Informationen nicht zu dem Zeitpunkt aus dem MRU-Indikator verfügbar sind,
zu dem die Adresse in den Cache eingegeben wird, wenn die vorliegende
Erfindung in einem L1-Cache verwendet wird.
-
Darüber hinaus beschreibt die obige
Beschreibung einen Cache-Speicher, der eine Cache-Zeile in den Systemspeicher überträgt, wenn eine
Datenzeile aus dem Systemspeicher hereingebracht werden muß. Weitere
Cache-Vorgehensweisen können
jedoch im Rahmen des Erfindungsgedankens und Schutzbereichs der
vorliegenden Erfindung angewandt werden. Bei einer Ausführungsform der
vorliegenden Erfindung kann die Cache-Zeile, wenn sie im Cache-Speicher
aktualisiert wird, außerdem
im Systemspeicher aktualisiert werden. Die Cache-Zeile wird daher nicht in den Systemspeicher übertragen,
wenn eine Datenzeile in diesen Cache-Speicherplatz übertragen
wird, weil der Systemspeicher schon eine Kopie der Cache-Zeile enthält.
-
Ein Cache-Speicher-Subsystem der
vorliegenden Erfindung stellt somit sowohl die Vorteile des direkt-abgebildeten
Caches als auch die des Zwei-Wege-satzassoziativen-Caches be reit.
Der niedrigere Energieverbrauch und die geringere Logikkomplexität des direkt-abgebildeten
Caches werden mit den besseren Treffer-Verhältnissen des Zwei-Wege-satzassoziativen-Caches
kombiniert. Bei einer Ausführungsform
der vorliegenden Erfindung kann ferner bestimmt werden, daß bestimmte
Anforderungen zu einem Fehlversuch im Cache führen, ohne auf das den Cache
enthaltende IC-Paket zuzugreifen, wodurch die Fehlversuchs-Anzeige-Antwort schneller
angezeigt wird.
-
Darüber hinaus ist es für Fachleute
klar, daß obwohl
die obige Beschreibung einen Cache erläutert, der sich wie ein Zwei-Wege-Cache
verhalten kann, weitere Mehrwege-Caches im Rahmen des Erfindungsgedankens
und Schutzbereichs der vorliegenden Erfindung liegen. Die Lehre
der vorliegenden Erfindung kann beispielsweise auf einen herkömmlichen
Zwei-Wege-Cache
angewandt werden, wodurch ein Vier-Wege-Cache geschaffen wird, der
die Vorteile eines Zwei-Wege-Caches und die eines Vier-Wege-Caches
kombiniert.
-
Viele Abänderungen und Abwandlungen
der vorliegenden Erfindung werden für Fachleute klar sein, wenn
sie die obige Beschreibung gelesen haben. Es ist jedoch klar, daß die einzelnen
Ausführungsformen,
die zur Veranschaulichung gezeigt und beschrieben sind, in keinster
Weise als Beschränkung
betrachtet werden sollten. Die Hinweise auf Details der einzelnen
Ausführungsformen
sollen daher den Schutzbereich der Ansprüche nicht einschränken, die
an sich nur die für
die Erfindung grundlegenden Merkmale aufführen.
-
Damit ist ein Zwei-Wege-satzassoziativer-Cache-Speicher
beschrieben worden.