DE69219433T2 - Virtueller Durchschreibcachespeicher Synonym-Adressierung und Cache-Ungültigkeitserklärungen - Google Patents
Virtueller Durchschreibcachespeicher Synonym-Adressierung und Cache-UngültigkeitserklärungenInfo
- 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
Links
- 230000015654 memory Effects 0.000 claims description 174
- 238000011010 flushing procedure Methods 0.000 claims description 10
- 238000000034 method Methods 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 239000000872 buffer Substances 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address 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
- 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.
- 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).
- 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.
- 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.
- 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.
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)
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)
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 |
-
1992
- 1992-11-02 DE DE69219433T patent/DE69219433T2/de not_active Expired - Fee Related
- 1992-11-02 EP EP92310027A patent/EP0541319B1/de not_active Expired - Lifetime
- 1992-11-04 JP JP31932692A patent/JP3552114B2/ja not_active Expired - Lifetime
- 1992-11-04 KR KR1019920020594A patent/KR100285533B1/ko not_active IP Right Cessation
-
1994
- 1994-04-25 US US08/232,600 patent/US5933844A/en not_active Expired - Lifetime
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 |