DE4225228A1 - Vorabrufpuffer und einen derartigen vorabrufpuffer verwendendes informationsverarbeitungssystem - Google Patents
Vorabrufpuffer und einen derartigen vorabrufpuffer verwendendes informationsverarbeitungssystemInfo
- Publication number
- DE4225228A1 DE4225228A1 DE4225228A DE4225228A DE4225228A1 DE 4225228 A1 DE4225228 A1 DE 4225228A1 DE 4225228 A DE4225228 A DE 4225228A DE 4225228 A DE4225228 A DE 4225228A DE 4225228 A1 DE4225228 A1 DE 4225228A1
- 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.)
- Granted
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
Description
Die vorliegende Erfindung betrifft einen in einem Compu
tersystem verwendbaren Vorabrufpuffer gemäß dem Oberbe
griff des Anspruches 1 und ein Informationsverarbeitungs
system gemäß dem Oberbegriff des Anspruches 21, in dem
ein derartiger Vorabrufpuffer verwendet wird.
In Computersystemen und insbesondere in Computer-Arbeits
plätzen (Workstations) ist in der letzten Zeit die
Verarbeitungsleistung durch die Entwicklung von Hochlei
stungs-RISC-Prozessoren (Prozessoren mit reduziertem Be
fehlsvorrat) erheblich gesteigert worden. Ein RISC-Pro
zessor umfaßt einen Cache-Speicher mit geringer
Kapazität, der einen schnellen Zugriff ermöglicht, und
einen Hauptspeicher mit großer Kapazität, bei dem nur ein
verhältnismäßig langsamer Zugriff möglich ist. Wenn die
Menge der zu verarbeitenden Daten gering ist und wenn
keinerlei Cache-Speicher-Fehler auftreten, ist es mög
lich, die Leistung eines RISC-Prozessors in vollem Ausmaß
zu nutzen. Wenn jedoch die Menge der zu verarbeitenden
Daten groß ist und wenn viele Cache-Speicher-Fehler
auftreten, 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.
Unter der Annahme, daß für jeden Hochgeschwindigkeitspro
zessor die Zugriffszeit auf den Hauptspeicher gleich ist,
ist für einen derartigen Prozessor die Wartezeit jeweils
gleich. Wenn daher viele Cache-Speicher-Fehler auftreten,
ist es trotz aller Versuche zur Verbesserung der Leistung
des Prozessors nicht möglich, die Gesamt-Verarbeitungs
leistung zu erhöhen.
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. Jouppi, The 17th Annual International Symposium
on Computer Architecture Conference Proceedings, Mai
1990, Seiten 364 bis 373, erläutert. Gemäß diesem her
kömmlichen Konzept werden die aus dem Hauptspeicher
abzurufenden Daten vorher in einen Puffer mit geringer
Kapazität eingelesen, um bei Auftreten eines Cache-Spei
cher-Fehlers jeglichen zusätzlichen Zeitbedarf wegen
des Zugriffs auf den Hauptspeicher zu vermeiden.
Weitere Veröffentlichungen zu dem einen Vorabrufpuffer
verwendenden Stand der Technik sind beispielsweise durch
JP 53-1 34 334-A, JP 63-75 934-A, JP 2-87 229-A und
US 47 14 994-A gegeben.
Da bei einem derartigen Vorabrufpuffer des Standes der
Technik die Befehle eines Programms im allgemeinen in der
Reihenfolge der Adressen abgearbeitet werden, sind die
Daten, die im voraus abgerufen werden können, normaler
weise auf solche Daten beschränkt, deren Adresse unmit
telbar auf diejenigen Daten folgt, die vom Prozessor an
gefordert sind. Ferner ist ein Vorabruf für besondere
Fälle wie etwa Verzweigungs- und Schleifenprozesse
vorgeschlagen worden. Wenn sich jedoch der Wert der
angeforderten Adresse in Rückwärtsrichtung kontinuierlich
ändert oder wenn die angeforderten Adressen diskontinu
ierlich oder nicht zusammenhängend sind, wird das Tref
ferverhältnis des Vorabrufpuffers verschlechtert, so daß
die Leistung abgesenkt wird.
Es ist daher eine Aufgabe der vorliegenden Erfindung, ei
nen Vorabrufpuffer zu schaffen, bei dem das Trefferver
hältnis unabhängig davon, ob sich die angeforderten
Adressen in Vorwärts- oder Rückwärtsrichtung ändern, ver
bessert werden kann.
Es ist eine weitere Aufgabe der vorliegenden Erfindung,
einen Vorabrufpuffer zu schaffen, bei dem das Trefferver
hältnis unabhängig davon, ob sich die angeforderten
Adressen kontinuierlich oder diskontinuierlich ändern,
verbessert werden kann.
Es ist eine weitere Aufgabe der vorliegenden Erfindung,
ein Informationsverarbeitungssystem zu schaffen, das ei
nen derartigen Vorabrufpuffer verwendet.
Die ersten beiden Aufgaben werden erfindungsgemäß gelöst
durch einen Vorabrufpuffer, der in einem eine CPU
(Zentraleinheit) aufweisenden Computersystem zwischen ei
nem Cache-Speicher und einem Hauptspeicher angeordnet ist
und umfaßt: einen Puffer mit wenigstens einem Eintrag zum
Speichern von vorabgerufenen Daten und eines zum Suchen
der Daten verwendeten Adressenidentifizierungszeichens
als Paar, eine Daten-Sucheinrichtung zum Suchen nach den
Daten mit der von der CPU angeforderten Adresse in den im
Puffer gespeicherten Daten und eine Adressen-Berechnungs
einrichtung zum Berechnen einer Hauptspeicher-Adresse der
als nächstes vorabzurufenden Daten auf der Grundlage der
von der CPU angeforderten Adresse und auf der Grundlage
der Geschichte der Hauptspeicher-Adressen der in der Ver
gangenheit vorabgerufenen Daten, und eine Adressen-Erzeu
gungseinrichtung zum Erzeugen einer Hauptspeicher-Adresse
von aus dem Hauptspeicher vorabzurufenden Daten
entsprechend der Berechnung der Adressen-Berechnungsein
richtung.
Vorzugsweise berechnet die Adressen-Berechnungseinrich
tung eine Differenz zwischen einer von der CPU angefor
derten Adresse und der von der CPU unmittelbar vorher an
geforderten Adresse und berechnet dann auf der Grundlage
des Differenzwertes eine Adresse der aus dem Hauptspei
cher vorabzurufenden 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 Daten-Sucheinrichtung auch in einer Zone suchen, die
optional bezeichnet oder ausgewählt wird.
Beispielsweise kann die Adressen-Erzeugungseinrichtung
für die Adressen der vorabzurufenden Daten n Adressen er
zeugen, die an die Adresse der von der CPU angeforderten
Daten anschließen.
Die Adressen-Berechnungseinrichtung kann außerdem die
Adresse von Daten gewinnen, die aus dem Hauptspeicher
vorabgerufen werden sollen, indem sie eine Differenz zwi
schen 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
Adressen, die auf die von der CPU angeforderte Adresse
folgen, liest aus dem Hauptspeicher n (n ist vorzugsweise
eine ganze Zahl größer als 1) Daten mit n Adressen aus
und speichert die Daten im Puffer mit n-fachem Eintrag.
Die Daten-Sucheinrichtung sucht die von der CPU angefor
derten Adressen in allen Einträgen des Puffers. Unter der
Annahme, daß sich die von der CPU angeforderten, nachfol
genden Adressen von der unmittelbar vorher angeforderten
Adresse um +1 bis +n unterscheiden, wird der Vorabrufpuf
fer Treffer erzielen.
Wenn eine der von der CPU angeforderten Adresse nachfol
gende Adresse niedriger als die ursprünglich angeforderte
Adresse ist, ändert die Adressen-Berechnungseinrichtung
die Adresse der vorabzurufenden Daten in die entgegenge
setzte Richtung. Dadurch kann der Vorabrufpuffer selbst
dann Treffer erzielen, wenn sich die Adressen in der ent
gegengesetzten Richtung ändern.
In einem anderen erfindungsgemäßen Aufbau bildet die
Adressen-Berechnungseinrichtung die Differenz zwischen
einer von der CPU angeforderten Adresse und einer unmit
telbar vorhergehenden angeforderten Adresse, liest Daten
mit einer Adresse, die durch die Summe der angeforderten
Adresse und der mit k (k liegt zwischen 1 und n) multi
plizierten erwähnten Differenz gegeben ist, aus dem
Hauptspeicher aus und speichert die Daten im Puffer mit
n-fachem Eintrag. Wenn sich daher die von der CPU ange
forderte nachfolgende Adresse auf Daten bezieht, deren
Adresse durch die Summe der unmittelbar vorhergehenden
Adresse und der mit k (k liegt zwischen 1 und n) multi
plizierten Differenz gegeben ist, wird der Vorabrufpuffer
einen Treffer erzielen.
Da gemäß der Erfindung die Adressen-Berechnungseinrich
tung auf der Grundlage einer Geschichte der vom Prozessor
angeforderten Adressen eine anschließend angeforderte
Adresse berechnet, ist es möglich, das Trefferverhältnis
des Vorabrufpuffers entweder für diskontinuierliche
Anforderungsadressen oder für abnehmende Anforderungs
adressen zu erhöhen, wodurch die Leistung des Computersy
stems verbessert wird.
Die dritte Aufgabe wird bei einem Informationsverarbei
tungssystem der gattungsgemäßen Art erfindungsgemäß
gelöst durch die Merkmale im kennzeichnenden Teil des An
spruches 21.
Weitere Aufgaben, Merkmale und Vorteile der Erfindung
sind in den Neben- und Unteransprüchen, die sich auf be
vorzugte Ausführungsformen der vorliegenden Erfindung be
ziehen, angegeben.
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-Steu
ereinrichtung 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
benutzt die benötigten Daten, falls sie diese 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, liest die benötigten Daten, falls
vorhanden, aus dem Vorabrufpuffer 5 aus und speichert die
benötigten Daten im Cache-Speicher 3; falls die benötig
ten Daten im Vorabrufpuffer gefunden werden, beendet die
CPU 2 den Zugriff auf den Hauptspeicher 4.
Wenn im Vorabrufpuffer die benötigten Daten nicht vorhan
den sind, ruft die CPU 2 die Daten aus dem Hauptspeicher
4 ab, woraufhin sie die Daten verwendet und dieselben Da
ten im Cache-Speicher 3 speichert. 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-Such
einrichtung 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.
Genauer speichert die Adressen-Berechnungseinrichtung 501
die vorher angeforderte Adresse, um eine anschließend an
geforderte Adresse zu berechnen. Die Adressen-Erzeugungs
einrichtung 502 erzeugt soviele Adressen von benötigten
Daten, bis ausreichend viele der angeforderten Adresse
nachfolgende oder vorhergehende Dateneinträge (in dieser
Ausführungsform: vier) gespeichert sind, um anschließend
diese Adressen über den Adressen-Ausgabe-Multiplexer 53
an den Hauptspeicher 4 zu schicken, um so die benötigten
Daten zu erhalten; daraufhin speichert die Adressen-Er
zeugungseinrichtung 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, während sie bei Abwesenheit der angeforderten Da
ten an die Universalsteuereinheit 51 die erfolglose Suche
("kein Treffer"-Information) meldet.
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 in einem Bereich mit 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 im Bereich des Schwel
lenwertes 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-Be
rechnungseinrichtung 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-Such
einrichtung 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 niederwertigsten Bits der angeforder
ten Adresse mit den zwei niederwertigsten 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 innerhalb des Bereichs mit vorgegebenem
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 lädt erneut 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 im voraus 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 eine Trefferbildung ge
meldet. Wenn kein einen Treffer aufweisender Puffermodul
50-i vorhanden ist, 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 Geschichte 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 kein Puffermodul 50-i vorhan
den ist, bei dem die von der Adressen-Berechnungseinrich
tung 501 erzeugte Bereichsinformation 5015 aktiv ist,
wird das gewonnene 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 die Bereichsinformation 5015 für
wenigstens einen Puffermodul 50-i aktiv ist, wählt die
LRU-Steuereinheit 510 einen der 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-Steu
ereinheit 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 aus der angefor
derten Adresse und aus den Adressen in Vorwärts- und
Rückwärtsrichtung die größte Adresse und die kleinste
Adresse der Daten, die nacheinander im Puffer zu spei
chern sind, und speichert die nachfolgende größte und die
nachfolgende kleinste Adresse in einem Minimaladressenre
gister 5022 bzw. in einem Maximaladressenregister 5023.
Eine Ladeadressen-Erzeugungseinrichtung 5021 gewinnt aus
der angeforderten Adresse, den Adressen in Vorwärts- und
Rückwärtsrichtung, 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-Er
zeugungseinrichtung 521 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 521 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 vierstufige
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 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 als auch der Adres
sen-Erzeugungseinrichtung 502 und der Daten-Sucheinrich
tung 500.
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 im Bereich eines vorgegebenen Schwellenwer
tes liegt. Außerdem wird die Differenz an die Adressen-Er
zeugungseinrichtung 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, lädt die Be
reichsbestimmungsschaltung 5012 erneut 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 in 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 im voraus gespeichert. Genauso
wird der Inhalt des Registers für die Differenz der
zuletzt getroffenen Adresse 5014 im voraus 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 Adressenvorwärts- oder Adres
senrückwärtsrichtung 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 Adressenvorwärts- und der
Adressenrückwärtsrichtung, 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-Er
zeugungseinrichtung 5021 aus den Daten, die vier der
angeforderten Adresse in Intervallen der Adressendiffe
renz nachfolgenden oder vorhergehenden Adressen entspre
chen, diejenigen Daten aus, die in dem Puffer 503 nicht
vorhanden sind, und erzeugt aufeinanderfolgend die
Adressen der Daten. 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"-In
formation aktiv sind, erzeugt die Ladeadressen-Erzeu
gungseinrichtung 5021 vier der angeforderten Adresse in
Intervallen der Adressendifferenz 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-Such
einrichtung 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 die angeforderte Adresse um ein Intervall
der doppelten Differenz, der dreifachen Differenz oder
der vierfachen Differenz verschoben 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 des Vorabrufpuffers 5 wegen des Zugriffs
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-Steu
ereinrichtung 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-/Schreib
fehler-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"-In
formation 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-Puf
fermodul 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-Steu
ereinrichtung 510 neu geladen; 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-Mul
tiplexer 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 (27)
1. Vorabrufpuffer, der dazu geeignet ist, in einem
Computersystem mit einer CPU (2) zwischen einem Cache-Spei
cher (3) und einem Hauptspeicher (4) installiert zu
werden,
gekennzeichnet durch
einen Puffer (503) mit wenigstens einem Eintrag zum Speichern von vorabgerufenen Daten und eines zum Su chen der Daten verwendeten Adressenidentifizierungszei chens als Paar;
eine Daten-Sucheinrichtung (500) zum Suchen der Daten mit der von der CPU (2) angeforderten Adresse in den im Puffer (503) gespeicherten Daten;
eine Adressen-Berechnungseinrichtung (501) zum Bestimmen einer Hauptspeicher-Adresse der als nächstes vorabzurufenden Daten auf der Grundlage der von der CPU (2) angeforderten Adresse und einer Geschichte der Hauptspeicher-Adressen der in der Vergangenheit (4) vorabgerufenen Daten; und
eine Adressen-Erzeugungseinrichtung (502) zum Er zeugen einer Adresse der aus dem Hauptspeicher (4) vorabzurufenden Daten gemäß der Berechnung der Adressen-Be rechnungseinrichtung (501).
einen Puffer (503) mit wenigstens einem Eintrag zum Speichern von vorabgerufenen Daten und eines zum Su chen der Daten verwendeten Adressenidentifizierungszei chens als Paar;
eine Daten-Sucheinrichtung (500) zum Suchen der Daten mit der von der CPU (2) angeforderten Adresse in den im Puffer (503) gespeicherten Daten;
eine Adressen-Berechnungseinrichtung (501) zum Bestimmen einer Hauptspeicher-Adresse der als nächstes vorabzurufenden Daten auf der Grundlage der von der CPU (2) angeforderten Adresse und einer Geschichte der Hauptspeicher-Adressen der in der Vergangenheit (4) vorabgerufenen Daten; und
eine Adressen-Erzeugungseinrichtung (502) zum Er zeugen einer Adresse der aus dem Hauptspeicher (4) vorabzurufenden Daten gemäß der Berechnung der Adressen-Be rechnungseinrichtung (501).
2. Vorabrufpuffer gemäß Anspruch 1, dadurch gekenn
zeichnet, daß die Adressen-Berechnungseinrichtung (501)
die Differenz zwischen einer von der CPU (2) angeforder
ten Adresse und der von der CPU (2) unmittelbar vorher
angeforderten Adresse bildet und dann auf der Grundlage
des Differenzwertes eine Adresse der aus dem Hauptspei
cher (4) vorabzurufenden Daten berechnet.
3. Vorabrufpuffer gemäß Anspruch 1, dadurch gekenn
zeichnet, daß der Puffer (503) n (n ist ganze Zahl größer
als 1) Einträge umfaßt und die Daten-Sucheinrichtung
(500) in sämtlichen Einträgen nach den Daten mit der von
der CPU (2) angeforderten Adresse sucht.
4. Vorabrufpuffer gemäß Anspruch 3, dadurch gekenn
zeichnet, daß die Adressen-Erzeugungseinrichtung (502)
als Adressen der vorabzurufenden Daten n Adressen er
zeugt, die an die Adresse der von der CPU (2) angeforder
ten Daten anschließen.
5. Vorabrufpuffer gemäß Anspruch 4, dadurch gekenn
zeichnet, daß
die Adressen-Erzeugungseinrichtung (501) umfaßt:
- - ein Vorwärtsadressen-/Rückwärtsadressen-Regi ster (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 vorher gehen, gespeichert werden sollen, und
- - ein Register (5010) für die zuletzt getrof fene Adresse zum Speichern einer vom Vorab rufpuffer (5) zuletzt getroffenen Adresse; und
die Adressen-Berechnungseinrichtung (501) die
Adressen-Erzeugungseinrichtung (502) steuert, derart,
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, ge speichert 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 gekenn
zeichnet, daß der vorgegebene Wert p zwischen 1 und n
liegt (1 p n).
7. Vorabrufpuffer gemäß Anspruch 5, dadurch gekenn
zeichnet, daß, wenn er eine angeforderte Adresse trifft,
die Adressen-Berechnungseinrichtung (501) die Adressen-Er
zeugungseinrichtung (502) steuert, derart, daß der In
halt des Registers für die zuletzt getroffene Adresse
(5010) durch die angeforderte Adresse aktualisiert wird
und im Puffer (503) n aufeinanderfolgende Daten, die der
angeforderten Adresse in einer Richtung, die dem Inhalt
des Vorwärts-/Rückwärtsadressen-Registers entspricht, ge
speichert werden.
8. Vorabrufpuffer gemäß Anspruch 3 dadurch gekenn
zeichnet, daß die Adressen-Berechnungseinrichtung (501)
eine Adresse der Daten berechnet, die aus dem Hauptspei
cher vorabgerufen 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, dadurch gekenn
zeichnet, daß
der Puffer (503) eine Einrichtung (5032) auf weist, 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 für den gültige Daten speichern den Eintrag sucht.
der Puffer (503) eine Einrichtung (5032) auf weist, 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 für den gültige Daten speichern den Eintrag sucht.
10. Vorabrufpuffer gemäß Anspruch 3, dadurch gekenn
zeichnet, daß
der Puffer (503) ein Zustandsbit aufweist, um den gültige Daten speichernden Eintrag und den ungültige Da ten 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 Da ten 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 gemäß Anspruch 1 oder 3, gekenn
zeichnet durch eine Universalsteuereinheit (51) zum
Steuern von m (m ist ganze Zahl größer als 1) Puffermodu
len (50-0, 50-1, . . ., 50-m), von denen jeder einen Puffer
(503), eine Adressen-Erzeugungseinrichtung (502), eine
Daten-Sucheinrichtung (500) und eine Adressen-Berech
nungseinrichtung (501) umfaßt.
12. Vorabrufpuffer gemäß Anspruch 11, dadurch gekenn
zeichnet, 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
Puffermodulen (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äß Anspruch 11, dadurch gekenn
zeichnet, 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 Puffer
modul (50-i) vorhanden ist, bei dem die Differenz zwi
schen der in der Adressen-Berechnungseinrichtung (501)
gespeicherten zuletzt getroffenen Adresse und der ange
forderten 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 Adressendiffe
renz kleiner als der vorgegebene Wert d ist, aus den m
Puffermodulen (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 gekenn
zeichnet, daß die Universalsteuereinheit (51) die m
Puffermodule (50-0, 50-1, . . ., 50-m) in zwei Gruppen
unterteilt und die beiden Gruppen in bezug auf Lesefehler
bzw. Schreibfehler getrennt verwaltet.
16. Vorabrufpuffer gemäß Anspruch 15, dadurch gekenn
zeichnet, daß die Universalsteuereinheit (51)
den Lesefehler-Puffermodul, auf den für die längste Zeit nicht zugegriffen worden ist, und den Schreibfehler-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 demselben Attribut in bezug auf die angeforderte Adresse keinen Treffer erzielen, aus den Puffermodulen mit bezüglich der angeforderten Adresse verschiedenen Attri buten denjenigen Puffermodul wählt, auf den für die längste Zeit nicht zugegriffen worden ist, das Attribut des zuletzt genannten Puffermoduls ändert, damit es mit der angeforderten Adresse übereinstimmt, und im Puffer (503) dieses Puffermoduls die Daten mit der der angefor derten Adresse nachfolgenden Adresse speichert.
den Lesefehler-Puffermodul, auf den für die längste Zeit nicht zugegriffen worden ist, und den Schreibfehler-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 demselben Attribut in bezug auf die angeforderte Adresse keinen Treffer erzielen, aus den Puffermodulen mit bezüglich der angeforderten Adresse verschiedenen Attri buten denjenigen Puffermodul wählt, auf den für die längste Zeit nicht zugegriffen worden ist, das Attribut des zuletzt genannten Puffermoduls ändert, damit es mit der angeforderten Adresse übereinstimmt, und im Puffer (503) dieses Puffermoduls die Daten mit der der angefor derten Adresse nachfolgenden Adresse speichert.
17. Vorabrufpuffer, der dazu geeignet ist, in einem
Computersystem mit einer CPU (2) zwischen einem Cache-Spei
cher (3) und einem Hauptspeicher (4) installiert zu
werden,
gekennzeichnet durch
einen Puffer (503) mit wenigstens einem Eintrag zum Speichern von vorabgerufenen Daten und eines zum Su chen der Daten verwendeten Adressenidentifizierungszei chens als Paar;
eine Daten-Sucheinrichtung (500) zum Suchen der Daten mit einer von der CPU (2) angeforderten Adresse in den im Puffer (503) gespeicherten Daten;
eine Adressen-Berechnungseinrichtung (501) zum Bestimmen einer Hauptspeicher-Adresse der als nächstes vorabzurufenden Daten auf der Grundlage der von der CPU (2) angeforderten Adresse und einer Geschichte der Hauptspeicher-Adressen der in der Vergangenheit (4) vorabgerufenen Daten;
eine Adressen-Erzeugungseinrichtung (502) zum Er zeugen einer Adresse der aus dem Hauptspeicher (4) vorabzurufenden Daten entsprechend der Bestimmung der Adressen-Berechnungseinrichtung (501); und
eine Universalsteuereinheit (51) zur in bezug auf Lesefehler und Schreibfehler getrennten Steuerung von m (m ist ganze Zahl größer als 1) Puffermodulen (50-0, 50-1, . . ., 50-m), wobei jeder der Puffermodule (50-0, 50-1, . . ., 50-m) einen Puffer (503), eine Adressen-Erzeugungs einrichtung (502), eine Daten-Sucheinrichtung (500) und eine Adressen-Berechnungseinrichtung (501) umfaßt.
einen Puffer (503) mit wenigstens einem Eintrag zum Speichern von vorabgerufenen Daten und eines zum Su chen der Daten verwendeten Adressenidentifizierungszei chens als Paar;
eine Daten-Sucheinrichtung (500) zum Suchen der Daten mit einer von der CPU (2) angeforderten Adresse in den im Puffer (503) gespeicherten Daten;
eine Adressen-Berechnungseinrichtung (501) zum Bestimmen einer Hauptspeicher-Adresse der als nächstes vorabzurufenden Daten auf der Grundlage der von der CPU (2) angeforderten Adresse und einer Geschichte der Hauptspeicher-Adressen der in der Vergangenheit (4) vorabgerufenen Daten;
eine Adressen-Erzeugungseinrichtung (502) zum Er zeugen einer Adresse der aus dem Hauptspeicher (4) vorabzurufenden Daten entsprechend der Bestimmung der Adressen-Berechnungseinrichtung (501); und
eine Universalsteuereinheit (51) zur in bezug auf Lesefehler und Schreibfehler getrennten Steuerung von m (m ist ganze Zahl größer als 1) Puffermodulen (50-0, 50-1, . . ., 50-m), wobei jeder der Puffermodule (50-0, 50-1, . . ., 50-m) einen Puffer (503), eine Adressen-Erzeugungs einrichtung (502), eine Daten-Sucheinrichtung (500) und eine Adressen-Berechnungseinrichtung (501) umfaßt.
18. Vorabrufpuffer, der dazu geeignet ist, in einem
Multiprozessor-Computersystem mit mehreren CPU′s (2-0, 2-1,
2-2, 2-3) zwischen einem jeweiligen Cache-Speicher (3-0,
3-1, 3-2, 3-3) und einem Hauptspeicher (4) installiert
zu werden,
gekennzeichnet durch
einen Puffer (503) mit wenigstens einem Eintrag zum Speichern von vorabgerufenen Daten und eines zum Su chen der Daten verwendeten Adressenidentifizierungszei chens als Paar;
eine Daten-Sucheinrichtung (500) zum Suchen der Daten mit der von einer einzelnen CPU (2-i) angeforderten Adresse in den im Puffer (503) gespeicherten Daten;
eine Adressen-Berechnungseinrichtung (501) zum Bestimmen einer Hauptspeicher-Adresse der als nächstes abzurufenden Daten auf der Grundlage der von der einzel nen CPU (2) angeforderten Adresse und einer Geschichte der Hauptspeicher-Adressen der in der Vergangenheit abgerufenen Daten;
eine Adressen-Erzeugungseinrichtung (502) zum Er zeugen einer Adresse der aus dem Hauptspeicher (4) abzurufenden Daten entsprechend der Bestimmung der Adressen-Berechnungseinrichtung (501); und
eine Universalsteuereinheit (51) zum Steuern von m (m ist ganze Zahl größer als 1) Puffermodulen (50-0, 50-1, . . ., 50-m), die den jeweiligen CPU′s (2-0, 2-1, 2-2, 2-3) zugeordnet sind, wobei jeder der Puffermodule (50-0, 50-1, . . ., 50-m) einen Puffer (503), eine Adressen-Erzeu gungseinrichtung (502), eine Daten-Sucheinrichtung (500) und eine Adressen-Berechnungseinrichtung (501) umfaßt.
einen Puffer (503) mit wenigstens einem Eintrag zum Speichern von vorabgerufenen Daten und eines zum Su chen der Daten verwendeten Adressenidentifizierungszei chens als Paar;
eine Daten-Sucheinrichtung (500) zum Suchen der Daten mit der von einer einzelnen CPU (2-i) angeforderten Adresse in den im Puffer (503) gespeicherten Daten;
eine Adressen-Berechnungseinrichtung (501) zum Bestimmen einer Hauptspeicher-Adresse der als nächstes abzurufenden Daten auf der Grundlage der von der einzel nen CPU (2) angeforderten Adresse und einer Geschichte der Hauptspeicher-Adressen der in der Vergangenheit abgerufenen Daten;
eine Adressen-Erzeugungseinrichtung (502) zum Er zeugen einer Adresse der aus dem Hauptspeicher (4) abzurufenden Daten entsprechend der Bestimmung der Adressen-Berechnungseinrichtung (501); und
eine Universalsteuereinheit (51) zum Steuern von m (m ist ganze Zahl größer als 1) Puffermodulen (50-0, 50-1, . . ., 50-m), die den jeweiligen CPU′s (2-0, 2-1, 2-2, 2-3) zugeordnet sind, wobei jeder der Puffermodule (50-0, 50-1, . . ., 50-m) einen Puffer (503), eine Adressen-Erzeu gungseinrichtung (502), eine Daten-Sucheinrichtung (500) und eine Adressen-Berechnungseinrichtung (501) umfaßt.
19. Vorabrufpuffer gemäß Anspruch 18, dadurch gekenn
zeichnet, daß die Universalsteuereinheit (51) von den von
derselben CPU (2-0, 2-1, 2-2, 2-3) genutzten Puffermodu
len (50-0, 50-1, . . ., 50-m) denjenigen Puffermodul (50-i)
verwaltet, auf den für die längste Zeit nicht zugegriffen
worden ist,
die Universalsteuereinheit (51) in dem Fall, in dem sämtliche Puffermodule (50-0, 50-1, . . ., 50-m), die der die Anforderungsquelle der angeforderten Adresse bilden den 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 bildenden CPU (2-0, 2-1, 2-2, 2-3) verschiedenen CPU zugeordnet ist, den letztgenannten Puffermodul (50-i) ändert, derart, daß er der die Anforderungsquelle bildenden CPU zugeordnet ist, und im Puffer (503) dieses Puffermoduls (50-i) die Daten mit der der angeforderten Adresse folgenden Adresse speichert.
die Universalsteuereinheit (51) in dem Fall, in dem sämtliche Puffermodule (50-0, 50-1, . . ., 50-m), die der die Anforderungsquelle der angeforderten Adresse bilden den 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 bildenden CPU (2-0, 2-1, 2-2, 2-3) verschiedenen CPU zugeordnet ist, den letztgenannten Puffermodul (50-i) ändert, derart, daß er der die Anforderungsquelle bildenden CPU zugeordnet ist, und im Puffer (503) dieses Puffermoduls (50-i) die Daten mit der der angeforderten Adresse folgenden Adresse speichert.
20. Vorabrufpuffer, der dazu geeignet ist, in einem
Computersystem mit einer CPU (2) zwischen einem Cache-Spei
cher (3) und einem Hauptspeicher (4) installiert zu
werden,
gekennzeichnet durch
einen Puffer (503) mit wenigstens einem Eintrag zum Speichern von vorabgerufenen Daten und eines zum Su chen der Daten verwendeten Adressenidentifizierungszei chens als Paar;
eine Daten-Sucheinrichtung (500) zum Suchen der eine von der CPU (2) angeforderte Adresse besitzenden Da ten in den im Puffer (503) gespeicherten Daten;
eine Adressen-Berechnungseinrichtung (501) zum Erhöhen oder Erniedrigen der Hauptspeicher-Adressen der vorabzurufenden Daten, je nachdem, ob sich die von der CPU (2) angeforderte Adresse in Vorwärts- oder Rückwärts richtung ändert; und
eine Adressen-Erzeugungseinrichtung (502) zum Er zeugen einer Adresse der aus dem Hauptspeicher (4) vorabzurufenden Daten entsprechend der Operation der Adressen-Berechnungseinrichtung (501).
einen Puffer (503) mit wenigstens einem Eintrag zum Speichern von vorabgerufenen Daten und eines zum Su chen der Daten verwendeten Adressenidentifizierungszei chens als Paar;
eine Daten-Sucheinrichtung (500) zum Suchen der eine von der CPU (2) angeforderte Adresse besitzenden Da ten in den im Puffer (503) gespeicherten Daten;
eine Adressen-Berechnungseinrichtung (501) zum Erhöhen oder Erniedrigen der Hauptspeicher-Adressen der vorabzurufenden Daten, je nachdem, ob sich die von der CPU (2) angeforderte Adresse in Vorwärts- oder Rückwärts richtung ändert; und
eine Adressen-Erzeugungseinrichtung (502) zum Er zeugen einer Adresse der aus dem Hauptspeicher (4) vorabzurufenden Daten entsprechend der Operation der Adressen-Berechnungseinrichtung (501).
21. Informationsverarbeitungssystem, mit
einer CPU (2) zum Ausführen von Rechen- und/oder Steueroperationen;
einem ersten Speicher (4) zum Speichern sowohl von Programmen, die Prozeduren für die Ausführung der Re chenoperationen und/oder der Steueroperationen darstel len, als auch von Daten, die in den Rechenoperationen und/oder den Steueroperationen verwendet werden; und
einem zweiten Speicher (3) zum Speichern von In formation, die mit einem Teil der im ersten Speicher (4) gespeicherten Information identisch ist; gekennzeichnet durch einen dritten Speicher (5) zum Berechnen einer nachfolgenden Adresse auf der Grundlage einer Geschichte von von der CPU (2) angeforderten Adressen und zum Speichern der im ersten Speicher (4) gespeicherten Information auf der Grundlage des Berechnungsergebnisses.
einer CPU (2) zum Ausführen von Rechen- und/oder Steueroperationen;
einem ersten Speicher (4) zum Speichern sowohl von Programmen, die Prozeduren für die Ausführung der Re chenoperationen und/oder der Steueroperationen darstel len, als auch von Daten, die in den Rechenoperationen und/oder den Steueroperationen verwendet werden; und
einem zweiten Speicher (3) zum Speichern von In formation, die mit einem Teil der im ersten Speicher (4) gespeicherten Information identisch ist; gekennzeichnet durch einen dritten Speicher (5) zum Berechnen einer nachfolgenden Adresse auf der Grundlage einer Geschichte von von der CPU (2) angeforderten Adressen und zum Speichern der im ersten Speicher (4) gespeicherten Information auf der Grundlage des Berechnungsergebnisses.
22. Informationsverarbeitungssystem, mit
mehreren CPU′s (2-0, 2-1, 2-2, 2-3), von denen
jede Rechenoperationen und/oder Steueroperationen aus
führt;
einem ersten Speicher (4) zum Speichern sowohl von Programmen, die Prozeduren für die Ausführung der Re chenoperationen und/oder der Steueroperationen darstel len, als auch von Daten, die in den Rechenoperationen und/oder den Steueroperationen verwendet werden; und
mehreren zweiten Speichern (3-0, 3-1, 3-2, 3-3) zum Speichern von Information, die mit einem Teil der im ersten Speicher (4) gespeicherten Information identisch ist, gekennzeichnet durch einen dritten Speicher (5) zum Berechnen von je weiligen nachfolgenden Adressen auf der Grundlage einer Geschichte der von der jeweiligen CPU (2-0, 2-1, 2-2, 2-3) angeforderten Adressen und zum Speichern der im ersten Speicher (4) gespeicherten Information auf der Grundlage des Berechnungsergebnisses.
einem ersten Speicher (4) zum Speichern sowohl von Programmen, die Prozeduren für die Ausführung der Re chenoperationen und/oder der Steueroperationen darstel len, als auch von Daten, die in den Rechenoperationen und/oder den Steueroperationen verwendet werden; und
mehreren zweiten Speichern (3-0, 3-1, 3-2, 3-3) zum Speichern von Information, die mit einem Teil der im ersten Speicher (4) gespeicherten Information identisch ist, gekennzeichnet durch einen dritten Speicher (5) zum Berechnen von je weiligen nachfolgenden Adressen auf der Grundlage einer Geschichte der von der jeweiligen CPU (2-0, 2-1, 2-2, 2-3) angeforderten Adressen und zum Speichern der im ersten Speicher (4) gespeicherten Information auf der Grundlage des Berechnungsergebnisses.
23. Informationsverarbeitungssystem, mit
wenigstens einer CPU (2) zum Ausführen von Re chenoperationen und/oder Steueroperationen; und
einem Speicher (4) zum Speichern sowohl von Programmen, die Prozeduren für die Ausführung der Rechen operationen und/oder der Steueroperationen darstellen, als auch von Daten, die in den Rechenoperationen und/oder den Steueroperationen verwendet werden, gekennzeichnet durch eine Speicher-Steuereinrichtung (40) für die Be rechnung einer nachfolgenden Adresse auf der Grundlage einer Geschichte der von der CPU (2) angeforderten Adressen und für die Verarbeitung der im Speicher (4) ge speicherten Daten auf der Grundlage des Berechnungsergeb nisses.
wenigstens einer CPU (2) zum Ausführen von Re chenoperationen und/oder Steueroperationen; und
einem Speicher (4) zum Speichern sowohl von Programmen, die Prozeduren für die Ausführung der Rechen operationen und/oder der Steueroperationen darstellen, als auch von Daten, die in den Rechenoperationen und/oder den Steueroperationen verwendet werden, gekennzeichnet durch eine Speicher-Steuereinrichtung (40) für die Be rechnung einer nachfolgenden Adresse auf der Grundlage einer Geschichte der von der CPU (2) angeforderten Adressen und für die Verarbeitung der im Speicher (4) ge speicherten Daten auf der Grundlage des Berechnungsergeb nisses.
24. Informationsverarbeitungssystem, mit
wenigstens einer CPU (2) zum Ausführen von Re chenoperationen und/oder Steueroperationen; und
einem Speicher (4) zum Speichern sowohl von Programmen, die Prozeduren für die Ausführung der Rechen operationen und/oder der Steueroperationen darstellen, als auch von Daten, die in den Rechenoperationen und/oder den Steueroperationen verwendet werden, gekennzeichnet durch eine Speicher-Steuereinrichtung (40) für die Be rechnung einer nachfolgenden Adresse auf der Grundlage einer Geschichte der von der CPU (2) angeforderten Adressen und zum Lesen der im ersten Speicher (4) gespei cherten Daten auf der Grundlage des Berechnungsergebnis ses und zum Speichern der Daten in einem Vorabrufpuffer (5).
wenigstens einer CPU (2) zum Ausführen von Re chenoperationen und/oder Steueroperationen; und
einem Speicher (4) zum Speichern sowohl von Programmen, die Prozeduren für die Ausführung der Rechen operationen und/oder der Steueroperationen darstellen, als auch von Daten, die in den Rechenoperationen und/oder den Steueroperationen verwendet werden, gekennzeichnet durch eine Speicher-Steuereinrichtung (40) für die Be rechnung einer nachfolgenden Adresse auf der Grundlage einer Geschichte der von der CPU (2) angeforderten Adressen und zum Lesen der im ersten Speicher (4) gespei cherten Daten auf der Grundlage des Berechnungsergebnis ses und zum Speichern der Daten in einem Vorabrufpuffer (5).
25. Speicher-Steuereinrichtung, dadurch gekennzeich
net, daß sie auf der Grundlage einer Geschichte der von
einer der Ausführung von Rechenoperationen und/oder
Steueroperationen dienenden CPU (2) angeforderten Adres
sen eine nachfolgende Adresse berechnet und auf der
Grundlage des Berechnungsergebnisses eine Information aus
einem Speicher (4) verarbeitet, in dem Information
bezüglich der Rechenoperationen und/oder der Steueropera
tionen gespeichert ist.
26. Vorabrufpuffer, dadurch gekennzeichnet, daß er
auf der Grundlage einer Geschichte der von einer der Aus
führung von Rechenoperationen und/oder von Steueropera
tionen dienenden CPU (2) angeforderten Adressen eine
nachfolgende Adresse berechnet und auf der Grundlage des
Berechnungsergebnisses Information aus einem Speicher (4)
überträgt und speichert, wobei der Speicher (4) Informa
tion bezüglich der Rechenoperationen und/oder der Steuer
operationen speichert.
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 true DE4225228A1 (de) | 1993-02-04 |
DE4225228C2 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 |
EP1133731A1 (de) | 1998-11-25 | 2001-09-19 | Fujitsu Siemens Computers GmbH | Cache-speichereinrichtung |
EP1050802B1 (de) * | 1999-05-03 | 2007-02-07 | STMicroelectronics S.A. | Befehlsvorausholeinheit |
WO2001004760A1 (fr) * | 1999-07-07 | 2001-01-18 | Hitachi, Ltd. | Controleur de memoire |
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 | 富士通株式会社 | プリフェッチを行う演算処理装置、情報処理装置及びそれらの制御方法 |
US8151397B2 (en) | 2002-08-09 | 2012-04-10 | 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 |
US7841041B2 (en) | 2002-08-09 | 2010-11-30 | Colgate-Palmolive Company | Oral care implement |
US8806695B2 (en) | 2002-08-09 | 2014-08-19 | Colgate-Palmolive Company | Oral care implement having flexibly supported cleaning elements extending in opposite directions |
US6957306B2 (en) * | 2002-09-09 | 2005-10-18 | Broadcom Corporation | System and method for controlling prefetching |
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 |
US8977819B2 (en) * | 2010-09-21 | 2015-03-10 | Texas Instruments Incorporated | Prefetch stream filter with FIFO allocation and stream direction prediction |
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 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4714994A (en) * | 1985-04-30 | 1987-12-22 | International Business Machines Corp. | Instruction prefetch buffer control |
EP0389175A2 (de) * | 1989-03-15 | 1990-09-26 | Fujitsu Limited | Datenvorausladesystem |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4943908A (en) * | 1987-12-02 | 1990-07-24 | International Business Machines Corporation | Multiple branch analyzer for prefetching cache lines |
-
1991
- 1991-07-30 JP JP3190240A patent/JP2881049B2/ja not_active Expired - Fee Related
-
1992
- 1992-07-30 US US07/921,742 patent/US5345560A/en not_active Expired - Lifetime
- 1992-07-30 DE DE4225228A patent/DE4225228C2/de not_active Expired - Fee Related
- 1992-07-30 KR KR1019920013630A patent/KR930002945A/ko not_active Application Discontinuation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4714994A (en) * | 1985-04-30 | 1987-12-22 | International Business Machines Corp. | Instruction prefetch buffer control |
EP0389175A2 (de) * | 1989-03-15 | 1990-09-26 | Fujitsu Limited | Datenvorausladesystem |
Non-Patent Citations (4)
Title |
---|
JOUPPI, Norman P.: Improving Direct-Mapped Cache Performance by the Addition of a Small Fully- Associative Cache and Prefetch Buffers. In: The 17th Annual International Symposium on Computer Architecture Conference Proceedings, 1990, S. 364-373 * |
Patent abstracts of Japan, P, 1990, 1065, S. 17, 2-87229, JP 2-87229 A * |
Patent abstracts of Japan. E, 1979, 85, S. 82, 53-134334, JP 53-134334 A * |
Patent abstracts of Japan. P, 1988, 746, S. 163, 63-75934. JP 63-75934 A * |
Also Published As
Publication number | Publication date |
---|---|
JPH0628180A (ja) | 1994-02-04 |
DE4225228C2 (de) | 1997-05-15 |
US5345560A (en) | 1994-09-06 |
KR930002945A (ko) | 1993-02-23 |
JP2881049B2 (ja) | 1999-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4225228A1 (de) | Vorabrufpuffer und einen derartigen vorabrufpuffer verwendendes informationsverarbeitungssystem | |
DE69816044T2 (de) | Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken | |
DE69822534T2 (de) | Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen | |
DE69733374T2 (de) | Speichersteuerungsvorrichtung und -system | |
DE69732020T2 (de) | Wiedereinordnung von Speicheranforderungen in einem Datenverarbeitungssystem | |
DE69434728T2 (de) | Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel | |
DE2459006C2 (de) | Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage | |
DE19527031C2 (de) | Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems | |
DE69634315T2 (de) | Verfahren und Gerät zur Verwendung eines Ladebefehls der keinen Fehler verursacht | |
DE69233655T2 (de) | Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren | |
DE3151745C2 (de) | ||
DE3805107A1 (de) | Verfahren und vorrichtung zur steuerung virtueller adressraeume eines virtuellen speichers | |
DE2224537A1 (de) | Einrichtung und verfahren zur instruktionsselektion | |
DE2547488C2 (de) | Mikroprogrammierte Datenverarbeitungsanlage | |
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE2847960A1 (de) | Speichersteuereinrichtung | |
DE4335475A1 (de) | Datenverarbeitungseinrichtung mit Cache-Speicher | |
DE3932675A1 (de) | Virtuelles maschinensystem | |
DE112005003098T5 (de) | Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung | |
DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
DE19526008A1 (de) | Vertikal partitionierter, primärer Befehls-Cache-Speicher | |
DE3919802C2 (de) | Speichersteuersystem für ein Multiprozessorsystem | |
DE10392127T5 (de) | Verwendung eines Kontextidentifizierers in einem Zwischenspeicher | |
DE2149200A1 (de) | Anordnung zum Steuern der Informationsuebertragung zwischen einerseits dem Zentralteil und andererseits entweder einem beliebig zugreifbaren Schnellspeicher oder einem beliebig zugreifbaren direkt adressierbaren Grossspeicher einer elektronischen Datenverarbeitungsanlage | |
DE2906685C2 (de) |
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 |