DE4225228A1 - Vorabrufpuffer und einen derartigen vorabrufpuffer verwendendes informationsverarbeitungssystem - Google Patents

Vorabrufpuffer und einen derartigen vorabrufpuffer verwendendes informationsverarbeitungssystem

Info

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
Application number
DE4225228A
Other languages
English (en)
Other versions
DE4225228C2 (de
Inventor
Shuuichi Miura
Kenichi Kurosawa
Tetsuaki Nakamikawa
Kenji Hirose
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Engineering Co Ltd
Hitachi Ltd
Original Assignee
Hitachi Engineering Co Ltd
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Engineering Co Ltd, Hitachi Ltd filed Critical Hitachi Engineering Co Ltd
Publication of DE4225228A1 publication Critical patent/DE4225228A1/de
Application granted granted Critical
Publication of DE4225228C2 publication Critical patent/DE4225228C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching 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).
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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).
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.
DE4225228A 1991-07-30 1992-07-30 Vorabrufpuffer und einen derartigen Vorabrufpuffer verwendendes Informationsverarbeitungssystem Expired - Fee Related DE4225228C2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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