[go: up one dir, main page]

DE69219433T2 - Virtueller Durchschreibcachespeicher Synonym-Adressierung und Cache-Ungültigkeitserklärungen - Google Patents

Virtueller Durchschreibcachespeicher Synonym-Adressierung und Cache-Ungültigkeitserklärungen

Info

Publication number
DE69219433T2
DE69219433T2 DE69219433T DE69219433T DE69219433T2 DE 69219433 T2 DE69219433 T2 DE 69219433T2 DE 69219433 T DE69219433 T DE 69219433T DE 69219433 T DE69219433 T DE 69219433T DE 69219433 T2 DE69219433 T2 DE 69219433T2
Authority
DE
Germany
Prior art keywords
cache
memory
cacheable
write
cpu
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 - Fee Related
Application number
DE69219433T
Other languages
English (en)
Other versions
DE69219433D1 (de
Inventor
Mark Young
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE69219433D1 publication Critical patent/DE69219433D1/de
Application granted granted Critical
Publication of DE69219433T2 publication Critical patent/DE69219433T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed

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

    1. Gebiet der Erfindung:
  • Die vorliegende Erfindung bezieht sich auf das Gebiet der Cache-Speichersysteme. Insbesondere bezieht sich die Erfindung auf das Reduzieren von Cache-Flush-Operationen in einem virtuellen Cache-Speichersystem, das Alias-Adressierung für Programme mit gemeinsamem Speicher unterstützt und Durchschreiben ohne Schreib-Zuweisung zum Aktualisieren des Caches und des Hauptspeichers verwendet.
  • 2. Hintergrund der Erfindung:
  • In einem Cache-Speichersystem, das ein Durchschreiben (Write Through) ohne Schreib-Zuweisung (Write Allocate) zum Aktualisieren des Cache-Speichers und des Hauptspeichers verwendet, werden Daten gleichzeitig in eine Cachezeile des Cache-Speichers und den entsprechenden Speicherblock des Hauptspeichers geschrieben. Die Daten werden jedoch nur in die Cachezeile geschrieben, falls es einen Cache-Schreib- Treffer gibt. Die Alternative ist die Durchschreiben-mit- Schreibzuweisungs-Herangehensweise, die den Speicherblock in die Cachezeile lädt und anschließend die Cachezeile aktuallsiert, als ob es ein Cache-Schreib-Treffer gewesen ist.
  • Außerdem dauert das Schreiben der Daten in den zugehörigen Speicherblock üblicherweise viel länger als das Schreiben der Daten in die Cachezeile des Cache-Speichers. Während auf die Vollendung des Schreibens der Daten in den Hauptspeicher gewartet wird, ist die Zentraleinheit (Central Prozessing Unit CPU) angehalten. Eine Lösung zum Reduzieren von Schreibanhalten (write stalls) besteht darin, einen Schreibpuffer zum Schreiben in den Hauptspeicher zu verwenden, wodurch es der CPU erlaubt wird fortzufahren, nachdem die Daten in den Cache-Speicher geschrieben wurden.
  • In einem virtuellen Cache-Speicher-System wird ein Cache-Treffer/Fehlversuch auf der Basis der virtuellen Adresse (plus weiterer Informationen) entschieden, statt auf der Basis der physischen Adresse. Typischerweise wird zum Zugreifen auf den Hauptspeicher die virtuelle Adresse durch eine Speichererverwaltungseinheit in die physische Adresse übersetzt. Bei einem Cache-Speicher-System, das größer als eine physische Seite ist, können zwei oder mehr virtuelle Adressen in die gleiche physische Adresse übersetzt werden. Mit anderen Worten, es können Daten von derselben physischen Adresse in zwei oder mehr unterschiedliche Zeilen des Cache gespeichert sein.
  • Diese Charakteristik, daß eine physische Adresse auf zwei oder mehr virtuellen Adressen abgebildet sein kann, mit Ausnahme der Tatsache, daß der Inhalt der physischen Adresse in zwei oder mehr Cachezeilen gespeichert ist, ist tatsächlich wünschenswert für ausgeführte Programme, die sich einen gemeinsamen Speicher teilen wollen. Jedes Programm, das den gemeinsamen Speicher mitbenutzt, wird seine eigenen virtuellen Adressen für den gemeinsamen Speicher haben, was allgemein als Alias-Adressierung bezeichnet wird. Die Tatsache jedoch, daß der Inhalt der physischen Adressen in zwei oder mehr Cachezeilen gespeichert wird, stellt ein Datenkonsistenzproblem dar, da der Inhalt der Cachezeilen aus der Synchronisierung geraten kann, wenn der Inhalt einer der Cachezeilen bei einem Cache-Schreib-Treffer aktualisiert wird. Eine Lösung des Datenkonsistenzproblems bei Alias- Adressierung besteht darin, eine Technik anzuwenden, die es erzwingt, daß die virtuellen Adressen am gleichen Cache- Speicherort im Cache gespeichert werden. Für diejenigen virtuellen Adressen, die nicht in den gleichen Cache-Speicherort gezwängt werden können, wird die physische Speicherseite mit "Nicht-Cache-Speichern" markiert, wodurch das Datenkonsistenzproblem insgesamt vermieden wird.
  • Bei einem virtuellen Cache-Speichersystem, das ein Durchschreiben ohne Schreib-Zuweisung zum Aktualisieren des Caches und des Hauptspeichers verwendet, ist das Datenkonsistenzproblem der Alias-Adressierung dennoch nicht vollständig gelöst, da Daten um den gemeinsamen Cache-Speicherort herum bei einem Cache-Schreib-Fehlversuch direkt in den physischen Speicherort geschrieben werden können. Um die Datenkonsistenz sicherzustellen, wird die Cachezeile bei einem Cache-Schreib-Fehlversuch einer Flush-Operation unterworfen, d.h. der Inhalt der Cachezeile wird bei einem Cache-Schreib- Fehlversuch annuliert. Typischerweise wird die Cachezeile bedingungslos einer Flush-Operation unterworfen, obwohl das Spülen (Flushing) der Cachezeile für eine virtuelle Adresse unnötig ist, die auf eine physische Adresse einer "nicht- Cache-speicherbaren" physischen Speicherseite abgebildet wird, und die meisten Programme verwenden keinen gemeinsamen Speicher. Das Spülen der Zeile ist das bevorzugte Verfahren, da es für Hardware sehr schwierig ist festzustellen, welche virtuellen Adressen von der CPU einen Alias haben. Daher wird im allgemeinen angenommen, daß alle einen Alias hätten und sie werden bedingungslos einer Flush-Operation unterworfen.
  • Das Spülen einer Cachezeile ist aufwendig, da der Inhalt der annulierten Cachezeile später aus dem Hauptspeicher erneut geholt werden müßte. Bedingungsloses Spülen ist besonders verschwenderisch, da das Spülen für diejenigen virtuellen Adressen unnötig ist, die auf "nicht-Cache-speicherbaren physische Adressen abgebildet werden; dennoch werden diese unnötigen Flush-Operationen stets durchgeführt, da diese virtuellen Adressen immer zu Cache-Schreib-Fehlversuchen führen. Bei einem typischen Computersystem, das Alias-Adressierung für Programme mit gemeinsamem Speicher unterstützt, gibt es viele physische Adressen, die mit "Nicht-Cache-Speicherbar" markiert sind. Beispielsweise ist der dem Einzelbildpuffer zugewiesene Speicher eines solchen Computersystems mit einer Pixel-Videoanzeige und/oder Anzeigeadaptern typisch mit "Nicht-Cache-Speicherbar" markiert. Jedes vom Prozessor ausgeführte Rollen des Bildschirms führt dazu, daß unnötige Flush-Operationen ausgeführt werden, da jedes Schreiben in den Einzelbildpuffer zu einem Cache-Schreib- Fehlversuch führt.
  • Die Erfahrung hat gezeigt, daß exzessives Spülen die Leistung eines solchen Computersystems dramatisch verschlechtern kann, insbesondere dann, wenn das virtuelle Cache-Speicher-System direkt abgebildet wird oder mit geringer Satz-Assoziativität abgebildet wird. Daher wäre es wünschenswert, daß das Spülen einer Cachezeile bedingt durchgeführt werden könnte, wenn ein Cache-Schreib-Fehlversuch bei einem virtuellen Cache-Speicher-System auftritt, das Alias- Adressierungen für Programme mit gemeinsamem Speicher unterstützt und ein Durchschreiben ohne Schreib-Zuweisung zum Aktualisieren des Caches und des Hauptspeichers verwendet.
  • Für weitere Beschreibungen von virtuellen Cache-Speicher-Systemen und des Durchschreibens ohne Schreib-Zuweisung siehe J.L. Hennessy, D.A. Patterson, Computer Architecture, A Quantitative Approach, Morgan Kaufmann Publishers Inc., 1990, Seiten 408-449. Für weitere Beschreibungen von Alias- Adressierungen siehe Frink et al, 'A virtual cache-based workstation architecture', CONFERENCE ON COMPUTER WORKSTATION; Band 2, 1988, IEEE, NEW YORK, US, Seiten 80-87 oder auch EP-A-0 322 888 (TOSHIBA).
  • ZUSAMMENFASSENDE DARSTELLUNG DER ERFINDUNG
  • Es ist daher eine Aufgabe der vorliegenden Erfindung, die Leistung eines virtuellen Cache-Speicher-Systems zu verbessern, das Alias-Adressierungen für Programme mit gemeinsamem Speicher unterstützt und ein Durchschreiben ohne Schreib-Zuweisung zum Aktualisieren des Caches und Hauptspeichers verwendet.
  • Es ist eine Aufgabe der vorliegenden Erfindung, Cache- Flush-Operationen in einem virtuellen Cache-Speicher-System zu reduzieren, das Alias-Adressierung für Programme mit gemeinsamem Speicher unterstützt und ein Durchschreiben ohne Schreib-Zuweisung zum Aktualisieren des Caches und Hauptspeichers verwendet.
  • Erfindungsgemäß werden diese und andere Aufgaben dadurch gelöst, daß eine verbesserte Cachespeicher-Steuereinrichtung und ein Verfahren angegeben wird, wie es in den anliegenden Ansprüchen dargelegt ist.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden durch die folgende detaillierte Beschreibung des bevorzugten Ausführungsbeispiels der Erfindung deutlich, die auf die Zeichnung Bezug nimmt, in der:
  • Fig. 1 ein Computersystem zeigt, daß die erfindungsgemäße Lehre verkörpert.
  • Fig. 2 eine erfindungsgemäße Cache-Speicher-Steuereinrichtung zeigt.
  • Fig. 3 den Steuerungsablauf der Cache-Steuerlogik der Cachespeicher-Steuereinrichtung der vorliegenden Erfindung zeigt.
  • DETAILLIERTE BESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS
  • Ein verbessertes virtuelles Cache-Speichersystem mit reduzierten Cache-Flush-Operationen wird offenbart, daß Alias- Adressierung für Programme mit gemeinsamem Speicher unterstützt und ein Durchschreiben ohne Schreib-Zuweisung zum Aktualisieren des Caches und Hauptspeichers verwendet. Aus Gründen der Klarheit werden in der folgenden Beschreibung spezielle Zahlen, Materialien und Konfigurationen dargelegt, um ein gründliches Verständnis der vorliegenden Erfindung zu gewährleisten. Dem Fachmann ist jedoch klar, daß die vorliegende Erfindung auch ohne diese speziellen Details ausgeführt werden kann. An anderen Stellen werden wohlbekannte Systeme schematisch oder in Form von Blockdarstellungen gezeigt, um die vorliegende Erfindung nicht unnötig mit Details zu belasten.
  • Im folgenden wird auf Fig. 1 Bezug genommen. Es wird ein Blockschaltbild gezeigt, das ein Computersystem illustriert, welches die erfindungsgemäßen Lehren verkörpert. Wie in Fig. 1 gezeigt, umfaßt das Computersystem 10 eine CPU 12, eine erfindungsgemäße Cachespeicher-Steuereinrichtung 14, einen Cachespeicher 16 und einen Hauptspeicher 18. Die CPU 12 ist mit der erfindungsgemäßen Cachespeicher-Steuereinrichtung 14 und einem Cachespeicher 16 über einen Bus 22 für virtuelle Adressen und einen Datenbus 24 gekoppelt. Zusätzlich ist die CPU 12 mit dem Hauptspeicher 16 über einen Schreibpuffer 20 und einen gemultiplexten Daten- und Adreßbus 26 gekoppelt, und die erfindungsgemäße Cachespeicher-Steuereinrichtung 14 ist mit dem Hauptspeicher 18 über den gemultiplexten Daten- und Adreßbus 26 gekoppelt.
  • Der Cachespeicher 16 wird virtuell adressiert, d. h. Cache-Treffer/Fehlversuche werden auf der Basis von virtuellen anstelle von physischen Adressen entschieden. Der Hauptspeicher 18 kann auf den Cachespeicher 16 direkt abgebildet werden oder in einer vollständig assoziativen Weise oder in einer satz-assoziativen Weise. Virtuelle Alias-Adressen, die der gleichen physischen Adresse entsprechen, werden jedoch entweder auf den gleichen Cachebereich indiziert oder nicht in den Cachespeicher abgebildet.
  • Die CPU 12 aktualisiert den Cachespeicher 16 und den Hauptspeicher 18 mit Hilfe einer Durchschreiben-ohne- Schreib-Zuweisung-Herangehensweise, d.h. Daten werden von der CPU 12 gleichzeitig an den Cachespeicher 16 und den Hauptspeicher 18 verteilt, und die verteilten Daten werden in den Cachezeilen des Cachespeichers 16 gespeichert, falls ein Cache-Schreib-Treffer auftritt. Mit anderen Worten, wenn ein Cache-Schreib-Fehlversuch auftritt, wird der Speicherblock aus dem Hauptspeicher nicht in die Cachezeile geholt und dann aktualisiert, als ob er ein Cache-Schreib-Treffer wäre.
  • Die CPU 12, der Cachespeicher 16, der Hauptspeicher 18, der Schreib-Puffer 20, der virtuelle Adreßbus 22, der Datenbus 24 und der gemultiplexte Daten-und Adreßbus 26 sind repräsentativ für eine große Klasse von wohlbekannten CPU's, Cachespeichern, Hauptspeichern, Schreib-Puffern, virtuellen Adreßbussen, Datenbussen und gemultiplexten Daten- und Adreßbussen, die in den meisten Computersystemen mit virtuellem Cachespeicher zu finden sind, der die Durchschreiben- ohne-Schreib-Zuweisung-Herangehensweise verwendet, um den Cache und Hauptspeicher zu aktualisieren. Ein Beispiel eines solchen Computersystems ist das Sparcstation -Computersystem, das von Sun Microsystems, Inc., Mountain View, Kalifornien hergestellt wird (Sparcstation ist eine eingetragene Marke der Sun Microsystems, Inc.).
  • Außerdem ist klar, daß die CPU 12, die erfindungsgemäße Cachespeicher-Steuereinrichtung 14, der Cachespeicher 16 und der Hauptspeicher 18 neben der in dem in Fig. 1 illustrierten Beispiel gezeigten Weise in einer Vielzahl von anderen wohlbekannlen Weisen miteinander gekoppelt werden können.
  • Im folgenden wird auf Fig. 2 Bezug genommen, in der ein Blockschaltbild gezeigt ist, das die erfindungsgemäße Cachespeicher-Steuereinrichtung in ihrer bevorzugten Form zeigt. Die erfindungsgemäße Cache-Steuereinrichtung, in ihrer gegenwärtig bevorzugten Form, umfaßt eine Cache-Steuerlogik 28, eine Cache-Tag-Matrix 30, eine Speicherverwaltungseinheit (Memory Management Unit) 32 und eine Alias-Steuerlogik 34. Die Cache-Steuerlogik 28 ist mit dem Cache-Tag-Matrix 30, der Speicherverwaltungseinheit 32 und der Alias-Steuerlogik 34 gekoppelt.
  • Die Cache-Tag-Matrix 30 umfaßt eine Mehrzahl von Cache- Tags, die den Cachezeilen im Cachespeicher 16 entsprechen. Jeder Cache-Tag umfaßt eine abgeschnittene (trunkierte) virtuelle Adresse, die die aktuell in den Cachezeilen des Cachespeichers 16 gespeicherten Speicherblöcke des Hauptspeichers 18 identifiziert, sowie ein Gültigkeitsbit, das anzeigt, ob die aktuell in der Cachezeile gespeicherten Daten gültig sind oder nicht. Die Cache-Tag-Matrix 30 kann in irgendeiner der in der Technik wohlbekannten Weise implemen tiert werden.
  • Die Speicher-Verwaltungseinheit 32 umfaßt eine Schaltung zum Abbilden einer virtuellen Adresse auf eine physische Adresse. Zusätzlich umfaßt die Speicher-Verwaltungseinheit 32 eine physische Speicherseitentabelle mit einer Mehrzahl von physischen Speicherseiten-Deskriptor-Blöcken, die die physischen Speicherseiten des Hauptspeichers 18 beschreiben. Insbesondere enthält jeder Deskriptor einer physischen Speicherseite ein "Nicht-Cache-Speicherbar"-Bit, das gesetzt wird, wenn die physische Speicherseite nicht-cache-Speicherbar ist, da Alias-Adressierung vom Computersystem unterstützt wird. Die Speicherverwaltungseinheit 32 kann in einer Vielzahl von wohlbekannten Weisen implementiert werden; für weitere Beschreibungen einer Implementierung der Speicherverwaltungseinheit 32 siehe die U.S.-Patentanmeldung mit der Seriennummer 07/104,635, angemeldet am 2. Oktober 1987, und ihre Fortsetzungsanmeldung mit der Seriennummer 07/554,186, angemeldet am 16. Juli 1990.
  • Die Alias-Steuerlogik 34 umfaßt eine Schaltung zum Erfassen von Alias-Adressen, wenn die CPU 12 versucht, aus dem Cachespeicher 16 zu lesen. Die Alias-Steuerlogik 34 kann in einer Vielzahl von wohlbekannten Weisen implementiert werden; für weitere Beschreibungen einer Implementierung der Alias-Steuerlogik siehe die für die Speicherverwaltungseinheit gegebene Referenz.
  • Die Cache-Steuerlogik 28 umfaßt eine Schaltung zum Steuern der Cachespeicher-Steuereinrichtung 14. Für die von der Cache-Steuereinrichtung 14 angebotenen Grundfunktionen, die ähnlich denjenigen Grundfunktionen sind, die von in den meisten Computersystemen mit virtuellem Cachespeicher unter Verwendung der Durchschreiben-ohne-Schreib-Zuweisung-Herangehensweise zum Aktualisieren zu findenden Cache-Steuereinrichtungen angeboten werden, kann die Cache-Steuerlogik 28 in irgendeiner der wohlbekannten, in diesen Computersystemen gefundenen Weisen implementiert werden. Zum Aktualisieren des Cachespeichers 16 ist der Steuerungsablauf der Cache- Steuerlogik in Fig. 3 illustriert.
  • Wie in Fig. 3 gezeigt, empfängt die Cache-Steuerlogik ein Schreibsignal und eine virtuelle Adresse von der CPU (Block 42). Die Cache-Steuerlogik stellt mit Hilfe des Cache-Speicher-Tags fest, ob die virtuelle Adresse zu einem Cache-Schreib-Treffer führt (Block 44). Führt die virtuelle Adresse zu einem Cache-Schreib-Treffer, liefert die Cache- Steuerlogik ein Steuersignal an den Cachespeicher, wodurch der Cachespeicher aufgefordert wird, ein Datenbyte von der CPU zu empfangen, und speichert das Datenbyte in der durch die virtuelle Adresse identifizierten Cachezeile (Block 46). Das Datenbyte wird von der CPU an den Cachespeicher geleitet, nachdem das Schreibsignal und die Anfangsadresse von der CPU an die Cachespeicher-Steuereinrichtung geleitet wurden.
  • Zusätzlich bildet die Cache-Steuerlogik die virtuelle Adresse mit Hilfe der Speicherverwaltungseinheit auf eine physische Adresse ab (Block 48). Die Cache-Steuerlogik liefert dann an die physische Adresse und ein Steuersignal an den Hauptspeicher, der dadurch angewiesen wird, ein Datenbyte von der CPU zu empfangen und das Datenbyte in den durch die physische Adresse identifizierten Speicherort zu speichern (Block 58). Das Datenbyte wird von der CPU an den Hauptspeicher gleichzeitig mit dem Leiten des Datenbytes von der CPU an den Cachespeicher geleitet.
  • Führt die virtuelle Adresse zu einem Cache-Schreib-Fehlversuch, bildet die Cache-Steuerlogik die ursprüngliche Adresse mit Hilfe der Speicherverwaltungseinheit auf eine physische Adresse ab (Block 52). Die Cache-Steuerlogik stellt dann fest, ob die entsprechende physische Adresse einen Speicherort in einer physischen Speicherseite identifiziert, der mit Hilfe der Speicher-Verwaltungseinheit als nicht-cache-speicherbar markiert ist (Block 54). Identifiziert die entsprechende physische Adresse einen Speicherort in einer physischen Speicherseite, die nicht als nicht cache-speicherbar markiert ist, spült die Cache-Steuerlogik die Cachezeile (Block 56). Anderenfalls überspringt die Cache-Steuerlogik das Spülen der Cachezeile, wodurch das unnotige Spülen von nicht im Cache gespeicherten Hauptspeicherorten vermieden wird. Die Cache-Steuerlogik spült die Cachezeile, indem das Gültigkeitsbit im Cache-Tag für die Cachezeile zurückgesetzt wird, wodurch der in der Cachezeile aktuell gespeicherte Dateninhalt ungültig wird. Da eine Schreiboperation, die zu einem Cache-Schreib-Fehlversuch führt, auf eine normale Zugriffsberechtigung hin überprüft werden muß, bevor man die CPU die Operation fortsetzen läßt, kann das Überprüfen mit Hilfe der Speicherverwaltungseinheit und das sich daraus ergebende Vermeiden von unnötigen Flush- Operationen ohne Leistungsnachteile erreicht werden.
  • Zusätzlich liefert die Cache-Steuerlogik unabhängig davon, ob die Cachezeile gespült wurde, die physische Adresse und ein Steuersignal an den Hauptspeicher, der dadurch angewiesen wird, ein Datenbyte von der CPU zu empfangen, und speichert das Datenbyte in den durch die physische Adresse identifizierten Speicherort (Block 58). Wie oben beschne ben, wird das Datenbyte von der CPU an den Hauptspeicher gleichzeitig mit dem Weiterleiten des Datenbytes von der CPU an den Cachespeicher geleitet.
  • Die vorliegende Erfindung wurde anhand eines bevorzugten Ausführungsbeispiels beschrieben. Dem Fachmann ist jedoch klar, daß die Erfindung nicht auf das beschriebene Ausführungsbeispiel beschränkt ist. Das erfindungsgemäße Verfahren und die erfindungsgemäße Vorrichtung-können mit Modifikationen und Änderungen im Rahmen des Umfangs der anliegenden Ansprüche praktiziert werden. Die Beschreibung ist daher als illustrierend statt als die vorliegende Erfindung beschränkend anzusehen.

Claims (6)

1. Verfahren für ein Computersystem mit einer zentralen Verarbeitungseinheit CPU, die mit einem Cachespeicher und einem Hauptspeicher gekoppelt ist und mehrere Prozesse ausführt, wobei Cachetreffer/-fehlversuche auf virtuellen Adressen beruhen und einige der virtuellen Adressen Alias- Adressen füreinander sind, zum Reduzieren von Cache-Flush- Operationen beim Aktualisieren des Cache- und Hauptspeichers durch die CPU, wobei
von dem Cachespeicher ein Schreibsignal und eine virtuelle Adresse aus der CPU empfangen wird;
von dem Cachespeicher bestimmt wird, ob die virtuelle Adresse entweder zu einem Cache-Schreib-Treffer oder einem Cache-Schreib-Fehlversuch basierend auf der virtuellen Adresse führt; und die virtuelle Adresse durch den Cachespeicher auf eine physikalische Adresse abgebildet wird, die einen Speicherplatz eines Speicherblocks des Hauptspeichers identifiziert;
ein erstes Steuersignal an ein internes Cache-Speicher- Datenarray durch den Cachespeicher zur Verfügung gestellt wird, das das interne Cache-Speicher-Datenarray anweist, ein Datenbyte von der CPU anzunehmen, falls die virtuelle Adresse zu dem Cache-Schreib-Treffer führt, wobei das Datenbyte von der CPU zu dem Cachespeicher abgefertigt und nach Annahme durch den Cachespeicher in einer Zeile des Cachespeichers gespeichert wird, wobei die Cachezeile durch die virtuelle Adresse identifiziert wird und dem Speicherblock entspricht;
die physikalische Adresse und ein zweites Steuersignal an den Hauptspeicher vom Cachespeicher zur Verfügung gestellt wird, wobei das zweite Steuersignal den Hauptspeicher anweist, das Datenbyte von der CPU anzunehmen und das Datenbyte an dem Speicherplatz zu speichern, wobei das Datenbyte von der CPU auch an den Hauptspeicher abgefertigt wird;
von dem Cachespeicher bestimmt wird, ob der durch die physikalische Adresse identifizierte Hauptspeicherplatz ein nicht-cache-speicherbarer Speicherplatz eines nicht-cache- speicherbaren Speicherblocks des Hauptspeichers ist, wobei das Ergebnis der Nicht-Cache-Speicherbarkeit nach dem Ergebnis der Cache-Treffer/-Fehlversuch-Bestimmung zur Verfügung gestellt wird;
dadurch gekennzeichnet,
daß eine Cachezeile, in der der Speicherblock hätte cache-gespeichert werden können, ohne ein Erfassen von Alias-Adressen der virtuellen Adresse durch den Cachespeicher einer bedingten Flush-Operation unterworfen wird, falls die virtuelle Adresse zu dem Cache-Schreib-Fehlversuch führt und der Speicherplatz kein nicht-cache-speicherbarer Speicherplatz ist; und
die Cachezeile nur dann einer Flush-Operation unterworfen wird, wenn die Cachezeile einem cache-speicherbaren Speicherblock entspricht, wodurch unnötige Cache-Flush-Operationen reduziert werden.
2. Verfahren nach Anspruch 1, wobei der Schritt des Bestimmens, ob der Hauptspeicherplatz ein nicht-cache-speicherbarer Speicherplatz eines nicht-cache-speicherbaren Speicherblocks ist, eine Überprüfung enthält, ob ein "Nicht- Cache-Speichern"-Bit eines Seitendeskriptors für eine physikalische Speicherseite in einer physikalischen Speicherseitentabelle gesetzt ist, wobei die physikalische Speicherseite den Speicherblock enthält, und wobei das "Nicht-Cache- Sepichern"-Bit gesetzt ist, falls die physikalische Spei cherseite, die den Speicherblock enthält, nicht cache-speicherbar ist.
3. Verfahren nach Anspruch 1, wobei bei der Flush-Operation der Cachezeile ein Gültigkeitsbit in einem Cache-Tag für die Cachezeile zurückgesetzt wird, wodurch aktuell in der Cachezeile gespeicherte Daten ungültig gemacht werden, und wobei das Gültigkeitsbit dann gesetzt wird, wenn die in der Cachezeile aktuell gespeicherten Daten gültig sind.
4. Cachespeicher-Steuereinrichtung in einem Computersystem mit einer zentralen Verarbeitungseinheit CPU, die mit einem Cachespeicher und einem Hauptspeicher gekoppelt ist und mehrere Prozesse ausführt, wobei Cachetreffer/-fehlversuche auf virtuellen Adressen beruhen und einige der virtuellen Adressen Alias-Adressen füreinander sind, wobei die Cachespeicher-Steuereinheit dazu dient, beim Aktualisieren des Cache- und Hauptspeichers durch die CPU Cache-Flush-Operationen zu reduzieren, und wobei die Cachespeicher-Steuereinrichtung aufweist:
ein Cache-Tag-Array zum Speichern einer Mehrzahl von Cache-Tags, die eine Mehrzahl von Speicherblocks des Hauptspeichers identifizieren, die aktuell in einer Mehrzahl von den Cache-Tags entsprechenden Cachezeilen des Cachespeichers gespeichert sind;
eine Speicherverwaltungseinheit zum Abbilden von virtuellen Adressen auf physikalische Adressen, die Speicherplätze von Speicherblöcken des Hauptspeichers identifizieren, und zum Verfolgen von nicht-cache-speicherbaren physikalischen Speicherseiten des Hauptspeichers, wobei die nicht- cache-speicherbaren physikalischen Speicherseiten nicht- cache-speicherbare Speicherblöcke enthalten; und
eine mit der CPU, dem Cache-Tag-Array und der Speicherverwaltungseinheit gekoppelte Cache-Steuerlogik zum Empfangen eines Schreib-Signals und einen virtuellen Adresse von der CPU, zum Bestimmen, ob die virtuelle Adresse entweder zu einem Cache-Schreib-Treffer oder einem Cache-Schreib-Fehlversuch führt, basierend auf der virtuellen Adresse und mit Hilfe des Cache-Tag-Arrays, zum Abbilden der virtuellen Adresse auf eine physikalische Adresse, die einen Speicherplatz des Hauptspeichers identifiziert, mit Hilfe der Speicherverwaltungseinheit, zum Liefern eines ersten Steuersignals an den Cachespeicher, das den Cachespeicher anweist, von der CPU ein Datenbyte anzunehmen, das von der CPU gleichzeitig an den Hauptspeicher und den Cachespeicher abgefertigt wird, falls die virtuelle Adresse zum Cache- Schreib-Treffer führt, wobei das Datenbyte in einer Cachezeile des Cachespeichers gespeichert wird, und wobei die Cachezeile durch die virtuelle Adresse identifiziert ist und dem Speicherblock entspricht, zum Liefern der physikalischen Adresse und eines zweiten Schreib-Steuersignals an den Hauptspeicher, wobei das zweite Schreib-Steuersignal den Hauptspeicher anweist, das Datenbyte von der CPU anzunehmen und das Datenbyte in dem Speicherplatz zu speichern, und zum Bestimmen, ob der durch die physikalische Adresse identifizierte Hauptspeicherplatz ein nicht-cache-speicherbarer Speicherplatz ist, mit Hilfe der Speicherverwaltungseinheit, wobei das Ergebnis des Bestimmens der Nicht-Cache-Speicherbarkeit nach dem Feststellen des Ergebnisses des Cache-Treffers/-Fehlversuchs verfügbar ist,
dadurch gekennzeichnet,
daß die Cache-Steuerlogik Mittel für eine bedingte Flush-Operation einer Cachezeile, in der der Speicherblock hätte gespeichert sein könnte, ohne Erfassen von Alias- Adressen der virtuellen Adresse enthält, falls die virtuelle Adresse zu dem Cache-Schreib-Fehlversuch führt und der Speicherplatz ein nicht-cache-speicherbarer Speicherplatz ist.
5. Vorrichtung nach Anspruch 4, wobei
die Speicherverwaltungseinheit Mittel zum Verfolgen von nicht-cache-speicherbaren physikalischen Speicherseiten des Hauptspeichers enthält, die ein "Nicht-Cache-Speichern"-Bit in einem Speicherseiten-Deskriptorblock in einer Physikalische-Speicherseiten-Deskriptortabelle für jede nicht-cachespeicherbare physikalische Speicherseite setzen; und
die Cache-Steuerlogik Mittel zum Feststellen, ob der Hauptspeicherplatz ein nicht-cache-speicherbarer Speicher platz ist, enthält, die überprüfen, ob das "Nicht-Cache- Speichern"-Bit des Speicherseiten-Deskriptorblocks für eine physikalische Speicherseite, die den Speicherblock enthält, gesetzt ist.
6. Vorrichtung nach Anspruch 4, wobei die Cache-Steuerlogik Mittel für eine Flush-Operation der Cachezeile enthält, die ein Gültigkeitsbit in einem Cache-Tag für die Cachezeile löschen, wodurch aktuell in der Cachezeile gespeicherte Daten ungültig werden, wobei das Gültigkeitsbit von der Cache-Steuerlogik gesetzt wird, falls aktuell in der Cachezeile gespeicherte Daten gültig sind.
DE69219433T 1991-11-04 1992-11-02 Virtueller Durchschreibcachespeicher Synonym-Adressierung und Cache-Ungültigkeitserklärungen Expired - Fee Related DE69219433T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US78754791A 1991-11-04 1991-11-04

Publications (2)

Publication Number Publication Date
DE69219433D1 DE69219433D1 (de) 1997-06-05
DE69219433T2 true DE69219433T2 (de) 1997-12-11

Family

ID=25141839

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69219433T Expired - Fee Related DE69219433T2 (de) 1991-11-04 1992-11-02 Virtueller Durchschreibcachespeicher Synonym-Adressierung und Cache-Ungültigkeitserklärungen

Country Status (5)

Country Link
US (1) US5933844A (de)
EP (1) EP0541319B1 (de)
JP (1) JP3552114B2 (de)
KR (1) KR100285533B1 (de)
DE (1) DE69219433T2 (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6356996B1 (en) * 1998-03-24 2002-03-12 Novell, Inc. Cache fencing for interpretive environments
EP1046998A1 (de) * 1999-04-22 2000-10-25 Texas Instruments Incorporated Digitale Signalprozessoren mit virtueller Addressierung
US6453404B1 (en) * 1999-05-27 2002-09-17 Microsoft Corporation Distributed data cache with memory allocation model
US7065632B1 (en) * 2000-04-07 2006-06-20 Ip First Llc Method and apparatus for speculatively forwarding storehit data in a hierarchical manner
GB2372589B (en) 2001-02-21 2003-01-22 3Com Corp Memory aliasing in a processor system
US6725337B1 (en) * 2001-05-16 2004-04-20 Advanced Micro Devices, Inc. Method and system for speculatively invalidating lines in a cache
US7564375B2 (en) * 2001-09-11 2009-07-21 Zonar Systems, Inc. System and method to associate geographical position data collected from a vehicle with a specific route
US7017054B2 (en) * 2002-07-02 2006-03-21 Dell Products L.P. Mirrored tag snoop optimization
KR100755700B1 (ko) 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
US10056008B1 (en) 2006-06-20 2018-08-21 Zonar Systems, Inc. Using telematics data including position data and vehicle analytics to train drivers to improve efficiency of vehicle use
CN102369557B (zh) * 2009-06-17 2014-05-14 松下电器产业株式会社 图像生成装置、图像生成方法以及集成电路
US20130261939A1 (en) 2012-04-01 2013-10-03 Zonar Systems, Inc. Method and apparatus for matching vehicle ecu programming to current vehicle operating conditions
WO2014106871A1 (en) * 2013-01-07 2014-07-10 Hitachi, Ltd. Storage system which realizes asynchronous remote copy using cache memory composed of flash memory, and control method thereof
US9934152B1 (en) * 2015-02-17 2018-04-03 Marvell International Ltd. Method and apparatus to use hardware alias detection and management in a virtually indexed physically tagged cache
US9842051B1 (en) * 2015-03-25 2017-12-12 Marvell International Ltd. Managing aliasing in a virtually indexed physically tagged cache
GB2577404B (en) * 2016-03-29 2020-09-09 Imagination Tech Ltd Handling memory requests
GB2548845B (en) 2016-03-29 2019-11-27 Imagination Tech Ltd Handling memory requests
EP3532933B1 (de) 2016-10-31 2022-03-02 Rambus Inc. Hybridspeichermodul
US10482028B2 (en) * 2017-04-21 2019-11-19 Intel Corporation Cache optimization for graphics systems
US10325341B2 (en) 2017-04-21 2019-06-18 Intel Corporation Handling pipeline submissions across many compute units
WO2019074743A1 (en) 2017-10-12 2019-04-18 Rambus Inc. NON-VOLATILE PHYSICAL MEMORY WITH DRAM CACHE MEMORY
CN112559389B (zh) * 2019-09-25 2025-02-25 阿里巴巴集团控股有限公司 存储控制装置、处理装置、计算机系统和存储控制方法
US12086654B2 (en) 2021-09-16 2024-09-10 T-Head (Shanghai) Semiconductor Co., Ltd. Parallel processing unit virtualization

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4439829A (en) * 1981-01-07 1984-03-27 Wang Laboratories, Inc. Data processing machine with improved cache memory management
US4884197A (en) * 1985-02-22 1989-11-28 Intergraph Corporation Method and apparatus for addressing a cache memory
US5119290A (en) * 1987-10-02 1992-06-02 Sun Microsystems, Inc. Alias address support
JPH01173241A (ja) * 1987-12-28 1989-07-07 Toshiba Corp キャッシュメモリ装置
US5058006A (en) * 1988-06-27 1991-10-15 Digital Equipment Corporation Method and apparatus for filtering invalidate requests
GB2256512B (en) * 1991-06-04 1995-03-15 Intel Corp Second level cache controller unit and system

Also Published As

Publication number Publication date
EP0541319B1 (de) 1997-05-02
KR930010733A (ko) 1993-06-23
DE69219433D1 (de) 1997-06-05
JP3552114B2 (ja) 2004-08-11
JPH05257804A (ja) 1993-10-08
US5933844A (en) 1999-08-03
EP0541319A1 (de) 1993-05-12
KR100285533B1 (ko) 2001-04-02

Similar Documents

Publication Publication Date Title
DE69219433T2 (de) Virtueller Durchschreibcachespeicher Synonym-Adressierung und Cache-Ungültigkeitserklärungen
DE69708188T2 (de) Speichersteuerungseinheit
DE69327387T2 (de) An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung
DE69130086T2 (de) Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
DE69025302T2 (de) Hochleistungsrasterpuffer- und -cachespeicheranordnung
DE69031978T2 (de) Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern
DE69331039T2 (de) Rechnersystem mit einem Vorausholungscachespeicher
DE69427734T2 (de) Linearadressierter Mikroprozessorcachespeicher
DE69032276T2 (de) Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems
DE10085373B4 (de) Verfahren zum Flushen von Cache-Zeilen
DE68902193T2 (de) Datenspeicheranordnung.
DE69518676T2 (de) Cache-Speicheranordnung für einen Speicher
DE69616223T2 (de) Datenstromvorausladepufferspeicher mit Datenstromfilters
DE69721368T2 (de) Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher
DE69317729T2 (de) Cache-Etikettenspeicher
DE68928513T2 (de) Verfahren zur Vorverarbeitung mehrerer Befehle
DE68927172T2 (de) Multiprozessorsystem mit cache-speichern
DE69432133T2 (de) Datenprozessor mit Cache-Speicher
DE69132186T2 (de) Cache-Speicherverwaltungsanordnung
DE69721961T2 (de) Mikroprozessor mit einem Nachschreibcachespeicher
DE19782177B4 (de) Verfahren zur Durchführung von TLB-Shootdown-Operationen in einem Multiprozessorsystem
DE69224084T2 (de) Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69109803T2 (de) Verfahren und Vorrichtung zur Aufrechterhaltung der Integrität eines Cachespeichers.
DE69937611T2 (de) Intelligenter Puffer-Speicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee