-
Die
vorliegende Erfindung bezieht sich auf Mikroprozessorsysteme mit
schnellem Zwischenspeicher (Cache) und beschreibt in diesem Kontext
einen dual port Cache und insbesondere seine Anwendung für eine Anwendung
in einem Datenverarbeitungssystem mit mindestens zwei Ausführungseinheiten,
die wahlweise voneinander unabhängig
arbeiten oder die gleichen Aufgaben bearbeiten.
-
Bei
einer Multiprozessorarchitektur, in der mehrere Ausführungseinheiten
(Cores, Prozessoren) in variabler Weise, d.h. in verschiedenen Betriebsmodi
miteinander zusammenarbeiten (wie z.B. in der
DE 103 32 700 A1 beschrieben),
soll die Umschaltung zwischen den mindestens zwei verschiedenen
Modi durch Befehle erfolgen können
und bei der Bearbeitung gleicher Aufgaben soll es möglich sein,
die erzeugten Daten miteinander zu vergleichen.
-
Prozessoren
werden mit Caches ausgerüstet,
um den Zugriff zu Instruktionen und Daten zu beschleunigen. Das
ist bei der ständig
wachsenden Datenmenge einerseits und der zunehmenden Komplexität der Datenverarbeitung
mit immer schneller arbeitenden Prozessoren andererseits notwendig.
Durch einen Cache wird der langsame Zugriff auf einen großen (Haupt-)
Speicher teilweise vermieden und der Prozessor muss dann nicht auf
die Bereitstellung der Daten warten. Es sind sowohl Caches ausschließlich für Befehle
als auch ausschließlich
für Daten
bekannt, aber auch "Unified
Caches", bei denen
sowohl Daten als auch Instruktionen in demselben Cache abgelegt
werden. Bekannt sind auch Systeme mit mehreren Levels (Hierarchiestufen) von
Caches. Solche mehrstufigen Caches werden eingesetzt, um mit abgestuften
Speichergrößen und
verschiedenartigen Adressierungsstrategien der Caches auf den verschiedenen
Levels eine optimale Anpassung der Geschwindigkeiten zwischen Prozessor
und dem (Haupt-) Speicher vorzunehmen. Bei einem Multiprozessorsystem
ist es üblich,
jeden Prozessor mit einem Cache oder bei Multi-Level Caches mit
entsprechend mehreren Caches auszurüsten. Es sind aber auch Systeme
bekannt, in denen mehrere Caches existieren, die von verschiedenen
Prozessoren adressierbar sind, wie zum Beispiel im US Patent 4345309
beschrieben.
-
In
so einem System, ohne die hier beschriebene Erfindung, ist die Einheit
zum Vergleich erzeugten Daten (der Vergleicher) in einer möglichen
Ausführung
nach den Caches angeordnet. Das führt dazu, dass die Daten erst
beim Rückschreiben
vom Cache in den Hauptspeicher verglichen werden können, was
zu verzögerter
Bewertung der Gültigkeit
von Daten führen
kann. Ordnet man andererseits den Vergleicher zwischen den Ausführungseinheiten
und dem Cache an, so wird der Datentransfer zwischen Ausführungseinheit
und Cache durch die höhere
elektrische Belastung der Signale verlangsamt.
-
Aufgabe
der Erfindung ist sicherzustellen, dass ein Vergleich der Daten
zeitnah mit der Abspeicherung in den Cache und unabhängig vom
Zeitpunkt des Rückschreibens
in den Hauptspeicher stattfinden kann. Dabei soll der Datentransfer
zwischen mindestens einer Ausführungseinheit
und dem Cache nicht durch höhere elektrische
Busbelastung beeinträchtigt
werden.
-
Vorteile der
Erfindung
-
Eine
Realisierung eines Dual Port Cache-Speichers ist wegen des erhöhten Hardwareaufwandes
in bekannten Prozessorsystemen mit einer oder mehreren Ausführungseinheiten
(Single- oder Mehrfachcores) nicht nahe liegend. Bei einer Multiprozessorarchitektur,
in der mehrere Ausführungseinheiten
(Cores, Prozessoren) in variabler Weise, d.h. in verschiedenen Betriebsmodi
miteinander zusammenarbeiten (wie z.B. in der
DE 103 32 700 A1 beschrieben),
kann eine dual port Cache Architektur vorteilhaft eingesetzt werden.
Der wesentliche Vorteil gegenüber
Multiprozessorsystemen mit mehreren Caches besteht darin, dass bei
einer Umschaltung zwischen den Betriebsmodi des Multiprozessorsystems
der Inhalt des Caches nicht gelöscht
oder für
ungültig
erklärt
werden muss, weil die Daten nur einmal abgelegt werden und deshalb
auch nach einer Umschaltung konsistent bleiben.
-
Von
Vorteile wäre
deshalb eine Ausführung,
bei der zumindest für
eine Ausführungseinheit
durch eine direkte Verbindung mit dem Cache der Datentransfer in
diesem Hochgeschwindigkeitsbereich mit hoher Datenrate ungehindert
erfolgt und trotzdem ein unverzögerter
Vergleich direkt nach dem Ablegen der Daten im Cache erfolgen kann.
Dazu dient der zweite Port dieses Caches, an dem die Daten zu einem
Vergleich zurückgelesen
werden.
-
Ein
Dual Port Cache in einem Multiprozessorsystem mit mehreren Betriebsmodi
hat den Voreil, dass die Daten/Befehle nicht mehrfach in den Cache
geholt und ggf. gepflegt werden müssen. Weiterhin muss nur ein
Speicherplatz pro Datum/Befehl hardwaremäßig bereitgestellt werden,
auch wenn dieses Datum bzw. dieser Befehl von mehreren Ausführungseinheiten
benutzt wird. Darüber
hinaus müssen
die Daten bei verschiedenen Betriebsmodi des Multiprozessorsystems
nicht dahingehend unterschieden werden, in welchem Modus sie bearbeitet
oder geholt wurden. Ein besonderer Vorteil ist, dass der Cache bei
Wechsel des Betriebsmodus nicht gelöscht werden muss. Bei einem
Dual Port Cache können
zwei Prozessoren gleichzeitig zu den gleichen Daten/Befehlen lesend
zugreifen. Ein besonderer Vorteil ist weiterhin, dass anstelle des „write
through" Modus auch
ein „write
back" Modus für den Cache
eingesetzt werden kann. Durch diese Methode muss nicht ständig der
(Haupt-) Speicher aktualisiert werden, sondern erst beim Überschreiben
der Daten im Cache. Es gibt dabei keine Konsistenzprobleme, weil
der Cache für
beide Prozessoren die Daten aus der gleichen Quelle liefert und auch
der Vergleichszeitpunkt der Daten ist davon nicht betroffen, weil
der Vergleich unabhängig
von dem Rückschreiben
in den Hauptspeicher erfolgt.
-
Eine
asymmetrische Dual Port Cache Struktur, wie hier erfindungsgemäß vorgeschlagen,
hat insbesondere den Vorteil, dass das Schreiben der Daten in den
Cache zumindest für
eine Ausführungseinheit
nicht behindert wird, aber andererseits mit dem Vergleich nicht
gewartet werden muss, bis die Daten aus dem Cache in den Haut-Speicher
geschrieben werden. Dadurch ist es möglich, dass die Daten erst
dann blockweise in den Hauptspeicher zurückgeschrieben werden, wenn
der Block im Cache durch einen anderen Block ersetzt wird („write
back" modus). Das
verringert die Datenrate auf dem Bus zwischen Cache und Hauptspeicher
im Vergleich zu dem „write
through" Modus,
bei dem für
jede Aktualisierung eines Datums im Cache auch gleich das entsprechende
Datum im Hauptspeicher geändert
wird. Die Aktualisierung erfolgt hier zwar nicht blockweise, sondern
nur das geänderte
Datum wird parallel in den Hauptspeicher übertragen. Trotzdem ist die
Busbelastung zum Hauptspeicher (im Sinne des Datentransfers) höher, weil
mit jedem Schreibbefehl auch dieser Bus belegt wird.
-
Bei
einem „write
back" Modus arbeiten
die Ausführungseinheiten
nur mit dem Cache zusammen, solange die Daten dort verfügbar sind.
Beim Schreiben eienr Ausführungseinheit
in dem Cache wird dazu das Dirty-Bit gesetzt, das anzeigt, dass
die Daten des Blocks nicht mehr mit dem Hauptspeicher übereinstimmen. Sofern
die beteiligten Ausführungseinheiten
mit dem gemeinsamen Cache arbeiten, braucht das Datum im Hauptspeicher
aber nicht aktualisiert werden, solange der betreffende Block im
Cache bleibt. Es können
dazu mehrere Datenworte auch mehrfach geändert werden, ohne die Datenkonsistenz
der Ausführungseinheiten
zu beeinträchtigen.
-
Vorteilhaft
ist eine Vorrichtung zur Speicherung von Daten und/oder Befehlen
in einem Rechnersystem mit wenigstens zwei Ausführungseinheiten und wenigstens
einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle, wobei
Umschaltmittel vorgesehen sind und zwischen wenigstens zwei Betriebsmodi umgeschaltet
wird, wobei Vergleichsmittel vorgesehen sind und ein erster Betriebsmodus
einem Vergleichsmodus und ein zweiter Betriebsmodus einem Performanzmodus
entspricht, dadurch gekennzeichnet, dass in der Vorrichtung ein
zweiter Speicher oder Speicherbereich enthalten ist, wobei die Vorrichtung
als Cachespeichersystem ausgebildet ist und mit wenigstens zwei
getrennten Ports ausgestattet ist, wobei ein Port direkt mit einer
ersten Ausführungseinheit
verbunden ist und zwischen dem zweiten Port und der wenigstens zweiten Ausführungseinheit
eine dritte Einrichtung enthalten ist, die derart ausgestaltet ist,
dass ein Zugriff der zweiten Ausführungseinheit auf den zweiten
Speicher oder Speicherbereich über
die dritte Einrichtung erfolgt.
-
Vorteilhaft
ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass
in den Umschaltmitteln und/oder den Vergleichsmitteln wenigstens
ein Speichermittel vorhanden ist und die Umschaltung durch wenigstens
ein Bit in den Speichermitteln erfolgt.
-
Vorteilhaft
ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass
die Umschaltung durch wenigstens ein zum Rechnersystem externes
oder internes Signal erfolgt.
-
Vorteilhaft
ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass
im Performanzmodus die dritte Einrichtung der direkt angeschlossenen
Ausführungseinheit
einen Lese- und Schreibzugriff zu der zweiten Speichereinrichtung über den
angeschlossen Port gewährleistet.
-
Vorteilhaft
ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass
in dem Cachespeichersystem mindestens ein Zähler vorhanden ist, der bei
jedem Abspeichern vergleichsrelevanter Daten von der ersten Ausführungseinheit über den
ersten Port dieses Speichers der Zähler inkrementiert oder dekrementiert wird.
-
Vorteilhaft
ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass
der Zähler
bei dem Umschalten in den Vergleichsmodus auf dem entsprechenden
angeschlossenen Port den Zählerwert
ausgibt und dieser in der dritten Einheit gespeichert wird.
-
Vorteilhaft
ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass
ein zweiter Zähler
in der dritten Einrichtung vorgesehen ist und der Zählerwert
des Zählers
zum Setzen des zweiten Zählers
der dritten Einheit benutzt wird.
-
Vorteilhaft
ist ein Verfahren zur Speicherung von Daten und/oder Befehlen in
einem Rechnersystem mit wenigstens zwei Ausführungseinheiten und wenigstens
einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle beschrieben,
wobei Umschaltmittel vorgesehen sind und zwischen wenigstens zwei Betriebsmodi
umgeschaltet wird, wobei Vergleichsmittel vorgesehen sind und ein
erster Betriebsmodus einem Vergleichsmodus und ein zweiter Betriebsmodus
einem Performanzmodus entspricht, dadurch gekennzeichnet, dass ein
zweiter Speicher oder Speicherbereich vorgesehen ist, welcher in
einem Cachespeichersystem enthalten ist und mit wenigstens zwei
getrennten Ports ausgestattet ist, wobei die erste Ausführungseinheit
direkt auf den zweiten Speicher oder Speicherbereich über einen
ersten Port zugreift und die zweite Ausführungseinheit über eine
dritte Einrichtung auf den zweiten Speicher oder Speicherbereich
zugreift.
-
Vorteilhaft
ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die
dritte Einrichtung Speichermittel enthält, in denen Daten und/oder
Signale von der angeschlossenen Ausführungseinheit gespeichert werden
können
und, wobei die dritte Einheit unabhängig von dem Zustand dieser
besagten Ausführungseinheit
Daten mit dem zweiten Speicher oder Speicherbereich austauschen
kann
-
Vorteilhaft
ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die
dritte Einrichtung Daten und/oder Adressen und/oder Steuersignale
von der zweiten Verarbeitungseinrichtung erhält und daraufhin auf die entsprechenden
Daten in des zweiten Speichers oder Speicherbereiches lesend oder
schreibend zugreift.
-
Vorteilhaft
ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass das
Cachespeichersystem über
das Vorhandensein der Daten entscheidet und im Falle des Nichtvorhandenseins
ein Signal an die dritte Einrichtung sendet.
-
Vorteilhaft
ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die
Daten und/oder Befehle in der dritten Einheit auf ihre Gültigkeit
geprüft
werden und im Falle der Gültigkeit
weitergeleitet werden.
-
Vorteilhaft
ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die
Gültigkeit
anhand von mit den Daten und/oder Befehlen abgespeicherten Zusatzinformationen
geprüft
wird.
-
Vorteilhaft
ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass mit
dem Umschalten in den Vergleichsmodus Synchronisationssignale an
die betreffenden Ausführungseinheiten
ausgesendet werden.
-
Vorteilhaft
ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass im Falle
eines Vergleichs und einer Abweichung der zu vergleichenden Daten
ein Fehler signalisiert wird.
-
Vorteilhaft
ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass im Falle
eines Votings und einer Abweichung mindesntens eines Datums aus
der zu votenden Daten der Status und/oder ein Fehler signalisiert
wird.
-
Vorteilhaft
ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass in dem
Cachespeichersystem ein Zähler
vorgesehen ist und der Zähler
bei dem Umschalten in den Vergleichsmodus auf dem entsprechenden
angeschlossenen Port den Zählerwert
ausgibt und dieser in der dritten Einheit gespeichert wird.
-
Vorteilhaft
ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass ein
zweiter Zähler
in der dritten Einrichtung vorgesehen ist und der Zählerwert
des Zählers
zum Setzen des zweiten Zählers
der dritten Einheit benutzt wird.
-
Vorteilhaft
ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die
im Cachespeichersystem vorhandenen Zähler einem Port zugeordnet
ist und beim Einschalten des Vergleichsmodus in der dem jeweiligen
Port angeschlossenen Verarbeitungseinrichtung auf einen festen Wert
gesetzt wird.
-
Weitere
Vorteile und vorteilhafte Ausgestaltungen ergeben sich aus den Merkmalen
der Ansprüche
sowie der Beschreibung.
-
Figuren und
Tabellen
-
1 zeigt
einen Dual Port Cache für
Daten und/oder Befehle.
-
2 zeigt
einen Dual Port Cache mit Details.
-
3 zeigt
eine Transformationstabelle von 214 bzw. 224.
-
4 zeigt
eine Aufteilung des dpRAM in zwei Teilbereiche, die unabhängig voneinander
betrieben werden können
und mit je zwei separaten select-Signalen von jedem Port im Zugriff
gesteuert werden.
-
Tabelle
1 beschreibt die Erzeugung von 4 select-Signalen aus 2 Adressbits
mittels Decodierung
-
5 zeigt
eine Realisierung eines dual port RAM-Bereiches durch einen single
port RAM mittels Portumschaltung.
-
6 zeigt
eine Einteilung eines Multiple port RAM mit p Ports in mehrere Teil-Adressbereiche l...q, die
parallel bearbeitet werden können.
-
7 zeigt
eine Realisierung eines multi port RAM-Bereiches durch einen single
port RAM mittels Portumschaltung.
-
8 zeigt
eine Aufteilung der RAM-Bereiche für die Ports in Abhängigkeit
von einem Systemzustand oder einer Konfiguration.
-
Tabelle
2 beschreibt die Erzeugung von je zwei select-Signalen an jedem
Port aus einem Adressbit unter Berücksichtigung von einem Systemzustands-
oder Konfigurationssignal.
-
Tabelle
3 beschreibt die Erzeugung von je zwei select-Signalen an jedem
Port aus einem Adressbit unter Berücksichtigung von einem Systemzustands-
oder Konfigurationssignal in einer anderen Ausführungsform.
-
9 zeigt
eine Aufteilung eines multi port RAMs in Bereiche in Abhängigkeit
von einem Systemzustand oder einer Konfiguration durch Generierung
der entsprechende Select-Signale.
-
10 zeigt
eine Aufteilung eines multi port RAMs in Bereiche mit mehrfach-assoziativem
Zugriff.
-
B1 zeigt
das Grundprinzip der asymmetrischen DCSL Architektur mit dual port
Cache.
-
B2 zeigt
das Grundprinzip einer Umschalt- und Vergleichseinheit für zwei Ausführungseinheiten.
-
B3 zeigt
eine Leseanforderungseinheit B106 im inaktiven Zustand.
-
B4 zeigt
einen alternativen Zugriff einer Ausführungseinheit zum Speicher
ohne Cache durch eine Umschalt- und Vergleichseinheit falls ein
Vergleichsbit nicht gesetzt ist.
-
B5 zeigt
eine Leseanforderung an einen Cache durch eine Einheit falls ein
Vergleichsbit gesetzt und Daten von einer Ausführungseinheit B110 ausgegeben
werden.
-
Tabelle
4 beschreibt den Aufbau eines Caches.
-
Tabelle
5 erläutert
eine mögliche
Gestaltung eines Control-Bits.
-
B7 zeigt
einen Dual Port Cache durch Single Port RAM und einer Zugriffssteuerung.
-
B8 zeigt
die Grundstruktur einer asymmetrischen Datenverarbeitungseinheit
mit der Umschaltmöglichkeit
zwischen mehreren Modi und einem multi-Port Cache.
-
Beschreibung
der Ausführungsbeispiele
-
Als
Ausführungseinheit
kann im Folgenden sowohl ein Prozessor, ein Core, eine CPU, als
auch eine FPU (Floating Point Unit), ein DSP (Digitaler Signalprozessor),
ein Coprozessor oder eine ALU (Arithmetic logical Unit) bezeichnet
werden.
-
Der
Dual Port Cache 200 gemäß 1 besteht
zu einem wesentlichen Teil aus einem Dual Port RAM (dpRAM, 230).
Dieser dpRAM 230 ist vorzugsweise mit zwei voneinander
unabhängigen
Adressdecodern, zwei Daten Schreib-/Lese-Stufen und im Unterschied
zu einer einfachen Speicherzellen-Matrix auch mit duplizierten Wort-
und Bitleitungen versehen, so dass zumindest der Lesevorgang für beliebige
Speicherzellen des dpRAMs von beiden Ports gleichzeitig erfolgen
kann. (Sinngemäß gilt aber
die Anordnung auch, wenn nicht alle Zugriffselemente dupliziert
sind und der dpRAM deshalb nur bedingt gleichzeitig über beide
Ports zugreifbar ist.) Unter einem dual Port RAM wird deshalb jeder
RAM verstanden, der über
zwei Ports 231 und 232 verfügt, die unabhängig voneinander
benutzt werden können,
ohne in Betracht zu ziehen, wie viel Zeit zur Abarbeitung einer
Anforderung zum Lesen oder Schreiben von diesem Port benötigt wird,
d.h. wie lange es dauert, bis der angeforderte Lese- oder Schreibvorgang
auch ggf. in Wechselwirkung mit Anforderungen von dem anderen Port
abgeschlossen ist. Die beiden Ports des dpRAM sind über die
Signale 201 bzw. 202 mit den Einrichtungen 210 bzw. 220 verbunden,
die eine Prüfung
der ankommenden Adressen, Daten und Steuersignale 211 bzw. 221 von
unabhängigen
Ausführungseinheiten 215 und 225 vornehmen
und optional die Adressen transformieren. Die Daten werden beim
Lesen je nach Port über 201 durch 210 auf 211 oder über 202 durch 220 auf 221 ausgegeben
bzw. in jeweils umgekehrter Richtung von den Ausführungseinheiten
in den Cache-Speicher geschrieben.
-
Beide
Ports des dpRAM sind über
die Signale 201 und 202 mit einer Buszugriffssteuerung 240 verbinden,
die mit Signalen 241 verbunden ist, die die Verbindung
zu einem hier nicht dargestellten (Haupt-)Speicher oder zu einem
Cache der nächsten
Stufe herstellen.
-
In 2 sind
die Einheiten 210, 220 und 250 detaillierter
beschrieben. Beim Zugriff auf den Dual Port Cache werden die in
den Signalen 211 und 221 enthaltenen Adressen 212 und 222 der
Ausführungseinheiten 215 und 225 in
einem Adresscomparator 251 der Einrichtung 250 miteinander
verglichen und zusammen mit den in 211 und 221 ebenfalls übermittelten
Steuersignalen auf Verträglichkeit
geprüft.
Im Falle eines Konfliktes wird mittels der Steuersignale, die in
den Signalen 213 oder 223 enthalten sind, der
Zugriff auf den dual Port RAM 230 verhindert. Solche Konflikte
können
sein, dass beide Ausführungseinheiten
auf die gleiche Adresse schreiben wollen oder dass eine Ausführungseinheit
schreibt während
die andere von der gleichen Adresse lesen will.
-
Der
Cache kann teilweise oder vollständig
assoziativ ausgeführt
sein, d.h. die Daten können
an mehreren oder gar beliebigen Stellen des Caches abgelegt sein.
Um den Zugriff auf den dpRAM zu ermöglichen, muss dazu erst die
Adresse ermittelt werden, über
die auf die gewünschten
Daten/Befehle zugegriffen werden kann. Je nach Adressierungsmodus
wird eine oder werden mehrere Blockadressen ausgewählt, an
denen das Datum im Cache gesucht wird. Alle diese Blöcke werden
gelesen und die mit den Daten im Cache abgespeicherte Kennung wird
mit der Index-Adresse (Teil der Original-Adresse) verglichen. Bei Übereinstimmung
und nach der zusätzlichen Überprüfung der
Gültigkeit
mit Hilfe der ebenfalls im Cache zu jedem Block abgespeicherten
Controlbits (z.B. Valid-Bits, Dirty-Bits und Prozess-ID) wird ein
Cache Hit Signal erzeugt, das die Gültigkeit anzeigt.
-
Zur
Adresstransformation wird vorzugsweise eine Tabelle eingesetzt,
die in einer in 2 dargestellten Speichereinheit 214 bzw. 224 (Register
oder RAM, auch als TAG-RAM bezeichnet) angeordnet ist und sich in
den Einheiten 210 bzw. 220 befindet. Die Tabelle
ist eine Adresstransformationseinheit, die sowohl die virtuelle
Adresse in eine physikalische Adresse umwandelt als auch im Falle
eines direct-mapped Cache die genaue (eindeutige) Cache-Zugriffsadresse liefert;
bei einer mehrfach assoziativen Cacheorganisation werden mehrere
Blöcke
angesprochen und bei einem vollständig assoziativen Cache müssen alle
Blöcke
des Caches gelesen und verglichen werden. Eine solche Adresstransformationseinheit
ist z.B. im US Patent 4669043 beschrieben.
-
Zum
Beispiel wird in der o.g. Tabelle zu jeder Adresse bzw. Adressgruppe
eines Blocks die Zugriffsadresse des dpRAMs hinterlegt. In der in 3 dargestellten
Adressierungsart werden dazu entsprechend der Blockgröße des Caches
die signifikanten Adressbits (Index-Adresse) für die Tabelle als Adresse benutzt
und der Inhalt ist die Zugriffsadresse des dpRAMs (3).
Als Block bezeichnet man dabei die Anzahl der Bytes, die im Falle
eines Cache Miss (Fehlen der erforderlichen Daten im Cache) gemeinsam
aus dem Speicher in den Cache geholt werden, wenn auf eine Adresse
aus diesem Bereich lesend zugegriffen wird. Dieser Blocktransfer
kann je nach Hardwarerealisierung in mehreren Teilen zeitlich nacheinander
passieren, oder auch parallel durchgeführt werden.
-
Für den byte-
oder wortweisen Zugriff zum Cache werden die für den Block signifikanten Adressbits mit
der Tabelle transformiert und die restlichen (niederwertigen) Adressbits
unverändert übernommen.
-
Für den Schreibvorgang
wird beispielsweise einem der beiden Ports eine höhere Priorität eingerichtet, d.h.
es wird verhindert, dass gleichzeitig von beiden Ports geschrieben
wird. Erst wenn der bevorzugte Port die Schreiboperation ausgeführt hat,
darf der andere Port schreiben; ggf. hat auch nur ein Prozessor
Schreibrechte für
entsprechend zugeordnete Speicherbereiche. Ebenso kann man bei einer
beliebigen Schreiboperation auf eine Speicherzelle verhindern, dass
die gleiche Speicherzelle vom jeweils anderen Port gelesen wird,
oder die Leseoperation kann verzögert
werden, indem der Prozessor mit Lesewunsch solange angehalten wird,
bis die Schreiboperation abgeschlossen ist. Dazu ist ein in 2 dargestellter
Adresscomparator aller Adressbits (251) mit einem entsprechenden
Arbiter 252 vorgesehen, der auch die Steuersignale der
Prozessoren auswertet und die Ausgangssignale 213 und 223 bildet,
die diese Abläufe
steuern. Die Ausgangssignale 213 und 223 können in
einer vorteilhaften Ausführung
jeweils drei Signalzustände
einnehmen: select, wait, equal. Für einen reinen Instruktionscache
ist ein Schreibzugriff nicht notwendig; in diesem Fall reicht ein
Signalzustand "equal" für die Ausgangssignale 213 und 223 aus.
-
Im
Falle eines Cache Miss muss das Datum bzw. der Befehl über das
Bussystem aus einem Programm- oder Datenspeicher geholt werden.
Die ankommenden Daten werden zur Ausführungseinheit weitergeleitet
und werden parallel zusammen mit der Kennung und den Controlbits
in den Cache geschrieben. Auch hier verhindert der Adresscomparator
das nochmalige Holen des Datums vom Speicher, wenn kein Hit vorliegt aber
ein Signal equal (Bestandteil oder Zustand von 213 und 223)
vom Adresscomparator angezeigt wird. Das Signal equal wird im Falle
des beidseitigen Lesens nur von den signifikanten Adressbits gebildet,
weil immer der gesamte Block aus dem Speicher geholt wird. Erst
wenn der Block im Cache gespeichert ist, kann die wartende Ausführungseinheit
auf den Cache zugreifen.
-
In
einer weiteren vorteilhaften Ausführung werden zwei getrennte
Dual Port Caches für
Daten und für Befehle
vorgesehen, wobei im letzteren üblicherweise
keine Schreibvorgänge
vorzusehen sind. Der Adress-Comparator prüft in diesem Fall immer nur
auf Gleichheit der signifikanten Adressbits und stellt das entsprechende
Steuersignal "equal" in den Signalen 213 bzw. 223 bereit.
-
In
einem weiteren Ausführungsbeispiel
wird der gleichzeitige Lese-Zugriff von beiden Ports nur dann uneingeschränkt funktioniert,
wenn die angeforderten Daten in verschiedenen Adressbereichen vorliegen,
die den gleichzeitigen Zugriff ermöglichen. Dadurch können bei
der Hardware-Realisierung Aufwendungen gespart werden, weil nicht
alle Zugriffs-Mechanismen im Speicher dupliziert werden müssen. Beispielsweise kann
der Cache in mehreren Teilspeicherbereichen realisiert werden, die
unabhängig
voneinander betrieben werden können.
Jeder Teilspeicher ermöglicht über select-Signale
nur die Abarbeitung eines Ports. In 4 ist ein
solcher Speicher 230 gezeigt, der zwei Teilspeicherbereiche 235 und 236 beinhaltet.
In dem hier gezeigten Ausführungsbeispiel
werden aus einem Adressbit Ai die zwei Select-Signale
E0 und E1 derart
gebildet, dass für
den Fall Ai = 0 E0 =
1 und E1 = 0 gilt und für den Fall Ai =
1 E0 = 0 und E1 =
1 gilt. In den Signalen 233 und 234 sind dann
die beiden select-Signale und die niederwertigen Adressbits Ai–1...A0 enthalten.
-
Für ein weiteres
Ausführungsbeispiel
mit vier Teilspeichern können
die 4 select-Signale aus zwei Adressbits generiert werden, da jeder
Teilspeicher eindeutig einen bestimmten Adressbereich bedient. So
können
beispielsweise mit den 2 Adressbits Ai+1 und
Ai vier Teilspeicherbereiche angesprochen
werden, indem die vier select-Signale E0 bis
E3 entsprechend der binären Wertigkeit gemäß Tabelle
1 generiert werden.
-
Für die in 4 gezeigten
Teilspeicher 235 und 236 ist in 5 ein
Ausführungsbeispiel
dargestellt. Der dort mit 260 bezeichnete Teilspeicher
ist in dieser besonderen Ausführung
als Single Port RAM 280 ausgeführt, dessen Adressen, Daten
und Steuersignale je nach Anforderung umgeschaltet werden. Die Umschaltung
wird durch eine Steuerschaltung 270 mit Hilfe eines Multiplexers 275 vorgenommen,
abhängig
von den select-Signalen und anderer Steuersignale 2901 bzw. 2902 (z.B.
read, write) von den entsprechenden Ports. Diese Signale sind zusammen
mit den Daten und Adressen in den Signalen 233 bzw. 234 enthalten
und werden über 5281 bzw. 5282 an
den Multiplexer 275 geführt,
der je nach Entscheidung der Steuerschaltung 270 entsprechend
dem Ausgangssignal 2701 entweder 5281 oder 5282 mit
den Signalen 2801 verbindet. In diesem Beispiel wird ohne
Einschränkung
der Allgemeinheit von einer direkten Adressierung des Caches ausgegangen
(direct-mapped). Falls eine mehrfachassoziative Cacheorganisation
vorliegt, muss entweder in den Einheiten 275 noch der Vergleich
auf Gültigkeit
stattfinden und das Cach-hit Signal zum Port weitergeleitet werden
oder alle Daten werden über
den Port 5331 und das Signal 233 zu 231 bzw. über den
Port 5332 und das Signal 234 zu 232 weitergeleitet,
wo die Gültigkeit
geprüft
wird.
-
Die
Steuerschaltung kann dabei die Weiterschaltung der Signale 5281 bzw. 5282 auf 2801 und
damit zum Single Port RAM 280 vornehmen und auch die Daten
und anderen Signale von 280 in die entgegengesetzte Richtung
weiterleiten. Dies geschieht in Abhängigkeit eines gültigen select-Signals
und der Signale 233 und 234 und/oder der Reihenfolge,
in welcher die Ports über
diese Signale eine Lese- oder Schreib-Operation mit dem Speicher 280 veranlassen.
Werden in den Signalen 233 und 234 gleichzeitig
die Lese- oder Schreibsignale aktiv, so wird ein zuvor definierter
Port zuerst bedient. Dieser Vorzugsport bleibt auch dann mit 2801 verbunden,
wenn kein Lese- oder Schreibsignal aktiv ist. Der Vorzugsport kann
alternativ auch dynamisch vom Prozessorsystem festgelegt werden,
vorzugsweise abhängig
von Zustandsinformationen des Prozessorsystems.
-
Diese
Anordnung mit einem Single Port RAM ist kostengünstiger als ein Dual Port RAM
mit paralleler Zugriffsmöglichkeit,
verzögert
aber die Abarbeitung mindestens einer Ausführungseinheit, wenn gleichzeitig
zu einem Teilspeicher (auch lesend) zugegriffen wird. Je nach Anwendung
ist es nun möglich,
verschiedene Aufteilungen der RAM-Teilbereiche so vorzunehmen, dass
zusammen mit der Gestaltung der Befehlsabläufe und der Datenzugriffe von
den unterschiedlichen Ausführungseinheiten
möglichst
wenig gleichzeitige Zugriffe zu gleichen Teil-RAM-Bereichen auftreten.
Diese Anordnung ist auch erweiterbar auf Zugriffe von mehr als zwei Prozessoren:
Es ist in gleicher Weise auch ein Multi-Port RAM realisierbar, wenn
die Umschaltung der Adressen, Daten und Steuersignale über mehrere
Multiplexer stufenweise nacheinander vorgesehen wird (6 und 7).
-
Ein
solches Multi Port RAM 290 ist in 6 dargestellt.
Dort werden die Port-Eingangssignale 261, 262,
... 267 in den Decodiereinrichtungen 331, 332,
.. 337 zu den Signalen 291, 292...297 decodiert.
Diese Decodierung erzeugt die select-Signale für die Zugriffe zu den einzelnen
RAMs in 281, 282 und 288. In 7 ist
ein Ausführungsbeispiel
für einen
Teilspeicher 28x (281 ... 288) näher gezeigt.
Dort werden in einer ersten Stufe der Steuereinrichtungen 370 die
select-Signale und Steuersignale 3901, 3902, ... 3908 aus
den Steuersignalen 291, 292...298 verarbeitet
zu den Ausgangssignalen 3701, .. 3707. Diese Ausgangssignale
steuern je einen Multiplexer 375 an, der je nach Signalwert
die Verbindungen der Busse 381 oder 382, bis 387 oder 388 mit
den Signalen 481...488 herstellt. In weiteren Stufen sind ähnliche
Steuereinrichtungen 370 und Multiplexer 375 entsprechend
geschaltet bis in einer letzten Stufe die Signale 5901 und 5902 für die Steuereinrichtung
benutzt werden. Das Ausgangssignal 5701 verbindet dann
entweder 581 oder 582 mit 681, das mit
dem Single Port RAM verbunden ist.
-
Im
Gegensatz zu den Multiplexern 275 von 5 verbinden
die Multiplexer 375 von 7 neben
den Adress-, Daten- und Steuersignalen auch die select-Signale der
nächsten
Stufen, die in 381, 382 ... 388 enthalten
sind. Weiterhin können
in 375 Vergleichseinrichtungen enthalten sein, die bei
einer mehrfach-assoziativen Adressierungsart die Gültigkeit
der aus den Teilbereichen gelesenen Daten ermitteln.
-
In
einer weiteren vorteilhaften Ausführung kann die Zuschaltung
von RAM-Bereichen zu verschiedenen Ausführungseinheiten von einem oder
mehreren Systemzuständen
oder Konfigurationen abhängig
gemacht werden. In 8 ist dazu ein Beispiel für einen
konfigurierbaren Dual Port Cache gezeigt. Dazu wird das System-
oder Konfigurationssignal 1000 bei der Decodierung der
Eingangssignale für
jeden der zwei Ports benutzt. Tabelle 2 zeigt eine Möglichkeit
der Veränderung
der Decodierung in Abhängigkeit
von diesem Signal 1000, das hier mit M bezeichnet ist.
Ist M = 0, so liegt zum Beispiel ein Vergleichsmodus vor, in dem
beide Ports Zugriff auf den gesamten Cache haben. Wird aber M =
1 (z.B. Performanz-Modus), so hat jeder Port nur noch den Zugriff
auf die Hälfte
des Cache, aber jeder Port kann uneingeschränkt (ohne Einfluss der Aktivitäten am anderen
Port) auf diesen Bereich zugreifen. In diesem Modus wird das Adressbit
Ai nicht zur Adressierung des Caches (im
direct-mapped mode) verwendet, sondern Daten, die sich in der Adressierung
nur in diesem Bit unterscheiden, werden an der gleichen Stelle im
Cache abgelegt. Erst beim Lesen des Cache-Inhalts kann anhand der
Kennung dann herausgefunden werden, ob es sich um das gesuchte Datum
handelt und entsprechend das Cach-hit Signal generiert werden. Je
nachdem, wo der entsprechende Vergleicher angeordnet ist, sind die
Daten einschließlich
Kennung und Controlbits über
die Signale 291, 292, ... 297 an die
Ports 331, 332, ... 337 und weiter and
die Signale 261, 262, ... 267 auszugeben.
Ebenso ist es möglich
im Performanz-Modus (M = 1) nur dem Port 1 den Zugriff auf den gesamten
Cache zu erlauben. Diese weitere Ausführungsform ist in Tabelle 3
dargestellt. Der Anwender kann auch durch mehrere Konfigurationssignale
beliebige andere Aufteilungen des Caches vornehmen. Das erlaubt
bei einem größeren Cache-Bereich
einmal eine höhere
Hit-Rate und verringert damit die Notwendigkeit des Holens der Daten
aus dem Hauptspeicher. Andererseits behindern sich die verschiedenen
Ausführungseinheiten
nicht, wenn über
die verschiedenen Ports möglichst
nur auf voneinander unabhängige
Cache-Bereiche zugegriffen wird. Da diese Bedingungen von den zur
Anwendung vorgesehenen Programmen abhängig sind ist es vorteilhaft,
wenn je nach Anwendung die Möglichkeit
einer anderen Konfiguration besteht. Andererseits kann direkt bei
einem Wechsel des Systemzustandes (Vergleichs-Modus/Performanz-Modus)
automatisch der Cache durch das Modussignal 1000 umgeschaltet
werden.
-
Diese
Möglichkeit
der Umschaltung der Ports in Abhängigkeit
von einem Modus- oder Konfigurationssignal wird in 9 auf
einen Multi-Port Cache 290 erweitert. Dabei sind 331, 332,
... 337 die Ports, die mit Hilfe dieses Modus- oder Konfigurationssignals
die Zuschaltung verschiedener Teil-RAM-Bereiche 281, 282, ... 288 steuern.
Diese Steuerung wird mittels entsprechend in den Ports generierter
select-Signale gewährleistet,
die in den Signalen 291, 292, ... 297 enthalten
sind.
-
Eine
weitere Ausführung
ist in 10 gezeigt, wenn ein mehrfach-assoziativer
Cache vorliegt, bei dem aus jedem Teilspeicher 281, 282,
... 288 die Daten zusammen mit der Kennung und den Controlbits
zurückgelesen
werden. In den Vergleichseinrichtungen 2811, 2812,
... 2817, 2821, 2822, ... 2827,
... 2881, 2882, .. 2887 wird dann die
Gültigkeit
geprüft
und in Abhängigkeit
davon das Datum auf den Signalen 2910, 2920 ... 2970 zusammen
mit den Gültigkeitssignalen
weitergeleitet. Eine Umschaltung mit Modus- oder Konfigurationssignalen
ist dabei optional genauso möglich,
wie schon in 9 gezeigt und erläutert. In
den Ports 3310, 3320, .. 3370 werden
die Gültigkeitssignale
und ggf. die Modus- und Konfigurationssignale 1000 ausgewertet
und das entsprechende gültige
Datum mit dem Cache Hit Signal bzw. das Cache Miss Signal an die
Signale 2610, 2620, ... 2670 weitergeleitet.
-
Im B1 ist
eine Strtuktur dargestellt, die den Dual Port Cache für eine asymmetrische
Systemstruktur mit zwei Ausführungseinheiten
benutzt. Dabei sind B110 und B111 die zwei Ausführungseinheiten mit ihren Daten/Adress-
und Steuersignalen B120 bzw. B121. B100 ist eine Umschalt- und Vergleichseinheit
(UVE).
-
Diese
Umschalt- und Vergleichseinheit ist im Bild B2 in ihrer Grundfunktion
für die
Anwendung in Verbindung mit zwei Ausführungseinheiten B10 und B11
gezeigt. Verschiedene Ausgangssignale, wie Daten, Steuer- und Adresssignale
B20 bzw. B21 der Ausführungseinheiten
B10 und B11 sind mit der Umschalteinheit verbunden.
-
Darüber hinaus
gibt es mindestens ein Synchronisationssignal, in Ausgestaltung
der erfindungsgemäßen Anordnung
beide Ausgangssignale B40 und B41, die mit jeweils einer der Vergleichseinheiten
verbunden sind.
-
Die
Umschalteinheit enthält
mindestens ein Steuerregister B15, das mindestens ein Speicherelement für ein binäres Zeichen
(Bit) B16 besitzt, das den Modus der Vergleichseinheit umschaltet.
Dieses Bit B16 kann die zwei Werte 0 und 1 annehmen und kann sowohl
durch die Signale B20 oder B21 der Ausführungseinheiten oder durch
interne Prozesse der Umschalteinheit gesetzt oder rückgesetzt
werden.
-
Auf
die Umschalteinheit und damit auf das Steuerregister B15 und damit
auch das Umschaltbit B16 kann verzichtet werden, wenn ein permanenter
Vergleichsmodus eingestellt sein soll. Die Umschalt- und Vergleichseinheit
wird dabei zur permanenten Vergleichseinheit und das Signal B101
ist ständig
Eins. Die in den B3 und B4 dargestellten
Zustände
entfallen damit. Alle nachfolgenden Betrachtungen gelten damit so,
als wenn das Bit B16 gesetzt wäre
und damit das Signal B101 = 1.
-
Ist
dieses Bit B16 auf den Wert 1 gesetzt, so arbeitet die Umschalteinheit
im Vergleichsmodus. In diesem Modus werden alle ankommenden Datensignale
aus B20 mit den Datensignalen aus B21 verglichen, sofern bestimmte
vorgebbare Vergleichs-Bedingungen der Steuer- und/oder Adresssignale
aus den Signalen B20 und B21 erfüllt
sind, die die Gültigkeit
der Daten und den vorgesehenen Vergleich für diese Daten signalisieren.
-
Sind
diese Vergleichsbedingungen an beiden Signalen B20 und B21 gleichzeitig
erfüllt,
so werden die Daten aus diesen Signalen unmittelbar verglichen und
bei Ungleichheit wird ein Fehlersignal B17 gesetzt. Ist nur die
Vergleichsbedingung aus entweder den Signalen B20 bzw. B21 erfüllt, so
wird das entsprechende Synchronisationssignal B40 bzw. B41 gesetzt.
Dieses Signal bewirkt in der entsprechenden Ausführungseinheit B10 bzw. B11
ein Anhalten der Verarbeitung. Und damit eine Verhinderung der Weiterschaltung
der entsprechenden Signale, die bisher nicht miteinander verglichen
werden konnten. Das Signal B40 bzw. B41 bleibt solange gesetzt,
bis die entsprechende Vergleichs-Bedingung der jeweils anderen Ausführungseinheit
B21 bzw. B20 erfüllt
ist. In diesem Fall wird der Vergleich ausgeführt und das entsprechende Synchronisationssignal
zurückgesetzt.
-
Um
den Vergleich bei der beschriebenen ungleichzeitigen Bereitstellung
der zu vergleichenden Daten durch die beiden Ausführungseinheiten
sicherzustellen ist es entweder notwendig, dass die Daten und Vergleichs-Bedingungen
der entsprechenden Ausführungseinheit
solange auf den entsprechenden Werten gehalten werden, bis das entsprechende
Synchronisationssignal B40 bzw. B41 zurückgesetzt wurde, oder die zuerst bereitgestellten
Daten müssen
in der Umschalteinheit bis zum Vergleich gespeichert werden.
-
Je
nachdem, welche Ausführungseinheit
zuerst Daten bereitstellt, muss diese mit der Weiterabarbeitung
ihres Programms oder ihrer Prozesse solange warten, bis die andere
Ausführungseinheit
die entsprechenden Vergleichsdaten bereitstellt.
-
In
einer speziellen Ausführung
der Umschalteinheit nach B2 kann
auf eines der Signale B40 bzw. B41 verzichtet werden, wenn immer
gewährleistet
ist, dass die zugehörige
Ausführungseinheit
nicht eher Vergleichsdaten bereitstellt, als die andere Ausführungseinheit.
Ist das Bit B16 nicht gesetzt, so sind die Synchronisationssignale
B40 und B41 sowie das Fehlersignal B17 immer auf den Wert 0 gesetzt.
Es findet auch kein Vergleich statt und beide Ausführungseinheiten
arbeiten voneinander unabhängig
im Performanzmodus.
-
In
einem Performanzmodus verarbeiten beide Ausführungseinheiten aus B1 unabhängig Programme,
Programmteile oder Programmsegmente. Die Ausführungseinheit B111 greift über B121
zum Cache B105 zu und der Cache steht über B161 mit dem Hauptspeicher
oder anderen Speichereinrichtungen in Verbindung. Die Ausführungseinheit
B110 greift vorzugsweise über
die Einrichtung 106 (durch das Steuersignal B101 in diesem
Modus inaktiv geschaltet) ebenfalls zum dual Port Cache zu und benutzt
dafür den
zweiten Port dieses Caches (siehe B3). Die
Umschalt- und Vergleichseinheit (UVE) B100 ist inaktiv, d.h. es
werden keine Daten verglichen (B16 nicht gesetzt). In einer weiteren
Ausführung
kann zu dem Zugriff der Ausführungseinheit
B110 über
den Cache hier in einer weiteren Ausführungsform aber auch der Zugriff über B160 direkt
zum Hauptspeicher oder anderen Speichereinrichtungen vorgesehen
werden (siehe B4). Diese weitere Ausführungsform
hat jedoch den Nachteil, dass dann die Daten im Cache nicht mehr
konsistent sind. Der entsprechende Block muss dann im Cache durch
Rücksetzen
des Valid-Bits ungültig
gemacht werden, entweder durch die Bearbeitungseinheit B110 selbst,
oder eigenständig
durch den Cache, der durch Beobachten des Busses B161 erkennt, ob
in einen Block geschrieben wird, der im Cache vorhanden ist. Dieser
Vorgang wird auch als bussnooping bezeichnet. Die weitere Ausführung von B3 ist
demgegenüber
wegen des geringeren Aufwandes vorzuziehen.
-
Der
Vergleichsmodus der Struktur von B1 ist
in B5 im Detail dargestellt. Wird durch Setzen von
B16 in der UVE B100 dieser Modus aktiviert, so beginnen beide Ausführungseinheiten
mit der Abarbeitung des gleichen Programms, das ggf. diversitär auf den
beiden Ausführungseinheiten
abläuft,
d.h. unterschiedliche Algorithmen und/oder Befehle zur Erzeugung
der zu vergleichenden Daten benutzt. Die Ausführungseinheit B110 gibt Daten,
die miteinander verglichen werden sollen, mit einer entsprechenden
Kennung an die Umschalt- und Vergleichseinheit (UVE) B100 aus.
-
Diese
Aktion bewirkt in der Leseanforderungseinheit B106 das Abspeichern
der Steuersignale (z.B. write) und ggf. zusätzliche Kennungen (Status-
oder Prozessinformation, Bearbeitungszyklus) in das Speicherelement
B1061 und die zugehörige
Adresse in ein Speicherelement B1062. Die Einheit B106 löst dadurch
einen Lesevorgang mittels der aus B1061 in der Steuereinheit B1064
generierten Steuersignale (z.B. read) und Kennungen in B1021 und
den von B1062 ausgegebenen Adresssignalen B1022 an dem Port 2 des
Dual Port Cache B105 aus.
-
Bei
einem Lesevorgang im Cache zu Zwecke des Vergleichs wird immer vorausgesetzt,
dass die an dem Cache direkt angeschlossene Ausführungseinheit bereits die Daten
in den Cache geschrieben hat. Das wird dadurch gewährleistet,
dass die Ausführungseinheiten
mit dem Schalten in den Vergleichsmodus entsprechend zeitlich zueinander
mit der Verarbeitung des Programms starten (siehe auch nachfolgende
Kapitel über die
Synchronisation). Für
den Fall, dass im Vergleichsmodus die zu vergleichenden Daten noch
nicht im Cache verfügbar
sind (Cache Miss), so darf der Cache diese Daten jedoch nicht im
Hauptspeicher anfordern, sondern muss den Lesevorgang solange wiederholen,
bis die Daten von der unmittelbar mit dem Cache verbundenen Ausführungseinheit
geschrieben wurden und somit im Cache vorliegen. Eine zeitliche Überwachung
oder ein Zähler
der misslungenen Versuche garantiert die Erzeugung eines Fehlersignals,
falls die Daten nicht in einem toleriertem Zeitbereich oder mit
einer bestimmten Anzahl von Versuchen erledigt wurde.
-
Der
daraufhin empfangene Datenwert wird über B1023 in B1063 geschrieben.
Die Gültigkeit
der Daten wird in den empfangenen Steuersignalen B1024 angezeigt
(Auswertung des Cache Hit Signals und des Valid-Bits, und im Falle
der Gültigkeit
werden die Daten, Adressen und geeignete Steuersignale über B1003, B1002
und B1001 zum Vergleich in B100 bereitgestellt. Dabei wird in der
Leseanforderungseinheit B106 die mit den Daten aus dem Cache zurück gelieferte
Kennung (Control-Bits) mit der aktuellen Kennung verglichen. Bei
Nichtübereinstimmung
der Kennungen wird ein erneuter Lesevorgang an der gleichen Adresse
im Cache ausgelöst.
Die Daten werden erst bei einer gültigen Kennung zusammen mit
den Adressen, die ggf. auch als eine zusätzliche Kennung benutzt werden
können,
mittels geeigneter Steuersignale B1001 für den Vergleich freigegeben.
Bis zur Freigabe des Vergleichswertes (oder ggf. sogar bis zum Abschluss
des Vergleichs, falls die Signale B120 in B100 nicht zwischengespeichert
werden) wird die Ausführungseinheit
B110 über
das Steuersignal B140 (z.B. Wait, Interrupt) angehalten. Dadurch
wird gewährleistet,
dass die Vergleichsdaten von B110 an B120 noch anliegen. Werden
die Signale B120 in einem in B100 enthaltenen FIFO gespeichert, braucht
die Ausführungseinheit
B110 nicht angehalten werden, solange der FIFO nicht vollständig gefüllt ist. Als
FIFO (first in, first out) bezeichnet man dabei eine Speichereinheit,
die mehrere Datenworte speichern kann und die die zuerst eingespeicherten
Daten auch zuerst wieder ausgibt.
-
Eine
Synchronisation der beiden Ausführungseinheiten
kann dadurch erfolgen, dass die Ausführungseinheit B111 die Vergleichsdaten
zusammen mit einer Kennung (Adresse und zusätzliche Control-Bits – zum Beispiel
Valid-bit, Dirty-Bit, Prozess-ID) im Cache abspeichert und vor dem
Vergleich die Gültigkeit
entsprechend geprüft
wird. Dazu werden die gespeicherten Adressdaten und das Valid-Bit
zur Generierung des Cache-Hit Signals benutzt. Das Dirty-Bit zeigt
nur an, ob die Daten des betreffenden Blocks im Cache verändert wurden
und noch nicht in den Hauptspeicher zurückgeschrieben wurden. Unter
der Prozess-ID wird dabei eine Kennzeichnung der Programmabarbeitung
verstanden, die mit jedem neuen Schreiben gültiger Daten von B111 in den
Cache verändert
wird. Dadurch ist gewährleistet,
dass die Aktualität
der Daten geprüft
werden kann, wenn die Prozess-ID z.B. mit dem Start des Vergleichsmodus
auf einen bekannten Wert gesetzt und dann in einer bekannten Weise
verändert,
zum Beispiel incrementiert wird.
-
Tabelle
4 zeigt den internen Aufbau eines Caches. Jede Zeile entspricht
dabei einem Datenblock.
-
Der
Adress-Tag ist der Teil der Adresse, die für den Zugriff für einen
Block relevant ist und mit dem Adress-Index beim aktuellen Zugriff
verglichen wird. Bei Übereinstimmung
und gültigem
Valid-Bit (Teil der Control-Bits) wird ein Cache-Hit Signal erzeut.
Der Datenblock kann einige Bytes bis mehrere KBytes Daten enthalten.
Die Controlbits sind als ein Beispiel in Tabelle 5 gezeigt.
-
Um
z.B. das Incrementieren der Prozess-ID zu gewährleisten, wird in dem Cache
B105 ein Zähler B1059
vorgesehen (6), der mit Beginn des Vergleichsmodus
(B101 = 1) über
die Signale B1021 und B1022 auf einen definierten Wert gesetzt wird.
Dieser Wert kann zum Beispiel der hexadezimale Wert 0 × 0000 sein,
wenn der erste Vergleichszyklus beginnt. Dieser Zähler kann
dann kontinuierlich mit jedem Schreiben vergleichsrelevanter Daten
von B111 incrementiert werden. Vergleichsrelevant heißt, dass
man anhand der Adresse und/oder anderer Steuersignale vorgeben kann,
ob die Daten für
einen Vergleich vorgesehen sind.
-
Speichert
man mit jedem Datum im Cache den Zählerwert als Prozess-ID mit
ab, so ist der Datenstand eindeutig gekennzeichnet. Anhand eines
gleichartigen Zählers
B1069 in der Einheit B106 lässt
sich dann durch einen einfachen Vergleich entscheiden, ob die entsprechenden
Daten schon im Cache vorliegen. Der Zähler B1069 ist dazu mit dem
Aktivwerden von B101 vorzugsweise auf den gleichen Startwert wie
der Zähler
B1059 zu setzen und mit jedem Schreibsignal relevanter Daten von
B110 zu incrementieren. Haben dann die Prozess-ID Bits im gelesenen
Block den gleichen oder einen höheren
Wert als der Zählerstand
von B1069, so sind die Daten gültig.
Höher kann
der Zahlenwert deshalb sein, weil in einen Block auch mehrfach auf
unterschiedliche Daten geschrieben werden kann. Der Zähler braucht
mit Beginn eines neuen Zyklus nicht rückgesetzt werden. Es muß nur verhindert
werden, dass in einem neuen Zyklus nicht Daten überschrieben werde, die noch
nicht verglichen wurden.
-
Eine
weitere Ausführung
zu dem Zähler
ist auch die Abspeicherung der niederwertigen Adressbits (die für die Blockadressierung
nicht relevanten Adressbits 0, ..., k – 1 gemäß 3) als einen
Teil der Prozess-ID, während
andere Prozess-ID Bits den Zyklus kennzeichnen. Ist die Wortbreite
größer als
ein Byte, entfallen die entsprechenden niederwertigsten Bits davon.
-
Hierdurch
ist es möglich
zu erkennen, welches Wort im Block zuletzt geschrieben wurde. Dazu
werden im Programmablauf beispielsweise entweder die Daten immer
mit fortlaufender Adresse geschrieben, oder man kann mit Hilfe einer
Transformationstabelle bei linear fortlaufender Programmabarbeitung
eine eindeutige Zuordnung des zuletzt geschriebenen Wertes von B111
zum aktuellen Vergleichswert von B110 vornehmen.
-
Eine
weitere Möglichkeit
besteht darin, den Zählerstand
nicht mit dem Datenblock als Prozess-ID im Cache abzuspeichern, sondern den
aktuellen Zählerzustand
bei jedem Lesezugriff von B106 über
die Steuersignale B1064 an B106 zu übermitteln. Als Prozess-ID
wird dann nur der laufende Zyklus in entsprechend weniger Speicherbits
abgespeichert. Die Speichergröße wird
dadurch jedoch nicht wesentlich verringert, weil ein Datenblock
im Cache heutzutage üblicherweise
schon bis zu 64 KByte enthalten kann. Da sind zum Beispiel 16 zusätzliche
Prozess-ID Bits weniger als 0,0031 %.
-
Eine
weitere Ausführungsform
der Synchronisation ohne Benutzung der Zähler B1059 und B1069 besteht
in der Aussendung eines Steuersignals B141 (z.B. Interrupt) an die
Ausführungseinheit
B111 zur Anforderung des Vergleichsmodus. Die Ausführungseinheit
B111 beginnt dann nach einer bekannten maximalen Zeitspanne T mit
der Abarbeitung des Programmteils im Vergleichsmodus. Die Ausführungseinheit
B110 wird entsprechend initialisiert und auf den Vergleichsmodus
vorbereitet, aber gleichzeitig um die maximale Zeitspanne T verzögert gestartet.
Dadurch ist gewährleistet,
dass die Vergleichdaten im Dual Port Cache B106 immer vorher bereitstehen,
bevor die Ausführungseinheit
B110 die entsprechenden Daten ausgibt. Dabei ist in dem Wert T ggf.
auch zu berücksichtigen,
dass die Daten diversitär
berechnet werden, d.h. die Zeitdauer, die durch die Diversität in der
Ausführungseinheit
B111 länger
gebraucht wird als in B110, ist zu T noch zu addieren.
-
Unabhängig davon,
wie die Aktualität
der Vergleichsdaten abgesichert wird, ist die Ausführungseinheit B111
am Überschreiben
der noch nicht verglichenen Daten zu hindern, falls die Daten z.B.
zyklisch aktualisiert werden. Dazu kann das Rücksetzen des Bits B16 z.B.
auch ein Rücksetzen
des Steuersignals B141 an die Ausführungseinheit B111 bewirken.
Solange B141 gesetzt ist, kann bei einer zyklischen Aktualisierung
der Daten die Ausführungseinheit
B111 am Überschreiben
der Daten vom letzten Zyklus gehindert werden. Die Ausführungseinheit
B111 durchläuft
dann entweder eine Warteschleife oder führt Operationen aus, die ohne
Vergleich von Daten auskommen. Mit dem Rücksetzen von B141 wird signalisiert,
dass von der Einheit B106 keine weiteren Daten zum Vergleich angefordert
werden und die bisherigen Vergleichsoperationen abgeschlossen sind.
Solange dann B141 nicht erneut gesetzt wird, arbeitet die Ausführungseinheit
B111 im Performanz-Modus. Ein Überschreiben
der Daten im Cache wird damit wieder möglich, aber erst nach der erneuten
Aktivierung von B141 wird wieder der Vergleichsmodus eingeleitet.
-
In
einer weiteren Ausführung
wird das Signal B141 immer nur kurzzeitiger aktiv, um den Vergleichsmodus
mittels eines Interrupts vorzubereiten. Ein Überschreiben der Daten wird
dann verhindert, bis B141 wieder kurz gesetzt wird und durch den
dadurch ausgelösten
Interrupt an die betreffende Programmstelle gesprungen wird, die
erneut die Vergleichsdaten bereitstellt.
-
Auf
alle Synchronitätsmaßnahmen
kann nach einem Start des Vergleichs verzichtet werden, wenn durch
geeignete Maßnahmen
gewährleistet
werden kann, dass die Zeitdauer zwischen der Bereitstellung von Vergleichsdaten
durch die Ausführungseinheit
B111 immer größer ist
als die zum Vergleich der Daten mit denen von B110 benötigte Zeit,
die Daten von B111 immer mindestens gleichzeitig oder eher als die
von B110 bereitstehen und durch Zwischenspeicherung der Daten von
B110 in B100 in einem einfachen Speicher oder FIFO die Ausführungseinheit
B110 nicht durch das Signal B140 zu Synchronisationszwecken angehalten
werden muss.
-
Von
den hier vorgeschlagenen Methoden sind für jede Anwendung nur die jeweils
notwendigen Maßnahmen
zu treffen.
-
In
einer weiteren vorteilhaften Ausführungsform ist der Dual Port
Cache nicht notwendig mit einem Dual Port RAM realisiert, sondern
es wird ein single port RAM B1056 benutzt (siehe B7)
Mittels einer Zugriffsteuerung B1057 werden nacheinander je nach
Anforderung die beiden Ports bedient, von denen aber immer nur einer
Zugriff zum RAM über
die Signale B1058 hat. Dadurch kann das Rücklesen durch B106 bei Zugriffskonflikten
ggf. um einen oder mehrere Takte zusätzlich verzögert werden, aber da die Daten
ohnehin nicht synchron von beiden Ausführungseinheiten geliefert werden,
ist das in verschiedenen Anwendungen kein Nachteil. Wesentlich ist
nur, dass die Ausführungseinheit
B111 mit höherer
Priorisierung ausgestattet ist und dadurch nicht im Zugriff behindert
wird. Weiterhin ist wichtig, dass in der Gesamtbilanz genügende Zugriffsmöglichkeiten
für den
zweiten Port zur Verfügung
stehen, auch wenn die erwähnten
Verzögerungen
auftreten können.
Der Vorteil liegt bei dieser Ausführung in der deutlichen Hardwareeinsparung
für den
zweiten Port. Sofern in B7 das
Signal B1058 direkt mit dem Signal B121 verbunden ist und sowohl
B1057 als auch B102 entfallen liegt ein Single Port Cache vor, wie
er gemäß dem Stand
der Technik üblich
ist. Die Erweiterung durch die Ablaufsteuerung B1057 und dem damit
möglichen
Anschluss von B102 ist ein deutlich geringerer Zusatzaufwand, als
einen Dual Port RAM mit echter Parallelität einzusetzen.
-
Die
Einheit B106 ist nicht notwendigerweise eine separate Einheit, sondern
kann in der UVE B100 integriert sein, oder mit dem Cache oder einer
Ausführungseinheit
zusammen auf einem Chip integriert sein.
-
Wenn
ein Cache mit mehr als zwei Ports gemäß 6 zur Verfügung steht,
d.h. ein Multi-Port Cache B205 können
entsprechend B8 auch mehr als zwei Prozessoren
die Daten in einem Vergleichsmodus vergleichen oder voten, d.h.
durch Mehrheitsentscheid den gültigen
Wert bestimmen. Für
jede zusätzlichen
Ausfuhrungseinheit B112, ... ist dann auch eine zusätzliche
Leseanforderungseinheit B107, ... gemäß B8 vorzusehen
und die UVE B200 muss eine entsprechende Anzahl von Eingängen dafür besitzen.
Im Vergleichs- oder Voting-modus schreibt die direkt am Cache angeschlossene
Ausführungseinheit
das Datum zum Vergleich oder Voting direkt in den Cache. Diejenige
der übrigen
Ausführungseinheiten
B110, B112, ..., die zuerst ein Datum zum Vergleich/Voting bereitstellt,
fordert dann über
die angeschlossene Leseanforderungseinheit B106, B107, ... über den
angeschlossenen Port des Cache B205 die entsprechenden Daten an.
Diesen Zustand übermittelt
diese Ausführungseinheit
den anderen Ausführungseinheiten
und der UVE mittels der Signale B8105. Nach dem Bereitstellen der Daten
durch den Cache über
B102, B104, ... werden diese über
B8105 der UVE B200 zum Vergleich bereitgestellt. Der Vergleich/das
Voting findet statt, wenn alle beteiligten Ausführungseinheiten die entsprechenden
Daten zur Verfügung
gestellt haben. Gegebenenfalls müssen
die anderen Ausführungseinheiten
bis zu diesem Zeitpunkt über
die Steuersignale B140, B142, ... angehalten werden. Eine Zeitüberwachung
gewährleistet
dabei, dass innerhalb eines tolerierten Zeitfensters der Vergleich
stattfindet, oder ein Fehler signalisiert wird.
-
Anstelle
eines RAM-Speicher kann die erfindungsgemäße Anordnung auch mit anderen
Speichertechnologien wie MRAM, FERAM o.ä. dargestellt werden.
-
-
-
-
-