DE4291778B4 - Cache-Speichereinrichtung für ein Mikroprozessorsystem mit einem Cache-Speicher mit asynchronem Datenpfad - Google Patents

Cache-Speichereinrichtung für ein Mikroprozessorsystem mit einem Cache-Speicher mit asynchronem Datenpfad Download PDF

Info

Publication number
DE4291778B4
DE4291778B4 DE4291778A DE4291778A DE4291778B4 DE 4291778 B4 DE4291778 B4 DE 4291778B4 DE 4291778 A DE4291778 A DE 4291778A DE 4291778 A DE4291778 A DE 4291778A DE 4291778 B4 DE4291778 B4 DE 4291778B4
Authority
DE
Germany
Prior art keywords
memory
cpu
bus
cache
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE4291778A
Other languages
English (en)
Other versions
DE4291778T1 (de
Inventor
Peter D. Aloha Macwilliams
Clair C. Aloha Webb
Robert L. Portland Farrell
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE4291778B4 publication Critical patent/DE4291778B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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)
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache

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)

Abstract

Cache-Speichereinrichtung (17) für ein Mikroprozessorsystem mit einer mit einem CPU-Bus (14) gekoppelten CPU (10), wobei der CPU-Bus (14) synchron zu einem CPU-Takt arbeitet, einem Hauptspeicher, einem mit dem Hauptspeicher gekoppelten und asynchron zum CPU-Takt arbeitenden Speicherbus (15) und einem Cache-Speicher-Subsystem (12, 13, 18), wobei das Cache-Speicher-Subsystem (12, 13, 18) die Cache-Speichereinrichtung (17) aufweist und die Cache-Speichereinrichtung (17) als integrierte Schaltung ausgeführt ist, welche aufweist:
eine Cache-Speichermatrix (22) zum Speichern von Daten einer vorgegebenen Datenzeilenlänge;
eine mit dem CPU-Bus (14) gekoppelte CPU-Bus-Schnittstelle (20, 21, 23) mit einer CPU-Steuereinrichtung (21) und einem CPU-Puffer (20) zum Übertragen von Daten zum und vom CPU-Bus (14), wobei der CPU-Puffer (20) mit der Cache-Speichermatrix (22) gekoppelt ist, wobei Daten mit der vorgegebenen Datenzeilenlänge mit nur einem Zugriff in den CPU-Puffer übertragen und aus dem CPU-Puffer abschnittsweise auf den CPU-Bus (14) gemultiplext werden,
eine mit dem Speicherbus (15) gekoppelte Speicherbus-Schnittstelle mit mindestens einem Pufferspeicher...

Description

  • Die vorliegende Erfindung betrifft eine Cache-Speichereinrichtung für ein Mikroprozessorsystem mit einer mit einem CPU-Bus gekoppelten CPU, wobei der CPU-Bus synchron zu einem CPU-Takt arbeitet, einem Hauptspeicher, einem mit dem Hauptspeicher gekoppelten und asynchron zum CPU-Takt arbeitenden Speicherbus und einem Cache-Speicher-Subsystem, wobei das Cache-Speicher-Subsystem die Cache-Speichereinrichtung aufweist und die Cache-Speichereinrichtung als integrierte Schaltung ausgeführt ist.
  • In ihrer historischen Entwicklung wuchsen die Anforderungen an die Mikroprozessortechnologie mit einer höheren Geschwindigkeit als die an die unterstützenden Technologien, wie beispielsweise DRAM und TTL/programmierbare Logik. Jüngere Trends verschlimmern dieses Mißverhältnis weiter auf die folgenden Weisen. Zunächst erreichen die Mikroprozessortaktraten schnell die Taktraten der unterstützenden Standardlogik und übersteigen sie in einigen Fällen. Ferner nimmt die Anzahl der Takte pro Befehl rasch ab, was zu einer sehr hohen Bandbreitenanforderung an den Speicher führt. Neuere Konstruktionen, wie beispielsweise RISC-Architekturen erfordern sogar noch mehr Speicherbandbreite, um den gleichen Arbeitsumfang auszuführen. Der Speicherbandbreitenbedarf wurde von Bauelementen, wie beispielsweise Koprozessoren und Multiprozessoren, durch die Notwendigkeit eines direkten Speicherzugriffs (DMA) weiter verschlimmert. Schließlich nimmt die Geschwindigkeit zu, mit welcher neue Bauelemente in den Markt eingeführt werden, was zusätzlich die o.g. Umstände verschlimmert.
  • Als Folge dieser Trends entstanden zwei starke Leistungsengpässe, die die Art der Konstruktion von Systemen noch immer beeinflussen. Die Speicherbandbreite hat als Leistungsgrenze bereits die Verwendung von Cache-Speichern in vielen Mikroprozessorsystemen erzwungen. Beispielsweise ist die Verwendung von Cache-Speichern in der von der Intel Corporation hergestellten 80386-Generation von Mikroprozessoren allgemein üblich. Auch Intels 80486-, i860- und i860XP-Mikroprozessoren enthalten On-Chip-Cache-Speicher. Es ist klar, daß weitere Änderungen der Speicherhierarchie (primäre Cache-Speicher, sekundäre Cache-Speicher, DRAM-Architekturen usw.) erforderlich sein werden, um bei zukünftigen Generationen Leistungserhöhungen zu stützen.
  • Ein weiterer Leistungsengpaß sind die Taktrate und Eingangs/Ausgangs(I/O)-Zeitgaben. Es ist klar geworden, daß die zum weiteren Steigern der Mikroprozessortaktrate (und der resultierenden I/O-Zeitgaben) erforderlichen Investitionen nicht über alle Komponenten im System gehalten werden kann. Diese Faktoren haben bereits den Einsatz von asynchronen Schnittstellen zum Isolieren des Frequenzskalierproblems auf eine Teilmenge von Systemkomponenten erzwungen. Es ist klar, daß in Zukunft die Hochgeschwindigkeits-CPU-Schnittstellen um eine noch enger gesteuerte Spezifikation konstruiert werden müssen, um das erwünschte Leistungsniveau zu erreichen.
  • Charakteristisch für die Nachteile älterer Lösungen ist deren Unfähigkeit zur Unterstützung gleichzeitiger Operationen sowohl an der CPU- als auch der Speicherschnittstelle. D.h., für jeden Zugriff zum Lese/Schreib-Speicherfeld wird nur ein Datenelement übertragen. Das bedeutet, daß auf das Cache-SRAM-Feld oder die Cache-SRAM-Matrix wiederholt zugegriffen werden muß, um alle Elemente einer Cache-Zeile zu erhalten, wobei der Zugriff über die andere Schnittstelle blockiert wird. Alternativ kann eine Bank von SRAMs zusammen mit externen Multiplexern verwendet werden, jedoch nur unter dem beträchtlichen Aufwand zusätzlicher Komplexität und Kosten.
  • Ein weiterer üblicher Nachteil der bekannten Cache-Speicher besteht darin, daß jede erforderliche Übertragung synchronisiert sein muß. Mit anderen Worten, es muß eine Quittierung synchron mit dem Mikroprozessortakt auftreten, bevor von dem Speicherbus ankommende Daten an den CPU-Bus übertragen werden können. Dieser Prozeß muß für jede Datenübertragung vom Speicherbus wiederholt werden. Das heißt, die Datenübertragung zwischen dem Speicher und den CPU-Bussen erfordert einen synchronen Betrieb. Solch ein Betrieb stellt eine ernste Belastung für die Leistungsfähigkeit des Computersystems, besonders bei erhöhten CPU-Taktraten dar.
  • Ein Mikroprozessorsystem mit einem Cache-Speicher ist aus EP 0 375 864 A2 bekannt. Zur Geschwindigkeitserhöhung sind dort verschiedene Puffer an den Schnittstellen des Cache-Speichers zum CPU-Bus und zum Speicherbus vorgesehen. Aus der europäischen Patentanmeldung 0 395 523 A2 ist ferner eine Speicheranordnung mit einem Dual-Port-Daten-Cache-Speicher, einer Schnittstelle zu einer Wirts-CPU, einer Schnittstelle zu einem externen Speicher und weiteren Schnittstelleneinrichtungen bekannt, wobei sämtliche dieser Schnittstellen über zwei Busse mit dem Cache-Speicher kommunizieren. Eine Buszuteilungssteuereinrichtung regelt den Busverkehr. Die Anordnung gestattet die gleichzeitige Übertragung von Daten von der Wirts-CPU-Schnittstelle zum Cache-Speicher über einen der beiden Busse und zwischen der Externen-Speicher-Schnittstelle zum Cache-Speicher über den anderen Bus. Über einen der Busse ist auch ein direkter Austausch zwischen der CPU-Schnittstelle und der Schnittstelle zum externen Speicher möglich.
  • Aufgabe der Erfindung ist es, eine Cache-Speichereinrichtung zur Verfügung zu stellen, die eine höhere Verarbeitungsgeschwindigkeit, insbesondere eine höhere Geschwindigkeit des Datenaustauschs an der CPU-Schnittstelle sowie einen höheren Grad der Gleichzeitigkeit des Datenaustausch zwischen CPU-Bus, Speicherbus und Cache-Speichermatrix gestattet.
  • Diese Aufgabe wird erfindungsgemäß durch eine Cache-Speichereinrichtung mit den Merkmalen des Anspruchs 1 gelöst.
  • Die Erfindung ist mittels einer integrierten Cache-Speicher-Schaltung realisiert, die eine Cache-SRAM-Speichermatrix enthält.
  • Der CPU-Bus arbeitet synchron mit einem CPU-Taktsignal. Das Computersystem enthält auch einen Speicherbus, der mit einem Hauptspeicher gekoppelt ist. Die integrierte Cache-Speicher-Schaltung hält temporäre Teile des Hauptspeichers mittels eines statischen Direktzugriffsspeichers(SRAM)-Feldes (Matrix).
  • Eine CPU-Bus-Schnittstelle ist enthalten, die ein CPU-MUX/Puffer-Mittel zum Optimieren von Burst-Lese- und -Schreib-Operationen über den CPU-Bus aufweist. Die CPU-MUX/Puffer-Mittel ermöglichen es, daß eine ganze Cache-Zeile bei einem einzigen Zugriff des SRAM-Feldes gelesen/geschrieben wird. Eine Steuereinrichtung wird in der CPU-Bus-Schnittstelle zum Steuern der CPU-Bursts in der von der CPU definierten Reihenfolge verwendet. Gültig-Bits sind in dem CPU-Puffer integriert, um partielle Zeilen-Schreiboperationen und -zuweisungen zu unterstützen.
  • Lange Cache-Zeilen werden auf der Speicherseite ebenfalls unterstützt. In dem derzeitigen Ausführungsbeispiel erfordert das Cache-Konsistenzprotokoll, daß die Speicherbus-Cache-Zeile größer oder gleich der CPU-Cache-Zeilengröße ist. Auf diese Weise kann die vorliegende Erfindung 1x-, 2x-, 4x-, 8x- oder größere Zeilenverhältnisse unterstützen. Größere Speicherbusbreiten werden auch deshalb erleichtert, um entweder größere Cache-Zeilen zu unterstützen oder der relativ niedrigeren Geschwindigkeit des Speicherbusses Rechnung zu tragen. Derzeit werden 1x, 2x, 4x-Breitenverhältnisse unterstützt.
  • Die integrierte Cache-Speicher-Schaltung enthält außerdem eine Speicherbus-Schnittstelle mit mehreren internen Puffern, die zum Ausführen von Speicherbus-Leseoperationen, Rückschreiboperationen und Snoop-Operationen verwendet werden. Die Speicherbus-Schnittstelle enthält auch Nachführ-Logikmittel, um den geeigneten internen Puffer zur Benutzung während eines bestimmten Speicherbuszyklusses zu bestimmen.
  • Ein Schlüsselmerkmal der vorliegenden Erfindung ist die Integrierung eines Datenpfads zwischen der CPU-Bus-Schnittstelle und der Speicherbus-Schnittstelle zum transparenten Übertragen von Daten entweder vom Speicherbus an den CPU-Bus, oder zum Datenübertragen vom CPU-Bus zu dem Speicherbus. Diese Übertragungen sind in dem Sinne transparent, daß sie ausgeführt werden können, ohne das SRAM-Feld zu stören (d.h., der Datenpfad ist getrennt von den Pfaden, die das SRAM-Feld mit der CPU-Bus-Schnittstelle oder der Speicherbus-Schnittstelle koppeln). Mit anderen Worten, die Erfindung stellt einen Dual-Port-Zugriff auf ein Cache-Datenspeicher-Feld mit einem Bypaß-Weg für jene Zyklen zur Verfügung, die den Cache-Speicher nicht involvieren. Dieses Merkmal ist zur Unterstützung gleichzeitiger Operationen und zum Entkoppeln der Speicherbus- und CPU-Bus-Übertragungsprotokolle konzipiert.
  • Aktivitäten zwischen der Speicherbus-Schnittstelle und anderen Elementen des Cache-Speichers treten synchron zu dem CPU-Taktsignal auf, während Aktivitäten zwischen der Speicherbus-Schnittstelle und dem Speicherbus asynchron zu dem CPU-Taktsignal ablaufen. Eine unabhängige asynchrone Datenübertragungssteuerung auf den CPU- und Speicherseiten entkoppelt den relativ schnellen CPU-Bus von dem langsameren Speicherbus. Das ermöglicht unabhängige (d.h. jede Datenübertragung muß nicht mit der CPU synchronisiert werden) und gleichzeitige Operationen von sowohl der Speicherbus- als auch der CPU-Bus-Schnittstelle, wobei die Leistung des Cache-Subsystems wesentlich erhöht wird.
  • Mehrere Cache-Zeilen breite Puffer unterstützen die gleichzeitige Operation von beiden Ports. Vorzugsweise enthalten diese Puffer einen einzigen CPU-Puffer und vier Speicherbus-Schnittstellen-Puffer – zwei für CPU-zu-Speicher- Übertragungen, einen für Ersetze-Rückschreiboperationen, und einen für Snoop-Rückschreib-Operationen. Es wird eine größere Gleichzeitigkeit (Konkurrenz) erzielt, da diese Puffer eine Schnittstelle von der Breite einer ganzen Cache-Zeile zu dem Cache-Feld haben, wodurch sie mit einem einen einzigen Takt benötigenden Zugriff einen Mehr-Takt-Burst an den Pins ermöglichen.
  • Die vorliegende Erfindung unterstützt einen Mehr-Weg-Cache-Speicher mit minimalem Leistungsnachteil durch Verwendung einer MRU-Vorhersage. Der Datenpfad unterstützt die MRU-Vorhersage, indem bei den CPU-Busoperationen auf mehrere Wege gleichzeitig zugegriffen wird. Das Multiplexen für den richtigen Weg wird an der letzten Ebene durchgeführt, um die zum Zugreifen der MRU (und Bereitstellen der neuen) verfügbare Zeit auf ein Maximum zu bringen. Ein MRU-Bit wird in dem Feld gespeichert, um auf den zuletzt benutzten Weg für jeden Satz hinzuweisen. Die Cache-Steuereinrichtung enthält eine Kopie der MRU (Umkehrung der für Ersetzungen verwendeten LRU) um zu bestimmen, ob die Vorhersage richtig ist. Bei dem bevorzugten Ausführungsbeispiel implementiert die Erfindung einen Zwei-Wege-Betrieb; jedoch ist das Protokoll auf mehr als zwei Wege erweiterbar.
  • Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
  • Die vorliegende Erfindung wird anhand der unten gegebenen ausführlichen Beschreibung und den zugehörigen Zeichnungen der bevorzugten Ausführungsbeispiele der Erfindung besser verstanden werden; die Erfindung soll jedoch nicht auf das spezielle Ausführungsbeispiel beschränkt sein.
  • 1 zeigt ein Blockschaltbild des Cache-Subsystems des gegenwärtig bevorzugten Ausführungsbeispiels der Erfindung.
  • 2 ist ein Blockschaltbild des gegenwärtig bevorzugten Ausführungsbeispiels des integrierten SRAM-Cache-Speichers.
  • 3 zeigt Einzelheiten des Datenpfads zum Speicherbus entsprechend dem gegenwärtig bevorzugten Ausführungsbeispiel der Erfindung.
  • 4 zeigt Einzelheiten des CPU-Datenpfads für das gegenwärtig bevorzugte Ausführungsbeispiel der Erfindung.
  • 5 zeigt den zeitlichen Verlauf einer Kurvenform für einen nicht-pipelineverarbeiteten CPU-Lese-Treffer-Zyklus.
  • 6 zeigt drei nicht-pipelineverarbeitete Schreib-Treffer-Zyklen.
  • 7 zeigt einen Speicher-Lese-Zyklus, wobei das Lesen ein Cache-speicherbarer Fehlversuch (miss) ist.
  • 8 zeigt eine Lese-Fehlversuch-Folge, wobei der nächste Zyklus nach einem Speicher-Lesen der gleichen Zeile wie das vorherige Lesen gilt und das Speicher-Lesen noch nicht mit dem SRAM-Feld fertig ist.
  • 9 zeigt ein Rückschreiben für Snoop-Operationen, wobei die Cache-Steuereinrichtung die vorliegende Erfindung zum Übertragen der modifizierten Daten auf den Speicherbus veranlaßt, sobald die Cache-Steuereinrichtung einen Snoop-Treffer empfängt.
  • 10 zeigt einen zeitlichen Signalverlauf für ein Speicher-Lesen, bei dem eine neue Zeile in einen Cache-Speicherplatz gerichtet wird, der modifizierte Daten hat. Infolgedessen wird eine Ersetzung durchgeführt.
  • 11 zeigt einen zeitlichen Signalverlauf eines Speicherbus-Durchschreibzyklus.
  • 12 zeigt einen zeitlichen Signalverlauf eines Durchschreibens mit Zuweisung, bei dem nach einem Schreib-Fehlversuch eine neue Zeile in dem Cache-Speicher zugewiesen wird.
  • 13 zeigt einen Burst-Lesezyklus in getaktetem Modus an der Speicherschnittstelle.
  • 14 zeigt Rück-zu-Rück-Speicher-Lesezyklen im getakteten Modus an der Speicherschnittstelle.
  • 15 zeigt einen Speicher-Lesezyklus mit Wartezuständen an der Speicherschnittstelle.
  • 16 zeigt den Neustart des Speicher-Lesezyklus im getakteten Modus an der Speicherschnittstelle.
  • 17 zeigt Einzelübertragungs-Speicher-Lesezyklen im getakteten Modus an der Speicherschnittstelle
  • 18 zeigt Burst-Schreibzyklen von dem Speicherbus im getakteten Modus an der Speicherschnittstelle.
  • 19 ist ein zeitlicher Signalverlauf, der Rück-zu-Rück-Burst-Schreibzyklen im getakteten Modus an der Speicher-Schnittstelle zeigt.
  • 20 ist ein zeitlicher Signalverlauf, der Schreibzyklen an der Speicherschnittstelle mit Wartezuständen zeigt.
  • 21 zeigt den Neustart von Speicher-Schreibzyklen im getakteten Modus an der Speicherschnittstelle.
  • 22 zeigt Einzelübertragungs-Schreibzyklen im getakteten Modus an der Speicherschnittstelle.
  • 23 ist ein zeitlicher Signalverlauf eines Lese-Schreib-Lese-Durchlaufs im getakteten Modus an der Speicherschnittstelle
  • 24 zeigt eine Schreibzuweisungssequenz im getakteten Modus an der Speicherschnittstelle
  • 25 ist ein Zeitdiagramm, das die Relation des MOCLK-Signals zu den Ausgangsdaten an der Speicherschnittstelle zeigt.
  • 26 ist ein Zeitdiagramm, das die Relation zwischen dem CRDY# und MEOC# im getakteten Modus an der Speicherschnittstelle zeigt.
  • 27 zeigt Burst-Lesezyklen im Strobe-Modus an der Speicherschnittstelle.
  • 28 zeigt Rück-zu-Rück-Leseoperationen im Strobe-Modus an der Speicherschnittstelle.
  • 29 zeigt den Neustart der Speicher-Lesezyklen im Strobe-Modus an der Speicherschnittstelle.
  • 30 zeigt Einzelübertragungs-Lesezyklen im Strobe-Modus an der Speicherschnittstelle.
  • 31 zeigt Burst-Schreibzyklen von dem Speicherbus im Strobe-Modus an der Speicher-Schnittstelle.
  • 32 ist ein zeitlicher Signalverlauf, der die Rück-zu-Rück-Burst-Schreibzyklen im Strobe-Modus an der Speicherschnittstelle zeigt.
  • 33 zeigt den Neustart von Speicher-Schreibzyklen im Strobe-Modus an der Speicherschnittstelle.
  • 34 zeigt Einzelübertragungs-Schreibzyklen im Strobe-Modus an der Speicherschnittstelle.
  • 35 ist ein zeitlicher Signalverlauf eines Lese-Schreib-Lese-Durchlaufs im Strobe-Modus an der Speicherschnitt stelle.
  • 36 zeigt eine Schreibzuweisungssequenz im Strobe-Modus an der Speicherschnittstelle.
  • 37 ist ein Zeitdiagramm, das die Relation zwischen den CRDY# und MEOC#-Signalen im Strobe-Modus an der Speicherschnittstelle zeigt.
  • 38 ist ein schematisches Schaltbild, das zeigt, wie Burst-Multiplexer-Auswahlsignale erzeugt werden.
  • Es wird eine integrierte Schaltung beschrieben, die einen Cache-Speicher für ein Mikroprozessorsystem implementiert.
  • Überblick über das CPU/Cache-Speichersystem
  • Die Verwendung eines Daten-Cache-Speichers basiert auf dem Prinzip der Lokalität. Dieses Prinzip berücksichtigt, daß ein einmal aufgerufenes Element tendenziell bald danach wieder aufgerufen wird (d.h. zeitliche Lokalität). Genauso besteht die Tendenz, daß auf Elemente nahe aufgerufenen Elementen kurz danach Bezug genommen wird (d.h. räumliche Lokalität). Auf diese Weise liegt der Grundgedanke der Verwendung eines Cache-Speichers darin, einen effizienteren Zugriff zu oft verwendeten Informationen zur Verfügung zu stellen, wodurch die Verarbeitungsgeschwindigkeit beschleunigt wird.
  • 1 zeigt ein Blockschaltbild des Cache-Subsystems, auf dem die vorliegende Erfindung basiert. Das Cache-Subsystem enthält vier Basiseinheiten: eine CPU 10, die in dem gegenwärtig bevorzugten Ausführungsbeispiel einen Intel 80486-Mikroprozessor enthält, Cache-Datenscheiben 13, eine Cache-Steuereinrichtung 12 und ein Byte-Freigabe-Latch 18. Die Cache-Datenscheiben 13 bilden in Verbindung mit der Cache-Steuereinrichtung 12 und der Speicherbus Steuereinrichtung 11 einen Gateway zwischen dem CPU-Bus 14 und dem Speicherbus 15.
  • Die spezifische Implementierung der vier Grundelemente kann an ein breites Spektrum von Anwendungen angepaßt werden, und zwar durch die Wahl der CPU-Art, Cache-Größe und der Speicherbusschnittstelle. Alle CPU-Zugriffe, die von dem Cache-Subsystem lokal bedient werden können, werden aus dem Speicherbusverkehr herausgefiltert. Deshalb sind lokale Zyklen (CPU-Zyklen), die den Cache-Speicher treffen und keinen Speicherbus-Zyklus erfordern, völlig unsichtbar für MBC 11 und Speicherbus 15. Das erlaubt eine Verringerung der Speicherbusbandbreite, die oft für Multi-Prozessor-Systeme gefordert wird.
  • Eine wichtige Funktion des Cache-Subsystems ist es, eine Geschwindigkeitsentkopplung zwischen dem CPU-Bus 14 und dem Speicherbus 15 zu schaffen. Das Subsystem der 1 ist optimiert, um die CPU 10 bis zu sehr hohen Frequenzen (z.B. > 50 MHz) mit Null-Wartezuständen zu versorgen, während gleichzeitig für die notwendige Entkopplung gesorgt wird, um langsamere Speicherbuszyklen laufen zu lassen. Der Speicherbus 15 ist typischerweise entweder 32, 64 oder 128 Bits breit. Dies steht in Relation zu einer CPU-Busbreite, die im Fall eines 80486-Mikroprozessors 32 Bits ist. Auf diese Weise unterstützt das Cache-Subsystem der 1 leicht Speicherbreiten, die gleich oder größer als die CPU-Busbreite sind. Es kann auch zur Unterstützung von Speicherbusbreiten angepaßt werden, die geringer als die CPU-Busbreite sind.
  • Die Cache-Steuereinrichtung 12 bildet das Hauptsteuerelement des Cache-Subsystems und enthält die Tag- und Zeilenzustände. Sie verfolgt alle CPU-Bus-Zyklen und bestimmt, welche Zyklen auf dem CPU-Bus abgeschlossen werden können und welche an den Speicherbus weitergeleitet werden müssen. Sie stellt außerdem Entscheidungen über Zugriffe, Treffer oder Fehlversuche (auf der Basis von Veränderungen eines MESI-Protokolls) zur Verfügung. Steuereinrichtung 12 handhabt die CPU-Bus-Anforderungen vollständig und koordiniert mit MBC 11, wenn ein Zugriff die Kontrolle über den Speichrbus 15 benötigt. Steuereinrichtung 12 steuert außerdem den Cache-Datenpfad sowohl für Treffer als auch für Fehlversuche, um die CPU mit den richtigen Daten zu versorgen. Sie addiert dynamisch Wartezustände auf der Basis eines "zuletzt benutzt"-(MRU)-Vorhersagemechanismus und Zugriffskonkurrenzen.
  • Der MRU-Mechanismus verwendet zeitliche Lokalität. Speziell wird die zuletzt verwendete Art eines Datensatzes wahrscheinlich wiederverwendet werden. MRU ist die Umkehrung von LRU (d.h. am längsten unbenutzt), ein weiteres Vorhersageverfahren zur Auswahl des zu ersetzenden Pfades. Die Cache-Steuereinrichtung 12 liefert dem MBC 11 außerdem Zyklusanforderungen und bei Cache-Fehlversuchen die Adresse zum Speicherbus 15.
  • Die Cache-Steuereinrichtung ist außerdem für die Ausführung von Speicherbus-Snoop-Operation verantwortlich, während andere Einrichtungen den Speicherbus 15 benutzen. Snoop-Operation bezieht sich auf die Operation, in der Cache-Steuereinrichtung 12 den gemeinsam benutzten Speicherbus 15 überwacht, um festzustellen, ob andere den Bus 15 mitbenutzende Einrichtungen eine Kopie der zugegriffenen Cache-Zeile haben oder nicht. Die Cache-Steuereinrichtung führt Snoop-Operationen sowohl für den sekundären Cache-Speicher (Cache-Speicher der zweiten Ebene) als auch den primären Cache-Speicher in CPU 10 durch, basierend auf dem Prinzip der Einbeziehung.
  • Die Speicherbus-Steuereinrichtung (MBC) 11 paßt den CPU/Cache-Kern an das dem Speicherbus 15 zugeordnete spezielle Speicherbus-Protokoll an. Dabei koordiniert sie mit Steuereinrichtung 12, Zeilenfülloperationen, Spüloperationen, Rückschreiboperationen, usw.
  • Die Speicherbus-Steuereinrichtung paßt sich definitionsgemäß an eine einzige Implementierung einer CPU, Cache-Steuereinrichtung und Cache-Datenscheibe für einen breiten Bereich der Speicherbus-Protokolle an, um einen breiten Bereich von Anwen dungen zu unterstützen. Sie kann eine synchrone oder asynchrone Schnittstelle zu einem getakteten oder im Strobe-Modus betriebenen Speicherbus unterstützen. In einigen Fällen kann sie sogar direkt mit einer DRAM-Schnittstelle verbunden werden. Diese unterschiedlichen Protokolle werden bei Speicherbusbreiten von 32, 64 und 128 Bits unterstützt. Die MBC enthält die für die Implementierung des Speicherbus-Protokolls verantwortliche Logik. Diese Logik ist für die Speicherbus-Zuweisungsentscheidung, Datenübertragung und Cache-Konsistenzfunktionen sowie Steuern der Sendeempfänger in der Cache-Steuereinrichtung und in der Cache-Datenscheibe verantwortlich. (Zu bemerken ist, daß Cache-Speicher 13 und Cache-Steuereinrichtung 12 fakultativ mit Speicherbus 15 über Sendeempfänger/Latches gekoppelt sind.)
  • Cache-Datenscheibe 13 implementiert das Cache-Datenspei-cherelement in dem CPU/Cache-Kern-Subsystem der 1. Der Cache-Speicher 13 ist in Form parallel geschalteter einzelner integrierter SRAM-Schaltungen implementiert, um den speziellen Speichererfordernisse für das Mikroprozessorsystem angepaßt zu werden.
  • Jede integrierte SRAM-Schaltung 17 enthält Latchschaltungen, Multiplexer (auch als MUXs bezeichnet), Logik- und -Spei-cherschaltungen, die ihr erlauben, synchron mit Cache-Steuereinrichtung 12 zu arbeiten, um sowohl Treffer- als auch Fehlversuch-Zugriffe wirksam abzuarbeiten. Zu beachten ist, daß die Logikfunktionen im Cache-Speicher 13 in bekannten Ausbildungen traditionell in der Cache-Steuereinrichtung angeordnet waren. Jedoch wurde bei der vorliegenden Erfindung diese Logik speziell im Cache-Speicher angeordnet, um mit dem Anstieg der Taktraten die für den zeitlichen Verlauf kritischen Wege zu minimieren.
  • Cache-Datenscheiben 13 unterstützen die Null-Wartezustände-Treffer-Zugriffe und enthalten eine Kopie der vorhin erwähnten MRU-Bits zur autonomen Weg-Vorhersage. Während der Speicherbus-Zyklen dient Cache-Speicher 13 als ein Daten-Gateway zwischen CPU 10 und Speicherbus 15. Auf diese Weise ist Cache-Speicher 13 außer für das Datenspeichern für die Bereitstellung eines effizienten, leistungsstarken Datenpfades zwischen CPU-Bus 14 und Speicherbus 15 verantwortlich. Dieser Gesichtspunkt der vorliegenden Erfindung wird weiter unten ausführlicher erörtert.
  • Der Cache-Speicherkern 13 arbeitet asynchron auf dem CPU-Bus- und dem Speicherbus und enthält keinen Synchronisierer. Synchronisierer für die Datenübertragung befinden sich in der Speicherbus-Steuereinrichtung 11.
  • Das Byte-Freigabe-Latch 18 ist der Cache-Steuereinrichtung der 1 geeignet zugeordnet. Das Byte-Freigabe-Latch stellt eine Schnittstelle für isolierte CPU-Bus-Signale zu der Speicherbus-Steuereinrichtung zur Verfügung. Diese Signale enthalten die Byte-Freigaben und andere CPU-Zyklus-Statussignale (wie Länge, Cache-Speicher, Attribute usw.). Auf diese Weise wird das Latch zum Minimieren der Last (Anzahl der Bauelemente im Leitungsweg) bei diesen kritischen CPU-Bus-Signalen verwendet. Es wird von der Cache-Steuereinrichtung 12 direkt gesteuert, um die Komplexität der Speicherbus-Steuereinrichtung 11 zu minimieren. Zu beachten ist, daß Latch 18 in der Steuereinrichtung 12 bei bestimmten Ausführungsformen integriert sein kann, wenn die Anzahl der Pins keinen Einschränkungen unterliegt.
  • Cache-Speicher-Architektur
  • Es wird nun auf 2 Bezug genommen, in der ein Blockschaltbild der integrierten Cache-Speicher-Schaltung 17 der vorliegenden Erfindung gezeigt wird. Cache-Speicher 17 hat drei Basisabschnitte: den CPU-Bus-Abschnitt, den Speicherbus-Abschnitt, und den SRAM-Feld-Abschnitt. Jeder dieser Blöcke wird im folgenden ausführlicher beschrieben.
  • CPU-Bus-Schnittstelle
  • Die CPU-Bus-Schnittstelle hat eine MUX/Pufferfunktion, die in Block 20 integriert ist, mit zusätzlicher Steuerlogik, die sich im Block 21 befindet. CPU-MUX/Puffer 20 wird zum Speichern von Daten für CPU-Lese- und -Schreiboperationen verwendet. Seine Funktion optimiert Lese- und Schreiboperationen über den CPU-Bus. Für Leseoperationen läßt es diese Funktion zu, daß eine vollständige Cache-Zeile in den MUX/Puffer 20 mit einem einzigen Feldzugriff geladen wird. Die Zeitgabe für die Burstübertragung wird dann allein in der CPU-Bus-Schnittstelle festgelegt, wobei sie für eine hohe Datenübertragungsgeschwindigkeit hoch optimiert sein darf.
  • Genauso erlaubt der Puffer für Burst-Schreiboperationen, daß Daten mit einer hohen Übertragungsgeschwindigkeit (allein auf der Basis der Zeitgabe-Anforderungen des MUX/Puffers 20) gesammelt werden können, bis für eine einzige Feld-Schreiboperation alle Daten gesammelt sind. Zusätzlich zum Trennen der AC-Zeitgabe für Bursts minimiert diese Lösung die Beanspruchung des SRAM-Feldes 22, wobei die Parallelität mit dem Speicherbus erhöht wird. Ähnliche Vorteile werden auch für die Speicherbusoperationen aufgrund des Entkopplungseffektes des Speicherbus-Burst von dem CPU-Bus-Burst erzielt. MUX/Puffer 20 hat zwei 32-Bit breite Sektionen, eine für jeden Pfad des SRAM-Feldes 22. SRAM-Feld 22 verwendet eine Zweiweg-Satz-Assoziativkonfiguration mit MRU-Vorhersage, wie im vorstehenden erwähnt.
  • Ein satz-assoziativer Cache-Speicher ist ein Speicherfeld, in dem der Cache-Speicher in Wege aufgeteilt ist. Ein Satz enthält eine Gruppe aus Sektoren (aus jedem Weg einer), von denen jeder den gleichen Teil des Speichers enthalten kann. Ein Satz wird unter Verwendung des niedrigeren Teils der CPU-Adresse adressiert (d.h. indiziert). Alle Sektoren in dem gleichen Satz werden unter Verwendung des gleichen niedrigeren Teils der CPU-Adresse indiziert. Die 32-Bit-Breite in Block 20 unterstützt vier Übertragungen mit acht CPU-I/O-Pins. Zwei Sektionen werden zur Unterstützung der zuletzt-verwendeten (MRU)-Auswahl benötigt, und zwar ohne Auswirkung auf zeitlich kritische Wege.
  • Auf der Grundlage der MRU-Information wählt ein Weg-Multiplexer in dem Block 23 während eines Zugriffes den zu verwendenden richtigen Weg. Die Weginformation wird vom CPU-Steuerblock 21 über Leitung 24 dem Block 23 zur Verfügung gestellt. Weginformation wird auch zu und von dem Feld 22 über Leitung 27 übertragen. Beispielsweise erfolgt während eines Lesezyklus die Anfangsausgabe über den zuletzt verwendeten Weg. Wenn die Steuereinrichtung feststellt, daß der zuletzt verwendete Weg nicht richtig ist, zwingt sie Cache-Speicher 17 dazu, unter Verwendung von Signalen auf 59 auf andere Wege zu wechseln, den Weg-MUX 43 zu wechseln und den neuen MRU in Feld 22 über Leitung 27 (d.h. für den nächsten Zugriff) zu schreiben. Zu beachten ist, daß der MRU im Cache-Speicher 17 Synchron mit dem Vorhersagemechanismus in der Cache-Steuereinrichtung 12 sein muß, um für das MRU-Vorhersageprotokoll richtig zu funktionieren.
  • Leseoperationen, die MRU-Treffer sind, werden ohne Wartezustände ausgeführt. MRU-Fehlversuche haben einen Wartezustand, um ihren Weg zu ändern, wenn die Leseoperationen nicht pipelineverarbeitet werden. Bei pipelineverarbeiteten Leseoperationen ist es möglich, die zum MRU-Nachschlagen in der Cache-Steuereinrichtung benötige Zeit zu verbergen und den Wartezustand für den MRU-Fehlversuch zu vermeiden. Auf diese Weise werden 32 Bits mal zwei aus dem SRAM-Feld 22 für CPU-Leseoperationen gelesen und in jedem der beiden Wegsektionen der Blöcke 20 und 23 gespeichert.
  • Die CPU-Schnittstellenssektion enthält außerdem acht I/O-Treiber. Natürlich können weniger I/O-Treiber zur Unterstützung großer Cache-Größen verwendet werden. Wenn die 2x-CPU/I/O-Konfiguration verwendet wird, werden zwei Eingangspins, z.B. CDATA[0:1], aktiviert, und die anderen I/O-Pins bleiben im schwimmenden Zustand. Die CPU-I/O-Treiber sind im Tri-State, wenn der ablaufende Zyklus eine Schreiboperation ist, oder wenn kein Zyklus abläuft. Am Ende einer Leseoperation sind die Ausgänge im Tri-State, wenn keine pipelineverarbeitete Le seoperation ablaufen soll. Sonst sind die Ausgänge im Tri-State, wenn Rücksetzen aktiv ist.
  • Der CPU-Bus-Steuerblock 21 repliziert im wesentlichen das Bus-Protokoll des CPU-Bus für den Cache-Speicher. Im gegenwärtig bevorzugten Ausführungsbeispiel spiegelt Block 21 das Intel-80486 oder i860XP-Bus-Protokoll wieder. Diese Signale werden zum Steuern der von der CPU-Ausführung initiierten Zyklen verwendet und im Falle eines Rückschreibens zu dem primären Cache-Speicher zum Steuern der von der Cache-Konsistenz initiierten Zyklen. Gleichzeitig überwacht die Steuersektion 21 die von der Cache-Steuereinrichtung über Leitung 59 empfangenen Signale.
  • Die im Block 21 befindliche Steuerlogik enthält eine übliche kombinatorische und Zustandsmaschinen-Logik und ist zur Ausführung zweier Schlüsselfunktionen ausgebildet. Zunächst liefert sie dem MUX/Puffer-Block 20 (und zugeordneten CPU-MUXs 33 und 37) Burst-Adressen für Burstübertragungen vom CPU-Bus. Das ist zum optimieren der Übertragungsgeschwindigkeit für Burstoperationen wesentlich, da dies eine langsame externe Chipschnittstelle vermeidet. Die zweite Funktion besteht darin, die Cache-Speicher-Verfolgungs-CPU-Bus-Zyklen zu haben und interne Operationen zum Vorwegnehmen eines Cache-Treffers auszuführen. Die Cache-Steuereinrichtung 12 führt dann ein Tag-Nachschlagen parallel durch und informiert gleichzeitig sowohl die CPU als auch den Cache-Speicher über das Ergebnis. Das erübrigt eine zusätzliche Schaltungsschnittstelle zwischen der Cache-Steuereinrichtung 12 und dem Cache-Speicher 13 im kritischsten Zeitpfad. Der Fachmann erkennt, daß dies die Geschwindigkeit von Lese-Treffer-Zyklen verbessert.
  • Die im Steuerblock 21 befindlichen Logikfunktionen sollen auch sehr eng mit der Definition des CPU-Bus gekoppelt sein. Beispielsweise basieren die Logikfunktionen des Blocks 21 erfindungsgemäß auf den 80486- und i860XP-Mikroprozessoren, um maximale Übertragungsgeschwindigkeiten zu garantieren. Das erfordert, daß die Signalcharakteristik identisch ist, daß die Burstreihenfolge vorhersagbar ist, und daß die AC-Zeitgaben zum Skalieren gut abgeglichen sind.
  • Bei der in 2 gezeigten Implementierung unterstützt die CPU-Bus-Schnittstelle pro Cache-Bauelement 17 einen 2-, 4- oder 8-Bit-Datenpf ad.
  • Unter der Annahme einer 16-Bauelemente-Grenze (aufgrund der elektrischen Last) läßt dies die Unterstützung von 128 KByte-, 258 KByte- oder 512 KByte-Cache-Speichern auf einem 32-Bit-CPU-Bus (z.B. für den 80486) zu.
  • Es ist zu beachten, daß die vorliegende Erfindung durch die Verwendung der MRU-Vorhersage die Implementierung eines Mehrweg-Cache-Speichers mit minimaler Einbuße zuläßt. Das Multiplexen für den richtigen Weg wird auf der letzten Ebene erledigt, um die zum Zu reifen der MRU verfügbare Zeit zu verlängern und um eine neue MRU zur Verfügung zu stellen. Ferner unterstützt der Datenpfad zwischen dem CPU-Bus und dem Speicherbus (Details des Datenpfads folgen) außerdem die MRU-Vorhersage, indem er auf mehrere Wege für die CPU-Bus-Operationen zugreift. Zu beachten ist, daß während die vorliegende Erfindung zwar Zweiwegoperationen implementiert, das Protokoll aber auf mehr als zwei Wege erweiterbar ist.
  • CPU-Datenpfad zum Lesen
  • Der Cache-SRAM 17 führt für jeden CPU-Bus-Lesezyklus im Vorgriff auf einen Lese-Treffer (M-, E- oder S-Zustand) ein Feld-Nachschlagen durch. Cache-Steuereinrichtung 12 verwendet CPU-Bus 14 und dedizierte Steuersignale 59 zum Steuern der Übertragung von Feld 22 im Falle von Lese-Treffern, oder von der Speicherschnittstelle im Falle von Lese-Fehlversuchen oder Lese-Zyklen, die den Cache-Speicher (z.B. I/O) umgehen. Der CPU-Datenpfad greift für Leseoperationen auf volle 64 Bits über Feldbus 25 zu. Der Feldbus 25 ist mit dem Feldmultiplexer 28 gekoppelt, der wiederum über 128-Bit-Bus 30 mit Feld 22 gekoppelt ist.
  • Feldmultiplexer 28 wird über Leitung 31 vom CPU-Steuerblock 21 gesteuert. Jeder Feldzugriff beträgt 128 Bits; 64 Bits von jedem Weg. Wenn der Zugriff von der Speicherseite aus erfolgt, werden volle 64 Bits von dem selektierten Weg ausgewählt. Wenn der Zugriff jedoch für die CPU-Seite ist, werden beide Wege der adressierten 32 Bits verwendet.
  • Wie gesagt, greift der CPU-Datenpfad für Lesezugriffe auf volle 64 Bits zu. Wenn auf das Feld zugegriffen wird, enthalten die 64 Bits beide Wege (32 Bits jeweils) der adressierten Cache-Zeile. Wenn der Zugriff dem Speicherbus gilt, sind die 64 Bits aus dem Speicherpuffer (entweder Puffer 40 oder Puffer 41). Im letzteren Fall basiert die Wegfunktion auf der Adresse, um die richtige Hälfte des Speicherpuffers auszuwählen. (Man wird sich erinnern, daß die Speicherbus-Cache-Zeilengröße größer als die CPU-Busbreite sein kann, und die CPU auf den richtigen Teil zuzugreifen hat.)
  • In 4 sind Details des CPU-Datenpfads gezeigt. Es wird mit dem Beispiel einer CPU-Daten-Leseoperation fortgefahren: Als nächstes werden die vom Feld 22 zugegriffenen 64 Bits durch CPU-Puffer 20 an einen Burstmultiplexer 33 übertragen. Burstmultiplexer 33 ist ein 4:1-Multiplexer, der die 64 Bits auf 16 Bits (8 Bits x 2 Wege) heruntermultiplext. Burstmultiplexer 33 ist anfänglich auf die angeforderte Adresse eingestellt. Die Art, mit der der Burst-MUX 33 im gegenwärtig bevorzugten Ausführungsbeispiel tatsächlich gesteuert wird, ist in 38 gezeigt. 38 zeigt einen mit einer 2-Bit-Startadresse exklusiv-ODER-gekoppelten Zähler 34. Die Ausgabe der Exklusiv-ODER-Operation erzeugt die Burst-MUX-Adresse. Die Burst-MUX-Adresse wird dann vom Decodierer 35 zum Erzeugen der Burst-MUX-Auswahlsignale decodiert. Burstdaten werden gemäß dem gegenwärtig bevorzugten Ausführungsbeispiel der vorliegenden Erfindung in einer mit der Operation des 80486-Mikroprozessors konsistenten vorgegebenen Reihenfolge übertragen.
  • Konfigurationsmultiplexer 37 folgt auf den Burstmultiplexer 33. Konfigurationsmultiplexer 37 wird im gegenwärtig bevorzugten Ausführungsbeispiel zum Anpassen der verschiedenen Pinoptionen an der CPU-Busschnittstelle (z.B. 2x, 4x oder 8x) verwendet. So kann MUX 37 als ein 1:1-, 2:1-, oder 4:1-Multiplexer konfiguriert sein. In der Praxis kann Konfigurationsmultiplexer 37 auch statisch derart konfiguriert sein, daß alle Bursts von MUX 33 ausgeführt werden. Beispielsweise müssen im 2-Bit-Fall 16 Bits auf 4 Bits heruntermultiplext werden, die auf zwei Ausgangspins erscheinen.
  • MUX 33 und MUX 37 arbeiten im gegenwärtig bevorzugten Ausführungsbeispiel wie folgt. MUX 37 ist für den 8x-Fall als ein 1:1-Multiplexer, d.h. als eine direkte Verbindung konfiguriert. In dieser Situation werden alle Bursts im MUX 33 ausgeführt. MUX 37 ist für den 4x-Fall als ein 2:1-Multiplexer konfiguriert, und MUX 37 und MUX 33 wechseln einander in der Ausführung der Bursts ab. MUX 37 ist für den 2x-Fall ein 4:1-Multiplexer, und Burst-MUX 33 wird zum geeigneten Burstordnen zweimal geschaltet.
  • Zu beachten ist, daß MUX 37 und 33 in dem gegenwärtig bevorzugten Ausführungsbeispiel verteilt sind. Gemeinsam arbeitet der CPU-MUX als ein 8-aus-32-Auswahlbauelement für ein 8x-CPU-Busbauelement, als ein 4-aus-32-Auswahlbauelement für ein 4x-CPU-Busbauelement und als ein 2-aus-32-Auswahlbauelement für ein 2x-CPU-Busbauelement. Die Burstadressen beginnen an der von der CPU gegebenen Anfangsadresse gemäß der Burstreihenfolge des 80486-Mikroprozessors.
  • Die CPU-Zeile in jedem der Cache-Speicher 17 kann abhängig von der Konfiguration 8, 16 oder 32 Bits betragen. Es ist klar, daß alle Anwendungen integrierte Mehrfach-Cache-Speicher-Schaltungen verwenden. Für diese Konfigurationen, in denen weniger als 32 Bits erforderlich sind, können einige Adressen zum Zugriff nur eines Teils des Puffers verwendet werden. Festzuhalten ist, daß die verteilte Konfiguration der Multiplexer 33 und 37 von dem CPU-Steuerblock 21 über Auswahlleitungen 38 und 39 gesteuert wird.
  • Die in 4 gezeigte MUX-Endstufe, Wegmultiplexer 43, wird anfänglich auf der Basis der im Feld 22 gespeicherten MRU zum Auswählen des richtigen Weges verwendet. Wenn die MRU-Vorhersage nicht richtig ist, wird der Wegmultiplexer auf der Basis des Wegsignals auf Leitung 59 geschaltet. Die Weginformation wird auch zum Schreiben des neuen MRU-Weges über die Leitung 27 in das Feld 22 verwendet. Für Speicherbusoperationen basiert die Wegmultiplexerauswahl auf einem den richtigen Teil des Speicherpuffers auswählenden Adreßbit.
  • Schließlich sind die Ausgangstreiber und Latchschaltungen zum Erfüllen der Pin-Zeitgabeerfordernisse definiert.
  • CPU-Datenpfade zum Schreiben
  • Cache-SRAM 17 speichert für jeden CPU-Bus-Schreibzyklus Daten im Latch. Cache-Steuereinrichtung 12 verwendet CPU-Bus 14 und dedizierte Steuersignale entlang Leitung 59 zum Steuern der Übertragung an Feld 22 für Schreib-Treffer (M-, E- oder S-Zustand) und/oder an die Speicherschnittstelle für S-Zustand-Schreiboperationen, Schreib-Fehlversuche oder Schreibzyklen, die den Cache-Speicher umgehen (z.B. I/O). MUX-Puffer 20 wird für CPU-Schreiboperationen zum Datenspeichern vor deren Schreiben in das SRAM-Feld 22 verwendet. Der gesamte CPU-Zyklus ist beendet, bevor Daten tatsächlich in das Feld geschrieben werden. Zu beachten ist, daß Datenübertragungen zwischen MUX/Puffer 20 und Feld 22 über den 64 Bit breiten Feldbus 25 stattfinden. Bis zu vier Datenübertragungen können in den MUX/Puffer geschrieben werden, bevor das Feld beschrieben wird.
  • Daten werden in beiden Wegen des CPU-Puffers 20 latch-gespeichert. Daten werden in Feld 22 zu dem von der Cache-Steuereinrichtung spezifizierten Weg geschrieben. CPU-Daten werden im MUX/Puffer 20 unabhängig davon, ob die aktuelle Zeile cache-speicherbar ist, gespeichert. Wenn die Zeile cache-speicherbar ist, wird sie in einer halben Taktperiode nach der Beendigung des CPU-Zyklus geschrieben. In dem vorliegenden Schema können CPU-Schreiboperationen 1, 2, 4, 8, 16 oder 32 Bits breit sein. In dem MUX/Puffer-Block 20 gibt es Bit-Freigabe-Latch-Schaltungen, die das Schreiben jedes einzelnen Bits zulassen. Während eines Schreibens in Feld 22 werden daher nur jene Bits tatsächlich geschrieben, die Bit-schreibaktiviert sind. Es ist zu beachten, daß die Bit-Freigaben an die Speicherschnittstelle übertragen werden, um Datenvereinigungsoperationen für Schreib-Zuweisungen zu unterstützen. In dieser Situation wird aus dem Speicher eine Cache-Zeile gelesen und mit gültigen Schreibdaten im Speicherpuffer 40 (oder 41) vereinigt, bevor sie in SRAM-Feld 22 abgelegt wird.
  • Wie im Vorangegangenen erörtert wurde, durchlaufen die Schreibzyklen die CPU-Eingangstreiber und werden zum Erfüllen der externen Zeitbedingungen latch-gespeichert. Um die verschiedenen Datenpinkonfigurationen zu unterstützen (d.h. 2x, 4x oder 8x), durchlaufen die Schreibdaten einen Multiplexer 47, der auf der Basis der speziellen Konfiguration die Bits treibt. Wenn beispielsweise nur zwei Datenzeilen in den Cache-Speicher 17 einlaufen, würde Multiplexer 47 die zwei Zeilen für CPU-Puffer 20 auf acht auffächern.
  • Die acht Zeilen werden dann zu allen Scheiben des CPU-Puffers 20 getrieben. Die CPU-Steuersektion 21 treibt selektiv Schreib-Freigaben in CPU-Puffer 20 (und Feld 22), um die richtigen Bits zu schreiben. Immer wenn Cache-Speicher 17 im Datenmodus verwendet wird, ist die Einheit von Schreiboperationen 2 Bits. Cache 17 unterstützt jedoch auch einen Paritätsbetriebsmodus. Das ist ein völlig anderer Modus, bei dem einzelne Paritätsbits und Bitfreigaben mit den Datenpins verbunden werden. Der Datenpfad arbeitet genauso, ausgenommen der für Schreibsteuerung auf der Bitebene benötigte kleineren Einheit.
  • Der CPU-Schreibpfad wird auch für Cache-Konsistenzzyklen verwendet. CPU-Buszyklen, die zum Rückschreiben modifizierter
  • Daten von der CPU an den primären Cache-Speicher verwendet wer den, werden in diesem Teil des Cache-Speichers 17 genauso wie alle anderen Schreibzyklen behandelt. D.h. sie werden schließlich mit Daten vom SRAM 22 in Rückschreibpuffer 46 oder Snoop-Puffer 45 vereinigt. Die Aufgabe dieser Puffer wird in kürze detaillierter erörtert.
  • Es ist klar, daß ein unterteilter Datenpfad mit Mehrfachbreitenoptionen es der vorliegenden Erfindung erlaubt, größere Cache-Kapazitäten mit Einzel-Ladeoperationen der Datenzeilen für alle Konfigurationen zu unterstützen. In dieser Situation ist die Datenpfadfunktionalität in allen Cache-Bauelementen identisch. Wenn die Funktionalität N-mal kopiert wird, werden mehrere Bauelemente 17 verwendet, um den vollen Cache-Speicherkern 13 zum unterstützen größerer Cache-Größen (siehe 1) zu bilden.
  • SRAM-Feld
  • Weiter bezugnehmend auf 2, enthält SRAM-Feld 22 auf zwei Wege aufgeteilte 256K Speicherbits – 128K Bits jeweils. Feld 22 enthält auch 4K MRU-Bits und zugeordnete Feldadressen-Latchs 49. Adressen-Latchs 49 werden für alle Feldzugriffsadressen verwendet. In 2 wird auch ein die CPU-Schnittstelle, die Speicherschnittstelle und Feld 22 koppelnder 64-Bit-Pfad auf dem Feldbus 25 gezeigt. Dieser Bus unterstützt Einzeltakt-Zugriffe in Cache-Zeilenbreite. Verbindungsbus 26 unterstützt Übertragungen zwischen CPU- und Speicherbussen. Speziell ist dieser Bus integriert, um die Gleichzeitigkeit der Cache-Lösung zu erhöhen. Verbindungsbus 26 ermöglicht insbesondere, eine Verbindung zwischen CPU-Bus 14 und Speicherbus 15 herzustellen, während gleichzeitig Feldzugriffe auftreten. Beispiele für die Verwendung dieses Merkmals sind das Auffüllen des Rückschreibpuffers während des Zeilenfüllens oder die Zuweisung oder das Abarbeiten einer Snoop-Operation, während der CPU-Bus eine Leseoperation beendet.
  • SRAM-Feld 22 enthält selbst gewöhnliche SRAM-Zellen, die unter Verwendung der Metalloxid-Halbleiter(MOS)- oder der komplementär-Metalloxid-Halbleiter(CMOS)-Technologie hergestellt sind. Neu ist jedoch die Art, in der das SRAM-Feld 22 mit dem internen Datenpfad verbunden ist, zusammen mit der Integration von MRU-Bits zum Verfolgen von Cache-Steueroperationen. 2 zeigt Feldbus 25, der zum Bereitstellen eines Dualport-Zugriffs zu Cache-Datenspeicherfeld 22 ausgebildet ist. D.h., Zugriffe zu Feld 22 können sowohl über die Speicherbus- als auch über die CPU-Busseite ausgeführt werden. Außerdem ist ein Bypassweg für direkte Verbindungen zwischen dem CPU- und dem Speicherbus für Zyklen enthalten, die den Cache-Speicher nicht involvieren. Das ist zum Unterstützen gleichzeitiger Operationen und zum Entkoppeln der Speicherbus- und CPU-Bus-Übertragungsprotokolle definiert.
  • Die Breite der Verbindung zwischen dem Feld 22 und dem Datenpfad wird von Pins oder Ausgangspuffern nicht beschränkt, wie es in bekannten Konstruktionen der Fall ist, da das Feld und der Datenpfad in der gleichen integrierten Schaltung hergestellt sind. Folglich kann die Schnittstelle zur effizienteren Verwendung des SRAM-Feldes wesentlich breiter als der Datenpfad an den I/O-Pins gemacht werden. Das erlaubt es, daß ein einziger Feldzugriff viele Übertragungen auf einem externen Bus bedient. Die Schlüsselvorteile dieser Lösung sind ein höherer Grad der Gleichzeitigkeit (da SRAM-Feld 22 nur für einen Bruchteil jedes externen Buszyklus verwendet wird) und eine höhere maximale Taktrate (da das Feld nur auf dem kritischen Pfad des Anfangszugriffs zugreift).
  • Wie bereits früher erörtert, ist SRAM-Feld 22 außer für das Datenspeichern für das Halten einer Kopie der von der Cache-Steuereinrichtung verwendeten MRU-Bits verantwortlich. Diese Bits erden von dem Cache-Speicher 13 verwendet, um vorherzusagen, auf welchen Weg bei Lesezyklen, die den Cache-Speicher treffen können, zugegriffen wird. Dieses Vorhersageverfahren ermöglicht es Mehrweg-Cache-Implementierungen, ohne Wartezustände mit einer viel höheren Taktrate zu antworten, während ein kritischer Hauptzeitgabepfad vereinfacht wird. Beispielsweise wird während eines Lesezyklus die MRU-Ausgabe auf den zuletzt verwendeten Weg zeigen, und dieser Weg wird die anfänglich auf den CPU-Bus gegebenen Daten zur Verfügung stellen. Wenn die Cache-Steuereinrichtung zu diesem Weg einen Lese-Treffer feststellt, werden die Daten der CPU ohne Wartezustände bereitgestellt. Wenn die Cache-Steuereinrichtung einen Lese-Treffer zu dem anderen Weg feststellt, weist sie Cache-Speicher 17 an, auf den anderen Weg zu wechseln. (Cache-Steuereinrichtungseingänge sind entlang Leitung 59 mit CPU-Steuerblock 21 gekoppelt.)
  • Jeder Weg kann als 64-Bits-mal-2K-Zeilen betrachtet werden. Es gibt in jeden oder aus jedem Weg zwei Pfade – einen für CPU-Zugriffe und einen für Speicherzugriffe. Nur einer der Pfade kann während jedes CPU-Taktes verwendet werden. Speicherzugriffe wählen 64 Bits aus Weg 0 oder Weg 1 aus. CPU-Zugriffe entlang Pfad 25 wählen 32 der 64 Bits vom Weg 0 und 32 der 64 Bits vom Weg 1 aus. In einer Taktperiode kann es nur einen Zugriff durch den CPU- oder Speicherpfad geben.
  • Wenn Daten von einem Speicherzykluspuffer in SRAM-Feld 22 geschrieben werden, kann die Anzahl der geschriebenen Bits in Abhängigkeit von der Konfiguration entweder 16, 32 oder 64 sein. Wenn Daten von dem CPU-MUX/Puffer 20 in das Feld geschrieben werden, kann es bei dem gegenwärtig bevorzugten Ausführungsbeispiel 1, 2, 4, 8, 16 oder 32 geschriebene Bits geben, abhängig von der verwendeten Anzahl von I/O-Pins und der Anzahl der Übertragungen.
  • Die unabhängige asynchrone Datenübertragungssteuerung auf der CPU- und Speicherseite entkoppelt den Hochgeschwindigkeits-CPU-Bus von dem langsameren Speicherbus. Die CPU-Seite wird von den BRDY#- und den BLAST#-Signalen gesteuert, die vorzugsweise für den 80486-Bus definiert sind. Diese Schnittstelle ist zu dem CPU-CLK-Signal synchron. Die Speicherschnittstelle wird von einem Satz von Signalen gesteuert, die zu CLK asynchron sind. Da die Verbindungen innerhalb des Cache-Speichers 17 eine volle Cache-Zeile breit sind, gibt es zwischen Datenübertragungsereignissen keine Synchronisierungsbedingungen (für Details siehe die Zeitdiagramme in der Pinbeschreibung im Anhang).
  • Es ist zu beachten, daß die interne Organisation des SRAM 22 abhängig von der speziellen Implementierung variieren kann. Beispielsweise können Erwägungen, wie der Cache-Datenscheibenbreite, Feldgröße, Anzahl der Wege für ein alternatives Ausführungsbeispiel eine andere Feldkonfiguration verlangen. Mit Ausnahme des Unterstützens der Grundoperation und der extern spezifizierten Leistungsziele unterliegt die tatsächliche Organisation des SRAM-Feldes 22 keinen Einschränkungen.
  • Speicherbusschnittstelle
  • Der Speicherbusschnittstellenteil des Cache-Speichers 17 enthält eine ähnliche MUX/Puffer-Konfiguration und Steuerlogikfunktion wie diejenigen, die der oben erörterten CPU-Bussektion zugeordnet sind. Jedoch sind die Speicherbusanforderungen im allgemeinen nicht die gleichen wie die CPU-Busanforderungen. Die Speicherbusschnittstelle muß speziell auf mehrere interne Puffer zugreifen und kann nicht auf ein einziges Busprotokoll optimiert werden.
  • Die Speicherbusschnittstelle besteht aus zwei Grundsignalgruppen. Die erste Gruppe besteht aus Signalen, die mit der Speicherbus-Steuereinrichtung in einer synchronen Relation zu dem Prozessortakt kommunizieren. Die zweite Gruppe besteht aus Datenpfaden zu dem Speicherbus zusammen mit den Datenpfad-Steuersignalen. Wichtig ist, daß diese Signale zum Unterstützen der Entkopplung des Prozessortakts von den anderen Systemkomponenten keine synchrone Relation zu dem Prozessortakt haben.
  • Es ist wichtig, zu beachten, daß die Aktivitäten zwischen der Speicherbussektion (enthaltend Puffer 40, 41, 45, 46, deren zugeordnete MUXs und Treiberblock 44) und den übrigen Sektionen des Cache-Speichers 17 zu dem CPU-Systemtakt (z.B. CLK) syn chron sind. Aktivitäten zwischen der Speicherbussektion und den Speicherbusdatenpins sind zu CLK asynchron.
  • Speicherbusaktivitäten sind zu einem separaten Takt (d.h. MCLK) synchron, wenn ein getakteter Speicherbus verwendet wird. In dem Fall, daß kein getakteter Speicherbus verwendet wird, sind die Speicherbusaktivitäten normalerweise synchron zu einem Strobesignal (z.B. MEOC#). Der Strobe-Betriebsmodus nutzt Signalflanken. Auf diese Weise gibt es zwei Betriebsmoden auf der Speicherbusschnittstelle, die einen breiten Satz von Speicherbusprotokollen unterstützen.
  • Es ist auch zu erkennen, daß ein 64 Bit breiter Pfad 26 von dem Speicherbusbereich zu CPU-Puffer 20 existiert. Das ist deshalb ein besonders vorteilhaftes Merkmal, da es einen Datenpfad durch den Cache-Speicher hindurch zur Verfügung stellt, der das Feld 22 nicht stört. Dadurch macht die Erfindung die Synchronisation jeder Datenübertragung überflüssig. Um den Speicherbusabschnitt mit dem CPU-Bus-Abschnitt zu verbinden, arbeitet MUX/Puffer 23, wie in 2 gezeigt, in Verbindung mit Puffern 41, 45 und 46.
  • Mehrere Cache-Zeilen breite Puffer werden auch zur Unter stützung gleichzeitiger Operationen sowohl an der CPU- als auch an der Speicherbusschnittstelle verwendet. Die Puffer in der aktuellen Implementierung enthalten einen einzigen CPU-Puffer 20 und vier Speicherschnittstellenpuffer 40, 41, 45 und 46. Puffer 40 und 41 werden für Übertragungen zwischen Speicher und der CPU und außerdem für Übertragungen zwischen dem Speicher und dem SRAM-Feld 22 verwendet. Puffer 45 wird für Snoop-Rückschreiboperationen verwendet, während Puffer 46 für Ersetzungs-Rückschreiboperationen verwendet wird. Es ist zu beachten, daß Gleichzeitigkeit geschaffen wird, da jeder dieser Puffer eine eine volle Zeile breite Schnittstelle zu dem Feld hat, wodurch ermöglicht wird, daß ein einziger Taktzugriff einem Mehrfachtaktburst an den Pins genügt.
  • Mehr Gleichzeitigkeit könnte hinzugefügt werden, indem einfach die Anzahl der CPU- oder Speicherpuffer vergrößert würde. In einer solchen Situation wäre das Datenpfadkonzept dasselbe. Beispielsweise könnte ein zusätzlicher Snoop-Puffer für eine Snoop-Operation verwendet werden, in der die modifizierten Daten in einen der Snoop-Puffern gelegt werden. Andere Snoop-Operationen können ausgeführt werden, die andere modifizierte Daten erfassen, während der erste Snoop-Puffer die Daten von dem primären Cache der CPU 10 über CPU-Bus 14 erfaßt.
  • Daher liegt der Grundgedanke der Gleichzeitigkeit in der Tatsache, daß die Puffer selbst eine ganze Cache-Zeile breit sind. Das bedeutet, daß in einem Ausführungstaktzyklus eine Cache-Zeilenbreite an Daten von dem Cache-Speicher in einen Puffer abgelegt werden und dann mit einer langsameren Rate aus dem Puffer übertragen werden kann. In der Zwischenzeit können die anderen Puffer entweder von der Speicher- oder von der CPU-Seite für andere Datenübertragungsaufgaben verwendet werden.
  • Größere Cache-Zeilen können auch auf dem Speicherbus unterstützt werden. Konventionelle parallele Cache-Implementierungen erfordern, daß die Cache-Zeile im gesamten Computersystem die gleiche Größe hat. Da die vorliegende Erfindung jedoch die CPU- und Speicherbuspuffer entkoppelt, kann der Speicherbus eine größere Zeilengröße als der CPU-Bus haben. Abhängig von der Konfiguration ist es tatsächlich möglich, ein 1x-, 2x-, 4x-, oder 8x-Zeilenverhältnis (basierend auf Breitenoptionen und 4/8 Übertragungen pro Zeile) zu unterstützen. offensichtlich sind andere Verhältnisse auch mit leichten Modifikationen wie die Verwendung von breiteren Bussen oder mehr Übertragungen pro Leitung möglich.
  • Größere Busbreiten werden auch der Speicherseite unterstützt; d.h. der Speicherbus kann breiter als der CPU-Bus sein. (Tatsächlich kann der Speicherbus auch schmaler als der CPU-Bus sein. Die einzige Einschränkung ist, daß der Speicherbus eine Potenz von 2 – entweder größer oder kleiner – des CPU-Bus sein muß.) Es ist klar, daß größere Breiten oft zum Anpassen größerer Cache-Zeilen verwendet werden, oder um der langsameren Ge schwindigkeit des Speicherbusses Rechnung zu tragen. Wieder ist es in Abhängigkeit von der Konfiguration möglich, 1x-, 2x- oder 4x-Breitenverhältnisse zu unterstützen. Es ist auch möglich, größere Verhältnisse durch Hinzufügen mehrerer externer Pins und leichtes Modifizieren der Multiplexfunktionen zu unterstützen. Es ist zu beachten, daß die kleineren Speicherbusbreiten, d.h. schmaler als die CPU-Busbreite, durch Verbinden der geeigneten Ausgangsleitungen des Cache-Speichers 13 auf Speicherbus 15 erreicht werden können.
  • Der Speicherbusschnittstellenabschnitt des Cache-Speichers 17 unterstützt vorzugsweise einen 4-Bit- oder 8-Bit-Datenpfad pro Bauelement. Gemäß dem bevorzugten Ausführungsbeispiel ist es erforderlich, daß die Speicherbusbreite gleich oder größer als die CPU-Busbreite ist. Diese Einschränkung und die 16-Bauelemente-Grenze erlauben eine direkte Unterstützung eines 32-Bit-Speicherbusses mit einem 128-KByte- oder 256-KByte-Cache-Speicher, eines 64-Bit-Speicherbusses mit einem 256-KByte- oder 512-KByte-Cache-Speicher, oder eines 128-Bit-Speicherbusses mit einem 512-KByte-Cache-Speicher für den 80486-Mikroprozessor. Abhängig von CPU-Busgrenzen sind andere Speicherbus- und Cache-Speichergrößenkombinationen möglich. Ein alternatives Ausführungsbeispiel kann beispielsweise eine Implementierung wählen mit einem größeren Cache-Speicher in den gleichen Konfigurationen, einem Cache-Speicher gleicher Größe mit weniger Bauelementen oder beides, je nach Wahl der Datenpfadbreite pro Bauelement.
  • Speicherbus-Steuereinrichtungsschnittstelle
  • Die Speicherbus-Steuereinrichtungsschnittstelle besteht aus Signalen, die synchron mit dem Prozessortakt sind. Diese sind in Tabelle 1 aufgelistet. TABELLE 1
    FUNKTION SIGNALNAME
    Takt CLK
    Zyklusbeendigung CRDY#
    Übertragungsbeendigung BRDY#
    Rücksetzen RESET
    Paritätskonfiguration [PAR#]
  • Das CLK-Pin wird zum Eingeben des Prozessortakts in den Cache-Speicher 17 verwendet. Cache-Speicher 17 verwendet diesen Takt als Zeitbasisreferenz für die interne Logik und externe Schnittstellen, ausgenommen der in Tabelle 2 unten aufgelisteten Speicherdatenpfadsignale.
  • Das CRDY#-Signal wird von der Speicherbus-Steuereinrichtung verwendet, um die Beendigung des Zyklus (ein Zyklus kann aus einer oder mehreren Datenübertragungen bestehen) anzuzeigen. Das BRDY#-Signal wird von der Speicherbus-Steuereinrichtung verwendet, um die Beendigung des Zyklus anzuzeigen (ein Zyklus kann aus einer oder mehrerer Datenübertragungen bestehen). Das BRDY#-Signal wird von der Speicherbus-Steuereinrichtung verwendet, um der CPU über den Cache-Datenpfad 17 die Beendigung einer einzelnen Datenübertragung zu signalisieren.
  • Das Rücksetzpin wird dazu verwendet, Cache-Speicher 17 in einen bekannten Zustand zu zwingen und dem Cache-Speicher zu signalisieren, wann er spezifizierte Pins zur Konfiguration abtasten muß. Das [PAR#]-Pin wird dazu verwendet, den Cache-Speicher für Normalbetrieb oder für Paritätsmodusbetrieb zu konfigurieren. Dieses Pin wird nur zur Konfiguration verwendet, daher die Verwendung von Klammern, und er wird während des Normalbetriebs nicht berücksichtigt. Zusätzlich zum [PAR#] werden wie im folgenden beschrieben, Konfiguratiosinformationen von dem Cache-Steuergerät und von den Speicherbusdatenpfad-Steuersignalen an den Cache-Speicher übertragen.
  • Speicherbusdatenpfadschnittstelle
  • Die Speicherbusdatenpfadschnittstelle besteht aus einem 8-Bit-Datenpfad und aus einem Satz von Steuersignalen, um den Datenpfad effizient mit einem breiten Spektrum von Speicherbusumgebungen zu verbinden. Speziell werden getaktete oder Strobe-Protokolle, die synchron oder asynchron zum Prozessortakt arbeiten, unterstützt. Es ist zu beachten, daß in einigen Fällen Mehrfachsignale auf einen gemeinsamen Satz von Pins gemultiplext werden, um verschiedene Betriebsmoden zu unterstützen. Wenn ein Pin Mehrfachsignale unterstützt, gibt das Signal in Klammern den Strobemodus an, während der Grundname für den Taktmodus verwendet wird. Wie zuvor definiert, werden Signalnamen in Klammern für Rücksetzkonfiguration verwendet. TABELLE 2
    FUNKTION SIGNALNAME
    Zyklussteuerung MSEL#[MTR4/MTR8#], MEOC#
    Übertragungssteuerung MBRDY# (MISTB), MOCLK (MOSTB)
    Zyklusattribute MZBT#[MX4/MX8#], MFRZ#
    [MEMLDRV]
    Speicherdatenbus MDATAO-MDATA7
    Datenausgabefreigabe MDOE#
  • Das MCLK-Signal bildet die Zeitbasis für den Betrieb des Cache-Speicherdatenbusses. Der getaktete Betriebsmodus, dieses Signal ist vorzugsweise mit dem Speichertakt zusammen mit allen anderen Pins (ausgenommen des MDOE#-Pins) verbunden, weist auf die steigende Flanke hin. In dem Strobe-Betriebsmodus ist dieses Pin vorzugsweise mit einer hohen Spannung verbunden, um die Strobe-Moduskonfiguration zu bilden.
  • Die MSEL#- und MEOC#-Signale werden zur Zyklussteuerung verwendet. Diese Signale führen die gleichen Funktionen im getakteten oder im Strobe-Modusbetrieb aus, obwohl die Abtastregeln leicht unterschiedlich sind. Das MSEL#-Pin wird zum Anzei gen verwendet, wenn Cache-Speicher 17 in busvermittelten Konfigurationen ausgewählt wurde, und auch zum erneuten Starten teilweise ausgeführter Zyklen. Das MEOC#-Pin wird zum Signalisieren des Endes eines Zyklus verwendet ohne mit dem Prozessortakt synchronisiert sein zu müssen, wodurch der Cache-Datenpfad sehr schnelle Rück-zu-Rück-Zyklen übertragen kann.
  • Die Übertragungssteuersignale werden verwendet, um den Austausch von Einzeldaten mit dem Cache-Speicher 17 zu beeinflussen (ein Zyklus kann aus einem oder mehreren Datenübertragungen bestehen). Verschiedene Signale werden auf diese Signalleitungen abhängig vom Betriebsmodus gemultiplext. Im getakteten Modus sind die Übertragungssteuerpins definiert als MBRDY# und MOCLK. Das MBRDY# zeigt die Beendigung einer Datenübertragung (abgetastete Daten zum Lesen, Treibe nächste Daten zum Schreiben) an. Das MOCLK-Pin wird als Zeitgabesignal bei der Datenausgabe verwendet. Durch die Beaufschlagung dieses Pins mit einer verzögerten Version des MCLK ist es möglich, die minimale Datenausgabeverzögerung zu erhöhen, um zusätzliche Haltezeit auf dem Speicherdatenbus zur Verfügung zu stellen und Signalverzerrungen in dem System zu kompensieren. Wenn das MOCLK-Pin auf hohes Potential festgelegt wird, sind bei dem bevorzugten Ausführungsbeispiel die Ausgangsdaten auf MCLK bezogen (Eingangsdaten und Steuersignale sind immer auf MCLK bezogen).
  • Im Strobemodus sind die Steuerpins als MISTB und MOSTB definiert. Diese Signale werden für Lesezyklen verwendet, um vom Speicherbus eingehende Daten abzutasten und während Schreibzyklen zu signalisieren, daß Daten vom Cache-Speicher 17 aufgenommen wurden, wodurch die nächsten Daten angesteuert werden können. Zu beachten ist, daß zwei zur Verfügung gestellt werden, um verschiedene Zeitgaben für Lese- und Schreibzyklen vorzusehen. Logischerweise wird für die obige Funktion nur ein Signal benötigt. Bei dem aktuell bevorzugten Ausführungsbeispiel sind diese Signale völlig symmetrisch.
  • Die MZBT#- und MFRZ#-Pins werden zum Anzeigen der Zyklusattribute verwendet. Das MZB#-Pin wird verwendet, um dem Cache-Speicher 17 die Ausführung von Burstübertragungen anzuzeigen, die der Reihe nach an der niedrigsten Adresse in der Cache-Zeile beginnen. Dieses Signal wird zum dynamischen Unterstützen der Busse verwendet, die Daten nicht in der 80486-Burstreihenfolge anlegen. Das MFRZ#-Pin wird bei Schreibzyklen verwendet, um dem Cache-Speicher 17 zu signalisieren, die Schreibdaten für wirksamere Implementationen der Schreibzuweisung intern zu halten. Auf diese Weise wird fakultativ von den Zuweisungen die Datenvereinigung unterstützt.
  • Ein Zuweisungszyklus besteht aus dem Lesen einer Cache-Zeile in Abhängigkeit von einem Schreiben von der CPU. Dies geschieht durch Ausführen der Originalschreiboperation im Speicher; dann folgt die Zuweisung. Ein anderer möglicher Weg besteht in der Ausführung der Zuweisung, Vereinigung der Schreibdaten und Ablegen des Ergebnisses in dem Cache-Speicher in einem modifizierten Zustand. Das MFRZ#-Signal wird verwendet, um Schreibdaten in den Schreibpuffern einzufrieren (auf der Basis der von dem CPU-Puffer übertragenen Gültig-Bits); beide Fälle werden von dem Datenpfad und den Puffern unterstützt.
  • Die MDATA0-MDATA7-Signale werden zur Datenübertragung an und von dem Cache-Bauelement verwendet. Diese Pins führen sowohl im getakteten als auch in dem Strobe-Betriebsmodus die gleichen Funktionen aus. Bei manchen Konfigurationen kann nur ein Teil dieser Pins verwendet werden. Das MDOE#-Pin wird zur Aktivierung der Ausgangspuffer auf den MDATA-Pins während Schreiboperationen verwendet. Dieses Signal steht in keiner Relation zu dem Prozessortakt, den anderen Speicherdatenpfadsteuersignalen oder dem ausgewählten Betriebsmodus.
  • Schließlich werden einige der folgenden Signale während des Rücksetzens zur Konfiguration verwendet. Wie im vorangegangenen beschrieben, wird MCLK[MSTBM] zum Auswählen des getakteten oder Strobe-Betriebsmodus verwendet, und MOCLK kann im getakteten Modus als Zeitreferenz für Ausgangsdaten verwendet werden. Zusätzlich wird MSEL#[MTR4/MTR8#] zum Bilden der Speicherbus-Cachezeile bei 4 oder 8 Übertragungen verwendet, und MZBT#[MX4/MX8#) wird zum Auswählen der Breite der Speicherdatenschnittstelle bei 4 oder 8 Bits verwendet. Das MFRZ#[MEMLDRV]-Signal wird zum Konfigurieren der Stärke der MDATA0-MDATA7-Ausgangspuffer verwendet. Es ist zu beachten, daß zusätzliche Informationen und Beschreibung der bei dem bevorzugten Ausführungsbeispiel verwendeten Signal- und Pinbezeichnungen in dem Anhang zur Verfügung gestellt werden.
  • Speicherschnittstellenpuffers
  • Spezielle Funktionen, die Speicherschnittstellenpuffer 40, 41, 45 und 46 ausführen, enthalten: Speicherbusleseoperationen (z.B. Zeilenfülloperationen), Durchschreiboperationen, Rückschreiboperationen und Snoop-Operationen. Es ist einem gewöhnlichen Fachmann klar, daß die Anzahl der verwendeten Puffer bei verschiedenen alternativen Ausführungsbeispielen variieren kann. Es ist jedoch zu beachten, daß für eine gegebene Implementierung der Cache-Steuereinrichtung es eine Beschränkung der Anzahl der verwendeten Puffer gibt. Diese Grenze basiert auf Voraussetzungen, die für gleichzeitige Operationen (z.B. Laden des Rückschreibpuffers gleichzeitig mit dem Ausführen einer Speicherbusleseoperation) gemacht werden, und dem zwischen Cache-Speicher 13 und der Cache-Steuereinrichtung 12 verwendeten Protokoll.
  • Gewöhnliche Verfolgungslogik ist für Puffer 40, 41, 45 und 46 und die ihnen zugeordneten MUXs vorgesehen, um den geeigneten Speicherschnittstellenpufferplatz für den aktuellen Speicherbuszyklus auf der Basis von vorher von der Cache-Steuereinrichtung über Leitungen 59, CPU-Steuerblock 51 und Leitung 58 empfangende Informationen zu bestimmen. Steuerblock 48 stellt den Speicherschnittstellenpuffer entlang Leitung 52 bzw. 53 Speicherpuffer- und Speichermultiplexerauswahlsignale zur Verfügung. Die interne Verfolgungslogik kann schnelle Rück-zu-Rück-Operationen auf einem Speicherbus unterstützen, der asynchron zu dem CPU-Takt ist.
  • Ein Burstzähler ist, wie vorstehend für die CPU-Busschnittstelle beschrieben wurde, auch zum Optimieren der Datenübertragung innerhalb eines Zyklus vorgesehen. Zu beachten ist, daß für Bursts auf dem Speicherbus die Reihenfolge eine logische Erweiterung der Intel-80486-Definition für das gegenwärtig bevorzugte Ausführungsbeispiel der vorliegenden Erfindung voraussetzt. Es ist auch ein Modus verfügbar, um alle Burstzyklen auf dem Speicherbus auf Null basieren zu lassen. Das ermöglicht die Unterstützung von Bussen, die die erweiterte 80486-Burstreihenfolge nicht unterstützen.
  • Speicherpuffer 40 und 41 werden für Zeilenfülloperationen, Zuweisungen und Speicherschreiboperationen verwendet. Jeder dieser Puffer ist 64 Bits breit, um während eines Speicherzyklus bis zu acht Übertragungen über acht Speicherbusdaten I/O-Pins zu unterstützen. Cache-Speicher 17 wechselt während des Normalbetriebs die Verwendung dieser Puffer. Wenn beispielsweise ein Puffer für eine Speicherleseoperation verwendet wird, ist der andere für den nächsten Zyklus verfügbar. Das ermöglicht Rück-zu-Rück-Speicherbuszyklen. Als weiteres Beispiel kann ein weiterer Speicherlesezyklus unter Verwendung des anderen Speicherpuffers ausgelöst werden, während Daten für eine Speicherleseoperation in das SRAM-Feld 22 geschrieben werden.
  • Das Signal MCYC# dient als Anzeige dafür, daß der aktuelle CPU-Zyklus einen der Speicherpuffer 40 oder 41 verwenden wird. Wenn der aktuelle Zyklus eine Leseoperation ist, ist es ein Speicherlesen. Wenn kein MAWEA# empfangen wird, bevor des CRDY# das Speicherlesen beendet, dann ist die Cache-Zeile nicht Cache-speicherbar, und der Puffer ist auf dem CRDY# verfügbar. Wenn ein MAWEA# empfangen wird, ist es eine Cache-speicherbare Fülloperation, und der Puffer ist nicht verfügbar, solange in das SRAM-Feld geschrieben wird. Die tatsächliche Schreibopera tion geschieht in dem Takt nach dem CRDY#. Daten werden an den CPU-Bus über Verbindungsbus 26 übertragen.
  • Wenn MCYC# während einer CPU-Schreiboperation empfangen wird, wird dies eine Durchschreiboperation oder eine übertragene Schreiboperation (siehe Zeitdiagramm). Wenn der Speicherbus zu Beginn des Speicherbusschreibzyklus verfügbar ist, wird die geschriebene Anfangsposition über Verbindungsbus 26 vom CPU-Bus 14 an den Speicherbus 15 gerichtet.
  • Wenn die CPU Burstdaten in den Cache-Speicher 17 ablegt, können diese Daten unter allen Umständen in einen verfügbaren Speicherschnittstellenpufferplatz (z.B. Puffer 40 oder 41) übertragen werden. Diese Übertragung geschieht mit der CPU-Taktrate. Wenn der Speicherbus eine Übertragung beendet, werden die Daten aus dem Puffer zum nächsten Platz verändert. Das geschieht mit der Speicherbustaktrate (d.h. MCLK) unabhängig von der CPU-Seite. (Zu beachten ist, daß Schreiboperationen zum Speicherbus die Länge von Eins bis Vier haben können.) Wenn ein MAWEA# vor dem Ende einer Speicherbusschreiboperation empfangen wird, wird unter Verwendung des gleichen Speicherzykluspuffers und -adressen eine Zuweisung durchgeführt.
  • Wenn eine Schreiboperation eine Zuweisung der neuen Zeile erzeugt, wird der für die Schreiboperation (z.B. 40 oder 41) verwendete Speicherpuffer auch für die Zuweisung verwendet. Beispielsweise wird eine Vereinigung der Daten von der Schreiboperation in der Zuweisung erledigt, wenn das Signal MFRZ# (siehe Anhang) aktiv ist. Die Daten von der Zuweisung, die zu von der CPU-Schreiboperation geschriebenen Stellen gehen, werden dann ignoriert (auf der Basis von vom CPU-Puffer 20 übertragenen Gültig-Bits). Daten für die anderen, die Zeile ausfüllenden Plätzen, werden gerade so in den Puffer geladen, als ob es eine andere Zuweisung oder Speicherleseoperation sei. Wenn die Zeile ausgefüllt ist, wird sie in Feld 22 geschrieben. Das ermöglicht es, daß eine Schreiboperation in dem Speicher in eine Leseoperation umgewandelt wird.
  • Auf diese Weise arbeiten die CPU und die Speicherbus-Schnittstellen unabhängig, wobei einer Seite das Datensammeln mit ihrer eigenen optimalen Geschwindigkeit und der anderen Seite das Multiplexen mit ihrer eigenen optimalen Geschwindigkeit ermöglicht wird. Natürlich ist der Schlüssel dieser Operation die Fähigkeit, Daten durch den den CPU- und Speicherbusse verbindenden transparenten Datenpfad zu übertragen. In dem Fall von Leseoperationen bedeutet dies, daß die ersten von dem Speicherbus eingehenden Daten sofort an die CPU-Pins übertragen werden. Die Speicherbusschnittstelle kann dann unabhängig von der CPU-Operation durch die Verwendung der Speicherpuffer 40 und 41 die Burstoperation beenden.
  • CPU-Busübertragungen können unabhängig von Speicherbusübertragungen auftreten (anders als die offensichtliche Einschränkung, daß Daten verfügbar sein müssen). Speicherbussteuereinrichtung 11 ist für das Koordinieren beider Schnittstellen verantwortlich, um richtigen Betrieb sicherzustellen. Jedoch muß sie nicht jede Übertragung synchronisieren. D.h., es besteht keine Notwendigkeit zum Quittieren (handshaking) entweder mit der CPU oder mit dem externen Speicher. Diese Entkopplung der Übertragungen erlaubt den schnellstmöglichen Zugriff zu den ersten Daten und den wirksamsten Bursts.
  • Daher entkoppelt eine unabhängige asynchrone Datenübertragungssteuerung auf der CPU und den Speicherseiten den Hochgeschwindigkeits-CPU-Bus von dem relativ langsamen Speicherbus. Die CPU-Seite ist mit dem CLK synchron und wird von den BRDY#- und BLAST#-Signalen vorzugsweise wie auf dem 80486-Bus definiert gesteuert. Die Speicherschnittstelle wird von einem Signalsatz gesteuert, der asynchron zur CLK ist.
  • Ersetzungsrückschreiboperationen werden dazu verwendet, modifizierte Zeilen aus dem Cache-Speicher zu entfernen, wenn eine neue Zeile gefüllt wird. Rückschreibpuffer 46 ist zum Unterstützen dieser Operationen vorgesehen. Die modifizierten Daten werden in dem Rückschreibpuffer während des Speicherlesens gespeichert, das das verschobene Tag belegen wird. Wenn sich die Speicher-Leseoperation als nicht Cache-speicherbar herausstellt (z.B. kein MAWEA#), wird die Rückschreiboperation abgebrochen.
  • Rückschreibpuffer 46 wird für Ersetzungsrückschreiboperationen, Spüloperationen und synchronisierte Operationen vom SRAM-Feld 22 zum Speicherbus verwendet. Rückschreibpuffer 46 ist 64 Bits breit, was breit genug ist, um eine ganze Cache-Steuereinrichtungszeile für jede Konfiguration mit einer Zeile pro Sektor zu halten. In einer Konfiguration, wo es zwei Zeilen pro Sektor gibt, ist der Teil der Zeile in jedem Cache-Speicher 32 Bits oder weniger lang, so daß Puffer 46 groß genug ist, beide Zeilen aufzunehmen. Üblicherweise ist die den Speicherschnittstellenpuffern zugeordnete Multiplexerlogik verantwortlich für das Herausholen der richtigen Anzahl von Bits aus dem Puffer 46. Wenn es zwei Zeilen pro Sektor gibt, nimmt sie zwei Leseoperationen vor, um beide Zeilen zu bekommen.
  • Wenn eine Datenzeile in den Rückschreibpuffer 46 geladen wird, wird ein Flag gesetzt, um anzuzeigen, daß entweder Zeile 0 oder Zeile 1 geladen wurde. Wenn es zwei Zeilen pro Sektor gibt, werden zwei WBWE#s benötigt, selbst wenn eine Feld-Leseoperation beide Zeilen laden könnte. Das zweite WBWE# wird benötigt, um dem Cache-Speicher zu sagen, daß beide Zeilen zum Speicherbus geschrieben werden müssen. Das Zeilen-Gültig-Flag wird durch das CRDY# gelöscht, das das Rückschreiben für diese Zeile beendet. Einzelheiten über diese Rückschreibzeitgaben werden später in den Zeitdiagrammen zur Verfügung gestellt.
  • Wenn es einen Snoop-Treffer zu einer modifizierten Zeile im Cache-Speicher gibt, wird diese Zeile vom SRAM-Feld 22 gelesen und im Snoop-Puffer 45 gespeichert. Wenn Daten im Snoop-Puffer 45 abgelegt werden, wird dies der Speicherbuszyklus mit der höchsten Priorität. Es ist zu verstehen, daß eine Snoop-Operation den Rückschreibpuffer 46 eher als einen Platz in dem Feld treffen könnte, da der Rückschreibpuffer 46 möglicherweise eine modifizierte Zeile enthält, wenn eine Snoop-Operation auftritt. In diesem Fall signalisiert die Cache-Steuereinrichtung SRAM 17, den Rückschreibpuffer 46 als den Speicherbuszyklus höchster Priorität zu behandeln. Das Signalisieren der Snoop-Puffer- und Rückschreibpufferbefehle wird über Leitung 59 unter Verwendung der Signale WBWE#, WBTYP# und WBA (siehe Anhang) ausgeführt.
  • Für andere Speicherzyklen als Snoop-Treffer laufen Speicherbuszyklen in der Reihenfolge ab, in der die Puffer 40 und 41 verwendet werden. Wenn beispielsweise Daten im Rückschreibpuffer 46 sind, während eine Speicherleseoperation startet, wird der Rückschreibzyklus vor dem Speicherlesezyklus ausgeführt. Wenn eine Speicherleseoperation unter Verwendung des anderen Speicherpuffers beginnt, bevor ein Speicherpuffer Daten für eine Schreiboperation beinhaltet, läuft die Schreiboperation zunächst ab. Wenn eine Speicherleseoperation unter Verwendung eines Speicherpuffers abläuft und eine Schreiboperation unter Verwendung des anderen Puffers beginnt, enden die Speicherleseoperation und alle zugeordneten Rückschreiboperationen vor der Schreiboperation. (Zu beachten ist, daß ein Zyklus auf dem Speicherbus beendet ist, wenn MEOC# niedrig ist. Wenn dieses Ende des Zyklus festgestellt wird, wechselt Cache-Speicher 17 zu dem nächsten Speicherbuszyklus in seiner Warteschlange.)
  • Speicherdatenpfad für Lese- und Schreiboperationen
  • 3 zeigt Details des Speicherdatenpfads, der analog zu dem in 4 detailliert dargestellten CPU-Datenpfad arbeitet. Speicherschnittstellenpuffer 40, 41, 45 und 46 geben Daten durch 8:1-Burstmultiplexer 67, Konfigurationsmultiplexer 68 und gewöhnliche Ausgangstreiber und Latchs auf den Speicherdatenbus aus. Datenübertragung von dem Speicherbus zu den Speicherschnittstellenpuffern durchläuft einen Satz Eingangstreiber, Latchschaltungen und Multiplexer, bevor sie von den Speicherschnittstellenpuffern empfangen wird. Der Datenfluß wird in beiden Richtungen von den von der Speichersteuereinheit 48 er zeugten Speicherpufferauswahl- und Speichermultiplexerauswahl-Signalen gesteuert.
  • Ein Speicherbuslesezyklus schreibt in einen der Cache-Speicherschnittstellenpuffer. In diesem Fall gehen Daten von den Speicherbusschnittstellenpins ein und werden im Cache-Speicher 17 verriegelt. An dem Punkt, an dem die Daten verriegelt werden, werden sie auch auf einen vollen 8-Bit-Datenpfad gemultiplext, wie in Verbindung mit dem CPU-Datenpfad beschrieben wurde. Die 8 Datenbits werden dann in die zugehörigen Puffer getrieben. Es gibt verschiedene Ebenen der Treiber in Block 65, die die Daten auf alle möglichen Speicherpuffer auffächern. Speichersteuerblock 48 wählt dann den Puffer aus, der geschrieben werden soll. Es ist zu beachten, daß diese Entscheidung auf dem ausgewählten Puffer, der aktuellen Adresse und der Konfiguration basiert.
  • Ein Speicherbusschreibzyklus liest Daten von einem oder mehreren Speicherschnittstellenpuffern. Für diese Situation beginnen die Daten in einem der Puffer, der 64 Bits breit ist. Burst- und Konfigurationsmultiplexer 67 und 68 (die bei dem gegenwärtig bevorzugten Ausführungsbeispiel auf die Puffer verteilt sind) dienen zum Auswählen eines von den 8 Bits, was zu einer Summe von 8 Bits führt, die zu den mit dem Speicherbus gekoppelten Ausgangstreibern getrieben wird. Wie bei der CPU-Seite, positioniert der Konfigurations-MUX 68 die Daten richtig, um die in der gegebenen Konfiguration verwendete Anzahl der Speicherdatenpins zu unterstützen. Bei der gegenwärtigen Implementierung ist diese Funktion tatsächlich mit dem Burstmultiplexer kombiniert und über die Speicherschnittstellenpuffer verteilt. Diese Konfiguration wird von der Speichersteuerlogik erfaßt, die die Puffer- und Multiplexerauswahlsignale erzeugt.
  • Zeitdiagramme
  • Zum besseren Verständnis der erfindungsgemäßen Operation werden die Zeitdiagramme der 5 bis 37 vorgestellt. Diese Signalformen veranschaulichen die Operation des gegenwärtig bevorzugten Ausführungsbeispiels der vorliegenden Erfindung.
  • 5 zeigt nicht pipelineverarbeitete CPU-Lese-Treffer-Zyklen der Länge 4 mit MRU-Treffer, Länge 1 mit MRU-Treffer und Länge 1 mit MRU-Fehlversuch. Zu Beginn des Zyklus ist kein anderer Zyklus aktiv, so daß die CPU-Adreßlatchs 49 und die CPU-MUX/Puffer 20 offen sind und die Datenausgabe im Tri-State ist. In Taktperiode 1 wird ADS# als aktiv und W/R# als niedrig abgetastet. BE# wird immer auf der Taktflanke verriegelt, auf der ADS# aktiv ist.
  • Am Ende des Takts 1 werden die Adressen in den CPU-Adreß-Latchschaltungen 49 verriegelt, und der CPU-Puffer wird in der Mitte des Takts 2 geschlossen. Danach kann Cache-Speicher 17 jeden anderen Zyklus ausführen, der das SRAM-Feld parallel zu dem über CPU-Bus stattfindenden Lesen verwendet. BRDY# wird im Takt 2 ausgegeben und zeigt an, daß die Daten gültig sind und weist den Cache-Burstmultiplexer an, zu den nächsten Daten überzugehen. Der Burst dauert an, bis BLAST# und BRDY# beide als niedrig abgetastet werden, wobei dies das Zyklusende anzeigt. Wenn kein pipelineverarbeiteter Zyklus anhängig ist, dann ist der Ausgang zu dieser Zeit im Tri-State. Es ist zu beachten, daß BLAST# nur eine Bedeutung hat, wenn BRDY# gleichzeitig aktiv ist.
  • Wenn der WAY-Treffer nicht der zuletzt verwendete ist, gibt die Cache-Steuereinrichtung ein WRARR# in T2 (wie in Takt 9 gezeigt) aus, und das erste BRDY# wird zum nächsten Takt verzögert. Wenn WRARR# während einer CPU-Leseoperation als niedrig abgetastet wird, wird der Weg-MUX 43 so geändert, daß er auf den von dem Weg-Eingangssignal angezeigten Weg weist. Das bewegt die Daten zu dem anderen Weg, und die neuen Daten werden, wie in Takt 10 gezeigt, ausgegeben. Dann wird das BRDY# ausgegeben. Wenn dies ein Burstmoduszyklus war, würden die übrigen Übertragungen wie zuvor weiterlaufen. In der halben Taktperiode nach dem niedrigen Abtasten von WRARR# wird das MRU-Bit (in Feld 22) auch zu einem neuen Wert geschrieben. Sobald das MRU-Bit geschrieben ist, kann der Weg-MUX wieder von dem MRU-Bit gesteuert werden, das das MRU-Bit nun auf das richtige WAY hinweist. Es ist zu beachten, daß BE# keine Auswirkung auf einen CPU-Lesezyklus hat, unabhängig von dem Zustand der auf den Bus gegebenen Byte-Freigabedaten.
  • Drei nicht-pipelineverarbeitete Schreibzyklen sind in 6 gezeigt. Der Zyklus beginnt genauso wie im Falle einer Leseoperation mit einer CPU-Adressenverriegelung und einem CPU-Pufferöffnen in dem Tri-State-Ausgang. Die Adressen werden in den CPU-Adreß-Latchschaltungen 49 zu Beginn des Takts 1 verriegelt, wenn ADS# als aktiv abgetastet wird. Gleichzeitig zu diesem Ereignis ist W/R# hoch, so daß der Ausgang in dem Tri-State bleibt, und CPU-Puffer 20 zur Aufnahme von Daten von den I/O-Pins geschaltet wird. Bei jedem BRDY# werden Daten in die CPU-Puffer für beide Wege gegeben, und die Burstadresse wird inkrementiert. WRARR# ist zu Beginn des Takts 3 aktiv. Das zeigt an, daß die Cache-Steuereinrichtung festgestellt hat, daß dies ein Cache-Schreib-Treffer ist und daß Daten zum SRAM-Feld 22 am Ende des Zyklus geschrieben werden sollen. Das zu schreibende WAY ist beim Takt CLK immer verriegelt, bei dem WRARR# aktiv ist.
  • Das in 6 gezeigte Schreiben in Feld 22 tritt zu Beginn des Takts 6 auf, wenn BLAST# und BRDY# als aktiv abgetastet werden. Die Daten werden in das von dem vorher verriegelten WAY-Wert angezeigte WAY geschrieben. Das Schreiben an das Feld findet in der ersten Hälfte des Takts 6 statt. Das MRU wird gleichzeitig geschrieben. Ist BE# für den laufenden Zyklus nicht aktiviert, werden keine Daten geschrieben (sondern das MRU wird noch geschrieben), wenn der Cache-Speicher WRARR# sieht.
  • Cache-Speicher 17 beginnt alle Leseoperationen unter der Voraussetzung, daß sich die Daten im SRAM-Feld 22 befinden. Wenn das Lesen ein Fehlversuch ist, wird das Lesen wie der Lese-Treffer beginnen, wobei Daten von dem Feld in den CPU-Puffer 20 gelesen werden. Wenn die Cache-Steuereinrichtung feststellt, daß das Lesen ein Fehlversuch ist, gibt sie dem Cache-Speicher 17 die BUS# und MCYC#-Signale aus, um ein Speicherlesen, wie in 7 gezeigt, auszulösen. Im Takt 2 geht das MCYC#-Signal in einen niedrigen Zustand über. Zu Beginn des Takts 3 stellt der Cache-Speicher diesen Übergang fest und verriegelt die Adressen und das WAY in dem Speicherzyklus-Adreßlatch. Im Takt 3 schaltet das niedrige BUS#-Signal die Datenquelle vom Feld 22 zu einem der Speicherzyklus-Puffer 40 oder 41. Wenn der Speicherbus verfügbar ist, gibt es über den geeigneten Speicherschnittstellenpuffer (d.h. entweder Puffer 40 oder 41) eine direkte Verbindung von dem Speicherbus zu dem CPU-Bus.
  • Daten werden in der Burstreihenfolge herausgeholt, wobei mit dem von der CPU angeforderten Anfangsplatz begonnen wird. Die ersten herausgegebenen Daten gehen in einen der Speicherschnittstellenpuffer, dann in CPU-Puffer 20 und schließlich auf den CPU-Bus. Die Datenscheiben werden an den Speicherschnittstellenpuffer herausgegeben, sein Burstzähler inkrementiert, und der nächste Teil der Speicherdaten geht in den nächsten Platz. Im Takt 5 sind die ersten Daten auf dem CPU-Bus gültig, und ein BRDY# wird ausgegeben. Dieses inkrementiert den CPU-Burst-MUX 33 für den nächsten Platz. Wenn das nächste Datenfeld auf dem CPU-Bus gültig ist, wird ein weiteres BRDY# ausgegeben, und dieses dauert an bis zu dem letzten Datenfeld, wenn BRDY# und BLAST# ausgegeben werden.
  • Die Datenübertragungsgeschwindigkeiten auf dem Speicherbus und dem CPU-Bus sind unabhängig, da der Speicherzyklus-Burst zähler und der CPU-Burstzähler unabhängig inkrementiert werden. Wenn der Speicherbus schneller Daten beschaffen kann, als die CPU sie empfangen kann, geht der Speicherzyklusburst zu einem anderen Platz, während die CPU noch Daten von dem vorhergehenden Platz empfängt. Wenn auf der anderen Seite die CPU Daten schneller empfangen kann, als der Speicherbus sie zur Verfügung stellt, wartet die CPU einfach auf das Eintreffen der neuen Daten.
  • Sobald die Cache-Steuereinrichtung weiß, daß die Zeile Cache-speicherbar ist, gibt sie ein MAWEA#-Signal an Cache-Speicher 17 aus, um anzuzeigen, daß diese Zeile in das SRAM 22-Feld geschrieben werden soll, wenn der Cache-Speicher das CRDY#-Signal empfängt. CRDY# wird im Takt 10 in 7 ausgegeben. Die Zeile wird dann im nächsten Zyklus geschrieben. Das Schreiben beginnt in Phase 2 (PH2) des nächsten Zyklus (d.h. Takt 11) und dauert während Phase 1 (PH1) des folgenden Zyklus (d.h. Takt 12) an. Wenn die CPU im nächsten Takt ein ADS# herausgibt, ist die Antwort darauf um einen Takt verzögert, während das Feld mit dem Durchführen des Feld-Schreibens beschäftigt ist. Wenn die Zeile nicht Cache-speicherbar war, ist der Zyklus bis auf die Tatsache, daß kein MAWEA# herausgegeben wurde, der gleiche. Das CRDY#-Signal wird am Ende des Speicherlesens noch immer ausgegeben, aber es wird kein Schreiben ausgeführt.
  • Das Verhältnis der Cache-Steuereinrichtungszeilengröße zu der CPU-Zeilengröße kann 1, 2 oder 4 sein. Das Lesen, welches das Speicherlesen auslöste, ist nur von der Länge 1. Das bedeutet, daß der Zyklus auf dem CPU-Bus für viele Zyklen beendet ist, bevor er auf dem Speicherbus beendet wurde. Beispielsweise stellt Cache-Speicher 17 das Ende des CPU-Zyklus im Takt 9 fest. Der CPU-Puffer wird zu dem Feld zurückgeschaltet und zu diesem Zeitpunkt von dem Speicherbereich getrennt. Jeder beliebige CPU-Lese- oder -Schreibzyklus kann nachfolgend ablaufen gelassen werden (ausgenommen bei einem weiteren Lese-Fehlversuch).
  • 8 zeigt eine Lese-Fehlversuch-Folge. In einem normalen Speicherlesezyklus werden die von der CPU angeforderten Daten zunächst zurückgesendet. Nachdem diese Daten zur CPU gesendet wurden, kann die CPU andere Zyklen ablaufen lassen. Eine Lese-Fehlversuch-Folge bezieht sich auf die Situation, daß der nächste Zyklus der gleichen Zeile wie das vorangegangene Lesen gilt und daß das Speicherlesen des SRAM-Feldes nicht beendet wurde. In dieser Situation wird das erste BRDY# für diese Leseoperation verzögert, bis die Speicherbus-Lesedaten in das SRAM-Feld geschrieben sind.
  • Anfänglich verlaufen die Lese-Fehlversuch-Kurven wie zuvor weiter (siehe 8). Im Takt 6 wird jedoch ein weiteres ADS# ausgegeben, und die Cache-Steuereinrichtung stellt fest, daß dieses der herausgeholten Zeile gilt. Im Takt nach CRDY# werden die Daten für das Speicherbus-Lesen in das SRAM-Feld geschrieben. In dem Takt nach diesem Vorgang werden die Daten in den CPU-Puffer gelesen. Der Zyklus geht dann genauso wie in dem Fall für einen Lese-Treffer weiter.
  • Wie im vorangegangenen erörtert, ist ein Rückschreiben eine Datenübertragung vom Cache-Speicher zurück in einen externen Speicher. Die vorliegende Erfindung führt zwei Arten des Rückschreibens aus: WBTYP = 1 UND WBTYP = 0. WBTYP = 1 wird für Snoop-Treffer verwendet und macht das Rückschreiben in den Speicherbuszyklus zur höchsten Priorität. WBTYP = 0 wird verwendet, wenn eine Zeile ersetzt wird oder wenn der Cache-Speicher gespült wird. Wenn die Cache-Steuereinrichtung einen Snoop-Treffer empfängt, weist sie den Cache-Speicher an, die modifizierten Daten über Snoop-Puffer 45 auf den Speicherbus zu geben. Die Sequenz der ausgeführten Vorgänge ist im Zeitdiagramm der 9 gezeigt.
  • Während Takt 1 läuft ein CPU-Lesezyklus ab, die Cache-Steuereinrichtung gibt ein WBWE# aus, und WBTYP = 1. Wenn WBA = 1, dann zeigt dies einen Snoop-Treffer in dem SRAM-Feld an, und Daten werden in den Snoop-Puffer 45 geladen. (WBA = 0 zeigt einen Treffer im Rückschreib-Puffer 46 an.) In der Mitte des Takts 3 liest der Cache-Speicher Daten unter Verwendung der Adressen an den Eingangspins und an dem WAY-Eingang von dem Feld in den Snoop-Puffer. Der Snoop-Zugriff zu dem SRAM-Feld beginnt in der Mitte des nächsten Taktes, wenn WBWE# aktiv ist. Er endet in der Mitte des nächsten Taktes. Die Adressen und das WAY-Eingangssignal müssen bis zur Beendigung der Operation gültig bleiben. Dies führt dazu, daß 64 Bits in den Snoop-Puffer unabhängig von der Konfiguration abgelegt werden. Am Ende des Taktes 3 wird der Puffer für diese Zeile als voll gekennzeichnet und wird zum Speicherbuszyklus mit höchster Priorität. Im Falle eines Rückschreibens in den primären Cache-Speicher in CPU 10 kann es notwendig werden, daß modifizierte, Daten in Snoop-Puffer 45 vereinigt werden. Das ist ablaufend in Takten 5, 6, 7 und 8 gezeigt. Das Signal HITM# wird zum Identifizieren eines CPU-Buszyklus als ein Rückschreiben verwendet.
  • Es ist zu beachten, daß WBTYP hoch ist, wenn WBWE# als aktiv abgetastet wird, wobei dies eine Snoop-Operation anzeigt. Wenn der Speicherbuszyklus beginnt, dann ist das Rückschreiben der Zyklus mit der höchsten Priorität. Das Rückschreiben geschieht vor jedem gesendeten Schreiben oder Speicherlesen. Wenn WBA im Takt 1 niedrig ist, zeigt dies einen Snoop-Treffer in einem Rückschreib-Puffer an. (Unter diesen Umständen wird die A4-Adresse zum Bestimmen des Rückschreib-Puffer-Treffers verwendet. Dieser Puffer wird dann als die auf den Speicherbus als nächste zu übertragenden Daten markiert.)
  • Wenn die neue Zeile für ein Speicherlesen in einen Cache-Speicherplatz gelenkt wird, der modifizierte Daten enthält, muß eine in 10 gezeigte Ersetzung ausgeführt werden. Die alten Daten werden in den Rückschreib-Puffer gelegt und die neuen Daten in das SRAM-Feld. Das Speicherlesen wird vor dem Rückschreiben ausgeführt, um die neuen Daten sobald wie möglich an die CPU zu senden. Wenn eine Speicherspülung (flash) des Cache-Speichers ausgeführt wird, werden die Rückschreibpuffer auch verwendet (wieder WBTYP = 0).
  • Bezugnehmend auf 10 läuft während Taktperiode 1 ein Speicherlesen ab. Während die neuen Daten in einen der Speicherzykluspuffer geladen und an den CPU-Bus gesendet werden, werden die alten Daten in den Rückschreibpuffer 46 gelegt. Wenn zwei Zeilen pro Sektor verwendet werden und beide modifiziert sind, werden beide in den Rückschreibpuffer gelegt. Das erfordert zwei Takte, in denen WBWE#, wie in Taktperioden 1 und 2 gezeigt, aktiv ist. Die zwei Takte müssen nicht aufeinanderfolgend sein. Ausgenommen für A5 ist die Adreßquelle für das Rückschreiben der Speicherzyklus-Adreßlatch für diejenige Fülloperation, die die Ersetzungsperiode verursachte. Während Takt 1 ist WBA niedrig, wobei dies anzeigt, daß A5 = 0, für das Lesen verwendet werden sollte. Im Takt 2 ist WBA hoch, wobei dies anzeigt, daß A5 = 1 verwendet werden sollte. Nachdem jede Ladeoperation beendet ist, wird der Rückschreibpuffer für jede Zeile als voll gekennzeichnet. Das verwendete WAY wird verriegelt, wenn das Speicherlesen gestartet wird. Wenn für das Speicherlesen MAWEA# nicht ausgegeben wird, wird das Rückschreiben abgebrochen, und die Rückschreibpuffer werden als leer gekennzeichnet. Im Fall eines Rückschreibens in den primären Cache-Speicher in CPU 10 kann es für die modifizierten Daten wieder notwendig sein, in Rückschreibpuffer 46 vereinigt zu werden, wie es in Takten 7 bis 10 gezeigt ist.
  • Nun wird auf 11 Bezug genommen, die ein Zeitdiagramm für eine Speicherbus-Schreiboperation zeigt. Ein Schreiben an den Speicherbus kann in dem Speicherzykluspuffer gestapelt (posted) werden oder nicht gestapelt (posted) ablaufen. Wenn BLAST# und BRDY# empfangen werden, die den CPU-Schreibzyklus vor dem Empfang des CRDY# beenden, wird der Speicherpuffer geschlossen, und das Schreiben wird gestapelt (posted). Wenn das CRDY# vor oder gleichzeitig mit BLAST# und BRDY# ankommt, dann wird das Schreiben nicht gestapelt.
  • Wenn der Speicherbus beim Beginn des Schreibens verfügbar ist, arbeitet der Cache-Speicher wie ein Sendeempfänger. D.h., Daten von dem CPU-Bus gehen direkt über die Speicherpuffer (d.h. Puffer 40 und 41) an den Speicherbus und auch in die CPU-Puffer für eine mögliche Schreiboperation in das Feld. Während Taktperiode 2 gibt die Cache-Steuereinrichtung einen MCYC#-Zyklus aus, um anzuzeigen, daß dieser der den Speicherbus einbeziehende Zyklus ist. Wenn die Daten auch in das Feld geschrieben werden sollen, wird ein WRARR# ausgegeben. In dem Fall, daß ein CRDY#-Signal in Taktperiode 6 empfangen wird, wurde diese Schreiboperation nicht gestapelt, da sie vor BLAST# ist. Wenn das CRDY# vor Takt 10 nicht auftritt, dann wurde die Schreiboperation gestapelt, wenn das BLAST# und BRDY# am Ende des Taktes 7 aktiv waren.
  • 12 zeigt ein Zeitdiagramm für ein Durchschreiben mit Zuweisung. Immer wenn es ein Schreib-Fehlversuch gibt, kann die Cache-Steuereinrichtung eine neue Zeile in dem Cache-Speicher für diesen Speicherplatz zuweisen. Hierzu beendet sie das aktuelle Schreiben und beginnt ein Speicherlesen. Wenn eine Zeile zugewiesen werden soll, nachdem MCYC# ausgegeben ist, aber noch vor oder gleichzeitig mit CRDY#, wird ein MAWEA# ausgegeben. Das kennzeichnet den für die Schreiboperation verwendeten Speicherpuffer zur Verwendung für die Zuweisung. Diese Zuweisung läuft dann entsprechend dem im Zusammenhang mit 7 erörterten Speicherlesen ab.
  • 13 zeigt einen getakteten Speicherburst-Lesezyklus. Wenn ein getakteter Speicherbus verwendet wird, werden MBRDY#, MSEL#, MZBT#, MEOC#, MFRZ# und MDATA07 an der ansteigenden Flanke des MCLK abgetastet. MDOE# ist zum Takt asynchron. In Taktperiode 1 ist MDOE# hoch, wodurch der Ausgang in einem Tri-State gehalten wird. MSEL# wird am Ende des Taktes 2 als niedrig festgestellt. Das ist dann, wenn der Speicherschnittstel lenpuffer zur Aufnahme der ersten Daten bereit ist. Jedesmal wenn MBRDY# von MCLK als niedrig abgetastet wird, wird eine Scheibe der Latchschaltung geschlossen, und der Burstzähler inkrementiert. Leseoperationen beginnen normalerwcsise an dem von der CPU angeforderten Burstspeicherplatz. Wenn MZBT# aktiv ist bei dem letzten MCLK, bei dem MSEL# inaktiv war (abgetastet als hoch), beginnt der Zyklus am Burstspeicherplatz 0 unabhängig von dem durch die CPU angeforderten Speicherplatz.
  • Der Zyklus dauert solange an, bis der Cache-Speicher ein MEOC# empfängt. Dieses Signal beendet den aktuellen Speicherbuszyklus asynchron und der Cache-Speicher schaltet zu dem nächsten Speicherbuszyklus. Gibt es eine weitere Speicherbus-Leseoperation, die auf das Ausführen wartet, beginnt sie bei dem nächsten Takt nach MEOC#.
  • 1437 zeigen zusätzliche Zeitgaberelationen sowohl für getaktete als auch Strobe-Bedingungen auf dem Speicherbus. Die Operation der vorliegenden Erfindung für die verschiedenen gezeigten Zyklen ist für den Fachmann verständlich, wenn sie im Zusammenhang mit der vorangegangenen Beschreibung und mit den im Anhang zur Verfügung gestellten Signalbeschreibungen betrachtet wird.
  • ANHANG
  • Dieser Anhang definiert die speziellen Funktionen jedes Pins gemäß dem gegenwärtig bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
  • CLK
    Dieses Signal liefert die grundlegende Zeitgabe für den Cache-Speicher. Seine Frequenz ist die interne Betriebsfrequenz des Speichers 17. Dieses Signal ist mit dem CPU-Takt verbunden.
    RESET
    Das RESET-Pin wird zum Rücksetzen des internen Zustands des Cache-Speichers verwendet. RESET setzt die den internen Speicherbus verfolgende Logik und I/O-Konfiguration zurück.
    WAY
    Das WAY-Pin wird im Normalbetrieb zum Anzeigen des richtigen Weges verwendet. Während CPU-Schreibzyklen, Zeilenfülloperationen und Rückschreib-Puffer-Ladeoperationen wird WAY zum Anzeigen des Weges verwendet, auf den zugegriffen werden soll. Wenn während eines CPU-Lesens WRARR# aktiv ist, wird das MRU-Bit zu dem Wert auf dem WAY-Pin geschrieben. WAY wird abgetastet, wenn WRARR#, MCYC# oder WBWE# aktiv sind.
    WRARR#
    Dieses Pin wird zum Steuern der Schreiboperationen von dem CPU-Busbereich in das Feld verwendet. Wenn es in einem CPU-Lesezyklus aktiv (NIEDRIG) ist, zeigt es an, daß das MRU-Bit auf den von dem WAY-Pin angezeigten Wert geschrieben werden soll. Wenn es in einem CPU-Schreibzyklus aktiv ist, zeigt es an, daß in den CPU-Puffer auf dem Weg geschrieben werden sollte, der in dem Takt nach BLAST#.BRDYx# angezeigt wird.
    MAWEA#
    Wenn aktiv (NIEDRIG) während eines Speicherlesens, zeigt es an, daß der Cache-Speicher die im Speicherpuffer (z.B. Puffer 30 oder 31) enthaltende Zeile in das SRAM-Feld im Takt, nachdem CRDY# aktiv war, schreiben soll. Wenn es während eines Durchschreibens aktiv ist, zeigt es an, daß der Cache-Speicher eine Zuweisung an der gleichen Adresse wie das Schreiben beginnen soll. MAWEA# wird vom ADS# bis CRDY# abgetastet.
    BUS#
    Dieses Pin steuert während Leseoperationen die Auswahl von CPU-MUX/Pufferdaten. Wenn dieses Pin als niedrig abgetastet wird, wird der Cache-Speicher seinen internen MUX so einstellen, daß CPU-Lesedaten von dem Speicherbus anstatt von dem Feld eingehen. Der interne MUX wird in dieser Bedingung bis BRDY# und BLAST# bleiben.
    MCYC#
    Dieses Pin wird verwendet, um den Cache-Speicher zu informieren, daß der aktuelle CPU-Zyklus Speicherpuffer 40 und 41 verwenden wird. Wenn der aktuelle Zyklus einen Lesen ist und MCYC# aktiv (NIEDRIG) wird, dann wird der Zyklus ein Speicherbus lesen. Wenn der aktuelle CPU-Zyklus ein Schreiben ist, dann zeigt ein aktives MCYC# an, daß dies ein Speicherschreibzyklus ist. Wenn der CPU-Schreibzyklus endet, bevor das CRDY# empfangen wird, wird der Speicherpuffer als voll gekennzeichnet und das Schreiben bis zu dem CRDY# gestapelt (posted), das den Speicherbuszyklus beendet. WAY wird an dem Takt, in dem MCYC# aktiv ist, abgetastet und verriegelt.
    WBWE#
    Das Rückschreib-Schreib-Freigabe-Pin wird mit den WBA und WBTYP-Pins zum Laden des Rückschreibpuffers 28 und des Snoop-Puffers 29 verwendet. Wenn das Pin als aktiv (NIEDRIG) abgetastet wird, wird der Cache-Speicher 13 die adressierte Zeile in den richtigen Rückschreibpuffer oder Snoop-Puffer laden. WAY wird im Takt, nachdem WBWE# aktiv ist, abgetastet. Während RESET wird dieses Pin zum Anzeigen des Verhältnisses der Cache-Steuereinrichtungszeile zu der CPU-Zeile verwendet.
    WBA
    Das Rückschreib-Adreß-Pin wird zur Anzeige verwendet, welche Zeile in den Rückschreibpuffer 46 geschrieben werden soll. Dieses Pin wird nur abgetastet, wenn WBWE# aktiv ist. Wenn WBA HOCH ist, bedeutet das, daß die durch A5 = 1 adressierte Zeile geladen wird. Wenn WBA NIEDRIG ist, bedeutet das, daß die mit A5 = 0 adressierte Zeile geladen wird. Wenn das SEC2#-Pin während des Rücksetzens niedrig ist, zeigt dies an, daß es zwei Zeilen pro Sektor (Bereich) gibt.
    CRDY#
    Dieses Pin zeigt das Ende eines Speicherbuszyklusses an, wenn es aktiv (NIEDRIG) ist.
    WBTYP
    Das Rückschreib-Typ-Pin zeigt an, wenn es HOCH ist, daß das Rückschreiben eine Snoop-Operation ist. Wenn es niedrig ist, zeigt es an, daß Rückschreiben eine Ersetzung oder ein explizites (Spül- oder synchrones) Rückschreiben ist. Dieses Pin wird abgetastet, wenn WBWE# aktiv ist. Während des Rücksetzens wird dieses Pin zum Anzeigen des Verhältnisses der Cache-Steuereinrichtungszeile zu der CPU-Zeile verwendet.
    A0–A15
    Diese Eingangssignale werden verwendet, um Adreßinformationen dem Cache-Speicher 17 zu liefern. Diese Signale sind mit den CPU-Adressen verbunden.
    CDATA0–CDATA7
    Diese Pins sind die acht CPU-Datenpins. Bei einer 2X-CPU-Buskonfiguration werden nur Pins CDATA0 und CDATA1 verwendet. Bei einer 4X-CPU-Buskonfiguration werden CDATA0–CDATA3 verwendet. Bei der Paritätskonfiguration werden CDATA4–CDATA7 als Bit-Freigaben verwendet (bzw. BTE0#–BTE3#). Die Bit-Freigaben arbeiten entsprechend dem unten aufgeführten BE#, außer, daß sie anstatt des ganzen Bauelementes einen einzigen Bit steuern.
    BE#
    Das Byte-Freigabe-Eingangssignal wird zum Feststellen verwendet, ob der Cache-Speicher an dem Schreibzyklus auf der CPU teilnehmen soll, je nachdem mit welchem Byte des CPU-Datenbusses der Cache-Speicher verbunden ist.
    W/R#
    Das Schreib/Lesepin zeigt an, ob ein Schreib- oder ein Lesezyklus auf dem CPU-Bus ausgeführt wird. Wenn es HOCH ist, zeigt es einen Schreibzyklus an, wenn es NIEDRIG ist, zeigt es einen Lesezyklus an.
    ADS#
    Dieses Pin zeigt den Beginn eines CPU-Buszyklusses an. Das Signal ist mit dem CPU-Adreß-Strobe verbunden.
    BRDY#, BRDYC#
    Diese Pins werden verwendet, um die Beendigung eines Übertragungsteils eines CPU-Buszyklusses anzuzeigen. Wenn irgendein Pin aktiv (NIEDRIG) ist, zeigt dieses Pin die Beendigung der Übertragung an. BRDY# wird von der Speicherbus-Steuereinrichtung 11 getrieben. BRDYC# wird von der Cache-Steuereinrichtung 12 getrieben.
    BLAST#
    Dieses Pin ist ein Qualifizierer für die BRDY#- und BRDYC#-Pins. Wenn dieses Pin aktiv (NIEDRIG) ist, zeigt es an, daß ein BRDYx# die letzte Übertragung eines CPU-Buszyklus' ist.
    MOLK
    Im getakteten Speicherbusmodus stellt dieses Pin den Speicherbustakt zur Verfügung. Im getakteten Modus werden die anderen Speicherbussignale und Speicherbusdaten an der ansteigenden Flanke des MCLK abgetastet. Bei einem getakteten Speicherbusschreiben werden Daten aus MCLK (oder abhängig von der Konfiguration MOCLK) ausgetrieben. Im Strobe-Speicherbusmodus ist dieses Pin das Eingangsdaten-Strobepin und jedes Kippen führt dazu, daß Daten verriegelt werden.
    MOCLK
    Daten werden an der ansteigenden Flanke dieses Taktpins ausgegeben, wenn eine ansteigende Flanke auf ihm festgestellt wird, nachdem RESET inaktiv geworden ist. MOCLK ist eine verzögerte Version von MCLK. MCLK wirkt nur auf Schreibdaten. Es kann verwendet werden, um die minimale Ausgabezeit von MDATA relativ zu MOCLK zu erhöhen. Dieses Pin kann benötigt werden, um durch Speichertaktversatz erzeugte Eingangshaltezeitprobleme zu beseitigen. Im Strobe-Busmodus ist dieses Pin das Datenausgangs-Strobe-Pin. Jedes Kippen dieses Pins verursacht, daß neue Daten ausgegeben werden.
    MZBT#
    Wenn dieses Pin aktiv (HOCH) ist, zeigt es an, daß der Speicherbuszyklus unabhängig von dem ersten durch die CPU angeforderten Speicherplatz mit Burst-Speicherplatz 0 beginnen sollte. Dieses Pin wird zur Bestimmung der Anzahl der für den Speicherbus verwendeten I/O-Pins verwendet. Wenn es HOCH ist, zeigt es an, daß 4 I/O-Pins verwendet werden. Wenn es NIEDRIG ist, zeigt es an, daß 8 I/O-Pins verwendet werden. Dieses Eingangssignal und die Busverhältnisinformation werden zum Bestimmen der I/O-Pins für den CPU-Bus verwendet.
    MBRDY#
    Dieses Pin wird im getakteten Busmodus verwendet, um das Ende einer Übertragung anzuzeigen. Wenn es aktiv (NIEDRIG) ist, zeigt es an, daß Cache-Speicher 13 den Burstzähler inkrementieren und entweder die nächsten Daten ausgeben oder zur Aufnahme der nächsten Daten bereit werden sollte. Wenn es niedrig ist, wird der Speicherbus im Strobe-Betrieb sein. Wenn es hoch ist, wird der Speicherbus getaktet sein.
    MEOC#
    Dieses Pin wird verwendet, um das Ende eines Speicherbuszyklus' anzuzeigen. Wenn es aktiv (NIEDRIG) ist, wird der Cache-Speicher den aktuellen Speicherbuszyklus beenden und den nächsten starten. MEOC# ist asynchron zu CLK.
    MDATA0–MDATA7
    Diese Pins sind 8 Speicherdatenpins. In einer 4X-Speicherbuskonfiguration werden MDATA0–MDATA3 verwendet. Im getakteten Speicherbusmodus werden diese Pins an der ansteigenden Flanke des MCLKs und wenn MBRDY# aktiv ist, abgetastet. Neue Daten werden an der ansteigenden Flanke des MCLKs oder MOCLKs, wenn zusätzlich MRBDY# aktiv ist, getrieben.
    MSEL#
    Dieses Pin wird als Bauelement-Auswahlsignal verwendet. Wenn dieses Pin inaktiv (HOCH) ist, wird die Burststeuerung für den Speicherbuszyklus ausgelöst. Wenn dieses Pin aktiv (NIEDRIG) ist, schreitet die Burststeuerung mit MCLK oder MOCLK fort. Im getakteten Speicherbusmodus wird dieses Pin an der ansteigenden Flanke des MCLKs abgetastet. Dieses Pin ist asynchron zu CLK. Wenn RESET aktiv ist, wird dieses Pin zum Konfigurieren des Cache-Speichers für 8 oder 4 Übertragungen auf dem Speicherbus verwendet. Wenn dieses Pin während des Rücksetzens HOCH ist, bedeutet es, daß es 4 Übertragungen auf dem Speicherbus für jede Cache-Zeile gibt. Wenn dieses Pin während des Rücksetzens niedrig ist, bedeutet dies, daß es 8 Übertragungen auf dem Speicherbus für jede Cache-Zeile gibt.
    MDOE#
    Die Speicherbus-Ausgabe-Freigabe wird zum Steuern der Datenspeisung auf den Speicherbus verwendet. Wenn dieses Pin inaktiv (HOCH) ist, dann sind die MDATA[0:7]-Pins im Tri-State. Wenn dieses Pin aktiv (NIEDRIG) ist, dann treiben die MDATA[0:7)-Pins aktiv Daten. Die Funktion dieses Pins ist die gleiche für den Strobe oder getakteten Speicherbusbetrieb. Dieses Pin ist asynchron zu CLK und MCLK.
    MFRZ#
    Wenn dieses Pin aktiv (HOCH) ist, werden Daten für eine Zuweisung mit Daten von der Schreiboperation vereinigt, die die Zuweisung verursachte. Bits von der Fülloperation, die zu dem gleichen Speicherplatz wie das CPU-Schreiben gehen, werden irgnoriert. MFRZ wird während MEOC# des Schreibens abgetastet.
    HITM#
    Dieses Pin wird zum Identifzieren eines Cache-Konsistenzzyklusses auf der CPU-Busschnittstelle verwendet. Wenn ADS# anliegt und HITM# aktiv ist, wird die Cache-Datenscheibe die CPU-Busdaten mit den Daten in den Snoop- oder Rückschreib-Puffern vereinigen, bevor sie auf eine Speicherbus-Snoop-Operation antwortet.
    BUFF#
    Dieses Pin wird zum Abbrechen von CPU-Buszyklen im Fall von gegenseitiger Blockierung bei Snoop-Operationen verwendet. Wenn speziell der CPU-Bus durch das Warten auf den Speicherbus blockiert ist und der Speicherbus durch das Warten auf das Bearbeiten einer Snoop-Operation, für die modifizierte Daten in dem primären Cache-Speicher vorliegen, blockiert ist, wird BUFF# derart zum Abbrechen des CPU-Buszyklus verwendet, daß die Snoop-Operation bearbeitet werden kann.

Claims (4)

  1. Cache-Speichereinrichtung (17) für ein Mikroprozessorsystem mit einer mit einem CPU-Bus (14) gekoppelten CPU (10), wobei der CPU-Bus (14) synchron zu einem CPU-Takt arbeitet, einem Hauptspeicher, einem mit dem Hauptspeicher gekoppelten und asynchron zum CPU-Takt arbeitenden Speicherbus (15) und einem Cache-Speicher-Subsystem (12, 13, 18), wobei das Cache-Speicher-Subsystem (12, 13, 18) die Cache-Speichereinrichtung (17) aufweist und die Cache-Speichereinrichtung (17) als integrierte Schaltung ausgeführt ist, welche aufweist: eine Cache-Speichermatrix (22) zum Speichern von Daten einer vorgegebenen Datenzeilenlänge; eine mit dem CPU-Bus (14) gekoppelte CPU-Bus-Schnittstelle (20, 21, 23) mit einer CPU-Steuereinrichtung (21) und einem CPU-Puffer (20) zum Übertragen von Daten zum und vom CPU-Bus (14), wobei der CPU-Puffer (20) mit der Cache-Speichermatrix (22) gekoppelt ist, wobei Daten mit der vorgegebenen Datenzeilenlänge mit nur einem Zugriff in den CPU-Puffer übertragen und aus dem CPU-Puffer abschnittsweise auf den CPU-Bus (14) gemultiplext werden, eine mit dem Speicherbus (15) gekoppelte Speicherbus-Schnittstelle mit mindestens einem Pufferspeicher (40, 41, 45, 46) und einer diese steuernden Speicher-Steuereinrichtung (48) zum Zwischenspeichern und Übertragen von Daten zum und vom Speicherbus (15), wobei die Speicherbus-Schnittstelle zum Übertragen von Daten mit der Cache-Speichermatrix (22) gekoppelt ist; und ein die CPU-Bus-Schnittstelle (20, 21, 23) mit der Speicherbus-Schnittstelle (40, 41, 4446, 48) koppelnder Datenpfad (23, 20, 26, 46, 44) zum direkten Übertragen von Daten.
  2. Cache-Speichereinrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die Pufferspeicher (40, 41, 45, 46) der Speicherbus-Schnittstelle einen ersten und einem zweiten Speicherzykluspuffer (40, 41) zum Speichern von Daten während Speicherzugriffen enthalten, die abwechselnd Daten während Speicherzugriffen speichern, wobei dann, wenn auf einen der Puffer durch die Cache-Speichermatrix (22) zugegriffen wird, der zweite Speicherzykluspuffer zum Aufnehmen von Daten über den Speicherbus (15) verfügbar ist.
  3. Cache-Speichereinrichtung nach einem der Ansprüche 1 bis 2, dadurch gekennzeichnet, daß die Pufferspeicher (40, 41, 45, 46) der Speicherbus-Schnittstelle einen Rückschreibpuffer (46) zum Speichern von von der Cache-Speichermatrix (22) zu dem Speicherbus (15) über die Speicherbus-Schnittstelle übertragenen Daten zur Verwendung in Rückschreib-Zyklen umfassen.
  4. Cache-Speichereinrichtung nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die Pufferspeicher (40, 41, 45, 46) der Speicherbus-Schnittstelle einen Snoop-Puffer (45) zum Speichern einer aus dem Speicherbus (15) beim Auftreten eines Snoop-Treffers in der Cache-Speichermatrix (22) gelesenen Datenzeile umfassen.
DE4291778A 1991-06-04 1992-06-04 Cache-Speichereinrichtung für ein Mikroprozessorsystem mit einem Cache-Speicher mit asynchronem Datenpfad Expired - Fee Related DE4291778B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US710079 1985-03-11
US07/710,079 US5293603A (en) 1991-06-04 1991-06-04 Cache subsystem for microprocessor based computer system with synchronous and asynchronous data path
PCT/US1992/004744 WO1992022035A1 (en) 1991-06-04 1992-06-04 Cache subsystem for microprocessor based computer with asynchronous and synchronous data path

Publications (1)

Publication Number Publication Date
DE4291778B4 true DE4291778B4 (de) 2005-02-10

Family

ID=24852543

Family Applications (2)

Application Number Title Priority Date Filing Date
DE4291778A Expired - Fee Related DE4291778B4 (de) 1991-06-04 1992-06-04 Cache-Speichereinrichtung für ein Mikroprozessorsystem mit einem Cache-Speicher mit asynchronem Datenpfad
DE4291778T Pending DE4291778T1 (de) 1991-06-04 1992-06-04 Cache-Subsystem für Computer auf Mikroprozessorbasis mit asynchronem und synchronem Datenpfad

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE4291778T Pending DE4291778T1 (de) 1991-06-04 1992-06-04 Cache-Subsystem für Computer auf Mikroprozessorbasis mit asynchronem und synchronem Datenpfad

Country Status (6)

Country Link
US (1) US5293603A (de)
JP (1) JPH06508457A (de)
DE (2) DE4291778B4 (de)
GB (1) GB2272313B (de)
HK (1) HK66095A (de)
WO (1) WO1992022035A1 (de)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446164B1 (en) * 1991-06-27 2002-09-03 Integrated Device Technology, Inc. Test mode accessing of an internal cache memory
US5414827A (en) * 1991-12-19 1995-05-09 Opti, Inc. Automatic cache flush
JP3517417B2 (ja) * 1992-01-28 2004-04-12 株式会社日立製作所 データ転送装置
JP3920931B2 (ja) * 1992-04-17 2007-05-30 サン・マイクロシステムズ・インコーポレイテッド キャッシュされたデータを読出しおよび書込む方法ならびにデータをキャッシングする装置
US5463753A (en) * 1992-10-02 1995-10-31 Compaq Computer Corp. Method and apparatus for reducing non-snoop window of a cache controller by delaying host bus grant signal to the cache controller
US5668971A (en) * 1992-12-01 1997-09-16 Compaq Computer Corporation Posted disk read operations performed by signalling a disk read complete to the system prior to completion of data transfer
US5590307A (en) * 1993-01-05 1996-12-31 Sgs-Thomson Microelectronics, Inc. Dual-port data cache memory
US6311286B1 (en) * 1993-04-30 2001-10-30 Nec Corporation Symmetric multiprocessing system with unified environment and distributed system functions
US5526512A (en) * 1993-09-20 1996-06-11 International Business Machines Corporation Dynamic management of snoop granularity for a coherent asynchronous DMA cache
US6276844B1 (en) * 1993-12-06 2001-08-21 International Business Machines Corporation Clustered, buffered simms and assemblies thereof
US5761476A (en) * 1993-12-30 1998-06-02 Intel Corporation Non-clocked early read for back-to-back scheduling of instructions
JP3490131B2 (ja) * 1994-01-21 2004-01-26 株式会社ルネサステクノロジ データ転送制御方法、データプロセッサ及びデータ処理システム
US5577200A (en) * 1994-02-28 1996-11-19 Intel Corporation Method and apparatus for loading and storing misaligned data on an out-of-order execution computer system
US5603007A (en) * 1994-03-14 1997-02-11 Apple Computer, Inc. Methods and apparatus for controlling back-to-back burst reads in a cache system
US5905997A (en) * 1994-04-29 1999-05-18 Amd Inc. Set-associative cache memory utilizing a single bank of physical memory
US5826052A (en) * 1994-04-29 1998-10-20 Advanced Micro Devices, Inc. Method and apparatus for concurrent access to multiple physical caches
US5692152A (en) * 1994-06-29 1997-11-25 Exponential Technology, Inc. Master-slave cache system with de-coupled data and tag pipelines and loop-back
JPH0830546A (ja) * 1994-07-20 1996-02-02 Nec Niigata Ltd バス制御装置
US5634073A (en) * 1994-10-14 1997-05-27 Compaq Computer Corporation System having a plurality of posting queues associated with different types of write operations for selectively checking one queue based upon type of read operation
US5835948A (en) * 1994-10-14 1998-11-10 Compaq Computer Corporation Single bank, multiple way cache memory
US5640532A (en) * 1994-10-14 1997-06-17 Compaq Computer Corporation Microprocessor cache memory way prediction based on the way of previous memory read
US5553265A (en) * 1994-10-21 1996-09-03 International Business Machines Corporation Methods and system for merging data during cache checking and write-back cycles for memory reads and writes
TW358907B (en) * 1994-11-22 1999-05-21 Monolithic System Tech Inc A computer system and a method of using a DRAM array as a next level cache memory
EP0793827B1 (de) * 1994-11-22 2002-03-06 Monolithic System Technology, Inc. Verfahren und struktur zur verwendung einer dram-matrix für einen zweite-stufe-cachespeicher
US5893921A (en) * 1995-02-10 1999-04-13 International Business Machines Corporation Method for maintaining memory coherency in a computer system having a cache utilizing snoop address injection during a read transaction by a dual memory bus controller
CN1077700C (zh) * 1995-02-17 2002-01-09 曼特亚克公司 可编程调控交插存取存储器管理系统
US5802586A (en) * 1995-02-27 1998-09-01 Motorola, Inc. Cache memory having a read-modify-write operation and simultaneous burst read and write operations and a method therefor
JPH08314794A (ja) * 1995-02-28 1996-11-29 Matsushita Electric Ind Co Ltd 安定記憶装置へのアクセス待ち時間を短縮するための方法およびシステム
US5617347A (en) * 1995-03-17 1997-04-01 Fujitsu Limited Cache memory system and method thereof for storing a staged memory item and a cache tag within a single cache array structure
WO1996029653A1 (en) * 1995-03-17 1996-09-26 Intel Corporation Multi-processing cache coherency protocol on a local bus
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
US5704058A (en) * 1995-04-21 1997-12-30 Derrick; John E. Cache bus snoop protocol for optimized multiprocessor computer system
US6128700A (en) 1995-05-17 2000-10-03 Monolithic System Technology, Inc. System utilizing a DRAM array as a next level cache memory and method for operating same
US5983025A (en) * 1995-06-07 1999-11-09 International Business Machines Corporation Computer system buffers for providing concurrency and avoid deadlock conditions between CPU accesses, local bus accesses, and memory accesses
US5652859A (en) * 1995-08-17 1997-07-29 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US5802560A (en) * 1995-08-30 1998-09-01 Ramton International Corporation Multibus cached memory system
US5692165A (en) * 1995-09-12 1997-11-25 Micron Electronics Inc. Memory controller with low skew control signal
US5768550A (en) * 1995-11-21 1998-06-16 International Business Machines Corporation Bus interface logic system
US5758188A (en) * 1995-11-21 1998-05-26 Quantum Corporation Synchronous DMA burst transfer protocol having the peripheral device toggle the strobe signal such that data is latched using both edges of the strobe signal
US5963721A (en) * 1995-12-29 1999-10-05 Texas Instruments Incorporated Microprocessor system with capability for asynchronous bus transactions
JPH09231130A (ja) * 1996-02-26 1997-09-05 Mitsubishi Electric Corp マイクロコンピュータ
US5765196A (en) * 1996-02-27 1998-06-09 Sun Microsystems, Inc. System and method for servicing copyback requests in a multiprocessor system with a shared memory
US5916311A (en) * 1996-03-27 1999-06-29 Matsushita Electric Industrial Co., Ltd. Bus controller and information processing device providing reduced idle cycle time during synchronization
US5960453A (en) 1996-06-13 1999-09-28 Micron Technology, Inc. Word selection logic to implement an 80 or 96-bit cache SRAM
US5897656A (en) 1996-09-16 1999-04-27 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US6049847A (en) * 1996-09-16 2000-04-11 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US5898895A (en) * 1996-10-10 1999-04-27 Unisys Corporation System and method for controlling data transmission rates between circuits in different clock domains via selectable acknowledge signal timing
US5924121A (en) * 1996-12-23 1999-07-13 International Business Machines Corporation Adaptive writeback of cache line data in a computer operated with burst mode transfer cycles
US5862154A (en) 1997-01-03 1999-01-19 Micron Technology, Inc. Variable bit width cache memory architecture
US5872913A (en) * 1997-03-07 1999-02-16 International Business Machines Corporation System and method for low overhead, high precision performance measurements using state transistions
US5909694A (en) * 1997-06-12 1999-06-01 International Business Machines Corporation Multiway associative external microprocessor cache
US6243769B1 (en) 1997-07-18 2001-06-05 Micron Technology, Inc. Dynamic buffer allocation for a computer system
US6073190A (en) * 1997-07-18 2000-06-06 Micron Electronics, Inc. System for dynamic buffer allocation comprising control logic for controlling a first address buffer and a first data buffer as a matched pair
US6081876A (en) * 1997-09-22 2000-06-27 Hewlett-Packard Company Memory error containment in network cache environment via restricted access
US6289419B1 (en) * 1998-03-06 2001-09-11 Sharp Kabushiki Kaisha Consistency control device merging updated memory blocks
KR100285956B1 (ko) 1998-06-30 2001-04-16 윤종용 고속직렬버스에연결된동기식및비동기식장치의제어시스템과제어방법
US6198666B1 (en) 2000-02-29 2001-03-06 International Business Machines Corporation Control input timing-independent dynamic multiplexer circuit
US6477622B1 (en) * 2000-09-26 2002-11-05 Sun Microsystems, Inc. Simplified writeback handling
US9710384B2 (en) * 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
CN101290564B (zh) * 2008-05-26 2010-07-28 华为技术有限公司 数据传输方法、系统及cpu接口控制器
CN101340595B (zh) * 2008-07-21 2011-09-21 华为技术有限公司 一种图像数据回读的方法和装置
US8782348B2 (en) * 2008-09-09 2014-07-15 Via Technologies, Inc. Microprocessor cache line evict array
US10521118B2 (en) * 2016-07-13 2019-12-31 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0375864A2 (de) * 1988-12-29 1990-07-04 International Business Machines Corporation Cache-Speicherumgehung
EP0398523A2 (de) * 1989-05-19 1990-11-22 Hitachi, Ltd. Dateneingabe-/-ausgabevorrichtung und Ausführungsunterstützung in digitalen Prozessoren

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3972023A (en) * 1974-12-30 1976-07-27 International Business Machines Corporation I/O data transfer control system
US4075686A (en) * 1976-12-30 1978-02-21 Honeywell Information Systems Inc. Input/output cache system including bypass capability
US4342084A (en) * 1980-08-11 1982-07-27 International Business Machines Corporation Main storage validation means
US4467411A (en) * 1981-03-06 1984-08-21 International Business Machines Corporation Scheduling device operations in a buffered peripheral subsystem
US4442487A (en) * 1981-12-31 1984-04-10 International Business Machines Corporation Three level memory hierarchy using write and share flags
US4575792A (en) * 1982-03-31 1986-03-11 Honeywell Information Systems Inc. Shared interface apparatus for testing the memory sections of a cache unit
US4564899A (en) * 1982-09-28 1986-01-14 Elxsi I/O Channel bus
US4724518A (en) * 1983-07-29 1988-02-09 Hewlett-Packard Company Odd/even storage in cache memory
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
US5157776A (en) * 1987-12-30 1992-10-20 Zenith Data Systems Corporation High speed memory for microcomputer systems
US4888679A (en) * 1988-01-11 1989-12-19 Digital Equipment Corporation Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
US5025366A (en) * 1988-01-20 1991-06-18 Advanced Micro Devices, Inc. Organization of an integrated cache unit for flexible usage in cache system design
US4905188A (en) * 1988-02-22 1990-02-27 International Business Machines Corporation Functional cache memory chip architecture for improved cache access
US5125084A (en) * 1988-05-26 1992-06-23 Ibm Corporation Control of pipelined operation in a microcomputer system employing dynamic bus sizing with 80386 processor and 82385 cache controller
US5003465A (en) * 1988-06-27 1991-03-26 International Business Machines Corp. Method and apparatus for increasing system throughput via an input/output bus and enhancing address capability of a computer system during DMA read/write operations between a common memory and an input/output device
US5058006A (en) * 1988-06-27 1991-10-15 Digital Equipment Corporation Method and apparatus for filtering invalidate requests
US5097409A (en) * 1988-06-30 1992-03-17 Wang Laboratories, Inc. Multi-processor system with cache memories
US5119485A (en) * 1989-05-15 1992-06-02 Motorola, Inc. Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation
US5155843A (en) * 1990-06-29 1992-10-13 Digital Equipment Corporation Error transition mode for multi-processor system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0375864A2 (de) * 1988-12-29 1990-07-04 International Business Machines Corporation Cache-Speicherumgehung
EP0398523A2 (de) * 1989-05-19 1990-11-22 Hitachi, Ltd. Dateneingabe-/-ausgabevorrichtung und Ausführungsunterstützung in digitalen Prozessoren

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Intel, Microprocessor and Peripheral Handbook, Volume I, Microprocessor 1988, S. 4-290 *

Also Published As

Publication number Publication date
US5293603A (en) 1994-03-08
HK66095A (en) 1995-05-12
JPH06508457A (ja) 1994-09-22
WO1992022035A1 (en) 1992-12-10
GB2272313B (en) 1994-11-30
GB2272313A (en) 1994-05-11
DE4291778T1 (de) 1995-07-20
GB9321174D0 (en) 1994-03-16

Similar Documents

Publication Publication Date Title
DE4291778B4 (de) Cache-Speichereinrichtung für ein Mikroprozessorsystem mit einem Cache-Speicher mit asynchronem Datenpfad
DE4218003C2 (de) Cache-Steuereinrichtung für ein sekundäres Cache-Speichersystem
DE69834026T2 (de) Verfahren und vorrichtung zur befehlswiedereinordnung und wiederherstellung von daten zur originalen befehlsreihenfolge
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE60006842T2 (de) Multiprozessor-Node-Controller-Schaltung und Verfahren
DE19983737B3 (de) System zum Neuordnen von Befehlen, die von einer Speichersteuerung zu Speichervorrichtungen ausgegeben werden, unter Verhinderung von Kollision
US5228134A (en) Cache memory integrated circuit for use with a synchronous central processor bus and an asynchronous memory bus
DE60037174T2 (de) Puffersystem für externen speicherzugriff
DE60215417T2 (de) Netzwerkschaltung
DE10316725B4 (de) Datenverwaltungsverfahren für ein Distributed Shared Memory-System
DE10045188B4 (de) Cacheadresskonfliktvorrichtung
DE19983687B4 (de) Verarbeitung geordneter Datenanforderungen an einen Speicher
DE69625486T2 (de) Speichersteuerung zur nicht sequentiellen ausführung von schreibbefehlen
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
DE102009046847A1 (de) Mehrklassen-Daten-Cache-Verfahren
DE2854485A1 (de) Datenverarbeitungssystem mit speicherhierarchie
DE112010003758T5 (de) Instruktionen zum Verwalten einer parallelen Cache-Hierarchie
DE10045915A1 (de) Verfahren und System zum Steuern von Datenübertragungen mit physikalischer Trennung der Datenfunktionalität von der Adressen- und Steuerfunktionalität in einem verteilten Multi-Bus-Mehrprozessorsystem
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102006030879A1 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE19908618A1 (de) Gemeinsam genutzter Hochleistungscachespeicher
EP0882267B1 (de) Mehrprozessor-zentraleinheit
WO2007017373A1 (de) Vorrichtung und verfahren zur speicherung von daten und/oder befehlen in einem rechnersystem mit wenigstens zwei verarbeitungseinheiten und wenigstens einem ersten speicher oder speicherbereich für daten und/oder befehle
DE602004008628T2 (de) Datenverarbeitungsschaltung mit gemultiplextem speicher
DE69727172T2 (de) Verwendung eines Prozessorbus für die E/A-Verkehrsübertragung

Legal Events

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