-
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#.
-
14–37 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.