DE69327643T2 - Cachespeichersysteme - Google Patents
CachespeichersystemeInfo
- Publication number
- DE69327643T2 DE69327643T2 DE69327643T DE69327643T DE69327643T2 DE 69327643 T2 DE69327643 T2 DE 69327643T2 DE 69327643 T DE69327643 T DE 69327643T DE 69327643 T DE69327643 T DE 69327643T DE 69327643 T2 DE69327643 T2 DE 69327643T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- signal
- cache
- block
- burst
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 230000015654 memory Effects 0.000 claims description 78
- 230000009849 deactivation Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 3
- 230000004913 activation Effects 0.000 claims description 2
- 238000012544 monitoring process Methods 0.000 claims description 2
- 230000003213 activating effect Effects 0.000 claims 1
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000001514 detection method Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000000034 method Methods 0.000 description 4
- 238000004883 computer application Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0879—Burst mode
-
- 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/0831—Cache 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)
Description
- Die vorliegende Erfindung betrifft Cachespeicher verwendende Computersysteme und insbesondere Mehrfachverarbeitungssysteme, bei denen jeder Prozessor seinen eigenen Cache aufweist.
- Ein Computersystem verwendet im Idealfall sehr schnelle Speicher für sämtliche Erfordernisse des vorübergehenden Speicherns. Dies ermöglicht es der Zentralverarbeitungseinheit (CPU) mit der vorgegebenen Geschwindigkeit zu arbeiten, ohne die Notwendigkeit, auf langsamere Speichervorrichtungen zu warten. Jedoch werden oft langsamere Speicher verwendet, da diese kostengünstiger sind, weniger Energie verbrauchen und auf einem gegebenen Raum mehr Speichermöglichkeit bieten als ein sehr schneller Speicher.
- Ein Merkmal der meisten Computeranwendungsprogramme ist die Neigung zu wiederholten Operationen mit denselben oder benachbarten Datenteilen. Cachespeichersysteme nutzen dieses Merkmal, indem sie Daten, auf die kürzlich zugegriffen wurde, in einem kleinen Teil eines sehr schnellen Speichers speichern, der Cachespeicher genannt wird. Aus langsameren Hauptspeichern gelesene Daten werden in dem schnelleren Cachespeicher gespeichert, so daß wenn ein Programm dieselben Daten darauffolgend verwenden muß, diese im Cachespeicher vorliegen. Somit erhöhen Cachespeichersysteme die scheinbare Geschwindigkeit von Speicherzugriffen in Computersystemen.
- Das Cachespeichersystem muß die hauptspeicheradressen nachhalten, deren zugehörige Daten in dem Cache verfügbar sind. Wenn Daten im Cache verfügbar sind, werden die Daten der CPU direkt geliefert, während auf den Hauptspeicher nicht zugegriffen wird. Dies wird als Cache-"Treffer" bezeichnet.
- Bei einem Multiprozessorsystem können sämtliche CPUs einen gemeinsamen Hauptspeicher nutzen. Darüber hinaus kann jede CPU ihren eigenen Hauptspeicher haben. Bei der letzteren Konfiguration ist es möglich, daß von einer CPU angeforderte Daten im Cache einer anderen CPU vorliegen. Um diese Tatsache nutzen zu können, d. h. um eine Speicheranforderung seitens einer anderen CPU zu erkennen und anschließend die richtigen Daten direkt zwischen Caches zu transferieren, sind spezielle Schaltungen erforderlich.
- Ein herkömmliches Cachespeichersystem, das Datenübertragungen von Cache zu Cache ermöglicht, ist in EP-A-0 0965 598 offenbart.
- Ein besonderes Problem kann auftreten, wenn eine CPU eine "Burst- Modus"-Operation verwendet. Burst-Modusoperationen werden mit Daten in einer sequentiellen Reihe von Speicherstellen durchgeführt. Anstelle des Abarbeitens eines neuen Befehls durch die CPU zum Adressieren jedes einzelnen Speicherplatzes ermöglicht die Burst- Modusoperation der CPU einen einzigen Befehl abzuarbeiten, der eine Startspeicheradresse, eine durchzuführende Operation und die Länge des Speicherblocks angibt, an dem die Operation erfolgen soll. Dies kann zu besonderen Problemen bei einem Multiprozessorsystem mit mehreren Caches führen, wenn die Startspeicheradresse für eine Burst-Modusoperation in einem Cache beginnt und in einem anderen Cache endet, oder wenn nicht sämtliche angeforderten Daten in einem bestimmten Cache enthalten sind. Darüber hinaus sind Burst- Modusoperationen strengen Zeitsteuerungsanforderungen unterwor fen, welche die Verwendung spezieller Cacheschaltungen vorschreiben.
- Es wird ein Verfahren zum Ermöglichen der Zusammenarbeit mehrerer Cachespeicher in einem Multiprozessorsystem und eine dieses Verfahren umsetzende Schaltung beschrieben. Ferner werden zusätzliche Schaltungen zum Durchführen von Burst-Modusoperationen offenbart.
- Ein Cachespeicher ist üblicherweise zum Erkennen von Speicheranforderungen seitens der CPU, mit der er verbunden ist, ausgebildet. Wird dieser Typ von Cache in einem Multiprozessorsystem verwendet, werden Speicheranforderungen anderer CPUs (d. h. mit anderen Cachespeichern verbundene CPUs) ignoriert. Jedoch kann ein mit einer CPU verbundener Cache Daten enthalten, die von einer anderen CPU angefordert werden. Die vorliegende Erfindung offenbart ein Verfahren, nach dem ein mit einer CPU verbundener Cache eine Speicheranforderung seitens einer anderen CPU erkennt, feststellt, ob es die erforderlichen Daten enthält, und anschließend auf die Speicheranfrage durch Übertragen der angeforderten Daten an den betreffenden Cache antwortet. Schaltungen zum Umsetzen dieses Verfahrens sind ebenfalls beschrieben.
- Zeitsteuerungsprobleme während Burst-Modusoperationen werden durch Schaltungen im Cache vermieden, welche die durch die Operation spezifizierten Speicheradressen schrittweise durchläuft und entscheidet, ob diese Adressen der durch den Cache angegebenen Stelle entsprechen. Sind die angeforderten Daten im Cache vorhanden, werden sie an den geeigneten Cache zur Verwendung durch die anfordernde CPU übertragen. Wenn sich die Burst-Modusadresse aus dem Adressenbereich des Caches bewegt oder nach Abschluß der Burst-Modusoperation, gibt die Cacheschaltung die Steuerung wieder ab.
- Daten, die vom Hauptspeicher zum Cache transferiert und anschließend modifiziert werden, werden durch einen Modifikationsidentifizierer identifiziert. Der Modifikationsidentifizierer gewährleistet, daß die aktualisierten Informationen im Cache leicht lokalisiert und in den Hauptspeicher zurück geschrieben werden können. Wenn Daten zwischen Caches transferiert werden, wird der Modifikationsidentifizierer geprüft und derart manipuliert, daß er die aktuellsten Informationen angibt.
- Die zugehörigen Zeichnungen zeigen als Beispiele:
- Fig. 1 - ein Multiprozessorsystem mit einem gemeinsamen Hauptspeicher und einem separaten Cache für jede CPU;
- Fig. 2 - ein Beispiel für den i dieser Erfindung verwendeten Typ von Cachespeicher;
- Fig. 3 - ein Funktionsblockschaltbild der Schaltungen, welche den Betrieb der Datenintervention(DI)-Steuerleitung steuern;
- Fig. 4 - ein Funktionsblockschaltbild der Schaltungen, welche entscheidet, wann die Datenintervention(DI)-Steuerleitung deaktiviert wird; und
- Fig. 5 - ein schematisches Diagramm eines Ausführungsbeispiels der Schaltung, die entscheidet, wann die Datenintervention(DI)-Steuerleitung deaktiviert wird.
- Fig. 1 zeigt ein typisches Mehrfachverarbeitungssystem mit einem gemeinsam genutzten Hauptspeicher 1, bei dem jede CPU 2, 6 etc. ihren eigenen Cachespeicher 3, 5 etc. hat. Bei diesem System dienen die Cachespeicher nicht nur der Erhöhung der Speicherzugriffsgeschwindigkeiten, sondern auch der Verringerung der Konkurrenz um den Zugriff auf den Hauptspeicher 1, die auf dem Hauptspeicherbus 4 vorliegt. Jede CPU 2, 6 etc. in diesem System kann üblicherweise unmittelbar nur auf ihren lokalen Cache 3, 5, etc. und nicht auf einen mit einer anderen CPU verbundenen Cache zugreifen, selbst wenn der andere Cache die von der anfordernden CPU angeforderten Daten enthält. Wenn bei der vorliegenden Erfindung jedoch beispielsweise die CPU2 vom Cache 3 Daten anfordert, die nur im Cache 5 gültig sind, kann der die von der CPU2 angeforderten Daten enthaltende Cache die Anforderung erkennen, feststellen, ob er die angeforderten Daten enthält, und diese Daten zur Verwendung durch die CPU2 an den Cache 3 übertragen.
- Fig. 2 ist ein Beispiel für eine Art von Cachespeicher, die im Rahmen der vorliegenden Erfindung verwendet werden kann. Ein Abschnitt des Cache 10, der aus 12 Wörtern 11-22 besteht, ist zu Erläuterungszwecken dargestellt. Die Wörter sind in Blöcke von jeweils vier Wörtern gruppiert. Der Block 26 besteht aus den Wörtern 11-14, der Block 27 besteht aus den Wörtern 15-18 und der Block 28 besteht aus den Wörtern 19-22. Eine Cachemarkierung weist auf jeden Block mit vier Wörtern. Die Cache-Markierung-1 31 weist auf den Block 26, die Cache-Markierung-2 32 weist auf den Block 27 und die Cache- Markierung-3 33 weist auf den Block 28. Dies wird als direktes Abbilden bezeichnet, da jede Markierung stets auf denselben Wörterblock verweist. Andere Konfigurationen, beispielsweise satz-assoziative Speicher, bei denen jede Markierung auf jeden beliebigen Block in einem Satz von Blöcken weisen kann, oder voll-assoziative Speicher, bei denen jede Markierung auf jeden Block von Wörtern verweisen kann, können ebenfalls in der vorliegenden Erfindung verwendet werden.
- Den Blöcken 26-28 sind ferner "Modifizierungsbits" 41-43 zugeordnet. Ein einem Block zugeordnetes Modifizierungsbit wird "gesetzt", um anzuzeigen, daß die Daten in diesem Block modifiziert, jedoch noch nicht in den Hauptspeicher 1 zurückkopiert wurden, wie im folgenden beschrieben.
- Daten werden zwischen dem Hauptspeicher und dem Cache in Blöcken von vier Wörtern bewegt, da eine Markierung lediglich auf einen Vier-Wort-Block verweist. Es ist möglich, einen Cachespeicher zu konstruieren, bei dem eine Markierung auf jedes Wort verweist, jedoch würde dies die Verwendung einer umfangreicheren Markierungsarray erfordern. Somit wird eine kleinere Markierungsarray verwendet und in Kauf genommen, daß Daten in Blöcken von vier Wörtern bewegt werden. Wenn beispielsweise ein Datenwort aus dem Hauptspeicher in das Cachewort 13 bewegt werden soll, müssen sämtliche Wörter 11-14 bewegt werden, da die Markierung-1 31 das Vorhandensein von Daten im gesamten Block 26 anzeigen wird.
- Daten, die im Cache modifiziert wurden, müssen anschließend zur Verwendung durch andere CPUs oder Vorrichtungen wieder in den Hauptspeicher kopiert werden. Daten, die vom Hauptspeicher in den Cache bewegt und nicht modifiziert wurden, können vom Cache verworfen werden, da die korrekten Daten bereits im Hauptspeicher existieren. Dieser Cache verwendet ein "Modifizierungsbit", um anzuzeigen, ob irgendwelche Daten im Block verändert wurden, seit sie aus dem Hauptspeicher gelesen wurden. Daher müssen nur Blöcke mit einem gesetzten Modifizierungsbit in den Hauptspeicher zurückkopiert werden. Wenn beispielsweise eines der Wörter 11-14 im Block 26 verändert wird, muß das Modifizierungsbit 41 gesetzt werden. Wenn Daten zwischen Caches bewegt werden, muß das Modifizierungsbit so manipuliert werden, daß es den korrekten Status des Blocks wiedergibt, so daß die Datenintegrität gewahrt bleibt.
- Es ist nicht erforderlich, einen Cache mit vier Wörtern pro Block zur Durchführung dieser Erfindung zu konstruieren. Es ist jedoch wichtig, die Beziehungen zwischen Markierungen, Modifizierungsbits und Wortblöcken zu würdigen, um die Erfindung vollständig verstehen zu können.
- Fig. 3 ist ein Blockschaltbild der Cacheschaltung, welche den Betrieb des Data-Intervention(DI)-Signals 100 steuert. In Fig. 3 entscheidet der Schaltungsblock 102, wann das DI-Signal 100 aktiviert wird, während der Schaltungsblock 104 entscheidet, wann das DI-Signal 100 deaktiviert wird. Die Steuerung des DI-Signals 100 basiert nicht nur auf dem Vorhandensein gewünschter Daten im Cache, sondern auch darauf, ob das Modifizierungsbit gegenwärtig gesetzt ist, ob das Modifizierungsbit durch eine bestimmte Operation gesetzt wird, ob ein ganzer Block von Daten übertragen wird, und auf den Parametern einer Burst-Modusoperation.
- Im Schaltungsblock 102 führt der Speicheranforderungserkennungsblock 110 eine "Bus-Beobachtung" aus, indem der Hauptspeicherbus 4 auf eine Speicheranforderung überwacht wird. Wenn eine Speicheranforderung durch 110 erkannt wird, wird die Adresse der Speicheranforderung durch den Anfangsadressenbereicherkennungsblock 112 decodiert. Der Block 112 entscheidet, ob die Adresse in der Speicheranforderung im von dem Cache bedienten Adressenbereich liegt. Wenn nicht, wird die Speicheranforderung ignoriert. Liegt die Adresse der Speicheranforderung innerhalb des vom Cache abgedeckten Bereichs, entscheidet der Cachetreffererkennungsblock 114, ob die angeforderten Daten im Cache verfügbar sind. Befinden sich die angeforderten Daten im Cache, wird das Modifizierungsbit der Daten vom Modifizierungsbit-Erkennungsblock 116 untersucht. Ist das Modifizierungsbit gesetzt, wodurch angegeben ist, daß die Daten im Cache den aktuellsten Wert darstellen, wird das Signal 118 an den Aktiviere-DI-Block 120 gesandt, welches des DI-Haltespeicher 122 anweist, das DI-Signal 100 zu aktivieren. Die Aktivierung des DI- Signals veranlaßt den Hauptspeicher 1, die Speicheranforderung zu ignorieren und die angeforderten Daten an den anfordernden Cache zu übertragen.
- Die Logik für das deaktivieren des DI-Signal im Schaltungsblock 104 ist der Schwerpunkt der vorliegenden Erfindung und sie ist zum effizienten Handhaben von Burst-Modusoperationen ausgelegt. Wenn der Block 110 eine Speicheranforderung erkennt, wird ein Signal 130 erzeugt und an den Speicheranforderungdecodierblock 132 und den Übereinstimmungslesesteuerdecodierblock 134 gesendet.
- Der Speicheranforderungdecodierblock 132 identifiziert die Art der auszuführenden Speicheranforderungsoperation. Das Signal 136 gibt an, ob die Operation ein Lese- oder ein Schreibvorgang (Lese-/ Schreibsignal) ist, wobei LOW einen Lesevorgang und HIGH einen Schreibvorgang angibt. Das Signal 138 ist HIGH, wenn es sich bei der Operation um "Nicht-zum-Modifizieren-Lesen" und LOW, wenn es sich bei der Operation um "Zum-Modifizieren-Lesen" handelt. Der Ausdruck "Zum-Modifizieren-Lesen" bedeutet, daß die gelesenen Daten von der anfordernden CPU modifiziert werden, wodurch angegeben ist, daß das Modifizierungsbit rückgesetzt werden sollte, da der aktuelle Wert der Variablen nunmehr im anfordernden Cache enthalten ist und somit ein vollständiger Block übertragen werden muß. Darüber hinaus wird das Signal 140 für die Burst-Modusoperation aktiviert.
- Für Burst-Modusoperationen aktiviert ein Burst-Modus-Block 142 einen Burst-Zähler 144, der Burst-Adressen 146 durch Inkrementieren der Anfangsspeicheradresse erzeugt. Der Burst-Modus-Block 142 aktiviert das Burst-Startsignal 147 während einer Burst-Anforderung und deaktiviert das Signal, wenn die Burst-Anforderung beendet ist. Wenn der reagierende Cache mit dem Liefern von Daten in Reaktion auf eine Burst-Anforderung beginnt, erzeugt er ein Anforderung- Abgearbeitet-Signal 148. Die Burst-Adresse 146 wird vom Burst- Adressenbereicherkennungsblock 150 überprüft, um festzustellen, ob die Burst-Adresse 146 innerhalb des von dem Cache bedienten Adressenbereichs liegt. Dies ist ein wesentlicher Schritt, da die An fangsadresse einer Operation im Adressenbereich des von dem Anfangsadressenbereicherkennungsblock 112 erkannten Cache liegen kann, nachfolgende Burst-Adressen 146 jedoch außerhalb des Bereichs des Cache liegen können. Liegt die Burst-Adresse 146 im Bereich, wird das Signal Im-Bereich 152 erzeugt; ansonsten wird das Signal Außerhalb-des-Bereichs 154 erzeugt, um anzugeben, daß sich die Burst-Adresse außerhalb des Adressenbereichs des Cache befindet. Befindet sich die Burst-Adresse 146 innerhalb des Bereichs, bestimmt der Cachetreffererkennungsblock 156, ob ein Cachetreffer vorliegt, und der Modifizierungsbit-Erkennungsblock 158 erzeugt das Signal 160, wenn das Modifizierungsbit für den Block, auf den zugegriffen wurde, gesetzt ist.
- Eine Anwendung der Bereichserkennungsblöcke 112 und 150 und der zugehörigen Schaltungen ist im mitanhängigen US-Patent US-A-550 2828 mit dem Titel "Reducing Memory Access in a Multi-Cache; Multiprocessing Environment" beschrieben.
- Der Übereinstimmungslesesteuerdecodierblock 134 (RMC) decodiert die beiden unteren Bits des RMC Felds. Das Signal 162 ist der Wert des RMC Bit-0 (unterstes Bit) und das Signal 164 ist der Wert des RMC Bit-1 (zweites Bit von unten). Dies sind Protokollbits, die auszuführende Maßnahmen angeben. Wenn das Bit-0 HIGH und das Bit-1 HIGH ist, kann der Zustand des Modifizierungsbits während einer Dateninterventionsoperation unverändert bleiben. Wenn andererseits das Bit-0 LOW und das Bit-1 HIGH ist, muß das Modifizierungsbit während einer Dateninterventionsoperation rückgesetzt werden, wodurch angegeben ist, daß ein voller Block während einer Leseoperation gelesen werden muß.
- Wenn der Modifizierungsbiterkennungsblock 116 das Signal 118 oder der Modifizierungsbiterkennungsblock 158 das Signal 160 erzeugt, können Daten aus dem Cache gelesen werden. Der Wörterzählblock 170 erzeugt ein Block-Ende-Signal 172, das während der Übertragung eines Blocks HIGH bleibt und am Ende eines Blocks nach LOW geht.
- Der DI-Steuerblock 200 bestimmt, wann das DI-Signal 100 deaktiviert werden soll, indem er ein Signal 178 an den DI-Deaktivierungsblock 180 sendet, um den DI-Haltespeicher 122 zu löschen. Eine Anzahl verschiedener Situationen bewirkt das Deaktivieren des DI- Signals 100 durch den DI-Steuerblock 200. Der DI-Steuerblock 200 fällt diese Entscheidung auf der Basis der Eingangssignale 100, 136; 138, 147, 148, 154, 162, 164 und 172.
- Fig. 4 ist ein Funktionsblockdiagramm des DI-Steuerblocks 200. Der Block 202 erzeugt ein Signal 204, wenn das Signal Burst-Adresse- Außerhalb-des-Bereichs 154 HIGH ist, während der Cache das DI- Signal 100 aktiviert und ein Block-Ende-Signal aktiviert ist. Der Block 206 erzeugt ein Signal 208, wenn der Cache das DI-Signal 100 aktiviert, eine Leseoperation wird durch ein einen LOW-Pegel aufweisendes Lese-/Schreibsignal 136 angegeben, das Block-Ende- Signal 172 ist LOW, die Operation ist ein Nicht-zum-Modifizierenlesen (Signal 138 ist HIGH), und das Protokoll ermöglicht es, das Modifizierungsbit unverändert zu belassen, wie durch das RMC Bit-0 162 mit LOW-Pegel und das RMC Bit-1 164 mit HIGH-Pegel angegeben. Der Block 210 erzeugt das Signal 212, wenn das Lese-/Schreibsignal 136 LOW ist, um eine Leseoperation anzugeben. Das RMC BIT- 0 162 ist LOW und das RMC Bit-1 164 ist HIGH, um anzugeben, daß das Modifizierungsbit nicht rückgesetzt werden muß, das Burst-Anforderungssignal 148 ist LOW, um anzugeben, daß die Burst-Anforderung beendet ist, und die Anforderung-Abgearbeitet-Leitung 148 ist HIGH. Wenn eines der Signale 204, 208 oder 212 HIGH ist, erzeugt der ODER-Block 214 das Signal 178, um das DI-Signal 100 zu deaktivieren.
- Fig. 5 ist ein detailliertes schematisches Diagramm eines Ausführungsbeispiels der Schaltung im DI-Steuerungsblock 200, welche die Blöcke 202, 206, 210 und 214 umfaßt.
- Die Schaltung in Block 202 arbeitet wie folgt: das Außerhalb-des- Bereichs-Signal 154 wird vom Inverter 220 invertiert und mit dem Block-Ende-Signal 172 im ODER-Gatter 222 kombiniert, um das Signal 224 zu erzeugen. Wenn das Block-Ende-Signal 172 LOW ist, wodurch angezeigt ist, daß ein vollständiger Block gesendet wurde, und das Außerhalb-Des-Bereichs-Signal 154 HIGH ist, wodurch angegeben ist, daß die aktuelle Datenanforderung außerhalb des Cachebereichs liegt, geht der Ausgang des ODER-Gatters 224 nach LOW, wodurch der Ausgang eines NAND-Gatters 226 HIGH wird, um das DI-Signal rückzusetzen.
- Die Schaltung in Block 206 arbeitet wie folgt:
- Das RMC Bit-0 162 und das RMC Bit-1 164 werden im NAND-Gatter 230 kombiniert, um das Signal 232 zu erzeugen, das mit dem Lese-/ Schreibsignal 136 im ODER-Gatter 234 kombiniert wird, um das Signal 236 zu erzeugen. Das Signal 236 wird im NAND-Gatter 238 mit dem Nicht-zum-Modifizieren-Lesen-Signal 138 kombiniert, um das Signal 240 zu erzeugen. Das Block-Ende-Signal 172 wird vom Inverter 242 invertiert, um das Signal 244 zu erzeugen, das mit dem Signal 240 und dem DI-Signal 100 im UND-Gatter 246 zum Erzeugen des Signals 208 kombiniert wird.
- Wie aus Fig. 5 ersichtlich, wird, wenn das Signal 138 LOW ist, wodurch eine Lesen-zum-Modifizieren-Operation angegeben wird, der Ausgang des NAND-Gatters 238 auf HIGH gebracht, wodurch ein HIGH-Ausgang des Gatters 246 erzeugt wird, wenn ein vollständiger Block gelesen ist. Wenn alternativ das RMC Bit-0 und das RMC Bit-1 jeweils HIGH sind, wenn das Lese-/Schreibsignal 136 LOW ist, so geht der Ausgang des ODER-Gatters 234 nach LOW, wodurch der Ausgang des NAND-Gatters 238 nach LOW geht. In beiden Fällen wird das DI-Signal am Ende eines Blocks rückgesetzt.
- Die Schaltung in Block 210 arbeitet folgendermaßen:
- Normalerweise ist das Burst-Anforderungssignal 147 LOW, ebenso wie das Anforderung-Abgearbeitet-Signal 148. Das Burst-Anforderungssignal wird invertiert und durch den Haltespeicher 270 gespeichert, wodurch der FET 274 ausgeschaltet wird. Das LOW Signal 148 schaltet den FET 284 ab, wodurch die Leitung 276 floatet.
- Während einer Burst-Anforderung geht das Signal 147 nach HIGH und wird vom Haltespeicher 270 gespeichert und invertiert, wodurch das Signal 272 auf LOW gebracht wird, wodurch wiederum der Feldeffekttransistor (FET) 274 gegattert wird, um ein HIGH Signal am Eingang 276 des invertierenden Haltespeichers 278 zu erzeugen, wodurch das Signal 280 auf LOW gebracht wird. Dies bringt den Ausgang des UND-Gatters 286 auf LOW.
- Wenn der Cache auf die Datenanforderung reagiert, aktiviert er das Signal 148, wodurch der FET 282 eingeschaltet wird. Nachdem das Burst-Anforderungssignal 147 nach LOW zurückgekehrt ist, wird der Haltespeicher 278 durch die Reihenkombination der FET 282 und 284 rückgesetzt. Dadurch wird der Ausgang 280 des Haltespeichers 278 auf HIGH gebracht.
- Handelt es sich bei der Operation um ein Lesen-zum-Modifizieren, ist das Signal 138 LOW, wodurch der Ausgang des Gatters 286 LOW ist. Wenn es sich bei der Operation um einen Schreibvorgang handelt, wird der Ausgang des Gatters 286 über das Gatter 264 auf LOW gebracht. Wenn die RMC Bits ein Rücksetzen des Modifizierungsbits erfordern, wird das Gatter 286 durch den Ausgang des Gatters 264 deaktiviert. Wenn andererseits die Signale 138, 136, 162 und 164 angeben, daß ein Lesevorgang erfolgt und das Modifizierungsbit nicht rückgesetzt werden muß, werden die Signale 138 und 266 an das UND-Gatter 286 auf HIGH gesetzt. Geht das Signal 280 nach HIGH, wodurch angegeben wird, daß eine Anforderung abgearbeitet wurde und gegenwärtig keine Burst-Anforderung vorliegt, geht der Ausgang 212 des Gatters 286 nach HIGH, wodurch das DI-Signal rückgesetzt wird. Es ist ersichtlich, daß diese Operation erfolgt, nachdem eine Burst-Anforderung gestellt wurde, wobei DI rückgesetzt wird, sobald die Burst-Anforderung nicht mehr vorliegt, da keine Notwendigkeit der Übertragung eines gesamten Blocks vorliegt, und daß die Operation erfolgt, wenn keine Burst-Anforderung vorliegt. Im letzteren Fall wird DI rückgesetzt, nachdem ein einzelnes Datenwort übertragen wurde.
- Die Schaltung in Block 214 arbeitet wie folgt:
- Die Signale 204, 208 und 212 werden im NOR-Gatter 290 kombiniert, um ein Signal 178 zu erzeugen. Das Auftreten eines von den Blöcken 202, 206 oder 210 zum Erzeugen der Signale 204, 208 oder 212 bewirkt den Übergang des Signals 178 von HIGH nach LOW und somit das Deaktivieren des DI-Signals 100.
- Es sei darauf hingewiesen, daß dem Fachmann zahlreiche Wege offenstehen, die Dateninterventionsfunktion einzusetzen. An dem Ausführungsbeispiel können zahlreiche Veränderungen vorgenommen werden, ohne den in den nachfolgenden Patentansprüchen beschriebenen Rahmen der Erfindung zu verlassen.
Claims (6)
1. Cachespeichersystem mit:
mehreren Kombinationen (2/3; 5/6) aus Cachespeicher und
Zentralverarbeitungseinheit (CPU), wobei jede der Kombinationen (2/3; 5/6)
mindestens einen Cachespeicher (3, 5) und eine CPU (2, 6) aufweist;
wobei jeder Cachespeicher (3, 5) Daten in Multi-Wortblöcken (41,
42, 43) speichert, wobei jedem Block (41, 42, 43) ein Indikator (31,
32, 33) zugeordnet ist, der modifizierte oder nicht modifizierte Daten
anzeigt;
einem gemeinsamen Hauptspeicher (1), der mit sämtlichen
Kombinationen (2/3; 5/6) durch einen Speicherbus (4) verbunden ist, so daß
er von den Kombinationen (2/3; 5/6) gemeinsam genutzt werden
kann;
wobei jede der Kombinationen (2/3; 5/6) Einrichtungen zum
Anfordern von Daten aus dem gemeinsamen Speicher (1) über den
Speicherbus (4) aufweist, so daß sie eine anfordernde Kombination
wird;
dadurch gekennzeichnet, daß jede der Kombinationen (2/3; 5/6)
aufweist:
Einrichtungen (102) zum Überwachen von Anforderungen anderer
Kombinationen auf dem Speicherbus (4) und, falls die angeforderten
Daten im eigenen Cache vorhanden sind, zum Einleiten einer
Dateninterventionsoperation durch Aktivieren eines
Dateninterventions
signals (100), um den Zugriff auf den Hauptspeicher (1) zu
unterbrechen und eine antwortende Kombination zu werden; und
Einrichtungen (104) zum Deaktivieren des Dateninterventionssignals
(100), um die Dateninterventionsoperation am Ende einer
Anforderung zu beenden, wenn der mit den angeforderten Daten verbundene
Indikator (31, 32, 33) nicht verändert werden soll, und nach dem
Auslesen eines vollständigen Datenblocks zu beenden, wenn der mit
den angeforderten Daten verbundene Indikator (31, 32, 33)
verändert werden soll.
2. Cachespeichersystem nach Anspruch 1, bei dem jeder Cache (3,
5) eine Einrichtung zum Antworten auf eine Burst-Anforderung durch
Übertragen sequentieller Daten bis zum Ende der Burst-Anforderung
aufweist, und die Deaktivierungseinrichtung eine Einrichtung (150)
zum Empfangen eines Signals aufweist, das angibt, daß zum
Antworten auf eine fortdauernde Burst-Anforderung erforderliche Daten
außerhalb des Cachespeicherbereichs sind, und zum Deaktivieren des
Dateninterventionssignals in Reaktion darauf:
3. Cachespeichersystem nach Anspruch 1, bei dem die
Deaktivierungseinrichtung (104) eine Einrichtung (200) zum Empfangen eines
Lesen-zum-Modifizieren-Signals (138) aufweist, das angibt, daß eine
anfordernde Kombination die angeforderten Daten modifiziert, und,
in Reaktion darauf, zum Deaktivieren des Dateninterventionssignals
(100) erst nach dem Lesen eines vollständigen Datenblocks (41, 42,
43).
4. Cachespeichersystem nach Anspruch 3, bei dem die
Deaktivierungseinrichtung (104) ferner eine Einrichtung (134) zum Empfangen
eines Protokollsignals aufweist, das angibt, daß der Indikator (31, 32,
33) nach einer Dateninterventionsoperation verändert werden soll,
und, in Reaktion darauf, zum Deaktivieren des
Dateninterventionssignals (100) erst nach dem Lesen eines vollständigen Datenblocks
(41, 42, 43).
5. Cachespeichersystem nach Anspruch 4, bei dem die
Deaktivierungseinrichtung (104) eine Burst-Einrichtung (200) zum Empfangen
eines Burst-Anforderungssignals (147), zum Aufrechterhalten des
Dateninterventionssignals (100) während des Anliegens des Burst-
Anforderungssignals (147) und zum Deaktivieren des
Dateninterventionssignals (100) nach dem Deaktivieren des
Burst-Anforderungssignals (147) aufweist, und zwar nur bei Nichtvorhandensein des
Lesen-zum-Modifizieren-Signals (138) und des Protokollsignals.
6. Cachespeichersystem nach Anspruch 5, bei dem die
Burst-Einrichtung (200) einen Haltespeicher zum Speichern des
Burst-Anforderungssignals (147) und eine Einrichtung aufweist, die den
Haltespeicher nur bei einer Deaktivierung des Burst-Anforderungssignals
(147) in Kombination mit einer Aktivierung eines Signals zurücksetzt,
das die Abarbeitung einer Anforderung angibt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US99300392A | 1992-12-18 | 1992-12-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69327643D1 DE69327643D1 (de) | 2000-02-24 |
DE69327643T2 true DE69327643T2 (de) | 2000-08-31 |
Family
ID=25538993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69327643T Expired - Lifetime DE69327643T2 (de) | 1992-12-18 | 1993-11-23 | Cachespeichersysteme |
Country Status (4)
Country | Link |
---|---|
US (1) | US5586298A (de) |
EP (1) | EP0602805B1 (de) |
JP (1) | JPH06222994A (de) |
DE (1) | DE69327643T2 (de) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5790892A (en) * | 1995-09-29 | 1998-08-04 | International Business Machines Corporation | Information handling system for modifying coherency response set to allow intervention of a read command so that the intervention is not allowed by the system memory |
US5787470A (en) * | 1996-10-18 | 1998-07-28 | At&T Corp | Inter-cache protocol for improved WEB performance |
US5996049A (en) * | 1997-04-14 | 1999-11-30 | International Business Machines Corporation | Cache-coherency protocol with recently read state for data and instructions |
US6195729B1 (en) * | 1998-02-17 | 2001-02-27 | International Business Machines Corporation | Deallocation with cache update protocol (L2 evictions) |
US7475190B2 (en) * | 2004-10-08 | 2009-01-06 | International Business Machines Corporation | Direct access of cache lock set data without backing memory |
US8332592B2 (en) * | 2004-10-08 | 2012-12-11 | International Business Machines Corporation | Graphics processor with snoop filter |
US7392350B2 (en) * | 2005-02-10 | 2008-06-24 | International Business Machines Corporation | Method to operate cache-inhibited memory mapped commands to access registers |
US7467204B2 (en) * | 2005-02-10 | 2008-12-16 | International Business Machines Corporation | Method for providing low-level hardware access to in-band and out-of-band firmware |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4503497A (en) * | 1982-05-27 | 1985-03-05 | International Business Machines Corporation | System for independent cache-to-cache transfer |
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 |
DE3728862A1 (de) * | 1987-08-28 | 1989-03-09 | Siemens Ag | Anordnung zur verwaltung von daten und adressen in einem zwischen einem zentralprozessor und einem hauptspeicher geschalteten pufferspeicher |
US5185878A (en) * | 1988-01-20 | 1993-02-09 | Advanced Micro Device, Inc. | Programmable cache memory as well as system incorporating same and method of operating programmable cache memory |
US4939641A (en) * | 1988-06-30 | 1990-07-03 | Wang Laboratories, Inc. | Multi-processor system with cache memories |
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 |
US5265235A (en) * | 1990-11-30 | 1993-11-23 | Xerox Corporation | Consistency protocols for shared memory multiprocessors |
US5335335A (en) * | 1991-08-30 | 1994-08-02 | Compaq Computer Corporation | Multiprocessor cache snoop access protocol wherein snoop means performs snooping operations after host bus cycle completion and delays subsequent host bus cycles until snooping operations are completed |
-
1993
- 1993-11-23 DE DE69327643T patent/DE69327643T2/de not_active Expired - Lifetime
- 1993-11-23 EP EP93309309A patent/EP0602805B1/de not_active Expired - Lifetime
- 1993-12-17 JP JP5317730A patent/JPH06222994A/ja not_active Withdrawn
-
1995
- 1995-06-06 US US08/467,896 patent/US5586298A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69327643D1 (de) | 2000-02-24 |
EP0602805B1 (de) | 2000-01-19 |
US5586298A (en) | 1996-12-17 |
EP0602805A1 (de) | 1994-06-22 |
JPH06222994A (ja) | 1994-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68923403T2 (de) | Verfahren und Anordnung zur Adressierung eines Seitenmodus-Speichers in einem Computersystem. | |
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 | |
DE68910391T2 (de) | Verfahren zum Speicherdatenzugriff. | |
DE69319763T2 (de) | Verfahren und Gerät zur Durchführung eines Busarbitrierungsprotokolls in einem Datenverarbeitungssystem | |
DE69329080T2 (de) | Cache-Speicher | |
DE69132186T2 (de) | Cache-Speicherverwaltungsanordnung | |
DE69203842T2 (de) | Speichersteuerungsvorrichtung mit Snoop-Mechanismus. | |
DE69323790T2 (de) | Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem | |
DE69834739T2 (de) | Ausgleichen von daten die zwischen verschiedenen leitern fliessen die auf unterschiedlichen frequenzen operieren | |
DE2415900C3 (de) | Rechenautomat mit mehreren mit je einem Vorratsspeicher versehenen Rechenanlagen | |
DE69626054T2 (de) | Verfahren zur Priorisierung und Behandlung von Fehlern in einem Rechnersystem | |
DE69228679T2 (de) | Speicher, speichersteuerungsvorrichtung und speichersteuerungsverfahren zur anwendung mit einem copy-back-cachespeichersystem | |
DE68924306T2 (de) | Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern. | |
DE2241257C3 (de) | Datenverarbeitende Anlage | |
DE68902193T2 (de) | Datenspeicheranordnung. | |
DE68923944T2 (de) | RAM mit doppelten Ein/Ausgängen. | |
DE69032276T2 (de) | Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems | |
DE69031411T2 (de) | Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff | |
DE69706934T2 (de) | Rechnersystem mit Speicherung der Speicheraktualisierungsgeschichte | |
DE69625486T2 (de) | Speichersteuerung zur nicht sequentiellen ausführung von schreibbefehlen | |
DE69109803T2 (de) | Verfahren und Vorrichtung zur Aufrechterhaltung der Integrität eines Cachespeichers. | |
DE3724730A1 (de) | Cache-steuereinrichtung | |
DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
DE3687867T2 (de) | Mikrorechner. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |