DE69432133T2 - Datenprozessor mit Cache-Speicher - Google Patents

Datenprozessor mit Cache-Speicher

Info

Publication number
DE69432133T2
DE69432133T2 DE69432133T DE69432133T DE69432133T2 DE 69432133 T2 DE69432133 T2 DE 69432133T2 DE 69432133 T DE69432133 T DE 69432133T DE 69432133 T DE69432133 T DE 69432133T DE 69432133 T2 DE69432133 T2 DE 69432133T2
Authority
DE
Germany
Prior art keywords
data
cache memory
signal
address
instruction
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 - Lifetime
Application number
DE69432133T
Other languages
English (en)
Other versions
DE69432133D1 (de
Inventor
Takashi Hotta
Toshihiko Kurihara
Akiyoshi Osumi
Koji Saito
Hideo Sawamoto
Kotaro Shimamura
Shigeya Tanaka
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP5240937A external-priority patent/JPH0793218A/ja
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of DE69432133D1 publication Critical patent/DE69432133D1/de
Application granted granted Critical
Publication of DE69432133T2 publication Critical patent/DE69432133T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Die vorliegende Erfindung betrifft einen Datenprozessor mit einem Cache- Speicher, insbesondere ein Software-Prefetch zum effizienten Verwenden von zwei Arten von Cache-Speichern und eine Steuerung zum günstigsten Steuern des Zugriffs auf die Cache-Speicher. Darüberhinaus betrifft die vorliegende Erfindung einen Datenprozessor mit einem Controller für diese Operationen.
  • Im allgemeinen werden in einem Computer mit einem Cache-Speicher häufig verwendete Daten aus den Daten, die in einem großen und langsamen Hauptspeicher gespeichert sind, in einem schnellen Cache-Speicher mit geringer Kapazität gespeichert, so dass eine Befehlseinheit wie eine CPU schnell auf den Cache-Speicher zugreifen kann und nur dann auf den Hauptspeicher zugreifen muß, wenn im Cache-Speicher keine Daten vorhanden sind.
  • Da jedoch der Maschinenzyklus der CPU im Vergleich mit der des Speichers kurz ist, steigt im Falle eines Cachefehlers die Zugriffszeit (die Zeit, bis die erforderlichen Daten aus dem Hauptspeicher erhalten werden) an.
  • Die Software-Prefetch genannte Methode zum Lösen des obigen Problems ist in David Callhan et al., "Software Prefetching", Fourth International Conference on Architectural Support for Programming Languages and Operating Systems, 1991, Seiten 40 bis 52 beschrieben. Dabei wird durch eine Prefetchanweisung vor der Anforderung von Daten durch eine Ausführungseinheit eine Adresse berechnet, und es wird geprüft, ob die Daten, die von der Adresse angezeigt werden, in einem Cache-Speicher liegen, und wenn nicht, werden die Daten vom Hauptspeicher zum Cache-Speicher übertragen. Es ist daher möglich, das Trefferverhältnis des Cache-Speichers zu verbessern und die Zugriffszeit kurz zu halten, da die Daten bereits vor ihrer Anforderung durch die Prefetchanweisung im Cache- Speicher gespeichert werden.
  • Ein Cache-Speicher mit zwei Puffern mit verschiedenen Zwecken, die von einer Hardware geeignet benutzt werden, ist in der JP-A-4 303 248 beschrieben.
  • Bei dieser bekannten Technik besitzt der Cache-Speicher einen S-Puffer und einen P-Puffer. Der S-Puffer enthält die Daten, auf die über die Zeit häufig zugegriffen wird. Der P-Puffer enthält die Daten, deren Adressen, die von nun an durch das Programm bezeichnet werden, in der Nähe von gegenwärtig benutzten Adressen liegen, d. h. der P-Puffer enthält die Arraydaten, auf die in Arrayberechnungen zugegriffen wird. In Abhängigkeit vom effektiven Adressiermodus und von der Art des für die Adressenberechnung verwendeten Registers wird selektiv immer einer der beiden Puffer genutzt.
  • Im allgemeinen speichert ein Computer Anweisungen oder Daten, die häufig aufgerufen und von einem Prozessor verarbeitet werden, außer in einem vergleichsweise langsamen Hauptspeicher großer Kapazität noch in einem schnellen Speicher geringer Kapazität, der Cache-Speicher genannt wird. Dadurch steigt die Betriebsgeschwindigkeit des Computers an. Das Datenzugriffssystem für den Cache-Speicher umfaßt einen Direktabbildungsspeicher und einen Satz-Assoziativspeicher.
  • Das Direktabbildungssystem wird für den Zugriff auf einen Cache-Speicher durch direktes Ausgeben von Daten oder einer Anweisung verwendet, die unter einer Adresse gespeichert sind bzw. ist, die durch einen Prozessor oder dergleichen angegeben wird, wobei die Daten bzw. die Anweisung unter der bezeichneten Adresse gespeichert werden bzw. wird.
  • Der Satz-Assoziativspeicher wird für den Zugriff auf eine Anzahl von Sätzen von Datenwerten oder eine Anzahl von Anweisungen (Datensatz genannt) in einem Cache- Speicher mit einer Anzahl von Sätzen verwendet, von denen jeder eine Anzahl von Speichern mit gemeinsamer Adressenzuteilung umfaßt. Die erforderliche Anzahl von Datensätzen oder die erforderliche Anzahl von Anweisungen wird im Prozessor ausgewählt und verarbeitet.
  • Der erstgenannte Stand der Technik hat den Nachteil, daß ein aufwendiger Cache- Speicher mit zwei Ports verwendet werden muß, um die Datenübertragung vom Hauptspeicher zum Cache-Speicher zu bewirken und gleichzeitig an der Befehlseinheit einen Speicherverweisbefehl auszugeben. Wenn die Verarbeitung nicht gleichzeitig erfolgt, ist es möglich, einen Allzweck-Cache-Speicher mit einem Port zu verwenden. In diesem Fall ist jedoch viel Verarbeitungszeit erforderlich, und das Merkmal des Software-Prefetch kann nicht wirkungsvoll genutzt werden.
  • Darüberhinaus weist der erste Stand der Technik den zweiten Nachteil auf, daß, wenn Daten im Cache-Speicher gehalten werden, die nur einmal aus dem Cache-Speicher ausgelesen und unmittelbar ausgegeben werden, sich der Cache-Speicher mit nutzlosen Daten füllt und das Trefferverhältnis abnimmt.
  • Diese Probleme treten häufig bei Programmen für die Handhabung großer Datenmengen auf, die die Kapazität des Cache-Speichers übersteigen.
  • Der zweitgenannte Stand der Technik weist das dritte Problem auf, daß, da von zwei Cache-Speichern der Cache-Speicher zum Speichern der Daten durch ein Adressenbezeichnungssystem und ein Register zur Adressenberechnung bestimmt wird, die beiden Cache-Speicher unter Berücksichtigung der Dateneigenschaften einschließlich der Datengröße richtig verwendet werden müssen.
  • Es ist daher wünschenswert, einen Datenprozessor zum Lösen der obigen Probleme zu schaffen, der schnell und effizient sowohl kleine Datenmengen, die in einem Cache- Speicher gespeichert sind und auf die häufig zugegriffen wird, als auch große Datenmengen verarbeiten kann, die die Kapazität des Cache-Speichers übersteigen, wobei eine Kontamination des Cache-Speichers vermieden und das Trefferverhältnis erhöht werden soll.
  • In einem Artikel von M. Baron et al. mit dem Titel "32-Bit CMOS CPU chip acts like a Mainframe", veröffentlicht in Electronic Design, Bd. 35 Nr. 9 im April 1987, Seiten 95 bis 100, wird ein Datenprozessor mit einem Datenverarbeitungsteil und zwei Cache- Speichern beschrieben. Ein Cache dient dabei als Cache für Befehlsdaten und der andere als Cache für allgemeine Daten. Ein Steuerteil identifiziert das Cache, von welchen Daten durch eine Prefetchanweisung zuzuführen sind.
  • Im IBM Technical Disclosure Bulletin, Bd. 33 Nr. 1A vom Juni 1990, Seiten 264 und 265 ist auch ein Datenprozessor mit zwei Cache-Speichern beschrieben. Der eine Cache-Speicher ist größer und der andere schneller. In beide Caches werden gleichzeitig Daten eingeschrieben, und die Daten werden vom kleineren Cache zum Hauptspeicher übertragen, wenn er nicht mehr aufnahmefähig ist.
  • Die US-A-3 618 041 beschreibt einen Prozessor mit einer Anzahl von Pufferspeichern, in denen unter der Steuerung eines Speichercontrollers Informationen gespeichert werden. Die Pufferspeicher weisen alle die gleiche Konfiguration auf.
  • Erfindungsgemäß wird ein Datenprozessor geschaffen mit
  • (a) einem Hauptspeicher zum Speichern von Daten und Befehlen;
  • (b) einem Befehlsprozessor zum Verarbeiten der Daten entsprechend den Befehlen;
  • (c) einem Cache-Speicherteil, der nur Daten speichert und der zwischen den Hauptspeicher und den Befehlsprozessor geschaltet ist, wobei der Cache-Speicherteil einen ersten Cache-Speicher und einen zweiten Cache-Speicher umfaßt;
  • wobei der zweite Cache-Speicher eine Speicherkapazität hat, die kleiner oder gleich der Speicherkapazität des ersten Cache-Speichers ist und der erste Cache-Speicher einen einzigen Port, der zweite Cache-Speicher zwei oder mehr Ports und der Datenprozessor zusätzlich folgendes aufweist:
  • (d) einen zum Cache-Speicherteil gehörenden Controller zur Aufnahme von Informationen zur Angabe auszuführender Befehle und einer Adresse vom Befehlsprozessor und zur Auswahl des ersten oder des zweiten Cache-Speichers entsprechend den Informationen und der Adresse sowie zum Speichern von Daten im ausgewählten Cache-Speicher;
  • (e) wobei der Controller so eingerichtet ist, daß er entweder den ersten oder zweiten Cache-Speicher so steuert, daß Daten darin gespeichert werden, wobei Daten hoher Zugriffsfrequenz im ersten Cache-Speicher und Daten niedriger Zugriffsfrequenz im zweiten Cache-Speicher gespeichert werden.
  • Da Daten, auf die häufig zugegriffen wird, im ersten Cache-Speicher gespeichert werden, erhöht sich das Trefferverhältnis. Da Daten, auf die weniger häufig zugegriffen wird, nicht im ersten Cache-Speicher gespeichert werden, können die nutzlosen Daten im ersten Cache-Speicher verringert werden.
  • Da Daten, auf die weniger häufig zugegriffen wird, im zweiten Cache-Speicher gespeichert werden, können die Daten nach dem Verarbeiten aus dem zweiten Cache- Speicher entfernt werden. Das heißt, da die Daten, auf die immer zugegriffen wird, im zweiten Cache-Speicher gespeichert werden, kann das Trefferverhältnis erhöht werden, auch wenn die Kapazität des zweiten Cache-Speichers klein ist.
  • Darüberhinaus ist, da der zweite Cache-Speicher zwei Ports hat, eine effiziente Verarbeitung durch gleichzeitiges Verarbeiten der Übertragung von großen Datenmengen, auf die weniger häufig zugegriffen wird, vom Hauptspeicher und der Ausgabe des Speicherverweisbefehls von der Befehlseinheit möglich.
  • Da es ausreicht, nur den zweiten Cache-Speicher kleiner Kapazität mit der Funktion zum gleichzeitigen Verarbeiten der Datenübertragung vom Hauptspeicher und der Ausgabe des Speicherverweisbefehls von der Befehlseinheit zu versehen, ist es möglich, das Hardwarevolumen und die Kosten zu verringern.
  • Diese und andere Aufgabe, Merkmale und Vorteile der vorliegenden Erfindung gehen besser aus der folgenden genauen Beschreibung mit Bezug zu den beiliegenden Zeichnungen hervor. Es zeigen:
  • Fig. 1 eine allgemeine Ansicht einer Ausführungsform der vorliegenden Erfindung;
  • Fig. 2 einen ersten Aufbau der Speichereinheit 202 in der Fig. 1;
  • Fig. 3 den Aufbau der Befehlseinheit 201 in der Fig. 2;
  • Fig. 4 eine Darstellung zur Erläuterung einer Pipeline;
  • Fig. 5 den Aufbau der Prefetch-Warteschlange in der Fig. 2;
  • Fig. 6 den Aufbau der Zelle 502 in der Fig. 5;
  • Fig. 7 den Aufbau der Prioritätsschaltung 500 in der Fig. 5;
  • Fig. 8 den Aufbau der Beurteilungsschaltung 501 in der Fig. 5;
  • Fig. 9 den Aufbau der zweiten Cache-Speichers 100 in der Fig. 2;
  • Fig. 10 den Aufbau der Zelle 901 in der Fig. 9;
  • Fig. 11 den Aufbau des ersten Cache-Speichers in der Fig. 1;
  • Fig. 12 eine Darstellung zur Erläuterung des Befehlsformats;
  • Fig. 13 eine Darstellung zur Erläuterung der Arten von Befehlen;
  • Fig. 14 den Aufbau der Steuerschaltung 103 in der Fig. 2;
  • Fig. 15 einen zweiten Aufbau der Speichereinheit 202 in der Fig. 1;
  • Fig. 16 eine allgemeine Ansicht einer zweiten Ausführungsform der vorliegenden Erfindung;
  • Fig. 17 den Aufbau der Speichereinheit 3502 in der Fig. 16;
  • Fig. 18 den Aufbau der Befehlseinheit 3501 in der Fig. 16;
  • Fig. 19 eine Darstellung zur Erläuterung der Pipelineoperation, wenn der Datenprozessor in der Fig. 16 Befehle ausführt;
  • Fig. 20 den Aufbau des zweiten Cache-Speichers 3490 in der Fig. 17;
  • Fig. 21 den Aufbau der Zelle 3801 in der Fig. 20;
  • Fig. 22 den Aufbau der Steuerschaltung 3403 in der Fig. 17;
  • Fig. 23 einen zweiten Aufbau für den ersten Cache-Speicher 101 in der Fig. 2;
  • Fig. 24 einen zweiten Aufbau für den zweiten Cache-Speicher 100 in der Fig. 2;
  • Fig. 25 eine allgemeine Ansicht einer dritten Ausführungsform der vorliegenden Erfindung;
  • Fig. 26 den Aufbau der Speichereinheit 4402 in der Fig. 43;
  • Fig. 27(A), 27(B), 27(C) und 27(D) Darstellungen zur Erläuterung der Pipelineoperation, wenn der Datenprozessor der Fig. 25 Befehle ausführt;
  • Fig. 28 den Aufbau des zweiten Cache-Speichers 4390 in der Fig. 26;
  • Fig. 29 den Aufbau der Zelle 4601 in der Fig. 28; und
  • Fig. 30 den Aufbau der Steuerschaltung 4303 in der Fig. 26.
  • Die Fig. 1 zeigt eine schematische Ansicht der vorliegenden Erfindung.
  • Der Computer der vorliegenden Erfindung umfaßt eine Befehlseinheit 201, eine Speichereinheit 202 und einen Hauptspeicher 203.
  • Die Befehlseinheit 201 macht zum Beispiel zum Ausführen von Operationen und zur Steuerung von einer CPU Gebrauch.
  • Die Speichereinheit 202 umfaßt einen Steuerabschnitt mit einem ersten Cache- Speicher 101, einem zweiten Cache-Speicher 100, Selektoren 104 und 1605 zum Übertragen von Daten zu und von diesen Speichern, und eine Steuereinheit 1600.
  • Der Hauptspeicher 203 ist ein Speicher zum Speichern von Befehlen und Daten.
  • Der erste Cache-Speicher 101 ist ein Cache-Speicher mit einem Port und mit einer Kapazität, die größer ist als die des zweiten Cache-Speichers.
  • Der zweite Cache-Speicher 100 ist ein Cache-Speicher mit zwei Ports und mit einer Kapazität, die kleiner ist als die des ersten Cache-Speichers.
  • Die Befehlseinheit 201 ist eine Einheit zum Verarbeiten von Befehlen, die über Busse 210, 211 und 212 Daten zu und vom ersten Cache-Speicher 101 und zu und vom zweiten Cache-Speicher 100 überträgt. Das heißt, daß die Einheit 201 über den Adressenbus 210, den vier Byte breiten Datenschreibbus 211 und die Steuersignalleitung 213 eine Adresse, Daten und ein Steuersignal zu der Speichereinheit 202 und zum Hauptspeicher 203 überträgt.
  • Die Speichereinheit 202 überträgt über den vier Byte breiten Datenlesebus 212 und die Wartesignalleitung 214 Daten und ein Wartesignal an die Befehlseinheit 201 und über eine Anforderungssignalleitung 218 ein Anforderungssignal an den Hauptspeicher 203.
  • Der Hauptspeicher 203 überträgt über Busse 215 und 216 Daten zum ersten Cache- Speicher 101 und zum zweiten Cache-Speicher 100. Das heißt, daß der Hauptspeicher 2(13 über den Adressentransferbus 216 und die Antwortsignalleitung 217 Daten, eine Adresse und ein Antwortsignal an die Speichereinheit 202 überträgt.
  • Die Fig. 12 ist eine Darstellung zur Erläuterung des Formats des Operationscodes einer Anweisung, die von der Befehlseinheit 201 der Fig. 1 verarbeitet wird. In der Fig. 12 bezeichnet das Symbol OP einen Operationscode, A und B bezeichnen Felder zur Bezeichnung eines Quellenregisters, C bezeichnet ein Feld zur Bezeichnung eines Zielregisters, und d bezeichnet ein Feld für die unmittelbare Anzeige von Daten.
  • Die Fig. 13 ist eine Darstellung von Arten von Befehlen, die von der Befehlseinheit 201 der Fig. 1 verarbeitet werden. Auch wenn die Anzahl der Befehle in dieser Ausführungsform zum leichteren Verständnis auf 10 beschränkt ist, wird dadurch der Zweck der vorliegenden Erfindung nicht eingeschränkt. Die vorliegende Erfindung kann auch bei einem Computer mit einigen zig Befehlen bis hin zu mehr als hundert Befehlen wie bei einem normalen Prozessor angewendet werden.
  • Die Anweisungen AND, OR, ADD und SUB führen entsprechend den Quellenregistern A und B Operationen aus und speichern Daten im Zielregister C.
  • Die Anweisung NOT speichert die Negation von Bits im Quellenregister A im Zielregister C.
  • Die Sprungbefehl BRA fügt die unmittelbaren Daten d zum Programmzähler PC hinzu und speichert sie im Programmzähler PC.
  • Der Ladebefehl LD speichert Lesedaten im Register C, wobei die Summe des Inhalts des Registers A und des Registers B als Adresse verwendet wird.
  • Der Speicherbefehl ST speichert den Inhalt des Registers B unter Verwendung des Inhalts des Registers A als Adresse.
  • Es wird nun eine Prefetch-Anweisung beschrieben.
  • Die Prefetch-Anweisung PF1 prüft unter Verwendung der Summe des Inhalts des Registers A und des Registers B als Adresse, ob Daten für den ersten Cache-Speicher 101 und den zweiten Cache-Speicher 100 vorliegen. Wenn nicht, überträgt die Anweisung PF1 Daten aus dem Hauptspeicher 203 in den ersten Cache-Speicher 101.
  • Die Prefetch-Anweisung PF2 hat die gleiche Funktion wie PF1, mit der Ausnahme, daß PF2 übertragene Daten in den zweiten Cache-Speicher 100 einschreibt.
  • Es wird zwar im Detail erst später beschrieben, der erste Cache-Speicher 101 ist jedoch ein Cache-Speicher mit einer Kapazität von 1M Bits und einer Blockgröße von 16 Bytes im Direktabbildungssystem.
  • Das Direktabbildungssystem ist ein System, bei dem der Platz zum Speichern von Daten in einem Cache-Speicher eindeutig durch die Adresse in einem Speicher bestimmt wird.
  • Der zweite Cache-Speicher 100 ist ein Cache-Speicher mit einer Blockgröße von 4 Byte und 64 Einträgen im voll assoziativen System.
  • Das voll assoziative System ist ein System zum Speichern von Daten für die optionale Adresse eines Speichers in einem optionalen Speicherplatz eines Cache-Speichers. Der Befehl PF1 wird dazu verwendet, um vorab Daten zuzuführen, die wahrscheinlich aufgerufen werden, und der Befehl PF2 wird dazu verwendet, vorab Daten zuzuführen, die nicht aufgerufen werden.
  • Ein Compiler beurteilt, ob die Daten beim Erzeugen eines Objektcodes aufgerufen werden. Zum Beispiel verwendet der Compiler den Befehl PF2 beim Zugriff auf große Datenmengen, die die Kapazität des Cache-Speichers übersteigen, da er feststellt, daß die Daten nicht aufgerufen werden, auch wenn sie im Cache-Speicher gespeichert sind.
  • Auch wenn der erste Cache-Speicher 101 eine Kapazität von 1M Bits hat, was größer ist als die des zweiten Cache-Speichers, ist die Gesamtgröße des Cache-Speichers 101 nicht sehr groß, und der Cache-Speicher 101 arbeitet mit hoher Geschwindigkeit, da er nur einen Port aufweist.
  • Der zweite Cache-Speicher 100 nutzt das voll assoziative System und verarbeitet gleichzeitig den Speicherverweisbefehl von der Befehlseinheit 1 und die Übertragung von Daten vom Hauptspeicher 203. Auch wenn die Zellenstruktur kompliziert ist, ist daher die Gesamtgröße des Cache-Speichers 100 gering, und außerdem kann die Betriebsgeschwindigkeit erhöht werden, da der Cache-Speicher 100 nur 64 Einträge aufweist.
  • Der zweite Cache-Speicher 100 wird zum Speichern von Daten verwendet, die nicht vom Befehl PF2 aufgerufen werden. Da der Cache-Speicher 100 somit die Daten, die durch den Befehl PF2 vom Hauptspeicher 203 übertragen wurden, vom Befehl LD aber noch nicht genutzt werden, nur vorübergehend speichert, weist er trotz der geringen Kapazität ein hohes Trefferverhältnis auf, und die Leistungsfähigkeit kann verbessert werden.
  • Beider Ausführung eines Ladebefehls gibt die Befehlseinheit 201 die Adresse der zu ladenden Daten auf den Adressenbus 210 und bezeichnet den Ladebefehl durch das Steuersignal 213. Wenn die einem Cache-Speicher entsprechenden Daten in der Speichereinheit 202 vorhanden sind, liest die Speichereinheit 202 die Daten aus und gibt sie auf den Datenbus 212. Wenn keine Daten vorhanden sind, überträgt die Speichereinheit 202 das Wartesignal 214 an die Befehlseinheit 201 und setzt das Anforderungssignal 218 für die Anforderung an den Hauptspeicher 203 zur Übertragung von Daten auf '1'. Bei Erhalt des Signals 218 liest der Hauptspeicher 203 die Daten aus, gibt die Daten auf den Datentransferbus 215 und sendet das Antwortsignal 217 zu der Speichereinheit 202 zurück. Die Speichereinheit 202 schreibt die Daten in den Cache-Speicher ein, liest die Daten für die Befehlseinheit 201, gibt sie auf den Datenbus 212 und setzt das Wartesignal 214 auf '0'.
  • Bei der Ausführung eines Speicherbefehls gibt die Befehlseinheit 201 die Schreibadresse auf den Adressenbus 210 und die einzuschreibenden Daten auf den Dateneinschreibbus 211, damit die Daten zu der Speichereinheit 202, dem Hauptspeicher 203 und der Ein/Ausgabeeinheit 204 gesendet werden. Beider vorliegenden Ausführungsform werden die Daten wegen des leichteren Verstehens sowohl in den Cache-Speicher 100 oder 101 als auch in den Hauptspeicher 203 eingeschrieben (durchgeschrieben). Auch wenn im Cache-Speicher beim Einschreiben der Daten ein Fehler auftritt, werden die Daten nicht vom Hauptspeicher 203 zum Cache-Speicher übertragen. Wenn die Daten in den Datenraum eingeschrieben werden, schreibt die Speichereinheit 202 die über den Dateneinschreibbus 211 gesendeten Daten in den Cache-Speicher ein, wenn der Cache-Speicher einen Treffer aufweist, und im Hauptspeicher 203 werden die gleichen Daten in den Hauptspeicher eingeschrieben.
  • Das Symbol 301 bezeichnet einen Befehls-Cache-Speicher, 320 eine Recheneinheit und 302 ein Speicherinterface. Der Befehls-Cache-Speicher 301 wandelt einen Befehl in ein Signal 307 um und sendet das Signal 307 an die Recheneinheit 320 und das Speicherinterface 302. Beider Ausführung der Befehle LD, ST, PF1 und PF2 sendet das Speicherinterface 302 das Steuersignal 213 aus und nimmt das Signal 214 auf. Wenn das Wartesignal 214 auf '1' gesetzt ist, überträgt das Interface 302 das Signal 308 an die Recheneinheit 320 und stoppt die Pipeline, bis das Wartesignal 214 zu '0' wird. Das Symbol 1600 bezeichnet eine Steuereinheit, und die Symbole 1605 und 104 bezeichnen Selektoren. Die Steuereinheit 1600 überträgt die Steuersignale 213, 214, 217 und 218 zu und vom Speicherinterface 302 und Hauptspeicher 203 und steuert durch die Signale 111, 113 und 122 bis 125 den Selektor 1605, den zweiten Cache-Speicher 100 und den ersten Cache-Speicher 101. Der Selektor 104 wählt aus den über den Datenbus 110 gesendeten Daten nahe des zweiten Cache-Speichers 100 und aus den über den Datenbus 112 gesendeten Daten nahe des ersten Cache-Speicher 101 die richtigen Daten aus und schickt die ausgewählten Daten als Signal 212 an die Befehlseinheit 201. Da der erste Cache-Speicher 101 nur einen Port besitzt, kann er den Zugriff vom Hauptspeicher 203 und den Zugriff von der Befehlseinheit 201 nur nacheinander bearbeiten. Die Steuereinheit 1600 entscheidet, was durch den Selektor 1605 auf den ersten Cache-Speicher 101 zugreift.
  • Die Fig. 3 zeigt den Aufbau der Befehlseinheit 201 in der Fig. 1. In der Fig. 3 bezeichnet das Symbol 301 einen Befehls-Cache-Speicher, 303 einen Dekoder, 302 ein Speicherinterface, 305 ein Register, 306 eine ALU und 304 einen Adressenaddierer. Der Befehls-Cache-Speicher 301 überträgt über einen Bus 307 einen Befehl an den Dekoder 303 und an das Speicherinterface 302. Der Dekoder 303 dekodiert den erhaltenen Befehl und steuert durch ein Signal 330 das Register 305, die ALU 306 und den Adressenaddierer 304. Die ALU 306 nimmt über die Busse 312 und 313 Daten aus dem Register 305 auf, führt an den Daten eine Operation aus und schreibt das Operationsergebnis über einen Bus 314 in das Register 305 ein. Der Adressenaddierer 304 liest durch die Busse 310 und 311 Daten aus dem Register 305 aus, addiert die ausgelesenen Datenwerte und gibt das Ergebnis als Lade- oder Speicheradresse an den Bus 210. Um das Ergebnis zu speichern, werden die zu speichernden Daten aus dem Register 305 ausgelesen und auf den Bus 211 gegeben. Um das Ergebnis zu laden, nimmt der Addierer 304 die erhaltenen Lesedaten über den Bus 212 auf und schreibt sie in das Register 305 ein.
  • Das Speicherinterface 302 gibt bei der Ausführung der Befehle LD, ST, PF1 und PF2 das Steuersignal 213 aus und nimmt das Signal 214 auf. Wenn das Wartesignal 214 auf '1' gesetzt ist, überträgt das Interface 302 das Signal 308 an den Dekoder 303 und stoppt die Pipeline, bis das Wartesignal 214 zu '0' wird.
  • Die Fig. 4 zeigt eine Darstellung zur Erläuterung der Pipelineverarbeitung. In der Fig. 4 bezeichnet das Symbol IF eine Befehlsauslesestufe, D eine Dekoderstufe, E eine Operations- und Adressenaddierstufe, A eine Cache-Speicher-Zugriffsstufe und W eine Registereinschreibstufe. Wenn ein Ladebefehl ausgeführt wird, wird in der Stufe A auf den Cache-Speicher zugegriffen, und in der Stufe W werden die ausgelesenen Daten in das Register 305 eingeschrieben. Wenn ein Speicherbefehl ausgeführt wird, wird in der Stufe A der Cache-Speicher geprüft und, wenn er einen Treffer enthält, werden die Daten in der Stufe A in den Cache-Speicher eingeschrieben.
  • Die Fig. 2 zeigt den Aufbau der Speichereinheit 202 in der Fig. 1. In der Fig. 2 bezeichnet das Symbol 100 den zweiten Cache-Speicher mit einer Kapazität von 1M Byte und einer Blockgröße von 16 Byte im Direktabbildungssystem, 101 bezeichnet einen Cache-Speicher mit einer Kapazität von 256 Byte im voll assoziativen System, 102 eine Prefetch-Warteschlange mit vier Einträgen, 103 eine Steuerschaltung, und 104 und 105 bezeichnen Selektoren.
  • Der erste Cache-Speicher 101 nimmt eine Adresse 130, Transferdaten 215, ein Selektorsteuersignal 123, ein Schreibsignal 122 und Schreibdaten 211 und Ausgangslesedaten 112 und ein Treffersignal 113 auf. Der zweite Cache-Speicher 100 nimmt eine Adresse 210, eine Transferadresse 216, Transferdaten 215, ein Eintragsignal 124, ein Schreibsignal 125 und Schreibdaten 211 und Ausgangslesedaten 110 und ein Treffersignal 111 auf. Die Prefetch-Warteschlange 102 nimmt ein Cache-Speicher-Auswahlsignal 213-1, eine Transferadresse 216, eine Adresse 210, ein Setzsignal 120 und ein Rücksetzsignal 121 auf und gibt ein Vollsignal 114, ein Treffersignal 115 und ein Cache-Speicher-Auswahlsignal 116 ab.
  • Die Steuerschaltung 103 nimmt von der Befehlseinheit 201 ein Steuersignal 213-2 auf; von der Prefetch-Warteschlange 102 nimmt sie das Vollsignal 114, das Treffersignal 115 und das Cache-Speicher-Auswahlsignal 116 auf; vom Hauptspeicher 203 das Antwortsignal 217; vom zweiten Cache-Speicher 100 das Treffersignal 111; und vom ersten Cache-Speicher 101 das Treffersignal 113; und sie überträgt das Wartesignal 214 an die Befehlseinheit 201; das Setzsignal 120 und das Rücksetzsignal 121 an die Prefetch- Warteschlange 102; das Transferanforderungssignal 218 an den Hauptspeicher 203; das Eintragsignal 124 und das Schreibsignal 125 an den zweiten Cache-Speicher 100; das Schreibsignal 122 und das Selektorsteuersignal 123 an den ersten Cache-Speicher 101; und das Selektorsteuersignal 123 an den Selektor 105.
  • Der Selektor 104 nimmt vom zweiten Cache-Speicher 100 die Daten 110 und das Treffersignal 111 auf und vom ersten Cache-Speicher 101 die Daten 112 und das Treffersignal 113 und liest die Daten 110, als Ausgangssignal aus, wenn das Treffersignal 111 einen Treffer angibt, und die Daten 110 als Ausgangssignal, wenn das Treffersignal 113 einen Treffer angibt, und gibt die Daten auf den Datenbus 212 aus. Der Selektor 105 wählt entsprechend dem Selektorsteuersignal 123 entweder die Adresse 210 oder die Transferadresse 216 aus und überträgt sie als Ausgangssignal 130 an den ersten Cache-Speicher 101.
  • Der erste Cache-Speicher 101 liest entsprechend dem Inhalt der Adresse 130 die Daten aus dem Cache-Speicher aus, wenn das Schreibsignal 122 ein Datenauslesen angibt, und gibt die ausgelesenen Daten 112 und das Treffersignal 113 aus. Wenn das Schreibsignal 122 ein Datenschreiben angibt, schreibt der Cache-Speicher 101 die Transferdaten 215 ein, wenn das Selektorsteuersignal 123 auf 1 gesetzt ist, und den Inhalt der Schreibdaten 211, wenn das Signal 123 auf 0 gesetzt ist.
  • Der zweite Cache-Speicher 100 prüft den Inhalt des Cache-Speichers an der Adresse 210 und gibt die Lesedaten 110 und das Treffersignal 111 aus, wenn das Schreibsignal 125 negiert wird und ein Datenlesen bezeichnet wird. Wenn das Schreibsignal 125 bestätigt wird und ein Datenschreiben bezeichnet, prüft der Cache-Speicher 100 den Inhalt des Cache-Speichers und, wenn ein Treffer vorliegt, schreibt er den Inhalt des Schreibdatenbusses 211 ein. Wenn das Eintragsignal 124 gleichzeitig mit dieser Operation bestätigt wird, gibt der Cache-Speicher 100 einen Satz aus der Transferadresse 216 und den Transferdaten 215 ein.
  • Die Prefetch-Warteschlange 102 ist eine Warteschlange zum Festhalten der Adresse der Daten, die vom Hauptspeicher 203 bis zu vier Einträgen übertragen werden, sie nimmt den Inhalt der Adresse 210 und das Satzauswahlsignal 213-1 in die Warteschlange auf, wenn das Setzsignal 120 vorliegt, und sie gibt das der Transferadresse 216 entsprechende Cache-Speicher-Auswahlsignal 116 aus, wenn das Rücksetzsignal 121 vorliegt, um den Eintrag zu löschen. Darüberhinaus vergleicht die Warteschlange 102 die Adresse 210 mit der festgehaltenen Adresse und gibt das Treffersignal 115 aus, wenn der Eintrag gerade vom Hauptspeicher 203 übertragen wird. Wenn eine gültige Adresse für jeden Eintrag festgehalten wird, gibt die Warteschlange 102 das Vollsignal 114 aus, das die Adresse anzeigt.
  • Es wird nun die Arbeitsweise der Steuerschaltung 103 beschrieben. Die Fig. 14 zeigt den Aufbau der Steuerschaltung 103. Die Steuerschaltung 103 dekodiert das Steuersignal 213-2 und akzeptiert den Start jedes der Befehle LD, ST, PF1 und PF2. Wenn der Befehl LD ausgeführt wird und weder vom zweiten Cache-Speicher 100 das Treffersignal 111 noch vom ersten Cache-Speicher 101 das Treffersignal 113 gesendet wird, gibt die Schaltung 103 das Wartesignal 214 aus, um die Befehlseinheit 201 zum Warten zu veranlassen, während wegen Fehlern in beiden Cache-Speichern Daten vom Hauptspeicher 203 übertragen werden. Wenn die Befehle LD, Pa1 und PF2 ausgeführt werden, werden sowohl das Treffersignal 111 vom zweiten Cache-Speicher 100 als auch das Treffersignal 113 vom ersten Cache-Speicher 101 negiert, und es wird das Vollsignal 114 von der Prefetch-Warteschlange 102 ausgegeben, obwohl das Treffersignal 115 von der Prefetch- Warteschlange 102 auch negiert wird, und die Schaltung 103 gibt das Wartesignal 214 aus, damit die Befehlseinheit 201 wartet, da die Prefetch-Warteschlange 102 voll ist und daher in die Warteschlange kein Befehl geladen werden kann.
  • Wenn der Befehl LD, PF1 oder PF2 ausgeführt wird, wird das Vollsignal 114 von der Prefetch-Warteschlange 102 negiert, und auch das Treffersignal 111 vom zweiten Cache-Speicher 100 und das Treffersignal 113 vom ersten Cache-Speicher 101 werden negiert, und die Schaltung 103 gibt das Transferanforderungssignal 218 an den Hauptspeicher 203 aus und auch das Setzsignal 120 an die Prefetch-Warteschlange 102, damit sie in die Prefetch-Warteschlange 102 eingetragen werden.
  • Wenn das Antwortsignal 217 vom Hauptspeicher 203 ausgegeben wird, gibt die Schaltung 103 das Rücksetzsignal 121 an die Prefetch-Warteschlange 102 aus, um den Eintrag in der Prefetch-Warteschlange 102 zurückzusetzen, und sie gibt, um die Transferdaten in einen Cache-Speicher einzugeben, das Schreibsignal 122 an den ersten Cache- Speicher 101 aus, wenn das Cache-Speicher-Auswahlsignal 116 ein Einschreiben der Daten in den ersten Cache-Speicher 101 bezeichnet, und sie gibt das Eintragsignal 124 an den zweiten Cache-Speicher 100 aus, wenn das Signal 116 ein Einschreiben der Daten in den zweiten Cache-Speicher 100 bezeichnet.
  • Wenn der Befehl ST ausgeführt wird und das Treffersignal 113 vom ersten Cache- Speicher 101 vorliegt, gibt die Schaltung 103 das Schreibsignal 122 an den ersten Cache- Speicher 101 aus, um die Daten einzuschreiben, die anzeigen, daß das Signal 113 für den ersten Cache-Speicher 101 vorliegt. Gleichermaßen gibt, wenn der Befehl ST ausgeführt wird und das Treffersignal 111 vom zweiten Cache-Speicher 100 vorliegt, die Schaltung 103 das Schreibsignal 125 für den zweiten Cache-Speicher 100 aus, um die Daten einzuschreiben, die anzeigen, daß das Signal 111 ausgegeben wird.
  • Die Fig. 5 zeigt den Aufbau der Prefetch-Warteschlange 102 in der Fig. 2. In der Fig. 5 bezeichnet das Symbol 500 eine Prioritätsschaltung, 501 eine Beurteilungsschaltung, und 502 bis 505 bezeichnen Zellen. Die Zellen 502 bis 505 nehmen eine Leseadresse 212, ein Cache-Speicher-Auswahlsignal 213-1, eine Transferadresse 216 und ein Rücksetzsignal 121 auf und geben Gültigkeitssignale 506, 509, 512 und 515, Treffersignale 507, 510, 513 und 516 und ein Auswahlsignal 116 aus. Außerdem nehmen die Zellen Setzsignale 508, 511, 514 und 517 auf.
  • Die Prioritätsschaltung 500 nimmt von den Zellen 502 bis 505 die Gültigkeitssignale 506, 509, 512 und 515 und von der Steuerschaltung 103 das Rücksetzsignal 120 auf und überträgt die Setzsignale 508, 511, 514 und 517 an die Zellen 502 bis 505.
  • Die Beurteilungsschaltung 501 nimmt die Gültigkeitssignale 506, 509, 512 und 515 und die Treffersignale 507, 510, 513 und 516 von den Zellen 502 bis 505 auf und gibt das Vollsignal 114 und das Treffersignal 115 an die Steuerschaltung 103 aus.
  • Da die Zellen 502 bis 505 die gleiche Funktion haben, wird im folgenden nur die Arbeitsweise der Zelle 502 beschrieben. Die Zelle 502 speichert ein Register zum Festhalten von Adressen und ein Cache-Speicher-Auswahlbit und dessen Gültigkeitsbit. Wenn das Setzsignal 508 anliegt, gibt die Zelle 502 das Gültigkeitsbit aus und nimmt den Inhalt der Transferadresse 216 und den des Cache-Speicher-Auswahlsignals 213-1 auf und vergleicht die Leseadresse 212 mit der festgehaltenen gültigen Adresse. Wenn sie übereinstimmen, übergibt die Zelle 502 ein entsprechendes Cache-Speicher-Auswahlbit an das Signal 116. Wenn die Transferadresse 216 mit der festgehaltenen Adresse übereinstimmt und das Rücksetzsignal 121 anliegt, negiert die Zelle 502 das Gültigkeitsbit. Wenn das Setzsignal 120 anliegt, prüft die Prioritätsschaltung 500 die Gültigkeitssignale 506, 509, 512 und 515 und wählt eine der gültigen Zellen aus, um die entsprechenden Signale 508, 511, 514 und 517 zu erzeugen. Die Zelle 502 weist die höchste Priorität auf und die Zelle 505 die niedrigste, und die Zellen werden mit der Zelle 502 beginnend gesetzt.
  • Die Beurteilungsschaltung 501 gibt das Treffersignal 115 aus, wenn es nur eine Zelle gibt, die sowohl das. Gültigkeitssignal als auch das Treffersignal enthält. Wenn alle Gültigkeitssignale 506, 509, 512 und 515 vorliegen, gibt die Schaltung 501 das Vollsignal 114 aus.
  • Die Fig. 6 zeigt den Aufbau der Zelle 502 in der Fig. 5. Inder Fig. 6 bezeichnet das Symbol 601 ein Register zum Festhalten eines Ungültigkeitsbits, 602 ein Register zum Festhalten von Adressen, 603 ein Register zum Festhalten von Cache-Speicher- Auswahlbits, 604 und 605 bezeichnen Komparatoren, 630 bezeichnet einen Dreizustandspuffer, und 631 und 632 bezeichnen UND-Gatter. Das Gültigkeitsbit 601 wird gesetzt, wenn das Setzsignal 508 anliegt, und zurückgesetzt, wenn das Signal 608 anliegt. Das Setzsignal 508 ist mit dem Gültigkeitsbit 601, dem Adressenregister 602 und dem Cache- Speicher-Auswahlbit 603 verbunden. Wenn das Setzsignal 508 anliegt, wird das Gültigkeitsbit 601 gesetzt, das Adressenregister 602 nimmt die Leseadresse 212 auf, und das Cache-Speicher-Auswahlregister 603 nimmt das Cache-Speicher-Auswahlsignal 213-1 auf. Das Gültigkeitsbit gibt am Ausgang das Gültigkeitssignal 506 aus. Der Komparator 604 vergleicht die Adresse 212 mit dem Ausgangssignal 606 des Adressenregisters 602. Wenn beide übereinstimmen und das Gültigkeitsbit 601 anliegt, gibt der Komparator 604 das Treffersignal 507 aus. Der Komparator 605 vergleicht das Ausgangssignal 606 des Adressenregisters 602 mit der Transferadresse 216. Wenn die beiden übereinstimmen, öffnet der Komparator 605 den Dreizustandspuffer 630 und übergibt den Inhalt des Cache-Speicher- Auswahlbitregisters 603 an das Signal 116. Wenn das Rücksetzsignal 121 anliegt, wird das Signal 608 ausgegeben und das Gültigkeitsbit 601 zurückgesetzt.
  • Die Fig. 7 zeigt den Aufbau der Prioritätsschaltung 500 in der Fig. 5. In der Fig. 7 bezeichnen die Symbole 705 bis 707 Inverter und 701 bis 704 UND-Gatter. Die Fig. 8 zeigt den Aufbau der Beurteilungsschaltung 501 in der Fig. 5. In der Fig. 8 bezeichnen die Symbole 801 bis 804 und 806 UND-Gatter, und 805 bezeichnet ein ODER-Gatter. Die Fig. 9 zeigt den Aufbau des Cache-Speichers 100 in der Fig. 2. In der Fig. 9 bezeichnet das Symbol 900 eine Beurteilungsschaltung, und 901 bis 903 bezeichnen Zellen zum Festhalten eines Gültigkeitsbits, einer Adresse und Daten. Die Zellen 901 bis 903 nehmen die Leseadresse 210, die Eintraganforderung 124, die Schreibdaten 211 und die Schreibanforderung 125 am Eingang auf und geben die Daten 110 aus. Die Zellen 901 bis 903 übertragen außerdem die Treffersignale 910 bis 912 an die Beurteilungsschaltung 900. Die Zelle 901 nimmt die Transferadresse 216 und die Transferdaten 215 auf und sendet eine Adresse 913 und Daten 914 an die Zelle 902. Gleichermaßen sendet die Zelle 902 Adressen 915 und 916 an die nächste Zelle. Die letzte Zelle 912 nimmt eine Adresse 917 und Daten 918 auf.
  • Wenn eines der Treffersignale 910 bis 912 von den Zellen 901 bis 903 anliegt, gibt die Beurteilungsschaltung 900 das Treffersignal 111 an die Steuerschaltung 103 und den Selektor 104 aus. Die Zelle 901 vergleicht die Adresse 210 mit der festgehaltenen Adresse. Wenn beide übereinstimmen und gültig sind, überträgt die Zelle 901 das Treffersignal 910 und gibt die entsprechenden festgehaltenen Daten auf den Bus 110. Wenn die Schreibanforderung 125 vorliegt, vergleicht die Zelle 901 die festgehaltene Adresse mit der Schreibadresse 210. Wenn beide übereinstimmen und das Gültigkeitsbit anliegt, nimmt die Zelle 901 den Inhalt der Schreibdaten 211 auf. Wenn gleichzeitig mit der obigen Operation die Eintraganforderung 124 vorliegt, gibt die Zelle 901 das Gültigkeitsbit aus und nimmt die Transferadresse 216 und die Transferdaten 215 auf. In diesem Fall nimmt die Zelle 902 über die Signale 913 und 914 die Adresse und die Daten auf, die von der Zelle 901 festgehalten werden. Das heißt, daß die Zellen 901 bis 903 dem FIFO-Schema folgen.
  • Die Fig. 10 zeigt den Aufbau der Zelle 901 in der Fig. 9. In der Fig. 10 bezeichnen die Symbole 1000, 1001 und 1002 Register zum Festhalten eines Gültigkeitsbits, von Adressen und von Daten. Das Symbol 1004 bezeichnet einen Komparator, 1005 und 1006 bezeichnen UND-Gatter, und 1003 bezeichnet einen Dreizustandspuffer. Die Eintraganforderung 124 ist mit dem Register 1000 zum Festhalten eines Gültigkeitsbits, dem Register 1001 zum Festhalten von Adressen und dem Register 1002 zum Festhalten von Daten verbunden. Wenn die Eintraganforderung 124 anliegt, wird das Register 1000 zum Festhalten eines Gültigkeitsbits gesetzt, das Register 1001 zum Festhalten von Adressen nimmt die Transferadresse 216 auf, und das Register 1002 zum Festhalten von Daten nimmt die Daten 215 auf. Der Komparator 1004 vergleicht das Ausgangssignal 913 des Registers zum Festhalten von Adressen mit der Adresse 210. Wenn das Ausgangssignal des Komparators 1004 dies bestätigt und auch die Gültigkeitsbits vorliegen, gibt das UND-Gatter 1006 das Treffersignal 910 aus und öffnet den Dreizustandspuffer 1003, um den Inhalt des Registers zum Festhalten der Daten auf den Datenbus 110 auszugeben. Wenn das UND-Gatter 1005 feststellt, daß das Treffersignal 910 und eine Schreibanforderung vorliegen, gibt es das Signal 1008 aus, das an das Register 1002 zum Festhalten der Daten gesendet wird und die Schreibdaten 211 für das Register 1002 zum Festhalten der Daten enthält.
  • Wie oben beschrieben macht der zweite Cache-Speicher 100 vom voll assoziativen System Gebrauch und verarbeitet die Speicherverweisbefehle von der Befehlseinheit 201 und überträgt gleichzeitig die vom Hauptspeicher 203 gesendeten Daten. Die Gesamtgröße des Cache-Speichers 100 ist daher klein, und die Operationsgeschwindigkeit davon kann erhöht werden, da er nur 64 Einträge umfaßt, auch wenn die Zellenstruktur kompliziert ist.
  • Außerdem weist der zweite Cache-Speicher 100 ein hohes Trefferverhältnis auf, auch wenn die Kapazität klein ist, und die Operationsgeschwindigkeit kann erhöht werden, da er nur Daten enthält, die in Verbindung mit der Anweisung PF2 erhöben werden und daher die Daten, die vom Hauptspeicher 203 gemäß der Anweisung PF2 übertragen, aber von der Anweisung LD noch nicht benutzt wurden, nur vorübergehend speichert.
  • Der Cache-Speicher der Fig. 9 hat eine Blockgröße von nur 4 Byte. Das heißt, das der Cache-Speicher, gleiche Kapazität vorausgesetzt, eine größere Anzahl von Einträgen umfaßt als wenn die Blockgröße die gleiche wäre wie beim ersten Cache-Speicher, d. h. 16 Byte. Auch wenn eine große Anzahl von Arraydaten gleichzeitig zu verarbeiten ist, kann somit jedes Array in einem separaten Eintrag gespeichert werden, wodurch der Abfall in der Leistungsfähigkeit vermieden wird, der herkömmlich mit dem Fehlen von Einträgen verbunden ist. Da die Daten vom Hauptspeicher in Einheiten von 4 Byte übertragen werden, können die Daten von diskontinuierlichen Adressen verarbeitet werden, ohne daß unnötig Datenübertragen werden. Dadurch wird eine schnelle Datenverarbeitung sichergestellt.
  • Die Fig. 11 zeigt den Aufbau des ersten Cache-Speichers in der Fig. 2. In der Fig. 11 bezeichnet das Symbol 1100 ein Adressenarray, 1101 ein Gültigkeitsbit, 1102 ein Datenarray, 1104 einen Komparator und 1105 ein UND-Gatter sowie 1103 einen Selektor. Der Selektor 1103 wird mit dem Steuersignal 123 gesteuert, das die Transferdaten 215 oder die Schreibdaten 211 auswählt, und er gibt sein Ausgangssignal an das Datenarray 1102 ab.
  • Auf das Adressenarray 1100 und das Gültigkeitsbit 1101 wird durch das Bit 30-1 niedriger Ordnung der Adresse 130 zugegriffen. Der Komparator 1104 vergleicht das Adressenarray-Ausgangssignal 1106 mit dem Bit 130-2 hoher Ordnung der Adresse 130. Das UND-Gatter 1105 gibt das Treffersignal 112 aus, wenn es feststellt, daß das Ausgangssignal des Komparators und das Gültigkeitsbit 1107 anliegt. Wenn das Schreibsignal 122 anliegt, nimmt das UND-Gatter 1105 die Adresse 130-2 auf und setzt das entsprechende Gültigkeitsbit. Auf das Datenarray wird durch das Bit I30-1 niedriger Ordnung der Adresse 130 zugegriffen, woraufhin Lesedaten auf den Bus 113 gegeben werden. Wenn das Schreibsignal 122 anliegt, legt das Datenarray das Ausgangssignal des Selektors 1103 fest.
  • Auch wenn der erste Cache-Speicher 101 eine Kapazität von 1M Bit hat, was größer ist als die des zweiten Cache-Speichers, ist seine Gesamtgröße nicht sehr groß, da er nur einen Port aufweist und eine Erhöhung der Operationsgeschwindigkeit erwartet werden kann.
  • Die Fig. 14 zeigt den Aufbau der Steuerschaltung in der Fig. 2. In der Fig. 14 bezeichnen die Symbole 1400, 1406 und 1410 ODER-Gatter und die Symbole 1401 bis 1405, 1407 bis 1409 und 1411 UND-Gatter. Das Symbol 1412 bezeichnet einen Dekoder zum Dekodieren des Steuersignals 213-2 durch die Befehlseinheit 201 zur Feststellung, ob die gerade ausgeführte Anweisung die Anweisung LD, ST, PF1 oder PF2 ist.
  • Die Fig. 15 zeigt den Aufbau der Speichereinheit 202 in der Fig. 1. Der Aufbau der Fig. 15 ist fast der gleiche wie der in der Fig. 2, mit der Ausnahme, daß zwischen dem ersten Cache-Speicher 101 und dem zweiten Cache-Speicher 100 ein Interface 130 liegt.
  • Das erste Problem des Aufbaus der Fig. 2 ist, daß der zweite Cache-Speicher nutzlos ist, wenn ein mittleres oder kleines Programm unter Verwendung des Befehls PP1 läuft. Das zweite Problem ist, daß das Trefferverhältnis im Vergleich zu einem Cache- Speicher der gleichen Kapazität und mit dem Satz-assoziativen System niedrig ist. Die Ausführungsform der Fig. 15 löst das Problem.
  • Im Falle der Ausführungsform der Fig. 15 wird, wenn der erste Cache-Speicher 101 einen Fehler verursacht, der zweite Cache-Speicher 100 aufgesucht. Wenn es einen Treffer gibt, werden die entsprechenden Daten vom zweiten Cache-Speicher 100 über das Interface 130 zum ersten Cache-Speicher 101 übertragen. Beim Eingeben der Daten in den ersten Cache-Speicher werden die überfließenden Daten durch das Interface 130 in den zweiten Cache-Speicher 100 eingegeben. In Norman P. Jouppi, "Improving Direct-Mapped Cache Performance by the Addition of a small Fully-Associative Cache und Prefetch Buffers,", Proc. 17th Symp. on Camp. Arch., Seattle, WA, Seiten 364-373, Mai 1990 ist beschrieben, daß der obige Cache-Speicher ein Opfer-Cache-Speicher ist, der das Trefferverhältnis im Vergleich zu einem Cache-Speicher mit dem Direktabbildungssystem verbessert.
  • Die zweite Ausführungsform der Fig. 15 ermöglicht es, die Leistungsfähigkeit eines mittleren oder kleinen Programms durch effektives Verwenden sowohl des ersten Cache-Speichers 101 als auch des zweiten Cache-Speichers 100 zu verbessern.
  • Die vorliegende Erfindung ermöglicht es, die Leistungsfähigkeit eines Computers mit einer Prefetch-Funktion für einen Cache-Speicher bei mittleren und kleinen Programmen zu verbessern, bei denen die im Cache-Speicher gespeicherten Daten wiederverwendet werden, während die im Cache-Speicher gespeicherten Daten bei großen Programmen nicht wiederverwendet werden.
  • Die Fig. 23 zeigt einen zweiten Aufbau für den ersten Cache-Speicher 101 in der Fig. 2. Der Cache-Speicher der Fig. 23 ist ein Cache-Speicher vom Zweiwege-Satzassoziativen Typ mit einer Kapazität von 1 Megabyte und einer Blockgröße von 16 Byte. Die Bezugszeichen 4101 und 4103 sind Adressenarrays; 4102 und 4104 Gültigkeitsbits; 4105 und 4106 sind Datenarrays; 4107 und 4108 sind Komparatoren; 4109 ist ein Arrayauswahlspeicher; 4110, 4112, 4113, 4114 und 4115 sind UND-Gatter; 4111 und 4116 sind ODER-Gatter; und 4120 und 4122 sind Selektoren. In der nun folgenden Beschreibung werden das Adressenarray 4101, das Gültigkeitsbit 4102 und das Datenarray 4105 gemeinsam als Array 1 bezeichnet; gleichermaßen werden das Adressenarray 4103; das Gültigkeitsbit 4103 und das Datenarray 4106 gemeinsam als Array 2 bezeichnet.
  • Unter der Steuerung eines Steuersignals 123 wählt der Selektor 4120 entweder die Transferdaten 215 oder die Schreibdaten 211 aus und gibt sie als Ausgangssignal 4130 an das Datenarrays 4105 und 4106 ab. Auf das erste Adressenarray 4101 und das Gültigkeitsbit 4102 wird durch das Bit 130-1 niedriger Ordnung der Adresse 130 zugegriffen. Der Komparator 4107 vergleicht das Adressenarray-Ausgangssignal 4131 mit dem Bit 130-2 hoher Ordnung der Adresse 130. Wenn das UND-Gatter 4114 erfaßt, daß das Ausgangssignal des Komparators 4107 und das Gültigkeitsbit 4132 anliegen, gibt es ein Treffersignal 4135 aus, das einen Treffer im Array 1 anzeigt. Wenn für das Array 1 ein Schreibsignal 4137 anliegt, geben das erste Adressenarray 4101 und das Gültigkeitsbit 4102 die Adresse 130-2 aus und setzen das entsprechende Gültigkeitsbit. Gleichermaßen wird auf das zweite Adressenarray 4103 und das Gültigkeitsbit 4104 durch das Bit 130-1 niedriger Ordnung der Adresse 130 zugegriffen. Der Komparator 4108 vergleicht das Adressenarray- Ausgangssignal 4133 mit dem Bit 130-2 hoher Ordnung der Adresse 130. Wenn das UND- Gatter 4115 erfaßt, daß das Ausgangssignal des Komparators 4108 und das Gültigkeitsbit 4134 gleich sind, gibt es ein Treffersignal 4136 aus, das einen Treffer im Array 2 anzeigt. Wenn für das Array 2 ein Schreibsignal 4138 anliegt, geben das zweite Adressenarray 4103 und das Gültigkeitsbit 4104 die Adresse 130-2 aus und setzen das entsprechende Gültigkeitsbit. Das ODER-Gatter 4116 gibt ein Treffersignal 113 aus, wenn entweder das Treffersignal 4135 für das Array 1 oder das Treffersignal 4136 für das Array 2 anliegt. Auf das erste Datenarray 4105 wird mit dem Bit 130-1 niedriger Ordnung der Adresse 130 zugegriffen. Die so ausgelesenen Daten werden auf einen Bus 4139 gesetzt. Wenn das Schreibsignal 4137 für das Array 1 anliegt, wird das Ausgangssignal 4130 des Selektors 4120 in das Array 1 eingeschrieben. Auf das zweite Datenarray 4106 wird ebenfalls mit dem Bit 130-1 niedriger Ordnung der Adresse 130 zugegriffen. Die so ausgelesenen Daten werden auf einen Bus 4140 gesetzt. Wenn das Schreibsignal 4138 für das Array 2 anliegt, wird das Ausgangssignal 4130 des Selektors 4120 in das Array 2 eingeschrieben. Wenn das Treffersignal 4135 des Arrays 1 vorliegt, wählt der Selektor 4122 das Ausgangssignal 4139 des ersten Datenarray aus; anderenfalls wählt der Selektor 4122 das Ausgangssignal 4140 des zweiten Datenarrays aus. Das ausgewählte Ergebnis wird auf den Datenbus 112 gesetzt. Wenn das Schreibsignal 122 anliegt, enthält der Arrayauswahlspeicher 4109 die Informationen darüber, in welchem der Arrays 1 und 2 die Daten eingeschrieben sind. Die Transferdaten 215 vom Hauptspeicher werden in das Array 2 eingeschrieben, wenn die vorhergehenden Daten in das Array 1 eingeschrieben wurden, und sie werden in das Array 1 eingeschrieben, wenn die vorhergehenden Daten in das Array 2 eingeschrieben wurden. Die Schreibdaten 211 des gespeicherten Befehls, die von der Befehlseinheit übertragen wurden, werden in das Array 1 oder das Array 2 eingeschrieben, in dem ein Treffer erfaßt wurde. In diesem Fall wird die im Arrayauswahlspeicher 4109 enthaltene Information ignoriert.
  • Was nun folgt, ist eine Beschreibung, wie das Schreibsignal 4137 für das Array 1 und das Schreibsignal 4138 für das Array 2 erzeugt wird. Auf den Arrayauswahlspeicher 4109 wird mit dem Bit 130-1 niedriger Ordnung der Adresse 130 zugegriffen. Die so ausgelesenen Daten werden zum UND-Gatter 4110 geschickt. Wenn das Schreibsignal 122 anliegt, wird der Wert des Arrayauswahlsignals 4141 in den Arrayauswahlspeicher 4109 eingeschrieben. Wenn weder das Treffersignal 113 noch das Ausgangssignal des Arrayauswahlspeichers 4109 anliegt, gibt das UND-Gatter 4110 ein Steuersignal 4142 aus. Wenn weder das Treffersignal 4135 für das Array 1 noch das Steuersignal 4142 anliegt, gibt das ODER-Gatter 4111 das Arrayauswahlsignal 4141 ab. Das Arrayauswahlsignal 4141 zeigt, wenn es vorliegt, an, daß das Array 1 zum Einschreiben von Daten ausgewählt wird; wenn es nicht vorliegt, zeigt das Arrayauswahlsignal 4141 an, daß das Array 2 zum Einschreiben von Daten ausgewählt wird. Wenn sowohl das Schreibsignal 122 als auch das Arrayauswahlsignal 4141 anliegt, gibt das UND-Gatter 4112 das Schreibsignal 4137 an das Array 1 aus. Gleichermaßen gibt das UND-Gatter 4113 das Schreibsignal 4138 an das Array 2 aus, wenn das Schreibsignal 122 anliegt, während das Arrayauswahlsignal 4141 nicht anliegt. Der Cache-Speicher der Fig. 23, der als Zweiwege-assoziativer Typ aufgebaut ist, ist massiver als der Cache-Speicher der Fig. 11 und verhindert das Auftreten von Blockkonflikten. Das Trefferverhältnis des Cache-Speichers der Fig. 23 ist damit höher als das des Cache-Speichers der Fig. 11.
  • Die Fig. 24 zeigt einen zweiten Aufbau für den zweiten Cache-Speicher 100 der Fig. 2. Der Cache-Speicher der Fig. 24 ist vom Zweiwege-Satz-assoviativen Typ mit einer Kapazität von 2 Kilobyte und einer Blockgröße von 32 Byte. Die Bezugszeichen 4201 und 4203 bezeichnen Adressenarrays; 4202 und 4204 Gültigkeitsbits; 4205 und 4206 Datenarrays; 4207 und 4208 Komparatoren; 4209 bezeichnet einen Arrayauswahlspeicher; 4210, 4211, 4212, 4213; 4214 und 4215 bezeichnen UND-Gatter; 4216 ist ein ODER-Gatter; 4217 eine Inverterschaltung und 4222 ein Selektor. In der nun folgenden Beschreibung werden das Adressenarray 4201, das Gültigkeitsbit 4202 und das Datenarray 4205 gemeinsam als Array 1 bezeichnet; und das Adressenarray 4203, das Gültigkeitsbit 4204 und das Datenarray 4206 werden gemeinsam als Array 2 bezeichnet.
  • Das erste Adressenarray 4201 und das Gültigkeitsbit 4202 geben den Wert der Adresse aus, die durch das Bit 210-1 niedriger Ordnung der Leseadresse 210 bezeichnet wird. Der Komparator 4207 vergleicht das Adressenarray-Ausgangssignal 4231 mit dem Bit 210-2 hoher Ordnung der Adresse 210. Wenn das UND-Gatter 4214 erfaßt, daß das Ausgangssignal des Komparators 4207 und das Gültigkeitsbit 4232 gleich sind, gibt es ein Treffersignal 4235 aus, das einen Treffer im Array 1 anzeigt. Wenn für das Array 1 ein erstes Schreibsignal 4237 anliegt, setzen das erste Adressenarray 4201 und das Gültigkeitsbit 4202 das Bit 210-2 hoher Ordnung der Leseadresse 210 auf die durch das Bit 210- 1 niedriger Ordnung der Leseadresse 210 bezeichnete Adresse und setzen das entsprechende Gültigkeitsbit. Wenn ein zweites Schreibsignal 4239 für das Array 1 anliegt, wird das Bit 216-2 hoher Ordnung der Transferadresse 216 auf die Adresse gesetzt, die durch das Bit 216-1 niedriger Ordnung der Transferadresse 216 bezeichnet wird, und das entsprechende Gültigkeitsbit wird gesetzt. Gleichermaßen geben das zweite Adressenarray 4203 und das Gültigkeitsbit 4204 den Wert der Adresse aus, die durch das Bit 210-1 niedriger Ordnung der Leseadresse 210 bezeichnet wird. Der Komparator 4208 vergleicht das Adressenarray-Ausgangssignal 4233 mit dem Bit 210-2 hoher Ordnung der Adresse 210. Wenn das UND-Gatter 4215 erfaßt, daß das Ausgangssignal des Komparators 4208 und das Gültigkeitsbit 4234 anliegen, gibt es ein Treffersignal 4236 aus, das einen Treffer im Array 2 anzeigt. Wenn für das Array 2 ein erstes Schreibsignal 4238 anliegt, setzen das zweite Adressenarray 4203 und das Gültigkeitsbit 4204 das Bit 210-2 hoher Ordnung der Leseadresse 210 auf die Adresse, die durch das Bit 210-1 niedriger Ordnung der Leseadresse 210 bezeichnet wird, und setzen das entsprechende Gültigkeitsbit. Wenn für das Array 2 ein zweites Schreibsignal 4240 anliegt, wird das Bit 216-2 hoher Ordnung der Transferadresse 216 auf die Adresse gesetzt, die durch das Bit 216-1 niedriger Ordnung der Transferadresse 216 bezeichnet wird, und das entsprechende Gültigkeitsbit gesetzt.
  • Das ODER-Gatter 4216 gibt ein Treffersignal 111 aus, wenn entweder das Treffersignal 4235 für das Array 1 oder das Treffersignal 4236 für das Array 2 anliegt. Das erste Datenarray 4205 setzt die Daten der Adresse, die durch das Bit 210-1 niedriger Ordnung der Leseadresse 210 bezeichnet wird, auf einen Bus 4241. Wenn das erste Schreibsignal 4237 für das Array 1 anliegt, werden die Schreibdaten 211 in die Adresse eingeschrieben, die durch das Bit 210-1 niedriger Ordnung der Leseadresse 210 bezeichnet wird. Wenn das zweite Schreibsignal 4239 für das Array 1 anliegt, werden die Transferdaten 215 in die Adresse eingeschrieben, die durch das Bit 216-1 niedriger Ordnung der Transferadresse 216 bezeichnet wird. Das erste Datenarray 4206 setzt die Daten der Adresse, die durch das Bit 210-1 niedriger Ordnung der Leseadresse 210 bezeichnet wird, auf einen Bus 4242. Wenn das erste Schreibsignal 4238 für das Array 2 anliegt, werden die Schreibdaten 211 in die Adresse eingeschrieben, die durch das Bit 210-1 der Leseadresse 210 bezeichnet wird. Wenn das Schreibsignal 4240 für das Array 2 anliegt, werden die Transferdaten 215 in die Adresse eingeschrieben, die durch das Bit 216-1 niedriger Ordnung der Transferadresse 216 bezeichnet wird. Wenn das Treffersignal 4235 des Arrays 1 vorliegt, wählt der Selektor 4222 das Ausgangssignal 4241 des ersten Datenarrays aus; anderenfalls wählt der Selektor 4222 das Ausgangssignal 4242 des zweiten Datenarrays aus. Das ausgewählte Ergebnis wird auf den Datenbus 110 gesetzt. Wenn eine Eintraganforderung 124 oder eine Schreibanforderung 125 anliegt, enthält der Arrayauswahlspeicher 4209 die Informationen darüber, in welchem der Arrays 1 und 2 die Daten eingeschrieben sind. Die Transferdaten 215 vom Hauptspeicher werden in das Array 2 eingeschrieben, wenn die vorhergehenden Daten in das Array 1 eingeschrieben wurden, und sie werden in das Array 1 eingeschrieben, wenn die vorhergehenden Daten in das Array 2 eingeschrieben wurden. Die Schreibdaten 211 des gespeicherten Befehls, die von der Befehlseinheit übertragen wurden, werden in das Array 1 oder das Array 2 eingeschrieben, in dem ein Treffer erfaßt wurde. In diesem Fall wird die im Arrayauswahlspeicher 4209 enthaltene Information ignoriert.
  • Was nun folgt, ist eine Beschreibung, wie die Schreibsignale 4237 und 4239 für das Array 1 und die Schreibsignale 4238 und 4240 für das Array 2 erzeugt werden. Der Arrayauswahlspeicher 4209 gibt die Daten der Adresse, die durch das Bit 216-1 niedriger Ordnung der Transferadresse 216 bezeichnet wird, an die Inverterschaltung 4217. Wenn eine Schreibanforderung 125 anliegt, wird der Wert des Treffersignals 4235 für das Array 1, in die Adresse eingeschrieben, die durch das Bit 210-1 niedriger Ordnung der Leseadresse 210 bezeichnet wird. Wenn eine Eintraganforderung 124 anliegt, wird der Wert des Arrayauswahlsignals 4243 in die Adresse eingeschrieben, die durch das Bit 216-1 niedriger Ordnung der Transferadresse 216 bezeichnet wird. Die Inverterschaltung 4217 gibt das Arrayauswahlsignal 4243 ans, wenn kein Ausgangssignal des Arrayauswahlspeichers 4209 anliegt. Das UND-Gatter 4210 gibt das eiste Schreibsignal 4237 für das Array 1 aus, wenn sowohl die Schreibanforderung 125 als auch das Treffersignal 4235 für das Array 1 vorliegen. Das UND-Gatter 4211 gibt das erste Schreibsignal 4238 für das Array 2 aus, wenn die Schreibanforderung 125 anliegt, während kein Treffersignal 4235 für das Array 1 vorliegt. Gleichermaßen gibt das UND-Gatter 4212 das zweite Schreibsignal 4239 für das Array 1 aus, wenn sowohl die Eintraganforderung 124 als auch das Arrayauswahlsignal 4243 vorliegen. Das UND-Gatter 4213 gibt das zweite Schreibsignal 4240 für das Array 2 aus, wenn die Eintraganforderung 124 anliegt, während kein Arrayauswahlsignal 4243 vorliegt.
  • Der Cache-Speicher der Fig. 24 vom Zweiwege-Satz-assoziativen Typ ist nicht so massiv wie der Cache-Speicher der Fig. 9 vom voll assoziativen Typ und weist doch eine größere Kapazität auf. Die Blockgröße von bis zu 32 Byte ermöglicht es, daß gleichzeitig eine große Datenmenge vom Hauptspeicher übertragen wird. Wenn Daten mit fortlaufenden Adressen zu verarbeiten sind, wird daher eine wesentlich kleinere Anzahl von Prefetch-Anweisungen benötigt, um eine erste Datenmenge vom Hauptspeicher zum zweiten Cache-Speicher zu übertragen. Die Datenverarbeitungsleistung steigt dadurch an.
  • Die Fig. 16 zeigt die allgemeine Ansicht einer zweiten Ausführungsform der vorliegenden Erfindung. Von den Komponenten der zweiten Ausführungsform der Fig. 16 sind diejenigen, die mit ihren Gegenstücken in der Ausführungsform der Fig. 1 identisch sind, mit den gleichen Bezugszeichen bezeichnet. Die zweite Ausführungsform ist dadurch gekennzeichnet, daß sie zwei Adressbusse 3510 und 3513 und vier Datenbusse 3511, 3512, 3514 und 3515 aufweist. Dieser Aufbau ermöglicht es, daß zwei Speicherverweisbefehle parallel verarbeitet werden können.
  • Die zweite Ausführungsform der Fig. 16 umfaßt eine Befehlseinheit 3501, eine Speichereinheit 3502 und einen Hauptspeicher 3503.
  • Die Befehlseinheit 3501, eine Einheit zum Ausführen von Anweisungen, umfaßt einen Befehls-Cache-Speicher 3601, ein Speicherinterface 3602 und eine Recheneinheit 3620. Die Befehlseinheit 3501 tauscht über die Busse 3510 bis 3512 und 3513 bis 3515 Daten mit einem ersten und einem zweiten Cache-Speicher 101 und 3940 aus. Das heißt, daß die Befehlseinheit 3501 über die Adressbusse 3510 und 3513, die vier Byte breiten Schreibdatenbusse 3511 und 3514 und eine Steuersignalleitung 3516 Adressen, Daten und Steuersignale an die Speichereinheit 3502 und den Hauptspeicher 3503 sendet.
  • Die Speichereinheit 3502 wird durch den ersten Cache-Speicher 101, den zweiten Cache-Speicher 3490, Selektoren 104 und 3495 zur Eingabe/Ausgabe dieser Daten und einen Steuerabschnitt mit einer Steuereinheit 3492 gebildet. Der erste Cache-Speicher 101 ist im Aufbau dem ersten Cache-Speicher der ersten Ausführungsform der Fig. 1 gleich; der erste Cache-Speicher 101 ist ein Ein-Port-Cache-Speicher mit großer Kapazität. Der zweite Cache-Speicher 3490 ist ein Drei-Port-Cache-Speicher kleiner Kapazität. Die Speichereinheit 3502 sendet über die vier Byte breiten Lesedatenbusse 3512 und 3515 sowie über eine Wartesignalleitung 3517 Daten und ein Wartesignal zur Befehlseinheit 3501 und überträgt über Anforderungssignalleitungen 3523 und 3524 ein Anforderungssignal an den Hauptspeicher 3503.
  • Der Hauptspeicher 3503 speichert Befehle und Daten und überträgt über die Busse 3520 und 3521 Daten zum ersten Cache-Speicher 101 und zum zweiten Cache-Speicher 3490. Das heißt, daß der Hauptspeicher 3503 über den Datentransferbus 3520, den Adressentransferbus 3521 und die Antwortsignalleitung 3522 Daten, Adressen und ein Antwortsignal an die Speichereinheit 3502 überträgt.
  • Der von der Befehlseinheit 3501 der Fig. 16 verarbeitete Operationscode hat das gleiche Format wie der Operationscode der Fig. 12. Die verarbeiteten Arten von Anweisungen sind die gleichen wie in der Fig. 13.
  • Die Fig. 18 zeigt den Aufbau der Befehlseinheit 3501 in der Fig. 16. In der Fig. 18 bezeichnet das Bezugszeichen 3601 einen Befehls-Cache-Speicher; 3603 einen Dekoder; 3602 ein Speicherinterface; 3605 ein Register; 3606 eine ALU; und 3641 und 3642 sind Adressenaddierer. Der Befehls-Cache-Speicher 3601 überträgt über einen Bus 3607 einen Befehl an den Dekoder 3603 und an das Speicherinterface 3602. Der Dekoder 3603 dekodiert den erhaltenen Befehl und steuert durch ein Signal 3630 das Register 3605; die ALU 3606 und die Adressenaddierer 3641 und 3642. Die ALU 3606 nimmt über die Busse 3612 und 3613 Daten aus dem Register 3605 auf, führt an den Daten Operationen aus und schreibt das Operationsergebnis über einen Bus 3614 in das Register 3605 ein. Der erste Adressenaddierer 3641 nimmt durch Busse 3610 und 3611 Daten aus dem Register 3605 auf, addiert die Daten und gibt das Ergebnis als Lade- oder Speicheradresse auf den Bus 3513. Für eine Speicheroperation werden die zu speichernden Daten aus dem Register 3605 ausgelesen und auf den Bus 3514 gegeben. Für eine Ladeoperation werden die ausgelesenen Daten über den Bus 3515 aufgenommen und in das Register 3605 eingeschrieben. Gleichermaßen liest der zweite Adressenaddierer 3642 über die Busse 3614 und 3615 Daten aus dem Register 3605 aus, führt an den Daten eine Addieroperation durch und setzt das Ergebnis der Operation als Adresse für eine Lade- oder Speicheroperation auf den Bus 3510. Für eine Speicheroperation werden die zu speichernden Daten aus dem Register 3605 ausgelesen und auf den Bus 3511 gesetzt. Für eine Ladeoperation werden die ausgelesenen Daten über den Bus 3512 aufgenommen und in das Register 3605 eingeschrieben.
  • Das Speicherinterface 302 gibt bei der Ausführung der Befehle LD, ST, PF1 und, PF2 ein Steuersignal 3616 aus und nimmt ein Wartesignal 3517 auf. Wenn das Wartesignal 3517 auf 1 gesetzt ist, wird an den Dekoder 3603 ein Signal 3608 ausgegeben, um die Pipelineoperation zu stoppen, bis das Wartesignal 3517 zu 0 wird.
  • Die Fig. 19 zeigt eine Darstellung zur Erläuterung der Pipelineoperation, wenn der Datenprozessor der Fig. 18 Befehle ausführt. In der Fig. 19 bezeichnet IF eine Befehlszuführstufe; D ist eine Dekoderstufe; E ist eine Operations- und Adressenaddierstufe; A ist eine Cachezugriffsstufe; W ist eine Registerschreibstufe; R ist eine Cachezugriffs-Wiederholstufe; und X ist eine Wartestufe. Wenn zwei Ladebefehle (Anweisungen 1 und 2) parallel verarbeitet werden, bewirkt die Anweisung 1, daß gleichzeitig in der Stufe A auf den ersten und den zweiten Cache-Speicher zugegriffen wird, während die Anweisung 2 bewirkt, daß in der Stufe A nur auf den zweiten Cache-Speicher allein zugegriffen wird. Auf einen Treffer im zweiten Cache-Speicher hin bewirkt die Anweisung 1, daß die aus dem zweiten Cache-Speicher ausgelesenen Daten in der Stufe W in das Register eingeschrieben werden. Wenn im zweiten Cache-Speicher ein Treffer vorliegt, bewirkt die Anweisung 2, daß die aus dem zweiten Cache-Speicher ausgelesenen Daten in der Stufe W in das Register eingeschrieben werden. Die Anweisung 3 bewirkt, daß in der Stufe A gleichzeitig auf den ersten und den zweiten Cache-Speicher zugegriffen wird, und die Anweisung 4 bewirkt, daß in der Stufe A nur auf den zweiten Cache-Speicher zugegriffen wird. Nach einem Treffer im zweiten Cache-Speicher bewirkt die Anweisung 3, daß die aus dem zweiten Cache-Speicher ausgelesenen Daten in der Stufe W in das Register eingeschrieben werden. Wenn im zweiten Cache-Speicher kein Treffer vorliegt, bewirkt die Anweisung 4, daß in der Stufe R auf den ersten Cache-Speicher zugegriffen wird, um die ausgelesenen Daten in der Stufe W in das Register einzuschreiben. Wenn die Anweisungen 5 und 6 parallel verarbeitet werden, bewirkt die Anweisung 5, daß in der Stufe A gleichzeitig auf den ersten und den zweiten Cache-Speicher zugegriffen wird, während die Anweisung 6 bewirkt, daß in der Stufe A nur auf den zweiten Cache-Speicher allein zugegriffen wird. Bei einem Treffer im ersten Cache-Speicher bewirkt die Anweisung 5, daß die aus dem ersten Cache-Speicher ausgelesenen Daten in der Stufe W in das Register eingeschrieben werden. Bei einem Treffer im zweiten Speicher bewirkt die Anweisung 6, daß die aus dem zweiten Cache-Speicher ausgelesenen Daten in der Stufe W in das Register eingeschrieben werden. Wenn die Anweisungen 7 und 8 parallel verarbeitet werden sollen, bewirkt die Anweisung 7, daß in der Stufe A gleichzeitig auf den ersten und den zweiten Cache-Speicher zugegriffen wird, während die Anweisung 8 bewirkt, daß nur auf den zweiten Cache-Speicher allein zugriffen wird. Bei einem Treffer im ersten Cache-Speicher bewirkt die Anweisung 7, daß die aus dem ersten Cache-Speicher ausgelesenen Daten in der Stufe W in das Register eingeschrieben werden. Bei einem Nicht-Treffer im zweiten Cache-Speicher bewirkt die Anweisung 8, daß in der Stufe R auf den ersten Cache-Speicher zugegriffen wird, um in der Stufe W die ausgelesenen Daten in das Register einzuschreiben.
  • Die Pipeline-Operation bei der Ausführung der Speicheroperation ist die gleiche wie bei der Ausführung des Ladebefehls. Das heißt, daß die Cache-Speicher in der Stufe A oder R auf einen Treffer geprüft werden. Im Falle eines Treffers werden die Daten in der Stufe A oder R in den jeweiligen Cache-Speicher eingeschrieben.
  • Wie beschrieben werden zwei Speicherverweisbefehle parallel verarbeitet, wenn der zweite Befehl zu einem Treffer im zweiten Cache-Speicher führt. Wenn der PF2- Befehl dazu verwendet wird, Daten zum zweiten Cache-Speicher zu übertragen, werden daher immer zwei Speicherverweisbefehle parallel ausgeführt, wodurch die Verarbeitungsleistung ansteigt.
  • Die Fig. 17 zeigt den Aufbau der Speichereinheit 3502 in der Fig. 16. In der Fig. 117 bezeichnet das Bezugszeichen 101 einen ersten Cache-Speicher; 3490 ist ein zweiter Cache-Speicher; 102 eine Vier-Eintrag-Prefetch-Warteschlange; 3403 eine Steuerschaltung; und 104, 3540, 3542, 3531 und 3534 sind Selektoren.
  • Der erste Cache-Speicher 101 nimmt an seinem Eingang eine Adresse 3430, Transferdaten 3520, ein Selektorsteuersignal 3423, ein Schreibsignal 3422 und Schreibdaten 3544 auf und gibt Lesedaten 3412 und ein Treffersignal 3413 aus. Der zweite Cache- Speicher 3490 nimmt Adressen 3510 und 3513, eine Transferadresse 3521, Transferdaten 3520, ein Eintragsignal 3424, Schreibsignale 3425 und 3426 und Schreibdaten 3511 und 3514 auf und gibt Lesedaten 3410 und 3512 und Treffersignale 3411 und 3481 aus. Die Prefetch-Warteschlange 102 nimmt ein Cache-Auswahlsignal 3533, die Transferadresse 3521, eine Adresse 3530, ein Setzsignal 120 und ein Rücksetzsignal 121 auf und gibt ein Vollsignal 114, ein Treffersignal 115 und ein Cache-Auswahlsignal 116 ab.
  • Die Steuerschaltung 3403 nimmt von der Befehlseinheit Steuersignale 3516-3 und 3516-4 auf, von der Prefetch-Warteschlange 102 das Vollsignal 114, das Treffersignal 115 und das Cache-Auswahlsignal 116; vom Hauptspeicher das Antwortsignal 3522; vom zweiten Cache-Speicher 3490 die Treffersignale 3411 und 3481; und vom ersten Cache- Speicher das Treffersignal 3413. Die Steuerschaltung 3403 gibt andererseits an die Befehlseinheit das Wartesignal 3517; an die Prefetch-Warteschlange 102 das Setzsignal 120; das Rücksetzsignal 121 und ein Auswahlsignal 3532; an den Hauptspeicher die Anforderungssignale 3523 und 3524; an den zweiten Cache-Speicher 3490 das Eintragsignal 3424 und die Schreibsignale 3425 und 3526; an den ersten Cache-Speicher 101 das Schreibsignal 3422 und das Selektorsteuersignal 3423; und an die Selektoren 3540 und 3542 die Selektorsteuersignale 3423 und 3427 ab.
  • Der Selektor 104 nimmt vom zweiten Cache-Speicher 3490 die Daten 3410 und das Treffersignal 3411 auf und vom ersten Cache-Speicher 101 die Daten 3412 und das Treffersignal 3413. Wenn das Treffersignal 3411 anliegt, liest der Selektor 104 die Daten 3410 aus und gibt sie ab, die sich auf dem Datenbus 3515 befinden; wenn das Treffersignal 3413 anliegt, liest der Selektor 104 die Daten 3412 aus und gibt sie ab, die sich auch auf dem Datenbus 3515 befinden. Unter der Steuerung der Selektorsteuersignale 3423 und 3427 wählt der Selektor 3540 unter der Adresse 3513, der Adresse 3510 und der Transferadresse 3521 eine aus. Die ausgewählte Adresse wird als Selektor-Ausgangssignal 3430 zum ersten Cache-Speicher 101 geschickt. Unter der Steuerung des Selektorsteuersignals 3427 wählt der Selektor 3542 entweder die Schreibdaten 3514 oder die Schreibdaten 3511 aus. Die ausgewählten Daten werden als das Selektor-Ausgangssignal 3544 zum ersten Cache- Speicher 101 geschickt Der Selektor 3531 wählt unter der Steuerung des Auswahlsignals 3532 entweder die Adresse 3513 oder die Adresse 3510 aus. Die ausgewählte Adresse wird als Selektor-Ausgangssignal 3530 zu der Prefetch-Warteschlange 102 geschickt. Der Selektor 3534 wählt unter der Steuerung durch das Auswahlsignal 3532 entweder das Satzauswahlsignal 3516-1 oder das Satzauswahlsignal 3516-2 aus. Das ausgewählte Signal wird als Selektor-Ausgangssignal 3533 zur Prefetch-Warteschlange 102 geschickt.
  • Wenn das Schreibsignal 3422 eine Leseoperation aus dem ersten Cache-Speicher 101 bezeichnet, wird aus dem ersten Cache-Speicher 101 der Inhalt der Adresse 3430 ausgelesen; und vom ersten Cache-Speicher 101 werden die Lesedaten 3412 und das Treffersignal 3413 ausgegeben. Wenn das Schreibsignal 3422 eine Schreiboperation für den ersten Cache-Speicher 101 bezeichnet, werden, wenn das Selektorsteuersignal 3423 gleich 1 ist, die Transferdaten 3520 in den ersten Cache-Speicher 101 eingeschrieben, beziehungsweise es wird, wenn das Selektorsteuersignal 3423 gleich 0 ist, der Inhalt der Schreibdaten 3544 in den ersten Cache-Speicher 101 eingeschrieben.
  • Wenn das Schreibsignal 3425 negativ ist und eine Leseoperation aus dem zweiten Cache-Speicher 3490 bezeichnet, wird der Cache-Speicher nach dem Inhalt der Adresse 3513 durchsucht. Die entsprechend ausgelesenen Daten 3410 und das Treffersignal 3411 werden dann vom zweiten Cache-Speicher 3490 ausgegeben. Wenn das Schreibsignal 3425 anliegt und eine Schreiboperation für den zweiten Cache-Speicher 3490 bezeichnet, wird der Cache-Speicher nach einem Treffer durchsucht. Im Falle eines Treffers wird der Inhalt des Schreibdatenbusses 3514 in den zweiten Cache-Speicher 3490 eingeschrieben. Gleichermaßen wird, wenn das Schreibsignal 3426 negativ ist und eine Leseoperation aus dem zweiten Cache-Speicher 3490 bezeichnet, der zweite Cache-Speicher nach dem Inhalt der Adresse 3510 durchsucht. Die entsprechend ausgelesenen Daten 3512 und das Treffersignal 3481 werden dann vom zweiten Cache-Speicher 3490 ausgegeben. Wenn das Schreibsignal 3426 anliegt und eine Schreiboperation für den zweiten Cache-Speicher 3490 bezeichnet, wird der zweite Cache-Speicher nach einem Treffer durchsucht. Im Falle eines Treffers wird der Inhalt des Schreibdatenbusses 3511 in den zweiten Cache-Speicher 3490 eingeschrieben. Wenn das Eintragsignal 3424 gleichzeitig mit der obigen Operation anliegt, wird die zu den Transferdaten 3520 gehörende Transferadresse 3521 eingegeben.
  • Die Prefetch-Warteschlange 102 kann bis zu vier Einträge für Datenadressen aufnehmen, die vom Hauptspeicher übertragen werden. Wenn das Setzsignal 120 anliegt, werden die Adresse 3530 und der Inhalt des Cache-Auswahlsignals 3533 in die Warteschlange 102 eingegeben. Wenn das Rücksetzsignal 121 anliegt, wird aus der Warteschlange das der Transferadresse 3521 entsprechende Cache-Auswahlsignal 116 ausgegeben und der entsprechende Eintrag gelöscht. Wenn ein Vergleich der Adresse 3530 mit der intern festgehaltenen Adresse ergibt, daß der entsprechende Eintrag vom Hauptspeicher zu übertragen ist, wird das Treffersignal 115 ausgegeben. Wenn die festgehaltenen Adressen für alle Einträge gelten, wird das Vollsignal 114 ausgegeben, das diesen Zustand anzeigt.
  • Die Fig. 22 zeigt den Aufbau der Steuerschaltung 3403 in der Fig. 17. Die Steuerschaltung 3403 dekodiert hinsichtlich des ersten Befehls das Steuersignal 3516-3 und hinsichtlich des zweiten Befehls das Steuersignal 3516-4 und akzeptiert den Start eines der Befehle LD, ST, PF1 und PF2. Wenn der erste Befehl LD ist und wenn weder das Treffersignal 3413 vom ersten Cache-Speicher noch das erste Treffersignal 3411 vom zweiten Cache-Speicher anliegt, heißt das, daß in beiden Cache-Speichern kein Treffer vorliegt. In diesem Fall wird das Wartesignal 4001 des ersten Befehls ausgegeben, so daß die Befehlseinheit wartet, während die Daten vom Hauptspeicher übertragen werden. Wenn der erste Befehl LD, PF 1 oder PF2 ist und weder das Treffersignal 3413 vom ersten Cache-Speicher noch das erste Treffersignal 3411 vom zweiten Cache-Speicher anliegen auch auch das Treffersignal 115 von der Prefetch-Warteschlange fehlt, jedoch das Vollsignal 114 davon anliegt, heißt das, daß die Prefetch-Warteschlange voll ist und keine weiteren Befehle mehr in die Warteschlange aufgenommen werden können. In diesem Fall wird das Wartesignal 4001 für den ersten Befehl ausgegeben, sö daß die Befehlseinheit wartet, bis die Prefetch- Warteschlange leer ist. Wenn der erste Befehl LD, PF1 oder PF2 ist und weder das Treffersignal 3413 vom ersten Cache-Speicher noch das erste Treffersignal 3411 vom zweiten Cache-Speicher anliegen und sowohl das Treffersignal 115 wie auch das Vollsignal 114 von der Prefetch-Warteschlange fehlen, wird das Übertragungsanforderungssignal 3523 an den Hauptspeicher ausgegeben. Gleichzeitig werden sowohl das Auswahlsignal 3532 und das Setzsignal 120 an die Prefetch-Warteschlange ausgegebenen und der erste Befehl in die Prefetch-Warteschlange eingegeben. Wenn der erste Befehl ST ist und wenn das Treffersignal 3413 vom ersten Cache-Speicher anliegt, wird das Schreibsignal 3422 für den ersten Cache-Speicher ausgegeben, so daß die entsprechenden Daten in den ersten Cache- Speicher eingeschrieben werden. Wenn der erste Befehl ST ist und wenn das erste Treffersignal 3411 vom zweiten Cache-Speicher anliegt, wird das erste Schreibsignal 3425 für den zweiten Cache-Speicher ausgegeben, so daß die entsprechenden Daten in den zweiten Cache-Speicher eingeschrieben werden.
  • Wenn der zweite Befehl LD, ST, PF1 oder PF2 ist und wenn das zweite Treffersignal 3481 vom zweiten Cache-Speicher nicht anliegt, ist es erforderlich, im nächsten Zyklus auf den ersten Cache-Speicher zuzugreifen. Es wird daher das Wartesignal 4002 des zweiten Befehls ausgegeben. Der Zugriff auf den ersten Cache-Speicher durch den zweiten Befehl erfolgt, nachdem der Zugriff auf den Cache-Speicher durch den ersten Befehl beendet ist und das Wartesignal 4001 des ersten Befehls auf Null geht. Ein UND-Gatter 4011 gibt ein Steuersignal 4003 aus, wenn das Wartesignal 4001 des ersten Befehls auf Null geht und das Wartesignal 4002 des zweiten Befehls anliegt. Ein Register 4012 gibt einen Zyklus nach der Ausgabe des Steuersignals 4003 das Auswahlsignal 3427 an den ersten Cache-Speicher aus. Wenn das Auswahlsignal 3427 gleich 1 ist, wird durch den zweiten Befehl auf den ersten Cache-Speicher zugegriffen, und der erste Befehl wird daran gehindert, auf irgendeinen Cache-Speicher zuzugreifen.
  • Wenn der zweite Befehl LD ist und das Auswahlsignal 3427 für den ersten Cache- Speicher anliegt, das Treffersignal 3413 für den ersten Cache-Speicher jedoch nicht vorliegt, heißt das, daß in keinen der beiden Cache-Speicher ein Treffer vorliegt. In diesem Fall wird das Wartesignal 4002 des zweiten Befehls ausgegeben, so daß die Befehlseinheit wartet, während die Daten vom Hauptspeicher übertragen werden.
  • Wenn der zweite Befehl LD, PF1 oder PF2 ist und das Auswahlsignal 3427 für den ersten Cache-Speicher anliegt, das Treffersignal 3413 für den ersten Cache-Speicher jedoch nicht vorliegt und auch kein Treffersignal 115 von der Prefetch-Warteschlange vorliegt, sondern das Vollsignal 114 davon, heißt das, daß die Prefetch-Warteschlange voll ist und kein weiterer Befehl mehr in die Warteschlange aufgenommen werden kann. In diesem Fall wird das Wartesignal 4002 des zweiten Befehls ausgegeben, so daß die Befehlseinheit wartet, bis die Prefetch-Warteschlange wieder leer ist.
  • Wenn der zweite Befehl LD, PF1 oder PF2 ist und das Auswahlsignal 3427 für den ersten Cache-Speicher anliegt, das Treffersignal 3413 für den ersten Cache-Speicher jedoch nicht vorliegt und auch kein Treffersignal 115 und kein Vollsignal 114 von der Prefetch-Warteschlange, wird das Übertragungsanforderungssignal 3523 an den Hauptspeicher ausgegebenen. Gleichzeitig wird das Setzsignal 120 für die Prefetch-Warteschlange ausgegeben und der zweite Befehl in die Prefetch-Warteschlange eingegeben.
  • Wenn der Befehl ST ist und das Auswahlsignal 3427 für den ersten Cache-Speicher anliegt sowie das Treffersignal 3413 für den ersten Cache-Speicher, wird das Schreibsignal 3422 für den ersten Cache-Speicher ausgegeben, so daß die entsprechenden Daten darin eingeschrieben werden. Wenn der zweite Befehl ST ist und das zweite Treffersignal 3481 für den zweiten Cache-Speicher anliegt, wird das zweite Schreibsignal 3426 für den zweiten Cache-Speicher ausgegeben, so daß die entsprechenden Daten dort eingeschrieben werden.
  • Ein ODER-Gatter 4013 gibt das Wartesignal 3517 an die Befehlseinheit aus, wenn entweder das Wartesignal 4001 des ersten Befehls oder das Wartesignal 4002 des zweiten Befehls anliegt.
  • Wenn das Antwortsignal 3522 vom Hauptspeicher anliegt, wird das Rücksetzsignal 121 an die Prefetch-Warteschlange ausgegebenen, so daß in der Prefetch-Warteschlange 102 der entsprechende Eintrag zurückgesetzt wird. Gleichzeitig wird das Cache- Auswahlsignal 116 geprüft, um zu sehen, ob das Signal eine Schreiboperation für den ersten Cache-Speicher anzeigt. Wenn das Cache-Auswahlsignal 116 eine Schreiboperation für den ersten Cache-Speicher bezeichnet, wird das Schreibsignal 3422 und das Auswahlsignal 3423 an den ersten Cache-Speicher ausgegeben. Wenn das Cache-Auswahlsignal 116 eine Schreiboperation für den zweiten Cache-Speicher anzeigt, wird das Eintragsignal 3424 für den zweiten Cache-Speicher ausgegeben.
  • Die Fig. 20 zeigt den Aufbau des zweiten Cache-Speichers 3490 in der Fig. 17. Der Cache-Speicher der Fig. 20 ist ein Cache-Speicher vom voll assoziativen Typ mit einer Blockgröße von 4 Byte und einer Kapazität von 256 Byte. In der Fig. 20 bezeichnet das Bezugszeichen 3800 eine Beurteilungsschaltung, und 3801 bis 3803 bezeichnen Zellen, die Kombinationen von Gültigkeitsbits, Adressen und Daten enthalten. Die Zellen 3801 bis 3803 nehmen die Leseadressen 3513 und 3510, die Eintraganforderung 3424, die Schreibdaten 3514 und 3511 und die Schreibanforderungen 3425 und 3426 auf und geben die Daten 3410 und 3512 aus. Die Zellen 3801 bis 3803 geben auch die Treffersignale 3810 bis 3812 und 3820 bis 3822 an die Beurteilungsschaltung 3800 ans. Die Zelle 3801 nimmt die Transferadresse 3521 und die Transferdaten 3520 auf und gibt die Adresse 3813 und die Daten 3814 an die Zelle 3802 weiter. Gleichermaßen gibt die Zelle 3802 die Adresse 38115 und die Daten 3816 weiter. Die letzte Zelle 3803 nimmt die Adresse 3817 und die Daten 3818 auf.
  • Die Beurteilungsschaltung 3800 gibt das Treffersignal 3411 aus, wenn eines der Treffersignale 3810 bis 3812 von den Zellen 3801 bis 3803 anliegt. Gleichermaßen gibt die Beurteilungsschaltung 3800 das Treffersignal 3481 aus, wenn eines der Treffersignale 3820 bis 3822 von den Zellen 3801 bis 3803 anliegt. Die Zelle 3801 vergleicht die Leseadresse 3513 mit der intern festgehaltenen Adresse. Wenn die beiden Adressen übereinstimmen und gültig sind, gibt die Zelle 3801 das Treffersignal 3810 aus und setzt die entsprechenden, intern festgehaltenen Daten auf den Bus 3410. Wenn die Schreibanforderung 3425 anliegt, vergleicht die Zelle 3801 die intern festgehaltene Adresse mit der Adresse 3513. Wenn die beiden Adressen übereinstimmen und das Gültigkeitsbit anliegt, führt die Zelle 3801 den Inhalt der Schreibdaten 3514 zu. Gleichermaßen vergleicht die Zelle 3801 die Leseadresse 3510 mit der intern festgehaltenen Adresse. Wenn die beiden Adressen übereinstimmen und gültig sind, gibt die Zelle 3801 das Treffersignal 3820 aus und setzt die entsprechenden, intern festgehaltenen Daten auf den Bus 3512. Wenn die Schreibanforderung 3426 anliegt, vergleicht die Zelle 3801 die intern festgehaltene Adresse mit der Adresse 3510. Wenn die beiden Adressen übereinstimmen und das Gültigkeitsbit anliegt, führt die Zelle 3801 den Inhalt der Schreibdaten 3511 zu. Wenn parallel zu den obigen Operationen die Eintraganforderung 3424 anliegt, gibt die Zelle 3801 das Gültigkeitsbit aus und führt die Transferadresse 3521 und die Transferdaten 3520 zu. Dabei führt die Zelle 3802 über die Signale 3813 und 3814 die Adresse und die Daten zu, die von der Zelle 3801 festgehalten werden. Das heißt, daß die Zellen 3801 bis 3803 eine FIFO-Struktur bilden.
  • Die Fig. 21 zeigt den Aufhau der Zelle 3801 in der Fig. 20. In der Fig. 21 bezeichnen die Bezugszeichen 3900, 3901 und 3902 Register zum Festhalten eines Gültigkeitsbits, einer Adresse bzw. von Daten; 3904 und 3914 bezeichnen Komparatoren; 3905, 3906, 3915 und 3916 bezeichnen UND-Gatter; und 3903 und 3913 bezeichnen Dreizustandspuffer. Die Eintraganforderung 3424 ist mit dem Register 3900 zum Festhalten eines Gültigkeitsbits, dem Register 3901 zum Festhalten einer Adresse und dem Register 3902 zum Festhalten von Daten verbunden. Wenn die Eintraganforderung 3424 anliegt, wird das Gültigkeitsbit 3900 gesetzt, das Register 3901 führt die Transferadresse 3521 zu, und das Register 3902 führt die Transferdaten 3520 zu. Der Komparator 3904 vergleicht die Adresse 3513 mit dem Ausgangssignal 3813 des Registers zum Festhalten einer Adresse. Wenn das Ausgangssignal des Komparators 3904 und auch das Gültigkeitsbit vorliegt, gibt das UND-Gatter 3906 das Treffersignal 3810 aus und öffnet den Dreizustandspuffer 3903, um den Inhalt des Datenregisters auf den Datenbus 3410 auszugeben. Wenn das UND-Gatter 3905 feststellt, daß das Treffersignal 3810 und die Schreibanforderung 3425 anliegen, gibt es an das Datenregister 3902 das Signal 3908 aus, das das Register 3902 zum Zuführen der Schreibdaten 3514 veranlaßt. Gleichermaßen vergleicht der Komparator 3914 die Adresse 3510 mit dem Ausgangssignal 3813 des Adressenregisters. Wenn das Ausgangssignal des Komparators 3914 und auch das Gültigkeitsbit vorliegt, gibt das UND-Gatter 3916 das Treffersignal 3820 aus und öffnet den Dreizustandspuffer 3913, um den Inhalt des Datenregisters auf den Datenbus 3512 auszugeben. Wenn das UND-Gatter 3915 feststellt, daß das Treffersignal 3820 und die Schreibanforderung 3426 anliegen, gibt es an das Datenregister 3902 das Signal 3918 aus, das das Register 3902 zum Zuführen der Schreibdaten 3511 veranlaßt.
  • Wie oben beschrieben ist der Cache-Speicher der Fig. 20 ein Cache-Speicher vom voll assoziativen Typ, der den Zugriff durch zwei Speicherverweisbefehle und die Schreiboperation zum Übertragen von Daten vom Hauptspeicher parallel verarbeitet. Trotz des komplizierten Aufbaus zum Ausführen dieser Funktionen weist der Cache-Speicher der Fig. 38 eine geringe Gesamtgröße auf, da seine Kapazität nur 256 Byte beträgt. Das heißt, daß der Cache-Speicher mit hoher Geschwindigkeit arbeiten kann.
  • Die Fig. 25 zeigt die allgemeine Ansicht einer dritten Ausführungsform der vorliegenden Erfindung. Von den Komponenten der dritten Ausführungsform der Fig. 25 sind diejenigen, die mit ihren Gegenstücken in der Ausführungsform der Fig. 1 identisch sind, mit den gleichen Bezugszeichen bezeichnet. Die dritte Ausführungsform ist dadurch gekennzeichnet, daß ihre Speichereinheit 4402 ein Register 4380 zum Festhalten von Informationen über den ST-Befehl aufweist. Diese Anordnung ermöglicht es, daß eine Cache- Treffer-Beurteilung am ST-Befehl und ein Datenschreibvorgang in verschiedenen Maschinenzyklen ausgeführt werden können. Dadurch verringert sich die Zeit, die zum Verarbeiten des ST-Befehls pro Maschinenzyklus erforderlich ist, und entsprechend erhöht sich die Betriebsfrequenz.
  • Die dritte Ausführungsform der Fig. 25 umfaßt eine Befehlseinheit 201, die Speichereinheit 4402 und einen Hauptspeicher 203.
  • Die Befehlseinheit 201 ist im Aufbau die gleiche wie bei der Ausführungsform der Fig. 1.
  • Die Speichereinheit 4402 umfaßt den ersten Cache-Speicher 101, einen zweiten Cache-Speicher 4390 und einen Steuerabschnitt mit Selektoren 104 und 4395 sowie einer Speichereinheit 4392 zum Austauschen von Daten mit dem ersten und dem zweiten Cache- Speicher. Der erste Cache-Speicher 101 ist ein Ein-Port-Cache-Speicher mit großer Kapazität, er ist im Aufbau dem ersten Cache-Speicher der ersten Ausführungsform der Fig. 1 gleich. Der zweite Cache-Speicher 4390 weist drei Ports zum parallelen Verarbeiten des Zugriffs durch einen Speicherverweisbefehl, das Einschreiben von Daten durch den ST- Befehl und das Einschreiben von Transferdaten aus dem Hauptspeicher auf. Die Speichereinheit 4402 sendet über einen vier Byte breiten Lesedatenbus 212 und über eine Wartesignalleitung 214 Daten und ein Wartesignal zur Befehlseinheit 201 und überträgt über eine Anforderungssignalleitung 218 ein Anforderungssignal an den Hauptspeicher 203.
  • Der Hauptspeicher 203 weist den gleichen Aufbau wie der Hauptspeicher der Ausführungsform der Fig. 1 auf.
  • Der von der Befehlseinheit 201 der Fig. 25 verarbeitete Operationscode hat das gleiche Format wie der Operationscode der Fig. 12. Die verarbeiteten Arten von Anweisungen sind die gleichen wie in der Fig. 13.
  • Die Fig. 27(a), 27(b), 27(c) und 27(d) zeigen Darstellungen zur Erläuterung der Pipelineoperation, wenn der Datenprozessor der Fig. 25 Anweisungen ausführt. In den Fig. 27(a) bis 27(d) bezeichnet IF eine Befehlszuführstufe; D ist eine Dekodierstufe; E ist eine Operations- und Adressenaddierstufe; A ist eine Cache-Zugriffsstufe; W ist eine Registerschreibstufe; R ist eine Cache-Zugriffs-Wiederholstufe; X ist eine Wartestufe; und S ist eine ST-Befehl-Datenschreibstufe. Im Gegensatz zu der Pipelineoperation der Fig. 4 wird das Einschreiben von Daten durch den ST-Befehl bei der Pipelineoperation der Fig. 27(a) bis 27(d) nicht in der Stufe A, sondern in der Stufe S ausgeführt.
  • Wie in der Fig. 27(a) gezeigt, greift der Befehl 1 in der Stufe A gleichzeitig auf den ersten und den zweiten Cache-Speicher zu. Bei einem Treffer im zweiten Cache-Speicher bewirkt der Befehl 1, daß die entsprechenden Daten in der Stufe S in den zweiten Cache- Speicher eingeschrieben werden. In der Stufe A greift der Befehl 2 gleichzeitig auf den ersten und den zweiten Cache-Speicher zu. Das Auslesen der Daten aus dem zweiten Cache-Speicher durch den Befehl 2 erfolgt im gleichen Zyklus wie dem, in dem die Daten durch den Befehl 1 in den zweiten Cache-Speichen eingeschrieben werden, wobei der zweite Cache-Speicher das Auslesen der Daten durch den LD-Befehl und das Einschreiben der Daten durch den ST-Befehl in einem einzigen Maschinenzyklus erlaubt. Das heißt, daß die Verarbeitung des Befehls 2 ohne zusätzlichen Zeitaufwand erfolgt.
  • Bei einem Treffer im zweiten Cache-Speicher bewirkt der Befehl 2, daß die aus dem zweiten Cache-Speicher ausgelesenen Befehle in der Stufe W in das Register eingeschrieben werden. Wie in der Fig. 27(b) gezeigt, greift der Befehl 1 in der Stufe A gleichzeitig sowohl auf den ersten wie auch den zweiten Cache-Speicher zu. Nach einem Treffer im zweiten Cache-Speicher bewirkt der Befehl 1, daß die entsprechenden Daten in der Stufe S in den zweiten Cache-Speicher eingeschrieben werden. Der Befehl 2 greift in der Stufe A gleichzeitig auf den ersten und den zweiten Cache-Speicher zu. Das Auslesen der Daten aus dem zweiten Cache-Speicher durch den Befehl 2 erfolgt im gleichen Zyklus wie dem, in dem die Daten durch den Befehl 1 in den zweiten Cache-Speicher eingeschrieben werden, wobei der zweite Cache-Speicher das Auslesen der Daten durch den LD-Befehl und das Einschreiben der Daten durch den ST-Befehl in einem einzigen Maschinenzyklus erlaubt. Das heißt, daß die Verarbeitung des Befehls 2 ohne zusätzlichen Zeitaufwand erfolgt. Nach einem Treffer im ersten Cache-Speicher bewirkt der Befehl 2, daß die aus dem ersten Cache-Speicher ausgelesenen Daten in der Stufe W in das Register eingeschrieben werden.
  • Wie in der Fig. 27(c) gezeigt, greift der Befehl 1 in der Stufe A gleichzeitig auf den ersten und den zweiten Cache-Speicher zu. Bei einem Treffer im ersten Cache-Speicher bewirkt der Befehl 1, daß die entsprechenden Daten in der Stufe S in den ersten Cache- Speicher eingeschrieben werden. In der Stufe A greift der Befehl 2 nur auf den zweiten Cache-Speicher allein zu. Da das Auslesen der Daten aus dem ersten Cache-Speicher durch den Befehl 2 nicht im gleichen Zykluserfolgen kann, in dem die Daten durch den Befehl 1 in den ersten Cache-Speicher eingeschrieben werden, wird in der Stufe A nicht auf den ersten Cache-Speicher zugegriffen. Nach einem Treffer im zweiten Cache- Speicher bewirkt der Befehl 2, daß die aus dem zweiten Cache-Speicher ausgelesenen Daten in der Stufe W in das Register eingeschrieben werden, ohne daß auf den ersten Cache- Speicher zugegriffen wird.
  • Wie in der Fig. 27(d) gezeigt, greift der Befehl 1 in der Stufe A gleichzeitig auf den ersten und den zweiten Cache-Speicher zu. Bei einem Treffer im ersten Cache-Speicher bewirkt der Befehl 1, daß die entsprechenden Daten in der Stufe S in den ersten Cache- Speicher eingeschrieben werden. In der Stufe A greift der Befehl 2 nur auf den zweiten Cache-Speicher allein zu. Da das Auslesen der Daten aus dem ersten Cache-Speicher durch den Befehl 2 nicht im gleichen Zyklus erfolgen kann, in dem die Daten durch den Befehl 1 in den ersten Cache-Speicher eingeschrieben werden, wird in der Stufe A nicht auf den ersten Cache-Speicher zugegriffen. Nach einem Nicht-Treffer im zweiten Cache- Speicher greift der Befehl 2 in der Stufe R auf den ersten Cache-Speicher zu. Bei einem Treffer im ersten Cache-Speicher infolge des Zugriffs darauf in der Stufe R werden die aus dem ersten Cache-Speicher ausgelesenen Daten in der Stufe W in das Register eingeschrieben.
  • Wenn die Trefferprüfung des ST-Befehls und das Einschreiben der Daten dafür in verschiedenen Stufen ausgeführt werden, verringert sich das Ausmaß der Verarbeitung pro Stufe, und die Verarbeitungsgeschwindigkeit erhöht sich. Wenn der ST-Befehl einen Treffer im zweiten Cache-Speicher erhält, wird der nächste LD-Befehl ohne Zeitverzögerung ausgeführt. Das heißt, daß, wenn der PF2-Befehl zum Übertragen von Daten vorab in den zweiten Cache-Speicher verwendet wird, die Verarbeitung immer ohne zusätzlichen Zeitaufwand ausgeführt wird, wodurch die Leistungsfähigkeit ansteigt.
  • Die Fig. 26 zeigt den Aufbau der Speichereinheit 4402 in der Fig. 25. In der Fig. 26 bezeichnet das Bezugszeichen 101 einen ersten Cache-Speicher; 4390 ist ein zweiter Cache-Speicher; 102 eine Vier-Eintrag-Prefetch-Warteschlange; 4303 eine Steuerschaltung; 104 und 4440 sind Selektoren; und 4431 und 4432 sind Register.
  • Der erste Cache-Speicher 101 nimmt eine Adresse 4330, Transferdaten 215, ein Selektorsteuersignal 4323, ein Schreibsignal 4322 und Schreibdaten 4444 auf und gibt Lesedaten 3212 und rein Treffersignal 4313 aus. Der zweite Cache-Speicher 4390 nimmt eine Leseadresse 210, eine Schreibadresse 4413, eine Transferadresse 216, Transferdaten 215, ein Eintragsignal 4324, ein Schreibsignal 4325 und die Schreibdaten 4444 auf und gibt Lesedaten 4310 und ein Treffersignal 4311 aus. Die Prefetch-Warteschlange 102 nimmt ein Cache-Auswahlsignal 213-1, die Transferadresse 216, die Adresse 210, ein Setzsignal 120 und ein Rücksetzsignal 121 auf und gibt ein Vollsignal 114, ein Treffersignal 115 und ein Cache-Auswahlsignal 116 ab.
  • Die Steuerschaltung 4303 nimmt von der Befehlseinheit ein Steuersignal 213-2 auf; von der Prefetch-Warteschlange 102 das Vollsignal 114, das Treffersignal 115 und das Cache-Auswahlsignal 116; vom Hauptspeicher das Antwortsignal 217; vom zweiten Cache-Speicher 4390 das Treffersignal 4311; und vom ersten Cache-Speicher das Treffersignal 4313. Die Steuerschaltung 4303 gibt andererseits an die Befehlseinheit das Wartesignal 214; an die Prefetch-Warteschlange 102 das Setzsignal 120 und das Rücksetzsignal 121; an den Hauptspeicher das Transferanforderungssignal 218; an den zweiten Cache- Speicher 4390 das Eintragsignal 4324 und das Schreibsignal 4325; an den ersten Cache- Speicher 101 das Schreibsignal 4322 und das Selektorsteuersignal 4323; und an den Selektor 4440 die Selektorsteuersignale 4323 und 4327 aus.
  • Der Selektor 104 nimmt vom zweiten Cache-Speicher die Daten 4310 und das Treffersignal 4311 auf und vom ersten Cache-Speicher 101 die Daten 4312 und das Treffersignal 4313. Wenn das Treffersignal 4311 anliegt, liest der Selektor 104 die Daten 4310 aus und gibt die Daten 4310 ab, die auf den Lesedatenbus 212 gesetzt werden; wenn das Treffersignal 4313 anliegt, liest der Selektor 104 die Daten 4312 aus und gibt die Daten 4312 ab, die auch auf den Lesedatenbus 212 gesetzt werden. Unter der Steuerung der Selektorsteuersignale 4323 und 4327 wählt der Selektor 4440 aus der Adresse 210, der Adresse 4413 und der Transferadresse 216 eine aus. Die ausgewählte Adresse wird als Selektor- Ausgangssignal 4330 zum ersten Cache-Speicher 101 geschickt.
  • Wenn das Schreibsignal 4322 eine Leseoperation aus dem ersten Cache-Speicher 101 bezeichnet, wird aus dem ersten Cache-Speicher 101 der Inhalt der Adresse 4330 ausgelesen. Die ausgelesenen Daten 4312 werden zusammen mit dem Treffersignal 4313 ausgegeben. Wenn das Schreibsignal 4322 eine Schreiboperation für den ersten Cache- Speicher 101 bezeichnet, werden, wenn das Selektorsteuersignal 4323 gleich 1 ist, die Transferdaten 215 in den ersten Cache-Speicher 101 eingeschrieben, beziehungsweise es wird, wenn das Selektorsteuersignal 4323 gleich 0 ist, der Inhalt der Schreibdaten 4444 in den ersten Cache-Speicher 101 eingeschrieben.
  • Der zweite Cache-Speicher 4390 wird auf den Inhalt der Adresse 210 geprüft. Die entsprechend ausgelesenen Daten 4310 und das Treffersignal 4311 werden dann vom zweiten Cache-Speicher 4390 ausgegeben. Wenn das Schreibsignal 4325 anliegt und eine Schreiboperation bezeichnet, wird der zweite Cache-Speicher 4390 auf den Inhalt der Adresse 4413 geprüft. Im Falle eines Treffers wird der Inhalt des Datenbusses 4444 in den zweiten Cache-Speicher 4390 eingeschrieben. Wenn das Eintragsignal 4324 parallel zu der obigen Operation anliegt, wird die zu den Transferdaten 215 gehörende Transferadresse 216 in den zweiten Cache-Speicher 4390 eingegeben.
  • Die Operation der Prefetch-Warteschlange 102 in der Fig. 26 ist die gleiche wie die der Prefetch-Warteschlange 102 in der Fig. 2.
  • Das Register 4431 nimmt die Schreibdaten 211 auf und setzt sie im nächsten Zyklus auf den Datenbus 4444. Das Register 4432 nimmt die Adresse 210 auf und setzt sie, im nächsten Zyklus auf den Bus 4413.
  • Die Fig. 30 zeigt den Aufbau der Steuerschaltung 4303 in der Fig. 26. Die Steuerschaltung 4303 dekodiert das Steuersignal 213-2 und akzeptiert den Start eines der Befehle LD, ST, PF1 und PF2. Das Steuersignal 4327 bezeichnet das Einschreiben von Speicherdaten in den ersten Cache-Speicher. Wenn das Steuersignal 4327 auf 1 gesetzt ist, kann auf den ersten Cache-Speicher nicht durch einen anderen Befehl zugegriffen werden. Wenn das Steuersignal 4327 auf 1 gesetzt ist und der Befehl LD, ST, PF1 oder PF2 ausgeführt wird und kein Treffersignal 4311 vom zweiten Cache-Speicher anliegt, wird das Wartesignal 214 ausgegeben, da im nächsten Zyklus auf den ersten Cache-Speicher zugegriffen werden muß. Wenn das Steuersignal 4327 auf 0 gesetzt ist und der Befehl LD ausgeführt wird und weder das Treffersignal 4313 vom ersten Cache-Speicher noch das Treffersignal 4311 vom zweiten Cache-Speicher anliegt, heißt das, daß in beiden Cache-Speichern kein Treffer vorliegt. Es wird deshalb das Wartesignal 214 ausgegeben, so daß die Befehlseinheit wartet, während die Daten vom Hauptspeicher übertragen werden. Wenn das Steuersignal 4327 auf 0 gesetzt ist und der Befehl LD, PF1 oder PF2 ausgeführt wird, heißt das, wenn weder das Treffersignal 4313 vom ersten Cache-Speicher noch das Treffersignal 4311 vom zweiten Cache-Speicher anliegt und auch das Treffersignal 115 von der Prefetch-Warteschlange fehlt, jedoch deren Vollsignal 114 anliegt, daß die Prefetch- Warteschlange voll ist und kein weiterer Befehl in die Warteschlange eingefügt werden kann. In diesem Fall wird das Wartesignal 214 ausgegeben, so daß der Befehl wartet, bis die Prefetch-Warteschlange wieder leer ist. Wenn das Steuersignal 4327 auf 0 gesetzt ist und der Befehl LD, PF1 oder PF2 ausgeführt wird, wird, wenn das Treffersignal 4313 vom ersten Cache-Speicher und das Treffersignal 4311 vom zweiten Cache-Speicher beide nicht anliegen und wenn auch das Treffersignal 115 und das Vollsignal 114 von der Prefetch-Warteschlange nicht anliegen, das Übertragungsanforderungssignal 218 an den Hauptspeicher ausgegebenen. Gleichzeitig wird das Setzsignal 120 für die Prefetch-Warteschlange ausgegeben und ein Eintrag in die Prefetch-Warteschlange gemacht. Wein das Steuersignal 4327 auf 0 gesetzt ist und der Befehl ST ausgeführt wird und das Treffersignal 4313 vom ersten Cache-Speicher anliegt, wird ein Steuersignal 4801 ausgegeben. Wenn das Steuersignal 4801 ausgegeben wird, gibt der Register 4811 im nächsten Zyklus das Steuersignal 4327 aus. Wenn das Steuersignal 4327 ausgegeben wird, gibt das ODER- Gatter 4813 das Schreibsignal 4322 an den ersten Cache-Speicher. Dadurch werden die Daten in den ersten Cache-Speicher eingeschrieben. Wenn bei der Ausführung des ST- Befehls das Treffersignal 4311 vom zweiten Cache-Speicher ausgegeben wird, wird gleichermaßen ein Steuersignal 4802 ausgegeben. Mit der Ausgabe des Steuersignals 4802 gibt das Register 4812 im nächsten Zyklus das Schreibsignal 4325 an den zweiten Cache- Speicher aus. Dadurch werden die Daten in den zweiten Cache-Speicher eingeschrieben.
  • Wenn das Antwortsignal 217 vom Hauptspeicher anliegt, wird das Rücksetzsignal 121 an die Prefetch-Warteschlange 102 ausgegebenen, so daß in der Warteschlange der entsprechende Eintrag zurückgesetzt wird. Gleichzeitig wird das Cache-Auswahlsignal 116 geprüft, um zu sehen, ob es eine Schreiboperation für den ersten Cache-Speicher anzeigt. Wenn das Cache-Auswahlsignal 116 eine Schreiboperation für den ersten Cache-Speicher bezeichnet, werden das Schreibsignal 4322 und das Auswahlsignal 4323 an den ersten Cache-Speicher ausgegeben. Wenn das Cache-Auswahlsignal 116 eine Schreiboperation für den zweiten Cache-Speicher anzeigt, wird das Eintragsignal 4324 für den zweiten Cache- Speicher ausgegeben. Die Transferdaten werden darin in den ausgewählten Cache-Speicher eingegeben.
  • Die Fig. 28 zeigt den Aufbau des zweiten Cache-Speichers 4390 in der Fig. 26. Der Cache-Speicher der Fig. 28 ist ein Cache-Speicher vom voll assoziativen Typ mit einer Blockgröße von 4 Byte und einer Kapazität von 256 Byte. In der Fig. 28 bezeichnet das Bezugszeichen 4600 eine Beurteilungsschaltung, und 4601 bis 4603 bezeichnen Zellen, die Kombinationen von Gültigkeitsbits, Adressen und Daten enthalten. Die Zellen 4601 bis 4603 nehmen die Leseadresse 210, die Schreibadresse 4413, die Eintraganforderung 4324, die Schreibdaten 4444 und die Schreibanforderung 4325 auf und geben die Daten 4310 aus. Die Zellen 4601 bis 4603 geben auch die Treffersignale 4610 bis 4612 an die Beurteilungsschaltung 4600 aus. Die Zelle 4601 nimmt die Transferadresse 216 und die Transferdaten 215 auf und gibt die Adresse 4613 und die Daten 4614 an die Zelle 4602 aus. Gleichermaßen gibt die Zelle 4602 die Adresse 4615 und die Daten 4616 an die nächste Zelle weiter. Die letzte Zelle 4612 nimmt die Adresse 4617 und die Daten 4618 auf.
  • Die Beurteilungsschaltung 4600 gibt das Treffersignal 4311 aus, wenn eines der Treffersignale 4610 bis 4612 anliegt. Die Zelle. 4601 vergleicht die Leseadresse 210 mit der intern festgehaltenen Adresse. Wenn die beiden Adressen übereinstimmen und gültig sind, gibt die Zelle 4601 das Treffersignal 4610 aus und setzt die entsprechenden, intern festgehaltenen Daten auf den Bus 4310. Wenn die Schreibanforderung 4325 anliegt, vergleicht die Zelle 4601 die Schreibadresse 4413 mit der intern festgehaltenen Adresse. Wenn die beiden Adressen übereinstimmen und das Gültigkeitsbit anliegt, führt die Zelle 4601 den Inhalt der Schreibdaten 4444 zu. Wenn parallel zu den obigen Operationen die Eintraganforderung 4324 anliegt, gibt die Zelle 4601 das Gültigkeitsbit aus und führt die Transferadresse 216 und die Transferdaten 215 zu. Dabei führt die Zelle 4602 über die Signale 4613 und 4614 die Adresse und die Daten zu, die von der Zelle 4601 festgehalten werden. Das heißt, daß die Zellen 4601 bis 4603 eine FIFO-Struktur bilden.
  • Die Fig. 29 zeigt den Aufbau der Zelle 4601 in der Fig. 28. In der Fig. 29 bezeichnen die Bezugszeichen 4700; 4701 und 4702 Register zum Festhalten eines Gültigkeitsbits, einer Adresse bzw. von Daten; 4704 und 4714 bezeichnen Komparatoren; 4706, 4715 und 4716 bezeichnen UND-Gatter; und 4703 ist ein Dreizustandspuffer. Die Eintraganforderung 4324 ist mit dem Register 4700 zum Festhalten eines Gültigkeitsbits, dem Register 4701 zum Festhalten einer Adresse und dem Register 4702 zum Festhalten von Daten verbunden. Wenn die Eintraganforderung 4324 anliegt, wird das Gültigkeitsbit 4700 gesetzt, das Adressenregister 4701 führt die Transferadresse 216 zu, und das Datenregister 4702 führt die Transferdaten 215 zu. Der Komparator 4704 vergleicht die Leseadresse 210 mit dem Ausgangssignal 4613 des Adressenregisters. Wenn das Ausgangssignal des Komparators 4704 und auch das Gültigkeitsbit vorliegt, gibt das UND-Gatter 4706 das Treffersignal 4610 aus und öffnet den Dreizustandspuffer 4703, um den Inhalt des Datenregisters auf den Datenbus 4310 auszugeben. In der Zwischenzeit vergleicht der Komparator 4714 die Schreibadresse 4413 mit dem Ausgangssignal 4613 des Adressenregisters. Wenn das Ausgangssignal des Komparators 4714 und auch das Gültigkeitsbit anliegen, gibt das UNI)- Gatter 4716 das Treffersignal 4720 aus. Wenn das Treffersignal 4720 und die Schreibanforderung 4325 anliegen, gibt das UND-Gatter 4715 das Signal 4718 an das Datenregister 4702 aus, um die Schreibdaten 4444 in das Datenregister 4702 einzugeben.
  • Wie oben beschrieben ist der Cache-Speicher der Fig. 28 ein Cache-Speicher vom voll assoziativen Typ, der den Zugriff durch zwei Speicherverweisbefehle, das Einschreiben von Daten durch den ST-Befehl und das Einschreiben der vom Hauptspeicher übertragenen Daten parallel verarbeitet. Trotz des komplizierten Aufbaus zum Ausführen dieser Funktionen weist der Cache-Speicher der Fig. 28 eine geringe Gesamtgröße auf, da seine Kapazität nur 256 Byte beträgt. Das heißt, daß der Cache-Speicher mit hoher Geschwindigkeit arbeiten kann.

Claims (6)

1. Datenprozessor mit
(a) einem Hauptspeicher (203) zum Speichern von Daten und Befehlen;
(b) einem Befehlsprozessor (201) zum Verarbeiten der Daten entsprechend den Befehlen;
(c) einem Cache-Speicherteil, der nur Daten speichert und der zwischen den Hauptspeicher und den Befehlsprozessor geschaltet ist, wobei der Cache-Speicherteil einen ersten Cache-Speicher (101) und einen zweiten Cache-Speicher (100) umfaßt, dessen Speicherkapazität kleiner oder gleich der Speicherkapazität des ersten Cache-Speichers ist;
dadurch gekennzeichnet, daß
der erste Cache-Speicher (101) einen einzigen Port, der zweite Cache-Speicher (100) zwei oder mehr Ports und der Datenprozessor zusätzlich folgendes aufweist:
(d) einen zum Cache-Speicherteil gehörenden Controller (1600, 104) zur Aufnahme von Informationen zur Angabe auszuführender Befehle und einer Adresse vom Befehlsprozessor und zur Auswahl des ersten oder des zweiten Cache-Speichers entsprechend den Informationen und der Adresse sowie zum Speichern von Daten im ausgewählten Cache- Speicher; und
(e) wobei der Controller so eingerichtet ist, daß er entweder den ersten oder zweiten Cache-Speicher so steuert, daß Daten darin gespeichert werden, wobei Daten mit hoher Zugriffsfrequenz im ersten Cache-Speicher (101) und Daten mit niedriger Zugriffsfrequenz im zweiten Cache-Speicher (100) gespeichert werden.
2. Datenprozessor nach Anspruch 1, wobei der erste Cache-Speicher (101) ein Direktabbildungscache-Speicher ist.
3. Datenprozessor nach Anspruch 1, wobei der zweite Cache-Speicher (100) ein voll assoziativer Cache-Speicher ist.
4. Datenprozessor nach Anspruch 1, wobei der zweite Cache-Speicher (100) so eingerichtet ist, daß er in einem Arbeitszyklus sowohl die Übertragung von Daten vom Hauptspeicher (203) als auch den Verweis auf Daten im zweiten Cache-Speicher (100), wie durch den Befehlsprozessor (201) bestimmt, vornimmt.
5. Datenprozessor nach Anspruch 1, wobei der Controller eine Prefetch- Warteschlange zum Speichern mindestens einer Adresse der vom Hauptspeicher (203) übertragenen Daten und einen Steuerprozessor (1600) umfaßt, der so eingerichtet ist, daß er den Datenzugriff entsprechend der aufgenommenen Adresse auf den ersten oder zweiten Cache-Speicher steuert.
6. Datenprozessor nach Anspruch 5, wobei die Prefetch-Warteschlange so eingerichtet ist, daß sie eine Schreibinformation speichert, die das Einschreiben von Prefetch-Daten in den ersten Cache-Speicher (101) oder den zweiten Cache-Speicher (100) bestimmt.
DE69432133T 1993-08-05 1994-08-03 Datenprozessor mit Cache-Speicher Expired - Lifetime DE69432133T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP19448293 1993-08-05
JP5240937A JPH0793218A (ja) 1993-09-28 1993-09-28 セットアソシアティブキャッシュメモリを有するデータ処理装置

Publications (2)

Publication Number Publication Date
DE69432133D1 DE69432133D1 (de) 2003-03-27
DE69432133T2 true DE69432133T2 (de) 2003-11-27

Family

ID=26508524

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69432133T Expired - Lifetime DE69432133T2 (de) 1993-08-05 1994-08-03 Datenprozessor mit Cache-Speicher

Country Status (3)

Country Link
US (6) US5848432A (de)
EP (3) EP1901170A1 (de)
DE (1) DE69432133T2 (de)

Families Citing this family (40)

* 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
US6199154B1 (en) 1997-11-17 2001-03-06 Advanced Micro Devices, Inc. Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access
US6163830A (en) * 1998-01-26 2000-12-19 Intel Corporation Method and apparatus to identify a storage device within a digital system
US6347363B1 (en) * 1998-02-17 2002-02-12 International Business Machines Corporation Merged vertical cache controller mechanism with combined cache controller and snoop queries for in-line caches
US6484027B1 (en) * 1998-06-15 2002-11-19 Sbc Technology Resources, Inc. Enhanced wireless handset, including direct handset-to-handset communication mode
US6243791B1 (en) * 1998-08-13 2001-06-05 Hewlett-Packard Company Method and architecture for data coherency in set-associative caches including heterogeneous cache sets having different characteristics
US6470427B1 (en) * 1999-11-09 2002-10-22 International Business Machines Corporation Programmable agent and method for managing prefetch queues
US6393522B1 (en) * 2000-01-27 2002-05-21 Ati International Srl Method and apparatus for cache memory management
US6492881B2 (en) * 2001-01-31 2002-12-10 Compaq Information Technologies Group, L.P. Single to differential logic level interface for computer systems
US6668306B2 (en) * 2001-06-12 2003-12-23 Intel Corporation Non-vital loads
US6961804B2 (en) * 2001-07-20 2005-11-01 International Business Machines Corporation Flexible techniques for associating cache memories with processors and main memory
US6801982B2 (en) * 2002-01-24 2004-10-05 International Business Machines Corporation Read prediction algorithm to provide low latency reads with SDRAM cache
US20030233533A1 (en) * 2002-06-13 2003-12-18 M-Systems Flash Disk Pioneers Ltd. Boot from cache
JP4234361B2 (ja) * 2002-06-28 2009-03-04 富士通株式会社 記憶制御装置およびデータ格納方法
JP2004086682A (ja) * 2002-08-28 2004-03-18 Fujitsu Ltd 機能ブロック設計方法および機能ブロック設計装置
EP1486875A1 (de) * 2003-06-12 2004-12-15 STMicroelectronics Limited Erlaubnis eine Vielzahl von mehrere gleichzeitigen Zugriffen auf einen Cache-Speicher
JP4536361B2 (ja) * 2003-11-28 2010-09-01 株式会社日立製作所 データ転送装置、記憶デバイス制御装置、記憶デバイス制御装置の制御方法
US20060031639A1 (en) * 2004-08-06 2006-02-09 International Business Machines Corporation Write unmodified data to controller read cache
US7260686B2 (en) * 2004-08-17 2007-08-21 Nvidia Corporation System, apparatus and method for performing look-ahead lookup on predictive information in a cache memory
US7200693B2 (en) * 2004-08-27 2007-04-03 Micron Technology, Inc. Memory system and method having unidirectional data buses
US7716424B2 (en) * 2004-11-16 2010-05-11 International Business Machines Corporation Victim prefetching in a cache hierarchy
JP4134179B2 (ja) * 2005-02-04 2008-08-13 株式会社ソニー・コンピュータエンタテインメント ソフトウエアによる動的予測方法および装置
US7209405B2 (en) 2005-02-23 2007-04-24 Micron Technology, Inc. Memory device and method having multiple internal data buses and memory bank interleaving
US20070028027A1 (en) * 2005-07-26 2007-02-01 Micron Technology, Inc. Memory device and method having separate write data and read data buses
US8230175B1 (en) * 2005-08-09 2012-07-24 Hewlett-Packard Development Company, L.P. Data throughput optimization of a storage device having sequential data access
JP2007193439A (ja) * 2006-01-17 2007-08-02 Toshiba Corp 不揮発性キャッシュメモリを用いる記憶装置とその制御方法
US20090006813A1 (en) * 2007-06-28 2009-01-01 Abhishek Singhal Data forwarding from system memory-side prefetcher
KR101312281B1 (ko) * 2007-11-06 2013-09-30 재단법인서울대학교산학협력재단 프로세서 및 메모리 제어 방법
US9405683B2 (en) * 2007-11-06 2016-08-02 Samsung Electronics Co., Ltd. Processor and memory control method for allocating instructions to a cache and a scratch pad memory
US20100077145A1 (en) * 2008-09-25 2010-03-25 Winkel Sebastian C Method and system for parallel execution of memory instructions in an in-order processor
US8433880B2 (en) 2009-03-17 2013-04-30 Memoir Systems, Inc. System and method for storing data in a virtualized high speed memory system
US9442846B2 (en) * 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
WO2011075167A1 (en) * 2009-12-15 2011-06-23 Memoir Systems,Inc. System and method for reduced latency caching
JP5528987B2 (ja) * 2010-11-11 2014-06-25 ピーエスフォー ルクスコ エスエイアールエル 半導体装置
US20120173921A1 (en) * 2011-01-05 2012-07-05 Advanced Micro Devices, Inc. Redundancy memory storage system and a method for controlling a redundancy memory storage system
US10248329B2 (en) * 2014-04-08 2019-04-02 Fujitsu Technology Solutions Intellectual Property Gmbh Method of improving access to a main memory of a computer system, a corresponding computer system and a computer program product
TWI553483B (zh) * 2014-10-13 2016-10-11 瑞昱半導體股份有限公司 處理器及存取記憶體的方法
FR3086409A1 (fr) * 2018-09-26 2020-03-27 Stmicroelectronics (Grenoble 2) Sas Procede de gestion de la fourniture d'informations, en particulier des instructions, a un microprocesseur et systeme correspondant
US20220197649A1 (en) * 2020-12-22 2022-06-23 Advanced Micro Devices, Inc. General purpose register hierarchy system and method
CN112631517B (zh) * 2020-12-24 2021-09-03 北京百度网讯科技有限公司 数据存储方法、装置、电子设备和存储介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3618041A (en) * 1968-10-31 1971-11-02 Hitachi Ltd Memory control system
JPS6036616B2 (ja) 1977-06-24 1985-08-21 株式会社日立製作所 複合型バツフアメモリ
US4701844A (en) * 1984-03-30 1987-10-20 Motorola Computer Systems, Inc. Dual cache for independent prefetch and execution units
US4718039A (en) 1984-06-29 1988-01-05 International Business Machines Intermediate memory array with a parallel port and a buffered serial port
US5185878A (en) * 1988-01-20 1993-02-09 Advanced Micro Device, Inc. Programmable cache memory as well as system incorporating same and method of operating programmable cache memory
JPH01280850A (ja) 1988-05-06 1989-11-13 Hitachi Ltd キヤツシユ装置およびそれを用いた情報処理装置
US5179679A (en) * 1989-04-07 1993-01-12 Shoemaker Kenneth D Apparatus and method for permitting reading of data from an external memory when data is stored in a write buffer in the event of a cache read miss
US5226133A (en) * 1989-12-01 1993-07-06 Silicon Graphics, Inc. Two-level translation look-aside buffer using partial addresses for enhanced speed
DE69132201T2 (de) 1990-03-27 2000-12-28 Compaq Computer Corp., Houston Speicher-Anordnung und Verfahren mit Vorausholungspuffer
US5261066A (en) * 1990-03-27 1993-11-09 Digital Equipment Corporation Data processing system and method with small fully-associative cache and prefetch buffers
US5317718A (en) 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
US5784711A (en) * 1990-05-18 1998-07-21 Philips Electronics North America Corporation Data cache prefetching under control of instruction cache
EP0457403B1 (de) * 1990-05-18 1998-01-21 Koninklijke Philips Electronics N.V. Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür
US5835945A (en) * 1990-08-06 1998-11-10 Ncr Corporation Memory system with write buffer, prefetch and internal caches
DE69224084T2 (de) * 1991-01-15 1998-07-23 Koninkl Philips Electronics Nv Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
JPH05143451A (ja) 1991-11-20 1993-06-11 Kisaburo Nakazawa データ処理装置
US5375216A (en) * 1992-02-28 1994-12-20 Motorola, Inc. Apparatus and method for optimizing performance of a cache memory in a data processing system
JPH07506921A (ja) * 1992-03-06 1995-07-27 ランバス・インコーポレーテッド コンピュータ・システムにおける主記憶装置のアクセス時間とキャッシュ・メモリのサイズを最小限にするためのキャッシュへの先取り
US5361391A (en) * 1992-06-22 1994-11-01 Sun Microsystems, Inc. Intelligent cache memory and prefetch method based on CPU data fetching characteristics
US5404484A (en) * 1992-09-16 1995-04-04 Hewlett-Packard Company Cache system for reducing memory latency times
JPH0756815A (ja) * 1993-07-28 1995-03-03 Internatl Business Mach Corp <Ibm> キャッシュ動作方法及びキャッシュ
US5848432A (en) * 1993-08-05 1998-12-08 Hitachi, Ltd. Data processor with variable types of cache memories

Also Published As

Publication number Publication date
US6587927B2 (en) 2003-07-01
US6275902B1 (en) 2001-08-14
EP0637800B1 (de) 2003-02-19
US20010037432A1 (en) 2001-11-01
US20050102472A1 (en) 2005-05-12
EP1901170A1 (de) 2008-03-19
US20070233959A1 (en) 2007-10-04
EP1256879A2 (de) 2002-11-13
US20030204676A1 (en) 2003-10-30
EP0637800A2 (de) 1995-02-08
US7240159B2 (en) 2007-07-03
EP1256879A3 (de) 2005-02-09
US5848432A (en) 1998-12-08
DE69432133D1 (de) 2003-03-27
US6848027B2 (en) 2005-01-25
EP0637800A3 (de) 1995-07-19

Similar Documents

Publication Publication Date Title
DE69432133T2 (de) Datenprozessor mit Cache-Speicher
DE69708188T2 (de) Speichersteuerungseinheit
DE69514165T2 (de) Mehrstufige Cache-Speicheranordnung
DE69331448T2 (de) Dataprozessor mit einem Cachespeicher
DE69327387T2 (de) An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung
DE19983793B4 (de) System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher
DE60222402T2 (de) Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher
DE69323790T2 (de) Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
DE69518676T2 (de) Cache-Speicheranordnung für einen Speicher
DE69721209T2 (de) Pufferreservierungsverfahren für ein Busbrückensystem
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE69715328T2 (de) System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen
DE69701078T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedener Prozessoren
DE69130086T2 (de) Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
DE69427421T2 (de) Speichersteuereinheit mit hohem Grade der Gleichzeitigkeit und Arbeitsteilung
DE10085373B4 (de) Verfahren zum Flushen von Cache-Zeilen
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE69029173T2 (de) Mikroprozessor
DE69937611T2 (de) Intelligenter Puffer-Speicher
DE3852695T2 (de) Multiprozessorsystem mit mehreren Speichern.
DE4218003A1 (de) Sekundaeres cache-speichersystem
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE112010003758T5 (de) Instruktionen zum Verwalten einer parallelen Cache-Hierarchie
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition