DE3689488T2 - Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher. - Google Patents

Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher.

Info

Publication number
DE3689488T2
DE3689488T2 DE3689488T DE3689488T DE3689488T2 DE 3689488 T2 DE3689488 T2 DE 3689488T2 DE 3689488 T DE3689488 T DE 3689488T DE 3689488 T DE3689488 T DE 3689488T DE 3689488 T2 DE3689488 T2 DE 3689488T2
Authority
DE
Germany
Prior art keywords
memory
data
address
cache
bus
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
DE3689488T
Other languages
English (en)
Other versions
DE3689488D1 (de
Inventor
Kin Ling Cheung
Jeffrey William Einarson
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.)
Samsung Electronics Co Ltd
Original Assignee
Wang Laboratories 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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=24829145&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE3689488(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Wang Laboratories Inc filed Critical Wang Laboratories Inc
Publication of DE3689488D1 publication Critical patent/DE3689488D1/de
Application granted granted Critical
Publication of DE3689488T2 publication Critical patent/DE3689488T2/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/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
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)

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 Erfindung betrifft in Digitalcomputersystemen verwendete Speichersysteme und spezieller Speichersysteme, die Hochgeschwindigkeits-Datencaches enthalten.
  • Während CPUs schneller und schneller geworden sind, wurde die Leistung von Computersystemen oftmals begrenzt durch die Zeitmenge, die benötigt wird, um die Speicherzugriffe des Holens von Daten vom Speicher und des Schreibens von Daten in den Speicher auszuführen. Um die Speicherzugriffe zu beschleunigen, benutzt der bekannte Stand der Technik hierarchische Speicher. An der Spitze der Hierarchie steht eine kleine Menge von schnellem, teuerem Speicher; am unteren Ende steht eine große Menge von langsamem, billigem Speicher. Zum Beispiel kann ein Computersystem mit virtuellem Speicher drei Speicherebenen haben; einen Hochgeschwindigkeitscache, der Kopien von Daten enthält, auf die gegenwärtig durch die CPU zugegriffen wird, einen Hauptspeicher, der Kopien von Daten im Cache und zusätzlich Kopien von Daten in Speicherplätzen enthält, die nahe an denen sind, welche die Daten enthalten, auf die gegenwärtig zugegriffen wird, und einen oder mehrere Plattenlaufwerke, die alle Daten enthalten, die gegenwärtig der CPU zur Verfügung stehen. Während ein Programm auf Daten zugreift, kopiert das Computersystem typischerweise Seiten, die die Daten, auf die zugegriffen wird, enthalten, vom Plattenlaufwerk in den Hauptspeicher und einzelne Datenelemente vom Hauptspeicher in den Cache. Sobald die meisten der für die Programmausführung benötigten Daten im Cache sind, bestimmt nicht mehr die Zeit, die benötigt wird, um Daten von der Platte oder dem Hauptspeicher zu holen, sondern vielmehr die Zeit, die benötigt wird, um Daten vom Cache zu holen, die Geschwindigkeit, mit der die CPU Daten verarbeiten kann. Natürlich muß das Computersystem, wenn ein Speicherzugriff Daten im Cache verändert, sicherstellen, daß die Daten, von denen der Inhalt des Caches kopiert wurde, im Hauptspeicher und auf der Platte entsprechend verändert werden. Auf ähnliche Weise müssen, wenn ein durch einen anderen Teil des Systems, zum Beispiel ein Ein-/Ausgabegerät ausgeführter Speicherzugriff den Inhalt eines Teils des Speichers, der im Cache enthalten ist, verändert, dann auch die Kopien im Cache verändert werden.
  • Wie man aus dem obigen Überblick über hierarchische Speichersysteme ersehen kann, ist das Hauptproblem beim Entwurf eines Caches, die Konsistenz zwischen den Daten im Cache und den Daten in anderen Ebenen der Hierarchie zu erhalten. Fig. 1 zeigt, auf welche Weise der bekannte Stand der Technik das Konsistenzproblem löst. Fig. 1 ist ein Blockschaltbild eines digitalen Computersystems, das einen Cache der Art enthält, wie er in US- Patent Nr. 4.445.177, Bratt et al., Digital Data Processing System . . . , erteilt 24. April 1984, beschrieben ist. Das digitale Datenverarbeitungssystem von Fig. 1 enthält eine CPU 101, einen Cache 103 und einen Hauptspeicher 117. Wie man aus den Verbindungen zwischen der CPU 101, dem Cache 103 und dem Speicher 117 in Fig. 1 sehen kann, finden alle Datenübertragungsvorgänge zwischen der CPU 101 und dem Speicher 117 über den Cache 103 statt. Wenn die CPU 101 Daten liest und eine Kopie der Daten nicht im Cache 103 verfügbar ist, verschafft sich Cache 103 zuerst die Daten vom Speicher 117 und liefert sie dann an die CPU 101. Auf ähnliche Weise schreibt, wenn die CPU 101 Daten schreibt, sie die Daten in den Cache 103, der dann die Daten im Speicher 117 aktualisiert.
  • Wenn wir nun den Cache 103 betrachten, besteht Cache 103 aus zwei Hauptbestandteilen: Speicher 107 und Steuerung 105. Der Speicher 107 enthält die im Cache gespeicherten Kopien und die Information, die zum Betrieb des Caches benötigt wird. Der Inhalt des Speichers 107 ist als Reihe von Registern 108 angeordnet. Zu jedem Zeitpunkt entspricht jedes Register 108 einer Adresse im Speicher 117 und kann eine Kopie der Daten an dieser Adresse im Speicher 117 enthalten. Zu verschiedenen Zeitpunkten kann ein Register 108 verschiedenen Adressen im Speicher 117 entsprechen. Jedes Register 108 enthält ein Gültigkeitsbit (validity bit) V 109, das anzeigt, ob die Kopie der Daten, die das Register enthält, gültig ist, ein Markierungsfeld 111, das dazu dient, das Register 108 mit der Speicheradresse, der es gegenwärtig entspricht, in Beziehung zu setzen, ein Datenfeld 113, das, wenn es gültig ist, eine Kopie der Daten an der entsprechenden Adresse im Speicher 117 enthält, und ein Inkonsistenzbit (dirty bit) D 115, das anzeigt, ob das Datenfeld 113 geändert worden ist, seitdem es auf den Speicher 117 zurückgeschrieben worden ist.
  • Die Steuerung 105 steuert den Betrieb das Caches abhängig vom Inhalt von V 109, Markierungsfeld 111 und Inkonsistenzbit D 115 und von Adreß- und Steuersignalen von der CPU und Ein-/Ausgabevorrichtungen und erzeugt weiterhin eigene Steuersignale, die den Betrieb von CPU 101, Cache 103 und Speicher 117 synchronisieren. Wenn die CPU 101 einen Speicherzugriff ausführt, erreichen die Adresse der Daten, auf die zugegriffen wird, und ein die Art des Zugriffs kennzeichnendes Steuersignal die Steuerung 105. Die Steuerung 105 verwendet einen Teil der Adresse, um ein Register 108 auszuwählen; wenn das Markierungsfeld 111 in diesem Register 108 denselben Wert hat wie der Rest der Adresse, entspricht das Register 108 dem durch die Adresse angegebenen Platz im Speicher 117.
  • Was als nächstes geschieht, hängt von der durch das Steuersignal angezeigten Art des Zugriffs ab. Wenn der Zugriff ein Lesezugriff ist und v 109 im Register 108 anzeigt, daß das Register eine gültige Kopie der Daten an dem durch die Adresse angezeigten Platz im Speicher 117 enthält, wird der Inhalt des Datenfeldes 113 an die CPU 101 ausgegeben; wenn der Zugriff ein schreibender Zugriff ist, werden die Daten von der CPU 101 in das Datenfeld 113 geschrieben und das Inkonsistenzbit 115 gesetzt, um anzuzeigen, daß das Datenfeld 113 sich geändert hat. In dieser Situation muß die Steuerung 105 den Wert des Datenfeldes 113 zurück an den Platz im Speicher 117 schreiben, die durch die Adresse spezifiziert ist, und das Inkonsistenzbit 115 zurücksetzen.
  • Wenn das Markierungsfeld 111 im durch die Adresse von der CPU adressierten Register 108 nicht den gleichen Wert hat wie der Rest der Adreßbits, oder wenn Bit V 109 anzeigt, daß das Datenfeld 113 im Register 108 ungültig ist, enthält der Cache keine Kopie der Daten an dem durch die Adresse angegebenen Platz und es ergibt sich ein Cache-Fehlschlag. Wenn der Fehlschlag bei einem Schreibzugriff stattfindet, erzeugt der Cache 103 einen Eintrag für die Adresse, indem er die gerade geschriebenen Daten in das Datenfeld 113 des durch die Adresse spezifizierten Registers 108 schreibt, den Rest der Adresse in das Markierungsfeld 111 dieses Registers 108 schreibt, V 109 setzt, um die Gültigkeit anzuzeigen, und D 115 setzt, um anzuzeigen, daß sich der Wert des Datenfeldes 113 geändert hat. Die Steuerung 105 schreibt dann den Inhalt des Datenfeldes 113, wie oben beschrieben, in den Speicher 117.
  • Falls der Fehlschlag während eines Lesezugriffs stattfindet, reagiert die Steuerung 105 auf den Fehlschlag, indem sie ein Steuersignal für die CPU 101 erzeugt, das bewirkt, daß die CPU 101 wartet, bis es einen gültigen Eintrag im Cache gibt. Dann liefert sie die Adresse und ein Steuersignal, das einen Lesezugriff auf den Speicher 117 anzeigt; welcher mit den an dem durch die Adresse spezifizierten Platz enthaltenen Daten antwortet. Die Steuerung 105 findet dann das passende Register 108 für die Daten, lädt die Daten in das Datenfeld 113, den Rest der Adresse in das Markierungsfeld 111, setzt V 109, um einen gültigen Eintrag anzuzeigen, und setzt Bit D 115 zurück. Darauf versucht die CPU 101 wiederum den Speicherzugriff. Weil die Daten jetzt im Cache vorhanden sind, hat sie Erfolg und die Daten werden, wie oben beschrieben, ausgegeben.
  • Ein anderes Konsistenzproblem tritt auf, wenn das Computersystem, das den Cache 103 enthält, es Ein-/Ausgabevorrichtungen erlaubt, die CPU 101 zu umgehen und Daten direkt in den Speicher 117 zu schreiben. In diesem Fall muß, wenn ein Schreibzugriff der Ein-/Ausgabe Daten im Speicher 117, von denen eine Kopie im Cache 103 gespeichert ist, verändert, eine Änderung im Cache 103 vorgenommen werden. Im Cache 103 der Fig. 1 erhält die Steuerung 105 die Adresse bei jeder Schreiboperation der Ein/Ausgabe, und wenn es einen wie oben beschriebenen Treffer gibt, setzt die Steuerung 105 V 109 im durch die Adresse spezifizierten Register 108, um zu kennzeichnen, daß der Inhalt des Datenfeldes 113 ungültig ist. Wie oben beschrieben, ergibt sich beim nächsten Zugriff auf den Platz im Speicher, welcher die Daten von der Ein-/Ausgabe erhalten hat, ein Fehlschlag, und der richtige Wert der Daten wird in den Cache 103 geschrieben.
  • US-A-4.141.067 beschreibt ein Multiprozessorsystem mit gemeinsamem Hauptspeicher, wobei jeder Prozessor einen Cache- Speicher hat und wobei der Hauptspeicher und die Caches einen gemeinsamen, zeitverschachtelten asynchronen Speicherbus haben, und löst das Problem, daß die beschränkte Bandbreite des Busses einen begrenzenden Faktor für die Anzahl der Prozessoren bildet, die sich effizient den Speicher teilen können. Die Lösung umfaßt, daß jeder Prozessor über den Cache mit dem gemeinsamen Bus zum Hauptspeicher in Verbindung steht.
  • Der Cache speichert Kopien gewisser im Speicher gespeicherter Daten und gibt, im Falle eines Treffers, als Antwort auf eine Adresse eine Kopie aus. Der Cache enthält ein Latch, das mit dem Datenbus verbunden ist, um vom Datenbus gelieferte Daten zu speichern, und ist mit einem Bus verbunden, um Daten an die CPU zu übertragen.
  • Daher sind nach dem bekannten Stand der Technik Datencaches kennzeichnend für relativ große und teuere digitale Computersysteme. Ein Grund dafür waren die hohen Kosten für Hochgeschwindigkeitsspeicher; ein anderer waren die hohen Kosten der für einen solchen Cache benötigten komplexen Steuerlogik. Der technische Fortschritt hat die Kosten für Hochgeschwindigkeitsspeicher verringert, aber es gibt keine entsprechende Verringerung in den Kosten für die Bestandteile der Steuerlogik. Eine Vereinfachung der Steuerlogik ist deswegen ein vorrangiges Problem beim Entwurf von Caches. Eine Lösung dieses Problems wird durch die Erfindung bereitgestellt.
  • Es ist daher ein Ziel der Erfindung, wie sie in den anhängenden Ansprüchen definiert ist, einen verbesserten Cache-Speicher zur Verfügung zu stellen, der automatisch aktualisiert wird, immer wenn Daten in den Speicher geschrieben werden, das heißt, sowohl bei Schreibzugriffen von der Ein-/Ausgabe auf den Speicher als auch bei Schreibzugriffen von der CPU auf den Speicher, und wobei die CPU Lesezugriffe ausführen kann, während der Speicher Daten von der Ein-/Ausgabe erhält, und der einfach ist.
  • Im Speichersystem der Erfindung sind ein Speicher und ein Cache beide mit einer Vorrichtung zur Datenübertragung wie zum Beispiel einem Bus verbunden. Die Plätze im Cache entsprechen bestimmten Plätzen im Speicher. Jeder Platz im Cache, der einem Platz im Speicher entspricht, enthält eine Kopie des gegenwärtig an diesem Platz im Speicher gespeicherten Wertes. Sowohl der Speicher als auch der Cache sprechen auf ein Speicherschreibsignal, eine Adresse und Daten auf der Vorrichtung zur Datenübertragung an. Der Speicher schreibt die Daten auf der Vorrichtung zur Datenübertragung an den durch die Adresse spezifizierten Platz im Speicher, und der Cache schreibt die Daten, wenn der Platz im Speicher einen entsprechenden Platz im Cache hat, in den Platz, der dem Platz im Speicher entspricht. Dadurch wird, immer wenn Daten in den Speicher geschrieben werden, der Cache automatisch aktualisiert.
  • Weitere Eigenschaften der Erfindung umfassen eine vereinfachte Struktur, die den Gebrauch von Inkonsistenz- oder Gültigkeitsbits unnötig macht, ein automatisches Aktualisieren des Caches bei Schreibzugriffen auf den Speicher sowohl von der Ein/Ausgabe als auch von der CPU und eine Logik, die es der CPU erlaubt, den Cache zu lesen, während die Ein-/Ausgabe einen Schreibzugriff auf den Speicher ausführt. Ein Vorteil des vereinfachten Caches der Erfindung ist dessen vereinfachte Cache- Vorrichtung, welche die automatische Aktualisierungsvorrichtung umfaßt und welche es darüberhinaus der CPU ermöglicht, Lesezugriffe auszuführen, während eine Ein-/Ausgabevorrichtung auf den Hauptspeicher schreibt.
  • Die Erfindung wird von Fachleuten auf dem Gebiet nach Bezugnahme auf die ausführliche Beschreibung einer bevorzugten Ausführungsform und die Zeichnung verstanden werden, worin:
  • Fig. 1 ein Blockschaltbild eines digitalen Computersystems, das einen Datencache nach dem bekannten Stand der Technik beinhaltet, ist;
  • Fig. 2 ein Blockschaltbild eines digitalen Computersystems, das den Datencache gemäß der Erfindung beinhaltet, ist;
  • Figs. 3 und 3A detaillierte Blockschaltbilder einer bevorzugten Ausführungsform des Datencaches nach der Erfindung sind.
  • In der Zeichnung verwendete Bezugszeichen haben drei Ziffern. Die Hunderterstelle ist die Nummer der Figur, in der das durch das Bezugszeichen bezeichnete Objekt zuerst auftritt; so bezieht sich Bezugszeichen 215 auf ein in Fig. 2 gezeigtes Objekt.
  • BESCHREIBUNG EINER BEVORZUGTEN AUSFÜHRUNGSFORM 1. Überblick über die Erfindung: Fig. 2
  • Fig. 2 ist ein Blockschaltbild eines digitalen Computersystems, das den Cache der vorliegenden Erfindung enthält. Fig. 2 hat drei Hauptbestandteile: CPU 201, Cache 203 und Speicher 215. CPU 201, Cache 203 und Speicher 215 sind alle mit einem Adreßbus ADDR 225 verbunden, der auch Adressen 227 von der Ein-/Ausgabe erhält. Die CPU 201 liefert weiterhin CPU-Speicherzugriffssignale CPU MEM OP 233, die Speicherzugriffe zum Cache 203 und zum Speicher 215 anzeigen. Die Datenübertragung zur und von der CPU 201 wird über einen Bus MDO 221 und einen Bus MDI 223 bewerkstelligt. Die CPU 201 erhält Daten über den Bus MDO 221 und gibt Daten über MDI 223 aus; MDI 223 erhält weiterhin Daten von und liefert Daten an die Ein-/Ausgabevorrichtungen I/O 217 und ist mit dem Bus MB 214 verbunden, der die Datenein- und Datenausgabe für den Speicher 215 darstellt. Die Ein-/Ausgabevorrichtungen I/O 217 liefern zusätzlich Ein-/Ausgabe-Speicherzugriffssignale I/O MEM OP 235 an den Speicher 215 und den Cache 203. Eine Buszuteilungs-Steuerlogik, die nicht Bestandteil der Erfindung ist, stellt sicher, daß zu jedem Zeitpunkt nur eine der Vorrichtungen CPU 201, Speicher 215 und Ein-/Ausgabevorrichtungen I/O 217 Daten auf MDI 223 schreibt.
  • Der Cache 203 enthält einen Speicher 205, Steuerung 211 und Latch 213. Der Speicher 205 enthält Register 208, von denen jedes ein Markierungsfeld 209 und ein Datenfeld 207 enthält. Das Markierungsfeld 209 ist ein Bestandteil der Adresse desjenigen Platzes im Speicher 215, von dessen Daten sich im Datenfeld 207 eine Kopie befindet. Das Markierungsfeld 209 bestimmt daher, welche Adresse im Speicher 215 durch ein gegebenes Register 208 dargestellt wird. Zu jedem Zeitpunkt entspricht jedes Register 208 einer einzigen Adresse im Speicher 215, aber ein Register 208 kann zu verschiedenen Zeitpunkten verschiedenen Adressen im Speicher 215 entsprechen. Das Datenfeld 207 wird über den Bus MDO 221 an den Speicher 205 ein- und davon ausgegeben; die Eingabe erfolgt von MB 214 über das Latch 213, und die Ausgabe erfolgt an die CPU 201. Die Markierungsfelder 209 werden über den Adreßbus ADDR 225 eingegeben.
  • Die Steuerung 211 erhält Adressen vom Adreßbus ADDR 225, Markierungen vom Markierungsfeld 209 und Speicherzugriffssignale MEM OP 233 und 235 von CPU 201 und Ein-/Ausgabevorrichtungen I/O 217; sie steuert den Betrieb des Speichers 205 und gibt ein Treffersignal HIT 229 an den Speicher 215 und ein Signal EXT 231 an die CPU 201 aus. Die Steuerung des Speichers 205 umfaßt, daß der Speicher 205 veranlaßt wird, eine Kopie der Daten auszugeben, wenn ein lesender Speicherzugriff durch die CPU 201 ausgeführt wird und der Speicher 205 eine Kopie der Daten an dem durch die Adresse spezifizierten Speicherplatz enthält, und daß der Speicher 205 veranlaßt wird, eine Kopie der Daten zu speichern, wenn die Daten durch die CPU 201 oder die Ein-/Ausgabevorrichtungen I/O 217 an einen Platz geschrieben werden, für den der Speicher 205 eine Kopie enthält, oder wenn die CPU 201 einen Lesezugriffausführt und es im Speicher 205 keine Kopie der adressierten Daten gibt. Im letzteren Fall lädt die Steuerung 211 auch das Markierungsfeld 209 mit dem Markierungsteil der Adresse der gelesenen Daten. Das Treffersignal HIT 229 und das Signal EXT 231 koordinieren den Betrieb des Speichers 215 und der CPU 201 bei einem lesenden Speicherzugriff. Das Treffersignal HIT 229 unterdrückt die Tätigkeit des Speichers 215; das Signal 229 ist aktiv, wenn eine Kopie der adressierten Daten im Speicher 205 enthalten ist; Signal EXT 231 bewirkt, daß die CPU 201 wartet, bis Daten vom Speicher 215 erhalten werden können, wenn sich im Speicher 205 keine Kopie der adressierten Daten befindet.
  • Das Latch 213 ist mit MDO 221 und MB 214 verbunden. Latch 213 hält eine Kopie jedes auf dem Bus MB 214 übertragenen Datenelements, das heißt, von jedem in den Speicher 215 gelesenen oder davon ausgegebenen Datenelement. Wenn ein lesender Speicherzugriff von der CPU 201 ausgeführt wird und eine Kopie der gelesenen Daten nicht im-Speicher 205 vorhanden ist, gibt der Speicher 215 die adressierten Daten auf MB 214 aus, von wo sie im Latch 213 gehalten werden. Von da gehen sie gleichzeitig zum Speicher 205 und zur CPU 201. Steuerung 211 spricht auf durch die Ein-/Ausgabevorrichtungen I/O 217 ausgeführte lesende Speicherzugriffe nicht an. Dementsprechend werden die im Latch 213 gehaltenen Daten nur in Reaktion auf einen Lesezugriff von CPU 201 in den Speicher 205 geschrieben. Wenn ein schreibender Speicherzugriff entweder durch die CPU 201 oder durch die Ein/Ausgabevorrichtungen I/O 217 ausgeführt wird, erhält der Speicher 215 die zu schreibenden Daten über MB 214 und eine Kopie wird im Latch 213 gehalten. Wenn es ein Register 208 gibt, das dem beim Schreibzugriff adressierten Speicherplatz entspricht, werden die im Latch 213 gehaltenen Daten in das Datenfeld 207 dieses Registers geladen.
  • Der Cache 203 arbeitet wie folgt: bei einem Lesezugriff von der CPU 201 zeigt CPU MEM OP 233 den Lesezugriff an und ADDR 225 überträgt die Adresse der gerade gelesenen Daten. Die Steuerung 211 erhält die Adresse und CPU MEM OP 233 und vergleicht die Adresse mit dem Markierungsfeld, das zu dem Register 208, das an dem durch die Adresse spezifizierten Speicherplatz eine Kopie der Daten enthalten kann, gehört. Im Falle der Übereinstimmung gibt die Steuerung 211 ein Treffersignal HIT 229 aus, das verhindert, daß der Speicher 215 auf die Adresse antwortet, und die Daten 207 in dem Register 208, welches das passende Markierungsfeld enthält, werden vom Speicher 205 über MDO 221 an die CPU 201 ausgegeben.
  • Wenn keine Übereinstimmung vorliegt, gibt die Steuerung 211 kein Treffersignal HIT 229 an den Speicher 215 aus, sondern gibt statt dessen ein Signal EXT 231 an die CPU 201 aus. Die CPU 201 reagiert auf EXT 231, indem sie auf den Empfang von Daten von MDO 221 wartet, bis diese vom Speicher 215 statt vom Speicher 205 zur Verfügung gestellt werden können. Weil der Speicher 215 nicht durch das Treffersignal HIT 229 gesperrt ist, antwortet er auf die Adresse auf ADDR 225, indem er die adressierten Daten auf MB 214 ausgibt. Das Latch 213 hält die auf MB 214 erscheinenden Daten, und sie gelangen vom Latch 213 über MDO 221 an die CPU 201. Gleichzeitig bestimmt die Steuerung 211 das Register 208 des Speichers 205, das eine Kopie der adressierten Daten enthalten soll, und lädt das Markierungsfeld 209 dieses Registers 208 mit einem Teil der Adresse auf ADDR 225 und das Datenfeld 209 mit den im Latch 213 gespeicherten Daten. Daher hat am Ende des Lesezugriffs die CPU 201 die Daten erhalten, und eine Kopie der Daten ist im Cache 203 gespeichert worden, wo sie für den nächsten Lesezugriff auf den gleichen Speicherplatz im Speicher 215 verfügbar ist.
  • Bei einem Schreibzugriff können die Daten entweder von der CPU 201 oder von einer der Ein-/Ausgabevorrichtungen I/O 217 kommen. In beiden Fällen erscheint die Adresse auf dem Adreßbus ADDR 225, und die Daten erscheinen auf MB 214, von wo sie vom Latch 213 gehalten und in den Speicher 215 geschrieben werden. Wie beim Lesezugriff vergleicht die Steuerung 211 die Adresse mit dem Markierungsfeld 209 jedes der Register 208, das eine Kopie der Daten des Platzes, auf den gegenwärtig geschrieben wird, enthalten kann. Wenn es ein solches Register 208 gibt, lädt die Steuerung 211 das Datenfeld 207 dieses Registers mit dem Inhalt des Latches 213 und stellt somit sicher, daß das Datenfeld 207 weiterhin eine Kopie der Daten an dem entsprechenden Platz im Speicher 215 enthält. Wenn der Vergleich der Adresse mit dem Markierungsfeld 209 zeigt, daß keines der Register 208 dem Platz, auf den gerade geschrieben wird, entspricht, lädt die Steuerung 211 keines der Register 208 vom Latch 213. Wenn ein Register 208 in weniger Zeit beschrieben werden kann, als die Zeit, die benötigt wird, daß die CPU 201 Daten vom Speicher 205 liest, können schreibende Speicherzugriffe von den Ein-/Ausgabevorrichtungen 217 ausgeführt werden, während die CPU 201 lesende Speicherzugriffe, die Cache-Treffer hervorrufen, ausführt.
  • Wie man aus einem Vergleich der Fig. 1 und 2 und der obigen Beschreibungen ersehen kann, ist der Cache 203 der Erfindung in Aufbau und Funktionsweise wesentlich einfacher als Caches nach dem bekannten Stand der Technik. Cache 203, CPU 201 und Speicher 215 teilen sich den Adreßbus ADDR 225, Cache 203 und Speicher 215 teilen sich MB 214; der Daten von MDI 223, den sich CPU 201 und Ein-/Ausgabevorrichtungen I/O 217 teilen, erhält und sie an MDO 221, den sich Cache 203 und CPU 201 teilen, liefert. Weil die in den Speicher 215 geschriebenen Daten, immer wenn es ein Register 208 gibt, das der Speicheradresse, auf die gerade geschrieben wird, entspricht, in den Cache 203 geschrieben werden, besteht kein Bedarf, Informationen, die den Bits D 115 oder V 109 im Speicher 205 entsprechen, zu speichern, und die durch die Steuerung 211 ausgeführten Aufgaben sind entsprechend einfacher. Weiterhin stellt Latch 213 sicher, daß, wenn der Cache 203 die von der CPU 201 gelesenen Daten nicht enthält, die vom Speicher 215 gelesenen Daten an die CPU 201 auch für den Cache 203 verfügbar sind und im Speicher 205 gespeichert werden können, während sie der CPU 201 zur Verfügung gestellt werden.
  • 2. Ausführliche Beschreibung einer bevorzugten Ausführungsform: Fig. 3 und 3A
  • Fig. 3 und 3A sind ausführliche Blockschaltbilder einer bevorzugten Ausführungsform des Caches 211 und des Speichers 215 der Erfindung. Busse, die sich von Fig. 3 nach Fig. 3A fortsetzen, sind in beiden Figuren mit gleichen Buchstaben bezeichnet. Weiterhin kennzeichnen gepunktete Umrißlinien in Fig. 3 und Bezugszeichen von Fig. 2 die Beziehung zwischen den Bestandteilen von Fig. 2 und den Bestandteilen von Fig. 3.
  • Die bevorzugte Ausführungsform ist in einem von Wang Laboratories, Inc. hergestellten digitalen Computersystem vom Typ VS implementiert. Digitale Computersysteme des Typs VS verwenden 24-Bit-Adressen, um 8-Bit-Bytes im Speicher zu adressieren. Im VS-System der Erfindung werden Daten im Speicher und im Cache in 32-Bit-Worten gespeichert, während die Datenbusse, die die CPU und die Ein-/Ausgabevorrichtungen mit dem Cache und dem Speicher verbinden, 16 Bit breit sind. Daten können entweder als einzelne Bytes oder als 16-Bit-Halbworte von der CPU und den Ein-/Ausgabevorrichtungen empfangen und an diese geliefert werden. Das linke Halbwort in einem Speicherwort wird ungerades Halbwort und das rechte Halbwort wird gerades Halbwort genannt.
  • a. Speicher 205
  • Mit Speicher 205 beginnend, wird Speicher 205 in einer vorliegenden Ausführungsform mit Cache-RAMs 313 ausgeführt, die 4096 40 Bit breite Register 314 enthalten, wobei jedes drei Felder enthält: ein 8 Bit breites Markierungsfeld 315, das die höchstwertigen 8 Bits der Adresse des Worts im Speicher 215 enthält, das in das Register 314 kopiert worden ist, ein 16 Bit breites Feld für das ungerade Halbwort 319, welches das ungerade Halbwort des kopierten Speicherworts enthält, und ein 16 Bit breites Feld für das gerade Halbwort 321, welches das gerade Halbwort des kopierten Speicherworts enthält. Die Cache-RAMs 313 werden über eine 12 Bit breite Adresse adressiert, die auf CAA 311 übertragen wird; als Reaktion auf die Adresse auf CAA 311 und auf ein von der Cache-Steuerung CACHE CTL 343 erzeugtes Aktivierungssignal EN 312 geben die Cache-RAMs 313, wenn ein Speicherzugriff den Cache 203 betreffen kann, den Inhalt des Markierungsfelds 315 im adressierten Register 314 an den Bus 338 aus, den Inhalt des Felds für das ungerade Halbwort 319 an den Bus 323 und den Inhalt des Felds für das gerade Halbwort 321 an den Bus 325.
  • Wenn die Adresse auf CAA 311 und das Aktivierungssignal EN 312 von einem Cache-Schreibsignal für das hohe Feld 375 (cache write high -- CWH) oder einem Cache-Schreibsignal für das niedrige Feld 377 (cache write low -- CWL) begleitet werden, die auch von der Cache-Steuerung CACHE CTL 343 erzeugt werden, speichern die Cache-RAMs 313 den Wert auf dem Bus 323 in das Feld für das ungerade Halbwort 319 oder den Wert auf dem Bus 325 in das Feld für das gerade Halbwort 321, abhängig davon, ob die Reaktion gerade auf ein CWH 375 oder ein CWL 377 erfolgt. CWH 375 und CWL 377 erfüllen somit zusammen in einer bevorzugten Ausführungsform die Aufgabe von CWR 230. Die Cache-RAMs 313 können aus 10 integrierten 4k · 4 NMOS-RAM-Schaltungen vom Typ 8168-45 aufgebaut werden. Diese integrierten Schaltungen haben eine Zykluszeit von 45 ns.
  • b. Speicher 215
  • Wenn wir nun mit dem Speicher 215 fortfahren, besteht in einer vorliegenden Ausführungsform der Speicher 215 aus Speicher-RAMs 365, Speichersteuerung (MEM CTL) 345, Adressenmultiplexer (MUX) 363, Latches (LA) 349 und 351 und bidirektionalen Treibern zum Vertauschen von Bytes SW 357 und SW 359. Wie es später detaillierter erklärt werden wird, erlauben es die Latches 349 und 351 und die Treiber 357 und 359, einzelne Bytes in einem Halbwort zu schreiben und zu lesen. Die Speicher-RAMs 365 bestehen aus 1024k Registern, von denen jedes ein 32 Bit breites Datenwort enthält, das aus einem ungeraden 16 Bit breiten Halbwort und einem geraden 16 Bit breiten Halbwort und 12 Bits Fehlerkorrekturcode gebildet ist. Der Fehlerkorrekturcode ist der Erfindung nicht zugehörig und wird nicht weiter erklärt werden.
  • Die Datenworte sind in 4 Paaren von Bänken zu je 256k angeordnet. Eine Bank jedes Paars enthält die geraden Halbworte und die andere enthält die ungeraden Halbworte. Die Bänke für die geraden Halbworte erhalten Eingaben von und liefern Ausgaben an Bus 355; die Bänke für die ungeraden Halbworte erhalten Eingaben von und liefern Ausgaben an Bus 353. Die Adressierung geschieht über das Bankauswahl-Signal BS 373, das ein Bankpaar auswählt, das Zeilenadressenauswahl-Signal RAS 346, das anzeigt, daß die empfangene Adresse eine Zeilenadresse ist, und das Spaltenadressenauswahl-Signal CAS 347, das anzeigt, daß die empfangene Adresse eine Spaltenadresse ist, und Adreßleitungen A 366, die eine 9 Bit breite Zeilenadresse gefolgt von einer 9 Bit breiten Spaltenadresse liefern. Wenn eine Bank aktiviert ist und sie ein Signal RAS 346 und eine Zeilenadresse erhält, gefolgt von einem Signal CAS 347 und einer Spaltenadresse, gibt sie die 16 in dem adressierten Halbwort enthaltenen Datenbits an den Bus 355 aus, wenn es das gerade Halbwort ist, und an den Bus 353, wenn es das ungerade Halbwort ist. Wenn eine Bank aktiviert ist, Zeilen- und Spaltenadressen wie oben beschrieben erhält und weiterhin ein Schreibaktivierungs-Signal WE 372 erhält, werden die Daten von einem der Busse 353 und 355 in das adressierte Halbwort geschrieben, abhängig davon, ob das adressierte Halbwort ungerade oder gerade ist. In der vorliegenden Ausführungsform besteht jede Bank aus 22 256k · 1 NMOS-RAMs vom Typ 50256-15, hergestellt von Hitachi. RAMs dieses Typs haben eine Zykluszeit von 150 ns.
  • Steuersignale und Adressen für die Speicher-RAMs 365 werden von der Speichersteuerung MEM CTL 345 und dem Multiplexer MUX 363 in Reaktion auf die Speichersteuersignale und Adressen sowohl von CPU 201 als auch von der Ein-/Ausgabe I/O 217 geliefert. Die Speichersteuerung MEM CTL 345 erzeugt RAS 346 und CAS 347, wenn sie nicht von einem Treffersignal HIT 229 auf Bus 341 gesperrt wird, sie erzeugt BS 373 in Reaktion auf die Bits 0 und 1 der über MA 361 erhaltenen Adresse, und sie erzeugt WE 372 in Reaktion auf I/O MEM OP 235 oder CPU MEM OP 233, wenn eines dieser Signale einen Schreibzugriff kennzeichnet. MUX 363 erhält die Bits 2-19 über MA 361 und liefert eine 9 Bit breite Zeilenadresse an A 366, die aus den Bits 2-9 und 18 von MA 361 besteht, und eine 9 Bit breite Spaltenadresse an A 366, die aus den Bits 10-18 und Bit 19 von MA 362 besteht. Die Auswahl der Spaltenadresse wird durch CAS 347 gesteuert. MUX 363 kann durch drei 4-Bit-Multiplexer vom Typ 74F257 implementiert werden.
  • Die Speicher-RAMs 365 erhalten und geben nur 32 Bit breite Worte aus; jedoch adressiert, wie vorher erwähnt, das VS-Computersystem einzelne Bytes und der Bus MDI 223 in einer vorliegenden Ausführungsform ist 16 Bit breit. Die Latches LA 349 und 351 und die Treiber SW 357 und 359 erlauben es dem Speicher 215, sowohl einzelne Bytes als auch Halbworte zu empfangen und auszugeben. Das Latch LA 349 ist mit dem Bus 353 verbunden, der das ungerade Halbwort übermittelt, wenn die Speicher-RAMs 365 Daten eingeben oder ausgeben, und LA 351 ist mit dem Bus 355 verbunden, der das gerade Halbwort übermittelt. Jedes Latch speichert zwei Bytes, und jedes Byte kann einzeln geschrieben oder gelesen werden. SW 359 treibt den Bus 353 in beide Richtungen, und SW 357 tut das gleiche für den Bus 355. Jeder Treiber besteht aus vier Byte- Treibern in einer Zusammenstellung, die es erlaubt, daß die beiden Bytes des auf dem Bus übermittelten Halbworts entweder unverändert auf die mit dem Treiber verbundene Busse getrieben werden können, oder es erlaubt, daß die zwei Bytes vertauscht werden, so daß das geringwertige Byte das höherwertige Byte wird und umgekehrt. Die Latches LA 349 und 351 und die Treiber SW 357 und 359 werden durch Signale SWCTL 371 gesteuert, die durch MEM CTL 345 in Reaktion auf die Bits 19-21 von MA 361 erzeugt werden.
  • Die Bestandteile arbeiten wie folgt zusammen: Bei einem Lesezugriff geben die Speicher-RAMs 365 entweder das ungerade Halbwort oder das gerade Halbwort, wie durch MA 0-18 angegeben, an den Bus 353 oder den Bus 355 aus. Das Halbwort wird in LA 349 oder LA 351 gehalten, je nachdem, ob es ungerade oder gerade ist. Wenn die Bits 19-21 der Adresse das erste Byte des ungeraden Halbworts angeben, reagiert der Treiber SW 359 auf SWCTL 371, indem er den Inhalt von LA 349 ohne die Bytes zu vertauschen an den Bus 223 ausgibt; wenn die Bits 19-21 das zweite Byte des ersten Halbworts angeben, reagiert der Treiber SW 359 auf SWCTL 371, indem er die Bytes vertauscht, wenn er das ungerade Halbwort an den Bus 223 ausgibt. Wenn die Bits 19-21 der Adresse entweder das erste oder zweite Byte des geraden Halbortes angeben, verfährt der Treiber SW 359 genauso mit dem Inhalt von LA 351.
  • Bei einem Schreibzugriff befinden sich die 16 Bits, welche das Byte oder die Bytes enthalten, die zu schreiben sind, auf dem Bus MDI 223. Falls ein Halbwort zu schreiben ist, erfolgt der Vorgang wie folgt: Unter Steuerung von SWCTL 371 treibt entweder SW 359 oder SW 357, abhängig davon, ob das Halbwort gerade oder ungerade ist, den Wert des Busses MDI 223 auf den Bus 353 oder 355, von wo das Halbwort durch die Speicher-RAMs 365 empfangen wird.
  • Falls ein Byte zu schreiben ist, wird der Schreibzugriff als ein Lese-Verändere-Schreibe-Zugriff ausgeführt. Bei diesem Zugriff geben die Speicher-RAMs 365 das von den Bits 0-18 der Adresse auf MA 361 angegebene Halbwort aus, welches das von der ganzen Adresse angegebene Byte enthält. Abhängig davon, ob das Halbwort entweder ungerade oder gerade ist, wird es entweder auf den Bus 353 oder auf den Bus 355 ausgegeben und unter Steuerung von SWCTL 371 entweder in Latch LA 349 oder LA 351 gehalten. Dann treibt, wie von den Signalen SWCTL 371 in Reaktion auf die Bits 19-21 der Adresse angegeben, SW 359 oder SW 357 das zu schreibende Byte entweder auf Bus 355 oder 353, und das Latch LA 349 oder LA 351, welches das Halbwort enthält, zu dem das gerade geschriebene Byte gehört, speichert den Wert auf dem Bus in das Byte von LA 352 oder LA 359, das gerade geschrieben wird. Zu diesem Zeitpunkt enthält entweder LA 349 oder LA 351 das Halbwort, wie es nach dem Schreibzugriff erscheinen soll. Danach gibt entweder LA 349 oder LA 351 seinen Inhalt an Bus 353 oder Bus 355 aus, und das adressierte Halbwort wird in die Speicher- RAMs 365 geschrieben. LA 349 oder 351 können aus zwei 8-Bit-D- Latches vom Typ 74LS373 gebildet werden, und SW 357 oder SW 359 können aus vier 8 Bit breiten bidirektionalen Treibern vom Typ 74LS245 gebildet werden.
  • c. Busse MB 214, MDO 221, MDI 223 und Latch 213
  • In der bevorzugten Ausführungsform wird der Bus MB 214, der zwischen dem Speicher 215 und dem Latch 213 verläuft, durch zwei 16 Bit breite Busse implementiert, und zwar Bus 353, der die ungeraden Bänke der Speicher-RAMs 365, LA 335, LA 349 und SW 359 verbindet, und Bus 355, der die geraden Bänke mit LA 337, LA 351 und SW 357 verbindet. Wie in Verbindung mit dem Speicher 215 beschrieben, werden alle Daten, die eingegeben werden in oder ausgegeben werden von den Speicher-RAMs 365 auf den Bussen 353 und 355 übertragen. Die Busse 353 und 355 sind über LA 335 und LA 337 mit dem Bus MDO 221 verbunden und über die vertauschenden Treiber SW 359 und 357 mit dem Bus MDI 223. Wie vorher gezeigt, überträgt der Bus MDI 223 in einer vorliegenden Ausführungsform 16 Datenbits.
  • Der Bus MDO 221 wird in einer bevorzugten Ausführungsform innerhalb des Caches 203 durch zwei 16 Bit breite Busse implementiert. Der Bus 323 verbindet die Register der Cache-RAMs 313, welche die ungeraden Halbwörter enthalten, mit LA 335 und dem Ausgabemultiplexer (OMUX) 303; Bus 325 verbindet die Register der Cache-RAMs 313, welche die geraden Halbworte enthalten, mit LA 337 und OMUX 303. OMUX 303 ist mit dem Teil des Busses MDO 221 verbunden, der Daten vom Cache 203 an die CPU 201 überträgt; in der bevorzugten Ausführungsform ist dieser Bus 16 Bits breit. OMUX 303 gibt unter Steuerung der zwei geringwertigsten Bits der von der CPU 201 auf Bus 301 empfangenen Adresse und eines Signals von den Signalen CPU MEM OP 233, das einen Lesezugriff auf ein einzelnes Byte anzeigt, entweder das ungerade Halbwort, das gerade Halbwort oder, wenn ein einziges Byte angegeben ist, ein Halbwort aus, in dem das angegebene Byte das erste Byte des Halbworts ist und der Rest mit 0 aufgefüllt ist. OMUX 303 kann durch acht 8-nach-2-Multiplexer vom Typ 745253 und einen 8-Bit-Treiber vom Typ 745244, um die Auffüllung mit 0 zu liefern, implementiert werden.
  • Das Latch 213 ist als zwei 16 Bit breite Latches implementiert, und zwar als LA 335, das Daten vom Bus 353 erhält und sie an Bus 323 liefert, und LA 337, das Daten vom Bus 355 erhält und sie an Bus 325 liefert. Jedes Latch enthält immer eine Kopie der letzten auf den Bussen 353 beziehungsweise 355 erschienenen Werte. LA 335 gibt in Reaktion auf ein Signal CWH 375 an den Bus 323 aus, und LA 337 gibt in Reaktion auf ein Signal CWL an den Bus 325 aus. Die Signale werden durch die Cache-Steuerung CACHE CTL 343 geliefert. Jedes der Latches kann implementiert werden, indem man zwei 8-Bit-D-Latches vom Typ 74ALS373 verwendet.
  • d. Steuerung 211
  • Steuerung 211 erhält Adressen und Speicherzugriffssignale von der CPU 201 und der Ein-/Ausgabe I/O 217. CPU-Adressen sind in dem VS-System, das die bevorzugte Ausführungsform enthält, 24 Bit breite logische Adressen, während die I/O-Adressen 22 Bit breite physische Adressen sind; jedoch sind, wenn die Adressen von der CPU 201 in der bevorzugten Ausführungsform die Steuerung 211 erreichen, sie in 22 Bit breite physische Adressen umgewandelt worden. Mit den Bauteilen der Steuerung 211 beginnend, die mit der Adressierung zusammenhängen, werden CPU-Adressen über den Bus 225 eingelesen; die zwei geringwertigsten Bits der CPU- Adresse verlaufen über den Bus 301 an OMUX 303, wo sie das auf den Bus MDO 221 auszugebende Halbwort wählen; die restlichen Bits werden auf Bus 307 übertragen; von diesen Bits werden die höchstwertigen 8 Bits, Bits 0-7, vom Bus 334 übertragen, der die Bits 0-7 an MUX 333, die Bitquelle für den Markierungsfeld- Vergleichsvorgang, liefert, und an Treiber D 336, der sie an den Markierungsfeld-Teil der Cache-RAMs 313 liefert. Die verbleibenden 12 Bits von Bus 307 gehen an MUX 309, die Adreßquelle für die Cache-RAMs 313. Zusätzlich gehen alle Bits vom Bus 225 an LA 327, von wo sie über MA 361 an den Speicher 215 und über LA 329 und Bus 330 an MUX 309 und MUX 333 ausgegeben werden. Zusätzlich dazu, daß sie Adreßbits von LA 327 erhalten, erhalten Bus MA 361 und LA 329 sie von der Ein-/Ausgabe I/O 217 über den Bus 227. Die Zielorte der Bits vom Bus 227 sind die gleichen wie die der Bits von LA 327. Wie man aus der obigen Beschreibung erkennen kann, stammen die Adreßbits für CAA 311 und die mit dem Markierungsfeld 315 des adressierten Registers 314 zu vergleichenden Bits abwechselnd von Bus 307 und Latch 329. Wie später ausführlicher beschrieben werden wird, stammen sie im Falle eines Lesezugriffs auf ,den Speicher mit einem Cache-Treffer vom Bus 307 und in allen anderen Fällen von LA 329.
  • Fortfahrend mit den Teilen der Steuerung 211, die den Betrieb der Erfindung steuern, erhält und vergleicht der Vergleicher COMP 339 Eingaben vom Markierungsfeld-Teil 315 des gegenwärtig von den Bits auf dem Bus CAA 311 adressierten Cache-Registers 314 mit den Bits 0-7 der Adresse, auf die der Speicher 215 gegenwärtig anspricht. Falls beide gleich sind, erzeugt COMP 339 ein Treffersignal HIT 229 auf Leitung 341. Leitung 341 ist mit der Speichersteuerung MEM CTL 345 und der Cache-Steuerung CACHE CTL 343 verbunden und liefert Treffer- und Fehlschlagssignale an diese Bauteile. Die Cache-Steuerung CACHE CTL 343 erhält weiterhin als Eingaben CPU MEM OP 233, I/O MEM OP 235 und eine Leitung, die Bit 20 der Adresse auf MA 361 überträgt, und sie erzeugt als Ausgaben das Signal CWH 375 oder das Signal CWL 377, die anzeigen, daß ein ungerades Halbwort oder ein gerades Halbwort in die Cache-RAMs 313 zu schreiben ist, und das Signal EXT 231. Das letztere Signal wird in Reaktion auf einen Lesezugriff der CPU erzeugt, der kein Treffersignal HIT 229 erzeugt, und zeigt an, daß die CPU 201 ihren Zyklus um die Zeit ausdehnen muß, welche die Speicher-RAMs 365 benötigen, um die Daten auszugeben. Wie schon erläutert, erhält die Speichersteuerung MEM CTL 343 die Signale MEM OP 235 und 233 und die Bits 0, 1 und 19-21 von MA 361 zusammen mit dem Treffersignal HIT 229 und erzeugt als Ausgaben SWCTL 371, CAS 347, RAS 346, BS 373 und WE 372. Als Antwort auf ein Treffersignal unterdrückt die Speichersteuerung MEM CTL 345 RAS 346 und sperrt somit den Zugriff auf die Speicher-RAMs 367.
  • Was die Bestandteile der Steuerung 211 angeht, können die Multiplexer MUX 309 und 333 implementiert werden, indem man zwei 8-nach-4-Multiplexer vom Typ 74F157 verwendet. Der Treiber D 336 kann implementiert werden, indem man einen 8-Bit-Treiber vom Typ 74LS244 verwendet. Die Latches LA 327 und LA 329 können jeweils implementiert werden, indem man drei 8-Bit-D-Latches vom Typ 74F373 verwendet. Der Vergleicher COMP 339 kann schließlich mit einem 8-Bit-Vergleicher vom Typ 74F521 implementiert werden. Die Cache-Steuerung CACHE CTL 343 und die Speichersteuerung MEM CTL 345 werden aus diskreter Logik aufgebaut. Der Aufbau von Logik, um die hier beschriebenen Funktionen für die Cache-Steuerung CACHE CTL 343 und die Speichersteuerung MEM CTL 345 auszuführen, ist in der Technik gut bekannt.
  • 3. Arbeitsweise einer bevorzugten Ausführungsform
  • Die folgende Erläuterung der Arbeitsweise der bevorzugten Ausführungsform von Fig. 3 behandelt zuerst Lesezugriffe auf den Speicher und dann Schreibzugriffe auf den Speicher. In beiden Fällen werden für die CPU 201 und die Ein-/Ausgabe I/O 217 sowohl mit als auch ohne Cache-Treffer ausgeführte Zugriffe erläutert werden.
  • a. Lesezugriff auf den Speicher durch die CPU mit Cache-Treffer
  • Wenn die CPU 201 einen Lesezugriff auf den Speicher ausführt, überträgt der Bus ADDR 225 die Adresse und CPU MEM OP 233 zeigt den Lesezugriff an. Alle 22 Bits der Adresse auf ADDR 225 werden im Latch LA 327 gehalten. Gleichzeitig gelangen die beiden geringwertigsten Bits an OMUX 303, und Bus 307 überträgt die nächsten 12 Bits an MUX 309 und die 8 höchstwertigen Bits an MUX 333. Auf CPU MEM OP 233, das den Lesezugriff anzeigt, ansprechend, gibt die Cache-Steuerung CACHE CTL 343 das Signal EN 312 aus, das den Vergleicher COMP 339 und die Cache-RAMs 313 aktiviert, und das Signal CNT 344, das die Multiplexer MUX 309 und MUX 333 veranlaßt, die Eingaben, die sie von Bus 307 erhalten, auszuwählen.
  • Im Ergebnis liefert CAA 311 die 12 vom Bus 307 an MUX 309 eingegebenen Bits als Adresse an die Cache-RAMs 313. In Reaktion auf diese Adresse geben die Cache-RAMs 313 das Markierungsfeld 315 vom adressierten Register an den Bus 338 aus, das ungerade Halbwort 319 von diesem Register an den Bus 323 und das gerade Halbwort 321 an den Bus 325. Wie vorher erklärt, reagiert OMUX 303 auf die zwei geringwertigsten Adreßbits, indem er das adressierte Byte oder Halbwort von dem an OMUX 303 aus gegebenen Wort auswählt und das Byte oder Halbwort an den Bus MDO 221 ausgibt. Der Vergleicher COMP 339 erhält das Markierungsfeld 315 und vergleicht es mit den 8 Bits der Adresse, die MUX 333 vom Bus 307 liefert. Wie vorher erklärt, ist das Markierungsfeld 315 gleich den 8 Adreßbits, wenn die Daten im Register 314 eine Kopie der Daten an der Adresse auf Bus 225 sind. Wenn das Markierungsfeld 315 und die Adreßbits gleich sind, erzeugt der Vergleicher 339 ein Treffersignal HIT 229 auf der Leitung HIT 341. Auf das Treffersignal HIT 229 ansprechend, sperrt die Speichersteuerung MEM CTL 345 die Erzeugung von RAS 346 und sperrt somit den Zugriff auf die Speicher-RAMs 365. Weil die CPU 201 kein Signal EXT 231 von der Cache-Steuerung CACHE CTL 343 erhalten hat, übernimmt CPU 201 die von OMUX 303 ausgegebenen Daten.
  • b. Lesezugriff auf den Speicher durch die CPU mit Cache- Fehlschlag
  • Wenn Register 314 keine Kopie der Daten am adressierten Speicherplatz enthält, ist das Markierungsfeld 315 nicht den 8 höchstwertigen Bits der Adresse gleich und die Leitung HIT 341 überträgt kein Signal HIT 229. Die Cache-Steuerung CACHE CTL 343 reagiert darauf, indem sie zuerst ein Signal EXT 231 erzeugt und dann, zur geeigneten Zeit, um Daten in die RAMs 313 zu schreiben, CWH 375 oder CWL 377, abhängig vom Wert von Bit 20 auf MA 361, erzeugt. Auf das Signal EXT 231 ansprechend, verlängert CPU 201 ihren Zyklus und übernimmt nicht die von den Cache-RAMs 313 ausgegebenen Daten. Die Adresse auf Bus 225 ist im Latch MA 327 gehalten worden und wird beim Fehlschlag an den Bus MA 361 ausgegeben und im Latch LA 329 gehalten. Die Speichersteuerung MEM CTL 345 reagiert auf das Fehlschlagssignal, indem sie die Erzeugung von RAS 346 und CAS 347 vom Wert auf dem Bus MA 361 zuläßt, so daß die Speicher-RAMs 365 auf BS 373 und auf die Adreßbits von MUX 363 ansprechen, indem sie das adressierte Halbwort an den Bus 353 oder den Bus 355 ausgeben. Wie vorher erklärt, halten Latch LA 335 oder Latch LA 337 das Wort, wenn es auf einem oder dem anderen der Busse erscheint. Die Cache-Steuerung CACHE CTL 343 erzeugt beim Fehlschlag nicht mehr CNT 344, und folglich wählt MUX 309 die Bits 8-19 vom Bus 330 als Eingabe für CAA 311 aus. Inzwischen liefert Bus 307 immer noch die Bits 0-7 der Adresse an den Bus 334. Abhängig davon, ob die Cache-Steuerung CACHE CTL 343 CWH 375 oder CWL 377 erzeugt, gibt entweder Latch LA 335 oder Latch LA 337 das gehaltene Halbwort entweder an Bus 323 oder an Bus 325 aus. Die Busse übertragen das Halbwort an OMUX 303, wo das adressierte Byte oder Halbwort an die CPU 215, wie oben beschrieben, und auch an die Cache-RAMs 313 ausgegeben wird. Die Cache-RAMs 313 speichern somit die Bits 0-7 der Adresse auf dem Bus 334 im Markierungsfeld 315, und sie speichern, abhängig davon, ob entweder CWH 375 oder CWL 377 erzeugt werden, das ungerade Halbwort von Bus 323 im Feld für das ungerade Halbwort 319 oder das gerade Halbwort von Bus 325 im Feld für das gerade Halbwort 321 des durch die Bits auf CAA 311 adressierten Registers 314. Weil die in das Markierungsfeld 315 geschriebenen Bits die Markierung für die Speicheradresse sind, die das in Feld 319 oder 321 geschriebene Halbwort enthält, enthält im Ergebnis das Register 314 jetzt eine gültige Kopie der Daten an der Speicheradresse, die den Cache-Fehlschlag verursachte.
  • c. Lesezugriffe der Ein-/Ausgabe I/O
  • Wenn ein Lesezugriff von einem Ein-/Ausgabegerät I/O 217 begonnen wird, erscheint die Adresse auf Bus 227 und folglich auf Bus MA 361. Die Cache-Steuerung CACHE CTL 343 und die Speichersteuerung MEM CTL 343 erhalten Signale I/O MEM OP 235, aber wenn diese Signale einen Lesezugriff anzeigen, spricht die Cache-Steuerung 343 nicht an. Daher wird das Signal EN 312 nicht erzeugt, das RAM 313 gibt keine Daten an die Busse 323, 325 oder 338 aus, und der Vergleicher COMP 339 gibt kein Treffersignal HIT 229 aus. Die Speichersteuerung MEM CTL 345 spricht auf Signale I/O MEM OP 235 an und wird nicht durch ein Treffersignal HIT vom Vergleicher COMP 339 gesperrt. Sie erzeugt daher RAS 346 und CAS 347, so daß die Speicher-RAMs 365 die Daten an der Adresse von MA 361 an die Busse 353 und 355 ausgeben. Die Latches LA 335 und LA 337 halten die Daten, aber weil die Cache- Steuerung CACHE CTL 343 kein Signal CWH 375 oder CWL 377 erzeugt, werden die Daten weder in die Cache-RAMs 313 geschrieben noch über den Bus MDO 221 an die CPU 201 ausgegeben. Statt dessen werden sie an LA 349 und SW 359 und an LA 351 und SW 357 ausgegeben, die, wie vorher beschrieben, das adressierte Byte oder Halbwort in Reaktion auf die Signale SWCTL 371, welche die Speichersteuerung MEM CTL 345 in Reaktion auf die Bits 18-21 von MA 361 erzeugt, ausgegeben.
  • d. Schreibzugriff auf den Speicher mit Cache-Treffer
  • Schreibzugriffe auf den Speicher laufen genauso ab, unabhängig davon, ob die Daten von CPU 201 oder einem Ein-/Ausgabegerät I/O 217 geschrieben werden. Die zu schreibenden Daten erscheinen am Bus MDI 223. Wenn die Daten von der CPU 201 geschrieben werden, erscheint die Adresse auf dem Bus 225 und wird im Latch 327 und von dort im Latch 329 gehalten, von wo sie zu MUX 309 und MUX 333 verteilt wird. Wenn die Daten von der Ein-/Ausgabe I/O 217 geschrieben werden, erscheinen sie auf Bus 227 und werden im Latch 329 gehalten. Die Cache-Steuerung CACHE CTL 343 spricht auf die Signale CPU MEM OP 233 oder I/O MEM OP 235 an, die einen Schreibzugriff kennzeichnen, indem sie ein Signal EN 312 erzeugt, das die Cache-RAMs 313 aktiviert. CNT 344 wird nicht erzeugt, und folglich wählen MUX 333 und MUX 309 ihre Eingaben vom Bus 330. Die Cache-RAMs 313 reagieren auf die Cache-Adresse auf CAA 311 und das Signal EN 312, indem sie das Markierungsfeld 315 vom durch die Bits auf CAA 311 adressierten Register 314 an den Vergleicher COMP 339 und die Daten in den Feldern 319 und 321 an die Busse 323 und 325 ausgeben. Jedoch werden, weil ein Schreibzugriff ausgeführt wird, die Daten ignoriert. Wenn das Markierungsfeld 315 und die als Eingabe an den Vergleicher COMP 339 ausgewählten Adreßbits gleich sind, müssen die über Bus 223 erhaltenen Daten sowohl in die Cache-RAMs 313 als auch in die Speicher-RAMs 365 geschrieben werden.
  • Der Schreibzugriff auf die Speicher-RAMs 365 wird, wie in der Erläuterung der Arbeitsweise von Speicher 215 in der bevorzugten Ausführungsform beschrieben, ausgeführt. Falls ein Halbwort geschrieben wird, geben SW 359 oder SW 357 es an den Bus 353 oder den Bus 355 ein, von wo es zu den passenden RAMs der Speicher-RAMs 365 oder dem passenden Latch von LA 335 oder 337 weiterläuft. Falls ein Byte geschrieben wird, wird ein Lese- Verändere-Schreibe-Zugriff nötig. Wie vorher beschrieben, wird das das Byte enthaltende Halbwort entweder an LA 349 oder an LA 351 ausgegeben, abhängig davon, ob das Halbwort ungerade oder gerade ist, und das zu schreibende Byte wird über MDI 223 empfangen und im Latch verändert. Der veränderte Inhalt des Latches wird dann in die Speicher-RAMs 365 und in LA 335 oder LA 337 geschrieben. Abhängig vom Wert des Bits 20 auf MA 361 erzeugt die Cache-Steuerung CACHE CTL 343 entweder CWH 375 oder CWL 377, auf die entweder LA 335 oder LA 337 anspricht, indem es seinen Inhalt an Bus 323 oder 325 ausgibt, und worauf die Cache- RAMs 313 ansprechen, indem sie die Werte auf den Bussen 334, 323 und 325 in Register 314 schreiben und somit dieses Register 314 aktualisieren. Die Speichersteuerung MEM CTL 345 erzeugt WE 372, worauf die Speicher-RAMs 365 ansprechen, indem sie die Werte auf den Bussen 353 und 355 in den durch die Adresse auf MA 361 angegebenen Platz schreiben. Daher enthalten am Ende des Zugriffs das dem Speicherplatz, auf den geschrieben wird, entsprechende Register 314 und der Speicherplatz beide die gleichen Daten.
  • d. Schreibzugriff auf den Speicher mit Cache-Fehlschlag
  • Wenn bei einem Schreibzugriff auf den Speicher ein Cache- Fehlschlag stattfindet, erzeugt die Cache-Steuerung CACHE CTL 343 weder CWH 375 noch CWL 377, und folglich werden die Daten in die Speicher-RAMs 365 geschrieben, aber nicht in die Cache-RAMs 313.
  • e. Lesezugriffe der CPU auf den Cache, während Schreibzugriffe der Ein-/Ausgabe I/O auf den Speicher stattfinden
  • Wie in der Erläuterung der Cache-RAMs 313 und der Speicher-RAMs 365 erwähnt, haben in einer bevorzugten Ausführungsform die RAMs, welche die Cache-RAMs 313 bilden, eine Zykluszeit von 45 ns, während die, welche die Speicher-RAMs 365 bilden, eine Zykluszeit von 150 ns haben. Folglich arbeitet der Cache 203 in einer bevorzugten Ausführungsform mit der dreifachen Geschwindigkeit des Speichers 215. Die bevorzugte Ausführungsform nützt diese Tatsache und die Tatsache daß, immer wenn Daten auf eine Adresse im Speicher 215 geschrieben werden, die ein entsprechendes Register im Cache 203 hat, sie auch in das Register im Cache 203 geschrieben werden, aus, indem sie es erlaubt, daß die CPU 201 weiterhin Lesezugriffe ausführt, während der Speicher 215 Daten von der Ein-/Ausgabe I/O 217 erhält.
  • Um Lesezugriffe von der CPU zu ermöglichen, während Schreibzugriffe der Ein-/Ausgabe I/O stattfinden, sieht eine bevorzugte Ausführungsform zwei Pfade vor, über die die geringwertigsten 12 Bits der Adresse an die Cache-RAMs 313 geliefert werden können und die höchstwertigen 8 Bits an den Vergleicher COMP 339. Der erste Pfad, der nur für Lesezugriffe der CPU verwendet wird, besteht aus Bus 225, Bus 307, MUX 309 und MUX 333; der zweite Pfad, der für alle Schreibzugriffe einschließlich derer, die sich aus einem Fehlschlag bei einem Lesezugriff ergeben, verwendet wird, besteht aus Bus MA 361, LA 329, Bus 330, MUX 309 und MUX 333. Die Adresse auf-dem ersten Pfad erhält man direkt vom Bus 225; die Adresse auf dem zweiten Pfad erhält man vom Bus 227, wenn der Schreibzugriff ein Schreibzugriff der Ein-/Ausgabe I/O ist, und vom Bus 225 über LA 327, wenn der Schreibzugriff ein Schreibzugriff der ,CPU ist oder sich aus einem Cache- Fehlschlag bei einem Lesezugriff der CPU ergibt. Während des Schreibzugriffs wird die Adresse auf dem zweiten Pfad im Latch LA 329 gehalten. Welche Adresse als Eingabe an den Vergleicher COMP 339 und an CAA 311 gewählt wird, wird durch das Signal CNT 344 bestimmt, das von der Cache-Steuerung CACHE CTL 343 in Reaktion auf einen Lesezugriff der CPU erzeugt wird. Wenn CNT 344 aktiv ist, wählen MUX 309 und MUX 333 Adreßbits vom Bus 307 aus; sonst wählen sie Adreßbits vom Bus 330 aus. Der Schreibzugriff auf die Cache-RAMs 313, der die Adresse auf Bus 330 verwendet, ist zeitlich so bemessen, daß er abgeschlossen ist, bevor der nächste die Adresse auf Bus 307 verwendende Lesezugriff stattfindet. Wenn ein Fehlschlag bei einem Schreibzugriff der CPU während eines Schreibzugriffs der Ein-/Ausgabe I/O stattfindet, bleibt EXT 221 aktiv, bis sowohl der Schreibzugriff der Ein-/Ausgabe I/O als auch das Laden der RAMs 313 mit den Daten an der Adresse, welche den Fehlschlag beim Lesezugriff der CPU verursacht hat, abgeschlossen sind.
  • In einer bevorzugten Ausführungsform hat die CPU 201 eine nichtverlängerte Zykluszeit von 200 ns und der Speicher 215 hat eine Zykluszeit von 400 ns. Die RAMs 313 können in einem Zeitraum von weniger als 150 ns geladen und dann gelesen werden. Daher sind, bei einem Lesen der CPU mit einem Treffer, während der letzten 50 ns des CPU-Zyklus gültige Daten für die CPU 201 auf Bus 221 verfügbar. Bei einem Lesen der CPU mit einem Fehlschlag wird die Adresse, die den Fehlschlag verursachte, vom Latch LA 327 auf Bus MA 361 und vom Latch LA 329 gegen Ende des CPU-Zyklus, der den Fehlschlag verursachte, gehalten. Das Signal RAS 346, das den Speicherzugriff beginnt, wird im Falle eines Fehlschlags am Ende des CPU-Zyklus erzeugt, und das Signal CAS wird 50 ns später erzeugt. Die von den Speicher-RAMs 365 gelesenen Daten erscheinen in weiteren 100 ns auf Bus 353 oder 355 und werden im Latch LA 335 oder LA 337 50 ns später gehalten. Von dort laufen die Daten zu den RAMs 313, die den Schreibzugriff in Reaktion auf die Adresse im Latch LA 329 ausführen, und zu OMUX 303. Die Daten sind für die CPU 201 600 ns nach Beginn des Lesezugriffs der CPU, der den Cache-Fehlschlag verursachte, verfügbar.
  • Bei einem Schreibzugriff der Ein-/Ausgabe I/O mit einem Treffer werden die Adressen vom Bus 227 im Latch LA 329 gehalten und nach den ersten 100 ns des Speicherzyklus für die RAMs 313 verfügbar gemacht. Der Vergleich wird ausgeführt und das Treffersignal HIT 100 ns später erzeugt. Die Daten vom Bus 353 oder 355 werden in die Speicher-RAMs 365 und LA 335 oder LA 339 150 ns später geschrieben, und in die Cache-RAMs 313 zum Ablauf von 400 ns. Die beim Schreiben in die Cache-RAMs 313 verwendete Adresse stammt vom Latch LA 329. Während der Schreibzugriff der Ein-/Ausgabe I/O mit dem Treffer stattfindet, können Lesezugriffe der CPU mit Treffern ausgeführt werden, welche über die Busse 225 und 307 erhaltene Adressen verwenden. Die Lesezugriffe der CPU werden 100 ns gegenüber den Schreibzugriffen versetzt. Wie oben festgestellt, benötigt der Lesezugriff der CPU mit einem Treffer 200 ns. Daher erhält ein Lesezugriff der CPU, der begonnen wurde, bevor der Schreibzugriff der Ein-/Ausgabe I/O angefangen hat, seine Daten 100 ns nach Beginn des Schreibzugriffs der Ein-/Ausgabe I/O, und der nächste Lesezugriff der CPU erhält seine Daten 300 ns nach Beginn des Schreibzugriffs der Ein-/Ausgabe I/O. Weil der folgende Lesezugriff der CPU seine Daten 500 ns nach Beginn des Schreibzugriffs der Ein/Ausgabe I/O erhält und die beim Schreibzugriff der Ein-/Ausgabe I/O erhaltenen Daten gegen Ende von 400 ns gespeichert worden sind, werden die Daten für den folgenden Lesezugriff der CPU verfügbar sein.
  • 4. Schlußbemerkung
  • Die obige Beschreibung der bevorzugten Ausführungsform hat offenbart, wie ein Fachmann bin Speichersystem bauen und verwenden kann, das einen vereinfachten Cache enthält, der bei jedem Schreibzugriff auf den Speicher automatisch aktualisiert wird. Die Erläuterung hat die Anordnung der Bauteile in einer bevorzugten Ausführungsform offenbart und ihr Zusammenwirken in Reaktion auf einen Lesezugriff der CPU, einen Schreibzugriff der CPU, einen Lesezugriff der Ein-/Ausgabe I/O und einen Schreibzugriff der Ein-/Ausgabe I/O. Jedoch kann die Erfindung in besonderen Formen, die von der hier offenbarten abweichen, ausgeführt werden, ohne von deren Geist oder deren grundlegenden Kennzeichen abzuweichen. Zum Beispiel können andere Ausführungsformen Speicher und Caches verwenden, die Daten nicht als Bytes oder Halbworte speichern, und in solchen Systemen können CWH 363 und CWL 365 durch ein einziges Signal ersetzt werden, und Signale wie zum Beispiel SWCTL 371 werden nicht benötigt. Andere Ausführungsformen können auch zwischen Cache und Speicher wie zwischen Speicher und Ein-/Ausgabe I/O oder Speicher und CPU Busse derselben Größe verwenden. In solchen Ausführungsformen werden die Teile der bevorzugten Ausführungsform, die sich auf die Auswahl von Halbworten oder Bytes beziehen, nicht benötigt. Die Erfindung hängt weiterhin in keiner Weise von solchen veränderlichen Werten wie Speicher- oder Cache-Größe, Adreßraumgröße oder Busbreite ab. Schließlich kann der Cache Daten nicht nur an CPUs ausgeben, sondern an jedes Gerät, das als Datensenke arbeiten kann.

Claims (10)

1. Cache-Speicher eines Daten verarbeitenden Systems, das eine CPU (201), einen Hauptspeicher (215) und den Cache-Speicher (203) umfaßt, wobei der Cache-Speicher (203) Kopien von bestimmten im Hauptspeicher (215) gespeicherten Daten speichert, und zwar an Plätzen im Cache, die den Plätzen im Hauptspeicher entsprechen, welche die bestimmten Daten enthalten, der Cache- Speicher (203) einen Speicher (205) zum Speichern von Datenfeldern und Markierungsfeldern und ein Datenlatch (213) umfaßt, wobei die Eingänge dieses Datenlatches Daten von der CPU (201) und vom Hauptspeicher (215) erhalten, die Ausgänge des Datenlatches (213) Daten an die CPU (201) und an den Speicher (205) liefern, der Cache-Speicher weiterhin eine Steuerung (211) umfaßt, die eine Adresse von einer Vorrichtung zum Liefern von Adressen (225) von der CPU (201) erhält, um ein Treffersignal HIT und ein Fehlschlagssignal (EXT) zu erzeugen, gekennzeichnet dadurch, daß die Vorrichtung zum Liefern von Adressen (225) mit dem Cache- Speicher (203) und mit dem Hauptspeicher (215) gemeinsam verbunden ist und daß der Cache-Speicher (203) und der Hauptspeicher (215) dasselbe Steuersignal (CPU MEM OP 233) von der CPU erhalten und daß, wenn ein lesender Speicherzugriff ausgeführt wird, der Cache-Speicher (203), wenn dem adressierten Speicherplatz ein Platz im Cache entspricht, auf die Adresse reagiert, indem er die Kopie aus dem Speicher (205) über einen Datenausgabebus (221) an die CPU ausgibt und den Hauptspeicher (215) daran hindert, auf die Adresse zu reagieren, und, wenn der adressierte Speicherplatz keinem Platz im Cache entspricht, auf die Adresse reagiert, indem er einen entsprechenden Platz im Cache schafft, die Daten vom Hauptspeicher (215) im Datenlatch (213) speichert und die im Latch gehaltenen Daten dem entsprechen geschaffenen Platz im Cache und gleichzeitig über den Datenausgabebus (221) der CPU zur Verfügung stellt.
2. Cache-Speicher (203) nach Anspruch 1, gekennzeichnet dadurch, daß die Daten vom Cache-Speicher (203) außerdem an das Datenlatch (213) ausgegeben werden und daß die vom Speicher (215), wenn der Speicher nicht gesperrt wird, ausgegebenen Daten über das Latch (213) an den Datenausgabebus (221) und auch an den Speicher (205) ausgegeben werden.
3. Cache-Speicher (203) nach Anspruch 1, gekennzeichnet dadurch, daß
die Vorrichtung zum Erzeugen des Schreibsignals (233, 235) mit dem Speicher (215) und der Steuervorrichtung (211) verbunden ist;
die CPU (201) mit dem Hauptspeicher (215) über einen Dateneingabebus (223) verbunden ist, wobei der Dateneingabebus (223) auch mit dem Eingang des Datenlatches (213) verbunden ist;
der Speicher (215) auf ein Schreibsignal der Vorrichtung zum Erzeugen des Schreibsignals (233, 235) und auf die Adresse reagiert, indem er die auf dem Dateneingabebus (223) bereitgestellten Daten an dem durch die Adresse spezifizierten Platz im Hauptspeicher speichert;
und der Cache-Speicher (203) auf das Schreibsignal und auf die Adresse, wenn der Cache-Speicher (203) einen dem adressierten Platz im Hauptspeicher entsprechenden Platz enthält, reagiert, indem er die im Latch (213) gespeicherten Daten empfängt und die empfangenen Daten im entsprechenden Platz im Cache abspeichert.
4. Cache-Speicher (203) nach Anspruch 1, gekennzeichnet dadurch, daß
das Datenlatch (213) eine Vorrichtung zum Halten der Daten (335, 337) enthält, die mit dem Speicher (205) und dem Hauptspeicher (215) verbunden ist, um alle in den Hauptspeicher (215) eingegebenen Daten zu empfangen und zu halten; und
eine Vorrichtung (339, 343), die die Adresse einer gespeicherten Kopie der Daten ermittelt und darauf reagiert, indem sie die von der Vorrichtung zum Halten von Daten (335, 337) gehaltenen Daten in dem Platz der Kopie innerhalb des Speichers (205) lädt.
5. Cache-Speicher (203) nach Anspruch 4, wobei der Hauptspeicher (215) Daten als Reaktion auf eine Adresse ausgibt und die Vorrichtung zum Halten von Daten (335, 337) weiterhin alle vom Hauptspeicher (215) ausgegebenen Daten erhält; gekennzeichnet dadurch, daß die Ermittlungsvorrichtung (339, 343) auch erkennt, daß die vom Hauptspeicher (215) erhaltene Adresse nicht die Adresse von kopierten Daten ist, und, als Reaktion darauf, die gehaltenen Daten von der Vorrichtung zum Halten von Daten (335, 337) an einen Platz im Speicher (205) lädt, der durch die Adresse, die auch der Hauptspeicher (215) erhält, adressierbar ist.
6. Cache-Speicher (203) nach Anspruch 1, gekennzeichnet dadurch, daß
jede Adresse ein Datenbyte spezifiziert;
jeder Platz im Hauptspeicher n benachbarte Datenbytes enthält und jeder Platz im Cache eine Kopie der n benachbarten Datenbytes enthält;
der Datenausgabebus (221) die n benachbarten Bytes, die die Kopie der adressierten Daten enthalten, vom Speicher (205) erhält, wenn die Adresse einen Platz im Hauptspeicher spezifiziert, der einen entsprechenden Platz im Cache hat, und die n benachbarten Bytes vom Hauptspeicher (215) erhält, wenn die Adresse einen Platz im Hauptspeicher spezifiziert, der keinen entsprechenden Platz im Cache hat; und
der Cache-Speicher (203) weiterhin eine Vorrichtung zur Auswahl von Bytes (303) enthält, die mit der Vorrichtung zum Liefern von Adressen (225) und dem Datenausgabebus (221) verbunden ist, um eines der erhaltenen n Bytes, wie durch die Adresse bestimmt, auszuwählen und auszugeben.
7. Cache-Speicher (203) nach Anspruch 1, gekennzeichnet dadurch, daß
jede Adresse ein Halbwort spezifiziert, das n Datenbits enthält;
jeder Platz im Hauptspeicher zwei Halbwörter enthält und jeder entsprechende Platz im Cache eine Kopie der zwei Halbwörter enthält;
der Datenausgabebus (221) eine Kopie der beiden Halbwörter der adressierten Daten vom Speicher (205) erhält, wenn die Adresse einen Speicherplatz spezifiziert, der einen entsprechenden Platz im Cache hat, und die zwei Halbwörter der adressierten Daten vom Hauptspeicher (215) erhält, wenn die Adresse einen Speicherplatz spezifiziert, der keinen entsprechenden Platz im Cache hat; und
der Cache-Speicher (203) weiterhin eine Vorrichtung zur Auswahl von Halbwörtern (303) enthält, die mit der Vorrichtung zum Liefern von Adressen (225) und dem Datenausgabebus (221) verbunden ist, um eines der Halbwörter, wie durch die Adresse bestimmt, auszuwählen und auszugeben.
8. Cache-Speicher (203) nach Anspruch 1, gekennzeichnet dadurch, daß
die Vorrichtung zum Liefern von Adressen (225) eine Vorrichtung (307, 309, 336) zum Liefern von Adressen zum Lesen des Caches umfaßt, um eine Adresse zu liefern, auf die der Cache-Speicher (203) reagiert, indem er die Kopie auf dem Datenausgabebus (221) ausgibt, wenn der Speicher (205) einen der Adresse entsprechenden Cache-Platz hat und
eine Vorrichtung (327, 329) zum Liefern von Adressen zum Schreiben des Caches und Lesen des Speichers umfaßt, um die Adresse zu halten, wenn der Speicher (205) keinen entsprechenden Cache-Platz hat, und die gehaltene Adresse als die Adresse zu liefern, auf die der Hauptspeicher (215) reagiert und auf die der Cache-Speicher (203) reagiert, wenn der Speicher (205) keinen der Adresse entsprechenden Platz hat.
9. Speicher (203) nach Anspruch 3, gekennzeichnet dadurch, daß
eine erste Quelle/Senke (201) mit dem Datenausgabebus (221) und dem Dateneingabebus (223) verbunden ist und Daten vom Datenausgabebus (221) erhält und Daten an den Dateneingabebus (223) liefert;
eine zweite Quelle/Senke (217) mit dem Dateneingabebus (223) verbunden ist, um sowohl Daten vom Dateneingabebus (223) zu empfangen als auch Daten an ihn zu liefern;
die Vorrichtung zum Liefern von Adressen eine erste Vorrichtung zum Liefern von Adressen (225) umfaßt, um Adressen von der ersten Datenquelle/-senke zu liefern, und
eine zweite Vorrichtung zum Liefern von Adressen (227) umfaßt, um Adressen von der zweiten Datenquelle/-senke zu liefern;
der Cache-Speicher (203) eine Vorrichtung zum Empfangen von Adressen (309, 327, 329) enthält, die mit der ersten und zweiten Vorrichtung zum Liefern von Adressen (225, 227) verbunden ist, um eine Adresse zu empfangen, auf die der Cache-Speicher (203) reagiert, indem er die Kopie nur an die erste Quelle/Senke (201) ausgibt, und um eine Adresse zu empfangen, auf die der Cache- Speicher (203) reagiert, indem er die entweder durch die erste oder die zweite Datenquelle/-senke (201, 217) im Datenlatch (213) gespeicherten Daten empfängt; und
der Hauptspeicher (215) mit der ersten und der zweiten Vorrichtung zum Liefern von Adressen (225, 227) verbunden ist, die von jeder dieser Vorrichtungen gelieferten Adressen empfängt und darauf reagiert, wenn er nicht gesperrt ist, wodurch der Cache-Speicher (203) die Kopie als Reaktion auf die von der ersten Vorrichtung zum Liefern von Adressen (225) erhaltene Adresse ausgibt, während der Hauptspeicher (215) auf eine von der zweiten Vorrichtung zum Liefern von Adressen (227) erhaltene Adresse anspricht.
10. Cache-Speicher (203) nach Anspruch 3, gekennzeichnet dadurch, daß
jede Adresse ein Datenbyte spezifiziert;
jeder Platz im Hauptspeicher (215) zwei Halbwörter enthält, wobei jedes zwei Datenbytes enthält und jeder entsprechende Platz im Speicher (205) eine Kopie der beiden Halbwörter erhält;
wobei das Datenlatch (213) enthält:
einen Bus (323) für das erste Halbwort, der mit dem Speicher (205) verbunden ist und ein Latch (335) für das erste Halbwort enthält, um ein erstes Halbwort zu halten;
einen Bus (325) für das zweite Halbwort, der mit dem Speicher (205) verbunden ist und ein Latch (337) für das zweite Halbwort enthält, um ein zweites Halbwort zu halten;
der Hauptspeicher (215) eine Steuerung (345) enthält, die auf die Adresse und auf ein Schreibsignal anspricht, um den Hauptspeicher (215) zu veranlassen, vom Dateneingabebus (223) zu empfangen und das durch die Adresse spezifizierte Halbwort auf einen Speicherbus (353) für das erste Halbwort oder auf einen Speicherbus (355) für das zweite Halbwort auszugeben, wie durch die Adresse spezifiziert; und
der Cache-Speicher (203) eine Steuervorrichtung (343) enthält, die auf die Adresse und das Schreibsignal anspricht, um das Datenlatch (213) zu veranlassen, vom Dateneingabebus (223) zu empfangen und das Halbwort an den Speicher (205) auszugeben, und um den Speicher (205) zu veranlassen, das Halbwort in den Platz zu speichern, der dem durch die Adresse spezifizierten Speicherplatz entspricht.
DE3689488T 1985-02-22 1986-02-14 Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher. Expired - Lifetime DE3689488T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/704,359 US4685082A (en) 1985-02-22 1985-02-22 Simplified cache with automatic update

Publications (2)

Publication Number Publication Date
DE3689488D1 DE3689488D1 (de) 1994-02-17
DE3689488T2 true DE3689488T2 (de) 1994-07-14

Family

ID=24829145

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3689488T Expired - Lifetime DE3689488T2 (de) 1985-02-22 1986-02-14 Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher.

Country Status (6)

Country Link
US (1) US4685082A (de)
EP (1) EP0192202B1 (de)
JP (1) JP2619859B2 (de)
AU (1) AU580382B2 (de)
CA (1) CA1255395A (de)
DE (1) DE3689488T2 (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4860192A (en) * 1985-02-22 1989-08-22 Intergraph Corporation Quadword boundary cache system
US4884197A (en) * 1985-02-22 1989-11-28 Intergraph Corporation Method and apparatus for addressing a cache memory
US4899275A (en) * 1985-02-22 1990-02-06 Intergraph Corporation Cache-MMU system
US5255384A (en) * 1985-02-22 1993-10-19 Intergraph Corporation Memory address translation system having modifiable and non-modifiable translation mechanisms
US4933835A (en) * 1985-02-22 1990-06-12 Intergraph Corporation Apparatus for maintaining consistency of a cache memory with a primary memory
KR950008676B1 (ko) * 1986-04-23 1995-08-04 가부시기가이샤 히다찌세이사꾸쇼 반도체 메모리 장치 및 그의 결함 구제 방법
US4797810A (en) * 1986-06-26 1989-01-10 Texas Instruments Incorporated Incremental, multi-area, generational, copying garbage collector for use in a virtual address space
EP0259967B1 (de) * 1986-08-01 1994-03-23 Fujitsu Limited Verzeichnisspeicher
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
US4972316A (en) * 1987-03-30 1990-11-20 International Business Machines Corporation Method of handling disk sector errors in DASD cache
US4851993A (en) * 1987-04-20 1989-07-25 Amdahl Corporation Cache move-in bypass
US5155833A (en) * 1987-05-11 1992-10-13 At&T Bell Laboratories Multi-purpose cache memory selectively addressable either as a boot memory or as a cache memory
JP2960415B2 (ja) * 1987-05-22 1999-10-06 株式会社日立製作所 記憶保護方法および装置
US5179687A (en) * 1987-09-26 1993-01-12 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device containing a cache and an operation method thereof
US5008816A (en) * 1987-11-06 1991-04-16 International Business Machines Corporation Data processing system with multi-access memory
US5184320A (en) * 1988-02-12 1993-02-02 Texas Instruments Incorporated Cached random access memory device and system
US5230067A (en) * 1988-05-11 1993-07-20 Digital Equipment Corporation Bus control circuit for latching and maintaining data independently of timing event on the bus until new data is driven onto
US4939641A (en) * 1988-06-30 1990-07-03 Wang Laboratories, Inc. Multi-processor system with cache memories
US5097409A (en) * 1988-06-30 1992-03-17 Wang Laboratories, Inc. Multi-processor system with cache memories
US4928225A (en) * 1988-08-25 1990-05-22 Edgcore Technology, Inc. Coherent cache structures and methods
US4945512A (en) * 1988-09-07 1990-07-31 Unisys Corporation High-speed partitioned set associative cache memory
US5201041A (en) * 1988-12-29 1993-04-06 International Business Machines Corporation Cache bypass apparatus
DE68921332T2 (de) * 1989-01-13 1995-08-10 Ibm Rechneranordnungen mit Ein-/Ausgabecachespeicher.
EP0618535B1 (de) * 1989-04-13 1999-08-25 SanDisk Corporation EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher
US7447069B1 (en) 1989-04-13 2008-11-04 Sandisk Corporation Flash EEprom system
CA2066454C (en) * 1989-09-11 1998-08-25 Bhikoo J. Patel Apparatus and method for maintaining cache/main memory consistency
JP2826857B2 (ja) * 1989-12-13 1998-11-18 株式会社日立製作所 キャッシュ制御方法および制御装置
EP0435475B1 (de) * 1989-12-22 1996-02-07 Digital Equipment Corporation Hochleistungsrasterpuffer- und -cachespeicheranordnung
US5467460A (en) * 1990-02-14 1995-11-14 Intel Corporation M&A for minimizing data transfer to main memory from a writeback cache during a cache miss
US5454093A (en) * 1991-02-25 1995-09-26 International Business Machines Corporation Buffer bypass for quick data access
JPH0520197A (ja) * 1991-07-09 1993-01-29 Hitachi Ltd 記憶管理システム及びマイクロプロセツサ
GB9424100D0 (en) * 1994-11-29 1995-01-18 Accelerix Ltd Improved memory devices
US5752262A (en) * 1996-07-25 1998-05-12 Vlsi Technology System and method for enabling and disabling writeback cache
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory
US6263408B1 (en) * 1999-03-31 2001-07-17 International Business Machines Corporation Method and apparatus for implementing automatic cache variable update
US7035989B1 (en) 2000-02-16 2006-04-25 Sun Microsystems, Inc. Adaptive memory allocation
US6647546B1 (en) 2000-05-03 2003-11-11 Sun Microsystems, Inc. Avoiding gather and scatter when calling Fortran 77 code from Fortran 90 code
US6802057B1 (en) 2000-05-03 2004-10-05 Sun Microsystems, Inc. Automatic generation of fortran 90 interfaces to fortran 77 code
US6910107B1 (en) * 2000-08-23 2005-06-21 Sun Microsystems, Inc. Method and apparatus for invalidation of data in computer systems
US7406681B1 (en) 2000-10-12 2008-07-29 Sun Microsystems, Inc. Automatic conversion of source code from 32-bit to 64-bit
US6957208B1 (en) 2000-10-31 2005-10-18 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for performance analysis using semantic knowledge
WO2003001406A1 (en) * 2001-06-25 2003-01-03 Nokia Corporation Copying method and system for copying cells in a database
US7454581B2 (en) * 2004-10-27 2008-11-18 International Business Machines Corporation Read-copy update grace period detection without atomic instructions that gracefully handles large numbers of processors
WO2015170550A1 (ja) * 2014-05-09 2015-11-12 ソニー株式会社 記憶制御装置、記憶装置、および、その記憶制御方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4141067A (en) * 1977-06-13 1979-02-20 General Automation Multiprocessor system with cache memory
JPS5953631B2 (ja) * 1979-08-24 1984-12-26 株式会社日立製作所 記憶制御装置
US4349871A (en) * 1980-01-28 1982-09-14 Digital Equipment Corporation Duplicate tag store for cached multiprocessor system
JPS57105879A (en) * 1980-12-23 1982-07-01 Hitachi Ltd Control system for storage device
US4445177A (en) * 1981-05-22 1984-04-24 Data General Corporation Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions
JPS58114387A (ja) * 1981-12-25 1983-07-07 Fujitsu Ltd バツフア・メモリを有するデ−タ処理装置
JPS6010366A (ja) * 1983-06-30 1985-01-19 Mitsubishi Electric Corp 主記憶装置

Also Published As

Publication number Publication date
AU580382B2 (en) 1989-01-12
DE3689488D1 (de) 1994-02-17
EP0192202A2 (de) 1986-08-27
CA1255395A (en) 1989-06-06
AU5287286A (en) 1986-10-16
EP0192202B1 (de) 1994-01-05
JPS61195441A (ja) 1986-08-29
US4685082A (en) 1987-08-04
JP2619859B2 (ja) 1997-06-11
EP0192202A3 (en) 1989-05-24

Similar Documents

Publication Publication Date Title
DE3689488T2 (de) Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher.
DE2350215C2 (de) Rechenanlage
DE3750107T2 (de) Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt.
DE69031411T2 (de) Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff
DE69432314T2 (de) Cachespeicher mit aufgeteiltem pegel
DE3587439T2 (de) Gemeinsam benutzter Mehrprozessor-Pipeline-Cachespeicher.
DE68926936T2 (de) Vorrichtung und Technik für Burstprogrammierung
DE3688192T2 (de) Seitenorganisierter cachespeicher mit virtueller adressierung.
DE68910391T2 (de) Verfahren zum Speicherdatenzugriff.
DE2350225C2 (de)
DE69128107T2 (de) Busanordnung für Speicherzugriff
DE68923403T2 (de) Verfahren und Anordnung zur Adressierung eines Seitenmodus-Speichers in einem Computersystem.
EP0013737B1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE3852695T2 (de) Multiprozessorsystem mit mehreren Speichern.
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE68926036T2 (de) Speicherkonfiguration zur Verwendung für Schnittstellenbildung zwischen einer Systemsteuereinheit für ein Multiprozessorsystem und dem Hauptspeicher
DE3486161T2 (de) Datenverarbeitungssystem mit Datenkohärenz.
DE69029173T2 (de) Mikroprozessor
DE69203842T2 (de) Speichersteuerungsvorrichtung mit Snoop-Mechanismus.
DE68902193T2 (de) Datenspeicheranordnung.
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE68907518T2 (de) Inhaltsadressierte Speicheranordnung.
DE68923026T2 (de) Speicherdiagnosegerät und Verfahren.
DE68928343T2 (de) Schreib-Lese/Schreib-Weitergabe-Speichersubsystemzyklus
DE1286789B (de) Einrichtung an einem elektronischen Ziffernrechner zum schnellen Datenaustausch zwischen der Verarbeitungseinheit und dem zentralen Speicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: WANG LABORATORIES, INC., BILLERICA, MASS., US

8327 Change in the person/name/address of the patent owner

Owner name: SAMSUNG ELECTRONICS CO. LTD., SUWON, KYUNGKI, KR