DE69530776T2 - Zweiwege set-assoziativer cache-speicher - Google Patents

Zweiwege set-assoziativer cache-speicher Download PDF

Info

Publication number
DE69530776T2
DE69530776T2 DE69530776T DE69530776T DE69530776T2 DE 69530776 T2 DE69530776 T2 DE 69530776T2 DE 69530776 T DE69530776 T DE 69530776T DE 69530776 T DE69530776 T DE 69530776T DE 69530776 T2 DE69530776 T2 DE 69530776T2
Authority
DE
Germany
Prior art keywords
cache
state
line
record
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69530776T
Other languages
English (en)
Other versions
DE69530776D1 (de
Inventor
Wen-Hann Wang
K. Konrad LAI
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE69530776D1 publication Critical patent/DE69530776D1/de
Application granted granted Critical
Publication of DE69530776T2 publication Critical patent/DE69530776T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • 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.

Claims (6)

  1. Ein Cacheindex, der anzeigt, ob eine von einer Eingangsadresse adressierte Datenzeile in einem Datenarray (221) eines Cache-Speichersystems enthalten ist, wobei das Datenarray (221) eine Vielzahl von Elementen aufweist, der Cacheindex (201) enthaltend: eine Vielzahl von Datensätzen, wobei jeder Datensatz einem oder mehreren Elementen des Datenarray (221) entspricht; einen ersten Satz aus der Vielzahl von Datensätzen, der ein erstes Etikett und einen ersten Zustand hat; wobei das erste Etikett die Identität einer ersten Cachezeile angibt, die in einem ersten Element aus der Vielzahl von Elementen des Datenarrays (221) gespeichert ist; dadurch gekennzeichnet, daß der erste Zustand einen ersten Zustandsindikator zum Anzeigen einer Anzahl von dem ersten Satz zugeordneten Cachezeilen aufweist, wobei der erste Zustand in einem direkten Zustand anzeigt, daß eine einzelne Zeile in den ersten Satz abgebildet wird, wobei der erste Zustand in einem gepaarten Zustand anzeigt, daß sowohl eine erste Zeile als auch eine zweite Zeile in den ersten Satz abgebildet werden, und wobei der erste Zustand in einem geborgten Zustand anzeigt, daß keine Zeilen in den ersten Satz abgebildet werden.
  2. Ein Cacheindex nach Anspruch 1, ferner enthaltend einen zweiten Satz, wobei der zweite Satz einer aus der Vielzahl von Datensätzen ist und ein zweites Etikett und einen zweiten Zustand aufweist.
  3. Ein Cacheindex nach Anspruch 2, wobei das erste Etikett auf die erste Zeile und das zweite Etikett auf die zweite Zeile verweist, wenn sowohl eine erste Zeile als auch eine zweite Zeile in den ersten Satz abgebildet werden.
  4. Ein Cacheindex nach Anspruch 1, wobei der Cacheindex (201) ein Etikettenfeld und ein Zustandsfeld enthält.
  5. Ein Cachespeicher-Untersystem, das einen Cacheindex (201) nach einem der Ansprüche 1 bis 4 enthält.
  6. Ein Computer, enthaltend ein Cachespeicher-Untersystem nach Anspruch 5.
DE69530776T 1994-08-11 1995-08-04 Zweiwege set-assoziativer cache-speicher Expired - Lifetime DE69530776T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US288923 1994-08-11
US08/288,923 US5548742A (en) 1994-08-11 1994-08-11 Method and apparatus for combining a direct-mapped cache and a multiple-way cache in a cache memory
PCT/US1995/009896 WO1996006390A2 (en) 1994-08-11 1995-08-04 A two-way set-associative cache memory

Publications (2)

Publication Number Publication Date
DE69530776D1 DE69530776D1 (de) 2003-06-18
DE69530776T2 true DE69530776T2 (de) 2004-03-25

Family

ID=23109244

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69530776T Expired - Lifetime DE69530776T2 (de) 1994-08-11 1995-08-04 Zweiwege set-assoziativer cache-speicher

Country Status (10)

Country Link
US (1) US5548742A (de)
EP (1) EP0775345B1 (de)
JP (1) JPH10504124A (de)
KR (1) KR100382821B1 (de)
AU (2) AU701467B2 (de)
DE (1) DE69530776T2 (de)
ES (1) ES2201114T3 (de)
GB (1) GB2292237A (de)
TW (1) TW275689B (de)
WO (1) WO1996006390A2 (de)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271672A (ja) * 1994-03-30 1995-10-20 Toshiba Corp マルチウェイセットアソシアティブキャッシュシステム
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US7190284B1 (en) 1994-11-16 2007-03-13 Dye Thomas A Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
US5893146A (en) * 1995-08-31 1999-04-06 Advanced Micro Design, Inc. Cache structure having a reduced tag comparison to enable data transfer from said cache
US5794243A (en) * 1995-12-11 1998-08-11 International Business Machines Corporation Method and apparatus for executing a binary search in a data cache
US5710905A (en) * 1995-12-21 1998-01-20 Cypress Semiconductor Corp. Cache controller for a non-symetric cache system
US5943691A (en) * 1995-12-27 1999-08-24 Sun Microsystems, Inc. Determination of array padding using collision vectors
US5845308A (en) * 1995-12-27 1998-12-01 Vlsi Technology, Inc. Wrapped-line cache for microprocessor system
US5918245A (en) * 1996-03-13 1999-06-29 Sun Microsystems, Inc. Microprocessor having a cache memory system using multi-level cache set prediction
ES2128938B1 (es) * 1996-07-01 2000-02-01 Univ Catalunya Politecnica Procedimiento para determinar en que via de una memoria rapida intermedia en la jerarquia de memoria de un computador (cache) asociativa por conjuntos de dos vias se encuentra un dato concreto.
US5974471A (en) * 1996-07-19 1999-10-26 Advanced Micro Devices, Inc. Computer system having distributed compression and decompression logic for compressed data movement
US5916314A (en) * 1996-09-11 1999-06-29 Sequent Computer Systems, Inc. Method and apparatus for cache tag mirroring
US6078995A (en) * 1996-12-26 2000-06-20 Micro Magic, Inc. Methods and apparatus for true least recently used (LRU) bit encoding for multi-way associative caches
US6879266B1 (en) 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US5956746A (en) * 1997-08-13 1999-09-21 Intel Corporation Computer system having tag information in a processor and cache memory
US6247094B1 (en) 1997-12-22 2001-06-12 Intel Corporation Cache memory architecture with on-chip tag array and off-chip data array
JP3732637B2 (ja) 1997-12-26 2006-01-05 株式会社ルネサステクノロジ 記憶装置、記憶装置のアクセス方法及び半導体装置
US6321375B1 (en) * 1998-05-14 2001-11-20 International Business Machines Corporation Method and apparatus for determining most recently used method
US7219217B1 (en) 1998-10-16 2007-05-15 Intel Corporation Apparatus and method for branch prediction utilizing a predictor combination in parallel with a global predictor
US6425056B2 (en) * 1998-10-26 2002-07-23 Micron Technology, Inc. Method for controlling a direct mapped or two way set associative cache memory in a computer system
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US6819271B2 (en) 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6822589B1 (en) 1999-01-29 2004-11-23 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US6208273B1 (en) 1999-01-29 2001-03-27 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data compression
US7129860B2 (en) * 1999-01-29 2006-10-31 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US7538694B2 (en) * 1999-01-29 2009-05-26 Mossman Holdings Llc Network device with improved storage density and access speed using compression techniques
US6885319B2 (en) * 1999-01-29 2005-04-26 Quickshift, Inc. System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US6581139B1 (en) * 1999-06-24 2003-06-17 International Business Machines Corporation Set-associative cache memory having asymmetric latency among sets
KR100373849B1 (ko) * 2000-03-13 2003-02-26 삼성전자주식회사 어소시어티브 캐시 메모리
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6857049B1 (en) * 2000-08-30 2005-02-15 Unisys Corporation Method for managing flushes with the cache
US8347034B1 (en) 2005-01-13 2013-01-01 Marvell International Ltd. Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
US7685372B1 (en) 2005-01-13 2010-03-23 Marvell International Ltd. Transparent level 2 cache controller
US7475192B2 (en) * 2005-07-12 2009-01-06 International Business Machines Corporation Cache organization for power optimized memory access
EP2011018B1 (de) 2006-04-12 2016-07-13 Soft Machines, Inc. Vorrichtung und verfahren zur verarbeitung einer instruktionsmatrix zur definition paralleler und abhängiger operationen
EP2527972A3 (de) 2006-11-14 2014-08-06 Soft Machines, Inc. Vorrichtung und Verfahren zum Verarbeiten von komplexen Anweisungsformaten in einer Multi-Thread-Architektur, die verschiedene Kontextschaltungsmodi und Visualisierungsschemen unterstützt
US20090157968A1 (en) * 2007-12-12 2009-06-18 International Business Machines Corporation Cache Memory with Extended Set-associativity of Partner Sets
US8327040B2 (en) 2009-01-26 2012-12-04 Micron Technology, Inc. Host controller
WO2012037491A2 (en) 2010-09-17 2012-03-22 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
EP2689326B1 (de) 2011-03-25 2022-11-16 Intel Corporation Speicherfragmente zur unterstützung einer codeblockausführung mittels durch partitionierbare engines realisierter virtueller kerne
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
EP2710480B1 (de) 2011-05-20 2018-06-20 Intel Corporation Verbindungsstruktur zur unterstützung der ausführung von instruktionssequenzen durch mehrere maschinen
TWI666551B (zh) 2011-05-20 2019-07-21 美商英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
IN2014CN03678A (de) 2011-11-22 2015-09-25 Soft Machines Inc
CN104040491B (zh) 2011-11-22 2018-06-12 英特尔公司 微处理器加速的代码优化器
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US8966327B1 (en) * 2012-06-21 2015-02-24 Inphi Corporation Protocol checking logic circuit for memory system reliability
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9430410B2 (en) 2012-07-30 2016-08-30 Soft Machines, Inc. Systems and methods for supporting a plurality of load accesses of a cache in a single cycle
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9582430B2 (en) * 2015-03-27 2017-02-28 Intel Corporation Asymmetric set combined cache
KR102017135B1 (ko) * 2017-11-21 2019-09-02 주식회사 한화 멀티코어 캐시를 이용한 해싱 처리 장치 및 그 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4631660A (en) * 1983-08-30 1986-12-23 Amdahl Corporation Addressing system for an associative cache memory
DE3751642T2 (de) * 1986-10-17 1996-09-05 Amdahl Corp Verwaltung von getrennten Befehls- und Operanden-Cachespeichern
US5257360A (en) * 1990-03-23 1993-10-26 Advanced Micro Devices,Inc. Re-configurable block length cache
ATE170642T1 (de) * 1990-06-15 1998-09-15 Compaq Computer Corp Mehrstufeneinschluss in mehrstufigen cache- speicherhierarchien
EP0461923B1 (de) * 1990-06-15 1997-10-01 Compaq Computer Corporation Vorrichtung zur echten LRU-Ersetzung
GB2256512B (en) * 1991-06-04 1995-03-15 Intel Corp Second level cache controller unit and system
US5228134A (en) * 1991-06-04 1993-07-13 Intel Corporation Cache memory integrated circuit for use with a synchronous central processor bus and an asynchronous memory bus
US5367659A (en) * 1991-09-30 1994-11-22 Intel Corporation Tag initialization in a controller for two-way set associative cache
US5353425A (en) * 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
US5392414A (en) * 1992-06-30 1995-02-21 Sun Microsystems, Inc. Rapid data retrieval from data storage structures using prior access predictive annotations
WO1994003856A1 (en) * 1992-08-07 1994-02-17 Massachusetts Institute Of Technology Column-associative cache

Also Published As

Publication number Publication date
GB9510677D0 (en) 1995-07-19
TW275689B (de) 1996-05-11
WO1996006390A3 (en) 1996-05-09
EP0775345B1 (de) 2003-05-14
KR100382821B1 (ko) 2003-07-18
GB2292237A (en) 1996-02-14
DE69530776D1 (de) 2003-06-18
WO1996006390A2 (en) 1996-02-29
JPH10504124A (ja) 1998-04-14
KR960008546A (ko) 1996-03-22
EP0775345A4 (de) 1997-07-16
AU701467B2 (en) 1999-01-28
AU3212795A (en) 1996-03-14
EP0775345A2 (de) 1997-05-28
ES2201114T3 (es) 2004-03-16
AU1799195A (en) 1996-02-22
US5548742A (en) 1996-08-20

Similar Documents

Publication Publication Date Title
DE69530776T2 (de) Zweiwege set-assoziativer cache-speicher
DE69721368T2 (de) Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher
DE2749850C3 (de) Hybrider Halbleiterspeicher mit assoziativer Seitenadressierung, Seitenaustausch und Steuerung auf dem Chip
DE60320026T2 (de) Verbessertes speichermanagement für echtzeit-anwendungen
DE112005002298B4 (de) Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen
DE19882853B3 (de) Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
DE69432314T2 (de) Cachespeicher mit aufgeteiltem pegel
DE10232926B4 (de) Verfahren zum Aufrechterhalten der Kohärenz in einer hierarchischen Cacheanordnung eines Computersystems
DE69738101T2 (de) Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen
DE3151745C2 (de)
DE3618163C2 (de) Speichermanagementanordnung für ein Mikroprozessorsystem
DE69629140T2 (de) Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index
DE3934145C2 (de) Platteneinheit-Steuerungsvorrichtung und Informationsverarbeitungssystem, das dieselbe enthält
DE112005002328T5 (de) Cachespeicherungsunterstützung für Direktspeicherzugriffsadreßübersetzung
DE2241257A1 (de) Datenverarbeitende anlage
DE2841041A1 (de) Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE2523414A1 (de) Hierarchische speicheranordnung
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102007052853A1 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE3911721C2 (de)
DE69815482T2 (de) Computer Anordnung mit Prozessor und Speicher-Hierarchie und sein Betriebsverfahren
DE10006430A1 (de) Verbessertes Kohärenzprotokoll für einen Computer-Cache
DE19908618A1 (de) Gemeinsam genutzter Hochleistungscachespeicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition