DE68924896T2 - Cachespeicher mit mindestens zwei füllgrössen. - Google Patents
Cachespeicher mit mindestens zwei füllgrössen.Info
- Publication number
- DE68924896T2 DE68924896T2 DE68924896T DE68924896T DE68924896T2 DE 68924896 T2 DE68924896 T2 DE 68924896T2 DE 68924896 T DE68924896 T DE 68924896T DE 68924896 T DE68924896 T DE 68924896T DE 68924896 T2 DE68924896 T2 DE 68924896T2
- Authority
- DE
- Germany
- Prior art keywords
- cache
- data
- filling
- requested information
- miss
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
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 von digitalen Rechenanlagen und ihrer Architektur. Genauer bezieht sie sich auf das Auffüllen von Cache-Speichern, die in solchen Rechenanlagen verwendet werden.
- Moderne Computersysteme erfordern Speichereinrichtungen mit stark unterschiedlichen Leistungsmerkmalen. Eine Speichereinheit mit der Fähigkeit, extrem schnell Informationen abzurufen und zu übertragen, ist oft erforderlich, um einige moderne zentrale Recheneinheiten (CPUs) mit Anweisungen und Daten für deren Betrieb zu versorgen. Solche Speicher sind verfügbar, üblicherweise in der Form wahlfreier Zugriffsspeicher (RAMs), und werden für gewöhnlich als Cache- Speicher bezeichnet. Diese Caches sind im allgemeinen klein, in der Größenordnung einiger tausend Bytes, um das schnelle Abrufen von Daten zu ermöglichen. Da es wenige vollständige Programme oder Datenbanken gibt, die in Speichern dieser Größe gespeichert werden können, beinhalten Computersysteme auch Speicher mit größerer Kapazität aber langsamerer Zugriffs- und Abrufzeit. Diese Speicher können RAMs mit langsamereren Wiederauffindgeschwindigkeiten, Bubble-Speicher, verschiedene Typen von Disk-Speichern und andere Speicher einschließen.
- Ein weithin verwendetes Verfahren, den Betrieb eines Computers zu optimieren, besteht darin, einen Cache-Speicher direkt an die CPU und eine andere, größere Speichereinheit sowohl an den Cache-Speicher als auch an die CPU zu koppeln. Auf diese Weise kann der Cache die CPU sofort mit den benötigten Anweisungen und Daten mit einer Rate versorgen, die ungehinderten CPU-Betrieb ermöglicht. Üblicherweise liefert der Hauptspeicher dem Cache Nachfülldaten und hält ihn dadurch gefüllt. Wenn eine Anweisung oder ein benötigtes Datenelement sich nicht im Cache befindet, wenn die CPU es erfordert, kann es auf Kosten der dafür benötigten extra Zeit aus dem Hauptspeicher beschafft werden.
- Ein Problem mit Speichern, die virtuelle Speicheradressierung bzw. -tabelle oder -listung (mapping) verwenden, entsteht, wenn der Cache gelöscht oder geleert wird.
- Ein Speicher kann auf mindestens zwei Arten adressierbar (mapped) sein. Die erste ist die physikalische Adressierbarkeit, bei der Anweisungen sich auf die tatsächliche physikalische Adresse beziehen, unter der die benötigten Daten gespeichert sind. Die zweite Methode ist virtuelle Adressierbarkeit. Dabei bezieht sich die Anweisung auf eine virtuelle Adresse, die auf eine gewisse Weise umgewandelt werden muß, um die physikalische Adresse, unter der die Daten gespeichert sind, zu erhalten. Virtuelle Adressierbarkeit ermöglicht eine bessere Ausnutzung des Hauptspeichers und ist besonders nützlich in Umgebungen mit Mehrprogrammbetrieb, da der Speicher ohne aneinandergrenzende Aufteilungen zwischen den Benutzern zugewiesen werden kann. Sowohl physikalisch als auch virtuell adressierbare Caches werden momentan beim Entwurf von Rechenanlagen verwendet.
- Der physikalische Ort des Cache-Speichers spielt auch bei der Optimierung des Computerbetriebs eine wichtige Rolle. CPU-Operationen werden mit virtuellen Adressen durchgeführt. Wenn das Computersystem einen virtuell adressierbaren Cache verwendet, wird es vorteilhaft, den Cache direkt an die CPU zu koppeln. Jede Umwandlung von virtueller zu physikalischer Adresse, die durchgeführt werden muß, kann vom Cache aus gesehen nachfolgend durchgeführt werden.
- Wegen einer Anzahl von Gründen ändert sich, wie etwa, wenn ein neues Programm gestartet wird, die Adreßumwandlungstabelle von virtueller zu physikalischer Adresse eines virtuell adressierbaren Caches. Tritt dies auf, so muß der Cache geleert (gelöscht) werden und mit einer neuen Tabelle (map) versehen werden.
- Nachdem der Cache geleert wurde, wird er mit neuen Daten und Anweisungen gefüllt. Beim Stand der Technik wurde der Cache, nachdem er geleert wurde, mit derselben Rate aufgefüllt, mit der Daten oder Anweisungen in den Cache eingegeben wurden, während ein gegebenes Programm bereits für eine lange Zeit gelaufen war. Caches arbeiten am effizientesten, wenn sie vollständig gefüllt sind, da weniger Versuche, Daten oder Anweisungen im Cache zu finden, in Fehlversuchen resultieren, die eine Suche im Hauptspeicher ei-fordern. Infolgedessen traten, wenn der Cache mit einer konstanten Rate nach der Leerung wieder aufgefüllt wurde, zahlreiche "Fehlversuche" auf, die Bezugnahme auf den und Antwort von dem Hauptspeicher erforderten und in ineffizienter Cache-Ausnutzung resultierten. Wenn auf der anderen Seite der Cache ständig wieder aufgefüllt oder mit einer sehr hohen Rate wieder aufgefrischt wird, treten andere Probleme auf, wie etwa das Überschreiben von Daten oder Anweisungen, die immer noch aktuell und nützlich sind.
- Es ist eine Aufgabe dieser Erfindung einen Mechanismus zu schaffen, mit dem der Cache mit mindestens zwei verschiedenen Raten aufgefüllt werden kann, einer schnellen Rate, die sofort nachdem der Cache gelöscht wurde, verwendet wird, und einer langsameren Rate, die verwendet wird, wenn der Cache erst einmal beinahe vollständig wieder aufgefüllt worden ist.
- Diese und andere Aufgaben werden bei der vorliegenden Erfindung, die ein Verfahren wie in den Ansprüchen 1, 2 und 3 beansprucht vorsieht, gelöst.
- Andere Ausführungsbeispiele des Verfahrens gemäß der vorliegenden Erfindung werden in den Ansprüchen 4 bis 10 beansprucht.
- Eine Vorrichtung gemäß der vorliegenden Erfindung wird in Anspruch 11 beansprucht. Andere Ausführungsbeispiele dieser Vorrichtung werden in den Ansprüchen 12 und 13 beansprucht.
- Fig. 1 zeigt die Struktur eines in einem Cache gespeicherten Datenblocks; und
- Fig. 2 zeigt ein Blockdiagramm eines Computersystems, das einen virtuell adressierbaren Cache verwendet.
- Unter Bezugnahme auf Fig. 1 speichern Caches im allgemeinen Informationen in Blöcken von Daten. Jeder Block, hier jeweils beziffert mit 10, 20, 30, 40, und 50, enthält ein gültiges Bit, ein Kennzeichnungsfeld, ein Prozeßidentifikationsfeld (PID) und ein Datenfeld.
- Das gültige Bit wird benutzt, um zu bestimmen, ob die im Block enthaltenen Informationen gültig sind. Wenn der Cache geleert wird, werden alle gültigen Bits in jedem der Datenblöcke auf Null gesetzt, wodurch ungültige Daten angezeigt werden und das Überschreiben der gegenwärtigen Inhalte des Blocks gestattet wird. Wenn neuen gültige Daten an jeden Block geliefert werden, wird das gültige Bit auf EIN gesetzt, wodurch angezeigt wird, daß die darin enthaltenen Daten gültig sind und verwendet werden können.
- In einer Multiuser-Rechnerumgebung wird jedem Benutzerprogramm gestattet, eine bestimmte Zeit zu laufen, worauf ein anderes Programm gestartet wird. Aus Gründen, die später diskutiert werden, ist es nützlich, jedes laufende Programm mit einer eindeutigen PID-Nummer zu identifizieren. Bei der vorliegenden Erfindung wird ein Sechs-Bit-Feld für die PID-Nummer verwendet, was die Identifikation von zumindest 63 verschiedenen Prozessen ermöglicht.
- Das Datenfeld liegt dort, wo sich die in jedem Block gespeicherten Daten tatsächlich befinden.
- Unter Bezugnahme auf Fig. 2 ist nun der Cache 100 virtuell adressierbar und an die CPU 120 gekoppelt. Der Cache 100 kann ein Adreßumwandlungspuffer sein, der zum Beispiel virtuelle zu physikalische Adressumwandlungen speichert. Der Hauptspeicher 160 ist wie auch eine Mehrzahl von Eingangs-/Ausgangs-Geräten, die nicht gezeigt sind, sowohl an den Cache 100 als auch an die CPU 120 gekoppelt. Wie oben festgestellt, muß ein virtuell adressierbarer Cache jedesmal geleert werden, wenn sich die virtuelle zu physikalischer Adressierbarkeit ändert. Ein Beispiel dafür, wann dies passiert, ist, wenn ein laufendes Programm in der CPU durch ein anderes ersetzt wird.
- Die vorliegende Erfindung optimiert das Wiederauffüllen des virtuellen Cache durch Hardware auf die folgende Weise. In der nachfolgenden Beschreibung nehmen wir an, daß es einen Cache-Fehlversuch, in anderen Worten, einen Fehlversuch, gewünschte Daten oder Anweisungen im Cache aufzufinden, gegeben hat. Im allgemeinen tritt dies auf, wenn das für die Suche verwendete Adressenkennzeichnungselement auf einen bestimmten Block verweist, aber der Block andere Daten oder ungültige Daten enhält.
- Jedesmal wenn ein Fehlversuch auftritt, prüft ein erstes Ausführungsbeispiel der Erfindung, ob das gültige Bit EIN oder AUS ist. Ist es AUS, bedeutet das, daß seit der letzten Leerung keine Daten in diesen Block geschrieben wurden und daß deshalb der Cache mit einer schnellen Rate von N Blöcken pro Zeiteinheit wieder aufgefüllt werden sollte. Ist das gültige Bit EIN, so ist der Cache mit einem Block wiederaufgefüllt, basierend auf der Annahme, daß nützliche Daten bereits existieren, und es wäre Zeitverschwendung, nützliche Daten zu überschreiben.
- Das Prinzip der räumlichen Lage, von dem gefunden wurde, daß es in Rechnerumgebungen gilt, stellt fest, daß, wenn ein gegebener Block aus Daten oder Anweisungen benötigt wird, es sehr wahrscheinlich ist, daß angrenzende Blöcke von Daten oder Anweisungen ebenfalls benötigt werden. In allen diskutierten Ausführungsbeispielen ist die Anzahl von Blöcken N gleich 4. Deshalb werden 4 Blöcke, die in natürlicher Weise nebeneinander liegen, verwendet, den Cache wiederaufzufüllen. Bei den Ausführungsbeispielen werden die Blöcke in Gruppen von 4 gleichartig natürlich aneinanderliegenden Blöcken ausgewählt, genauer, Block Nr. 0 bis 3, 4 bis 7, etc. werden als Gruppe geholt, wenn der "Fehlversuch"- Block in diese Gruppe fällt. Würde z.B. festgestellt, daß Block 2 ungültig ist, so würden die Blöcke 0 bis 3 geholt werden.
- Ein zweites Ausführungsbeispiel dieser Erfindung beruht auf sowohl der PID-Nummer als auch dem gültigen Bit und ist besonders nützlich in einem Multiuser-Rechnersystem, wo eine Anzahl von verschiedenen Programmen oder Prozessen zu beinahe derselben Zeit läuft. Jede PID repräsentiert eine eindeutige Nummer, die auf einen von mindestens 32 Prozessen oder Programmen verweist die zu beinahe derselben Zeit auf einer einzigen CPU laufen. Bei diesem Ausführungsbeispiel wird das gültige Bit nach jedem Fehlversuch überprüft. Ist das gültige Bit AUS, so wird die Situation als mit der im ersten Ausführungsbeispiel beschriebenen identisch betrachtet -- der Bereich des Cache ist leer und ein Wiederauffüllen von N Blöcken findet statt. Ist das gültige Bit EIN, so wird ein zweiter Vergleich ausgeführt, dieses Mal zwischen der PID des laufenden Prozesses und der desjenigen Blocks, der gelesen wird. Stimmen die zwei Nummern nicht überein, so ist das laufende Programm verschieden von dem, das bis soeben die CPU gesteuert hat, und die in dem Block enthaltenen Daten oder Anweisungen sind nicht nützlich. Der Fehlversuch wird also bei diesem Beispiel ebenfalls mit N Blöcken wiederaufgefüllt. Nur wenn das gültige Bit EIN ist und die PID-Nummern übereinstimmen, wird der Fehlversuch mit einem Block wiederaufgefüllt. Dies vermeidet das Überschreiben von Daten, die noch für den laufenden Prozeß nützlich sein könnten.
- Ein weiteres Ausführungsbeispiel speichert die Adresse des letzten Fehlversuchs. Wenn ein zweiter Fehlversuch auftritt, werden die Speicherplätze der zwei Fehlversuche verglichen. Traten sie in derselben Gruppe von aneinanderliegenden Blöcken auf, z.B. bei Block 2 und 3, so wird angenommen, daß das laufende Programm in einen neuen Speicherbereich abgewandert ist, wodurch ein Austausch der Daten und Anweisungen erforderlich wird, und der Fehlversuch wird mit N Blöcken wiederaufgefüllt. Diese Bedingung besteht zusätzlich zu denen, die im vorherigen Ausführungsbeispiel beschrieben wurden.
- Ein weiteres Ausführungsbeispiel sieht einen Fehlversuchszähler vor. Wiederum wird, wenn das gültige Bit AUS ist und/oder die PID-Nummern nicht übereinstimmen, der Fehlversuch mit N Blöcken wiederaufgefüllt. Zusätzlich dazu führt der Fehlversuchszähler Buch über all die Fehlversuche, die auftreten, selbst dann, wenn das gültige Bit EIN ist und die PID-Nummern übereinstimmen. Überschreitet dieser Zähler einen vordefinierten Grenzwert, so wird jeder Fehlversuch mit N Blöcken wiederaufgefüllt. In diesem Fall wird angenommen, daß das laufende Programm eine Art Übergangszustand erreicht hat und in einen neuen Bereich gesprungen ist, wodurch ein Austausch von Daten und Anweisungen erforderlich wird. Sobald ein Treffer auftritt, wird der Zähler wieder auf Null gesetzt. Bei diesem Ausführungsbeispiel wird alternativ in Betracht gezogen, den Zähler bei jedem Treffer zu dekrementieren. Nur wenn der Zähler unter einen zweiten vordefinierten Grenzwert rutscht, wird ein Fehlversuch mit einem Block wiederaufgefüllt.
- Ein weiteres Ausführungsbeispiel untersucht, welcher Block in einer Gruppe von aneinanderliegenden Blöcken gelesen wird. Wie bei den letzten beiden beschriebenen Ausführungsbeispielen werden Fehlversuche, wenn das gültige Bit AUS ist und/oder wenn die PID-Nummern nicht übereinstimmen, mit N Blöcken wiederaufgefüllt. Selbst wenn das gültige Bit EIN ist und die PID-Nummern übereinstimmen, wird, wenn der untersuchte Block der erste Block in der aneinanderliegenden Gruppe von Blöcken ist, der Fehlversuch mit N Blöcken wiederaufgefüllt. Diese Entscheidung basiert auf den Datenverkehrsmustern bestimmter Programme und Datensätze.
Claims (13)
1. Verfahren zum Auffüllen eines Caches in einem Computer, wobei das
Verfahren folgende Schritte aufweist:
a) Absuchen des Caches nach den angeforderten Informationen;
b) Erzeugung eines Fehlversuch-Signals, wenn die angeforderten
Informationen sich nicht im Cache befinden;
c) Ermitteln des Status eines gültigen Bits eines Datenblocks im Cache
der die angeforderten Informationen enthalten sollte, wenn entsprechend Schritt b)
ein Fehlversuch-Signal erzeugt wird, wobei der Status des gültigen Bits einen
ungültigen Zustand anzeigt, wenn seit der letzten Leerung keine Daten in diesem
Block geschrieben wurden;
d) Auffüllen des Caches mit einer ersten Auffüllrate mit den
Datenblöcken, die den Datenblock, der die angeforderten Informationen enthält,
einschließen, wenn das gültige Bit einen Status hat, der einen ungültigen Zustand
anzeigt; und
e) Auffüllen des Caches mit einer zweiten Auffüllrate mit zumindest
einem Datenblock, der die angeforderten Informationen enthält, wenn das gültige
Bit einen Status einnimmt, der einen gültigen Zustand anzeigt, wobei die erste
Auffüllrate größer ist als die zweite Auffüllrate.
2. Verfahren zum Auffüllen eines Caches in einem Computer mit
Informationen, wobei das Verfahren folgende Schritte aufweist:
a) Absuchen des Caches nach der angeforderten Information;
b) Erzeugung eines Fehlversuch-Signals, wenn die angeforderten
Informationen sich nicht im Cache befinden;
c) Ermitteln des Status eines gültigen Bits eines Datenblocks im Cache,
der die angeforderten Informationen enthalten sollte, wenn entsprechend Schritt b)
ein Fehlversuch-Signal erzeugt wird und die angeforderten Informationen sich
nicht im Cache befinden, wobei das gültige Bit einen Status hat, der einen
ungültigen Zustand anzeigt, wenn seit der letzten Leerung keine Daten in diesem Block
geschrieben worden sind;
d) Auffüllen des Caches mit einer ersten Auffüllrate mit den
Datenblöcken, die einen Datenblock, der die angeforderten Informationen enthält,
einschließen, wenn das gültige Bit einen Status einnimmt, der einen ungültigen
Zustand anzeigt;
e) Vergleichen einer Prozeßidentifikationsnummer des Datenblocks, in
dem sich die angeforderten Informationen befinden sollten, mit einer
Prozeßidentifikationsnummer eines Prozesses, der auf dem Computer gerade läuft, wenn das
gültige Bit einen Status einnimmt, der einen gültigen Zustand anzeigt;
f) Auffüllen des Caches mit Datenblöcken mit einer ersten Auffüllrate,
wenn die Prozeßidentifikationsnummern nicht gleich sind; und
g) Auffüllen des Caches mit einer zweiten Auffüllrate mit zumindest
einem Datenblock, der die angeforderten Informationen enthält, wenn die
Prozeßidentifikationsnummern die gleichen sind, wobei die erste Auffüllrate größer ist als
die zweite Auffüllrate.
3. Verfahren zum Auffüllen eines Caches in einem Computer mit
Informationen, wobei das Verfahren folgende Schritte aufweist:
a) Absuchen eines Datenblocks im Cache, der die angeforderten
Informationen enthalten sollte, und Erzeugen eines Fehlversuch-Signals, wenn die
angeforderten Informationen sich nicht im Cache befinden;
b) Speichern der Anzahl der Fehlversuch-Signale, die bei Schritt a)
erzeugt wurden;
c) Ermitteln des Status eines gültigen Bits des Datenblocks der
abgesucht wurde, wobei das gültige Bit einen Status einnimmt, der einen ungültigen
Zustand anzeigt, wenn seit der letzten Leerung keine Daten in diesen Block
geschrieben worden sind;
d) Auffüllen des Caches mit einer ersten Auffüllrate mit den
Datenblöcken, die einen Datenblock, der die angeforderten Informationen enthält,
einschließen, wenn das gültige Bit einen Status einnimmt, der einen ungültigen
Zustand anzeigt;
e) Vergleichen der Anzahl von Fehlversuch-Signalen mit einem ersten
Grenzwert von Fehlversuchen;
f) Auffüllen des Caches mit Datenblöcken mit der ersten Auffüllrate,
wenn die Anzahl von Fehlversuch-Signalen eine erste vordefinierte Anzahl
überschreitet;
g) Schreiben von mindestens einem Datenblock in den Cache mit einer
zweiten Auffüllrate, wenn die Anzahl von Fehlversuch-Signalen kleiner oder gleich
dem ersten Grenzwert ist und das gültige Bit einen Status einnimmt, der einen
gültigen Zustand anzeigt, wobei die erste Auffüllrate größer als die zweite
Auffüllrate ist und der mindestens eine Datenblock die angeforderten Informationen
einschließt; und
h) Dekrementieren der Anzahl von Fehlversuch-Signalen jedesmal
dann, wenn ein Absuchen nach einem Datenblock in einem Treffer resultiert, und
fortgesetztes Auffüllen des Caches mit Datenblöcken mit der ersten Auffüllrate bis
die Anzahl von Fehlversuch-Signalen unter einer zweiten vordefinierten Anzahl
liegt.
4. Verfahren nach Anspruch 1, das weiter den Schritt des Vergleichs
einer Prozeßidentifikationsnummer des Datenblocks im Cache, in dem sich
angeforderte Informationen befinden sollten, mit einer Prozeßidentifikationsnummer
eines Prozesses, der gerade auf dem Computer läuft, wobei der Cache mit der
zweiten Auffüllrate gefüllt wird, wenn die zwei Prozeßidentifikationsnummern gleich
sind.
5. Verfahren nach den Ansprüchen 1, 2 oder 3, wobei die erste
Auffüllrate den Cache mit einer Rate von vier Datenblöcke je vordefinierter Zeiteinheit
und die zweite Auffüllrate mit einer Rate von einem Datenblock je vordefinierter
Zeiteinheit auffüllt.
6. Verfahren nach den Ansprüchen 1, 2 oder 3, das weiterhin folgende
Schritte aufweist:
Speichern des Speicherplatzes eines Fehlversuchs, wenn das
Absuchen des Caches in der Erzeugung des Fehlversuch-Signals resultiert;
Vergleichen des gespeicherten Fehlversuch-Speicherplatzes mit einem
Speicherplatz eines nächsten auftretenden Fehlversuchs; und
Auffüllen des Caches mit Datenblöcken mit einer ersten Auffüllrate,
wenn, wie aus dem gespeicherten Fehlversuch-Speicherplatz zusammen mit dem
Speicherplatz eines nächsten auftretenden Fehlversuchs festgestellt, der
gespeicherte Fehlversuch-Speicherplatz der erste Block in einer Gruppe von
aneinanderliegenden Blöcken ist.
7. Verfahren nach Anspruch 3, das weiter den Schritt des Vergleichs
einer Prozeßidentifikationsnummer des Datenblocks, der abgesucht wurde, mit
einer Prozeßidentifikationsnummer eines Prozesses, der gerade aus dem
Computer läuft, einschließt, wobei die zweite Auffüllrate verwendet wird, den Cache
aufzufüllen, wenn die zwei Prozeßidentifikationsnummern gleich sind.
8. Verfahren nach den Ansprüchen 1, 2 oder 3, das weiter folgende
Schritte aufweist:
Speichern eines Speicherplatzes des Fehlversuchs, wenn das
Absuchen des Cache in der Erzeugung eines Fehlversuch-Signals resultiert;
Vergleichen des gespeicherten Fehlversuch-Speicherplatzes mit einem
Speicherplatz eines nächsten auftretenden Fehlversuchs; und
Auffüllen des Caches mit Datenblöcken der ersten Auffüllrate, wenn der
gespeicherte Fehlversuch-Speicherplatz und der nächste auftretende Fehlversuch-
Speicherplatz um eine Anzahl von Datenblöcken voneinander entfernt liegen, die
innerhalb einer vordefinierten Anzahl liegt.
9. Verfahren nach Anspruch 8, wobei die vordefinierte Anzahl von
Datenblöcken durch eine Gruppe von nebeneinanderliegenden Blöcken gegeben ist.
10. Verfahren nach Anspruch 3, wobei Schritt b), jedesmal, wenn ein
Absuchen nach einem Datenblock in einem Treffer resultiert, den Zähler auf
dekrementiert.
11. Vorrichtung zum Auffüllen eines Caches eines Computers mit
Informationen, welche umfaßt:
eine Vorrichtung zum Absuchen des Caches nach angeforderten
Informationen;
eine Vorrichtung zum Erzeugen eines Fehlversuch-Signals, wenn die
angeforderten Informationen nicht gefunden werden;
eine Vorrichtung zum Auswerten eines gültigen Bits eines Datenblocks
im Cache, in dem sich angeforderte Informationen befinden sollten, wenn das
Fehlversuch-Signal erzeugt wird, wobei das gültige Bit einen Status einnimmt, der
einen ungültigen Zustand anzeigt, wenn seit der letzten Leerung keine Daten in
diesen Block geschrieben worden sind;
eine Vorrichtung zum Auffüllen des Caches mit N Blöcken von Daten
während eines festgelegten Zeitintervalls, wenn das gültige Bit nicht EIN ist, wobei
die N Datenblöcke einen Datenblock einschließen, der die angeforderten
Informationen enthält; und
eine Vorrichtung zum Auffüllen des Cache mit P Datenblöcken während
eines festgelegten Zeitintervalls, wenn das gültige Bit EIN ist, wobei P kleiner ist
als N und die P Blöcke einen Datenblock einschließen, der die angeforderten
Informationen enthält.
12. Vorrichtung nach Anspruch 11, die ferner eine Vorrichtung zum
Vergleich einer Prozeßidentifikationsnummer des Datenblocks mit einer
Prozeßidentifikationsnummer eines Prozesses, der gerade auf dem Computer läuft,
einschließt, wobei die Vorrichtung zum Auffüllen den Cache mit Blöcken
verschiedener Größe auffüllt, die auf dem von der Vorrichtung zum Vergleichen ausgeführten
Vergleich der Prozeßidentifikationsnummern basiert.
13. Vorrichtung nach Anspruch 11, bei der der Cache ein
Adreßumwandlungspuffer ist.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17659688A | 1988-04-01 | 1988-04-01 | |
| PCT/US1989/001314 WO1989009444A1 (en) | 1988-04-01 | 1989-03-30 | Cache with at least two fill sizes |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE68924896D1 DE68924896D1 (de) | 1996-01-04 |
| DE68924896T2 true DE68924896T2 (de) | 1996-07-25 |
Family
ID=22645015
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE68924896T Expired - Fee Related DE68924896T2 (de) | 1988-04-01 | 1989-03-30 | Cachespeicher mit mindestens zwei füllgrössen. |
Country Status (6)
| Country | Link |
|---|---|
| EP (1) | EP0359815B1 (de) |
| JP (1) | JP2700148B2 (de) |
| KR (1) | KR930002786B1 (de) |
| CA (1) | CA1314107C (de) |
| DE (1) | DE68924896T2 (de) |
| WO (1) | WO1989009444A1 (de) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP1182562B1 (de) * | 2000-08-21 | 2011-05-11 | Texas Instruments France | Intelligenter Cache-Speicher mit unterbrechbarer Blockvorausholung |
| US7162588B2 (en) | 2002-08-23 | 2007-01-09 | Koninklijke Philips Electronics N.V. | Processor prefetch to match memory bus protocol characteristics |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4392200A (en) * | 1980-01-28 | 1983-07-05 | Digital Equipment Corporation | Cached multiprocessor system with pipeline timing |
| US4442488A (en) * | 1980-05-05 | 1984-04-10 | Floating Point Systems, Inc. | Instruction cache memory system |
| US4370710A (en) * | 1980-08-26 | 1983-01-25 | Control Data Corporation | Cache memory organization utilizing miss information holding registers to prevent lockup from cache misses |
| US4489378A (en) * | 1981-06-05 | 1984-12-18 | International Business Machines Corporation | Automatic adjustment of the quantity of prefetch data in a disk cache operation |
-
1989
- 1989-03-30 DE DE68924896T patent/DE68924896T2/de not_active Expired - Fee Related
- 1989-03-30 JP JP1504733A patent/JP2700148B2/ja not_active Expired - Lifetime
- 1989-03-30 KR KR1019890701200A patent/KR930002786B1/ko not_active Expired - Fee Related
- 1989-03-30 WO PCT/US1989/001314 patent/WO1989009444A1/en not_active Ceased
- 1989-03-30 EP EP89904922A patent/EP0359815B1/de not_active Expired - Lifetime
- 1989-03-31 CA CA000595321A patent/CA1314107C/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| EP0359815A1 (de) | 1990-03-28 |
| DE68924896D1 (de) | 1996-01-04 |
| JPH02500552A (ja) | 1990-02-22 |
| EP0359815B1 (de) | 1995-11-22 |
| JP2700148B2 (ja) | 1998-01-19 |
| EP0359815A4 (en) | 1992-04-01 |
| KR930002786B1 (ko) | 1993-04-10 |
| WO1989009444A1 (en) | 1989-10-05 |
| KR900700959A (ko) | 1990-08-17 |
| CA1314107C (en) | 1993-03-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
| DE69130086T2 (de) | Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien | |
| DE68902193T2 (de) | Datenspeicheranordnung. | |
| DE68924206T2 (de) | Verfahren und Einrichtung zum Filtern von Ungültigkeitserklärungsanforderungen. | |
| DE69518676T2 (de) | Cache-Speicheranordnung für einen Speicher | |
| DE69332022T2 (de) | System und verfahren zur dynamischen cachespeicherverwaltungssteuerung. | |
| DE60211076T2 (de) | Datenübertragung zwischen virtuellen Adressen | |
| DE3851730T2 (de) | Cachespeicherverwaltung für ein peripheres Ratenspeichersubsystem. | |
| DE3151745C2 (de) | ||
| DE102011076894B9 (de) | Persistenter Speicher für einen Hauptspeicher eines Prozessors | |
| DE69031411T2 (de) | Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff | |
| DE102007052853B4 (de) | Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter | |
| DE68923863T2 (de) | Ein-/Ausgabecachespeicherung. | |
| DE69229667T2 (de) | Simulierte cachespeicher-assoziativität | |
| DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
| DE69033064T2 (de) | Verfahren zur Zuordnung von reellen Seiten zu virtuellen Seiten mit davon verschiedenen Seitengrössen | |
| DE3852695T2 (de) | Multiprozessorsystem mit mehreren Speichern. | |
| DE2226382A1 (de) | Datenverarbeitungsanlage | |
| DE102008048627A1 (de) | Zuteilen von Platz in dedizierten Cache-Wegen | |
| DE3011552A1 (de) | Datenverarbeitungsanlage mit einem hauptspeicher sowie wenigsten einem datenprozessor mit zugeordnetem adressenumformer | |
| DE60001170T2 (de) | Betriebsystemsseitenplazierung zum maximieren der cachedatenwiederverwendung | |
| DE68928333T2 (de) | Pufferspeicher, der zur Speicherung von Befehls- und Datenblöcken auf verschiedene Blockgrössen geeignet ist | |
| DE3046912C2 (de) | Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage | |
| DE69130626T2 (de) | Verfahren zur Verwaltung einer Cache-Speicheranordnung | |
| DE60003426T2 (de) | Statusbits für cachespeicher |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition | ||
| 8339 | Ceased/non-payment of the annual fee |