DE69935737T2 - Verfahren und gerät um zeitliche und feste daten in einer einzelspeicherstruktur zu verwalten - Google Patents

Verfahren und gerät um zeitliche und feste daten in einer einzelspeicherstruktur zu verwalten Download PDF

Info

Publication number
DE69935737T2
DE69935737T2 DE69935737T DE69935737T DE69935737T2 DE 69935737 T2 DE69935737 T2 DE 69935737T2 DE 69935737 T DE69935737 T DE 69935737T DE 69935737 T DE69935737 T DE 69935737T DE 69935737 T2 DE69935737 T2 DE 69935737T2
Authority
DE
Germany
Prior art keywords
cache
data
temporal
replacement
access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69935737T
Other languages
English (en)
Other versions
DE69935737D1 (de
Inventor
John H. Saratoga Crawford
Gautam Sunnyvale DOSHI
Stuart E. Campbell SAILER
John Wai Saratoga FU
Gregory S. Santa Clara MATHEWS
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 DE69935737D1 publication Critical patent/DE69935737D1/de
Application granted granted Critical
Publication of DE69935737T2 publication Critical patent/DE69935737T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning

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

  • Stand der Technik
  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft Systeme und Verfahren zum Caching bzw. Cache-Speichern von Daten, und im Besonderen betrifft sie Systeme und Verfahren zum Verwalten temporaler und nicht-temporaler Daten in einem einzigen Cache.
  • Beschreibung des Stands der Technik
  • Die Prozessorgeschwindigkeiten nehmen schneller zu als die Geschwindigkeiten der Speichersysteme, die sie mit Daten versorgen. Eine weit verbreitete Strategie für die Adressierung der Diskrepanz zwischen den Prozessor- und Speichergeschwindigkeiten ist die Organisation des Speichersystems als eine Hierarchie von Speicherstrukturen. Diese Hierarchie weist für gewöhnlich einen Hauptspeicher und einen oder mehrere Caches auf. Ein kleiner Cache, z.B. ein Cache L0, befindet sich nahe an der Kern-Pipeline des Prozessors, um für den Prozessor einen schnellen Zugriff auf ausgewählte Daten aus einem Arbeitsdatensatz bzw. aktuellen Datensatz bereitzustellen. Größere Caches (L1, L2, ...) bieten Platz für zunehmend größere Abschnitte des Arbeitsdatensatzes, wobei sie jedoch längere Zeiten für den Zugriff auf die Daten erfordern. Datenanfragen bzw. Datenanforderungen werden von der untersten bzw. niedrigsten Ebene der Speicherhierarchie erfüllt, welche die angeforderten Informationen speichert.
  • Die Caches werden klein gehalten, um deren Zugriffsgeschwindigkeiten zu erhöhen, und die Größen von „auf dem Chip vorgesehenen" Caches, wie z.B. L0 und L1 sind darüber hinaus beschränkt, um deren Auswirkung auf die Fläche des Prozessorchips zu reduzieren. Folglich ist der Speicherplatz in Cache-Speichern sehr wertvoll, und die in einem Cache gespeicherten Daten müssen intelligent ausgewählt werden, um die Vorteile des Caching bzw. der Cache-Speicherung vollständig zu nutzen. Die Strategien richten sich für gewöhnlich auf die Erhöhung der Wahrscheinlichkeit, dass Daten, die häufig angefordert werden, von einem der Low Level-Caches zur Verfügung stehen.
  • Cache-Speicher nutzen den Gedanken der räumlichen und temporalen Lokalität zum Speichern von Daten, die wahrscheinlich von einem Programm angefordert werden, das sich näher an der Prozessor-Pipeline befindet. Die räumliche Lokalität betrifft die Tendenz eines Programms, auf Daten innerhalb eines bestimmten Bereichs des Speichers zuzugreifen, vor dem Wechsel zu einem anderen Speicherbereich. Wenn auf Daten an einer bestimmten Speicheradresse zugegriffen wird, ist es auch wahrscheinlich, dass auch auf eine benachbarte Speicheradresse zugegriffen wird. Cache-Speicher nutzen die räumliche Lokalität, indem Datenblöcke aus benachbarten Speicherplätzen in dem gleichen Cache-Eintrag oder einer Cache-Zeile gespeichert werden.
  • Die temporale Lokalität betrifft die Wahrscheinlichkeit, dass auf ein Datenelement, auf das durch ein Programm zugegriffen wird, bald wieder zugegriffen wird. Die Zeitskala, in Bezug auf welche „bald" bestimmt wird, ist die Zeit, die Daten in einem Cache verbringen („Lebensdauer"), bevor sie aus diesem ausgeworfen werden, um Platz für neue Daten zu schaffen. Daten, für die es wahrscheinlich ist, dass auf sie während der Lebensdauer wiederholt zugegriffen wird, sind als nicht-temporale Daten gekennzeichnet.
  • Die temporale und räumliche Beschaffenheit von Daten kann durch eine Matrixmultiplikation veranschaulicht werden: A·B = C, wobei A, B und C gegeben sind durch:
    Figure 00020001
  • Dabei ist aij das Element in der j-ten Spalte der i-ten Zeile der Matrix A, wobei bj das j-te Element in dem Spaltenvektor B ist, und wobei ci das i-te Element in dem resultierenden Spaltenvektor C ist. Jedes Element von C steht wie folgt im Verhältnis zu den Elementen von A und B:
    Figure 00030001
    wobei n die Anzahl der Spalten in A darstellt.
  • Zur Evaluierung eines Elements ci greift der Prozessor sequentiell auf die Elemente der Zeile i von A (aji... ain) zu und multipliziert den Wert jeweils mit dem entsprechenden Element von B(b1...bn). Die Zeilenelemente von A sind somit räumlich lokal, und somit es der Platz zulässt, werden sie in der gleichen Cache-Zeile gespeichert. Die Zeilenelemente von A sind jedoch nicht temporal lokal, da auf sie nur einmal zur Evaluierung von Gleichung (I) zugegriffen wird.
  • Die Elemente von B sind ebenfalls räumlich lokal, da auf sie sequentiell zugegriffen wird, während der Prozessor durch entsprechende Zeilenelemente von A verläuft, gemäß Gleichung (II). Folglich werden sie in der gleichen Cache-Zeile gespeichert, sofern dies der Platz zulässt. Die temporale Eigenschaft der Elemente von B ist teilweise abhängig von der Cache-Größe. Wenn der Cache groß genug ist, um die Elemente von A und B aufzunehmen, so sind die Elemente von B auch temporal lokal, da auf sie für jede Zeile der Matrix A zugegriffen werden kann. In Bezug auf größere Matrizen und Vektoren in kleineren Cache-Speichern müssen unter Umständen bestimmte Vektorelemente verworfen werden, um Platz für die Matrixelemente bereitzustellen. Dies kann häufig jedoch durch verschiedene Blockierungs- bzw. Sperrtechniken verhindert werden.
  • Es ist eindeutig wünschenswert, Cache-Speicherplatz temporalen Daten zuzuweisen, wie z.B. dem Vektor B, da auf diese wiederholt zugegriffen wird. Andererseits sollte eine bestimmte Kapazität des Cache-Speicherplatzes nicht-temporalen Daten zugewiesen werden, wie zum Beispiel Matrix A, um Speicherzugriffe mit langen Latenzzeiten zu vermeiden, wenn die Daten benötigt werden. Diese Daten können in dem Cache gespeichert werden in Antizipation deren Nutzung mittels Prefetching und vorgezogenen Ladeoperationen. Wenn diese Operationen aber temporale Daten ausstoßen bzw. verwerfen, um Platz für nicht-temporale Daten zu schaffen, können sie auch die Leistung bzw. Performance des Cache verringern.
  • Der Einsatz einer separaten Speicherstruktur für temporale und nicht-temporale Daten verhindert es, dass nicht-temporale Daten temporale Daten in einem Cache verschieben. Der Einsatz einer separaten Speicherstruktur weist jedoch verschiedene signifikante Nachteile auf. Die Speicherstruktur benötigt zusätzlichen Platz auf einem Halbleiterchip, wobei dieser Platz in modernen Prozessoren eine begrenzte Ressource ist, und wobei die Beschränkung der Größe der Cache-Struktur die Lebensdauer der von ihr gespeicherten Daten reduziert. Diese Reduzierung ist für nicht-temporale Daten besonders signifikant, auf die ohnehin selten zugegriffen wird. Darüber hinaus muss die Kohärenz zwischen der zweiten Speicherstruktur und den anderen Speicherstrukturen des Speichersystems aufrechterhalten werden. Die erforderliche Schaltkreisanordnung nimmt zusätzlichen Platz eines Halbleiterchips bzw. Chips in Anspruch, gestaltet die Bauweise des Cache-Systems komplizierter und verschlechtert wahrscheinlich die Cache-Zugriffszeit.
  • EP-A-0509231 offenbart ein Least Recently Used (LRU) Cache-Ersetzungssystem, bei dem der Daten-Cache logisch partitioniert ist in zwei separate Abschnitte Demand (Anforderung) und Prefetch (Voraberfassung). Eine Cache-Verzeichnistabelle und eine Least Recently Used-Tabelle werden zur Verwaltung des Cache eingesetzt. Wenn eine neue Demand-Datenseite dem Cache hinzugefügt wird, wird ein Most Recently Used (MRU) Zeiger aktualisiert und zeigt. auf diese neue Seite. Wenn eine Prefetch-Seite dem Cache hinzugefügt wird, wird der Least Recently Used-Zeiger des Demand- bzw. Anforderungsabschnitts aktualisiert, wobei dessen Rückwärtszeiger auf diese neue Seite zeigt. Ein Cache-Treffer bei einer Anforderung der Prefetch-Seite bewegt bzw. verschiebt die Seite an das obere Ende der Least Recently Used-Tabelle. Wenn in dem Cache eine freie Seite benötigt wird, so wird diese aus den Demand- oder Prefetch-Abschnitten des Speichers auf der Basis eines Vergleichs zwischen der Anforderungstrefferdichte und der Prefetch-Trefferdichte ausgewählt, um ein Gleichgewicht zwischen den beiden Trefferdichten zu erhalten. Dieses Referenzdokument offenbart somit ein System, bei dem Entscheidungen darüber, wo der Least Recently Used-Zeiger platziert werden soll, darauf basiert, ob es sich bei der Seite in dem Cache um eine Anforderungsseite oder eine Prefetch-Seite handelt.
  • Das U.S. Patent US-A-4.980.823 offenbart ein Verfahren zur Verwaltung von Computerspeicher für Cache-Speicher unter Verwendung einer Dekonfirmationstechnik zur Bereitstellung eines einfachen sequentiellen Prefetching-Algorithmus. Der sequentielle Zugriff wird auf der Basis einfacher Historien bzw. Verläufe prädiziert. Jeder Speicherzeile in dem Cache-Speicher ist ein Bit in einem S-Vektor zugeordnet, das als das S-Bit für die Zeile bezeichnet wird. Wenn das S-Bit aktiv bzw. eingeschaltet ist, erfolgt eine sequentielle Prädiktion, was bedeutet, dass die sequentiell nächste Zeile als guter Kandidat für ein Prefetching betrachtet wird, wenn diese Zeile nicht bereits in dem Cache-Speicher vorhanden ist. Der Schlüssel für die Funktionsweise des Speicherverwaltungsverfahrens ist die Manipulation (ein- und ausschalten) der S-Bits.
  • „A New Cache Architecture Concept: The Split Temporal/Spatial Cache" von V. Milutinovic et al., Proc. IEEE/MEMECON-96, B. Mediterranean Electrochemical Conference, Industrial Applications in Power Systems, Bari, Italien, 13. bis 16. Mai 1996, Seiten 1108–111, offenbart eine Cache-Architektur, wobei ein Cache in zwei Teilsysteme unterteilt wird, welche entsprechend überwiegend temporale Lokalitätsdaten und überwiegend räumliche Lokalitätsdaten aufweisen. Damit, dass die Daten in erster Linie eine temporale Lokalität aufweisen, sind Daten gemeint, für die die Wahrscheinlichkeit der wiederholten Bezugnahme auf eine bestimmte Adresse in der nahen Zukunft hoch ist, während mit Daten, die in erster Linie eine räumliche Lokalität aufweisen, Daten gemeint sind, für die nach dem Zugriff auf eine bestimmte Adresse die Wahrscheinlichkeit verhältnismäßig hoch ist, dass auch auf eine benachbarte Adresse zugegriffen wird.
  • „A Data Cache with Multiple Caching Strategies Tuned to Different Types of Locality" von A. González et al., Proc. International Conference on Supercomputing, ICS'95, Barcelona, Spanien, 3. bis 7. Juli 1995, New York, ACM, Seien 338–347, offenbart einen dualen Daten-Cache mit unabhängigen Abschnitten zur Verwaltung der räumlichen und der temporalen Lokalität. Der duale Daten-Cache verwendet eine Lokalitäts-Prädiktionstabelle, die eine Verlaufstabelle mit Informationen über die zuletzt ausgeführten Lade-/Speicherbefehle darstellt. Ein erster von zwei unabhängigen Caches, ein räumlicher Cache, ist so gestaltet, dass er die räumliche Lokalität zusätzlich zu der temporalen Lokalität nutzt. Ein temporaler Cache dient zur Nutzung ausschließlich der temporalen Lokalität. Die beiden Sub-Caches arbeiten unabhängig voneinander und parallel zueinander. Wenn ein Prozessor einen Speicherverweis ausgibt, werden beide Caches gleichzeitig geprüft und unterschiedliche Maßnahmen ergriffen, abhängig davon, ob in einem der Caches, in beiden Caches oder in keinem der Sub-Caches ein Treffer vorliegt, wobei die Aktion bzw. Maßnahme für den Fall eines Cache-Treffers von der Lokalitäts-Prädiktionstabelle abhängig ist.
  • Dieses Dokument offenbart, dass die beiden Sub-Caches in einem Cache kombiniert werden können, um temporale und räumliche Daten zu speichern, wobei nicht zwischen den temporalen und den räumlichen Caches unterschieden wird. Nur Daten mit räumlicher Lokalität oder Daten mit temporaler Lokalität werden in dem Cache gespeichert, für die es sicher ist, dass sie sich nicht selbst beeinträchtigen.
  • Zusammenfassung der Erfindung
  • Vorgesehen ist gemäß einem ersten Aspekt der vorliegenden Erfindung ein Verfahren gemäß dem gegenständlichen Anspruch 1.
  • Vorgesehen ist gemäß einem zweiten Aspekt der vorliegenden Erfindung ein Cache gemäß dem gegenständlichen Anspruch 9.
  • Vorgesehen ist gemäß einem dritten Aspekt der vorliegenden Erfindung ein Prozessor gemäß dem gegenständlichen Anspruch 12.
  • Bevorzugte Merkmale der Erfindung sind durch die Unteransprüche definiert.
  • Kurze Beschreibung der Zeichnungen
  • Die wird in Bezug auf die folgenden Zeichnungen verständlich, in denen die gleichen Elemente mit den gleichen Bezugsziffern bezeichnet sind. Die Zeichnungen dienen der Veranschaulichung ausgewählter Ausführungsbeispiele der vorliegenden Erfindung und schränken den Umfang der vorliegenden Erfindung nicht ein. Es zeigen:
  • 1 ein Flussdiagramm herkömmlicher Verfahren zur Verwaltung von Daten in einem Cache;
  • 2 Flussdiagramme; die einen Überblick über ein Verfahren gemäß der vorliegenden Erfindung zur Verwaltung temporaler und nicht-temporaler Daten in dem gleichen Cache zeigen;
  • 3 ein Flussdiagramm, das ein Verfahren gemäß der vorliegenden Erfindung zur Verwaltung von Cache-Misses darstellt;
  • 4 ein Flussdiagramm eines Verfahrens gemäß der vorliegenden Erfindung zur Verwaltung von Cache-Treffern;
  • 5 ein Blockdiagramm eines Cache-Systems, das ein Ersetzungsmodul zur Implementierung der Verfahren der Abbildungen der 3 und 4 aufweist; und
  • die 6A und 6B Ausführungsbeispiele von Zustandsmaschinen, die durch das Ersetzungsmodul aus 5 implementiert werden können.
  • Genaue Beschreibung der Erfindung
  • In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten ausgeführt, um ein umfassendes Verständnis der Erfindung zu vermitteln. Der Durchschnittsfachmann auf dem Gebiet, der von der vorliegenden Offenbarung profitiert, erkennt aber auch, dass die vorliegende Erfindung auch ohne die spezifischen Einzelheiten ausgeführt werden kann. Darüber hinaus wurden verschiedene allgemein bekannte Verfahren, Abläufe, Komponenten und Schaltungen nicht näher beschrieben, um die Aufmerksamkeit auf die Merkmale der vorliegenden Erfindung zu richten.
  • Die Vorteile der vorliegenden Erfindung können in Bezug auf herkömmliche Gache-Verwaltungssysteme besser verstanden bzw. gewürdigt werden. Diese Systeme werden zum Beispiel beschrieben in „Cache Memories" von A.J. Smith, ACM Computing Surv. 14, Nr. 3, S. 473–530 (September 1982). Cache-Verwaltungsysteme bzw. -Managementsysteme versuchen Daten zur Speicherung in der Cache-Hierarchie durch verschiedene Prioritätsbasierte Ersetzungsstrategien zu identifizieren. Zu diesen Strategien zählen die Strategien Least Recently Used (LRU), Pseudo-LRU, Least Frequenty Used (LFU), Not Recently Used (NRU) und andere Ersetzungsstrategien. In ihren herkömmlichen Ausführungen identifizieren diese Strategien alte/neue Daten in einem Cache, indem die Zugriffe auf die Cache-Einträge verfolgt und zugeordnete Ersetzungsprioritäts-Indikatoren (RPIs) aktualisiert werden, um die Zeitsteuerung dieser Zugriffe wiederzugeben, wie z.B. wie kürzlich oder wie häufig auf Daten in dem zugeordneten Eintrag zugegriffen worden ist. Wenn für neue Daten Platz zugewiesen werden muss, identifiziert der RPI einen zu ersetzenden Cache-Eintrag.
  • Die Abbildung aus 1 zeigt ein Flussdiagramm eines herkömmlichen Verfahrens 100 zur Zuordnung bzw. Zuweisung von Platz in einem Cache unter Verwendung einer LRU-Ersetzungsstrategie. Das Verfahren 100 wird eingeleitet, wenn ein Cache-Zugriff detektiert wird 110. Bei einem Cache-Miss wird eine Zeile der Cache-Daten von einer anderen Stelle in dem Speichersystem abgerufen 120 und in einen einer Reihe von möglichen Cache-Einträgen geschrieben 130, und zwar gemäß eines RPI, der den potenziellen Einträgen zugeordnet ist. In einem n-Wege satzassoziativen Cache handelt es sich bei den möglichen bzw. potenziellen Einträgen um die n-Einträge eines Satzes, die durch die Adresse der Zieldaten angezeigt werden. Wenn der Cache-Miss durch eine Ladeoperation ausgelöst wird, sind die Zieldaten in der Cache-Zeile enthalten, die durch die Speicherhierarchie bereitgestellt wird. Wenn der Cache-Miss durch eine Ladeoperation ausgelöst wird, werden die in dem Speicherbefehl spezifizierten Zieldaten mit der Cache-Zeile kombiniert, die durch die Speicherhierarchie bereitgestellt wird. In jedem Fall wird der Cache-Eintrag, der als LRU bezeichnet ist, für die neuen Daten zugewiesen. Der RPI wird danach aktualisiert 140, um den Status der potenziellen Cache-Einträge nach der Schreiboperation zu reflektieren. Im Besonderen wird der RPI so modifiziert, dass der Eintrag, der die Zieldaten empfangen hat (vorher als LRU bezeichnet), jetzt als Most Recently Used (MRU) bezeichnet ist. Die mit LRU-1, LRU-2, etc. bezeichneten Einträge werden entsprechend zu LRU, LRU-1, etc. aktualisiert.
  • Wenn ein Cache-Treffer detektiert wird 110, wird der Cache-Zugriff 150 implementiert, und der dem Treffereintrag zugeordnete RPI wird aktualisiert, um den Status der potenziellen Einträge nach dem Zugriff zu reflektieren. Der Treffereintrag ist zum Beispiel mit MRU bezeichnet, und die mit LRU-1, LRU-2 ... bezeichneten Einträge werden entsprechend aktualisiert zu LRU, LRU-1.... In jedem Fall (Cache-Treffer, Cache-Miss) reflektiert der aktualisierte Indikator die Tatsache, dass der durch den Zugriff berühre Cache-Eintrag jetzt durch den Zugriff MRU lautet.
  • Das herkömmliche Ersetzungsverfahren 100 unterscheidet nicht zwischen temporalen und nicht-temporalen Daten. Wenn ein Cache-Zugriff zum Beispiel nicht-temporale Daten zum Ziel hat und fehlschlägt, und der als LRU designierte Cache-Eintrag temporale Daten aufweist, so stößt das Verfahren 100 die temporalen Daten zugunsten der nicht-temporalen Daten aus. Dies erfolgt, obgleich die temporalen Daten eine höhere Wahrscheinlichkeit der erneuten Verwendung aufweisen als die sie verschiebenden nicht-temporalen Daten. Die Bereitstellung einer separaten Cache-Struktur für nicht-temporale Daten eliminiert dieses Phänomen, wobei es jedoch die vorstehend im Text beschriebenen Nachteile aufweist.
  • Die vorliegende Erfindung ermöglicht temporale und nicht-temporale Daten in der gleichen Cache-Struktur, ohne die Leistung des Cache zu beeinträchtigen. Erreicht wird dies durch die Zuweisung von Cache-Einträgen an nicht-temporale Daten auf eine Art und Weise, welche das Speichern bzw. Halten temporaler Daten in dem Cache bevorzugt. Somit werden nicht-temporale Daten berücksichtigt, indem vorzugsweise andere nicht-temporale Daten oder die „am wenigsten temporalen" temporalen Daten verworfen werden. Dies macht eine separate Speicherstruktur für nicht-temporale Daten überflüssig und beseitigt damit auch die Nachteile bei diesem Ansatz. Ferner wird sichergestellt, dass erzielte Leistungsvorteile, wie z.B. durch Prefetching und vorgezogene Ladeoperationen (weniger Zugriffe mit langen Latenzzeiten), nicht durch eine geringere bzw. reduzierte Cache-Leistung (niedrigere Cache-Bitrate) aufgehoben werden.
  • Die Abbildung aus 2 zeigt ein Flussdiagramm mit einem Überblick über ein Verfahren 200 gemäß der vorliegenden Erfindung zur Verwaltung von Daten in einem Cache, wobei eine Prioritäts-basierte Ersetzungsstrategie implementiert wird. Jedem Cache-Eintrag ist ein RPI zugeordnet, der die relative Eignung der dem Eintrag zugeordneten Daten für eine Ersetzung reflektiert. Das Verfahren 200 wird eingeleitet, wenn ein Cache-Zugriff, z.B. Lade-, Speicheroperation, detektiert wird 210. Die Zieldaten des Cache-Zugriffs werden durch eine Adresse spezifiziert, die einem Cache-Eintrag unter Verwendung allgemein bekannter Techniken zugeordnet werden kann. Das Verfahren 200 bestimmt 220 den temporalen oder nicht-temporalen Charakter der Zieldaten unter Verwendung verschiedener Verfahren, die nachstehend im Text näher beschrieben werden. Der RPI, der dem Cache-Eintrag zugeordnet ist, auf den zugegriffen wird, wird danach gemäß dem temporalen/nicht-temporalen Charakter der Zieldaten aktualisiert 230. In Bezug auf ein Ausführungsbeispiel wird der RPI angepasst, um den Cache-Zugriff wiederzugeben, wenn temporale Daten spezifiziert sind, und der RPI bleibt in seinem aktuellen Zustand erhalten, wenn nicht-temporale Daten spezifiziert sind. In Bezug auf ein weiteres Ausführungsbeispiel wird ein erster RPI-Aktualisierungsalgorithmus eingesetzt, wenn temporale Daten spezifiziert sind, und ein zweiter RPI-Aktualisierungsalgorithmus wird angewandt, wenn nicht-temporale Daten spezifiziert sind.
  • In Bezug auf ein Ausführungsbeispiel setzt der Cache eine LRU-Ersetzungsstrategie ein, wobei der RPI die Reihenfolge darstellt, in der auf einen assoziierten Satz der Cache-Einträge zugegriffen wird. In einem n-Wege satzassoziativen Cache ist zum Beispiel eine RPI jedem Satz zugeordnet und spiegelt die Reihenfolge wider, in der auf die n-Cache-Einträge des Satzes (oder eines Teilsatzes dieser Einträge) zugegriffen worden ist. Ein codierter RPI kann die Zugriffsreihenfolge von LRU zu MRU darstellen. In dem vorliegenden Ausführungsbeispiel wird der RPI für Cache-Zugriffe aktualisiert, die temporale Daten zum Ziel haben, und wobei die Aktualisierung für Cache-Zugriffe, die nicht-temporale Daten zum Ziel haben, umgangen oder modifiziert wird. Dies erhöht die Wahrscheinlichkeit dafür, dass ein Eintrag, der nicht-temporale Daten speichert, durch den RPI als alt (LRU) bezeichnet wird. Diese Einträge werden vorzugsweise bei Cache-Misses verworfen, um Platz für neue Daten zu schaffen.
  • In der folgenden Beschreibung wird die vorliegende Erfindung in Bezug auf ein Ausführungsbeispiel veranschaulicht, wobei eine RPI-Aktualisierung für nicht-temporale Daten umgangen wird. Der Fachmann auf dem Gebiet, der von der vorliegenden Offenbarung profitiert, wird erforderliche Modifikationen erkennen, um unterschiedliche RPI-Aktualisierungsvorgänge für temporale und nicht-temporale Daten zu implementieren.
  • Die Abbildung aus 3a zeigt ein Flussdiagramm eines Verfahrens 300 zur Verwaltung von Einträgen bei einem Cache-Miss gemäß der vorliegenden Erfindung. In dem offenbarten Ausführungsbeispiel wird das Verfahren 300 eingeleitet, wenn ein Cache-Zugriff fehlschlägt 310, wobei ein Befüllen einer Cache-Zeile ausgelöst wird. Die Zieldaten des Zugriffs werden abgerufen 320 und in einen einer Mehrzahl von potenziellen Cache-Einträgen geschrieben 330, und zwar gemäß einem Ersetzungsprioritäts-Indikator (RPI), der den Einträgen zugeordnet ist. Für Cache-Misses, die durch Speicherbefehle ausgelöst werden, werden die beim Speichern spezifizierten Zieldaten mit der abgerufenen Cache-Zeile kombiniert, bevor sie in den Cache geschrieben werden. Wenn bestimmt wird 340, dass die Zieldaten temporal (T) sind, wird der RPI aktualisiert 360, um den Cache-Zugriff zu reflektieren. Wenn bestimmt wird 340, dass die Zieldaten nicht-temporal (NT) sind, wird der aktuelle RPI weiter geführt 350.
  • In der Abbildung aus 3 soll die abgebildete Reihenfolge der Schritte 320, 330 und 340 aus 3 nicht deren Chronologie anzeigen. Der temporale oder nicht-temporale Charakter der Daten kann zu jedem Zeitpunkt nach dem Detektieren des Cache-Zugriffs bestimmt werden (Schritt 340) und bevor der RPI aktualisiert wird. Das gleiche gilt für die Schritte 420 und 430 aus 4 (unten).
  • Die Abbildung aus 4 zeigt ein Flussdiagramm eines Verfahrens gemäß der vorliegenden Erfindung, das sich zum Einsatz eignet, wenn ein Cache-Zugriff den Cache trifft („Cache-Treffer"). Wenn ein Cache-Treffer detektiert wird 410, wird auf den den Zieldaten zugeordneten Cache-Eintrag zugegriffen 420. Während dem Zugriff 420 werden die Zieldaten in den getroffenen Eintrag geschrieben oder aus diesem gelesen, abhängig davon, ob der Zugriff entsprechend durch eine Lade- oder Speicheroperation ausgelöst wird. Wenn bestimmt wird 430, dass die Zieldaten temporal sind, wird der RPI aktualisiert 450, um den Zugriff darzustellen. Wenn bestimmt wird 430, dass die Zieldaten nicht-temporal sind, bleibt der RPI in dessen aktuellen Zustand erhalten.
  • Der temporale oder nicht-temporale Charakter der Daten kann auf unterschiedliche Art und Weise bestimmt werden. In Bezug auf ein Ausführungsbeispiel der vorliegenden Erfindung weisen die Lade- und Speicherbefehle (und deren Äquivalente) ein zugeordnetes Feld auf, in dem der temporale/nicht-temporale Charakter der Zieldaten angezeigt werden kann. Der angezeigte temporale/nicht-temporale Charakter kann durch den Programmierer mittels Datendeklaration, Pragmas oder Befehlsauswahl bestimmt werden oder durch den Kompilierer durch Pfadprofilierung und verschiedene andere allgemein bekannte Verfahren. Der temporale/nicht-temporale Charakter kann auch durch die Speicherbereiche angezeigt werden, in denen die Daten gespeichert werden. Dies kann zum Beispiel unter Verwendung von Seitentabellenattributen, Adressgruppen und dergleichen erreicht werden. In Bezug auf ein anderes Ausführungsbeispiel kann der Prozessor den temporalen oder nicht-temporalen Charakter der Daten bestimmen, indem der Datenfluss durch dessen Hardware überwacht wird. In diesem Fall wird der temporale oder nicht-temporale Charakter der Daten, die das Ziel eines Cache-Zugriffs sind, durch die Nutzungshistorie bzw. den Nutzungsverlauf der Daten in dem Prozessor bereitgestellt.
  • Die Abbildung aus 5 zeigt ein Blockdiagramm eines Ausführungsbeispiels eines Cache-Systems 500, das sich zur Implementierung der vorliegenden Erfindung eignet. Der Cache 500 weist eine Cache-Steuereinheit 510, einen Tag-RAM 530, Prioritätsregister 534, einen Daten-RAM 540, einen ersten Bus 560 und einen zweiten Bus 570 auf. Die Cache- Steuereinheit 510 weist ein Ersetzungsmodul 520 auf, das eine Cache-Zeilen-Ersetzungsstrategie gemäß der vorliegenden Erfindung implementiert.
  • Indem offenbarten Ausführungsbeispiel handelt es sich bei dem Cache 500 um einen satzassoziativen Cache, der j-Sätze mit jeweils n-Wegen umfasst. Im Besonderen weist der Tag-RAM 530 Tag-Daten auf, die in n-Wegen 532(1)532(n) von j-Sätzen 550(1)550(j) angeordnet sind, und der Daten-RAM 540 weist Kopien der im Cache gespeicherten Daten auf, die in n-Wegen 542(1)542()n) von j-Sätzen 550(1)550(j) angeordnet sind, mit Adressen, die denen des Tag-RAM 540 entsprechen. Jeder Satz 550 des Cache 500 weist ein Prioritätsregister 534 auf, in dem ein RPI für den zugeordneten Satz 550 gespeichert ist. Beispiele für Ersetzungsprioritäts-Indikatoren sind die vorstehend im Text genannten Bezeichnungen LRU, Pseudo-LRU und LFU. Die Prioritätsregister 534 sind als separate Elemente dargestellt, wobei sie aber auch in dem Tag-RAM 530, dem Daten-RAM 540 oder der Cache-Steuereinheit 510 enthalten sein können.
  • Ein Dateneintrag oder eine Cache-Zeile in dem Cache 500 kann identifiziert werden durch den Satz und den Weg, wie er bzw. sie gespeichert wird. Zum Beispiel entsprechen die Daten in dem Satz 550(j-1) des Wegs 542(1) einer Zeile von Cache-Daten, auf die zum Beispiel unabhängig von der Zeile der Cache-Daten in dem Satz 550(3) des Wegs 542(n) zugegriffen und manipuliert wird. Ein Cache-Zugriff wird eingeleitet, indem die Tag- und Indexabschnitte einer spezifizierten Adresse an die Tag- und Daten-RAMs 530, 540 bereitgestellt werden. Der Index spezifiziert einen Satz 550 des Cache 500, der n unterschiedliche Cache-Zeilen aufweist, welche n-Wegen 542(1)542(n) entsprechen. Die in diesen n-Wegen des Tag-RAM 530 gespeicherten Tag-Werte werden mit dem Tag-Wert verglichen, der auf dem ersten Bus 560 bereitgestellt wird, um zu bestimmen, ob eine der Cache-Zeilen dem spezifizierten Eintrag entspricht. Die Funktionsweise von satzassoziativen Cache-Speichern ist im Fach allgemein bekannt und wird hierin nicht näher beschrieben.
  • Die in den Abbildungen der 3 und 4 dargestellte Ersetzungsstrategie ermöglicht es, dass sich temporale und nicht-temporale Daten in dem Cache 500 befinden, während die Wahrscheinlichkeit minimiert wird, dass die temporalen Daten durch nicht-temporale Daten aus dem Cache entfernt werden. Diese Ersetzungsstrategie wird durch das Ersetzungsmodul 520 in Verbindung mit den Prioritätsregistern 534 implementiert. Wenn im Besonderen eine Zeile von Cache-Daten nach einem Cache-Miss in den Cache 500 geschrieben wird, werden ein Satz 550 und ein zugeordnetes Prioritätsregister 534 anhand der Index-Bits der Adresse der Daten identifiziert. Ein RPI in dem Prioritätsregister 534 zeigt an, welcher Weg 532 des Satzes ersetzt werden soll. Das Ersetzungsmodul 520 aktualisiert den RPI, wenn temporale Daten geschrieben werden, und es erhält den aktuellen Zustand des RPI, wenn nicht-temporale Daten geschrieben werden. Wenn in ähnlicher Weise ein Cache-Zugriff einen der Cache-Einträge trifft, wie z.B. 536(3,1), aktualisiert oder erhält das Ersetzungsmodul 520 den RPI in einem entsprechenden Prioritätsregister (534(34)), abhängig davon, ob es sich bei den Zieldaten entsprechend um temporale oder nicht-temporale Daten handelt.
  • Die Abbildung aus 6A zeigt ein Ausführungsbeispiel einer durch das Ersetzungsmodul 520 gemäß der vorliegenden Erfindung implementierten Zustandsmaschine 600. Die Zustandsmaschine 600 verbleibt in einem Zustand IDLE (Ruhezustand) 610, bis ein Zugriff auf den Cache 500 detektiert wird. Wenn ein Cache-Zugriff fehlschlägt, wechselt die Zustandsmaschine 600 in einen Zustand ALLOCATE (Zuordnung) 620. In dem Zustand ALLOCATE 620 bestimmt die Zustandsmaschine 600, welcher der Mehrzahl potenzieller Cache-Einträge die Cache-Zeile empfangen soll, die die Zieldaten aufweist, und wobei die Cache-Zeile in den entsprechenden Eintrag geschrieben wird. In dem vorstehend beschriebenen Ausführungsbeispiel wird der zugeordnete Cache-Eintrag bestimmt durch Verweis auf ein Prioritätsregister 534, das den potenziellen Einträgen zugeordnet ist, und zwar gemäß der implementierten Ersetzungsstrategie. Zum Beispiel würde eine LRU-Ersetzungsstrategie den mit LRU bezeichneten Eintrag für die Ersetzung auswählen und diesen Eintrag der neuen Datenzeile zuordnen bzw. zuweisen.
  • Wie dies bereits vorstehend im Text beschrieben worden ist, löst ein Cache-Miss ein Füllen des Cache aus, wodurch eine Cache-Zeile abgerufen wird, die der fehlgeschlagenen Adresse der Speicherhierarchie entspricht. Wenn der Cache-Miss durch einen Speicherbefehl ausgelöst wird, wird die Zeile der Cache-Daten aktualisiert mit Zieldaten, die durch den Speicherbefehl angezeigt werden, bevor dieser in den Cache-Speicher geschrieben wird. Wenn ein Cache-Miss durch einen Ladebefehl ausgelöst wird, weist die abgerufene Zeile von Cache-Daten die Zieldaten auf.
  • Die Zustandsmaschine 600 wechselt aus dem Zustand ALLOCATE 620, wenn sie eine Anzeige des T/NT-Charakters der Zieldaten empfängt. Wenn T-Daten angezeigt werden, wechselt die Zustandsmaschine 600 aus dem Zustand ALLOCATE 620 in den Zustand ADJUST (Anpassen) 630. In dem Zustand ADJUST 630 wird der RPI in dem Prioritätsregister, der den potenziellen Einträgen zugeordnet ist, so angepasst, dass der kürzliche Zugriff dargestellt wird, wobei zum Beispiel der Weg, auf den zugegriffen wird, von LRU in MRU geändert wird, und wobei die verbleibenden Wege entsprechend angepasst werden. Wenn diese Operation abgeschlossen (DONE) ist, wechselt die Zustandsmaschine 600 zurück in den Zustand IDLE 610. Hiermit wird festgestellt, dass die „betroffene" Ersetzung, die Zuordnung einer neuen Zeile und die RPI-Aktualisierung in verschiedenen Sequenzen synchronisiert werden können, abhängig von den Details der Implementierung des Cache.
  • Wenn in einem Zustand ALLOCATE 620 die Zieldaten als NT identifiziert sind, wechselt die Zustandsmaschine 600 aus dem Zustand ALLOCATE 620 zurück in den Zustand IDLE 610. Der Zustand ADJUST 630 wird umgangen, wobei der aktuelle RPI in dem Prioritätsregister 534 erhalten bleibt.
  • Wenn in dem Zustand IDLE 610 ein Cache-Treffer detektiert wird, wechselt die Zustandsmaschine 600 in einen Zustand ACCESS (Zugriff) 640. In dem Zustand ACCESS 640 wird der Cache-Eintrag, auf den zugegriffen werden soll, über die Adresse der Zieldaten identifiziert, und die Zieldaten werden entweder aus dem Eintrag gelesen oder in den Eintrag geschrieben, und zwar abhängig davon, ob der zugriff entsprechend durch einen Lade- oder Speichervorgang ausgelöst worden ist. Die Zustandsmaschine 600 wechselt gemäß dem T/NT-Charakter der Zieldaten in den Zustand IDLE 610 oder den Zustand ADJUST 630. Wenn T-Daten angezeigt werden, wechselt die Zustandsmaschine 600 in den Zustand ADJUST 630, und der RPI in dem Prioritätsregister 534, der dem Treffereintrag zugeordnet ist, wird aktualisiert, um den Zugriff darzustellen, wobei zum Beispiel der Weg, auf den zugegriffen wird, von LRU in MRU geändert wird, und wobei die verbleibenden Wege entsprechend angepasst werden.
  • Wenn in dem Zustand ACCESS 640 die Zieldaten als NT identifiziert sind, wechselt die Zustandsmaschine 600 aus dem Zustand ACCESS 640 zurück in den Zustand IDLE 610. Der Zustand ADJUST 630 wird umgangen, wobei der aktuelle RPI in dem Prioritätsregister 534 erhalten bleibt.
  • Die Abbildung aus 6B zeigt ein weiteres Ausführungsbeispiel der Zustandsmaschine 600, das durch das Ersetzungsmodul 520 implementiert werden kann. Die Zustandsmaschine 600' eignet sich, wenn unterschiedliche RPI-Aktualisierungsalgorithmen für temporale und nicht-temporale Daten implementiert werden. In dem offenbarten Ausführungsbeispiel wird ein zusätzlicher Zustand ADJUST 650 bereitgestellt, um den RPI-Aktualisierungsalgorithmus für nicht-temporale Daten zu implementieren. Der Zustand ADJUST 650 kann zum Beispiel den RPI anpassen, um die Daten zu bezeichnen, auf die zugegriffen wird, wie zum Beispiel LRU-P an Stelle der Beibehaltung der Bezeichnung LRU. Hierbei gilt 1 ≤ P < n für einen n-Wege satzassoziativen Cache. Dieser Algorithmus belastet ebenso nicht-temporale Daten für die Ersetzung vor, wobei die Vorbelastung nicht so stark ist, wie sie durch die Zustandsmaschine aus 6A bereitgestellt wird.
  • Die vorliegende Erfindung wird unter Verwendung einer modifizierten (LRU) Ersetzungsstrategie veranschaulicht, wobei die Erfindung aber auch auf andere Prioritätsbasierte Ersetzungsstrategien angewandt werden kann, darunter die Strategien Pseudo-LRU, Least Frequenty Used (LFU), Not Recently Used (NRU) und äquivalente Ersetzungsstrategien. Jede Strategie weist einen zugeordneten RPI auf, Aktualisierungen dessen auf die vorstehend beschriebene Art und Weise vorbelastet werden können, um nicht-temporale Daten in dem Cache zu berücksichtigen, während vorzugsweise temporale Daten erhalten bleiben.
  • Die vorliegende Erfindung wurde vorstehend für die Situation beschrieben, in der die dem Cache zuzuweisenden Daten Operanden für Befehle darstellen, die durch den Prozessor ausgeführt werden. Die Erfindung ist somit auch dann anwendbar, wenn es sich bei den Daten um Befehle handelt. Befehle können a1 eine temporale oder nicht-temporale Lokalität aufweisend gekennzeichnet sein, und wobei diese Informationen eingesetzt werden können, um das Befehls-Caching gemäß der vorliegenden Erfindung zu verwalten. In Abwesenheit von Verzweigungen werden Befehle zum Beispiel sequentiell ausgeführt und weisen folglich eine nicht-temporale (und räumliche) Lokalität auf. Verzweigungsbefehle in einer Codefolge können es bewirken, dass Teile der Codefolge übersprungen werden, wodurch deren räumliche Lokalität eliminiert wird. Zudem können Verzweigungsbefehle, wie etwa Schleifen, bewirken, dass auf Befehlsfolgen wiederholt zugegriffen wird, wodurch diesen eine temporale Lokalität verliehen wird. Die vorliegende Erfindung kann in der Lage sein, den temporalen nicht-temporalen Charakter der Befehle einzusetzen, um Raum bzw. Platz in einem Befehls-Cache (oder einem vereinheitlichten bzw. Unified-Cache) auf die vorstehend beschriebene Art und Weise zuzuweisen.
  • Ein Verfahren zur Bestimmung des temporalen/nicht-temporalen Charakters von Daten umfasst die Überwachung der Nutzungsmuster der Daten. Der temporale/nicht-temporale Charakter von Befehlen kann auf ähnliche Weise bestimmt werden. Zum Beispiel weisen Prozessoren für gewöhnlich eine Verzweigungs-Prädiktionslogik auf, die verfolgen kann, ob eine Verzweigung bei vorherigen Ereignissen aufgetreten ist oder nicht. Diese Informationen in Bezug auf die „Verzweigungshistorie" für eine häufig benutzte Schleifenverzweigung können eingesetzt werden, um anzuzeigen, dass die Befehlsfolge, die in der Schleife wiederholt wird, eine temporale Lokalität aufweist. In ähnlicher Weise können bestimmte Prozessorarchitekturen Verzweigungshinweise unterstützen, um durch den Kompilierer erzeugte Verzweigungsinformationen (statische Verzweigungsinformationen) zu der Prozessor-Hardware zu übertragen. Verzweigungshinweisbefehle zeigen der Prozessor-Hardware auf der Basis von Kompilierungs-Zeitinformationen, ob es wahrscheinlich ist, dass die Verzweigung wahrgenommen wird, sowie die Zieladresse der Verzweigung, wenn diese vorgenommen wird. Verzweigungshinweise stellen somit geeignete Informationen für die Kennzeichnung von Befehlen als temporal oder nicht-temporal bereit.
  • Wenn der temporale/nicht-temporale Charakter von Befehlen verfügbar ist, kann die vorliegende Erfindung eingesetzt werden, um Befehlen auf die vorstehend in Bezug auf Operandendaten beschriebene Art und Weise Cache-Platz zuzuweisen.
  • Beschrieben wurde somit ein System zur Verwaltung temporaler und nicht-temporaler Daten in dem gleichen Cache durch Vorbelastung des Cache-Verwaltungsmoduls zur Bevorzugung der Ersetzung von nicht-temporalen Daten (Befehlen). Daten (einschließlich Befehle) werden gemäß ihrem temporalen nicht-temporalen Charakter gekennzeichnet. Wenn auf temporale Daten zugegriffen wird, wird ein dem Eintrag, auf den zugegriffen wird, zugeordneter Ersetzungsprioritäts-Indikator aktualisiert, um diesen Zugriff darzustellen. Wenn auf nicht-temporale Daten zugegriffen wird, bleibt ein Ersetzungsprioritäts-Indikator weiter erhalten, der dem Eintrag zugeordnet ist, auf den zugegriffen wird.

Claims (16)

  1. Verfahren zum Verwalten von Daten in einem Cache (500), der eine Prioritäts-basierte Ersetzungsstrategie unter einer Least Recently Used (LRU) Strategie, einer Pseudo-LRU-Strategie, einer Least Frequenty Used-Strategie und einer Not Recently Used-Strategie implementiert, wobei das Verfahren folgendes umfasst: das Detektieren (210) eines Zugriffs, der einen Cache-Eintrag (542) in dem genannten Cache trifft; das Bestimmen (220) einer temporalen/nicht-temporalen Lokalitätseigenschaft von Daten, die das Ziel des Zugriffs sind, wobei die Zieldaten als temporal lokal bestimmt werden, wenn es wahrscheinlich ist, dass auf die Zieldaten über deren Lebensdauer in dem Cache wiederholt zugegriffen wird, bevor die Daten hinausgeworfen werden, um Platz für neue Daten zu schaffen, und wobei die Zieldaten als nicht-temporal lokal bestimmt werden, wenn über die Lebensdauer der genannten Zieldaten in dem Cache wahrscheinlich nur selten auf die Zieldaten zugegriffen wird; und das Aktualisieren (230) eines Ersetzungsprioritäts-Indikators, der dem Cache-Eintrag gemäß der temporalen/nicht-temporalen Eigenschaft der Zieldaten zugeordnet ist, wobei die Aktualisierung die Vorbelastung des Ersetzungsprioritäts-Indikators umfasst, so dass die Ersetzung von nicht-temporalen lokalen Daten bevorzugt wird; wobei die Aktualisierung (230) des Ersetzungsprioritäts-Indikators eine der folgenden Maßnahmen umfasst: (i) das Anpassen (360, 450, 630) gemäß der genannten Ersetzungsstrategie des Ersetzungsprioritäts-Indikators, so dass ein Cache-Zugriff wiedergegeben wird, wenn temporal lokale Daten spezifiziert werden, und das Umgehen (350, 460) der Anpassung des Ersetzungsprioritäts-Indikators, wenn nicht-temporal lokale Daten spezifiziert werden, wobei der Ersetzungsprioritäts-Indikator in dessen aktuellen Zustand erhalten bleibt; und (ii) wenn temporal lokale Daten spezifiziert werden, das Anpassen des Ersetzungsprioritäts-Indikators auf einen ersten Wert gemäß der genannten Ersetzungsstrategie, um einen Cache-Zugriff wiederzugeben, um den Erhalt der genannten temporal lokalen Daten zu bevorzugen, und wenn nicht-temporal lokale Daten spezifiziert werden, das Anpassen des Ersetzungsprioritäts-Indikators auf einen zweiten Wert, um die Wahrscheinlichkeit zu erhöhen, dass die genannten nicht-temporal lokalen Daten als Zustand durch den Ersetzungsprioritäts-Indikator bezeichnet werden.
  2. Verfahren nach Anspruch 1, wobei dieses ferner folgendes umfasst: das Detektieren (310) eines Miss als Reaktion auf einen Cache-Zugriff; das Identifizieren eines Ersetzungsprioritäts-Registers (534), das dem Cache-Zugriff zugeordnet ist; das Bestimmen (340) einer temporalen/nicht-temporalen Eigenschaft der Zieldaten des Zugriffs; und das Auswählen eines Cache-Eintrags für eine Ersetzung gemäß einem zugeordneten Ersetzungsprioritäts-Indikators, der durch das Prioritätsregister (534) bereitgestellt wird.
  3. Verfahren nach Anspruch 1, wobei es sich bei der Ersetzungsstrategie um eine Least Recently Used-Strategie handelt, und wobei die Aktualisierung (230) des Ersetzungsprioritäts-Indikators ferner das Anzeigen des Cache-Eintrags als einen Cache-Eintrag umfasst, auf den zuletzt zugegriffen worden ist, wenn die Zieldaten als temporal lokal bestimmt worden sind.
  4. Verfahren nach Anspruch 1, wobei dieses ferner folgendes umfasst: das Abrufen (420) der Zieldaten aus dem durch den Cache-Zugriff getroffenen Cache-Eintrag.
  5. Verfahren nach Anspruch 4, wobei der Cache-Eintrag-Treffer als Reaktion auf einen Lade- oder Speicherbefehl erzeugt wird, der die Zieldaten spezifiziert, und wobei bestimmt wird, ob die temporale/nicht-temporale Eigenschaft der Zieldaten das Lesen eines Felds in dem Lade- oder Speicherbefehl umfasst, der die Zieldaten als temporal lokal oder nicht-temporal lokal identifiziert.
  6. Verfahren nach Anspruch 1 für einen satzassoziativen Cache, der j-Sätze von jeweils n-Wegen umfasst, wobei das Detektieren des Zugriffs, der den Cache-Eintrag trifft, folgendes umfasst: das Detektieren einer Mehrzahl von möglichen Cache-Einträgen (542), die einem ersten Abschnitt (532) einer Adresse für die Zieldaten zugeordnet sein können; und das Auswählen eines der möglichen Cache-Einträge (542) durch Verweis auf einen zweiten Abschnitt (550) der Adresse.
  7. Verfahren nach Anspruch 6, wobei das Aktualisieren (350, 460) des Ersetzungsprioritäts-Indikators das Erhalten einer Ersetzungspriorität für die möglichen Cache-Einträge (542) umfasst, die durch den Ersetzungsprioritäts-Indikator angezeigt werden.
  8. Verfahren nach Anspruch 1, wobei dieses ferner das Überwachen der Datennutzung in einer Codesequenz umfasst, wobei das Bestimmen der temporalen/nicht-temporalen Lokalitätseigenschaft der Zieldaten des Zugriffs das Überwachen des Datenflusses durch Hardware umfasst, um eine Nutzungshistorie der Daten in einem Prozessor bereitzustellen.
  9. Cache (500) zum Speichern temporal lokaler und nicht-temporal lokaler Daten gemäß einer Prioritäts-basierten Ersetzungsstrategie unter einer Least Recently Used-Strategie, einer Pseudo-LRU-Strategie, einer Least Frequenty Used-Strategie und einer Not Recently Used-Strategie, wobei der Cache folgendes umfasst: eine Mehrzahl von Cache-Einträgen (542), wobei jeder Eintrag Daten speichern kann; ein Prioritätsregister (534), das der Mehrzahl von Cache-Einträgen (542) zugeordnet ist, wobei das Prioritätsregister einen Wert speichert, der die Ersetzungsinformationen für die Mehrzahl von Cache-Einträgen anzeigt; und ein Ersetzungsmodul (520), das nach dem Detektieren (210) eines Zugriffs, der einen Cache-Eintrag (542) in dem genannten Cache trifft, so angeordnet ist, dass der Prioritätsregisterwert entsprechend aktualisiert wird, ob die Zieldaten des genannten Cache-Zugriffs temporal lokale oder nicht-temporal lokale umfassen, wobei auf die temporal lokalen Daten wahrscheinlich über deren Lebenszeit in dem Cache wiederholt zugegriffen wird, bevor die Daten hinausgeworfen werden, um Platz für neue Daten zu schaffen, und wobei auf die nicht-temporal lokalen Daten wahrscheinlich während der Lebenszeit der Daten in dem Cache selten zugegriffen wird, und wobei die durch das Ersetzungsmodul implementierte Aktualisierung so vorbelastet wird, dass sie das Erhalten temporal lokaler Daten in dem Cache bevorzugt; wobei die Aktualisierung (230) des Ersetzungsprioritäts-Indikators eine der folgenden Maßnahmen umfasst: (i) das Anpassen (360, 450, 630) gemäß der genannten Ersetzungsstrategie des Ersetzungsprioritäts-Indikators, so dass ein Cache-Zugriff wiedergegeben wird, wenn temporal lokale Daten spezifiziert werden, und das Umgehen (350, 460) der Anpassung des Ersetzungsprioritäts-Indikators, wenn nicht-temporal lokale Daten spezifiziert werden, wobei der Ersetzungsprioritäts-Indikator in dessen aktuellen Zustand erhalten bleibt; und (ii) wenn temporal lokale Daten spezifiziert werden, das Anpassen des Ersetzungsprioritäts-Indikators auf einen ersten Wert gemäß der genannten Ersetzungsstrategie, um einen Cache-Zugriff wiederzugeben, um den Erhalt der genannten temporal lokalen Daten zu bevorzugen, und wenn nicht-temporal lokale Daten spezifiziert werden, das Anpassen des Ersetzungsprioritäts-Indikators auf einen zweiten Wert, um die Wahrscheinlichkeit zu erhöhen, dass die genannten nicht-temporal lokalen Daten als Zustand durch den Ersetzungsprioritäts-Indikator bezeichnet werden.
  10. Cache nach Anspruch 9, wobei der Cache einen n-Wege satzassoziativen Cache darstellt, und wobei jeder Eintrag der Mehrzahl von Cache-Einträgen (542) einem der n-Wege (532) eines Satzes des Caches entspricht.
  11. Cache nach Anspruch 10, wobei der Prioritätsregisterwert eine Ersetzungspriorität für die Mehrzahl von Cache-Einträgen (542) des Satzes anzeigt.
  12. Prozessor, der den Cache gemäß einem der Ansprüche 9 bis 11 umfasst, und: eine Ausführungs-Pipeline, die mit dem Cache gekoppelt ist, wobei das Ersetzungsmodul so funktionsfähig ist, dass es die Ersetzungspriorität der Zieldaten eines Lade- oder Speicherbefehls in der Ausführungs-Pipeline, der einen der Mehrzahl von Cache-Einträgen trifft, anpasst oder beibehält.
  13. Prozessor nach Anspruch 12, wobei der Cache so funktionsfähig ist, dass er die Zieldaten als Reaktion auf einen Cache-Zugriff zu und von der Ausführungs-Pipeline überträgt.
  14. Prozessor nach Anspruch 13, wobei das Ersetzungsmodul eine Logik aufweist, die so angeordnet ist, dass sie die temporale/nicht-temporale Eigenschaft der Zieldaten detektiert, und mit einer Zustandsmaschine, die so angeordnet ist, dass sie den Ersetzungsprioritäts-Indikator gemäß der temporalen/nicht-temporalen Lokalitätseigenschaft der Zieldaten aktualisiert.
  15. Prozessor nach Anspruch 14, wobei die Detektierungslogik so angeordnet ist, dass sie eine Anzeige der temporalen/nicht-temporalen Lokalitätseigenschaft von einem Befehlsfeld, einer Seitentabelle oder einer Speicheradresse empfängt, die dem Cache-Zugriff zugeordnet ist.
  16. Prozessor nach einem der Ansprüche 12 bis 15, wobei die Zieldaten einen Befehl oder einen Befehlsoperanden darstellen.
DE69935737T 1998-07-16 1999-07-13 Verfahren und gerät um zeitliche und feste daten in einer einzelspeicherstruktur zu verwalten Expired - Lifetime DE69935737T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/118,204 US6542966B1 (en) 1998-07-16 1998-07-16 Method and apparatus for managing temporal and non-temporal data in a single cache structure
US118204 1998-07-16
PCT/US1999/015853 WO2000004452A1 (en) 1998-07-16 1999-07-13 Method and apparatus for managing temporal and non-temporal data in a single cache structure

Publications (2)

Publication Number Publication Date
DE69935737D1 DE69935737D1 (de) 2007-05-16
DE69935737T2 true DE69935737T2 (de) 2007-12-13

Family

ID=22377133

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69935737T Expired - Lifetime DE69935737T2 (de) 1998-07-16 1999-07-13 Verfahren und gerät um zeitliche und feste daten in einer einzelspeicherstruktur zu verwalten

Country Status (5)

Country Link
US (1) US6542966B1 (de)
EP (1) EP1149342B1 (de)
AU (1) AU4871499A (de)
DE (1) DE69935737T2 (de)
WO (1) WO2000004452A1 (de)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681295B1 (en) * 2000-08-31 2004-01-20 Hewlett-Packard Development Company, L.P. Fast lane prefetching
US7260684B2 (en) * 2001-01-16 2007-08-21 Intel Corporation Trace cache filtering
US6721852B2 (en) * 2001-10-17 2004-04-13 Sun Microsystems, Inc. Computer system employing multiple board sets and coherence schemes
US20030084249A1 (en) * 2001-10-31 2003-05-01 Johnson David J.C. Preemptive eviction of stale entries is a computer cache by use of age-bits
PE20040563A1 (es) * 2002-06-14 2004-10-21 Takeda Pharmaceutical Compuesto de imidazol y metodo para su produccion
US6933945B2 (en) * 2003-03-31 2005-08-23 Sun Microsystems, Inc. Design for a non-blocking cache for texture mapping
US6903972B2 (en) * 2003-07-30 2005-06-07 M-Systems Flash Disk Pioneers Ltd. Different methods applied for archiving data according to their desired lifetime
US20050188158A1 (en) * 2004-02-25 2005-08-25 Schubert Richard P. Cache memory with improved replacement policy
US7237067B2 (en) * 2004-04-22 2007-06-26 Hewlett-Packard Development Company, L.P. Managing a multi-way associative cache
US20060143402A1 (en) * 2004-12-23 2006-06-29 Srinivas Chennupaty Mechanism for processing uncacheable streaming data
US9633213B2 (en) * 2005-05-16 2017-04-25 Texas Instruments Incorporated Secure emulation logic between page attribute table and test interface
US20060259828A1 (en) 2005-05-16 2006-11-16 Texas Instruments Incorporated Systems and methods for controlling access to secure debugging and profiling features of a computer system
US7844778B2 (en) * 2006-07-11 2010-11-30 International Business Machines Corporation Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements
US20080189495A1 (en) * 2007-02-02 2008-08-07 Mcbrearty Gerald Francis Method for reestablishing hotness of pages
KR100867269B1 (ko) * 2007-02-22 2008-11-06 삼성전자주식회사 프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서
US7711904B2 (en) * 2007-03-22 2010-05-04 International Business Machines Corporation System, method and computer program product for executing a cache replacement algorithm
KR100858527B1 (ko) * 2007-04-18 2008-09-12 삼성전자주식회사 시간적 인접성 정보를 이용한 캐쉬 메모리 시스템 및데이터 저장 방법
US8051248B2 (en) * 2008-05-05 2011-11-01 Globalfoundries Inc. Transient transactional cache
US10019381B2 (en) * 2012-05-01 2018-07-10 Nvidia Corporation Cache control to reduce transaction roll back
US8862828B2 (en) * 2012-06-28 2014-10-14 Intel Corporation Sub-numa clustering
US9779029B2 (en) * 2012-11-06 2017-10-03 Facebook, Inc. Cache replacement policy for data with strong temporal locality
US20140173216A1 (en) * 2012-12-18 2014-06-19 Advanced Micro Devices, Inc. Invalidation of Dead Transient Data in Caches
US10073779B2 (en) 2012-12-28 2018-09-11 Intel Corporation Processors having virtually clustered cores and cache slices
US20150095586A1 (en) * 2013-09-30 2015-04-02 Advanced Micro Devices , Inc. Storing non-temporal cache data
CN104063330B (zh) * 2014-06-25 2017-04-26 华为技术有限公司 数据预取方法及装置
US20160034401A1 (en) 2014-08-01 2016-02-04 Google Inc. Instruction Cache Management Based on Temporal Locality
US9690706B2 (en) 2015-03-25 2017-06-27 Intel Corporation Changing cache ownership in clustered multiprocessor
US10303697B1 (en) * 2015-06-25 2019-05-28 National Technology & Engineering Solutions Of Sandia, Llc Temporal data system
US10379827B2 (en) * 2016-12-29 2019-08-13 Intel Corporation Automatic identification and generation of non-temporal store and load operations in a dynamic optimization environment
CN113050894A (zh) * 2021-04-20 2021-06-29 南京理工大学 一种基于布谷鸟算法的农业光谱混合存储***缓存替换算法
CN113778693B (zh) * 2021-11-12 2022-02-08 北京壁仞科技开发有限公司 缓存操作方法、缓存操作装置、电子设备及处理器
US20230305968A1 (en) * 2022-03-28 2023-09-28 Microsoft Technology Licensing, Llc Cache replacement policy optimization for producer-consumer flows

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4928239A (en) * 1986-06-27 1990-05-22 Hewlett-Packard Company Cache memory with variable fetch and replacement schemes
US4980823A (en) * 1987-06-22 1990-12-25 International Business Machines Corporation Sequential prefetching with deconfirmation
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5293609A (en) * 1991-04-19 1994-03-08 International Business Machines Corporation Hit-density-based replacement for data cache with prefetching
JPH06348595A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd キャッシュ装置
US5644751A (en) * 1994-10-03 1997-07-01 International Business Machines Corporation Distributed file system (DFS) cache management based on file access characteristics
US5732242A (en) * 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5701426A (en) * 1995-03-31 1997-12-23 Bull Information Systems Inc. Data processing system and method using cache miss address prediction and forced LRU status in a cache memory to improve cache hit ratio
US5774685A (en) * 1995-04-21 1998-06-30 International Business Machines Corporation Method and apparatus for biasing cache LRU for prefetched instructions/data based upon evaluation of speculative conditions
US5943481A (en) * 1997-05-07 1999-08-24 Advanced Micro Devices, Inc. Computer communication network having a packet processor with subsystems that are variably configured for flexible protocol handling
US5930819A (en) * 1997-06-25 1999-07-27 Sun Microsystems, Inc. Method for performing in-line bank conflict detection and resolution in a multi-ported non-blocking cache
US6161167A (en) * 1997-06-27 2000-12-12 Advanced Micro Devices, Inc. Fully associate cache employing LRU groups for cache replacement and mechanism for selecting an LRU group
US6223256B1 (en) * 1997-07-22 2001-04-24 Hewlett-Packard Company Computer cache memory with classes and dynamic selection of replacement algorithms
US6223258B1 (en) * 1998-03-31 2001-04-24 Intel Corporation Method and apparatus for implementing non-temporal loads
US6205520B1 (en) * 1998-03-31 2001-03-20 Intel Corporation Method and apparatus for implementing non-temporal stores
US6202129B1 (en) * 1998-03-31 2001-03-13 Intel Corporation Shared cache structure for temporal and non-temporal information using indicative bits

Also Published As

Publication number Publication date
AU4871499A (en) 2000-02-07
US6542966B1 (en) 2003-04-01
EP1149342A4 (de) 2002-09-11
EP1149342A1 (de) 2001-10-31
WO2000004452A1 (en) 2000-01-27
DE69935737D1 (de) 2007-05-16
EP1149342B1 (de) 2007-04-04

Similar Documents

Publication Publication Date Title
DE69935737T2 (de) Verfahren und gerät um zeitliche und feste daten in einer einzelspeicherstruktur zu verwalten
DE102013204414B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen in einer Cachespeicherhierarchie mit mehreren Ebenen
US5689679A (en) Memory system and method for selective multi-level caching using a cache level code
KR100637610B1 (ko) 로킹을 사용한 캐시 교체방법
US6226715B1 (en) Data processing circuit with cache memory and cache management unit for arranging selected storage location in the cache memory for reuse dependent on a position of particular address relative to current address
EP0409415A2 (de) Schnelle Mehrwortzugänglichkeit aus einem Mehrwegset-assoziativen Cache-Speicher
KR100389549B1 (ko) 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조
US6990557B2 (en) Method and apparatus for multithreaded cache with cache eviction based on thread identifier
DE19526007C2 (de) Horizontal partitionierter Befehls-Cache-Speicher
DE112012002615B4 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE60320026T2 (de) Verbessertes speichermanagement für echtzeit-anwendungen
EP0667580A2 (de) Cache-Speicheranordnung für einen Speicher
US7237067B2 (en) Managing a multi-way associative cache
US6385695B1 (en) Method and system for maintaining allocation information on data castout from an upper level cache
DE19516937A1 (de) Hierarchisches Cachesystem für einen Computer
US6782452B2 (en) Apparatus and method for processing data using a merging cache line fill to allow access to cache entries before a line fill is completed
DE102013204417A1 (de) Daten-Cachespeicherblock-Freigabeanforderungen
CN110471617A (zh) 用于在采用事务存储器的***中管理缓存结构的技术
DE10045188A1 (de) Cacheadresskonfliktvorrichtung ohne Speicherpuffer
US6662173B1 (en) Access control of a resource shared between components
US20080059714A1 (en) System, method and storage medium for prefetching via memory block tags
US5749087A (en) Method and apparatus for maintaining n-way associative directories utilizing a content addressable memory
CA1279731C (en) Cache memory with variable fetch and replacement schemes
KR100379993B1 (ko) 컴퓨터 시스템에서 캐시 라인 교체를 관리하기 위한 방법및 장치
DE4323929A1 (de) Software-geführtes Mehrebenen-Cache-Speichersystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806