DE69130086T2 - Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien - Google Patents

Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien

Info

Publication number
DE69130086T2
DE69130086T2 DE69130086T DE69130086T DE69130086T2 DE 69130086 T2 DE69130086 T2 DE 69130086T2 DE 69130086 T DE69130086 T DE 69130086T DE 69130086 T DE69130086 T DE 69130086T DE 69130086 T2 DE69130086 T2 DE 69130086T2
Authority
DE
Germany
Prior art keywords
level cache
cache
data
way
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69130086T
Other languages
English (en)
Other versions
DE69130086D1 (de
Inventor
Roger E. Houston Texas 77070 Tipley
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Compaq Computer Corp
Original Assignee
Compaq Computer Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Compaq Computer Corp filed Critical Compaq Computer Corp
Publication of DE69130086D1 publication Critical patent/DE69130086D1/de
Application granted granted Critical
Publication of DE69130086T2 publication Critical patent/DE69130086T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

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)
  • Oscillators With Electromechanical Resonators (AREA)

Description

  • Die vorliegende Erfindung betrifft Mikroprozessor-Cache-Teilsysteme in Computersystemen, und insbesondere ein Verfahren und eine Vorrichtung zum Erreichen von Mehrstufen-Inklusion bei Erststufen- und Zweitstufen-Caches in einem Computersystem in solcher Weise, daß die Zweitstufen-Cachesteuerung die grundsätzlichen Beobachtungs-Verantwortlichkeiten für beide Caches wahrnehmen kann.
  • Die Personalcomputer-Industrie ist ein lebhaftes und wachsendes Gebiet, das sich fortschreitend mit weiteren Innovationen entwickelt. Die Antriebskraft hinter diesen Innovationen war das wachsende Verlangen nach schnelleren und leistungsfähigeren Computern. Ein größeres Hindernis bei der Geschwindigkeitsentwicklung der Personalcomputer war historisch die Geschwindigkeit, mit der auf Daten aus dem Speicher zugegriffen werden kann, was man als die Speicherzugriffzeit bezeichnet. Der Mikroprozessor mit seinen relativ raschen Prozessorzykluszeiten wurde allgemein verlangsamt durch die Notwendigkeit von Wartezuständen während Speicherzugriffen, um die relativ langsamen Speicherzugriffzeiten aufzunehmen. Deshalb war eine Verbesserung der Speicherzugriffzeiten eines der größeren Forschungsgebiete bei der Verbesserung der Computerleistung.
  • Um den Abstand zwischen den schnellen Mikroprozessor-Zykluszeiten und den langsamen Speicherzugriffzeiten zu überbrücken wurde der Cache-Speicher entwickelt. Ein Cache ist eine kleine Ansammlung von sehr schnellen relativ teuren Speichern mit Null-Wartezustand, und wird benutzt, um eine Kopie von Kodes und Daten von dem Hauptspeicher zu speichern, auf die häufig zugegriffen wird. Der Mikroprozessor kann aus diesem sehr schnellen Speicher arbeiten und dadurch die Anzahl von Wartezuständen verringern, die während Speicherzugriffen eingeschoben werden müssen. Wenn der Prozessor Daten aus dem Speicher anfordert, und die Daten in dem Cache sitzen, findet ein Cache-Lese treffer statt, und die Daten von dem Speicherzugriff können von dem Cache ohne Auftreten von Wartezuständen zum Prozessor zurückgeführt werden. Falls die Daten sich nicht im Cache befinden, findet ein Cache-Lesefehlschlag statt, die Speicheranforderung wird zu dem System weitergegeben und die Daten werden vom Hauptspeicher abgeholt, wie es normalerweise bei nicht vorhandenem Cache der Fall ist. Bei einem Cache-Fehlschlag werden die vom Hauptspeicher abgeholten Daten zum Prozessor gebracht und werden auch in den Cache geschrieben, in Anbetracht der statistischen Wahrscheinlichkeit, daß diese Daten wieder durch den Prozessor angefordert werden.
  • Ein wirksamer Cache ergibt eine hohe "Trefferrate", was den Anteil von Cache-Treffern bedeutet, die während aller Speicherzugriffe auftreten. Wenn ein Cache eine hohe Trefferrate besitzt, wird die Mehrzahl von Speicherzugriffen mit Wartezustand Null bedient. Die Netto-Auswirkung einer hohen Cache- Trefferrate besteht darin, daß die bei relativ selten vorkommenden Fehlschlägen auftretenden Wartezustände über eine große Anzahl von Null-Wartezuständen bei Cache-Trefferzugriffen gemittelt werden, so daß sich ein durchschnittlicher Wartezustand von nahezu Null pro Zugriff ergibt. Da ein Cache üblicherweise an dem örtlichen Bus des Mikroprozessors gelegen ist, werden Cache-Treffer örtlich bedient, ohne den Systembus in Anspruch zu nehmen. Deshalb hat ein aus seinem örtlichen Cache arbeitender Prozessor eine viel geringere "Busverwendungshäufigkeit". Das setzt die durch den Prozessor benutzte Systembus-Bandbreite herab, so daß für andere Busmaster mehr Bandbreite verfügbar wird.
  • Eine andere wichtige Eigenschaft von Caches ist, daß der Prozessor aus seinem örtlichen Cache arbeiten kann, wenn er keine Kontrolle über den Systembus besitzt, wodurch der Wirkungsgrad des Computersystems erhöht wird. Bei Systemen ohne Mikroprozessor-Caches muß der Prozessor allgemein im Leerlauf sein, während er keine Kontrolle über den Systembus hat. Das setzt den Gesamtwirkungsgrad des Computersystems herab, weil der Prozessor in dieser Zeit keine nützliche Arbeit leisten kann. Wenn jedoch der Prozessor einen an seinem örtlichen Bus angeschlossenen Cache enthält, kann er die notwendigen Kodes und Daten aus seinem Cache holen, um eine nützliche Arbeit zu leisten, während andere Geräte den Systembus kontrollieren, und dadurch den Systemwirkungsgrad erhöhen.
  • Das Cache-Verhalten hängt von vielen Faktoren ab, einschließlich der Trefferrate und der Cache-Speicher-Zugriffzeit. Die Trefferrate ist ein Maß dafür, wie wirksam ein Cache beim Aufrechterhalten einer Kopie der am häufigsten benutzten Kodes und Daten ist, und in einem hohen Maß ist sie eine Funktion der Größe des Caches. Ein größerer Cache wird allgemein eine höhere Trefferrate besitzen als ein kleinerer Cache. Ein Erhöhen der Cache-Größe kann jedoch die Cache-Speicher-Zugriffzeit möglicherweise verschlechtern. Jedoch können Cache-Auslegungen für einen größeren Cache erzielt werden mit Benutzung von Cache- Speichern mit den schnellstmöglichen Zugriffzeiten, so daß der Begrenzungsfaktor bei der Auslegung die minimale CPU-Zugriffzeit ist. Auf diese Weise geht ein größerer Cache nicht zu Lasten der Speicherzugriffzeit gegenüber einem kleineren Cache, da der Begrenzungsfaktor in dieser Auslegung die minimale CPU- Zugriffzeit ist.
  • Andere wichtige Überlegungen bei dem Cache-Verhalten sind die Organisation des Caches und die bei dem Cache eingesetzten Cache-Verwaltungstaktiken. Ein Cache kann allgemein in entweder einer direktkopierenden oder einer satzassoziativen Gestaltung organisiert werden. Bei einer direktkopierenden Organisation wird der körperlich vorhandene Adreßraum des Computers vorstellungsmäßig in eine Anzahl von gleichen Seiten aufgeteilt, wobei die Seitengröße gleich der Größe des Caches ist. Der Cache wird in eine Anzahl von Sätzen unterteilt, wobei jeder Satz eine bestimmte Anzahl von Zeilen enthält. Jede Seite im Hauptspeicher besitzt eine der Anzahl von Zeilen im Cache äquivalente Anzahl von Zeilen, und jede Zeile einer jeweiligen Seite im Hauptspeicher entspricht einer gleichartig gelegenen Zeile im Cache. Eine wichtige Eigenschaft eines direktkopierenden Cache ist, daß jede Speicherzeile einer Seite im Hauptspeicher, die als ein Seitenversatz bezeichnet wird, nur in der äquivalent angeordneten Zeile oder mit dem gleichen Seitenversatz im Cache sitzen kann. Infolge dieser Begrenzung braucht der Cache nur auf eine gewisse Zahl von oberen Adreßbits einer Speicheradresse Bezug zu nehmen, die als eine Markierung bezeichnet werden, um zu bestimmen, ob eine Kopie der Daten von der jeweiligen Speicheradresse im Cache sitzt, da die Adreßbits niedrigerer Ordnung durch den Seitenversatz der Speicheradresse vorgegeben sind.
  • Während ein direktkopierender Cache als eine Speicherreihe organisiert ist, die in ihrer Größe einer konzeptionellen Seite im Hauptspeicher äquivalent ist, enthält ein satzassoziativer Cache eine Anzahl von Speicher-Reihen oder -Wegen, die jeweils in ihrer Größe einer konzeptionellen Seite im Hauptspeicher äquivalent sind. Dementsprechend kann ein Seitenversatz im Hauptspeicher in einer Anzahl von Plätzen im Cache abgezeichnet werden, die gleich der Anzahl von Wegen im Cache ist. Z. B. kann in einem vierwege-satzassoziativen Cache eine Zeile oder ein Seitenversatz vom Hauptspeicher in dem äquivalenten Seitenversatzplatz an einem der vier Wege des Cache sitzen.
  • Einsatzassoziativer Cache enthält allgemein einen Ersetzungs- Algorithmus, der bestimmt, welche Reihe oder welcher Weg mit welchen Daten aufgefüllt wird, wenn ein Lesefehlschlag auftritt. Viele satzassoziative Caches benutzen irgendeine Form einer LRU-(least recently used = am wenigsten zeitnah verwendet)-Algorithmus, der neue Daten in den Weg einsetzt, auf den am längsten nicht zugegriffen wurde. Das geschieht deswegen, weil statistisch der Weg, der zuletzt benutzt oder auf den zuletzt zugegriffen wurde, um Daten zum Prozessor zu schaffen, derjenige ist, der in der Zukunft am wahrscheinlichsten wieder benötigt wird. Deshalb stellt der LRU-Algorithmus sicher, daß der Block, der ersetzt wird, am wenigsten wahrscheinlich durch den Cache angeforderte Daten besitzt.
  • Cache-Verwaltung wird allgemein durch ein Gerät ausgeführt, das als Cachesteuerung bezeichnet wird. Die Cachesteuerung enthält ein Inhaltsverzeichnis, das für jeden Satz im Cache einen zugehörigen Eintrag enthält. Dieser Eintrag besitzt im allgemeinen drei Komponenten: eine Markierung, ein Markierungs- Gültigkeitsbit und eine Anzahl von Zeilen-Gültigkeitsbits, die gleich der Zahl von Zeilen in jedem Cache-Satz ist. Die Markierung wirkt als eine Hauptspeicher-Seitennummer, und hält die oberen Adreßbits der bestimmten Seite im Hauptspeicher, von der die Kopie der in dem jeweiligen Satz des Caches sitzenden Daten stammt. Der Zustand des Markierungs-Gültigkeitsbits bestimmt, ob die Daten in dem jeweiligen Cache-Satz als gültig oder ungültig betrachtet werden. Wenn das Markierungs-Gültigkeitsbit gelöscht ist, wird der ganze Satz als ungültig angesehen. Wenn das Markierungs-Gültigkeitsbit wahr ist, wird eine einzelne Zeile innerhalb des Satzes als gültig oder ungültig betrachtet, in Abhängigkeit von dem Status des jeweiligen Zeilen-Gültigkeitsbits.
  • Eine grundlegende Cache-Verwaltungstaktik ist die Aufrechterhaltung der Cache-"Kohärenz". Die Cache-Kohärenz bezieht sich auf die Erfordernis, daß irgendeine Datenkopie in einem Cache identisch mit dem Eigner der Daten an dieser Stelle sein muß (oder tatsächlich dieser Eigner ist). Der Eigner der Daten einer Stelle wird allgemein definiert als die entsprechende Stelle, die die jüngste Version der in dem jeweiligen Speicherplatz sitzenden Daten besitzt. Der Eigner von Daten kann entweder ein unmodifizierter Platz im Hauptspeicher oder ein modifizierter Platz in einem Rückschreibe-Cache sein. Bei Computersystemen, bei denen unabhängige Busmaster auf den Speicher zugreifen können, besteht eine Möglichkeit, daß ein Busmaster wie eine Direkt-Speicherzugriffsteuerung, ein Netz oder eine Festplatten-Schnittstellenkarte, oder eine Videographikkarte die Inhalte eines Hauptspeicherplatzes ändern können, der in dem Cache dupliziert ist. Wenn dies erfolgt, sagt man, daß der Cache "überständige" oder ungültige Daten enthält. Um Cache-Kohärenz aufrecht zu erhalten, ist es notwendig, daß die Cachesteuerung den Systembus überwacht, wenn der Prozessor den Systembus nicht inne hat, um zu sehen, ob ein anderer Busmaster auf den Hauptspeicher zugreift. Dieses Verfahren zum Überwachen des Buses wird als "beobachten" (snooping) bezeichnet.
  • Die Cachesteuerung muß den Systembus während Speicherlesevorgängen durch einen Busmaster in einer Rückschreibe-Cache- Auslegung überwachen wegen der Möglichkeit, daß ein vorhergehender Prozessor-Schreibvorgang eine Datenkopie in dem Cache geändert hat, die noch nicht im Hauptspeicher aktualisiert wurde. Das wird als Lesebeobachtung (read snooping) bezeichnet. Bei einem Lesebeobachtungstreffer, bei dem der Cache Daten enthält, die im Hauptspeicher noch nicht aktualisiert sind, gibt die Cachesteuerung allgemein die jeweiligen Daten an den Hauptspeicher, und der anfordernde Busmaster liest im allgemeinen diese Daten beim Durchlauf von der Cachesteuerung zum Hauptspeicher, und dieser Vorgang wird als "wegschnappen" (snarfing) bezeichnet. Die Cachesteuerung muß während Speichereinschreibungen auch den Systembus überwachen, da der Busmaster einen in dem Cache sitzenden Speicherplatz beschreiben oder ihn ändern kann. Das wird als Schreibbeobachtung (read snooping) bezeichnet. Bei einem Schreibbeobachtungstreffer wird der Cache-Eintrag entweder in dem Cache-Verzeichnis durch die Cachesteuerung als ungültig bezeichnet, was bedeutet, daß dieser Eintrag nicht länger korrekt ist, oder der Cache wird zusammen mit dem Hauptspeicher aktualisiert. Wenn deshalb ein Busmaster in einer Rückschreibe-Cache-Auslegung den Hauptspeicher liest oder in ihn einschreibt oder in einer Durchschreibe-Cache-Auslegung zum Hauptspeicher schreibt, muß die Cachesteuerung die Systemadresse zwischenspeichern und eine Cache-Nachschau in dem Markierungsverzeichnis ausführen, das dem Seitenversatzplatz entspricht, wo der Speicherzugriff vorgefallen ist, um zu sehen, ob der Inhalt des Hauptspeicherplatzes, auf den zugegriffen wurde, auch in dem Cache vorhanden ist. Falls eine Kopie der Daten von diesem Platz in dem Cache sitzt, unternimmt die Cachesteuerung die angemessene Aktion in Abhängigkeit davon, ob ein Lese- oder Schreibbeobachtungstreffer aufgetreten ist. Das verhindert, daß inkompaktible Daten im Hauptspeicher und dem Cache gespeichert sind, so daß dadurch die Cache-Kohärenz erhalten wird.
  • Eine andere Überlegung bei dem Erhalten von Cache-Kohärenz ist die Behandlung von Prozessor-Einschreibungen in den Speicher. Wenn der Prozessor in den Hauptspeicher schreibt, muß der Speicherplatz geprüft werden, um zu bestimmen, ob eine Kopie der Daten von diesem Platz ebenfalls im Cache sitzt. Wenn ein Prozessor-Schreibtreffer in einer Rückschreibe-Cache-Auslegung auftritt, wird der Cache-Platz mit den neuen Daten aktualisiert und der Hauptspeicher kann mit den neuen Daten zu einem späteren Zeitpunkt oder sobald es notwendig wird, aktualisiert werden. In einem Durchschreibe-Cache wird der Hauptspeicherplatz allgemein bei einem Prozessor-Schreibtreffer in Verbindung mit dem Cache-Platz aktualisiert. Falls ein Prozessor- Schreib-Fehlschlag auftritt, kann die Cachesteuerung den Schreib-Fehlschlag bei einer Durchschreibe-Cache-Auslegung ignorieren, da der Cache bei dieser Auslegung unbeeinflußt bleibt. Alternativ kann die Cachesteuerung eine "Schreib- Zuordnung" ausführen, wodurch die Cachesteuerung eine neue Zeile in dem Cache zusätzlich zum Durchleiten der Daten zum Hauptspeicher zuordnet. In einer Rückschreibe-Cache-Auslegung ordnet die Cachesteuerung allgemein eine neue Zeile im Cache zu, wenn ein Prozessor-Schreib-Fehlschlag auftritt. Dies enthält allgemein das Lesen der restlichen Einträge zum Auffüllen der Zeile in dem Hauptspeicher, vor oder gemeinsam mit dem Zuführen der Schreibdaten zum Cache. Der Hauptspeicher wird zu einem späteren Zeitpunkt aktualisiert, sobald es nötig wird.
  • Caches sind allgemein unabhängig vom Mikroprozessor ausgelegt. Der Cache ist an den örtlichen Bus (lokal bus) des Mikroprozessors angesetzt und während der Auslegung des Computersystems zwischen dem Prozessor und dem Systembus mit Schnittstellenbildung angeschlossen. Mit der Entwicklung von Computer-Chips mit höherer Transistordichte sind jedoch gegenwärtig viele Prozessoren mit einem Cache am Chip selbst ausgelegt, um die Verhaltensziele mit Bezug auf die Speicherzugriffzeiten zu erreichen. Der auf dem gemeinsamen Chip befindliche Cache, der bei diesen Prozessoren benutzt wird, ist allgemein klein, mit z. B. 8 kByte. Der kleinere am Chip befindliche Cache ist allgemein schneller als der große auf einem eigenen Chip befindliche Cache und verringert den Spalt zwischen schnellen Prozessorzykluszeiten und den relativ langsamen Zugriffzeiten für große Caches.
  • In Computersystemen, die Prozessoren mit am Chip befindlichen Caches benutzen, wird oftmals ein externer Zweitstufen-Cache zum System hinzugefügt, um die Speicherzugriffzeit weiter zu verbessern. Der Zweitstufen-Cache ist im allgemeinen viel größer als der am Chip befindliche Cache, und wenn er in Verbindung mit dem am Chip befindlichen Cache eingesetzt wird, ergibt er eine größere Gesamttrefferrate, als sie der am Chip befindliche Cache durch sich selbst schaffen könnte.
  • In Systemen, die mehrere Cache-Stufen verkörpern, wird der am Chip befindliche oder Erststufen-Cache zuerst geprüft, um zu sehen, ob eine Kopie der Daten dort sitzt. Falls das der Fall ist, tritt ein Erststufen-Cachetreffer auf, und der Erststufen- Cache schafft die entsprechenden Daten zum Prozessor. Wenn ein Erststufen-Cache-Fehlschlag auftritt, wird der Zweitstufen- Cache geprüft. Falls ein Zweitstufen-Cachetreffer auftritt, werden die Daten von dem Zweitstufen-Cache zum Prozessor geschafft. Falls ein Zweitstufen-Cache-Fehlschlag auftritt, werden die Daten vom Hauptspeicher abgeholt. Schreibvorgänge verlaufen gleichartig, wobei Mischen und Anpassen der vorher besprochenen Vorgänge möglich ist.
  • In Mehrstufen-Cache-Systemen war es im allgemeinen notwendig, daß jeder Cache den Systembus während Einschreibungen in den Speichern durch andere Busmaster beobachtet, um Cache-Kohärenz aufrecht zu erhalten. Wenn der Mikroprozessor nicht die Kontrolle über den Systembus inne hat, sind Cachesteuerungen sowohl für den Erststufen- wie den Zweitstufen-Cache erforderlich, um die Adresse jeder Speichereinschreibung zwischenzuspeichern und diese Adresse anhand der Markierung in dem eigenen Cache-Verzeichnis zu prüfen. Das behindert die Wirksamkeit des Prozessors beträchtlich, der während dieser Zeit aus seinem am Chip befindlichen Cache arbeitet, da er fortwährend durch die Beobachtungsaufwendungen des Cachesteuerers für den am Chip befindlichen Cache unterbrochen wird. Deswegen verschlechtert die Erfordernis, daß die Cachesteuerung des am Chip befindlichen Caches den Systembus bei jeder Speichereinschreibung beobachten muß, das Systemverhalten, da es den Prozessor davon abhält, wirksam aus seinem am Chip befindlichen Cache zu arbeiten, während er die Kontrolle über den Systembus nicht inne hat.
  • In vielen Fällen, wo Mehrstufen-Cache-Hierarchien bei mehreren Prozessoren vorhanden sind, ist eine als Mehrstufen-Inklusion bezeichnete Eigenschaft in der Hierarchie erwünscht. Mehrstufen-Inklusion sorgt dafür, daß der Zweitstufen-Cache garantierterweise eine Kopie des Inhalts des Erststufen- oder auf dem Chip befindlichen Caches besitzt. Wenn dies der Fall ist, sagt man, daß der Zweitstufen-Cache einen Supersatz des Erststufen-Caches hält. Mehrstufen-Inklusion wurde meistens in Mehrprozessor-Systemen benutzt, um Cache-Kohärenz-Probleme zu verhindern. Wenn Mehrstufen-Inklusion in Mehrprozessor-Systemen ausgeführt wird, können die höher gestuften Caches die niedriger gestuften Caches gegen Cache-Kohärenz-Probleme abschirmen und dadurch unnötige Blindprüfungen und Ungültigkeitsschreibungen verhindern, die sonst in den Niedrigerstufen-Caches auftreten würden, wenn keine Mehrstufen-Inklusion ausgeführt wäre.
  • Mehrstufen-Cache-Hierarchien mit Mehrstufen-Inklusion werden beispielsweise geoffenbart in Journal of Parallel and Distributed Computing, Band 6, Nr. 3, Juni 1989, DULUTH, MN, US, Seiten 451-476, BAER u. a.
  • Die vorliegende Erfindung enthält ein Verfahren und eine Vorrichtung zum Erreichen von Mehrstufen-Inklusion unter Erst- und Zweitstufen-Caches in einem Computersystem. Mehrstufen- Inklusion umgeht die Notwendigkeit, den Systembus durch die Cachesteuerung des Erststufen-Cache bei jeder auftretenden Speichereinschreibung zu überwachen, während der Prozessor keine Kontrolle über den Systembus innehat, weil die Cachesteuerung des Zweitstufen-Caches diese Pflichtaufgabe für beide Caches übernehmen kann. Das setzt die Erststufen-Cachesteuerung frei und erlaubt dadurch ein wirksameres Arbeiten des Mikroprozessors aus dem Erststufen-Cache, wenn er keine Steuerung des Systembus innehat.
  • Der Zweitstufen-Cache besitzt vorzugsweise eine Zahl von Wegen, die gleich oder größer als die Wegezahl im Erststufen-Cache ist. Der Erststufen- ist bei der bevorzugten Ausführung der vorliegenden Erfindung wie der Zweitstufen-Cache ein vierwegesatzassoziativer Cache. Bei dieser Ausführung besteht eine 1 : 1- Korrespondenz der Cachewege in dem Erststufen-Cache mit den Cachewegen in dem Zweitstufen-Cache. Während einer Erststufen- Cache-Zeilenfüllung vom Hauptspeicher kommuniziert die Erststufen-Cachesteuerung mit der Zweitstufen-Cachesteuerung den besonderen Erststufen-Cacheweg, in welchen die Daten einzusetzen sind, so daß die Zweitstufen-Cachesteuerung die Daten in den entsprechenden Cacheweg der zweiten Stufe einsetzen kann. Wenn die Zweitstufen-Cachesteuerung eine Datenkopie an die Erststufen-Cachesteuerung übermittelt, informiert die Zweitstufen-Cachesteuerung die Erststufen-Cachesteuerung darüber, von welchem Zweitstufen-Cacheweg die Daten kommen. Die Erststufen-Cachesteuerung mißachtet ihren normalen Ersetzungs- Algorithmus und füllt den entsprechenden Erststufen-Cacheweg. Auf diese Weise richten der Erststufen- und der Zweitstufen- Cache sich auf "Wegegrundlage" aus. Diese "Wege"-Ausrichtung verhindert, daß die Zweitstufen-Cachesteuerung Daten in einen anderen Weg als dem im Erststufen-Cache einsetzt, und bei diesem Vorgang möglicherweise Daten entfernt, die in dem Erststufen-Cache sitzen.
  • Die Cache-Organisation des Erststufen-Caches gemäß der vorliegenden Erfindung ist eine Durchschreibe-Architektur. Bei einer Prozessor-Einschreibung wird die Information vorzugsweise in den Erststufen-Cache geschrieben, ohne Rücksicht darauf, ob ein Schreibtreffer oder Schreibfehlschlag aufgetreten ist, und externe Schreibbuszyklen werden eingeleitet, welche die Information in den Zweitstufen-Cache schreiben. Der Erststufen-Cache sendet den bestimmten Erststufen-Cacheweg, wo die Daten eingesetzt wurden, an die Zweitstufen-Cachesteuerung, so daß die Zweitstufen-Cachesteuerung die Daten in den entsprechenden Zweitstufen-Cacheweg einsetzen kann, wodurch die "Wege"-Ausrichtung aufrecht erhalten bleibt. Der Zweitstufen-Cache ist vorzugsweise ein Rückschreibe-Cache gemäß der bevorzugten Ausführung, kann jedoch auch, falls gewünscht, ein Durchschreibe-Cache sein.
  • Die Zweitstufen-Cachesteuerung benutzt ein Inklusionsbit mit Bezug auf jede Datenzeile in dem Zweitstufen-Cache, um daran zu erinnern, ob eine Kopie dieser Daten auch in dem Erststufen- Cache sitzt. Wenn ein Platz in dem Erststufen-Cache ersetzt wird, ob nun gleichlaufend mit einer Zweitstufen-Cache-Ersetzung vom Speicher oder direkt von dem Zweitstufen-Cache, setzt die Zweitstufen-Cachesteuerung ein Inklusionsbit für diesen Platz in den Zweitstufen-Cache, um zu bezeichnen, daß eine Kopie dieser Daten im Erststufen-Cache dupliziert ist. Wenn dies auftritt, werden an allen anderen Plätzen in dem Zweitstufen-Cache, die dem gleichen Platz in dem Erststufen-Cache entsprechen, die jeweiligen Inklusionsbits durch die Zweitstufen-Cachesteuerung gelöscht, um zu bezeichnen, daß die in diesen Plätzen gehaltenen Daten nicht in dem Erststufen-Cache sitzen.
  • Die Zweitstufen-Cachesteuerung führt die grundlegenden Beobachtungspflichtaufgaben für beide Caches aus, wenn der Prozessor keine Kontrolle über den Systembus innehat. Wenn bei dem Zweitstufen-Cache ein Schreibbeobachtungstreffer auftritt, wird das Inklusionsbit durch die Zweitstufen-Cachesteuerung gelesen, um zu sehen, ob die Erststufen-Cachesteuerung auch den Speicherzugriff beobachten muß. Falls das Inklusionsbit nicht gesetzt ist, wird die Erststufen-Cachesteuerung alleingelassen. Falls das Inklusionsbit gesetzt ist, leitet die Zweitstufen- Cachesteuerung die Erststufen-Cachesteuerung an, den betreffenden Speicherzugriff zu beobachten. Auf diesen Weise kann die Erststufen-Cachesteuerung ihre Beobachtungspflichten außer acht lassen, bis die Zweitstufen-Cachesteuerung bestimmt, daß tatsächlich ein Schreibbeobachtungstreffer an dem Erststufen-Cache aufgetreten ist. Das erlaubt dem Prozessor einen wirksameren Betrieb aus seinem Erststufen-Cache, wenn er nicht die Kontrolle über den Systembus innehat.
  • Ein besseres Verständnis der Erfindung kann erhalten werden, wenn die folgende detaillierte Beschreibung der bevorzugten Ausführung in Verbindung mit den folgenden Zeichnungen in Betracht gezogen wird, in welchen:
  • Fig. 1 ein Blockschaltbild eines Computersystems ist, das Erst- und Zweitstufen-Caches enthält und eine Mehrstufen- Inklusion gemäß der vorliegenden Erfindung verwirklicht;
  • Fig. 2 die Organisation des 2Wege-Satzassoziativen C&sub1;- Caches der Fig. 1 abbildet;
  • Fig. 3 die Organisation des 2Wege-Satzassoziativen C2- Caches der Fig. 1 abbildet;
  • Fig. 4A und 4B ein Flußdiagramm abbilden, das den Betrieb von Cache-Lese-Treffern und -Fehlschlägen nach der vorliegenden Erfindung darstellt; und
  • Fig. 5 ein Flußdiagramm ist, das den Betrieb von Lese- und Schreibbeobachtung gemäß der vorliegenden Erfindung darstellt. In Fig. 1 ist allgemein ein Computersystem S dargestellt. Viele Einzelheiten eines Computersystems, die für die vorliegende Erfindung nicht relevant sind, wurden aus Klarheitsgründen weggelassen. Das Computersystem S enthält einen Mikroprozessor 20, der an einem Erststufen-Cache C1 angeschlossen ist, der sich vorzugsweise am gleichen Chip 22 wie der Prozessor 20 befindet. Der Chip 22 enthält eine C1-Cachesteuerung 30, die mit dem C1-Cache verbunden ist und den Betrieb des C&sub1;-Caches steuert. Der Prozessor 20, der Erststufen-Cache C1 und die Erststufen-Cachesteuerung 30 sind über einen örtlichen Prozessorbus mit einem Systembus 24 verbunden. Ein Zweitstufen-Cache C2 ist an dem örtlichen Prozessorbus 25 angeschlossen. Eine als C2-Cachesteuerung 32 bezeichnete Zweitstufen-Cachesteuerung ist mit dem C&sub2;-Cache und dem örtlichen Prozessorbus 25 verbunden. Ein RAM (random access memory - Speicher mit wahlfreiem Zugriff) 26, gemäß der vorliegenden Ausführung der Erfindung mit einer Größe von 4 Gigaßytes, und ein intelligenter Busmaster 28 sind mit dem Systembus 24 verbunden. Der RAM 26 enthält eine (nicht dargestellte) Systemspeichersteuerung, welche den Betrieb des RAM 26 steuert. Der RAM 26 und die (nicht gezeigte) Systemspeichersteuerung werden von hier ab als Hauptspeicher 26 bezeichnet. Der Systembus 24 enthält einen Datenbus und einen 32Bit-Adreßbus, wobei der Adreßbus Adreßbits A2 bis A31 enthält, die Zugriff auf eines der 230 32Bit-Doppelworte im Hauptspeicher 26 zulassen. Der Busmaster 28 kann von jeder Art sein, die den Systembus 24 steuert, wenn das Prozessorsystem im Halten ist, sowie eine System-Direktspeicherzugriff-Steuerung (DMA - direct memory access), eine Festplatten-Schnittstelle, eine Ortsbereichsnetz-(LAN)-Schnittstelle oder ein Videogra phik-Prozessorsystem.
  • Die C1- und C2-Caches sind auf "Wege"-Basis so miteinander ausgerichtet, daß eine Kopie von in einen bestimmten Weg in einem der Caches gesetzten Daten nur in einen vorgegebenen entsprechenden Weg im anderen Cache eingesetzt sein kann. Diese "Wege"-Ausrichtung erfordert, daß der C2-Cache mindestens so viel Cachewege wie der C1-Cache besitzt. Wenn die C1- und C2- Caches die gleiche Anzahl von Wegen besitzen, besteht eine 1 : 1- Korrespondenz zwischen den Cachewegen im C1-Cache und den Cachewegen in dem C2-Cache. Wenn der C2-Cache mehr Cachewege als der C1-Cache besitzt, entspricht jedem Cacheweg im C1-Cache ein Weg im C2-Cache, oder es entsprechen ihm mehrere Cachewege in dem C2-Cache. Jedoch können keine zwei C1-Cachewege dem gleichen C2-Cacheweg entsprechen. Diese Bedingung rührt von der Tatsache her, daß jede Speicheradresse nur einen möglichen Speicherplatz in jedem der C1- und C2-Caches besitzt. Wenn dementsprechend zwei C1-Cachewege einem einzigen C2-Cacheweg entsprechen würden, wären in dem C1-Cache sitzende Speicheradreßplätze möglich, die nicht in dem C2-Cache sitzen können. Der jeweilige C2-Cachewege-Platz wäre unfähig, die beiden Speicheradressen zu halten, die in jedem der jeweiligen C1- Cachewege sitzen könnten, der dem jeweiligen C2-Cachewege-Platz entspricht.
  • Die tatsächliche Größe jedes der Caches ist für die Zwecke der Erfindung nicht wichtig. Jedoch muß der C2-Cache mindestens so groß wie der C1-Cache sein, um Mehrstufen-Inklusion zu erreichen, und der C2-Cache ist vorzugsweise mindestens viermal so groß wie der C1-Cache, um für eine verbesserte Cache-Trefferrate zu sorgen. Bei der bevorzugten Ausführung der vorliegenden Erfindung hat der C1-Cache eine Größe von 8 kByte und der C2- Cache ist vorzugsweise 512 kByte groß. Bei dieser Ausführung ist der C1-Cache und der C2-Cache jeweils ein 4Wege-Satzassoziativer Cache. Bei einer alternativen Ausführung der vorliegenden Erfindung sind die C1- und C2-Caches jeweils 2Wege-Satzassoziative Caches.
  • In Fig. 2 und 3 sind konzeptionelle Schaubilder von C1- und C2- Caches mit ihren jeweiligen Cachesteuerungen 30 und 32 allgemein gezeigt, die in einer 2Wege-Satzassoziativen Organisation gestaltet sind. Die nachfolgende Diskussion ist dazu bestimmt, eine Einführung in die Struktur und den Betrieb eines Satzassoziativen Caches wie auch die Beziehung zwischen dem Cache-Speicher, den Cache-Verzeichnissen und dem Hauptspeicher 26 zu schaffen. Die C1- und C2-Caches werden mit Bezug auf eine 2Wege-Satzassoziative Cache-Organisation als einfacheres Beispiel der komplexeren 4Wege-Satzassoziativen Cache-Organisation der bevorzugten Ausführung diskutiert. Die spezielle Cachesteuerungs-Auslegungsbetrachtungen, die bei einer 4Wege-Satzassoziativen Cache-Organisation entstehen, und in einer 2Wege- Satzassoziativen Organisation nicht auftreten, sind in der nachfolgenden Diskussion angemerkt.
  • Der C1-Cache enthält zwei Reihen oder Wege von Speichern, die als A1 und B1 bezeichnet sind, und die jeweils eine Größe von 4 kByte haben. Jeder der Cachewege A1 und B1 ist in 128 Sätzen organisiert, wobei jeder Satz acht Zeilen 58 von Speicherplätzen enthält. Jede Zeile enthält ein 32Bit-Doppelwort oder 4 Byte Speicherraum. Der Hauptspeicher 26 ist konzeptionell organisiert als 220 Seiten mit einer Seitengröße von je vier kByte, was der Größe jedes C1-Cacheweges A1 bzw. B1 äqivalent ist. Jede konzeptionelle Seite im Hauptspeicher 26 enthält 1024 Zeilen, die gleiche Anzahl von Zeilen, die jeder der Cachewege A1 und B1 besitzt. Die Übertragungseinheit zwischen dem Hauptspeicher 26 und dem C1-Cache ist eine Zeile.
  • Ein bestimmter Zeilenplatz, oder Seitenversatz, von jeder der Seiten im Hauptspeicher 26 bildet sich auf der in gleicher Weise gelegenen Zeile in jedem der Cachewege A1 und B1 ab. Z. B. ist in Fig. 2 der Seitenversatz von jeder Seite im Hauptspeicher 26, die gestrichelt ist, auf den äquivalent gelegenen und gestrichelten Zeilenversatz in jedem der Cachewege A1 und B1 abgebildet. Auf diese Weise kann sich ein bestimmter Seitenversatz-Speicherplatz vom Hauptspeicher 26 nur auf einem von zwei Plätzen im C&sub1;-Cache abbilden, wobei diese Plätze in jedem der Cachewege A1 bzw. B1 liegen.
  • Jeder Cacheweg A1 und B1 enthält ein Cache-Verzeichnis, das als Verzeichnis DA1 bzw. Verzeichnis DB1 bezeichnet wird, und diese sind in der C&sub1;-Cachesteuerung 30 des C&sub1;-Cache gelegen. Die Verzeichnisse DA1 und DB1 enthalten jeweils einen Eintrag 60 bzw. 62 für jeden der 128 Sätze in dem jeweiligen Cacheweg A1 bzw. B1. Der Cache-Verzeichniseintrag für jeden Satz besitzt drei Komponenten: eine Markierung, ein Markierungsgültigkeits- Bit und 8 Zeilengültigkeits-Bits, wie dargestellt. Die Anzahl der Zeilengültigkeits-Bits ist gleich der Anzahl der Zeilen in jedem Satz. Die 20 Bits in dem Markierungsfeld halten die oberen Adreßbits, die Adreßbits A12 bis A31 des Hauptspeicher- Adreßplatzes der Datenkopie, die in dem jeweiligen Satz des Caches sitzt. Die oberen Adreßbits adressieren die zugehörigen 4 kByte Konzeptionellseite im Hauptspeicher 26, wo die Daten in dem jeweiligen Satz des Caches sitzen. Die restlichen Adreßbits von diesem Hauptspeicher-Adreßplatz, die Adreßbits A2 bis All, können aufgeteilt werden in ein Satzadressenfeld, welches 7 Bits A5 bis All enthält, die zum Auswählen eines der 128 Sätze in dem C&sub1;-Cache benutzt werden, und ein Zeilenadreßfeld mit 3 Bits A2 bis A4, die zum Auswählen einer einzelnen Zeile aus den 8 Zeilen in dem gewählten Satz benutzt werden. Deswegen dienen die unteren Adreßbits A2 bis A11 als die "Cache-Adresse", welche direkt einen der Zeilenplätze in jedem der Wege A1 und B1 des C1-Caches auswählt.
  • Wenn der Mikroprozessor einen Speicherlesezyklus einleitet, werden die Adreßbits A5 bis A11 benutzt, einen der 128 Sätze zu wählen, und die Adreßbits A2 bis A4 werden benutzt, um eines der jeweiligen Zeilengültigkeits-Bits innerhalb jedes Eintrages in den jeweiligen Verzeichnissen DA1 und DB1 aus dem gewählten Satz zu wählen. Die unteren Adreßbits A2 bis A11 werden auch benutzt, um die angemessene Zeile in dem C1-Cache zu wählen. Die Cachesteuerung vergleicht das obere Adreßbit das Markierungsfeld der angeforderten Speicheradresse mit jeder der Markierungen, die in den angewählten Verzeichniseinträgen des gewählten Satzes für jeden der Cachewege A1 und B1 gespeichert sind. Gleichzeitig werden sowohl die Markierungsgültigkeitswie auch die Zeilengültigkeits-Bits überprüft. Wenn die oberen Adreßbits zu einer der Markierungen passen und wenn sowohl das Markierungsgültigkeits-Bit als auch die zugehörigen Zeilengültigkeits-Bits für das jeweilige Cachewege-Verzeichnis gesetzt sind, wo die Markierungspassung hergestellt wurde, ist das Ergebnis ein Cache-Treffer, und der entsprechende Cacheweg wird angeleitet, die gewählte Datenzeile auf den Datenbus zu steuern.
  • Ein Fehlschlag kann auf eine von zwei Arten auftreten. Die erste ist bekannt als Zeilen-Fehlschlag und tritt auf, wenn die oberen Adreßbits der geforderten Speicheradresse einer der Markierungen in jedem der Verzeichnisse DA1 oder DB1 des gewählten Satzes entsprechen und das jeweilige Markierungsgültigkeits-Bit gesetzt ist, jedoch das/die jeweilige(n) Zeilengültigkeits-Bit(s), wo die angeforderten Daten sitzen, gelöscht ist/sind. Die zweite Art wird Markierungs-Fehlschlag genannt und tritt auf, wenn entweder die oberen Adreßbits der angeforderten Speicheradressen nicht zu einer der jeweiligen Markierungen in den Verzeichnissen DA1 oder DB1 des gewählten Satzes passen, wo die angeforderten Daten gelegen sind, oder das jeweilige Markierungsgültigkeits-Bit für jedes der Verzeichnisse DA1 oder DB1 nicht gelöscht sind.
  • Die C1-Cachesteuerung 30 enthält einen Ersetzungs-Algorithmus, der den Cacheweg A1 oder B1 bestimmt, in welchem neue Daten zu setzen sind. Der verwendete Ersetzungs-Algorithmus ist ein LRU- (least recently used - am längsten nicht verwendet)-Algorithmus, der neue Daten in den Cacheweg setzt, auf den die längste Zeit durch den Prozessor nicht wegen Daten zugegriffen worden war. Das hat den statistischen Grund, daß der in jüngster Zeit benutzte Weg der Weg ist, der am wahrscheinlichsten in der nahen Zukunft wieder benötigt wird. Die C&sub1;-Cachesteuerung 30 enthält ein Verzeichnis 70, das ein LRU-Bit bei jedem Satz im dem Cache enthält, und das LRU-Bit zeigt von dem Cacheweg weg, auf den als letzten durch den Prozessor zugegriffen wurde. Wenn so durch den Prozessor angeforderte Daten in dem Weg A1 sitzen, wird das LRU-Bit zu B1 zeigend gerichtet. Wenn die durch den Prozessor angeforderten Daten im Weg B1 sitzen, wird das LRU- Bit zu A1 zeigend gerichtet.
  • Bei der 4Wege-Satzassoziativen C&sub1;-Cache-Organisierung der bevorzugten Ausführung kann ein aufwendig gestalteter LRU- oder Pseudo-LRU-Ersetzungs-Algorithmus in der C&sub1;-Cachesteuerung 30 eingesetzt werden. Die Wahl eines Ersetzungs-Algorithmus ist allgemein für die vorliegende Erfindung irrelevant, und es wird vorgeschlagen, einen LRU- oder Pseudo-LRU-Algorithmus zu wählen, um die bestimmte bei der gewählten Ausführung benutzte Cache-Auslegung zu optimieren. Ein Ersetzungs-Algorithmus, der in der C1-Cachesteuerung 30 bei der 4Wege-Satzassoziativen C1- Cache-Organisierung der bevorzugten Ausführung eingesetzt werden kann, ist ein Pseudo-LRU-Algorithmus, der wie folgt arbeitet. Der 4Wege-Satzassoziative C1-Cache enthält vier Speicherwege, die als WO, W1, W2 und W3 bezeichnet werden. Drei als X0, X1 und X2 bezeichnete Bits sitzen in der C1-Cachesteuerung 30 und werden für einen jeweiligen Satz in jedem der Wege in dem 4Wege-C1-Cache definiert. Diese Bits werden LRU-Bits genannt und werden bei jedem Treffer oder jedem Ersetzungsvorgang in dem C1-Cache aktualisiert. Wenn der jüngste Zugriff in dem jeweiligen Sitz zum Weg W0 oder W1 ging, wird X0 auf 1 oder einem logisch hohen Wert gesetzt. Bit X0 wird auf 0 oder einen logisch tiefen Wert gesetzt, wenn der jüngste Zugriff auf den Weg W2 oder W3 gerichtet wurde. Wenn X0 auf 1 gesetzt ist und der jüngste Zugriff zwischen dem Weg W0 und dem Weg W1 auf Weg WO ging, wird X1 auf 1 gesetzt, sonst wird X1 auf 0 gesetzt. Wenn X0 auf 0 gesetzt ist und der jüngste Zugriff zwischen Weg W2 und Weg W3 zum Weg W2 ging, wird X2 auf 1 gesetzt, sonst wird X2 auf 0 gesetzt.
  • Der Pseudo-LRU-Ersetzungs-Mechanismus arbeitet in der folgenden Weise. Wenn eine Zeile in dem 4Wege-C&sub1;-Cache ersetzt werden muß, benutzt die C1-Cachesteuerung 30 das Bit X0, um zuerst die jeweiligen Wege WO und W1 oder W2 und W3 zu wählen, wo der bestimmte Zeilenersetzungs-Kandidat, der am längsten zurückliegend benutzt wurde, sitzt. Die C&sub1;-Cachesteuerung benutzt dann die X1- und X2-Bits zur Bestimmung, welcher der beiden gewählten Cachewege WO und W1 oder W2 und W3 den jeweiligen Zeilenplatz enthält, der am längsten zurückliegend benutzt wurde, und dieser Zeilenplatz wird zum Ersetzen markiert.
  • Die C1-Cachesteuerung 30 sendet ihre LRU-Information bei C1- und C2-Cache-Lesefehlschlägen und bei Prozessor-Schreibvorgängen erfindungsgemäß zu der C2-Cachesteuerung 32. Auf diese Weise ist die C2-Cachesteuerung 32 in der Lage, die Datenkopie, die sie entweder bei Lesefehlschlägen von dem Hauptspeicher 26 oder bei Prozessor-Schreibvorgängen von dem Prozessor 20 empfängt, in den C2-Cacheweg zu setzen, der dem C1-Cacheweg entspricht, wo die C1-Cachesteuerung die Datenkopie einsetzt und dadurch eine Mehrstufen-Inklusion erreicht. Zusätzlich ignoriert die C1-Cachesteuerung bei einem C1-Cache-Lesefehlschlag und einem C2-Cache-Lesetreffer ihren LRU-Ersetzungs- Algorithmus, so daß die C1-Cachesteuerung 30 die Kopie der Daten, die sie von der C2-Cachesteuerung 32 empfängt, in den C1-Cacheweg einsetzt, der dem C2-Cacheweg entspricht, wo der Lesetreffer aufgetreten ist.
  • Der 2Wege-Satzassoziative C2-Cache ist in einer gleichartigen Weise organisiert wie der 2Wege-Satzassoziative C1-Cache. Bei der bevorzugten Ausführung umfaßt der C2-Cache vorzugsweise 512 kByte Cache-Daten-RAM. Nach Fig. 3 ist jeder Cacheweg A2 und B2 in dem C2-Cache von einer Größe von 256 kByte und enthält 8192 Sätze von jeweils 8 Zeilen. Die Zeilengröße in dem C2-Cache ist ein 32Bit-Doppelwort, die gleiche wie bei dem C1-Cache. Der 4Gigaßyte-Hauptspeicher 26 ist in 214 konzeptionellen Seiten organisiert, wobei jede konzeptionelle Seite eine Größe von 256 kByte besitzt. Die Anzahl von konzeptionellen Seiten des Hauptspeichers 26 für den C2-Cache ist geringer als die des C1- Caches, da die konzeptionelle Seitengröße für den C2-Cache größer als die für den C1-Cache ist. Wie bei dem C1-Cache bildet jeder Zeilenplatz oder Seitenversatz in dem Hauptspeicher 26 eine gleichartig gelegene Zeile in jedem der Cachewege A2 und B2 ab.
  • Die C&sub2;-Cachesteuerung 32 enthält Cachewege-Verzeichnisse DA2 und DB2. Die Cachewege-Verzeichnisse DA2 und DB2 haben Satzeinträge, welche l4Bit-Markierungsfelder enthalten, im Gegensatz zu den 20Bit-Markierungsfeldern in den Einträgen der C&sub1;- Cache-Verzeichnisse DA1 und DB1. Die 14Bit-Markierungsfelder halten die oberen Adreßbits, die Adreßbits A18 bis A31, welche die zugehörige konzeptionelle Seite von 256 kByte in dem Hauptspeicher 26 adressieren, wo die Daten in dem jeweiligen Satz des Caches sitzen. Die restlichen Adreßbits A2 bis A17 können aufgeteilt werden in ein Satzadreßfeld aus 13 Bits A5 bis A17, die zum Wählen eines der 8192 Sätze in dem C2-Cache benutzt werden, und ein Zeilenadreßfeld mit 3 Bits A2 bis A4, die zum Auswählen einer Einzelnen aus den 8 Zeilen in dem ausgewählten Satz benutzt werden. Deshalb dienen bei dem C&sub2;-Cache die unteren Adreßbits A2 bis A17 als die "Cache-Adresse", die direkt einen der Zeilenplätze in jedem der Wege A2 und B2 des C2-Caches auswählt.
  • Die erfindungsgemäße C2-Cachesteuerung 32 erfordert nicht allgemein einen Ersetzungs-Algorithmus, da der C2-Cache neue Daten nur bei C1- und C2-Cache-Lesefehlschlägen und bei Prozessor-Einschreibungen empfängt, und in diesen Fällen die C2- Cachesteuerung den Wegeplatz von der C1-Cachesteuerung empfängt und den entsprechenden C2-Cacheweg füllen muß. Deshalb braucht die C2-Cachesteuerung 32 keinen Ersetzungs-Algorithmus, weil der jeweilige C2-Cacheweg, wo Daten eingesetzt werden, durch den Datenwegeplatz in dem C1-Cache bestimmt wird. Wenn jedoch der C2-Cache mehr Wege als der C1-Cache besitzt, erfordert die C2-Cachesteuerung 32 die Verwendung eines Ersetzungs-Algorithmus. In diesem Falle entspricht ein C1-Cacheweg zwei oder mehr C2-Cachewegen. Wenn dementsprechend die C1-Cachesteuerung 30 den C1-Cachewegeplatz an die C2-Cachesteuerung 32 sendet, braucht die C2-Cachesteuerung 32 einen Ersetzungs-Algorithmus, um zu entscheiden, in welchen von den mehreren C2-Cachewegen, welche dem C1-Cachewegeplatz entsprechen, die empfangenen Daten zu setzen sind.
  • Die 2Wege-Satzassoziativen Caches C1 und C2 sind auf "Wege"- Basis so ausgerichtet, daß die Wege A1 und B1 in dem C&sub1;-Cache eine 1 : 1-Korrespondenz mit den Wegen A2 bzw. B2 des C&sub2;-Caches besitzen. Auf diese Weise hat ein Seitenversatz vom Hauptspeicher 26, der in den jeweiligen Zeilenplatz in einem C&sub1;- Cacheweg A1 oder B1 gesetzt wird, nur einen möglichen Platz in dem entsprechenden C2-Cacheweg A2 bzw. B2. Umgekehrt besitzt ein jeweiliger Zeilenplatz in einem C2-Cacheweg A2 oder B2 nur einen möglichen Platz in dem entsprechenden C1-Cacheweg A1 bzw. B1. Da jedoch der C2-Cache 64 mal so groß wie der C1-Cache ist, hält jeder der C2-Cachewege A2 oder B2 64 Zeilen von Daten, die jeweils einer einzigen Zeile oder einem einzigen Seitenversatzplatz in dementsprechenden C1-Cacheweg A1 oder B1 entsprechen oder darin angeordnet sein können. Deshalb enthält die erfindungsgemäße C2-Cachesteuerung 32 Inklusions-Bits 80 für jede ihrer jeweiligen Zeilen. Das ermöglicht es der C2-Cachesteuerung 32, sich zu erinnern, ob eine Kopie von Daten von der jeweiligen C2-Cache-Zeile auch in dem entsprechenden C1-Cache- Zeilenplatz sitzt.
  • Die Verwendung von Inklusions-Bits 80 erlaubt es der C2-Cachesteuerung 32, sich zu erinnern, welche von den 64 Datenzeilen in dem jeweiligen C2-Cacheweg A2 oder B2, welche einem einzelnen C2-Cachewegeplatz entsprechen, eine Datenkopie enthält, die an diesem C1-Cacheplatz dupliziert ist. Wenn beispielsweise eine Zeile in dem C2-Cache eine Kopie von Daten vom Hauptspeicher 26 erhält, die ebenfalls in den C1-Cache gesetzt waren, oder wenn eine Zeile in dem C2-Cache eine Datenkopie ergibt, die in den C1-Cache gesetzt wird, dann ist ein Inklusions-Bit für die jeweilige C2-Cache-Zeile wahr oder auf einen logisch hohen Wert gesetzt, was bezeichnet, daß die jeweilige C2-Cache- Zeile eine Datenkopie hält, die in dem jeweiligen C1-Cachewegeplatz dupliziert ist. Die anderen 63 Zeilenplätze in dem C2- Cache, welche dem jeweiligen bei dem genannten Vorgang beteiligten C1-Cachewegeplatz entsprechen, haben gelöschte Inklusions-Bits als eine Erinnerungshilfe, daß die Datenkopie, die sie halten, nicht in dem C1-Cache-Platz dupliziert ist. Das ist wichtig, weil eine dieser anderen 63 Zeilenplätze Daten halten kann, die vorher in dem jeweiligen C1-Cache-Platz dupliziert waren, bevor einer der erwähnten Vorgänge neue Daten an den jeweiligen C1-Cache-Platz gesetzt hat, und deshalb kann einer dieser 63 Plätze sein Inklusions-Bit gesetzt haben. Der einzige Fall, bei dem einer dieser anderen 63 C2-Cache-Plätze sein Inklusions-Bit nicht gesetzt hätte, ist dann, wenn der jeweilige C2-Cache-Zeilenplatz, der bei dem genannten Vorgang beteiligt war und sein Inklusions-Bit gesetzt hatte, auch die Kopie von Daten hielt, die in dem jeweiligen C1-Cache-Platz dupli ziert waren, bevor der Vorgang stattfand, und deswegen bereits sein Inklusions-Bit gesetzt hatte.
  • In den Fig. 4A und 4B ist ein den Betrieb der C1- und C2-Caches gemäß der vorliegenden Erfindung beschreibendes Flußdiagramm gezeigt. Es ist zu verstehen, daß zahlreiche dieser Vorgänge gleichzeitig auftreten können, jedoch wurde ein Flußdiagrammformat gewählt, um die Erklärung der Vorgänge oder des Betriebes zu vereinfachen. Zur Klarstellung ist das Flußdiagramm in zwei Abschnitten gezeigt, wobei die Verbindungen zwischen Fig. 4A und 4B mit den eingekreisten Zahlen 1 und 2 bezeichnet sind. Schritt 100 stellt dar, daß das Computersystem arbeitet oder eingeschaltet ist. Bei manchen Computersystemen ist es erforderlich, daß der Prozessor Kontrolle über den Systembus 24 besitzt, bevor er Speicher-Lese- oder -Schreib-Vorgänge ausgibt. Bei dem System S nach der bevorzugten Ausführung ist es jedoch nicht erforderlich, daß der Prozessor 20 Kontrolle über den Systembus 24 hat, wenn er Speicher-Lese- oder -Schreib-Voränge ausgibt, sondern der Prozessor 20 kann aus seinem C1-Cache und dem C2-Cache arbeiten, ohne daß eine Verwendung des Systembus 24 erforderlich ist, bis ein C1- und C2-Cache-Lesefehlschlag oder ein Prozessor-Schreibvorgang jenseits jeder Ankündigungstiefe auftritt.
  • Wenn der Prozessor 20 im Schritt 102 einen Hauptspeicher- Lesevorgang versucht, prüft die C1-Cachesteuerung 30 zuerst im Schritt 104 den C1-Cache, um zu bestimmen, ob eine Kopie der angeforderten Hauptspeicher-Daten in dem C1-Cache sitzt. Falls keine Kopie der angeforderten Daten in dem C1-Cache sitzt, tritt ein C1-Cache-Lesefehlschlag im Schritt 106 auf, und der Lesebetrieb wird an den C2-Cache weitergegeben, wo die C2- Cachesteuerung 32 dann im Schritt 108 den C2-Cache prüft. Falls eine Kopie der angeforderten Daten auch nicht im C2-Cache sitzt, tritt im Schritt 110 ein C2-Cache Lesefehlschlag auf, und der Vorgang wird an die Systemspeichersteuerung weitergereicht, um die ntowendigen Daten vom Hauptspeicher 26 zu erhalten.
  • Der Hauptspeicher 26 sorgt im Schritt 112 für die angeforderten Daten für den C1-Cache, den C2-Cache und den Prozessor 20, und die C1-Cachesteuerung 30 setzt im Schritt 114 die Daten entsprechend ihrem bestimmten Ersetzungs-Algorithmus in einen ihrer Cachewege A1 oder B1. Die Daten werden in den C1-Cache gesetzt wegen der statistischen Wahrscheinlichkeit, daß diese Daten bald wieder vom Prozessor 20 angefordert werden. Die C1- Cachesteuerung 30 hat während dieses Zeitraums der C2-Cachesteuerung 32 den bestimmten C1-Cacheweg A1 oder B1 gesendet, in welchen sie die Daten einsetzt, wie im Schritt 118 dargestellt, so daß die C2-Cachesteuerung 32 im Schritt 120 die Daten in den entsprechenden C2-Cacheweg A2 oder B2 setzen kann. Die C2- Cachesteuerung 32 setzt im Schritt 122 das Inklusions-Bit an den jeweiligen C2-Cache-Speicherplatz, wo die Daten gespeichert sind, was bezeichnet, daß eine Kopie der an diesem Platz befindlichen Daten ebenfalls in dem C1-Cache sitzt. Die C2- Cachesteuerung 32 löscht im Schritt 124 auch die Inklusions- Bits an den anderen 32 C2-Cacheplätzen, die dem gleichen Seitenversetzplatz in dem C1-Cache entsprechen, um zu bezeichnen, daß keine Kopie der Daten in diesen Plätzen in dem C1- Cache sitzt. Nach Vollendung der Speicherauslesung kehrt das Computersystem zum Schritt 100 zurück.
  • Die genannte Ereignisfolge tritt bei einem C1- und C2-Cache-Lesefehlschlag auf, aber auch dann, wenn das Computersystem S zuerst eingeschaltet wird, da die C1- und C2-Caches beim Einschalten des Computersystems S beide leer und C1- und C2- Cache-Fehlschläge deswegen garantiert sind. Die Mehrzahl der Prozessor-Speicherlesevorgänge, die unmittelbar nach Einschalten des Computersystems S auftreten, werden C1- und C2-Cache- Fehlschläge sein, da die C1- und C2-Caches zu diesem Zeitpunkt relativ leer sind. Auf diesen Weise werden die C1- und C2- Caches mit Daten gefüllt und richten sich auf einer "Wege"- Grundlage aus, bei der Daten in einem bestimmten Weg A1 oder B1 in dem C&sub1;-Cache garantiert in dem entsprechenden Cacheweg A2 oder B2 im C2-Cache gefunden werden können. Wenn zusätzlich das Computersystem S eine gewisse Zeit gearbeitet hat und ein C1- und ein C2-Cache-Lesefehlschlag auftritt, werden die sich ergebenden Zeilenauffüllungen mit Daten wie vorstehend beschrieben in den C1- und C2-Caches ausgeführt, und deswegen wird die "Wege"-Ausrichtung aufrecht erhalten.
  • Wenn der Prozessor 20 im Schritt 102 einen Hauptspeicher- Lesevorgang einleitet und die C2-Cachesteuerung 32 im Schritt 180 den C2-Cache prüft, nachdem ein C1-Cache-Fehlschlag im Schritt 106 aufgetreten ist, und eine Kopie der angeforderten Daten in dem C2-Cache sitzt, tritt im Schritt 130 ein C2-Cache- Treffer auf. Die C2-Cachesteuerung 32 schafft die angeforderten Daten im Schritt 132 zum Prozessor 20 und versorgt auch den C1- Cache im Schritt 134 mit Daten infolge der statistischen Wahrscheinlichkeit, daß diese Daten bald wieder durch den Prozessor 20 angefordert werden. Die C2-Cachesteuerung 32 informiert die C1-Cachesteuerung 30 im Schritt 136 über den bestimmten C2-Cacheweg A2 oder B2, in denen die Daten in dem C2-Cache sitzen, so daß die C1-Cachesteuerung 30 die Daten in den entsprechenden C1-Cacheweg A1 oder B1 im Schritt 138 einsetzen kann. Das erfordert, daß die C&sub1;-Cachesteuerung 30 ihren normalen LRU-Ersetzungs-Algorithmus mißachtet, da der Ersetzungs-Algorithmus einen anderen C1-Cacheweg A1 oder B1 zum Einsetzen der Daten wählen könnte. Auf diese Weise halten die Caches C1 und C2 ihre "Wege"-Ausrichtung aufrecht, ohne daß es für die C2-Cachesteuerung 32 notwendig ist, Daten zwischen den Wegen im C2-Cache zu übertragen. Die C2-Cachesteuerung 32 setzt im Schritt 140 das Inklusions-Bit an den C2-Cacheplatz, wo sich die angeforderten Daten befinden, wodurch bezeichnet wird, daß eine Kopie dieser Daten auch in dem C1-Cache sitzt. Die C2- Cachesteuerung 32 löscht auch die anderen 63 Inklusions-Bits an den C2-Cache-Speicherplätzen, die dem gleichen Seitenversetzplatz entsprechen, um zu bezeichnen, daß keine Kopie der Daten in diesen Plätzen in dem C1-Cache sitzt. Das Computersystem S hat dann den Speicherlesevorgang beendet und kehrt zum Schritt 100 zurück.
  • Wenn der Prozessor 20 eine Speicherlesung im Schritt 102 einleitet und die Inhalte des C1-Caches im Schritt 104 prüft, um zu bestimmen, ob eine Kopie der angeforderten Daten dort sitzt, und eine Kopie der angeforderten Daten in dem C1-Cache sitzt, findet im Schritt 150 ein C1-Cache-Treffer statt. Die C1-Cachesteuerung 30 schafft im Schritt 152 die angeforderten Daten zu dem Prozessor 20, und der Betrieb des Computersystems 5 wird zum Schritt 100 zurückgeführt. Da Mehrstufen-Inklusion im dem Cache-Teilsystem vorhanden ist, ist garantiert, daß der C2-Cache eine Kopie der Daten besitzt, welche die C1-Cachesteuerung 30 zum Prozessor 20 geschafft hat, und keine Datenübertragung von der C1-Cachesteuerung 30 zu der C2-Cachesteuerung 32 notwendig ist, wenn ein C1-Cache-Lesetreffer stattfindet.
  • Die Cache-Architektur des C1-Caches in der bevorzugten Ausführung ist vorzugsweise eine Durchschreibe-Cache-Architektur, und die Cache-Architektur des C2-Caches ist vorzugsweise eine Rückschreibe-Cache-Architektur. Jedoch kann auch die Verwendung anderer Cache-Architekturen für den C1-Cache und für den C2- - Cache ins Auge gefaßt werden. Wenn der Prozessor 20 einen Speicherschreibebetrieb ausführt, werden die Daten in den C1- Cache eingeschrieben, ohne Rücksicht darauf, ob der Prozessor- Schreibvorgang ein C1-Cache-Schreibtreffer oder ein -Schreibfehlschlag ist. Zusätzlich leiten Prozessor-Schreibvorgänge externe Schreib-Buszyklen ein, um die jeweiligen Daten in den C2-Cache einzuschreiben. Wenn dies auftritt, sendet die C&sub1;- Cachesteuerung 30 den bestimmten C1-Cacheweg, wo die Daten eingesetzt wurden, so daß die C2-Cachesteuerung 32 die Daten in den entsprechenden C2-Cacheweg setzen kann. Deshalb ordnen die C1- und C2-Caches Schreibfehlschläge gemäß der vorliegenden Erfindung. Es wird bevorzugt, daß die C1- und die C2-Caches entweder miteinander Schreibfehlschläge ordnen oder miteinander Schreibfehlschläge nicht ordnen. Wenn der C1-Cache keine Schreibvorgänge ordnete und der C2-Cache verpflichtet wäre, diese zu ordnen, wäre die Auslegung komplizierter. Die C2- Cachesteuerung 32 würde einen LRU-Algorithmus erfordern und würde sicherstellen müssen daß, wenn der C2-Cachesteuerungs- LRU-Algorithmus einen bestimmten C2-Cacheweg ausgewählt hat, der eine in dem C1-Cache duplizierte Datenkopie enthält, der LRU-Algorithmus überfahren oder das Cache-Einspeichern abgebrochen werden müßte, damit die mehrstufige Inklusion garantiert bleibt.
  • Wenn nach Fig. 5 der intelligente Busmaster 28 im Schritt 200 Kontrolle über den Systembus 24 erhält, überwacht oder "beobachtet" die C2-Cachesteuerung 32 den Systembus 24 im Schritt 202, um zu sehen, ob der Busmaster 28 irgendwelche Schreibvorgänge ausführt, und in dem Fall eines Rückschreibe-Cache zum Hauptspeicher 26 liest, und wenn das der Fall ist, auf welchen Speicherplatz zugegriffen wurde. Die C2-Cachesteuerung 32 kann die Beobachtungs-Verantwortlichkeiten sowohl für den C1- wie auch für den C2-Cache ausführen, da der C2-Cache garantiert infolge der Mehrstufen-Inklusion eine Kopie aller in dem C1- Cache vorhandenen Daten besitzt.
  • Wenn der Busmaster 28 im Schritt 204 in den Hauptspeicher 26 schreibt und im Schritt 206 ein Schreib-Beobachtungstreffer in dem C2-Cache erfolgt, prüft die C2-Cachesteuerung 32 im Schritt 208 das Inklusions-Bit für den jeweiligen C2-Cacheplatz, um zu sehen, ob die C1-Cachesteuerung 30 ebenfalls den Speicherzugriff beobachten muß. Wenn das Inklusions-Bit im Schritt 208 als nicht gesetzt befunden wird, ist in dem C1-Cache keine Kopie der Daten von dem gerade beschriebenen Speicherplatz vorhanden, und die C1-Cachesteuerung 30 wird in Ruhe gelassen. In diesem Fall empfängt der C2-Cache im Schritt 210 die neue Kopie von Daten, und die C2-Cachesteuerung 32 nimmt im Schritt 202 ihre Beobachtungspflichten wieder auf. Falls das Inklusions-Bit im Schritt 208 nach einem Beobachtungstreffer im Schritt 206 an den C2-Cache-Speicherplätzen gesetzt ist, leitet die C2-Cachesteuerung die C1-Cachesteuerung 30 im Schritt 212 an, diesen bestimmten Speicherzugriff zu beobachten. Im Schritt 214 erhalten die C1- und C2-Caches jeweils eine Kopie der neuen Daten, und die C2-Cachesteuerung 32 nimmt im Schritt 202 ihre Beobachtungspflichten wieder auf. Wenn im Schritt 206 ein Beobachtungs-Fehlschlag auftritt, nachdem der Busmaster 28 im Schritt 204 in einen Speicherplatz geschrieben hat, nimmt die C2-Cachesteuerung 32 ihre Beobachtungspflichten im Schritt 202 wieder auf. Die C2-Cachesteuerung 32 setzt im Schritt 202 ihre Überwachung des Systembus 24 fort, bis der Busmaster 28 nicht mehr die Kontrolle über den Systembus 24 hat.
  • Wenn der Busmaster 28 im Schritt 204 einen Hauptspeicherplatz liest und im Schritt 220 ein Lese-Beobachtungstreffer im C2- Cache auftritt, prüft die C2-Cachesteuerung 32 im Schritt 222 den C2-Cacheplatz, um zu bestimmen, ob dieser der Eigner des jeweiligen Speicherplatzes ist. Falls nicht, fordern der Hauptspeicher 26 oder andere Quellendienste die Daten an, und die C2-Cachesteuerung 32 nimmt im Schritt 202 die Beobachtung wieder auf. Wenn die C2-Cachesteuerung 32 Eigner des Speicherplatzes ist, sorgt die C2-Cachesteuerung 32 dafür, daß die angeforderten Daten im Schritt 224 zum Hauptspeicher 26 gebracht werden. Der Busmaster 28 liest diese Daten im Schritt 226, wenn die Daten an dem Datenbus gesetzt sind, und dies wird als "Wegschnappen" (snarfing) bezeichnet. Die C2-Cachesteuerung 32 nimmt dann ihre Beobachtungspflichten im Schritt 202 wieder auf. Wenn im Schritt 220 ein Beobachtungs-Fehlschlag auftritt, nachdem der Busmaster 28 einen Speicherplatz im Schritt 204 gelesen hat, nimmt die C2-Cachesteuerung 32 ihre Beobachtungspflichten im Schritt 202 wieder auf.
  • Auf diese Weise kann die C1-Cachesteuerung 30 ihre Beobachtungspflichten unbeachtet lassen, bis die C2-Cachesteuerung 32 bestimmt, daß aktuell ein Beobachtungstreffer an in dem C1- Cache gehaltenen Daten aufgetreten ist. Das erlaubt dem Prozessor 20, wirksamer aus dem C1-Cache zu arbeiten, während er keine Kontrolle über den Systembus 24 besitzt, da die C1-Cache- Steuerung 30 den Systembus 24 nur zu beobachten hat, wenn ein C1-Cache-Beobachtungstreffer auftritt, und nicht bei jedem Speicherschreibvorgang, wie es normalerweise der Fall wäre.
  • Die vorangehende Offenbarung und Beschreibung der Erfindung sind für diese illustrativ und erklärend, und verschiedene Änderungen in der Größe, den Bestandteilen, dem Aufbau und der Betriebsweise können hergestellt werden, ohne den beanspruchten Bereich der Erfindung zu verlassen.

Claims (12)

1. Verfahren zum Erreichen von Mehrstufen-Inklusion bei einem Computersystem mit einem Mikroprozessor (20), einem Systembus (24), einem satz-assoziativen Erststufen-Cache (C1), der eine erste Zahl von Wegen enthält, einer Erststufen- Cachesteuerung (30), einem satz-assoziativen Zweitstufen- Cache (C2), der eine zweite Zahl von Wegen enthält, einer Zweitstufen-Cachesteuerung (32), mit der Zweitstufen-Cachesteuerung gekoppeltem Mittel zum Einstellen und Löschen eines Inklusionsbits an Daten innerhalb des Zweitstufen- Cache, mit der Erst- und der Zweitstufen-Cachesteuerung gekoppelte Mittel zum Kommunizieren und Übertragen von Daten zwischen den Erststufen- und Zweitstufen-Caches, einem Busmastergerät (28), und einem RAM-Speicher (26), welches Verfahren dadurch gekennzeichnet ist, daß:
die zweite Wegezahl des Zweitstufen-Caches gleich oder größer als die erste Wegezahl des Erststufen-Caches ist, wobei jeder der Wege in dem Erststufen-Cache mindestens einem Weg in dem Zweitstufen-Cache entspricht;
die Erststufen-Cachesteuerung mit der Zweitstufen-Cachesteuerung über den besonderen Erststufen-Cacheweg kommuniziert, in welchen eine Kopie von von dem RAM-Speicher empfangenen Daten an einem Erststufen- und an einem Zweitstufencache-Lesefehlschlag gesetzt ist;
die Zweitstufen-Cachesteuerung die Kopie von von dem RAM- Speicher empfangenen Daten in den Zweitstufen-Cacheweg setzt, der dem Erststufen-Cacheweg entspricht, der durch die Erststufen-Cachesteuerung an dem Erststufen- und dem Zweitstufencache-Lesefehlschlag zum Kommunizieren gebracht wurde;
die Zweitstufen-Cachesteuerung mit der Erststufen-Cache steuerung über den bestimmten Zweitstufen-Cacheweg kommuniziert, wo eine Kopie von Daten an einem Erststufencache- Lesefehlschlag und einem Zweitstufencache-Lesetreffer gelegen ist;
die Erststufen-Cachesteuerung die Kopie von von der Zweitstufen-Cachesteuerung zu dem Prozessor übermittelten Daten in den entsprechenden Erststufen-Cacheweg setzt; und die Zweitstufen-Cachesteuerung ein Inklusionsbit an dem Zweitstufen-Cacheplatz der Kopie von Daten setzt und Inklusionsbits an allen anderen Zweitstufen-Cacheplätzen löscht, die dem Erststufen-Cacheplatz entsprechen, wo die Erststufen-Cachesteuerung die Datenkopie gesetzt hat.
2. Verfahren nach Anspruch 1, bei dem die Erststufen-Cachesteuerung einen Ersetzungs-Algorithmus benutzt, der den Erststufen-Cacheweg bestimmt, in welchen eine empfangene Kopie von Daten zu setzen ist, und der Schritt des Kopierens der Daten durch die Erststufen-Cachesteuerung in den dem Zweitstufen-Cacheweg entsprechenden Erststufen-Cacheweg enthält:
daß die Erststufen-Cachesteuerung ihren Ersetzungs-Algorithmus in Fällen des Erststufencache-Lesefehlschlages und des Zweitstufencache-Lesetreffers nicht beachtet.
3. Verfahren nach Anspruch 1, das weiter umfaßt:
Kommunizieren der Erststufen-Cachesteuerung mit der Zweitstufen-Cachesteuerung über den bestimmten Erststufen-Cacheweg, in welchen eine Kopie der empfangenen Daten in einer Prozessor-Schreibung gesetzt ist; und
Setzen der Kopie der empfangenen Daten durch die Zweitstufen-Cachesteuerung in den Zweitstufen-Cacheweg, der dem Erststufen-Cacheweg entspricht, über den die Erststufen- Cachesteuerung kommuniziert hat.
4. Verfahren nach Anspruch 1, bei dem mehr als ein Weg in dem Erststufen-Cache nicht einem Weg in dem Zweitstufen-Cache entsprechen kann und mehr als ein Weg in dem Zweitstufen- Cache einem Weg in dem Erststufen-Cache entsprechen kann.
5. Verfahren nach Anspruch 1, das weiter umfaßt:
Beobachten des Systembuses durch die Zweitstufen-Cachesteuerung, wenn der Prozessor keine Kontrolle über den Systembus innehat, um zu bestimmen, ob das Busmastergerät in einen cacheduplizierten Speicherplatz einschreibt;
Überprüfen des Inklusionsbits durch die Zweitstufen-Cachesteuerung an einem Zweitstufen-Cacheplatz, wo ein Zweitstufencache-Schreibbeobachtungs-Treffer auftritt, um zu bestimmen, ob eine Kopie von Daten in dem RAM-Speicherplatz, in den gerade geschrieben wurde, in dem Erststufen-Cache sitzt; und
Anleiten der Erststufen-Cachesteuerung durch die Zweitstufen-Cachesteuerung, den Systembus zu beobachten, falls das Inklusionsbit gesetzt ist.
6. Verfahren nach Anspruch 5, bei dem der Zweitstufen-Cache ein Rückschreibe-Cache ist, wobei das Verfahren weiter umfaßt:
Beobachten des Systembus durch die Zweitstufen-Cachesteuerung, wenn der Prozessor keine Kontrolle über den Systembus innehat, um zu bestimmen, ob das Busmastergerät einen cacheduplizierten Speicherplatz liest;
Bestimmen durch die Zweitstufen-Cachesteuerung bei einem Zweitstufencache-Lesebeobachtungstreffer, ob der Zweitstufen-Cache eine aktualisierte Version der in dem fraglichenen Speicherplatz befindlichen Daten besitzt;
Zuführen der angeforderten Daten zu dem Hauptspeicher durch die Zweitstufen-Cachesteuerung, falls der Zweitstufen-Cache eine aktualisierte Version der Daten besitzt; und
Lesen der angeforderten durch die Zweitstufen-Cachesteuerung zugeführten Daten durch die Bussteuerung.
7. Vorrichtung zum Erreichen von Mehrstufeninklusion in einem Computersystem mit:
einem Systembus (24);
einem mit dem Systembus gekoppelten RAM-Speicher (26);
einem mit dem Systembus gekoppelten Mikroprozessor (20);
einem satz-assoziativen Erststufen-Cache (C1), der mit dem Mikroprozessor gekoppelt ist und eine erste Anzahl von Wegen enthält;
eine Erststufen-Cachesteuerung (30), die mit dem Erststufen-Cache und dem Mikroprozessor und dem Systembus gekoppelt ist;
einem satz-assoziativen Zweitstufen-Cache (C2) mit einer Größe, die größer als die oder gleich der Größe des Erststufen-Caches ist, und eine zweite Anzahl von Wegen enthält und Inklusionsinformation enthält, die die Anwesenheit von Daten in dem Zweitstufen-Cache anzeigt, die in dem Erststufen-Cache dupliziert sind;
eine Zweitstufen-Cachesteuerung (31), die mit dem Systembus, dem Zweitstufen-Cache, dem Mikroprozessor und der Erststufen-Cachesteuerung gekoppelt ist, wobei die Vorrichtung dadurch gekennzeichnet ist, daß die zweite Anzahl von Wegen des Zweitstufen-Caches gleich groß wie oder größer als die erste Anzahl von Wegen des Erststufen-Caches ist, wobei jeder der Wege in dem Erststufen-Cache mindestens einem Weg in dem Zweitstufen-Cache entspricht;
daß die Erststufen-Cachesteuerung einen Ausgang zum Senden von Wege-Information und einen Eingang zum Empfangen von Wege-Information enthält;
die Zweitstufen-Cachesteuerung einen Eingang enthält, der mit dem Wege-Informations-Ausgang der Erststufen-Cachesteuerung zum Aufnehmen von Wege-Informätion gekoppelt ist, und einen Ausgang, der mit dem Wege-Tnformations-Eingang der Erststufen-Cachesteuerung verbunden ist zum Senden von Wege-Information; wobei bei einem Erst- und Zweitstufen- Cachelesefehlschlag die Erststufen-Cachesteuerung ausgelegt ist, Wege-Information zu der Zweitstufen-Cachesteuerung zu senden und die Zweitstufen-Cachesteuerung ausgelegt ist, empfangene Daten in einen Weg des Zweitstufen-Caches zu setzen, der der empfangenen Wege-Information entspricht, wobei bei einem Erststufen-Cachelesefehlschlag und einem Zweitstufen-Cachelesetreffer die Zweitstufen-Cachesteuerung ausgelegt ist, Wege-Information zu der Erststufen-Cachesteuerung zu senden und die Erststufen-Cachesteuerung ausgelegt ist, empfangene Daten in einen Weg des Erststufen- Caches zu setzen, der der empfangenen Wege-Information entspricht, und wobei die Zweitstufen-Cachesteuerung ausgelegt ist, das Inklusionsbit in den Zweitstufen-Cacheplatz zu setzen, der die in den Erststufen-Cache gesetzte Daten enthält und ausgelegt ist, die Inklusionsbits von jedem anderen Zweitstufen-Cacheplatz zu löschen, welche dem Erststufen-Cacheplatz entspricht, wo die Daten gesetzt waren.
8. Vorrichtung nach Anspruch 7, bei der die Erststufen-Cachesteuerung eine Ersetzungseinrichtung enthält, die den Erststufen-Cacheweg bestimmt, in welchen eine empfangene Datenkopie zu setzen ist, wobei die Erststufen-Cachesteuerung ausgelegt ist, die Ersetzungseinrichtung bei Fällen von Erststufencache-Lesefehlschlag und Zweitstufencache-Lesetreffer außer Acht zu lassen.
9. Vorrichtung nach Anspruch 7, bei der mehr als ein Weg in dem Erststufen-Cache nicht einem Weg in dem Zweitstufen- Cache entsprechen kann und mehr als ein Weg in dem Zweitstufen-Cache einem Weg in dem Erststufen-Cache entsprechen kann.
10. Vorrichtung nach Anspruch 7, bei der bei einer Prozessorschreibung die Erststufen-Cachesteuerung ausgelegt ist, Wege-Information der Zweitstufen-Cachesteuerung zu übermitteln und die Zweitstufen-Cachesteuerung ausgelegt ist, empfangene Daten in einem Weg des Zweitstufen-Caches zu setzen, der der empfangenen Wege-Information entspricht.
11. Vorrichtung nach Anspruch 7, die weiter umfaßt:
ein mit dem Systembus gekoppeltes Busmastergerät (28); und bei der die Erststufen-Cachesteuerung Einrichtungen zum Beobachten des Systembus enthält, wenn der Mikroprozessor keine Kontrolle über den Systembus besitzt, um zu bestimmen, ob das Busmastergerät in einen RAM-Speicherplatz schreibt, der in dem Erststufen-Cache dupliziert ist, und bei dem die Zweitstufen-Cachesteuerung weiter enthält:
Einrichtung zum Beobachten des Systembus, wenn der Mikroprozessor keine Kontrolle über den Systembus innehat, um zu bestimmen, ob das Busmastergerät in einen RAM-Speicher zu schreiben, der in dem Zweitstufen-Cache dupliziert ist;
Einrichtung zum Überprüfen des Inklusionsbits an einem Zweitstufen-Cacheplatz, wo ein Zweitstufencache-Beobachtungstreffer auftritt, um zu bestimmen, ob eine Datenkopie von dem Platz in dem RAM-Speicher, in den geschrieben wurde, auch in dem Erststufen-Cache vorhanden ist; und Einrichtung, die mit der Erststufen-Cachesteuerung gekoppelt ist, um die Erststufen-Cachesteuerung anzuleiten, den Systembus zu beobachten, ob das Inklusionsbit gesetzt ist.
12. Vorrichtung nach Anspruch 11, bei der weiter:
der Zweitstufen-Cache ein Zurückschreibe-Cache ist, wobei die Zweitstufen-Cachesteuerung weiter enthält:
Einrichtung zum Beobachten des Systembus, wenn der Mikroprozessor keine Kontrolle über den Systembus besitzt, um zu bestimmen, ob das Busmastergerät einen RAM-Speicherplatz liest, der in den Zweitstufen-Cache dupliziert ist;
Einrichtung zum Bestimmen, ob der Zweitstufen-Cache, wenn ein Zweitstufencache-Lesebeobachtungstreffer aufgetreten ist, eine aktualisierte Version der in dem fraglichen Speicherplatz vorhandenen Daten enthält; und
Einrichtung zum Zuleiten der angeforderten Daten zum Hauptspeicher, falls der Zweitstufen-Cache eine aktualisierte Version der Daten besitzt, wobei die Bussteuerung die angeforderten durch die Zweitstufen-Cachesteuerung zugeführten Daten liest.
DE69130086T 1990-06-15 1991-06-14 Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien Expired - Fee Related DE69130086T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US53889490A 1990-06-15 1990-06-15

Publications (2)

Publication Number Publication Date
DE69130086D1 DE69130086D1 (de) 1998-10-08
DE69130086T2 true DE69130086T2 (de) 1999-01-21

Family

ID=24148867

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69130086T Expired - Fee Related DE69130086T2 (de) 1990-06-15 1991-06-14 Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien

Country Status (6)

Country Link
US (1) US5369753A (de)
EP (1) EP0461926B1 (de)
JP (1) JPH04233048A (de)
AT (1) ATE170642T1 (de)
CA (1) CA2044689A1 (de)
DE (1) DE69130086T2 (de)

Families Citing this family (128)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146473A (en) * 1989-08-14 1992-09-08 International Mobile Machines Corporation Subscriber unit for wireless digital subscriber communication system
DE69225876T2 (de) * 1991-12-24 1998-12-10 Motorola, Inc., Schaumburg, Ill. Cachesteuerungsschaltung
US5724549A (en) * 1992-04-06 1998-03-03 Cyrix Corporation Cache coherency without bus master arbitration signals
US5524212A (en) * 1992-04-27 1996-06-04 University Of Washington Multiprocessor system with write generate method for updating cache
JPH05324468A (ja) * 1992-05-21 1993-12-07 Fujitsu Ltd 階層化キャッシュメモリ
JPH06110781A (ja) * 1992-09-30 1994-04-22 Nec Corp キャッシュメモリ装置
JP2541771B2 (ja) * 1993-01-29 1996-10-09 インターナショナル・ビジネス・マシーンズ・コーポレイション 原子的メモリ参照方法及びシステム
EP0622738B1 (de) * 1993-04-30 1998-08-05 Siemens Nixdorf Informationssysteme Aktiengesellschaft Verfahren zur Ausführung von an einen mehrstufigen Cachespeicher einer Datenverarbeitungsanlage gerichteten Anforderungen und entsprechend gestalteter Cachespeicher
US5640531A (en) * 1993-06-22 1997-06-17 Unisys Corporation Enhanced computer operational system using auxiliary mini-cache for enhancement to general cache
US5544342A (en) * 1993-06-30 1996-08-06 International Business Machines Corporation System and method for prefetching information in a processing system
US5586270A (en) * 1993-09-30 1996-12-17 Intel Corporation Method and apparatus for upgrading a central processing unit and existing memory structure in a computer system
US5636365A (en) * 1993-10-05 1997-06-03 Nec Corporation Hierarchical buffer memories for selectively controlling data coherence including coherence control request means
US5530832A (en) * 1993-10-14 1996-06-25 International Business Machines Corporation System and method for practicing essential inclusion in a multiprocessor and cache hierarchy
US5522057A (en) * 1993-10-25 1996-05-28 Intel Corporation Hybrid write back/write through cache having a streamlined four state cache coherency protocol for uniprocessor computer systems
US5623627A (en) * 1993-12-09 1997-04-22 Advanced Micro Devices, Inc. Computer memory architecture including a replacement cache
US5692154A (en) * 1993-12-20 1997-11-25 Compaq Computer Corporation Circuit for masking a dirty status indication provided by a cache dirty memory under certain conditions so that a cache memory controller properly controls a cache tag memory
US5832534A (en) * 1994-01-04 1998-11-03 Intel Corporation Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories
US5603004A (en) * 1994-02-14 1997-02-11 Hewlett-Packard Company Method for decreasing time penalty resulting from a cache miss in a multi-level cache system
US6006299A (en) * 1994-03-01 1999-12-21 Intel Corporation Apparatus and method for caching lock conditions in a multi-processor system
US5717894A (en) * 1994-03-07 1998-02-10 Dell Usa, L.P. Method and apparatus for reducing write cycle wait states in a non-zero wait state cache system
US5588131A (en) * 1994-03-09 1996-12-24 Sun Microsystems, Inc. System and method for a snooping and snarfing cache in a multiprocessor computer system
JP2778913B2 (ja) * 1994-04-26 1998-07-23 株式会社東芝 マルチプロセッサシステム及びメモリアロケーション方法
US5548742A (en) * 1994-08-11 1996-08-20 Intel Corporation Method and apparatus for combining a direct-mapped cache and a multiple-way cache in a cache memory
US5813031A (en) * 1994-09-21 1998-09-22 Industrial Technology Research Institute Caching tag for a large scale cache computer memory system
US5634073A (en) * 1994-10-14 1997-05-27 Compaq Computer Corporation System having a plurality of posting queues associated with different types of write operations for selectively checking one queue based upon type of read operation
US6006312A (en) * 1995-02-27 1999-12-21 Sun Microsystems, Inc. Cachability attributes of virtual addresses for optimizing performance of virtually and physically indexed caches in maintaining multiply aliased physical addresses
WO1996033462A1 (de) * 1995-04-18 1996-10-24 International Business Machines Corporation Cache-speicher
US5623632A (en) * 1995-05-17 1997-04-22 International Business Machines Corporation System and method for improving multilevel cache performance in a multiprocessing system
US5850534A (en) * 1995-06-05 1998-12-15 Advanced Micro Devices, Inc. Method and apparatus for reducing cache snooping overhead in a multilevel cache system
US5740400A (en) * 1995-06-05 1998-04-14 Advanced Micro Devices Inc. Reducing cache snooping overhead in a multilevel cache system with multiple bus masters and a shared level two cache by using an inclusion field
DE19524023B4 (de) * 1995-06-30 2004-02-05 Fujitsu Siemens Computers Gmbh Multiprozessorsystem mit einer sehr großen Anzahl von Mikroprozessoren
US5778427A (en) * 1995-07-07 1998-07-07 Sun Microsystems, Inc. Method and apparatus for selecting a way of a multi-way associative cache by storing waylets in a translation structure
US5652859A (en) * 1995-08-17 1997-07-29 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US5758119A (en) * 1995-08-23 1998-05-26 International Business Machines Corp. System and method for indicating that a processor has prefetched data into a primary cache and not into a secondary cache
US5740399A (en) * 1995-08-23 1998-04-14 International Business Machines Corporation Modified L1/L2 cache inclusion for aggressive prefetch
JP2964926B2 (ja) * 1995-08-29 1999-10-18 富士ゼロックス株式会社 データベース管理装置及び方法
US5712970A (en) * 1995-09-28 1998-01-27 Emc Corporation Method and apparatus for reliably storing data to be written to a peripheral device subsystem using plural controllers
US5809537A (en) * 1995-12-08 1998-09-15 International Business Machines Corp. Method and system for simultaneous processing of snoop and cache operations
US5832250A (en) * 1996-01-26 1998-11-03 Unisys Corporation Multi set cache structure having parity RAMs holding parity bits for tag data and for status data utilizing prediction circuitry that predicts and generates the needed parity bits
US6070233A (en) * 1996-01-26 2000-05-30 Unisys Corporation Processor bus traffic optimization system for multi-level cache utilizing reflection status bit to indicate data inclusion in higher level cache
US5829038A (en) * 1996-06-20 1998-10-27 Intel Corporation Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure
US5835950A (en) * 1996-07-12 1998-11-10 Samsung Electronics Co., Ltd. Self-invalidation method for reducing coherence overheads in a bus-based shared-memory multiprocessor apparatus
US5897656A (en) * 1996-09-16 1999-04-27 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US6049847A (en) * 1996-09-16 2000-04-11 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US5926830A (en) * 1996-10-07 1999-07-20 International Business Machines Corporation Data processing system and method for maintaining coherency between high and low level caches using inclusive states
US5809526A (en) * 1996-10-28 1998-09-15 International Business Machines Corporation Data processing system and method for selective invalidation of outdated lines in a second level memory in response to a memory request initiated by a store operation
US6202125B1 (en) 1996-11-25 2001-03-13 Intel Corporation Processor-cache protocol using simple commands to implement a range of cache configurations
US5809528A (en) * 1996-12-24 1998-09-15 International Business Machines Corporation Method and circuit for a least recently used replacement mechanism and invalidated address handling in a fully associative many-way cache memory
US5787478A (en) * 1997-03-05 1998-07-28 International Business Machines Corporation Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy
US5895495A (en) * 1997-03-13 1999-04-20 International Business Machines Corporation Demand-based larx-reserve protocol for SMP system buses
US6105112A (en) * 1997-04-14 2000-08-15 International Business Machines Corporation Dynamic folding of cache operations for multiple coherency-size systems
US6061755A (en) * 1997-04-14 2000-05-09 International Business Machines Corporation Method of layering cache and architectural specific functions to promote operation symmetry
US5943684A (en) * 1997-04-14 1999-08-24 International Business Machines Corporation Method and system of providing a cache-coherency protocol for maintaining cache coherency within a multiprocessor data-processing system
US6374330B1 (en) * 1997-04-14 2002-04-16 International Business Machines Corporation Cache-coherency protocol with upstream undefined state
FR2762420B1 (fr) * 1997-04-16 1999-05-21 Thomson Multimedia Sa Methode et dispositif d'obtention d'une selection adaptative d'ensembles de donnees stockes dans une memoire de masse
US5987577A (en) * 1997-04-24 1999-11-16 International Business Machines Dual word enable method and apparatus for memory arrays
US6209072B1 (en) 1997-05-06 2001-03-27 Intel Corporation Source synchronous interface between master and slave using a deskew latch
US5923898A (en) * 1997-05-14 1999-07-13 International Business Machines Corporation System for executing I/O request when an I/O request queue entry matches a snoop table entry or executing snoop when not matched
US6065101A (en) * 1997-06-12 2000-05-16 International Business Machines Corporation Pipelined snooping of multiple L1 cache lines
US5996048A (en) * 1997-06-20 1999-11-30 Sun Microsystems, Inc. Inclusion vector architecture for a level two cache
US6115795A (en) 1997-08-06 2000-09-05 International Business Machines Corporation Method and apparatus for configurable multiple level cache with coherency in a multiprocessor system
US6000015A (en) * 1997-09-16 1999-12-07 Unisys Corporation Processor bus traffic optimization system for multi-level cache utilizing reflection status bit to indicate data inclusion in a higher level cache
US6073212A (en) * 1997-09-30 2000-06-06 Sun Microsystems, Inc. Reducing bandwidth and areas needed for non-inclusive memory hierarchy by using dual tags
US5909697A (en) * 1997-09-30 1999-06-01 Sun Microsystems, Inc. Reducing cache misses by snarfing writebacks in non-inclusive memory systems
US6321297B1 (en) * 1998-01-05 2001-11-20 Intel Corporation Avoiding tag compares during writes in multi-level cache hierarchy
US6253291B1 (en) 1998-02-13 2001-06-26 Sun Microsystems, Inc. Method and apparatus for relaxing the FIFO ordering constraint for memory accesses in a multi-processor asynchronous cache system
US6094605A (en) * 1998-07-06 2000-07-25 Storage Technology Corporation Virtual automated cartridge system
US6405322B1 (en) 1999-04-13 2002-06-11 Hewlett-Packard Company System and method for recovery from address errors
US6510493B1 (en) 1999-07-15 2003-01-21 International Business Machines Corporation Method and apparatus for managing cache line replacement within a computer system
US6353875B1 (en) 1999-08-04 2002-03-05 International Business Machines Corporation Upgrading of snooper cache state mechanism for system bus with read/castout (RCO) address transactions
US6502171B1 (en) * 1999-08-04 2002-12-31 International Business Machines Corporation Multiprocessor system bus with combined snoop responses explicitly informing snoopers to scarf data
US6324617B1 (en) 1999-08-04 2001-11-27 International Business Machines Corporation Method and system for communicating tags of data access target and castout victim in a single data transfer
US6338124B1 (en) 1999-08-04 2002-01-08 International Business Machines Corporation Multiprocessor system bus with system controller explicitly updating snooper LRU information
US6321305B1 (en) 1999-08-04 2001-11-20 International Business Machines Corporation Multiprocessor system bus with combined snoop responses explicitly cancelling master allocation of read data
US6343347B1 (en) 1999-08-04 2002-01-29 International Business Machines Corporation Multiprocessor system bus with cache state and LRU snoop responses for read/castout (RCO) address transaction
US6349367B1 (en) 1999-08-04 2002-02-19 International Business Machines Corporation Method and system for communication in which a castout operation is cancelled in response to snoop responses
US6343344B1 (en) 1999-08-04 2002-01-29 International Business Machines Corporation System bus directory snooping mechanism for read/castout (RCO) address transaction
US6587923B1 (en) * 2000-05-22 2003-07-01 International Business Machines Corporation Dual line size cache directory
US6725341B1 (en) * 2000-06-28 2004-04-20 Intel Corporation Cache line pre-load and pre-own based on cache coherence speculation
US6748492B1 (en) * 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6848024B1 (en) * 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6732234B1 (en) * 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
US6763433B1 (en) 2000-10-26 2004-07-13 International Business Machines Corporation High performance cache intervention mechanism for symmetric multiprocessor systems
US6629210B1 (en) 2000-10-26 2003-09-30 International Business Machines Corporation Intelligent cache management mechanism via processor access sequence analysis
US6704843B1 (en) 2000-10-26 2004-03-09 International Business Machines Corporation Enhanced multiprocessor response bus protocol enabling intra-cache line reference exchange
US6601144B1 (en) 2000-10-26 2003-07-29 International Business Machines Corporation Dynamic cache management in a symmetric multiprocessor system via snoop operation sequence analysis
US6721856B1 (en) * 2000-10-26 2004-04-13 International Business Machines Corporation Enhanced cache management mechanism via an intelligent system bus monitor
US6631450B1 (en) * 2000-10-26 2003-10-07 International Business Machines Corporation Symmetric multiprocessor address bus protocol with intra-cache line access information
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US6826662B2 (en) 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6809734B2 (en) 2001-03-22 2004-10-26 Sony Computer Entertainment Inc. Resource dedication system and method for a computer architecture for broadband networks
US6526491B2 (en) 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US7231500B2 (en) 2001-03-22 2007-06-12 Sony Computer Entertainment Inc. External data interface in a computer architecture for broadband networks
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US6662272B2 (en) 2001-09-29 2003-12-09 Hewlett-Packard Development Company, L.P. Dynamic cache partitioning
US7114038B2 (en) * 2001-12-28 2006-09-26 Intel Corporation Method and apparatus for communicating between integrated circuits in a low power mode
US7100001B2 (en) * 2002-01-24 2006-08-29 Intel Corporation Methods and apparatus for cache intervention
US6983348B2 (en) 2002-01-24 2006-01-03 Intel Corporation Methods and apparatus for cache intervention
US7024519B2 (en) * 2002-05-06 2006-04-04 Sony Computer Entertainment Inc. Methods and apparatus for controlling hierarchical cache memory
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US20040153611A1 (en) * 2003-02-04 2004-08-05 Sujat Jamil Methods and apparatus for detecting an address conflict
US7287126B2 (en) * 2003-07-30 2007-10-23 Intel Corporation Methods and apparatus for maintaining cache coherency
US7093075B2 (en) * 2003-11-07 2006-08-15 International Business Machines Corporation Location-based placement algorithms for set associative cache memory
US7213107B2 (en) * 2003-12-31 2007-05-01 Intel Corporation Dedicated cache memory
US7236918B2 (en) * 2003-12-31 2007-06-26 International Business Machines Corporation Method and system for selective compilation of instrumentation entities into a simulation model of a digital design
US8224639B2 (en) 2004-03-29 2012-07-17 Sony Computer Entertainment Inc. Methods and apparatus for achieving thermal management using processing task scheduling
JP4673584B2 (ja) * 2004-07-29 2011-04-20 富士通株式会社 キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法
US20060089826A1 (en) * 2004-10-21 2006-04-27 International Business Machines Corporation Method, system and program product for defining and recording minimum and maximum count events of a simulation
US7392169B2 (en) * 2004-10-21 2008-06-24 International Business Machines Corporation Method, system and program product for defining and recording minimum and maximum event counts of a simulation utilizing a high level language
US7454325B2 (en) * 2004-12-07 2008-11-18 International Business Machines Corporation Method, system and program product for defining and recording threshold-qualified count events of a simulation by testcases
US7552043B2 (en) * 2005-09-15 2009-06-23 International Business Machines Corporation Method, system and program product for selectively removing instrumentation logic from a simulation model
US7711537B2 (en) * 2006-05-03 2010-05-04 International Business Machines Corporation Signals for simulation result viewing
US7493248B2 (en) * 2006-05-08 2009-02-17 International Business Machines Corporation Method, system and program product supporting phase events in a simulation model of a digital system
US7912694B2 (en) * 2007-01-30 2011-03-22 International Business Machines Corporation Print events in the simulation of a digital system
US7917699B2 (en) 2007-12-21 2011-03-29 Mips Technologies, Inc. Apparatus and method for controlling the exclusivity mode of a level-two cache
US7890699B2 (en) * 2008-01-10 2011-02-15 International Business Machines Corporation Processing unit incorporating L1 cache bypass
KR20100058825A (ko) * 2008-11-25 2010-06-04 삼성전자주식회사 저항체를 이용한 반도체 장치, 이를 이용한 카드 또는 시스템 및 상기 반도체 장치의 구동 방법
US8782374B2 (en) * 2008-12-02 2014-07-15 Intel Corporation Method and apparatus for inclusion of TLB entries in a micro-op cache of a processor
US8453080B2 (en) * 2008-12-16 2013-05-28 International Business Machines Corporation Model build in the presence of a non-binding reference
JP5440067B2 (ja) * 2009-09-18 2014-03-12 富士通株式会社 キャッシュメモリ制御装置およびキャッシュメモリ制御方法
US8504774B2 (en) 2010-10-13 2013-08-06 Microsoft Corporation Dynamic cache configuration using separate read and write caches
US10102129B2 (en) * 2015-12-21 2018-10-16 Intel Corporation Minimizing snoop traffic locally and across cores on a chip multi-core fabric
US10366008B2 (en) * 2016-12-12 2019-07-30 Advanced Micro Devices, Inc. Tag and data organization in large memory caches
US10635766B2 (en) 2016-12-12 2020-04-28 International Business Machines Corporation Simulation employing level-dependent multitype events
US10417135B2 (en) * 2017-09-28 2019-09-17 Intel Corporation Near memory miss prediction to reduce memory access latency
TWI697902B (zh) 2019-01-24 2020-07-01 瑞昱半導體股份有限公司 電子裝置及電子裝置的管理方法
CN112433961B (zh) * 2020-12-02 2022-07-08 海光信息技术股份有限公司 复合缓存目录***及其管理方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464712A (en) * 1981-07-06 1984-08-07 International Business Machines Corporation Second level cache replacement method and apparatus
US4442487A (en) * 1981-12-31 1984-04-10 International Business Machines Corporation Three level memory hierarchy using write and share flags
US4493026A (en) * 1982-05-26 1985-01-08 International Business Machines Corporation Set associative sector cache
US4736293A (en) * 1984-04-11 1988-04-05 American Telephone And Telegraph Company, At&T Bell Laboratories Interleaved set-associative memory
US4823259A (en) * 1984-06-29 1989-04-18 International Business Machines Corporation High speed buffer store arrangement for quick wide transfer of data
US4985829A (en) * 1984-07-31 1991-01-15 Texas Instruments Incorporated Cache hierarchy design for use in a memory management unit
US4774654A (en) * 1984-12-24 1988-09-27 International Business Machines Corporation Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory
US4755930A (en) * 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
US4783736A (en) * 1985-07-22 1988-11-08 Alliant Computer Systems Corporation Digital computer with multisection cache
US5091846A (en) * 1986-10-03 1992-02-25 Intergraph Corporation Cache providing caching/non-caching write-through and copyback modes for virtual addresses and including bus snooping to maintain coherency
US5023776A (en) * 1988-02-22 1991-06-11 International Business Machines Corp. Store queue for a tightly coupled multiple processor configuration with two-level cache buffer storage
US5202972A (en) * 1988-12-29 1993-04-13 International Business Machines Corporation Store buffer apparatus in a multiprocessor system
US5133074A (en) * 1989-02-08 1992-07-21 Acer Incorporated Deadlock resolution with cache snooping
US5072369A (en) * 1989-04-07 1991-12-10 Tektronix, Inc. Interface between buses attached with cached modules providing address space mapped cache coherent memory access with SNOOP hit memory updates
US5136700A (en) * 1989-12-22 1992-08-04 Digital Equipment Corporation Apparatus and method for reducing interference in two-level cache memories
US5253353A (en) * 1990-01-02 1993-10-12 Digital Equipment Corporation System and method for efficiently supporting access to I/O devices through large direct-mapped data caches
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache

Also Published As

Publication number Publication date
EP0461926A3 (en) 1992-05-06
EP0461926A2 (de) 1991-12-18
ATE170642T1 (de) 1998-09-15
US5369753A (en) 1994-11-29
EP0461926B1 (de) 1998-09-02
JPH04233048A (ja) 1992-08-21
DE69130086D1 (de) 1998-10-08
CA2044689A1 (en) 1991-12-16

Similar Documents

Publication Publication Date Title
DE69130086T2 (de) Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69900797T2 (de) Cache-Speicherkohärenzprotokoll mit unabhängiger Implementierung von optimierten Cache-Speicheroperationen
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69031978T2 (de) Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern
DE69327387T2 (de) An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung
DE69127111T2 (de) Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher
DE69616465T2 (de) Cachespeicher mit Datenvorausladung
DE68924206T2 (de) Verfahren und Einrichtung zum Filtern von Ungültigkeitserklärungsanforderungen.
DE69514165T2 (de) Mehrstufige Cache-Speicheranordnung
DE68902193T2 (de) Datenspeicheranordnung.
DE69708188T2 (de) Speichersteuerungseinheit
DE10085373B4 (de) Verfahren zum Flushen von Cache-Zeilen
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69518676T2 (de) Cache-Speicheranordnung für einen Speicher
DE3856552T2 (de) Multiprozessor-Digitaldatenverarbeitungssystem und Verfahren zum Betreiben dieses Systems
DE69616223T2 (de) Datenstromvorausladepufferspeicher mit Datenstromfilters
DE3587960T2 (de) Datenverarbeitungsanlage mit einem Speicherzugriffssteuergerät.
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE3886182T2 (de) Mehrcachedatenspeicheranordnung.
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE69937611T2 (de) Intelligenter Puffer-Speicher
DE10006430B4 (de) Verfahren zur Aufrechterhaltung einer Kohärenz für ein Multi-Prozessor-System

Legal Events

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