-
Diese Erfindung betrifft Datenverarbeitungssysteme.
Insbesondere betrifft diese Erfindung Datenverarbeitungssysteme,
die einen Cachespeicher verwenden, der zumindest ein mit jedem Datenwort innerhalb
des Cachespeichers verknüpftes
Statusbit enthält.
-
Es ist bekannt, Cachespeicher zur
Verfügung
zu stellen, wie denjenigen, der in 1 der
begleitenden Zeichnungen dargestellt ist, der Speicher 2 beinhaltet,
der Adreß-TAGs
für Datenzeilen
in einem Cache-RAM-Speicher 4 enthält. Der Cache-RAM-Speicher 4 ist
aus einer Mehrzahl von Cachespeicherzeilen bzw. Cachelines 6 zusammengesetzt,
wobei jede Cacheline 6 vier Datenworte speichert. Eine
Mehrzahl von Valid-Bits und Dirty-Bits 8 sind mit jeder
Cachezeile 6 verknüpft. Übliche Arten von
Statusbits 8 sind ein Valid-Bit 10 und ein Dirty-Bit 12.
Das Valid-Bit 10 zeigt an, ob die Cachezeile gültige Daten
speichert, z. B. muß beim
Start jede Cachezeile 6 als ungültige Daten speichernd markiert
werden. Das Dirty-Bit 12 zeigt im Kontext einer Write-Back-Cachespeicherarchitektur
an, daß zumindest
ein Datenwort in der Cachespeicherzeile 6 verändert wurde,
seitdem es aus dem Hauptspeicher gelesen wurde und folglich zu dem
Hauptspeicher zurückgeschrieben
werden muß,
wenn diese Cachezeile 6 aus dem Cachespeicher gelöscht oder
innerhalb des Cachespeichers ersetzt wird. Man wird sehen, daß als Kompromiß zwischen
der Schaltungsfläche
und dem Grad der Feinkontrolle, die mit dem Statusbit 8 erreicht
werden kann, jede Cachespeicherzeile 6 ein Valid-Bit 10 hat,
das mit dieser verknüpft
ist, und ein Dirty-Bit 12 hat, das mit ihr verknüpft ist
(dies ist die Anordnung, die in der Mehrzahl von Cachespeicherimplementierungen
verwendet wird). Somit nutzen die vier Datenworte innerhalb einer
Cachezeile 6 diese Statusbits 8 gemeinsam.
-
In bestimmten Betriebssituationen
ist es wünschenswert,
daß globale
Veränderungen
an den Statusbits 8 von allen Cachespeicherzeilen 6 eines Cachespeichersystems
durchgeführt
werden. Beispielsweise ist es mit dem Systemstart im Anschluß an einen
Austausch der Speicherverwaltungseinheit (MMU) oder im Anschluß an eine
Kontextschaltung häufig
notwendig, den gesamten Inhalt des Cachespeichers durch Kenntlich
machen aller Valid-Bits 10 von jeder Cachespeicherzeile 6 als
ungültig
zu löschen.
Eine Möglichkeit
dies durchzuführen
ist es, nacheinander auf jedes Valid-Bit 10 zuzugreifen
und es als ungültig
bzw. Invalid zu schreiben. In einem Cachespeichersystem, das Tausende
von Cachezeilen 6 enthalten kann, kann diese Operation
Tausende von Verarbeitungstakten in Anspruch nehmen und die Systemleistung
erheblich beeinflussen. Eine Alternative zu dem sequentiellen und
einzelnen Ändern von
jedem der Statusbits 8 ist es, eine globale Veränderung
durch Spezialhardware durchzuführen,
die in der Lage ist, die Statusbits parallel zu verändern. Während dies
einen schnellen Betrieb zur Verfügung stellen
kann, hat es den Nachteil, daß Schaltungsplatz
für diese
Spezialhardware gebraucht wird und sie typischerweise individuell
für jede
Implementierung einer generischeren Systemkonstruktion speziell
konstruiert werden muß.
-
Die US-A-5 475 849 beschreibt eine
Speichersteuereinrichtung für
ein Multiprozessorsystem mit einer Mehrzahl von Prozessoren, die
jeweils den einen Hauptspeicher gemeinsam nutzen, während sie
ihre eigenen Pufferspeicher oder Cachespeicher haben. Das System
verwendet Frontadreßanordnungen
(FAA) für
die Übereinstimmungssteuerung
zwischen den einzelnen Pufferspeichern und dem Hauptspeicher. Um
die Anzahl von benötigten
FAAs zu begrenzen, ohne die Wartezeit für die FAA-Abfrage übermäßig zu erhöhen, hat
das System block valid memory (BVM) bzw. Speicher mit gültigen Blöcken, die
Einträge
für jeden
Speicherort in dem Hauptspeicher haben, und hat gültige block
group valid tables (BGVT) bzw. Tabellen mit gültigen Blockgruppen, die Einträge für jede Gruppe
von Speicherorten, die mit jedem Pufferspeicher verknüpft sind, haben.
Bei einer Speicheranfrage wird zunächst auf die BGVT zugegriffen
und, wenn ein Abschnitt oder der gesamte Block, der den angeforderten
Ort enthält,
in dem Pufferspeicher, der mit dieser BGVT verknüpft ist, vorhanden ist, dann
wird ein gültiges
Signal erzeugt. Im Anschluß daran
wird auf den entsprechenden BVM zugegriffen und, wenn dies ein gültiges Signal
erzeugt, dann ist der Speicherort in dem Pufferspeicher vorhanden
und es wird auf die FAA zugegriffen. Falls irgendeiner ein ungültiges Signal erzeugt,
wird die Anfrage ignoriert und nicht zu der FAA gesendet.
-
US-A-5 539 894 beschreibt einen Cachespeicher
mit Cachespeichertags mit Blöcken
gültiger Bits
und Unterblöcken
gültiger
Bits.
-
Die vorliegende Erfindung betrifft
das zur Verfügung
stellen von Mechanismen für
das Verändern
von Statusbits mit hoher Geschwindigkeit möglicherweise so schnell wie
ein Verarbeitungszyklus, ohne daß speziell angefertigte Hardware
für den
Parallelzugriff auf alle Statusbits bereitgestellt wird.
-
Von einem Aspekt aus gesehen stellt
die vorliegende Erfindung eine Vorrichtung für die Datenverarbeitung zur
Verfügung,
wobei die Vorrichtung aufweist:
einen Speicher, der derart
betreibbar ist, daß er
eine Mehrzahl von Datenworten speichert, wobei jedes Datenwort mit
zumindest einem Statusbit verknüpft ist,
das eine Information betreffend einen Status des Datenwortes bestimmt,
einen
Statusbitspeicher, der derart betreibbar ist, daß er Statusbits innerhalb einer
hierarchischen Beziehung ablegt, so daß ein kombinierter Status,
der eine Mehrzahl von First-Level-Statusbits
auf einem ersten Niveau innerhalb der hierarchischen Verbindung
betrifft, durch ein Second-Level-Statusbit auf einem zweiten Niveau
innerhalb der hierarchischen Beziehung angezeigt wird, wobei das
zweite Niveau in der hierarchischen Beziehung höher als das erste Niveau ist,
eine
Status abfragende Logik, die derart arbeitet, daß sie einen Status eines Datenwortes
innerhalb des Speichers durch Untersuchen der Statusbits innerhalb
des Statusbitspeichers bestimmt, beginnend bei dem obersten Niveau
innerhalb der hierarchischen Beziehung und sich durch die hierarchische
Beziehung nach unten arbeitend, bis ein Statusbit erreicht wird,
das den Status des Datenwortes unabhängig von irgendwelchen Statusbits,
die in der hierarchischen Beziehung tiefer angeordnet sind, anzeigt,
und dadurch gekennzeichnet, daß
die
Vorrichtung betreibbar ist, um eine globale Veränderung in dem Status von allen
Datenwörtern,
die innerhalb des Speichers abgelegt sind, anzuzeigen durch Modifizieren
nur derjenigen Statusbits innerhalb eines höchsten Niveaus der hierarchischen
Beziehung.
-
Die Erfindung stellt Statusbits zur
Verfügung, die
in einer hierarchischen Beziehung (mit zumindest zwei Ebenen) angeordnet
sind, so daß globale
Veränderungen
oder Veränderungen
mit großer
Skala des Status einer Mehrzahl von Datenworten innerhalb des Speichers
durchgeführt
werden können durch
Verändern
von relativ wenigen Statusbits an der Spitze oder in Richtung der
Spitze der hierarchischen Beziehung, ohne daß jedes Statusbit, das mit jedem
Datenwort, für
das der Status sich ändert,
verändert
werden muß.
Auf diese Art und Weise kann die Zeit, die benötigt wird, um globale Veränderungen oder
Veränderungen
eines großen
Bereiches der Statusbits drastisch reduziert werden, ohne daß speziell
angefertigte Hardware für
das Durchführen
von parallelen Veränderungen
eines großen
Bereiches von den Statusbits bereitgestellt werden müssen. Es versteht
sich, daß viele
Datenworte Statusbits gemeinsam nutzen können. In einigen Ausführungsformen
kann die Hierarchie aus gültigen
Bits bzw. Valid-Bits und den Datenworten, auf die sich diese beziehen,
einschließlich
TAG-Werten, Datenworten, Dirty-Bits
und anderen Statusbits.
-
Die Statusbits könnten eine Vielzahl von unterschiedlichen
Eigenschaften der Datenworte, die mit diesem in Beziehung stehen,
repräsentieren.
Die Erfindung ist jedoch insbesondere für Ausführungsformen geeignet, in denen
die Statusbits Valid-Bits sind, die die Gültigkeit von Datenworten, die
innerhalb des Speichers abgelegt sind, anzeigen.
-
Valid-Bits sind oft globalen Veränderungen oder
Veränderungen
von großem
Umfang ausgesetzt, und daher ist die Erfindung besonders praktisch
beim Zulassen, daß diese
schneller verändert werden,
und zwar mit reduzierten Hardwarekosten.
-
Es versteht sich, daß an dem
niedrigsten Niveau innerhalb der hierarchischen Beziehung ein einzelnes
Statusbit für
jedes Datenwort zur Verfügung gestellt
werden könnte.
Wenn der Speicher ein Cachespeicher ist und eine Cachezeile vier
Datenworte ablegt, dann wäre
es somit möglich,
vier getrennte Valid-Bits mit dieser Cachezeile zu verknüpfen, um die
Validität
von jedem einzelnen Datenwort anzuzeigen. In bevorzugten Ausführungsformen
der Erfindung steht jedoch ein Statusbit des niedrigsten Niveaus
mit einer Mehrzahl von Datenworten in Beziehung. Dies stellt einen
befriedigenden Kompromiß zwischen
der erreichbaren Granularität
der Feinsteuerung dar und der erforderlichen Hardwareresourcen,
um die Statusbits bereitzustellen, dar.
-
Es ist insbesondere sehr bequem,
ein Statusbit des niedrigsten Niveaus mit allen Datenworten innerhalb
einer Cachespeicherzeile des Cachespeichers zu verknüpfen. In
einigen Ausführungsformen kann
eine Cachespeicherzeile als ihre verknüpften TAG-Werte und ihre verknüpften Dirty-Bits
beinhaltend angesehen werden.
-
Es wurde gefunden, daß diese
Anordnung effizient arbeitet, da Cachespeicherzugriffe zu und von
dem Hauptspeicher typischerweise auf einer Cachespeicherzeile per
Cachespeicherzeilenbasis stattfindet, so daß aufgrund der zeitweiligen
und örtlichen
Lokalität,
die in der Praxis mit den meisten Speicherzugriffen verknüpft ist,
eine Statusinformation unterhalb der Ebene einer Cachezeile selten
notwendig ist.
-
Die vorliegende Erfindung paßt sich
selbst an Ausführungsformen
an, in denen der Statusbitspeicher einen RAM-Speicher beinhaltet,
der Statusbitworte speichert, die aus einer Mehrzahl von Statusbits
gebildet sind. Die hierarchische Beziehung zwischen diesen Statusbits
und der Status abfragenden Logik ist derart, daß die Statusbits in Richtung der
unteren Ebenen innerhalb der hierarchische Beziehung innerhalb des
RAM-Speichers abgelegt werden können,
ohne die Leistung signifikant zu beeinflussen und daher die Speicherdichtevorteile
von RAM-Speichern
verglichen mit gebräuchlichen Flip-Flops
oder Registern erlangen.
-
Das Ablegen der Statusbits innerhalb
des RAM-Speichers erlaubt es, daß diese leicht als Statusbitworte
manipuliert werden können,
auf die von dem RAM-Speicher zugegriffen wird. Bei der Manipulation
von Statusbitworten wird eine typische Operation eine Lese-Modifizier-Schreiboperation
sein, die leicht durch Daten verarbeitende Strukturen, die innerhalb
vieler Systeme bestehen, unterstützt
wird. Getrennte Lese- und Schreiboperationen können ebenso notwendig sein,
und in manchen RAM-Speichern werden nur Lese- und Schreiboperationen
unterstützt.
-
Im Gegensatz zu der Verwendung von
hochdichtem RAM-Speicher auf den niedrigsten Ebenen innerhalb des
Statusbitspeichers verwendet in bevorzugten Ausführungsformen zumindest die
höchste Ebene
innerhalb der hierarchische Beziehung Registerbitschaltkreise (D-Typ),
um die Statusbits abzulegen. Auf Flip-Flop-Schaltkreise kann sehr
schnell zugegriffen werden, und sie können in Antwort auf vorbestimmte
Eingaben oder Zustände,
wie z. B. Start, MMU-Veränderungen,
Kontextschaltungen usw. verändert
werden und stellen folglich schnelle Globalstatusveränderungen
oder Statusveränderungen
in großem
Umfang zur Verfügung
mit relativ wenig oder keiner speziell angefertigten Hardware.
-
Auf die Statusbits, die innerhalb
eines Flip-Flops abgelegt sind, kann typischerweise einzeln zugegriffen
werden, und sie können
einzeln manipuliert werden, verglichen mit Statusbits, die innerhalb
eines RAMs abgelegt sind, auf die auf einer Wort-bei-Wort-Basis
zugegriffen wird und die auf einer Wort-bei-Wort-Basis manipuliert
werden.
-
In manchen Ausführungsformen kann die höchste Ebene
innerhalb der hierarchische Beziehung ein einzelnes Statusbit aufweisen.
In solchen Fällen
kann der gesamte Status der Datenworte eines Cachespeichers durch
die einzelne Veränderung dieses
einen Statusbits auf der höchsten
Ebene verändert
werden.
-
Um einen wesentlichen Vorteil von
dem Statusbitspeicher und der Status abfragenden Logik der Erfindung
zu erhalten, ist es äußerst wünschenswert, dafür zu sorgen,
daß globale
Veränderungen
für den gesamten
Speicher durchgeführt
werden können durch
Modifizieren nur der höchsten
Ebene der hierarchische Beziehung, und dafür zu sorgen, daß genügend Hardwareunterstützung bereitgestellt
wird, daß solch
eine globale Veränderung
in einem einzelnen Verarbeitungszyklus bewirkt werden kann. Dies ist
insbesondere von Vorteil im Kontextspeichers.
-
Es versteht sich, daß man denken
könnte, daß, während die
globale Veränderung
von Statusbits unter Verwendung von Veränderungen von weniger Bits
innerhalb solch einer hierarchische Beziehung durchgeführt werden
kann, die Einstellung der einzelnen Statusbits beginnend von dem
niedrigsten Niveau länger
brauchen könnte,
da die Veränderungen
sich nach oben durch die hierarchische Beziehung widerspiegeln müssen. Die
Erfindung versteht jedoch, daß in
dem Kontext eines Cachespeichers eine Cachespeicherfülloperation
typischerweise relativ langsam ist und somit die vielen Statusbitveränderungen,
die mit Cachespeicherfüllungen
verknüpft sind,
tatsächlich
ausreichend verfügbare
Zeit haben, um alle notwendigen Statusbitveränderungen innerhalb der hierarchischen
Beziehung durchzuführen ohne
die Gesamtarbeitsgeschwindigkeit zu beeinflussen. Statusbits können parallel
verändert
werden, was die Effizienz weiter verbessert.
-
Von einem anderen Aspekt aus gesehen, stellt
die vorliegende Erfindung ein Verfahren zur Datenverarbeitung zur
Verfügung,
wobei das Verfahren die Schritte aufweist: Speichern einer Mehrzahl
von Datenworten innerhalb eines Speichers, wobei jedes Datenwort
mit zumindest einem Statusbit verknüpft ist, das Information betreffend
einen Status des Datenwortes bereitstellt, Speichern des Statusbits
innerhalb einer hierarchischen Beziehung, so daß ein kombinierter Status,
der eine Mehrzahl von First-Level-Statusbits auf einer ersten Ebene
innerhalb der hierarchischen Beziehung betrifft, durch ein Second-Level-Statusbit
auf einer zweiten Ebene innerhalb der hierarchischen Beziehung angezeigt
wird, wobei die zweite Ebene in der hierarchischen Beziehung höher als
die erste Ebene liegt, Bestimmen eines Status eines Datenwortes
innerhalb des Speichers durch Untersuchen der Statusbits beginnend bei
der obersten Ebene innerhalb der hierarchischen Beziehung und nach
unten durch die hierarchische Beziehung arbeitend, bis ein Statusbit
erreicht ist, das den Status des Datenwortes unabhängig von
irgendwelchen Statusbits, die in der hierarchischen Beziehung tiefer
stehen, anzeigt, und gekennzeichnet durch das Anzeigen einer globalen
Veränderung in
dem Status von allen Datenworten, die innerhalb des Speichers abgelegt
sind, durch Modifizieren nur derjenigen Statusbits innerhalb einer
höchsten
Ebene der hierarchischen Beziehung.
-
Ausführungsformen der Erfindung
werden nun lediglich beispielhaft unter Bezug auf die begleitenden
Zeichnungen beschrieben, in denen:
-
1 ein
bekanntes Cachespeichersystem darstellt mit einzelnen Statusbits
für jede
Cachespeicherzeile;
-
2 einen
Cachespeicherstatusbitspeicher und das hiermit verknüpfte Statusbit
in einer hierarchischen Beziehung darstellt;
-
3 schematisch
einen Teil eines Cachespeichersystems für die Handhabung von Cachespeicherzeilen-TAG-Werten
und Statusbits darstellt;
-
4 für eine beispielhafte
Cachespeicherarchitektur die Beziehung zwischen den Adreßbits eines
Datenwortes und des Statusbits für
dieses Datenwort innerhalb einer hierarchischen Beziehung von Statusbits
darstellt und
-
5 eine
andere Ausführungsform
eines Abschnitts eines Cachespeichersystems darstellt.
-
2 zeigt
einen Datenwortcachespeicher 14, der aus einer Mehrzahl
von Cachezeilen 16 zusammengesetzt ist, die jeweils vier
Datenworte speichern. Ein einzelnes Valid-Bit 18 ist mit
jeder Cachezeile 16 verbunden. Die Valid-Bits für acht aufeinanderfolgende
Cachezeilen 16 sind innerhalb eines einzelnen Statusbitwortes 20 innerhalb
eines Statusbit-RAM-Speichers abgelegt. Die Statusbitworte 20 umfassen
die niedrigste Ebene innerhalb der hierarchischen Beziehung, die
die Statusbits speichert.
-
Jedes Statusbitwort 20 ist
mit einem Statusbit 22, das auf einer höheren Ebene innerhalb der hierarchischen
Beziehung gespeichert ist und den kombinierten Status von allen
Statusbits 18 innerhalb des Statuswortes 20 anzeigt,
verknüpft.
Somit kann der Status von acht Statusworten 20 durch die
acht Bits 22 eines Statuswortes innerhalb der nächsthöheren Ebene
der hierarchischen Beziehung angezeigt werden. Diese nächsthöhere Ebene
könnte selbst
innerhalb des Statusbit-RAM-Speichers oder auf irgendeinem Level
in Richtung der Spitze der hierarchischen Beziehung bereitgestellt
werden, wobei es effizienter wird, wenn der Statusbitspeicher mit Flip-Flops
bzw. Latches (Registerbits) zur Verfügung gestellt wird, die mit
relativ hoher Geschwindigkeit unter Verwendung von aufwendiger Logik
verändert werden
können.
Weitere Ebenen können
oberhalb der zwei dargestellten Ebenen zur Verfügung gestellt werden.
-
3 stellt
einen Abschnitt eines Cachespeichersystems für das Ablegen von Cachespeicherzeilen-TAG-Werten
und verknüpften
Statusbits dar. Wenn der Cachespeicher 256 Cachespeicherzeilen
hat, dann wird ein 256-reihiger TAG-Speicher 24 zur Verfügung gestellt,
um die verknüpften TAG-Werte
für jede
Cachezeile abzulegen. Angenommen, daß jede Cachezeile nur ein einzelnes
Statusbits (z. B. ein Valid-Bit) hat, dann können die Statusbits für diese
256 Cachereihen innerhalb von acht 32-Bitworten, die innerhalb eines
Statusbit-RAM-Speichers 26 enthalten sind, abgelegt werden.
Die 32 Bitworte stellen die niedrigste Ebene innerhalb der hierarchischen
Beziehung, die die Statusbits speichert, dar. Die nächsthöhere Ebene
innerhalb der hierarchischen Beziehung (und in diesem Beispiel die
höchste
Ebene) wird von einem 8-Bitregister 28 zur
Verfügung
gestellt, wobei jedes Bit des Registers 28 den kombinierten
Status von einem der 32 Bitstatusbitworte innerhalb des Statusbit-RAM-Speichers 26 darstellt.
-
Ein Cachecontroller 30 ist
mit dem TAG-Speicher 24, dem Statusbit-RAM-Speicher 26 und
dem Statusbitregister 28 verbunden. Der Cachecontroller 30 fungiert
als Status abfragende Logik, wenn ein Zugriff auf ein Datenwort
innerhalb des Cachespeichers durchgeführt wird, ebenso stellt er
andere Funktionen zur Verfügung.
Wenn ein Zugriff auf ein Datenwort angefragt wird, untersucht der
Cachecontroller 30 die Statusbits, die innerhalb des Statusbitregisters 28 und
dem Statusbit-RAM-Speicher 26 abgelegt sind. Wenn auf der
höchsten
Ebene das Bit innerhalb des Statusbitregisters 28, das
dem bestimmten Datenwort auf dem niedrigsten Niveau entspricht,
anzeigt, daß das
Datenwort gültig
ist, dann fährt
der Cachecontroller 30 fort, um dann das einzelne Bit für dieses
Datenwort (Cachezeile) innerhalb des Statusbit-RAM-Speichers 26 zu überprüfen. Wenn
das Bit innerhalb des Statusbitregisters 28 Ungültigkeit
anzeigt, dann muß der
Statusbit-RAM-Speicher 26 nicht überprüft werden (obgleich diese Überprüfung tatsächlich parallel
durchgeführt
werden kann), da die Ungültigkeit,
die auf der höheren
Ebene angezeigt wurde, alles, was auf einer niedrigen Ebene angezeigt
wird, überschreibt.
-
Der Cachecontroller 30 ist
in der Lage, Hochgeschwindigkeitszugriffe auf die Statusbits innerhalb des
Statusbitregisters 28 durchzuführen, so daß alle Bits innerhalb dieses
Statusbitregisters 28 derart eingestellt werden können, daß sie die
Ungültigkeit
in einem einzelnen Zyklus anzeigen, z. B. wie es in einer schnellen
Cachelöschung
erforderlich ist. Auf die Statusbitworte innerhalb des Statusbit-RAM-Speichers 26 kann
durch eine Lese-Modifizier-Schreiboperation
zugegriffen werden, wie sie erforderlich ist, um feine Veränderungen
des Statusbits auf diesem niedrigsten Niveau innerhalb der hierarchischen
Beziehung durchzuführen.
Alternativ dazu können
getrennt Lese- und Schreiboperationen durchgeführt werden.
-
4 stellt
ein Beispiel dar, wie die Adresse eines Datenwortes innerhalb eines
128 kB Cachespeichers, der vier Datenworte pro Zeile hat und direkt
abgebildet (mapped) ist, mit den Statusbits und anderen Steuerdaten
in Beziehung gebracht werden kann.
-
Der obere Abschnitt der Adresse 32 bildet den
TAG-Wert, der mit dem TAG-Wert, der innerhalb des TAG-Speichers 24 abgelegt
ist, verglichen wird, um zu bestimmen, ob die bestimmten Daten gecached
bzw. im Cachespeicher abgelegt sind. Wenn der Cachespeicher direkt
abgebildet ist, stellt ein Mittelabschnitt 34 der Adresse
einen Index in dem Cachespeicher zur Verfügung, um die TAG-Speicherposition
anzuzeigen, die den TAG-Wert speichert, wenn die Daten innerhalb
des Cachespeichers vorhanden sind. An dem unteren Ende der Adresse
zeigen die Wortbits W und die Bytebits B an, welche Wortposition
innerhalb einer Cachespei cherzeile adressiert wird und welche Byteposition
innerhalb eines Datenwortes adressiert wird, wenn die Byteadressierung erlaubt
ist.
-
Die Statusbitinformation für diesen
Cachespeicher ist innerhalb einer Drei-Ebenen-Hierarchie abgelegt. Statusbits werden
für jede
Cachereihe abgelegt, und folglich gibt es ein Statusbit, das mit
jedem Indexwert verknüpft
ist. Diese Indexwertstatusbits können
innerhalb einer 256*16-Anordnung, die aus übersetztem RAM-Speicher gebildet
wird, abgelegt werden. Jede Zeile innerhalb der Anordnung der dritten
Ebene hat ein entsprechendes Statusbit innerhalb der zweite Ebene
der hierarchischen Beziehung, die selbst innerhalb einer 16*16-Anordnung abgelegt
wird. Diese 16*16-Anordnung kann ebenso innerhalb des übersetzten
RAM-Speichers abgelegt werden. Die höchste Ebene (erste Ebene) innerhalb der
hierarchischen Beziehung wird durch 16 Registerbits zur Verfügung gestellt,
wobei ein Registerbit zu jeder Anordnungsreihe der zweiten Ebene
korrespondiert.
-
5 stellt
eine weitere Cachespeicherstruktur beispielhaft dar. In diesem Beispiel
wird ein 1024-zeiliger TAG-Speicher 36 bereitgestellt,
um die TAG-Werte abzulegen. Jede Zeile innerhalb des TAG-Speichers 36 entspricht
einer Cachezeile und hat einen Statusbit, der hiermit verknüpft ist.
Folglich können
die Statusbits für
1024 Cachezeilen innerhalb eines 32*32-Bitwort-RAM 38 abgelegt werden, der
einen Teil des Statusbitspeichers 40 bildet. Dieser Statusbit-RAM-Speicher 38 ist
die niedrigste Ebene innerhalb der hierarchischen Beziehung. Die höchste Ebene
innerhalb der hierarchischen Beziehung wird durch 32 Registerbits 42 mit
einem Register entsprechend jedem 32-Bitwort innerhalb des Statusbit-RAM-Speichers 38 zur
Verfügung
gestellt.
-
Zur weiteren Illustration können die
Schritte, die in verschiedenen Operationen die Datenworte manipulieren,
die innerhalb eines Cachespeichersystems abgelegt sind, das eine
hierarchische Beziehung der Statusbits beinhaltet, wie folgt sein:
-
Überprüfe Status:
- – lese
geeignete Bits von allen Ebenen der Hierarchie
- – arbeite
die Hierarchie nach unten durch und kontrolliere, daß jede nächstniedrigere
Ebene gültig
ist
- – falls
irgendeine Ebene anzeigt, daß niedrigere Ebenen
ungültig
sind, dann gebe den voreingestellten Wert (reset) zurück
- – anderenfalls
gebe den Wert zurück,
der von dem Valid-Speicher der niedrigsten Ebene abgerufen wurde.
-
Die Statusbits haben zwei Zustände. Im
Falle eines Valid-Bits bzw. eines gültigen Bits gibt es einen Reset-Zustand,
der ungültig
ist, und einen Valid-Zustand. Um etwas als valid bzw. gültig zu
markieren, muß man
alle Ebenen in der Hierarchie markieren. Der Reset-Zustand kann
als ein starker Zustand betrachtet werden, der durch ein Bit hoher
Ebene angezeigt wer den kann, und der andere Zustand kann als ein
schwacher Zustand angesehen werden, für den alle Bits in der Hierarchie übereinstimmen
müssen.
-
In einem System, das mehrere Zustandsbits pro
Ort ablegt, müssen
die höheren
Ebenen der Hierarchie nur ein einzelnes Bit enthalten, um die Gültigkeit
von niedrigeren Ebenen in der Hierarchie anzuzeigen.
-
Schreibe Status:
- – arbeite
die Hierarchie nach unten durch und setze geeignete Bits, um anzuzeigen,
daß die
nächst tiefere
Ebene gültig
ist
- – wenn
eine neue Zeile (auf irgendeiner Ebene in der Hierarchie), die vorher
ungültig
war, als gültig markiert
wird, muß die
komplette Zeile mit dem Reset-Wert initialisiert werden abgesehen
von dem zu schreibenden Wert
- – in
dem Fall, in dem eine Zeile vorher gültig war, ist dann eine Lese-Modifizier-Schreiboperation notwendig,
um nur die geeigneten Bits zu aktualisieren
- – auf
der untersten Ebene der Hierarchie sollten die geeigneten Daten
geschrieben werden und, falls notwendig, sollten die anderen Statusbits
auf ihre Reset-Werte geschrieben werden.
-
Reset Status:
- – die höchste Ebene
der Statusbits sollte zurückgesetzt
werden, um die gesamte Hierarchie als ungültig zu markieren.
-
In einem cachegespeicherten System
kann die Lese-Modifizier-Schreiboperation über viele Zyklen verteilt sein.
Einige interessante Optionen, die dies ansprechen, sind:
- – man
muß nur
eine Hierarchie von gültigen
Bits aufrechterhalten, ungeachtet dessen, wieviele Statusbits auf
dem niedrigsten Niveau gehalten werden (z. B. vier Valid-Bits +
Dirty- + andere Statusbits), d.h. unterschiedliche Ebenen innerhalb der
Hierarchie können
unterschiedliche Statusbits speichern.
- – wenn
du dies tust, dann muß die
Logik, die die Anordnungen liest, den „Reset"-Zustand zurückgeben, wenn auf einen ungültigen Ort
zugegriffen wird.
- – anstelle
des Beibehaltens nur der Hierarchie der gültigen Bits kann es von Vorteil
sein, andere Zustände
durch die Hierarchie zu verfolgen. Beispielsweise kann man sowohl
eine Valid- als auch eine Dirty-Hierarchie beibehalten – dies würde eine
schnellere Suche nach Dirty-Cachespeicherorten
erlauben.