DE4330751C2 - Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem zu einem Datenverarbeitungssystem - Google Patents
Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem zu einem DatenverarbeitungssystemInfo
- Publication number
- DE4330751C2 DE4330751C2 DE4330751A DE4330751A DE4330751C2 DE 4330751 C2 DE4330751 C2 DE 4330751C2 DE 4330751 A DE4330751 A DE 4330751A DE 4330751 A DE4330751 A DE 4330751A DE 4330751 C2 DE4330751 C2 DE 4330751C2
- Authority
- DE
- Germany
- Prior art keywords
- data
- instruction
- memory
- cache
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 21
- 239000007853 buffer solution Substances 0.000 title claims description 8
- 230000036316 preload Effects 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 18
- 238000013479 data entry Methods 0.000 claims description 11
- 239000000872 buffer Substances 0.000 description 65
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000011109 contamination Methods 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 241001627144 Iris versicolor Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
Die vorliegende Erfindung bezieht sich ein Verfahren zum
Liefern von Daten von einem Hauptspeicher über ein Speicher
puffersystem zu einem Datenverarbeitungssystem bei Computer
speichersystemen, bei denen die zentrale Verarbeitungsein
heit viel schneller ist als der Hauptspeicher.
Herkömmliche Computersysteme verwenden Speichersysteme, die
der zentralen Verarbeitungseinheit (CPU = central processing
unit) Daten als Reaktion auf Lade-Anweisungen bereitstellen
und Daten als Reaktion auf Speicher-Anweisungen in den Spei
chersystemen speichern. Die Kosten pro Berechnung für die
CPU nahmen schneller ab als die Kosten pro Byte Speicher.
Mit komplexer werdenden Berechnungszielen hat sich zusätz
lich die Größe des Hauptcomputerspeichers dramatisch erhöht.
Als ein Ergebnis wird das Bereitstellen eines Hauptspei
chers, der mit derselben Geschwindigkeit wie die CPU arbei
tet, ökonomisch unpraktisch.
Um die hohen Kosten des Bereitstellens eines Hauptspeichers,
der mit CPU-Berechnungsgeschwindigkeiten arbeitet, zu ver
hindern, verwenden viele Systeme Cache-Speicher. Ein Cache-
Speicher ist ein schneller Puffer, der verwendet wird, um
die zuletzt verwendeten Daten zu speichern. Wenn Ladean
weisungen an den Cache-Speicher ausgegeben werden, überprüft
der Cache-Speicher seinen Puffer, um festzustellen, ob die
Daten vorhanden sind. Wenn die Daten bereits im Cache-Spei
cher enthalten sind, gibt der Cache-Speicher die Daten
zurück an die CPU. Wenn die Daten nicht vorhanden sind, muß
der Cache-Speicher die Daten aus dem Hauptspeicher laden.
Nachdem der Hauptspeicher viel langsamer als der Cache-Spei
cher ist, führt dies zu einer bedeutenden Verzögerung der
Programmausführung. Jedes mal, wenn der Cache-Speicher Daten
aus dem Hauptspeicher lädt, müssen einige der in dem Cache-
Speicher gespeicherten Daten gelöscht werden, um Raum für
die neuen Daten zu schaffen.
Auf ähnliche Weise werden ebenfalls Speicher-Anweisungen an
den Cache-Speicher ausgegeben. Wenn die Daten für die in der
Speicher-Anweisung angegebene Adresse bereits in dem Cache-
Speicher sind, aktualisiert der Cache-Speicher die Daten, um
die in der Speicher-Anweisung angegebenen Werte zurück
zugeben. Wenn die Daten nicht vorhanden sind, macht der
Cache-Speicher einen Eintrag für die in der Speicher-An
weisung angegebene Adresse und bezeichnet die Daten als an
dieser Stelle gespeichert. Im Fall eines "Durchschreibe"-
Cache-Speichers werden die Daten ebenfalls sofort an den
Hauptspeicher derart geschickt, daß der Hauptspeicher immer
eine korrekte Kopie der Daten hat. In Nicht-Durchschreibe-
Cache-Speicher-Systemen wird der Dateneintrag in dem Cache-
Speicher markiert, um anzuzeigen, daß er sich von dem an
dieser Adresse im Hauptspeicher gespeicherten Wert unter
scheidet. Wenn der Dateneintrag während einer nachfolgenden
Operation ersetzt wird, dann wird der derart markierte Ein
trag in den Hauptspeicher geschrieben, bevor er ersetzt
wird.
Um effektiv zu sein, müssen die Daten in dem Cache-Speicher
durchschnittlich mehrere Male benutzt werden, bevor sie aus
dem Cache-Speicher durch neue Daten, die aus dem Hauptspei
cher als Reaktion auf Lade-Anweisungen, die durch die be
reits im Cache-Speicher befindlichen Daten nicht erfüllt
werden können, eingehen, ersetzt werden. Jedesmal, wenn Da
ten aus dem Hauptspeicher angefordert werden, muß die CPU
warten. Wenn die Daten mehrere Male benutzt werden, während
sie im Cache-Speicher sind, amortisiert sich diese Verzöge
rung über mehrere Lade-Anweisungen; daher wird die durch
schnittliche Verzögerung pro Lade-Anweisung wesentlich redu
ziert. Eine solche Reduzierung tritt nicht auf, wenn die Da
ten nur einmal verwendet werden.
Tatsächlich verschlechtert die Anwendung des Cache-Speichers
zur Übertragung von Daten, die nur einmal benutzt werden
sollen, das Systemverhalten. Wie oben erwähnt, muß jedesmal,
wenn ein neues Datenwort aus dem Hauptspeicher in den Ca
che-Speicher bewegt wird, ein in dem Cache-Speicher gespei
chertes Datenwort gelöscht werden. Einige der Datenwörter,
die gelöscht werden, wären wiederverwendet worden, wenn die
se Wörter nicht als Reaktion auf die Lade-Anweisungen für
Datenwörter, die nur einmal verwendet werden, gelöscht wor
den wären. Das Übergeben von Datenwörtern, die während ihrer
Anwesenheitszeit im Cache-Speicher nur einmal verwendet wer
den, verschlechtern daher das Cache-Speicherverhalten. Diese
Verschlechterung kann durch Erhöhung der Größe des Cache-
Speichers vermindert werden; diese Lösung erhöht jedoch die
Kosten des Cache-Speichers erheblich.
Die Zeitverzögerung, die beim Wiedergewinnen von Daten aus
dem Hauptspeicher angetroffen wird, wird oft durch die
Wartezeit des Hauptspeichers dominiert. Die Wartezeit des
Speichersystems ist als die Anzahl der Zyklen nach der
Initialisierung des Lade-Vorgangs, bei dem die Daten für die
Ladung aus dem Speicher zurückgegeben werden und für die An
wendung verfügbar sind, definiert. Ein Verfahren zum Ver
hindern dieser Ineffizienz ist es, die Lade-Anweisung aus
reichend lange vor dem Bedarf an den Daten auszugeben, um
dem Speicher Zeit zu geben, die Daten wiederzugewinnen und
sie bereitzuhaben, wenn sie gebraucht werden. Diese Lösung
führt jedoch zu zwei Problemen.
Erstens kann eine dazwischenliegende Speicher-Anweisung, die
an dieselbe Speicheradresse gerichtet ist, dazu führen, daß
fehlerhafte Daten an die CPU zurückgegeben werden.
Zweitens kann das Zugreifen auf die Daten durch den Cache-
Speicher die Effizienz des Cache-Speichers tatsächlich re
duzieren, wenn die Daten, die ausgelesen werden, nur einmal
benutzt werden. Um effektiv zu sein, müssen die Daten in dem
Cache-Speicher durchschnittlich mehrere Male verwendet wer
den, bevor sie in dem Cache-Speicher durch neue Daten, die
als Antwort auf Lade-Anweisungen, die nicht durch die be
reits in dem Cache-Speicher befindlichen Daten befriedigt
werden können, aus dem Hauptspeicher eingehen, ersetzt wer
den. Jedesmal, wenn Daten aus dem Hauptspeicher erhalten
werden, muß die CPU warten. Wenn die Daten mehrere Male ver
wendet werden, während sie in dem Cache-Speicher sind, amor
tisiert sich diese Verzögerung über mehrere Lade-Anweisun
gen; daher wird die durchschnittliche Verzögerung pro Lade-Anweisung
erheblich reduziert. Eine solche Reduzierung tritt
nicht auf, wenn die Daten nur einmal verwendet werden.
Ferner kann ein Bedarf bestehen, die durch die eingehenden
Daten ersetzten Daten wieder in den Cache-Speicher als Ant
wort auf eine nachfolgende Lade-Anweisung zu laden. Wenn
dies auftritt, wird das System durch die Verzögerungen beim
Zurückladen der ersetzten Daten weiter benachteiligt.
Die EP 0375864 A2 betrifft ein System zum Zwischenspeichern
von Daten zwischen einem Cache-Speicher und einer lang
sameren Speichereinrichtung in einem Puffer, und ein System
zum Übertragen von Daten von dem Puffer direkt an einen
Hauptrechner. Fragt ein Prozessor nach Daten, wird der
Cache-Speicher überprüft, um zu sehen, ob sich die Daten
bereits in dem Cache-Speicher befinden. Wenn dies nicht der
Fall ist, wird eine Anfrage bezüglich dieser Daten an das
langsamere Speichergerät gesendet. Der Puffer empfängt die
Daten von dem langsameren Speichergerät und stellt die Daten
dem Prozessor, welcher die Daten angefordert hat, bereit.
Der Puffer stellt die Daten dann dem Cache-Speicher zur
Speicherung bereit, vorausgesetzt, daß der Cache-Speicher
nicht entsprechend einer getrennten Speicheranfrage von dem
Prozessor arbeitet. Die Daten werden von dem Puffer in den
Cache-Speicher geschrieben, wenn eine solche Einschränkung
nicht vorliegt. Der Puffer ist ebenfalls fähig, Daten, die
nachfolgenden Anfragen entsprechen, bereitzustellen, voraus
gesetzt, daß er diese Daten enthält. Dies kann der Fall
sein, wenn eine Anfrage bezüglich derselben Daten auftritt
und der Puffer diese Daten noch nicht in den Cache-Speicher
geschrieben hat. Dieser Fall kann ebenfalls dann auftreten,
wenn die Bereiche des Cache-Speichers, die Daten von einem
Bereich einer langsameren Speichereinrichtung enthalten kön
nen, aus irgendwelchen Gründen nicht verfügbar sind. In die
sem Fall wirkt der Puffer wie ein "Mini"-Cache-Speicher.
Nachdem die durch den Puffer von dem langsameren Speicher
empfangenen Daten nicht unmittelbar in den Cache-Speicher
geschrieben werden müssen, wird der Cache-Speicher in die
Lage versetzt, andere Lese- oder Schreib-Anfragen des Pro
zessors auszuführen. Liegen solche Anfragen bei dem Cache-
Speicher nicht vor, werden die Daten in den Cache-Speicher
geschrieben.
Die Aufgabe der vorliegenden Erfindung besteht darin, ein
verbessertes Verfahren zum Liefern von Daten von einem
Hauptspeicher über ein Speicherpuffersystem an ein Datenver
arbeitungssystem zu schaffen, bei dem die durchschnittliche
Verzögerung pro Lade-Anweisung zum Laden von Daten, die von
dem Datenverarbeitungssystem angefordert werden, reduziert
ist.
Diese Aufgabe wird durch ein Verfahren nach Anspruch 1 ge
löst.
Es ist ein vorteilhaftes Merkmal der vorliegenden Erfindung,
daß ein Verfahren zum Liefern von Daten von einem Hauptspei
cher über ein Speicherpuffersystem an ein Datenverarbei
tungssystem geschaffen wird, bei dem die Daten, die nur
einige wenige male verwendet werden, nicht durch den Cache-
Speicher durchtreten müssen.
Bei dem Verfahren gemäß der vorliegenden Erfindung werden
Informationen, die in einem Systemspeicher gespeichert sind,
mittels eines Speicherpuffersystem als Reaktion auf Lade-An
weisungen eines Datenverarbeitungssystems an das Datenverar
beitungssystem geliefert. Der bei dem Verfahren verwendete
Puffer kann in Verbindung mit einem herkömmlichen Cache-
Speichersystem verwendet werden. Bei dem Verfahren wird ein
Puffer-Untersystem verwendet, das Vorlade-, Lade- und Spei
cher-Anweisungen von dem Datenverarbeitungssystem empfängt,
wobei jede dieser Anweisung eine Adresse einschließt, die
ein Datenwort in dem Systemspeicher angibt. Das Puffer-Un
tersystem empfängt Daten von dem Cache-Speicher und dem Sy
stem-Speicher und speichert die Daten in einer Register-Da
tei, die Dateneinträge hat, die eine Adresse und ein Daten
wort einschließen. Das Puffer-Untersystem schließt eine
Steuerung ein, die als Reaktion auf eine empfangene Lade-Anweisung
den letzten Wert der Daten, die durch die Adresse
der empfangenen Lade-Anweisung identifiziert sind, an das
Datenverarbeitungssystem liefert. Die Steuerung steuert
ebenfalls das Cache-Speicher-Untersystem und kann von diesem
Daten wiedergewinnen. Die Steuerung veranlaßt als Reaktion
auf eine empfangene Vorlade-Anweisung, daß die Daten, die
der Adresse in der Vorlade-Anweisung zugeordnet sind, in der
Registerdatei gespeichert werden. Die Steuerung überwacht
ebenfalls Speicher-Anweisungen, die von den Datenverarbei
tungssystemen ausgegeben werden, und aktualisiert die Werte,
die in der Registerdatei gespeichert sind, wenn die Adresse
in einer Speicher-Anweisung mit der Adresse eines der Daten
einträge in der Registerdatei übereinstimmt.
Ein bevorzugtes Ausführungsbeispiel der vorliegenden Erfin
dung wird nachfolgend unter Bezugnahme auf die beiliegenden
Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm eines Computersystems zur Durch
führung des Verfahrens gemäß der vorliegenden Er
findung verwendet;
Fig. 2 ein Blockdiagramm eines Puffers-für-baldiges-Lesen
zur Verwendung bei dem erfindungsgemäßen Verfahren;
und
Fig. 3 ein Blockdiagramm eines kombinierten Cache-Spei
cher-Systems zur Verwendung bei dem erfindungsgemä
ßen Verfahren.
Die vorliegende Erfindung kann mit Bezug auf Fig. 1, die ein
Blockdiagramm eines Computersystems ist, das einen Haupt
speicher 14 verwendet, der eine bedeutend geringere Ge
schwindigkeit als die CPU 12 hat, leichter verstanden wer
den. Auf den Speicher 14 wird über einen Speicherpuffer 10
gemäß der vorliegenden Erfindung zugegriffen. Der Speicher
puffer 10 schafft zwei Datenwege zwischen der CPU 12 und dem
Speicher 14. Der erste Weg ist durch einen Cache-Speicher
16, der in einer Art analog zu der eines herkömmlichen Ca
che-Speichers wirksam ist, gepuffert. Die "Verunreinigung"
des Cache-Speichers 16 durch Daten, die nur einmal verwendet
würden, wenn auf sie durch den Cache-Speicher 16 zugegriffen
wurde, wird durch Einschließen eines zweiten Datenweges, der
einen Puffer 18 verwendet, auf den als "Puffer-für-baldiges-
Lesen" Bezug genommen wird, gelindert, nachdem Daten, die
nicht kurz nach ihrer Ankunft in diesem Puffer gelesen wer
den, wahrscheinlich überschrieben werden und daher nicht
verfügbar sind, wenn auf sie nicht kurz nach der Ankunft in
diesem Puffer zugegriffen wird.
In Systemen nach dem Stand der Technik greift die CPU auf
Daten in dem Speicher durch Ausgeben eines Lade-Befehls an
den Cache-Speicher zu. Der Lade-Befehl gibt die Adresse in
dem Speicher an, an der die wiederzugewinnenden Daten ge
speichert sind. Wenn der Cache-Speicher den Lade-Befehl
empfängt, überprüft er die Daten, die bereits in ihm ge
speichert sind, um festzustellen, ob die Daten für diese
Adresse bereits in dem Cache-Speicher sind. Wenn die Daten
vorhanden sind, werden sie sofort an die CPU zurückgegeben.
Wenn die Daten nicht vorhanden sind, wird die CPU für eine
Zeit, die für den Cache ausreichend ist, um die erwünschten
Daten aus dem Speicher zu laden, angehalten.
Die vorliegende Erfindung führt in Wirklichkeit zwei Typen
von Lade-Anweisungen aus. Eine Lade-Anweisung ist in einer
Art analog zu der herkömmlichen Lade-Anweisung, die oben be
schrieben wurde, wirksam. Daten, die als Reaktion auf diese
Lade-Anweisung wiedergewonnen werden sollen, werden durch
den Cache-Speicher 16 verarbeitet. Die zweite Lade-Anweisung
wird für Daten verwendet, die lange Wartezeiten und/oder bei
denen es wahrscheinlich wäre, daß sie nur wenige Male wäh
rend ihrer Anwesenheitszeit in dem Cache-Speicher 16 verwen
det werden, wenn sie durch den Cache-Speicher 16 geladen
worden wären. Dieser zweite Typ der Lade-Anweisung wird
durch den Puffer-für-baldiges-Lesen 18 verarbeitet. D.h.,
die Daten werden durch den Puffer-für-baldiges-Lesen 18 an
die CPU zurückgegeben, wenn eine Lade-Anweisung dieses zwei
ten Types auf dem Bus 20 gesendet wird. Wenn eine Lade-An
weisung des ersten Typs auf dem Bus 20 gesendet wird, werden
die Daten durch den Cache-Speicher 16 zurückgegeben.
Die verschiedenen Lade-Anweisungen werden durch den Compiler
für Daten eingesetzt, bei denen es unwahrscheinlich ist,
mehr als einmal während der typischen Cache-Speicher-Anwe
senheitszeit für dieses System verwendet zu werden. Die Un
terscheidung der verschiedenen Typen von Daten kann mit Be
zug auf ein einfaches Programm leichter verstanden werden.
Angenommen sei ein Programm, das die Einträge in einem
großem Daten-Array summiert. Es wird angenommen, daß das
Daten-Array an zusammenhängenden Speicherorten im Speicher
14 gespeichert ist und daß die Anzahl der Einträge in dem
Daten-Array ein großer Bruchteil der Anzahl der Speicherorte
in dem Cache-Speicher 16 ist. Dieses Programm ist eine ein
fache Schleife, die aus den Anweisungen zum Erhöhen eines
Index-Registers, zum Ausgeben von Lade-Anweisungen an den
Speicher 14 und zum Hinzufügen der Daten, die zurückgegeben
werden, zu einem Akkumulatorregister. Die Anweisungen in der
Schleife sind ebenfalls "Daten", die anfänglich in dem Spei
cher 14 gespeichert werden. Sobald die Schleife beginnt,
wird jedoch auf die Anweisungen über den Cache-Speicher 16
zugegriffen, da die Anweisungen während der Ausführung der
Schleife immer wieder verwendet werden. Im Gegensatz dazu
wird jeder Datenwert in dem Daten-Array genau einmal während
der Schleife ausgeführt und daher wird auf ihn unter Ver
wendung des zweiten Typs der Lade-Anweisung zugegriffen.
Durch Zugreifen auf diese Werte durch den Cache-Speicher 16
wird nichts gewonnen.
Tatsächlich können die Vorteile, die durch den Cache-Spei
cher 16 geschaffen werden, erheblich reduziert werden, wenn
auf den Daten-Array durch den Cache-Speicher zugegriffen
wird. Der Daten-Array wird als großer Bruchteil des gesamten
Cache-Speicherplatzes angenommen; daher würde ein Programm,
das auf den Array durch den Cache-Speicher 16 zugreift, den
Cache-Speicher 16 zwingen, einen großen Bruchteil seiner
vorher gespeicherten Daten zu überschreiben. Einige dieser
überschriebenen Daten können durch den Abschnitt des Pro
gramms, der den Array-Operationen folgt, benötigt werden.
Wenn die CPU diese überschriebenen Daten anfordert, wird der
Cache-Speicher die CPU anhalten, während er diese Daten zu
rücklädt. Daher wird das System beim Rückladen der Daten
Zeit verlieren, ohne jegliche Zeit beim Verarbeiten der
Array-Daten, die den Cache-Speicher veranlaßt haben, die Da
ten zu entladen, gewonnen zu haben.
Die vorliegende Erfindung verhindert diesen Verlust an Effi
zienz durch Verwendung von Lade-Anweisungen der zweiten Art,
um auf die Array-Daten zuzugreifen. Nachdem diese Lade-An
weisungen nicht veranlassen, daß Daten in dem Cache-Speicher
überschrieben werden, wird der Verlust an Effizienz verhin
dert.
Wie oben erwähnt, schließt die Zeitverzögerung, die beim Zu
greifen auf Daten aus dem Speicher 14 angetroffen wird,
normalerweise eine lange Wartezeit ein. Für Daten, die in
dem Cache-Speicher 16 anwesend sind und auf die während
ihrer Anwesenheitszeit mehrmals zugegriffen wird, verlang
samt diese Wartezeit das System nicht wesentlich, nachdem
sich die Wartezeit über mehrere Anwendungen der Daten amor
tisiert. Für Daten, auf die jedoch nur einmal zugegriffen
wird, d. h. Daten, die durch den Puffer-für-baldiges-Lesen 18
bereitgestellt werden, ist diese Wartezeit jedoch ein Haupt
problem.
Die Auswirkungen dieser Wartezeit können im Prinzip ausge
schaltet werden, wenn eine Vorlade-Anweisung vor der tat
sächlichen Lade-Anweisung ausgegeben wird. Eine Vorlade-Anweisung
informiert den Puffer-für-baldiges-Lesen, daß eine
Lade-Anweisung für die Daten an der Adresse, die in der
Vorlade-Anweisung angezeigt ist, in Kürze durch die CPU
ausgegeben werden wird. Die Vorlade-Anweisung führt nicht zu
der Zurückgabe jeglicher Daten an die CPU. Wie im folgenden
genauer beschrieben werden wird, ist in dem bevorzugten
Ausführungsbeispiel der vorliegenden Erfindung der zweite
Typ der Lade-Anweisung unter Verwendung einer Vorlade-An
wendung ausgeführt. Wenn eine Vorlade-Anweisung durch den
Puffer-für-baldiges-Lesen 18 auf dem Bus 20 angetroffen
wird, initialisiert der Puffer-für-baldiges-Lesen 18 einen
Lade-Prozeß, um die Daten zu erhalten, die durch die Adresse
in der Vorlade-Anweisung angegeben sind. Als erstes fragt
der Puffer-für-baldiges-Lesen den Cache-Speicher 16 ab, um
festzustellen, ob diese Daten in diesem gespeichert sind.
Wenn sie es sind, liest der Puffer-für-baldiges-Lesen 18 die
Daten aus dem Cache-Speicher 16 in ein Speicherregister in
dem Puffer-für-baldiges-Lesen 18. Wenn die Daten nicht in
dem Cache-Speicher 16 gespeichert sind, initialisiert der
Puffer-für-baldiges-Lesen 18 eine Ladung aus dem Speicher
14. Die Wartezeit wird in Anweisungszyklen des Speichers 14
durch Tw bezeichnet. Wenn die Vorlade-Anweisung mindestens
Tw Zyklen vor der Lade-Anweisung, die die Daten tatsächlich
an die CPU 12 überträgt, ausgegeben wird, werden die Effekte
der Wartezeit im wesentlichen ausgeschaltet werden.
Um eine Vorlade-Anweisung effektiv zu verwenden, muß der
Puffer-für-baldiges-Lesen 18 sicher sein, daß die Daten, die
in dem Puffer-für-baldiges-Lesen 18 gespeichert sind, zu dem
Zeitpunkt, zu dem die entsprechende Lade-Anweisung auf dem
Bus 20 erfaßt wird, die korrekten Daten für diese Adresse
sind. Wie oben erwähnt, muß die Vorlade-Anweisung mindestens
Tw Anweisungen vor der entsprechenden Lade-Anweisung
ausgegeben sein, um die Auswirkung der Wartezeit komplett
auszuschalten. Wenn die Anweisungen zwischen der Vorlade-
Anweisung und der entsprechenden Lade-Anweisung eine oder
mehrere Speicher-Anweisungen einschließen, die an diese
Adresse gerichtet sind, sind die Daten, die als Reaktion auf
die Vorlade-Anweisung aus dem Cache-Speicher 16 oder aus dem
Speicher 14 geholt wurden, nicht länger gültig.
In dem bevorzugten Ausführungsbeispiel der vorliegenden Er
findung behält der Speicher-für-baldiges-Lesen 18 eine Kopie
der Daten für diese Adresse. Wenn der Speicher-für-baldiges-
Lesen 18 eine Vorlade-Anweisung für eine Adresse A empfängt,
fragt er als erstes den Cache-Speicher 16 ab, um
festzustellen, ob die Daten für die Adresse A in dem Cache-
Speicher 16 sind. Wenn diese Daten in dem Cache-Speicher 16
sind, liest der Speicher-für-baldiges-Lesen 18 die Daten aus
dem Cache-Speicher 16 in ein Register in dem Puffer für bal
diges Lesen 18 ein. Wenn die Daten in dem Cache-Speicher 16
nicht vorhanden sind, wird eine Lade-Anweisung an den Spei
cher 14 ausgegeben. Diese Lade-Anweisung führt dazu, daß die
Daten, die derzeit für die Adresse A in dem Speicher 14 ge
speichert sind, Tw Anweisungszyklen später an den Speicher
für-baldiges-Lesen geliefert werden. In der Zwischenzeit
kann eine Speicher-Anweisung, die an die Adresse A gerichtet
ist, ausgegeben worden sein. Daher überwacht der Speicher
für-baldiges-Lesen 18 den Bus 20 auf Speicher-Anweisungen
für Adressen, für die er eine Vorlade-Anweisung erhalten
hat. Wenn eine solche Anweisung erfaßt wird, wird der in der
Speicher-Anweisung angegebene Wert in dem Puffer-für
baldiges-Lesen 18 gespeichert und eine Flag wird gesetzt, um
anzuzeigen, daß jeglicher Wert, der nachfolgend von dem
Speicher 14 oder von dem Cache-Speicher 16 für diese Adresse
empfangen wird, zu ignorieren ist. Daher wird der Speicher
für-baldiges-Lesen 18 immer die aktuellsten Daten für diese
Adresse zurückgeben und jegliche Probleme, die Speicher-An
weisungen zwischen der Vorlade- und Lade-Anweisung zuge
ordnet sind, werden verhindert.
Während die obige Beschreibung angenommen hat, daß die Vor
lade-Anweisung mindestens Tw Anweisungen vor der entspre
chenden Lade-Anweisung ausgegeben wird, sollte darauf hinge
wiesen werden, daß die vorliegende Erfindung immer noch
ordnungsgemäß wirksam sein wird, wenn das Zeitintervall
zwischen der Vorlade- und der Lade-Anweisung kleiner als
dieser Wert ist. In diesem Fall wird nur ein Teil der
Wartezeit ausgeschaltet werden.
Während die obige Beschreibung zwei verschiedene Typen von
Lade-Anweisungen verwendet hat, eine an den Cache-Speicher
16 und eine an den Puffer-für-baldiges-Lesen 18 gerichtete,
ist es aus der folgenden Beschreibung offensichtlich, daß
nur ein Typ der Lade-Anweisung benötigt wird, wenn eine
Vorlade-Anweisung verwendet wird, um zwei Typen von Lade
operationen zu unterscheiden. Wenn eine normale Lade-An
weisung nach einer Vorlade-Anweisung empfangen wird, unter
suchen sowohl der Puffer-für-baldiges-Lesen 18 als auch der
Cache-Speicher 16 die Adresse in der Lade-Anweisung. Wenn
der Puffer-für-baldiges-Lesen 18 die Daten für diese Adresse
hat, gibt er diese zurück und erzeugt keinen Eintrag im
Cache-Speicher 16. D.h., die Ladung wird als Lade-Anweisung
des zweiten Typs behandelt. Wenn die Daten nicht in dem
Puffer-für-baldiges-Lesen 18 sind, werden die Daten über den
Cache-Speicher 16 abgegeben. In diesem Fall werden sie be
handelt, als ob sie über eine Lade-Anweisung des ersten Typs
geholt wurden.
Ein genaueres Blockdiagramm des bevorzugten Ausführungs
beispiels eines Puffers-für-baldiges-Lesen 100 gemäß der
vorliegenden Erfindung ist in Fig. 2 gezeigt. Der Puffer
für-baldiges-Lesen 100 schließt eine Registerdatei 110 ein,
die eine Mehrzahl von Registersätzen 108 einschließt. Jeder
Registersatz 108 schließt Platz zum Speichern der Informa
tionen ein, die benötigt werden, um eine Vorladung zu be
dienen. Dieser Speicherplatz schließt ein Register 103 zum
Speichern der Adresse, die in der Vorlade-Anweisung an
gegeben ist, ein Register 104 zum Speichern der Daten, die
an die CPU zurückgegeben werden, wenn die entsprechende
Lade-Anweisung empfangen wird, und eine Flag 105 zum
Anzeigen, daß die Daten, die im Register 104 gespeichert
sind, aktueller sind, als die Daten, die derzeit im Speicher
80 sind, ein. Die Operationen des Puffers-für-baldiges-Lesen
110 werden durch eine Steuerung 112 gesteuert, die den Bus
106 auf Vorlade-Anweisungen, auf Lade-Anweisungen, die an
den Puffer-für-baldiges-Lesen 110 gerichtet sind, und auf
Speicher-Anweisungen überwacht. Die Steuerung 112 tauscht
ebenfalls mit dem Cache-Speicher 90 und dem Speicher 80
Daten aus, was die Funktionalität, die oben mit Bezug auf
den Cache-Speicher 16 und den Speicher 18 beschrieben wurde,
schafft.
Wenn die Steuerung 112 eine Vorlade-Anweisung auf dem Bus
106 erfaßt, veranlaßt sie, daß die Adresse, die der Anwei
sung zugeordnet ist, in dem nächsten freien Registersatz 108
gespeichert wird. Eine Flag 116 kann verwendet werden, um
die Registersätze anzuzeigen, die überschrieben werden kön
nen. Die Flag 105, die diesem Registersatz zugeordnet ist,
wird dann auf einen ersten Wert gesetzt. Die Steuerung 112
fragt dann den Cache-Speicher 90 über einen Bus 107 ab, um
festzustellen, ob die Daten für diese Adresse derzeit in dem
Cache-Speicher 90 vorhanden sind. Wenn die Daten in dem
Cache-Speicher 90 vorhanden sind, liest die Steuerung 112
die Daten aus dem Cache-Speicher 90 in das entsprechende
Datenregister in der Registerdatei 110. Wenn diese Daten im
Cache-Speicher 90 nicht gefunden werden, fragt die Steuerung
112 die Daten aus dem Speicher 80 ab. Wenn diese Daten an
kommen, überprüft die Steuerung 112 die Flag 105 in dem
Registersatz, um festzustellen, ob die Flag auf einen zwei
ten Wert zurückgesetzt wurde. Wenn die Flag nicht auf einen
zweiten Wert zurückgesetzt wurde, veranlaßt die Steuerung
12, daß die zurückgegebenen Daten in dem Datenregister 104
in diesem Registersatz gespeichert werden.
Wenn die Steuerung 112 eine Lade-Anweisung erfaßt, ver
gleicht sie die Adresse in der Lade-Anweisung mit den Adres
sen, die in jedem der aktiven Registersätze 108 gespeichert
sind. Der Vergleich wird bevorzugterweise mit der Hilfe
eines Vergleichers 102, der jedem Registersatz zugeordnet
ist, parallel ausgeführt. Wenn die Steuerung 112 keine über
einstimmende Adresse in einem der aktiven Registersätze 108
erfaßt, dann muß die Lade-Anweisung an den Cache-Speicher 90
geleitet werden und die Steuerung 112 ignoriert diese Lade-
Anweisung. Wenn die Steuerung 112 eine übereinstimmende
Adresse in einem der aktiven Registersätze 108 erfaßt, dann
muß diese Lade-Anweisung an den Puffer-für-baldiges-Lesen
110 und nicht an den Cache-Speicher 90 gerichtet werden. In
diesem Fall signalisiert die Steuerung 112 dem Cache-Spei
cher 90, diese Lade-Anweisung zu ignorieren. Dieses Signal
kann auf dem Bus 107 gesendet werden. Wenn die Lade-An
weisung an den Puffer-für-baldiges-Lesen 110 gerichtet ist
und die Daten wurden in das entsprechende Datenregister 104
geladen, gibt die Steuerung 112 diese Daten an die CPU
zurück. Wenn die Daten noch nicht vorhanden sind, veranlaßt
die Steuerung 112, die CPU anzuhalten, bis die Daten aus dem
Speicher 80 oder dem Cache-Speicher 16 empfangen werden.
Jedesmal, wenn eine Vorlade-Anweisung durch den Puffer-für
baldiges-Lesen 110 empfangen wird, muß ein Registersatz 108
zugeordnet werden, um die in dem Adreßabschnitt der Anwei
sung angegebenen Daten zu halten. Nachdem es eine endliche
Anzahl von Registern gibt, muß der Puffer-für-baldiges-Lesen
110 den Inhalt eines der Registersätze ersetzen. Eine Anzahl
von verschiedenen Ersetzungstrategien können ausgeführt wer
den. Sobald die Daten an die CPU geliefert wurden, kann der
Puffer-für-baldiges-Lesen 110 diesen Registersatz z. B. durch
Setzen der Flag 116 als frei seiend markieren.
Eine Anzahl von alternativen Ersetzungsstrategien sind für
Fachleute offensichtlich. Jegliche der Ersetzungsstrategien,
die für herkömmliche Cache-Speicheroperationen entwickelt
wurden, können im Prinzip für einen Puffer zum baldigen
Lesen gemäß der vorliegenden Erfindung verwendet werden. Der
älteste Eintrag in der Registerdatei 100 könnte z. B. zuge
ordnet werden, um der neuen Vorlade-Anweisung zu dienen. Das
Alter eines Eintrags in eine Registerdatei 100 kann durch
einen Zähler 126 festgestellt werden, der jedem Registersatz
zugeordnet ist. Der Zähler wird bei jedem Anweisungszyklus
erhöht und jedesmal zurückgesetzt, wenn der Registersatz
einer neuen Vorlade-Anweisung zugeordnet wird.
Während die oben beschriebenen Ausführungsbeispiele der vor
liegenden Erfindung die Daten in einem Puffer-für-baldiges-
Lesen speichern, ist es für Fachleute offensichtlich, daß
andere Speicheranordnungen möglich sind. Z.B. können die Da
tenabschnitte eines Eintrags (Register 104) in einem CPU-
Register gespeichert werden. In diesem Fall würde das Re
gister 104 durch einen kleineren Eintrag ersetzt, der die
Identität des CPU-Registers, in dem die Daten gespeichert
sind, anzeigt.
Der Puffer-für-baldiges-Lesen 100 überwacht den Bus 106
ebenfalls auf Speicher-Anweisungen. Wenn eine Speicher-An
weisung erfaßt wird, vergleicht der Puffer-für-baldiges-Le
sen 100 die Adresse in der Speicher-Anweisung mit jeder der
in den Registern 103 gespeicherten Adressen. Wenn eine über
einstimmende Adresse gefunden wird, werden die Daten, die in
der Speicher-Anweisung für diese Adresse angegeben sind, in
dem entsprechenden Datenregister 104 gespeichert. Die ent
sprechende Flag 105 wird dann auf einen zweiten Wert ge
setzt, um zu garantieren, daß das Datenregister nicht durch
Daten, die aus dem Speicher 80 zurückkommen, überschrieben
wird. In dem bevorzugten Ausführungsbeispiel der vorliegen
den Erfindung wird die Speicher-Anweisung ebenfalls durch
den Cache-Speicher 90 in derselben Art ausgeführt, in der
der Cache-Speicher 90 andere Speicher-Anweisungen ver
arbeitet. Dies garantiert, daß die Daten, die in der Spei
cher-Anweisung angegeben sind, schließlich in dem Speicher
80 an der angegebenen Adresse gespeichert werden.
Die obige Beschreibung nimmt an, daß das Wort, das in der
Speicher-Anweisung angegeben ist, exakt mit der Wortlänge
der Dateneinträge, die in dem Puffer gespeichert sind, über
einstimmt. Dies muß nicht immer der Fall sein. In einigen
Systemen z. B., kann der Cache-Speicher Wörter speichern, die
einige Bytes lang sind; während einer Speicher-Anweisung
einen einzelnen Byte einschließen kann. In solchen Systemen
kann eine getrennte Flag, wie z. B. Flag 105, für jedes Byte
in dem Datenregister 104 geschaffen werden. Jede solche Flag
würde anzeigen, daß das entsprechende Byte durch eine Spei
cher-Anweisung geliefert wurde, und daher ist der Wert für
dieses Byte, das als Antwort auf die Vorlade-Anweisung
zurückgegeben wird, zu ignorieren.
Angenommen der Fall, daß die Adresse in der Speicher-Anwei
sung mit keinem der Einträge in dem Puffer-für-baldiges-Le
sen 100 übereinstimmt. Es gibt zwei mögliche Reaktionen,
entweder wird ein neuer Eintrag in dem Puffer-für-baldiges-
Lesen 100 erzeugt oder er wird nicht erzeugt. Das System
wird in jedem Fall korrekt arbeiten. Wenn ein neuer Eintrag
erzeugt wird, hat der neue Eintrag denselben Effekt wie eine
Vorladung für diese Adresse. Daher wird eine nachfolgende
Ladung von der reduzierten Wartezeit profitieren.
Um ein gutes Verhalten zu erreichen, kann die minimale An
zahl von Registern in dem Puffer-für-baldiges-Lesen 100
durch die Wartezeit der Lade-Anweisung festgestellt werden.
Wenn die Vorlade-Anweisungen immer genau Tw Anweisungen vor
der entsprechenden Lade-Anweisung in den Code eingefügt wer
den, dann wird jede Vorlade-Anweisung veranlassen, daß ein
Register in dem Puffer-für-baldiges-Lesen 100 für Tw Anwei
sungen besetzt ist. Daher erfordert der Puffer-für-baldiges-
Lesen 100 ein Minimum von Tw Registersätzen 108. Wenn die
Plazierung der Vorlade-Anweisungen nicht so genau ist, wer
den mehr Registersätze benötigt. Sogar wenn zweimal die
minimale Anzahl von Registersätzen verwendet wird, wird die
Größe der Registerdatei 110 jedoch ein sehr kleiner Bruch
teil der Größe des Cache-Speichers 90 sein, die typischer
weise tausende von Speicherworten ist.
Die Verwendung des Puffers-für-baldiges-Lesen 100, um eine
Verunreinigung des Cache-Speichers 90 durch Daten, die aus
dem Speicher 80 an die CPU fließen, zu verhindern, reduziert
den Betrag an Speicher, der durch den Cache-Speicher 90 be
nötigt wird, bedeutend. Daten, die von der CPU zum Speicher
80 über Speicher-Anweisungen fließen, können den Cache-Spei
cher 90 jedoch ebenfalls mit Daten verunreinigen, die wäh
rend ihrer Anwesenheitszeit in dem Cache-Speicher 90 nicht
wiederverwendet werden. Angenommen ein einfaches Programm,
in dem jedes Element eines Arrays mit einer Zahl multipli
ziert wird und dann im Speicher 80 gespeichert wird. Die
Verunreinigung des Cache-Speichers 90 durch den Fluß von
Array-Elementen von dem Speicher 80 an die CPU und die War
tezeitverluste, die diesen Datenholoperationen eigen sind,
werden durch einen Puffer-für-baldiges-Lesen 100 gelindert.
Wenn die neuen Array-Elemente über herkömmliche Speicher-An
weisungen an den Speicher zurückgegeben werden, werden die
Werte jedoch anfänglich im Cache-Speicher 90 gespeichert.
Diese ankommenden Daten werden andere Daten im Cache-Spei
cher 90 ersetzen. Nachdem es nicht wahrscheinlich ist, daß
die ankommenden Daten während ihrer Anwesenheit im Cache-
Speicher 90 wiederverwendet werden, während einige der er
setzten Daten wiederverwendet worden wären, resultiert die
ses Speicherschema in einem Verlust an Cache-Speichereffi
zienz.
In dem bevorzugten Ausführungsbeispiel der vorliegenden Er
findung wird dieser Verlust an Effizienz durch Schaffen
eines zweiten Typs einer Speicher-Anweisung gelindert, die
als Cache-Speicher-Bypaß-Anweisung Bezug bezeichnet wird.
Wenn Daten gespeichert werden sollen, ohne durch den Cache-
Speicher 90 zu gehen, werden diese Daten über eine Cache-
Speicher-Bypaß-Anweisung an den Speicher geschickt. Aus
führungsbeispiele, in denen diese Anwendung auf Puffer zum
baldigen Lesen 100, auf Cacher-Speicher 90 oder direkt auf
Speicher 80 angewendet werden können, sind für Fachleute
offensichtlich. Das wichtige Merkmal dieser Anweisung ist
es, daß sie dazu führt, daß Daten im Speicher 80 gespeichert
werden, ohne unterwegs Platz im Cache-Speicher 90 zu ver
wenden. In jeglichem dieser Ausführungsbeispiele muß der
Puffer-für-baldiges-Lesen 100 jedoch die Speicher-Bypass-An
weisung als eine "Speicher"-Anweisung erkennen und jeglichen
Wert in seiner Registerdatei für die in der Anweisung an
gegebene Adresse aktualisieren.
Wenn eine Vorlade-Anweisung empfangen wird und keine ent
sprechende Lade-Anweisung nachfolgend empfangen wird, kann
der Registersatz 108, der zum Speichern der Daten verwendet
wird, auf unbestimmte Zeit besetzt bleiben. Es gibt jedoch
Situationen, in denen es vorteilhaft wäre, der CPU zu erlau
ben, Vorlade-Anweisungen zu erzeugen, die nicht notwendiger
weise von Lade-Anweisungen gefolgt werden. Es kann z. B.
vorteilhaft sein, Vorlade-Anweisungen für Daten auf beiden
Zweigen einer "if-then-else"-Anweisung auszugeben, bevor die
Argumente, die den tatsächlich eingeschlagenen Zweig festle
gen, berechnet sind. In diesem Fall wird ein Satz von Vor
lade-Anweisungen nicht von Lade-Anweisungen gefolgt. Um
Probleme mit einer Besetzung eines Registersatzes 108 auf
unbestimmte Zeit zu verhindern, wenn die Lade-Anweisung, die
der Vorlade-Anweisung, die den Registersatz installiert,
entspricht, nicht empfangen wird, schließt jeder Register
satz einen Zähler 126 ein, der verwendet wird, um die abge
laufene Zeit seitdem die Vorladung empfangen wurde, in An
weisungszyklen zu speichern. Dieser Zählstand wird durch die
Steuerung 112 auf einen vorher festgelegten Zählstand ge
setzt, wenn eine Vorladung empfangen wird und gespeichert.
Der Zählstand wird dann bei jedem Anweisungszyklus aktuali
siert. Wenn das Alter der Daten eine vorher festgelegte An
zahl von Anweisungszyklen übersteigt, steht es der Steuerung
112 frei, die Daten in diesem Registersatz zu überschreiben.
Während die vorliegende Erfindung als Puffersystem mit einem
Cache-Speicher und einem Puffer zum baldigen Lesen beschrie
ben wurde, kann die vorliegende Erfindung in einem einzelnen
Cache-Speicher ausgeführt werden, vorausgesetzt der Cache-
Speicher kann zwei verschiedene Aktualisierungsalgorithmen
ausführen und auf zwei verschiedene "Lade"-Anweisungen rea
gieren. Beim normalen Cache-Speicherbetrieb werden die Daten
ersetzt, wenn neue Daten in den Cache-Speicher als Reaktion
auf Lade- oder Speicher-Anweisungen eintreten. Bei einem
herkömmlichen Cache-Speicher hängen die angegebenen Daten
einträge, die in dem Cache-Speicher überschrieben werden,
von der Länge der Zeit ab, die der Dateneintrag in dem
Cache-Speicher anwesend war, ohne durch eine Lade- oder
Speicher-Anweisung aufgerufen worden zu sein. Bei her
kömmlichen Cache-Speichern werden die Daten auf der Grund
lage des Alters der Daten überschrieben, die älteren Daten
werden zuerst ersetzt.
Der Puffer-für-baldiges-Lesen, der oben beschrieben wurde,
verhält sich in einer Art arg zu einem Cache-Speicher, in
dem die Daten ersetzt werden, wenn sie verwendet wurden oder
wenn der Dateneintrag in der Registerdatei älter als eine
vorher festgelegte Anzahl von Anweisungszyklen ist. Ein
Registersatz 108 kann frühestens überschrieben werden, wenn
die Daten, die in diesem gespeichert sind, als Reaktion auf
eine Lade-Anweisung abgeliefert sind. In diesem Sinn führt
ein Puffer-für-baldiges-Lesen eine Ersetzungsstrategie aus,
in der die neuesten Daten als erste ersetzt werden. Im all
gemeinen hängt der Datenersetzungsalgorithmus nicht von dem
Alter der Daten ab. Der Ersetzungsalgorithmus hängt jedoch
von dem Alter der Vorlade-Anweisung ab. Wenn der Datenein
trag älter als eine vorher festgelegte Anzahl von Anweisun
gen ist, wie durch den Zähler 126, gezeigt in Fig. 3, gemes
sen, können die Daten ersetzt werden.
Diese zwei Datenersetzungsstrategien können in einem einzel
nen Cache-Speicher ausgeführt werden, der dem oben beschrie
benen Puffer-für-baldiges-Lesen 100 strukturell ähnlich ist.
Ein Blockdiagramm für einen kombinierten Cache-Speicher 200
ist in Fig. 3 gezeigt. Der Cache-Speicher 200 verwaltet die
Datenspeicherung und -wiedergewinnung aus dem Speicher 210
für die CPU 221. Der Cache-Speicher 200 schließt eine Steue
rung 201 und eine Registerdatei 209 mit einer Mehrzahl von
Registersätzen 231 ein. Die Steuerung 201 empfängt Spei
cher-, Vorlade- und Lade-Anweisungen von der CPU 221. Beim
Empfang von Lade- oder Vorlade-Anweisungen versucht die
Steuerung 201 die Anweisungen mit Daten, die in der Re
gisterdatei 209 gespeichert sind, zu bedienen. Wenn die Da
ten nicht in der Registerdatei 209 vorhanden sind, veranlaßt
die Steuerung 201, daß die Daten aus dem Speicher in die
Registerdatei 209 geladen werden.
Beim Empfangen einer Speicher-Anweisung, speichert die
Steuerung 201 die Daten in der Registerdatei 209, wenn die
Anweisung eine herkömmliche Speicherung war. Wenn die Spei
cher-Anweisung eine Bypass-Speicher-Anweisung war, veranlaßt
die Steuerung 201, daß die Daten direkt in dem Speicher 210
gespeichert werden. In beiden Fällen überprüft die Steuerung
201 die Registersätze 231 in der Registerdatei 209, um fest
zustellen, ob die neuesten Kopien der Daten hierin gespei
chert sind. Wenn die Steuerung 201 die Daten in einem Re
gistersatz 231 findet, aktualisiert sie die Daten und setzt
die Flag 205 zurück, um anzuzeigen, daß die Kopie der Daten
im Register 204 die Kopie, die im Speicher 210 für diese
Adresse gespeichert ist, ablöst. Die Steuerung 201 kann die
neuen Daten ebenfalls direkt in den Speicher 210 schreiben,
abhängig von der Ersetzungsstrategie, die in dem Cache-
Speicher 200 ausgeführt ist. Die Steuerung 201 kann eben
falls verwendet werden, um den zweiten Typ der Speicheran
weisung, der oben beschrieben wurde, auszuführen, d. h. eine
Speicher-Anweisung, die den Cache-Speicher 200 umgeht, und
die Daten direkt in dem Speicher 210 speichert.
Jeder Registersatz 231 in der Registerdatei 209 schließt
einen Vergleicher 202 zum Vergleichen der Inhalte eines
Adreßregisters 203 mit einer Adresse, die der Steuerung 201
präsentiert wird, ein. Die derzeitigen Daten für diese
Adresse werden in einem Datenregister 204 gespeichert. Jeder
Registersatz schließt ebenfalls eine Flag 205 ein, um anzu
zeigen, ob sich die in dem Registersatz gespeicherten Daten
von den an der entsprechenden Adresse im Speicher 210 ge
speicherten unterscheiden. Wenn diese Flag zu dem Zeitpunkt
gesetzt ist, an dem der Registersatz mit neuen Daten ersetzt
werden soll, veranlaßt die Steuerung 201, daß der Inhalt des
Datenregisters 204 an die Adresse, die im Adreßregister 203
angegeben ist, im Speicher 210 geschrieben wird. Jeder Re
gistersatz 231 schließt ebenfalls einen Zähler 206 zum Mes
sen des Alters der in diesem gespeicherten Daten und eine
zweite Flag 207 zum Bestimmen der Art der Ersetzungsstra
tegie, die mit den in dem Registersatz gespeicherten Daten
verwendet wird, ein. Die Flag 207 wird auf einen ersten Wert
gesetzt, wenn der Registersatz als Reaktion auf eine Vorla
de-Anweisung eingestellt wurde und auf einen zweiten Wert,
wenn die Daten als Reaktion auf eine herkömmliche Lade- oder
Speicher-Anweisung gespeichert wurden.
Der Zähler 206 wird zum Messen des Alters der Daten verwen
det. Die Bedeutung des "Alters" der Daten wird durch den Zu
stand der Flag 207 festgelegt. Wenn die Flag 207 anzeigt,
daß der Registersatz verwendet wird, um Daten zu speichern,
die als Reaktion auf eine Vorlade-Anweisung wiedergewonnen
wurden, zeigt das Alter die Anzahl der Anweisungen an, die
seitdem die Vorlade-Anweisung empfangen wurde, verstrichen
sind. Wenn eine Vorlade-Anweisung empfangen wird, wird ein
Registersatz für die Daten bereitgestellt. Dieser Register
satz kann durch Rücksetzen des Zählers 206, der dem Regi
stersatz zugeordnet ist, und durch Ändern des Inhalts der
Flag 207 zu einem Registersatz für baldiges Lesen gemacht
werden. Wenn die Flag 207 anzeigt, daß der Registersatz für
einen herkömmlichen Cache-Betrieb verwendet wird, mißt der
Zähler 206 die Anzahl der Anweisungszyklen, seit der letzten
Verwendung der Daten.
Bei jedem Anweisungszyklus werden alle Zähler unabhängig von
der Art von Informationen, die in dem entsprechenden Regi
stersatz gespeichert sind, aktualisiert. Wenn die Steuerung
201 Daten ersetzen muß, tut sie dies durch Ersetzen der Da
ten, die den höchsten Zählerwert haben. Wenn die Daten als
Antwort auf eine Lade-Anweisung, die einer Vorlade-Anweisung
entspricht, gesendet werden, oder der Dateneintrag das
kritische Alter überschreitet, d. h. keine Ladung wurde ent
sprechend der Vorladung empfangen, kann der Zähler auf
seinen maximalen Wert gesetzt werden, wodurch garantiert
wird, daß dieser Registersatz überschrieben werden wird, an
statt eines Registersatzes, der als herkömmlicher Cache-
Speicher-Registersatz arbeitet.
Die oben beschriebenen Ausführungsbeispiele der vorliegenden
Erfindung schließen einen Registersatz in einem Puffer-für
baldiges-Lesen ein, der überschrieben werden soll, sobald
das dahin gespeicherte Datenwort an die CPU geliefert wurde.
Es ist für Fachleute offensichtlich daß andere Ersetzungs
strategien verwendet werden können. Tatsächlich kann jeg
liche Ersetzungsstrategie, die bei einem herkömmlichen
Cache-Speicher verwendet werden kann, mit der vorliegenden
Erfindung verwendet werden. Z.B. kann das Überschreiben
aktiviert werden, nachdem die Daten eine vorher festgelegte
Anzahl von Malen geliefert wurden. Solche Ausführungsbei
spiele würden einen zusätzlichen Zähler erfordern, um die
Anzahl der Male festzuhalten, bei denen das Datenwort ge
liefert wurde. Bei diesem Ausführungsbeispiel würde die
Vorlade-Anweisung einen anfänglichen Zählstand schaffen, der
jedesmal wenn die Daten geliefert wurden, erniedrigt würde.
Wenn der Zählstand Null erreicht, würde das Überschreiben
des Registersatzes aktiviert.
Claims (7)
1. Verfahren zum Liefern von Daten von einem Hauptspeicher
(14; 80) über ein Speicherpuffersystem (10; 100) beste
hend aus einem Cache-Speicher (16; 90), der mit dem Da
tenverarbeitungssystem (12) und dem Hauptspeicher (14;
80) verbunden ist, einer Registerdatei (18; 110) zum
Speichern zumindest eines Dateneintrags (108), wobei
jeder Dateneintrag eine Adresse (103; 203) und ein Da
tenfeld (104; 204) aufweist, und einer Steuereinrichtung
(112), die mit dem Datenverarbeitungssystem (12), dem
Hauptspeicher (14; 80) und der Registerdatei (18; 110)
verbunden ist, an ein Datenverarbeitungssystem (12) als
Reaktion auf einen ersten Lade-Anweisungstyp oder einen
zweiten Lade-Anweisungstyp, die das Speicherpuffersystem
(10; 100) von dem Datenverarbeitungssystem (12) empfängt,
mit folgenden Verfahrensschritten im Falle einer Lade- Anweisung vom ersten Anweisungstyp:
mit folgenden Verfahrensschritten im Falle einer Lade- Anweisung vom ersten Anweisungstyp:
- a1) Durchsuchen der Registerdatei (18; 110) und des Cache-Speichers (16; 90) nach Daten, deren Adresse mit der Adresse des ersten Anweisungstyps überein stimmt;
- b1) falls bei dem Schritt a1) solche Daten gefunden wer den, Übertragen der gefundenen Daten von der Regi sterdatei (18; 110) oder von dem Cache-Speicher (16; 90) zu dem Datenverarbeitungssystem (12);
- c1) falls bei dem Schritt a1) keine solchen Daten gefun den werden, Auslesen von Daten, deren Adresse mit der Adresse des ersten Anweisungstyps übereinstimmt, aus dem Hauptspeicher (14; 80) und Übertragen der selben durch den Cache-Speicher (16; 90) zu dem Da tenverarbeitungssystem (12);
und mit folgenden Verfahrensschritten im Falle einer La
de-Anweisung vom zweiten Anweisungstyp:
- a2) Durchsuchen des Cache-Speichers (16; 90) nach Daten, deren Adresse mit der Adresse des zweiten Anwei sungstyp übereinstimmt;
- b2) falls beim Schritt a2) solche Daten gefunden werden, Laden derselben in die Registerdatei (18; 110);
- c2) falls beim Schritt a2) solche Daten nicht gefunden werden, Laden von Daten deren Adresse mit der Adres se des zweiten Anweisungstyps übereinstimmt, von dem Hauptspeicher (14; 80) in die Registerdatei (18; 110), wobei in dem Cache-Speicher (16; 90) kein Ein trag erzeugt wird.
2. Verfahren nach Anspruch 1, bei dem die Lade-Anweisung des
ersten Anweisungstyps eine übliche Lade-Anweisung und die
Lade-Anweisung des zweiten Anweisungstyps eine Vorladean
weisung ist.
3. Verfahren nach Anspruch 1 oder 2, bei dem die Daten in
einen Speicherort (108; 231) der Registerdatei (18; 110)
geladen werden, der eine erste Flag (116; 206) aufweist,
die anzeigt, daß der Speicherort überschrieben werden
kann.
4. Verfahren nach Anspruch 2, bei dem im Fall einer Ladean
weisung des zweiten Typs vor dem Schritt a2) die Adres
se, die der Lade-Anweisung zugeordnet ist, in einen Spei
cherort (108; 231) der Registerdatei geladen wird, der
eine erste Flag (116; 206) aufweist, die anzeigt, daß
der Speicherort (108; 231) überschrieben werden kann,
und daß eine zweite Flag (105; 205), die dem Speicherort
zugeordnet ist auf einen ersten Zustand, der anzeigt,
daß der Speicherort (108; 231) überschrieben werden
darf, gesetzt wird.
5. Verfahren nach Anspruch 4, das ferner die Schritte des
Aktualisierens der Daten eines Speicherorts (108; 231)
in der Registerdatei aufweist, wenn die Adresse des
Speicherorts (108; 231) mit der Adresse einer Speicher
anweisung, die die Steuereinrichtung (112) von dem Da
tenverarbeitungssystem (12) empfängt, übereinstimmt,
und, wenn der Speicherort (108; 231) aktualisiert wird,
des Setzens der zweiten Flag (105; 205), die dem Spei
cherort (108; 231) zugeordnet ist, auf einen zweiten Zu
stand, der anzeigt, daß der Speicherort (108; 231) nicht
überschrieben werden darf.
6. Verfahren nach Anspruch 3 oder 5, bei dem die erste Flag
(116; 206), die einem Speicherort (108; 231) zugeordnet
ist, nach einer festgelegten abgelaufenen Zeit seit dem
Laden der Daten in diesen Speicherort (108; 231) auf
einen Zustand gesetzt wird, der anzeigt, daß der Spei
cherort (108; 231) überschrieben werden darf.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/945,561 US5404484A (en) | 1992-09-16 | 1992-09-16 | Cache system for reducing memory latency times |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4330751A1 DE4330751A1 (de) | 1994-03-17 |
DE4330751C2 true DE4330751C2 (de) | 1998-01-29 |
Family
ID=25483282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4330751A Expired - Fee Related DE4330751C2 (de) | 1992-09-16 | 1993-09-10 | Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem zu einem Datenverarbeitungssystem |
Country Status (3)
Country | Link |
---|---|
US (1) | US5404484A (de) |
DE (1) | DE4330751C2 (de) |
GB (1) | GB2270781B (de) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7751269B2 (en) | 2006-09-28 | 2010-07-06 | Infineon Technologies Ag | Coupling device for transmitting data |
DE102005029428B4 (de) * | 2004-07-23 | 2013-08-08 | Hewlett-Packard Development Co., L.P. | System und Verfahren zum Verwalten eines Cachezugriffs in einem verteilten System |
DE102006045903B4 (de) * | 2006-09-28 | 2016-06-02 | Intel Deutschland Gmbh | Prozessoranordnung mit einer Kopplungsvorrichtung zum Koppeln eines Speichers mit einem Prozessor, Datenverarbeitungsanordnung und Verfahren zum Übertragen von Daten |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5848432A (en) | 1993-08-05 | 1998-12-08 | Hitachi, Ltd. | Data processor with variable types of cache memories |
US5555392A (en) * | 1993-10-01 | 1996-09-10 | Intel Corporation | Method and apparatus for a line based non-blocking data cache |
JPH0876930A (ja) * | 1994-09-05 | 1996-03-22 | Mitsubishi Denki Semiconductor Software Kk | Ad変換装置及びそれを内蔵したデータ処理装置 |
US5745729A (en) * | 1995-02-16 | 1998-04-28 | Sun Microsystems, Inc. | Methods and apparatuses for servicing load instructions |
US6314561B1 (en) * | 1995-04-12 | 2001-11-06 | International Business Machines Corporation | Intelligent cache management mechanism |
US5694577A (en) * | 1995-06-06 | 1997-12-02 | Matsushita Electric Industrial Co., Ltd. | Memory conflict buffer for achieving memory disambiguation in compile-time code schedule |
US5713008A (en) * | 1995-06-08 | 1998-01-27 | Sun Microsystems | Determination of working sets by logging and simulating filesystem operations |
US5860150A (en) * | 1995-10-06 | 1999-01-12 | International Business Machines Corporation | Instruction pre-fetching of a cache line within a processor |
US5829028A (en) * | 1996-05-06 | 1998-10-27 | Advanced Micro Devices, Inc. | Data cache configured to store data in a use-once manner |
US5903749A (en) * | 1996-07-02 | 1999-05-11 | Institute For The Development Of Emerging Architecture, L.L.C. | Method and apparatus for implementing check instructions that allow for the reuse of memory conflict information if no memory conflict occurs |
DE19713178A1 (de) * | 1997-03-27 | 1998-10-01 | Siemens Ag | Schaltungsanordnung mit einem Prozessor und einem Datenspeicher |
US6185660B1 (en) * | 1997-09-23 | 2001-02-06 | Hewlett-Packard Company | Pending access queue for providing data to a target register during an intermediate pipeline phase after a computer cache miss |
US6205520B1 (en) * | 1998-03-31 | 2001-03-20 | Intel Corporation | Method and apparatus for implementing non-temporal stores |
US6223258B1 (en) * | 1998-03-31 | 2001-04-24 | Intel Corporation | Method and apparatus for implementing non-temporal loads |
US6134710A (en) * | 1998-06-26 | 2000-10-17 | International Business Machines Corp. | Adaptive method and system to minimize the effect of long cache misses |
US6401137B1 (en) * | 1998-06-30 | 2002-06-04 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for processing a virtual call in a multi-threaded program |
US6240490B1 (en) | 1998-07-20 | 2001-05-29 | International Business Machines Corporation | Comprehensive multilevel cache preloading mechanism in a multiprocessing simulation environment |
WO2000026771A1 (en) * | 1998-10-30 | 2000-05-11 | Intel Corporation | A computer product, method, and apparatus for detecting conflicting stores on speculatively boosted load operations |
WO2000031642A1 (de) * | 1998-11-25 | 2000-06-02 | Fujitsu Siemens Computers Gmbh | Cache-speichereinrichtung |
US6397320B1 (en) | 1999-06-25 | 2002-05-28 | International Business Machines Corporation | Method for just-in-time delivery of load data via cycle of dependency |
US6393553B1 (en) | 1999-06-25 | 2002-05-21 | International Business Machines Corporation | Acknowledgement mechanism for just-in-time delivery of load data |
US6505277B1 (en) | 1999-06-25 | 2003-01-07 | International Business Machines Corporation | Method for just-in-time delivery of load data by intervening caches |
US6425090B1 (en) | 1999-06-25 | 2002-07-23 | International Business Machines Corporation | Method for just-in-time delivery of load data utilizing alternating time intervals |
US6427204B1 (en) | 1999-06-25 | 2002-07-30 | International Business Machines Corporation | Method for just in-time delivery of instructions in a data processing system |
US6430683B1 (en) * | 1999-06-25 | 2002-08-06 | International Business Machines Corporation | Processor and method for just-in-time delivery of load data via time dependency field |
US6606704B1 (en) * | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
US6427196B1 (en) * | 1999-08-31 | 2002-07-30 | Intel Corporation | SRAM controller for parallel processor architecture including address and command queue and arbiter |
US6668317B1 (en) * | 1999-08-31 | 2003-12-23 | Intel Corporation | Microengine for parallel processor architecture |
US6983350B1 (en) | 1999-08-31 | 2006-01-03 | Intel Corporation | SDRAM controller for parallel processor architecture |
US6598156B1 (en) | 1999-12-23 | 2003-07-22 | Intel Corporation | Mechanism for handling failing load check instructions |
US6694380B1 (en) * | 1999-12-27 | 2004-02-17 | Intel Corporation | Mapping requests from a processing unit that uses memory-mapped input-output space |
US6631430B1 (en) * | 1999-12-28 | 2003-10-07 | Intel Corporation | Optimizations to receive packet status from fifo bus |
US6625654B1 (en) * | 1999-12-28 | 2003-09-23 | Intel Corporation | Thread signaling in multi-threaded network processor |
US6307789B1 (en) * | 1999-12-28 | 2001-10-23 | Intel Corporation | Scratchpad memory |
US6661794B1 (en) * | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
US6584522B1 (en) * | 1999-12-30 | 2003-06-24 | Intel Corporation | Communication between processors |
US6658559B1 (en) | 1999-12-31 | 2003-12-02 | Intel Corporation | Method and apparatus for advancing load operations |
US6631462B1 (en) * | 2000-01-05 | 2003-10-07 | Intel Corporation | Memory shared between processing threads |
US7126952B2 (en) * | 2001-09-28 | 2006-10-24 | Intel Corporation | Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method |
US6934951B2 (en) * | 2002-01-17 | 2005-08-23 | Intel Corporation | Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section |
JP2009505267A (ja) | 2005-08-16 | 2009-02-05 | エヌエックスピー ビー ヴィ | 補助メモリを用いてメモリにアクセスする方法及びシステム |
US7461206B2 (en) * | 2006-08-21 | 2008-12-02 | Amazon Technologies, Inc. | Probabilistic technique for consistency checking cache entries |
US9612960B2 (en) | 2012-11-19 | 2017-04-04 | Florida State University Research Foundation, Inc. | Data filter cache designs for enhancing energy efficiency and performance in computing systems |
US9600418B2 (en) * | 2012-11-19 | 2017-03-21 | Florida State University Research Foundation, Inc. | Systems and methods for improving processor efficiency through caching |
US9596305B2 (en) * | 2013-04-06 | 2017-03-14 | Citrix Systems, Inc. | Systems and methods for distributed hash table contract renewal |
US9684603B2 (en) | 2015-01-22 | 2017-06-20 | Empire Technology Development Llc | Memory initialization using cache state |
US20200218659A1 (en) * | 2019-01-09 | 2020-07-09 | Alibaba Group Holding Limited | Systems and methods for secure locking of a cache region |
GB2584440B (en) * | 2019-06-03 | 2021-12-08 | Advanced Risc Mach Ltd | Cache arrangement for graphics processing systems |
US11126437B2 (en) * | 2019-12-06 | 2021-09-21 | Microsoft Technology Licensing, Llc | Load instruction with final read indicator field to invalidate a buffer or cache entry storing the memory address holding load data |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4905141A (en) * | 1988-10-25 | 1990-02-27 | International Business Machines Corporation | Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification |
EP0375864A2 (de) * | 1988-12-29 | 1990-07-04 | International Business Machines Corporation | Cache-Speicherumgehung |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3967247A (en) * | 1974-11-11 | 1976-06-29 | Sperry Rand Corporation | Storage interface unit |
US4761731A (en) * | 1985-08-14 | 1988-08-02 | Control Data Corporation | Look-ahead instruction fetch control for a cache memory |
AU2278688A (en) * | 1988-02-16 | 1989-08-17 | Sun Microsystems, Inc. | Distributed cache architecture |
US5239644A (en) * | 1988-03-28 | 1993-08-24 | Hitachi, Ltd. | Data preloading method and system for using a buffer |
US5233702A (en) * | 1989-08-07 | 1993-08-03 | International Business Machines Corporation | Cache miss facility with stored sequences for data fetching |
-
1992
- 1992-09-16 US US07/945,561 patent/US5404484A/en not_active Expired - Lifetime
-
1993
- 1993-08-16 GB GB9317043A patent/GB2270781B/en not_active Expired - Fee Related
- 1993-09-10 DE DE4330751A patent/DE4330751C2/de not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4905141A (en) * | 1988-10-25 | 1990-02-27 | International Business Machines Corporation | Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification |
EP0375864A2 (de) * | 1988-12-29 | 1990-07-04 | International Business Machines Corporation | Cache-Speicherumgehung |
Non-Patent Citations (2)
Title |
---|
EICHELE, H.: Multiprozessorsysteme, B.G. Teubner, Stuttgart 1990, S. 94, 102-109 * |
IEEE Journal of Solid-State Circuits, Vol. 25, Nr. 1, Februar 1990, S. 5-10 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102005029428B4 (de) * | 2004-07-23 | 2013-08-08 | Hewlett-Packard Development Co., L.P. | System und Verfahren zum Verwalten eines Cachezugriffs in einem verteilten System |
US7751269B2 (en) | 2006-09-28 | 2010-07-06 | Infineon Technologies Ag | Coupling device for transmitting data |
DE102006045903B4 (de) * | 2006-09-28 | 2016-06-02 | Intel Deutschland Gmbh | Prozessoranordnung mit einer Kopplungsvorrichtung zum Koppeln eines Speichers mit einem Prozessor, Datenverarbeitungsanordnung und Verfahren zum Übertragen von Daten |
Also Published As
Publication number | Publication date |
---|---|
US5404484A (en) | 1995-04-04 |
DE4330751A1 (de) | 1994-03-17 |
GB2270781B (en) | 1996-07-10 |
GB2270781A (en) | 1994-03-23 |
GB9317043D0 (en) | 1993-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4330751C2 (de) | Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem zu einem Datenverarbeitungssystem | |
DE68927172T2 (de) | Multiprozessorsystem mit cache-speichern | |
DE69929936T2 (de) | Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem | |
DE69027253T2 (de) | Multiprozessor-Cachespeichersystem | |
DE69226928T2 (de) | Verfahren und Direktspeicherzugriffssteuerung zum asynchronen Daten-Lesen von einem -Schreiben in einen Speicher mit verbessertem Durchfluss | |
DE69327981T2 (de) | Kombinierte Speicheranordnung mit einem Vorausholungspuffer und einem Cachespeicher und Verfahren zur Befehlenversorgung für eine Prozessoreinheit, das diese Anordnung benutzt. | |
DE69323790T2 (de) | Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem | |
DE69616465T2 (de) | Cachespeicher mit Datenvorausladung | |
DE19527031C2 (de) | Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems | |
DE60037174T2 (de) | Puffersystem für externen speicherzugriff | |
DE3803759C2 (de) | ||
DE69132186T2 (de) | Cache-Speicherverwaltungsanordnung | |
DE3151745C2 (de) | ||
DE69534148T2 (de) | Rechnersystem zur Ausführung von Verzweigungsbefehlen | |
DE3751399T2 (de) | Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen. | |
DE69130858T2 (de) | Überlappende Serienverarbeitung | |
DE69224084T2 (de) | Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür | |
DE69030931T2 (de) | Mehrfachsequenzprozessorsystem | |
DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
DE3439302A1 (de) | Speichersteuerungsvorrichtung | |
DE10393803T5 (de) | Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff | |
DE69325473T2 (de) | Virtuelles Speichersystem verwendendes Datenverarbeitungssystem und -verfahren | |
DE19526008A1 (de) | Vertikal partitionierter, primärer Befehls-Cache-Speicher | |
DE69618783T2 (de) | Schreibcachespeicher zur verbesserung der schreibleistung | |
DE69229213T2 (de) | Verfahren und Cache-Speichersteuereinheit zum Holen von Daten für eine Zentraleinheit mit verringerter Wartezeit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |