[go: up one dir, main page]

DE112008001666T5 - Hierarchische Cache-Tag-Architektur - Google Patents

Hierarchische Cache-Tag-Architektur Download PDF

Info

Publication number
DE112008001666T5
DE112008001666T5 DE112008001666T DE112008001666T DE112008001666T5 DE 112008001666 T5 DE112008001666 T5 DE 112008001666T5 DE 112008001666 T DE112008001666 T DE 112008001666T DE 112008001666 T DE112008001666 T DE 112008001666T DE 112008001666 T5 DE112008001666 T5 DE 112008001666T5
Authority
DE
Germany
Prior art keywords
cache
tag
tags
memory
original
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.)
Withdrawn
Application number
DE112008001666T
Other languages
English (en)
Inventor
Abhishek Santa Clara Signhal
Randy B. Beaverton Osborne
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112008001666T5 publication Critical patent/DE112008001666T5/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

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)

Abstract

Vorrichtung, umfassend:
einen mit einem Prozessor gekoppelten Cache-Speicher;
eine Tag-Speicherstruktur, die mit dem Cache-Speicher gekoppelt ist, wobei die Tag-Speicherstruktur zum Speichern einer Vielzahl von Tags dient, wobei jedes Tag zu einer Datenstelle gehört, die in dem Cache-Speicher gespeichert ist; und
einen Cache für Cache-Tags, der mit dem Prozessor gekoppelt ist, wobei der Cache für Cache-Tags zum Speichern eines Teilsatzes von einem oder mehreren der Vielzahl von in der Tag-Speicherstruktur gespeicherten Tags dient.

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft Cache-Tag-Speicherung. Genauer gesagt betrifft die Erfindung eine hierarchische Tag-Speicher-Architektur für mehrere Cache-Tag-Speicher.
  • GLOSSAR VON BEGRIFFEN
  • Es folgt ein kurzes Glossar von hierin verwendeten Begriffen. Die bereitgestellten Definitionen sind in der gesamten Beschreibung und in den Ansprüchen anwendbar, sofern der Begriff nicht eindeutig in einer anderen Weise verwendet wird.
  • Tag-Speicherstruktur:
  • Eine Speicherstruktur, die das Tag (Etikett) und andere verwandte Information (zum Beispiel Statusinformation, LRU-Information, ECC-Information) für jeden Eintrag in einem Cache-Speicher speichert.
  • Cache für Cache-Tags:
  • Ein Cache zum Speichern eines Teilsatzes von Tags, die in der Tag-Speicherstruktur gespeichert sind.
  • Index:
  • Der Teil der Adresse in einer Speicheranforderung, der auf einen speziellen Satz von Tags in einer Tag-Speicherstruktur zeigt.
  • Tag:
  • Der Teil der Adresse in einer Speicheranforderung, der auf eine spezielle Speicheradressenstelle zeigt, die für den besonderen Indexteil eindeutig ist.
  • HINTERGRUND DER ERFINDUNG
  • Prozessoren aller Arten sind aufgrund der relativ geringen Geschwindigkeit von Speicher in Relation zur Geschwindigkeit eines Prozessorkerns von Caches abhängiger geworden. Über Jahrzehnte sind zahlreiche Cache-Architekturen benutzt worden. Eine übliche Cache-Architektur ist ein satzassoziativer Cache. Cache-Architekturen weisen Speicher, der Daten von Systemspeicherplätzen speichert, sowie eine Tag-Speicherstruktur auf, die Sätze von Tags speichert.
  • In einer Architektur mit Standard-Cache-Hierarchie gilt, je näher sich ein Cache an dem Prozessorkern bzw. an den Prozessorkernen befindet, desto kleiner und schneller wird im allgemeinen der Cache. Der kleinste und schnellste Cache bzw. die kleinsten und schnellsten Caches befinden sich im allgemeinen auf dem Prozessorkern-Siliziumchip (Die). Andererseits befindet sich der größte Cache (LLC bzw. Last Level Cache) bzw. befinden sich die größten Caches manchmal außerhalb des Chips (Off-Die) von dem Prozessorkern(en). Ein Zugriff auf Daten, die sich in einem Off-Die-Cache im Gegensatz zu einem On-Die-Cache befinden, erzeugt im allgemeinen zusätzliche Latenz, da zum Senden der Daten zum Prozessorkern bzw. zu den Prozessorkernen mehr Zeit benötigt wird.
  • Jeder Cache weist eine Tag-Speicherstruktur auf. Wenn der Prozessor Daten von einem bestimmten Speicherplatz benötigt, kann er ermitteln, ob die Daten in einem bestimmten Cache gespeichert sind, indem er einen Vergleich der Speicherplatzadresse und der Tag-Speicherstruktur für den Cache durchführt. Wenn sich die Tag-Speicherstruktur fern von dem Chip (Off-Die) befindet, so wird die Latenz für das Nachschlagen bzw. Suchen eines Tags größer sein, als wenn sich die Tag-Speicherstruktur auf dem Chip (On-Die) befindet. Somit erhöhen On-Die-Tag-Speicherstrukturen die Kosten des Prozessorchips, weil sie wertvollen Platz einnehmen, aber helfen sie beim Beschleunigen der Ausführung durch Reduzieren der Latenzen von Tag-Nachschlagen gegenüber Off-Die-Caches.
  • In vielen Ausführungsformen speichert ein Cache Daten anhand der Cache-Zeile (zum Beispiel 64 Bytes). In anderen Ausführungsformen speichert ein Cache Daten anhand irgendeiner anderen messbaren Einheit. In einer beispielhaften Ausführungsform, in der der Cache Daten anhand der Cache-Zeile speichert, signifiziert die Tag-Speicherstruktur die speziellen Speicherplätze, die durch Cache-Zeilen repräsentiert sind, die in dem Cache gespeichert sind. Zusätzlich speichert die Tag-Speicherstruktur auch Zustandsinformation zum Identifizieren, ob die gespeicherte Cache-Zeile modifiziert worden ist, ungültig ist, etc. Ein Beispiel für eine Zustandsinformation ist MESI(Modified, Exclusive, Shared oder Invalid)-Information, die von vielen Caches verwendet wird. Die Tag-Speicherstruktur speichert auch Cache-Ersetzungsstrategieinformation als Hilfe bei der Ermittlung, welche Cache-Zeile geräumt werden soll, falls Ersetzen einer existierenden Cache-Zeile erforderlich ist. LRU(Least Recent Used)-Bits stellen eine übliche Technik dar, die verwendet wird und erfordert, dass Information über das relative Alter der Cache-Zeile (gegenüber anderen gespeicherten Cache-Zeilen) beibehalten wird, obwohl andere Ersetzungsstrategietechniken existieren und verwendet werden könnten. Die Tag-Speicherstruktur kann auch Fehlerkorrekturinformation (Error Information Correction (ECC)) für jeden Satz von Tags speichern, obwohl ECC-Information nicht erforderlich ist. Die LRU-Information und die ECC-Information müssen nur pro Satz (set) gespeichert werden, während die Tag-Information und die Zustandsinformation pro Tag (d. h. pro Weg) gespeichert werden müssen.
  • Zum Beispiel kann ein satzassoziativer 256 Megabyte (MB)-4-Wege Cache mit 64 Byte-Cache-Zeilen in einem 40-Bit-Adressraum 9,5 MB an Tag-Speicherplatz erfordern: (14b Tag + 2b Zustand) × 4 M Tags + (8b ECC + 4b LRU)/Satz × 1 M Wege = 9,5 MB
  • Wenn diese Tag-Speicherstruktur auf dem Prozessorchip angeordnet ist, könnte die Speicherplatzmenge von 9,5 M den Kosten der Herstellung des Prozessors eine erhebliche Last hinzufügen. 9,5 M an Information, die in Gattern gespeichert ist, nimmt einen erheblichen Raum auf einem Siliziumchip eines Prozessors ein. Zur Reduzierung der Kostenlast auf den Prozessorchip und auch, um die Bestimmung von Cache und Fehlgriffen zu ermöglichen, sind Teil-Tag-Speicherstrukturen eingeführt worden und werden sie auch gelegentlich verwendet. Teil-Tags speichern nur einen Teil der Tag-Information (zum Beispiel 8 Bits anstelle von 14 Bits des Tags), um Chipplatz zu sparen. Derartige Architekturen sind zur schnellen Ermittlung eines Cache-Fehlgriffes optimiert. Zur Ermittlung eines Cache-Treffers müsste aber unverändert auf das gesamte Tag (Etikett) vom Hauptspeicher zugegriffen werden. Wenn ein Cache-Fehlgriff mit dem Nachschlagen eines Teil-Tags vorliegt, ist somit bekannt, dass die Daten aus dem Systemspeicher abgerufen werden sollten; im Falle eines Cache-Treffers muss man jedoch unverändert auf das aktuelle Tag von der Tag-Speicherstruktur, die Information über alle Tags speichert, zugreifen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird beispielhaft und nicht beschränkend durch die beigefügten Zeichnungen dargestellt, in denen gleiche Bezugszeichen ähnliche Elemente angeben und in denen:
  • 1 eine Ausführungsform einer Vorrichtung zur Implementierung eines Caches für Cache-Tags beschreibt;
  • 2 eine Ausführungsform der Tag-Adressstruktur sowie die Satzstruktur eines Caches für Cache-Tags und einen jeweiligen Tag-Adresseneintrag in dem Cache für Cache-Tags in einer N-Wege-satzassoziative Konfiguration beschreibt;
  • 3 ein Flussdiagramm einer Ausführungsform eines Prozesses zur Verwendung eines Caches für Cache-Tags zum Speichern eines Teilsatzes des Satzes von Tags, die mit einem Cache-Speicher im Zusammenhang stehen, ist; und
  • 4 ein Flussdiagramm einer Ausführungsform eines Prozesses zum Verwenden eines Caches für Caches-Tags beschreibt.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Es werden Ausführungsformen einer Vorrichtung, eines Systems und eines Verfahrens zur Implementierung eines Caches für Cache-Tags beschrieben. In der folgenden Beschreibung werden zahlreiche spezielle Details dargelegt. Es ist jedoch verständlich, dass Ausführungsformen ohne diese speziellen Details praktisch angewendet werden können. In anderen Fällen sind allgemein bekannte Elemente, Spezifikationen und Protokolle nicht im Detail beschrieben worden, um die vorliegende Erfindung nicht zu verschleiern.
  • 1 beschreibt eine Ausführungsform einer Vorrichtung und eines Systems zur Implementierung eines Caches für Cache-Tags. Ein oder mehrere Prozessorkern(e) befindet/befinden sich auf einem Mikroprozessor-Siliziumchip 102 (DIE 1) in vielen Ausführungsformen. In anderen Mehrprozessorausführungsformen können mehrere Prozessorchips miteinander gekoppelt sein, wobei jeder einen oder mehrere Kern(e) pro Chip enthält (die Architektur für Prozessorkerne auf Mehrfachchips ist in 1 nicht gezeigt). Unter Bezugnahme auf 1 ist/sind der Prozessorkern/die Prozessorkerne mit einer Verbindung (Interconnect) 100 verbunden. In anderen Ausführungsformen kann/können der Prozessorkern/die Prozessorkerne irgendeine Art von Zentraleinheit (Central Processing Unit (CPU)) sein, die zur Verwendung in irgendeiner Form von Personalcomputer, tragbarem Gerät, Server, Arbeitsstation oder einem anderen Rechengerät, das heutzutage verfügbar ist, entworfen ist. Die einzige Verbindung 100 ist zur einfachen Erläuterung gezeigt, um die Erfindung nicht zu verschleiern. In der Praxis kann diese einzige Verbindung aus mehreren Verbindungen bestehen, die unterschiedliche jeweilige Geräte miteinander koppeln. Zusätzlich können in vielen Ausführungsformen mehr Bausteine mit der Verbindung gekoppelt sein, die nicht gezeigt sind (z. B. ein Chipsatz).
  • Der Prozessorkern/die Prozessorkerne 104 ist/sind über die Verbindung 100 mit einem oder mehreren On-Die-Caches 106 gekoppelt, der/die auf demselben Chip wie der Prozessorkern/die Prozessorkerne 104 physisch angeordnet ist/sind.
  • In vielen Ausführungsformen weist ein Cache eine zugehörige Tag-Speicherstruktur 114 auf, die Tags für alle Cache-Speicherplätze speichert. In vielen Ausführungsformen befindet sich die Tag-Speicherstruktur 114 auf einem separaten Siliziumchip (Die 2) 112 von dem Prozessorkern/den Prozessorkernen 104. In vielen Ausführungsformen ist die Tag-Speicherstruktur 114 mit einem oder mehreren Off-Die(nicht-Prozessor-Die)-Cache(s) 116 durch die Verbindung 100 gekoppelt und auf demselben Chip wie der Off-Die-Cache bzw. die Off-Die-Caches 116 angeordnet.
  • Ein Cache für Cache-Tags 108 speichert einen Teilsatz der Off-Die-Cache-Tags auf dem Prozessorchip 102. Genauer gesagt, während die Tag-Speicherstruktur 114 alle Indexwerte und zugehörige Tag-Sätze pro Indexwert speichert, speichert andererseits der Cache für Cache-Tags 108 nicht alle möglichen Indexwerte. Zum Sparen von Speicherplatz speichert der Cache für Cache-Tags 108 vielmehr einen Teilsatz der Tags, der in der Tag-Speicherstruktur 114 gespeichert ist. In den meisten Ausführungsformen werden nicht alle Indexplätze zu irgendeinem bestimmten Zeitpunkt in dem Cache von Cache-Tags 108 repräsentiert.
  • In einigen Ausführungsformen ist die Information von allen Wegen eines Satzes für jedes passende Tag zwischen einem in dem Cache für Cache-Tags 108 gespeicherten Tag und der Tag-Speicherstruktur 114 notwendig. In anderen Ausführungsformen speichert der Cache für Cache-Tags 108 die Tags von weniger als allen Wegen. In einer Ausführungsform betragen die Speicheranforderungen eines Satzes 9,5 Bytes, was Tag-Information, Zustandsinformation, Räum/Cache-Ersetzungsstrategieinformation (LRU) und ECC-Information (wenn ECC verwendet wird) enthält. Die speziellen Details bezüglich der Tag-, Zustands-, LRU-Information und ECC-Komponenten werden ausführlicher in dem Abschnitt betreffend den Hintergrund diskutiert. In einigen Ausführungsformen benutzt der Cache für Cache-Tags eine Ersetzungsstrategie, die sich von der LRU-Strategie unterscheidet. Genauer gesagt würde die folgende Information in einem Satz eines Caches für Cache-Tags gespeichert werden: (14-bit-Tag + 2-Bit-Zustand) × 4 Wege + 4-Bit LRU + 8-Bit ECC = 9,5 Bytes.
  • Zum Speichern von 2 K (2^11) Sätzen in dem Cache für Cache-Tags wäre die Speicheranforderung dann 19 K (2 K*9,5 B). Die Details der Einträge in dem Cache für Cache-Tags werden unter Bezugnahme auf 2 unten diskutiert. Somit kann sich eine Ausführungsform eines Caches für Cache-Tags auf dem Prozessorchip befinden, um Nachschlagen der zuletzt verwendeten Tags durchzuführen, und beträgt die Belastung für den Chip 19 K. On-Die-Kosten von 19K-Speichergröße stellen eine viel geringere Speicherbelastung als die 9,5 M Größe einer Speicherstruktur für vollständige Tags dar.
  • In vielen Ausführungsformen ist der Cache für Cache-Tags 108 selbst ein satzassoziativer N-Wege-Cache. Zusätzlich speichert der Cache für Cache-Tags 108 in vielen Ausführungsformen die zuletzt aufgerufenen Tags. Der Cache für Cache-Tags 108 ist mit der Verbindung 100 gekoppelt. In einigen Ausführungsformen ermittelt ein Controller 110, der den Zugriff auf den Cache für Cache-Tags 108 steuert, wann eine Speicheranforderung mit einem Tag übereinstimmt, dass sich gegenwärtig in dem Cache für Cache-Tags 108 befindet, und berichtet dies an den Prozessor. In anderen Ausführungsformen kann die Speicheranforderung von einer von einer Anzahl von Einrichtungen in dem System, wie zum Beispiel einem der Prozessorkerne oder einer Bus-Master-E/A-Einrichtung neben anderen möglichen Speicheranforderungserzeugern stammen.
  • Jede Speicheranforderung (d. h. jeder Speicherzugriff) enthält eine Adresse für einen speziellen Platz in dem Systemspeicher. Die Tag-Speicherstruktur 114 enthält alle Tag-Sätze, die zu speziellen Plätzen in dem Off-Die-Cache-Speicher 116 gehören.
  • Wenn eine Speicheranforderung von dem Controller 110 erhalten wird, analysiert somit der Controller 110 die Index- und Tagfelder in der Speicheranforderungsadresse und überprüft er dann, um zu sehen, ob der Index des Tags, das zu dem speziellen Speicherplatz gehört, in dem Cache für Cache-Tags 108 gespeichert ist. Wenn der Originalindex gespeichert ist, dann prüft der Controller 110 als nächstes, ob das Originaltag, das zu dem Speicherplatz gehört, in dem Cache für Cache-Tags 108 in einem der Wege an dem Originalindexplatz gespeichert ist.
  • Wenn sich das Original-Tag in einem zu 108 zugehörigem Eintrag, der Originalindexstelle, befindet, dann ist das Ergebnis, dass die Speicheranforderung ein Tag-Treffer (d. h. Cache-Treffer) des Cache für Cache-Tags 108 ist. Wenn das Original-Tag nicht an der Indexstelle in der Tag-Speicherstruktur 114 gespeichert ist, dann ist das Ergebnis, dass die Speicheranforderung ein Tag-Fehlgriff des Caches für Cache-Tags 108 ist. Dies ist auch ein Cache-Fehlgriff, wenn die Tags von allen Wegen eines Satzes gecacht sind.
  • Andererseits, wenn der Controller 110 beim anfänglichen Nachschlagen den in dem Cache für Cache-Tags 108 gespeicherten Originalindex nicht findet, ist das Ergebnis, dass die Speicheranforderung ein Index-Fehlgriff des Caches für Cache-Tags 108 ist. In diesem Fall muss der Controller 110 den Originalindexwert aus der Speicheranforderung abrufen und dann in den Cache für Cache-Tags 108 einsetzen durch Ersetzen eines gegenwärtig in dem Cache für Cache-Tags 108 gespeicherten Indexes. In einigen Ausführungsformen, in denen CoCT selbst ein assoziativer Cache ist, ist die Ersetzungsstrategie eine am längsten nicht benutzte Strategie, bei der der am längsten nicht benutzte Indexwert ersetzt wird. In anderen Ausführungsformen können andere Standardersetzungsstrategieschemata verwendet werden, um den Indexwert in dem Cache für Cache-Tags 108 zu ersetzen.
  • Wenn der neue Indexwert in den Cache für Cache-Tags 108 eingesetzt worden ist, dann würde der Controller 110 bestimmen müssen, ob das spezielle zu der Speicheranforderung gehörige Tag gegenwärtig in der Tag-Speicherstruktur 114 an der Indexstelle gespeichert wird. Falls ja, dann ist das Ergebnis ein Tag-Treffer in der Tag-Speicherstruktur 114 und muss der Controller 110 Tag-Information in den Cache für Cache-Tags 108 an der neuen Indexposition für alle in der Tag-Speicherstruktur 114 an der Indexposition gespeicherten Wege eingeben.
  • Anderenfalls ist das Ergebnis ein Tag-Fehlgriff in der Tag-Speicherstruktur 114 und muss der Controller 110 das Ersetzen des am längsten nicht benutzten Tags (in einem der Wege an der Indexstelle in der Tag-Speicherstruktur 114) durch das zu der Speicheranforderung gehörige Tag initiieren. Dieser Ersatz gibt die Daten, die sich an der Adresse der Speicheranforderung vom Systemspeicher befinden, in den Cache-Speicher und gibt das Original-Tag von der Speicheranforderung in die Tag-Speicherstruktur 114. Wenn das Tag in die Tag-Speicherstruktur vom Systemspeicher eingegeben wird, dann kann in einigen Ausführungsformen der Controller 110 das Ersetzen aller Wege in dem Cache für Cache-Tags 108 (an dem Indexwert) durch die Tags von jedem Weg an dem Indexwert, der gegenwärtig in der Tag-Speicherstruktur 114 gespeichert ist, initiieren. In anderen Ausführungsformen ersetzt das Ersetzen weniger als alle Wege in dem Cache für Cache-Tags 108.
  • In einigen Ausführungsformen ist die Off-Die-Speicherzugriffsgröße nicht dieselbe wie die Eintragsgröße des Caches für Cache-Tags. Wenn die Off-Die-Speicherzugriffsgröße kleiner als die Eintragsgröße des Caches für Cache-Tags ist, kann der Controller mehrere Anforderungen zum Abrufen der Daten senden. Andererseits, wenn die Off-Die- Speicherzugriffsgröße größer als die Eintragsgröße des Caches für Cache-Tags ist, kann der Controller 110 zusätzliche Daten haben, die er nicht benötigt. In diesem Fall kann der Controller 110 die überschüssigen Daten in einigen Ausführungsformen verworfen.
  • In anderen Ausführungsformen kann der Controller 110 einen kleinen zugeordneten (associated) Speicher (nicht dargestellt) aufweisen, der dem Controller 110 ermöglichen würde, Teile der überschüssigen Daten intelligent vorher zu holen (prefetch) und in dem zugehörigen Speicher für eine potentielle zukünftige Verwendung zu speichern. Wenn zum Beispiel die ursprüngliche Cache-Tag-Größe 4 Bytes beträgt und die ursprüngliche Cache-Tag-Assoziativität 8 Wege beträgt, müsste der Eintrag in dem Cache für Cache-Tags 108 eine Größe von 32 Bytes aufweisen, um alle zugehörigen Wege zu speichern (4 Bytes × 8 Wege = 32 Byte-Tag-Satz-Eintrag). Nehmen wir nun an, dass der Abrufbefehl für den Erhalt von Information von der Tag-Speicherstruktur 114 jeweils 64 Bytes empfängt. In diesem Beispiel würde der Controller 110 die 32 Bytes, die zum Speichern eines vollständigen Satzeintrags des Caches für Cache-Tags erforderlich sind, sowie zusätzliche 32 Bytes von benachbarten Daten abrufen. In den Ausführungsformen, die einen kleinen zugehörigen (associated) Speicher verwenden, können die benachbarten 32 Bytes von Daten, die abgerufen wurden, in einem kleinen zugehörigen Speicher in oder nahe dem Controller 110 gespeichert werden, um als ein kleiner Prefetch-Puffer zu agieren. Da in einigen Fällen viele nachfolgende Zugriffe auf benachbarte Speicherplätze erfolgen, ist es wahrscheinlich, dass die benachbarten 32 Bytes in der nächsten Transaktion oder in der nahen Zukunft angefordert werden. Somit würde der kleine benachbarte Speicher intelligentes Prefetching von Tag-Sätzen für zukünftige Operationen des Caches für Cache-Tags 108 ermöglichen.
  • Außerdem kann der kleine zugehörige Speicher auch als ein Victim-Cache verwendet werden. In einer Ausführungsform mit Victim-Cache kann der kleine zugehörige Speicher die als letztes geräumten Tags in dem Cache für Cache-Tags 108 speichern, falls auf ein oder mehrere dieser Tags nachfolgend wieder zugegriffen wird.
  • Zusätzlich kann der Controller 110 mehrere Anforderungen bzw. Anfragen zum Abrufen von Eintragsdaten eines Caches für Caches-Tags 108 zu einer Anforderung bzw. Anfrage verbinden. Zum Beispiel können mehrere Indexabrufe eines Caches für Cache-Tags 108 zu einem Abruf verbunden werden.
  • In einigen alternativen Ausführungsformen wird ein Teil-Tag-Cache 118 zusätzlich zum Cache für Cache-Tags 108 verwendet. Der Teil-Tag-Cache 118 speichert, wie oben in dem Kapitel betreffend den Hintergrund beschrieben, nicht alle Tag-Bits und kann somit nur einen Cache-Fehlgriff mit Sicherheit und keinen Cache-Treffer ermitteln. Ein Cache für Cache-Tags kann andererseits nur einen Cache-Treffer mit Sicherheit und keinen Cache-Fehlgriff ermitteln. In in oben genannten alternativen Ausführungsformen, die einen Teil-Tag-Cache 118 sowie den Cache für Cache-Tags 108 verwenden, kann der Teil-Tag-Cache 118 für eine schnelle Bestimmung von Cache-Fehlgriffen verwendet werden und kann der Cache für Cache-Tags 108 für eine schnelle Bestimmung von Seitentreffern verwendet werden. In diesen Ausführungsformen kann der Controller 110 ein Nachschlagen in dem Teil-Tag-Cache 118 und in dem Cache für Cache-Tags 108 simultan initiieren. Falls der Teil-Tag-Cache 118 einen Seitenfehlgriff ermittelte, würde die Information von dem Cache für Cache-Tags verworfen. Im Falle eines Seitentreffers könnte jedoch das erforderliche Tag auf dem Chip (On-Die) in dem Cache für Cache-Tags 108 gefunden werden und eine Off-Die-Zugriffslatenzstrafe erspart werden.
  • In einigen Ausführungsformen ist der Cache-Speicher ein sektorierter Cache. In Ausführungsformen mit sektoriertem Cache sind die gesamten Tag-Speicheranforderungen in der Tag-Speicherstruktur 114 geringer, weil jedes Tag von mehreren Cache-Einträgen (z. B. Cache-Unterblöcken) geteilt wird.
  • In diesen Ausführungsformen mit sektoriertem Cache sind die Speicheranforderungen an Zustandsinformation erhöht, weil für jedes Tag Zustandsinformation für jeden potentiellen Eintrag vorhanden sein muss, der zum Tag gehört (Zustandsinformation wird in dem Kapitel betreffend den Hintergrund sowie bei der Erläuterung der 2 erörtert). Wenn zum Beispiel ein Tag 14 Bits beträgt, würden in einem nicht sektoriertem Cache 2 Bits von Zustandsinformation pro Sektor enthalten sein. In einem sektoriertem 8-Wege-Cache gibt es 8 Cache-Einträge, die zu jedem Tag gehören sind, so dass 2 Bits × 8 oder 16 Bits an Zustandsinformation pro Tag enthalten sein müssten. In diesem Beispiel kann die Zustandsinformation mehr Platz als die Tag-Information einnehmen.
  • Zur Reduzierung des Zustandsinformationsspeichereinflusses in einem sektoriertem Cache würde ein Satz von üblichen Zustandsinformationsmustern in einem sektoriertem Zustandsinformationsspeicher 120 gespeichert werden. Der sektorierte Zustandsinformationsspeicher 120 kann in vielen Ausführungsformen mit dem Controller 110 gekoppelt sein. In unserem Beispiel würde der sektorierte Zustandsinformationsspeicher 120 mehrere Muster aus 16 Bits speichern. In einigen Ausführungsformen würden die mehreren Muster die üblichsten Muster enthalten und würden vorab festgelegt und in dem sektorierten Zustandsinformationsspeicher 120 permanent vorliegen. In anderen Ausführungsformen würde Logik in dem Controller 110 die üblichsten Muster von verwendeter Zustandsinformation dynamisch ermitteln und die gespeicherten Muster entsprechend modifizieren.
  • Gewisse Zustandsinformationsmuster sind üblicher als andere. Betrachten wir die übliche Linearität von Speicherzugriffen. Wenn eine Anzahl von Speicheranforderungen an dem Controller 110 einträfe und sie alle in einem linearen Adressmuster vorliegen würden, würden die Zustandsinformationsbits ein sehr zuverlässigen Modifikationsmuster von vielleicht allen „1” zeigen.
  • Anstelle des Speicherns von 16 Bits von Zustandsinformation für jedes Tag könnte somit der Controller zum Beispiel 6-Bit-Zeiger auf ein Zustandsinformationsmuster in dem sektorierten Zustandsinformationsspeicher 120 speichern. Ein 6-Bit-Zeiger würde ermöglichen, dass 64 Zustandsinformationsmuster (2^6) in dem sektorierten Zustandsinformationsspeicher 120 gespeichert werden. Wenn das Muster üblich ist, könnte somit der Controller in diesem Beispiel den 6-Bit-Zeiger mit dem Tag anstelle des 16-Bit-Zustandsinformationsmusters speichern.
  • Zusätzlich ist der Systemspeicher 122, wie oben erwähnt, mit der Verbindung 100 unter den Off-Die-Cache(s) 116 in vielen Ausführungsformen gekoppelt. Dies ermöglicht, dass auf Daten von dem Speicherplatz in dem Fall zugegriffen werden kann, dass keiner der On-Die- und Off-Die-Caches die Zieldaten (und das Ziel-Tag) speichert.
  • 2 beschreibt eine Ausführungsform der Tag-Adressstruktur sowie der Satzstruktur des Caches für Cache-Tags und eines jeweiligen Tag-Adresseintrags in dem Cache für Cache-Tags in einer satzassoziativen N-Wege-Konfiguration.
  • In vielen Ausführungsformen würde eine Speicherzugriffsanforderung bezüglich eines 40-Bit-Adressraumes die folgenden Informationsstücke in dem 40-Bit-Adressfeld enthalten: Das Original-Tag-Feld, das Originalindexfeld und das Offset-Feld. Typischerweise wird nur das Original-Tag-Feld in einem Tag-Eintrag 200 gespeichert, der in der Tag-Speicherstruktur gespeichert ist. Bei Verwendung des 40-Bit-Adressierbeispiels mit einer Cache-Zeilengröße von 64 Byte in einem Direct-Mapped(1-Weg-assoziativer)-Cache von 256 M könnte ein Beispiel für die Größe jedes Feldes in der Adresse ein Original-12-Bit-Tag, einen 22-Bit-Index und einen 6-Bit-Offset enthalten. Das 22-Bit-Indexfeld ist ein Zeiger auf eine spezielle indizierte Stelle in der Tag-Speicherstruktur. Das Original-12-Bit-Tag kann die höchsten 12-Bits der aktuellen Speicheradresse sein. Die Größe des Tags wird auch durch seine Assoziativität und Cache-Zeilengröße bestimmt. In dem in dem Kapitel betreffend den Hintergrund beschriebenen Beispiel wird ein satzassoziativer 256 MB-4-Wege-Cache mit 64-Byte-Cache-Zeilen ein 20-Bit-Indexfeld und 4 M Tags (2^20 × 4) aufweisen, wobei jedes Tag eine Größe von 14 Bits aufweist.
  • 2 beschreibt auch eine Ausführungsform eines Tag-Satzes 202. Der Tag-Satz 202 für einen satzassoziativen 4-Wege-Cache speichert vier Tags. Jeder Weg (Weg 0–3) speichert ein spezielles Tag sowie eine spezielle Menge an Zustandsinformation bezüglich des zu jedem Tag gehörigen Cache-Eintrags. Zustandsinformation ist für jedes Tag spezifisch; somit müssen Zustandsinformationsbits zu jedem Tag gehören. Zusätzlich muss der Tag-Satz auch die Cache-Ersetzungsstrategieinformation, wie zum Beispiel LRU-Bits oder andere LRU-artige Information, enthalten, um den Controller darüber zu informieren, welches der vier Tags zur Räumung fällig ist, wenn ein neues Tag gespeichert werden muss. Schließlich können auch Fehlerkorrekturcode(error correction code (ECC))-Bits pro Satz verwendet werden, um die Speicherfehler des Tag-Satzes zu minimieren. Wie oben erwähnt, können zum Beispiel die Speicheranforderungen eines Satzes 9,5 Byte betragen, die die folgende Information enthalten: (14 Bit Tag + 2 Bit Zustand) × 4-Wege + 4 Bit LRU + 8 Bit ECC = 9,5 Bytes
  • 2 beschreibt auch eine Ausführungsform eines in dem Cache für Cache-Tags gespeicherten Tag-Satz-Eintrags (CoCT-Tag-Satz-Eintrag 204). Satzassoziative Caches sind im allgemeinen für viele Typen von Cache-Konfigurationen populär. Somit ist der Cache in vielen Ausführungsformen ein satzassoziativer Mehrweg-Cache. Somit muss ein Eintrag in dem Cache für Cache-Tags Tag-Information für alle Wege des Caches an der speziellen Indexstelle speichern (Inhalte/Daten von Tag-Satz 206). In diesen Ausführungsformen zeigt das Indexfeld (Adressieren von Tag-Satz 208) von der Originaladresse (wie oben erörtert, z. B. die 40-Bit-Adresskonfiguration) auf die Stelle eines Satzes von Tags, die in dem Cache für Cache-Tags gespeichert werden. In einigen Ausführungsformen wird die Struktur des Caches für Cache-Tags selbst auch in einer satzassoziativen Weise gespeichert. Somit wird das Originalindexfeld in cm Tag-Feld des Caches für Cache-Tags sowie ein Indexfeld des Caches für Cache-Tags unterteilt, um den Abruf eines Satzes in dem Cache von Cache-Tags zu ermöglichen. Zum Beispiel bei Verwendung eines Original-20-Bit-Indexfeldes von der 40-Bit-Adresse können die oberen 12 Bits des Originalindexfeldes als das Tag-Feld in dem satzassoziativen Cache für Cache-Tags verwendet werden. In diesem Beispiel können die unteren 8 Bits des Originalindexfeldes als das Indexfeld in einem Cache für Cache-Tags verwendet werden.
  • 3 zeigt ein Flussdiagramm einer Ausführungsform eines Prozesses zum Verwenden eines Caches für Cache-Tags zum Speichern eines Teilsatzes des Satzes von Tags, die zu einem Cache-Speicher gehören. Der Prozess wird durch Verarbeitungslogik durchgeführt, die Hardware (Schaltkreise, dedizierte Logik, etc.), Software (wie z. B. auf einem Allzweckcomputersystem oder einer dedizierten Maschine läuft) oder eine Kombination von beiden umfassen kann. Unter Bezugnahme auf 3 beginnt der Prozess dadurch, dass die Verarbeitungslogik eine Vielzahl von Tags in einer Tag-Speicherstruktur speichert (Verarbeitungsblock 300). In vielen Ausführungsformen ist jedes Tag einer Datenstelle zugeordnet, die in einem Cache-Speicher gespeichert ist. Der vollständige Satz von Tags, die in der Speicherstruktur gespeichert sind, ist für alle Datenstellen in dem Cache-Speicher verantwortlich. Der Cache-Speicher kann irgendein Allzweck- oder Spezialzweck-Cache in einem Computersystem oder einer anderen computerbezogenen Einrichtung sein. In vielen Ausführungsformen befindet sich der Cache-Speicher in einem Computersystem mit einem oder mehreren Prozessorkern(en). In vielen Ausführungsformen befindet sich der Cache-Speicher auf einem separaten Siliziumchip von dem Prozessorkern/den Prozessorkernen. Außerdem befindet sich in vielen Ausführungsformen die Tag-Speicherstruktur auf demselben Siliziumchip wie der Cache-Speicher.
  • Unter Bezugnahme auf 3 speichert die Verarbeitungslogik als nächstes einen Teilsatz der in der Tag-Speicherstruktur gespeicherten Tags in einem Cache für Cache-Tags (Verarbeitungsblock 302). In vielen Ausführungsformen speichert der Cache für Cache-Tags nur einen kleinen Teil des gesamten Satzes von Tags, die in der Tag-Speicherstruktur gespeichert sind. Zum Beispiel in dem oben unter Bezugnahme auf den Hintergrund sowie die 1 beschriebenen beispielhaften Ausführungsformen werden für einen satzassoziativen 256 MB-4-Wege-Cache-Speicher mit 64 Byte-Cache-Zeilen 4 M (2^22) Tags in der Tag-Speicherstruktur gespeichert. Dagegen kann der Cache für Cache-Tags einen Bruchteil davon, wie zum Beispiel 8 K (2^13) Tags, speichern. In vielen Ausführungsformen speichert der Cache für Cache-Tags Tags von der Tag-Speicherstruktur in einer zuletzt verwendeten Weise, wobei die zuletzt angeforderten Speicherplätze die Plätze sind, deren Tags in dem Cache für Cache-Tags gespeichert sind.
  • Während 3 den allgemeinen Prozess für das, was der Cache für Cache-Tags im Verhältnis zur Tag-Speicherstruktur speichert, zeigt, beschreibt 4 ein Flussdiagramm einer Ausführungsform eines Prozesses zur Verwendung eines Caches für Cache-Tags. Der Prozess wird von Verarbeitungslogik durchgeführt, die Hardware (Schaltkreise, dedizierte Logik etc.), Software (wie sie auf einem Allzweckcomputersystem oder einer dedizierten Maschine läuft) oder eine Kombination von beiden umfassen kann. Unter Bezugnahme auf 4 beginnt der Prozess, indem Verarbeitungslogik eine Speicheranforderung empfangt (Verarbeitungsblock 400). Die Speicheranforderung enthält die Adresse eines Speicherplatzes bzw. einer Speicherstelle. In vielen Ausführungsformen entsprechen die oberen Bits der Adresse dem Tag des Speicherplatzes und entsprechen die mittleren Bits der Adresse einem Index in eine Tag-Speicherstruktur, die zu einem Cache-Speicher gehört. Die speziellen Details bezüglich des Tag-Feldes und Indexfeldes werden oben unter Bezugnahme auf 2 beschrieben.
  • In anderen Ausführungsformen kann die Speicheranforderung von einer von einer Anzahl von Einrichtungen in dem System, wie zum Beispiel einem der Prozessorkerne oder einer Bus-Master-E/A-Einrichtung neben anderen möglichen Speicheranforderungserzeugern stammen. Die Speicheranforderung wird eventuell zu einem Controller gefiltert, der einen Cache für Cache-Tags steuert (CoCT in 4). Danach analysiert Verarbeitungslogik in dem Controller den Originalindexwert und den Original-Tag-Wert aus der Adresse der Speicheranforderung (Verarbeitungsblock 402).
  • Wenn der Originalindex und das Original-Tag in der Speicheranforderung bekannt sind, dann ermittelt Verarbeitungslogik, ob der Originalindex in dem Cache für Cache-Tags gegenwärtig gespeichert wird (Verarbeitungsblock 404). Wenn der Originalindex nicht gegenwärtig in dem Cache für Cache-Tags gespeichert wird, dann gibt es einen Index-Fehlgriff in dem Cache für Cache-Tags und kann Verarbeitungslogik den Originalindex in den Cache für Cache-Tags einfügen (Verarbeitungsblock 406). In vielen Ausführungsformen wird der Originalindex an eine Stelle in dem Cache für Cache-Tags eingefügt, die durch Ersetzen (Räumen) des am längsten nicht benutzten gespeicherten Indexwertes freigesetzt wird. In einigen Ausführungsformen kann Verarbeitungslogik den Index abrufen und dann den Index zuweisen und einfügen. In anderen Ausführungsformen kann Verarbeitungslogik zuerst den Platz bzw. Raum zuweisen und dann den Index abrufen und einfügen.
  • Wenn der Index, der geräumt wird, aktualisiert worden ist, seitdem er den Cache für Cache-Tags gebracht worden ist, dann muss dieser Index an seine Originalspeicherstelle zurückgeschrieben werden.
  • Wenn der Originalindex in den Cache für Cache-Tags eingefügt wird, weiß Verarbeitungslogik, dass das Original-Tag nicht in dem Cache für Cache-Tags sein wird, da die einzige Chance, dass es dort gewesen sein könnte, bestünde, wenn der Originalindex bereits in dem Cache für Cache-Tags gespeichert worden ist. Somit muss Verarbeitungslogik ermitteln, ob sich das Original-Tag in der Tag-Speicherstruktur (Tag Storage Structure (TSS) in 4) befindet (Verarbeitungsblock 408). Das Original-Tag wird sich in der Tag-Speicherstruktur nur befinden, wenn die Daten von der Stelle in dem Speicher, auf die die Speicheranforderung zeigt, gegenwärtig in dem Cache gespeichert werden, der von der Tag-Speicherstruktur referenziert wird. Wenn sich das Original-Tag in der Tag-Speicherstruktur befindet, dann ruft Verarbeitungslogik das Original-Tag ab und fügt es in den Cache für Cache-Tags ein (Verarbeitungsblock 410). Wenn das Original-Tag in den Tag für Cache-Tags eingefügt ist, kann Verarbeitungslogik die Tags von allen Wegen am Indexwert in der Tag-Speicherstruktur (dem Tag-Satz) kopieren, nicht nur den Weg, der das Original-Tag selbst speichert (Verarbeitungsblock 420). In anderen Ausführungsformen kann Verarbeitungslogik weniger als die Tags von all den Wegen an dem Indexwert in der Tag-Speicherstruktur kopieren. Schließlich liest Verarbeitungslogik Daten in dem Cache-Speicher, der zum Tag gehört, um die Speicheranforderung abzuschließen (Verarbeitungsblock 422).
  • Wenn sich das Original-Tag nicht in der Tag-Speicherstruktur befindet, weiß anderenfalls Verarbeitungslogik nun, dass die Daten, auf die durch die Adresse in der Speicheranforderung gezeigt wird, sich überhaupt nicht in dem Cache befinden; vielmehr befinden sich die Daten in Hauptsystemspeicher. In diesem Fall muss Verarbeitungslogik das Original-Tag in die Tag-Speicherstruktur einfügen (in derselben Weise, wie normalerweise Tags in die Tag-Speicherstruktur während normalen Cache-Betriebs eingefügt werden) und kann Verarbeitungslogik auch den Tag-Satz, der das ursprüngliche Tag enthält, in den Cache für Cache-Tags einfügen (Verarbeitungsblock 412). In diesem Beispiel muss Verarbeitungslogik zusätzliche Verarbeitungsschritte zum Einfügen des Tags durchführen. In einigen Ausführungsformen wird dieses Ergebnis bewirken, dass Verarbeitungslogik ein altes Tag in der TSS unter Verwendung der gegenwärtigen Räumungsstrategie zur Bestimmung, welches alte Tag geräumt werden soll, räumt und das alte Tag durch das einzufügende Original-Tag ersetzt (Verarbeitungsblock 418). Als nächstes kann Verarbeitungslogik, wie oben erwähnt, den gesamten Satz von Wegen, die dem Originalindex zugeordnet sind, einfügen, wenn Tags in die Struktur des Caches für Cache-Tags eingefügt werden (Verarbeitungsblock 420). In anderen Ausführungsformen werden mit weniger als dem gesamten Satz von Wegen an dem ursprünglichen Index verbundene Tags in die Struktur des Caches für Cache-Tags eingefügt. Schließlich liest Verarbeitungslogik Daten in dem Cache-Speicher, der zu dem Tag gehört, um die Speicheranforderung abzuschließen (Verarbeitungsblock 422).
  • Unter Bezugnahme auf Verarbeitungsblock 404 muss dann, wenn sich der Originalindex in dem Cache für Cache-Tags befindet, Verarbeitungslogik ermitteln, ob sich das Original-Tag in dem Cache für Cache-Tags befindet (Verarbeitungsblock 414). Wenn das Original-Tag nicht in dem Cache für Cache-Tags gespeichert ist, dann schreitet Verarbeitungslogik zu Verarbeitungsblock 408 vor (oben beschrieben). Alternativ, wenn das Original-Tag in dem Cache für Cache-Tags gespeichert ist, dann verifiziert Verarbeitungslogik, dass es einen Original-Tag-Treffer in dem Cache für Cache-Tags gibt (Verarbeitungsblock 416). In dieser Ausführungsform kann Verarbeitungslogik Daten in dem Cache-Speicher, der zu dem Tag gehört, lesen, um die Speicheranforderung abzuschließen (Verarbeitungsblock 422) und entsprechend voranzuschreiten. Zum Einfügen des Originalindex in Cache für Cache-Tags ist es möglich, dass ein existierender Index(alter Index)-Eintrag ersetzt werden muss. Wenn sich die zu diesem Eintrag gehörige Daten in einem modifizierten Zustand befinden, dann aktualisiert Verarbeitungslogik auch die Tag-Speicherstruktur an der Stelle, wo die Tag-Speicherstruktur die Tags speichert, die zu dem ersetzten Index gehören, der in dem Cache für Cache-Tags modifiziert wurde.
  • Somit werden Ausführungsformen einer Vorrichtung, eines Systems und eines Verfahrens zum Implementieren eines Caches für Cache-Tags beschrieben. Diese Ausführungsformen sind unter Bezugnahme auf spezielle beispielhafte Ausführungsformen derselben beschrieben worden. Es wird für Personen, die von dieser Offenbarung profitieren, ersichtlich sein, dass zahlreiche Modifikationen und Änderungen an diesen Ausführungsformen vorgenommen werden können, ohne aus dem breiteren Geist und Schutzbereich der hierin beschriebenen Ausführungsformen zu gelangen.
  • Die Beschreibung und Zeichnungen sollen dementsprechend in einem erläuternden anstelle eines beschränkenden Sinnes angesehen werden.
  • Zusammenfassung
  • Es werden eine Vorrichtung, ein System und ein Verfahren offenbart. In einer Ausführungsform enthält die Vorrichtung einen mit einem Prozessor gekoppelten Cache-Speicher. Die Vorrichtung enthält zusätzlich eine Tag-Speicherstruktur, die mit dem Cache-Speicher gekoppelt ist. Die Tag-Speicherstruktur kann ein Tag speichern, das zu einer Stelle in dem Cache-Speicher gehört. Die Vorrichtung enthält zusätzlich einen Cache für Cache-Tags, der mit dem Prozessor gekoppelt ist. Der Cache für Cache-Tags kann einen kleineren Teilsatz der in der Tag-Speicherstruktur gespeicherten Tags speichern.

Claims (20)

  1. Vorrichtung, umfassend: einen mit einem Prozessor gekoppelten Cache-Speicher; eine Tag-Speicherstruktur, die mit dem Cache-Speicher gekoppelt ist, wobei die Tag-Speicherstruktur zum Speichern einer Vielzahl von Tags dient, wobei jedes Tag zu einer Datenstelle gehört, die in dem Cache-Speicher gespeichert ist; und einen Cache für Cache-Tags, der mit dem Prozessor gekoppelt ist, wobei der Cache für Cache-Tags zum Speichern eines Teilsatzes von einem oder mehreren der Vielzahl von in der Tag-Speicherstruktur gespeicherten Tags dient.
  2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, dass der Cache für Cache-Tags eines oder mehrere der in der Tag-Speicherstruktur gespeicherten als letztes verwendeten Tags enthält.
  3. Vorrichtung nach Anspruch 1, ferner umfassend einen Teil-Tag-Cache, der mit dem Prozessor gekoppelt ist, wobei der Teil-Tag-Cache ermittelt, wann eine Speicheranforderung zu einem Cache-Fehlgriff führt, und der Cache für Cache-Tags ermittelt, wann die Speicheranforderung zu einem Cache-Treffer führt.
  4. Vorrichtung nach Anspruch 1, ferner umfassend einen Controller, der mit dem Prozessor gekoppelt ist, wobei der Controller zum Bestimmen des Auftretens einer Tag-Übereinstimmung dient, wobei die Tag-Übereinstimmung auftritt, wenn ein Original-Tag, das einer Speicheranforderung gehört, einem gespeicherten Tag an einer Stelle entspricht, die auf die Tag-Übereinstimmung überprüft wird.
  5. Vorrichtung nach Anspruch 4, dadurch gekennzeichnet, dass der Controller ferner betreibbar ist, um einen Originalindex von einer Adresse in der Speicheranforderung zu bestimmen; den Originalindex in den Cache für Cache-Tags einzufügen, indem ein sich gegenwärtig in dem Cache für Cache-Tags befindender Index überschrieben wird, wobei sich der Originalindex sich nicht bereits in dem Cache für Cache-Tags befindet.
  6. Vorrichtung nach Anspruch 5, dadurch gekennzeichnet, dass der Controller ferner betreibbar ist, um die Tag-Übereinstimmung in dem Cache für Cache-Tags zu prüfen, wenn sich der Originalindex von der Speicheranforderung in dem Cache für Cache-Tags befindet; um die Tag-Übereinstimmung in der Tag-Speicherstruktur zu prüfen, wenn sich der Originalindex von der Speicheranforderung nicht in dem Cache für Cache-Tags befindet; und das Original-Tag von einem Systemspeicher abzurufen, wenn weder eine Tag-Übereinstimmung in dem Cache für Cache-Tags noch eine Tag-Übereinstimmung in der Tag-Speicherstruktur vorliegt.
  7. Vorrichtung nach Anspruch 6, dadurch gekennzeichnet, dass der Controller ferner betreibbar ist, um das Original-Tag in den Cache für Cache-Tags einzufügen, wenn es keine Tag-Übereinstimmung in dem Cache für Cache-Tags gibt; und das Original-Tag in die Tag-Speicherstruktur einzufügen, wenn es keine Tag-Übereinstimmung in der Tag-Speicherstruktur gibt.
  8. Vorrichtung nach Anspruch 4, dadurch gekennzeichnet, dass die Vorrichtung ferner eine sektorierte Zustandsinformationsspeichereinheit umfasst, die mit dem Controller gekoppelt ist, wobei die sektorierte Zustandsinformationsspeichereinheit zum Speichern einer Vielzahl von üblichen Zustandsinformationsmustern dient.
  9. Vorrichtung nach Anspruch 8, dadurch gekennzeichnet, dass der Controller ferner betreibbar ist, um einen Zeiger auf ein übliches Zustandsinformationsmuster, das in der sektorierten Zustandsinformationsspeichereinheit gespeichert ist, anstelle eines Satzes von Zustandsinformationsbits, die zu einem Tag in dem Cache für Cache-Tags gehören, zu speichern.
  10. System, umfassend: eine Verbindung; einen Prozessor, der sich auf einem ersten Siliziumchip befindet und mit der Verbindung gekoppelt ist; einen Cache-Speicher, der sich auf einem zweiten Siliziumchip befindet und mit der Verbindung gekoppelt ist; eine Tag-Speicherstruktur, die sich auf dem zweiten Siliziumchip befindet und mit der Verbindung gekoppelt ist, wobei die Tag-Speicherstruktur zum Speichern einer Vielzahl von Tags dient, wobei jedes Tag zu einer Datenstelle gehört, die in dem Cache-Speicher gespeichert ist; und einen Cache für Cache-Tags, der sich auf dem ersten Siliziumchip befindet und mit der Verbindung gekoppelt ist, wobei der Cache für Cache-Tags zum Speichern eines Teilsatzes von einem oder mehreren der Vielzahl von Tags dient, die in der Tag-Speicherstruktur gespeichert sind.
  11. System nach Anspruch 10, dadurch gekennzeichnet, dass das System ferner einen mit dem Prozessor gekoppelten Teil-Tag-Cache umfasst, wobei der Teil-Tag-Cache ermittelt, warm eine Speicheranforderung zu einem Cache-Fehlgriff führt, und der Cache für Cache-Tags ermittelt, wann die Speicheranforderung zu einem Cache-Treffer führt.
  12. System nach Anspruch 10, dadurch gekennzeichnet, dass das System ferner einen Controller umfasst, der mit dem Prozessor gekoppelt ist, wobei der Controller zum Ermitteln des Auftretens einer Tag-Übereinstimmung dient, wobei die Tag-Übereinstimmung auftritt, wenn ein mit einer Speicheranforderung verbundenes Original-Tag gleich einen gespeicherten Tag an einer Stelle ist, die auf Tag-Übereinstimmung überprüft wird.
  13. System nach Anspruch 12, dadurch gekennzeichnet, dass der Controller ferner betreibbar ist, um einen Originalindex von einer Adresse in der Speicheranforderung zu bestimmen; den Originalindex in dem Cache für Cache-Tags einzufügen, indem ein sich gegenwärtig in dem Cache für Cache-Tags befindender Index überschrieben wird, wenn sich der Originalindex nicht bereits in dem Cache für Cache-Tags befindet.
  14. System nach Anspruch 13, dadurch gekennzeichnet, dass der Controller ferner betreibbar ist, um die Tag-Übereinstimmung in dem Cache für Cache-Tags zu prüfen, wenn sich der Originalindex von der Speicheranforderung in dem Cache für Cache-Tags befindet; die Tag-Übereinstimmung in der Tag-Speicherstruktur zu überprüfen, wenn sich der Originalindex von der Speicheranforderung nicht in dem Cache für Cache-Tags befindet; und das Original-Tag von einem Systemspeicher abzurufen, wenn es weder eine Tag-Übereinstimmung in dem Cache für Cache-Tags noch eine Tag-Übereinstimmung in der Tag-Speicherstruktur gibt.
  15. System nach Anspruch 14, dadurch gekennzeichnet, dass der Controller ferner betreibbar ist, um das Original-Tag in den Cache für Cache-Tags einzufügen, wenn es keine Tag-Übereinstimmung in dem Cache von Cache-Tags gibt; und das Original-Tag in die Tag-Speicherstruktur einzufügen, wenn es keine Tag-Übereinstimmung in der Tag-Speicherstruktur gibt.
  16. Verfahren, umfassend: Speichern einer Vielzahl von Tags in einer Tag-Speicherstruktur, wobei jedes Tag zu einer Datenstelle gehört, die in einem Cache-Speicher gespeichert ist, wobei der Cache-Speicher mit einem Prozessor gekoppelt ist; und Speichern eines Teilsatzes von einem oder mehreren der Vielzahl von Tags, aber weniger als alle der Vielzahl von Tags, die in der Tag-Speicherstruktur gespeichert sind, in einem Cache für Cache-Tags.
  17. Verfahren nach Anspruch 16, ferner umfassend Bestimmen des Auftretens einer Tag-Übereinstimmung, wobei die Tag-Übereinstimmung auftritt, wenn ein Original-Tag, das zu einer Speicheranforderung gehört, einem gespeicherten Tag an einer Stelle gleicht, die auf die Tag-Übereinstimmung überprüft wird.
  18. Verfahren nach Anspruch 17, ferner umfassend: Bestimmen eines Originalindexes von einer Adresse in der Speicheranforderung; und Einfügen des Originalindexes in den Cache für Cache-Tags, indem ein sich gegenwärtig in dem Cache von Cache-Tags befindender Index überschrieben wird, wenn sich der Originalindex nicht bereits in dem Cache für Cache-Tags befindet.
  19. Verfahren nach Anspruch 18, ferner umfassend: Prüfen der Tag-Übereinstimmung in dem Cache für Cache-Tags, wenn sich der Originalindex von der Speicheranforderung in dem Cache für Cache-Tags befindet; Prüfen der Tag-Übereinstimmung in der Tag-Speicherstruktur, wenn sich der Originalindex von der Speicheranforderung nicht in dem Cache für Cache-Tags befindet; und Aufrufen des Original-Tags von einem Systemspeicher, wenn weder eine Tag-Übereinstimmung in dem Cache für Cache-Tags noch eine Tag-Übereinstimmung in der Tag-Speicherstruktur vorliegt.
  20. Verfahren nach Anspruch 19, ferner umfassend: Einfügen des Original-Tags in den Cache für Cache-Tags, wenn keine Tag-Übereinstimmung in dem Cache für Cache-Tags vorliegt; und Einfügen des Original-Tags in die Tag-Speicherstruktur, wenn keine Tag-Übereinstimmung in der Tag-Speicherstruktur vorliegt.
DE112008001666T 2007-06-29 2008-06-24 Hierarchische Cache-Tag-Architektur Withdrawn DE112008001666T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/771,774 US20090006757A1 (en) 2007-06-29 2007-06-29 Hierarchical cache tag architecture
US11/771,774 2007-06-29
PCT/US2008/068044 WO2009006113A2 (en) 2007-06-29 2008-06-24 Hierarchical cache tag architecture

Publications (1)

Publication Number Publication Date
DE112008001666T5 true DE112008001666T5 (de) 2010-09-16

Family

ID=39721952

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112008001666T Withdrawn DE112008001666T5 (de) 2007-06-29 2008-06-24 Hierarchische Cache-Tag-Architektur

Country Status (7)

Country Link
US (1) US20090006757A1 (de)
EP (1) EP2017738A1 (de)
JP (1) JP5087676B2 (de)
CN (1) CN101689146B (de)
DE (1) DE112008001666T5 (de)
TW (1) TW200908009A (de)
WO (1) WO2009006113A2 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090327577A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Hybrid storage
CN104461942B (zh) * 2009-09-15 2018-06-08 威盛电子股份有限公司 串流上下文的高速缓存系统
US8990506B2 (en) 2009-12-16 2015-03-24 Intel Corporation Replacing cache lines in a cache memory based at least in part on cache coherency state information
US8612809B2 (en) 2009-12-31 2013-12-17 Intel Corporation Systems, methods, and apparatuses for stacked memory
KR20130079706A (ko) * 2012-01-03 2013-07-11 삼성전자주식회사 휘발성 메모리를 포함하는 저장 장치의 구동 방법
US9495305B1 (en) * 2012-11-02 2016-11-15 David Fuchs Detecting pointer errors for memory protection
US20140215158A1 (en) * 2013-01-31 2014-07-31 Hewlett-Packard Development Company, L.P. Executing Requests from Processing Elements with Stacked Memory Devices
US9141484B2 (en) * 2013-03-15 2015-09-22 Seagate Technology Llc Transiently maintaining ECC
US10019352B2 (en) * 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
CN104636268B (zh) * 2013-11-08 2019-07-26 上海芯豪微电子有限公司 一种可重构缓存产品与方法
US9558120B2 (en) * 2014-03-27 2017-01-31 Intel Corporation Method, apparatus and system to cache sets of tags of an off-die cache memory
US9594910B2 (en) 2014-03-28 2017-03-14 Intel Corporation In-system provisioning of firmware for a hardware platform
GB2546245B (en) * 2016-01-05 2020-08-19 Advanced Risc Mach Ltd Cache memory
US10042576B2 (en) * 2016-08-17 2018-08-07 Advanced Micro Devices, Inc. Method and apparatus for compressing addresses
CN114780031B (zh) * 2022-04-15 2022-11-11 北京志凌海纳科技有限公司 一种基于单机存储引擎的数据处理方法和装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02294751A (ja) * 1989-05-09 1990-12-05 Mitsubishi Electric Corp キヤツシユメモリ制御装置
US5414827A (en) * 1991-12-19 1995-05-09 Opti, Inc. Automatic cache flush
US5559987A (en) * 1994-06-30 1996-09-24 Digital Equipment Corporation Method and apparatus for updating a duplicate tag status in a snoop bus protocol based computer system
US5813031A (en) * 1994-09-21 1998-09-22 Industrial Technology Research Institute Caching tag for a large scale cache computer memory system
JP3585349B2 (ja) * 1997-08-27 2004-11-04 富士通株式会社 キャッシュメモリを備えた情報処理装置
US6212602B1 (en) * 1997-12-17 2001-04-03 Sun Microsystems, Inc. Cache tag caching
US20040225830A1 (en) * 2003-05-06 2004-11-11 Eric Delano Apparatus and methods for linking a processor and cache

Also Published As

Publication number Publication date
JP2010532537A (ja) 2010-10-07
WO2009006113A2 (en) 2009-01-08
TW200908009A (en) 2009-02-16
CN101689146B (zh) 2012-09-26
EP2017738A1 (de) 2009-01-21
JP5087676B2 (ja) 2012-12-05
WO2009006113A3 (en) 2009-04-30
US20090006757A1 (en) 2009-01-01
CN101689146A (zh) 2010-03-31

Similar Documents

Publication Publication Date Title
DE112008001666T5 (de) Hierarchische Cache-Tag-Architektur
DE69514165T2 (de) Mehrstufige Cache-Speicheranordnung
DE69518676T2 (de) Cache-Speicheranordnung für einen Speicher
DE69424767T2 (de) Kohärente Schreibtransaktionen für Teilzeilen eines Cache-Speichers
DE102013204414B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen in einer Cachespeicherhierarchie mit mehreren Ebenen
DE69031978T2 (de) Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern
DE69708188T2 (de) Speichersteuerungseinheit
DE102013022610B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen
DE69323790T2 (de) Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
DE69432133T2 (de) Datenprozessor mit Cache-Speicher
DE10232926B4 (de) Verfahren zum Aufrechterhalten der Kohärenz in einer hierarchischen Cacheanordnung eines Computersystems
DE69130086T2 (de) Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE69327387T2 (de) An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung
DE68926059T2 (de) Organisation einer integrierten Cache-Einheit zur flexiblen Verwendung beim Entwurf von Cache-Systemen
DE68927172T2 (de) Multiprozessorsystem mit cache-speichern
DE69228679T2 (de) Speicher, speichersteuerungsvorrichtung und speichersteuerungsverfahren zur anwendung mit einem copy-back-cachespeichersystem
DE112013000889B4 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE69527383T2 (de) Virtuelle Speicheranordnung
DE112005002268T5 (de) Verfahren und Vorrichtung für eine vorwärtslaufende Victim-Auswahl zum Verringern eines unerwünschten Ersatzverhaltens in inklusiven Caches
DE69937611T2 (de) Intelligenter Puffer-Speicher
DE112006002565T5 (de) Befehlsunterstützte Cache-Verwaltung für den effizienten Einsatz von Cache und Speicher
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE102008048627A1 (de) Zuteilen von Platz in dedizierten Cache-Wegen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140101