DE4323929A1 - Software-geführtes Mehrebenen-Cache-Speichersystem - Google Patents

Software-geführtes Mehrebenen-Cache-Speichersystem

Info

Publication number
DE4323929A1
DE4323929A1 DE4323929A DE4323929A DE4323929A1 DE 4323929 A1 DE4323929 A1 DE 4323929A1 DE 4323929 A DE4323929 A DE 4323929A DE 4323929 A DE4323929 A DE 4323929A DE 4323929 A1 DE4323929 A1 DE 4323929A1
Authority
DE
Germany
Prior art keywords
instruction
data
address
buffer
main memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE4323929A
Other languages
English (en)
Inventor
B Ramakrishna Rau
Michael S Schlansker
Jun William S Worley
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 DE4323929A1 publication Critical patent/DE4323929A1/de
Withdrawn 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/30043LOAD or STORE instructions; Clear instruction
    • 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
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/6028Prefetching based on hints or prefetch instructions

Landscapes

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

Description

Die vorliegende Erfindung bezieht sich auf Computerspeicher­ systeme und im besonderen auf ein verbessertes Cache-Spei­ chersystem.
Herkömmliche Computersysteme verwenden Speichersysteme, die der zentralen Verarbeitungseinheit (CPU = Central Processing Unit) Daten als Reaktion auf Ladeanweisungen bereitstellen und Daten als Reaktion auf Speicheranweisungen in den Spei­ chersystemen speichern. Die Kosten pro Berechnung für die CPU nahmen schneller ab als die Kosten pro Byte Speicher. Nachdem die Berechnungsziele komplexer werden, hat sich zu­ sätzlich die Größe des Hauptcomputerspeichers dramatisch er­ höht. Als ein Ergebnis wird das Bereitstellen eines Haupt­ speichers, der mit derselben Geschwindigkeit wie die CPU arbeitet, ökonomisch unpraktisch.
Um die hohen Kosten des Bereitstellens eines Hauptspeichers, der mit CPU-Bearbeitungsgeschwindigkeiten arbeitet, zu ver­ hindern, verwenden viele Systeme Cache-Speicher. Ein Cache- Speicher ist ein schneller Puffer, der verwendet wird, um die zuletzt verwendeten Daten zu speichern. Wenn Lade­ anweisungen an den Cache-Speicher ausgegeben werden, über­ prüft der Cache-Speicher seinen Inhalt. Wenn die Daten be­ reits im Cache-Speicher enthalten sind, gibt der Cache-Spei­ cher die Daten zurück an die CPU. Wenn die Daten nicht ent­ halten sind, muß der Cache-Speicher die Daten aus dem Haupt­ speicher laden. Nachdem der Hauptspeicher viel langsamer als der Cache-Speicher ist, führt dies zu einer bedeutenden Ver­ zögerung der Programmausführung. Jedesmal, wenn der Cache- Speicher Daten aus dem Hauptspeicher lädt, müssen einige der in dem Cache-Speicher gespeicherten Daten gelöscht werden, um Raum für die neuen Daten zu schaffen.
Auf ähnliche Weise werden ebenfalls Speicheranweisungen an den Cache-Speicher ausgegeben. Wenn die Daten für die in der Speicheranweisung bestimmten Adresse bereits in dem Cache- Speicher sind, aktualisiert der Cache-Speicher die Daten, um die in der Speicheranweisung bestimmten Werte zurückzugeben. Wenn die Daten nicht vorhanden sind, macht der Cache-Spei­ cher einen Eintrag für die in der Speicheranweisung bestim­ mte Adresse und bezeichnet die Daten als an dieser Adresse gespeichert. Im Fall eines "Durchschreibe"-Cache-Speichers werden die Daten direkt an den Hauptspeicher derart ge­ schickt, daß der Hauptspeicher immer eine korrekte Kopie der Daten hat. In Nicht-Durchschreibe-Cache-Speichersystemen wird der Dateneintrag in dem Cache-Speicher markiert, um an­ zuzeigen, daß er sich von dem an dieser Adresse im Haupt­ speicher gespeicherten Wert unterscheidet. Wenn ein mar­ kierter Dateneintrag während einer nachfolgenden Operation ersetzt wird, dann wird der Eintrag, bevor er ersetzt wird, in den Hauptspeicher geschrieben.
Um effektiv zu sein, müssen die Daten in dem Cache-Speicher durchschnittlich mehrere Male benutzt werden, bevor sie durch neue Daten aus dem Cache-Speicher ersetzt werden, die aus dem Hauptspeicher als Reaktion auf Ladeanweisungen, die durch die bereits im Cache-Speicher befindlichen Daten nicht erfüllt werden können, eingehen. Jedesmal, wenn Daten aus dem Hauptspeicher angefordert werden, muß die CPU warten. Wenn die Daten mehrere Male benutzt werden, während sie im Cache-Speicher sind, amortisiert sich diese Verzögerung über mehrere Ladeanweisungen; daher wird die durchschnittliche Verzögerung pro Ladeanweisung wesentlich reduziert. Eine solche Reduktion tritt nicht auf, wenn die Daten nur einmal verwendet werden.
Cache-Speichersysteme sind bei großen, wissenschaftlichen Anwendungen weniger effektiv, da es bei diesen Anwendungen einheitlichere Zugriffe auf viel größere Sätze von Daten gibt. Es ist z. B. normal, aufeinanderfolgend jedes Element in ein oder mehrere große Datenfelder einzulesen, wobei jedes einzelne die Größe des Cache-Speichers weit über­ schreitet. In solchen Fällen würde auf Daten, die in einen schnelleren Cache-Speicher gebracht wurden, nur einmal zuge­ griffen. Wie oben erwähnt, wird eine Systemverhaltensverbes­ serung nur erreicht, wenn die in dem Cache-Speicher abgeleg­ ten Daten mehrere Male angewendet werden.
Tatsächlich verschlechtert die Anwendung des Cache-Speichers zur Übertragung von Daten, die nur einmal benutzt werden sollen, das Systemverhalten. Wie oben erwähnt, muß jedesmal, wenn ein neues Datenwort aus dem Hauptspeicher in den Cache-Speicher bewegt wird, ein in dem Cache-Speicher ge­ speichertes Datenwort gelöscht werden. Einige der Daten­ wörter, die gelöscht werden, wären wiederverwendet worden, wenn diese Wörter nicht als Reaktion auf die Ladeanweisungen für Datenwörter, die nur einmal verwendet werden, gelöscht worden wären. Wenn die gelöschten Datenwörter wiederum abge­ fragt werden, wird die CPU verzögert, während die Wörter in den Cache-Speicher gelesen werden. Daher verschlechtern übergebene Datenwörter, die während ihrer Anwesenheitszeit im Cache-Speicher nur einmal verwendet werden, das Cache- Speicherverhalten. Diese Verschlechterung kann durch Erhöhung der Größe des Cache-Speichers vermindert werden; diese Lö­ sung erhöht jedoch die Kosten des Cache-Speichers erheblich.
Aus diesem Grund wurden einige Anlagen entworfen, um den Cache-Speicher nur für den Teil der Daten zu verwenden, der oft wiederverwendet wird, und um auf große Felder unabhängig vom Cache-Speicher zuzugreifen. Dies ist bei Vektoranlagen weit verbreitet, bei denen auf die Vektoren aus sehr ver­ schachtelten Speichern zugegriffen wird, ohne durch einen Cache-Speicher zu gehen. Dieser Ansatz verhindert Verun­ reinigungen des Cache-Speichers mit Daten, die nur einmal benutzt werden. Unglücklicherweise schafft dieser Ansatz keine Lösung für das Problem der Daten, die nur wenige Male benutzt werden. Solche Daten würden von einem Cache-Spei­ cherzugriffsschema profitieren, vorausgesetzt es würde nicht die Daten, die wahrscheinlich viele Male abgefragt werden, in dem Cache-Speicher ersetzen.
Wie oben erwähnt, erhöht sich die Cache-Speichereffizienz mit der Größe des Cache-Speichers. Um die schnellste Reak­ tion (d. h., die kürzeste Wartezeit) zu schaffen, muß der Cache-Speicher jedoch auf dem Prozessorchip angeordnet sein. Diese Einschränkung bestimmt die maximale Größe des Cache- Speichers. In einigen Systemen nach dem Stand der Technik, wird dieser Konflikt der Aufgaben durch Anwendung eines hierarchischen Mehrebenen-Cache-Speichersystems gelöst. Ein kleiner Cache-Speicher der Ebene 1 ist direkt auf dem Pro­ zessorchip plaziert. Dieser Cache-Speicher wird durch einen großen Cache-Speicher der Stufe 2 ergänzt, der außerhalb des Prozessorchips angeordnet ist.
Wenn auf die Daten über hierarchische Mehrebenen-Cache-Spei­ cher nach dem Stand der Technik zugegriffen wird, dann fließen die Daten durch den Cache-Speicher der Ebene 1. Bei einem Lesezugriff auf den Speicher werden die Daten aus dem Cache-Speicher der Ebene 1 gelesen, wenn die Abfrage durch im Cache-Speicher der Ebene 1 enthaltene Daten befriedigt werden kann. Wenn die Daten nicht in dem Cache-Speicher der Ebene 1 vorhanden sind, dann werden sie im Cache-Speicher der Ebene 2 gesucht. Wenn die Daten im Cache-Speicher der Ebene 2 gefunden werden können, werden sie als erstes in den Cache-Speicher der Ebene 1 bewegt und dann aus dem Cache- Speicher der Ebene 1 ausgelesen. Wenn die Daten im Cache- Speicher der Ebene 2 ebenfalls nicht gefunden werden können, dann werden sie als erstes aus dem Hauptspeicher in den Ca­ che-Speicher der Ebene 2 gelesen, dann aus dem Cache-Spei­ cher der Ebene 2 in den Cache-Speicher der Ebene 1 gelesen und durch den Prozessor gelesen.
Bei einem Schreibzugriff auf den Speicher werden die Daten in dem Cache-Speicher der Ebene 1 aktualisiert, wenn der Cache-Speicher der Ebene 1 die Daten enthält, die zur Zeit an dem Ort befindlich sind, an den neue Daten geschrieben werden sollen. Wenn die alten Daten gegenwärtig nicht im Cache-Speicher der Ebene 1 enthalten sind, wird Raum im Cache-Speicher der Ebene 1 geschaffen und die alten Daten werden in dem Cache-Speicher der Ebene 2 gesucht. Wenn die alten Daten in dem Cache-Speicher der Ebene 2 gefunden werden, werden sie in den Cache-Speicher der Ebene 1 gelesen und mit den neu geschriebenen Daten aktualisiert. Wenn die alten Daten in dem Cache-Speicher der Ebene 2 ebenfalls nicht enthalten sind, wird im Cache-Speicher der Ebene 2 ebenfalls Raum geschaffen, die alten Daten werden zuerst in den Cache-Speicher der Ebene 2 eingelesen, dann werden sie in den Cache-Speicher der Ebene 1 eingelesen und dann werden sie in dem Cache-Speicher der Ebene 1 aktualisiert.
Nachdem die Daten durch den Cache-Speicher der Ebene 1 fließen, leiden diese Schemata unter denselben Verun­ reinigungsproblemen, wie herkömmliche Cache-Speicher. D.h., daß die Daten, die nur wenige Male verwendet werden, Daten ersetzen, die viel öfter verwendet worden wären. Wenn die ersetzten Daten erneut angefordert werden, muß das System angehalten werden, während die Daten aus dem Cache-Speicher der niedrigeren Ebene oder aus dem Hauptspeicher ausgelesen werden.
Es ist deshalb die Aufgabe der vorliegenden Erfindung, ein verbessertes Cache-Speichersystem zu schaffen.
Diese Aufgabe wird durch ein Cache-Speicheruntersystem gemäß Anspruch 1, Anspruch 6 und Anspruch 9 gelöst.
Vorteilhafterweise schafft die vorliegende Erfindung ein Cache-Speichersystem, das die Probleme verhindert, die mit der Verunreinigung des Cache-Speichers mit Daten, die vor ihrer Ersetzung nicht sehr oft benutzt werden, zusammenhängen.
Vorteilhafterweise schafft die vorliegenden Erfindung ferner ein Cache-Speichersystem, das verbesserten Zugriff auf Daten schafft, die nur einige wenige Male benutzt werden, bevor sie ersetzt werden.
Die vorliegende Erfindung umfaßt ein Mehrebenen-Cache-Spei­ cheruntersystem zum Schaffen eines gepufferten Speicherzu­ griffs zwischen einer CPU und einem Hauptspeicher. Die Er­ findung schließt einen ersten Puffer zum Speichern von Ko­ pien von Datenwörtern ein, die normalerweise im Hauptspei­ cher gespeichert sind. Dieser Puffer schließt eine Register­ datei zum Speichern von Informationen ein, die eine Adresse im Hauptspeicher angeben, die mit jeder gespeicherten Kopie zusammenhängt. Die Erfindung schließt eine Steuerung zum Empfangen erster und zweiter Speicheranweisungen und erster und zweiter Ladeanweisungen von der CPU und zum Bereitstel­ len von Daten an die CPU als Reaktion auf die ersten und zweiten Ladeanweisungen ein. Jede Speicher- und Ladeanwei­ sung schließt Informationen ein, die eine Adresse im Haupt­ speicher bestimmen, wobei die Steuerung wirksam mit dem er­ sten Puffer und dem Hauptspeicher verbunden ist. Die Steuer­ einrichtung schließt ebenfalls eine erste Ladeeinrichtung ein, die auf die erste Ladeanweisung reagiert, zum Übertra­ gen des Datenwortes, dessen Adresse in der ersten Ladeanwen­ dung angegeben ist, an die CPU und zum Veranlassen, daß eine Kopie des Datenwortes in den ersten Puffer übertragen wird, und eine erste Speichereinrichtung ein, die auf die erste Speicheranweisung reagiert, zum Veranlassen, daß in der Speicheranweisung eingeschlossene Daten zusammen mit den in der ersten Speicheranweisung eingeschlossenen Adreßin­ formationen in dem ersten Puffer gespeichert werden. Zusätz­ lich schließt die Steuerung eine zweite Ladeeinrichtung ein, die auf die zweite Ladeanweisung reagiert, zum Übertragen des Datenwortes, dessen Adresse in der zweiten Ladeanweisung angegeben ist, aus dem Hauptspeicher an die CPU, ohne zu veranlassen, daß eine Kopie des Datenwortes in der ersten Puffereinrichtung abgelegt wird, und eine zweite Speicher­ einrichtung, die auf die zweite Speicheranweisung reagiert, zum Veranlassen, daß in der Speicheranweisung eingeschlosse­ ne Daten im Hauptspeicher gespeichert werden, ohne zu ver­ anlassen, daß eine Kopie des Datenwortes in der ersten Puf­ fereinrichtung abgelegt wird.
Andere Ausführungsbeispiele der vorliegenden Erfindung führen zusätzliche Anweisungen aus, die dem Kompiler und/oder dem Programmierer erlauben, den Inhalt der ver­ schiedenen Puffer zu steuern.
Ein bevorzugtes Ausführungsbeispiel der Erfindung wird nach­ folgend unter Bezugnahme auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm eines Cache-Speicheruntersystems gemäß der vorliegenden Erfindung; und
Fig. 2 ein Blockdiagramm eines Registers zum Speichern von Datenwörtern in einem Cache-Speicheruntersystem gemäß der vorliegenden Erfindung.
Die vorliegende Erfindung kann als "nicht-hierarchisches" Zwei-Ebenen-Cache-Speicheruntersystem angesehen werden, in dem die Steuerung der Ebene, auf der auf Daten zugegriffen wird oder auf der Daten gespeichert werden, durch Software gesteuert wird. Ein Blockdiagramm des Cache-Speicherunter­ systems 10 gemäß der vorliegenden Erfindung ist in Fig. 1 dargestellt und mit dem Bezugszeichen 10 bezeichnet. Das Cache-Speicheruntersystem 10 vermittelt Speicherzugriffe zwischen der CPU 12 und dem Hauptspeicher 13. Das Cache- Speicheruntersystem 10 schließt eine Steuerung 20 ein, die Lade- und Speicheranweisungen der CPU 12 und eines Puffers 14 interpretiert. Der Puffer 14 schließt einen kleinen, schnellen Puffer 15 der Ebene 1 ein, der sich bevorzugter­ weise auf demselben Chip wie die CPU 12 befindet. Der Puffer 14 schließt ebenfalls einen etwas langsameren, aber bedeutend größeren Puffer 16 der Ebene 2 ein. Jeder dieser Puffer schließt Platz zum Speichern einer Mehrzahl von Da­ tenwörtern und Informationen ein, die die Adresse im Haupt­ speicher 12 bestimmen, die jedem Datenwort und der Länge der Zeit seitdem auf dieses Datenwort das letztemal zugegriffen wurde, entspricht. In einer Betriebsart arbeiten die Puffer 15 und 16 in einer Art analog zu dem oben beschriebenen, auf den Stand der Technik bezugnehmenden, hierarchischen Cache-Speicheruntersystemen.
Im allgemeinen werden die Daten, die am häufigsten verwendet werden, bevorzugterweise im Puffer 15 gespeichert und damit werden für die CPU 12 die maximal vorteilhaften Cache-Spei­ cherzugriffe geschaffen. Daten, bei denen es wahrscheinlich ist, daß sie wenige Male angewendet werden, werden bevor­ zugterweise in Puffer 16 gespeichert. Wie im folgenden ge­ nauer erklärt werden wird, schafft dies eine Möglichkeit zum Reduzieren der effektiven Wartezeit des Computerzugriffs auf diese Daten, während der Fluß dieser Daten davon abgehalten wird, den effizienten Betrieb des Puffers 15 zu stören. Auf Daten, bei denen es wahrscheinlich ist, daß sie nur einmal angewendet werden, wird direkt in dem Hauptspeicher 13 zu­ gegriffen.
Das Cache-Speicheruntersystem 10 unterscheidet sich von Ge­ räten nach dem Stand der Technik dadurch, daß es auf Daten über drei verschiedene Lade-/Speicheranweisungspaare zu­ greifen kann. Die verschiedenen Paare der Anweisungen er­ lauben es dem System, sein Verhalten bezüglich der erwarte­ ten Wiederverwendung der Daten, die zwischen der CPU 12 und dem Hauptspeicher 13 übertragen werden, zu optimieren. Jedes Paar von Anweisungen wird für verschiedene Ebenen der Wie­ derverwendung angewendet. Die Wahl der Anwendungspaare wird durch den Programmierer und/oder den Kompiler ausgeführt. Nachdem der Programmierer die Wahrscheinlichkeit der Daten­ wiederverwendung kennt, kann der Programmierer die Art des verwendeten Speicherzugriffs festlegen. Die vorliegende Er­ findung kann ebenfalls im Zusammenhang mit Betriebssystemen verwendet werden, die den Code durch Ablauf des Codes mit Testdaten und durch Beobachtung der Reihenfolge, in der die Anweisungen und Daten verwendet werden, optimieren.
Das erste Paar der Lade- und Speicheranweisungen greift auf die Daten, wie oben unter Bezugnahme auf hierarchische Zwei-Ebenen-Cache-Speicheruntersysteme nach dem Stand der Technik beschrieben, zu. Wenn die Steuerung 20 eine Ladeanweisung der ersten Art entdeckt, untersucht die Steuerung 20 den Inhalt des Puffers 15, um festzustellen, ob die in der Ladeanweisung bestimmten Daten zur Zeit im Puffer 15 gespeichert sind. Wenn die Daten im Puffer 15 sind, dann werden die Daten aus dem Puffer 15 an die CPU 12 übergeben. Wenn die Daten im Puffer 15 nicht vorhanden sind, dann untersucht die Steuerung 20 den Inhalt des Puffers 16, um festzustellen, ob die Daten dort gespeichert sind. Wenn die Daten im Puffer 16 gefunden werden, dann werden die Daten zuerst in den Puffer 15 kopiert und dann vom Puffer 15 an die CPU 12 übergeben. Wenn die Daten im Puffer 16 nicht gefunden werden, dann veranlaßt die Steuerung 20, daß Kopien der Daten, die zur Zeit an dieser Adresse im Hauptspeicher 13 sind, in beide Puffer 15 und 16 abgelegt werden und dann vom Puffer 15 an die CPU 12 übertragen werden.
Wenn eine Speicheranweisung der ersten Art von der Steuerung 20 empfangen wird, dann werden die in der Speicheranweisung angegebenen Daten in den Puffer 15 kopiert. Um für diese Daten Platz zu schaffen, werden die ältesten Daten im Puffer 15 gelöscht. Hierbei wird das Alter als die Anzahl der An­ weisungszyklen, die aufgetreten sind, seitdem auf die Daten das letztemal Bezug genommen wurde, gemessen. Wenn der Puf­ fer 15 nicht als ein "Durchschreibe"-Cache-Speicher arbei­ tet, dann wird eine Kopie der gelöschten Daten im Puffer 16 erstellt. Jegliche Daten, die aus dem Puffer 16 eleminiert werden müssen, um Raum für in einer Speicheranweisung emp­ fangene Daten zu schaffen, werden gleichermaßen in den Hauptspeicher 13 kopiert, wenn notwendig. Wenn der Puffer 15 als ein "Durchschreibe"-Cache-Speicher arbeitet, dann ist dieser Schritt nicht notwendig, da die Kopie bereits beim letzten Mal gemacht wurde, als auf die Daten zugegriffen wurde. Dieses Paar von Anweisungen wird für die Speicherzu­ griffe bevorzugt, die Daten einschließen, bei denen erwartet wird, daß sie viele Male verwendet werden, bevor sie im dem Puffer 15 der Ebene 1 ersetzt werden.
Das zweite Paar von Lade- und Speicheranweisungen bewegt Daten niemals höher in der Cache-Speicherhierarchie als in den Cache-Speicherpuffer 16 der Ebene 2. Wenn die Steuerung 20 eine Ladeanweisung der zweiten Art entdeckt, untersucht sie zuerst den Inhalt des Puffers 15, um festzustellen, ob eine Kopie des abgefragten Datenworts im Puffer 15 ist. Wenn die Steuerung 15 eine Kopie des Datenwortes im Puffer 15 findet, dann wird das Datenwort vom Puffer 15 an die CPU 12 übergeben. Wenn im Puffer 15 keine Kopie des Datenwortes ge­ funden wird, dann untersucht die Steuerung 20 den Inhalt des Puffers 16. Wenn das Datenwort im Puffer 16 gefunden wird, veranlaßt die Steuerung 20, daß die Daten vom Puffer 16 an die CPU 12 übergeben werden. Wenn das Datenwort im Puffer 16 nicht gefunden wird, veranlaßt die Steuerung 20, daß eine Kopie des Datenwortes aus dem Hauptspeicher 13 in den Puffer 16 übertragen wird. Das Datenwort wird dann vom Puffer 16 an die CPU 12 übertragen.
Wenn die Steuerung 20 eine Speicheranweisung der zweiten Art entdeckt, dann wird das Datenwort, das darin enthalten ist, in den Puffer 15 kopiert, wenn die Daten für diese Adresse bereits in Puffer 15 vorhanden sind. Wenn der Puffer 15 ein "Durchschreibe"-Cache-Speicher ist, wird eine Kopie der Daten ebenfalls in den Puffer 16 kopiert. Wenn die Daten für die Adresse im Puffer 15 nicht vorhanden sind, dann wird das Datenwort in den Puffer 16 kopiert. Um für die Daten Raum zu schaffen, können die ältesten Daten in Puffer 16 gelöscht werden. Wenn der Puffer 16 nicht als "Durchschreibe"-Cache-Speicher arbeitet, wird eine Kopie der gelöschten Daten im Hauptspeicher 13 erstellt. Wenn der Puffer 16 als "Durch­ schreibe"-Cache-Speicher arbeitet, dann ist dieser Schritt nicht notwendig, nachdem die Kopie bereits beim letzten Mal, als auf die Daten zugegriffen wurde, erstellt wurde.
Dieses zweite Paar Anweisungen wird für Speicherzugriffe be­ vorzugt, die Daten einschließen, bei denen es wahrscheinlich ist, daß sie nur wenige Male wiederverwendet werden, bevor sie im Puffer 16 ersetzt werden. Vorausgesetzt, die Verweil­ dauer im Puffer 16 ist lange genug, um mehr als einen Zu­ griff auf diese Daten zu schaffen, wird die effektive Warte­ zeit für den Speicherzugriff reduziert werden. Nachdem diese Daten nicht in den Puffer 15 übertragen werden, werden die Probleme, die mit dem Ersetzen der Daten im Puffer 15 mit Daten, bei denen es wahrscheinlich ist, daß sie wesentlich weniger verwendet werden, zusammenhängen, überwunden. Die Verweildauer im Puffer 16 steht in Beziehung zu der Größe des Puffers 16. Nachdem der Puffer 16 jedoch nur bedeutend schneller sein muß als der Hauptspeicher 13, um eine bedeu­ tende Verbesserung zu schaffen, kann der Puffer 16 viel größer als der Puffer 15 gemacht werden und immer noch ein ökonomisch realistisches System schaffen.
Das dritte Paar Anweisungen bewegt Daten niemals höher in der Hierarchie als über den Hauptspeicher 13. Wenn die Steu­ erung 20 eine Ladeanweisung der dritten Art entdeckt, unter­ sucht sie zuerst die Puffer 15 und 16 nach den in der Lade­ anweisung angegebenen Daten. Wenn die Daten in einem dieser Puffer gefunden werden, dann werden die Daten aus dem Puffer mit der schnellsten Antwortzeit, der die Daten enthält, an die CPU 12 übertragen. Wenn die Daten in keinem der Puffer vorhanden sind, veranlaßt die Steuerung 20, daß die Daten aus dem Hauptspeicher 13 übertragen werden.
Wenn die Steuerung 20 eine Speicheranweisung der dritten Art entdeckt, dann überprüft die Steuerung 20 zuerst die Puffer 15 und 16, um festzustellen, ob die Daten für die Adresse in der Speicheranweisung derzeit in einem der Puffer gespei­ chert sind. Wenn die Daten für die Adresse in einem der Puf­ fer gefunden werden, dann werden die Datenblöcke in dem Puf­ fer mit der schnellsten Antwortzeit, in dem ein Dateneintrag für diese Adresse existiert, aktualisiert. Wenn dieser Puf­ fer ein "Durchschreibe"-Puffer ist, dann wird ebenfalls eine Kopie der Daten verwendet, um die langsameren Puffer unter­ halb dieses Puffers in der Cache-Speicherhierarchie zu aktualisieren. Wenn die Steuerung 20 keinen Eintrag für dieses Datenwort in einem der Puffer findet, dann veranlaßt die Steuerung 20, daß die in der Speicheranweisung angege­ benen Daten direkt in den Hauptspeicher 13 geschrieben werden. Dieses Paar von Anweisungen wird für Daten angewen­ det, bei denen es nicht wahrscheinlich ist, daß sie während der Zeit, in der sie im Puffer 16 sind, wiederverwendet werden, wenn die Daten an den Puffer 16 übertragen werden.
Zusätzlich zur Verhinderung der Entfernung von auf häufig zugegriffenen Daten von den Cache-Speichern der ersten und der zweiten Ebene schafft die vorliegende Erfindung ein weiteres wichtiges Merkmal. Die Kompilertechnologie zum Planen der Maschinenanweisungen kann hervorragende Arbeit beim Umgang mit langen Wartezeiten auf den Speicher leisten, wenn der Kompiler die Wartezeit kennt. Z.B. kann der Kom­ piler eine Vor-Ladeanweisung zu einen Zeitpunkt an das Cache-Speichersystem schicken, der ausreichend weit vor der erwarteten Ladeanweisung liegt, um dem Speichersystem zu er­ lauben, die Daten in die entsprechende Ebene des Cache-Spei­ cheruntersystems zu verschieben. Wenn die Vor-Ladeanweisung jedoch zu früh gesendet wird, dann können diese Daten durch Daten ersetzt werden, die als Reaktion auf andere Lade- und Speicheranweisungen, die während der Zeit, in der die Vor- Ladeanweisung empfangen wird und der Zeit, zu der die ent­ sprechende Ladeanweisung ankommt, ausgegeben werden, geladen werden. Diese Situation kann prinzipiell vermieden werden, wenn die Wartezeit bekannt ist. Wenn die Wartezeit bekannt ist, kann das Cache-Speichersystem garantieren, daß die Daten nicht zu früh ersetzt werden.
Was wichtig ist, ist nicht notwendigerweise die kürzeste Speicherwartezeit, sondern eine voraussagbare Wartezeit. Ein Schlüsselvorteil der vorliegenden Erfindung ist es, daß sie vorhersagbarere Wartezeiten schafft als Systeme nach dem Stand der Technik, nachdem sie die Wahrscheinlichkeit redu­ ziert, daß die Daten aus dem Cache-Speicherpuffer entfernt werden, in dem sie gespeichert waren, bevor die Ladeanwei­ sung, die auf die Daten zugreift, tatsächlich ankommt.
In dem bevorzugten Ausführungsbeispiel der vorliegenden Er­ findung führt die Steuerung 20 ebenfalls zwei Vor-Ladeanwei­ sungen aus. Eine für jede Ebene des Cache-Speichers. Eine Vor-Ladeanweisung, die eine Speicheradresse und einen be­ stimmten Cache-Speicher angibt, veranlaßt, daß die Daten, die mit dieser Adresse zusammenhängen, an diesen Cache-Spei­ cher derart übertragen werden, daß die Daten vorhanden sind, wenn eine Ladeanweisung empfangen wird. Während der Ausführ­ ung der Vor-Ladeanweisung ist der Cache-Speicher frei, um auf andere Lade- und Speicheranweisungen zu reagieren. Eine Vor-Ladeanweisung unterscheidet sich von einer Ladeanweisung darin, daß die CPU nicht angehalten wird, bis die Daten durch den Cache-Speicher empfangen sind. Zusätzlich erfor­ dert die Vor-Ladeanwendung kein Register, das für das Ergeb­ nis angegeben sein muß; daher braucht kein CPU-Register außer Dienst genommen zu werden, um den Cache-Speicher zu veranlassen, mit Daten von einer angegebenen Adresse geladen zu werden.
Die Vor-Ladeanweisung muß der Wartezeit der Datenquelle Rechnung tragen, um den maximalen Vorteil beim Reduzieren der effektiven Speicherwartezeit zu schaffen. Die Vor-Lade­ anweisung wird bevorzugterweise mindestens T Speicherzyklen vor einer Ladeanweisung, die diese Adresse angibt, ausge­ geben. Hierbei ist T die Wartezeit der Datenquelle. In einem Mehrebenen-Cache-Speichersystem wird der maximale Vorteil erreicht, wenn alle Vor-Ladungen den Hauptspeicher als Datenquelle annehmen.
Die Art, in der eine Vor-Ladeanweisung bevorzugterweise aus­ geführt wird, wird als erstes mit Bezug auf das Mehrebenen- Cache-Speichersystem, das in Fig. 1 beschrieben ist, dis­ kutiert. Beim Empfang einer Vor-Ladeanweisung für den Puffer 15 überprüft die Steuerung 20 den Puffer 15, um festzustel­ len, ob ein Eintrag für die in der Vor-Ladeanweisung ange­ gebene Adresse vorhanden ist. Wenn die Daten bereits vor­ handen sind, wird die Vor-Ladeanwendung ignoriert. Wenn die Daten nicht vorhanden sind, untersucht die Steuerung 20 den Puffer 16, um festzustellen, ob die Daten dort sind. Wenn sie es sind, werden die Daten zum Puffer 15 bewegt, wenn nicht, wird eine Kopie der Daten zuerst aus dem Hauptspei­ cher 13 in den Puffer 16 und dann vom Puffer 16 in den Puf­ fer 15 bewegt. Auf ähnliche Weise untersucht die Steuerung 20 beim Empfang einer Vor-Ladeanweisung für den Puffer 16 den Puffer 16, um festzustellen, ob ein Eintrag für die in der Vor-Ladeanweisung angegebene Adresse vorhanden ist. Wenn die Daten bereits vorhanden sind, wird die Vor-Ladeanweisung ignoriert. Wenn die Daten nicht vorhanden sind, kopiert die Steuerung 20 die Daten aus dem Hauptspeicher 13 in den Puf­ fer 16.
Während eine Vor-Ladung im Vorgang ist, muß die Steuerung 20 alle Speicheranweisungen untersuchen, die durch die CPU zwischen dem Empfang der Vor-Ladeanweisung und der Lieferung der Daten in ein Register in dem Cache-Speicher ausgegeben wurden, um sicherzustellen, daß die zuletzt verwendeten Da­ ten für diese Adresse in dem Cache-Speicher abgelegt werden. Angenommen der Fall, daß eine Vor-Ladeanwendung, die eine Adresse A angibt, an das Cache-Speicheruntersystem ausgege­ ben wird und daß die Daten in keiner Pufferebene des Cache-Speichers vorhanden waren. Während der Zeit, die benötigt wird, um die Daten aus dem Hauptspeicher in den Cache-Spei­ cher zu bewegen, kann eine Speicheranweisung für die Adresse A empfangen werden. Wenn dies auftritt, wird der Wert aus der Speicheranweisung in dem Cache-Speicherpuffer gespei­ chert und der Wert, der darauffolgend vom Hauptspeicher ge­ liefert wird, wird ignoriert.
Ein zweites Problem, daß durch Vor-Ladeanweisungen auftritt, bezieht sich auf die Möglichkeit, daß eine zweite Vor-Lade­ anweisung für eine Adresse A empfangen werden kann, während der Cache-Speicher immer noch die erste Vor-Ladeanweisung für dieselbe Adresse verarbeitet. Wenn dies auftritt, wird es bevorzugt, daß der Cache-Speicher die Ausführung der zweiten Vor-Ladung verzögert, bis die erste Vor-Ladungsan­ weisung verarbeitet ist. Von dieser Situation wird erwartet, nur sehr selten aufzutreten; daher verursacht das Verzögern der zweiten Vor-Ladeanweisung vernachlässigbare Anstiege bei der Betriebszeit des Systems.
In dem bevorzugten Ausführungsbeispiel der vorliegenden Er­ findung werden diese Probleme durch Hinzufügen zwei zusätz­ licher Flag-Bits zu den Registern, die verwendet werden, um die Datenwerte in den Puffern 15 und 16 zu speichern, über­ wunden. Im allgemeinen schließen die Puffer 15 und 16 eine Registerdatei mit einem Register für jeden Dateneintrag, der in der Datei gespeichert ist, ein. Ein typisches Register ist in Fig. 2 gezeigt und mit dem Bezugszeichen 100 bezeich­ net. Das Register 100 schließt ein Feld 101 zum Speichern der Adresse des in Feld 102 gespeicherten Dateneintrags im Hauptspeicher ein. Zusätzlich schließt das Register 100 zwei Flags ein, die beim Verarbeiten von Vor-Ladeanweisungen ver­ wendet werden. Die erste Flag 104 zeigt an, daß eine Vor-La­ dung verarbeitet wird. Die zweite Flag 106 wird verwendet, um anzuzeigen, daß eine Speicheranweisung für diese Adresse empfangen wurde, während die Vor-Ladung im Gange war und da­ her wird der Wert, der vom Hauptspeicher oder einer anderen Pufferebene zurückgegeben wird, ignoriert.
Angenommen der Fall, daß eine Vor-Ladungsanweisung empfangen wird und die Steuerung 20 feststellt, daß die Registerdatei in dem in der Anweisung angegebenen Puffer keinen Eintrag für die in der Vor-Ladungsanweisung angegebene Adresse ent­ hält. Die Steuerung 20 ordnet dann ein Register in der Re­ gisterdatei des in der Vor-Ladungsanweisung angegebenen Puf­ fers der Vor-Ladungsanweisung zu. Die Register-Flags 104 und 106 werden auf ihre anfänglichen Werte gesetzt und eine An­ weisung zum Holen der Daten aus der Pufferebene unterhalb der in der Vor-Ladungsanweisung angegebenen Ebene oder aus dem Hauptspeicher wird ausgegeben. Jedesmal, wenn eine Spei­ cheranweisung durch die Steuerung 20 erfaßt wird, wird die Adresse in der Speicheranweisung mit allen Adressen in den Registern der Registerdateien verglichen. Wenn die Adresse übereinstimmt, wird der in der Speicheranweisung angegebene Wert in das Feld 102 dieses Registers geladen und die zweite Flag wird zurückgesetzt, um anzuzeigen, daß jeglicher Wert, der nachfolgend von dem Hauptspeicher oder einem anderen Puffer empfangen wird, zu ignorieren ist. Diese Speicheran­ weisungsverarbeitung erfolgt zusätzlich zu der oben be­ schriebenen.
Die obige Diskussion nimmt an, daß das in der Speicheranord­ nung bestimmte Wort genau mit der Wortlänge der Datenein­ träge, die in dem Puffer gespeichert sind, übereinstimmt. Dies muß nicht immer der Fall sein. Z.B. kann der Cache- Speicher in einigen Systemen Wörter speichern, die einige Bytes lang sind; während eine Speicheranweisung einen ein­ zigen Byte einschließt. In solchen Systemen kann eine ge­ trennte Flag, wie z. B. Flag 106, für jedes Byte im Datenfeld 104 bereitgestellt werden. Jede dieser Flags würde angeben, daß das entsprechende Byte durch eine Speicheranweisung übertragen wurde und daher der Wert für das Byte, das in Reaktion auf die Vor-Ladungsanweisung zurückgegeben wurde, zu ignorieren ist.
Es gibt eine Anzahl von Ersetzungsstrategien, die benutzt werden können, um festzustellen, welches Register in der Registerdatei der in der Vor-Ladungsanweisung angegebenen Adresse zugeordnet ist. Jegliche Ersetzungsstrategie, die mit einem herkömmlichen Cache-Speicher verwendet wird, kann bei einem Cache-Speichersystem gemäß der vorliegenden Er­ findung verwendet werden. Z.B. kann jedes Register in einer Registerdatei ein Feld zum Speichern eines Zählstandes der Anzahl der Zyklen, die vergangen sind, seitdem auf den hierin gespeicherten Dateneintrag in einer Speicher- oder Ladeanweisung Bezug genommen wurde, einschließen. Das Re­ gister mit dem größten Zählstand würde dann dieser Adresse zugeordnet. Dies entspricht dem Ersetzen des am wenigsten verwendeten Dateneintrags. Ein zweites Beispiel für eine Er­ setzungsstrategie wäre es, ein Register, für das eine Vor- Ladung nicht im Ablauf war, zufällig zur Ersetzung auszuw­ ählen.
Zusätzlich zu den herkömmlichen Ersetzungsstrategien, die oben diskutiert wurden, führt das bevorzugte Ausführungsbei­ spiel der vorliegenden Erfindung eine besondere Klasse von Anweisungen aus, die es dem Kompiler und/oder dem Program­ mierer erlauben, anzugeben, welches Register gelöscht werden kann. Diese Klassen von Anweisungen werden als Löschanwei­ sungen bezeichnet. Es gibt eine solche Anweisung für jede Pufferebene. Eine Löschanweisung schafft eine Möglichkeit zum Entfernen von Daten aus den Cache-Speicherpuffern sobald die Daten zum letztenmal durch das Programm benutzt wurden. Jede Anweisung gibt eine Adresse an. Wenn dieser Puffer einen Eintrag für diese Adresse einschließt, markiert die Steuerung 20 das Register, das derzeitig für diesen Daten­ eintrag verwendet wird, als frei und als zu überschreiben. Dieses Register kann dann durch eine Vor-Ladungsanweisung oder eine Speicheranweisung verwendet werden. D.h., daß ein gelöschtes Register verwendet werden kann, bevor es die In­ halte eines nicht-gelöschten Registers ersetzt. Um diese Anweisungen auszuführen, ist eine dritte Flag 108 in jedem Register 100 eingeschlossen. Wenn die Steuerung 20 einen Löschbefehl für eine Adresse A und einen angegebenen Puffer erhält, untersucht die Steuerung 20 den Inhalt des angege­ benen Puffers nach einem Eintrag mit A im Feld 101. Wenn ein solcher Eintrag gefunden wird, wird die Flag 108 auf einen Wert gesetzt, der angibt, daß das Register durch eine nach­ folgende Lade-, Vor-Ladungs- oder Speicheroperation ver­ wendet werden kann. Wird kein solches Register gefunden, dann wird die Anweisung ignoriert. Wenn das Cache-Speicher­ untersystem kein Durchschreibe-Cache-Speicher ist, dann muß die Steuerung 20 die Daten ebenfalls aus dem gelöschten Re­ gister in den Hauptspeicher und/oder in eine niedrigere Cache-Speicherpufferebene kopieren, wenn das Register ge­ löscht ist.
Im Prinzip kann eine Löschanweisung mit einem Cache-System mit einer Ebene verwendet werden, um ein System zu schaffen, in dem die Verunreinigung des Cache-Speichers durch Daten, die nicht länger im Cache-Speicher gebracht werden, verhin­ dert werden kann. In einem solchen System muß der Cache- Speicherpuffer die Ersetzungsstrategie, die oben diskutiert wurde, verwenden, d. h., Einträge können zur Ersetzung mar­ kiert werden. Sobald ein Dateneintrag nicht länger im Cache-Speicher benötigt wird, wird eine Löschanweisung, die an diesen Eintrag gerichtet ist, ausgegeben. Wenn es bekannt ist, daß die Daten nur einmal benutzt werden, dann sollte jede Ladeanweisung für solche Daten von einer Löschanweisung gefolgt werden.
Während Vor-Ladungsanweisungen dem Kompiler und/oder dem Programmierer erlauben, die Effekte der Speicherwartezeit zu reduzieren, erhöhen diese Anweisungen die Anzahl der benö­ tigten Anweisungen, um einen Wert in die CPU zu laden, nach­ dem jeder Ladeanweisung nun eine Vor-Ladungsanweisung vor­ hergehen muß. Das bevorzugte Ausführungsbeispiel der vor­ liegenden Erfindung verhindert dieses Problem durch Aus­ führen einer zweiten Klasse von Vor-Ladungsanweisungen, die das Cache-Speicheruntersystem veranlassen, effektiv seine eigenen Ladeanweisungen nach einer vorher festgelegten Zeit­ verzögerung zu erzeugen. Diese Art von Vor-Ladungsanweisung gibt eine Pufferebene, in die die Daten geladen werden sol­ len, die Adresse des Dateneintrags im Hauptspeicher, das CPU-Register, in das die Daten geladen werden, und einen An­ weisungszykluszählstand an. Die Steuerung 20 behandelt diese Anweisungen in derselben Art wie die oben beschriebenen Vor- Ladungsanweisungen, außer daß die Steuerung 20 nach der an­ gegebenen Anzahl von Anweisungszyklen eine Ladeanweisung für diese Adresse in diesem CPU-Register ausführt. Das bevor­ zugte Ausführungsbeispiel der vorliegenden Erfindung führt eine zweite solche Vor-Ladungsanweisung für jede Pufferebene in dem Cache-Speicheruntersystem aus.
Auf ähnliche Weise erlauben die Löschanweisungen dem Kompi­ ler und/oder dem Programmierer, Daten aus dem Cache-Speicher zu löschen, bei denen es nicht wahrscheinlich ist, daß sie noch einmal verwendet werden, bevor sie durch eine nachfol­ gende Anweisung ersetzt werden. Solche Aktionen sind oft mit einer Speicher- oder mit einer Ladeanweisung verbunden, die durch die letzte Anwendung des Dateneintrags erzeugt wurde. Daher sind Anweisungen, die aus einer Kombination einer Speicher- und einer Ladeanweisung gefolgt von einer Löschan­ weisung bestehen, besonders nützlich, da sie das Ausgeben von zwei getrennten Anweisungen verhindern. Das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung führt solche Anweisungen für jede Pufferebene aus.
Die oben beschriebenen Ausführungsbeispiele der vorliegenden Erfindung haben einen Cache-Speicherpuffer mit zwei Ebenen verwendet. Es ist jedoch für Fachleute offensichtlich, daß Systeme, die mehrere Cache-Speicherpufferebenen verwenden, von Vorteil sein können. Wenn es N Cache-Speicherpufferebe­ nen über dem Hauptspeicher gibt, dann würde ein Cache-Spei­ chersystem gemäß der vorliegenden Erfindung (N+1) Ladeanwei­ sungen und (N+1) Speicheranweisungen einschließen. Die Cache-Speicherebene, die am weitesten vom Hauptspeicher ent­ fernt ist, wird als Cache-Speicherebene N bezeichnet und wird in der folgenden Diskussion als die höchste Ebene be­ zeichnet. Die i-te Ladeanweisung veranlaßt, daß eine Kopie der Daten, die mit der darin angegebenen Adresse zusammen­ hängen, in dem i-ten Cache-Speicherpuffer abgelegt wird und daß eine Kopie dieser Daten in das CPU-Register, das in der Anweisung gegeben ist, geladen wird. Der N-te Cache-Spei­ cherpuffer ist die kleinste und schnellste Ebene. Die 0-te Ladeanweisung würde dieses CPU-Register direkt aus dem Hauptspeicher laden.
Auf ähnliche Weise veranlaßt die i-te Speicheranweisung, daß eine Kopie der Daten, die mit der darin bestimmten Adresse zusammenhängt, in dem i-ten Cache-Speicherpuffer abgelegt wird und die 0-te Speicheranweisung würde diesen Wert direkt in den Hauptspeicher abspeichern. In dem Fall einer Spei­ cheranweisung müssen alle Eintragungen für die Adressen in einer Pufferebene über derjenigen, die in der Anweisung an­ gegeben ist, entweder ungültig gemacht werden oder aktualisiert werden. Wenn das Cache-Speicheruntersystem ein Durchschreibe-Cache-Speicher ist, muß ein Eintrag ebenfalls in jedem Puffer unterhalb des angegebenen Cache-Speicherpuf­ fers und im Hauptspeicher abgelegt werden.
Die oben beschriebenen Ausführungsbeispiele der vorliegenden Erfindung haben eine "einschließliche" Cache-Speicherstrate­ gie verwendet. D.h., daß die Kopien der Dateneintragungen, die in der höchsten Pufferebene gespeichert sind, immer auch in den niedrigeren Cache-Speicherpufferebenen eingeschlossen sind. Wenn z. B. ein Wert in die i-te Pufferebene geladen wird, dann wird sie ebenfalls in die Ebenen (i-1) . . . 0 ge­ laden. Nachdem die Größe des Cache-Speicherpuffers typi­ scherweise in der Größenordnung des Betrags mit jeder Ebene zunimmt, reduzieren die Extrakopien den Speicherplatz nicht markant. Der Vorteil einer solchen einschließende Strategie liegt in der Möglichkeit der Steuerung 20, durch Untersuchen des Inhalts dieser Ebene festzustellen, ob ein Eintrag ober­ halb einer bestimmten Ebene ist. Wenn ein Dateneintrag nicht auf der i-ten Ebene für die Adresse A existiert, dann gibt es keinen Eintrag auf jeglicher Ebene kleiner als i. Während das bevorzugte Ausführungsbeispiel der vorliegenden Erfin­ dung eine inklusive Cache-Speicherstrategie anwendet, ist es für Fachleute offensichtlich, daß nicht-einschließliche Strategien ebenfalls angewendet werden können, ohne von der Lehre der vorliegenden Erfindung abzuweichen.
Während die oben beschriebenen Ausführungsbeispiele der vor­ liegenden Erfindung mindestens zwei Pufferebenen in dem Cache-Speicheruntersystem angenommen haben, ist es für Fach­ leute offensichtlich, daß ein Cache-Speicheruntersystem mit einer Pufferebene ebenfalls bedeutende Vorteile gegenüber dem Stand der Technik schafft. Im besonderen der Einschluß von zwei Ebenen von Speicher- und Ladeanweisungen, d. h. N = 2, erlaubt dem Kompiler und/oder dem Programmierer, den Cache-Speicher für Ladungen und Speicherungen zu umgehen, die ansonsten den Cache-Speicher mit Daten verunreinigen würden, bei denen es nicht wahrscheinlich ist, daß sie während ihrer Verweildauer im Cache-Speicher wiederverwendet würden.

Claims (10)

1. Cache-Speicheruntersystem (10) zum Schaffen eines gepuf­ ferten Speicherzugriffs zwischen einer CPU (12) und einem Hauptspeicher (13), mit einer ersten Puffereinrichtung (15) zum Speichern von Kopien von Datenwörtern, die normalerweise in dem Haupt­ speicher (13) gespeichert sind, wobei die erste Puffer­ einrichtung ferner eine Einrichtung zum Speichern von Informationen, die eine Adresse in dem Hauptspeicher (13) angeben, die mit jeder der gespeicherten Kopien zusammenhängt, umfaßt; gekennzeichnet durch eine Steuerungseinrichtung (20) zum Empfangen einer ersten und einer zweiten Speicheranweisung und einer ersten und einer zweiten Ladeanweisung von der CPU (12) und zum Bereitstellen von Daten an die CPU (12) in Re­ aktion auf die erste und die zweite Ladeanweisung, wobei jede Speicher- und Ladeanweisung Informationen umfaßt, die eine Adresse in dem Hauptspeicher (13) angeben, wo­ bei die Steuerungseinrichtung mit der ersten Pufferein­ richtung (15) und dem Hauptspeicher (13) wirksam ver­ bunden ist, wobei die Steuerungseinrichtung (20) ferner folgende Merkmale aufweist:
eine erste Ladeeinrichtung, die auf die erste Ladeanwei­ sung reagiert, zum Übertragen des Datenwortes, dessen Adresse in der ersten Ladeanweisung angegeben ist, an die CPU (12) und zum Veranlassen, daß eine Kopie des Datenwortes an die erste Puffereinrichtung (15) über­ tragen wird;
eine erste Speichereinrichtung, die auf die erste Spei­ cheranweisung reagiert, zum Veranlassen, daß Daten, die in der Speicheranweisung eingeschlossen sind, zusammen mit den Adreßinformationen, die in der ersten Speicher­ anweisung eingeschlossen sind, in der ersten Pufferein­ richtung (15) gespeichert werden;
eine zweite Ladeeinrichtung, die auf die zweite Ladean­ weisung reagiert, zum Übertragen des Datenwortes aus dem Hauptspeicher (13), dessen Adresse in der zweiten Lade­ anweisung angegeben ist, an die CPU (12), ohne zu veran­ lassen, daß eine Kopie des Datenwortes in die erste Puf­ fereinrichtung (15) abgelegt wird; und
eine zweite Speichereinrichtung, die auf die zweite Speicheranweisung reagiert, zum Veranlassen, daß die Daten, die in der Speicheranweisung eingeschlossen sind, in dem Hauptspeicher (13) gespeichert werden, ohne zu veranlassen, daß eine Kopie des Datenwortes in der ersten Puffereinrichtung (15) abgelegt wird.
2. Cache-Speicheruntersystem (10) nach Anspruch 1, dadurch gekennzeichnet, daß die Steuerungseinrichtung (20) ferner eine Einrich­ tung umfaßt, die auf den Erhalt einer Vor-Ladeanweisung, die eine Adresse einschließt, reagiert, zum Veranlassen, daß eine Kopie der neuesten Daten, die mit der Adresse in dem Hauptspeicher (13) zusammenhängen, in der ersten Puffereinrichtung (15) gespeichert werden, während zuge­ lassen wird, daß Lade- und Speicheranweisungen ausge­ führt werden, während die Vor-Ladeanweisung abläuft.
3. Cache-Speicheruntersystem (10) nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Steuerungseinrichtung (20) ferner eine Einrich­ tung umfaßt, die auf den Empfang einer Löschanweisung, die eine Adresse einschließt, reagiert, zum Veranlassen, daß jegliche Kopie der Daten, die mit der Adresse zusam­ menhängen, aus der ersten Puffereinrichtung (15) ent­ fernt werden.
4. Cache-Speicheruntersystem (10) nach einem der Ansprüche 1 bis 3, ferner gekennzeichnet durch
eine zweite Puffereinrichtung (16) zum Speichern von Kopien von Datenwörtern, die normalerweise in dem Haupt­ speicher (13) gespeichert sind, wobei die zweite Puffer­ einrichtung (16) ferner eine Einrichtung zum Speichern von Informationen, die die Adresse von jedem gespei­ cherten Datenwort in dem Hauptspeicher (13) angibt, um­ faßt,
wobei die Steuerungseinrichtung (20) mit der zweiten Puffereinrichtung (16) wirksam verbunden ist und ferner folgende Merkmale aufweist:
eine Einrichtung zum Empfangen einer dritten Speicheran­ weisung und einer dritten Ladeanweisung von der CPU (12) und zum Bereitstellen von Daten an die CPU (12) als Re­ aktion auf die dritte Ladeanweisung und zum Empfangen von Daten von der CPU (12) als Reaktion auf die dritte Speicheranweisung;
eine dritte Speichereinrichtung, die auf die dritte Speicheranweisung reagiert, zum Veranlassen, daß Daten, die in der Speicheranweisung eingeschlossen sind, zu­ sammen mit den Adreßinformationen, die in der dritten Speicheranweisung eingeschlossen sind, in der zweiten Puffereinrichtung (16) gespeichert werden; und
eine dritte Ladeeinrichtung, die auf die dritte Ladean­ weisung reagiert, zum Übertragen der Daten, deren Adres­ se in der dritten Speicheranweisung angegeben ist, an die CPU (12) und zum Veranlassen, daß eine Kopie des Datenwortes in der zweiten Puffereinrichtung (16) ge­ speichert wird.
5. Cache-Speicheruntersystem (10) nach Anspruch 4, dadurch gekennzeichnet,
daß die erste Speichereinrichtung ebenfalls veranlaßt, daß eine Kopie der Daten, die in der ersten Speicheran­ weisung eingeschlossen sind, zusammen mit den Adreß­ informationen, die in der ersten Speicheranweisung ein­ geschlossen sind, in der zweiten Puffereinrichtung (16) gespeichert wird, und
daß die erste Ladeeinrichtung ebenfalls veranlaßt, daß eine Kopie der Daten, die in der ersten Ladeanweisung eingeschlossen sind, zusammen mit den Adreßinformatio­ nen, die in der ersten Ladeanweisung eingeschlossen sind, in der zweiten Puffereinrichtung (16) gespeichert wird.
6. Cache-Speicheruntersystem (10) zum Schaffen eines ge­ pufferten Speicherzugriffs zwischen einer CPU (12) und einem Hauptspeicher (13), mit
einer Puffereinrichtung (15) zum Speichern von Kopien von Datenwörtern, die normalerweise in dem Hauptspeicher (13) gespeichert werden, wobei die Puffereinrichtung (15) ferner eine Einrichtung zum Speichern von Informa­ tionen, die eine Adresse in dem Hauptspeicher (13) ange­ ben, die mit jeder der gespeicherten Kopien zusammen­ hängt, umfaßt;
gekennzeichnet durch
eine Steuerungseinrichtung (20) zum Empfangen erster Speicheranweisungen und erster Ladeanweisungen von der CPU (12) und zum Bereitstellen von Daten an die CPU (12) als Reaktion auf die Ladeanweisungen, wobei jede Spei­ cher- und Ladeanweisung Informationen umfaßt, die eine Adresse in dem Hauptspeicher (13) angeben, wobei die Steuerungseinrichtung (20) mit der Puffereinrichtung (15) und dem Hauptspeicher (13) wirksam verbunden ist, wobei die Steuerungseinrichtung (20) ferner folgende Merkmale aufweist:
eine Ladeeinrichtung, die auf die Ladeanweisung re­ agiert, zum Übertragen des Datenwortes, dessen Adresse in der Ladeanweisung angegeben ist, an die CPU (12) und zum Veranlassen, daß eine Kopie des Datenwortes an die Puffereinrichtung (15) übertragen wird;
eine Speichereinrichtung, die auf die Speicheranweisung reagiert, zum Veranlassen, daß die Daten, die in der Speicheranweisung eingeschlossen sind, zusammen mit den Adreßinformationen, die in der Speicheranweisung einge­ schlossen sind, in der Puffereinrichtung (15) gespei­ chert werden; und
eine Löscheinrichtung, die auf eine Löschanweisung, die eine Adresse einschließt, reagiert, zum Veranlassen, daß jegliche Kopie eines Datenwortes, die der Adresse ent­ spricht, in der Puffereinrichtung (15) aus der Puffer­ einrichtung (15) gelöscht wird.
7. Cache-Speicheruntersystem (10) nach Anspruch 6, dadurch gekennzeichnet, daß die Steuerungseinrichtung (20) ferner eine Einrich­ tung umfaßt, die auf eine zweite Ladeanweisung reagiert, zum Übertragen des Datenwortes, dessen Adresse in der zweiten Ladeanweisung angegeben ist, an die CPU (12) und zum Veranlassen, daß jegliche Kopie des Datenwortes in der Puffereinrichtung (15) aus der Puffereinrichtung (15) gelöscht wird.
8. Cache-Speicheruntersystem (10) nach Anspruch 6 oder 7, dadurch gekennzeichnet, daß die Steuerungseinrichtung (20) ferner eine Einrich­ tung umfaßt, die auf eine zweite Speicheranweisung re­ agiert, zum Veranlassen, daß Daten, die in der Speicher­ anweisung eingeschlossen sind, zusammen mit den Adreß­ informationen, die in der Speicheranweisung eingeschlos­ sen sind, in dem Hauptspeicher (13) gespeichert werden und zum Veranlassen, daß jegliche Kopie des Datenwortes in der Puffereinrichtung (15) aus der Puffereinrichtung (15) gelöscht wird.
9. Cache-Speicheruntersystem (10) zum Schaffen eines ge­ pufferten Speicherzugriffs zwischen einer CPU (12) und einem Hauptspeicher (13), mit
einer ersten Puffereinrichtung (15) zum Speichern von Kopien von Datenwörtern, die normalerweise in dem Haupt­ speicher (13) gespeichert sind, wobei die erste Puffer­ einrichtung ferner eine Einrichtung zum Speichern von Informationen, die eine Adresse in dem Hauptspeicher (13) angeben, die mit jeder der gespeicherten Kopien zusammenhängt, umfaßt;
eine Steuerungseinrichtung (20) zum Empfangen von Spei­ cheranweisungen und Ladeanweisungen von der CPU (12) und zum Bereitstellen von Daten an die CPU (12) als Reaktion auf die Ladeanweisung, wobei jede Speicher- und Ladean­ weisung Informationen umfaßt, die eine Adresse in dem Hauptspeicher (13) angeben, wobei die Steuerungsein­ richtung (20) mit der ersten Puffereinrichtung (15) und dem Hauptspeicher (13) wirksam verbunden ist, wobei die Steuerungseinrichtung (20) ferner folgende Merkmale aufweist:
eine Ladeeinrichtung, die auf die Ladeanweisung re­ agiert, zum Übertragen des Datenwortes, dessen Adresse in der Ladeanweisung angegeben ist, an die CPU (12) und zum Veranlassen, daß eine Kopie des Datenwortes an die erste Puffereinrichtung (15) übertragen wird;
eine Speichereinrichtung, die auf die Speicheranweisung reagiert, zum Veranlassen, daß die Daten, die in der Speicheranweisung enthalten sind, zusammen mit den Adreßinformationen, die in der Speicheranweisung ent­ halten sind, in der ersten Puffereinrichtung (15) ge­ speichert werden; und
eine Vor-Ladeeinrichtung, die auf eine erste Vor-Ladean­ weisung, die eine Adresse einschließt, reagiert, zum Veranlassen, daß eine Kopie der neuesten Daten, die mit der Adresse in dem Hauptspeicher (13) zusammenhängt, in der ersten Puffereinrichtung (15) gespeichert wird, während zugelassen wird, daß Lade- und Speicheranwei­ sungen verarbeitet werden, während die Vor-Ladeanweisung abläuft.
10. Cache-Speicheruntersystem (10) nach Anspruch 9, dadurch gekennzeichnet, daß die Steuerungseinrichtung (20) ferner eine Einrich­ tung umfaßt, die auf eine zweite Vor-Ladeanweisung, die eine Adresse einschließt, reagiert, zum Veranlassen, daß eine Kopie der neuesten Daten, die mit der Adresse in dem Hauptspeicher (13) zusammenhängt, in der ersten Puf­ fereinrichtung (15) gespeichert wird, während zugelassen wird, daß Lade- und Speicheranweisungen verarbeitet werden, während die Vor-Ladeanweisung abläuft und zum Veranlassen, daß eine Kopie der Daten an die CPU (12), nach einer vorher festgelegten Verzögerung, übertragen wird.
DE4323929A 1992-10-13 1993-07-16 Software-geführtes Mehrebenen-Cache-Speichersystem Withdrawn DE4323929A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US96059892A 1992-10-13 1992-10-13

Publications (1)

Publication Number Publication Date
DE4323929A1 true DE4323929A1 (de) 1994-04-14

Family

ID=25503375

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4323929A Withdrawn DE4323929A1 (de) 1992-10-13 1993-07-16 Software-geführtes Mehrebenen-Cache-Speichersystem

Country Status (3)

Country Link
JP (1) JPH06202951A (de)
DE (1) DE4323929A1 (de)
GB (1) GB2271653A (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001011751A1 (en) * 1999-08-05 2001-02-15 Park In Gyu Impedance-compensated power transmission circuit

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5829025A (en) * 1996-12-17 1998-10-27 Intel Corporation Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction
US6275904B1 (en) 1998-03-31 2001-08-14 Intel Corporation Cache pollution avoidance instructions
JP2005115603A (ja) * 2003-10-07 2005-04-28 Hitachi Ltd 記憶デバイス制御装置及びその制御方法
US7484062B2 (en) 2005-12-22 2009-01-27 International Business Machines Corporation Cache injection semi-synchronous memory copy operation
US7506132B2 (en) 2005-12-22 2009-03-17 International Business Machines Corporation Validity of address ranges used in semi-synchronous memory copy operations
US7454585B2 (en) 2005-12-22 2008-11-18 International Business Machines Corporation Efficient and flexible memory copy operation
JP2009093559A (ja) 2007-10-11 2009-04-30 Nec Corp プロセッサ、情報処理装置、プロセッサのキャッシュ制御方法
US9697002B2 (en) 2011-10-03 2017-07-04 International Business Machines Corporation Computer instructions for activating and deactivating operands
US9690583B2 (en) 2011-10-03 2017-06-27 International Business Machines Corporation Exploiting an architected list-use operand indication in a computer system operand resource pool
US20130179642A1 (en) * 2012-01-10 2013-07-11 Qualcomm Incorporated Non-Allocating Memory Access with Physical Address

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4197580A (en) * 1978-06-08 1980-04-08 Bell Telephone Laboratories, Incorporated Data processing system including a cache memory

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2261586C3 (de) * 1972-12-15 1979-08-09 Siemens Ag, 1000 Berlin Und 8000 Muenchen Speichereinrichtung
US4075686A (en) * 1976-12-30 1978-02-21 Honeywell Information Systems Inc. Input/output cache system including bypass capability
GB2037038B (en) * 1978-12-11 1983-05-05 Honeywell Inf Systems Cache storage systems
US4500954A (en) * 1981-10-15 1985-02-19 International Business Machines Corporation Cache bypass system with post-block transfer directory examinations for updating cache and/or maintaining bypass

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4197580A (en) * 1978-06-08 1980-04-08 Bell Telephone Laboratories, Incorporated Data processing system including a cache memory

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
IBM TDB, Vol. 32, Nr. 8B, Januar 1990, S. 76, 77 *
THIES, K.D.: 80486 Systemsoftware-Entwicklung, C. Hanser Verlag München, Wien 1992,S.174-177,189 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001011751A1 (en) * 1999-08-05 2001-02-15 Park In Gyu Impedance-compensated power transmission circuit

Also Published As

Publication number Publication date
GB9320511D0 (en) 1993-11-24
JPH06202951A (ja) 1994-07-22
GB2271653A (en) 1994-04-20

Similar Documents

Publication Publication Date Title
DE4330751C2 (de) Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem zu einem Datenverarbeitungssystem
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE60037174T2 (de) Puffersystem für externen speicherzugriff
DE69027253T2 (de) Multiprozessor-Cachespeichersystem
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
DE3151745C2 (de)
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE3751474T2 (de) Verzweigungsstrom-Koprozessor.
DE69025658T2 (de) Verfahren zur Verbesserung der Leistung eines mehrstufigen Cachespeichers durch erzwungene Fehlgriffe
DE69935737T2 (de) Verfahren und gerät um zeitliche und feste daten in einer einzelspeicherstruktur zu verwalten
DE112006000339B4 (de) System für einen beschränkten Cache-Zugriff während des Datentransfers und Verfahren dazu
DE19516937A1 (de) Hierarchisches Cachesystem für einen Computer
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE4022885C2 (de) Verfahren zum Verschieben von Speicherbereichen und Hierarchie-Speichersystem
DE3852695T2 (de) Multiprozessorsystem mit mehreren Speichern.
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
EP0013737A1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE2630323B2 (de) Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik
DE69937611T2 (de) Intelligenter Puffer-Speicher
DE68924719T2 (de) Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung.
DE3439302A1 (de) Speichersteuerungsvorrichtung
DE10219621A1 (de) Schnelle Prioritätsbestimmungsschaltung mit rotierender Priorität
DE2856680A1 (de) Befehlspuffer fuer ein datenverarbeitungssystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal