-
Die
Erfindung bezieht sich auf Computer-Speichersysteme.
-
Die
Leistungsfähigkeit
eines Computersystems läßt sich
durch die Verwendung einer Speicherhierarchie vergrößern. Beispielsweise
kann ein dreistufiger Speicher aus langsamen, mittleren und schnellen
Speichern aufgebaut werden. Ein langsamer Speicher kann eine Magnetplatte
sein, um mit geringen Kosten große Datenmengen zu speichern. Ein
mittelschneller Speicher kann aus DRAMs aufgebaut werden, um als
Hauptspeicher des Computersystems verwendet zu werden. Ein schneller
Speicher kann SRAMs verwenden, um als schneller Prozessor-Pufferspeicher (cache)
zu dienen. Hinter der Speicherhierarchie steht die Theorie, Code(Instruktions)-
und andere Daten, die vom Systemprozessor verarbeitet werden sollen,
im schnellsten Speicher zu gruppieren. Da ein Hochgeschwindigkeitsspeicher typischerweise
der kostspieligste verfügbare
Speicher ist, soll er aus Wirtschaftlichkeitsgründen relativ klein sein. Der
aus DRAMs bestehende Hauptspeicher ist dichter und weniger kostspielig
als ein Cache-Speicher mit SRAMs und kann daher erheblich größer als
der Cache-Speicher sein.
-
Im
Betrieb werden Befehle und andere Daten vom Systemspeicher zum Cache-Speicher übertragen,
damit ein schneller Zugriff zu den Variablen des gerade ausgeführten Programms
besteht. Wenn nicht im Cache-Speicher enthaltene zusätzliche
Daten benötigt
werden, werden diese vom Hauptspeicher übertragen, indem ausgewählte Daten
im Cache-Speicher ersetzt werden. Man verwendet verschiedene Ersetzungsalgorithmen
zur Bestimmung, welche Daten ersetzt werden.
-
Eine
effizient arbeitende Cache-Speicher-Architektur zeichnet sich durch
ein hohes Verhältnis von
Treffern zu Zugriffen aus. Ein Treffer liegt vor, wenn die gesuchten
Daten sich im Cache-Speicher befinden. Diese Trefferquote wird durch
eine Anzahl von Faktoren beeinflußt. Der Hauptfaktor ist der Ortsbezug
der gerade verarbeiteten Codes. Mit anderen Worten, ist der Code
an räumlich
benachbarten Stellen im Speicher lokalisiert, dann ist die Trefferquote höher, als
wenn der Code im Speicher weit verstreut ist. Ein anderer Faktor,
welcher die Trefferquote eines Cache-Speichers beeinflußt, ist
die Anzahl von Geräteeinheiten,
welche Zugriff zum Speicher haben. Hat nur ein einziger Datenbus-Master,
wie etwa der Systemprozessor, Zugriff zum Speicher, dann können die im
Cache-Speicher gespeicherten
Daten so kontrolliert werden, daß die Trefferquote vernünftig hoch wird.
Hat jedoch mehr als ein einziger Datenbus-Master über denselben
Cache-Speicher Zugriff zum Hauptspeicher, dann kann der Cache-Speicher zwischen
den Anforderungen der Datenbus-Master hin und her pendeln, wodurch
die Trefferquote stark absinkt. Mit anderen Worten unterscheidet
der Cache-Speicher nicht zwischen den Anforderungen des Systemprozessors
und anderer Datenbus-Master, welche den Cache-Speicher in gleicher
Weise beeinflussen. Ein Betriebsfall kann die Datenbehandlung des
Cache-Speichers erheblich stören.
So können beispielsweise
vom Zentralprozessor benötigte
Daten überschrieben
werden von Daten, die in Abhängigkeit
von Speicherzugriffen seitens eines anderen CPU-Datenbus-Masters als der Host
gepuffert worden sind.
-
Ein
weiterer die Trefferquote beeinflussender Faktor hängt damit
zusammen, daß sowohl
Codedaten wie auch Nicht-Codedaten
gepuffert werden. Datenblöcke
im Systemspeicher werden an verschiedenen räumlichen Stellen des Cache-Speichers
abgebildet. Wenn jeder Datenblock im Systemspeicher nur in einem
einzigen Bereich abgebildet wird, dann nennt man einen solchen Cache-Speicher
einen "Direct Mapped
Cache". Eine satzassoziative
Abbildung beinhaltet, daß jeder
Datenblock an mehr als einem einzigen Bereich abgespeichert wird.
Wenn beispielsweise jeder Datenblock an einem von zwei Bereichen
gespeichert werden kann, dann nennt man den Cache-Speicher zweifach-satzassoziativ.
Unabhängig
von der Anzahl der für
einen Systemspeicherblock verfügbaren
Plätze
für die
Cache-Speicherung von
sowohl Codedaten wie auch Nicht-Codedaten er geben sich Überlappungen
der jeweiligen Abbildungen. Wenn also sowohl Codedaten als auch Nicht-Codedaten
gepuffert werden, kann es zu erheblichen Überschreibungen kommen, wenn
Daten bei Speicherzugriffen ersetzt werden.
-
Eine
mit Cache-Speichertreffern zusammenhängende Angelegenheit ist, ob
ein Datenelement im Cache-Speicher gültig und/oder "dirty" ist. Ein Datenelement
im Cache-Speicher ist gültig,
solange kein entsprechendes Element im Systemspeicher aktueller
ist. Ein Datenelement im Cache-Speicher ist dirty, wenn es aktueller
als ein entsprechendes Element im Systemspeicher ist. Ein Datenelement
wird dirty, wenn ein Datenbus-Master
das Element in einen Cache-Speicher und nicht in den Systemspeicher
einschreibt.
-
Sind
alle Bytes eines Datenelements gültig, dann
liefert der Cache-Speicher bei einem Treffer das gewünschte Datenelement.
Wenn irgendwelche der Bytes ungültig
sind, reagiert der Systemspeicher auf die Speicherauslesung für das Datenelement. Wenn
jedoch eins und nicht alle der Datenbytes gültig und dirty sind, dann werden
jegliche solche Bytes zuerst vom Cache-Speicher in den Systemspeicher geschrieben,
ehe das Datenelement aus dem Systemspeicher ausgelesen werden kann.
Ein solcher Stand der Technik ist aus der EP-A-0 379 769 bekannt.
Dieses Rückschreib-Merkmal
erhöht
die Reaktionszeit des Speichersystems, und dadurch wird die Leistungsfähigkeit
des Systems beeinträchtigt.
-
Aus
der US-A-4157586 ist ein Verfahren zur Durchführung einer Teil-Speicheroperation
bekannt. Hierbei wird ein zu speicherndes Datenwort in ein Datenregister
eingegeben. In Übereinstimmung
mit in einem getrennten Maskenregister gespeicherten Steuerbits
werden ausgewählte
Bytes des Wortes im Datenregister in einem Mischregister mit ausgewählten Bytes
aus dem Cache-Speicher vermischt, und der Ausgang des Mischregisters
wird einer Speicher-Steuereinheit für den Hauptspeicher zugeführt.
-
Eine
Aufgabe der Erfindung besteht in der Schaffung eines Verfahrens
zur Verbesserung der Reaktionszeit eines Computer-Speichersystems.
-
Demnach
wird gemäß der Erfindung
ein Verfahren zum Lesen eines sowohl in einem Cache-Speicher als
auch in einem Systemspeicher gespeicherten Mehrfach-Byte-Datenelementes
geschaffen, in welchem ausgewählte
Bytes des Datenelementes im Cache-Speicher ungültig gemacht werden und welches
gekennzeichnet ist durch die Schritte, daß im Cache-Speicher für jedes
Byte des in ihm gespeicherten Datenelements eine Gültig/Ungültig-Marke gespeichert
wird, die angibt, ob das Byte gültig
oder ungültig
ist, und daß bei
einem ersten Ausleseabruf für
dieses Datenelement die gültigen Bytes
vom Cache-Speicher mit den übrigen
Bytes aus dem Systemspeicher ohne vorheriges Rückschreiben der gültigen Bytes
in den Systemspeicher kombiniert werden.
-
Es
sei nun eine Ausführungsform
als Beispiel der Erfindung mit Bezug auf die beiliegenden Zeichnungen
erläutert,
in denen
-
1 eine
Blockdarstellung eines Hochleistungs-Computer-Speichersystems gemäß der Erfindung,
und
-
2 ein
detaillierteres Diagramm des Computer-Speichersystems nach 1 darstellen.
-
1 zeigt
ein Blockschaltbild eines Computer-Speichersystems 10. Das System
enthält
einen Systemspeicher 12, der bei einer bevorzugten Ausführung durch
DRAM-Chips (dynamic random access memories) gebildet wird. Die im
Speicher 12 gespeicherten Daten können generell in Codedaten
(Instruktionen oder Befehle) und Nicht-Codedaten unterteilt werden.
Im folgenden bezieht sich der Ausdruck "Daten" auf Information und enthält sowohl
Codedaten (Instruktionen, Befehle) und Nicht-Codedaten. Der Speicher 12 ist über einen
Datenbus 14 mit anderen Teilen eines Computersystems verbunden, was
hier nicht dargestellt ist. Das Speichersystem 10 ist für die Verwendung
mit zwei oder mehr Datenbus-Mastern ausgelegt. Genauer gesagt ist
es bestimmt für
die Verwendung mit einem Zentral prozessor wie einem Intel-Prozessor
386, 386sx oder 486 in Verbindung mit anderen Datenbus-Mastern oder
Einheiten, die sich mit dem Zentralprozessor den Zugang zum Speichersystem 10 teilen.
Der Zugang zum DRAM 12 wird gesteuert durch die DRAM-Steuerschaltung 22,
die im Zuge des Datenbusses 14 angeordnet ist.
-
Das
Speichersystem 10 enthält
ferner einen internen Cache-Speicher 16, einen Vorabruf-Cache-Speicher 18 und
einen Schreib-Cache-Speicher 20, die jeweils mit dem Datenbus 14 verbunden
sind. Bei einer bevorzugten Form ist der interne Cache-Speicher 16 ein
4 K-Byte-Vierfach-Satzassoziativ-Cache-Speicher, der Vorabruf-Cache-Speicher 18 ein
128-Byte-Direct-Mapped-Cache-Speicher
und der Schreib-Cache-Speicher 20 ein 128-Byte-Zweifach-Satzassoziativ-Cache-Speicher.
-
Ein
Merkmal der Cache-Speicher besteht darin, daß ihre Funktionalität variiert
werden kann, je nachdem, was für
ein Zentralprozessortyp (386, 386sx oder 486) benutzt wird. Jedoch ändern sich bestimmte
Merkmale der Cache-Speicher nicht. Beispielsweise speichert der
interne Cache-Speicher 16 Daten, die allein auf Basis von
Speicherzugängen durch
den Zentralprozessor ausgewählt
sind. Mit anderen Worten ist der interne Cache-Speicher 16 auf den Zentralprozessor
zugeschnitten und wird nicht durch Speicherzugänge seitens anderer Datenbus-Master
beeinflußt.
Es versteht sich, daß jeder der
Cache-Speicher durch irgendeinen der Datenbus-Master gelesen werden
kann. Das heißt,
obwohl der Cache-Speicher 16 keine Dateneinschreibung aufgrund
von Speicherzugängen
durch andere als den Systemprozessor erlaubt, kann er von anderen Datenbus-Mastern
ausgelesen werden, wenn die gesuchten Daten in ihm enthalten sind.
Es versteht sich ferner, daß jeder
der Cache-Speicher nicht für
ihn bestimmte Dateneinschreibungen beobachtet, um seine Inhalte
bei Beobachtungstreffern ungültig
zu machen und damit Kohärenz
sicherzustellen.
-
Als
weiteres unwandelbares Merkmal der Cache-Speicher enthält der Vorabruf-Cache-Speicher 18 nur
Codedaten, die vom DRAM 12 vorab geholt worden sind. Er
holt weiterhin vorab nur Daten aufgrund eines Speicherzugangs seitens
des Zentralprozessors. Wenn immer im Betrieb der Systemprozessor
Codedaten anfordert, die nicht schon im Vorabruf-Speicher sind,
dann werden die nächstfolgenden
128 Bytes des Codes vorab in den Cache-Speicher 18 in Warteposition
geholt im Vorgriff auf nachfolgende Codeanforderungen.
-
Der
Schreib-Cache-Speicher 20 puffert nur Daten, die in den
DRAM 12 eingeschrieben werden sollen. Er ist nicht nur
ein Schreibpuffer, sondern ein Cache-Speicher, der wie oben gesagt,
durch irgendeinen Datenbus-Master gelesen werden kann. Er puffert
jedoch keine Daten vom DRAM 12.
-
Ein
wichtiges Merkmal der Cache-Speicher ist die Trennung der Betriebsweisen
jedes der Cache-Speicher, so daß die
Definition derjenigen Funktionen, die durch den Prozessortyp bedingt
sind, leicht gewählt
werden können.
Aufgrund dieser Einsicht ist das erfindungsgemäße System in der Lage, die
Leistungsfähigkeit
eines Systems zu erreichen oder zu überschreiten, welches einen
einzigen Cache-Speicher benutzt, der viele Male größer als
die Gesamtgröße der Cache-Speicher
bei der Erfindung ist. Bezüglich
der wahlweisen Funktionsdefinition, je nach Prozessortyp, für ein System
mit einem 486-Prozessor speichert der Schreib-Cache-Speicher 20 Dateneinschreibungen
aller anderen Datenbus-Master als der Systemprozessor. Für ein System,
welches einen 386- oder 386sx-Systemprozessor benutzt, hält der interne
Cache-Speicher 16 nur Codedaten und ist ein nur auslesbarer
Cache-Speicher für
den Systemprozessor, und der Schreib-Cache-Speicher 20 puffert
Dateneinschreibungen von jeglichem Datenbus-Master einschließlich des
Systemprozessors. Die Betriebseigenschaften der Cache-Speicher werden
bestimmt durch Selbstkonfigurierung beim Netzeinschalten aufgrund
von Informationen über
den Typ des vorhandenen Zentralprozessors.
-
Die
DRAM-Steuerschaltung 22 sorgt für einen Fast-Page-Mode für die Zugriffe
zum DRAM 12. Fast-Page-Mode ist eine gut bekannte Technik
zur Beschleunigung der Zugriffe zum DRAM durch Aktivierung einer
Zeilenlinie in einer Speicherseite mit anschließendem "Anblitzen" aufeinanderfolgender Spalten zur Datenübertragung
in oder aus dem DRAM. Der DRAM 12 ist in Seiten unterteilt,
welche entweder Code- oder Nicht-Codedaten enthalten. Ein dem DRAM 12 zugeordnetes
Register ist entweder im DRAM 12 oder in der DRAM-Steuerschaltung 22 vorgesehen
und hält
die Seitenadresse einer Seite, auf welche zuletzt zugegriffen worden
ist. Im Effekt sorgt das System für eine Tendenz zu Codeseiten oder
Nicht-Codeseiten, je nach dem mit dem System verbundenen Prozessortyp.
Wenn beispielsweise der Systemprozessor ein 486iger ist, dann wird
die Adresse derjenigen Codeadressenseite im Register gehalten, zu
welcher zuletzt Zugriff erfolgt ist. Im Betrieb kann sowohl zu Codedatenseiten
wie auch zu Nicht-Codedatenseiten im DRAM 12 willkürlich Zugriff
genommen werden. Wenn in einem Zyklus Zugriff zu einer Codeseite
genommen wird und beim nächsten
Zyklus zu einer Nicht-Codeseite, dann wird die Adresse der Codeseite
in einem Register gehalten, während
Zugriff zur Nicht-Codeseite erfolgt. Unmittelbar nach dem Zugriff
zur Nicht-Codeseite wird die Adresse im Register benutzt, um die
Codeseite wieder zu öffnen.
Wenn andererseits der Systemprozessor ein 386 oder ein 386sx ist,
dann wird die Adresse derjenigen Nicht-Codeadressenseite im Register gehalten,
zu der zuletzt Zugriff erfolgt ist. Die Kombination der wahlweisen
Tendenz zur Seitenöffnung,
der Fast-Page-Mode-Zugriffe und mehrfacher Cache-Speicher ergibt eine Erhöhung der
Leistungsfähigkeit
des Systems.
-
Der
Schreib-Cache-Speicher 20 ist ein Zweifach-Satzassoziativspeicher.
Der Nicht-Code-Datenbereich des Speichers kann in drei Bereiche
unterteilt werden, die als Liste, Haufen oder Stapel bekannt sind
(list, heap, stack). Die Datenblöcke
im Speicher werden reserviert für
Liste, Haufen und Stapel, von denen jeder seine eigene Organisation
und eigenen Zweck hat. Beispielsweise ist ein Stapel ein Satz von Datenelementen,
von denen zu einem Zeitpunkt immer nur auf eines Zugriff erfolgen
kann. Die Listendaten werden hauptsächlich gelesen und im allgemeinen
nicht eingeschrieben. In strukturierten Programmen betrifft ein
hoher Prozentsatz von Einschreibungen den Stapel, und die am zweiten
häufigsten
Dateneinschreibungen betreffen den Haufen. Durch geeignete Zuordnung
der Haufen- und
Stapel-Datenblocks im DRAM und durch Abbildung (mapping) jeweiliger
Blocks zu entgegengesetzten Sätzen
in dem Zweifach-Satzassoziativ-Cache-Speicher
läßt sich eine
erhöhte
betriebliche Wirksamkeit realisieren. Weiterhin ist die Tendenz
für eine
offene Seite im DRAM für
Nicht-Codedaten effektiv eine Tendenz für eine offene Seite von Listendaten.
Auf diese Weise läßt sich
die Wirksamkeit des Betriebes weiter vergrößern.
-
2 zeigt
weitere Einzelheiten des Computer-Speichersystems 10. DRAM 12 und
Steuerschaltung 22 sind über 3-Zustands-Einheiten 300 mit
dem Datenbus 14 verbunden. Der Datenbus 14 hat
eine Kapazität
für 4 Bytes,
so daß die
4 Bytes eines Doppelwortes (mit 0, 1, 2 und 3 bezeichnet) parallel übertragen
werden können.
Jedes Byte eines vom DRAM 12 übertragenen Doppelwortes durchläuft eine
3-Zustands-Einheit 300, welche ausgewählte Bytes sperren oder durchlassen
kann, entsprechend von jeder Einheit 300 erhaltenen Steuersignalen.
Jede 3-Zustands-Einheit 300 erhält von den Cache-Speichern 16 und 20 ein
Sperrsignal über
eine Steuerleitung 302.
-
Die
Cache-Speicher 16 und 20 sind über 3-Zustands-Einheiten 304 bzw. 306 mit
der Datenleitung 14 verbunden. Wie beim DRAM 12 sind
die Datenelemente in den Cache-Speichern 16 und 20 in vier
parallelen Bytes (Doppelwort) zugänglich. Einzelne Bytes können durch
die 3-Zustands-Einheiten 304 und 306 gesperrt
oder durchgelassen werden, je nach den von den Cache-Speichern 16 und 20 erhaltenen
Steuersignalen.
-
Bei
einer Ausführungsform
ist das Steuersignal zur Sperrung eines Datenbytes vom DRAM 12 aktiv,
wenn das entsprechende Datenbyte in einem der Cache-Speicher 16 oder 20 gültig oder
dirty ist. Jedem Byte eines Mehrfachbyte-Datenelementes im Cache-Speicher 16 und 20 ist
ein Bit zugeordnet, welches als gültig gesetzt wird, wenn das
Datenelement anfangs in den Cache-Speicher eingeschrieben wird.
Unter bestimmten Betriebsbedingungen kann es notwendig sein, ein
oder mehrere Bytes in einem Element ungültig zu machen. Wenn beispielsweise eine schnelle Übertragung
von einem Datenbus-Master direkt zum DRAM 12 (schneller
Seiten-Betrieb) durchgeführt
wird, dann beobachtet jeder Cache-Speicher den Datenbus 14.
Wenn irgendwelche Datenelemente, die denjenigen in einem Cache-Speicher
entsprechen, auf diese Weise in den DRAM 12 eingeschrieben
werden, dann werden die jeweiligen Bytes in dem entsprechenden Datenelement
als ungültig
gesetzt. Als weiteres Beispiel kann es manchmal erwünscht sein,
Datenelemente von einem Cache-Speicher
in einen anderen zu übertragen.
Irgendein so übertragenes
Byte wird im Quellen-Cache-Speicher ungültig gesetzt, um Mehrdeutigkeiten
zu vermeiden. Jedem Mehrfachbyte-Datenelement im Cache-Speicher 16 und 20 ist
auch ein Bit zugeordnet, welches als dirty Bit bezeichnet wird.
Ein dirty Bit ist ein Marker, der anzeigt, daß der Cache-Speicher, in welchen
eingeschrieben wird, Information erhält, die noch nicht in den Speicher
geschrieben worden ist. Sie stellt also den aktuellsten Wert eines
gegebenen Datenelementes dar. Das dirty Bit wird typischerweise
gesetzt, wenn Daten von einem Datenbus-Master in den Cache-Speicher eingeschrieben
werden. Dirty Daten werden sauber, indem sie in den Systemspeicher
eingeschrieben werden. Obgleich die Erfindung ein gültiges Bit
auf dem Byte-Level und ein dirty Bit auf dem Element-Level liefert,
ist es möglich,
die Granularität
zu ändern.
-
Die
Erfindung erlaubt mehrere Betriebsarten. In der ersten müssen einzelne
Datenelemente durch einen Datenbus-Master gelesen werden. Normalerweise
werden die Cache-Speicher überprüft, und wenn
sich in ihnen ein Datenelement befindet, wird es sehr schnell zum
Datenbus-Master zurückgeführt. Ist
das Datenelement nicht im Cache-Speicher, dann werden die DRAM-Steuerschaltung 22 und
der DRAM 12 aktiviert und das Datenelement wird aus dem
DRAM 12 geholt (ein etwas längeres Verfahren als das Herausholen
aus einem Cache-Speicher). Wenn das Datenelement in einem oder mehreren
der Cache-Speicher ist, und wenn einige aber nicht alle seiner Datenbytes
gültig
oder dirty sind, werden die DRAM-Steuerschaltung 22 und
der DRAM 12 aktiviert und ihre Bytes den 3-Zustands-Einheiten 300 zuge führt. Jedes
Byte, zu dem ein entsprechendes dirty oder gültiges Byte in einem der Cache-Speicher enthalten
ist, wird jedoch von einer 3-Zustands-Einheit 300 gesperrt.
Gleichzeitig lassen die 3-Zustands-Einheiten 304 und 306 nur
Bytes passieren, die sowohl dirty als auch gültig sind. Auf diese Weise kann
ein komplettes Datenelement durch einen Datenbus-Master gelesen
werden.
-
Genauer
gesagt, wenn ein Datenelement sowohl in einem Cache-Speicher als
auch im DRAM 12 gespeichert ist, kann es sein, daß ausgewählte Bytes des
Datenelementes im Cache-Speicher
ungültig
gemacht worden sind. Für
jedes Byte jedes im Cache-Speicher gespeicherten Datenelementes
wird eine Gültig/Ungültig-Marke
vorgesehen. Die Marken für
die jeweiligen Bytes werden gültig
gesetzt, wenn das Datenelement erstmalig in den Cache-Speicher eingeschrieben
wird. Danach werden ausgewählte Marken
ungültig
gesetzt, wenn die vorstehend angeführten Bedingungen vorliegen.
Bei den meisten Anwendungen ist eine weitere notwendige Bedingung, daß ausgewählte Bytes
von woanders als vom DRAM 12 auch in den Cache-Speicher
eingeschrieben und als dirty bezeichnet worden sind. Wenn ein Datenbus-Master
das Datenelement zu lesen versucht, werden zuerst die Cache-Speicher überprüft. Ist
das Element in einem Cache-Speicher zu finden, enthält jedoch
einige ungültige
Bytes, dann wird ein Signal zur Aktivierung des DRAM 12 geliefert.
Nur ein gültiges
und dirty Byte vom Cache-Speicher wird mit Bytes vom DRAM 12 kombiniert.
Die Gültig-Marke
für ein
dirty Byte wird benutzt zum Abtrennen der entsprechenden Leitung
vom DRAM 12 zur Datenleitung 14, um die Übertragung
des entsprechenden Datenbytes vom DRAM 12 zu sperren. Ähnlich wird eine
Gültig-Marke
für ein
dirty Byte (oder eine invertierte Form von ihm) benutzt zur Verbindung
einer entsprechenden Byte-Leitung vom Cache-Speicher zur Datenleitung 14.
-
Die
zweite Methode ist auch wirksam, wenn das betreffende Datenelement über mehr
als einen einzigen Cache-Speicher verteilt ist. Mit anderen Worten
ist das Datenelement einem zweiten Cache-Speicher von einem anderen
als dem DRAM 12 ge liefert und somit als dirty bezeichnet
worden. Weiterhin sind ausgewählte
Datenbytes im zweiten Cache-Speicher-Datenelement ungültig gemacht
worden. Es ist jedoch wichtig, daß mindestens eines von jedem
der entsprechenden Bytes in zwei Cache-Speichern ungültig ist, um Mehrdeutigkeiten auszuschließen. Auf
eine Datenauslesung aus einem Datenbus-Master hin wird jeder Cache-Speicher
wiederum nach dem speziellen Datenelement abgesucht. Wenn das Element
in beiden Cache-Speichern enthalten ist und wenn beide Datenbytes
irgendeines Paares entsprechender Datenbytes in den beiden Cache-Speichern
als ungültig
ermittelt wurden, wird ein Signal zur Aktivierung des DRAM 12 ausgegeben.
Wie vorher werden gültige
und dirty Bytes von einem Cache-Speicher geliefert, und die entsprechenden
Bytes vom DRAM 12 werden gesperrt.
-
In
einer zweiten Betriebsart reagiert die erfindungsgemäße Anordnung
auf große
Datentransfers direkt vom DRAM 12 zu einem Datenbus-Master. Beispielsweise
arbeitet die Erfindung nach einem "Streaming"-Betrieb, wie er sich bei der IBM Micro Channel-Architektur
findet. Hierbei arbeitet der DRAM 12 in einem schnellen
Seiten-Betrieb und reagiert sequentiell auf Lesebefehle durch Übertragung von
Datenelementen vom DRAM 12. Die Cache-Speicher werden nach
jeden Datenelement abgesucht, jedoch zur gleichen Zeit, wo der DRAM 12 aktiviert
ist und nicht ehe er aktiviert wird, wie im oben beschriebenen ersten
Betrieb. Wenn jedoch ein dirty und gültiges Byte in einem der Cache-Speicher
festgestellt wird, dann wird die entsprechende Datenbyteleitung
vom DRAM 12 gesperrt und die dirty und gültigen Datenbytes
werden vermischt.