DE4132833A1 - Hierarchischer schaltungsintegrierter cache-speicher - Google Patents

Hierarchischer schaltungsintegrierter cache-speicher

Info

Publication number
DE4132833A1
DE4132833A1 DE4132833A DE4132833A DE4132833A1 DE 4132833 A1 DE4132833 A1 DE 4132833A1 DE 4132833 A DE4132833 A DE 4132833A DE 4132833 A DE4132833 A DE 4132833A DE 4132833 A1 DE4132833 A1 DE 4132833A1
Authority
DE
Germany
Prior art keywords
data
memory
cache
primary
inputs
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE4132833A
Other languages
English (en)
Other versions
DE4132833C2 (de
Inventor
Ricky C Hetherington
Francis X Mackeen
Joseph D Marci
Tryggve Fossum
Joel S Emer
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.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of DE4132833A1 publication Critical patent/DE4132833A1/de
Application granted granted Critical
Publication of DE4132833C2 publication Critical patent/DE4132833C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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 allgemein Cache-Speicher und insbesondere einen schaltungsintegrierten Speicher, der speziell für die Durchführung von Cache-Speicherfunktio­ nen ausgelegt ist. Insbesondere betrifft die vorliegende Erfindung eine integrierte Schaltung, die einen Speicher mit hoher Geschwindigkeit, einen Speicher mit niedrigerer Geschwindigkeit aber größerer Speicherkapazität und verbin­ dende Datenwegschaltungen zum Aufbauen eines hierarchischen Cache-Speichers aufweist.
Auf dem Gebiet des Hochgeschwindigkeits-Computings ist die Prozessorgeschwindigkeit im allgemeinen durch die Speicher­ leistungsfähigkeit bzw. -geschwindigkeit begrenzt. Eine CPU führt z. B. Befehle mit einer vorgegebenen Rate bzw. Geschwindigkeit aus. Ähnlich führt der Hauptspeicher Lese- und Schreiboperationen mit einer zweiten vorgegebenen Ge­ schwindigkeit aus, die typischerweise zumindest eine Größen­ ordnung langsamer ist als die CPU-Ausführungsgeschwindig­ keit. Wenn die CPU auf den Hauptspeicher direkt während der Ausführung von Speicherzugriffsbefehlen bzw. Instruktio­ nen zugreift, verschlechtert sich die CPU-Leistungsfähig­ keit auf die Speicherzugriffsgeschwindigkeit. In diesem Fall ist die CPU blockiert bzw. im Stillstand, während sie darauf wartet, daß der Hauptspeicher ihren Zugriffszyklus für jeden Speicherzugriffsbefehl beendet.
Es ist möglich, einen speziell ausgelegten Speicher zu kon­ struieren, der eine Zykluszeit hat, die ungefähr gleich der Befehlszykluszeit der CPU ist. Diese speziell ausgeleg­ ten Speicher setzen jedoch statische Hochgeschwindigkeits­ RAMs ein, die sehr viel teurer sind, als typische dynami­ sche RAMs, die in dem Hauptspeicher eingesetzt werden. Dem­ entsprechend gehen viele Computersysteme den Kompromiß ein, einen relativ kleinen Cache-Speicher mit hoher Geschwin­ digkeit einzusetzen, während der langsamere Halbleiterspei­ cher in dem Hauptspeicher verbleibt.
Der Cache wird unter Hardwaresteuerung so kontrolliert, daß eine Kopie eines Teils des Hauptspeicherinhalts festge­ halten wird, die wahrscheinlich von der CPU verwendet wird. Solange wie die CPU auf jene Speicherstellen zugreift, die in dem Cache festgehalten sind, arbeitet die CPU mit voller Geschwindigkeit. Natürlich ist es unvermeidbar, daß die CPU gelegentlich versucht, eine Speicherstelle zu lesen, die nicht im Cache vorhanden ist. Während dieser Fehlzugrif­ fe werden die Daten aus dem Hauptspeicher geholt und in den Cache gespeichert. Deshalb verschlechtert sich die CPU- Geschwindigkeit auf der Hauptspeicherzugriffsgeschwindig­ keit während der Fehlzugriffe, aber die Fehlzugriffe sind relativ selten, so daß die Gesamtgeschwindigkeit des Prozes­ sors durch den Einsatz des Hochgeschwindigkeits-Cache er­ höht wird.
Vor kurzem sind Prozessoren eingeführt worden, die Arbeits­ geschwindigkeiten haben, welche weit über den Zugriffszei­ ten typischer statischer RAM-Speicher liegen. Diese Prozes­ soren haben z. B. Zykluszeiten unter 10 Nanosekunden. Da eine solche schnelle Arbeitsgeschwindigkeit nur im geringen Umfang an die Zugriffszeit von statischen RAM-Cache-Spei­ chern angepaßt ist, sind diese Prozessoren mit Cache-Spei­ chern auf dem Chip (on chip) versehen, die ein zusätzliches Speicherniveau zwischen dem Prozessor und dem Cache-Spei­ cher darstellen. Die Cache-Speicher auf dem Chip eliminie­ ren eine Datenübertragungsverzögerung zwischen den Chips, aber sie sind notwendigerweise in der Speicherkapazität be­ schränkt, und zwar ist die Speicherkapazität sehr viel ge­ ringer als die Kapazität eines einzelnen Chips, der nur Hochgeschwindigkeitsspeicher enthält. Deshalb führt die relativ hohe Fehlzugriffsrate des on-chip-Cache zu einer wesentlichen Begrenzung der Prozessorleistungsfähigkeit, und zwar bezüglich der Ungleichheit zwischen der Ausfüh­ rungsgeschwindigkeit bzw. Arbeitsgeschwindigkeit der CPU und der Zugriffszeit des statischen RAM-Cache.
Die Ungleichheit in der Geschwindigkeit zwischen dem Hochge­ schwindigkeitsprozessor und dem statischen RAM-Cache-Spei­ cher hat Cache-Designer dazu bewogen, einen "Primär-Cache" mit einem Speicher sehr hoher Geschwindigkeit zwischen dem Prozessor und dem statischen "Sekundär-RAM-Cache" anzuord­ nen. Der Aufbau eines solchen "hierarchischen" Cache-Spei­ chers ist jedoch wegen der hohen Anzahl von Eingangs-/Aus­ gangsleitungen, der Verbindungspuffer (associated buffers) und der Multiplexschaltungen, die zum Bilden einer Schnitt­ stelle zwischen dem Sekundär-Cache-Speicher und dem Haupt­ speicher und dem Primär-Cache-Speicher erforderlich sind, und wegen der Notwendigkeit, die primären und sekundären Cache-Speicher in enger Nachbarschaft zum Prozessor zu hal­ ten, um Signalübertragungsverzögerungen zu minimieren, nicht praktikabel.
Aufgabe der vorliegenden Erfindung ist es deshalb, einen hierarchisch aufgebauten Cache-Speicher anzugeben, der mit geringem Aufwand realisierbar ist und gute Eigenschaften insbesondere bezüglich Signalübertragungsverzögerungen auf­ weist.
Diese Aufgabe wird durch den hierarchischen Cache-Speicher nach Anspruch 1 bzw. durch die integrierten Schaltungen nach Anspruch 9 oder Anspruch 18 erfüllt.
In Übereinstimmung mit der vorliegenden Erfindung umfaßt ein hierarchischer Cache-Speicher einen Primär-Cache-Spei­ cher hoher Geschwindigkeit, einen Sekundär-Cache-Speicher niedriger Geschwindigkeit und mit größerer Speicherkapazi­ tät als der Primär-Cache-Speicher, Datenwegschaltungen, um Datenwege vom Sekundär-Cache-Speicher zum Primär-Cache- Speicher bzw. vom Hauptspeicheranschluß zum Sekundär-Cache- Speicher auszuwählen, und eine Steuerschaltung zum Übertra­ gen bzw. Transferieren von nachgefragten Daten von dem Sekun­ där-Cache-Speicher zum Primär-Cache-Speicher, wenn die nach­ gefragten Daten nicht im Primär-Cache-Speicher vorhanden sind, und zum Übertragen der nachgefragten Daten von dem Hauptspeicheranschluß zu dem Sekundär-Cache-Speicher, wenn die nachgefragten Daten im Sekundär-Cache-Speicher nicht vorhanden sind. Um eine große Anzahl von Datenleitungen in den Datenwegschaltungen zu beherrschen, enthält der hie­ rarchische Cache-Memory eine Vielzahl von integrierten Schaltungen. Jede integrierte Schaltung enthält einen Ab­ schnitt des Primär-Cache-Speichers, einen Abschnitt des Sekundär-Cache-Speichers, der eine größere Speicherkapazi­ tät hat als der Abschnitt des Primär-Cache-Speichers, und einen Abschnitt der Datenwegauswahlschaltungen zum Einrich­ ten jeweiliger Datenwege von dem Abschnitt des Sekundär-Ca­ che-Speichers zu dem Abschnitt des Primär-Cache-Speichers bzw. von dem Hauptspeicheranschluß zum Abschnitt des Sekun­ där-Cache-Speichers.
In einer bevorzugten Ausführungsform umfaßt der Abschnitt der Datenwegschaltungen in jeder der integrierten Schaltun­ gen ein Seriell-/Parallel-Schieberegister, das einen Paral­ lelausgang hat, welcher mit Dateneingangsleitungen der Ab­ schnitte des Primär- und Sekundär-Cache-Speichers verbunden ist, einen Serielldateneingang, der Daten des Hauptspei­ chers empfängt, und einen Paralleleingang, der mit den Da­ tenausgangsleitungen des Abschnitts des Sekundär-Cache-Spei­ chers verbunden ist. Zum Schreiben von Daten in den Cache und zurück in den Hauptspeicher umfaßt das Parallel-/Se­ riell-Schieberegister auch einen Paralleleingang zum Ent­ gegennehmen von Daten der Verarbeitungseinheit, einen Pa­ ralleleingang, der mit den Datenausgangsleitungen des Ab­ schnitts des Primär-Cache-Speichers verbunden ist, und einen Seriellausgang zum Übertragen von Daten zu dem Haupt­ speicher. Der Abschnitt des Primär-Cache-Speichers hat Ad­ resseneingänge, die parallel mit Adresseneingängen des Ab­ schnitts des Sekundär-Cache-Speichers verdrahtet sind. Um dem Datenprozessor zu erlauben, eine ausgewählte Datenaus­ gangsleitung des Abschnitts des Primär-Cache-Speichers zu adressieren, enthält die integrierte Schaltung einen Multi­ plexer mit Auswahleingängen, die mit zusätzlichen Adreßlei­ tungen verbunden sind, und Dateneingangsleitungen, die mit den Datenausgangsleitungen des Primär-Cache-Speichers ver­ bunden sind. Um dem Datenprozessor zu erlauben, Daten in den Primär-Cache von einer selektierten Dateneingangslei­ tung des Abschnitts des Primär-Cache-Speichers zu schrei­ ben, enthält die integrierte Schaltung einen Decoder, der mit den zusätzlichen Adreßleitungen verbunden ist, und Ausgänge, die mit den jeweiligen Schreib-Sperreingängen des Abschnitts des Primär-Cache-Speichers verbunden sind, und enthält der Paralleleingang des Seriell-/Parallel-Schie­ beregisters eine Vielzahl von Datenleitungen, die parallel zu einer Datenleitung zum Empfangen von Daten von dem Daten­ prozessor verdrahtet sind.
Vorteilhafte Weiterbildungen der vorliegenden Erfindung sind den Unteransprüchen zu entnehmen. Weitere Vorteile, Anwendungsmöglichkeiten und Eigenschaften der vorliegenden Erfindung sind aus der nachfolgenden Beschreibung von Aus­ führungsformen in Verbindung mit den Zeichnungen ersicht­ lich.
Es zeigen:
Fig. 1 ein Blockdiagramm eines Datenverarbeitungssystems, das einen hierarchischen Cache der vorliegenden Erfindung verwendet;
Fig. 2 (= Fig. 2A + Fig. 2B) ein Blockdiagramm des hierar­ chischen Cache der Fig. 1;
Fig. 3 ein Blockdiagramm eines Kennzeichnungsspeichers, der im hierarchischen Cache eingesetzt wird;
Fig. 4 ein Blockdiagramm einer integrierten Schaltung gemäß der vorliegenden Erfindung, die Abschnitte des Primär-Cache- Speichers und des Sekundär-Cache-Speichers enthält;
Fig. 5 ein schematisches Diagramm eines Seriell-/Parallel- Schieberegisters, das zum Verbinden der Abschnitte des Pri­ mär-Cache-Speichers und Sekundär-Cache-Speichers in der integrierten Schaltung nach Fig. 4 eingesetzt wird;
Fig. 6 ein schematisches Diagramm des Abschnitts des Sekun­ där-Cache-Speichers in der integrierten Schaltung der Fig. 4;
Fig. 7 ein schematisches Diagramm eines Adreß-Decoders und des Abschnitts des Sekundär-Cache-Speichers, der in der integrierten Schaltung nach Fig. 4 eingesetzt wird;
Fig. 8 ein schematisches Diagramm eines Eingangspuffers (buffer) in der Form eines Differenzverstärkers, um zu er­ möglichen, daß entweder ein einseitiger bzw. unsymmetrischer Takt oder ein duales, komplementäres Taktsignal eingesetzt wird, um die integrierte Schaltung nach Fig. 4 zu takten;
Fig. 9 ein Flußdiagramm einer Steuerlogik für den hierarchi­ schen Cache nach Fig. 1;
Fig. 10 ein Flußdiagramm einer Steuerlogik, die eingesetzt wird, um den Primär-Cache auszurüsten, wenn ein primärer Fehlzugriff auftritt;
Fig. 11 ist ein Flußdiagramm der Steuerungslogik, die einge­ setzt wird, um den Sekundärspeicher auszurüsten, wenn ein sekundärer Fehlzugriff auftritt;
Fig. 12 ist ein schematisches Diagramm, das zeigt, wie die integrierte Schaltung nach Fig. 4 in einem hierarchischen Cache-Speicher eingesetzt wird, der zweiwegesatzassozia­ tiv ist; und
Fig. 13 ein Flußdiagramm der zusätzlichen Steuerlogik, die für den zweiwegesatzassoziativen Cache-Speicher nach Fig. 12 eingesetzt wird.
In Fig. 1 wird ein Blockdiagramm gezeigt, das ein Datenver­ arbeitungssystem 20 aufweist, welches einen hierarchischen Cache 21 in Übereinstimmung mit der vorliegenden Erfindung verwendet. Das Datenverarbeitungssystem 20 enthält auch einen Datenprozessor 22 und einen Hauptspeicher 23. Der Datenprozessor 22 ist z. B. eine Zentralverarbeitungseinheit (CPU), die Befehle in einem Computerprogramm ausführt. Die Instruktionen umfassen Speicherzugriffsbefehle, die den Datenprozessor befehlen, Daten aus einer spezifizierten Quellenadresse im Hauptspeicher zu lesen oder spezifizierte Daten unter einer spezifizierten Bestimmungsadresse im Hauptspeicher einzuschreiben.
Die Speicherkosten sind ein Hauptfaktor der Gesamtkosten des Datenverarbeitungssystems 20. Obwohl Speicher relativ billig geworden sind, gibt es und wird es immer Speicher geben, die unterschiedliche Speicherkapazitäten und Lei­ stungseigenschaften erhältlich für unterschiedliche Kosten haben. Die Kosten des Speichers sind z. B. proportional zur Speicherkapazität und im allgemeinen proportional zur Ge­ schwindigkeit des Speichers. Die Speichergeschwindigkeit hat einen wesentlichen Einfluß auf die Ausführungsgeschwin­ digkeit bzw. Arbeitsgeschwindigkeit des Datenprozessors 22. Dies gilt insbesondere für den Fall der sog. Computer mit reduziertem Befehlssatz (RISC = reduced instruction set computer), die dafür ausgelegt sind, einen Befehlssatz auszuführen, der begrenzt worden ist und für die Arbeitsge­ schwindigkeit optimiert worden ist. Wenn z. B. Emitter-ge­ koppelte Logik (ECL = emitter-coupled logic) Technologie eingesetzt wird, ist es praktisch, einen Einzelchipdatenpro­ zessor 22 herzustellen, der eine Zykluszeit im Bereich von 3 Nanosekunden hat. Um zu verhindern, daß der Datenprozes­ sor in diesem Fall während der Ausführung eines Speicherzu­ griffsbefehls blockiert ist, sollte der Speicher eine ent­ sprechende Zykluszeit von ungefähr 3 Nanosekunden haben. Ein solches Erfordernis ist jedoch besonders schwierig zu erfüllen, da eine Technologie für integrierte Schaltungen mit hoher Geschwindigkeit und konsequenterweise hohem Ver­ brauch an Energie wie z. B. ECL erforderlich ist und der Speicher stark in der Kapazität wegen den Beschränkungen bezüglich der Leistungsabführung, der Signalübertragungs­ zeit und letztendlich der relativ hohen Kosten des ECL-Spei­ chers begrenzt ist.
Eine allgemeine Lösung für dieses Problem besteht darin, einen kleinen Pufferspeicher hoher Geschwindigkeit, der als Cache bezeichnet wird, einzusetzen, um die zu allerletzt benutzten Programmbefehle und/oder Daten festzuhalten. Der Speicher ist zwischen dem Datenprozessor 22 und dem Hauptspeicher 23 eingefügt. Für Prozessoren mit hoher Ge­ schwindigkeit und mit Pipeline ist es allgemein bekannt, zwei separate Cache-Speicher zu verwenden, und zwar den einen zum Halten von Befehlen und den anderen zum Halten von Daten. Der hierarchische Cache 21 in Fig. 1 wird z. B. zum Halten von Daten verwendet. Wenn der Datenprozessor 22 einen Speicherzugriffsbefehl ausführt, frägt der Daten­ prozessor 22 nach den Daten von dem Cache 21. Wenn die nach­ gefragten Daten in dem Cache 21 vorhanden sind, können die Daten schnell aus dem Cache geholt werden, ohne daß auf den Hauptspeicher 23 zugegriffen werden muß.
Ein Cache, der nur ECL-Speicher enthält, stellt jedoch eine eher schwache Lösung des Problems des Kompensierens der großen Ungleichheit zwischen der Zyklusgeschwindigkeit des Datenprozessors 22 und des Hauptprozessors 23 dar, wenn der Hauptprozessor aus konventionellen dynamischen CMOS-RAM (DRAM) Speicherchips besteht. Wegen der Begrenzungen der hohen Leistungsverbrauchs bzw. der Leistungsabführung, der Signalübertragungsverzögerung zwischen dem Datenprozessor 22 und dem Cache und den Kosten wäre die Leistungsfähigkeit des Datenverarbeitungssystems 20 stark beschränkt, wenn der ECL-Cache auf den Hauptspeicher 23 immer dann zugreifen müßte, wenn ein Fehlzugriff aufgetreten ist. Da der ECL- Cache-Speicher eine eher hohe Zugriffsfehlrate haben würde, sollte er einen Zusatzspeicher haben, der eine Wartezeit bzw. Zugriffswartezeit von nicht mehr als der zehnfachen Zeit der Zugriffszeit des Cache-Speichers hat. Der Haupt­ speicher 23 kann z. B. typischerweise eine Zugriffszeit von mindestens 100 Nanosekunden haben, und deshalb beträgt die Zeit bzw. Zeitstrafe für den Zugriff auf den Hauptspeicher während eines Fehlzugriffs mindestens 30 Zyklen des Daten­ prozessors oder des ECL-Cache-Speichers. Eine Lösung dieses Problems, die in der Fig. 1 gezeigt wird, besteht darin, einen hierarchischen Cache 21 zu verwenden, der einen Pri­ mär-Cache 24 mit einem ECL-Speicher hoher Geschwindigkeit und einem Sekundär-Cache 25 mit einem Speicher dazwischen­ liegender Geschwindigkeit wie z. B. einem statischen DMOS-RAM (SRAM) enthält.
Der Einsatz eines Sekundär-Cache 25 bringt jedoch eine An­ zahl von Problemen mit sich. Um die Signalübertragungsver­ zögerung zu begrenzen, sollte der Sekundär-Cache 25 nahe am Primär-Cache 24 sein, doch es ist entscheidender, den Primär-Cache in enger Nachbarschaft zum Datenprozessor 22 zu halten. Zudem sollte der Sekundär-Cache 24 eine relativ hohe Speicherkapazität und eine relativ große Blockgröße haben, so daß die Systemleistungsfähigkeit bzw. Geschwindig­ keit nicht durch die Zeit begrenzt wird, die zum Wiederauf­ füllen des Primärspeichers 24 vom Sekundärspeicher 25 erfor­ derlich ist. Dies erfordert eine große Anzahl von Signallei­ tungen zur Verbindung des Sekundärspeichers 25 mit dem Hauptspeicher 23 und dem Primärspeicher 24. Diese Überlegun­ gen haben früher einen Sekundär-Cache-Speicher erfordert, der auf einer gedruckten Leiterplatte zwischen dem Datenpro­ zessor und dem Hauptspeicher angeordnet war, was einen gro­ ßen Aufwand an Komplexität und Übertragungsverzögerung zu­ sammen mit einem entsprechenden Verlust an Zuverlässigkeit und Leistungsfähigkeit bzw. Geschwindigkeit bedeutet.
Gemäß einem wichtigen Aspekt der vorliegenden Erfindung werden diese Probleme dadurch gelöst, indem Abschnitte des Primärcache 24 und des Sekundärcache 25 auf den gleichen integrierten Schaltungen angeordnet werden, so daß die hohe Anzahl von Datenleitungen, die zwischen dem Primärcache und dem Sekundärcache verbinden, vollständig auf den inte­ grierten Schaltungen angeordnet sind. Zudem wird die Gesamt­ anzahl und die Gesamtgröße der Gehäuse der integrierten Schaltungen beim hierarchischen Cache 21 reduziert, da die grundsätzlichen Einschränkungen bezüglich der Anzahl der integrierten Schaltungsgehäuse unterschiedlich für den Pri­ märcache 24 und den Sekundärcache 25 sind. Wenn der Primär­ cache 24 aus einzelnen ECL-integrierten Schaltungen aufge­ baut ist, ist der Primärfaktor, der die Anzahl der IC-Gehäu­ se bestimmt hat, die Leistungsabführung der ECL Speicherele­ mente in jedem Gehäuse. Anders ausgedrückt, ist die maxima­ le Speicherkapazität eines ECL-Speichers auf einem einzeln integrierten Schaltungschip primär durch die Leistungsabfüh­ rung des Gehäuses, in dem der Chip angeordnet ist, be­ grenzt. Andererseits, wenn der Sekundär-Cachespeicher 25 vollständig auf getrennten Chips integriert ist, dann ist die maximale Speicherkapazität pro Chip im wesentlichen durch die maximale Größe des integrierten Schaltungschips für eine wirtschaftliche Chipherstellung begrenzt. Deshalb kann durch Anordnen eines Teils des Sekundär-Cachespeichers und eines Teils des Primär- Cachespeichers auf jedem inte­ grierten Schaltungschip die Gesamtanzahl der Chips redu­ ziert werden und zwar wegen der komplementären Natur der grundsätzlichen Einschränkungen der unterschiedlichen in­ tegrierten Schaltungstechnologien oder Betriebsbedingungen, die für den Primärcache 24 und den Sekundärcache 25 erfor­ derlich sind.
Es ist möglich, bekannte Halbleiterchipherstellungsverfah­ ren zu verwenden, und insbesondere einen Prozeß zu verwen­ den, der als "Bi-CMOS" bekannt ist, zum Kombinieren von CMOS Speicherelementen und ECL-Speicherelementen auf dem gleichen integrierten Schaltungstyp. Es wird jedoch darauf hingewiesen, daß die gleichen ergänzenden Einschränkungen bezüglich der Anzahl der IC-Gehäuse für den Primärcache und den Sekundärcache auftreten, wenn die gleiche Schaltungsele­ menttechnologie für den Primärcache und den Sekundärcache angewendet wird, solange die Leistungsverteilung bzw. Abfüh­ rung der Primärfaktor für den Primärcache aber nicht für den Sekundärcache ist. Dies trifft zu für z. B. Bipolartech­ nologien wie ECL oder I2L, bei denen es dem Schaltungsde­ signer freigestellt ist, die Leistungsverteilung verschiede­ ner Logikkomponenten auf dem gleichen Chip so einzustellen, daß eine hohe Geschwindigkeit bei hohem Leistungsverbrauch für den Primärcache erreicht wird, aber ein niedrigerer Leistungsverbrauch für den Sekundärcache 25 ausgewählt wer­ den kann, da eine hohe Geschwindigkeit in diesem Fall nicht notwendig ist. Wenn die Schaltungstechnologie das einzige Kriterium zum Auswählen der relativen Speicherkapazität des Primärcache und des Sekundärcache ist, würden z. B. sämtli­ che Schaltungen, die den Primärcache 24 und den Sekundär­ cache 25 bilden, eine Maximalgröße haben, die durch ökonomi­ sche Einschränkungen bestimmt ist, und würde auch den Maxi­ malbetrag an Leistung bzw; Energie verbrauchen, der bei okonomischer Packung des Chips erlaubt ist.
Wenn ein Abschnitt des Primärcache 24 und ein Abschnitt des Sekundärcache 25 auf dem gleichen Chip angeordnet wer­ den, werden jedoch zusätzliche Probleme eingeführt, die sich darauf beziehen, daß die Anzahl der Eingangs-/Ausgangs­ leitungen jedes Chips begrenzt werden sollen. Wie weiter unten beschrieben wird, und zwar in Verbindung mit der Fig. 2, werden diese Probleme gelöst, indem ein gemeinsamer Ad­ reßbus für die Datenspeicher des Primärcache 24 und des Sekundärcache 25 und indem ein gemeinsames Register zum Schreiben von Daten in den Primärcache und den Sekundär- Cache-Speicher verwendet wird. Insbesondere das Schreibre­ gister kann Daten von entweder dem Primärcache 24, dem Se­ kundärcache 25 oder dem Datenprozessoranschluß 26 oder einem Hauptspeicheranschluß 27 entgegennehmen. Dieses Auf­ teilen bzw. Teilen des Adreßbusses und des Schreibregi­ sters zwischen dem Primärcache 24 und dem Sekundärcache 25 bestimmt, daß der hierarchische Cache 21 einen gemeinsa­ men Cache-Controller 28 zum Koordinieren des Datenrück­ schreibens und Wiederauffüllens des Primärcache 24 und des Sekundärcache 25 verwenden sollte.
Obwohl der hierarchische Cache 21 einen Primärcache 24 mit einer Zykluszeit haben kann, die an die Zyklusgeschwindig­ keit des Datenprozessors 22 angepaßt ist, oder mit dieser sogar übereinstimmt, ist es dennoch wünschenswert, einen kleinen On-chip-Cache 29 zu verwenden und einen verbundenen On-chip-Cache-Controller 30. In diesem Fall ist es möglich für den Datenprozessor 22, auf den On-chip-Cache 29 in ei­ nem Bruchteil des Zyklus zuzugreifen, und zwar wegen des Fehlens von Datenübertragungsverzögerungen zwischen den Chips. Der On-chip-Cache 29 ist ähnlich einer Registerda­ tei. Insbesondere arbeiten der On-chip-Cache 29 und der On-chip-Cache-Controller 30 auf ähnliche Art wie der Primär- Cache 24 und der Cache-Controller 28, wie weiter unten mit Bezug auf die Fig. 2, 9 und 10 beschrieben wird.
Allgemein ausgedrückt, sendet der Datenprozessor 22 Spei­ cherzugriffsnachfragen, Adressen und Daten, die in den Spei­ cher geschrieben werden sollen, an den hierarchischen Cache 21 und der hierarchische Cache 21 sendet Bestätigungen der Nachfragen und entsprechende, aus dem Speicher gelesene Daten zurück. Für diesen Zweck hat der hierarchische Cache 21 einen Datenprozessoranschluß, der mit dem Datenprozessor 22 über einen Nachfragebus 31, einen Bestätigungsbus 35, einen Adreßbus 32 und zwei unidirektionale Datenbusse 33 und 34 verbunden ist. Der Nachfragebus enthält z. B. zumin­ dest zwei Leitungen zum Befördern eines Nachfragecodes, der eine Lesenachfrage, eine Schreibnachfrage, eine Flush-Nach­ frage oder das Fehlen einer Nachfrage (ein no-op) während jedes Zyklus′ des Hochgeschwindigkeitssystemtakts bezeich­ net. Der Bestätigungsbus weist z. B. zumindest drei Leitun­ gen zum Befördern eines Blockiersignales, das anzeigt, daß der Datenprozessor keine zusätzlichen Nachfragen senden darf, ein Lesedaten-Gültig-Signal zum Bestätigen der Beendi­ gung einer Lesenachfrage bzw. -anfrage, und ein Speicher­ fehlsignal zum Unterbrechen der Programmausführung.
Um nachgefragte Daten aus dem Speicher 23 zu erhalten, wenn die nachgefragten Daten in dem hierarchischen Cache 21 nicht gefunden werden können, erhält der hierarchische Cache einen Hauptspeicheranschluß 27, von dem weg eine An­ zahl von Bussen zu dem Hauptspeicher verlaufen. Diese Busse enthalten einen Nachfragebus 36, einen Bestätigungsbus 40, einen Adreßbus 37 und zwei unidirektionale Datenbusse 38 und 39. Zwei Datenbusse sind vorgesehen, damit Wiederfüll- Daten und Rückschreibdaten simultan ausgetauscht werden können, wie weiter unten stehend beschrieben wird.
In Fig. 2 ist ein detailliertes Blockdiagramm des hierarchi­ schen Cache 21 gezeigt. Der Primärcache 24 enthält einen Speicher 41 zum Festhalten von Datenblöcken, einen Speicher 42 zum Halten entsprechender Adreßkennzeichnungen und ei­ nen Komparator 43 zum Vergleichen der Adreßkennzeichnun­ gen (address tags), die in dem Speicher 42 gespeichert sind, mit einem Indexabschnitt einer Adresse auf einem in­ ternen Adreßbus, der mit 44 angegeben ist. Auf ähnliche Art und Weise enthält der Sekundärcache 25 einen Speicher 25 für Datenblöcke, einen Speicher 46 für Adreßkennzeich­ nungen und einen Kennzeichnungsvergleicher 45. Da ein einzi­ ger Kennzeichnungsvergleicher und Kennzeichenspeicher in jedem Datenspeicher vorgesehen sind, ist der hierarchische Cache 21 ein einwegsatzassoziativer Speicher. Wie weiter unten mit Bezug auf die Fig. 12 und 13 beschrieben wird, kann der hierarchische Cache 21 leicht als vielfachsatzasso­ ziativer Cache aufgebaut werden, indem ein Vielfach-Satz von Kennzeichnungsspeichern und Kennzeichnungsvergleichern für sowohl den Primär-Cache als auch den Sekundär-Cachespei­ cher vorgesehen wird.
Bevorzugterweise arbeitet der hierarchische Cache in syn­ chroner Art in Antwort auf ein Taktsignal (CLK) und Blok­ kierregister (stall registers) 48, 49 werden zum Pipelining (Fließbandverarbeitung) des Datenflusses zwischen dem Daten­ prozessor und dem hierarchischen Cache verwendet. Das Blockierregister 48 hält eine Adresse und das Blockierre­ gister 49 hält Daten des Datenprozessors, wenn der Cache- Controller 28 ein Blockiersignal ausgibt bzw. behauptet. Das Blockiersignal steuert die Multiplexer 50 und 51, um die Inhalte des Blockierregisters 48 bzw. 49, wenn das Blockiersignal ausgegeben wird, auszuwählen.
Es wird weiter gewünscht, das Zugreifen auf den Primär­ cache-Datenspeicher 41 zumindest für das Schreiben von Da­ ten durch ein Pipelining zu bewerkstelligen. Wie in Fig. 2 gezeigt wird, ist der hierarchische Cache direkt zugeordnet und deshalb ist es notwendig, nach einem Übereinstimmungs­ kennzeichen (mapping tag) zu suchen, einen Treffer (hit) zu signalisieren, und zwar bevor in den Datenspeicher geschrie­ ben wird, da ansonsten die Daten in einen Cache-Block ge­ schrieben würden, der mit einer Adresse verbunden wäre, die von der gewünschten Adresse bzw. Soll-Adresse verschieden ist. Das Pipelining der gewünschten Adresse von dem Kennzei­ chnungsspeicher zum Datenspeicher kann durch Adressieren des Kennzeichnungsspeichers durchgeführt werden, wenn die gewünschte Adresse auf dem Adreßbus 32 erscheint, und durch ein späteres Adressieren des Datenspeichers, wenn die gewünschte Adresse in dem Blockierregister 48 empfangen wird.
Zum Handhaben von Lesenachfragen ist es jedoch manchmal möglich, den Kennzeichnungsspeicher und den Datenspeicher simultan zu adressieren. Vom Speicher gelesene Daten werden in einem Ausgangsregister 52 aufgenommen und später zum Datenprozessor übertragen bzw. übermittelt, wenn das "Tref­ fer"-Signal ausgegeben wird, um entweder Daten zu bestäti­ gen oder ungültig zu machen. Wenn der Kennzeichenspeicher und der Datenspeicher simultan adressiert werden, adressiert ein Bypass-Multiplexer 58 den Datenspeicher 41 mit der CPU- Adresse des Adreßbusses 32 anstatt mit der Adresse des Blockierregisters 48.
Da es von Vorteil für die Cache-Datenblöcke ist, daß sie viel größer sind als die Anzahl der Datenleitungen in dem CPU-Datenbus 34, reagiert ein Multiplexer 53 auf eine An­ zahl von am wenigsten signifikanten Adreßbits zum Auswäh­ len eines Abschnitts des Datenblocks, der zur Datenverar­ beitungseinheit übertragen werden soll. Jeder Cache-Daten­ block enthält z. B. 1024 Bits und der Multiplexer 53 rea­ giert auf die fünf am wenigsten signifikanten Adreßbits, um ein 32 Bit langes Wort aus dem Cacheblock zu selektie­ ren. Bevorzugterweise haben der Primärcache 24 und der Se­ kundärcache 25 die gleiche Größe des Cacheblocks, so daß Daten schnell zwischen dem Datenspeicher 41 des Primär­ caches und dem Datenspeicher 45 des Sekundärcaches übertra­ gen werden können. Wie in Fig. 2 gezeigt wird, werden die Dateneingänge der zwei Datenspeicher 41 und 45 parallel zueinander verbunden, und zwar durch einen breiten Bus 54, der eine einzelne Leitung für jedes Bit des Cache-Blocks hat.
Wie weiter unten beschrieben wird, ist der breite Bus 54 vollständig im Inneren der integrierten Schaltungen unter­ gebracht, die zum Aufbauen der zwei Datenspeicher 41 und 45 verwendet werden. Zudem ist der hierarchische Cache 21 mit einem Seriell/Parallel-Register 55 ausgestattet, das als Schreibpuffer für die Datenspeicher 41 und 45 dient und auch für parallele Kommunikation zwischen den Datenspei­ chern 41 und 45 verwendet wird, aber auch zum Wiederauffül­ len und Zurückschreiben vom Hauptspeicher. Daten fließen durch das Seriell/Parallel-Register vom Sekundärcache aus, um den Primärcache mit Referenzen bzw. Daten aufzufüllen, die in dem Primärcache fehlen, aber im Sekundärcache vorhan­ den sind (hit). Desweiteren, bevor ein Cache-Block, der modifizierte Daten im Primär-Cache enthält, mit neuen Da­ ten aufgefüllt wird, fließen die Daten über einen breiten Bus 57 vom Primärcache und durch das Seriell/Parallel-Regi­ ster 55 zum Sekundärcache. Des weiteren arbeitet das Seri­ ell/Parallel-Register als Seriell-Schieberegister, um als Auffüllpuffer und als Rückschreibpuffer zu dienen, wenn die Daten zwischen dem Hauptspeicher und dem hierarchischen Cache aufgefüllt oder zurückgeschrieben werden. Wie es aus Fig. 4 klar ersichtlich ist, verbinden die Datenbusse 38 und 39 den hierarchischen Cache und den Hauptspeicher und sind z. B. 32-Bit-Busse und 1024 Datenbits können zwischen dem Seriell/Parallel-Register 55 und dem Hauptspeicher in 32 Taktzyklen wechselseitig ein- und ausgelagert werden (swapping).
Das Seriell/Parallel-Register 55 hat 4 unterschiedliche Betriebsmodi in Antwort auf ein zwei-Bit Auswahlsignal (SEL) des Cache-Controllers 28. Für SEL = 0 empfängt das Seriell/Parallel-Register 55 den Datenausgang des Sekundär- Cache 25 zum Auffüllen des Primärcache 24. Für SEL = 1 em­ pfängt das Seriell/Parallel-Register 32 Kopien eines 32 Bit langen Wortes des Datenprozessors, wie es weiter unten detaillierter mit Bezug auf Fig. 4 beschrieben wird. Eine ausgewählte Kopie von den 32 Kopien, wie sie vom Adreß­ decoder 56 selektiert wird, kann in eine adressierte Posi­ tion in dem Cacheblock des Datenspeichers 51 des Primär­ cache geschrieben werden. Für SEL = 2 wird die Ausgangsin­ formation des Datenspeichers 41 des primären Cache in dem Seriell/Parallel-Register 55 zum Zurückschreiben in den Sekundär-Cache 25 aufgenommen. Während des Rückschreibpro­ zesses, der eine Anzahl von Zyklen benötigt, ändert sich die Adresse für die Datenspeicher 41 nicht, so daß die In­ halte des Seriell/Parallel-Registers 55 sich nicht ändern, wenn das Register getaktet wird. Für SEL = 3 arbeitet das Seriell/Parallel-Register 55 in einem seriellen Modus, um Auffülldaten des Hauptspeichers einzuschieben und Rück­ schreibdaten in den Hauptspeicher auszuschieben.
Aus Gründen der Erläuterung ist der Primärcache 24 und der Sekundärcache 25 jeweils als direkt zugeordneter Cache ge­ zeigt. Wenn ein Fehlzugriff (miss) auftritt, zeigen die Inhalte der gewünschten Adreßstelle in dem Kennzeichnungs­ speicher Adreßbits höherer Ordnung derjenigen Daten an, die in dem gewünschten Cacheblock vorhanden sein können. Das Vorhandensein von Daten wird durch Gültigkeitszeichen (valid flags) (V), die in den Kennzeichnungsspeichern 42 und 46 gespeichert sind, angezeigt. Der hierarchische Cache 21 wird ebenfalls als Rückschreib-Cache gezeigt und weniger als Durchschreib-Cache. Deshalb, wenn modifizierte Daten in einem gewünschten Cacheblock während eines Fehlzugriffs vorhanden sind, müssen diese Daten zurückgeschrieben wer­ den. Modifizierte Daten werden durch Modifizierungszeichen (M) (modify flags) in dem Kennzeichnungsspeicher angezeigt bzw. angegeben.
Wie weiterhin im Blockdiagramm der Fig. 3 gezeigt wird, sind die Kennzeichnungsspeicher 42 und 46 so organisiert, daß die Modifizierungszeichen (M) und die Gültigkeitszei­ chen (V) automatisch während eines Schreibens in den Kenn­ zeichnungsspeicher und eines Flush des Kennzeichnungsspei­ chers aktualisiert. Wie es gezeigt wird, enthält der Kenn­ zeichnungsspeicher einen Einzelbit-Statik-RAM 61, um die Modifizierungszeichen zu halten, einen Einzelbit-Statik-RAM 62, um die Gültigkeitszeichen zu halten, und eine Anzahl entsprechend den Adreßbits höherer Ordnung zu halten. Der Schreib/Sperreingang des Statik-RAMs 61 für die Modifizie­ rungszeichen ist mit einem ODER-Gatter 66 versehen, das mit dem Schreib-Modfizierungseingang (WM) kombiniert bzw. verknüpft. Die anderen statischen RAMs 62, 63, 64 und 65 erhalten direkt Schreib/Sperr-Signale vom Kennzeichnungs­ speicher. Zudem hat der statische RAM 61 für die Modifizie­ rungszeichen einen Dateneingang, der das Schreib-Modifizie­ rungssignal (WM) empfängt. Deshalb wird das modifizierte Bit gecleart bzw. gelöscht, wenn der Kennzeichnungsspeicher durch ein Schreib-Freigabesignal (WE) aktualisiert wird, und das Bit wird gesetzt, wenn das WM-Signal während der Modifikation der Daten ausgegeben wird. Der Einzelbit-Sta­ tik-RAM 62 für die gültigen Zeichen ist speziell so aufge­ baut, daß alle Bits des Speichers simultan zurückgesetzt oder gecleart werden können, und zwar in Antwort auf ein FLUSH-Signal. Der Dateneingang dieses Speichers 62 ist mit einem logischen Hoch (high) verdrahtet, so daß das Adressen­ signal (WE) während einer Cacheauffüllung ausgegeben wird. Der Datenausgang des statischen RAMs 61 für das Modifizie­ rungszeichen und der Datenausgang des statischen RAMs 62 für das Gültigkeitszeichen werden in einem UND-Gatter 67 verknüpft, um ein Modifizierungssignal zu erzeugen, das nur ausgegeben wird, wenn die Modifizierungszeichen gültig sind.
Aus Fig. 2 ist zu entnehmen, daß das Modifizierungssignal des Kennzeichnungsspeichers 42 und ein Treffersignal des Kennzeichnungsvergleichers 43 durch ein Register 71 hin­ durchgehen und von dem Cache-Controller 28 entgegengenommen werden. In ähnlicher Art und Weise werden das Modifizie­ rungssignal und das Treffersignal vom Kennzeichnungsspei­ cher 46 des Sekundärcache 25 in einem Register 72 entgegen­ genommen und zum Cache-Controller 28 weitergeleitet. Wenn der Cache-Controller 28 bestimmt, daß ein Fehlzugriff aufge­ treten ist, und zwar während des Zugriffs auf den Primär­ speicher, und bestimmt bzw. feststellt, daß der adressierte Cache-Block modifizierte Daten enthält, löst er einen Rück­ schreibbetrieb aus, indem er die modifizierten Daten von dem Primärcache zum Sekundärcache schreibt. Aufgrund der Tatsache, daß ein Fehlzugriff aufgetreten ist, ist die Ad­ resse, die mit den modifizierten Daten verbunden ist, unter­ schiedlich zu der Adresse auf dem Adreßbus 44. Die Adresse der modifizierten Daten wird in einem Register 73 aufgenom­ men. Während des nächsten Zyklusses arbeitet der Cache-Con­ troller 28 als Multiplexer 74, um die Adresse der modifi­ zierten Daten auf dem Adreßbus 44 auszugeben, so daß diese Adresse zum Sekundärcache 25 weitergeleitet wird, um ein Rückschreiben der modifizierten Daten in den Sekundärcache zu ermöglichen. Auf ähnliche Art und Weise enthält der Se­ kundärcache 25 ein Register 75 und einen Multiplexer 76, die von dem Cache-Controller 28 eingesetzt werden, wenn ein Fehlzugriff im Sekundärcache auftritt und modifizierte Da­ ten in den Hauptspeicher zurückgeschrieben werden.
In Fig. 4 wird ein schematisches Diagramm einer integrier­ ten Schaltung 80 gezeigt, die sowohl einen Abschnitt 81 des Primär-Cachespeichers und einen Abschnitt 82 des Sekun­ där-Cachespeichers aufweist. Insbesondere sind der Daten­ speicher 41 und der Datenspeicher 45, das Register 52, der Multiplexer 53, der Bus 54, das Seriell/Parallel-Register 55, der Decoder 56 und der Bus 57 nach Fig. 2 auf 16 inte­ grierten Schaltungen integriert, wie es in Fig. 4 gezeigt ist. Die integrierte Schaltung 80 wird bevorzugterweise unter Einsatz eines BiCMOS-Prozesses hergestellt und in einer 48-Anschluß-TAB-Konfiguration untergebracht. Wie wei­ ter unten beschrieben wird, wird die integrierte Schaltung dann als 512K×2 BiCMOS/8K×2 ECL sychroner RAM bezeich­ net.
Der Abschnitt 81 des Primärcache-Speichers enthält einen 8 K-bit ECL-Speicher 83 und einen 8 K-bit ECL-Speicher 84. Diese 8 K-bit ECL-Speicher 83 und 84 sind als Felder mit 256×32 Bit organisiert, um 256 separat adressierbare Cache-Block-Segmente mit jeweils 32 Bit zu erzeugen. Die 256 Cache-Block-Segmente werden durch 8 Adreßleitungen (die die Adreßbits 17 bis 10 befördern) eines Adreßbusses 85 adressiert. In den Speicher 83 können 32 Datenbits in das adressierte Cache-Block-Segment von einem Datenbus 86 aus geschrieben werden, der 32 Datenleitungen aufweist, und alle 32 Bits des adressierten Cache-Block-Segments können auf einen Ausgangsbus 87 ausgelesen werden, der 32 Datenlei­ tungen enthält. Ein bestimmtes Datenbit wird von einem Mul­ tiplexer 88, der 32 Eingangsleitungen und eine einzige Aus­ gangsleitung 89 aufweist, selektiert. Dieses selektierte Bit wird in einem Verzögerungs-Flip-Flop 90 gelatched bzw. zwischengespeichert, das Teil eines Registers 52, wie es in Fig. 2 gezeigt wird, ist. Das Verzögerungs-Flip-Flop eliminiert jede mögliche Fehlerbedingung (race condition) bezüglich der Eingangszwischenspeicher, ermöglicht eine maximale Ausgangsgültigkeitszeit und vervollständigt ein vollkommen gepipelintes Segment, wenn die integrierte Schal­ tung 80 in einem Datenverarbeitungssystem eingebaut ist. Auf ähnliche Art und Weise ist der Adreßbus 85 zum Spei­ cher 84 fortgesetzt, der einen 32-Bit Dateneingangsbus 91 und einen 32-Bit Datenausgangsbus 92 hat. Ein spezielles Bit des Ausgangsbusses 92 wird von einem Multiplexer 93 ausgewählt und in einem Verzögerungs-Flip-Flop 94 aufgenom­ men, das einen Teil des Ausgangsregisters 52 in Fig. 2 bil­ det.
Der Abschnitt 82 des Sekundär-Cache enthält einen Speicher 95 und einen Speicher 96. Jeder dieser Speicher ist ein 512 K-Bit CMOS statischer Speicher, angeordnet als 16K×32 Bit-Feld. Ein spezieller Block der 16K Blocks in jedem Feld wird durch eine 14-Bit Adresse (Adreßbits 23 bis 10) auf einen gemeinsamen Adreßbus 97 adressiert. Der Speicher 95 hat einen 32-Bit Dateneingangsbus 98 und einen 32 -Bit Da­ tenausgangsbus 99. Der Speicher 96 hat auch einen 32-Bit Dateneingangsbus 100 und einen 32-Bit Datenausgangsbus 101.
Zum Übertragen von Daten zwischen den Speichern 83 und 95 ist der Dateneingangsbus 86 des Speichers 83 parallel mit dem Dateneingangsbus 98 des Speichers 95 verdrahtet und diese Dateneingangsbusse sind ebenfalls parallel mit dem Ausgang eines 32-Bit Seriell/Parallel-Schieberegisters 102 verdrahtet bzw. verbunden. Das Seriell/Parallel-Schieberegi­ ster 102 bildet einen Teil eines Seriell/Parallel-Schiebere­ gisters 55, der in Fig. 2 gezeigt wird. Das Seriell/Pa­ rallel-Schieberegister 102 hat eine serielle Eingangslei­ tung 103, die ein Datenbit des Hauptspeicheranschlusses (27 in Fig. 1) entgegennimmt, und hat eine Seriell-Datenaus­ gangsleitung 104 zum Übertragen eines Datenbits zu dem Hauptspeicheranschluß (27 in Fig. 1). Das Seriell/Parallel- Schieberegister 102 enthält weiterhin 3 separate Parallel­ eingänge. Der erste Eingang (P0) ist mit einem Datenaus­ gangsbus 99 des Speichers 95 verbunden. Der zweite Parallel­ eingang (P1) hat 32 Eingangsleitungen, aber die Eingangslei­ tungen sind zusammen verdrahtet in eine einzelne Leitung 105 zum Empfangen eines Datenbits von dem Datenprozessoran­ schluß (26 in Fig. 1). Zudem enthält das Seriell/Parallel- Schieberegister 102 einen dritten Paralleleingang (P2), der mit dem Datenausgangsbus 87 des Speichers 83 verbunden ist.
Fig. 5 zeigt ein detailliertes schematisches Diagramm des Seriell/Parallel-Schieberegisters 102. Das Register 102 enthält 32 Verzögerungs-Flip-Flops 106, 107, 108 und zwei­ unddreißig 4-Eingangs-Multiplexer 109, 110 und 111. Die Kombination jedes Multiplexers und seines jeweils zugeord­ neten Verzögerungs-Flip-Flops ist bekannt als "multiplexbil­ dendes Abtastregister" (multiplexing scan register), das ähnlich dem H945 Zwischenspeicher-Macro der Motorola, Inc. MCA 10000 (MCA3) Zellenbibliothek ist. Die Multiplexer 109, 110 und 111 haben ihre Auswahleingänge parallel verdrahtet mit einem Zwei-Leitungs-Störungsbus 112.
In Fig. 4 ist der Speicher 84 und der Speicher 96 auf ähn­ liche Art und Weise über ein zweites Seriell/Parallel-Schie­ beregister 113 verbunden, das ähnlich zu dem Seriell/Pa­ rallel-Schieberegister 102 ist.
Um die Anzahl der Eingangs- und Ausgangsanschlüsse bzw. Kontakte zur integrierten Schaltung 80 zu reduzieren, ent­ hält die integrierte Schaltung einen Decoder 114, der in der Funktion identisch zum Decoder 56 nach Fig. 2 ist.
Zum Reduzieren der Gefährlichkeit von Taktunsymmetrie (cloc­ king skews) enthält die integrierte Schaltung 80 Eingangs­ zwischenspeicher (latches) 115, 116, 117, 118 und 119 für alle Steuer- und Adreßeingänge der integrierten Schaltung. Die Zwischenspeicher bzw. Pufferspeicher sind Durchlaß/Hal­ te-Zustandseinrichtungen, die die Eingänge bzw. Eingangssig­ nale während der ersten Hälfte jedes Takt-Zyklus durchlas­ sen und die die Eingangszustände während der zweiten Hälfte jedes Takt-Zyklus festhalten. Am Ende des Taktzyklus werden die Datenausgänge der Abschnitte des Primärspeichers 83, 84 in die Verzögerungs-Flip-Flops 90 und 94 eingetaktet und Daten werden in die Verzögerungs-Flip-Flops der Seriell/Pa­ rallel-Register 102 und 113 eingetaktet. Im Unterschied zu den Eingangszwischenspeichern, die Daten nur während der zweiten Hälfte des Clock-Zyklus halten bzw. zwischenspei­ chern, sind die Verzögerungs-Flip-Flops flankengetriggerte Bauelemente, die an der Taktflanke am Ende des Taktzyklus getriggert bzw. ausgelost werden.
Fig. 6 zeigt ein detailliertes schematisches Diagramm eines Abschnitts (95 in Fig. 4) des Speichers des Sekundär-Cache. Der Abschnitt des Speichers enthält 32 16K×1 Bit CMOS statische RAMS 121, 122, 123 und 124. Ein Leser, der mit dem Aufbau von CMOS-statischen RAMS (Speicher mit wahlfrei­ em Zugriff) nicht vertraut ist, kann in Hamid Partovi et al. US Anmeldeseriennummer 07/5 08 082 nachschauen, die am 11. April 1990 angemeldet worden ist. In Fig. 6 wird auch eine Zeitgabelogik 125 gezeigt, die sicherstellt, daß die CMOS-Statik RAM Speicher 121, 122, 123 und 124 Schreibfrei­ gabesignale erst erhalten, nachdem eine ausreichende Zeit für die einzelnen Speicherelemente der zu adressierenden Speicher abgelaufen ist. Diese Zeitgabelogik enthält ein UND-Gatter 126 und eine Signalverzögerungseinrichtung 127. Die Signalverzögerungseinrichtung besteht z. B. aus einer Kette von CMOS-Invertern, die an die Laufzeitverzögerung durch die Adreßdecoder in den CMOS-Speichern angepaßt sind.
Fig. 7 zeigt ein detailliertes schematisches Diagramm eines Adreßdecoders 114 und des ECL-Speichers 83 nach Fig. 4. Der Decoder 114 enthält eine erste Stufe von UND-Gattern 131, 132, 133 und 134, die einen 5-Bit-Binär-Decoder bil­ den. Der Adreßdecoder 114 enthält weiterhin eine zweite Stufe mit ODER-Gattern 135, 136, 137 und 138, um zu ermögli­ chen, daß Daten simultan in alle 32 Stellen eines adressier­ ten Cache-Blocksegments eingeschrieben werden können. Der Decoder 114 enthält weiterhin eine dritte Stufe mit UND-Gat­ tern zur Selbstzeitgabe der Schreiboperation. Diese dritte Stufe von Gattern 139, 140, 141 und 142 ist während der zweiten, nicht ausgegebenen bzw. unterdrückten Taktphase wirksam. Die unterdrückte bzw. nicht behauptete Taktphase muß von ausreichender Dauer sein, um beim schlechtesten Fall eine Schreibzeitgabe für die Speicherzelle zu ermögli­ chen. Zudem enthält die selbstzeitgebende (selftiming) Lo­ gik ein Gatter 143 und eine Verzögerungseinrichtung 144, die sicherstellen, daß der Schreibfreigabeimpuls erst dann ausgegeben wird, nachdem eine ausreichende Zeit zum Decodie­ ren der Adressen und zur Auswahl der adressierten Speicher­ zellen des ECL-Speichers 83 abgelaufen ist. Der ECL-Spei­ cher 83 enthält zweiunddreißig 256 Bit-Speicherzellenfelder (arrays) 145, 146, 147 und 148. Eine Person, die mit dem Aufbau der ECL-Speicherfelder nicht vertraut ist, kann eine Erläuterung dafür in Guglielmi et al. U.S. Patent 47 12 190 und Grundmann et al. U.S. Patent Anmeldungsserien­ nummer 07/3 06 445, die am 3. Februar 1989 eingereicht wor­ den ist, finden.
Ein Unterschied zwischen dem Abschnitt des Sekundärspei­ chers nach Fig. 6 und des Abschnitts des Primärspeichers nach Fig. 7 besteht darin, daß ein Einschreiben in den Se­ kundär-Cache-Speicher nach Fig. 6 immer für alle Sekundär­ speicherfelder 121, 122, 123 und 124 auftritt. Bei einem alternativen Aufbau kann der Abschnitt des Sekundarspei­ chers nach Fig. 6 mit einem Adreßdecoder ähnlich zu dem Decoder 114 nach Fig. 7 ausgestattet sein, um ein Schreiben in alle Sekundärspeicherfelder zu ermöglichen oder um ein Schreiben in ausgewählte Felder der Sekundärspeicherfelder zu ermöglichen.
Fig. 8 zeigt ein schematisches Diagramm eines Takteingangs­ puffers, der der integrierten Schaltung nach Fig. 4 er­ laubt, von einem Paar von komplementären Taktsignalen ange­ trieben bzw. angesteuert zu werden, oder von einem einzel­ nen Taktsignal. Der Eingangspuffer enthält einen Differenz­ verstärker mit einem Paar von NPN-Transistoren 172, 173, einem Paar von Last-Widerständen 174, 175 und einer Strom­ senke 176. Die Schaltung ist ähnlich einem ECL-Inverter, wobei die Eingangssignale an Eingangsanschlüssen 177 und 176 empfangen werden.
Um zu ermöglichen, daß der Puffer 171 von einem einzelnen Takteingangssignal an einem der Anschlüsse 177 und 178 ange­ steuert wird, weist der Eingangspuffer 171 weiterhin eine Quelle für eine Vorspannung 179 auf, die einen Wert hat, der dem Mittelwert zwischen dem hohen Wert und dem niedri­ gen Wert des Taktsignals entspricht. Die Vorspannungsquelle 179 ist mit Anschlüssen 177 und 178 über entsprechende Wi­ derstände 180 und 181 verbunden.
In Fig. 9 ist ein Flußdiagramm einer Steuerungssequenz zur Ausführung durch den Cache-Controller 28 nach Fig. 2 ge­ zeigt, um Nachfragen von der Verarbeitungseinheit 22 nach Fig. 1 zu bedienen. Der Cache-Controller 28 ist eine Maschi­ ne mit sequentiellem Zustand, die Ausgangssignale bestimmt und einen nächsten Zustand als verknüpfte Logikfunktion ihrer Eingangssignale und ihres gegenwärtigen Zustands be­ stimmt. Zum Zwecke der Erläuterung sind die Zustände und die Verknüpfungslogik in Flußdiagrammform gezeigt, um kla­ rer den Betrieb des hierarchischen Cache beschreiben zu können.
Der Cache-Controller 28 tritt in einen Anfangszustand in Antwort auf ein Systemrücksetzsignal ein, wie es beim Schritt 181 gezeigt ist. In diesem Rücksetzzustand gibt der Cache-Controller das Blockiersignal beim Schritt 182 aus und gibt ebenfalls das Flush-Signal beim Schritt 183 aus. Dann beim Schritt 184 wartet der Cache-Controller auf den nächsten Zyklus. Beim Schritt 185 wird das Blockiersignal erneut gesetzt und beim Schritt 186 wartet der Cache-Control­ ler auf eine ausreichende Anzahl von zusätzlichen Zyklen, um den Flush zu vervollständigen. Diese zusätzlichen Zyklen werden wegen der relativ langsamen Antwort des sekundären Kennzeichnungsspeichers 46 benötigt.
Beim Schritt 187 während eines neuen Taktzyklus wird das Flush-Signal gecleart und beim Schritt 188 wird das Schreib­ signal gecleart. Beim Schritt 189 wird das Blockiersignal (stall signal) gecleart bzw. gelöscht und beim Schritt 190 wird das Auswahlsignal (select signal) auf eins gesetzt, so daß das Seriell/Parallel-Register (55 in Fig. 2) jedes Lang­ wort vom Datenprozessor entgegennehmen wird. Bei diesem Taktzyklus antwortet der hierarchische Cache auf die erste Nachfrage des Datenprozessors (oder die erste Nachfrage, die einem Flush nachfolgt). Wenn diese erste Nachfrage eine "no-op" (kein Betrieb) oder ein Flush ist, wird sie einfach ignoriert. Wenn die erste Nachfrage eine Lese- oder Schreib­ nachfrage ist, wird der primäre Kennzeichnungsspeicher wäh­ rend dieses Zyklus adressiert, wobei die Adressierung des sekundären Kennzeichnungsspeichers bei diesem Zyklus an­ fängt, und Schreibdaten werden vom Seriell/Parallel-Regi­ ster am Ende dieses Zyklus entgegengenommen. Beim Schritt 191 wartet der Cache-Controller auf einen nächsten Zyklus.
Beim Schritt 192 überprüft der Cache-Controller, ob die vorherige Datenverarbeitungsnachfrage eine Lese- oder Schreibnachfrage war. Wenn nicht, dann muß sie ein no-op oder Flush gewesen sein. In diesem Fall löscht der Cache- Controller beim Schritt 193 das Lesesignal, um jede "Blase" (bubble) in der Adressenpipeline zwischen dem primären Kenn­ zeichnungsspeicher und den primären Datenspeichern (42 bzw. 41 der Fig. 2) zu eliminieren. Das Eliminieren jeder dieser Blasen würde es einer anhängenden Lesenachfrage gestatten, während des vorliegenden Zyklus beendet zu werden. Dann beim Schritt 194 überprüft der Cache-Controller, ob die vorliegende Nachfrage der Datenverarbeitungseinheit ein Flush ist. Wenn das der Fall ist, kehrt die Steuersequenz für den Cache-Controller zum Schritt 183 zurück, um die Flush-Operation wie oben beschrieben durchzuführen. Anson­ sten kehrt die Steuersequenz zum Schritt 189 zurück.
Wenn beim Schritt 192 der Cache-Controller findet, daß die vorhergehende Datenprozessornachfrage eine Lese- oder Schreibnachfrage war, überprüft der Cache-Controller beim Schritt 195 dann das primäre Treffersignal (HITP der Fig. 2) des Registers 71 nach Fig. 2, um zu bestimmen, ob ein Tref­ fer im primären Kennzeichnungsspeicher (42 in Fig. 2) wäh­ rend des vorhergehenden Zyklus stattgefunden hat. Wenn das der Fall ist, ist es notwendig, den Datenprozessor zu bloc­ kieren bzw. anzuhalten und den Primär-Cache auszurüsten, bevor die vorhergehende Lese- oder Schreibnachfrage beendet werden kann. Zu diesem Zweck setzt der Cache-Controller beim Schritt 196 das Schreibsignal und beim Schritt 197 das Blockiersignal, so daß der hierarchische Cache die Ad­ resse verwendet, die im Blockierregister (48 in Fig. 2) gespeichert ist, anstatt der Adresse der vorliegenden Nach­ frage, die auf dem Adreßbus (32 in Fig. 2) von der CPU ausgegeben wird. Beim nächsten Schritt 198 führt der Cache- Controller eine Anzahl von primären Ausrüstungszyklen durch, die weiter unten mit Bezug auf Fig. 10 beschrieben werden, um sicherzustellen, daß die erwünschten Daten in dem Primär-Cache gefunden werden können. Dann, beim Schritt 199 wird das Blockiersignal gelöscht, da die erwünschten Daten empfangen werden oder empfangen worden sind im Aus­ gangsregister (51 in Fig. 2) und Daten des Datenprozessors können in den Primär-Cache während des vorliegenden Zyklus eingeschrieben werden. Beim Schritt 200 überprüft der Cache- Controller, ob die vorhergehende Nachfrage des Datenprozes­ sors eine Lesenachfrage ist, die vorhergehend während des Auffüllens von dem Hauptspeicher anerkannt worden ist (Schritt 242 der Fig. 11). In diesem Fall kehrt die Steuer­ sequenz zum Schritt 194 zurück, um zu überprüfen, ob die vorliegende Nachfrage ein Flush ist.
Beim Schritt 201 bestimmt der Cache-Controller, ob die frü­ here Nachfrage eine Lese- oder Schreibnachfrage war. Wenn die frühere Nachfrage eine Schreibnachfrage ist, wird das Schreibsignal beim Schritt 202 gesetzt, um die Situation zu beherrschen, wenn die Schritte 196 bis 199 umgangen wer­ den, wenn ein Treffer beim Schritt 195 gefunden wird. Dann beim Schritt 203 wird das WEPW Signal ausgegeben, so daß ein Datenlangwort des Datenprozessors vom Seriell/Parallel- Register 55 in den Datenspeicher 41 des Primär-Cache einge­ schrieben wird.
Wenn beim Schritt 201 der Cache-Controller herausfindet, daß die frühere Nachfrage eine Lesenachfrage ist, überprüft der Cache-Controller beim Schritt 204, ob das Schreibsignal gesetzt worden ist. Dies geschieht, um dem Fall nachzukom­ men, wo die Schritte 196 bis 200 umgangen werden, und zwar dann, wenn ein primärer Treffer beim Schritt 195 gefunden wird. Wenn das Schreibsignal nicht gesetzt ist, dann sind die erwünschten Lesedaten bereits im Ausgangsregister (52 der Fig. 2). Ansonsten treten die Lesedaten im Ausgangsregi­ ster (52 der Fig. 2) während des nächsten Zyklus auf, so daß beim Schritt 206 gültige Lesedaten während des näch­ sten Zyklus anerkannt bzw. bestätigt werden. Die Schritte 205 und 206 können z. B. mit der Hilfe eines Flip-Flops vom Verzögerungstyp durchgeführt werden, das asynchrone Setz- und Rücksetz-Eingänge hat. In diesem Fall werden gültige Lesedaten während des vorliegenden Zyklus unter Einsatz des asynchronen Setzeingangs anerkannt. Gültige Lesedaten werden während des nächsten Zyklus anerkannt, indem eine logische Eins auf dem Verzögerungseingang des Verzögerungs- Flip-Flops während des vorliegenden Zyklus ausgegeben wird. Der Datenausgang dieses Verzögerungs-Flip-Flops ist ein Bit des Anerkennungssignals auf dem Anerkennungsbus (35 in Fig. 2) des Cache-Controllers. In jedem Fall wird die Steuersequenz für den Cache-Controller im Schritt 194 fort­ gesetzt.
Fig. 10 zeigt ein Flußdiagramm der Steuerzyklen zum Ausrü­ sten des Primärcache, wenn der Cache-Controller beim Schritt 195 der Fig. 9 herausfindet, daß ein Fehlzugriff auf den Primärcache aufgetreten ist. Anders ausgedrückt, gibt das Flußdiagramm nach Fig. 10 die Schritte in dem Block 198 der Fig. 9 wieder. Beim ersten Schritt 211 der Fig. 10 überprüft der Cache-Controller, ob der Cache-Block der in dem primären Kennzeichnungsspeicher (42 nach Fig. 2) während des letzten Zyklus adressiert worden ist, modifi­ ziert worden ist. Um dies durchzuführen, schaut der Cache- Controller auf das modifizierte Signal des Registers 71 nach Fig. 2. Wenn dieses modifizierte Signal ausgegeben wird, dann muß der Cache-Controller zuerst eine Rückschreib­ sequenz durchführen, um die modifizierten Daten zurück in den Sekundärspeicher oder den Hauptspeicher zu schreiben, und zwar bevor der adressierte Cache-Block mit den erwünsch­ ten Daten aufgefüllt wird.
Um das Rückschreiben durchführen zu können, wird beim Schritt 212 SEL auf zwei gesetzt, so daß die Inhalte des modifizierten Cache-Blocks in das Seriell/Parallel-Register (55 in Fig. 2) gebracht werden. Beim nächsten Schritt 213 wird INADR auf eins gesetzt, um die Adresse des modifizier­ ten Cache-Blocks zum Adressieren des Sekundär-Caches auszu­ wählen. Dann wartet der Cache-Controller eine vorgegebene Anzahl von Zyklen lang beim Schritt 214, die ausreichen, das auf den Sekundär-Cache zugegriffen wird. Als nächstes überprüft der Cache-Controller das sekundäre Treffersignal (HITS) des Registers 72 nach Fig. 2 beim Schritt 215. Da das modifizierte Zeichen des Primärcache nur durch Auffül­ len von dem Sekundärcache gesetzt wird, sollte ein Treffer vorhanden gewesen sein, wenn auf den Sekundär-Cache zuge­ griffen wird. Deshalb, wenn ein Treffer in dem Sekundär- Cache nicht aufgetreten ist, stellt der Cache-Controller einen Fehler beim Schritt 216 fest und gibt einen Fehler­ code zur Datenverarbeitungseinheit zurück. Der Fehlercode bzw. die Fehlerinformation veranlaßt den Datenprozessor z. B. dazu, einen Speicherfehler bzw. eine Speicherstörung oder einen Speicherdefekt zu erkennen, die Ausführung des gegenwärtigen Programms abzubrechen bzw. zu beenden und den Cache-Controller zurückzusetzen.
Wenn ein sekundärer Treffer beim Schritt 215 gefunden wird, kann der Cache-Controller dann die modifizierten Daten in den Datenspeicher (45 in Fig. 2) des Sekundärcache schrei­ ben. Für diesen Zweck setzt der Cache-Controller beim Schritt 217 WESD auf eins. Dann, beim Schritt 218, setzt der Cache-Controller MODS auf eins, um ein modifiziertes Bit in den Kennzeichnungsspeicher (46 in Fig. 2) des Sekun­ där-Cache zu schreiben. Dann wartet der Cache-Controller beim Schritt 219 einige Zyklen lang darauf, die Schreibope­ ration zu beenden. Schließlich löscht der Cache-Controller beim Schritt 220 WESD und MODS, um die Schreiboperation abzubrechen, und der Cache-Controller löscht beim Schritt 221 INADR, um den Sekundärspeicher mit der Adresse der er­ wünschten Daten zum Auffüllen des Primärcache zu adressie­ ren. Dies vervollständigt die Rückschreibsequenz.
Die Auffüllsequenz bzw. Füllsequenz beginnt beim Schritt 222. Der Cache-Controller setzt SEL für den Transfer von Daten des Sekundärcache in das Seriell/Parallel-Register (55 in Fig. 2) auf null. Dann wartet der Cache-Controller beim Schritt 223 eine Anzahl von Zyklen, um auf den Sekun­ därcache zugreifen zu können. Als nächstes überprüft der Cache-Controller beim Schritt 224, ob ein Treffer in dem Sekundär-Cache aufgetreten ist. Wenn nicht, führt der Cache- Controller eine Anzahl von Sekundärcache-Speicherausrü­ stungszyklen, die weiter unten stehend in bezug auf Fig. 11 beschrieben werden, durch, um Daten des Hauptspeichers in das Seriell/Parallel-Register zu setzen, die Inhalte des Seriell/Parallel-Registers in die Primär-Cachedatenspei­ cher und Sekundär-Cachedatenspeicher zu schreiben und um die Modifizierungszeichen in den Kennzeichnungsspeichern des Primär- Cache und des Sekundär-Cache zu löschen. Diese Sekundärspeicherausrüstzyklen rüsten (fix-up) auch den Pri­ märspeicher aus.
Wenn ein Treffer in dem Sekundär-Cache beim Schritt 224 gefunden wird, dann setzt der Cache-Controller beim Schritt 226 SEL gleich eins, um das Seriell/Parallel-Register 55 mit irgendwelchen Schreibdaten zu füllen, die in dem Daten­ blockierregister (49 der Fig. 2) gehalten sind. Dann beim Schritt 227 gibt der Cache-Controller WEPD während des vor­ liegenden Zyklus aus, um die Inhalte des Seriell/Parallel- Registers in den Primärdatenspeicher (41 in Fig. 2) zu schreiben und das Modifizierungszeichen in dem primären Kennzeichnungsspeicher (42 in Fig. 2) zu löschen. Nach dem Warten auf den nächsten Zyklus beim Schritt 228, löscht der Cache-Controller WEPD beim Schritt 229 und kehrt zum Schritt 199 der Fig. 9 zurück.
Fig. 11 zeigt ein Flußdiagramm der Schritte zum Ausrüsten des Sekundärspeichers. Diese Schritte entsprechen dem Block 225 nach Fig. 10.
Beim ersten Schritt 231 der Fig. 11 löscht der Cache-Con­ troller OUTADR, um eine Leseadresse zum Hauptspeicher zu übertragen. Dann überprüft der Cache-Controller beim Schritt 232, ob das Modifizierungszeichen des Sekundär- Cacheblocks gesetzt worden ist. Wenn nicht, sendet der Cache-Controller eine Auffüllnachfrage an den Hauptspei­ cher beim Schritt 233. Ansonsten sendet der Cache-Control­ ler beim Schritt 234 eine Auffüll- und Rückschreibnachfra­ ge an den Hauptspeicher und beim Schritt 235, beim nächsten Zyklus, setzt der Cache-Controller OUTADR gleich eins, um die Schreibadresse zum Hauptspeicher zu übertragen.
Als nächstes wartet der Cache-Controller beim Schritt 236 auf eine Anerkennung vom Hauptspeicher, die anzeigt, daß der Hauptspeicher die erwünschten Auffülldaten jetzt über­ trägt. In Antwort darauf setzt der Cache-Controller SEL gleich drei beim Schritt 237, damit ein serielles Schieben im Seriell/Parallel-Register (55 in Fig. 2) ausgeführt wird, um Daten zwischen dem Hauptspeicher und dem Seri­ ell/Parallel-Register zu transferieren. Beim Schritt 238 wartet der Cache-Controller 32 Taktzyklen darauf, den Daten­ transfer abzuschließen. Dann setzt der Cache-Controller beim Schritt 239 die Steuersignale, um die Daten und die Kennzeichnungen in die Primär-Cachespeicher und Sekundär- Cachespeicher zu schreiben. Insbesondere setzt der Cache- Controller WESD auf eins, setzt WEST auf eins und setzt WEPD auf eins. Dann, beim Schritt 240 wartet der Cache-Con­ troller auf den nächsten Zyklus. Beim nächsten Zyklus sind die Auffülldaten in den Primärspeicher 41 geschrieben und Daten in der Verarbeitung werden in das Ausgangsregister 52 transferiert. Deshalb überprüft der Cache-Controller beim Schritt 241, ob die frühere Nachfrage des Datenprozessors eine Lesenachfrage ist. Wenn das der Fall ist, bestätigt der Cache-Controller beim Schritt 242 dem Datenprozessor, daß die erwünschten Daten erhältlich bzw. zugänglich sind.
Da das Schreiben in den Primärspeicher beendet worden ist, beim Schritt 243, löscht der Cache-Controller WEPD. Das Füllen des Sekundärcache nimmt jedoch eine zusätzliche An­ zahl von Zyklen in Anspruch. Deshalb wartet der Cache-Con­ troller eine Anzahl von Zyklen beim Schritt 243. Dann wäh­ rend des letzten Zyklus beim Schreiben von Daten in den Sekundärcache, beim Schritt 245, setzt der Cache-Controller SEL gleich eins und dann, beim Schritt 246, wartet er auf den nächsten Zyklus. Dies stellt sicher, daß das Seriell/ Parallel-Register mit irgendwelchen Schreibdaten vom Daten­ prozessor versehen wird, so daß eine Schreibnachfrage wäh­ rend des nächsten Zyklus durchgeführt werden kann. Schließ­ lich löscht der Cache-Controller beim Schritt 247 WESD und WEST und kehrt zum Schritt 199 der Fig. 9 zurück.
In der Fig. 12 werden Modifikationen bezüglich der Kennzei­ chnungsspeicher und der verbundenen Schaltungen gezeigt, um einen hierarchischen zwei-Weg-Satz-assoziativen Cache zu bilden. Zwei-Weg-Satz-assoziativ bedeutet, daß jede Adresse direkt zwei Cacheblöcken zugeordnet ist. Dies wird bewerkstelligt, indem für den Primärcache (24 in Fig. 1) und den Sekundärcache (25 in Fig. 1) zwei separat adressier­ bare Kennzeichnungsspeicher, und nicht nur einer, in Verbin­ dung mit dem Datenspeicher vorgesehen sind. In Fig. 12 wer­ den z. B. die Kennzeichnungsspeicher 301 und 302 gezeigt, die mit dem Datenspeicher 303 verbunden sind. Der Datenspei­ cher 303 ist entweder der Primärdatenspeicher oder der Se­ kundärdatenspeicher, die durch ein Zusammenstellen der inte­ grierten Schaltungen 80 der Fig. 4 gebildet werden. Jeder der Kennzeichnungsspeicher hat jedoch eine Hälfte der An­ zahl der adressierbaren Blocks wie der Datenspeicher 303 und deshalb hat der Datenspeicher eine zusätzliche Adreß­ eingangsleitung 304. Diese Adreßeingangsleitung 304 em­ pfängt ein Bank-Auswahlsignal (BANK) von einem Cache-Con­ troller 305.
Während eines Speicherzugriffsbetriebs muß der Cache-Con­ troller die Bank auswählen, die Daten verbunden mit einer spezifizierten Adresse hat, indem er Treffersignale für jede der zwei "Banken" des Cache-Speichers überprüft. Die Kennzeichnungsspeicher sind physikalisch in zwei Banken aufgeteilt, da es erwünscht ist, sie parallel zu adressie­ ren. Dies ist nicht so wichtig für das Adressieren des Da­ tenspeichers, da das Adressieren des Datenspeichers mit dem Adressieren des Kennzeichnungsspeichers gepipelinet ist und der Datenspeicher adressiert werden kann, nachdem die gewünschte Bank ausgewählt ist.
Das Treffersignal für den Kennzeichnungsspeicher 301 wird durch einen Kennzeichnungsvergleicher 306 erzeugt und das Treffersignal für den Kennzeichnungsspeicher 302 wird von einem Kennzeichnungsvergleicher 307 erzeugt. Die Treffersig­ nale werden zusammen in einem Register 308 empfangen und zum Cache-Controller 305 fortgeführt. Die Kennzeichnungs­ speicher 301 und 302 haben auch jeweilige Register 309 bzw. 310 zum Entgegennehmen der Kennzeichnung, die mit jedem Cacheblock verbunden ist. Während eines Rückschreibbetriebs wird die Kennzeichnung, die mit den modifizierten Daten, die zurückgeschrieben werden sollen, verbunden ist, von einem Multiplexer 311 ausgewählt und auf einen Adreßbus 312 ausgegeben, der zum Sekundärspeicher oder dem Hauptspei­ cher führt. Wenn der Cache gefüllt ist oder modifzierte Daten empfängt, wird nur der Kennzeichnungsspeicher für die selektierte Bank aktualisiert. Dies wird durch Decodie­ ren der Schreib-Freigabesignale (WM, WE) mit dem Bankaus­ wahlsignal (BANK) durchgeführt, indem ein Inverter 313 und UND-Gatter 314, 315, 316 und 317 eingesetzt werden.
Wenn ein Fehlzugriff in beiden Cacheblöcken auftritt, die direkt der spezifizierten Adresse zugeordnet sind, ist es notwendig, einen der Cacheblöcke zum Wiederauffüllen auszu­ wählen. Für diesen Zweck erinnert sich ein adressierbarer Speicher 318 daran, welcher Cacheblock zuletzt aufgefüllt worden ist.
Die zusätzlichen Schritte der Cache-Controller-Sequenz für den zwei-Wege-Satz-assoziativen Cache der Fig. 12 werden in dem Flußdiagramm nach Fig. 13 gezeigt. In einem ersten Schritt 321 überprüft der Cache-Controller, ob es einen Treffer in der ausgewählten Form gibt. Wenn nicht, über­ prüft der Cache-Controller beim Schritt 322, ob es einen Treffer in einer anderen Bank gegeben hat. Wenn das der Fall ist, schaltet der Cache-Controller das Bank-Auswahlsig­ nal beim Schritt 323 und setzt auch das Schreibzeichen auf 1, so daß ein Lesen oder Schreiben im gegenwärtigen Zyklus durchgeführt wird, wobei die Bank eingesetzt wird, für die der Treffer aufgetreten ist. Wenn in keinem der Kennzeich­ nungsspeicher ein Treffer festzustellen ist, muß einer der Cacheblöcke gefüllt werden. Beim Schritt 324 wird die Bank, die den zuallerletzt wiederaufgefüllten Cacheblock enthält, ausgewählt und Cache-Wiederauffüllzyklen werden beim Schritt 325 durchgeführt. Für den Primärspeicher umfassen die Wiederauffüllzyklen 325 z. B. die Schritte 196 bis 200 der Fig. 9.
Gemäß den obenstehenden Ausführungen ist ein Cachespeicher in integrierter Schaltung beschrieben worden, in dem es zwei Niveaus bzw. Stufen von Speichern mit wahlfreiem Zu­ griff (random access memory) in einer einzigen integrierten Schaltung gibt. Die zwei Speicherstufen sind durch Datenbus­ se verbunden, die eine große Anzahl von parallelen Leitun­ gen haben, diese Datenbusse jedoch sind vollständig inner­ halb der integrierten Schaltung enthalten. Dies ermöglicht eine extrem hohe Trefferrate, eine sehr geringe Wartezeit, eine schnelle Zugriffszeit und eine sehr dichte Packung, die es vielen der integrierten Schaltungen erlaubt, so nahe wie möglich zu einem Datenprozessor angeordnet zu sein. Bei der bevorzugten Ausführungsform der integrierten Schal­ tung sind die zwei Stufen der Speicher mit wahlfreiem Zu­ griff durch einen Seriell/Parallel-Puffer verbunden, der selektiv als Schreibpuffer, als Wiederauffüllpuffer, als Rückschreibpuffer oder als Seriell/Parallel-Schieberegister zum Austauschen von Rückschreib- und Auffülldaten zu und von dem Hauptspeicher arbeiten kann. Deshalb ist die inte­ grierte Schaltung eine vollfunktionale Komponente zum Auf­ bauen der Datenwege eines hierarchischen Cache und sie ist innerhalb eines weiten Bereichs von Cacheorganisationen und Datenprozessorsystemen anwendbar.

Claims (20)

1. Hierarchischer Cachespeicher, der aufweist:
einen Primärcachespeicher hoher Geschwindigkeit;
einen Sekundärcachespeicher mit niedriger Geschwindigkeit und größerer Speicherkapazität als der Primärcachespeicher;
einen Datenprozessoranschluß;
einen Hauptspeicheranschluß;
Datenwegschaltungen, die den Primärcachespeicher mit dem Prozessoranschluß, den Sekundärcachespeicher mit dem Primär­ cachespeicher und den Hauptspeicheranschluß mit dem Sekun­ därcachespeicher verbinden, wobei die Datenwegschaltungen aufweisen Datenwegauswahleinrichtungen zum Auswählen von Datenwegen von dem Sekundärcachespeicher zum Primärcache­ speicher und von dem Hauptspeicheranschluß zum Sekundär­ cachespeicher und
eine Steuereinrichtung, die mit den Cachespeichern und den Datenwegauswahleinrichtungen zum Transferieren nachgefrag­ ter Daten von dem Sekundärcachespeicher zum Primärcachespei­ cher verbunden ist, wenn die nachgefragten Daten im Primär­ cachespeicher nicht vorhanden sind, und zum Transferieren der nachgefragten Daten von dem Hauptspeicheranschluß zum Sekundärcachespeicher, wenn die nachgefragten Daten im Se­ kundärcachespeicher nicht vorhanden sind,
wobei der hierarchische Cachespeicher eine Vielzahl von integrierten Schaltungen aufweist und wobei jede der inte­ grierten Schaltungen einen Abschnitt des Primärcachespei­ chers, einen Abschnitt des Sekundärcachespeichers, der eine größere Speicherkapazität hat als der Abschnitt des Primär­ cachespeichers, einen Abschnitt der Datenwegschaltungen, die die Abschnitte des Primärcachespeichers und des Sekun­ därcachespeichers verbinden, und einen Abschnitt der Daten­ wegauswahleinrichtungen zum Auswählen von Datenwegen von dem Abschnitt des Primärcachespeichers zum Abschnitt des Sekundärcachespeichers und vom Hauptspeicheranschluß zum Abschnitt des Sekundärcachespeichers aufweist.
2. Hierarchischer Cachespeicher nach Anspruch 1, dadurch gekennzeichnet, daß die Datenwegauswahleinrichtungen weiter­ hin aufweisen:
eine Einrichtung zum Selektieren von Datenwegen von einem Datenprozessoranschluß zu dem Primärcachespeicher, von dem Primärcachespeicher zu dem Sekundärcachespeicher und von dem Sekundärcachespeicher zum Hauptspeicheranschluß, wobei die Steuereinrichtungen weiterhin aufweisen:
eine Einrichtung zum Durchführen einer Rückschreibopera­ tion, wenn ein Datenort in dem Primärcachespeicher benötigt wird, indem modifizierte Daten von dem Datenort des Primär­ cachespeichers zum Sekundärcachespeicher transferiert wer­ den, und wenn ein Datenort des Sekundärcachespeichers benö­ tigt wird, indem modifizierte Daten von dem Datenort in dem Sekundärcachespeicher zum Hauptspeicheranschluß transfe­ riert werden, wobei der Abschnitt der Datenauswahleinrich­ tungen in jeder der integrierten Schaltungen einen Ab­ schnitt der Einrichtungen zum Auswählen der Datenwege zwi­ schen dem Datenprozessoranschluß und dem Abschnitt des Pri­ märcachespeichers, zwischen dem Abschnitt des Primärcache­ speichers und dem Sekundärcachespeicher und zwischen dem Abschnitt des Sekundärcachespeichers und dem Hauptspeicher­ anschluß aufweist.
3. Hierarchischer Cachespeicher nach Anspruch 2, dadurch gekennzeichnet, daß die Datenwegauswahleinrichtung ein Se­ riell/Parallel-Schieberegister enthält, das einen ersten Paralleldateneingang verbunden mit Datenausgangsleitungen des Sekundärcachespeichers hat, einen zweiten Paralleldaten­ eingang verbunden mit dem Datenprozessoranschluß hat, einen dritten Paralleldateneingang verbunden mit Datenausgangslei­ tungen des Sekundärcachespeichers hat, einen zweiten Para­ leldateneingang verbunden mit dem Datenprozessoranschluß hat, einen dritten Paralleldateneingang, verbunden mit den Datenausgangsleitungen des Primärcachespeichers hat, einen Paralleldatenausgang, parallel verbunden mit den Datenein­ gangsleitungen des Primärcachespeichers und Dateneingangs­ leitungen des Sekundärcachespeichers, einen seriellen Daten­ eingang hat, der mit dem Hauptspeicheranschluß verbunden ist, und einen seriellen Datenausgang hat, der mit dem Hauptspeicheranschluß verbunden ist.
4. Hierarchischer Cachspeicher nach Anspruch 2, dadurch gekennzeichnet, daß die Datenwegschaltungen weiterhin ent­ halten: einen Multiplexer mit Datenausgangsleitungen, die mit dem Datenprozessoranschluß verbunden sind, eine größere Anzahl von Dateneingangsleitungen, die mit den Datenausgangsleitun­ gen des Primärcachespeichers verbunden sind, und Auswahl­ steuereingänge, die mit den Adreßleitungen verbunden sind.
5. Hierarchischer Cachespeicher nach Anspruch 4, gekenn­ zeichnet durch einen Decoder mit Eingängen, die mit den Adreßleitungen verbunden sind und mit Ausgängen, die mit den Schreibfreigabeeingängen des Primärcachespeichers ver­ bunden sind.
6. Hierarchischer Cachespeicher nach Anspruch 1, gekenn­ zeichnet durch einen Adreßbus mit Adreßleitungen, die die Adreßeingänge des Primärspeichers parallel mit entspre­ chenden Adreßeingängen des Sekundärspeichers verbinden.
7. Hierarchischer Cachespeicher nach Anspruch 1, dadurch gekennzeichnet, daß der Primärcachespeicher ECL-Speicher­ Elemente aufweist und daß der Sekundärcachespeicher MOSFET Speicherelemente aufweist.
8. Hierarchischer Cachespeicher nach Anspruch 7, dadurch gekennzeichnet, daß die MOS-FET Speicherelemente statische CMOS Speicherelemente sind.
9. Integrierte Schaltung, die in Kombination aufweist,
einen Primärspeicher mit wahlfreiem Zugriff hoher Geschwin­ digkeit;
einen Sekundärspeicher mit wahlfreiem Zugriff niedrigerer Geschwindigkeit und größerer Speicherkapazität als der Pri­ märspeicher;
einen ersten Datenanschluß;
einen zweiten Datenanschluß; und
Datenwegschaltungen, die den Primärspeicher mit dem ersten Datenanschluß verbinden, den Sekundärspeicher mit dem Pri­ märspeicher und den zweiten Datenanschluß mit dem Sekundär­ speicher, wobei die Datenwegschaltungen Datenwegauswahlein­ richtungen zum Selektieren von Datenwegen zwischen dem Se­ kundärspeicher und dem Primärspeicher zum Übertragen von Daten von dem Sekundärspeicher zum Primärspeicher und zwi­ schen dem zweiten Datenanschluß und dem Sekundärspeicher zum Übertragen von Daten von dem zweiten Datenanschluß zum Sekundärspeicher enthalten.
10. Integrierte Schaltung nach Anspruch 9, dadurch gekenn­ zeichnet, daß die Datenwegauswahleinrichtungen weiterhin enthalten eine Einrichtung zum Auswählen von Datenwegen zwischen dem ersten Datenanschluß und dem Primärspeicher zum Übertragen von Daten von dem ersten Datenanschluß zum Primärspeicher, zwischen dem Primärspeicher und dem Sekun­ därspeicher zum Übertragen von Daten von dem Primärspeicher zum Sekundärspeicher und zwischen dem Sekundärspeicher und dem zweiten Datenanschluß zum Übertragen von Daten von dem Sekundärspeicher zum zweiten Datenanschluß.
11. Integrierte Schaltung nach Anspruch 10, dadurch gekenn­ zeichnet, daß die Datenwegauswahleinrichtungen enthalten ein Seriell/Parallel-Schieberegister, das aufweist einen ersten Paralleldateneingang verbunden mit Datenausgangslei­ tungen des Sekundärspeichers, einen zweiten Paralleldaten­ eingang verbunden mit dem Datenprozessoranschluß, einen dritten Paralleldateneingang verbunden mit den Datenaus­ gangsleitungen und dem Sekundärspeicher, einen Parallelda­ tenausgang parallel verbunden mit Dateneingangsleitungen des Primärspeichers und Dateneingangsleitungen des Sekundär­ speichers, einen Serielldateneingang verbunden mit dem zwei­ ten Datenanschluß und einen Serielldatenausgang verbunden mit dem zweiten Datenanschluß.
12. Integrierte Schaltung nach Anspruch 10, dadurch gekenn­ zeichnet, daß die Datenwegschaltungen weiterhin enthalten einen Multiplexer mit Datenausgangsleitungen, die mit dem ersten Datenanschluß verbunden sind, einer größeren Anzahl von Dateneingangsleitungen, die mit den Datenausgangsleitun­ gen des Primärspeichers verbunden sind, und mit Auswahl­ steuerungseingängen, die mit den Adreßleitungen verbunden sind.
13. Integrierte Schaltung nach Anspruch 12, gekennzeichnet durch einen Decoder mit Eingängen, die mit den Adreßlei­ tungen verbunden sind, und mit Ausgängen, die mit den Schreibfreigabeeingängen des Primärspeichers verbunden sind.
14. Integrierte Schaltung nach Anspruch 9, gekennzeichnet durch einen Adreßbus mit Adreßleitungen, die Adreßeingän­ ge des Primärspeichers parallel mit entsprechenden Adreß­ eingängen des Sekundärspeichers verbinden.
15. Integrierte Schaltung nach Anspruch 9, gekennzeichnet durch Eingangsanschlüsse für Adreß- und Steuersignale; Durchlaß/Halte-Zwischenspeicher mit Takteingängen, die pa­ rallel mit einer Taktleitung verbunden sind, mit Datenein­ gängen, die mit den Eingangsanschlüssen verbunden sind, und mit Datenausgängen, die mit Adressen und Steuereingängen des Primärspeichers und des Sekundärspeichers und der Aus­ wahleinrichtung verbunden sind, wobei die Datenwegschaltun­ gen aufweisen: zumindest ein flankengetriggertes Flip-Flop mit einem Dateneingang, der mit dem Datenausgang des Primär­ speichers verbunden ist, mit einem Datenausgang, der mit dem ersten Datenanschluß verbunden ist, und einem Taktein­ gang, der mit der Taktleitung parallel mit den Takteingän­ gen der Durchlaß/Halte-Zwischenspeicher verbunden ist, wo­ bei die Zwischenspeicher die Adressen und Kontrollsignale während eines ausgegebenen Taktzustands halten und das flan­ kengetriggerte Flip-Flop den Zustand während eines Taktüber­ gangs von dem ausgegebenen Taktzustand zu einem nichtausge­ gebenen Taktzustand ändert.
16. Integrierte Schaltung nach Anspruch 9, dadurch gekenn­ zeichnet, daß die Datenwegschaltungen aufweisen: eine Ein­ richtung zum Transferieren von Daten in Synchronismus mit einem Taktsignal, und daß die integrierte Schaltung weiter­ hin aufweist: einen Takteingangspuffer mit einem Ausgang, der das Taktsignal abgibt, und auch mit Differenzeingängen, die mit zwei entsprechenden Eingangsanschlüssen verbunden sind, und eine Quelle für eine Vorspannung, die mit zumin­ dest einem der Eingangsanschlüsse verbunden ist, um dadurch Takteingangsanschlüsse zum Annehmen von entweder einem Paar von komplementären Taktsignalen oder einem einzelnen Takt­ signal zum Synchronisieren der Einrichtung zum Transferie­ ren von Daten bereitzustellen.
17. Integrierte Schaltung nach Anspruch 9, dadurch gekenn­ zeichnet, daß die Primärspeicher ECL-Speicherelemente auf­ weist und daß der Sekundärspeicher CMOS-Speicherelemente aufweist.
18. Integrierte Schaltung, die in Kombination aufweist
einen Primärspeicher mit wahlfreiem Zugriff hoher Geschwin­ digkeit, wobei der Primärspeicher eine Vielzahl von Adreß­ leitungen, eine Vielzahl von Dateneingängen, eine Vielzahl von Datenausgängen und eine Vielzahl von Schreibfreigabeein­ gängen aufweist;
einen Sekundärspeicher mit wahlfreiem Zugriff niedrigerer Geschwindigkeit und größerer Speicherkapazität als der Pri­ märspeicher, wobei der Sekundärspeicher eine Vielzahl von Adreßeingängen, eine Vielzahl von Dateneingängen und eine Vielzahl von Datenausgängen hat;
einen ersten Datenanschluß, der zumindest eine Datenein­ gangsleitung und zumindest eine Datenausgangsleitung auf­ weist;
einen zweiten Datenanschluß, der zumindest eine Datenein­ gangsleitung und zumindest eine Datenausgangsleitung auf­ weist;
Adreßleitungen, die die Adreßeingänge des Primärspeichers parallel mit jeweiligen Adreßeingängen des Sekundärspei­ chers verbindet;
einen Multiplexer mit Auswahlsteuereingängen, Dateneingän­ gen, die mit den Datenausgängen des Primärspeichers verbun­ den sind, und mit zumindest einem Datenausgang, der mit der Datenausgangsleitung des ersten Datenanschlusses verbunden ist;
einen Decoder mit Eingängen, die parallel mit den Auswahl­ steuereingängen des Multiplexers verbunden sind, und mit Ausgängen, die mit jeweiligen Schreibeingängen des Primär­ speichers verbunden sind, und
mit einem Seriell/Parallel-Schieberegister mit einem Pa­ ralleldatenausgang, der parallel mit den Dateneingängen des Primärspeichers und den Dateneingängen des Sekundärspei­ chers verbunden ist, mit einem ersten Paralleldateneingang, der mit den Datenausgängen des Sekundärspeichers verbunden ist, mit einem zweiten Paralleldateneingang, der mit der Dateneingangsleitung des ersten Datenanschlusses verbunden ist, mit einem dritten Paralleldateneingang, der mit dem Datenausgang des Sekundärspeichers verbunden ist, mit einem Serielldateneingang, der mit den Dateneingangsleitungen des zweiten Datenanschlusses verbunden ist, und mit einem Serielldatenausgang, der mit der Datenausgangsleitung des zweiten Datenanschlusses verbunden ist.
19. Integrierte Schaltung nach Anspruch 18, gekennzeich­ net durch Eingangsanschlüsse für Adreß- und Steuersignale, durch Durchlaß/Halte-Zwischenspeicher mit Takteingängen, die parallel mit einer Taktleitung verbunden sind, mit Da­ teneingängen, die mit jeweiligen Eingangsanschlüssen verbun­ den sind, und mit Datenausgängen, die mit Adreß- und Steu­ ereingängen des Primärspeichers und Sekundärspeichers und der Auswahleinrichtung verbunden sind, durch mindestens ein flankengetriggertes Flip-Flop mit einem Dateneingang, der mit dem Datenausgang des Multiplexers verbunden ist, mit einem Datenausgang, der mit dem ersten Datenanschluß verbun­ den ist, und mit einem Takteingang, der mit der Taktleitung parallel mit den Takteingängen der Durchlaß/Halte-Zwischen­ speicher verbunden ist, und durch einen Takteingangspuffer mit einem Ausgang, der mit der Taktleitung verbunden ist, und ebenfalls mit Differenzeingängen, die mit zwei entspre­ chenden Eingangsanschlüssen verbunden sind, und durch eine Quelle für eine Vorspannung, die mit zumindest einem der Eingangsanschlüsse verbunden ist.
20. Integrierte Schaltung nach Anspruch 18, dadurch gekenn­ zeichnet, daß die Primärspeicher im wesentlichen aus ECL- Logikelementen besteht und der Sekundärspeicher im wesentli­ chen aus CMOS-Logik-Elementen besteht.
DE4132833A 1990-10-05 1991-10-02 Hierarchischer Cache-Speicher Expired - Fee Related DE4132833C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US59376390A 1990-10-05 1990-10-05

Publications (2)

Publication Number Publication Date
DE4132833A1 true DE4132833A1 (de) 1992-04-09
DE4132833C2 DE4132833C2 (de) 1997-12-18

Family

ID=24376065

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4132833A Expired - Fee Related DE4132833C2 (de) 1990-10-05 1991-10-02 Hierarchischer Cache-Speicher

Country Status (6)

Country Link
US (1) US5285323A (de)
JP (1) JP2505661B2 (de)
CA (1) CA2043493C (de)
DE (1) DE4132833C2 (de)
FR (1) FR2667706B1 (de)
GB (1) GB2248952B (de)

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307356A (en) * 1990-04-16 1994-04-26 International Business Machines Corporation Interlocked on-chip ECC system
GB2256512B (en) * 1991-06-04 1995-03-15 Intel Corp Second level cache controller unit and system
US5469555A (en) * 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
US5813030A (en) * 1991-12-31 1998-09-22 Compaq Computer Corp. Cache memory system with simultaneous access of cache and main memories
US5649154A (en) * 1992-02-27 1997-07-15 Hewlett-Packard Company Cache memory system having secondary cache integrated with primary cache for use with VLSI circuits
GB2264577B (en) * 1992-02-27 1995-06-14 Hewlett Packard Co Cache memory system
JPH05324468A (ja) * 1992-05-21 1993-12-07 Fujitsu Ltd 階層化キャッシュメモリ
US5809531A (en) * 1992-09-21 1998-09-15 Intel Corporation Computer system for executing programs using an internal cache without accessing external RAM
US6046753A (en) * 1992-09-25 2000-04-04 Quantel Limited Electronic image processing system for modifying initial image data
US5870574A (en) * 1993-04-12 1999-02-09 Silicon Graphics, Inc. System and method for fetching multiple groups of instructions from an instruction cache in a RISC processor system for execution during separate cycles
US5568442A (en) * 1993-05-17 1996-10-22 Silicon Graphics, Inc. RISC processor having improved instruction fetching capability and utilizing address bit predecoding for a segmented cache memory
US5689679A (en) * 1993-04-28 1997-11-18 Digital Equipment Corporation Memory system and method for selective multi-level caching using a cache level code
US6219773B1 (en) 1993-10-18 2001-04-17 Via-Cyrix, Inc. System and method of retiring misaligned write operands from a write buffer
US5615402A (en) * 1993-10-18 1997-03-25 Cyrix Corporation Unified write buffer having information identifying whether the address belongs to a first write operand or a second write operand having an extra wide latch
US5584009A (en) * 1993-10-18 1996-12-10 Cyrix Corporation System and method of retiring store data from a write buffer
JPH07129456A (ja) * 1993-10-28 1995-05-19 Toshiba Corp コンピュータシステム
US5671391A (en) * 1994-01-10 1997-09-23 Ncr Corporation Coherent copyback protocol for multi-level cache memory systems
DE69530720T2 (de) * 1994-03-09 2003-11-27 Sun Microsystems, Inc. Verzögertes Cachespeicherschreiben eines Speicherungsbefehls
US5604889A (en) * 1994-06-15 1997-02-18 Texas Instruments Incorporated Memory management system for checkpointed logic simulator with increased locality of data
US5577227A (en) * 1994-08-04 1996-11-19 Finnell; James S. Method for decreasing penalty resulting from a cache miss in multi-level cache system
US5813031A (en) * 1994-09-21 1998-09-22 Industrial Technology Research Institute Caching tag for a large scale cache computer memory system
GB2293668B (en) * 1994-09-30 1999-09-29 Advanced Risc Mach Ltd Accessing data memories
US5694614A (en) * 1995-02-15 1997-12-02 Ast Research, Inc. Minimum latency bus interface circuit with reduced I/O pin count through multi-mode operation
US5617347A (en) * 1995-03-17 1997-04-01 Fujitsu Limited Cache memory system and method thereof for storing a staged memory item and a cache tag within a single cache array structure
DE69635066T2 (de) * 1995-06-06 2006-07-20 Hewlett-Packard Development Co., L.P., Houston Unterbrechungsschema zum Aktualisieren eines Lokalspeichers
JPH0916470A (ja) 1995-07-03 1997-01-17 Mitsubishi Electric Corp 半導体記憶装置
US5835941A (en) * 1995-11-17 1998-11-10 Micron Technology Inc. Internally cached static random access memory architecture
US5898828A (en) * 1995-12-29 1999-04-27 Emc Corporation Reduction of power used by transceivers in a data transmission loop
US6223260B1 (en) * 1996-01-25 2001-04-24 Unisys Corporation Multi-bus data processing system in which all data words in high level cache memories have any one of four states and all data words in low level cache memories have any one of three states
US6021467A (en) * 1996-09-12 2000-02-01 International Business Machines Corporation Apparatus and method for processing multiple cache misses to a single cache line
US5895487A (en) * 1996-11-13 1999-04-20 International Business Machines Corporation Integrated processing and L2 DRAM cache
GB2339369B (en) * 1998-07-09 2003-06-18 Advanced Risc Mach Ltd Apparatus and method for controlling timing of transfer requests within a data processing apparatus
US6519682B2 (en) * 1998-12-04 2003-02-11 Stmicroelectronics, Inc. Pipelined non-blocking level two cache system with inherent transaction collision-avoidance
US6415362B1 (en) * 1999-04-29 2002-07-02 International Business Machines Corporation Method and system for write-through stores of varying sizes
US6687863B1 (en) * 1999-07-29 2004-02-03 Matsushita Electric Industrial Co., Ltd. Integrated circuit internal signal monitoring apparatus
GB2401967B (en) * 1999-12-30 2005-01-05 Intel Corp Dual cache system
US6591332B1 (en) * 2000-04-28 2003-07-08 Hewlett-Packard Development Company, L.P. Apparatus and method for tracking flushes of cache entries in a data processing system
US6765813B2 (en) 2000-08-14 2004-07-20 Matrix Semiconductor, Inc. Integrated systems using vertically-stacked three-dimensional memory cells
US6711043B2 (en) 2000-08-14 2004-03-23 Matrix Semiconductor, Inc. Three-dimensional memory cache system
US6768661B2 (en) * 2002-06-27 2004-07-27 Matrix Semiconductor, Inc. Multiple-mode memory and method for forming same
EP1627335A1 (de) * 2003-03-07 2006-02-22 Nokia Corporation Verfahren und vorrichtung zur frequenzzählung
US8687010B1 (en) 2004-05-14 2014-04-01 Nvidia Corporation Arbitrary size texture palettes for use in graphics systems
US8736628B1 (en) 2004-05-14 2014-05-27 Nvidia Corporation Single thread graphics processing system and method
US8736620B2 (en) * 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US8432394B1 (en) 2004-05-14 2013-04-30 Nvidia Corporation Method and system for implementing clamped z value interpolation in a raster stage of a graphics pipeline
US20060007234A1 (en) * 2004-05-14 2006-01-12 Hutchins Edward A Coincident graphics pixel scoreboard tracking system and method
US8860722B2 (en) * 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
US8416242B1 (en) 2004-05-14 2013-04-09 Nvidia Corporation Method and system for interpolating level-of-detail in graphics processors
US7868902B1 (en) * 2004-05-14 2011-01-11 Nvidia Corporation System and method for pixel data row forwarding in a 3-D graphics pipeline
US7724263B2 (en) * 2004-05-14 2010-05-25 Nvidia Corporation System and method for a universal data write unit in a 3-D graphics pipeline including generic cache memories
US8743142B1 (en) 2004-05-14 2014-06-03 Nvidia Corporation Unified data fetch graphics processing system and method
US8411105B1 (en) 2004-05-14 2013-04-02 Nvidia Corporation Method and system for computing pixel parameters
US8711155B2 (en) * 2004-05-14 2014-04-29 Nvidia Corporation Early kill removal graphics processing system and method
US7079156B1 (en) * 2004-05-14 2006-07-18 Nvidia Corporation Method and system for implementing multiple high precision and low precision interpolators for a graphics pipeline
JP4451717B2 (ja) * 2004-05-31 2010-04-14 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理方法
WO2006040726A1 (en) * 2004-10-15 2006-04-20 Koninklijke Philips Electronics N.V. Method of operating a rfid system
KR100798008B1 (ko) * 2005-09-07 2008-01-24 노키아 코포레이션 빈도수 카운팅을 위한 방법 및 장치
US7539819B1 (en) * 2005-10-31 2009-05-26 Sun Microsystems, Inc. Cache operations with hierarchy control
US7917685B2 (en) * 2006-05-04 2011-03-29 Micron Technology, Inc. Method for reading a multilevel cell in a non-volatile memory device
US8537168B1 (en) 2006-11-02 2013-09-17 Nvidia Corporation Method and system for deferred coverage mask generation in a raster stage
US8441497B1 (en) 2007-08-07 2013-05-14 Nvidia Corporation Interpolation of vertex attributes in a graphics processor
US9183607B1 (en) 2007-08-15 2015-11-10 Nvidia Corporation Scoreboard cache coherence in a graphics pipeline
US9256514B2 (en) 2009-02-19 2016-02-09 Nvidia Corporation Debugging and perfomance analysis of applications
US8885422B2 (en) 2009-06-12 2014-11-11 Hewlett-Packard Development Company, L.P. Hierarchical on-chip memory
US8645589B2 (en) 2009-08-03 2014-02-04 National Instruments Corporation Methods for data acquisition systems in real time applications
GB2484458A (en) 2010-10-04 2012-04-18 Thorn Security Commissioning detector units of an alarm system by means of a remote infrared based communication tool
US20130083047A1 (en) * 2011-09-29 2013-04-04 Prashant Shamarao System and method for buffering a video signal
CN103186608B (zh) * 2011-12-30 2017-08-08 北京谊安医疗系统股份有限公司 一种队列序列化式处理数据的方法和装置
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9477575B2 (en) 2013-06-12 2016-10-25 Nvidia Corporation Method and system for implementing a multi-threaded API stream replay
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4712190A (en) * 1985-01-25 1987-12-08 Digital Equipment Corporation Self-timed random access memory chip
EP0335113A2 (de) * 1988-02-26 1989-10-04 Hitachi, Ltd. Einchip-Cache-Speicher und Cache-Speichervorrichtung mit mehreren parallel geschalteten Einchip-Cache-Speichern
DE4005319A1 (de) * 1989-02-22 1990-08-23 Siemens Ag Verfahren und anordnung zur aufrechterhaltung der datenkonsistenz in einem multiprozessorsystem mit privaten cachespeichern
US5107462A (en) * 1989-02-03 1992-04-21 Digital Equipment Corporation Self timed register file having bit storage cells with emitter-coupled output selectors for common bits sharing a common pull-up resistor and a common current sink

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3377435D1 (en) * 1983-07-27 1988-08-25 Ibm Deutschland Digital memory
DE3584318D1 (de) * 1984-06-29 1991-11-14 Ibm Hochgeschwindigkeitspufferspeicheranordnung fuer schnelle datenuebertragung.
US4961153A (en) * 1987-08-18 1990-10-02 Hewlett Packard Company Graphics frame buffer with strip Z buffering and programmable Z buffer location
US5029105A (en) * 1987-08-18 1991-07-02 Hewlett-Packard Programmable pipeline for formatting RGB pixel data into fields of selected size
US5157776A (en) * 1987-12-30 1992-10-20 Zenith Data Systems Corporation High speed memory for microcomputer systems
GB8805908D0 (en) * 1988-02-12 1988-04-13 Int Computers Ltd Data memory system
US4905188A (en) * 1988-02-22 1990-02-27 International Business Machines Corporation Functional cache memory chip architecture for improved cache access
US5023776A (en) * 1988-02-22 1991-06-11 International Business Machines Corp. Store queue for a tightly coupled multiple processor configuration with two-level cache buffer storage
US4914656A (en) * 1988-06-28 1990-04-03 Storage Technology Corporation Disk drive memory
US5058051A (en) * 1988-07-29 1991-10-15 Texas Medical Instruments, Inc. Address register processor system
US4992961A (en) * 1988-12-01 1991-02-12 Hewlett-Packard Company Method and apparatus for increasing image generation speed on raster displays
US5151997A (en) * 1989-08-10 1992-09-29 Apple Computer, Inc. Computer with adaptable video circuitry

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4712190A (en) * 1985-01-25 1987-12-08 Digital Equipment Corporation Self-timed random access memory chip
EP0335113A2 (de) * 1988-02-26 1989-10-04 Hitachi, Ltd. Einchip-Cache-Speicher und Cache-Speichervorrichtung mit mehreren parallel geschalteten Einchip-Cache-Speichern
US5107462A (en) * 1989-02-03 1992-04-21 Digital Equipment Corporation Self timed register file having bit storage cells with emitter-coupled output selectors for common bits sharing a common pull-up resistor and a common current sink
DE4005319A1 (de) * 1989-02-22 1990-08-23 Siemens Ag Verfahren und anordnung zur aufrechterhaltung der datenkonsistenz in einem multiprozessorsystem mit privaten cachespeichern

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Design & Elektronik, Ausg. 19 vom 18.9.90, S. 86-88 *
IEEE Journal of Solid-State Circuits, Vol. 25, Nr. 1, Februar 1990, S. 5-10 *

Also Published As

Publication number Publication date
FR2667706A1 (fr) 1992-04-10
GB2248952B (en) 1994-08-10
JPH04230551A (ja) 1992-08-19
GB2248952A (en) 1992-04-22
DE4132833C2 (de) 1997-12-18
FR2667706B1 (fr) 1996-12-06
JP2505661B2 (ja) 1996-06-12
CA2043493A1 (en) 1992-04-06
GB9113583D0 (en) 1991-08-14
CA2043493C (en) 1997-04-01
US5285323A (en) 1994-02-08

Similar Documents

Publication Publication Date Title
DE4132833C2 (de) Hierarchischer Cache-Speicher
DE3687307T2 (de) Computeranordnungen mit cache-speichern.
DE69427606T2 (de) Rechnersystem, das den Schreibschutzstatus im Systemverwaltungszustand übergeht
DE69432314T2 (de) Cachespeicher mit aufgeteiltem pegel
DE69427421T2 (de) Speichersteuereinheit mit hohem Grade der Gleichzeitigkeit und Arbeitsteilung
DE68923403T2 (de) Verfahren und Anordnung zur Adressierung eines Seitenmodus-Speichers in einem Computersystem.
DE3650063T2 (de) FIFO-Speicher mit verminderter Durchfallzeit.
DE2854485C2 (de) Datenverarbeitungsanlage
DE69129569T2 (de) Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE69203842T2 (de) Speichersteuerungsvorrichtung mit Snoop-Mechanismus.
DE69715328T2 (de) System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen
DE69031658T2 (de) Vorrichtung und verfahren für instandhaltung von cache/zentralspeicherkonsistenz
DE102004009497B3 (de) Chipintegriertes Mehrprozessorsystem und Verfahren zur Kommunikation zwischen mehreren Prozessoren eines chipintegrierten Mehrprozessorsystems
DE4291778B4 (de) Cache-Speichereinrichtung für ein Mikroprozessorsystem mit einem Cache-Speicher mit asynchronem Datenpfad
DE69312192T2 (de) Aufteilung des buszugriffs zwischen mehreren endlichen automaten mit minimaler wartezeit und priorisierung von ähnlichen zyklustypen
DE3855031T2 (de) Kopiesystem mit "Hot-standby"-Speicher
DE3783370T2 (de) Schaltung zur blockierungsverhinderung von hochprioritaetsanforderungen an eine systemsteuerung.
DE69228582T2 (de) Vorrichtung zur Vermeidung von Prozessorblockierungen in einem Multiprozessorsystem
DE69422120T2 (de) Synchroner dynamischer Speicher mit wahlfreiem Zugriff
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
DE102005032949A1 (de) Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE112008001679T5 (de) Cache-Speicher mit konfigurierbarer Assoziativität
DE3923253C2 (de) Mikroprozessor

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 12/08

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee