DE69518676T2 - Cache-Speicheranordnung für einen Speicher - Google Patents

Cache-Speicheranordnung für einen Speicher

Info

Publication number
DE69518676T2
DE69518676T2 DE69518676T DE69518676T DE69518676T2 DE 69518676 T2 DE69518676 T2 DE 69518676T2 DE 69518676 T DE69518676 T DE 69518676T DE 69518676 T DE69518676 T DE 69518676T DE 69518676 T2 DE69518676 T2 DE 69518676T2
Authority
DE
Germany
Prior art keywords
cache
data
data line
main memory
memory
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
DE69518676T
Other languages
English (en)
Other versions
DE69518676D1 (de
Inventor
William R. Bryg
Michael A. Buckley
Eric Delano
Gordon Kurpanek
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE69518676D1 publication Critical patent/DE69518676D1/de
Application granted granted Critical
Publication of DE69518676T2 publication Critical patent/DE69518676T2/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
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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
    • 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/12Replacement control
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

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

  • Die vorliegende Erfindung betrifft ein Cache-System für einen Speicher, beispielsweise zum Verringern des Zeitnachteils, der aus einem Cache-Fehlgriff in einem Mehrebenen- Cachesystem resultiert.
  • Die meisten modernen Computersysteme umfassen eine zentrale Verarbeitungseinheit (CPU; CPU = Central Processing Unit) und einen Hauptspeicher. Die Geschwindigkeit, mit der die CPU Befehle und Operanden decodieren und ausführen kann, hängt von der Rate ab, mit der die Befehle und Operanden von dem Hauptspeicher zu der CPU übertragen werden können. Bei einem Versuch, die Zeitdauer zu reduzieren, die erforderlich ist, damit die CPU Befehle und Operanden von dem Hauptspeicher erhält, umfassen viele Computersysteme einen Cache-Speicher zwischen der CPU und einem Hauptspeicher.
  • Ein Cache-Speicher ist ein kleiner Hochgeschwindigkeitspufferspeicher, der verwendet wird, um vorübergehend jene Abschnitte des Inhalts des Hauptspeichers zu halten, von denen angenommen wird, daß dieselben in der nahen Zukunft durch die CPU verwendet werden. Der Hauptzweck eines Cachespeichers besteht darin, die Zeitdauer zu verkürzen, die notwendig ist, um Speicherzugriffe entweder für einen Daten- oder einen Befehlholvorgang durchzuführen. Auf die Informationen, die in dem Cache-Speicher positioniert sind, kann in wesentlich geringerer Zeit zugegriffen werden, als auf Informationen, die in dem Hauptspeicher positioniert sind. Folglich muß eine CPU mit einem Cache-Speicher wesentlich weniger Zeit mit dem Warten auf Befehle und Operanden, die geholt und/oder gespeichert werden sollen, verbringen.
  • Ein Cache-Speicher besteht aus vielen Blöcken von einem oder mehreren Worten von Daten. Jedem Block ist ein Adress-Etikett zugeordnet, das eindeutig identifiziert, von welchem Block des Hauptspeichers dasselbe eine Kopie ist. Jedesmal, wenn der Prozessor eine Speicherbezugnahme durchführt, wird ein Adressetikettvergleich durchgeführt, um zu erkennen, ob sich eine Kopie der angeforderten Daten in dem Cache- Speicher befindet. Wenn sich der gewünschte Speicherblock nicht in dem Cachespeicher befindet, wird der Block aus dem Hauptspeicher wiedergewonnen, in dem Cache-Speicher gespeichert und dem Prozessor zugeführt.
  • Zusätzlich zu dem Verwenden eines Cache-Speichers, um Daten von einem Hauptspeicher wiederzugewinnen, kann die CPU ferner Daten in den Cache-Speicher schreiben, anstatt dieselben direkt in den Hauptspeicher zu schreiben. Wenn der Prozessor Daten in den Speicher schreiben möchte, führt der Cache- Speicher einen Adressetikettvergleich durch, um zu prüfen, ob sich der Datenblock, in den die Daten geschrieben werden sollen, in dem Cache-Speicher befindet. Wenn der Datenblock in dem Cache-Speicher existiert, werden die Daten in den Datenblock in dem Cache-Speicher geschrieben. Bei vielen Systemen wird dann ein Daten-"Unsauber-Bit" für den Datenblock eingestellt bzw. gesetzt. Das Unsauber-Bit zeigt an, daß die Daten in dem Datenblock unsauber (d. h. modifiziert worden) sind, und folglich müssen die modifizierten Daten in den Hauptspeicher geschrieben werden, bevor der Datenblock aus dem Cache-Speicher gelöscht wird. Wenn der Datenblock, in den die Daten geschrieben werden sollen, nicht in dem Cache-Speicher existiert, muß der Datenblock in den Cache-Speicher geholt werden, oder die Daten müssen direkt in den Hauptspeicher geschrieben werden. Ein Datenblock, der aus dem Cache-Speicher überschrieben oder kopiert wird, wenn neue Daten in dem Cache-Speicher plaziert werden, wird ein Opfer-Block oder eine Opfer-Zeile genannt.
  • Bei einigen Anwendungen wird ein zweiter Cache-Speicher in Reihe zwischen den ersten Cache-Speicher und den Hauptspeicher hinzugefügt. Der erste Cache-Speicher weist typischerweise einen Teilsatz der Daten in dem zweiten Cache-Speicher auf. Ähnlicherweise weist der zweite Cache-Speicher typischerweise einen Teilsatz der Daten in dem Hauptspeicher auf. Daten, auf die zugegriffen wird, werden zuerst in dem ersten Cache-Speicher gesucht. Wenn ein Fehlschlag in dem ersten Cache-Speicher auftritt, werden die Daten, auf die zugegriffen wird, in dem zweiten Cache-Speicher gesucht. Wenn ein Fehlschlag in dem zweiten Cache-Speicher auftritt, werden die Daten aus dem Hauptspeicher geholt.
  • Bei einer Anordnung eines Zwei-Ebenen-Cache für ein Prozessorsystem ist der Cache der ersten Ebene eine echte Teilmenge des Cache der zweiten Ebene. Was mit einer echten teilmenge gemeint ist, ist, daß sich alle Einträge in dem Cache der ersten Ebene ebenfalls in dem Cache der zweiten Ebene befinden. Der Cache der zweiten Ebene weist zusätzliche Einträge auf, die sich nicht in dem Cache der ersten Ebene befinden. Derselbe ist ferner kleiner und näher an dem Prozessor als der Cache der zweiten Ebene. Da ein Cache der ersten Ebene kleiner und näher an dem Prozessor ist, kann derselbe allgemein eine verbesserte Leistung liefern, da derselbe eine kleinere Zugriffslatenz oder Zugriffszeit als der dazugehörige Cache der zweiten Ebene oder sogar der Speicher aufweist.
  • Beim normalen Betrieb gibt es mehrere unterschiedliche Handlungen, die notwendig sein können, um eine bestimmte Speicherbezugnahme zu erfüllen. Eine Speicherbezugnahme ist allgemein ein Lade- oder Speicher-Befehl. Zunächst kann die Bezugnahme in den Cache der ersten Ebene treffen, was am einfachsten und am besten ist. Ein Treffer ist derart definiert, um vorzuliegen, wenn die Daten für eine gewünschte Speicheradresse in dem überprüften Cache (der ersten Ebene oder der zweiten Ebene) vorhanden sind. Ein Fehlschlag ist als eine Speicherbezugnahme definiert, bei der sich die Daten für eine gewünschte Speicheradresse nicht in dem überprüften Cache (der ersten Ebene oder der zweiten Ebene) befinden. Wenn ein Treffer in dem Cache der ersten Ebene auftritt, gibt es einen Null-Zyklus-Nachteil, und die Bezugnahme wird ohne einen Verarbeitungsnachteil abgeschlossen.
  • Der nächstschnellste Fall ist ein Fehlschlag in dem Cache der ersten Ebene, der zufällig in den Cache der zweiten Ebene trifft. Dies bewirkt, daß eine Folge von Operationen durchgeführt wird, um eine einzelne Zeile des Caches der ersten Ebene mit der geeigneten 16-Byte-Menge von dem Cache der zweiten Ebene zu füllen. Die Daten werden anschließend dem Prozessor zugeführt, oder das Speichern wird abgeschlossen. Dies ist eine Mittelgeschwindigkeitsoperation, und der Prozessor wird angehalten, während derselbe darauf wartet, daß die Speicherbezugnahme erfüllt wird.
  • Der langsamste Betrieb tritt auf, wenn die Speicherbezugnahme sowohl in dem Cache der ersten Ebene als auch der zweiten Ebene fehlschlägt. In diesem Fall wird eine lange Folge von Operationen eingeleitet, um die relevante Zeile von dem Hauptspeicher in den Cache der zweiten Ebene zu bringen. Wenn diese Daten von dem Hauptspeicher zurückgesendet und in den Cache der zweiten Ebene kopiert werden, wird wieder auf den Cache der ersten Ebene Bezug genommen, was diesmal zu einem Fehlschlag in dem Cache der ersten Ebene führt, der nun in den Cache der zweiten Ebene trifft. Dies bewirkt, daß der relevante Abschnitt der Zeile des Caches der zweiten Ebene in den Cache der ersten Ebene geschrieben wird, und anschließend die angeforderten Daten dem Prozessor zugeführt werden, oder das Speichern beendet wird.
  • Typischerweise sind Cache-Speicher direkt abgebildet. Das heißt, daß ein Index verwendet wird, um auf einen oder mehrere Einträge in dem Cache zuzugreifen. Das Etikett für den Eintrag wird dann mit dem Etikettabschnitt der Adresse verglichen, um zu bestimmen, ob eine Übereinstimmung vorliegt.
  • Bei einem Mehrweg-Satz-Assoziativ-Cache wird ein einziger Index verwendet, um gleichzeitig auf eine Mehrzahl von Daten-Direktzugriffspeichern (RAMs; RAM = Random Access Memories) zugreifen. Ein Daten-RAM kann durch eine oder mehrere physische integrierte Direktzugriffspeicher-Schaltungen implementiert sein. Ein Satz ist eine Sammlung von allen Zeilen, die durch einen einzigen Cache-Index adressiert werden. Die Anzahl der Daten-RAMs, die durch einen einzigen Cache-Index adressiert werden, zeigt die Weganzahl eines Cache an. Wenn beispielsweise bei einem Cache ein einziger Cache-Index verwendet wird, um auf Daten von zwei Daten-RAMs zuzugreifen, ist der Cache ein Zwei-Weg-Satz-Assoziativ-Cache. Wenn ähnlicherweise bei einem Cache ein einzelner Cache-Index verwendet wird, um auf Daten von vier Daten-RAMs zuzugreifen, ist der Cache ein Vier-Weg-Satz-Assoziativ-Cache.
  • Wenn ein Mehr-Weg-Zugriff durchgeführt wird, wird ein Etikettvergleich für jeden Daten-RAM durchgeführt. Wenn ein Etikettvergleich anzeigt, daß sich der gewünschte Datenblock in einem speziellen Daten-RAM befindet, wird die Operation anmit Daten von diesem speziellen Daten-RAM durchgeführt.
  • Bei einem vollassoziativen Cache wird kein Index verwendet. Wenn ein Zugriff auf einen Voll-Assoziativ-Cache durchgeführt wird, wird ein Etikettvergleich für jede Cachezeile innerhalb des voll-assoziativen Cache durchgeführt. Wenn ein Etikettvergleich anzeigt, daß sich die gewünschte Datenzeile in dem Cache befindet, wird die Operation anmit den Daten von dieser speziellen Datenzeile durchgeführt.
  • Für eine allgemeine Erörterung von Cache-Systemen siehe beispielsweise David A. Patterson, John L. Hennessy, Computer Architecture A Quantitative Approach, Morgan Kauffman Publishers, Inc., San Mateo, California, 1990, S. 404 bis 423 und 454 bis 464. Bei einem bekannten System empfängt ein voll-assoziativer Opfer-Cache Opfer-Zeilen von einem größeren Direktabbildungs-Cache. Wenn ein Fehlschlag in dem Direktabbildungs-Cache auftritt, kann der Voll-Assoziativ-Opfer-Cache manchmal in dem voll-assoziativen Opfer-Cache vorgefunden werden. Siehe Norman P. Jouppi, Improving Direkt Mapped Cache Performance by the Addition of a Samll Fully- Associative Cache and Prefetch Buffers, Proceedings 17th ISCA, Mai 1990, S. 364-373, Seattle, WA.
  • Die EP-A-0,437, 712 offenbart einen Tandern-Cache-Speicher, der einen ersten Cache zum Speichern einer Mehrzahl von Befehlen, die in neulicherer Zeit durch einen Prozessor angefordert wurden, und zum Liefern derselben zu dem Prozessor auf eine neue Anforderung hin ohne die Notwendigkeit, dieselben aus einem Arbeitsspeicher zu holen, und einen zweiten Cache zum Lesen aus dem Arbeitsspeicher und zum Speichern einer Mehrzahl von vorab geholten Befehlsblöcken mit aufeinanderfolgenden Adressen in zunehmender Reihenfolge relativ zu aktuellen Befehlen, die zur Ausführung durch den Prozessor angefordert werden, und zum Liefern einer der vorab geholten Befehlsblöcke zu sowohl dem Prozessor als auch dem ersten Cache auf eine Prozessoranforderung hin, wenn der Prozessor einen Befehl anfordert, der sich nicht in dem ersten Cache befindet, sondern in dem zweiten Cache gespeichert ist, umfaßt.
  • Ein Beispiel eines bekannten Cache-Systems, das in der EP-A-0449540 offenbart ist, weist einen Strom-Puffer auf, der in Reihe zwischen einen Direktabbildungs-Cache und einen Hauptspeicher geschaltet ist.
  • Die vorliegende Erfindung strebt danach, ein verbessertes Cache-System zu schaffen.
  • Gemäß einem Aspekt der vorliegenden Erfindung wird ein Cachesystem gemäß Anspruch 1 geschaffen.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren zum Puffern von Daten, die in einem Hauptspeicher gespeichert sind, gemäß Anspruch 7 geschaffen.
  • Bei dem bevorzugten Ausführungsbeispiel puffert ein Cache- System Daten, die in einem Hauptspeicher gespeichert sind und durch einen Prozessor verwendet werden. Das Cache-System umfaßt einen ersten Cache, einen zweiten Cache, eine erste Übertragungseinrichtung, eine zweite Übertragungseinrich tung, eine dritte Übertragungseinrichtung und eine Zugriffseinrichtung. Der erste Cache ist vollständig assoziativ. Der zweite Cache ist direkt abgebildet bzw. tabelliert. Die erste Übertragungseinrichtung überträgt Datenzeilen von dem Hauptspeicher zu dem ersten Cache. Die zweite Übertragungseinrichtung überträgt Datenzeilen von dem ersten Cache zu dem zweiten Cache. Die dritte Übertragungseinrichtung überträgt Datenzeilen von dem zweiten Cache zu dem Hauptspeicher. Zugriffe auf Datenzeilen von dem ersten Cache und dem zweiten Cache werden parallel durchgeführt.
  • Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung wird eine Hash-Funktion verwendet, um einen Index in den zweiten Cache zu erzeugen, bei dem ein Etikett für eine Datenzeile, auf die durch den Index zugegriffen wird, mit einem Etikett für eine gewünschte Datenzeile verglichen wird, um zu bestimmen, ob ein Treffer in dem zweiten Cache aufgetreten ist.
  • Vorzugsweise werden bei jedem Datenzugriff auf den ersten Cache die Etiketten für alle Datenzeilen in dem ersten Cache überprüft, um zu bestimmen, ob ein Treffer vorhanden ist. Ein Inhalts-adressierbarer Speicher speichert Etiketten für den ersten Cache. Die Datenzeilen werden durch den ersten Cache in einem Zuerst-Hinein-Zuerst-Hinaus-Speicher gespeichert.
  • Zusätzlich wird bei dem bevorzugten Ausführungsbeispiel mit jeder Datenzeile in dem ersten Cache eine Anzeige gespeichert, die ein Ziel für die Datenzeile anzeigt, wenn die Datenzeile aus dem ersten Cache bewegt wird. Die Anzeige zeigt an, ob die Datenzeile zu dem zweiten Cache oder zu dem Hauptspeicher bewegt werden soll.
  • Ferner werden bei dem bevorzugten Ausführungsbeispiel, um Platz für Daten zu ermöglichen, die vorab in den ersten Cache geholt werden, zwei Datenzeilen auf einmal aus dem ersten Cache bewegt, wenn der erste Cache mehr als eine vor bestimmte Anzahl von Datenzeilen enthält. Wenn die zwei Datenzeilen auf eine gleiche Position in dem zweiten Cache abgebildet sind, wird eine der zwei Datenzeilen zu dem Hauptspeicher bewegt.
  • Bei bestimmten Typen von Datenzugriffen wird beispielsweise der Prozessor eine Vorabholadresse erzeugen, die verwendet werden soll, wenn ein Cache-Fehlschlag auftritt, oder wenn ein Treffer in einer Datenzeile in dem ersten Cache vorhanden ist, bei der ein Bezugnahme-Bit für die "Treffer"-Datenzeile auf Null eingestellt bzw. gesetzt ist. Wenn sich die Datenzeile für die Vorabholadresse bereits in dem ersten oder zweiten Cache befindet, muß keine weitere Handlung vorgenommen werden. Wenn sich die Datenzeile für die Vorabholadresse bereits in einem der Caches befindet, wird die Datenzeile für die Vorabholadresse vorab geholt. Das Bezugnahmebit für eine Vorabhol-Datenzeile wird gelöscht (d. h. auf Null eingestellt), was anzeigt, daß auf die vorab geholte Datenzeile kein Bezug genommen wurde. Wenn ein Cache-Treffer in einer Datenzeile in dem ersten Cache, die als "ohne Bezugnahme" oder "nicht-in-Bezug genommen" bzw. als "nicht-Gegenstand-einer-Bezugnahme-gewesen" markiert ist, wird das Bezugnahmebit auf Eins eingestellt, was anzeigt, daß nun auf die Datenzeile Bezug genommen wurde. Bei dem bevorzugten Ausführungsbeispiel wird, wenn ein Cache- Treffer in einer Datenzeile in dem ersten Cache, die als "ohne Bezugnahme" markiert ist, vorhanden ist, und eine Vorabholadresse erzeugt wurde, die Datenzeile für die Vorabholadresse, wenn sich die Datenzeile für die Vorabholadresse nicht in einem der Caches befindet, vorab aus dem Hauptspeicher geholt und in dem ersten Cache plaziert. Das Bezugnahmebit für die vorab geholte Datenzeile wird gelöscht, was anzeigt, daß auf die vorab geholte Datenzeile kein Bezug genommen wurde.
  • Das bevorzugte Ausführungsbeispiel kann das verschwenderische Verhalten, das typischerweise Direktabbildungs-Caches zugeordnet ist, unter Hinzunahme lediglich einer minimalen Menge an Hardware beseitigen.
  • Ein Ausführungsbeispiel der vorliegenden Erfindung ist im folgenden beispielsweise unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, in denen:
  • Fig. 1 ein vereinfachtes Blockdiagramm eines Computersystems mit einem Befehls-Cache und einem Daten-Cache gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung zeigt.
  • Fig. 2 ein vereinfachtes Blockdiagramm eines Prozessors, der in Fig. 1 gezeigt ist, gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung zeigt.
  • Fig. 3 ein vereinfachtes Blockdiagramm des Cache-Systems für Daten für das Computersystem, das in Fig. 1 gezeigt ist, gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung zeigt.
  • Fig. 4 ein vereinfachtes Blockdiagramm eines Unterstützungs-Caches innerhalb des in Fig. 2 gezeigten Prozessors gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung zeigt.
  • Fig. 1 zeigt ein vereinfachtes Blockdiagramm eines Computersystems. Ein Prozessor 12 und ein Speicher 11 sind mit einem Bus 10 verbunden gezeigt. Der Prozessor 12 verwendet einen Befehlscache 13 und einen Daten-Cache 14. Der Befehls-Cache 13 speichert Befehle für den Prozessor 12 in einem statischen Direktzugriffspeicher (SRAM). Der Datencache 14 speichert Daten für den Prozessor 12 in einem SRAM.
  • Fig. 2 zeigt ein vereinfachtes Blockdiagramm des Prozessors 12. Der Prozessor 12 ist derart gezeigt, daß derselbe eine Systembusschnittstellenlogik 26, eine Befehlscacheschnittstellenlogik 24, eine Datencache-Schnittstellenlogik 25, eine arithmetische Logikeinheit (ALU) 22, einen Übersetzungs-Vorgriff-Puffer bzw. einen Übersetzungs-Look-Aside- Puffer (TLB) 21 und einen Unterstützungs-Cache 23 umfaßt. Die Systembusschnittstellenlogik 26 versieht den Prozessor 12 mit einer Schnittstelle zu dem Systembus 10. Die Befehlscacheschnittstellenlogik 24 versieht den Prozessor 12 mit einer Schnittstelle zu dem Befehlscache 13. Die Datenschnittstellenlogik 25 versieht den Prozessor 12 mit einer Schnittstelle zu dem Daten-Cache 14. Wie es detaillierter im folgenden beschrieben wird, wird der Unterstützungs-Cache 23 parallel zu dem Daten-Cache 14 verwendet, um Daten zu der arithmetischen Logikeinheit 22 zu liefern. Der Übersetzungsvorgriffpuffer 21 wird verwendet, um virtuelle Adressen in reale Adressen abzubilden, um Cache-Etiketten zu erzeugen, die verwendet werden sollen, um auf Daten zuzugreifen, die innerhalb des Unterstützungs-Cache 23 und innerhalb des Daten-Cache 14 gespeichert sind.
  • Fig. 3 zeigt die Organisation des Daten-Cache-Systems. Bei einem bevorzugten Ausführungsbeispiel besteht der Unterstützungs-Cache 23 aus 64 voll-assoziativen 32-Byte-Cachezeilen. Der Unterstützungs-Cache 23 speichert Etiketten in einem Inhalts-adressierbaren Speicher (CAM, CAM = Content-Addressable-Memory), was es ermöglicht, daß ein Abschnitt einer Adresse mit dem Etikett jedes Eintrags auf eine Übereinstimmung hin überprüft werden kann. Bei dem bevorzugten Ausführungsbeispiel ist der Daten-Cache 14 direkt abgebildet und besteht aus bis zu 1 Megabyte Daten (32K 32-Byte-Cache-Zeilen).
  • Für jeden Cachezugriff wird auf sowohl den Daten-Cache 14 als auch auf den Unterstützungs-Cache 23 parallel zugegriffen. Die reale Adresse, auf die von dem TLB 21 (in Fig. 2 gezeigt) zugegriffen wird, wird verwendet, um ein Unterstützungs-Cache-Zugriffsetikett für einen Zugriff in den Unterstützungs-Cache 23 zu erzeugen. Wenn eine Übereinstimmung des Unterstützungs-Cache-Zugriffsetikett mit dem Etikett für eine Datenzeile innerhalb des Unterstützungs-Cache 23 auf tritt, wird ein Treffer auf einer Datenleitung 36 erzeugt. Der Treffer signalisiert einer Auswahlvorrichtung 37, die "Treffer"-Daten aus dem Unterstützungs-Cache auszuwählen, und die Treffer-Daten auf einem Datenweg 33 zu plazieren.
  • Gleichzeitig zu dem Zugriff auf den Unterstützungs-Cache 23 wird ein Index 13 verwendet, um auf eine einzelne Datenzeile innerhalb des Datencache 14 zuzugreifen. Bei dem bevorzugten Ausführungsbeispiel besteht der Index aus einem Hash-kodierten Wert, der durch Hash-Codieren eines Abschnitts der virtuellen Adresse für die Speicherposition, auf die zugegriffen wird, hergeleitet wird. Ein Adressetikett für die indexierte Position in dem Daten-Cache 14 wird mit einem Abschnitt der realen Adresse der Speicherposition, auf die zugegriffen wird, und die auf Datenleitungen 31 plaziert werden, verglichen. Der Vergleich wird durch eine Vergleichslogik 35 dargestellt. Wenn ein Treffer von entweder dem Unterstützungs-Cache 23 oder dem Daten-Cache 14 auftritt, erzeugt die Logik 34 ein Treffer-Signal auf einer Treffer-Datenleitung 32.
  • Wenn ein Fehlschlag von sowohl dem Daten-Cache 14 als auch dem Unterstützungs-Cache 23 auftritt, wird eine neue Datenzeile aus dem Hauptspeicher 11 geholt. Die Datenzeilen werden in einer Zuerst-Hinein-Zuerst-Hinaus- (FIFO-) Reihenfolge in den Unterstützungs-Cache 23 hinein und aus demselben heraus bewegt. Alle Datenzeilen, die von dem Hauptspeicher 11 angefordert werden, werden in den Unterstützungs-Cache 23 bewegt. Wenn eine Datenzeile aus dem Unterstützungs-Cache 23 entfernt werden soll, wird die Datenzeile entweder hinaus zu dem Daten-Cache 14 oder zurück zu dem Hauptspeicher 11 bewegt. Die Bestimmung, ob eine Datenzeile von dem Unterstützungs-Cache 23 zu entweder dem Daten-Cache 14 oder zurück zu dem Hauptspeicher 11 bewegt wird, hängt von dem Wert eines Zuweisungs-Bits ab, das mit der Datenzeile in dem Unterstützungs-Cache 23 gespeichert wird. Der Wert des Zuweisungs-Bits wird durch den Befehl, der bewirkt hat, daß die Datenzeile in den Unterstützungs- Cache 23 gebracht wird, und dadurch bestimmt, ob dieser Befehl einen "Keine-Zuweisung"-Cache-Hinweis, der in dem Cache-Hinweis-Teiloperations-Feld spezifiziert ist, aufweist. Bei dem bevorzugten Ausführungsbeispiel weisen beispielsweise kurze Verschiebungs-Lade- und Speichervorgänge und -indexierte Lade- und Speichervorgänge ein Cache-Hinweis-Teiloperations-Feld auf.
  • Wenn ein Lade- oder Speicher-Befehl mit einem "keine Zuweisung"-Cache-Hinweis den Cache verfehlt, werden sowohl die Datenzeile, auf die zugegriffen wird, als auch jegliche vorab geholte Datenzeile in den Unterstützungs-Cache 23 gebracht, wobei das Zuweisungsbit gelöscht (d. h. auf Null eingestellt) wird, was "keine Zuweisung" anzeigt. Wenn zusätzlich ein Datenzugriff, bei dem der "Keine-Zuweisung"- Cache-Hinweis spezifiziert ist, einen Treffer an einer Datenzeile in dem Unterstützungs-Cache 23, bei der das Bezugnahmebit gelöscht (siehe im folgenden) ist, ergibt, und folglich ein Vorabholen (wie es im folgenden weiter erörtert wird) bewirkt wird, wird diese vorab geholte Datenzeile in den Unterstützungs-Cache 23 mit gelöschtem Zuweisungs-Bit gebracht, und andere Datenzeilen in den Unterstützungs-Cache 23 mit auf Eins eingestelltem Zuweisungs-Bit gebracht, was "Zuweisung" anzeigt.
  • Wenn eine Datenzeile in dem Unterstützungs-Cache 23 an der Reihe für eine Ersetzung ist, wird das Zuweisungs-Bit überprüft, um zu bestimmen, ob die Datenzeile zu dem Daten-Cache 14 oder den Hauptspeicher 11 (falls befleckt bzw. unsauber (dirty)) bewegt werden soll. Wenn das Zuweisungs-Bit für die Datenzeile auf Eins eingestellt ist, wird die Datenzeile zu dem Daten-Cache 14 bewegt. Wenn das Zuweisungsbit auf Null eingestellt ist, wird die Datenzeile zu dem Hauptspeicher 11 bewegt, wenn dieselbe unsauber ist (d. h. wenn dieselbe modifiziert wurde, seitdem dieselbe in den Unterstützungs- Cache gebracht wurde). Wenn die Datenzeile nicht unsauber ist, kann dieselbe ohne zurück in den Hauptspeicher 11 geschrieben zu werden, verworfen werden.
  • Die Datenzeilen innerhalb des Unterstützungs-Cache 23 werden beispielsweise als "keine-Zuweisung" markiert, wenn nicht erwartet wird, daß die Daten für eine lange Zeitdauer verwendet werden, aber andere Datenstücke innerhalb der Datenzeile der Daten in einer kurzen Zeitdauer verwendet werden können. Für weitere Informationen bezüglich der Cache-Hinweise siehe das Vereinigte-Staaten-Patent Nr. 4,928,239, erteilt an William R. Bryg u. a., über Cache Memory with Variable Fetch and Replacement Schemes. Wenn eine Datenzeile in dem Datencache 14 an der Reihe für eine Ersetzung ist, wird das Zuweisungs-Bit überprüft, um zu bestimmen, ob die Datenzeile zu dem Datencache 14 oder zu dem Hauptspeicher 11 bewegt werden soll.
  • Das Bewegen der Datenzeilen in den Unterstützungs-Cache 23, bevor dieselben in den Daten-Cache 14 bewegt werden, beseitigt das verschwenderische Verhalten, das typischerweise den Direktabbildungs-Caches zugeordnet ist. Bei der folgenden Vektorberechnung
  • for i := 0 to N do
  • A[i] := B[i] + C[ii] + D[i]
  • würde beispielsweise, wenn die Elemente A[i], B[i], C[i] und D[i] auf den gleichen Cache-Index abgebildet werden, ein Direktabbildungs-Cache alleine für jedes Element der Berechnung verschwendet werden. Dies würde 32 Cache-Fehlschläge für acht Iterationen der Schleife ergeben. Mit einem Unterstützungs-Cache wird jedoch jede Datenzeile in das Cache- System bewegt, ohne die anderen zu verschieben. Unter der Annahme von sequentiellen 32-Bit-Datenelementen bewirken acht Iterationen der Schleife lediglich die anfänglichen vier Cache-Fehlschläge. Es sei bemerkt, daß größere Caches diesen Typ von Cache-Verschwendung nicht reduzieren. Während moderne Compiler oftmals Datenstrukturen neu ausrichten können, um die Verschwendung zu reduzieren oder zu beseitigen, sind ausreichende Compilierungszeitinformationen bei einer Anwendung, um die korrekte Optimierung zu ermöglichen, nicht immer verfügbar. Der Unterstützungs-Cache 23 ist mit einer minimalen Hardware ausgezeichnet für das Beseitigen des Cache-Verschwendens ohne Compilierer-Optimierungen geeignet.
  • Einträge innerhalb des Unterstützungs-Cache 23 werden in einer zirkulierende FIFO-Schlange geordnet. Neue Datenzeilen, die von dem Hauptspeicher 11 aufgrund eines Cache-Fehlschlags oder eines Vorabholens angefordert werden, werden an dem oberen Ende der Schlange plaziert, wobei alte Einträge aus dem unteren Ende bewegt werden. Räumungen und Löschungen bezüglich Datenzeilen in der FIFO-Schlange bewirken Blasen (leere Schlitze), die entfernt werden, während die Schlange zirkuliert. Ein Versuch wird durchgeführt, um einen dreiviertel vollen FIFO beizubehalten. Daher wird eine Anzahl von Datenzeilen, die unter einer typischen Fehlschlag-Latenz verdeckt werden können, während eines Fehlschlags aus dem Unterstützungs-Cache 23 bewegt, bis der FIFO weniger als 48 Einträge aufweist. Bei dem bevorzugten Ausführungsbeispiel ermöglicht es die Latenz, daß für jeden Fehlschlag zwei Datenzeilen aus dem Unterstützungs-Cache 23 bewegt werden.
  • Bei dem bevorzugten Ausführungsbeispiel ist der Unterstützungs-Cache 23 optimalerweise lediglich dreiviertel voll, um Platz für Daten zu ermöglichen, die vorab in den Unterstützungs-Cache 23 geholt werden sollen, ohne zusätzliche Maschinenzyklen zu erfordern, um Datenzeilen aus dem Unterstützungs-Cache 23 zu bewegen, um Platz für die vorab geholten Datenzeilen zu schaffen.
  • Bei dem bevorzugten Ausführungsbeispiel können beispielsweise, wie es im folgenden detaillierter beschrieben werden wird, die Datenzeilen vorab von dem Hauptspeicher 11 in den Unterstützungs-Cache 23 geholt werden. Wenn der Unterstützungs-Cache 23 voll ist, und eine vorab geholte Datenzeile in dem Unterstützung-Cache 23 gespeichert werden soll, wird eine Datenzeile aus dem Unterstützungs-Cache 23 bewegt. Es müssen jedoch keine Datenzeilen bewegt werden, wenn der Unterstützungs-Cache nicht vollständig gefüllt ist. Um im voraus Platz für vorab geholte Daten zu schaffen, werden, wenn ein Fehlschlag angetroffen wird, und der Unterstützungs-Cache 23 zu mehr als oder gleich dreiviertel voll ist (d. h. es sind mehr als oder gleich 48 Einträge zwischen dem Anfang und dem Ende des FIFO, einschließlich Blasen, vorhanden), zwei Datenzeilen aus dem Unterstützungs-Cache 23 bewegt.
  • Zusätzlich können, wie es im folgenden detaillierter beschrieben werden wird, die vorab geholten Daten auf einen Cache-Fehlschlag hin in den Unterstützungs-Cache 23 gebracht werden. Bei einem Cache-Fehlschlag überprüft der Prozessor beispielsweise, um zu erkennen, ob sich die folgende Datenzeile bereits in dem Cache befindet. Wenn dies nicht der Fall ist, wird der Prozessor die fehlende Datenzeile holen, und wird zusätzlich vorab die folgende Datenzeile holen.
  • Bei dem bevorzugten Ausführungsbeispiel werden, wenn ein Cache-Fehlschlag es erfordert, daß eine einzelne Datenzeile von dem Hauptspeicher 11 geholt wird (d. h. kein Vorabholen einer zweiten Datenzeile stattfinden muß), und der Unterstützungs-Cache 23 zu mehr als dreiviertel voll ist, zwei Datenzeilen aus dem Unterstützungs-Cache 23 bewegt. Die Datenzeilen können während der Fehlschlag-Latenz hinausbewegt werden, während der Prozessor 12 angehalten wird, und dabei darauf wartet, daß Daten von dem Hauptspeicher 11 zurückgesendet werden. Ein anschließender Vorabholtreffer wird einen Vorteil daraus ziehen, da der Prozessor das Anhalten vermeidet, da keine Zeile hinausbewegt werden muß, um Platz zu machen.
  • Die Datenzeilen werden zu dem Datencache 14 bis auf folgende Ausnahme in einer FIFO-Reihenfolge bewegt. Wenn auf einen Fehlschlag hin zwei Datenzeilen aus dem Unterstützungs-Cache 23 bewegt werden, und die beiden auf den gleichen Index in dem Daten-Cache 14 abgebildet sind, wird die erste Datenzeile zu dem Datencache 14 bewegt, und die zweite Datenzeile zurück zu dem Hauptspeicher 11 geräumt.
  • Fig. 4 zeigt ein vereinfachtes Blockdiagramm eines bevorzugten Ausführungsbeispiels eines Unterstützungs-Cache 23. Ein SRAM 43 wird verwendet, um Datenzeilen zu speichern. Ein Inhalts-adressierbarer Speicher (CAM) 41 wird verwendet, um Etiketten für die Datenzeilen zu speichern, die in dem SRAM 43 gespeichert sind. Ein Bitspeicher 42 wird verwendet, um verschiedene Cache-Steuerungsbits zu speichern. Die Cache- Steuerungsbits, die mit jeder Datenzeile gespeichert werden, umfassen das Zuweisungs-Bit (das durch eine Spalte 46 dargestellt ist), das im vorhergehenden erörtert wurde, und ein Bezugnahme-Bit (das durch eine Spalte 47 dargestellt ist), das im folgenden erörtert wird. Die Bestimmung, ob eine spezielle Datenzeile von dem Unterstützungscache 23 zu entweder dem Daten-Cache 14 oder zurück zu dem Hauptspeicher 11 bewegt wird, hängt von dem Wert des Zuweisungs-Bits ab, das für die spezielle Datenzeile gespeichert ist. FIFO-Zeiger 44 zeigen die Position des ersten und des letzten Eintrags in dem SRAM 43 an, um die Implementierung des SRAM als einen FIFO-Speicher zu erleichtern. Wenn auf den Unterstützungs- Cache zugegriffen wird, und der CAM 41 erfaßt, daß ein Cache-Treffer aufgetreten ist, liefert eine Auswahllogik 45 die korrekte Datenzeile zu dem Datenweg 33.
  • Bei dem bevorzugten Ausführungsbeispiel wird, wenn ein Zugriff auf den Datencache 14 und auf den Unterstützungs-Cache 23 einen Fehlschlag bei beiden Caches ergibt, der Prozessor 12 die "fehlgeschlagene" Datenzeile von dem Hauptspeicher 11 anfordern. Wenn die fehlgeschlagene Datenzeile von dem Hauptspeicher 11 in den Unterstützungs-Cache 23 gebracht wird, wird das Bezugnahme- (R-) Bit in der Spalte 47 für die Datenzeile gesetzt, was anzeigt, daß auf die Datenzeile Bezug genommen wurde.
  • Für bestimmte Typen von Datenzugriffen wird zusätzlich der Prozessor 12 eine Vorabholadresse erzeugen, die verwendet wird, wenn ein Cache-Fehlschlag vorliegt, oder wenn ein Treffer in einer Datenzeile in dem Unterstützungs-Cache 14, bei der das Bezugnahme-Bit für die "getroffene" Datenzeile auf Null eingestellt ist, vorhanden ist. Im allgemeinen ist die Vorabholadresse, die durch den Prozessor 12 erzeugt wird, die Datenzeile, die der Datenzeile, auf die zugegriffen wird, folgt.
  • Auf einen Cache-Fehlschlag hin muß, wenn sich die Datenzeile für die Vorabholadresse bereits in dem Datencache 14 oder in dem Unterstützungs-Cache 23 befindet, keine weitere Handlung vorgenommen werden. Wenn sich die Datenzeile für die Vorabholadresse nicht bereits in dem Daten-Cache 14 oder in dem Unterstützungs-Cache 23 befindet, wird die Datenzeile für die Vorabholadresse vorab geholt. Wenn die vorab geholte Datenzeile von dem Hauptspeicher 11 in den Unterstützungs- Cache 23 gebracht wird, wird das Bezugnahme- (R-) Bit in der Spalte 47 für die neue Datenzeile gelöscht, was anzeigt, daß auf die vorab geholte Datenzeile nicht Bezug genommen wurde.
  • Bei dem bevorzugten Ausführungsbeispiel wird, wenn ein Cache-Treffer in einer Datenzeile in dem Unterstützungs- Cache 23, die als "ohne Bezugnahme" (d. h. das Bezugnahme-Bit in der Spalte 47 für den Eintrag ist gelöscht) markiert ist, auftritt, und der Prozessor 12 eine Vorabholadresse erzeugt hat, der Prozessor 12 das Bezugnahme-Bit in der Spalte 47 für die Datenzeile setzen, was anzeigt, daß auf die Datenzeile nun Bezug genommen wurde. Zusätzlich wird der Prozessor 12 überprüfen, ob sich die Datenzeile für die Vorabholadresse bereits in dem Daten-Cache 14 oder dem Unterstützungs-Cache 23 befindet. Wenn dies nicht der Fall ist, wird die Datenzeile für die Vorabholadresse vorab geholt. Wenn die vorab geholte Datenzeile von dem Hauptspeicher 11 in den Unterstützungs-Cache 23 gebracht wird, wird das Bezugnahme- (R-) Bit in der Spalte 47 für die neue Datenzeile gelöscht, was anzeigt, daß auf die vorab geholte Datenzeile nicht Bezug genommen wurde.
  • Datenzeilen werden von dem Hauptspeicher 11 über den Bus 10 zu dem Prozessor 12 übertragen. Bei dem bevorzugten Ausführungsbeispiel ist der Bus 10 64 Bit breit und jede Datenzeile ist 256 Bit breit. Daher sind vier Buszyklen erforderlich, damit eine vollständige Datenzeile zu dem Prozessor 12 übertragen wird. Um einen Einfluß auf die Prozessorausführungszeit zu minimieren, wird jede Datenzeile in dem Hinein-Bewegen-Puffer 48 vereinigt, bis die Datenübertragung über den Bus 10 abgeschlossen ist. Wenn die gesamte Datenzeile zu dem Hinein-Bewegen-Puffer 48 bewegt worden ist, wird die Datenzeile in einem einzigen Zyklus in den SRAM 43 geschrieben. Folglich ist der Unterstützungs-Cache für den Prozessor 12 für eine längere Zeitdauer Verfügbar.

Claims (9)

1. Ein Cachesystem zum Puffern von Daten, die in einem Hauptspeicher (11) gespeichert sind, und die durch einen Prozessor (12) verwendet werden, wobei das Cachesystem folgende Merkmale aufweist:
einen ersten Cache (23);
einen zweiten Cache (14);
eine erste Übertragungseinrichtung (26, 10), die mit dem ersten Cache (23) und mit dem Hauptspeicher (11) gekoppelt ist, zum Übertragen von Datenzeilen von dem Hauptspeicher (11) zu dem ersten Cache (23);
eine zweite Übertragungseinrichtung (25, 26, 10), die mit dem ersten Cache (23), dem zweiten Cache (14) und dem Hauptspeicher (11) gekoppelt ist und eine Einrichtung zum Übertragen von Datenzeilen von dem ersten Cache (23) zu entweder dem zweiten Cache (14) oder dem Hauptspeicher (11) aufweist;
eine dritte Übertragungseinrichtung, die mit dem zweiten Cache (14) und dem Hauptspeicher (11) gekoppelt ist, zum Übertragen von Datenzeilen von dem zweiten Cache (14) zu dem Hauptspeicher (11); und
eine Zugriffseinrichtung zum parallelen Zugreifen auf den ersten Cache (23) und den zweiten Cache (14),
wobei innerhalb des ersten Caches mit jeder Datenzeile ein spezifisches Bit gespeichert, und überprüft wird, wenn eine Datenzeile an der Reihe für eine Ersetzung ist, so daß, wenn das spezifische Bit einen ersten Wert aufweist, die Datenzeile aus dem ersten Cache hinaus zu dem zweiten Cache bewegt wird, und wenn das spezifische Bit einen zweiten Wert aufweist, die Datenzeile, wenn dieselbe unsauber ist, zu dem Hauptspeicher bewegt wird.
2. Ein Cachesystem gemäß Anspruch 1, bei dem die Zugriffseinrichtung folgende Merkmale aufweist:
eine Indexerzeugungseinrichtung, die mit dem zweiten Cache (14) gekoppelt ist, zum Erzeugen eines Index in den zweiten Cache (14);
eine Vergleichseinrichtung (35), die mit dem zweiten Cache (14) gekoppelt ist, zum Vergleichen eines Etiketts für eine Datenzeile, auf die durch den Index, der durch die Indexerzeugungseinrichtung erzeugt wird, zugegriffen wird, mit einem Etikett für eine gewünschte Datenzeile; und
eine assoziative Vergleichseinrichtung, die mit dem ersten Cache (23) gekoppelt ist, zum Bestimmen, ob eine Datenzeile in dem ersten Cache (23) die gewünschte Datenzeile ist.
3. Ein Cachesystem gemäß Anspruch 1 oder 2, bei dem der erste Cache (23) folgende Merkmale aufweist:
einen Datenzeilenspeicher (43) zum Speichern von Datenzeilen; und
einen Inhalts-adressierbaren Speicher (41) zum Speichern von Etiketten für die Datenzeilen, die in dem Datenzeilenspeicher (43) gespeichert sind.
4. Ein Cachesystem gemäß Anspruch 3, bei dem der erste Cache (23) eine Speichereinrichtung (46) zum Speichern mit jeder Datenzeile, die in dem Datenzeilenspeicher (43) gespeichert ist, einer Anzeige, ob auf die Datenzeile Bezug genommen worden ist, aufweist.
5. Ein Cachesystem gemäß einem der vorhergehenden Ansprüche, bei dem die zweite Übertragungseinrichtung (25, 26, 10) betreibbar ist, um aus dem ersten Cache (23) mehr als eine Datenzeile auf einmal zu bewegen, wenn der erste Cache (23) mehr als eine vorbestimmte Anzahl von Datenzeilen enthält.
6. Ein Cachesystem gemäß einem der vorhergehenden Ansprüche, bei dem die erste Übertragungseinrichtung (26, 10) wirksam ist, um in dem ersten Cache (23) erste Datenzeilen als in-Bezug-genommen zu markieren, wenn die ersten Datenzeilen als ein Ergebnis einer Bezugnahme auf dieselben in den ersten Cache (23) gebracht werden, und um in dem ersten Cache (23) zweite Datenzeilen als nicht-in-Bezug genommen zu markieren, wenn die zweiten Datenzeilen als ein Ergebnis eines Vorabrufs in den ersten Cache (23) gebracht werden.
7. Ein Verfahren zum Puffern von Daten, die in einem Hauptspeicher (11) gespeichert sind und durch einen Prozessor (12) verwendet werden, in einem Computersystem, mit folgenden Schritten:
(a) Übertragen von Datenzeilen von dem Hauptspeicher (11) zu einem ersten Cache (23), mit folgendem Teilschritt:
(a.1) Speichern eines spezifischen Bits mit jeder Datenzeile, das ein Ziel für die Datenzeile anzeigt, wenn die Datenzeile aus dem ersten Cache bewegt wird, in dem ersten Cache, wobei das spezifische Bit anzeigt, ob die Datenzeile zu einem zweiten Cache weitergeleitet wird, oder ob die Datenzeile, wenn dieselbe unsauber ist, zu dem Hauptspeicher zurückgeleitet wird;
(b) Bewegen einer ersten Datenzeile aus dem ersten Cache, mit folgenden Teilschritten:
(b.1) Überprüfen des spezifischen Bits, wenn die erste Datenzeile an der Reihe für eine Ersetzung ist; und
(b.2) wenn das spezifische Bit einen ersten Wert aufweist, Bewegen der ersten Datenzeile aus dem zweiten Cache, und wenn das spezifische Bit einen zweiten Wert aufweist, Bewegen der ersten Datenzeile, wenn dieselbe unsauber ist, zu dem Hauptspeicher;
(c) wenn eine zweite Datenzeile aus dem zweiten Cache (14) bewegt wird und unsauber ist, Zurückgeben der zweiten Datenzeile zu dem Hauptspeicher (11); und
(d) wenn der Prozessor (12) einen Zugriff auf eine dritte Datenzeile anfordert, paralleles Zugreifen auf den ersten Cache (23) und den zweiten Cache (14) bezüglich der dritten Datenzeile.
8. Ein Verfahren gemäß Anspruch 7, bei dem der Schritt (d) folgende Teilschritte aufweist:
(d.1) Erzeugen eines Index in den zweiten Cache (14);
(d.2) Verwenden des Index, um auf eine vierte Datenzeile innerhalb des zweiten Cache (14) zuzugreifen;
(d.3) Vergleichen eines Etiketts für die vierte Datenzeile mit einem Etikett für die dritte Datenzeile, um zu bestimmen, ob die vierte Datenzeile die dritte Datenzeile ist; und
(d.4) Überprüfen eines Etiketts für jede Datenzeile, die in dem ersten Cache (23) gespeichert ist, um zu bestimmen, ob eine Datenzeile in dem ersten Cache (23) die dritte Datenzeile ist;
wobei der Schritt (d.4) parallel zu den Schritten (d.1) bis (d.3) durchgeführt wird.
9. Ein Verfahren gemäß Anspruch 7 oder 8, bei dem der Schritt (b) folgenden Teilschritt aufweist:
(b.1) wenn der erste Cache (23) mehr als eine vorbestimmte Anzahl von Datenzeilen enthält, Bewegen einer zusätzlichen Datenzeile von dem ersten Cache (23) zusammen mit der ersten Datenzeile.
DE69518676T 1994-02-14 1995-02-03 Cache-Speicheranordnung für einen Speicher Expired - Lifetime DE69518676T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/196,042 US5603004A (en) 1994-02-14 1994-02-14 Method for decreasing time penalty resulting from a cache miss in a multi-level cache system

Publications (2)

Publication Number Publication Date
DE69518676D1 DE69518676D1 (de) 2000-10-12
DE69518676T2 true DE69518676T2 (de) 2001-01-04

Family

ID=22723904

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69518676T Expired - Lifetime DE69518676T2 (de) 1994-02-14 1995-02-03 Cache-Speicheranordnung für einen Speicher

Country Status (4)

Country Link
US (1) US5603004A (de)
EP (1) EP0667580B1 (de)
JP (1) JP3618385B2 (de)
DE (1) DE69518676T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102020104701B4 (de) 2019-04-26 2024-05-29 Hewlett Packard Enterprise Development Lp System zur Lokalisierung von Cachedaten

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021471A (en) * 1994-11-15 2000-02-01 Advanced Micro Devices, Inc. Multiple level cache control system with address and data pipelines
US5897654A (en) * 1995-02-10 1999-04-27 International Business Machines Corporation Method and system for efficiently fetching from cache during a cache fill operation
US5732242A (en) 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
EP0752645B1 (de) * 1995-07-07 2017-11-22 Oracle America, Inc. Abstimmbare Softwaresteuerung von Pufferspeichern einer Harvard-Architektur mittels Vorausladebefehlen
US5860095A (en) * 1996-01-02 1999-01-12 Hewlett-Packard Company Conflict cache having cache miscounters for a computer memory system
US5835946A (en) * 1996-04-18 1998-11-10 International Business Machines Corporation High performance implementation of the load reserve instruction in a superscalar microprocessor that supports multi-level cache organizations
US5761468A (en) * 1996-05-15 1998-06-02 Sun Microsystems Inc Hardware mechanism for optimizing instruction and data prefetching by forming augmented prefetch instructions
JP3068469B2 (ja) 1996-08-28 2000-07-24 新潟日本電気株式会社 2次レベルキャッシュメモリシステム
US5954812A (en) * 1996-10-29 1999-09-21 Texas Instruments Incorporated Apparatus for caching system management memory in a computer having a system management mode employing address translation
US5752261A (en) * 1996-11-07 1998-05-12 Ncr Corporation Method and apparatus for detecting thrashing in a cache memory
US6223256B1 (en) 1997-07-22 2001-04-24 Hewlett-Packard Company Computer cache memory with classes and dynamic selection of replacement algorithms
US5909697A (en) * 1997-09-30 1999-06-01 Sun Microsystems, Inc. Reducing cache misses by snarfing writebacks in non-inclusive memory systems
US6073212A (en) * 1997-09-30 2000-06-06 Sun Microsystems, Inc. Reducing bandwidth and areas needed for non-inclusive memory hierarchy by using dual tags
US6237059B1 (en) 1997-11-26 2001-05-22 Compaq Computer Corporation Method for estimating statistics of properties of memory system interactions among contexts in a computer system
US6442585B1 (en) 1997-11-26 2002-08-27 Compaq Computer Corporation Method for scheduling contexts based on statistics of memory system interactions in a computer system
US6332178B1 (en) 1997-11-26 2001-12-18 Compaq Computer Corporation Method for estimating statistics of properties of memory system transactions
US6195748B1 (en) 1997-11-26 2001-02-27 Compaq Computer Corporation Apparatus for sampling instruction execution information in a processor pipeline
US6202127B1 (en) * 1997-11-26 2001-03-13 Compaq Computer Corporation Apparatus for spatial and temporal sampling in a computer memory system
US6237073B1 (en) 1997-11-26 2001-05-22 Compaq Computer Corporation Method for providing virtual memory to physical memory page mapping in a computer operating system that randomly samples state information
US6549930B1 (en) 1997-11-26 2003-04-15 Compaq Computer Corporation Method for scheduling threads in a multithreaded processor
US6374367B1 (en) 1997-11-26 2002-04-16 Compaq Computer Corporation Apparatus and method for monitoring a computer system to guide optimization
US6175814B1 (en) 1997-11-26 2001-01-16 Compaq Computer Corporation Apparatus for determining the instantaneous average number of instructions processed
US6163840A (en) * 1997-11-26 2000-12-19 Compaq Computer Corporation Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline
US6253291B1 (en) 1998-02-13 2001-06-26 Sun Microsystems, Inc. Method and apparatus for relaxing the FIFO ordering constraint for memory accesses in a multi-processor asynchronous cache system
US6253285B1 (en) * 1998-04-16 2001-06-26 Compaq Computer Corporation Method and apparatus for minimizing dcache index match aliasing using hashing in synonym/subset processing
US6253301B1 (en) * 1998-04-16 2001-06-26 Compaq Computer Corporation Method and apparatus for a dedicated physically indexed copy of the data cache tag arrays
US6397296B1 (en) * 1999-02-19 2002-05-28 Hitachi Ltd. Two-level instruction cache for embedded processors
JP4341186B2 (ja) 2001-01-22 2009-10-07 株式会社日立製作所 メモリシステム
US6904498B2 (en) * 2002-10-08 2005-06-07 Netcell Corp. Raid controller disk write mask
US7203798B2 (en) * 2003-03-20 2007-04-10 Matsushita Electric Industrial Co., Ltd. Data memory cache unit and data memory cache system
US7143239B2 (en) * 2003-08-07 2006-11-28 Hewlett-Packard Development Company, L.P. Cache structure and methodology
US7373637B2 (en) * 2003-09-30 2008-05-13 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
US7937691B2 (en) 2003-09-30 2011-05-03 International Business Machines Corporation Method and apparatus for counting execution of specific instructions and accesses to specific data locations
US7395527B2 (en) * 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US7421681B2 (en) * 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US8381037B2 (en) * 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US7392370B2 (en) * 2004-01-14 2008-06-24 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US7526757B2 (en) * 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US7415705B2 (en) * 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US7496908B2 (en) * 2004-01-14 2009-02-24 International Business Machines Corporation Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information
US7895382B2 (en) * 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US8135915B2 (en) * 2004-03-22 2012-03-13 International Business Machines Corporation Method and apparatus for hardware assistance for prefetching a pointer to a data structure identified by a prefetch indicator
US7526616B2 (en) * 2004-03-22 2009-04-28 International Business Machines Corporation Method and apparatus for prefetching data from a data structure
US7421684B2 (en) 2004-03-22 2008-09-02 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for data coverage
JP4691335B2 (ja) * 2004-07-30 2011-06-01 富士通株式会社 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法
US7366871B2 (en) * 2004-11-18 2008-04-29 Sun Microsystems, Inc. Apparatus and method for determining stack distance including spatial locality of running software for estimating cache miss rates based upon contents of a hash table
US7373480B2 (en) * 2004-11-18 2008-05-13 Sun Microsystems, Inc. Apparatus and method for determining stack distance of running software for estimating cache miss rates based upon contents of a hash table
US7386669B2 (en) * 2005-03-31 2008-06-10 International Business Machines Corporation System and method of improving task switching and page translation performance utilizing a multilevel translation lookaside buffer
US7409502B2 (en) * 2006-05-11 2008-08-05 Freescale Semiconductor, Inc. Selective cache line allocation instruction execution and circuitry
WO2008093399A1 (ja) 2007-01-30 2008-08-07 Fujitsu Limited 情報処理システムおよび情報処理方法
JP2009053820A (ja) * 2007-08-24 2009-03-12 Nec Electronics Corp 階層型キャッシュメモリシステム
US8478942B2 (en) * 2010-09-27 2013-07-02 Advanced Micro Devices, Inc. Method and apparatus for reducing processor cache pollution caused by aggressive prefetching
US20130262767A1 (en) * 2012-03-28 2013-10-03 Futurewei Technologies, Inc. Concurrently Accessed Set Associative Overflow Cache
US9652233B2 (en) * 2013-08-20 2017-05-16 Apple Inc. Hint values for use with an operand cache
US9489149B2 (en) * 2014-06-16 2016-11-08 Netapp, Inc. Methods and systems for using a write cache in a storage system
US11620220B2 (en) * 2014-07-14 2023-04-04 Via Alliance Semiconductor Co., Ltd. Cache system with a primary cache and an overflow cache that use different indexing schemes
US9558127B2 (en) * 2014-09-09 2017-01-31 Intel Corporation Instruction and logic for a cache prefetcher and dataless fill buffer
WO2016055828A1 (en) * 2014-10-08 2016-04-14 Via Alliance Semiconductor Co., Ltd. Cache system with primary cache and overflow fifo cache
US20170046278A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Method and apparatus for updating replacement policy information for a fully associative buffer cache

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4774654A (en) * 1984-12-24 1988-09-27 International Business Machines Corporation Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory
US4928239A (en) * 1986-06-27 1990-05-22 Hewlett-Packard Company Cache memory with variable fetch and replacement schemes
US5058006A (en) * 1988-06-27 1991-10-15 Digital Equipment Corporation Method and apparatus for filtering invalidate requests
US5146578A (en) * 1989-05-01 1992-09-08 Zenith Data Systems Corporation Method of varying the amount of data prefetched to a cache memory in dependence on the history of data requests
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
IT1238313B (it) * 1990-01-18 1993-07-12 Memoria tampone in tandem
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5261066A (en) * 1990-03-27 1993-11-09 Digital Equipment Corporation Data processing system and method with small fully-associative cache and prefetch buffers
EP0449540B1 (de) * 1990-03-27 2000-05-17 Digital Equipment Corporation Speicher-Anordnung und Verfahren mit Vorausholungspuffer
US5317718A (en) * 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
EP0461926B1 (de) * 1990-06-15 1998-09-02 Compaq Computer Corporation Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
GB2264577B (en) * 1992-02-27 1995-06-14 Hewlett Packard Co Cache memory system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102020104701B4 (de) 2019-04-26 2024-05-29 Hewlett Packard Enterprise Development Lp System zur Lokalisierung von Cachedaten

Also Published As

Publication number Publication date
EP0667580A2 (de) 1995-08-16
EP0667580A3 (de) 1996-07-31
JP3618385B2 (ja) 2005-02-09
DE69518676D1 (de) 2000-10-12
US5603004A (en) 1997-02-11
EP0667580B1 (de) 2000-09-06
JPH07253926A (ja) 1995-10-03

Similar Documents

Publication Publication Date Title
DE69518676T2 (de) Cache-Speicheranordnung für einen Speicher
DE69514165T2 (de) Mehrstufige Cache-Speicheranordnung
DE69331039T2 (de) Rechnersystem mit einem Vorausholungscachespeicher
DE69616465T2 (de) Cachespeicher mit Datenvorausladung
DE69424767T2 (de) Kohärente Schreibtransaktionen für Teilzeilen eines Cache-Speichers
DE3586635T2 (de) Vorausholungsanordnung fuer einen schnellpufferspeicher.
DE60222402T2 (de) Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher
DE69935737T2 (de) Verfahren und gerät um zeitliche und feste daten in einer einzelspeicherstruktur zu verwalten
DE69130086T2 (de) Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
DE10085373B4 (de) Verfahren zum Flushen von Cache-Zeilen
DE68924206T2 (de) Verfahren und Einrichtung zum Filtern von Ungültigkeitserklärungsanforderungen.
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE69128741T2 (de) Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür
DE69427734T2 (de) Linearadressierter Mikroprozessorcachespeicher
DE69708188T2 (de) Speichersteuerungseinheit
DE69432133T2 (de) Datenprozessor mit Cache-Speicher
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE102013204414B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen in einer Cachespeicherhierarchie mit mehreren Ebenen
DE69127111T2 (de) Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher
DE69738101T2 (de) Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen
DE19943938B4 (de) Dynamischer Daten-Vorabruf auf Basis eines Programmzähler- und Adressierungsmodus
DE60036960T2 (de) Unterscheidung von feinkorntranslation
DE69229667T2 (de) Simulierte cachespeicher-assoziativität
DE112008001666T5 (de) Hierarchische Cache-Tag-Architektur

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE