DE69518676T2 - Cache-Speicheranordnung für einen Speicher - Google Patents
Cache-Speicheranordnung für einen SpeicherInfo
- 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
Links
- 230000015654 memory Effects 0.000 title claims description 94
- 238000012546 transfer Methods 0.000 claims description 13
- 238000000034 method Methods 0.000 claims description 4
- 230000003139 buffering effect Effects 0.000 claims description 3
- 239000000872 buffer Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 239000002699 waste material Substances 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 241000665848 Isca Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing 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.
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)
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)
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)
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 |
-
1994
- 1994-02-14 US US08/196,042 patent/US5603004A/en not_active Expired - Lifetime
-
1995
- 1995-01-31 JP JP01447995A patent/JP3618385B2/ja not_active Expired - Fee Related
- 1995-02-03 DE DE69518676T patent/DE69518676T2/de not_active Expired - Lifetime
- 1995-02-03 EP EP95300681A patent/EP0667580B1/de not_active Expired - Lifetime
Cited By (1)
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 |