DE69903707T2 - Optimierte Hardware-Reinigungsfunktion für einen Daten-Cache-Speicher mit virtuellen Indizes und Tags - Google Patents
Optimierte Hardware-Reinigungsfunktion für einen Daten-Cache-Speicher mit virtuellen Indizes und TagsInfo
- Publication number
- DE69903707T2 DE69903707T2 DE69903707T DE69903707T DE69903707T2 DE 69903707 T2 DE69903707 T2 DE 69903707T2 DE 69903707 T DE69903707 T DE 69903707T DE 69903707 T DE69903707 T DE 69903707T DE 69903707 T2 DE69903707 T2 DE 69903707T2
- Authority
- DE
- Germany
- Prior art keywords
- cache
- address
- bad
- circuit arrangement
- main memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000004140 cleaning Methods 0.000 title claims description 54
- 230000015654 memory Effects 0.000 claims description 87
- 230000006870 function Effects 0.000 claims description 33
- 238000000034 method Methods 0.000 claims description 33
- 230000004044 response Effects 0.000 claims description 7
- 230000000903 blocking effect Effects 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 description 19
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
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
- Diese Erfindung bezieht sich im allgemeinen auf Computer-Systeme und insbesondere auf ein Verfahren und eine Vorrichtung für eine Hardware-Reinigungsfunktion für Cache-Speichersysteme mit virtuellen Indizes und virtuellen Etiketten.
- Viele Multitasking-Computer-Systeme machen von einer Cache-Speicher-Architektur mit virtuellen Indizes und virtuellen Etiketten (VIVT-Cache-Speicher- Architektur) Gebrauch. Die meisten Computer-Systeme und insbesondere diejenigen, die innerhalb tragbarer Lösungen eingebettet sind, sind so konstruiert, daß sie einen hohen MIPS-Bedarf (Bedarf an Millionen Anweisungen pro Sekunde) unterstützen, während die Leistungsaufnahme auf angemessenen Raten gehalten wird. Relativ kleine Cache-Speicher, auf die in einem einzelnen Prozessorzyklus zugegriffen wird, erlauben ein hohes Leistungsniveau, während die Hauptspeicher mit einer niedrigeren Geschwindigkeit arbeiten.
- Während Computer-Systeme früher jeweils nur eine einzige Anwendung auf einmal bearbeitet haben, sind heutzutage in die Hauptspeicher der Computer-Systeme im allgemeinen mehrere Anwendungen geladen. Die Planung der mehreren Anwendungen, die für den Anwender parallel ablaufen, wird durch ein Betriebssystem (OS) gemanagt. Die meisten modernen Betriebssysteme sind mit dem Konzept einer virtuellen Umgebung konstruiert. Die vom Prozessor kommenden Adressen sind virtuelle Adressen, die auf die tatsächlichen ("physikalischen") Adressen im Hauptspeicher abgebildet werden. Für eine virtuelle Umgebung sind die Cache-Speicher, die virtuelle Indizes und virtuelle Etiketten verwenden, die effizientesten Strukturen.
- Für diese Multitasking-Systeme ist eine wichtige Einschränkung der Kontextschalter. Der Kontextschalter entspricht der notwendigen Folge von Handlungen, die das OS ausfuhren muß, um mehrere unabhängige Prozesse in einem einzelnen Prozessor unterzubringen. Der Kontextschalter ist ein einschränkender Faktor für die Leistung in Systemen mit starken Echtzeitanforderungen, weil eine signifikante Zeit und eine signifikante Anzahl von Befehlen benötigt werden, um den Kontextschalter zu verwirklichen.
- Multitasking-Systeme in einer virtuellen Umgebung müssen mit dem "Aliasing" der Daten umgehen, das auftreten kann, wenn zwei oder mehr verschiedene Prozesse Daten in einem Cache zwischenspeichern, die der gleichen physikalischen Adresse an zwei oder mehr entsprechenden Plätzen im Cache in Übereinstimmung mit den durch die verschiedenen Prozesse verwendeten verschiedenen virtuellen Adressen zugeordnet sind. Wenn ein Prozeß den einem im Cache zwischengespeicherten Datenelement zugeordneten Wert ändert, wird dieser Änderung nicht in den Cache-Plätzen der anderen virtuellen Adressen widergespiegelt, die auf die gleiche physikalische Speicheradresse zeigen. Als Teil eines Kontextschalters muß das Betriebssystem die Inhalte des Cache ungültig machen, so daß die anderen Prozesse den neuen Wert sehen.
- Die Reinigungsfunktion, die dem Ungültigmachen des Cache zugeordnet ist, kann sehr zeitaufwendig sein. Außerdem kann, abhängig von der Konstruktion der Cache-Reinigung, die Reinigungsfunktion nur in diskreten Zeitintervallen unterbrochen werden. Für viele Anwendungen, die enge Echtzeit-Einschränkungen besitzen, ist es wichtig, daß Unterbrechungen häufig erlaubt sind. Die Reinigungsroutinen jedoch, die die Kapazität besitzen, Unterbrechungen in häufigen Intervallen zu erlauben, sind beim Abschluß der Reinigungsoperation oft am wenigsten effizient.
- Deshalb hat sich ein Bedarf für ein Verfahren und eine Vorrichtung mit hohem Wirkungsgrad ergeben, um ein VIVT-Cache-System zu reinigen, die häufige Unterbrechungen erlauben.
- US-5 6614 150 bezieht sich auf ein Computer-System mit einer Vorrichtung zum selektiven Blockieren der Rückschreibvorgänge von Daten von einem Rückschreib-Cache in den Speicher. Eine Schaltungsanordnung, die die Hardware-Cache-Reinigungs- oder Rückschreib-Funktion ausführt und eine Schaltungsanordnung für das Sperren möglicher Rückschreibvorgänge umfaßt, ist in diesem Literaturhinweis offenbart.
- Die vorliegende Erfindung schafft eine Schaltungsanordnung zum Ausführen einer Hardware-Cache-Reinigungsfunktion in einem System mit einem Cache- Speicher, einem Hauptspeicher und einer Schaltungsanordnung zum Sperren möglicher Rückschreibvorgänge, gekennzeichnet durch:
- eine Adressenschaltungsanordnung, die eine Reihe von Cache-Adressen in einer vorgegebenen Reihenfolge innerhalb eines Bereichs von möglicherweise schlechten Cache-Adressen ausgibt;
- eine Steuerlogik-Schaltungsanordnung, die Informationen aus den von der Adressenschaltungsanordnung ausgegebenen Cache-Adressen für jeden schlechten Cache-Platz an entsprechende Plätze im Hauptspeicher schreibt;
- eine Schaltungsanordnung, die die Adressenschaltungsanordnung in Reaktion entweder auf die Erfassung einer Unterbrechung oder auf den Abschluß des Schreibvorgangs aller schlechten Cache-Einträge in den Hauptspeicher freigibt oder sperrt, derart, daß die Reinigungsfunktion entweder bei Erfassung einer Unterbrechung oder bei Abschluß des Schreibvorgangs aller schlechten Cache-Einträge in den Hauptspeicher gesperrt wird, und derart, daß die Reinigungsfunktion durch Freigeben der Adressenschaltungsanordnung nach einer Unterbrechung fortgesetzt werden kann.
- Die Erfindung schafft ferner ein Verfahren zum Ausführen einer Hardware- Cache-Reinigungsfunktion in einem System mit einem Cache-Speicher, einem Hauptspeicher und einer Schaltungsanordnung zum Sperren möglicher Rückschreibvorgänge, gekennzeichnet durch die Schritte, bei denen:
- eine Reihe von Cache-Adressen in einer vorgegebenen Reihenfolge innerhalb eines Bereichs möglicher schlechter Cache-Adressen erzeugt wird;
- Informationen aus dem Cache-Speicher an den erzeugten Cache-Adressen an entsprechende Plätze im Hauptspeicher geschrieben werden, falls die Informatinen an der Cache-Adresse schlecht sind;
- die Erzeugung einer Reihe von Cache-Adressen in Reaktion entweder auf eine Unterbrechung oder auf den Abschluß des Schreibvorgangs aller schlechten Einträge in den Hauptspeicher freigegeben und gesperrt wird, derart, daß die Reinigungsfunktion entweder bei Erfassung einer Unterbrechung oder bei Abschluß des Schreibvorgangs aller schlechten Cache-Einträge in den Hauptspeicher gesperrt wird, und derart, daß die Reinigungsfunktion durch Freigeben der Reihe erzeugter Cache-Adressen nach einer Unterbrechung fortgesetzt werden kann.
- Die vorliegende Erfindung schafft signifikante Vorteile gegenüber dem Stand der Technik. Zuerst besitzt die Erfindung den Vorteil der Geschwindigkeit eines Hardware-Cache-Befehls; nach dem anfänglichen Aufruf der Hardware-Reinigungsoperation ist Software nur beteiligt, falls eine Unterbrechung auftritt. Zweitens kann die Hardware-Reinigungsoperation unterbrochen werden, wenn sie die Cache-Einträge zyklisch durchläuft, dies erlaubt dem System, auf eine Unterbrechung zu antworten, wie es für die Echtzeit-Anforderungen notwendig ist. Drittens ist die Anzahl der Cache-Einträge optimiert, um nur den Bereich der Cache- Einträge zu bearbeiten, die zugeordnete Dirty-Bits besitzen.
- Für ein vollständigeres Verständnis der vorliegenden Erfindung und ihre Vorteile wird nun auf die folgende Beschreibung zusammengenommen mit der beigefügten Zeichnung Bezug genommen, worin:
- - Fig. 1 eine VIVT-Durchschreib-Cache-Architektur veranschaulicht und die Aliasing-Probleme bei der Architektur veranschaulicht;
- - Fig. 2 eine VIVT-Rückschreib-Architektur veranschaulicht und die Aliasing-Probleme bei der Architektur veranschaulicht;
- - Fig. 3 einen Ablaufplan veranschaulicht, der eine Software-Reinigungsoperation des Standes der Technik beschreibt;
- - Fig. 4 einen Ablaufplan einer unterbrechbaren Hardware-Reinigungsoperation veranschaulicht;
- - Fig. 5 einen Blockschaltplan eines Cache-Controllers veranschaulicht, der die Hardware-Reinigungsoperation nach Fig. 4 ausführt;
- - Fig. 6 einen Blockschaltplan der Adressensteuerungs-Schaltungsanordnung vom Cache-Controller nach Fig. 5 veranschaulicht.
- Die vorliegende Erfindung wird am besten in bezug auf die Fig. 1-6 der Zeichnung verstanden, in der in den verschiedenen Zeichnungen gleiche Bezugszeichen für gleiche Elemente verwendet werden.
- Fig. 1 veranschaulicht einen Blockschaltplan eines Multitasking-Computer- Systems, der das durch das Aliasing verursachte Problem veranschaulicht. In diesem Szenario arbeiten zwei Prozesse 10 und 12 jeder in seinem eigenen virtuellen Raum unabhängig voneinander. Die Prozesse werden durch einen Prozessor (oder in einigen Systemen durch mehrere Prozessoren) 14 in einer Multitasking-Umgebung ausgeführt. Um die Prozesse auszuführen, ruft der Prozessor 14 Informationen aus einem physikalischen Speicher (der oft als Hauptspeicher bezeichnet wird) 16 ab und speichert Informationen in einem physikalischen Speicher 16. Weil der Prozessor im allgemeinen mit einer Geschwindigkeit arbeiten kann, die die Geschwindigkeit des Hauptspeicher weit übersteigt, werden oft ein oder mehrere Cache-Speicher 18 verwendet. In einigen Architekturen werden sowohl die Daten als auch die Befehle in einem einzelnen Cache-Speicher zwischengespeichert; in der veranschaulichten Ausführungsform werden getrennte Daten-Caches und (nicht gezeigte) Befehls-Caches verwendet.
- Ein Cache-Speicher wirkt als ein Vermittler zwischen dem Prozessor 14 und dem Hauptspeicher 16, typischerweise einem dynamischen Schreib-Lese-Speicher (DRAM). Der Cache-Speicher, typischerweise ein statischer Schreib-Lese-Speicher (SRAM) ist im allgemeinen (hinsichtlich der Speicherkapazität) signifikant kleiner als die Hauptspeicher-Bank, aber signifikant schneller. Der Cache-Speicher speichert einen Teil der Informationen in der Speicherbank. Wenn der Prozessor auf die Informationen zugreift, wird zuerst der Cache-Speicher überprüft, um festzustellen, ob die Daten im Cache gespeichert sind; falls das so ist, folgt ein "Cache-Treffer", wobei die Daten aus dem Cache-Speicher genommen werden, der die Daten mit einer hohen Geschwindigkeit in Reaktion auf die Speicherzugriffsanforderung liefern kann. Falls andererseits die Informationen nicht im Cache gespeichert sind, folgt ein "Cache-Fehltreffer", wobei der Prozessor 14 die Informationen aus dem Hauptspeicher 16 empfängt; diese Informationen werden außerdem in den Cache-Speicher 18 geladen.
- Die Cache-Architekturen besitzen abhängig von der Anwendung oft Trefferraten von 90-95%. Der tatsächliche Wirkungsgrad hängt von einer Anzahl von Faktoren ab, einschließlich des verwendeten Cache-Schemas, der Größe des Caches und der durch den Prozessor ausgeführten Anwendung. Die Cache-Speicher ermöglichen folglich einem langsameren, weniger leistungseffizienten, weniger teuren Speicher, eine große Menge von Daten zu speichern, während sie den Teil der Daten im Hochgeschwindigkeits-Cache-Speicher speichern, auf den zu irgendeinem gegebenen Zeitpunkt am wahrscheinlichsten durch den Prozessor 14 zugegriffen wird.
- Wie in Fig. 1 gezeigt ist, enthält der Cache-Speicher 18 eine Datenmatrix 20 (einen Hochgeschwindigkeitsspeicher, der die vom Hauptspeicher 16 empfangenen Informationen speichert) und einen Etikettenspeicher 22. In einer typischen Cache-Architektur empfängt ein Cache-Controller 23 eine virtuelle Speicheradresse vom Prozessor 14. Die virtuelle Adresse (VA) entspricht einer physikalischen Adresse (PA) im Hauptspeicher 16. Der Cache-Controller 23 ist an eine Etikettenmatrix 22 und eine Datenmatrix 20 gekoppelt. Die veranschaulichte Cache-Architektur ist als ein bereichsassoziativer Zweiwege-Cache angeordnet; deshalb besitzen sowohl die Etikettenmatrix 22 als auch die Datenmatrix 20 zwei Speicherebenen 22a-b bzw. 20a-b. Die Ausgänge der Ebenen 22a und 22b zeigen die virtuelle Adresse an, die in der entsprechenden Position in der entsprechenden Ebene der Datenmatrix 22a und 22b gespeichert ist. Diese Ausgänge werden mit der angeforderten virtuellen Adresse verglichen, um zu bestimmen, ob ein Treffer oder ein Fehltreffer auftritt.
- Das Daten-Aliasing tritt auf, wenn mehrere Prozesse auf eine einzelne physikalische Adresse im Hauptspeicher 16 bei verschiedenen virtuellen Adressen zugreifen, wobei einer oder mehrere der Prozesse die Informationen von dieser physikalischen Adresse modifizieren. In diesem Fall können die verschiedenen Plätze im Cache-Speicher 18, die den verschiedenen virtuellen Adressen entsprechen, die der gemeinsamen physikalischen Adresse zugeordnet sind, verschiedene Werte enthalten.
- Ein Beispiel des Aliasing ist in Fig. 1 bereitgestellt. Wenn der Prozeß 1 10 die Daten aus den Hauptspeicher 16 liest und ein Fehltreffer auftritt, liest der Cache- Controller die Informationen (die Daten 1) aus dem Hauptspeicher 16. Falls der Prozeß 1 bei der virtuellen Adresse VA1, die dem physikalischen Platz PA1 entspricht, auf den Speicher zugreift, überprüft folglich der Cache-Controller den Etikettenspeicher 22 am Cache-Platz N1 (der VA1 entspricht), um zu bestimmen, ob VA1 in der Datenmatrix 20 im Cache zwischengespeichert ist. Vorausgesetzt, daß sie dies nicht ist, werden die Informationen von PA1 aus dem Hauptspeicher 16 abgerufen und in der Datenmatrix bei N1 im Cache zwischengespeichert.
- Vorausgesetzt, daß die dem Prozeß 1 zugeordnete Zeitscheibe ohne irgendeine Modifikation der Daten bei VA1 endet, würden die Informationen in der Datenmatrix 20 am Platz N1 immer noch mit den Daten am Platz PA1 im Hauptspeicher 16 übereinstimmen. Am Ende dieser Zeitscheibe schaltet der Prozessor unter der Steuerung des Betriebssystems zum Prozeß 2. Falls der Prozeß 2 einen Speicherzugriff auf die virtuelle Adresse VA2 ausführt, die ebenfalls der physikalischen Adresse PA1 entspricht, und ein Fehltreffer auftritt, werden die Informationen aus dem Hauptspeicher 16 bei der Adresse PA1 abgerufen, wobei sie am Platz N2 im Cache-Speicher 18 gespeichert werden. An diesem Punkt sind die Daten bei N1 und N2 völlig gleich.
- Falls der Prozeß 2 einen Wert "Daten 2" bei der virtuellen Adresse VA2 in den Hauptspeicher 16 schreibt, wird der neue Wert Daten 2 zur Adresse N2 im Cache- Speicher 18 und zur Adresse PA1 im Hauptspeicher 16 geschrieben. Die Adresse N1, die der virtuellen Adresse VA1 des Prozesses 1 entspricht, wird immer noch den alten Datenwert Daten 1 enthalten. Wenn das Betriebssystem zum Prozeß 1 zurückkehrt, wird der VA1 zugeordnete Wert nun ungültig sein. Demzufolge muß das Betriebssystem als Teil der Kontextumschaltung zwischen den Prozessen die Inhalte des Caches ungültig machen, so daß die Cache-Werte für jeden Prozeß mit dem Hauptspeicher konsistent sind.
- Das obenbeschriebene Cache-System ist ein "Durchschreib"-Cache; die Informationen werden sowohl in die Datenmatrix 20 als auch in den Hauptspeicher 16 geschrieben. Die Rückschreib-Caches (oder "Rückkopier"-Caches) verringern die Leistungsaufnahme und vergrößern die Geschwindigkeit, indem sie nur in den Cache 18 schreiben, bis ein Ereignis geschieht, das die Aktualisierung des Hauptspeichers 16 erfordert.
- Ein Beispiel des Aliasing in einem Rückschreib-Cache ist in Fig. 2 gezeigt. In diesem Beispiel liest der Prozeß 1 abermals bei der virtuellen Adresse VA1, die der physikalischen Adresse PA1 entspricht, die den Wert Daten 1 am Cache-Platz N1 speichert. Nach einer Kontextumschaltung liest der Prozeß 2 bei der virtuellen Adresse VA2, die der physikalischen Adresse PA1 entspricht, die den Wert Daten 1 am Cache-Platz N2 speichert. Die neuen Daten werden zur Adresse VA2 geschrieben, dies führt dazu, daß die Daten 2 am Platz N2 im Cache 18 geschrieben werden, wobei aber die physikalischen Adresse PA1 nicht aktualisiert wird; deshalb enthält PA1 immer noch den Wert Daten 1. Der Cache-Controller setzt einen Merker (ein "Dirty-Bit") zusammen mit dem Etikett am Platz N2, um anzuzeigen, daß dieser Cache-Platz nicht mit dem Hauptspeicher 16 konsistent ist.
- Dies wird oft als ein schlechter Cache-Platz bezeichnet (der durch ein "D" im Etikettenspeicher 20 nach Fig. 2 angezeigt wird).
- Die Reinigung eines Caches erfordert, daß alle als schlecht markierten Plätze in den Hauptspeicher 16 zurückgeschrieben werden müssen. Folglich hängt die Zeit zum Ausführen dieser Operation von der Größe des Cache-Speichers ab. Häufige Cache-Größen von einigen Kilobytes erfordern einige zehntausend Zyklen für die Reinigungsoperationen.
- Eine Lösung besteht darin, eine Hardware-Reinigungsoperation zu verwenden, woraufhin der Cache in Reaktion auf einen spezifischen Befehl gereinigt wird. Für einen Acht-Kilobyte-Cache und einen Hauptspeicher, der bei 100 MHz arbeitet, kann eine Hardware-Reinigungsoperation z. B. bis zu 80 Mikrosekunden dauern, falls alle Cache-Plätze schlecht sind, oder sie kann signifikant kleiner sein, falls nur ein paar Plätze schlecht sind. Während der Zeit der Reinigungsoperation sind Unterbrechungen jedoch gesperrt, wobei die Latenzzeit der Unterbrechung proportional zur Cache-Größe ist. In Echtzeitsystemen, in denen Unterbrechungen unmittelbar behandelt werden müssen, kann die Latenzzeit im schlimmsten Fall übermäßig sein und den Betrieb der Vorrichtung erkennbar beeinflussen.
- Fig. 3 veranschaulicht einen Ablaufplan, der eine Software-Lösung für die Reinigung des Caches darstellt. Im Schritt 30 wird der Zähler n auf n = 0 initialisiert. Im Block 32 wird der Befehl zum Reinigen der Einträge ausgegeben, der eine Hardware-Reinigung für eine einzelne Cache-Speicheradresse bewirkt. Die Hardware-Reinigungsfunktion, die nicht unterbrechbar ist, reinigt einen Block des Speichers, der einem Eintrag in der Etikettenmatrix zugeordnet ist, der dem Wert des Zählers n entspricht. Während die Reinigung eines Blocks ausgeführt wird, befindet sich der Prozessor in einer Wartebetriebsart. Nachdem die Reinigungsfunktion in dem Block ausgeführt worden ist, wird im Block 34 der Zähler n inkrementiert, wobei, falls n den letzten Eintrag im Etikettenspeicher 22 (Block 36) nicht erreicht hat, die Schritte der Blöcke 32 und 34 wiederholt werden.
- Die Hardware-Reinigungsfunktion arbeitet, wie in den Blöcken 38 bis 40 gezeigt ist. Im Block 38 wird die "Reinige-den-Eintrag"-Anforderung von der Software empfangen (Block 32). In Reaktion auf die Anforderung wird das Dirty-Bit, das der Etikettenspeicheradresse n entspricht, überprüft, um festzustellen, ob es schlecht ist (Block 40). Wenn im Entscheidungsblock 42 das Dirty-Bit gesetzt ist, dann werden die entsprechenden Informationen in der Datenmatrix 20 am Platz n bei der physikalischen Adresse, die der im Etikettenspeicher 22 am Platz n gespeicherten virtuellen Adresse entspricht, in den Hauptspeicher kopiert. Folglich würden für den Platz n = N2, da das Dirty-Bit gesetzt ist, die Daten im Datenspeicher 22 am Platz N2 zur physikalischen Adresse PA1 geschrieben werden. Nachdem der Eintrag im Hauptspeicher 16 gesichert worden ist, oder falls das Dirty-Bit im Entscheidungsblock 42 nicht gesetzt gewesen ist, ist im Block 46 die Reinigungsfunktion abgeschlossen, wobei die Steuerung zur Software-Routine zurückkehrt.
- Die Software-Routine in Fig. 3 (d. h. die Blöcke 30-36) kann zwischen jeder nicht teilbaren Operation unterbrochen werden. Die Hardware-Routine ist nicht unterbrechbar, wobei deshalb es eine Verzögerung in der Größenordnung von einigen zehn Zyklen geben kann, während die Hardware-Routine ausgeführt wird, was im allgemeinen für Echtzeitsysteme annehmbar ist. Das Hauptproblem bei der Software-Reinigungsfunktion besteht darin, daß die Zeit, die zum Verarbeiten der Software-Schritte, die notwendig sind, um eine große Anzahl von Cache-Plätzen zu reinigen, erforderlich ist, übermäßig ist, wobei sie die für eine Kontextumschaltung erforderliche Zeit signifikant vergrößert. Die Zeit zum Ausführen einer vollständigen Cache-Reinigungsoperation beträgt im besten Fall etwa 50 Mikrosekunden, falls angenommen wird, daß der Cache und der Prozessor bei 100 MHz arbeiten.
- Eine dritte Implementierung ist im Zusammenhang mit der französischen Patentveröffentlichung FR-A-2778254 mit dem Titel "Computer Circuits, Systems, and Methods Using Partial Cache Cleaning", an Chauvel u. a., übertragen an Texas Instruments France, beschrieben. In dieser Implementierung werden die Informationen über den höchsten schlechten Cache-Platz aufrechterhalten, um die Anzahl der Cache-Plätze zu verringern, die in einer Hardware-Reinigungsfunktion gereinigt werden müssen. Während diese Architektur die mittlere Leistung einer Hardware-Reinigungsoperation verbessert, löst sie nicht die Echtzeit-Streitfrage Ihr die Szenarios des schlimmsten Falls (ein weiter Bereich von Cache-Blöcken ist schlecht), weil die Hardware-Operation ununterbrechbar bleibt.
- Fig. 4 veranschaulicht einen Ablaufplan, der die Operation einer unterbrechbaren Hardware-Reinigungsoperation beschreibt. Die Hardware enthält ein MIN- Register und einen MAX-Zähler. Anfangs ist MIN auf den höchsten Cache-Platz gesetzt, während MAX auf "0" gesetzt ist. Da im Etikettenspeicher 22 Dirty-Bits gesetzt sind, wird das MIN-Register mit der Adresse (n) des schlechten Etikettenplatzes geladen, falls n < MIN gilt, während MAX auf die Adresse des schlechten Etikettenplatzes gesetzt wird, falls n > MAX gilt. MIN und MAX definieren folglich den kleinsten Bereich der Adressen im Cache 18, der alle schlechten Plätze enthält. Ein MIN > MAX-Zustandsbit zeigt an, ob zu irgendeinem gegebenen Zeitpunkt die Adresse im MIN-Register größer als die Adresse im MAX-Zähler ist. Für die leichte Bestimmung, ob das Bit gesetzt ist, kann das MIN > MAX-Bit das höchstwertige Bit, das Vorzeichenbit, eines Zustandsregisters sein.
- Während einer Kontextumschaltung oder zu anderen Zeitpunkten, zu denen eine Cache-Reinigung notwendig ist, leitet im Block 50 die Software eine Hardware-Reinigungsfunktion ein. Die CPU befindet sich in der Wartebetriebsart, bis die Reinigungssteuerung von der Hardware-Reinigungsfunktion zurückkehrt. Wie im folgenden ausführlicher beschrieben ist, ist die Hardware-Reinigungsroutine unterbrechbar, wobei sie die Steuerung zur Software zurückgeben wird, falls es eine Unterbrechung gibt oder falls die Reinigungsoperation abgeschlossen ist. Nach dem "Ende" der Hardware-Reinigungsfunktion (das auftreten kann, wenn es eine Unterbrechung gibt oder wenn alle schlechten Cache-Plätze in den Hauptspeicher geschrieben worden sind), wird der Fluß im Block 52 fortgesetzt, wobei die Software überprüft, um festzustellen, ob das MIN > MAX-Zustandsbit gesetzt ist. Falls das so ist, zeigt dies an, daß die Reinigungsoperation abgeschlossen ist (oder daß es keine schlechten Cache-Plätze zum Reinigen gegeben hat, als die Hardware-Reinigungsfunktion aufgerufen wurde), wobei die Kontextumschaltung fortgesetzt werden kann. Wenn MIN > MAX nicht gesetzt ist, dann ist die Hardware-Reinigungsfunktion unterbrochen worden, wobei die Steuerung zum Block 50 zurückkehrt, in dem die Hardware-Reinigungsfunktion fortgesetzt wird.
- Die Hardware-Reinigungsfunktion ist im Zusammenhang mit den Blöcken 54-66 beschrieben. Im Block 54 wird die Cache-Reinigungsanforderung durch die Hardware-Reinigungsfunktion empfangen. Im Block 56 wird der durch den Zähler MAX angezeigte Cache-Eintrag in den Hauptspeicher gesichert, falls das diesem Cache-Eintrag zugeordnete Dirty-Bit gesetzt ist. Im Block 58 wird MAX dekrementiert.
- An diesem Punkt, wie durch den Entscheidungsblock 60 gezeigt ist, können alle anstehenden Unterbrechungen bearbeitet werden. Falls keine Unterbrechung empfangen worden ist, kehrt der Entscheidungsblock 62 zurück, um den nächsten Eintrag im Block 56 zu sichem, falls MIN immer noch kleiner als oder gleich MAX ist. Wenn MIN größer als MAX ist, d. h. wenn das MIN > MAX-Zustandsbit gesetzt ist, dann ist die Reinigungsoperation abgeschlossen. In diesem Fall werden im Block 64 die MIN- und MAX-Register auf ihre vorgegebenen Einstellungen zurückgesetzt (MAX = 0, MIN = der oberste Cache-Eintrag), wobei im Block 66 die Reinigungsoperation abgeschlossen ist, wobei die Steuerung zur Software-Routine im Block 52 zurückkehrt.
- Falls bei der Rückkehr zum Entscheidungsblock 60 an diesem Punkt eine Unterbrechung empfangen worden ist, wird der Fluß zum Block 66 gelenkt, wo die Reinigungsoperation vorübergehend abgeschlossen wird, wobei die Steuerung zur Betriebssystem-Software zurückkehrt, um die Unterbrechung zu bearbeiten. Nachdem die Unterbrechung bearbeitet worden ist, bestimmt der Entscheidungsblock 52, ob das MIN > MAX-Zustandsbit gesetzt ist. Wenn das Bit nicht gesetzt ist, dann hat die Reinigungsoperation, zurückzuführen auf eine Unterbrechung, nicht alle schlechten Cache-Plätze gereinigt. Der Hardware-Befehl für die Reinigung des Caches wird erneut aufgerufen, wobei er mit dem aktuellen Wert von MAX beginnen und das Abwärtszählen fortsetzen wird, bis entweder eine weitere Unterbrechung auftritt oder bis MIN größer als MAX ist.
- Das durch Fig. 4 beschriebene Cache-Reinigungsverfahren schafft signifikante Vorteile gegenüber dem Stand der Technik. Zuerst besitzt die Implementierung den Vorteil der Geschwindigkeit eines Hardware-Cache-Befehls; nach dem anfänglichen Aufruf der Hardware-Reinigungsoperation ist Software nur beteiligt, falls eine Unterbrechung auftritt. Andererseits kann die Hardware-Reinigungsoperation unterbrochen werden, wenn sie die Cache-Einträge zyklisch durchläuft, dies erlaubt dem System, auf Unterbrechungen zu antworten, wie es für die Echtzeit- Anforderungen notwendig ist. Drittens ist die Anzahl der Cache-Einträge optimiert, um nur den Bereich der Cache-Einträge zu bearbeiten, die zugeordnete Dirty-Bits besitzen.
- Die Fig. 5 und 6 veranschaulichen einen Blockschaltplan einer Ausführungsform zum Ausführen der obenbeschriebenen Hardware-Reinigung. Ein Cache- Controller 70 empfängt ein FULL CLEAN-Signal und ein END CLEAN-Signal. Die FULL CLEAN- und END CLEAN-Signale werden durch die Adressensteuerungs-Schaltungsanordnung 72 empfangen. Die Adressensteuerungs-Schaltungsanordnung 72 gibt eine Cache-Adresse und ein MIN > MAX-Signal an die Steuerlogik 74 aus. Die Steuerlogik 74 ist an das Zustandsregister 76 gekoppelt. Die Steuerlogik 74 ist an den Cache-Speicher 18 gekoppelt. Das ODER-Gatter 78 empfängt das MIN > MAX-Signal und ein oder mehrere Unterbrechungssignale.
- Im Betrieb empfängt der Cache-Controller 70 die Adresse vom Prozessor 14 (siehe Fig. 1) und steuert den Cache-Speicher 18, um die Daten vom Prozessor 14 zu empfangen und um die Daten zum Prozessor 14 zu senden, wie es geeignet ist. Der Cache-Controller 70 führt außer der Bereitstellung der obenbeschriebenen Hardware-Reinigungsfunktionen alle Funktionen einer typischen Cache-Steuerschaltung aus. Die Adressensteuerungs-Schaltungsanordnung 72 hält das MIN- Register 84 und den MAX-Zähler 82 aufrecht, wie im Zusammenhang mit Fig. 4 beschrieben ist. Die Ausgabe der Adressensteuerungs-Schaltungsanordnung 72 (der Wert des MAX-Zählers) spezifiziert die Adresse des nächsten Cache-Eintrags, der zu überprüfen und, falls der Eintrag schlecht ist, zum Hauptspeicher 16 zurück zu sichern ist. Das MIN > MAX-Signal wird ausgegeben, um anzuzeigen, ob der Wert des MIN-Registers größer als der augenblickliche Wert des MAX- Zählers ist.
- Nachdem ein FULL CLEAN-Signal empfangen worden ist, enthält der MAX- Zähler 82 die Adresse des höchsten Eintrags im Cache 18, der schlecht sein kann. Die Ausgabe des MAX-Zählers 82 wird durch die Steuerlogik 74 empfangen. Nachdem der Etikettenspeicher 22 für den Eintrag durch die Steuerlogik 74 überprüft worden ist, um festzustellen, ob der Eintrag schlecht ist, und nachdem in dem Fall, in dem das Dirty-Bit gesetzt ist, der Eintrag im Hauptspeicher 18 gesichert worden ist, wird der MAX-Zähler 82 auf die nächstniedrigere Adresse dekrementiert. Der Prozeß der Überprüfung des dem durch den MAX-Zähler 82 spezifizierten Eintrag zugeordneten Dirty-Bits, des Sicherns des Eintrags in den Hauptspeicher 16, falls das Dirty-Bit gesetzt ist, und des Dekrementierens des MAX-Zählers 82 wird wiederholt, bis entweder ein Unterbrechungssignal empfangen wird oder der Wert des MIN-Registers größer als der Wert des MAX- Zählers ist. Falls irgendeine Bedingung auftritt, wird das END CLEAN-Signal aus dem ODER-Gatter 78 ausgegeben, das die weitere Reinigung durch die Adressensteuerung 72 und die Steuerlogik 74 anhält, aber die aktuellen Werte des MAX- Zählers 82 und des MIN-Registers 84 aufrechterhält.
- Fig. 6 veranschaulicht eine Ausführungsform der Adressensteuerungs-Schaltungsanordnung 72 ausführlicher. Die FULL CLEAN- und END CLEAN-Signale werden durch das Setz-Rücksetz-Flipflop (SR-Flipflop) 80 empfangen. Das Ausgangssignal des Flipflops 80 ist das Freigabesignal (EN-Signal), das erlaubt, daß der MAX-Zähler 82 bei jedem Zyklus dekrementiert wird. Am Ende jedes Rückschreibens in den Hauptspeicher 16 wird während der Reinigungsfunktion durch den MAX-Zähler 82 ein NEXT-Signal von der Steuerlogik 74 empfangen, um den Zähler für die nächste Cache-Adresse zu dekrementieren. Der Ausgang des MIN- Registers 84 und der Ausgang des MAX-Zählers 82 sind jeweils an die Eingänge des Komparators 86 gekoppelt. Der Ausgang des Komparators 86 ist das MIN > MAX-Signal. Die virtuelle Adresse ist an die Eingänge in den MAX-Zähler 82, in das MIN-Register 84, an einen Eingang des Komparators 88 und an einen Eingang des Komparators 90 gekoppelt. Der Ausgang des MAX-Zählers 82 ist an den anderen Eingang des Komparators 90 gekoppelt, während der Ausgang des MIN-Registers 84 an den anderen Eingang des Komparators 88 gekoppelt ist. Der Ausgang des Komparators 88 zeigt an, ob die aktuelle Adresse für einen Schreibtreffer kleiner als die Ausgabe des MIN-Registers 84 ist, wobei er mit dem Ladeeingang (LD1-Eingang) des MIN-Registers 84 verbunden ist. Der Ausgang des Komparators 90 zeigt an, ob die aktuelle Adresse für einen Schreibtreffer größer als die Ausgabe das MAX-Zählers 82 ist, wobei er mit dem Ladeeingang (LD2-Eingang) des MAX-Zählers 82 verbunden ist.
- Im Betrieb wird der MAX-Zähler 82, falls er freigegeben ist, jedesmal, wenn er ein NEXT-Signal von der Steuerlogik empfängt, dekrementiert. Das Flipflop 80 wird gesetzt (EN ist wahr), wenn vom Prozessor ein FULL CLEAN-Signal empfangen wird, um die Hardware-Reinigungsfunktionen fortzusetzen (oder zu beginnen), während es zurückgesetzt wird (EN ist falsch), wenn das END CLEAN- Signal empfangen wird, entweder infolge einer Unterbrechung oder dem Ende der Reinigungsoperation. Sobald das Flipflop 80 zurückgesetzt ist, wird das Dekrementieren des Zählers angehalten, wobei das Reinigen beendet wird, bis ein weiteres FULL CLEAN-Signal empfangen wird.
- Die Komparatoren 88 und 98 laden das MIN-Register 84 bzw. den MAX- Zähler 82 während des normalen Betriebs des Cache-Speichers 16. Falls die Adresse bei einem Schreibtreffer größer als der aktuelle Wert des MAX-Zählers 82 ist, wird der Ausgang des Komparators 90 bewirken, daß die Adresse (oder ein geeigneter Abschnitt von ihr) in den MAX-Zähler geladen wird. Falls ähnlich die Adresse bei einem Schreibtreffer kleiner als der aktuelle Wert des MIN-Registers 84 ist, wird der Ausgang des Komparators 88 bewirken, daß die Adresse (oder ein geeigneter Abschnitt von ihr) in das MIN-Register 84 geladen wird.
- Während hierin eine spezifische bevorzugte Ausführungsform der Erfindung gezeigt worden ist, könnten viele Variationen implementiert werden, wie in der Technik bekannt sein würde. Anstatt die Einträge vom oberen schlechten Cache- Platz zum unteren schlechten Cache-Platz zu reinigen, könnte z. B. die veranschaulichte Ausführungsform leicht modifiziert werden, um die Einträge in der entgegengesetzten Richtung zu reinigen, indem ein inkrementierender Zähler für den MIN-Eintrag verwendet wird und der MAX-Eintrag in einem Register gespeichert wird. Während die Schaltungsanordnung für das Aufrechterhalten eines Bereichs vorhandener schlechter Plätze im Cache als Teil der Cache-Steuerlogik gezeigt ist, könnte diese Schaltungsanordnung Teil eines anderen Untersystems sein oder sie könnte ein separates Untersystem sein. Abhängig von der Verarbeitung und der Speicherarchitektur, die in einer bestimmten Vorrichtung verwendet werden, wie z. B Multiprozessor, Prozessor und Coprozessor, verzweigte Daten- und Befehlsspeicher usw., kann eine Abweichung von der hierin veranschaulichten Architektur gerechtfertigt sein, wie in der Technik bekannt sein würde. Die Techniken der Zwischenspeicherung in einem Cache, die sich von der hierin beschriebenen speziellen Technik der Zwischenspeicherung in einem bereichsassoziativen 2-Wege-Cache unterscheiden, könnten außerdem mit der vorliegenden Erfindung verwendet werden.
- Obwohl die ausführliche Beschreibung der Erfindung auf bestimmte beispielhafte Ausführungsformen gerichtet ist, werden sich den Fachleuten sowohl verschiedene Modifikationen dieser Ausführungsformen als auch alternative Ausführungsformen aufdrängen. Die Erfindung umfaßt alle Modifikationen oder alternativen Ausführungsformen, die in den Umfang der Ansprüche fallen.
Claims (15)
1. Schaltungsanordnung zum Ausführen einer
Hardware-Cache-Reinigungsfunktion in einem System mit einem Cache-Speicher (18), einem Hauptspeicher
(16) und einer Schaltungsanordnung zum Sperren möglicher
Rückschreibvorgänge, gekennzeichnet durch:
eine Adressenschaltungsanordnung (72), die eine Reihe von Cache-Adressen
in einer vorgegebenen Reihenfolge innerhalb eines Bereichs von möglicherweise
schlechten Cache-Adressen ausgibt;
eine Steuerlogik-Schaltungsanordnung (74), die Informationen aus den von
der Adressenschaltungsanordnung ausgegebenen Cache-Adressen für jeden
schlechten Cache-Platz an entsprechende Plätze im Hauptspeicher (18) schreibt;
eine Schaltungsanordnung (80), die die Adressenschaltungsanordnung (72) in
Reaktion entweder auf die Erfassung einer Unterbrechung oder auf den Abschluß
des Schreibvorgangs aller schlechten Cache-Einträge in den Hauptspeicher (16)
freigibt oder sperrt, derart, daß die Reinigungsfunktion entweder bei Erfassung
einer Unterbrechung oder bei Abschluß des Schreibvorgangs aller schlechten
Cache-Einträge in den Hauptspeicher (16) gesperrt wird, und derart, daß die
Reinigungsfunktion durch Freigeben der Adressenschaltungsanordnung nach
einer Unterbrechung fortgesetzt werden kann.
2. Schaltungsanordnung nach Anspruch 1, bei der die
Adressenschaltungsanordnung (72) einen Zähler (82) zum Ausgeben von Cache-
Adressen umfaßt.
3. Schaltungsanordnung nach Anspruch 2, bei der die
Adressenschaltungsanordnung (72) ferner ein Register (84) umfaßt.
4. Schaltungsanordnung nach Anspruch 2, bei der der Zähler (82) die
Adresse der höchstmöglichen schlechten Cache-Adresse enthält und
dekrementiert wird, um die Folge von Cache-Adressen auszugeben.
5. Schaltungsanordnung nach Anspruch 4, bei der ein Register (84) die
Adresse der niedrigstmöglichen schlechten Adresse speichert.
6. Schaltungsanordnung nach Anspruch 2, bei der der Zähler (82) die
Adresse der niedrigstmöglichen schlechten Cache-Adresse enthält und
inkrementiert wird, um die Folge von Cache-Adressen auszugeben.
7. Schaltungsanordnung nach Anspruch 6, bei der ein Register die Adresse
der höchstmöglichen schlechten Adresse speichert.
8. Schaltungsanordnung nach Anspruch 1, bei der die Schaltungsanordnung
zum Freigeben und Sperren ein Flipflop (80) umfaßt.
9. Verfahren zum Ausführen einer Hardware-Cache-Reinigungsfunktion in
einem System mit einem Cache-Speicher (18), einem Hauptspeicher (16) und
einer Schaltungsanordnung zum Sperren möglicher Rückschreibvorgänge,
gekennzeichnet durch die Schritte, bei denen:
eine Reihe von Cache-Adressen in einer vorgegebenen Reihenfolge innerhalb
eines Bereichs möglicher schlechter Cache-Adressen erzeugt wird;
Informationen aus dem Cache-Speicher (16) an den erzeugten Cache-Adressen
an entsprechende Plätze im Hauptspeicher (18) geschrieben werden, falls die
Informationen an der Cache-Adresse schlecht sind;
die Erzeugung einer Reihe von Cache-Adressen in Reaktion entweder auf eine
Unterbrechung oder auf den Abschluß des Schreibvorgangs aller schlechten
Einträge in den Hauptspeicher (16) freigegeben und gesperrt wird, derart, daß die
Reinigungsfunktion entweder bei Erfassung einer Unterbrechung oder bei
Abschluß des Schreibvorgangs aller schlechten Cache-Einträge in den
Hauptspeicher (16) gesperrt wird, und derart, daß die Reinigungsfunktion durch
Freigeben der Reihe erzeugter Cache-Adressen nach einer Unterbrechung
fortgesetzt werden kann.
10. Verfahren nach Anspruch 9, bei dem die Reihe von Cache-Adressen von
einem Zähler (62) ausgegeben wird.
11. Verfahren nach Anspruch 10, bei dem der Zähler (82) die Adresse der
höchstmöglichen schlechten Cache-Adresse enthält und die Reihe von Cache-
Adressen durch Dekrementieren des Zählers erzeugt wird.
12. Verfahren nach Anspruch 11, bei dem ein Register (84) die Adresse der
niedrigstmöglichen schlechten Adresse speichert.
13. Verfahren nach Anspruch 10, bei dem der Zähler (82) die Adresse der
niedrigstmöglichen schlechten Cache-Adresse enthält und die Reihe von Cache-
Adressen durch Inkrementieren des Zählers (82) erzeugt wird.
14. Verfahren nach Anspruch 13, bei dem ein Register die Adresse der
höchstmöglichen schlechten Adresse speichert.
15. Verfahren nach Anspruch 9, bei dem bei dem Freigabe- und Sperrschritt
die Reihe von erzeugten Cache-Adressen unter Verwendung eines Flipflops (80)
freigegeben und gesperrt wird.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP99400396A EP1030243B1 (de) | 1999-02-18 | 1999-02-18 | Optimierte Hardware-Reinigungsfunktion für einen Daten-Cache-Speicher mit virtuellen Indizes und Tags |
US09/447,194 US6606687B1 (en) | 1999-02-18 | 1999-11-22 | Optimized hardware cleaning function for VIVT data cache |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69903707D1 DE69903707D1 (de) | 2002-12-05 |
DE69903707T2 true DE69903707T2 (de) | 2003-07-10 |
Family
ID=29271938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69903707T Expired - Lifetime DE69903707T2 (de) | 1999-02-18 | 1999-02-18 | Optimierte Hardware-Reinigungsfunktion für einen Daten-Cache-Speicher mit virtuellen Indizes und Tags |
Country Status (4)
Country | Link |
---|---|
US (1) | US6606687B1 (de) |
EP (1) | EP1030243B1 (de) |
JP (1) | JP2000242556A (de) |
DE (1) | DE69903707T2 (de) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7472230B2 (en) | 2001-09-14 | 2008-12-30 | Hewlett-Packard Development Company, L.P. | Preemptive write back controller |
EP1313014B1 (de) * | 2001-11-15 | 2010-03-03 | Texas Instruments France | Unterbrechbare und wiederaufnehmbare Instruktion zum Säubern eines Segments eines Cache-Speichers |
GB0207296D0 (en) * | 2002-03-28 | 2002-05-08 | Koninkl Philips Electronics Nv | Method and appartus for context switching in computer operating systems |
ATE458222T1 (de) * | 2004-06-08 | 2010-03-15 | Freescale Semiconductor Inc | Aufrechterhaltung der cachespeicherkoherenz zum direkten zugriff (dma), abschluss einer aufgabe, zur synchronisierung |
US7606363B1 (en) | 2005-07-26 | 2009-10-20 | Rockwell Collins, Inc. | System and method for context switching of a cryptographic engine |
GB0516474D0 (en) * | 2005-08-10 | 2005-09-14 | Symbian Software Ltd | Pre-emptible context switching in a computing device |
US7802055B2 (en) * | 2006-04-19 | 2010-09-21 | Qualcomm Incorporated | Virtually-tagged instruction cache with physically-tagged behavior |
CN102197381A (zh) * | 2008-10-28 | 2011-09-21 | Nxp股份有限公司 | 用于可拆卸装置的具有高速缓存和接口的数据处理电路 |
FR2956913B1 (fr) * | 2010-03-01 | 2012-04-20 | Sagem Defense Securite | Procede de sequencement deterministe multitache |
US9195598B2 (en) | 2012-06-08 | 2015-11-24 | International Business Machines Corporation | Synchronous and asynchronous discard scans based on the type of cache memory |
US9336150B2 (en) | 2012-06-08 | 2016-05-10 | International Business Machines Corporation | Performing asynchronous discard scans with staging and destaging operations |
US9208099B2 (en) | 2012-08-08 | 2015-12-08 | International Business Machines Corporation | Adjustment of the number of task control blocks allocated for discard scans |
US9176892B2 (en) | 2013-01-22 | 2015-11-03 | International Business Machines Corporation | Performing staging or destaging based on the number of waiting discard scans |
US10318436B2 (en) * | 2017-07-25 | 2019-06-11 | Qualcomm Incorporated | Precise invalidation of virtually tagged caches |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5307477A (en) * | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
JP2839060B2 (ja) * | 1992-03-02 | 1998-12-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理システムおよびデータ処理方法 |
US5515522A (en) * | 1994-02-24 | 1996-05-07 | Hewlett-Packard Company | Coherence index generation for use by an input/output adapter located outside of the processor to detect whether the updated version of data resides within the cache |
US5664150A (en) * | 1995-03-21 | 1997-09-02 | International Business Machines Corporation | Computer system with a device for selectively blocking writebacks of data from a writeback cache to memory |
EP0784819A1 (de) * | 1995-06-08 | 1997-07-23 | International Business Machines Corporation | Cachespeicherflushmechanismus für einen cachespeicher auf zweiter stufe |
US6341324B1 (en) * | 1995-10-06 | 2002-01-22 | Lsi Logic Corporation | Exception processing in superscalar microprocessor |
US5809560A (en) * | 1995-10-13 | 1998-09-15 | Compaq Computer Corporation | Adaptive read-ahead disk cache |
JPH09223118A (ja) * | 1996-02-14 | 1997-08-26 | Oki Electric Ind Co Ltd | スヌープキャッシュメモリ制御システム |
US5915262A (en) * | 1996-07-22 | 1999-06-22 | Advanced Micro Devices, Inc. | Cache system and method using tagged cache lines for matching cache strategy to I/O application |
FR2778254B1 (fr) * | 1998-04-29 | 2002-02-15 | Texas Instruments France | Circuits,systemes et procedes d'ordinateur utilisant un nettoyage partiel d'une memoire cache |
US6115777A (en) * | 1998-04-21 | 2000-09-05 | Idea Corporation | LOADRS instruction and asynchronous context switch |
US6397302B1 (en) * | 1998-06-18 | 2002-05-28 | Compaq Information Technologies Group, L.P. | Method and apparatus for developing multiprocessor cache control protocols by presenting a clean victim signal to an external system |
US6412043B1 (en) * | 1999-10-01 | 2002-06-25 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
-
1999
- 1999-02-18 EP EP99400396A patent/EP1030243B1/de not_active Expired - Lifetime
- 1999-02-18 DE DE69903707T patent/DE69903707T2/de not_active Expired - Lifetime
- 1999-11-22 US US09/447,194 patent/US6606687B1/en not_active Expired - Lifetime
-
2000
- 2000-02-18 JP JP2000040479A patent/JP2000242556A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
DE69903707D1 (de) | 2002-12-05 |
EP1030243A1 (de) | 2000-08-23 |
JP2000242556A (ja) | 2000-09-08 |
US6606687B1 (en) | 2003-08-12 |
EP1030243B1 (de) | 2002-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69132186T2 (de) | Cache-Speicherverwaltungsanordnung | |
DE4218003C2 (de) | Cache-Steuereinrichtung für ein sekundäres Cache-Speichersystem | |
DE69327387T2 (de) | An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung | |
DE10085373B4 (de) | Verfahren zum Flushen von Cache-Zeilen | |
DE69721961T2 (de) | Mikroprozessor mit einem Nachschreibcachespeicher | |
DE69331448T2 (de) | Dataprozessor mit einem Cachespeicher | |
DE69518676T2 (de) | Cache-Speicheranordnung für einen Speicher | |
DE69616465T2 (de) | Cachespeicher mit Datenvorausladung | |
DE3782335T2 (de) | Speichersteuersystem. | |
DE69903707T2 (de) | Optimierte Hardware-Reinigungsfunktion für einen Daten-Cache-Speicher mit virtuellen Indizes und Tags | |
DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
DE69127111T2 (de) | Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher | |
DE69331039T2 (de) | Rechnersystem mit einem Vorausholungscachespeicher | |
DE69210714T2 (de) | Durch Doppelzweck-On-Chip-Speicher implementierter Echtzeit-Cachespeicher | |
DE68924306T2 (de) | Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern. | |
DE69900797T2 (de) | Cache-Speicherkohärenzprotokoll mit unabhängiger Implementierung von optimierten Cache-Speicheroperationen | |
DE60222402T2 (de) | Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher | |
DE69708188T2 (de) | Speichersteuerungseinheit | |
DE2847960C2 (de) | Speichersteuereinrichtung | |
DE19983793B4 (de) | System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher | |
DE69320847T2 (de) | Verfahren und Anordnung zur Ausführung von Prozessen in einem Multiprozessor-System | |
DE69029173T2 (de) | Mikroprozessor | |
DE69222060T2 (de) | Semaphore umgehung. | |
DE4335475A1 (de) | Datenverarbeitungseinrichtung mit Cache-Speicher | |
DE69937611T2 (de) | Intelligenter Puffer-Speicher |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |