DE4323929A1 - Software-geführtes Mehrebenen-Cache-Speichersystem - Google Patents
Software-geführtes Mehrebenen-Cache-SpeichersystemInfo
- Publication number
- DE4323929A1 DE4323929A1 DE4323929A DE4323929A DE4323929A1 DE 4323929 A1 DE4323929 A1 DE 4323929A1 DE 4323929 A DE4323929 A DE 4323929A DE 4323929 A DE4323929 A DE 4323929A DE 4323929 A1 DE4323929 A1 DE 4323929A1
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- data
- address
- buffer
- main memory
- 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.)
- Withdrawn
Links
- 239000000872 buffer Substances 0.000 claims description 159
- 230000036316 preload Effects 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 14
- 238000013479 data entry Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000011109 contamination Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 241001627144 Iris versicolor Species 0.000 description 1
- 241000282320 Panthera leo Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005755 formation reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000000034 method Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012360 testing method Methods 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/30043—LOAD or STORE instructions; Clear instruction
-
- 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
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
Die vorliegende Erfindung bezieht sich auf Computerspeicher
systeme und im besonderen auf ein verbessertes Cache-Spei
chersystem.
Herkömmliche Computersysteme verwenden Speichersysteme, die
der zentralen Verarbeitungseinheit (CPU = Central Processing
Unit) Daten als Reaktion auf Ladeanweisungen bereitstellen
und Daten als Reaktion auf Speicheranweisungen in den Spei
chersystemen speichern. Die Kosten pro Berechnung für die
CPU nahmen schneller ab als die Kosten pro Byte Speicher.
Nachdem die Berechnungsziele komplexer werden, hat sich zu
sätzlich die Größe des Hauptcomputerspeichers dramatisch er
höht. Als ein Ergebnis wird das Bereitstellen eines Haupt
speichers, der mit derselben Geschwindigkeit wie die CPU
arbeitet, ökonomisch unpraktisch.
Um die hohen Kosten des Bereitstellens eines Hauptspeichers,
der mit CPU-Bearbeitungsgeschwindigkeiten 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 Lade
anweisungen an den Cache-Speicher ausgegeben werden, über
prüft der Cache-Speicher seinen Inhalt. Wenn die Daten be
reits im Cache-Speicher enthalten sind, gibt der Cache-Spei
cher die Daten zurück an die CPU. Wenn die Daten nicht ent
halten sind, muß der Cache-Speicher die Daten aus dem Haupt
speicher laden. Nachdem der Hauptspeicher viel langsamer als
der Cache-Speicher ist, führt dies zu einer bedeutenden Ver
zögerung der Programmausführung. Jedesmal, 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 Speicheranweisungen an
den Cache-Speicher ausgegeben. Wenn die Daten für die in der
Speicheranweisung bestimmten Adresse bereits in dem Cache-
Speicher sind, aktualisiert der Cache-Speicher die Daten, um
die in der Speicheranweisung bestimmten Werte zurückzugeben.
Wenn die Daten nicht vorhanden sind, macht der Cache-Spei
cher einen Eintrag für die in der Speicheranweisung bestim
mte Adresse und bezeichnet die Daten als an dieser Adresse
gespeichert. Im Fall eines "Durchschreibe"-Cache-Speichers
werden die Daten direkt an den Hauptspeicher derart ge
schickt, daß der Hauptspeicher immer eine korrekte Kopie der
Daten hat. In Nicht-Durchschreibe-Cache-Speichersystemen
wird der Dateneintrag in dem Cache-Speicher markiert, um an
zuzeigen, daß er sich von dem an dieser Adresse im Haupt
speicher gespeicherten Wert unterscheidet. Wenn ein mar
kierter Dateneintrag während einer nachfolgenden Operation
ersetzt wird, dann wird der Eintrag, bevor er ersetzt wird,
in den Hauptspeicher geschrieben.
Um effektiv zu sein, müssen die Daten in dem Cache-Speicher
durchschnittlich mehrere Male benutzt werden, bevor sie
durch neue Daten aus dem Cache-Speicher ersetzt werden, die
aus dem Hauptspeicher als Reaktion auf Ladeanweisungen, die
durch die bereits im Cache-Speicher befindlichen Daten nicht
erfüllt werden können, eingehen. Jedesmal, wenn Daten 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ögerung über
mehrere Ladeanweisungen; daher wird die durchschnittliche
Verzögerung pro Ladeanweisung wesentlich reduziert. Eine
solche Reduktion tritt nicht auf, wenn die Daten nur einmal
verwendet werden.
Cache-Speichersysteme sind bei großen, wissenschaftlichen
Anwendungen weniger effektiv, da es bei diesen Anwendungen
einheitlichere Zugriffe auf viel größere Sätze von Daten
gibt. Es ist z. B. normal, aufeinanderfolgend jedes Element
in ein oder mehrere große Datenfelder einzulesen, wobei
jedes einzelne die Größe des Cache-Speichers weit über
schreitet. In solchen Fällen würde auf Daten, die in einen
schnelleren Cache-Speicher gebracht wurden, nur einmal zuge
griffen. Wie oben erwähnt, wird eine Systemverhaltensverbes
serung nur erreicht, wenn die in dem Cache-Speicher abgeleg
ten Daten mehrere Male angewendet 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
Cache-Speicher bewegt wird, ein in dem Cache-Speicher ge
speichertes Datenwort gelöscht werden. Einige der Daten
wörter, die gelöscht werden, wären wiederverwendet worden,
wenn diese Wörter nicht als Reaktion auf die Ladeanweisungen
für Datenwörter, die nur einmal verwendet werden, gelöscht
worden wären. Wenn die gelöschten Datenwörter wiederum abge
fragt werden, wird die CPU verzögert, während die Wörter in
den Cache-Speicher gelesen werden. Daher verschlechtern
übergebene Datenwörter, die während ihrer Anwesenheitszeit
im Cache-Speicher nur einmal verwendet werden, 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.
Aus diesem Grund wurden einige Anlagen entworfen, um den
Cache-Speicher nur für den Teil der Daten zu verwenden, der
oft wiederverwendet wird, und um auf große Felder unabhängig
vom Cache-Speicher zuzugreifen. Dies ist bei Vektoranlagen
weit verbreitet, bei denen auf die Vektoren aus sehr ver
schachtelten Speichern zugegriffen wird, ohne durch einen
Cache-Speicher zu gehen. Dieser Ansatz verhindert Verun
reinigungen des Cache-Speichers mit Daten, die nur einmal
benutzt werden. Unglücklicherweise schafft dieser Ansatz
keine Lösung für das Problem der Daten, die nur wenige Male
benutzt werden. Solche Daten würden von einem Cache-Spei
cherzugriffsschema profitieren, vorausgesetzt es würde nicht
die Daten, die wahrscheinlich viele Male abgefragt werden,
in dem Cache-Speicher ersetzen.
Wie oben erwähnt, erhöht sich die Cache-Speichereffizienz
mit der Größe des Cache-Speichers. Um die schnellste Reak
tion (d. h., die kürzeste Wartezeit) zu schaffen, muß der
Cache-Speicher jedoch auf dem Prozessorchip angeordnet sein.
Diese Einschränkung bestimmt die maximale Größe des Cache-
Speichers. In einigen Systemen nach dem Stand der Technik,
wird dieser Konflikt der Aufgaben durch Anwendung eines
hierarchischen Mehrebenen-Cache-Speichersystems gelöst. Ein
kleiner Cache-Speicher der Ebene 1 ist direkt auf dem Pro
zessorchip plaziert. Dieser Cache-Speicher wird durch einen
großen Cache-Speicher der Stufe 2 ergänzt, der außerhalb des
Prozessorchips angeordnet ist.
Wenn auf die Daten über hierarchische Mehrebenen-Cache-Spei
cher nach dem Stand der Technik zugegriffen wird, dann
fließen die Daten durch den Cache-Speicher der Ebene 1. Bei
einem Lesezugriff auf den Speicher werden die Daten aus dem
Cache-Speicher der Ebene 1 gelesen, wenn die Abfrage durch
im Cache-Speicher der Ebene 1 enthaltene Daten befriedigt
werden kann. Wenn die Daten nicht in dem Cache-Speicher der
Ebene 1 vorhanden sind, dann werden sie im Cache-Speicher
der Ebene 2 gesucht. Wenn die Daten im Cache-Speicher der
Ebene 2 gefunden werden können, werden sie als erstes in den
Cache-Speicher der Ebene 1 bewegt und dann aus dem Cache-
Speicher der Ebene 1 ausgelesen. Wenn die Daten im Cache-
Speicher der Ebene 2 ebenfalls nicht gefunden werden können,
dann werden sie als erstes aus dem Hauptspeicher in den Ca
che-Speicher der Ebene 2 gelesen, dann aus dem Cache-Spei
cher der Ebene 2 in den Cache-Speicher der Ebene 1 gelesen
und durch den Prozessor gelesen.
Bei einem Schreibzugriff auf den Speicher werden die Daten
in dem Cache-Speicher der Ebene 1 aktualisiert, wenn der
Cache-Speicher der Ebene 1 die Daten enthält, die zur Zeit
an dem Ort befindlich sind, an den neue Daten geschrieben
werden sollen. Wenn die alten Daten gegenwärtig nicht im
Cache-Speicher der Ebene 1 enthalten sind, wird Raum im
Cache-Speicher der Ebene 1 geschaffen und die alten Daten
werden in dem Cache-Speicher der Ebene 2 gesucht. Wenn die
alten Daten in dem Cache-Speicher der Ebene 2 gefunden
werden, werden sie in den Cache-Speicher der Ebene 1 gelesen
und mit den neu geschriebenen Daten aktualisiert. Wenn die
alten Daten in dem Cache-Speicher der Ebene 2 ebenfalls
nicht enthalten sind, wird im Cache-Speicher der Ebene 2
ebenfalls Raum geschaffen, die alten Daten werden zuerst in
den Cache-Speicher der Ebene 2 eingelesen, dann werden sie
in den Cache-Speicher der Ebene 1 eingelesen und dann
werden sie in dem Cache-Speicher der Ebene 1 aktualisiert.
Nachdem die Daten durch den Cache-Speicher der Ebene 1
fließen, leiden diese Schemata unter denselben Verun
reinigungsproblemen, wie herkömmliche Cache-Speicher. D.h.,
daß die Daten, die nur wenige Male verwendet werden, Daten
ersetzen, die viel öfter verwendet worden wären. Wenn die
ersetzten Daten erneut angefordert werden, muß das System
angehalten werden, während die Daten aus dem Cache-Speicher
der niedrigeren Ebene oder aus dem Hauptspeicher ausgelesen
werden.
Es ist deshalb die Aufgabe der vorliegenden Erfindung, ein
verbessertes Cache-Speichersystem zu schaffen.
Diese Aufgabe wird durch ein Cache-Speicheruntersystem gemäß
Anspruch 1, Anspruch 6 und Anspruch 9 gelöst.
Vorteilhafterweise schafft die vorliegende Erfindung ein
Cache-Speichersystem, das die Probleme verhindert, die mit
der Verunreinigung des Cache-Speichers mit Daten, die vor
ihrer Ersetzung nicht sehr oft benutzt werden,
zusammenhängen.
Vorteilhafterweise schafft die vorliegenden Erfindung ferner
ein Cache-Speichersystem, das verbesserten Zugriff auf Daten
schafft, die nur einige wenige Male benutzt werden, bevor
sie ersetzt werden.
Die vorliegende Erfindung umfaßt ein Mehrebenen-Cache-Spei
cheruntersystem zum Schaffen eines gepufferten Speicherzu
griffs zwischen einer CPU und einem Hauptspeicher. Die Er
findung schließt einen ersten Puffer zum Speichern von Ko
pien von Datenwörtern ein, die normalerweise im Hauptspei
cher gespeichert sind. Dieser Puffer schließt eine Register
datei zum Speichern von Informationen ein, die eine Adresse
im Hauptspeicher angeben, die mit jeder gespeicherten Kopie
zusammenhängt. Die Erfindung schließt eine Steuerung zum
Empfangen erster und zweiter Speicheranweisungen und erster
und zweiter Ladeanweisungen von der CPU und zum Bereitstel
len von Daten an die CPU als Reaktion auf die ersten und
zweiten Ladeanweisungen ein. Jede Speicher- und Ladeanwei
sung schließt Informationen ein, die eine Adresse im Haupt
speicher bestimmen, wobei die Steuerung wirksam mit dem er
sten Puffer und dem Hauptspeicher verbunden ist. Die Steuer
einrichtung schließt ebenfalls eine erste Ladeeinrichtung
ein, die auf die erste Ladeanweisung reagiert, zum Übertra
gen des Datenwortes, dessen Adresse in der ersten Ladeanwen
dung angegeben ist, an die CPU und zum Veranlassen, daß eine
Kopie des Datenwortes in den ersten Puffer übertragen wird,
und eine erste Speichereinrichtung ein, die auf die erste
Speicheranweisung reagiert, zum Veranlassen, daß in der
Speicheranweisung eingeschlossene Daten zusammen mit den in
der ersten Speicheranweisung eingeschlossenen Adreßin
formationen in dem ersten Puffer gespeichert werden. Zusätz
lich schließt die Steuerung eine zweite Ladeeinrichtung ein,
die auf die zweite Ladeanweisung reagiert, zum Übertragen
des Datenwortes, dessen Adresse in der zweiten Ladeanweisung
angegeben ist, aus dem Hauptspeicher an die CPU, ohne zu
veranlassen, daß eine Kopie des Datenwortes in der ersten
Puffereinrichtung abgelegt wird, und eine zweite Speicher
einrichtung, die auf die zweite Speicheranweisung reagiert,
zum Veranlassen, daß in der Speicheranweisung eingeschlosse
ne Daten im Hauptspeicher gespeichert werden, ohne zu ver
anlassen, daß eine Kopie des Datenwortes in der ersten Puf
fereinrichtung abgelegt wird.
Andere Ausführungsbeispiele der vorliegenden Erfindung
führen zusätzliche Anweisungen aus, die dem Kompiler
und/oder dem Programmierer erlauben, den Inhalt der ver
schiedenen Puffer zu steuern.
Ein bevorzugtes Ausführungsbeispiel der Erfindung wird nach
folgend unter Bezugnahme auf die beiliegenden Zeichnungen
näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm eines Cache-Speicheruntersystems
gemäß der vorliegenden Erfindung; und
Fig. 2 ein Blockdiagramm eines Registers zum Speichern von
Datenwörtern in einem Cache-Speicheruntersystem
gemäß der vorliegenden Erfindung.
Die vorliegende Erfindung kann als "nicht-hierarchisches"
Zwei-Ebenen-Cache-Speicheruntersystem angesehen werden, in
dem die Steuerung der Ebene, auf der auf Daten zugegriffen
wird oder auf der Daten gespeichert werden, durch Software
gesteuert wird. Ein Blockdiagramm des Cache-Speicherunter
systems 10 gemäß der vorliegenden Erfindung ist in Fig. 1
dargestellt und mit dem Bezugszeichen 10 bezeichnet. Das
Cache-Speicheruntersystem 10 vermittelt Speicherzugriffe
zwischen der CPU 12 und dem Hauptspeicher 13. Das Cache-
Speicheruntersystem 10 schließt eine Steuerung 20 ein, die
Lade- und Speicheranweisungen der CPU 12 und eines Puffers
14 interpretiert. Der Puffer 14 schließt einen kleinen,
schnellen Puffer 15 der Ebene 1 ein, der sich bevorzugter
weise auf demselben Chip wie die CPU 12 befindet. Der Puffer
14 schließt ebenfalls einen etwas langsameren, aber
bedeutend größeren Puffer 16 der Ebene 2 ein. Jeder dieser
Puffer schließt Platz zum Speichern einer Mehrzahl von Da
tenwörtern und Informationen ein, die die Adresse im Haupt
speicher 12 bestimmen, die jedem Datenwort und der Länge der
Zeit seitdem auf dieses Datenwort das letztemal zugegriffen
wurde, entspricht. In einer Betriebsart arbeiten die Puffer
15 und 16 in einer Art analog zu dem oben beschriebenen, auf
den Stand der Technik bezugnehmenden, hierarchischen
Cache-Speicheruntersystemen.
Im allgemeinen werden die Daten, die am häufigsten verwendet
werden, bevorzugterweise im Puffer 15 gespeichert und damit
werden für die CPU 12 die maximal vorteilhaften Cache-Spei
cherzugriffe geschaffen. Daten, bei denen es wahrscheinlich
ist, daß sie wenige Male angewendet werden, werden bevor
zugterweise in Puffer 16 gespeichert. Wie im folgenden ge
nauer erklärt werden wird, schafft dies eine Möglichkeit zum
Reduzieren der effektiven Wartezeit des Computerzugriffs auf
diese Daten, während der Fluß dieser Daten davon abgehalten
wird, den effizienten Betrieb des Puffers 15 zu stören. Auf
Daten, bei denen es wahrscheinlich ist, daß sie nur einmal
angewendet werden, wird direkt in dem Hauptspeicher 13 zu
gegriffen.
Das Cache-Speicheruntersystem 10 unterscheidet sich von Ge
räten nach dem Stand der Technik dadurch, daß es auf Daten
über drei verschiedene Lade-/Speicheranweisungspaare zu
greifen kann. Die verschiedenen Paare der Anweisungen er
lauben es dem System, sein Verhalten bezüglich der erwarte
ten Wiederverwendung der Daten, die zwischen der CPU 12 und
dem Hauptspeicher 13 übertragen werden, zu optimieren. Jedes
Paar von Anweisungen wird für verschiedene Ebenen der Wie
derverwendung angewendet. Die Wahl der Anwendungspaare wird
durch den Programmierer und/oder den Kompiler ausgeführt.
Nachdem der Programmierer die Wahrscheinlichkeit der Daten
wiederverwendung kennt, kann der Programmierer die Art des
verwendeten Speicherzugriffs festlegen. Die vorliegende Er
findung kann ebenfalls im Zusammenhang mit Betriebssystemen
verwendet werden, die den Code durch Ablauf des Codes mit
Testdaten und durch Beobachtung der Reihenfolge, in der die
Anweisungen und Daten verwendet werden, optimieren.
Das erste Paar der Lade- und Speicheranweisungen greift auf
die Daten, wie oben unter Bezugnahme auf hierarchische
Zwei-Ebenen-Cache-Speicheruntersysteme nach dem Stand der
Technik beschrieben, zu. Wenn die Steuerung 20 eine
Ladeanweisung der ersten Art entdeckt, untersucht die
Steuerung 20 den Inhalt des Puffers 15, um festzustellen, ob
die in der Ladeanweisung bestimmten Daten zur Zeit im Puffer
15 gespeichert sind. Wenn die Daten im Puffer 15 sind, dann
werden die Daten aus dem Puffer 15 an die CPU 12 übergeben.
Wenn die Daten im Puffer 15 nicht vorhanden sind, dann
untersucht die Steuerung 20 den Inhalt des Puffers 16, um
festzustellen, ob die Daten dort gespeichert sind. Wenn die
Daten im Puffer 16 gefunden werden, dann werden die Daten
zuerst in den Puffer 15 kopiert und dann vom Puffer 15 an
die CPU 12 übergeben. Wenn die Daten im Puffer 16 nicht
gefunden werden, dann veranlaßt die Steuerung 20, daß Kopien
der Daten, die zur Zeit an dieser Adresse im Hauptspeicher
13 sind, in beide Puffer 15 und 16 abgelegt werden und dann
vom Puffer 15 an die CPU 12 übertragen werden.
Wenn eine Speicheranweisung der ersten Art von der Steuerung
20 empfangen wird, dann werden die in der Speicheranweisung
angegebenen Daten in den Puffer 15 kopiert. Um für diese
Daten Platz zu schaffen, werden die ältesten Daten im Puffer
15 gelöscht. Hierbei wird das Alter als die Anzahl der An
weisungszyklen, die aufgetreten sind, seitdem auf die Daten
das letztemal Bezug genommen wurde, gemessen. Wenn der Puf
fer 15 nicht als ein "Durchschreibe"-Cache-Speicher arbei
tet, dann wird eine Kopie der gelöschten Daten im Puffer 16
erstellt. Jegliche Daten, die aus dem Puffer 16 eleminiert
werden müssen, um Raum für in einer Speicheranweisung emp
fangene Daten zu schaffen, werden gleichermaßen in den
Hauptspeicher 13 kopiert, wenn notwendig. Wenn der Puffer 15
als ein "Durchschreibe"-Cache-Speicher arbeitet, dann ist
dieser Schritt nicht notwendig, da die Kopie bereits beim
letzten Mal gemacht wurde, als auf die Daten zugegriffen
wurde. Dieses Paar von Anweisungen wird für die Speicherzu
griffe bevorzugt, die Daten einschließen, bei denen erwartet
wird, daß sie viele Male verwendet werden, bevor sie im dem
Puffer 15 der Ebene 1 ersetzt werden.
Das zweite Paar von Lade- und Speicheranweisungen bewegt
Daten niemals höher in der Cache-Speicherhierarchie als in
den Cache-Speicherpuffer 16 der Ebene 2. Wenn die Steuerung
20 eine Ladeanweisung der zweiten Art entdeckt, untersucht
sie zuerst den Inhalt des Puffers 15, um festzustellen, ob
eine Kopie des abgefragten Datenworts im Puffer 15 ist. Wenn
die Steuerung 15 eine Kopie des Datenwortes im Puffer 15
findet, dann wird das Datenwort vom Puffer 15 an die CPU 12
übergeben. Wenn im Puffer 15 keine Kopie des Datenwortes ge
funden wird, dann untersucht die Steuerung 20 den Inhalt des
Puffers 16. Wenn das Datenwort im Puffer 16 gefunden wird,
veranlaßt die Steuerung 20, daß die Daten vom Puffer 16 an
die CPU 12 übergeben werden. Wenn das Datenwort im Puffer 16
nicht gefunden wird, veranlaßt die Steuerung 20, daß eine
Kopie des Datenwortes aus dem Hauptspeicher 13 in den Puffer
16 übertragen wird. Das Datenwort wird dann vom Puffer 16 an
die CPU 12 übertragen.
Wenn die Steuerung 20 eine Speicheranweisung der zweiten Art
entdeckt, dann wird das Datenwort, das darin enthalten ist,
in den Puffer 15 kopiert, wenn die Daten für diese Adresse
bereits in Puffer 15 vorhanden sind. Wenn der Puffer 15 ein
"Durchschreibe"-Cache-Speicher ist, wird eine Kopie der
Daten ebenfalls in den Puffer 16 kopiert. Wenn die Daten für
die Adresse im Puffer 15 nicht vorhanden sind, dann wird das
Datenwort in den Puffer 16 kopiert. Um für die Daten Raum zu
schaffen, können die ältesten Daten in Puffer 16 gelöscht
werden. Wenn der Puffer 16 nicht als "Durchschreibe"-Cache-Speicher
arbeitet, wird eine Kopie der gelöschten Daten im
Hauptspeicher 13 erstellt. Wenn der Puffer 16 als "Durch
schreibe"-Cache-Speicher arbeitet, dann ist dieser Schritt
nicht notwendig, nachdem die Kopie bereits beim letzten Mal,
als auf die Daten zugegriffen wurde, erstellt wurde.
Dieses zweite Paar Anweisungen wird für Speicherzugriffe be
vorzugt, die Daten einschließen, bei denen es wahrscheinlich
ist, daß sie nur wenige Male wiederverwendet werden, bevor
sie im Puffer 16 ersetzt werden. Vorausgesetzt, die Verweil
dauer im Puffer 16 ist lange genug, um mehr als einen Zu
griff auf diese Daten zu schaffen, wird die effektive Warte
zeit für den Speicherzugriff reduziert werden. Nachdem diese
Daten nicht in den Puffer 15 übertragen werden, werden die
Probleme, die mit dem Ersetzen der Daten im Puffer 15 mit
Daten, bei denen es wahrscheinlich ist, daß sie wesentlich
weniger verwendet werden, zusammenhängen, überwunden. Die
Verweildauer im Puffer 16 steht in Beziehung zu der Größe
des Puffers 16. Nachdem der Puffer 16 jedoch nur bedeutend
schneller sein muß als der Hauptspeicher 13, um eine bedeu
tende Verbesserung zu schaffen, kann der Puffer 16 viel
größer als der Puffer 15 gemacht werden und immer noch ein
ökonomisch realistisches System schaffen.
Das dritte Paar Anweisungen bewegt Daten niemals höher in
der Hierarchie als über den Hauptspeicher 13. Wenn die Steu
erung 20 eine Ladeanweisung der dritten Art entdeckt, unter
sucht sie zuerst die Puffer 15 und 16 nach den in der Lade
anweisung angegebenen Daten. Wenn die Daten in einem dieser
Puffer gefunden werden, dann werden die Daten aus dem Puffer
mit der schnellsten Antwortzeit, der die Daten enthält, an
die CPU 12 übertragen. Wenn die Daten in keinem der Puffer
vorhanden sind, veranlaßt die Steuerung 20, daß die Daten
aus dem Hauptspeicher 13 übertragen werden.
Wenn die Steuerung 20 eine Speicheranweisung der dritten Art
entdeckt, dann überprüft die Steuerung 20 zuerst die Puffer
15 und 16, um festzustellen, ob die Daten für die Adresse in
der Speicheranweisung derzeit in einem der Puffer gespei
chert sind. Wenn die Daten für die Adresse in einem der Puf
fer gefunden werden, dann werden die Datenblöcke in dem Puf
fer mit der schnellsten Antwortzeit, in dem ein Dateneintrag
für diese Adresse existiert, aktualisiert. Wenn dieser Puf
fer ein "Durchschreibe"-Puffer ist, dann wird ebenfalls eine
Kopie der Daten verwendet, um die langsameren Puffer unter
halb dieses Puffers in der Cache-Speicherhierarchie zu
aktualisieren. Wenn die Steuerung 20 keinen Eintrag für
dieses Datenwort in einem der Puffer findet, dann veranlaßt
die Steuerung 20, daß die in der Speicheranweisung angege
benen Daten direkt in den Hauptspeicher 13 geschrieben
werden. Dieses Paar von Anweisungen wird für Daten angewen
det, bei denen es nicht wahrscheinlich ist, daß sie während
der Zeit, in der sie im Puffer 16 sind, wiederverwendet
werden, wenn die Daten an den Puffer 16 übertragen werden.
Zusätzlich zur Verhinderung der Entfernung von auf häufig
zugegriffenen Daten von den Cache-Speichern der ersten und
der zweiten Ebene schafft die vorliegende Erfindung ein
weiteres wichtiges Merkmal. Die Kompilertechnologie zum
Planen der Maschinenanweisungen kann hervorragende Arbeit
beim Umgang mit langen Wartezeiten auf den Speicher leisten,
wenn der Kompiler die Wartezeit kennt. Z.B. kann der Kom
piler eine Vor-Ladeanweisung zu einen Zeitpunkt an das
Cache-Speichersystem schicken, der ausreichend weit vor der
erwarteten Ladeanweisung liegt, um dem Speichersystem zu er
lauben, die Daten in die entsprechende Ebene des Cache-Spei
cheruntersystems zu verschieben. Wenn die Vor-Ladeanweisung
jedoch zu früh gesendet wird, dann können diese Daten durch
Daten ersetzt werden, die als Reaktion auf andere Lade- und
Speicheranweisungen, die während der Zeit, in der die Vor-
Ladeanweisung empfangen wird und der Zeit, zu der die ent
sprechende Ladeanweisung ankommt, ausgegeben werden, geladen
werden. Diese Situation kann prinzipiell vermieden werden,
wenn die Wartezeit bekannt ist. Wenn die Wartezeit bekannt
ist, kann das Cache-Speichersystem garantieren, daß die
Daten nicht zu früh ersetzt werden.
Was wichtig ist, ist nicht notwendigerweise die kürzeste
Speicherwartezeit, sondern eine voraussagbare Wartezeit. Ein
Schlüsselvorteil der vorliegenden Erfindung ist es, daß sie
vorhersagbarere Wartezeiten schafft als Systeme nach dem
Stand der Technik, nachdem sie die Wahrscheinlichkeit redu
ziert, daß die Daten aus dem Cache-Speicherpuffer entfernt
werden, in dem sie gespeichert waren, bevor die Ladeanwei
sung, die auf die Daten zugreift, tatsächlich ankommt.
In dem bevorzugten Ausführungsbeispiel der vorliegenden Er
findung führt die Steuerung 20 ebenfalls zwei Vor-Ladeanwei
sungen aus. Eine für jede Ebene des Cache-Speichers. Eine
Vor-Ladeanweisung, die eine Speicheradresse und einen be
stimmten Cache-Speicher angibt, veranlaßt, daß die Daten,
die mit dieser Adresse zusammenhängen, an diesen Cache-Spei
cher derart übertragen werden, daß die Daten vorhanden sind,
wenn eine Ladeanweisung empfangen wird. Während der Ausführ
ung der Vor-Ladeanweisung ist der Cache-Speicher frei, um
auf andere Lade- und Speicheranweisungen zu reagieren. Eine
Vor-Ladeanweisung unterscheidet sich von einer Ladeanweisung
darin, daß die CPU nicht angehalten wird, bis die Daten
durch den Cache-Speicher empfangen sind. Zusätzlich erfor
dert die Vor-Ladeanwendung kein Register, das für das Ergeb
nis angegeben sein muß; daher braucht kein CPU-Register
außer Dienst genommen zu werden, um den Cache-Speicher zu
veranlassen, mit Daten von einer angegebenen Adresse geladen
zu werden.
Die Vor-Ladeanweisung muß der Wartezeit der Datenquelle
Rechnung tragen, um den maximalen Vorteil beim Reduzieren
der effektiven Speicherwartezeit zu schaffen. Die Vor-Lade
anweisung wird bevorzugterweise mindestens T Speicherzyklen
vor einer Ladeanweisung, die diese Adresse angibt, ausge
geben. Hierbei ist T die Wartezeit der Datenquelle. In einem
Mehrebenen-Cache-Speichersystem wird der maximale Vorteil
erreicht, wenn alle Vor-Ladungen den Hauptspeicher als
Datenquelle annehmen.
Die Art, in der eine Vor-Ladeanweisung bevorzugterweise aus
geführt wird, wird als erstes mit Bezug auf das Mehrebenen-
Cache-Speichersystem, das in Fig. 1 beschrieben ist, dis
kutiert. Beim Empfang einer Vor-Ladeanweisung für den Puffer
15 überprüft die Steuerung 20 den Puffer 15, um festzustel
len, ob ein Eintrag für die in der Vor-Ladeanweisung ange
gebene Adresse vorhanden ist. Wenn die Daten bereits vor
handen sind, wird die Vor-Ladeanwendung ignoriert. Wenn die
Daten nicht vorhanden sind, untersucht die Steuerung 20 den
Puffer 16, um festzustellen, ob die Daten dort sind. Wenn
sie es sind, werden die Daten zum Puffer 15 bewegt, wenn
nicht, wird eine Kopie der Daten zuerst aus dem Hauptspei
cher 13 in den Puffer 16 und dann vom Puffer 16 in den Puf
fer 15 bewegt. Auf ähnliche Weise untersucht die Steuerung
20 beim Empfang einer Vor-Ladeanweisung für den Puffer 16
den Puffer 16, um festzustellen, ob ein Eintrag für die in
der Vor-Ladeanweisung angegebene Adresse vorhanden ist. Wenn
die Daten bereits vorhanden sind, wird die Vor-Ladeanweisung
ignoriert. Wenn die Daten nicht vorhanden sind, kopiert die
Steuerung 20 die Daten aus dem Hauptspeicher 13 in den Puf
fer 16.
Während eine Vor-Ladung im Vorgang ist, muß die Steuerung 20
alle Speicheranweisungen untersuchen, die durch die CPU
zwischen dem Empfang der Vor-Ladeanweisung und der Lieferung
der Daten in ein Register in dem Cache-Speicher ausgegeben
wurden, um sicherzustellen, daß die zuletzt verwendeten Da
ten für diese Adresse in dem Cache-Speicher abgelegt werden.
Angenommen der Fall, daß eine Vor-Ladeanwendung, die eine
Adresse A angibt, an das Cache-Speicheruntersystem ausgege
ben wird und daß die Daten in keiner Pufferebene des Cache-Speichers
vorhanden waren. Während der Zeit, die benötigt
wird, um die Daten aus dem Hauptspeicher in den Cache-Spei
cher zu bewegen, kann eine Speicheranweisung für die Adresse
A empfangen werden. Wenn dies auftritt, wird der Wert aus
der Speicheranweisung in dem Cache-Speicherpuffer gespei
chert und der Wert, der darauffolgend vom Hauptspeicher ge
liefert wird, wird ignoriert.
Ein zweites Problem, daß durch Vor-Ladeanweisungen auftritt,
bezieht sich auf die Möglichkeit, daß eine zweite Vor-Lade
anweisung für eine Adresse A empfangen werden kann, während
der Cache-Speicher immer noch die erste Vor-Ladeanweisung
für dieselbe Adresse verarbeitet. Wenn dies auftritt, wird
es bevorzugt, daß der Cache-Speicher die Ausführung der
zweiten Vor-Ladung verzögert, bis die erste Vor-Ladungsan
weisung verarbeitet ist. Von dieser Situation wird erwartet,
nur sehr selten aufzutreten; daher verursacht das Verzögern
der zweiten Vor-Ladeanweisung vernachlässigbare Anstiege bei
der Betriebszeit des Systems.
In dem bevorzugten Ausführungsbeispiel der vorliegenden Er
findung werden diese Probleme durch Hinzufügen zwei zusätz
licher Flag-Bits zu den Registern, die verwendet werden, um
die Datenwerte in den Puffern 15 und 16 zu speichern, über
wunden. Im allgemeinen schließen die Puffer 15 und 16 eine
Registerdatei mit einem Register für jeden Dateneintrag, der
in der Datei gespeichert ist, ein. Ein typisches Register
ist in Fig. 2 gezeigt und mit dem Bezugszeichen 100 bezeich
net. Das Register 100 schließt ein Feld 101 zum Speichern
der Adresse des in Feld 102 gespeicherten Dateneintrags im
Hauptspeicher ein. Zusätzlich schließt das Register 100 zwei
Flags ein, die beim Verarbeiten von Vor-Ladeanweisungen ver
wendet werden. Die erste Flag 104 zeigt an, daß eine Vor-La
dung verarbeitet wird. Die zweite Flag 106 wird verwendet,
um anzuzeigen, daß eine Speicheranweisung für diese Adresse
empfangen wurde, während die Vor-Ladung im Gange war und da
her wird der Wert, der vom Hauptspeicher oder einer anderen
Pufferebene zurückgegeben wird, ignoriert.
Angenommen der Fall, daß eine Vor-Ladungsanweisung empfangen
wird und die Steuerung 20 feststellt, daß die Registerdatei
in dem in der Anweisung angegebenen Puffer keinen Eintrag
für die in der Vor-Ladungsanweisung angegebene Adresse ent
hält. Die Steuerung 20 ordnet dann ein Register in der Re
gisterdatei des in der Vor-Ladungsanweisung angegebenen Puf
fers der Vor-Ladungsanweisung zu. Die Register-Flags 104 und
106 werden auf ihre anfänglichen Werte gesetzt und eine An
weisung zum Holen der Daten aus der Pufferebene unterhalb
der in der Vor-Ladungsanweisung angegebenen Ebene oder aus
dem Hauptspeicher wird ausgegeben. Jedesmal, wenn eine Spei
cheranweisung durch die Steuerung 20 erfaßt wird, wird die
Adresse in der Speicheranweisung mit allen Adressen in den
Registern der Registerdateien verglichen. Wenn die Adresse
übereinstimmt, wird der in der Speicheranweisung angegebene
Wert in das Feld 102 dieses Registers geladen und die zweite
Flag wird zurückgesetzt, um anzuzeigen, daß jeglicher Wert,
der nachfolgend von dem Hauptspeicher oder einem anderen
Puffer empfangen wird, zu ignorieren ist. Diese Speicheran
weisungsverarbeitung erfolgt zusätzlich zu der oben be
schriebenen.
Die obige Diskussion nimmt an, daß das in der Speicheranord
nung bestimmte Wort genau mit der Wortlänge der Datenein
träge, die in dem Puffer gespeichert sind, übereinstimmt.
Dies muß nicht immer der Fall sein. Z.B. kann der Cache-
Speicher in einigen Systemen Wörter speichern, die einige
Bytes lang sind; während eine Speicheranweisung einen ein
zigen Byte einschließt. In solchen Systemen kann eine ge
trennte Flag, wie z. B. Flag 106, für jedes Byte im Datenfeld
104 bereitgestellt werden. Jede dieser Flags würde angeben,
daß das entsprechende Byte durch eine Speicheranweisung
übertragen wurde und daher der Wert für das Byte, das in
Reaktion auf die Vor-Ladungsanweisung zurückgegeben wurde,
zu ignorieren ist.
Es gibt eine Anzahl von Ersetzungsstrategien, die benutzt
werden können, um festzustellen, welches Register in der
Registerdatei der in der Vor-Ladungsanweisung angegebenen
Adresse zugeordnet ist. Jegliche Ersetzungsstrategie, die
mit einem herkömmlichen Cache-Speicher verwendet wird, kann
bei einem Cache-Speichersystem gemäß der vorliegenden Er
findung verwendet werden. Z.B. kann jedes Register in einer
Registerdatei ein Feld zum Speichern eines Zählstandes der
Anzahl der Zyklen, die vergangen sind, seitdem auf den
hierin gespeicherten Dateneintrag in einer Speicher- oder
Ladeanweisung Bezug genommen wurde, einschließen. Das Re
gister mit dem größten Zählstand würde dann dieser Adresse
zugeordnet. Dies entspricht dem Ersetzen des am wenigsten
verwendeten Dateneintrags. Ein zweites Beispiel für eine Er
setzungsstrategie wäre es, ein Register, für das eine Vor-
Ladung nicht im Ablauf war, zufällig zur Ersetzung auszuw
ählen.
Zusätzlich zu den herkömmlichen Ersetzungsstrategien, die
oben diskutiert wurden, führt das bevorzugte Ausführungsbei
spiel der vorliegenden Erfindung eine besondere Klasse von
Anweisungen aus, die es dem Kompiler und/oder dem Program
mierer erlauben, anzugeben, welches Register gelöscht werden
kann. Diese Klassen von Anweisungen werden als Löschanwei
sungen bezeichnet. Es gibt eine solche Anweisung für jede
Pufferebene. Eine Löschanweisung schafft eine Möglichkeit
zum Entfernen von Daten aus den Cache-Speicherpuffern sobald
die Daten zum letztenmal durch das Programm benutzt wurden.
Jede Anweisung gibt eine Adresse an. Wenn dieser Puffer
einen Eintrag für diese Adresse einschließt, markiert die
Steuerung 20 das Register, das derzeitig für diesen Daten
eintrag verwendet wird, als frei und als zu überschreiben.
Dieses Register kann dann durch eine Vor-Ladungsanweisung
oder eine Speicheranweisung verwendet werden. D.h., daß ein
gelöschtes Register verwendet werden kann, bevor es die In
halte eines nicht-gelöschten Registers ersetzt. Um diese
Anweisungen auszuführen, ist eine dritte Flag 108 in jedem
Register 100 eingeschlossen. Wenn die Steuerung 20 einen
Löschbefehl für eine Adresse A und einen angegebenen Puffer
erhält, untersucht die Steuerung 20 den Inhalt des angege
benen Puffers nach einem Eintrag mit A im Feld 101. Wenn ein
solcher Eintrag gefunden wird, wird die Flag 108 auf einen
Wert gesetzt, der angibt, daß das Register durch eine nach
folgende Lade-, Vor-Ladungs- oder Speicheroperation ver
wendet werden kann. Wird kein solches Register gefunden,
dann wird die Anweisung ignoriert. Wenn das Cache-Speicher
untersystem kein Durchschreibe-Cache-Speicher ist, dann muß
die Steuerung 20 die Daten ebenfalls aus dem gelöschten Re
gister in den Hauptspeicher und/oder in eine niedrigere
Cache-Speicherpufferebene kopieren, wenn das Register ge
löscht ist.
Im Prinzip kann eine Löschanweisung mit einem Cache-System
mit einer Ebene verwendet werden, um ein System zu schaffen,
in dem die Verunreinigung des Cache-Speichers durch Daten,
die nicht länger im Cache-Speicher gebracht werden, verhin
dert werden kann. In einem solchen System muß der Cache-
Speicherpuffer die Ersetzungsstrategie, die oben diskutiert
wurde, verwenden, d. h., Einträge können zur Ersetzung mar
kiert werden. Sobald ein Dateneintrag nicht länger im
Cache-Speicher benötigt wird, wird eine Löschanweisung, die
an diesen Eintrag gerichtet ist, ausgegeben. Wenn es bekannt
ist, daß die Daten nur einmal benutzt werden, dann sollte
jede Ladeanweisung für solche Daten von einer Löschanweisung
gefolgt werden.
Während Vor-Ladungsanweisungen dem Kompiler und/oder dem
Programmierer erlauben, die Effekte der Speicherwartezeit zu
reduzieren, erhöhen diese Anweisungen die Anzahl der benö
tigten Anweisungen, um einen Wert in die CPU zu laden, nach
dem jeder Ladeanweisung nun eine Vor-Ladungsanweisung vor
hergehen muß. Das bevorzugte Ausführungsbeispiel der vor
liegenden Erfindung verhindert dieses Problem durch Aus
führen einer zweiten Klasse von Vor-Ladungsanweisungen, die
das Cache-Speicheruntersystem veranlassen, effektiv seine
eigenen Ladeanweisungen nach einer vorher festgelegten Zeit
verzögerung zu erzeugen. Diese Art von Vor-Ladungsanweisung
gibt eine Pufferebene, in die die Daten geladen werden sol
len, die Adresse des Dateneintrags im Hauptspeicher, das
CPU-Register, in das die Daten geladen werden, und einen An
weisungszykluszählstand an. Die Steuerung 20 behandelt diese
Anweisungen in derselben Art wie die oben beschriebenen Vor-
Ladungsanweisungen, außer daß die Steuerung 20 nach der an
gegebenen Anzahl von Anweisungszyklen eine Ladeanweisung für
diese Adresse in diesem CPU-Register ausführt. Das bevor
zugte Ausführungsbeispiel der vorliegenden Erfindung führt
eine zweite solche Vor-Ladungsanweisung für jede Pufferebene
in dem Cache-Speicheruntersystem aus.
Auf ähnliche Weise erlauben die Löschanweisungen dem Kompi
ler und/oder dem Programmierer, Daten aus dem Cache-Speicher
zu löschen, bei denen es nicht wahrscheinlich ist, daß sie
noch einmal verwendet werden, bevor sie durch eine nachfol
gende Anweisung ersetzt werden. Solche Aktionen sind oft mit
einer Speicher- oder mit einer Ladeanweisung verbunden, die
durch die letzte Anwendung des Dateneintrags erzeugt wurde.
Daher sind Anweisungen, die aus einer Kombination einer
Speicher- und einer Ladeanweisung gefolgt von einer Löschan
weisung bestehen, besonders nützlich, da sie das Ausgeben
von zwei getrennten Anweisungen verhindern. Das bevorzugte
Ausführungsbeispiel der vorliegenden Erfindung führt solche
Anweisungen für jede Pufferebene aus.
Die oben beschriebenen Ausführungsbeispiele der vorliegenden
Erfindung haben einen Cache-Speicherpuffer mit zwei Ebenen
verwendet. Es ist jedoch für Fachleute offensichtlich, daß
Systeme, die mehrere Cache-Speicherpufferebenen verwenden,
von Vorteil sein können. Wenn es N Cache-Speicherpufferebe
nen über dem Hauptspeicher gibt, dann würde ein Cache-Spei
chersystem gemäß der vorliegenden Erfindung (N+1) Ladeanwei
sungen und (N+1) Speicheranweisungen einschließen. Die
Cache-Speicherebene, die am weitesten vom Hauptspeicher ent
fernt ist, wird als Cache-Speicherebene N bezeichnet und
wird in der folgenden Diskussion als die höchste Ebene be
zeichnet. Die i-te Ladeanweisung veranlaßt, daß eine Kopie
der Daten, die mit der darin angegebenen Adresse zusammen
hängen, in dem i-ten Cache-Speicherpuffer abgelegt wird und
daß eine Kopie dieser Daten in das CPU-Register, das in der
Anweisung gegeben ist, geladen wird. Der N-te Cache-Spei
cherpuffer ist die kleinste und schnellste Ebene. Die 0-te
Ladeanweisung würde dieses CPU-Register direkt aus dem
Hauptspeicher laden.
Auf ähnliche Weise veranlaßt die i-te Speicheranweisung, daß
eine Kopie der Daten, die mit der darin bestimmten Adresse
zusammenhängt, in dem i-ten Cache-Speicherpuffer abgelegt
wird und die 0-te Speicheranweisung würde diesen Wert direkt
in den Hauptspeicher abspeichern. In dem Fall einer Spei
cheranweisung müssen alle Eintragungen für die Adressen in
einer Pufferebene über derjenigen, die in der Anweisung an
gegeben ist, entweder ungültig gemacht werden oder
aktualisiert werden. Wenn das Cache-Speicheruntersystem ein
Durchschreibe-Cache-Speicher ist, muß ein Eintrag ebenfalls
in jedem Puffer unterhalb des angegebenen Cache-Speicherpuf
fers und im Hauptspeicher abgelegt werden.
Die oben beschriebenen Ausführungsbeispiele der vorliegenden
Erfindung haben eine "einschließliche" Cache-Speicherstrate
gie verwendet. D.h., daß die Kopien der Dateneintragungen,
die in der höchsten Pufferebene gespeichert sind, immer auch
in den niedrigeren Cache-Speicherpufferebenen eingeschlossen
sind. Wenn z. B. ein Wert in die i-te Pufferebene geladen
wird, dann wird sie ebenfalls in die Ebenen (i-1) . . . 0 ge
laden. Nachdem die Größe des Cache-Speicherpuffers typi
scherweise in der Größenordnung des Betrags mit jeder Ebene
zunimmt, reduzieren die Extrakopien den Speicherplatz nicht
markant. Der Vorteil einer solchen einschließende Strategie
liegt in der Möglichkeit der Steuerung 20, durch Untersuchen
des Inhalts dieser Ebene festzustellen, ob ein Eintrag ober
halb einer bestimmten Ebene ist. Wenn ein Dateneintrag nicht
auf der i-ten Ebene für die Adresse A existiert, dann gibt
es keinen Eintrag auf jeglicher Ebene kleiner als i. Während
das bevorzugte Ausführungsbeispiel der vorliegenden Erfin
dung eine inklusive Cache-Speicherstrategie anwendet, ist es
für Fachleute offensichtlich, daß nicht-einschließliche
Strategien ebenfalls angewendet werden können, ohne von der
Lehre der vorliegenden Erfindung abzuweichen.
Während die oben beschriebenen Ausführungsbeispiele der vor
liegenden Erfindung mindestens zwei Pufferebenen in dem
Cache-Speicheruntersystem angenommen haben, ist es für Fach
leute offensichtlich, daß ein Cache-Speicheruntersystem mit
einer Pufferebene ebenfalls bedeutende Vorteile gegenüber
dem Stand der Technik schafft. Im besonderen der Einschluß
von zwei Ebenen von Speicher- und Ladeanweisungen, d. h. N = 2,
erlaubt dem Kompiler und/oder dem Programmierer, den
Cache-Speicher für Ladungen und Speicherungen zu umgehen,
die ansonsten den Cache-Speicher mit Daten verunreinigen
würden, bei denen es nicht wahrscheinlich ist, daß sie
während ihrer Verweildauer im Cache-Speicher wiederverwendet
würden.
Claims (10)
1. Cache-Speicheruntersystem (10) zum Schaffen eines gepuf
ferten Speicherzugriffs zwischen einer CPU (12) und
einem Hauptspeicher (13), mit
einer ersten Puffereinrichtung (15) zum Speichern von
Kopien von Datenwörtern, die normalerweise in dem Haupt
speicher (13) gespeichert sind, wobei die erste Puffer
einrichtung ferner eine Einrichtung zum Speichern von
Informationen, die eine Adresse in dem Hauptspeicher
(13) angeben, die mit jeder der gespeicherten Kopien
zusammenhängt, umfaßt;
gekennzeichnet durch
eine Steuerungseinrichtung (20) zum Empfangen einer
ersten und einer zweiten Speicheranweisung und einer
ersten und einer zweiten Ladeanweisung von der CPU (12)
und zum Bereitstellen von Daten an die CPU (12) in Re
aktion auf die erste und die zweite Ladeanweisung, wobei
jede Speicher- und Ladeanweisung Informationen umfaßt,
die eine Adresse in dem Hauptspeicher (13) angeben, wo
bei die Steuerungseinrichtung mit der ersten Pufferein
richtung (15) und dem Hauptspeicher (13) wirksam ver
bunden ist, wobei die Steuerungseinrichtung (20) ferner
folgende Merkmale aufweist:
eine erste Ladeeinrichtung, die auf die erste Ladeanwei sung reagiert, zum Übertragen des Datenwortes, dessen Adresse in der ersten Ladeanweisung angegeben ist, an die CPU (12) und zum Veranlassen, daß eine Kopie des Datenwortes an die erste Puffereinrichtung (15) über tragen wird;
eine erste Speichereinrichtung, die auf die erste Spei cheranweisung reagiert, zum Veranlassen, daß Daten, die in der Speicheranweisung eingeschlossen sind, zusammen mit den Adreßinformationen, die in der ersten Speicher anweisung eingeschlossen sind, in der ersten Pufferein richtung (15) gespeichert werden;
eine zweite Ladeeinrichtung, die auf die zweite Ladean weisung reagiert, zum Übertragen des Datenwortes aus dem Hauptspeicher (13), dessen Adresse in der zweiten Lade anweisung angegeben ist, an die CPU (12), ohne zu veran lassen, daß eine Kopie des Datenwortes in die erste Puf fereinrichtung (15) abgelegt wird; und
eine zweite Speichereinrichtung, die auf die zweite Speicheranweisung reagiert, zum Veranlassen, daß die Daten, die in der Speicheranweisung eingeschlossen sind, in dem Hauptspeicher (13) gespeichert werden, ohne zu veranlassen, daß eine Kopie des Datenwortes in der ersten Puffereinrichtung (15) abgelegt wird.
eine erste Ladeeinrichtung, die auf die erste Ladeanwei sung reagiert, zum Übertragen des Datenwortes, dessen Adresse in der ersten Ladeanweisung angegeben ist, an die CPU (12) und zum Veranlassen, daß eine Kopie des Datenwortes an die erste Puffereinrichtung (15) über tragen wird;
eine erste Speichereinrichtung, die auf die erste Spei cheranweisung reagiert, zum Veranlassen, daß Daten, die in der Speicheranweisung eingeschlossen sind, zusammen mit den Adreßinformationen, die in der ersten Speicher anweisung eingeschlossen sind, in der ersten Pufferein richtung (15) gespeichert werden;
eine zweite Ladeeinrichtung, die auf die zweite Ladean weisung reagiert, zum Übertragen des Datenwortes aus dem Hauptspeicher (13), dessen Adresse in der zweiten Lade anweisung angegeben ist, an die CPU (12), ohne zu veran lassen, daß eine Kopie des Datenwortes in die erste Puf fereinrichtung (15) abgelegt wird; und
eine zweite Speichereinrichtung, die auf die zweite Speicheranweisung reagiert, zum Veranlassen, daß die Daten, die in der Speicheranweisung eingeschlossen sind, in dem Hauptspeicher (13) gespeichert werden, ohne zu veranlassen, daß eine Kopie des Datenwortes in der ersten Puffereinrichtung (15) abgelegt wird.
2. Cache-Speicheruntersystem (10) nach Anspruch 1, dadurch
gekennzeichnet,
daß die Steuerungseinrichtung (20) ferner eine Einrich
tung umfaßt, die auf den Erhalt einer Vor-Ladeanweisung,
die eine Adresse einschließt, reagiert, zum Veranlassen,
daß eine Kopie der neuesten Daten, die mit der Adresse
in dem Hauptspeicher (13) zusammenhängen, in der ersten
Puffereinrichtung (15) gespeichert werden, während zuge
lassen wird, daß Lade- und Speicheranweisungen ausge
führt werden, während die Vor-Ladeanweisung abläuft.
3. Cache-Speicheruntersystem (10) nach Anspruch 1 oder 2,
dadurch gekennzeichnet,
daß die Steuerungseinrichtung (20) ferner eine Einrich
tung umfaßt, die auf den Empfang einer Löschanweisung,
die eine Adresse einschließt, reagiert, zum Veranlassen,
daß jegliche Kopie der Daten, die mit der Adresse zusam
menhängen, aus der ersten Puffereinrichtung (15) ent
fernt werden.
4. Cache-Speicheruntersystem (10) nach einem der Ansprüche
1 bis 3, ferner gekennzeichnet durch
eine zweite Puffereinrichtung (16) zum Speichern von Kopien von Datenwörtern, die normalerweise in dem Haupt speicher (13) gespeichert sind, wobei die zweite Puffer einrichtung (16) ferner eine Einrichtung zum Speichern von Informationen, die die Adresse von jedem gespei cherten Datenwort in dem Hauptspeicher (13) angibt, um faßt,
wobei die Steuerungseinrichtung (20) mit der zweiten Puffereinrichtung (16) wirksam verbunden ist und ferner folgende Merkmale aufweist:
eine Einrichtung zum Empfangen einer dritten Speicheran weisung und einer dritten Ladeanweisung von der CPU (12) und zum Bereitstellen von Daten an die CPU (12) als Re aktion auf die dritte Ladeanweisung und zum Empfangen von Daten von der CPU (12) als Reaktion auf die dritte Speicheranweisung;
eine dritte Speichereinrichtung, die auf die dritte Speicheranweisung reagiert, zum Veranlassen, daß Daten, die in der Speicheranweisung eingeschlossen sind, zu sammen mit den Adreßinformationen, die in der dritten Speicheranweisung eingeschlossen sind, in der zweiten Puffereinrichtung (16) gespeichert werden; und
eine dritte Ladeeinrichtung, die auf die dritte Ladean weisung reagiert, zum Übertragen der Daten, deren Adres se in der dritten Speicheranweisung angegeben ist, an die CPU (12) und zum Veranlassen, daß eine Kopie des Datenwortes in der zweiten Puffereinrichtung (16) ge speichert wird.
eine zweite Puffereinrichtung (16) zum Speichern von Kopien von Datenwörtern, die normalerweise in dem Haupt speicher (13) gespeichert sind, wobei die zweite Puffer einrichtung (16) ferner eine Einrichtung zum Speichern von Informationen, die die Adresse von jedem gespei cherten Datenwort in dem Hauptspeicher (13) angibt, um faßt,
wobei die Steuerungseinrichtung (20) mit der zweiten Puffereinrichtung (16) wirksam verbunden ist und ferner folgende Merkmale aufweist:
eine Einrichtung zum Empfangen einer dritten Speicheran weisung und einer dritten Ladeanweisung von der CPU (12) und zum Bereitstellen von Daten an die CPU (12) als Re aktion auf die dritte Ladeanweisung und zum Empfangen von Daten von der CPU (12) als Reaktion auf die dritte Speicheranweisung;
eine dritte Speichereinrichtung, die auf die dritte Speicheranweisung reagiert, zum Veranlassen, daß Daten, die in der Speicheranweisung eingeschlossen sind, zu sammen mit den Adreßinformationen, die in der dritten Speicheranweisung eingeschlossen sind, in der zweiten Puffereinrichtung (16) gespeichert werden; und
eine dritte Ladeeinrichtung, die auf die dritte Ladean weisung reagiert, zum Übertragen der Daten, deren Adres se in der dritten Speicheranweisung angegeben ist, an die CPU (12) und zum Veranlassen, daß eine Kopie des Datenwortes in der zweiten Puffereinrichtung (16) ge speichert wird.
5. Cache-Speicheruntersystem (10) nach Anspruch 4, dadurch
gekennzeichnet,
daß die erste Speichereinrichtung ebenfalls veranlaßt, daß eine Kopie der Daten, die in der ersten Speicheran weisung eingeschlossen sind, zusammen mit den Adreß informationen, die in der ersten Speicheranweisung ein geschlossen sind, in der zweiten Puffereinrichtung (16) gespeichert wird, und
daß die erste Ladeeinrichtung ebenfalls veranlaßt, daß eine Kopie der Daten, die in der ersten Ladeanweisung eingeschlossen sind, zusammen mit den Adreßinformatio nen, die in der ersten Ladeanweisung eingeschlossen sind, in der zweiten Puffereinrichtung (16) gespeichert wird.
daß die erste Speichereinrichtung ebenfalls veranlaßt, daß eine Kopie der Daten, die in der ersten Speicheran weisung eingeschlossen sind, zusammen mit den Adreß informationen, die in der ersten Speicheranweisung ein geschlossen sind, in der zweiten Puffereinrichtung (16) gespeichert wird, und
daß die erste Ladeeinrichtung ebenfalls veranlaßt, daß eine Kopie der Daten, die in der ersten Ladeanweisung eingeschlossen sind, zusammen mit den Adreßinformatio nen, die in der ersten Ladeanweisung eingeschlossen sind, in der zweiten Puffereinrichtung (16) gespeichert wird.
6. Cache-Speicheruntersystem (10) zum Schaffen eines ge
pufferten Speicherzugriffs zwischen einer CPU (12) und
einem Hauptspeicher (13), mit
einer Puffereinrichtung (15) zum Speichern von Kopien von Datenwörtern, die normalerweise in dem Hauptspeicher (13) gespeichert werden, wobei die Puffereinrichtung (15) ferner eine Einrichtung zum Speichern von Informa tionen, die eine Adresse in dem Hauptspeicher (13) ange ben, die mit jeder der gespeicherten Kopien zusammen hängt, umfaßt;
gekennzeichnet durch
eine Steuerungseinrichtung (20) zum Empfangen erster Speicheranweisungen und erster Ladeanweisungen von der CPU (12) und zum Bereitstellen von Daten an die CPU (12) als Reaktion auf die Ladeanweisungen, wobei jede Spei cher- und Ladeanweisung Informationen umfaßt, die eine Adresse in dem Hauptspeicher (13) angeben, wobei die Steuerungseinrichtung (20) mit der Puffereinrichtung (15) und dem Hauptspeicher (13) wirksam verbunden ist, wobei die Steuerungseinrichtung (20) ferner folgende Merkmale aufweist:
eine Ladeeinrichtung, die auf die Ladeanweisung re agiert, zum Übertragen des Datenwortes, dessen Adresse in der Ladeanweisung angegeben ist, an die CPU (12) und zum Veranlassen, daß eine Kopie des Datenwortes an die Puffereinrichtung (15) übertragen wird;
eine Speichereinrichtung, die auf die Speicheranweisung reagiert, zum Veranlassen, daß die Daten, die in der Speicheranweisung eingeschlossen sind, zusammen mit den Adreßinformationen, die in der Speicheranweisung einge schlossen sind, in der Puffereinrichtung (15) gespei chert werden; und
eine Löscheinrichtung, die auf eine Löschanweisung, die eine Adresse einschließt, reagiert, zum Veranlassen, daß jegliche Kopie eines Datenwortes, die der Adresse ent spricht, in der Puffereinrichtung (15) aus der Puffer einrichtung (15) gelöscht wird.
einer Puffereinrichtung (15) zum Speichern von Kopien von Datenwörtern, die normalerweise in dem Hauptspeicher (13) gespeichert werden, wobei die Puffereinrichtung (15) ferner eine Einrichtung zum Speichern von Informa tionen, die eine Adresse in dem Hauptspeicher (13) ange ben, die mit jeder der gespeicherten Kopien zusammen hängt, umfaßt;
gekennzeichnet durch
eine Steuerungseinrichtung (20) zum Empfangen erster Speicheranweisungen und erster Ladeanweisungen von der CPU (12) und zum Bereitstellen von Daten an die CPU (12) als Reaktion auf die Ladeanweisungen, wobei jede Spei cher- und Ladeanweisung Informationen umfaßt, die eine Adresse in dem Hauptspeicher (13) angeben, wobei die Steuerungseinrichtung (20) mit der Puffereinrichtung (15) und dem Hauptspeicher (13) wirksam verbunden ist, wobei die Steuerungseinrichtung (20) ferner folgende Merkmale aufweist:
eine Ladeeinrichtung, die auf die Ladeanweisung re agiert, zum Übertragen des Datenwortes, dessen Adresse in der Ladeanweisung angegeben ist, an die CPU (12) und zum Veranlassen, daß eine Kopie des Datenwortes an die Puffereinrichtung (15) übertragen wird;
eine Speichereinrichtung, die auf die Speicheranweisung reagiert, zum Veranlassen, daß die Daten, die in der Speicheranweisung eingeschlossen sind, zusammen mit den Adreßinformationen, die in der Speicheranweisung einge schlossen sind, in der Puffereinrichtung (15) gespei chert werden; und
eine Löscheinrichtung, die auf eine Löschanweisung, die eine Adresse einschließt, reagiert, zum Veranlassen, daß jegliche Kopie eines Datenwortes, die der Adresse ent spricht, in der Puffereinrichtung (15) aus der Puffer einrichtung (15) gelöscht wird.
7. Cache-Speicheruntersystem (10) nach Anspruch 6, dadurch
gekennzeichnet,
daß die Steuerungseinrichtung (20) ferner eine Einrich
tung umfaßt, die auf eine zweite Ladeanweisung reagiert,
zum Übertragen des Datenwortes, dessen Adresse in der
zweiten Ladeanweisung angegeben ist, an die CPU (12) und
zum Veranlassen, daß jegliche Kopie des Datenwortes in
der Puffereinrichtung (15) aus der Puffereinrichtung
(15) gelöscht wird.
8. Cache-Speicheruntersystem (10) nach Anspruch 6 oder 7,
dadurch gekennzeichnet,
daß die Steuerungseinrichtung (20) ferner eine Einrich
tung umfaßt, die auf eine zweite Speicheranweisung re
agiert, zum Veranlassen, daß Daten, die in der Speicher
anweisung eingeschlossen sind, zusammen mit den Adreß
informationen, die in der Speicheranweisung eingeschlos
sen sind, in dem Hauptspeicher (13) gespeichert werden
und zum Veranlassen, daß jegliche Kopie des Datenwortes
in der Puffereinrichtung (15) aus der Puffereinrichtung
(15) gelöscht wird.
9. Cache-Speicheruntersystem (10) zum Schaffen eines ge
pufferten Speicherzugriffs zwischen einer CPU (12) und
einem Hauptspeicher (13), mit
einer ersten Puffereinrichtung (15) zum Speichern von Kopien von Datenwörtern, die normalerweise in dem Haupt speicher (13) gespeichert sind, wobei die erste Puffer einrichtung ferner eine Einrichtung zum Speichern von Informationen, die eine Adresse in dem Hauptspeicher (13) angeben, die mit jeder der gespeicherten Kopien zusammenhängt, umfaßt;
eine Steuerungseinrichtung (20) zum Empfangen von Spei cheranweisungen und Ladeanweisungen von der CPU (12) und zum Bereitstellen von Daten an die CPU (12) als Reaktion auf die Ladeanweisung, wobei jede Speicher- und Ladean weisung Informationen umfaßt, die eine Adresse in dem Hauptspeicher (13) angeben, wobei die Steuerungsein richtung (20) mit der ersten Puffereinrichtung (15) und dem Hauptspeicher (13) wirksam verbunden ist, wobei die Steuerungseinrichtung (20) ferner folgende Merkmale aufweist:
eine Ladeeinrichtung, die auf die Ladeanweisung re agiert, zum Übertragen des Datenwortes, dessen Adresse in der Ladeanweisung angegeben ist, an die CPU (12) und zum Veranlassen, daß eine Kopie des Datenwortes an die erste Puffereinrichtung (15) übertragen wird;
eine Speichereinrichtung, die auf die Speicheranweisung reagiert, zum Veranlassen, daß die Daten, die in der Speicheranweisung enthalten sind, zusammen mit den Adreßinformationen, die in der Speicheranweisung ent halten sind, in der ersten Puffereinrichtung (15) ge speichert werden; und
eine Vor-Ladeeinrichtung, die auf eine erste Vor-Ladean weisung, die eine Adresse einschließt, reagiert, zum Veranlassen, daß eine Kopie der neuesten Daten, die mit der Adresse in dem Hauptspeicher (13) zusammenhängt, in der ersten Puffereinrichtung (15) gespeichert wird, während zugelassen wird, daß Lade- und Speicheranwei sungen verarbeitet werden, während die Vor-Ladeanweisung abläuft.
einer ersten Puffereinrichtung (15) zum Speichern von Kopien von Datenwörtern, die normalerweise in dem Haupt speicher (13) gespeichert sind, wobei die erste Puffer einrichtung ferner eine Einrichtung zum Speichern von Informationen, die eine Adresse in dem Hauptspeicher (13) angeben, die mit jeder der gespeicherten Kopien zusammenhängt, umfaßt;
eine Steuerungseinrichtung (20) zum Empfangen von Spei cheranweisungen und Ladeanweisungen von der CPU (12) und zum Bereitstellen von Daten an die CPU (12) als Reaktion auf die Ladeanweisung, wobei jede Speicher- und Ladean weisung Informationen umfaßt, die eine Adresse in dem Hauptspeicher (13) angeben, wobei die Steuerungsein richtung (20) mit der ersten Puffereinrichtung (15) und dem Hauptspeicher (13) wirksam verbunden ist, wobei die Steuerungseinrichtung (20) ferner folgende Merkmale aufweist:
eine Ladeeinrichtung, die auf die Ladeanweisung re agiert, zum Übertragen des Datenwortes, dessen Adresse in der Ladeanweisung angegeben ist, an die CPU (12) und zum Veranlassen, daß eine Kopie des Datenwortes an die erste Puffereinrichtung (15) übertragen wird;
eine Speichereinrichtung, die auf die Speicheranweisung reagiert, zum Veranlassen, daß die Daten, die in der Speicheranweisung enthalten sind, zusammen mit den Adreßinformationen, die in der Speicheranweisung ent halten sind, in der ersten Puffereinrichtung (15) ge speichert werden; und
eine Vor-Ladeeinrichtung, die auf eine erste Vor-Ladean weisung, die eine Adresse einschließt, reagiert, zum Veranlassen, daß eine Kopie der neuesten Daten, die mit der Adresse in dem Hauptspeicher (13) zusammenhängt, in der ersten Puffereinrichtung (15) gespeichert wird, während zugelassen wird, daß Lade- und Speicheranwei sungen verarbeitet werden, während die Vor-Ladeanweisung abläuft.
10. Cache-Speicheruntersystem (10) nach Anspruch 9, dadurch
gekennzeichnet,
daß die Steuerungseinrichtung (20) ferner eine Einrich
tung umfaßt, die auf eine zweite Vor-Ladeanweisung, die
eine Adresse einschließt, reagiert, zum Veranlassen, daß
eine Kopie der neuesten Daten, die mit der Adresse in
dem Hauptspeicher (13) zusammenhängt, in der ersten Puf
fereinrichtung (15) gespeichert wird, während zugelassen
wird, daß Lade- und Speicheranweisungen verarbeitet
werden, während die Vor-Ladeanweisung abläuft und zum
Veranlassen, daß eine Kopie der Daten an die CPU (12),
nach einer vorher festgelegten Verzögerung, übertragen
wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US96059892A | 1992-10-13 | 1992-10-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE4323929A1 true DE4323929A1 (de) | 1994-04-14 |
Family
ID=25503375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4323929A Withdrawn DE4323929A1 (de) | 1992-10-13 | 1993-07-16 | Software-geführtes Mehrebenen-Cache-Speichersystem |
Country Status (3)
Country | Link |
---|---|
JP (1) | JPH06202951A (de) |
DE (1) | DE4323929A1 (de) |
GB (1) | GB2271653A (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001011751A1 (en) * | 1999-08-05 | 2001-02-15 | Park In Gyu | Impedance-compensated power transmission circuit |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5829025A (en) * | 1996-12-17 | 1998-10-27 | Intel Corporation | Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction |
US6275904B1 (en) | 1998-03-31 | 2001-08-14 | Intel Corporation | Cache pollution avoidance instructions |
JP2005115603A (ja) * | 2003-10-07 | 2005-04-28 | Hitachi Ltd | 記憶デバイス制御装置及びその制御方法 |
US7484062B2 (en) | 2005-12-22 | 2009-01-27 | International Business Machines Corporation | Cache injection semi-synchronous memory copy operation |
US7506132B2 (en) | 2005-12-22 | 2009-03-17 | International Business Machines Corporation | Validity of address ranges used in semi-synchronous memory copy operations |
US7454585B2 (en) | 2005-12-22 | 2008-11-18 | International Business Machines Corporation | Efficient and flexible memory copy operation |
JP2009093559A (ja) | 2007-10-11 | 2009-04-30 | Nec Corp | プロセッサ、情報処理装置、プロセッサのキャッシュ制御方法 |
US9697002B2 (en) | 2011-10-03 | 2017-07-04 | International Business Machines Corporation | Computer instructions for activating and deactivating operands |
US9690583B2 (en) | 2011-10-03 | 2017-06-27 | International Business Machines Corporation | Exploiting an architected list-use operand indication in a computer system operand resource pool |
US20130179642A1 (en) * | 2012-01-10 | 2013-07-11 | Qualcomm Incorporated | Non-Allocating Memory Access with Physical Address |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4197580A (en) * | 1978-06-08 | 1980-04-08 | Bell Telephone Laboratories, Incorporated | Data processing system including a cache memory |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2261586C3 (de) * | 1972-12-15 | 1979-08-09 | Siemens Ag, 1000 Berlin Und 8000 Muenchen | Speichereinrichtung |
US4075686A (en) * | 1976-12-30 | 1978-02-21 | Honeywell Information Systems Inc. | Input/output cache system including bypass capability |
GB2037038B (en) * | 1978-12-11 | 1983-05-05 | Honeywell Inf Systems | Cache storage systems |
US4500954A (en) * | 1981-10-15 | 1985-02-19 | International Business Machines Corporation | Cache bypass system with post-block transfer directory examinations for updating cache and/or maintaining bypass |
-
1993
- 1993-07-16 DE DE4323929A patent/DE4323929A1/de not_active Withdrawn
- 1993-10-05 GB GB9320511A patent/GB2271653A/en not_active Withdrawn
- 1993-10-13 JP JP5280168A patent/JPH06202951A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4197580A (en) * | 1978-06-08 | 1980-04-08 | Bell Telephone Laboratories, Incorporated | Data processing system including a cache memory |
Non-Patent Citations (2)
Title |
---|
IBM TDB, Vol. 32, Nr. 8B, Januar 1990, S. 76, 77 * |
THIES, K.D.: 80486 Systemsoftware-Entwicklung, C. Hanser Verlag München, Wien 1992,S.174-177,189 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001011751A1 (en) * | 1999-08-05 | 2001-02-15 | Park In Gyu | Impedance-compensated power transmission circuit |
Also Published As
Publication number | Publication date |
---|---|
GB9320511D0 (en) | 1993-11-24 |
JPH06202951A (ja) | 1994-07-22 |
GB2271653A (en) | 1994-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4330751C2 (de) | Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem zu einem Datenverarbeitungssystem | |
DE69816044T2 (de) | Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken | |
DE60037174T2 (de) | Puffersystem für externen speicherzugriff | |
DE69027253T2 (de) | Multiprozessor-Cachespeichersystem | |
DE69133302T2 (de) | Registerabbildung in einem einzigen Taktzyklus | |
DE10084556B4 (de) | Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen | |
DE3151745C2 (de) | ||
DE68924306T2 (de) | Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern. | |
DE3751474T2 (de) | Verzweigungsstrom-Koprozessor. | |
DE69025658T2 (de) | Verfahren zur Verbesserung der Leistung eines mehrstufigen Cachespeichers durch erzwungene Fehlgriffe | |
DE69935737T2 (de) | Verfahren und gerät um zeitliche und feste daten in einer einzelspeicherstruktur zu verwalten | |
DE112006000339B4 (de) | System für einen beschränkten Cache-Zugriff während des Datentransfers und Verfahren dazu | |
DE19516937A1 (de) | Hierarchisches Cachesystem für einen Computer | |
DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
DE69030931T2 (de) | Mehrfachsequenzprozessorsystem | |
DE4022885C2 (de) | Verfahren zum Verschieben von Speicherbereichen und Hierarchie-Speichersystem | |
DE3852695T2 (de) | Multiprozessorsystem mit mehreren Speichern. | |
DE10056827A1 (de) | Duale Verwendung von Cache-Verbindungen | |
EP0013737A1 (de) | Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem | |
DE2630323B2 (de) | Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik | |
DE69937611T2 (de) | Intelligenter Puffer-Speicher | |
DE68924719T2 (de) | Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung. | |
DE3439302A1 (de) | Speichersteuerungsvorrichtung | |
DE10219621A1 (de) | Schnelle Prioritätsbestimmungsschaltung mit rotierender Priorität | |
DE2856680A1 (de) | Befehlspuffer fuer ein datenverarbeitungssystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8130 | Withdrawal |