DE69327643T2 - Cachespeichersysteme - Google Patents

Cachespeichersysteme

Info

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
Application number
DE69327643T
Other languages
English (en)
Other versions
DE69327643D1 (de
Inventor
Salim A. Shah
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Application granted granted Critical
Publication of DE69327643D1 publication Critical patent/DE69327643D1/de
Publication of DE69327643T2 publication Critical patent/DE69327643T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

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.
DE69327643T 1992-12-18 1993-11-23 Cachespeichersysteme Expired - Lifetime DE69327643T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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