DE4330751C2 - Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem zu einem Datenverarbeitungssystem - Google Patents

Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem zu einem Datenverarbeitungssystem

Info

Publication number
DE4330751C2
DE4330751C2 DE4330751A DE4330751A DE4330751C2 DE 4330751 C2 DE4330751 C2 DE 4330751C2 DE 4330751 A DE4330751 A DE 4330751A DE 4330751 A DE4330751 A DE 4330751A DE 4330751 C2 DE4330751 C2 DE 4330751C2
Authority
DE
Germany
Prior art keywords
data
instruction
memory
cache
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE4330751A
Other languages
English (en)
Other versions
DE4330751A1 (de
Inventor
Michael S Schlansker
Vinod Kathail
Rajiv Gupta
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE4330751A1 publication Critical patent/DE4330751A1/de
Application granted granted Critical
Publication of DE4330751C2 publication Critical patent/DE4330751C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

Die vorliegende Erfindung bezieht sich ein Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicher­ puffersystem zu einem Datenverarbeitungssystem bei Computer­ speichersystemen, bei denen die zentrale Verarbeitungsein­ heit viel schneller ist als der Hauptspeicher.
Herkömmliche Computersysteme verwenden Speichersysteme, die der zentralen Verarbeitungseinheit (CPU = central processing unit) Daten als Reaktion auf Lade-Anweisungen bereitstellen und Daten als Reaktion auf Speicher-Anweisungen in den Spei­ chersystemen speichern. Die Kosten pro Berechnung für die CPU nahmen schneller ab als die Kosten pro Byte Speicher. Mit komplexer werdenden Berechnungszielen hat sich zusätz­ lich die Größe des Hauptcomputerspeichers dramatisch erhöht. Als ein Ergebnis wird das Bereitstellen eines Hauptspei­ chers, der mit derselben Geschwindigkeit wie die CPU arbei­ tet, ökonomisch unpraktisch.
Um die hohen Kosten des Bereitstellens eines Hauptspeichers, der mit CPU-Berechnungsgeschwindigkeiten arbeitet, zu ver­ hindern, verwenden viele Systeme Cache-Speicher. Ein Cache- Speicher ist ein schneller Puffer, der verwendet wird, um die zuletzt verwendeten Daten zu speichern. Wenn Ladean­ weisungen an den Cache-Speicher ausgegeben werden, überprüft der Cache-Speicher seinen Puffer, um festzustellen, ob die Daten vorhanden sind. Wenn die Daten bereits im Cache-Spei­ cher enthalten sind, gibt der Cache-Speicher die Daten zurück an die CPU. Wenn die Daten nicht vorhanden sind, muß der Cache-Speicher die Daten aus dem Hauptspeicher laden. Nachdem der Hauptspeicher viel langsamer als der Cache-Spei­ cher ist, führt dies zu einer bedeutenden Verzögerung der Programmausführung. Jedes mal, wenn der Cache-Speicher Daten aus dem Hauptspeicher lädt, müssen einige der in dem Cache- Speicher gespeicherten Daten gelöscht werden, um Raum für die neuen Daten zu schaffen.
Auf ähnliche Weise werden ebenfalls Speicher-Anweisungen an den Cache-Speicher ausgegeben. Wenn die Daten für die in der Speicher-Anweisung angegebene Adresse bereits in dem Cache- Speicher sind, aktualisiert der Cache-Speicher die Daten, um die in der Speicher-Anweisung angegebenen Werte zurück­ zugeben. Wenn die Daten nicht vorhanden sind, macht der Cache-Speicher einen Eintrag für die in der Speicher-An­ weisung angegebene Adresse und bezeichnet die Daten als an dieser Stelle gespeichert. Im Fall eines "Durchschreibe"- Cache-Speichers werden die Daten ebenfalls sofort an den Hauptspeicher derart geschickt, daß der Hauptspeicher immer eine korrekte Kopie der Daten hat. In Nicht-Durchschreibe- Cache-Speicher-Systemen wird der Dateneintrag in dem Cache- Speicher markiert, um anzuzeigen, daß er sich von dem an dieser Adresse im Hauptspeicher gespeicherten Wert unter­ scheidet. Wenn der Dateneintrag während einer nachfolgenden Operation ersetzt wird, dann wird der derart markierte Ein­ trag in den Hauptspeicher geschrieben, bevor er ersetzt wird.
Um effektiv zu sein, müssen die Daten in dem Cache-Speicher durchschnittlich mehrere Male benutzt werden, bevor sie aus dem Cache-Speicher durch neue Daten, die aus dem Hauptspei­ cher als Reaktion auf Lade-Anweisungen, die durch die be­ reits im Cache-Speicher befindlichen Daten nicht erfüllt werden können, eingehen, ersetzt werden. Jedesmal, wenn Da­ ten aus dem Hauptspeicher angefordert werden, muß die CPU warten. Wenn die Daten mehrere Male benutzt werden, während sie im Cache-Speicher sind, amortisiert sich diese Verzöge­ rung über mehrere Lade-Anweisungen; daher wird die durch­ schnittliche Verzögerung pro Lade-Anweisung wesentlich redu­ ziert. Eine solche Reduzierung tritt nicht auf, wenn die Da­ ten nur einmal verwendet werden.
Tatsächlich verschlechtert die Anwendung des Cache-Speichers zur Übertragung von Daten, die nur einmal benutzt werden sollen, das Systemverhalten. Wie oben erwähnt, muß jedesmal, wenn ein neues Datenwort aus dem Hauptspeicher in den Ca­ che-Speicher bewegt wird, ein in dem Cache-Speicher gespei­ chertes Datenwort gelöscht werden. Einige der Datenwörter, die gelöscht werden, wären wiederverwendet worden, wenn die­ se Wörter nicht als Reaktion auf die Lade-Anweisungen für Datenwörter, die nur einmal verwendet werden, gelöscht wor­ den wären. Das Übergeben von Datenwörtern, die während ihrer Anwesenheitszeit im Cache-Speicher nur einmal verwendet wer­ den, verschlechtern daher das Cache-Speicherverhalten. Diese Verschlechterung kann durch Erhöhung der Größe des Cache- Speichers vermindert werden; diese Lösung erhöht jedoch die Kosten des Cache-Speichers erheblich.
Die Zeitverzögerung, die beim Wiedergewinnen von Daten aus dem Hauptspeicher angetroffen wird, wird oft durch die Wartezeit des Hauptspeichers dominiert. Die Wartezeit des Speichersystems ist als die Anzahl der Zyklen nach der Initialisierung des Lade-Vorgangs, bei dem die Daten für die Ladung aus dem Speicher zurückgegeben werden und für die An­ wendung verfügbar sind, definiert. Ein Verfahren zum Ver­ hindern dieser Ineffizienz ist es, die Lade-Anweisung aus­ reichend lange vor dem Bedarf an den Daten auszugeben, um dem Speicher Zeit zu geben, die Daten wiederzugewinnen und sie bereitzuhaben, wenn sie gebraucht werden. Diese Lösung führt jedoch zu zwei Problemen.
Erstens kann eine dazwischenliegende Speicher-Anweisung, die an dieselbe Speicheradresse gerichtet ist, dazu führen, daß fehlerhafte Daten an die CPU zurückgegeben werden.
Zweitens kann das Zugreifen auf die Daten durch den Cache- Speicher die Effizienz des Cache-Speichers tatsächlich re­ duzieren, wenn die Daten, die ausgelesen werden, nur einmal benutzt werden. Um effektiv zu sein, müssen die Daten in dem Cache-Speicher durchschnittlich mehrere Male verwendet wer­ den, bevor sie in dem Cache-Speicher durch neue Daten, die als Antwort auf Lade-Anweisungen, die nicht durch die be­ reits in dem Cache-Speicher befindlichen Daten befriedigt werden können, aus dem Hauptspeicher eingehen, ersetzt wer­ den. Jedesmal, wenn Daten aus dem Hauptspeicher erhalten werden, muß die CPU warten. Wenn die Daten mehrere Male ver­ wendet werden, während sie in dem Cache-Speicher sind, amor­ tisiert sich diese Verzögerung über mehrere Lade-Anweisun­ gen; daher wird die durchschnittliche Verzögerung pro Lade-Anweisung erheblich reduziert. Eine solche Reduzierung tritt nicht auf, wenn die Daten nur einmal verwendet werden. Ferner kann ein Bedarf bestehen, die durch die eingehenden Daten ersetzten Daten wieder in den Cache-Speicher als Ant­ wort auf eine nachfolgende Lade-Anweisung zu laden. Wenn dies auftritt, wird das System durch die Verzögerungen beim Zurückladen der ersetzten Daten weiter benachteiligt.
Die EP 0375864 A2 betrifft ein System zum Zwischenspeichern von Daten zwischen einem Cache-Speicher und einer lang­ sameren Speichereinrichtung in einem Puffer, und ein System zum Übertragen von Daten von dem Puffer direkt an einen Hauptrechner. Fragt ein Prozessor nach Daten, wird der Cache-Speicher überprüft, um zu sehen, ob sich die Daten bereits in dem Cache-Speicher befinden. Wenn dies nicht der Fall ist, wird eine Anfrage bezüglich dieser Daten an das langsamere Speichergerät gesendet. Der Puffer empfängt die Daten von dem langsameren Speichergerät und stellt die Daten dem Prozessor, welcher die Daten angefordert hat, bereit. Der Puffer stellt die Daten dann dem Cache-Speicher zur Speicherung bereit, vorausgesetzt, daß der Cache-Speicher nicht entsprechend einer getrennten Speicheranfrage von dem Prozessor arbeitet. Die Daten werden von dem Puffer in den Cache-Speicher geschrieben, wenn eine solche Einschränkung nicht vorliegt. Der Puffer ist ebenfalls fähig, Daten, die nachfolgenden Anfragen entsprechen, bereitzustellen, voraus­ gesetzt, daß er diese Daten enthält. Dies kann der Fall sein, wenn eine Anfrage bezüglich derselben Daten auftritt und der Puffer diese Daten noch nicht in den Cache-Speicher geschrieben hat. Dieser Fall kann ebenfalls dann auftreten, wenn die Bereiche des Cache-Speichers, die Daten von einem Bereich einer langsameren Speichereinrichtung enthalten kön­ nen, aus irgendwelchen Gründen nicht verfügbar sind. In die­ sem Fall wirkt der Puffer wie ein "Mini"-Cache-Speicher. Nachdem die durch den Puffer von dem langsameren Speicher empfangenen Daten nicht unmittelbar in den Cache-Speicher geschrieben werden müssen, wird der Cache-Speicher in die Lage versetzt, andere Lese- oder Schreib-Anfragen des Pro­ zessors auszuführen. Liegen solche Anfragen bei dem Cache- Speicher nicht vor, werden die Daten in den Cache-Speicher geschrieben.
Die Aufgabe der vorliegenden Erfindung besteht darin, ein verbessertes Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem an ein Datenver­ arbeitungssystem zu schaffen, bei dem die durchschnittliche Verzögerung pro Lade-Anweisung zum Laden von Daten, die von dem Datenverarbeitungssystem angefordert werden, reduziert ist.
Diese Aufgabe wird durch ein Verfahren nach Anspruch 1 ge­ löst.
Es ist ein vorteilhaftes Merkmal der vorliegenden Erfindung, daß ein Verfahren zum Liefern von Daten von einem Hauptspei­ cher über ein Speicherpuffersystem an ein Datenverarbei­ tungssystem geschaffen wird, bei dem die Daten, die nur einige wenige male verwendet werden, nicht durch den Cache- Speicher durchtreten müssen.
Bei dem Verfahren gemäß der vorliegenden Erfindung werden Informationen, die in einem Systemspeicher gespeichert sind, mittels eines Speicherpuffersystem als Reaktion auf Lade-An­ weisungen eines Datenverarbeitungssystems an das Datenverar­ beitungssystem geliefert. Der bei dem Verfahren verwendete Puffer kann in Verbindung mit einem herkömmlichen Cache- Speichersystem verwendet werden. Bei dem Verfahren wird ein Puffer-Untersystem verwendet, das Vorlade-, Lade- und Spei­ cher-Anweisungen von dem Datenverarbeitungssystem empfängt, wobei jede dieser Anweisung eine Adresse einschließt, die ein Datenwort in dem Systemspeicher angibt. Das Puffer-Un­ tersystem empfängt Daten von dem Cache-Speicher und dem Sy­ stem-Speicher und speichert die Daten in einer Register-Da­ tei, die Dateneinträge hat, die eine Adresse und ein Daten­ wort einschließen. Das Puffer-Untersystem schließt eine Steuerung ein, die als Reaktion auf eine empfangene Lade-Anweisung den letzten Wert der Daten, die durch die Adresse der empfangenen Lade-Anweisung identifiziert sind, an das Datenverarbeitungssystem liefert. Die Steuerung steuert ebenfalls das Cache-Speicher-Untersystem und kann von diesem Daten wiedergewinnen. Die Steuerung veranlaßt als Reaktion auf eine empfangene Vorlade-Anweisung, daß die Daten, die der Adresse in der Vorlade-Anweisung zugeordnet sind, in der Registerdatei gespeichert werden. Die Steuerung überwacht ebenfalls Speicher-Anweisungen, die von den Datenverarbei­ tungssystemen ausgegeben werden, und aktualisiert die Werte, die in der Registerdatei gespeichert sind, wenn die Adresse in einer Speicher-Anweisung mit der Adresse eines der Daten­ einträge in der Registerdatei übereinstimmt.
Ein bevorzugtes Ausführungsbeispiel der vorliegenden Erfin­ dung wird nachfolgend unter Bezugnahme auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm eines Computersystems zur Durch­ führung des Verfahrens gemäß der vorliegenden Er­ findung verwendet;
Fig. 2 ein Blockdiagramm eines Puffers-für-baldiges-Lesen zur Verwendung bei dem erfindungsgemäßen Verfahren; und
Fig. 3 ein Blockdiagramm eines kombinierten Cache-Spei­ cher-Systems zur Verwendung bei dem erfindungsgemä­ ßen Verfahren.
Die vorliegende Erfindung kann mit Bezug auf Fig. 1, die ein Blockdiagramm eines Computersystems ist, das einen Haupt­ speicher 14 verwendet, der eine bedeutend geringere Ge­ schwindigkeit als die CPU 12 hat, leichter verstanden wer­ den. Auf den Speicher 14 wird über einen Speicherpuffer 10 gemäß der vorliegenden Erfindung zugegriffen. Der Speicher­ puffer 10 schafft zwei Datenwege zwischen der CPU 12 und dem Speicher 14. Der erste Weg ist durch einen Cache-Speicher 16, der in einer Art analog zu der eines herkömmlichen Ca­ che-Speichers wirksam ist, gepuffert. Die "Verunreinigung" des Cache-Speichers 16 durch Daten, die nur einmal verwendet würden, wenn auf sie durch den Cache-Speicher 16 zugegriffen wurde, wird durch Einschließen eines zweiten Datenweges, der einen Puffer 18 verwendet, auf den als "Puffer-für-baldiges- Lesen" Bezug genommen wird, gelindert, nachdem Daten, die nicht kurz nach ihrer Ankunft in diesem Puffer gelesen wer­ den, wahrscheinlich überschrieben werden und daher nicht verfügbar sind, wenn auf sie nicht kurz nach der Ankunft in diesem Puffer zugegriffen wird.
In Systemen nach dem Stand der Technik greift die CPU auf Daten in dem Speicher durch Ausgeben eines Lade-Befehls an den Cache-Speicher zu. Der Lade-Befehl gibt die Adresse in dem Speicher an, an der die wiederzugewinnenden Daten ge­ speichert sind. Wenn der Cache-Speicher den Lade-Befehl empfängt, überprüft er die Daten, die bereits in ihm ge­ speichert sind, um festzustellen, ob die Daten für diese Adresse bereits in dem Cache-Speicher sind. Wenn die Daten vorhanden sind, werden sie sofort an die CPU zurückgegeben.
Wenn die Daten nicht vorhanden sind, wird die CPU für eine Zeit, die für den Cache ausreichend ist, um die erwünschten Daten aus dem Speicher zu laden, angehalten.
Die vorliegende Erfindung führt in Wirklichkeit zwei Typen von Lade-Anweisungen aus. Eine Lade-Anweisung ist in einer Art analog zu der herkömmlichen Lade-Anweisung, die oben be­ schrieben wurde, wirksam. Daten, die als Reaktion auf diese Lade-Anweisung wiedergewonnen werden sollen, werden durch den Cache-Speicher 16 verarbeitet. Die zweite Lade-Anweisung wird für Daten verwendet, die lange Wartezeiten und/oder bei denen es wahrscheinlich wäre, daß sie nur wenige Male wäh­ rend ihrer Anwesenheitszeit in dem Cache-Speicher 16 verwen­ det werden, wenn sie durch den Cache-Speicher 16 geladen worden wären. Dieser zweite Typ der Lade-Anweisung wird durch den Puffer-für-baldiges-Lesen 18 verarbeitet. D.h., die Daten werden durch den Puffer-für-baldiges-Lesen 18 an die CPU zurückgegeben, wenn eine Lade-Anweisung dieses zwei­ ten Types auf dem Bus 20 gesendet wird. Wenn eine Lade-An­ weisung des ersten Typs auf dem Bus 20 gesendet wird, werden die Daten durch den Cache-Speicher 16 zurückgegeben.
Die verschiedenen Lade-Anweisungen werden durch den Compiler für Daten eingesetzt, bei denen es unwahrscheinlich ist, mehr als einmal während der typischen Cache-Speicher-Anwe­ senheitszeit für dieses System verwendet zu werden. Die Un­ terscheidung der verschiedenen Typen von Daten kann mit Be­ zug auf ein einfaches Programm leichter verstanden werden. Angenommen sei ein Programm, das die Einträge in einem großem Daten-Array summiert. Es wird angenommen, daß das Daten-Array an zusammenhängenden Speicherorten im Speicher 14 gespeichert ist und daß die Anzahl der Einträge in dem Daten-Array ein großer Bruchteil der Anzahl der Speicherorte in dem Cache-Speicher 16 ist. Dieses Programm ist eine ein­ fache Schleife, die aus den Anweisungen zum Erhöhen eines Index-Registers, zum Ausgeben von Lade-Anweisungen an den Speicher 14 und zum Hinzufügen der Daten, die zurückgegeben werden, zu einem Akkumulatorregister. Die Anweisungen in der Schleife sind ebenfalls "Daten", die anfänglich in dem Spei­ cher 14 gespeichert werden. Sobald die Schleife beginnt, wird jedoch auf die Anweisungen über den Cache-Speicher 16 zugegriffen, da die Anweisungen während der Ausführung der Schleife immer wieder verwendet werden. Im Gegensatz dazu wird jeder Datenwert in dem Daten-Array genau einmal während der Schleife ausgeführt und daher wird auf ihn unter Ver­ wendung des zweiten Typs der Lade-Anweisung zugegriffen. Durch Zugreifen auf diese Werte durch den Cache-Speicher 16 wird nichts gewonnen.
Tatsächlich können die Vorteile, die durch den Cache-Spei­ cher 16 geschaffen werden, erheblich reduziert werden, wenn auf den Daten-Array durch den Cache-Speicher zugegriffen wird. Der Daten-Array wird als großer Bruchteil des gesamten Cache-Speicherplatzes angenommen; daher würde ein Programm, das auf den Array durch den Cache-Speicher 16 zugreift, den Cache-Speicher 16 zwingen, einen großen Bruchteil seiner vorher gespeicherten Daten zu überschreiben. Einige dieser überschriebenen Daten können durch den Abschnitt des Pro­ gramms, der den Array-Operationen folgt, benötigt werden. Wenn die CPU diese überschriebenen Daten anfordert, wird der Cache-Speicher die CPU anhalten, während er diese Daten zu­ rücklädt. Daher wird das System beim Rückladen der Daten Zeit verlieren, ohne jegliche Zeit beim Verarbeiten der Array-Daten, die den Cache-Speicher veranlaßt haben, die Da­ ten zu entladen, gewonnen zu haben.
Die vorliegende Erfindung verhindert diesen Verlust an Effi­ zienz durch Verwendung von Lade-Anweisungen der zweiten Art, um auf die Array-Daten zuzugreifen. Nachdem diese Lade-An­ weisungen nicht veranlassen, daß Daten in dem Cache-Speicher überschrieben werden, wird der Verlust an Effizienz verhin­ dert.
Wie oben erwähnt, schließt die Zeitverzögerung, die beim Zu­ greifen auf Daten aus dem Speicher 14 angetroffen wird, normalerweise eine lange Wartezeit ein. Für Daten, die in dem Cache-Speicher 16 anwesend sind und auf die während ihrer Anwesenheitszeit mehrmals zugegriffen wird, verlang­ samt diese Wartezeit das System nicht wesentlich, nachdem sich die Wartezeit über mehrere Anwendungen der Daten amor­ tisiert. Für Daten, auf die jedoch nur einmal zugegriffen wird, d. h. Daten, die durch den Puffer-für-baldiges-Lesen 18 bereitgestellt werden, ist diese Wartezeit jedoch ein Haupt­ problem.
Die Auswirkungen dieser Wartezeit können im Prinzip ausge­ schaltet werden, wenn eine Vorlade-Anweisung vor der tat­ sächlichen Lade-Anweisung ausgegeben wird. Eine Vorlade-Anweisung informiert den Puffer-für-baldiges-Lesen, daß eine Lade-Anweisung für die Daten an der Adresse, die in der Vorlade-Anweisung angezeigt ist, in Kürze durch die CPU ausgegeben werden wird. Die Vorlade-Anweisung führt nicht zu der Zurückgabe jeglicher Daten an die CPU. Wie im folgenden genauer beschrieben werden wird, ist in dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung der zweite Typ der Lade-Anweisung unter Verwendung einer Vorlade-An­ wendung ausgeführt. Wenn eine Vorlade-Anweisung durch den Puffer-für-baldiges-Lesen 18 auf dem Bus 20 angetroffen wird, initialisiert der Puffer-für-baldiges-Lesen 18 einen Lade-Prozeß, um die Daten zu erhalten, die durch die Adresse in der Vorlade-Anweisung angegeben sind. Als erstes fragt der Puffer-für-baldiges-Lesen den Cache-Speicher 16 ab, um festzustellen, ob diese Daten in diesem gespeichert sind. Wenn sie es sind, liest der Puffer-für-baldiges-Lesen 18 die Daten aus dem Cache-Speicher 16 in ein Speicherregister in dem Puffer-für-baldiges-Lesen 18. Wenn die Daten nicht in dem Cache-Speicher 16 gespeichert sind, initialisiert der Puffer-für-baldiges-Lesen 18 eine Ladung aus dem Speicher 14. Die Wartezeit wird in Anweisungszyklen des Speichers 14 durch Tw bezeichnet. Wenn die Vorlade-Anweisung mindestens Tw Zyklen vor der Lade-Anweisung, die die Daten tatsächlich an die CPU 12 überträgt, ausgegeben wird, werden die Effekte der Wartezeit im wesentlichen ausgeschaltet werden.
Um eine Vorlade-Anweisung effektiv zu verwenden, muß der Puffer-für-baldiges-Lesen 18 sicher sein, daß die Daten, die in dem Puffer-für-baldiges-Lesen 18 gespeichert sind, zu dem Zeitpunkt, zu dem die entsprechende Lade-Anweisung auf dem Bus 20 erfaßt wird, die korrekten Daten für diese Adresse sind. Wie oben erwähnt, muß die Vorlade-Anweisung mindestens Tw Anweisungen vor der entsprechenden Lade-Anweisung ausgegeben sein, um die Auswirkung der Wartezeit komplett auszuschalten. Wenn die Anweisungen zwischen der Vorlade- Anweisung und der entsprechenden Lade-Anweisung eine oder mehrere Speicher-Anweisungen einschließen, die an diese Adresse gerichtet sind, sind die Daten, die als Reaktion auf die Vorlade-Anweisung aus dem Cache-Speicher 16 oder aus dem Speicher 14 geholt wurden, nicht länger gültig.
In dem bevorzugten Ausführungsbeispiel der vorliegenden Er­ findung behält der Speicher-für-baldiges-Lesen 18 eine Kopie der Daten für diese Adresse. Wenn der Speicher-für-baldiges- Lesen 18 eine Vorlade-Anweisung für eine Adresse A empfängt, fragt er als erstes den Cache-Speicher 16 ab, um festzustellen, ob die Daten für die Adresse A in dem Cache- Speicher 16 sind. Wenn diese Daten in dem Cache-Speicher 16 sind, liest der Speicher-für-baldiges-Lesen 18 die Daten aus dem Cache-Speicher 16 in ein Register in dem Puffer für bal­ diges Lesen 18 ein. Wenn die Daten in dem Cache-Speicher 16 nicht vorhanden sind, wird eine Lade-Anweisung an den Spei­ cher 14 ausgegeben. Diese Lade-Anweisung führt dazu, daß die Daten, die derzeit für die Adresse A in dem Speicher 14 ge­ speichert sind, Tw Anweisungszyklen später an den Speicher­ für-baldiges-Lesen geliefert werden. In der Zwischenzeit kann eine Speicher-Anweisung, die an die Adresse A gerichtet ist, ausgegeben worden sein. Daher überwacht der Speicher­ für-baldiges-Lesen 18 den Bus 20 auf Speicher-Anweisungen für Adressen, für die er eine Vorlade-Anweisung erhalten hat. Wenn eine solche Anweisung erfaßt wird, wird der in der Speicher-Anweisung angegebene Wert in dem Puffer-für­ baldiges-Lesen 18 gespeichert und eine Flag wird gesetzt, um anzuzeigen, daß jeglicher Wert, der nachfolgend von dem Speicher 14 oder von dem Cache-Speicher 16 für diese Adresse empfangen wird, zu ignorieren ist. Daher wird der Speicher­ für-baldiges-Lesen 18 immer die aktuellsten Daten für diese Adresse zurückgeben und jegliche Probleme, die Speicher-An­ weisungen zwischen der Vorlade- und Lade-Anweisung zuge­ ordnet sind, werden verhindert.
Während die obige Beschreibung angenommen hat, daß die Vor­ lade-Anweisung mindestens Tw Anweisungen vor der entspre­ chenden Lade-Anweisung ausgegeben wird, sollte darauf hinge­ wiesen werden, daß die vorliegende Erfindung immer noch ordnungsgemäß wirksam sein wird, wenn das Zeitintervall zwischen der Vorlade- und der Lade-Anweisung kleiner als dieser Wert ist. In diesem Fall wird nur ein Teil der Wartezeit ausgeschaltet werden.
Während die obige Beschreibung zwei verschiedene Typen von Lade-Anweisungen verwendet hat, eine an den Cache-Speicher 16 und eine an den Puffer-für-baldiges-Lesen 18 gerichtete, ist es aus der folgenden Beschreibung offensichtlich, daß nur ein Typ der Lade-Anweisung benötigt wird, wenn eine Vorlade-Anweisung verwendet wird, um zwei Typen von Lade­ operationen zu unterscheiden. Wenn eine normale Lade-An­ weisung nach einer Vorlade-Anweisung empfangen wird, unter­ suchen sowohl der Puffer-für-baldiges-Lesen 18 als auch der Cache-Speicher 16 die Adresse in der Lade-Anweisung. Wenn der Puffer-für-baldiges-Lesen 18 die Daten für diese Adresse hat, gibt er diese zurück und erzeugt keinen Eintrag im Cache-Speicher 16. D.h., die Ladung wird als Lade-Anweisung des zweiten Typs behandelt. Wenn die Daten nicht in dem Puffer-für-baldiges-Lesen 18 sind, werden die Daten über den Cache-Speicher 16 abgegeben. In diesem Fall werden sie be­ handelt, als ob sie über eine Lade-Anweisung des ersten Typs geholt wurden.
Ein genaueres Blockdiagramm des bevorzugten Ausführungs­ beispiels eines Puffers-für-baldiges-Lesen 100 gemäß der vorliegenden Erfindung ist in Fig. 2 gezeigt. Der Puffer­ für-baldiges-Lesen 100 schließt eine Registerdatei 110 ein, die eine Mehrzahl von Registersätzen 108 einschließt. Jeder Registersatz 108 schließt Platz zum Speichern der Informa­ tionen ein, die benötigt werden, um eine Vorladung zu be­ dienen. Dieser Speicherplatz schließt ein Register 103 zum Speichern der Adresse, die in der Vorlade-Anweisung an­ gegeben ist, ein Register 104 zum Speichern der Daten, die an die CPU zurückgegeben werden, wenn die entsprechende Lade-Anweisung empfangen wird, und eine Flag 105 zum Anzeigen, daß die Daten, die im Register 104 gespeichert sind, aktueller sind, als die Daten, die derzeit im Speicher 80 sind, ein. Die Operationen des Puffers-für-baldiges-Lesen 110 werden durch eine Steuerung 112 gesteuert, die den Bus 106 auf Vorlade-Anweisungen, auf Lade-Anweisungen, die an den Puffer-für-baldiges-Lesen 110 gerichtet sind, und auf Speicher-Anweisungen überwacht. Die Steuerung 112 tauscht ebenfalls mit dem Cache-Speicher 90 und dem Speicher 80 Daten aus, was die Funktionalität, die oben mit Bezug auf den Cache-Speicher 16 und den Speicher 18 beschrieben wurde, schafft.
Wenn die Steuerung 112 eine Vorlade-Anweisung auf dem Bus 106 erfaßt, veranlaßt sie, daß die Adresse, die der Anwei­ sung zugeordnet ist, in dem nächsten freien Registersatz 108 gespeichert wird. Eine Flag 116 kann verwendet werden, um die Registersätze anzuzeigen, die überschrieben werden kön­ nen. Die Flag 105, die diesem Registersatz zugeordnet ist, wird dann auf einen ersten Wert gesetzt. Die Steuerung 112 fragt dann den Cache-Speicher 90 über einen Bus 107 ab, um festzustellen, ob die Daten für diese Adresse derzeit in dem Cache-Speicher 90 vorhanden sind. Wenn die Daten in dem Cache-Speicher 90 vorhanden sind, liest die Steuerung 112 die Daten aus dem Cache-Speicher 90 in das entsprechende Datenregister in der Registerdatei 110. Wenn diese Daten im Cache-Speicher 90 nicht gefunden werden, fragt die Steuerung 112 die Daten aus dem Speicher 80 ab. Wenn diese Daten an­ kommen, überprüft die Steuerung 112 die Flag 105 in dem Registersatz, um festzustellen, ob die Flag auf einen zwei­ ten Wert zurückgesetzt wurde. Wenn die Flag nicht auf einen zweiten Wert zurückgesetzt wurde, veranlaßt die Steuerung 12, daß die zurückgegebenen Daten in dem Datenregister 104 in diesem Registersatz gespeichert werden.
Wenn die Steuerung 112 eine Lade-Anweisung erfaßt, ver­ gleicht sie die Adresse in der Lade-Anweisung mit den Adres­ sen, die in jedem der aktiven Registersätze 108 gespeichert sind. Der Vergleich wird bevorzugterweise mit der Hilfe eines Vergleichers 102, der jedem Registersatz zugeordnet ist, parallel ausgeführt. Wenn die Steuerung 112 keine über­ einstimmende Adresse in einem der aktiven Registersätze 108 erfaßt, dann muß die Lade-Anweisung an den Cache-Speicher 90 geleitet werden und die Steuerung 112 ignoriert diese Lade- Anweisung. Wenn die Steuerung 112 eine übereinstimmende Adresse in einem der aktiven Registersätze 108 erfaßt, dann muß diese Lade-Anweisung an den Puffer-für-baldiges-Lesen 110 und nicht an den Cache-Speicher 90 gerichtet werden. In diesem Fall signalisiert die Steuerung 112 dem Cache-Spei­ cher 90, diese Lade-Anweisung zu ignorieren. Dieses Signal kann auf dem Bus 107 gesendet werden. Wenn die Lade-An­ weisung an den Puffer-für-baldiges-Lesen 110 gerichtet ist und die Daten wurden in das entsprechende Datenregister 104 geladen, gibt die Steuerung 112 diese Daten an die CPU zurück. Wenn die Daten noch nicht vorhanden sind, veranlaßt die Steuerung 112, die CPU anzuhalten, bis die Daten aus dem Speicher 80 oder dem Cache-Speicher 16 empfangen werden.
Jedesmal, wenn eine Vorlade-Anweisung durch den Puffer-für­ baldiges-Lesen 110 empfangen wird, muß ein Registersatz 108 zugeordnet werden, um die in dem Adreßabschnitt der Anwei­ sung angegebenen Daten zu halten. Nachdem es eine endliche Anzahl von Registern gibt, muß der Puffer-für-baldiges-Lesen 110 den Inhalt eines der Registersätze ersetzen. Eine Anzahl von verschiedenen Ersetzungstrategien können ausgeführt wer­ den. Sobald die Daten an die CPU geliefert wurden, kann der Puffer-für-baldiges-Lesen 110 diesen Registersatz z. B. durch Setzen der Flag 116 als frei seiend markieren.
Eine Anzahl von alternativen Ersetzungsstrategien sind für Fachleute offensichtlich. Jegliche der Ersetzungsstrategien, die für herkömmliche Cache-Speicheroperationen entwickelt wurden, können im Prinzip für einen Puffer zum baldigen Lesen gemäß der vorliegenden Erfindung verwendet werden. Der älteste Eintrag in der Registerdatei 100 könnte z. B. zuge­ ordnet werden, um der neuen Vorlade-Anweisung zu dienen. Das Alter eines Eintrags in eine Registerdatei 100 kann durch einen Zähler 126 festgestellt werden, der jedem Registersatz zugeordnet ist. Der Zähler wird bei jedem Anweisungszyklus erhöht und jedesmal zurückgesetzt, wenn der Registersatz einer neuen Vorlade-Anweisung zugeordnet wird.
Während die oben beschriebenen Ausführungsbeispiele der vor­ liegenden Erfindung die Daten in einem Puffer-für-baldiges- Lesen speichern, ist es für Fachleute offensichtlich, daß andere Speicheranordnungen möglich sind. Z.B. können die Da­ tenabschnitte eines Eintrags (Register 104) in einem CPU- Register gespeichert werden. In diesem Fall würde das Re­ gister 104 durch einen kleineren Eintrag ersetzt, der die Identität des CPU-Registers, in dem die Daten gespeichert sind, anzeigt.
Der Puffer-für-baldiges-Lesen 100 überwacht den Bus 106 ebenfalls auf Speicher-Anweisungen. Wenn eine Speicher-An­ weisung erfaßt wird, vergleicht der Puffer-für-baldiges-Le­ sen 100 die Adresse in der Speicher-Anweisung mit jeder der in den Registern 103 gespeicherten Adressen. Wenn eine über­ einstimmende Adresse gefunden wird, werden die Daten, die in der Speicher-Anweisung für diese Adresse angegeben sind, in dem entsprechenden Datenregister 104 gespeichert. Die ent­ sprechende Flag 105 wird dann auf einen zweiten Wert ge­ setzt, um zu garantieren, daß das Datenregister nicht durch Daten, die aus dem Speicher 80 zurückkommen, überschrieben wird. In dem bevorzugten Ausführungsbeispiel der vorliegen­ den Erfindung wird die Speicher-Anweisung ebenfalls durch den Cache-Speicher 90 in derselben Art ausgeführt, in der der Cache-Speicher 90 andere Speicher-Anweisungen ver­ arbeitet. Dies garantiert, daß die Daten, die in der Spei­ cher-Anweisung angegeben sind, schließlich in dem Speicher 80 an der angegebenen Adresse gespeichert werden.
Die obige Beschreibung nimmt an, daß das Wort, das in der Speicher-Anweisung angegeben ist, exakt mit der Wortlänge der Dateneinträge, die in dem Puffer gespeichert sind, über­ einstimmt. Dies muß nicht immer der Fall sein. In einigen Systemen z. B., kann der Cache-Speicher Wörter speichern, die einige Bytes lang sind; während einer Speicher-Anweisung einen einzelnen Byte einschließen kann. In solchen Systemen kann eine getrennte Flag, wie z. B. Flag 105, für jedes Byte in dem Datenregister 104 geschaffen werden. Jede solche Flag würde anzeigen, daß das entsprechende Byte durch eine Spei­ cher-Anweisung geliefert wurde, und daher ist der Wert für dieses Byte, das als Antwort auf die Vorlade-Anweisung zurückgegeben wird, zu ignorieren.
Angenommen der Fall, daß die Adresse in der Speicher-Anwei­ sung mit keinem der Einträge in dem Puffer-für-baldiges-Le­ sen 100 übereinstimmt. Es gibt zwei mögliche Reaktionen, entweder wird ein neuer Eintrag in dem Puffer-für-baldiges- Lesen 100 erzeugt oder er wird nicht erzeugt. Das System wird in jedem Fall korrekt arbeiten. Wenn ein neuer Eintrag erzeugt wird, hat der neue Eintrag denselben Effekt wie eine Vorladung für diese Adresse. Daher wird eine nachfolgende Ladung von der reduzierten Wartezeit profitieren.
Um ein gutes Verhalten zu erreichen, kann die minimale An­ zahl von Registern in dem Puffer-für-baldiges-Lesen 100 durch die Wartezeit der Lade-Anweisung festgestellt werden. Wenn die Vorlade-Anweisungen immer genau Tw Anweisungen vor der entsprechenden Lade-Anweisung in den Code eingefügt wer­ den, dann wird jede Vorlade-Anweisung veranlassen, daß ein Register in dem Puffer-für-baldiges-Lesen 100 für Tw Anwei­ sungen besetzt ist. Daher erfordert der Puffer-für-baldiges- Lesen 100 ein Minimum von Tw Registersätzen 108. Wenn die Plazierung der Vorlade-Anweisungen nicht so genau ist, wer­ den mehr Registersätze benötigt. Sogar wenn zweimal die minimale Anzahl von Registersätzen verwendet wird, wird die Größe der Registerdatei 110 jedoch ein sehr kleiner Bruch­ teil der Größe des Cache-Speichers 90 sein, die typischer­ weise tausende von Speicherworten ist.
Die Verwendung des Puffers-für-baldiges-Lesen 100, um eine Verunreinigung des Cache-Speichers 90 durch Daten, die aus dem Speicher 80 an die CPU fließen, zu verhindern, reduziert den Betrag an Speicher, der durch den Cache-Speicher 90 be­ nötigt wird, bedeutend. Daten, die von der CPU zum Speicher 80 über Speicher-Anweisungen fließen, können den Cache-Spei­ cher 90 jedoch ebenfalls mit Daten verunreinigen, die wäh­ rend ihrer Anwesenheitszeit in dem Cache-Speicher 90 nicht wiederverwendet werden. Angenommen ein einfaches Programm, in dem jedes Element eines Arrays mit einer Zahl multipli­ ziert wird und dann im Speicher 80 gespeichert wird. Die Verunreinigung des Cache-Speichers 90 durch den Fluß von Array-Elementen von dem Speicher 80 an die CPU und die War­ tezeitverluste, die diesen Datenholoperationen eigen sind, werden durch einen Puffer-für-baldiges-Lesen 100 gelindert. Wenn die neuen Array-Elemente über herkömmliche Speicher-An­ weisungen an den Speicher zurückgegeben werden, werden die Werte jedoch anfänglich im Cache-Speicher 90 gespeichert. Diese ankommenden Daten werden andere Daten im Cache-Spei­ cher 90 ersetzen. Nachdem es nicht wahrscheinlich ist, daß die ankommenden Daten während ihrer Anwesenheit im Cache- Speicher 90 wiederverwendet werden, während einige der er­ setzten Daten wiederverwendet worden wären, resultiert die­ ses Speicherschema in einem Verlust an Cache-Speichereffi­ zienz.
In dem bevorzugten Ausführungsbeispiel der vorliegenden Er­ findung wird dieser Verlust an Effizienz durch Schaffen eines zweiten Typs einer Speicher-Anweisung gelindert, die als Cache-Speicher-Bypaß-Anweisung Bezug bezeichnet wird. Wenn Daten gespeichert werden sollen, ohne durch den Cache- Speicher 90 zu gehen, werden diese Daten über eine Cache- Speicher-Bypaß-Anweisung an den Speicher geschickt. Aus­ führungsbeispiele, in denen diese Anwendung auf Puffer zum baldigen Lesen 100, auf Cacher-Speicher 90 oder direkt auf Speicher 80 angewendet werden können, sind für Fachleute offensichtlich. Das wichtige Merkmal dieser Anweisung ist es, daß sie dazu führt, daß Daten im Speicher 80 gespeichert werden, ohne unterwegs Platz im Cache-Speicher 90 zu ver­ wenden. In jeglichem dieser Ausführungsbeispiele muß der Puffer-für-baldiges-Lesen 100 jedoch die Speicher-Bypass-An­ weisung als eine "Speicher"-Anweisung erkennen und jeglichen Wert in seiner Registerdatei für die in der Anweisung an­ gegebene Adresse aktualisieren.
Wenn eine Vorlade-Anweisung empfangen wird und keine ent­ sprechende Lade-Anweisung nachfolgend empfangen wird, kann der Registersatz 108, der zum Speichern der Daten verwendet wird, auf unbestimmte Zeit besetzt bleiben. Es gibt jedoch Situationen, in denen es vorteilhaft wäre, der CPU zu erlau­ ben, Vorlade-Anweisungen zu erzeugen, die nicht notwendiger­ weise von Lade-Anweisungen gefolgt werden. Es kann z. B. vorteilhaft sein, Vorlade-Anweisungen für Daten auf beiden Zweigen einer "if-then-else"-Anweisung auszugeben, bevor die Argumente, die den tatsächlich eingeschlagenen Zweig festle­ gen, berechnet sind. In diesem Fall wird ein Satz von Vor­ lade-Anweisungen nicht von Lade-Anweisungen gefolgt. Um Probleme mit einer Besetzung eines Registersatzes 108 auf unbestimmte Zeit zu verhindern, wenn die Lade-Anweisung, die der Vorlade-Anweisung, die den Registersatz installiert, entspricht, nicht empfangen wird, schließt jeder Register­ satz einen Zähler 126 ein, der verwendet wird, um die abge­ laufene Zeit seitdem die Vorladung empfangen wurde, in An­ weisungszyklen zu speichern. Dieser Zählstand wird durch die Steuerung 112 auf einen vorher festgelegten Zählstand ge­ setzt, wenn eine Vorladung empfangen wird und gespeichert. Der Zählstand wird dann bei jedem Anweisungszyklus aktuali­ siert. Wenn das Alter der Daten eine vorher festgelegte An­ zahl von Anweisungszyklen übersteigt, steht es der Steuerung 112 frei, die Daten in diesem Registersatz zu überschreiben.
Während die vorliegende Erfindung als Puffersystem mit einem Cache-Speicher und einem Puffer zum baldigen Lesen beschrie­ ben wurde, kann die vorliegende Erfindung in einem einzelnen Cache-Speicher ausgeführt werden, vorausgesetzt der Cache- Speicher kann zwei verschiedene Aktualisierungsalgorithmen ausführen und auf zwei verschiedene "Lade"-Anweisungen rea­ gieren. Beim normalen Cache-Speicherbetrieb werden die Daten ersetzt, wenn neue Daten in den Cache-Speicher als Reaktion auf Lade- oder Speicher-Anweisungen eintreten. Bei einem herkömmlichen Cache-Speicher hängen die angegebenen Daten­ einträge, die in dem Cache-Speicher überschrieben werden, von der Länge der Zeit ab, die der Dateneintrag in dem Cache-Speicher anwesend war, ohne durch eine Lade- oder Speicher-Anweisung aufgerufen worden zu sein. Bei her­ kömmlichen Cache-Speichern werden die Daten auf der Grund­ lage des Alters der Daten überschrieben, die älteren Daten werden zuerst ersetzt.
Der Puffer-für-baldiges-Lesen, der oben beschrieben wurde, verhält sich in einer Art arg zu einem Cache-Speicher, in dem die Daten ersetzt werden, wenn sie verwendet wurden oder wenn der Dateneintrag in der Registerdatei älter als eine vorher festgelegte Anzahl von Anweisungszyklen ist. Ein Registersatz 108 kann frühestens überschrieben werden, wenn die Daten, die in diesem gespeichert sind, als Reaktion auf eine Lade-Anweisung abgeliefert sind. In diesem Sinn führt ein Puffer-für-baldiges-Lesen eine Ersetzungsstrategie aus, in der die neuesten Daten als erste ersetzt werden. Im all­ gemeinen hängt der Datenersetzungsalgorithmus nicht von dem Alter der Daten ab. Der Ersetzungsalgorithmus hängt jedoch von dem Alter der Vorlade-Anweisung ab. Wenn der Datenein­ trag älter als eine vorher festgelegte Anzahl von Anweisun­ gen ist, wie durch den Zähler 126, gezeigt in Fig. 3, gemes­ sen, können die Daten ersetzt werden.
Diese zwei Datenersetzungsstrategien können in einem einzel­ nen Cache-Speicher ausgeführt werden, der dem oben beschrie­ benen Puffer-für-baldiges-Lesen 100 strukturell ähnlich ist. Ein Blockdiagramm für einen kombinierten Cache-Speicher 200 ist in Fig. 3 gezeigt. Der Cache-Speicher 200 verwaltet die Datenspeicherung und -wiedergewinnung aus dem Speicher 210 für die CPU 221. Der Cache-Speicher 200 schließt eine Steue­ rung 201 und eine Registerdatei 209 mit einer Mehrzahl von Registersätzen 231 ein. Die Steuerung 201 empfängt Spei­ cher-, Vorlade- und Lade-Anweisungen von der CPU 221. Beim Empfang von Lade- oder Vorlade-Anweisungen versucht die Steuerung 201 die Anweisungen mit Daten, die in der Re­ gisterdatei 209 gespeichert sind, zu bedienen. Wenn die Da­ ten nicht in der Registerdatei 209 vorhanden sind, veranlaßt die Steuerung 201, daß die Daten aus dem Speicher in die Registerdatei 209 geladen werden.
Beim Empfangen einer Speicher-Anweisung, speichert die Steuerung 201 die Daten in der Registerdatei 209, wenn die Anweisung eine herkömmliche Speicherung war. Wenn die Spei­ cher-Anweisung eine Bypass-Speicher-Anweisung war, veranlaßt die Steuerung 201, daß die Daten direkt in dem Speicher 210 gespeichert werden. In beiden Fällen überprüft die Steuerung 201 die Registersätze 231 in der Registerdatei 209, um fest­ zustellen, ob die neuesten Kopien der Daten hierin gespei­ chert sind. Wenn die Steuerung 201 die Daten in einem Re­ gistersatz 231 findet, aktualisiert sie die Daten und setzt die Flag 205 zurück, um anzuzeigen, daß die Kopie der Daten im Register 204 die Kopie, die im Speicher 210 für diese Adresse gespeichert ist, ablöst. Die Steuerung 201 kann die neuen Daten ebenfalls direkt in den Speicher 210 schreiben, abhängig von der Ersetzungsstrategie, die in dem Cache- Speicher 200 ausgeführt ist. Die Steuerung 201 kann eben­ falls verwendet werden, um den zweiten Typ der Speicheran­ weisung, der oben beschrieben wurde, auszuführen, d. h. eine Speicher-Anweisung, die den Cache-Speicher 200 umgeht, und die Daten direkt in dem Speicher 210 speichert.
Jeder Registersatz 231 in der Registerdatei 209 schließt einen Vergleicher 202 zum Vergleichen der Inhalte eines Adreßregisters 203 mit einer Adresse, die der Steuerung 201 präsentiert wird, ein. Die derzeitigen Daten für diese Adresse werden in einem Datenregister 204 gespeichert. Jeder Registersatz schließt ebenfalls eine Flag 205 ein, um anzu­ zeigen, ob sich die in dem Registersatz gespeicherten Daten von den an der entsprechenden Adresse im Speicher 210 ge­ speicherten unterscheiden. Wenn diese Flag zu dem Zeitpunkt gesetzt ist, an dem der Registersatz mit neuen Daten ersetzt werden soll, veranlaßt die Steuerung 201, daß der Inhalt des Datenregisters 204 an die Adresse, die im Adreßregister 203 angegeben ist, im Speicher 210 geschrieben wird. Jeder Re­ gistersatz 231 schließt ebenfalls einen Zähler 206 zum Mes­ sen des Alters der in diesem gespeicherten Daten und eine zweite Flag 207 zum Bestimmen der Art der Ersetzungsstra­ tegie, die mit den in dem Registersatz gespeicherten Daten verwendet wird, ein. Die Flag 207 wird auf einen ersten Wert gesetzt, wenn der Registersatz als Reaktion auf eine Vorla­ de-Anweisung eingestellt wurde und auf einen zweiten Wert, wenn die Daten als Reaktion auf eine herkömmliche Lade- oder Speicher-Anweisung gespeichert wurden.
Der Zähler 206 wird zum Messen des Alters der Daten verwen­ det. Die Bedeutung des "Alters" der Daten wird durch den Zu­ stand der Flag 207 festgelegt. Wenn die Flag 207 anzeigt, daß der Registersatz verwendet wird, um Daten zu speichern, die als Reaktion auf eine Vorlade-Anweisung wiedergewonnen wurden, zeigt das Alter die Anzahl der Anweisungen an, die seitdem die Vorlade-Anweisung empfangen wurde, verstrichen sind. Wenn eine Vorlade-Anweisung empfangen wird, wird ein Registersatz für die Daten bereitgestellt. Dieser Register­ satz kann durch Rücksetzen des Zählers 206, der dem Regi­ stersatz zugeordnet ist, und durch Ändern des Inhalts der Flag 207 zu einem Registersatz für baldiges Lesen gemacht werden. Wenn die Flag 207 anzeigt, daß der Registersatz für einen herkömmlichen Cache-Betrieb verwendet wird, mißt der Zähler 206 die Anzahl der Anweisungszyklen, seit der letzten Verwendung der Daten.
Bei jedem Anweisungszyklus werden alle Zähler unabhängig von der Art von Informationen, die in dem entsprechenden Regi­ stersatz gespeichert sind, aktualisiert. Wenn die Steuerung 201 Daten ersetzen muß, tut sie dies durch Ersetzen der Da­ ten, die den höchsten Zählerwert haben. Wenn die Daten als Antwort auf eine Lade-Anweisung, die einer Vorlade-Anweisung entspricht, gesendet werden, oder der Dateneintrag das kritische Alter überschreitet, d. h. keine Ladung wurde ent­ sprechend der Vorladung empfangen, kann der Zähler auf seinen maximalen Wert gesetzt werden, wodurch garantiert wird, daß dieser Registersatz überschrieben werden wird, an­ statt eines Registersatzes, der als herkömmlicher Cache- Speicher-Registersatz arbeitet.
Die oben beschriebenen Ausführungsbeispiele der vorliegenden Erfindung schließen einen Registersatz in einem Puffer-für­ baldiges-Lesen ein, der überschrieben werden soll, sobald das dahin gespeicherte Datenwort an die CPU geliefert wurde. Es ist für Fachleute offensichtlich daß andere Ersetzungs­ strategien verwendet werden können. Tatsächlich kann jeg­ liche Ersetzungsstrategie, die bei einem herkömmlichen Cache-Speicher verwendet werden kann, mit der vorliegenden Erfindung verwendet werden. Z.B. kann das Überschreiben aktiviert werden, nachdem die Daten eine vorher festgelegte Anzahl von Malen geliefert wurden. Solche Ausführungsbei­ spiele würden einen zusätzlichen Zähler erfordern, um die Anzahl der Male festzuhalten, bei denen das Datenwort ge­ liefert wurde. Bei diesem Ausführungsbeispiel würde die Vorlade-Anweisung einen anfänglichen Zählstand schaffen, der jedesmal wenn die Daten geliefert wurden, erniedrigt würde. Wenn der Zählstand Null erreicht, würde das Überschreiben des Registersatzes aktiviert.

Claims (7)

1. Verfahren zum Liefern von Daten von einem Hauptspeicher (14; 80) über ein Speicherpuffersystem (10; 100) beste­ hend aus einem Cache-Speicher (16; 90), der mit dem Da­ tenverarbeitungssystem (12) und dem Hauptspeicher (14; 80) verbunden ist, einer Registerdatei (18; 110) zum Speichern zumindest eines Dateneintrags (108), wobei jeder Dateneintrag eine Adresse (103; 203) und ein Da­ tenfeld (104; 204) aufweist, und einer Steuereinrichtung (112), die mit dem Datenverarbeitungssystem (12), dem Hauptspeicher (14; 80) und der Registerdatei (18; 110) verbunden ist, an ein Datenverarbeitungssystem (12) als Reaktion auf einen ersten Lade-Anweisungstyp oder einen zweiten Lade-Anweisungstyp, die das Speicherpuffersystem (10; 100) von dem Datenverarbeitungssystem (12) empfängt,
mit folgenden Verfahrensschritten im Falle einer Lade- Anweisung vom ersten Anweisungstyp:
  • a1) Durchsuchen der Registerdatei (18; 110) und des Cache-Speichers (16; 90) nach Daten, deren Adresse mit der Adresse des ersten Anweisungstyps überein­ stimmt;
  • b1) falls bei dem Schritt a1) solche Daten gefunden wer­ den, Übertragen der gefundenen Daten von der Regi­ sterdatei (18; 110) oder von dem Cache-Speicher (16; 90) zu dem Datenverarbeitungssystem (12);
  • c1) falls bei dem Schritt a1) keine solchen Daten gefun­ den werden, Auslesen von Daten, deren Adresse mit der Adresse des ersten Anweisungstyps übereinstimmt, aus dem Hauptspeicher (14; 80) und Übertragen der­ selben durch den Cache-Speicher (16; 90) zu dem Da­ tenverarbeitungssystem (12);
und mit folgenden Verfahrensschritten im Falle einer La­ de-Anweisung vom zweiten Anweisungstyp:
  • a2) Durchsuchen des Cache-Speichers (16; 90) nach Daten, deren Adresse mit der Adresse des zweiten Anwei­ sungstyp übereinstimmt;
  • b2) falls beim Schritt a2) solche Daten gefunden werden, Laden derselben in die Registerdatei (18; 110);
  • c2) falls beim Schritt a2) solche Daten nicht gefunden werden, Laden von Daten deren Adresse mit der Adres­ se des zweiten Anweisungstyps übereinstimmt, von dem Hauptspeicher (14; 80) in die Registerdatei (18; 110), wobei in dem Cache-Speicher (16; 90) kein Ein­ trag erzeugt wird.
2. Verfahren nach Anspruch 1, bei dem die Lade-Anweisung des ersten Anweisungstyps eine übliche Lade-Anweisung und die Lade-Anweisung des zweiten Anweisungstyps eine Vorladean­ weisung ist.
3. Verfahren nach Anspruch 1 oder 2, bei dem die Daten in einen Speicherort (108; 231) der Registerdatei (18; 110) geladen werden, der eine erste Flag (116; 206) aufweist, die anzeigt, daß der Speicherort überschrieben werden kann.
4. Verfahren nach Anspruch 2, bei dem im Fall einer Ladean­ weisung des zweiten Typs vor dem Schritt a2) die Adres­ se, die der Lade-Anweisung zugeordnet ist, in einen Spei­ cherort (108; 231) der Registerdatei geladen wird, der eine erste Flag (116; 206) aufweist, die anzeigt, daß der Speicherort (108; 231) überschrieben werden kann, und daß eine zweite Flag (105; 205), die dem Speicherort zugeordnet ist auf einen ersten Zustand, der anzeigt, daß der Speicherort (108; 231) überschrieben werden darf, gesetzt wird.
5. Verfahren nach Anspruch 4, das ferner die Schritte des Aktualisierens der Daten eines Speicherorts (108; 231) in der Registerdatei aufweist, wenn die Adresse des Speicherorts (108; 231) mit der Adresse einer Speicher­ anweisung, die die Steuereinrichtung (112) von dem Da­ tenverarbeitungssystem (12) empfängt, übereinstimmt, und, wenn der Speicherort (108; 231) aktualisiert wird, des Setzens der zweiten Flag (105; 205), die dem Spei­ cherort (108; 231) zugeordnet ist, auf einen zweiten Zu­ stand, der anzeigt, daß der Speicherort (108; 231) nicht überschrieben werden darf.
6. Verfahren nach Anspruch 3 oder 5, bei dem die erste Flag (116; 206), die einem Speicherort (108; 231) zugeordnet ist, nach einer festgelegten abgelaufenen Zeit seit dem Laden der Daten in diesen Speicherort (108; 231) auf einen Zustand gesetzt wird, der anzeigt, daß der Spei­ cherort (108; 231) überschrieben werden darf.
DE4330751A 1992-09-16 1993-09-10 Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem zu einem Datenverarbeitungssystem Expired - Fee Related DE4330751C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/945,561 US5404484A (en) 1992-09-16 1992-09-16 Cache system for reducing memory latency times

Publications (2)

Publication Number Publication Date
DE4330751A1 DE4330751A1 (de) 1994-03-17
DE4330751C2 true DE4330751C2 (de) 1998-01-29

Family

ID=25483282

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4330751A Expired - Fee Related DE4330751C2 (de) 1992-09-16 1993-09-10 Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem zu einem Datenverarbeitungssystem

Country Status (3)

Country Link
US (1) US5404484A (de)
DE (1) DE4330751C2 (de)
GB (1) GB2270781B (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7751269B2 (en) 2006-09-28 2010-07-06 Infineon Technologies Ag Coupling device for transmitting data
DE102005029428B4 (de) * 2004-07-23 2013-08-08 Hewlett-Packard Development Co., L.P. System und Verfahren zum Verwalten eines Cachezugriffs in einem verteilten System
DE102006045903B4 (de) * 2006-09-28 2016-06-02 Intel Deutschland Gmbh Prozessoranordnung mit einer Kopplungsvorrichtung zum Koppeln eines Speichers mit einem Prozessor, Datenverarbeitungsanordnung und Verfahren zum Übertragen von Daten

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848432A (en) 1993-08-05 1998-12-08 Hitachi, Ltd. Data processor with variable types of cache memories
US5555392A (en) * 1993-10-01 1996-09-10 Intel Corporation Method and apparatus for a line based non-blocking data cache
JPH0876930A (ja) * 1994-09-05 1996-03-22 Mitsubishi Denki Semiconductor Software Kk Ad変換装置及びそれを内蔵したデータ処理装置
US5745729A (en) * 1995-02-16 1998-04-28 Sun Microsystems, Inc. Methods and apparatuses for servicing load instructions
US6314561B1 (en) * 1995-04-12 2001-11-06 International Business Machines Corporation Intelligent cache management mechanism
US5694577A (en) * 1995-06-06 1997-12-02 Matsushita Electric Industrial Co., Ltd. Memory conflict buffer for achieving memory disambiguation in compile-time code schedule
US5713008A (en) * 1995-06-08 1998-01-27 Sun Microsystems Determination of working sets by logging and simulating filesystem operations
US5860150A (en) * 1995-10-06 1999-01-12 International Business Machines Corporation Instruction pre-fetching of a cache line within a processor
US5829028A (en) * 1996-05-06 1998-10-27 Advanced Micro Devices, Inc. Data cache configured to store data in a use-once manner
US5903749A (en) * 1996-07-02 1999-05-11 Institute For The Development Of Emerging Architecture, L.L.C. Method and apparatus for implementing check instructions that allow for the reuse of memory conflict information if no memory conflict occurs
DE19713178A1 (de) * 1997-03-27 1998-10-01 Siemens Ag Schaltungsanordnung mit einem Prozessor und einem Datenspeicher
US6185660B1 (en) * 1997-09-23 2001-02-06 Hewlett-Packard Company Pending access queue for providing data to a target register during an intermediate pipeline phase after a computer cache miss
US6205520B1 (en) * 1998-03-31 2001-03-20 Intel Corporation Method and apparatus for implementing non-temporal stores
US6223258B1 (en) * 1998-03-31 2001-04-24 Intel Corporation Method and apparatus for implementing non-temporal loads
US6134710A (en) * 1998-06-26 2000-10-17 International Business Machines Corp. Adaptive method and system to minimize the effect of long cache misses
US6401137B1 (en) * 1998-06-30 2002-06-04 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for processing a virtual call in a multi-threaded program
US6240490B1 (en) 1998-07-20 2001-05-29 International Business Machines Corporation Comprehensive multilevel cache preloading mechanism in a multiprocessing simulation environment
WO2000026771A1 (en) * 1998-10-30 2000-05-11 Intel Corporation A computer product, method, and apparatus for detecting conflicting stores on speculatively boosted load operations
WO2000031642A1 (de) * 1998-11-25 2000-06-02 Fujitsu Siemens Computers Gmbh Cache-speichereinrichtung
US6397320B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation Method for just-in-time delivery of load data via cycle of dependency
US6393553B1 (en) 1999-06-25 2002-05-21 International Business Machines Corporation Acknowledgement mechanism for just-in-time delivery of load data
US6505277B1 (en) 1999-06-25 2003-01-07 International Business Machines Corporation Method for just-in-time delivery of load data by intervening caches
US6425090B1 (en) 1999-06-25 2002-07-23 International Business Machines Corporation Method for just-in-time delivery of load data utilizing alternating time intervals
US6427204B1 (en) 1999-06-25 2002-07-30 International Business Machines Corporation Method for just in-time delivery of instructions in a data processing system
US6430683B1 (en) * 1999-06-25 2002-08-06 International Business Machines Corporation Processor and method for just-in-time delivery of load data via time dependency field
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6427196B1 (en) * 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6598156B1 (en) 1999-12-23 2003-07-22 Intel Corporation Mechanism for handling failing load check instructions
US6694380B1 (en) * 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6631430B1 (en) * 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6661794B1 (en) * 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6584522B1 (en) * 1999-12-30 2003-06-24 Intel Corporation Communication between processors
US6658559B1 (en) 1999-12-31 2003-12-02 Intel Corporation Method and apparatus for advancing load operations
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
US7126952B2 (en) * 2001-09-28 2006-10-24 Intel Corporation Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
US6934951B2 (en) * 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
JP2009505267A (ja) 2005-08-16 2009-02-05 エヌエックスピー ビー ヴィ 補助メモリを用いてメモリにアクセスする方法及びシステム
US7461206B2 (en) * 2006-08-21 2008-12-02 Amazon Technologies, Inc. Probabilistic technique for consistency checking cache entries
US9612960B2 (en) 2012-11-19 2017-04-04 Florida State University Research Foundation, Inc. Data filter cache designs for enhancing energy efficiency and performance in computing systems
US9600418B2 (en) * 2012-11-19 2017-03-21 Florida State University Research Foundation, Inc. Systems and methods for improving processor efficiency through caching
US9596305B2 (en) * 2013-04-06 2017-03-14 Citrix Systems, Inc. Systems and methods for distributed hash table contract renewal
US9684603B2 (en) 2015-01-22 2017-06-20 Empire Technology Development Llc Memory initialization using cache state
US20200218659A1 (en) * 2019-01-09 2020-07-09 Alibaba Group Holding Limited Systems and methods for secure locking of a cache region
GB2584440B (en) * 2019-06-03 2021-12-08 Advanced Risc Mach Ltd Cache arrangement for graphics processing systems
US11126437B2 (en) * 2019-12-06 2021-09-21 Microsoft Technology Licensing, Llc Load instruction with final read indicator field to invalidate a buffer or cache entry storing the memory address holding load data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4905141A (en) * 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
EP0375864A2 (de) * 1988-12-29 1990-07-04 International Business Machines Corporation Cache-Speicherumgehung

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3967247A (en) * 1974-11-11 1976-06-29 Sperry Rand Corporation Storage interface unit
US4761731A (en) * 1985-08-14 1988-08-02 Control Data Corporation Look-ahead instruction fetch control for a cache memory
AU2278688A (en) * 1988-02-16 1989-08-17 Sun Microsystems, Inc. Distributed cache architecture
US5239644A (en) * 1988-03-28 1993-08-24 Hitachi, Ltd. Data preloading method and system for using a buffer
US5233702A (en) * 1989-08-07 1993-08-03 International Business Machines Corporation Cache miss facility with stored sequences for data fetching

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4905141A (en) * 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
EP0375864A2 (de) * 1988-12-29 1990-07-04 International Business Machines Corporation Cache-Speicherumgehung

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
EICHELE, H.: Multiprozessorsysteme, B.G. Teubner, Stuttgart 1990, S. 94, 102-109 *
IEEE Journal of Solid-State Circuits, Vol. 25, Nr. 1, Februar 1990, S. 5-10 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005029428B4 (de) * 2004-07-23 2013-08-08 Hewlett-Packard Development Co., L.P. System und Verfahren zum Verwalten eines Cachezugriffs in einem verteilten System
US7751269B2 (en) 2006-09-28 2010-07-06 Infineon Technologies Ag Coupling device for transmitting data
DE102006045903B4 (de) * 2006-09-28 2016-06-02 Intel Deutschland Gmbh Prozessoranordnung mit einer Kopplungsvorrichtung zum Koppeln eines Speichers mit einem Prozessor, Datenverarbeitungsanordnung und Verfahren zum Übertragen von Daten

Also Published As

Publication number Publication date
US5404484A (en) 1995-04-04
DE4330751A1 (de) 1994-03-17
GB2270781B (en) 1996-07-10
GB2270781A (en) 1994-03-23
GB9317043D0 (en) 1993-09-29

Similar Documents

Publication Publication Date Title
DE4330751C2 (de) Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem zu einem Datenverarbeitungssystem
DE68927172T2 (de) Multiprozessorsystem mit cache-speichern
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE69027253T2 (de) Multiprozessor-Cachespeichersystem
DE69226928T2 (de) Verfahren und Direktspeicherzugriffssteuerung zum asynchronen Daten-Lesen von einem -Schreiben in einen Speicher mit verbessertem Durchfluss
DE69327981T2 (de) Kombinierte Speicheranordnung mit einem Vorausholungspuffer und einem Cachespeicher und Verfahren zur Befehlenversorgung für eine Prozessoreinheit, das diese Anordnung benutzt.
DE69323790T2 (de) Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
DE69616465T2 (de) Cachespeicher mit Datenvorausladung
DE19527031C2 (de) Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems
DE60037174T2 (de) Puffersystem für externen speicherzugriff
DE3803759C2 (de)
DE69132186T2 (de) Cache-Speicherverwaltungsanordnung
DE3151745C2 (de)
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE3751399T2 (de) Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen.
DE69130858T2 (de) Überlappende Serienverarbeitung
DE69224084T2 (de) Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE3439302A1 (de) Speichersteuerungsvorrichtung
DE10393803T5 (de) Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff
DE69325473T2 (de) Virtuelles Speichersystem verwendendes Datenverarbeitungssystem und -verfahren
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE69618783T2 (de) Schreibcachespeicher zur verbesserung der schreibleistung
DE69229213T2 (de) Verfahren und Cache-Speichersteuereinheit zum Holen von Daten für eine Zentraleinheit mit verringerter Wartezeit

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee