DE69027253T2 - Multiprozessor-Cachespeichersystem - Google Patents
Multiprozessor-CachespeichersystemInfo
- Publication number
- DE69027253T2 DE69027253T2 DE69027253T DE69027253T DE69027253T2 DE 69027253 T2 DE69027253 T2 DE 69027253T2 DE 69027253 T DE69027253 T DE 69027253T DE 69027253 T DE69027253 T DE 69027253T DE 69027253 T2 DE69027253 T2 DE 69027253T2
- Authority
- DE
- Germany
- Prior art keywords
- status
- cache
- line
- data
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 claims description 117
- 238000000034 method Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 12
- 230000001960 triggered effect Effects 0.000 claims 1
- 238000012546 transfer Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000032683 aging Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013101 initial test Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die vorliegende Erfindung betrifft Cachespeicher gemäß der Präambel des Anspruchs 1.
- Moderne hochleistungsfähige digitale Computer mit gespeicherten Programmen greifen auf Befehle und Daten, die in einem Hauptspeicher stehen, konventionell unter Verwendung eines Cachespeichers zu. Ein Cachespeicher ist ein Speicher, der sich in unmittelbarer Nähe eines Prozessors befindet und der typischerweise viel kleiner und schneller ist als der Hauptspeicher des Computers. Praktisch alle hochleistungsfähigen digitalen Computer verwenden Cachespeicher, und selbst einige verfügbare Mikroprozessoren enthalten in ihrer Struktur Cachespeicher.
- Cachespeicher sind entwickelt worden, weil es nicht möglich war, mit vernünftigen Kosten sehr große Speicher zu produzieren, die eine Datenzugriffszeit besitzen, welche mit modernen Pipelineprozessoren vergleichbar ist. Es ist jedoch möglich, preiswerte kleine Speicher zu bauen, die mit dem Prozessor Schritt halten können.
- Der Entwurf eines Cachespeichers zieht aus zwei Eigenschaften Nutzen, welche in Datenverarbeitungssystemen beobachtet worden sind. Die erste Eigenschaft ist als zeitliche Orientierung des Bezugs bekannt. Diese Eigenschaft bezieht sich auf die Tendenz eines Prozessors, während eines relativ kurzen Zeitintervalles auf einen Befehl oder bestimmte Daten wiederholt zuzugreifen. Die zweite Eigenschaft ist als räumliche Orientierung des Bezugs bekannt. Diese Eigenschaft bezieht sich auf die Tendenz eines Prozessors, während eines kurzenzeitintervalles auf Daten oder Befehle zuzugreifen, deren Adressen sich im Hauptspeicher nur um relativ kleine Werte unterscheiden. Diese erste und zweite Eigenschaft bilden die Grundlage dafür, in einem Cachespeicher Speicherworte abzulegen, die sowohl die zuletzt verwendeten Daten und Befehle als auch entsprechende Zeilen des Speichers enthalten, welche im Adreßraum des Prozessors unmittelbar an diese zuletzt verwendeten Worte angrenzen.
- Cachespeicher können sowohl in Einzelprozessorsystemen als auch in Multiprozessorsystemen verwendet werden. In einen Typ eines Multiprozessorsystems, das als eng verbundenes system bekannt ist, teilen sich verschiedene Zentralprozessoren, von denen jeder seinen eigenen Cachespeicher besitzt, ein gemeinsames Betriebssystem und einen gemeinsamen Hauptspeicher. In einem eng verbundenen System ist es für jeden Cachespeicher wünschenswert, mit allen anderen Cachespeichern zusammenzuarbeiten. Speziell sollte jeder Cachespeicher in der Lage sein, die zuletzt aktualisierte Version der Datenwerte zu erhalten, unabhängig davon, ob sich diese in Hauptspeicher oder im Cachespeicher eines anderen Prozessors befinden. Folglich ist es wünschenswert, die Konsistenz der Daten zwischen den Cachespeichern kontinuierlich zu überwachen. Diese Überwachungsoperation ist als Cache-Kohärenzsteuerung bekannt.
- Dem Stand der Technik entsprechend gibt es verschiedene Typen Cachespeicher. Ein Typ ist der Durchspeichern- (ST) Cachespeicher, in welchem ein Datenspeicherbefehl drei Teile besitzt: ein Einspeichern in den Cachespeicher, der dem Prozessor zugeordnet ist, der den Befehl initiiert, ein Speichern in den Hauptspeicher und eine Folge von Querabfrage- (XI) Aktionen, welche alle örtlichen Kopien der Daten in anderen Cachespeichern des System ungültig machen. Normalerweise erfordern ST-Cachespeicher für eine effektive Arbeit eine beachtliche Speicher-Bandbreite.
- Ein anderer Entwurfstyp ist der Einspeichern- (SI) Cache. Ein SI-Cache sowie dessen Verwendung in einem Multiprozessorsystem wird von Krygowski et al. in dem U.S.-Patent Nr. 4 503 497, welches durch diese Bezugnahme hierin aufgenommen wird, beschrieben. In einen SI-Cache werden Datenwerte zwischen den verschiedenen Cachespeichern über einen Cache-zu-Cache (CTC) Übertragungsbus übertragen. Dieser Cachetyp benutzt ebenfalls die XI- Aktionen, um die Inhalte der verschiedenen Cachespeicher zu koordinieren. Eine zentrale Speichersteuereinrichtung, die alle Speicherzugriffe steuert, enthält ein Verzeichnis des Inhaltes der verschiedenen Cachespeicher. In dem System, das in dem zitierten Patent beschrieben wird, wird der Zugriff auf jede Zeile angrenzender Speicherworte durch ein Exklusiv-/Nur-Lese- (EX/RO) Markierungsbit gesteuert. Normalerweise werden die Datenwerte im Hauptspeicher nur dann aktualisiert, wenn Speicherwort-Zeilen im Cachespeicher ersetzt werden und die Daten in den Zeilen modifiziert worden sind.
- Speicherwort-Zeilen können beispielsweise entsprechend eines amlängsten-nicht-benutzt- (LRU) Schemas im Cache ersetzt und in den Hauptspeicher geschrieben werden. Die Übertragung einer Speicherwort-Zeile aus dem Cache in den Hauptspeicher ist als Auslagerungsoperation bekannt. Weil Daten nur dann in den Hauptspeicher geschrieben werden, wenn es sich um eine Auslagerung aus einem Cache handelt, sind die Anforderungen an die Speicher- Bandbreite eines Multiprozessorsystems, das SI-Cachespeicher benutzt, geringer als die eines vergleichbaren Systems, das ST- Cachespeicher benutzt. Diese Minderung der Anforderungen an die Bandbreite wird jedoch auf Kosten eines komplexeren Cache-Kohärenzsteuerungssystems und von Nachteilen bei der Verarbeitungsgeschwindigkeit der Prozessoren erreicht, die durch die Cachezu-Cache Kopieroperationen und die begleitenden XI-Ereignisse bewirkt werden.
- In einem typischen Multiprozessorsystem, das SI-Cachespeicher benutzt, enthält jeder Cache ein Cacheverzeichnis, welches Informationen darüber enthält, ob der Zugriff auf eine Zeile Speicherworte dem Nur-Lese- (RO), Exklusiv- (EX) oder Ungültig- (INV) Status hat. Zusätzlich enthält das Verzeichnis eine Information (ein Bit CH), die anzeigt, ob irgendwelche Daten in der Zeile verändert worden sind, wenn die Zeile Speicherworte den EX-Status hat.
- Wenn der Status einer Zeile RO ist, können die Daten in jener Zeile nur gelesen werden. Im allgemeinen besitzt eine Zeile Befehlswörte diesen Status. Eine RO-Cachezeile kann gleichzeitig in verschiedenen Cachespeichern vorhanden sein.
- Wenn eine Zeile Speicherworte den EX-Status hat, darf diese Zeile in dem Cache nur eines Prozessors erscheinen. Der Prozessor, der diese Zeile in seinen Cache stehen hat, ist der einzige Prozessor, dem es gestattet ist, Daten aus dieser Zeile abzurufen oder in diese Zeile Speicherworte zu schreiben. Wenn zusätzlich der Verzeichniseintrag CH dieser Zeile anzeigt, daß die Daten dieser Zeile verändert worden sind, dann stimmen die Daten in der Cachezeile nicht mehr mit den Daten im Hauptspeicher überein. Wenn eine Zeile, deren CH-Bit gesetzt ist, im Cache ersetzt wird, wird über die Auslagerungsoperation eine Kopie an den Hauptspeicher gesendet.
- Eine Zeile Speicherworte hat den INV-Status, wenn Sie ungültig ist. Ein Status EX oder RO einer Zeile in einem Cachespeicher wird auf den Status INV verändert, wenn die Zeile einen EX-Status eines anderen Cachespeichers erhält.
- Ein typisches Multiprozessorsystem, das SI-Cachespeicher verwendet (z.B., das in dem oben zitierten U.S.-Patent Nr. 4 503 497 beschriebene), arbeitet folgendermaßen: Zu Beginn fordert ein Prozessor ein Datenwort über beispielsweise einen Daten-Abrufbefehl an. In Reaktion auf diese Anforderung überprüft der Prozessor seinen eigenen Cache auf eine Zeile, die dieses Wort enthält. Wenn der Cache die Zeile enthält, wird das Datenwort innerhalb des normalen Ablaufs der Befehlsausführung an dem Prozessor weitergeleitet. Wenn jedoch der Prozessor die Zeile in seinem eigenen Cache nicht findet, wird die Anforderung an die Speichersteuereinrichtung weitergeleitet. Die Speichersteuereinrichtung vergleicht die Anforderung wiederum mit einem Verzeichnis, welches den Inhalt aller Cachespeicher anzeigt. Wenn die Zielzeile in einem entfernten Cache gefunden wird und deren Status RO ist, wird Sie in dem anfordernden Cache kopiert; wenn ihr Status EX ist und ihr CH-Bit zurückgesetzt ist, wird die Zeile nit dem Status RO in den anfordernden Cache kopiert, und der Status der Zeile im entfernten Cache wird auf RO geändert. Wenn das CH-Bit gesetzt ist, wird die Zeile mit dem EX-Status und mit gesetztem CH-Bit in dem anfordernden Cache kopiert, und die Kopie im entfernten Cache wird ungültig gemacht Durch Beibehalten des EX-Status und des gesetzten CH-Bits der Zeile erwartet das System, daß der Prozessor in nächster Zukunft Daten in der Zeile speichern wird. Schließlich wird, wenn die Daten-Zielzeile in keinem Cache zu finden ist, auf diese im Hauptspeicher zugegriffern und ihr der Status RO zugewiesen.
- Das oben dargestellte Verfahren kann zu einem unnötigen Verlust an Parallelität innerhalb eines Multiprozessor-Cachespeichersystems führen. Dies kann beispielsweise auftreten, wenn auf Daten einer Zeile häufig zugegriffen, diese aber nur selten modifiziert werden. Wenn eine Zeile durch einen Prozessor modifiziert wird, erhält Sie den EX-Status, und ihr CH-Bit wird gesetzt. Dieser Status besteht fort, bis die Zeile durch den LRU- Ersatzalgorithmus in einem Cache ersetzt wird. In diesem Beispiel kann jeder der häufigen Abrufe der Zeile ein XI-Ereignis bewirken, um die Kopie der Zeile in dem entfernten Cache ungültig zu machen.
- Diese Anomalie tritt ein, weil, wenn die Daten einer Zeile, die den EX-Status hat, einmal verändert werden, deren CH-Bit bis zum Auslagern der Daten in den Hauptspeicher gesetzt bleibt. Dadurch daß Cachespeicher immer größer werden und die Anzahl der verwendeten Prozessoren, die in einem Multiprozessorsystem eingesetzt werden, zunimmt, wird dieses Problem auch immer größer. Bei größeren Cachespeichern werden Zeilen nicht mehr so schnell ausgelagert, und wenn die Anzahl der Prozessoren zunimmt, besteht die zunehmende Tendenz, daß eine Zeile über XI-Ereignisse von Prozessor zu Prozessor weitergegeben wird, ohne daß ein Auslagern erfolgt.
- Das U.S.-Patent 4 484 267 von Fletcher betrifft eine hybride Cachearchitektur, in welcher Daten einer Zeile in einigen Situationen behandelt werden können, als ob Sie sich in einem Einspeichern-Cache befinden, und in anderen Situationen, als ob Sie sich in einem Durchspeichern-Cache befinden. In dem in diesen Patent beschriebenen System wird das EX/RO-Bit im Cacheverzeichnis durch ein Teilungs- (SH) Bit ersetzt. Wenn auf eine Datenzeile erstmalig zugegriffen wird, wird das SH-Bit der Zeile auf Null gesetzt. Dies bewirkt, daß die Zeile behandelt wird, als ob Sie sich in einem SI-Cache befinden würde, wobei Sie den EX-Status erhält. Wenn ein anderer Prozessor auf die Daten dieser Zeile zugreift, setzt das Speichersteuerelement das SH-Bit auf 1, was es gestattet, daß der an den anderen Prozessor angeschlossene Cache die Zeile über den CTC-Bus kopiert. Wenn einer der Prozessoren dann eine Schreiboperation für die Daten in der Zeile anfordert, werden die neuen Daten in der Zeile des anfordernden Cache sowie im Hauptspeicher gespeichert, wie bei einem ST-Cache. Gleichzeitig macht ein XI-Ereignis alle Kopien der Zeile in anderen Cachespeichern ungültig. Das SH-Bit bleibt jedoch im anfordernden Cache gesetzt, so daß, wenn ein anderer Cache auf die Daten zuzugreifen versucht, diese Anforderung durch Kopieren der Zeile über dem CTC-Bus erfüllt werden kann.
- Das U.S.-Patent 4 394 731 von Flusche et al. betrifft ein Multiprozessor-SI-Cachespeichersystem. In diesem System kann eine Zeile, die einen EX-Status hat, in zwei Fällen erhalten werden: Erstens, wenn keine Kopie der Zeile in irgendeinem entfernten Cache vorhanden ist, und zweitens, wenn die Zeile in einem entfernten Cache vorhanden ist, den EX-Status besitzt und ihr CH-Bit gesetzt ist. Dieses Cachesystem besitzt keinen Cachezu-Cache-Bus, so daß in dem zweiten oben beschriebenen Fall die CH-Zeile in dem Hauptspeicher ausgelagert wird und dann dem anfordernden Cache mit EX-Status zugewiesen wird. Wenn die Datenzeile im entfernten Cache den EX-Status und ein zurückgesetztes CH-Bit aufweist, wird der Status im entfernten Cache auf RO erniedrigt, und die Zeile wird mit RO-Status aus dem Hauptspeicher in dem anfordernden Cache kopiert.
- Das U.S.-Patent 4 503 497 von Krygowski et al. betrifft ein Multiprozessor-SI-Cachespeichersystem, das einen Cache-zu-Cache- Übertragungsbus enthält. Dieses System überträgt eine Zielzeile, die einen EX-Status und ein gesetztes CH-Bit besitzt, aus dem entfernten Cache in dem anfordernden Cache, ohne daß der Status der Zeile oder der Zustand des CH-Bits verändert werden und ohne daß auf den Hauptspeicher zugegriffen wird. Die Zielzeile wird im entfernten Cache ungültig gemacht.
- Es ist Aufgabe der vorliegenden Erfindung ein Multiprozessor- Cachespeichersystem bereitzustellen, welches aus der vorausschauenden Erfassung eines Exklusiv-Status wirkungsvoll Nutzen zieht, indem unnötige XI- und Ungültig-machen-Ereignisse vermieden werden.
- Die Lösung wird in einem Verfahren gemäß Anspruch 1 und einem Cachespeicher gemäß Anspruch 5 beschrieben. Verbesserungen der Erfindung werden in weiteren abhängigen Ansprüchen charakterisiert.
- Die vorliegende Erfindung ist in einem Multiprozessorsystem ausgeführt, in welchem Datenzeilen, auf die in Reaktion auf einen Cache-Fehler zugegriffen wird, ein Zeitweiliger Exklusiv-Status (TEX) zugewiesen wird. Dieser Status wird nur über eine kurze Wartezeit aufrechterhalten. Wenn ein Versuch unternommen wird, in eine TEX-Zeile zu schreiben, bevor der Status aufgehoben ist, wird der Status auf den EX-Status erhöht. Wenn vor Rücknahme des TEX-Status kein Versuch unternommen wurde, in die Zeile zu schreiben, wird der Status auf RO erniedrigt. Entsprechend einem weiteren Merkmal der Erfindung wird, wenn die Zeile, auf die zugegriffen wird, in einem entfernten Cache steht, deren Status im entfernten Cache auf einen Zeitweiligen Nur-Lese-Status (TRO) gesetzt, während die Zeile im anfordernden Cache dem TEX-Status erhält. Wenn der TEX-Status auf den EX-Status erhöht wird, wird die Zeile im entfernten Cache als ungültig markiert. Alternativ dazu wird, wenn der TEX-Status auf den RO-Status erniedrigt wird, der TRO-Status auf dem RO-Status erhöht.
- Fig. 1 ist ein Blockschaltbild eines Multiprozessorsystems, welches eine Ausführungsform der vorliegenden Erfindung enthält.
- Fig. 2 bis 4 sind Ablaufdiagramme, die die Arbeitsweise des Cachespeichersystems beschreiben, das in dem in Fig. 1 dargestellten Multiprozessorsystem verwendet wird.
- Das folgende ist eine Beschreibung eines beispielhaften Einspeichern-Cachespeichersystems gemäß der vorliegenden Erfindung. Das hierin beschriebene System ist eine Verbesserung des in dem U.S.-Patent 4 503 497 von Krygowski beschriebenen Systems, welches durch diese Bezugnahme hierin aufgenommen ist.
- Einspeichern-Cachespeichersysteme werden typischerweise in modernen Multiprozessor-Großrechnern, wie beispielsweise in dem von der IBM Corporation hergestellten System 3090, verwendet. In diesen Systemen ist für jeden Prozessor ein Cachespeicher vorhanden.
- Jedem Cachespeicher ist ein Verzeichnis zugeordnet, und jeder Eintrag in dem Verzeichnis kann einen von drei möglichen Zuständen aufweisen: INV, RO und EX. Der INV-Status zeigt an, daß der Eintrag in dem Verzeichnis ungültig ist. Dieser Status wird beispielsweise einer Datenzeile in einem Cache zugeordnet, wenn die Zeile, die in dem einen Cache einen RO-Status hatte, durch einen anderen Cache mit einem EX-Status erhalten wird.
- Der RO-Status zeigt an, daß die Datenzeile nur in einem Nur- Lese-Status gültig ist. Der Prozessor kann nur Daten aus dieser Zeile abrufen. Eine Datenzeile kann gleichzeitig in verschiedenen Cachespeichern stehen, wenn Sie in jedem Cacheverzeichnis den RO-Status hat.
- Wenn eine Datenzeile in ihrem Cacheverzeichniseintrag dem EX- Status hat, kann Sie in keinem weiteren Verzeichnis stehen. Der Prozessor, der dem Cache besitzt, ist der einzige Prozessor, dem es gestattet ist, ohne ein dazwischen liegendes XI-Ereignis Daten in die Zeile zu schreiben.
- Das CH-Bit in dem Cacheverzeichnis ist nur für Zeilen von Bedeutung, die den EX-Status haben. Das CH-Bit zeigt an, wenn es gesetzt ist, daß Daten in die Zeile geschrieben worden sind. Wenn dieses Bit in dem Verzeichniseintrag für eine Zeile gesetzt ist, zeigt es an, daß die Datenzeile im Cache nicht dieselbe sein muß, wie die entsprechende Datenzeile im Hauptspeicher. Wenn eine Zeile, deren CH-Bit gesetzt ist, im Cache ersetzt wird, werden die Modifikationen der Zeile über die Auslagerungsoperation an dem Hauptspeicher gesendet.
- Ein System gemäß der vorliegenden Erfindung verbessert dem SI- Cacheentwurf durch Hinzufügen zweier Zustände: des Zeitweiligen- Exklusiv-Status (TEX) und des Zeitweiligen-Nur-Lese-Status (TRO). Der TEX-Status Wird einer Zeile zugeordnet, die in einen anfordernden Cache kopiert wird, wenn Sie in einem entfernten Cache mit dem EX-Status und einem gesetzten CH-Bit gefunden wurde. Die Zeile wird in dem entfernten Cache nicht ungültig gemacht, sondern ihr Status wird auf TRO gesetzt.
- Der TEX-Status ist nur ein vorübergehender Status. Wenn während des Zeitintervalls, während dessen die Zeile dem TEX-Status hat, kein Versuch unternommen wird, Daten in die Zeile zu schreiben, wird der Status der Zeile im anfordernden Cache auf RO erniedrigt, und derjenige der Zeile im entfernten Cache wird auf RO erhöht. Wenn im Gegensatz dazu Daten während deren TEX-Status in die Zeile geschrieben werden, wird der Status der angeforderten Zeile auf EX erhöht, und der Status der entfernten Zeile wird auf INV erniedrigt. Diese Strategie, bei der in Erwartung des Schreibens in eine Zeile, auf welche in Reaktion auf eine Datenabruf-Anforderung zugegriffen wird, der Zeile zeitweilig ein EX-Status zugewiesen wird, nutzt eine zu beobachtende Tendenz eines Multiprozessorsystems. Der Erfinder hat beobachtet, daß, wenn ein Prozessor Daten nach einem ersten Zugreifen über eine Abrufanforderung verändert, dieser das relativ schnell nach der Abrufanforderung macht.
- Diese Strategie reduziert unnötige XI-Ereignisse und Ungültigmachen-Operationen, weil die Datenzeile in beiden Cachespeichern, sowohl im entfernten als auch im anfordernden Cache, resident bleibt, wenn ein Zeitweiliger-EX-Status zugewiesen wird. Somit bekommt, wenn die Daten der Zeile häufig abgerufen aber nur selten verändert werden, die Zeile einen RO-Stätus, der es für die meisten Abrufanforderungen gestattet, daß sich verschiedene Prozessoren die Daten teilen.
- Fig. 1 ist ein Blockschaltbild eines Zwei-Prozessor-Systems, welches eine Ausführungsform der vorliegenden Erfindung enthält. Im folgenden Beispiel ist ein Prozessor 10 der anfordernde Prozessor, und der andere Prozessor 12 ist der entfernte Prozessor. Wenn auch die unten stehenden Beispiele im Zusammenhang mit einem Zwei-Prozessor-System dargestellt sind, so kann der Fachmann dieses System doch leicht auf ein System erweitern, das eine größere Anzahl Prozessoren enthält.
- Wir beziehen uns auf Fig. 1. Die Cachespeicher 18 und 20 sind an eine gemeinsame Speichersteuereinrichtung 24 angeschlossen. Über Puffersteuereinrichtungen 14 beziehungsweise 16 sind die Cachespeicher 18 und 20 an entsprechende Prozessoren 10 und 12 angeschlossen. Die Puffersteuereinrichtungen verwalten die Verzeichnisse für die Ihnen zugeordneten Cachespeicher. Die Speichersteuereinrichtung 24 verwaltet eine Kopie eines Teils des Verzeichnisses von jeder der Puffersteuereinrichtungen 18 und 20.
- Alle durch die Prozessoren 10 und 12 erzeugten Speicherzugriffe werden über die Ihnen zugeordneten Cachespeicher 18 und 20 abgewickelt. Wenn ein Datenelement im Cache nicht gefunden wird (d.h. bei einem Cache-Fehler), bewirken die Puffersteuereinrichtungen, daß der Cache eine Anforderung für einen Datenzugriff an die Speichersteuereinrichtung 24 erzeugt. Die Speichersteuereinrichtung 24 unternimmt die notwendigen Schritte, um eine Kopie der Datenzeile zu erhalten, welche das angeforderte Datenelement enthält. Diese Zeile kann aus einem entfernten Cache, oder wenn Sie in keinem entfernten Cache gefunden wird, aus dem Hauptspeicher 26 erhalten werden. Wenn die angeforderten Daten in einem entfernten Cache gefunden werden, können Sie über einen Cachezu-Cache- (CTC) Bus 22 ohne Zugriff auf dem Hauptspeicher 26 übertragen werden. Die Cachespeicher 28 und 20 sind an entsprechende zeitweilige Stapelspeicher 19 und 21 angeschlossen. Die Speichersteuereinrichtung 24 ist an einen zeitweiligen Verzeichnisspeicher 25 angeschlossen. Die Funktion dieser Speicher wird unten erklärt.
- Beim Empfang einer Anforderung vom Cache 18 oder 20 bestimmt die Speichersteuereinrichtung 24, wel,che Aktion erforderlich ist, um dem angeforderten Zugriff auf die angeforderten Daten durchzuführen. Weil die Speichersteuereinrichtung 24 partielle Kopien der Verzeichnisse der Prozessor-Cachespeicher verwaltet, kann Sie feststellen, ob Kopien der Zielzeile, die die angeforderten Daten enthalten, in anderen Cachespeichern vorhanden sind. Außerdem kann die Speichersteuereinrichtung bestimmen, welcher Cache die Zielzeile enthält und welcher Status dieser Zeile zugewiesen ist.
- Für die vorliegende Erfindung sind drei Typen von Speicherzugriffen von Bedeutung, Befehlsabrufe (B-Abrufe), Daten- oder Operandenabrufe (D-Abrufe) und Daten- oder Operanden-Schreiboperationen (D-Schreiboperationen). B-Abrufe und D-Abrufe erfordern einen Lesezugriff auf die Daten, während D-Schreiboperationen einen Schreibzugriff erfordern. Dementsprechend wird einer Datenzeile, auf die mit einem B-Abruf zugegriffen wird, generell ein RO-Status zugewiesen, und einer Datenzeile, auf die mit einer D-Schreiboperation zugegriffen wird, wird generell ein EX-Status zugewiesen. Einer Datenzeile, auf die mit einem D-Abruf zugegriffen wird, wird in einigen Fällen ein RO-Status und in anderen Fällen ein EX-Status zugewiesen.
- Zum Beispiel weist in einem Computer Modell 3081, der von der IBM Corporation hergestellt wird, der anfordernde Cache in Erwartung einer zukünftigen Schreibanforderung vom anfordernden Prozessor einen EX-Status zu, wenn bei einer D-Abrufanforderung ein Cache-Fehler auftritt und eine Zeile, die die Daten enthält, sich mit einen EX-Status und einem gesetzten CH-Bit in einem entfernten Cache befindet. Diese Strategie basiert auf der Beobachtung, daß eine Datenzeile, welche von einem Prozessor modifiziert worden ist, tendenziell wieder modifiziert wird, selbst dann, wenn die erste Zugriffsanforderung ein D-Abruf ist. Diese Erwartungs-Strategie kann jedoch zu unnötigen Querabfrage- (XI) Ereignissen und zu unnötigen Ungültig-machen-Operationen führen, wenn, wie oben beschrieben, für die Zeile keine Speicheranforderungen mehr erzeugt werden.
- Die verschiedenen Abruf- und Schreiboperationen werden unten mit Bezug auf die Fig. 2 bis 4 beschrieben. In Schritt 100 von Fig. 2 hat der Prozessor 10 einen B-Abruf ausgeführt. In Schritt 102 überprüft die Puffersteuereinrichtung (PS) 14 ihr Verzeichnis des Cachespeichers 18 dahingehend, ob eine Zeile die angeforderten Daten enthält. Wenn gefunden wird, daß die Zeile in Cache 18 resident ist, wird in Schritt 104 der Zugriff auf die Daten gewährt. Wenn die Datenzeile nicht im Cache 18 gefunden wird (d.h., es tritt ein Cache-Fehler auf), fordert die Puffersteuereinrichtung 14 im Schritt 106 die Daten von der Speichersteuereinrichtung (SS) 24 an. In Schritt 108 bestimmt die Speichersteuereinrichtung 24, ob sich die angeforderte Zeile im entfernten Cache 20 befindet. Wenn sich die Zeile nicht im entfernten Cache 20 befindet, fordert die Speichersteuereinrichtung 24 im Schritt 110 die Daten aus dem Hauptspeicher (HS) 26 an. Wenn die angeforderte Zeile im entfernten Cache 20 gefunden wird, sollte Sie einen RO-Status haben, weil die Datenzeile in Reaktion auf eine B-Abrufanforderung erhalten wird. Dieser Test wird durch die NEIN-Verzweigung vom Entscheidungsblock 114 repräsentiert. In diesem Fall wird die Zeile in Schritt 118 über den CTC-Bus 22 aus dem entfernten Cache 20 in den anfordernden Cache 18 kopiert. Ihr Status wird nicht verändert.
- Es ist jedoch möglich, daß eine Zeile, auf die in Reaktion auf eine B-Abrufanforderung zugegriffen wird, im entfernten Cache 20 einen EX-Status hat. In diesem Fall kann das CH-Bit gesetzt oder zurückgesetzt sein. Wenn die entfernte Zeile einen EX-Status besitzt und das CH-Bit zurückgesetzt ist, überträgt der Entscheidungsblock 114 über seine NEIN-Verzweigung die Steuerung auf dem Schritt 118. In Schritt 118 wird die Zeile aus dem entfernten Cache 20 über den CTC-Bus 22 in dem anfordernden Cache 18 kopiert, und der Status der Zeile wird in beiden Cachespeichern auf RO verändert. Die JA-Verzweigung des Entscheidungsblocks 114 bewirkt, daß die entfernte Puffersteuereinrichtung in Schritt 116 die veränderte Zeile in den Hauptspeicher 26 auslagert und dann mit der Ausführung von Schritt 118 fortsetzt. Wenn sich im Ergebnis des Schrittes 110 oder des Schrittes 118 die Datenzeile mit dem Status RO im anfordernden Cache befindet, kann der Prozessor 10 dem angeforderten Befehl abrufen.
- Fig. 3 ist ein Ablaufdiagramm, welches die Schritte verdeutlicht, die durch das in Fig. 1 dargestellte System unternommen werden, wenn der Prozessor 10 in Schritt 200 eine D-Abrufanforderung an den Cachespeicher 18 initiiert. In Schritt 202 bestimmt die Puffersteuereinrichtung 14, ob sich die angeforderten Daten im Cachespeicher 18 befinden. Wenn die Daten nicht im Cache 18 gefunden werden, gibt die Puffersteuereinrichtung 14 in Schritt 204 eine Anforderung an die Speichersteuereinrichtung 24 aus, um auf die Daten im entfernten Cache 20 oder im Hauptspeicher 26 zuzugreifen. In Reaktion auf diese Anforderung bestimmt die Speichersteuereinrichtung 24 in Schritt 206, ob sich in dem entfernten Cache 20 eine Zeile befindet, die die angeforderten Daten enthält. Wenn sich die Daten nicht in dem entfernten Cache befinden, gibt die Speichersteuereinrichtung 24 in Schritt 208 eine Abrufanforderung für die Daten an dem Hauptspeicher 26 aus, um die Daten mit einem Status TEX für den Cache 18 bereitzustellen. Bei dieser Statuszuweisung wird angenommen, daß ein Wort aus der angeforderten Zeile, kurz nachdem das Wort in den Cache geschafft worden ist, geschrieben werden wird. Wenn die Annahme falsch ist, wird der TEX-Status automatisch auf dem RO-Status erniedrigt.
- Wenn die Speichersteuereinrichtung 24 in Schritt 206 die angeforderten Daten in dem entfernten Cache 18 findet, bestimmt Sie in Schritt 210 als nächstes den Status der Zeile. Wenn der Status RO ist, kopiert die Speichersteuereinrichtung 24 in Schritt 212 die Zeile in den anfordernden Cache und weist ihr im anfordernden Cache dem Status RO zu.
- Wenn in Schritt 210 festgestellt wird, daß der Status der Zeile im entfernten Cache EX oder TEX ist, zeigt die Speichersteuereinrichtung 24 in Schritt 218 der Puffersteuereinrichtung 16 an, daß Sie auf die Zeile zugreifen will. Die Puffersteuereinrichtung 16 überprüft in Schritt 220 das CH-Bit der Zeile. Wenn das CH-Bit zurückgesetzt ist, verändert die Steuereinrichtung 16 in Schritt 224 dem Status der Zeile auf RO und kopiert die Zeile mit dem RO-Status in den anfordernden Cache 18. Der Status im anfordernden Cache wird RO. Wenn das CH-Bit gesetzt ist, signalisiert die entfernte Puffersteuereinrichtung der Speichersteuereinrichtung 24, daß eine Zeile mit einem TEX-Status in dem anfordernden Cache 18 kopiert werden soll. Das CH-Bit bleibt gesetzt. Der anfordernde Cache verändert den Status seiner Kopie der Zeile auf TRO.
- Wenn die anfordernde Puffersteuereinrichtung 14 in Schritt 202 die Zeile im anfordernden Cache 18 findet, überträgt Sie die Steuerung auf dem Schritt 226. In Schritt 226 überprüft die Steuereinrichtung 14 dem Status der Zeile. Wenn die Zeile einen Status RO, EX oder TEX hat, kann der Prozessor auf diese zugreifen. Diese Bedingung wird durch die NEIN-Verzweigung des Entscheidungsblocks 226 repräsentiert. Diese Verzweigung bewirkt, daß der Schritt 228 ausgeführt wird, welcher die angeforderten Daten für dem Prozessor 10 bereitstellt.
- Wenn jedoch der Status der Zeile im anfordernden Cache 18 als TRO bestimmt wird, gibt die Puffersteuereinrichtung 14 nicht sofort dem Zugriff auf die Daten frei, weil dieser Status anzeigt, daß sich die Zeile mit einem TEX-Status in einem entfernten Cache befinden kann. Dementsprechend arbeitet die Steuereinrichtung 14 eine Schleife ab, welche die Schritte 226, 230, 232 und 234 enthält. Diese Schleife signalisiert der Speichersteuereinrichtung 24, daß Sie dem Status der Zeile im entfernten Cache überprüfen soll, und wartet die Wartezeit ab, nach der der Status auf EX oder RO zu ändern ist. Wie unten erklärt wird, ist die Wartezeit kurz, und der TEX-Status tritt relativ selten auf, so daß die Schleife keine signifikante Verzögerung für die Freigabe des Zugriffs auf die Daten in der Zeile bewirken sollte. Wenn der Status der entfernten Zeile auf RO verändert wird, verändert die Speichersteuereinrichtung 24 den anfordernden Status auf RO, und der anfordernde Cache kann auf die Daten zugreifen. Im Gegensatz dazu überträgt, wenn der Status der Zeile im entfernten Cache EX ist, die Speichersteuereinrichtung in Schritt 232 die Steuerung an Schritt 218, welcher dem anfordernden Cache dem Zugriff auf die Zeile wie oben erklärt gewährt.
- Der letzte Typ einer Datenanforderung, die durch einen Prozessor erzeugt werden kann, ist die D-Schreiboperation. In Fig. 4 erzeugt der Prozessor 10 in Schritt 300 eine D-Schreiboperationsanforderung. In Reaktion auf diese Anforderung überprüft die Puffersteuereinrichtung 14 in Schritt 302 ihr Verzeichnis, um zu bestimmen, ob eine die Daten enthaltende Zeile im Cache 18 vorhanden ist. Wenn dem so ist, überprüft die Puffersteuereinrichtung 14 im Entscheidungsblock 318, ob der Status der Zeile TEX ist. Wenn die Puffersteuereinrichtung einen TEX-Status vorfindet, führt Sie einen Schritt 320 aus, welcher den Status auf EX verändert und dann den Zugriff auf die Zeile freigibt, was in Schritt 324 die Ausführung der Schreiboperation ermöglicht. Wenn im Gegensatz dazu die Puffersteuereinrichtung 14 erkennt, daß die Zeile einen von TEX verschiedenen Status hat, führt Sie den Entscheidungsblock 322 aus; welcher überprüft, ob der Status der Zeile EX ist. Wenn ein EX-Status vorgefunden wird, gestattet die Puffersteuereinrichtung in Schritt 324 die Ausführung der Schreiboperation. Wenn der Status der Zeile nicht EX ist, kann er entweder RO oder TRO sein. In beiden Fällen fordert die Puffersteuereinrichtung in Schritt 326 die Speichersteuereinrichtung 24 auf, für die Zeile den EX-Status zu erteilen. In Reaktion auf diese Anforderung macht die Steuereinrichtung 24 alle Kopien der Zeile in entfernten Cachespeichern ungültig und setzt dann dem Status der Zeile im anfordernden Cache 18 auf EX.
- Wenn der Anfangstest in Block 320 die Zeile nicht im Cache 18 findet, gibt die Puffersteuereinrichtung 14 in Schritt 304 eine Anforderung nach einer Zeile mit EX-Status an die Speichersteuereinrichtung 24 aus. In Reaktion auf diese Anforderung stellt die Speichersteuereinrichtung 24 in Schritt 306 fest, ob im entfernten Cache 20 eine Zeile resident ist, die den Speicherplatz enthält, auf den die Daten geschrieben werden sollen. Wenn die Zeile in dem entfernten Cache nicht vorhanden ist, holt die Speichersteuereinrichtung 24 die Zeile aus dem Hauptspeicher 26 und weist Sie dem anfordernden Cache mit EX-Status zu. Wenn die Speichersteuereinrichtung 24 die Zeile in einem entfernten Cache findet, prüft Sie in Schritt 310 dem Status der Zeile. Wenn der Schritt 310 einen Status EX oder TEX vorfindet, zeigt die Speichersteuereinrichtung 24 in Schritt 314 der entfernten Puffersteuereinrichtung 16 an, daß die Zeile in den anfordernden Cache 18 übertragen werden soll und daß der Status der entfernten Kopie der Zeile auf INV gesetzt werden soll (Schritt 316).
- Wenn die Speichersteuereinrichtung 24 die entfernte Zeile mit einem Status RO oder TRO vorfindet, initiiert Sie in Schritt 312 ein Kopieren der Zeile aus dem entfernten Cache in dem anfordernden Cache, macht alle entfernten Kopien der Zeile ungültig ünd setzt dem Status der Zeile im anfordernden Cache auf EX.
- Nach irgendeinem der Schritte 308, 312, 316 oder 328, wenn dem anfordernden Cache die Zeile mit einem Status EX 25 zur Verfügung steht, gibt dieser dem Zugriff auf die Daten für den anfordernden Prozessor 10 frei.
- Obwohl es in dem oben beschriebenen Ablaufdiagrammen nicht explizit dargestellt wurde; ist es der Speichersteuereinrichtung 24 möglich, eine Anforderung, die von einer der Puffersteuereinrichtungen 14 und 16 ausgegeben wurde, zu modifizieren. Eine Modifikation dieses Typs würde auftreten, wenn der Status einer Zeile zwischen dem Zeitpunkt der Ausgabe der Anforderung und dem Zeitpunkt der Annahme der Anforderung durch die Systemsteuereinrichtung 24 verändert worden ist. Zum Beispiel sei angenommen, daß in Schritt 226 von Fig. 3 der Status einer Zeile als TRO erkannt worden ist und daß die Puffersteuereinrichtung 14 von der Speichersteuereinrichtung 24 fordert, dem entfernten Status der Zeile zu überprüfen. Es ist dann möglich, daß, bevor die Anforderung ausgeführt werden kann, der Status der Zeile im anfordernden Cache auf INV verändert wird, was bewirkt, daß der Cache auf diese Zeile nicht mehr zugreifen kann. In diesem Fall behandelt die Systemsteuereinrichtung 24 die Anforderung anstatt als Anforderung zur Überprüfung des entfernten Status, von Schritt 230 aus, als eine Fehler-Anforderung (d.h. Schritt 206).
- Die oben dargestellte Beschreibung bezieht sich auf dem Steuerungsablauf in der Speichersteuereinrichtung 24 und den Puffersteuereinrichtungen 14 und 16 bei der Behandlung einer B-Abruf-, einer D-Abruf- und einer D-Schreiboperationsanforderung, die von einem Prozessor innerhalb einer Multiprozessorumgebung ausgeht. Außer der Befehlsschleife in Fig. 3 betrifft diese Beschreibung nicht das Ablaufen des TEX-Status und des TRO-Status. Das Ablaufen dieser Statusbedingungen ist jedoch ein wichtiger Aspekt für die Arbeitsweise eines SI-Cachespeichersystems, welches gemäß der vorliegenden Erfindung arbeitet.
- In der vorliegenden Erfindung verwenden die Speichersteuereinrichtung 24 und die Puffersteuereinrichtungen 14 und 16 separate Datenstrukturen sowohl für das Aufrechterhalten der Wartezeiten als auch für das Beobachten der TEX- und TRO-Statusbedingungen. Diese Datenstrukturen sind das zeitweilige Verzeichnis 25 und die zeitweiligen Stapelspeicher 19 beziehungsweise 21. Die zeitweiligen Stapelspeicher 19 und 21 enthalten jeder zum Beispiel ein Paar kleiner Stapelspeicher. Ein Stapelspeicher innerhalb jeder Puffersteuereinrichtung speichert Daten, die anzeigen, welche Zeilen dem TEX-Status haben, während der andere Stapelspeicher Daten speichert, die anzeigen, welche Zeilen den TRO- Status haben. Jeder Stapelspeicher enthält N Register, die als Assoziativspeicher aufgebaut sind. Das zeitweilige Verzeichnis ist ein Assoziativspeicher, der P mal N Einträge enthält, wobei P die Anzahl der Prozessoren innerhalb des Multiprozessorsystems ist. Dieses Verzeichnis besitzt genügend Platz, um für jede Zeile, die innerhalb des Multiprozessorsystems einen TEX-Status besitzt, einen Eintrag aufzunehmen. In der vorliegenden Ausführungsforn der Erfindung ist N gleich eins, und P ist zwei.
- Wenn zum Beispiel eine Zeile mit einem TEX-Status in dem Cache 18 geholt wird, kann deren Status im örtlichen Verzeichnis der Puffersteuereinrichtung 14 beispielsweise auf RO gesetzt werden, und ein Token, das die Zeile identifiziert (z.B. deren Zeilenadresse oder Cachekoordinate) wird in dem TEX-Stapelspeicher der Steuereinrichtung 14 abgelegt. Zusätzlich wird in dem zeitweiligen Verzeichnis der Speichersteuereinrichtung 24 ein Eintrag für diese Zeile vorgenommen. Genauso kann, wenn einer Zeile der TRO- Status zugewiesen wird, die sich bereits im Cache 18 befindet, deren Verzeichniseintrag einen INV-Status erhalten, und ein Token, das die Zeile identifiziert, kann in dem TRO-Stapelspeicher abgelegt werden.
- In den oben dargestellten Beispielen wird jeder Zugriff auf eine Zeile, die sich in irgendeinem Stapelspeicher befindet, automatisch abgefangen (d.h. durch dem relevanten Stapelspeicher geleitet), um deren Status zu bestimmen. Diese Arbeitsweise stellt Standard-Statuswerte für dem Punkt bereit, an dem die Wartezeit einer Zeile abgelaufen ist; TEX-Zeilen werden RO-Zeilen und TRO- Zeilen werden INV-Zeilen. Diese Statuszuweisung gewährleistet die Funktionssicherheit des Systems, indem verhindert wird, daß ein Prozessor während des Zeitabschnittes zwischen dem Streichen einer Zeile aus dem TRO-Stapelspeicher und der Veränderung ihres Verzeichniseintrags unerlaubten Zugriff auf die Zeile erhält. In diesen Beispielen wird der Verzeichniseintrag für ein Element nur dann verändert, wenn ein TEX-Status auf EX oder ein TRO-Status auf RO erhöht wird.
- Wenn Daten in eine Zeile geschrieben werden, die einen TEX-Status besitzt, wird der Status der Zeile unmittelbar auf EX umgewandelt, indem der Eintrag für die Zeile in dem TEX-Stapelspeicher gelöscht wird und indem der Verzeichniseintrag verändert wird. Gleichzeitig wird ein Signal an die Speichersteuereinrichtung 24 gesendet, um dem entsprechenden Eintrag aus dem zeitweiligen Verzeichnis zu entfernen und irgendwelche Kopien der Zeile in entfernten Cachespeichern ungültig zu machen. Diese Operation macht die Zeile in dem Cachesteuereinrichtungs-Verzeichnissen, die dem entfernten Prozessoren zugeordnet sind, dadurch ungültig, daß die entsprechenden Einträge aus dem entsprechenden TRO- Stapelspeichern einfach gelöscht werden.
- Der Ablauf der Wartezeit für die TEX- und TRO-Statusbedingungen wird durch die Ersetzen-Operation gesteuert. Wenn ein neuer Eintrag in einen Stapelspeicher gemacht wird, wird einer der alten Einträge gelöscht (ersetzt). Zum Beispiel wird, wenn ein Eintrag im TRO-Stapelspeicher der Steuereinrichtung 14 ersetzt wird, der Status in dem ihm entsprechenden Eintrag des örtlichen Verzeichnisses der Steuereinrichtung 14 automatisch zu INV. Wenn ein Eintrag im TEX-Stapelspeicher der Puffersteuereinrichtung 14 ersetzt wird, wird der entsprechenden Zeile automatisch der Status RO zugewiesen. In diesem Fall kann es wünschenswert sein, den Status aller Kopien des früheren TEX-Eintrages, welche in entfernten Cachespeichern vorhanden sein können, von TRO auf RO zu verändern. Wenn dieser Schritt auch für die Gesamteffektivität des Multiprozessorsystems nützlich sein kann, ist er doch nicht erforderlich, weil ohne diesen Schritt der entfernte TRO- Eintrag als Standardwert dem INV-Status erhält.
- In Schritt 222 von Fig. 3 kann eine Zeile, die einen EX-Status besitzt und deren CH-Bit gesetzt ist, so behandelt werden, daß Sie im anfordernden Cache einen TEX-Status erhält und im entfernten Cache einen TRO-Status. Wenn die Wartezeit abläuft, ohne daß weitere Eingriffe stattfinden, würden sich daraus zwei Kopien der Zeile mit RO-Status und gesetzten CH-Bits ergeben. Das heißt, zwei Nur-Lese-Zeilen, deren Daten sich von dem entsprechenden Daten im Hauptspeicher 26 unterscheiden. Um diese anormale Situation zu verhindern, führt die vorliegende Ausführungsform der Erfindung eine Auslagerungsoperation aus, wenn eine Zeile, die einen TEX-Status besitzt und deren CH-Bit gesetzt ist, im TEX-Stapelspeicher ersetzt wird.
- Der Erfinder hat festgestellt, daß dieses Verfahren des Ablaufenlassens einer Wartezeit für zeitweilige Statusbedingungen dazu tendiert, daß die Zeilen, welche nach einer Abrufanforderung verändert werden, für eine ausreichend lange Zeit im Exklusiv-Status gehalten werden, um im Vergleich zu einem System, welches keine vorausschauenden Exklusiv-Statusbedingungen verwendet, eine signifikante Verbesserung der Leistungsfähigkeit des Systems bereitzustellen. Das beschriebene Verfahren reduziert im Vergleich zu dem Stand der Technik entsprechenden Systemen, welche dem EX-Status auf vorausschauender Basis zuweisen, auch die Anzahl der unnötigen XI- und Ungültig-machen-Ereignisse.
- Wenn auch dieses Verfahren des Alterns und der Verfolgung von zeitweiligen Statusbedingungen bevorzugt benutzt wird, so ist es doch nicht das einzige Verfahren, das in der Absicht des Erfinders liegt. Zum Beispiel kann das Vorhandensein eines zeitweiligen Status durch ein zusätzliches Bit im Verzeichniseintrag der Zeile angezeigt werden. Dieser Eintrag kann sich direkt im Verzeichnis der Speichersteuereinrichtung befinden oder er kann in dem Verzeichnissen sowohl der Speichersteuereinrichtung als auch der Puffersteuereinrichtungen stehen. In dieser alternativen Ausführungsform können die Statusbedingungen durch periodisches Zurücksetzen aller zeitweiligen Bits eines Verzeichnisses und entsprechend notwendiges Verändern des Status der entsprechenden Einträge gealtert werden. Diese Operation kann beispielsweise immer dann ausgeführt werden, wenn eine Zeile mit einem TEX-Status in dem Cache geholt wird, oder jedesmal dann, wenn der Status einer Zeile, die sich schon im Cache befindet, auf TRO verändert wird. Ein weiteres alternatives Verfahren für das periodische Altern zeitweiliger Statusbedingungen (im besonderen des TEX-Status) in einem zeitweiligen Stapelspeicher besteht darin, diesen mit einem Zeitgeber zu triggern. Der Zeitgeber wird gesetzt, wenn sich ein TEX-Status in der Puffersteuereinrichtung befindet, und bei jedem Zeitgeberimpuls kann ein TEX-Status freigegeben werden.
- Für spezielle Anwendungen ist es nicht notwendig, sowohl den TRO-Status als auch den TEX-Status zu verwenden. Zum Beispiel könnte ein Aufbau nur den TEX-Status verwenden. In Schritt 222 von Fig. 3, wenn für eine D-Abrufanforderung ein TEX-Status vergeben wird, kann die entfernte EX-Kopie wie bei einem klassischen Aufbau ungültig gemacht werden, anstatt auf dem TRO-Status verändert zu werden. Unntige XI-Aktionen können noch dadurch reduziert werden, daß frühzeitig einige TEX-Statusbedingungen freigegeben werden (verändert auf RO). Dies verhindert die Notwendigkeit, der entfernten Puffersteuereinrichtung zu signalisierern, daß der TRO-Status auf den RO-Status verändert werden soll, wenn eine andere Puffersteuereinrichtung einen TEX-Status auf RO verändert. Andererseits geht der Vorteil unnötiger Cachezeilern-ungültig-machen-Operationen verloren.
- Wenn auch das oben beschriebene System mit einem Einspeichern(d.h. SI) Cachespeichersystem verbunden ist, ist beabsichtigt, daß ein System desselben Typs vorteilhaft in einem Durchspeichern-Cachespeichersystem verwendet werden kann. Der einzige signifikante Unterschied bei der Implementierung für ein Durchspeichern-Cachesystem wäre die Eliminierung von Auslagerungsoperationen, weil in einem Durchspeichern-Cachesystem die Daten automatisch durch dem Cache hindurch in den Hauptspeicher geschrieben werden.
Claims (6)
1. Verfahren zum Zugriff auf in einem Cachespeicher stehende
Daten durch ein Multiprozessorsystem, wobei jeder
Wortzeile, die in einem Cache für einen Prozessor verfügbar ist,
eine Statusinformation zugewiesen wird und diese
Statusinformation vom Typ
- Nur-Lese-Status (RO) ist, wenn diese Leitung durch den
Prozessor nur gelesen werden darf,
- Exklusiv-Status (EX) ist, wenn nur der eine Prozessor
auf diese Leitung zugreifen kann,
- Ungültig-Status (INV) ist, wenn eine Leitung von einem
anderen Prozessor im Exklusiv-Status (EX) belegt ist,
dadurch gekennzeichnet, daß
eine zusätzliche Statusinformation für einen Zeitweiligen-
Exklusiv-Status (TEX) für eine in dem Cache zu speichernde
Wortzeile in Reaktion auf einen Cachefehler bereitgestellt
wird, wobei dieser Status über eine geeignete Wartezeit
aufrechterhalten wird,
und daß, falls während dieser Wartezeit ein Versuch
unternommen wird, in diese Wortzeile zu schreiben, dieser Status
auf den Exklusiv-Status (EX) erhöht wird, anderenfalls der
Status auf den Nur-Lese-Status (RO) erniedrigt wird.
2. Verfahren gemäß Anspruch 1, gekennzeichnet durch die
folgenden Schritte:
bei einem Cachefehler ebenfalls Speichern des Zeitweiligen-
Exklusiv-Status (TEX) in einern Verzeichniseintrag, welcher
der Zeile Speicherworte entspricht;
Speichern eines Tokenwertes, der die Zeile Speicherworte
repräsentiert, in einem Hilfsspeicher (19), der an dem
Cache angeschlossen ist, wobei ein Wert, der einen
Zeitweiligen-Exklusiv-Status (TEX) anzeigt, einen Wert für den Nur-
Lese-Status (RO) und dessen Tokenwert mit enthält.
3. Verfahren gemäß Anspruch 2, gekennzeichnet durch den
Schritt
Löschen des Tokens aus dem Hilfsspeicher (19), nachdem die
Wartezeit abgelaufen ist.
4. Verfahren nach einem der Ansprüche 1 bis 3, wobei
die Daten eines zweiten Cache, der einem zweiten Prozessor
zugeordnet ist, in einen ersten Cache, der einem ersten
Prozessor zugeordnet ist, kopiert werden, und wobei durch
dem ersten Prozessor eine Cacheanforderung ausgelöst wird,
gekennzeichnet durch die folgenden Schritte:
der Zeitweilige-Nur-Lese-Status (TRO) wird dem Daten im
zweiten Cache zugewiesen, während dem Daten im ersten Cache
der Zeitweilige-Exklusiv-Status (TEX) zugewiesen wird,
und
wenn der Zeitweilige-Exklusiv-Status (TEX) der Daten im
ersten Cache auf dem Exklusiv-Status (EX) erhöht wird, wird
dem Daten im zweiten Cache der Ungültig-Status (INV)
zugewiesen,
wenn der Zeitweilige-Exklusiv-Status (TEX) der Daten im
ersten Cache auf dem Nur-Lese-Status (RO) erniedrigt wird,
wird dem Daten im zweiten Cache der Nur-Lese-Status (RO)
zugewiesen.
5. Cachespeichermittel (18, 20) in einem Multiprozessorsystem
(10, 12), wobei jeder Wortzeile, die für einen Prozessor
verfügbar ist, eine Statusinformation zugeordnet wird und
diese Statusinformation vom Typ Nur-Lese-Status (RO) ist,
wenn diese Leitung durch den Prozessor nur gelesen werden
darf, vom Typ Exklusiv-Status (EX) ist, wenn nur der eine
Prozessor auf diese Leitung zugreifen kann, und vom Typ
Ungültig-Status (INV) ist, wenn eine Leitung von einem
anderen Prozessor im Exklusiv-Status (EX) belegt ist, wobei
das Multiprozessorsystem ebenfalls enthält:
Speichersteuerungsmittel (24) zum Speichern einer Zeile
Speicherworte, die Daten enthält, auf die zugegriffen
werden soll, in das Pufferspeichermittel in Reaktion auf einen
Speicherzugriff zum Lesen von Daten, wobei das
Cachespeichermittel gekennzeichnet ist durch
Puffersteuerungsmittel (14, 16) mit Mitteln (19, 21), die
in Reaktion auf einen Cachefehler einer Wortzeile, die in
den Cache gespeichert wird, einen Zeitweiligen-Exklusiv-
Statuswert zuweisen, der einen Zeitweiligen-Exklusiv-Status
(TEX) anzeigt,
Mittel, die dem Zeitweiligen-Exklusiv-Statuswert der Zeile
Speicherworte über eine Wartezeit aufrechthalten, und
Mittel zum Zuweisen eines anderen Statuswertes, wenn ein
Versuch unternommen wird, in die Zeile zu speichern, wobei,
wenn dieser Versuch während der Wartezeit unternommen wird,
dieser Status auf den Exklusiv-Status (EX) erhöht wird, der
anderenfalls auf den Nur-Lese-Status (RO) erniedrigt wird.
6. Cachespeichermittel gemäß Anspruch 5 zum Ausführen des
Verfahrens von Anspruch 4,
dadurch gekennzeichnet, daß Mittel bereitgestellt werden,
die einen Zeitweiligen-Nur-Lese-Status (TRO) zuweisen,
und durch Puffersteuerungsmittel (14, 16), die ebenfalls
Mittel zum Zuweisen eines Wertes enthalten, der den
Ungültig-Status (INV) anzeigt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/353,380 US5130922A (en) | 1989-05-17 | 1989-05-17 | Multiprocessor cache memory system using temporary access states and method for operating such a memory |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69027253D1 DE69027253D1 (de) | 1996-07-11 |
DE69027253T2 true DE69027253T2 (de) | 1996-12-05 |
Family
ID=23388859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69027253T Expired - Fee Related DE69027253T2 (de) | 1989-05-17 | 1990-03-23 | Multiprozessor-Cachespeichersystem |
Country Status (4)
Country | Link |
---|---|
US (1) | US5130922A (de) |
EP (1) | EP0397994B1 (de) |
JP (1) | JPH036756A (de) |
DE (1) | DE69027253T2 (de) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5291442A (en) * | 1990-10-31 | 1994-03-01 | International Business Machines Corporation | Method and apparatus for dynamic cache line sectoring in multiprocessor systems |
US5276835A (en) * | 1990-12-14 | 1994-01-04 | International Business Machines Corporation | Non-blocking serialization for caching data in a shared cache |
US5287473A (en) * | 1990-12-14 | 1994-02-15 | International Business Machines Corporation | Non-blocking serialization for removing data from a shared cache |
US5361368A (en) * | 1991-09-05 | 1994-11-01 | International Business Machines Corporation | Cross interrogate synchronization mechanism including logic means and delay register |
US5555382A (en) * | 1992-04-24 | 1996-09-10 | Digital Equipment Corporation | Intelligent snoopy bus arbiter |
GB2271201B (en) * | 1992-10-01 | 1995-12-13 | Digital Equipment Int | Low-overhead,non-coherent cache refreshment mechanism |
WO1994012923A2 (en) * | 1992-11-30 | 1994-06-09 | Base 10 Systems, Inc. | A safety critical processor and processing method for a data processing system |
JPH06180669A (ja) * | 1992-12-14 | 1994-06-28 | Nec Niigata Ltd | キャッシュシステム |
DE4423559A1 (de) * | 1993-11-09 | 1995-05-11 | Hewlett Packard Co | Datenverbindungsverfahren und Vorrichtung für Multiprozessor-Computersysteme mit gemeinsamem Speicher |
JPH086854A (ja) * | 1993-12-23 | 1996-01-12 | Unisys Corp | アウトボードファイルキャッシュ外部処理コンプレックス |
JP2778913B2 (ja) * | 1994-04-26 | 1998-07-23 | 株式会社東芝 | マルチプロセッサシステム及びメモリアロケーション方法 |
JP3030229B2 (ja) * | 1994-06-20 | 2000-04-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データを転送する方法及びデータ記憶システム |
US5671231A (en) * | 1994-07-07 | 1997-09-23 | Dell Usa, L.P. | Method and apparatus for performing cache snoop testing on a cache system |
USRE38514E1 (en) | 1994-11-18 | 2004-05-11 | Apple Computer, Inc. | System for and method of efficiently controlling memory accesses in a multiprocessor computer system |
US5895496A (en) * | 1994-11-18 | 1999-04-20 | Apple Computer, Inc. | System for an method of efficiently controlling memory accesses in a multiprocessor computer system |
US5655103A (en) * | 1995-02-13 | 1997-08-05 | International Business Machines Corporation | System and method for handling stale data in a multiprocessor system |
JP3872118B2 (ja) * | 1995-03-20 | 2007-01-24 | 富士通株式会社 | キャッシュコヒーレンス装置 |
US5835941A (en) * | 1995-11-17 | 1998-11-10 | Micron Technology Inc. | Internally cached static random access memory architecture |
US6167486A (en) * | 1996-11-18 | 2000-12-26 | Nec Electronics, Inc. | Parallel access virtual channel memory system with cacheable channels |
US6122711A (en) * | 1997-01-07 | 2000-09-19 | Unisys Corporation | Method of and apparatus for store-in second level cache flush |
JPH1173370A (ja) * | 1997-08-29 | 1999-03-16 | Fujitsu Ltd | 情報処理装置 |
US6098152A (en) * | 1997-10-17 | 2000-08-01 | International Business Machines Corporation | Method and apparatus for miss sequence cache block replacement utilizing a most recently used state |
US6301670B1 (en) | 1998-10-06 | 2001-10-09 | Ricoh Corporation | Method and apparatus for erasing data when a problem is identified |
US7325052B1 (en) | 1998-10-06 | 2008-01-29 | Ricoh Company, Ltd. | Method and system to erase data after expiration or other condition |
US6304948B1 (en) * | 1998-10-06 | 2001-10-16 | Ricoh Corporation | Method and apparatus for erasing data after expiration |
US6438650B1 (en) * | 1998-12-16 | 2002-08-20 | Intel Corporation | Method and apparatus for processing cache misses |
US6857051B2 (en) * | 1998-12-23 | 2005-02-15 | Intel Corporation | Method and apparatus for maintaining cache coherence in a computer system |
US6708254B2 (en) * | 1999-11-10 | 2004-03-16 | Nec Electronics America, Inc. | Parallel access virtual channel memory system |
US6651145B1 (en) | 2000-09-29 | 2003-11-18 | Intel Corporation | Method and apparatus for scalable disambiguated coherence in shared storage hierarchies |
US6643747B2 (en) * | 2000-12-27 | 2003-11-04 | Intel Corporation | Processing requests to efficiently access a limited bandwidth storage area |
US6799247B1 (en) * | 2001-08-23 | 2004-09-28 | Cisco Technology, Inc. | Remote memory processor architecture |
US20040128448A1 (en) * | 2002-12-31 | 2004-07-01 | Intel Corporation | Apparatus for memory communication during runahead execution |
US20060156381A1 (en) | 2005-01-12 | 2006-07-13 | Tetsuro Motoyama | Approach for deleting electronic documents on network devices using document retention policies |
US8272028B2 (en) * | 2008-10-15 | 2012-09-18 | Ricoh Company, Ltd. | Approach for managing access to electronic documents on network devices using document retention policies and document security policies |
US9135172B2 (en) | 2012-08-02 | 2015-09-15 | Qualcomm Incorporated | Cache data migration in a multicore processing system |
US8990513B2 (en) | 2013-01-11 | 2015-03-24 | International Business Machines Corporation | Accelerated recovery for snooped addresses in a coherent attached processor proxy |
US9021211B2 (en) | 2013-01-11 | 2015-04-28 | International Business Machines Corporation | Epoch-based recovery for coherent attached processor proxy |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4394731A (en) * | 1980-11-10 | 1983-07-19 | International Business Machines Corporation | Cache storage line shareability control for a multiprocessor system |
US4484267A (en) * | 1981-12-30 | 1984-11-20 | International Business Machines Corporation | Cache sharing control in a multiprocessor |
US4503497A (en) * | 1982-05-27 | 1985-03-05 | International Business Machines Corporation | System for independent cache-to-cache transfer |
US4797814A (en) * | 1986-05-01 | 1989-01-10 | International Business Machines Corporation | Variable address mode cache |
-
1989
- 1989-05-17 US US07/353,380 patent/US5130922A/en not_active Expired - Fee Related
-
1990
- 1990-03-23 EP EP90105476A patent/EP0397994B1/de not_active Expired - Lifetime
- 1990-03-23 DE DE69027253T patent/DE69027253T2/de not_active Expired - Fee Related
- 1990-05-15 JP JP2123225A patent/JPH036756A/ja active Granted
Also Published As
Publication number | Publication date |
---|---|
EP0397994A2 (de) | 1990-11-22 |
JPH036756A (ja) | 1991-01-14 |
JPH0555899B2 (de) | 1993-08-18 |
DE69027253D1 (de) | 1996-07-11 |
EP0397994A3 (de) | 1992-05-20 |
US5130922A (en) | 1992-07-14 |
EP0397994B1 (de) | 1996-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69027253T2 (de) | Multiprozessor-Cachespeichersystem | |
DE68924306T2 (de) | Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern. | |
DE68924206T2 (de) | Verfahren und Einrichtung zum Filtern von Ungültigkeitserklärungsanforderungen. | |
DE69514165T2 (de) | Mehrstufige Cache-Speicheranordnung | |
DE69616465T2 (de) | Cachespeicher mit Datenvorausladung | |
DE68927172T2 (de) | Multiprozessorsystem mit cache-speichern | |
DE69029995T2 (de) | Multiprozessor mit relativ atomaren Befehlen | |
DE3856552T2 (de) | Multiprozessor-Digitaldatenverarbeitungssystem und Verfahren zum Betreiben dieses Systems | |
DE69222060T2 (de) | Semaphore umgehung. | |
DE69327387T2 (de) | An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung | |
DE102009022151B4 (de) | Verringern von Invalidierungstransaktionen aus einem Snoop-Filter | |
DE69424767T2 (de) | Kohärente Schreibtransaktionen für Teilzeilen eines Cache-Speichers | |
DE69130580T2 (de) | Cache-Speicheranordnung | |
DE69729917T2 (de) | Cachespeicherräumungsvorrichtung und hiermit versehenes Rechnersystem | |
DE10262164B4 (de) | Computersystem mit einer hierarchischen Cacheanordnung | |
DE69421058T2 (de) | Vorrichtung und Verfahren zur Cache-Speicher Kohärenz Überprüfung mit doppelter Abhörmechanismus | |
DE69906006T2 (de) | Datenverarbeitungs-schaltung mit pufferspeicher | |
DE69127111T2 (de) | Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher | |
DE69231197T2 (de) | Verfahren und Vorrichtung für eine verbesserte Speicherarchitektur | |
DE68902193T2 (de) | Datenspeicheranordnung. | |
DE69706934T2 (de) | Rechnersystem mit Speicherung der Speicheraktualisierungsgeschichte | |
DE112005002180T5 (de) | Lösen von Cachekonflikten | |
DE112007001171T5 (de) | Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf | |
DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
DE112006003453T5 (de) | Per-Satz-Relaxation der Cache-Inklusion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |