DE4225228C2 - Vorabrufpuffer und einen derartigen Vorabrufpuffer verwendendes Informationsverarbeitungssystem - Google Patents
Vorabrufpuffer und einen derartigen Vorabrufpuffer verwendendes InformationsverarbeitungssystemInfo
- Publication number
- DE4225228C2 DE4225228C2 DE4225228A DE4225228A DE4225228C2 DE 4225228 C2 DE4225228 C2 DE 4225228C2 DE 4225228 A DE4225228 A DE 4225228A DE 4225228 A DE4225228 A DE 4225228A DE 4225228 C2 DE4225228 C2 DE 4225228C2
- Authority
- DE
- Germany
- Prior art keywords
- address
- buffer
- data
- requested
- cpu
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
- Advance Control (AREA)
Description
Die vorliegende Erfindung betrifft in einem Computersystem
verwendbare Vorabrufpuffer gemäß den Oberbegriffen der An
sprüche 1 und 4 und ein Informationsverarbeitungssystem ge
mäß dem Oberbegriff des Anspruches 19, in dem ein derarti
ger Vorabrufpuffer verwendet wird. Solche Vorabpuffer sind
aus US 4 714 994 bekannt.
Ein RISC-Prozessor umfaßt einen Cache-Speicher mit geringer
Kapazität, der einen schnellen Zugriff ermöglicht, und ei
nen Hauptspeicher mit großer Kapazität, bei dem nur ein
verhältnismäßig langsamer Zugriff möglich ist. Die Leistung
eines RISC-Prozessors kann nur dann in vollem Ausmaß ge
nutzt werden, wenn die Menge der zu verarbeitenden Daten
gering ist oder wenn alle zu verarbeitenden Daten im Cache-
Speicher gefunden werden.
Wenn jedoch die Menge der zu verarbeitenden Daten groß ist
und wenn viele Cache-Speicher-Zugriffe erfolglos sind, muß
oft auf den Hauptspeicher zugegriffen werden. In einem sol
chen Fall führt der RISC-Prozessor sein Programm solange
nicht aus, bis sämtliche Daten vom Hauptspeicher gelesen
worden sind, so daß diese Wartezeit die Leistung absenkt.
Wenn daher viele erfolglose Cache-Speicher-Zugriffe auftre
ten, kann durch Verbesserung der Leistung des Prozessors
allein die Gesamt-Verarbeitungsleistung nicht erhöht wer
den.
Es ist allgemein bekannt, daß zur Lösung dieses Problems
ein Vorabrufpuffer verwendet wird. Dieser Stand der Technik
wird durch eine Arbeit mit dem Titel "Improving Direct-
Mapped Cache Performance by the Addition of a Small Fully-
Associative Cache and Prefetch Buffers" von Norman P. Joup
pi, The 17th Annual International Symposium on Computer Ar
chitecture Conference Proceedings, Mai 1990, Seiten 364 bis
373, erläutert. Gemäß diesem herkömmlichen Konzept werden
die aus dem Hauptspeicher abzuruf enden Daten vorher in ei
nen Puffer mit geringer Kapazität eingelesen, um bei er
folglosem Zugriff auf den Cache-Speicher jeglichen zusätz
lichen Zeitbedarf wegen des Zugriffs auf den Hauptspeicher
zu vermeiden.
Weitere Vorabrufpuffer sind beispielsweise aus
JP 53 134 334-A, JP 63-75934-A und JP 2-87229-A bekannt.
Die eingangs genannte US 4 714 994. betrifft einen Anwei
sungsvorabrufpuffer. Bei einem solchen Puffer ist es leicht
vorherzusagen, welcher Speicherplatz vorabzufragen ist, da
die Anweisungen in der Regel in ansteigender Reihenfolge
ihrer Adressen abgearbeitet werden. Eine Ausnahme tritt nur
bei Sprung- oder Verzweigungsbefehlen auf. In der Regel ist
also die vorabzurufende Anweisung die unmittelbar folgende,
andernfalls ist die Zieladresse der Verzweigung oder des
Sprungs vorherzusagen.
Die Reihenfolge des Zugriffs auf Daten ist häufig anders
als die des Zugriffs auf Anweisungen. Auf Daten im Haupt
speicher kann in aufsteigender oder absteigender Reihenfol
ge auf aufeinanderfolgende oder gleichmäßig beabstandete
Adressen, wahlfreie Adressen oder dergleichen zugegriffen
werden. Die für Anweisungen verwendete Adreßvorhersage ist
daher beim Vorabruf von Daten nicht anwendbar.
EP 0 389 175 A1 betrifft zwar ein "Datenvorabrufsystem",
doch umfassen die mit diesem System vorabzurufenden Daten
nur Befehle und zu diesen gehörige Parameter. Ein effizien
ter Vorabruf von Daten im engeren Sinne, die keine Anwei
sungen und Parameter, sondern eben die anhand dieser Anwei
sungen zu verarbeitenden Werte sind, ist auch mit dieser
Vorrichtung nicht möglich.
Aufgabe dieser Erfindung ist es, einen Vorabrufpuffer und
ein Computersystem mit einem solchen Vorabrufpuffer zu
schaffen, die zum Vorabruf nicht nur von Anweisungen, son
dern auch von Daten geeignet sind, d. h. bei denen ein gutes
Trefferverhältnis bei der. Vorhersage von vorabzurufenden
Daten erzielt wird, auch wenn die Adressen der abzurufenden
Daten nicht in Vorwärtsrichtung aufeinanderfolgen.
Diese Aufgabe wird gelöst durch einen Vorabrufpuffer nach
Anspruch 1 oder Anspruch 4 und ein Informationsverarbeitungssystem nach An
spruch 19.
Vorzugsweise berechnet die Adressen-Berechnungseinrichtung
eine Differenz zwischen einer von der CPU angeforderten
Adresse und der von der CPU unmittelbar vorher angeforder
ten Adresse und berechnet dann auf der Grundlage des Diffe
renzwertes eine Adresse der aus dem Hauptspeicher vorabzu
rufenden Daten.
Der Puffer umfaßt vorzugsweise n (n ganze Zahl größer als
1) Einträge, wobei die Daten-Sucheinrichtung vorzugsweise
in sämtlichen Einträgen nach den Daten mit der von der CPU
angeforderten Adresse sucht. Selbstverständlich kann die
Suche wahlweise auch auf einen Teilbereich beschränkt wer
den.
Beispielsweise kann die Adressen-Erzeugungseinrichtung für
die Adressen der vorabzurufenden Daten n Adressen erzeugen,
die an die Adresse der von der CPU angeforderten Daten an
schließen.
Die Adressen-Berechnungseinrichtung kann außerdem die
Adressen von Daten gewinnen, die aus dem Hauptspeicher vor
abgerufen werden sollen, indem sie eine Differenz zwischen
der von der CPU angeforderten Adresse und der von der CPU
unmittelbar vorher angeforderten Adresse bildet und zu der
angeforderten Adresse einen Wert addiert, der durch die
Multiplikation des Differenzwertes mit k (k ist eine ganze
Zahl zwischen 1 und n) erhalten wird.
In der ersten Ausführungsform der Erfindung erzeugt die
Adressen-Erzeugungseinrichtung n aufeinanderfolgende Adres
sen, die auf die von der CPU angeforderte Adresse folgen,
liest aus dem Hauptspeicher n (n ist vorzugsweise eine gan
ze Zahl größer als 1) Daten mit n Adressen aus und spei
chert die Daten in n Puffereinträgen. Die Daten-Suchein
richtung sucht die von der CPU angeforderten Adressen in
allen Einträgen des Puffers. Unter der Annahme, daß sich
die von der CPU angeforderten, nachfolgenden Adressen von
der unmittelbar vorher angeforderten Adresse um +1 bis +n
unterscheiden, wird der Vorabrufpuffer Treffer erzielen.
Wenn eine der von der CPU angeforderten Adresse nachfolgen
de Adresse niedriger als die ursprünglich angeforderte
Adresse ist, ändert die Adressen-Berechnungseinrichtung die
Adresse der vorabzurufenden Daten in die entgegengesetzte
Richtung. Dadurch kann der Vorabrufpuffer selbst dann Tref
fer erzielen, wenn sich die Adressen in der entgegengesetz
ten Richtung ändern.
In einem anderen erfindungsgemäßen Aufbau bildet die Adres
sen-Berechnungseinrichtung die Differenz zwischen einer von
der CPU angeforderten Adresse und einer unmittelbar vorher
angeforderten Adresse, liest Daten, deren Adressen durch
die Summe der angeforderten Adresse und der mit k (k = 1,
. . . n) multiplizierten erwähnten Differenz gegeben sind,
aus dem Hauptspeicher aus und speichert die Daten in n Puf
fereinträgen. Wenn sich daher die von der CPU angeforderte
nachfolgende Adresse auf einen Datenwert bezieht, dessen
Adresse durch die Summe der unmittelbar vorhergehenden
Adresse und der k-fachen Differenz gegeben ist, wird der
Vorabrufpuffer einen Treffer erzielen.
Da gemäß der Erfindung die Adressen-Berechnungseinrichtung
auf der Grundlage der Historie der vom Prozessor angefor
derten Adressen eine anschließend angeforderte Adresse be
rechnet, ist es möglich, das Trefferverhältnis des Vorab
rufpuffers entweder für diskontinuierliche Anforderungs
adressen oder für abnehmende Anforderungsadressen zu erhö
hen, wodurch die Leistung des Computersystems verbessert
wird.
Die Unteransprüche betreffen vorteilhafte Ausgestaltungen
der Erfindung. Weitere Aufgaben, Merkmale und Vorteile der
Erfindung ergeben sich aus der nachfolgenden Beschreibung.
Die Erfindung wird im folgenden anhand bevorzugter
Ausführungsformen mit Bezug auf die Zeichnungen näher er
läutert; es zeigen:
Fig. 1 ein Blockschaltbild eines Vorabrufpuffers gemäß
einer ersten Ausführungsform der Erfindung;
Fig. 2 ein Blockschaltbild eines Computersystems, in dem
der erfindungsgemäße Vorabrufpuffer enthalten
ist;
Fig. 3 ein Blockschaltbild der in Fig. 1 gezeigten
Daten-Sucheinrichtung;
Fig. 4 ein Blockschaltbild der in Fig. 1 gezeigten
Adressen-Berechnungseinrichtung;
Fig. 5 ein Blockschaltbild der in Fig. 1 gezeigten
Universalsteuereinheit;
Fig. 6 ein Blockschaltbild der in Fig. 1 gezeigten
Adressen-Erzeugungseinrichtung;
Fig. 7 ein Blockschaltbild des in Fig. 1 gezeigten
Puffers;
Fig. 8 ein Blockschaltbild einer Adressen-Berechnungs
einrichtung gemäß einer zweiten Ausführungsform
der vorliegenden Erfindung;
Fig. 9 ein Blockschaltbild einer Adressen-Erzeugungsein
richtung gemäß der zweiten Ausführungsform;
Fig. 10 ein Blockschaltbild einer Daten-Sucheinrichtung
gemäß der zweiten Ausführungsform;
Fig. 11 ein Blockschaltbild eines Vorabrufpuffers gemäß
einer dritten Ausführungsform der Erfindung;
Fig. 12 ein Blockschaltbild einer Universalsteuereinheit
gemäß der dritten Ausführungsform;
Fig. 13 ein Blockschaltbild eines Computersystems gemäß
einer vierten Ausführungsform der Erfindung;
Fig. 14 ein Blockschaltbild eines Vorabrufpuffers gemäß
einer fünften Ausführungsform der Erfindung; und
Fig. 15 ein Blockschaltbild einer Universalsteuereinheit
gemäß der fünften Ausführungsform.
In Fig. 2 ist ein Blockschaltbild eines Computersystems 1
gezeigt, in dem ein Vorabrufpuffer gemäß einer ersten
Ausführungsform der Erfindung enthalten ist. Das Compu
tersystem 1 umfaßt allgemein eine CPU (Zentraleinheit) 2
zum Ausführen von Rechen- und/oder Steueroperationen, ei
nen Cache-Speicher 3, der einen schnellen Speicher mit
geringer Kapazität darstellt, einen Hauptspeicher 4, der
einen langsamen Speicher mit großer Kapazität darstellt,
eine Eingabe-/Ausgabe-Einheit (E/A) 6, einen Systembus 7
und eine Speicherschnittstelle 10, die die CPU 2, den
Hauptspeicher 4 und den Systembus 7 miteinander verbin
det. Die Speicherschnittstelle 10 enthält eine CPU-
Schnittstelle 20, die einen Anschluß mit der CPU 2
darstellt, eine Systembus-Schnittstelle 70, die einen An
schluß mit dem Systembus 7 darstellt, eine Speicher-
Steuereinrichtung 40 zum Steuern des Hauptspeichers 4 und
einen Vorabrufpuffer 5 zum vorherigen Auslesen von im
Hauptspeicher 4 gespeicherten Daten und zum vorherigen
Speichern der Daten.
Die CPU 2 sucht benötigte Daten im Cache-Speicher 3 und
liest sie von dort, falls sie sie dort
findet. Wenn im Cache-Speicher 3 die benötigten Daten
nicht vorhanden sind, greift die CPU 2 auf den Hauptspei
cher 4 zu. Gleichzeitig führt die CPU 2 eine Suche im
Vorabrufpuffer 5 aus. Falls die benötigten Daten im Vorabrufpuffer
gefunden werden, liest die CPU 2
sie aus dem Vorabrufpuffer 5 aus, speichert sie
im Cache-Speicher 3 und bricht
den Zugriff auf den Hauptspeicher 4 ab.
Wenn im Vorabrufpuffer die benötigten Daten nicht vorhan
den sind, bricht die CPU 2 den Zugriff auf den Hauptspeicher
4 nicht ab, verwendet die Daten von dort und speichert sie
im Cache-Speicher 3. Ferner ruft die CPU 2
die diesen Daten folgenden oder vorhergehenden Daten aus
dem Hauptspeicher 4 ab, um sie im Vorabrufpuffer 5 zu
speichern.
In Fig. 1 ist der Vorabrufpuffer 5 im einzelnen gezeigt.
In dieser Ausführungsform umfaßt der Vorabrufpuffer 5
vier Puffermodule 50-0, 50-1, 50-2 und 50-3, eine Univer
salsteuereinheit 51, einen Datenausgabe-Multiplexer 52
und einen Adressenausgabe-Multiplexer 53. Jeder Puffermo
dul 50-i (i = 0, 1, 2 oder 3) umfaßt eine Daten-Suchein
richtung 500, eine Adressen-Berechnungseinrichtung 501,
eine Adressen-Erzeugungseinrichtung 502, einen Puffer 503
mit vier Einträgen und eine Datenausgabeeinheit 504.
Wenn die CPU 2 vom Vorabrufpuffer 5 Daten anfordert, wird
an die Daten-Sucheinrichtung 500 im entsprechenden
Puffermodul 50-i über die Adressen-Eingangsleitung 55 ei
ne angeforderte Adresse geschickt. Dann sucht die Daten-
Sucheinrichtung 500 Daten mit identischer Adresse im Puf
fer 503. Wenn die angeforderten Daten vorhanden sind,
gibt die Daten-Sucheinrichtung 500 die Daten über die Da
tenausgabeeinheit 504 und über den Datenausgabe-Multiple
xer 52 an die CPU 2 und an den Cache-Speicher 3 aus.
Die Adressen-Berechnungseinrichtung 501 speichert
die von der CPU 2 angeforderte Adresse, um anschließend an
zufordernde Adressen zu berechnen. Die Adressen-Erzeugungs
einrichtung 502 erzeugt soviele Adressen von benötigten
Daten, bis ausreichend viele der angeforderten Adresse
nachfolgende oder vorhergehende Adressen (in dieser
Ausführungsform: vier) gespeichert sind. Anschließend werden
diese Adressen über den Adressen-Ausgabe-Multiplexer 53
an den Hauptspeicher 4 geschickt, um so die entsprechenden
Daten zu erhalten; daraufhin speichert die Adressen-
Erzeugungseinrichtung 502 die erhaltenen Daten im Puffer
503. Die Adressen-Berechnungseinrichtung 501 entscheidet,
ob die im Puffer 503 zu speichernden Daten der angefor
derten Adresse folgen oder der angeforderten Adresse vor
hergehen.
Die Daten-Sucheinrichtung 500 ruft die Daten vom Puffer
503 ab. Wenn die angeforderten Daten nicht vorhanden sind,
meldet sie der Universalsteuereinheit 51 die erfolglose Suche
("kein Treffer"-Information).
Die Universalsteuereinheit 51 sammelt die den Treffersta
tus der vier Puffermodule 50-0, 50-1, 50-2 und 50-3
betreffende Information; falls wenigstens ein Puffermodul
50-i einen Treffer erzielt, wählt die Universalsteuerein
heit 51 diesen Puffermodul 50-i und schickt dessen
Ausgabe über den Datenausgabe-Multiplexer 52 an die CPU 2
und an den Cache-Speicher 3. Hierbei werden die Inhalte
der Puffer 503, die von der Universalsteuereinheit 51
nicht gewählt worden sind, unverändert gelassen.
Wenn die Suche in jedem Puffermodul 50-i fehlgeht, wählt
die Universalsteuereinheit 51 einen der Puffermodule 50-i
und aktualisiert dessen Inhalt entsprechend den folgenden
Prozeduren:
- (1) In jedem der vier Puffermodule 50-i bildet die Uni versalsteuereinheit 51 die Differenz zwischen der zuletzt getroffenen Adresse, die in der Adressen-Berechnungsein richtung gespeichert ist, und der momentan angeforderten Adresse.
- (2) Wenn in wenigstens einem Puffermodul 50-i die Adres sendifferenz unter einem vorgegebenen Schwellen wert liegt, wählt die Universalsteuereinheit 51 einen dieser Puffermodule 50-i aus und liest Daten vom Haupt speicher 4 solange aus, bis im Puffer 503 des gewählten Puffermoduls 50-i Daten mit vier der angeforderten Adresse nachfolgenden oder vorhergehenden Adressen gespeichert sind.
- Der Schwellenwert wird als Referenzwert bei der Bestim mung verwendet, ob die angeforderte Adresse eine an die zuletzt getroffene Adresse anschließende Adresse ist oder nicht. Wenn die Adressendifferenz unter dem Schwel lenwert liegt, stellt die Universalsteuereinheit 51 fest, daß die Adresse an die zuletzt getroffene Adresse anschließt und ruft die Daten aus dem Puffer 503 ab. Wenn in dieser Ausführungsform die angeforderte Adresse größer als die in der Adressen-Berechnungseinrichtung 501 gespeicherte, zuletzt getroffene Adresse ist und wenn die Adressendifferenz den Wert 4 nicht übersteigt, liest die Adressen-Berechnungseinrichtung 501 nacheinander der an geforderten Adresse nachfolgende Daten aus. Wenn die an geforderte Adresse kleiner als die zuletzt getroffene Adresse ist und wenn die Adressendifferenz den Wert 4 nicht übersteigt, steuert die Adressen-Berechnungsein richtung 501 die Adressen-Erzeugungseinrichtung 502 so, daß nacheinander der angeforderten Adresse vorhergehende Daten ausgelesen werden.
- Zwischen der Betriebsart, in der nachfolgende Daten gelesen werden, und der Betriebsart, in der vorhergehende Daten gelesen werden, wird nur umgeschaltet, wenn der Vorabrufpuffer keinen Treffer erzielt und die Adressen differenz den Wert 4 nicht überschreitet. Andernfalls wird die Betriebsart der Adressen-Berechnungseinrichtung 501 in jedem Puffermodul 50-i unverändert gelassen.
- (3) Wenn in keinem Puffermodul 50-i die Adressendifferenz kleiner als der Schwellenwert ist, wählt die Universal steuereinheit 51 aus den Puffermodulen 50-i denjenigen Puffermodul aus, auf den für die längste Zeit nicht zugegriffen worden ist, und liest Daten aus dem Haupt speicher 4 solange aus, bis im Puffer des gewählten Puffermoduls 50-i Daten mit vier der angeforderten Adresse nachfolgenden oder vorhergehenden Adressen gespeichert sind.
Nach den obenbeschriebenen Prozeduren (1), (2) und (3)
wird die zuletzt getroffene Adresse, die in der Adressen-
Berechnungseinrichtung 501 des Puffermoduls 50-i, in den
Daten verlegt worden sind, gespeichert ist, als angefor
derte Adresse initialisiert.
Während des Lesens der Daten aus dem Hauptspeicher 4 ak
zeptiert der Vorabrufpuffer 5 sämtliche Anforderungen von
der CPU 2. Folglich wird vom Puffer 503 eines jeden
Puffermoduls 50-i die maximale Anzahl von Datenelementen
abgerufen. In einem solchen Fall identifiziert der Puffer
503 gültige Einträge und ungültige Einträge im Puffer
503, woraufhin die Universalsteuereinheit 51 die Suche
nach den gültigen Daten steuert.
Wenn Daten von der CPU 2 oder von der E/A 6 im Hauptspei
cher 4 gespeichert worden sind, ermittelt die Daten-
Sucheinrichtung 500 in jedem Puffermodul 50-i, ob im Puf
fer 503 Daten der betreffenden Adresse gespeichert sind,
um die Inhalte sämtlicher Puffer 503 mit solchen Adressen
zurückzusetzen.
In Fig. 3 ist die Daten-Sucheinrichtung 500 im einzelnen
gezeigt. Die kleinste Adresse und die größte Adresse der
im Puffermodul 50-i gespeicherten vorabgerufenen Daten
sind im Minimaladressenregister 5022 bzw. im Maxima
ladressenregister 5023 der Adressen-Erzeugungseinrichtung
502 gespeichert. Ein Komparator 5001-0 vergleicht die an
geforderte Adresse mit dem Inhalt des Minimaladressenre
gisters 5022 und gibt WAHR aus, falls die angeforderte
Adresse einen größeren Wert als die kleinste Adresse be
sitzt. Ein Komparator 5001-1 vergleicht die angeforderte
Adresse mit dem Inhalt des Maximaladressenregisters 5023
und gibt WAHR aus, falls die angeforderte Adresse einen
Wert besitzt, der kleiner als die größte Adresse ist.
Wenn beide Ausgänge der Komparatoren 5001-0 und 5001-1
WAHR sind, wird festgestellt, daß der Vorabrufpuffer ei
nen Treffer erzielt hat ("Treffer"-Information).
Jeder der Komparatoren 5002-0, 5002-1, 5002-2 und 5002-3
vergleicht die zwei niedrigstwertigen Bits der angeforder
ten Adresse mit den zwei niedrigstwertigen Bits des in je
dem der vier Adresseneinträge 5030-0, 5030-1, 5030-2 und
5030-3 im Puffer 503 gespeicherten Adressenidentifizie
rungszeichens und gibt WAHR aus, wenn diese Bits jeweils
miteinander identisch sind. Auf der Grundlage dieses Aus
gangssignals wird schließlich festgestellt, welche der
vier Adressen/Daten im Puffer getroffen worden sind.
In Fig. 4 ist die Adressen-Berechnungseinrichtung 501 im
einzelnen gezeigt. Eine Subtraktionseinrichtung 5011 bil
det die Differenz zwischen der angeforderten Adresse und
der im Register für die zuletzt getroffene Adresse 5010
gespeicherten Adresse des letzten Treffers. Eine Be
reichsbestimmungsschaltung 5012 empfängt diese Adressen
differenz und aktiviert eine Bereichsinformation, falls
die Differenz unter einem vorgegebenen
Schwellenwert liegt. Wenn keiner der Puffer 50-i einen
Treffer erzielt, wird die Bereichsinformation 5015 in der
Universalsteuereinheit 51 zur Bestimmung desjenigen
Puffermoduls 50-i verwendet, in den neue Vorabrufdaten
abgerufen werden sollen. Der Schwellenwert, der in der
vorliegenden Ausführungsform "8" ist, stellt einen
Referenzwert dar, anhand dessen festgestellt wird, ob die
angeforderte Adresse an die zuletzt getroffene Adresse
anschließt.
Die Bereichsbestimmungsschaltung 5012 überschreitet den
Wert eines Vorwärts-/Rückwärts-Adressenregisters 5013,
wenn der Absolutwert der Adressendifferenz den Wert 4
nicht übersteigt, wenn sich das Vorzeichen der Differenz
vom Vorzeichen eines Registers für die Differenz der zu
letzt getroffenen Adresse (Differenz des letzten Tref
fers) 5014 unterscheidet und wenn keiner der Puffermodule
50-i einen Treffer erzielt. Auf der Grundlage des Wertes
des Vorwärts-/Rückwärts-Adressenregisters 5013 wird
festgestellt, ob der Puffermodul 50-i im voraus Adressen
in Vorwärtsrichtung oder in Rückwärtsrichtung liest.
Wenn die angeforderte Adresse im Puffermodul 50-i getrof
fen wurde, wird die angeforderte Adresse als zuletzt ge
troffene Adresse im Register für die zuletzt getroffene
Adresse 5010 gespeichert. Der Inhalt des
Registers für die Differenz der zuletzt getroffenen
Adresse 5014 wird durch die nun berechnete Differenz der
zuletzt getroffenen Adresse ebenfalls aktualisiert. Wenn
kein Puffermodul 50-i einen Treffer erzielt und wenn die
der angeforderten Adresse nachfolgenden Daten in den Puf
fer 503 des Puffermoduls 50-i geladen werden müssen, wird
die angeforderte Adresse als Anfangswert im Register für
die zuletzt getroffene Adresse 5010 gespeichert, außerdem
wird der vorher bezeichnete Anfangswert im Register für
die Differenz der zuletzt getroffenen Adresse 5014
gespeichert.
In Fig. 5 ist die Universalsteuereinheit 51 im einzelnen
gezeigt. In einem Trefferdetektor 511 wird die Trefferin
formation für jeden Puffermodul 50-i gesammelt. Wenn we
nigstens ein Puffermodul 50-i mit einem Treffer vorhanden
ist, wählt der Trefferdetektor 511 diesen einen Treffer
aufweisenden Puffermodul 50-i entsprechend einer vorgege
benen Regel aus und schickt ein "Treffer"-Wählsignal an
den gewählten Puffermodul 50-i. Ferner wird an eine LRU-
Steuereinrichtung 510, an eine Ausgangsadressen-Wählein
richtung 512 und an den Datenausgabe-Multiplexer 52
mittels des "Treffer"-Wählsignals ein Treffer ge
meldet. Wenn kein Puffermodul
50-i einen Treffer aufweist, wird an jeden Puffermodul 50-i über
eine Signalleitung eine "kein Treffer" -Information
bezüglich der erfolglosen Suche geliefert.
Die LRU-Steuereinheit 510 gewinnt aus der Historie der
einen Treffer aufweisenden Puffermodule 50-i denjenigen
Puffermodul 50-i, auf den für die längste Zeit nicht zu
gegriffen worden ist. Wenn bei keinem Puffermodul 50-i
die von der Adressen-Berechnungseinrich
tung 501 erzeugte Bereichsinformation 5015 aktiv ist,
wird ein LRU-Puffer-Wählsignal an den Puffermo
dul 50-i ausgegeben, auf den für die längste Zeit nicht
zugegriffen worden ist. Gleichzeitig werden aus dem
Hauptspeicher die der angeforderten Adresse folgenden
oder vorhergehenden Daten ausgelesen und in dem durch das
LRU-Puffer-Wählsignal bezeichneten Puffermodul 50-i
gespeichert. Wenn hingegen die Bereichsinformation 5015 für
wenigstens einen Puffermodul 50-i aktiv ist, wählt die
LRU-Steuereinheit 510 einen dieser Puffermodule 50-i aus und
schickt das Bereichsauswahlsignal an den gewählten
Puffermodul 50-i.
Die Ausgangsadressen-Wähleinrichtung 512 meldet an den
Adressenausgabe-Multiplexer 53, daß die Ausgangsadresse
von dem durch den Trefferdetektor 511 oder die LRU-
Steuereinheit 510 bezeichneten Puffermodul 50-i an den
Hauptspeicher 4 ausgegeben wird. Wenn weder der Treffer
detektor 511 noch die LRU-Steuereinheit 510 eine Bezeich
nung ausgibt, wird gemeldet, daß die angeforderte Adresse
an den Hauptspeicher 4 ausgegeben wird.
In Fig. 6 ist die Adressen-Erzeugungseinrichtung 502 im
einzelnen gezeigt. Eine Recheneinrichtung 5020 für die
größte und die kleinste Adresse gewinnt auf der angefor
derten Adresse und aus der Adressenabfragerichtung
die größte Adresse und die kleinste
Adresse der Daten, die nacheinander im Puffer zu spei
chern sind, und speichert die resultierende größte bzw. die
kleinste Adresse in einem Minimaladressenre
gister 5022 bzw. in einem Maximaladressenregister 5023.
Eine Ladeadressen-Erzeugungseinrichtpng 5021 gewinnt aus
der angeforderten Adresse, der Adressenabfragerichtung,
dem Treffer-Wählsignal, dem LRU-
Puffer-Wählsignal und dem Bereichsauswahlsignal eine
Adresse der vom Hauptspeicher 4 zu ladenden Daten und
gibt diese Adresse aus. Die Ladeadressen-Erzeugungsein
richtung 5021 erzeugt außerdem ein Ungültigkeitssignal,
das die im Puffer 503 nicht benötigten Daten angibt, und
schickt das Ungültigkeitssignal an den Puffer 503.
Zum Zeitpunkt eines Treffers wählt die Ladeadressen-
Erzeugungseinrichtung 5021 aus den Daten, deren Adressen
den vier der angeforderten Adresse nachfolgenden oder
vorhergehenden Adressen entsprechen, diejenigen Daten
aus, die nicht im Puffer 503 gespeichert sind, und
erzeugt anschließend nacheinander die Adressen der Daten.
Wenn das LRU-Puffer-Wählsignal aktiv ist oder wenn sowohl
das Bereichswählsignal als auch die Signalleitung ("kein
Treffer") aktiv sind erzeugt die Ladeadressen-Erzeu
gungseinrichtung 5021 vier der angeforderten Adresse
nachfolgende oder vorhergehende Adressen.
In Fig. 7 ist der Puffer 503 im einzelnen gezeigt. In
vier Adresseneinträgen 5030-0, 5030-1, 5030-2 und 5030-3
sind Adressenidentifizierungszeichen gespeichert, ferner
sind in vier Dateneinträgen 5031-0, 5031-1, 5031-2 und
5031-3 die Daten gespeichert, die den Adressenidentifi
zierungszeichen entsprechen. Eine Schreibsteuerschaltung
5032 steuert das Schreiben in die Adresseneinträge 5030-i
und in die Dateneinträge 5031-i und ferner die Gültigkeit
bzw. Ungültigkeit eines jeden Eintrags.
Während der Adressen- und Datenspeicherung speichert die
Schreibsteuerschaltung 5032 zunächst in den gültigen
Adresseneinträgen 5030-i die von der Adressen-Erzeugungs
einrichtung 502 geschickten Ladeadressen. Dann speichert
die Schreibsteuerschaltung 5032 entsprechend den eingege
benen Daten und dem Datengültigkeitssignal vom Hauptspei
cher 4 die aus dem Hauptspeicher 4 ausgelesenen Daten in
demjenigen Dateneintrag 5031-i, der dem vorher geladenen
Adresseneintrag 5030-i entspricht.
Entsprechend dem von der Ladeadressen-Erzeugungseinrich
tung 5021 erzeugten Ungültigkeitssignal macht die
Schreibsteuerschaltung 5032 die Inhalte des bezeichneten
Adresseneintrags 5030-i und des bezeichneten Datenein
trags 5031-i ungültig. Wenn festgestellt wird, daß die
Adresse zum Schreiben in den Hauptspeicher 4 im Adressen
eintrag 5030-i gespeichert ist, erzeugt die Daten-Such
einrichtung 500 für den Puffer 503 ein Rücksetzsignal,
anschließend macht die Schreibsteuerschaltung 5032 die
Inhalte für jeden Adresseneintrag 5030-i und für jeden
Dateneintrag 5031-i ungültig.
Da in dieser Ausführungsform die Adressen-Berechnungsein
richtung 501 die Zunahme bzw. die Abnahme der angeforder
ten Adresse überwacht, ist es möglich, daß die Adresse in
Vorwärtsrichtung oder in Rückwärtsrichtung getroffen
wird, wenn die aufeinanderfolgend angeforderten Adressen
von der CPU 2 ankommen. Da der Puffer 503 vier
Einträge besitzt, in denen die Daten von vier aufeinan
derfolgenden Adressen gespeichert werden, ist es außerdem
möglich, für jede andere nachfolgende angeforderte
Adresse, etwa für jede dritte nachfolgende angeforderte
Adresse oder für jede vierte nachfolgende angeforderte
Adresse einen Treffer zu erzielen.
Da der Puffer 503 Daten von vier aufeinanderfolgenden
Adressen speichert, wird ein Treffer dadurch festge
stellt, daß ermittelt wird, ob die angeforderte Adresse
in dem Bereich zwischen der größten Adresse und der
kleinsten Adresse im Puffer liegt, so daß Trefferdaten
durch einen Vergleich der zwei niedrigstwertigen Bits der
Adressen ausgewählt werden können, wodurch der Hardware
umfang der Komparatoren verringert wird.
Da der Vorabrufpuffer 5 auch dann arbeitet, wenn nur ein
Teil der Daten in den vier Einträgen des Puffers 503 ge
speichert ist, muß die CPU 2 nicht warten, bis die Daten
in sämtlichen Einträgen des Puffers 503 gespeichert sind,
so daß verhindert wird, daß der Vorabrufpuffer 5 wegen
des Zugriffs auf den Hauptspeicher 4 die Leistung ab
senkt.
Da schließlich vier Puffermodule 50-i vorhanden sind,
müssen höchstens vier vorgegebene Regeln zum Treffen der
angeforderten Adresse gespeichert werden, so daß der Vor
abrufpuffer 5 mit höherer Wahrscheinlichkeit Treffer er
zielen kann. Da die Regeln zum Treffen der angeforderten
Adresse in Abhängigkeit von der Anzahl der Puffermodule
gespeichert werden können, ist es möglich, das Treffer
verhältnis zu verbessern.
In Fig. 8-10 ist eine zweite Ausführungsform der Erfindung
gezeigt. Diese Ausführungsform unterscheidet sich von der
ersten Ausführungsform in der Konstruktion sowohl der
Adressen-Berechnungseinrichtung 501 (Fig. 8) als auch der Adres
sen-Erzeugungseinrichtung 502 (Fig. 9) der Daten-Sucheinrich
tung 500 (Fig. 10).
In der Adressen-Berechnungseinrichtung 501 bildet die
Subtraktionseinrichtung 5011 die Differenz zwischen der
angeforderten Adresse und der zuletzt getroffenen Adres
se, die in dem Register für die zuletzt getroffene
Adresse 5010 gespeichert ist. Die Bereichsbestimmungs
schaltung 5012 empfängt die Adressendifferenz und akti
viert die Bereichsinformation 5015, falls der Absolutwert
der Differenz unter einem vorgegebenen Schwellenwert
liegt. Außerdem wird die Differenz an die Adressen-
Erzeugungseinrichtung 502 geliefert. Der Schwellenwert
stellt einen Referenzwert dar, anhand dessen festgestellt
wird, ob die angeforderte Adresse an die zuletzt getrof
fene Adresse anschließt; dieser Wert ist durch den mit
dem Faktor 8 multiplizierten Wert des Registers für die
Differenz der zuletzt getroffenen Adresse 5014 gegeben.
Wenn der Absolutwert der Adressendifferenz kleiner als
der vierfache Wert des Registers für die Differenz der
zuletzt getroffenen Adresse 5014 ist, wenn sich das
Vorzeichen dieser Adressendifferenz von demjenigen des
Wertes des Registers für die Differenz der zuletzt
getroffenen Adresse 5014 unterscheidet und wenn keiner
der Puffermodule 50-i einen Treffer erzielt, überschreibt die Be
reichsbestimmungsschaltung 5012 den Wert des
Vorwärts-/Rückwärts-Adressenregisters 5013. Auf der
Grundlage des Wertes des Vorwärts-/Rückwärts-Adressenre
gisters 5013 wird festgestellt, ob der Puffermodul 50-i
die Adressen ihn der Vorwärts- oder Rückwärtsrichtung
liest.
Wenn im Puffermodul 50-i eine angeforderte Adresse
getroffen wird, wird diese angeforderte Adresse im
Register für die zuletzt getroffene Adresse 5010 als zu
letzt getroffene Adresse gespeichert. Genauso
wird der Inhalt des Registers für die Differenz der
zuletzt getroffenen Adresse 5014 auf die nun
berechnete Differenz der zuletzt getroffenen Adresse ak
tualisiert. Wenn keiner der Puffermodule 50-i einen
Treffer erzielt und wenn der Puffer 503 des Puffermoduls
50-i die der angeforderten Adresse nachfolgenden Daten
lädt, wird die angeforderte Adresse in dem Register für
die zuletzt getroffene Adresse 5010 als Anfangswert
gespeichert, außerdem wird der vorher bezeichnete An
fangswert in dem Register für die Differenz der zuletzt
getroffenen Adresse 5014 gespeichert.
In Fig. 9 ist die Adressen-Erzeugungseinrichtung 502 im
einzelnen gezeigt. Die Recheneinrichtung 5020 für die
größte Adresse und die kleinste Adresse gewinnt aus der
angeforderten Adresse, der Adressenabfragerichtung
und der von der Adressen-Berech
nungseinrichtung 501 gelieferten Differenz die kleinste
und die größte Adresse der nachfolgend im Puffer zu
speichernden Daten und speichert die erhaltene kleinste
Adresse und die erhaltene größte Adresse im Minimaladres
senregister 5022 bzw. im Maximaladressenregister 5023.
Die Ladeadressen-Erzeugungseinrichtung 5021 gewinnt aus
der angeforderten Adresse, der Adressenabfrage
richtung, der "Treffer"-Information, dem
LRU-Puffer-Wählsignal, der Bereichsinformation und der
Adressendifferenz eine Adresse der aus dem Hauptspeicher
4 zu ladenden Daten und gibt die gewonnene Adresse aus.
Die Ladeadressen-Erzeugungseinrichtung 5021 erzeugt
außerdem ein Ungültigkeitssignal, das die im Puffer 503
nicht benötigten Daten angibt, wobei dieses Ungültig
keitssignal an den Puffer 503 geschickt wird.
Zum Zeitpunkt eines Treffers wählt die Ladeadressen-
Erzeugungseinrichtung 5021 aus den vier Adressen, in durch die
Adressendifferenz gegebenen Abständen der angeforderten Adresse
nachfolgen oder vorhergehen,
diejenigen aus, die in dem Puffer 503 nicht
vorhanden sind, und erzeugt aufeinanderfolgend diese
Adressen. Wenn zu diesem Zeitpunkt die Daten im
Puffer 503 eine Adresse besitzen, die im Bereich zwischen
der größten Adresse und der kleinsten Adresse liegt, und
wenn sich diese Adresse von den aufeinanderfolgend
erzeugten Adressen unterscheidet, erzeugt die Ladeadres
sen-Erzeugungseinrichtung 5021 ein Ungültigkeitssignal,
um diese Daten ungültig zu machen.
Wenn das LRU-Puffer-Wählsignal aktiv ist und wenn sowohl
die Bereichsinformation als auch die "kein Treffer"-
Information aktiv sind, erzeugt die Ladeadressen-Erzeu
gungseinrichtung 5021 vier der angeforderten Adresse in
durch die Adressendifferenz gegebenen Abständen nachfolgende oder
vorhergehende Adressen.
In Fig. 10 ist die Daten-Sucheinrichtung 500 im einzelnen
gezeigt. In der Daten-Sucheinrichtung 500 vergleichen
Komparatoren 5003-0, 5003-1, 5003-2 und 5003-3 die
angeforderte Adresse mit sämtlichen Adressenidentifizie
rungszeichen der nun im Puffermodul 50-i gespeicherten,
vorabgerufenen Daten; wenn ein identisches Adresseniden
tifizierungszeichen vorhanden ist, stellt die Daten-
Sucheinrichtung 500 fest, daß ein Treffer erzielt worden
ist.
Da die Adressen-Berechnungseinrichtung 501 in dieser Aus
führungsform die Differenz der angeforderten Adresse
überwacht, ist es möglich, im Falle von in regelmäßigen
Abständen aufeinanderfolgenden angeforderten Adressen ei
nen Treffer entweder in Vorwärtsrichtung oder in Rück
wärtsrichtung zu erzielen. Da der Puffer 503 vier Einträ
ge besitzt, in denen Daten von vier in regelmäßigen
Abständen aufeinanderfolgenden Adressen gespeichert
werden können, ist es möglich, auch dann einen Treffer zu
erzielen, wenn der Abstand der angeforderten Adressen von der zuletzt getroffenen
Adresse das Zwei-, Drei- oder Vierfache der Differenz ist. Da außerdem vier
Puffermodule 50-i vorgesehen sind, müssen höchstens vier
vorgegebene Regeln zum Treffen von angeforderten Adressen
gespeichert werden. Da die Puffermodule 50-i auch dann
arbeiten, wenn die Daten nur in einem Teil der vier
Einträge des Puffers 503 gespeichert sind, muß die CPU 2
nicht warten, bis die Daten in sämtlichen Einträgen des
Puffers 503 gespeichert sind, wodurch verhindert wird,
daß die Leistung wegen des Zugriffs des Vorabrufpuffers 5
auf den Hauptspeicher 4 abgesenkt wird.
In Fig. 11 ist eine dritte Ausführungsform der vorliegen
den Erfindung gezeigt. Diese Ausführungsform unterschei
det sich von der ersten Ausführungsform durch die Univer
salsteuereinheit 51. Die Universalsteuereinheit 51
besitzt eine Signalleitung, auf der sie meldet, ob von
der CPU 2 auf den Vorabrufpuffer 5 aufgrund eines Lese
fehlers oder eines Schreibfehlers zugegriffen worden ist.
In Fig. 12 ist die Universalsteuereinheit 51 im einzelnen
gezeigt. Ein Schreib-/Lese-Steuerregister 514 gibt für
jeden Puffermodul 50-i an, ob er momentan Daten eines Le
sefehlers oder eines Schreibfehlers speichert. Das
Schreib-/Lese-Steuerregister 514 wird durch die LRU-
Steuereinrichtung 510 neu geladen; die LRU-Steuereinrich
tung 510 und der Trefferdetektor 511 greifen auf das
Schreib-/Lese-Steuerregister 514 zu.
Die "Treffer"-Informationen der einzelnen Puffermodule
50-i werden im Trefferdetektor 511 gesammelt. Wenn sich
unter den Puffermodulen 50-i wenigstens ein einen Treffer
aufweisender Puffermodul 50-i befindet, dessen Attribut
mit dem von der CPU 2 gelieferten Lesefehler-
/Schreibfehler-Attribut identisch ist, wählt der Treffer
detektor 511 gemäß einer vorgegebenen Regel einen der ei
nen Treffer aufweisenden Puffermodule 50-i aus und meldet
die Trefferinformation an die LRU-Steuereinrichtung 510,
die Ausgangsadressen-Wähleinrichtung 512, den Puffermodul
50-i und den Datenausgabe-Multiplexer 52. Wenn kein einen
Treffer aufweisender Puffermodul 50-i vorhanden ist,
schickt der Trefferdetektor 511 die "kein Treffer"-
Information an jeden Puffermodul 50-i.
Die LRU-Steuereinrichtung 510 verwaltet gleichzeitig den
Lesefehler-Puffermodul 50-i, auf den für die längste Zeit
nicht zugegriffen worden ist, und den Schreibfehler-
Puffermodul 50-i, auf den für die längste Zeit nicht zu
gegriffen worden ist. Wenn sämtliche das gleiche Attribut
wie die angeforderte Adresse aufweisenden Puffermodule
50-i keinen Treffer aufweisen und wenn kein Puffermodul
50-i vorhanden ist, für den das Bereichssignal aktiv ist,
wählt die LRU-Steuereinrichtung 510 aus den Puffermodulen
50-i, die jeweils ein vom Attribut der angeforderten
Adresse verschiedenes Attribut besitzen, denjenigen
Puffermodul 50-i aus, auf den für die längste Zeit nicht
zugegriffen worden ist, und ändert den Puffermodul 50-i,
derart, daß er das gleiche Attribut wie die angeforderte
Adresse besitzt. Dieses Attribut wird geändert und in das
Schreib-/Lese-Steuerregister 514 geladen, woraufhin die
LRU-Steuereinrichtung 510 ein auf den Puffermodul 50-i
bezogenes LRU-Signal aktiviert. Im Ergebnis werden im
Puffermodul 50-i die Daten gespeichert, deren Adressen
der angeforderten Adresse nachfolgen oder vorhergehen.
Wenn kein Puffermodul 50-i vorhanden ist, dessen Attribut
sich von demjenigen der angeforderten Adresse unterschei
det, wird aus den Puffermodulen 50-i mit demselben
Attribut derjenige Puffermodul 50-i ausgewählt, auf den
für die längste Zeit nicht zugegriffen worden ist.
Gemäß dieser Ausführungsform ist es möglich, von einem
Puffermodul 50-i zum nächsten dynamisch umzuschalten, um
Schreibfehler und Lesefehler zu beherrschen. Hierbei wer
den die einen Lesefehler aufweisende Adresse bzw. die ei
nen Schreibfehler aufweisende Adresse regelmäßig verscho
ben. Wenn ein Lesefehler und ein Schreibfehler nicht von
einander getrennt werden, beeinflussen sie sich gegensei
tig, wodurch die Adressenberechnung gestört wird. Wenn
der Lesefehler und der Schreibfehler voneinander getrennt
werden, ist es möglich, das Trefferverhältnis des Vorab
rufpuffers 5 zu verbessern, sofern eine Regelmäßigkeit
leicht ermittelt werden kann, wodurch die Leistung eines
Computersystems im Vergleich zu dem Fall, in dem ein Le
sefehler und ein Schreibfehler nicht voneinander getrennt
werden, verbessert werden kann.
In Fig. 13 ist eine vierte Ausführungsform der vorliegen
den Erfindung gezeigt. Diese Ausführungsform unterschei
det sich von der ersten Ausführungsform dadurch, daß das
Computersystem 1 eine aus vier CPU′s 2 aufgebaute Multi
prozessorstruktur besitzt. In dieser Ausführungsform sind
16 Puffermodule 50-i, also viermal soviel wie im Falle
einer einzelnen CPU 2, vorgesehen.
Gemäß dieser Ausführungsform ist es möglich, die Leistung
eines Vorabrufpuffers in einem Multiprozessorsystem zu
verbessern.
In Fig. 14 ist eine fünfte Ausführungsform der vorliegen
den Erfindung gezeigt. Diese Ausführungsform unterschei
det sich von der vierten Ausführungsform dadurch, daß die
Universalsteuereinheit 51 eine Signalleitung besitzt,
über die die Nummer des Prozessors gemeldet wird, dessen
CPU 2 den Zugriff auf den Vorabrufpuffer 5 nutzt.
In Fig. 15 ist diese Universalsteuereinheit 51 im einzel
nen gezeigt. Ein Prozessornummer-Steuerregister 515 gibt
die Nummer eines Prozessors an, dessen Vorabrufdaten mo
mentan in jedem Puffermodul 50-i gespeichert sind. Das
Prozessornummer-Steuerregister 515 wird durch die LRU-
Steuereinrichtung 510 überschrieben; die LRU-Steuereinrich
tung 510 und der Trefferdetektor 511 greifen auf das Pro
zessornummer-Steuerregister 515 zu.
Die "Treffer "-Information der einzelnen Puffermodule 50-i
werden im Trefferdetektor 511 gesammelt. Wenn wenigstens
ein Puffermodul 50-i derjenigen Puffermodule 50-i, die
eine mit der von der CPU 2 gelieferten Prozessornummer
identische Prozessornummer besitzen, einen Treffer
aufweist, wählt der Trefferdetektor 511 gemäß einer
vorgegebenen Regel einen den Treffer aufweisenden Puffer
modul 50-i aus und meldet die Trefferinformation an die
LRU-Steuereinrichtung 510, die Ausgangsadressen-Wählein
richtung 512, den Puffermodul 50-i und den Datenausgabe-
Multiplexer 52. Wenn kein einen Treffer aufweisender Puf
fermodul 50-i vorhanden ist, schickt der Trefferdetektor
511 an jeden Puffermodul 50-i eine "kein Treffer"-Infor
mation.
Die LRU-Steuereinrichtung 510 steuert für jede Prozessor
nummer den Puffermodul 50-i, auf den für die längste Zeit
nicht zugegriffen worden ist. Wenn sämtliche die gleiche
Prozessornummer wie die angeforderte Adresse aufweisenden
Puffermodule 50-i keinen Treffer aufweisen und wenn in
keinem Puffermodul 50-i ein Bereichssignal aktiv ist,
wählt die LRU-Steuereinrichtung 510 aus den Puffermodulen
50-i, deren Prozessornummern sich von derjenigen der an
geforderten Adresse unterscheiden, einen Puffermodul 50-i
aus und ändert die Prozessornummer des gewählten Puffer
moduls 50-i in die Prozessornummer der angeforderten
Adresse, indem sie in das Prozessornummer-Steuerregister
515 schreibt. Dann aktiviert die LRU-Steuereinrichtung
510 das LRU-Signal für den Puffermodul 50-i. Im Ergebnis
werden im Puffermodul 50-i die Daten gespeichert, deren
Adressen der angeforderten Adresse nachfolgen oder
vorhergehen.
Wenn im obenerwähnten Fall kein Puffermodul 50-i eine von
derjenigen der angeforderten Adresse sich unterscheidende
Prozessornummer besitzt, wählt die LRU-Steuereinrichtung
510 aus den Puffermodulen 50-i mit derselben Prozessor
nummer denjenigen Puffermodul 50-i aus, auf den für die
längste Zeit nicht zugegriffen worden ist.
Gemäß dieser Ausführungsform ist es möglich, zwischen den
Puffermodulen 50-i gemäß der Prozessornummer umzuschal
ten. Folglich werden die Adressen für jeden Prozessor re
gelmäßig verschoben, wobei sich die Prozessornummern ge
genseitig beeinflussen und die Adressenberechnung stören
würden, wenn sie nicht voneinander unterschieden würden.
Unter der Annahme, daß sie voneinander getrennt sind, ist
es jedoch möglich, das Trefferverhältnis des Vorabrufpuf
fers zu verbessern, sofern eine Regelmäßigkeit leicht er
mittelt werden kann; damit kann die Leistung eines
Computersystems im Vergleich zu dem Fall, in dem die Pro
zessornummern nicht voneinander unterschieden werden,
verbessert werden. Da es in dem erfindungsgemäßen Aufbau
möglich ist, das Trefferverhältnis des Vorabrufpuffers im
Vergleich zu herkömmlichen Vorabrufpuffern zu verbessern,
ist es möglich, die Absenkung der Leistung aufgrund eines
Zugriffs der CPU auf den Hauptspeicher stark abzuschwä
chen, wodurch die Leistung eines Computersystems verbes
sert wird. Da die Datenzugriffsgeschwindigkeit erhöht
ist, ist es somit möglich, die Verarbeitungsgeschwindig
keit eines Computersystems zu verbessern.
Claims (19)
1. Vorabrufpuffer, der dazu geeignet ist, in einem Compu
tersystem mit einer CPU (2), einem Cache-Speicher (3)
und einem Hauptspeicher (4) installiert zu werden, mit
einem Puffer (503) mit wenigstens einem Eintrag zum Speichern von vorabgerufenen Daten und einem zum Suchen der Daten verwendeten Adressenidentifizierungszeichen als Paar;
einer Daten-Sucheinrichtung (500) zum Suchen der Daten mit der von der CPU (2) angeforderten Adresse in den im Puffer (503) gespeicherten Daten;
einer Adressen-Berechnungseinrichtung (501) zum Bestimmen einer Hauptspeicher-Adresse der als nächstes vorabzurufenden Daten; und
einer Adressen-Erzeugungseinrichtung (502) zum Erzeugen einer Adresse der aus dem Hauptspeicher (4) vorabzurufenden Daten gemäß der Berechnung der Adressen- Berechnungseinrichtung (501),
dadurch gekennzeichnet, daß die Adressen-Berechnungseinrichtung (501) eingerichtet ist, um die Hauptspeicher-Adresse der als nächstes vorabzurufenden Daten auf der Grundlage der Historie der Hauptspeicher-Adressen der in der Vergangenheit von der CPU (2) angeforderten Daten zusätzlich zur von der CPU (2) angeforderten Adresse zu bestimmen.
einem Puffer (503) mit wenigstens einem Eintrag zum Speichern von vorabgerufenen Daten und einem zum Suchen der Daten verwendeten Adressenidentifizierungszeichen als Paar;
einer Daten-Sucheinrichtung (500) zum Suchen der Daten mit der von der CPU (2) angeforderten Adresse in den im Puffer (503) gespeicherten Daten;
einer Adressen-Berechnungseinrichtung (501) zum Bestimmen einer Hauptspeicher-Adresse der als nächstes vorabzurufenden Daten; und
einer Adressen-Erzeugungseinrichtung (502) zum Erzeugen einer Adresse der aus dem Hauptspeicher (4) vorabzurufenden Daten gemäß der Berechnung der Adressen- Berechnungseinrichtung (501),
dadurch gekennzeichnet, daß die Adressen-Berechnungseinrichtung (501) eingerichtet ist, um die Hauptspeicher-Adresse der als nächstes vorabzurufenden Daten auf der Grundlage der Historie der Hauptspeicher-Adressen der in der Vergangenheit von der CPU (2) angeforderten Daten zusätzlich zur von der CPU (2) angeforderten Adresse zu bestimmen.
2. Vorabrufpuffer gemäß Anspruch 1,
dadurch gekennzeichnet, daß
die Adressen-Berechnungseinrichtung (501) die Differenz
zwischen einer von der CPU (2) angeforderten Adresse und
der von der CPU (2) unmittelbar vorher angeforderten
Adresse bildet und dann auf der Grundlage des Diffe
renzwertes eine Adresse der aus dem Hauptspeicher (4)
vorabzurufenden Daten berechnet.
3. Vorabrufpuffer gemäß Anspruch 1,
dadurch gekennzeichnet, daß
der Puffer (503) n (n ist ganze Zahl größer als 1)
Einträge umfaßt und die Daten-Sucheinrichtung (500)
eingerichtet ist, um bei einer Anforderung von Daten
durch die CPU (2) in sämtlichen Einträgen nach den Daten
mit der angeforderten Adresse zu suchen.
4. Vorabrufpuffer, der dazu geeignet ist, in einem Compu
tersystem mit einer CPU (2), einem Cache-Speicher (3)
und einem Hauptspeicher (4) installiert zu werden, mit
einem Puffer (503) mit wenigstens n Einträgen (n ist eine ganze Zahl größer als 1) zum Speichern von vorab gerufenen Daten und einem zum Suchen der Daten verwen deten Adressenidentifizierungszeichen als Paar;
einer Daten-Sucheinrichtung (500) zum Suchen der Daten mit der von der CPU (2) angeforderten Adresse in den im Puffer (503) gespeicherten Daten;
einer Adressen-Berechnungseinrichtung (501) zum Bestimmen einer Hauptspeicher-Adresse der als nächstes vorabzurufenden Daten; und
einer Adressen-Erzeugungseinrichtung (502) zum Erzeugen einer Adresse der aus dem Hauptspeicher (4) vorabzurufenden Daten gemäß der Berechnung der Adressen- Berechnungseinrichtung (501), wobei
die Adressen-Erzeugungseinrichtung (502) eingerichtet ist, um als Adressen der vorabzurufenden Daten n Adres sen zu erzeugen, die an die Adresse der von der CPU (2) angeforderten Daten anschließen,
dadurch gekennzeichnet, daß die Daten-Sucheinrichtung (500) eingerichtet ist, um bei einer Anforderung von Daten durch die CPU (2) in sämt lichen Einträgen nach den Daten mit der angeforderten Adresse zu suchen.
einem Puffer (503) mit wenigstens n Einträgen (n ist eine ganze Zahl größer als 1) zum Speichern von vorab gerufenen Daten und einem zum Suchen der Daten verwen deten Adressenidentifizierungszeichen als Paar;
einer Daten-Sucheinrichtung (500) zum Suchen der Daten mit der von der CPU (2) angeforderten Adresse in den im Puffer (503) gespeicherten Daten;
einer Adressen-Berechnungseinrichtung (501) zum Bestimmen einer Hauptspeicher-Adresse der als nächstes vorabzurufenden Daten; und
einer Adressen-Erzeugungseinrichtung (502) zum Erzeugen einer Adresse der aus dem Hauptspeicher (4) vorabzurufenden Daten gemäß der Berechnung der Adressen- Berechnungseinrichtung (501), wobei
die Adressen-Erzeugungseinrichtung (502) eingerichtet ist, um als Adressen der vorabzurufenden Daten n Adres sen zu erzeugen, die an die Adresse der von der CPU (2) angeforderten Daten anschließen,
dadurch gekennzeichnet, daß die Daten-Sucheinrichtung (500) eingerichtet ist, um bei einer Anforderung von Daten durch die CPU (2) in sämt lichen Einträgen nach den Daten mit der angeforderten Adresse zu suchen.
5. Vorabrufpuffer gemäß Anspruch 4,
dadurch gekennzeichnet, daß die Adressen-Berechnungsein
richtung (501) umfaßt:
- - ein Vorwärtsadressen-/Rückwärtsadressen-Register (5013) zum Speichern eines Zustandsbits für die Bestimmung, ob Daten mit Adressen, die der von der CPU (2) angeforderten Adresse nachfolgen, oder Daten mit Adressen, die der von der CPU (2) angeforderten Adresse vorhergehen, gespeichert werden sollen, und
- - ein Register (5010) für die zuletzt getroffene Adresse
zum Speichern einer vom Vorabrufpuffer (5) zuletzt
getroffenen Adresse, und
die Adressen-Berechnungseinrichtung (501) die Adressen- Erzeugungseinrichtung (502) derart steuert, daß, wenn der Vorabrufpuffer (5) keinen Treffer erzielt: - - im Puffer (503) n aufeinanderfolgende Daten, die der angeforderten Adresse folgen, gespeichert werden, falls die angeforderte Adresse größer als die zuletzt getroffene Adresse ist und falls der Absolutwert der Differenz zwischen diesen Adressen kleiner als ein vorgegebener Wert p ist, oder
- - im Puffer (503) n aufeinanderfolgende Daten, die der angeforderten Adresse vorhergehen, gespeichert werden, falls die angeforderte Adresse kleiner als die zuletzt getroffene Adresse ist und falls der Absolutwert der Differenz zwischen diesen Adressen kleiner als der vorgegebene Wert p ist.
6. Vorabrufpuffer gemäß Anspruch 5,
dadurch gekennzeichnet, daß
der vorgegebene Wert p zwischen 1 und n liegt (1 p
n).
7. Vorabrufpuffer gemäß Anspruch 5,
dadurch gekennzeichnet, daß,
wenn er eine angeforderte Adresse trifft, die Adressen-
Berechnungseinrichtung (501) die Adressen-Erzeugungs
einrichtung (502) steuert, derart, daß der Inhalt des
Registers für die zuletzt getroffene Adresse (5010)
durch die angeforderte Adresse aktualisiert wird und im
Puffer (503) n aufeinanderfolgende Daten gespeichert
werden, die der angeforderten Adresse in einer Richtung
folgen, die dem Inhalt des Vorwärts-/Rückwärtsadressen-
Registers entspricht.
8. Vorabrufpuffer gemäß Anspruch 3,
dadurch gekennzeichnet, daß
die Adressen-Berechnungseinrichtung (501) eine Adresse
der Daten berechnet, die aus dem Hauptspeicher vorabge
rufen werden sollen, indem sie die Differenz zwischen
der von der CPU (2) angeforderten Adresse und der von
der CPU (2) unmittelbar vorher angeforderten Adresse
bildet und zu der angeforderten Adresse einen Wert
addiert, der durch die Multiplikation des Differenz
wertes mit k (k ist ganze Zahl zwischen 1 und n) erhalten
wird.
9. Vorabrufpuffer gemäß Anspruch 3 oder 4,
dadurch gekennzeichnet, daß
der Puffer (503) eine Einrichtung (5032) aufweist, um den gültige Daten speichernden Eintrag und den ungültige Daten speichernden Eintrag zu identifizieren; und
die Daten-Sucheinrichtung (500) im Puffer (503) die angeforderte Adresse unter den gültige Daten speichern den Einträgen sucht.
der Puffer (503) eine Einrichtung (5032) aufweist, um den gültige Daten speichernden Eintrag und den ungültige Daten speichernden Eintrag zu identifizieren; und
die Daten-Sucheinrichtung (500) im Puffer (503) die angeforderte Adresse unter den gültige Daten speichern den Einträgen sucht.
10. Vorabrufpuffer gemäß Anspruch 3 oder 4,
dadurch gekennzeichnet, daß
der Puffer (503) ein Zustandsbit aufweist, um den gültige Daten speichernden Eintrag und den ungültige Daten speichernden Eintrag zu identifizieren; und
die Daten-Sucheinrichtung (500) die angeforderte Adresse für den gültige Daten speichernden Eintrag unter Bezugnahme auf das Zustandsbit sucht.
der Puffer (503) ein Zustandsbit aufweist, um den gültige Daten speichernden Eintrag und den ungültige Daten speichernden Eintrag zu identifizieren; und
die Daten-Sucheinrichtung (500) die angeforderte Adresse für den gültige Daten speichernden Eintrag unter Bezugnahme auf das Zustandsbit sucht.
11. Vorabrufpuffer nach einem der vorhergehenden Ansprüche,
gekennzeichnet durch
eine Universalsteuereinheit (51) zum Steuern von m (m
ist ganze Zahl größer als 1) Puffermodulen (50-0, 50-1,
. . . , 50-m), von denen jeder einen Puffer (503), eine
Adressen-Erzeugungseinrichtung (502), eine Daten-Such
einrichtung (500) und eine Adressen-Berechnungseinrich
tung (501) umfaßt.
12. Vorabrufpuffer gemäß Anspruch 11,
dadurch gekennzeichnet, daß
die Universalsteuereinheit (51) in dem Fall, in dem in
keinem Puffer (503) irgendeines der m Puffermodule
(50-0, 50-1, . . ., 50-m) Daten mit der von der CPU (2)
angeforderten Adresse vorhanden sind, aus den m Puffer
modulen (50-0, 50-1, . . ., 50-m) einen Puffermodul (50-i)
auswählt, auf den für die längste Zeit nicht zugegriffen
worden ist, und einen neuen Vorabruf für den Puffer
(503) des gewählten Puffermoduls (50-i) ausführt.
13. Vorabrufpuffer gemäß Ansprüchen 5 und 11,
dadurch gekennzeichnet, daß
die Universalsteuereinheit (51) in dem Fall, in dem in
keinem Puffer (503) irgendeines der m Puffermodule
(50-0, 50-1, . . ., 50-m) Daten mit der von der CPU (2)
angeforderten Adresse vorhanden sind und in dem in den m
Puffermodulen (50-0, 50-1, . . ., 50-m) ein Puffermodul
(50-i) vorhanden ist, bei dem die Differenz zwischen der
in der Adressen-Berechnungseinrichtung (501) gespei
cherten zuletzt getroffenen Adresse und der angeforder
ten Adresse kleiner als ein vorgegebener Wert d ist,
diesen Puffermodul (50-i) wählt und in dem Fall, in dem
in keinem der m Puffermodule (50-0, 50-1, . . . , 50-m) ein
Puffermodul vorhanden ist, bei dem die Adressendifferenz
kleiner als der vorgegebene Wert d ist, aus den m Puf
fermodulen (50-0, 50-1, . . . , 50-m) einen Puffermodul
(50-i) auswählt, auf den für die längste Zeit nicht
zugegriffen worden ist, und für den Puffer (503) dieses
gewählten Puffermoduls (50-i) einen neuen Vorabruf
ausführt.
14. Vorabrufpuffer gemäß Anspruch 12 oder 13,
dadurch gekennzeichnet, daß
die Universalsteuereinheit (51) in dem Fall, in dem im
Puffer (503) irgendeines der m Puffermodule (50-0, 50-1,
50-m) Daten mit der von der CPU (2) angeforderten
Adresse vorhanden sind, für diesen Puffermodul (50-i)
einen neuen Vorabruf ausführt.
15. Vorabrufpuffer gemäß Anspruch 11,
dadurch gekennzeichnet, daß
die Universalsteuereinheit (51) die m Puffermodule
(50-0, 50-1, . . ., 50-m) in bezug auf das Attribut Lese
fehler bzw. Schreibfehler in zwei Gruppen unterteilt und
die beiden Gruppen getrennt verwaltet werden.
16. Vorabrufpuffer gemäß Anspruch 15,
dadurch gekennzeichnet, daß die Universalsteuereinheit
(51)
den Lesefehler-Puffermodul, auf den für die längste Zeit nicht zugegriffen worden ist, und den Schreibfeh ler-Puffermodul, auf den für die längste Zeit nicht zugegriffen worden ist, parallel verwaltet und
in dem Fall, in dem sämtliche Puffermodule mit dem selben Attribut wie die angeforderte Adresse keinen Treffer erzielen, aus den Puffermodulen mit von dem der angeforderten Adresse verschiedenem Attribut denjenigen Puffermodul wählt, auf den für die längste Zeit nicht zugegriffen worden ist, das Attribut des zuletzt ge nannten Puffermoduls ändert, damit es mit dem der angeforderten Adresse übereinstimmt, und im Puffer (503) dieses Puffermoduls die Daten mit der der angeforderten Adresse nachfolgenden Adresse speichert.
den Lesefehler-Puffermodul, auf den für die längste Zeit nicht zugegriffen worden ist, und den Schreibfeh ler-Puffermodul, auf den für die längste Zeit nicht zugegriffen worden ist, parallel verwaltet und
in dem Fall, in dem sämtliche Puffermodule mit dem selben Attribut wie die angeforderte Adresse keinen Treffer erzielen, aus den Puffermodulen mit von dem der angeforderten Adresse verschiedenem Attribut denjenigen Puffermodul wählt, auf den für die längste Zeit nicht zugegriffen worden ist, das Attribut des zuletzt ge nannten Puffermoduls ändert, damit es mit dem der angeforderten Adresse übereinstimmt, und im Puffer (503) dieses Puffermoduls die Daten mit der der angeforderten Adresse nachfolgenden Adresse speichert.
17. Vorabrufpuffer nach einem der Ansprüche 11 bis 16, der
dazu geeignet ist, in einem Multiprozessor-Computersy
stem mit mehreren CPU′s (2-0, 2-1, 2-2, 2-3) mit jeweils
einem Cache-Speicher (3-0, 3-1, 3-2, 3-3) und einem
Hauptspeicher (4) installiert zu werden.
18. Vorabrufpuffer gemäß Anspruch 17,
dadurch gekennzeichnet, daß
die Universalsteuereinheit (51) von den von derselben
CPU (2-0, 2-1, 2-2, 2-3) genutzten Puffermodulen (50-0,
50-1, . . ., 50-m) denjenigen Puffermodul (50-i) ver
waltet, auf den für die längste Zeit nicht zugegriffen
worden ist, indem
die Universalsteuereinheit (51) in dem Fall, in dem
sämtliche Puffermodule (50-0, 50-1, . . . 50-m), die der
die Anforderungsquelle der angeforderten Adresse
bildenden CPU (2-0, 2-1, 2-2, 2-3) zugeordnet sind,
keinen Treffer erzielen, denjenigen Puffermodul (50-i)
wählt, der einer von der die Anforderungsquelle bil
denden CPU (2-0, 2-1, 2-2, 2-3) verschiedenen CPU zu
geordnet ist, den letztgenannten Puffermodul (50-i)
ändert, derart, daß er der die Anforderungsquelle bil
denden CPU zugeordnet ist, und im Puffer (503) dieses
Puffermoduls (50-i) die Daten mit der der angeforderten
Adresse folgenden Adresse speichert.
19. Informationsverarbeitungssystem, mit
wenigstens einer CPU (2) zum Ausführen von Rechen operationen und/oder Steueroperationen; und
einem Speicher (4) zum Speichern sowohl von Program men, die Prozeduren für die Ausführung der Rechenopera tionen und/oder der Steueroperationen darstellen, als auch von Daten, die in den Rechenoperationen und/oder den Steueroperationen verwendet werden,
gekennzeichnet durch einen Vorabrufpuffer nach einem der Ansprüche 1 bis 18.
wenigstens einer CPU (2) zum Ausführen von Rechen operationen und/oder Steueroperationen; und
einem Speicher (4) zum Speichern sowohl von Program men, die Prozeduren für die Ausführung der Rechenopera tionen und/oder der Steueroperationen darstellen, als auch von Daten, die in den Rechenoperationen und/oder den Steueroperationen verwendet werden,
gekennzeichnet durch einen Vorabrufpuffer nach einem der Ansprüche 1 bis 18.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3190240A JP2881049B2 (ja) | 1991-07-30 | 1991-07-30 | プリフェッチバッファ |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4225228A1 DE4225228A1 (de) | 1993-02-04 |
DE4225228C2 true DE4225228C2 (de) | 1997-05-15 |
Family
ID=16254838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4225228A Expired - Fee Related DE4225228C2 (de) | 1991-07-30 | 1992-07-30 | Vorabrufpuffer und einen derartigen Vorabrufpuffer verwendendes Informationsverarbeitungssystem |
Country Status (4)
Country | Link |
---|---|
US (1) | US5345560A (de) |
JP (1) | JP2881049B2 (de) |
KR (1) | KR930002945A (de) |
DE (1) | DE4225228C2 (de) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5659713A (en) * | 1992-04-24 | 1997-08-19 | Digital Equipment Corporation | Memory stream buffer with variable-size prefetch depending on memory interleaving configuration |
US6453388B1 (en) * | 1992-06-17 | 2002-09-17 | Intel Corporation | Computer system having a bus interface unit for prefetching data from system memory |
US5566324A (en) * | 1992-12-24 | 1996-10-15 | Ncr Corporation | Computer apparatus including a main memory prefetch cache and method of operation thereof |
US5588128A (en) * | 1993-04-02 | 1996-12-24 | Vlsi Technology, Inc. | Dynamic direction look ahead read buffer |
TW228580B (en) * | 1993-10-01 | 1994-08-21 | Ibm | Information processing system and method of operation |
KR970010368B1 (ko) * | 1994-01-18 | 1997-06-25 | 삼성전자 주식회사 | 캐시라인 리프레이스장치 및 방법 |
TW233354B (en) * | 1994-03-04 | 1994-11-01 | Motorola Inc | Data processor with memory cache and method of operation |
JP2689920B2 (ja) * | 1994-09-26 | 1997-12-10 | 日本電気株式会社 | 演算処理システムに用いられるプリフェッチバッファ装置 |
JPH0895857A (ja) * | 1994-09-29 | 1996-04-12 | Shikoku Nippon Denki Software Kk | 入出力キャッシュ |
US5761706A (en) * | 1994-11-01 | 1998-06-02 | Cray Research, Inc. | Stream buffers for high-performance computer memory system |
US5737565A (en) * | 1995-08-24 | 1998-04-07 | International Business Machines Corporation | System and method for diallocating stream from a stream buffer |
US5664147A (en) * | 1995-08-24 | 1997-09-02 | International Business Machines Corp. | System and method that progressively prefetches additional lines to a distributed stream buffer as the sequentiality of the memory accessing is demonstrated |
US6055621A (en) * | 1996-02-12 | 2000-04-25 | International Business Machines Corporation | Touch history table |
US5854911A (en) * | 1996-07-01 | 1998-12-29 | Sun Microsystems, Inc. | Data buffer prefetch apparatus and method |
US7272703B2 (en) * | 1997-08-01 | 2007-09-18 | Micron Technology, Inc. | Program controlled embedded-DRAM-DSP architecture and methods |
US6134643A (en) * | 1997-11-26 | 2000-10-17 | Intel Corporation | Method and apparatus for cache line prediction and prefetching using a prefetch controller and buffer and access history |
US6625697B1 (en) | 1998-11-25 | 2003-09-23 | Siemens Aktiengesellschaft | Cache-storage device with a buffer storing prefetch data |
EP1050802B1 (de) * | 1999-05-03 | 2007-02-07 | STMicroelectronics S.A. | Befehlsvorausholeinheit |
JP3956698B2 (ja) * | 1999-07-07 | 2007-08-08 | 株式会社日立製作所 | メモリ制御装置 |
JP3535800B2 (ja) * | 2000-03-31 | 2004-06-07 | 松下電器産業株式会社 | ディスクメモリ装置、データ先読み方法、及び記録媒体 |
US7039766B1 (en) * | 2000-10-12 | 2006-05-02 | International Business Machines Corporation | Prescheduling sequential data prefetches in a preexisting LRU cache |
JP4341186B2 (ja) | 2001-01-22 | 2009-10-07 | 株式会社日立製作所 | メモリシステム |
JP3969009B2 (ja) | 2001-03-29 | 2007-08-29 | 株式会社日立製作所 | ハードウェアプリフェッチシステム |
US7133972B2 (en) * | 2002-06-07 | 2006-11-07 | Micron Technology, Inc. | Memory hub with internal cache and/or memory access prediction |
JP4067887B2 (ja) | 2002-06-28 | 2008-03-26 | 富士通株式会社 | プリフェッチを行う演算処理装置、情報処理装置及びそれらの制御方法 |
US7841041B2 (en) | 2002-08-09 | 2010-11-30 | Colgate-Palmolive Company | Oral care implement |
US8151397B2 (en) | 2002-08-09 | 2012-04-10 | Colgate-Palmolive Company | Oral care implement having flexibly supported cleaning elements extending in opposite directions |
US8806695B2 (en) | 2002-08-09 | 2014-08-19 | Colgate-Palmolive Company | Oral care implement having flexibly supported cleaning elements extending in opposite directions |
US8876221B2 (en) | 2002-08-09 | 2014-11-04 | Colgate-Palmolive Company | Oral care implement |
US7167954B2 (en) * | 2002-09-09 | 2007-01-23 | Broadcom Corporation | System and method for caching |
US7111116B1 (en) * | 2003-09-30 | 2006-09-19 | Western Digital Technologies, Inc. | Reducing micro-controller access time to data stored in a remote memory in a disk drive control system |
JP2006215799A (ja) * | 2005-02-03 | 2006-08-17 | Toshiba Corp | メモリコントローラ |
US7702883B2 (en) * | 2005-05-05 | 2010-04-20 | Intel Corporation | Variable-width memory |
US8281448B2 (en) | 2005-10-24 | 2012-10-09 | Colgate-Palmolive Company | Oral care implement having one or more moving sections |
US9009414B2 (en) | 2010-09-21 | 2015-04-14 | Texas Instruments Incorporated | Prefetch address hit prediction to reduce memory access latency |
US10866897B2 (en) * | 2016-09-26 | 2020-12-15 | Samsung Electronics Co., Ltd. | Byte-addressable flash-based memory module with prefetch mode that is adjusted based on feedback from prefetch accuracy that is calculated by comparing first decoded address and second decoded address, where the first decoded address is sent to memory controller, and the second decoded address is sent to prefetch buffer |
US10956315B2 (en) * | 2018-07-24 | 2021-03-23 | Micron Technology, Inc. | Memory devices and methods which may facilitate tensor memory access |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4714994A (en) * | 1985-04-30 | 1987-12-22 | International Business Machines Corp. | Instruction prefetch buffer control |
US4943908A (en) * | 1987-12-02 | 1990-07-24 | International Business Machines Corporation | Multiple branch analyzer for prefetching cache lines |
EP0389175A3 (de) * | 1989-03-15 | 1992-11-19 | Fujitsu Limited | Datenvorausladesystem |
-
1991
- 1991-07-30 JP JP3190240A patent/JP2881049B2/ja not_active Expired - Fee Related
-
1992
- 1992-07-30 KR KR1019920013630A patent/KR930002945A/ko not_active Application Discontinuation
- 1992-07-30 DE DE4225228A patent/DE4225228C2/de not_active Expired - Fee Related
- 1992-07-30 US US07/921,742 patent/US5345560A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH0628180A (ja) | 1994-02-04 |
JP2881049B2 (ja) | 1999-04-12 |
KR930002945A (ko) | 1993-02-23 |
DE4225228A1 (de) | 1993-02-04 |
US5345560A (en) | 1994-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4225228C2 (de) | Vorabrufpuffer und einen derartigen Vorabrufpuffer verwendendes Informationsverarbeitungssystem | |
DE69321698T2 (de) | Verfahren und System zur verbesserten Genauigkeit der Sprungvorhersage in einem Superskalarprozessor | |
DE69816044T2 (de) | Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken | |
DE69028153T2 (de) | Cache-Speicherfehlgriffsvorhersageverfahren und -vorrichtung | |
DE69228380T2 (de) | Verfahren zur erhöhung der datenverarbeitungsgeschwindigkeit in einem rechnersystem | |
DE69518676T2 (de) | Cache-Speicheranordnung für einen Speicher | |
DE69732020T2 (de) | Wiedereinordnung von Speicheranforderungen in einem Datenverarbeitungssystem | |
DE69224084T2 (de) | Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür | |
DE69322683T2 (de) | Verfahren und Vorrichtung zur Durchführung eines pseudo-LRU Cachespeicherersetzungsschemas mit einer Verriegelungsfunktion | |
DE69514165T2 (de) | Mehrstufige Cache-Speicheranordnung | |
DE68911398T2 (de) | Methode und digitaler computer zum vorausholen von vektordaten aus dem speicher in einem für skalaverarbeitung bestimmten speichersystem. | |
DE69606648T2 (de) | Verfahren und vorrichtung zur ablauffolgen von multiprozessoren mit starker affinität | |
DE19527031C2 (de) | Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems | |
DE69130580T2 (de) | Cache-Speicheranordnung | |
DE10015676B4 (de) | Verfahren zum Ersetzen von Einträgen in einem Befehls-Cache-Speicher | |
DE69634315T2 (de) | Verfahren und Gerät zur Verwendung eines Ladebefehls der keinen Fehler verursacht | |
DE2547488C2 (de) | Mikroprogrammierte Datenverarbeitungsanlage | |
DE69131472T2 (de) | Verfahren zum Vorsehen eines synchronisierten Datencachespeicherbetriebs für Prozessoren in einer parallelen Verarbeitungsanordnung und parallele Verarbeitungsanordnung zur Durchführung des Verfahrens | |
DE69030931T2 (de) | Mehrfachsequenzprozessorsystem | |
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE69027017T2 (de) | Anordnung und Verfahren zur Speicherverwaltung in einem Mikrorechner | |
DE3280414T2 (de) | Methode fuer den betrieb eines virtuellen speicherorganisationssystems. | |
DE69324967T2 (de) | Cache-Speicherfehlgriffvorhersageverfahren und -vorrichtung für einen nach Seiten organisierten Hauptspeicher in einem Datenverarbeitungssystem | |
DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
DE68928525T2 (de) | Verfahren zum teilweisen Austausch reeller, von einem Programm benutzter Speicherbereiche zwischen einem reellen Speicher und einem Hilfsspeicher |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8125 | Change of the main classification |
Ipc: G06F 9/38 |
|
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |