DE69030368T2 - Tandem-Cache-Speicher - Google Patents

Tandem-Cache-Speicher

Info

Publication number
DE69030368T2
DE69030368T2 DE69030368T DE69030368T DE69030368T2 DE 69030368 T2 DE69030368 T2 DE 69030368T2 DE 69030368 T DE69030368 T DE 69030368T DE 69030368 T DE69030368 T DE 69030368T DE 69030368 T2 DE69030368 T2 DE 69030368T2
Authority
DE
Germany
Prior art keywords
cache
information
address
block
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69030368T
Other languages
English (en)
Other versions
DE69030368D1 (de
Inventor
Ferruccio Zulian
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.)
Bull HN Information Systems Inc
Original Assignee
Bull HN Information Systems Inc
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 Bull HN Information Systems Inc filed Critical Bull HN Information Systems Inc
Publication of DE69030368D1 publication Critical patent/DE69030368D1/de
Application granted granted Critical
Publication of DE69030368T2 publication Critical patent/DE69030368T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

Landscapes

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

Description

  • Die vorliegende Erfindung bezieht sich auf einen Tandem- Cache-Speicher, der ein Cache-Speicher ist, der zwei Cache- Speicher aufweist, welche parallel arbeiten und sich gegenseitig unterstützen, und zwar zum Zweck des schnellen Bedienens von Informationsanforderungen, die durch einen Prozessor ausgegeben werden.
  • Es ist bekannt, daß bei den modernen Datenverarbeitungssystemen, und um die Leistung zu erhöhen, die durch den "Flaschenhals" der Zugriffszeit auf einen Arbeitsspeicher durch einen Systembus wesentlich begrenzt ist, Pufferspeicher oder "Cache-Speicher" verwendet werden, von denen jeder mit einem Prozessor in dem System gekoppelt ist. Jeder Cache speichert Informationen, die von dem entsprechenden Prozessor zuletzt verwendet worden sind, und liefert solche Informationen auf eine Prozessoranforderung hin, ohne daß auf den Systembus zugegriffen werden muß.
  • Mehrere Cache-Speicher werden auch verwendet, um ihren Wirkungsgrad zu verbessern. Jeder ist dafür vorgesehen, um eine spezielle Art von Informationen zu speichern. Insbesondere ist es bekannt, ein Paar von Cache-Speichern jeweils zum Speichern von Daten und Befehlen zu verwenden. Ferner ist auch die Verwendung von hierarchischen Cache-Speichern bekannt.
  • Im gegenwärtigen Stand der Technik können zwei Arten von Cache-Speichern unterschieden werden:
  • - Cache-Speicher zum Speichern von zuletzt verwendeten unabhängigen Informationsblöcken;
  • - Cache-Speicher zum Speichern von sequentiellen Informationsblöcken, von denen erwartet wird, daß sie verwendet werden.
  • Die Cache-Speicher der ersten Art umfassen im wesentlichen ein "Verzeichnis" oder eine Liste von Blockadressen und einen Speicher, der die Informationsblöcke speichert, deren Adresse in dem Verzeichnis aufgelistet ist. Die Adresse des Blocks ist das Adressenfeld, das allen Adressen der Informationspunkte in dem Block gemeinsam ist.
  • Die Informationspunkte in dem gleichen Block sind "aneinander angrenzend", und zwar in dem Sinn, daß sich ihre Adressen lediglich in den niederstwertigen Adressbits unterscheiden (ihre Anzahl hängt von der Blockgröße ab), daß jedoch die Adressen der einzelnen Blöcke völlig unabhängig voneinander sind.
  • Der Betrieb der ersten Art von Cache-Speichern ist bekannt: Wenn ein Prozessor Informationen bei einer gegebenen Adresse anfordert, wird die Adresse mit den Adressen, die in dem Cache-Verzeichnis gespeichert sind, verglichen. Wenn dieselbe mit einer solcher Adresse übereinstimmt, sind die angeforderten Informationen in dem Cache gespeichert und können aus demselben gelesen werden.
  • Andernfalls fordert der Cache einen Informationsblock, der die Informationen enthält, von dem Arbeitsspeicher (über den Systembus) an. Sobald der Block in dem Cache gespeichert ist, liefert der Cache die angeforderten Informationen zu der Verarbeitungseinheit, wobei eine Verzögerung oder Latenzzeit vorhanden ist, die der Zeit entspricht, die benötigt wird, um den ganzen Block zu lesen, oder im besten Fall (für sehr ausgefeilte Cache-Speicher) die der Zeit entspricht, die benötigt wird, um den vorausgehenden Blockabschnitt zu lesen, welcher die angeforderten Informationen enthält.
  • In jedem Fall kann der Cache nicht weiter von dem Prozessor verwendet werden, selbst wenn die angeforderten Informationen zu dem Prozessor geliefert werden, sobald sie in dem Cache verfügbar sind, und derselbe ist für die gesamte Zeit, die benötigt wird, um den ganzen Block zu laden, "latent".
  • Die Latenzzeit kann ferner vergrößert werden, wenn dem Laden des Blocks eine "Ersetzungs"-operation vorausgehen muß, d.h. durch das Speichern der Informationen, die in einer bestimmten Zone des Cache gespeichert sind, in dem Arbeitsspeicher, um in dem Cache einen Platz für den neuen Informationsblock freizumachen.
  • Die erste Art von Cache-Speichern liefert trotz der oben erwähnten Begrenzungen den bemerkenswerten Vorteil, daß, solange die angeforderten Informationen in dem Cache enthalten sind, dieselben zu dem Prozessor auf eine schnelle Art und Weise und eine unbegrenzte Anzahl von Malen geliefert werden können, und zwar unabhängig von der Reihenfolge, in der Informationspunkte angefordert werden.
  • Der Cache der zweiten Art arbeitet auf eine unterschiedliche Art und Weise. Dieselben weisen eine Kapazität auf, die auf ein paar Blocks begrenzt sind (üblicherweise zwei oder vier), auf die durch streng sequentielle Adressen in aufsteigender Reihenfolge verwiesen wird. Ein Cache dieser Art ist beispielsweise in der Europäischen Veröffentlichung EP-A-0293720 beschrieben.
  • Gemäß dieser Anmeldung wird, wenn Informationen angefordert werden, welche nicht in dem Cache enthalten sind, der Cache mit dem Block geladen, der die angeforderten Informationen enthält, und zusätzlich mit dem nächsten Block, der in der Reihenfolge folgt. Die angeforderten Informationen werden zu dem anfordernden Prozessor, sobald sie verfügbar sind, geliefert. Wenn die angeforderten Informationen in einem Block sind, der bereits in dem Cache enthalten ist, wenn jedoch der nächste folgende Block nicht in dem Cache enthalten ist, dann liefert der Cache die angeforderten Informationen ohne Verzögerung zu dem anfordernden Prozessor.
  • Zusätzlich ruft der Cache den nächsten folgenden Block von dem Arbeitsspeicher ab und speichert denselben.
  • Solange daher die Informationspunkte, die aufeinanderfolgend angefordert werden, in fortlaufenden und aufsteigenden Adressen geordnet sind, werden sie sehr schnell von dem Cache geliefert, der sie bereits von dem Arbeitsspeicher erhalten hat, und zwar mit "Vorabruf"-Operationen. Dieser Vorteil wird offensichtlich in dem Falle von "Sprüngen" verloren. Zusätzlich müssen Informationen in dem Fall, in dem die gleichen Informationen aufeinanderfolgend angefordert werden, wieder aus dem Arbeitsspeicher gelesen werden, was folglich zu einer Besetzung der Betriebsmittel (des Arbeitsspeichers und des Systembusses) führt.
  • Das Dokument IBM TECHNICAL DISCLOSURE BULLETIN, Bd. 31, Nr. 3, August 1988, New York, S. 303 - 306: "High performance microprocessor memory system" offenbart eine Vorabrufeinheit, die den Cache-Speichern der zweiten Art ähnlich ist, welche auf vorteilhafte Weise in Kombination mit einem Mikroprozessor-Cache-System der ersten Art verwendet werden kann.
  • Die Vorabrufeinheit und der Mikroprozessor-Cache würden von einem architekturellen Standpunkt aus hierarchisch Kaskaden-verbunden oder -strukturiert sein, wie es vorher erwähnt wurde. Die erste Art würde zwischen den Mikroprozessor und den Systembus geschaltet sein, während die zweite Art zwischen den Systembus und den Speicher geschaltet werden würde.
  • Immer wenn ein Fehlschlag ("MISS") in dem Cache-Speicher der ersten Art auftritt, würde als Ergebnis eine Speicherlesen- Anforderung durch den Systembus zu dem Speichersystem gesendet werden, und, wenn die angeforderten Informationen in dem Cache der zweiten Art verfügbar sind, würden dieselben zu dem Mikroprozessor und zu dem Cache der ersten Art viel schneller gesendet werden, als wenn sie ursprünglich von dem Speicher in die Vorabrufeinheit gelesen werden müßten.
  • Es wird jedoch ein Systembus mit einer möglichen Konkurrenzsituation und der damit verbundenen Latenzzeit benötigt werden, wodurch immer eine relativ lange Übertragungsverzögerung aufgrund des Systembusses vorhanden sein wird.
  • Zusätzlich würde im Falle eines Mehrprozessorsystems oder selbst im Falle, in dem Einheiten einen direkten Speicherzugriff haben, das sequentielle Vorabrufen, das durch die Vorabrufeinheit geschaffen wird, keinen wesentlichen Vorteil bieten, da Speicherzugriffe von den mehreren Prozessoren (oder Einheiten) vermischt sind und die Sequenzialität von Adressen bei den Speicherzugriffen im allgemeinen verloren wird.
  • Die US-A-4,443,488 beschreibt ein Cache-Speichersystem, welches bis zu einem gewissen Grad die Funktionen der Cache- Speicher der ersten Art und der Cache-Speicher der zweiten Art durch Aufteilen des Cache in eine Mehrzahl von Regionen kombiniert. In jeder Region werden Informationen in sequentieller Reihenfolge vorabgerufen, wobei die Informationen, die in jeder Region gespeichert sind, unabhängig von denen in den anderen Regionen adressiert werden.
  • Die Anordnung ist sehr kompliziert und resultiert sehr oft in einer Teilausnutzung der gesamten Größe des Cache-Speichers, da die Regionen eine feste Größe haben müssen, wohingegen die Informationssequenzen, die in denselben gespeichert sind, eine variable Länge aufweisen, welche im allgemeinen kürzer als die feste Größe ist.
  • Ferner wird der Cache-Speicherzyklus, um es zu ermöglichen, daß der Cache gelesen wird, selbst wenn der Cache-Speicher sequentiell zu aufeinanderfolgenden Zeitpunkten eine Mehrzahl von seguentiellen Informationsblöcken lädt, in zwei halbe Zyklen aufgeteilt, während denen der Cache jeweils gelesen bzw. beschrieben wird. Als Folge wird der Cache inhärent durch eine Latenzzeit betroffen, welche zwar kurz aber nicht vernachlässigbar ist.
  • Die Erfindung ist in Anspruch 1 definiert.
  • Die vorliegende Erfindung überwindet die Nachteile der Art von Cache-Speichern, welche vorher beschrieben wurden, indem ein cache-Speichersystem geschaffen wird, welches im folgenden als Tandem-Cache bezeichnet wird, welches tatsächlich aus zwei Cache-Speichern besteht, welche gekoppelt sind, um parallel zu arbeiten, und welche beide zwischen einem Prozessor und dem Systembus positioniert sind.
  • Ein erster Cache mit einer relativ hohen Kapazität ist organisiert, um eine Mehrzahl von unabhängigen Blöcken von Informationspunkten zu speichern. Der zweite Cache ist organisiert, um eine begrenzte Anzahl von Blöcken, vorzugsweise vier, aus sequentiellen Informationspunkten zu speichern.
  • Der erste Cache weist einen Adresseneingang auf, der mit dem Adresseneingang des zweiten Cache verbunden ist, während sein Informationen-Eingang/Ausgang mit dem Informationenausgang des zweiten Cache verbunden ist.
  • Wenn ein Prozessor Informationen anfordert, welche in beiden Cache-Speichern nicht verfügbar sind, führt der zweite Cache aufeinanderfolgende Leseoperationen durch und ruft den Block, der die angeforderten Informationen enthält, und die Blöcke mit aufeinanderfolgenden Adressen in aufsteigender Reihenfolge von einem Arbeitsspeicher ab, wobei dieselben in geeignete Register geladen werden, die angeordnet sind, um einen Puffer zu bilden.
  • Sobald die angeforderten Informationen verfügbar sind, werden sie zu dem anfordernden Prozessor weitergeleitet, wobei zum gleichen Zeitpunkt der Block, der dieselben enthält, in den ersten Cache geladen wird.
  • Die Informationsblöcke mit aufeinanderfolgenden Adressen werden nicht in dem ersten Cache gespeichert, was den Vorteil hat, daß der erste Cache frei bleibt, um auf nachfolgende Anforderungen von dem Prozessor zu antworten.
  • Das Latenzproblem wird daher vermieden, und der erste Cache wird nicht mit Informationen gefüllt, deren folgende Verwendung nicht sicher ist.
  • Daher wird sogar das sog. "Trefferverhältnis" erhöht.
  • Wenn ein Prozessor einen Informationspunkt anfordert, der nicht in dem ersten Cache enthalten ist, der jedoch in dem zweiten enthalten ist, liefert der zweite Cache denselben unmittelbar und überträgt zum gleichen Zeitpunkt den Block, der die angeforderten Informationen enthält, zu dem ersten Cache.
  • Wenn ferner ein Raum, der ausreichend ist, um eine Mehrzahl von Blöcken zu enthalten, in dem zweiten Cache als Ergebnis einer solchen Übertragung frei wird, wird eine Mehrzahl von Blöcken aus dem Arbeitsspeicher in einem Stoßbetrieb ("Burst"-Betrieb) gelesen und in dem freien Raum gespeichert, ohne daß die Operation des ersten Cache gestört wird.
  • Wenn die angeforderten Informationen in dem ersten Cache verfügbar sind, werden sie zu dem anfordernden Prozessor geliefert, und der zweite Cache bleibt inaktiv.
  • Die Merkmale und die Vorteile der Erfindung werden aus der folgenden Beschreibung einer bevorzugten Form eines Ausführungsbeispiels und aus den beigefügten Zeichnungen offensichtlicher.
  • Fig. 1 zeigt in Blockdiagrammform ein Datenverarbeitungssystem, das einen Tandem-Cache-Speicher gemäß der Erfindung aufweist.
  • Fig. 2 zeigt in Blockdiagrammform die Architektur eines Tandem-Cache-Speichers gemäß der Erfindung.
  • Fig. 3 und 4 zeigen in Logikflußdiagrammform den Betrieb und die Zustände, die von dem Cache-Speicher von Fig. 2 und von seiner verbundenen Steuerlogik eingenommen werden.
  • Fig. 1 zeigt in Blockdiagrammform ein Datenverarbeitungssystem, das den Tandem-Cache-Speicher der vorliegenden Erfindung aufweist.
  • Das System umfaßt einen Prozessor 1, der eine Speicherverwaltungseinheit aufweist, den Tandem-Cache-Speicher 2, einen Arbeitsspeicher 3 und mindestens eine Eingabe/Ausgabe-Steuerung I/OC 4 (I/OC = Input/Output Controller).
  • Ein Systembus 5, welcher einen Satz von Leitungen ABUS (ABUS = Adressenbus) zum Übertragen von Adressen, einen Satz von Leitungen DBUS (DBUS = Datenbus) zum Übertragen von Daten oder Befehlen und einen Satz von Leitungen CBUS (CBUS = Steuerbus) zum Übertragen von Steuersignalen aufweist, bildet einen Kommunikationsweg für den Prozessor 1, den Arbeitsspeicher 3 und die I/OC 4. Die Kommunikation zwischen dem Prozessor 1 und dem Bus 5, damit derselbe einen Zugriff auf den Arbeitsspeicher hat, tritt durch den Cache-Speicher 2 auf. Vorzugsweise, jedoch nicht notwendigerweise ist der Cache-Speicher nur zum Speichern von Befehlen und zum Abrufen derselben von dem Arbeitsspeicher gedacht.
  • Daten-Lesen/Schreiben-Operationen in dem Arbeitsspeicher, die durch den Prozessor 1 angefordert werden, werden durch eine Schnittstelleneinheit 6 durchgeführt, welche wiederum einen Datencache enthalten kann.
  • Auf diese Art und Weise der Architektur kann der Tandem- Cache-Speicher 2 auf eine sehr einfache Art und Weise implementiert und auf eine ohne weiteres verständliche Art und Weise beschrieben werden.
  • Der Cache-Speicher 2 umfaßt einen ersten Cache 7 mit einer relativ hohen Kapazität, einen zweiten Vorabruf-Cache 8 und zwei Sätze von Logikgattern 9, 10 zur Verbindung mit dem Bus 5.
  • Insbesondere verbinden die Gatter 9 die Cache-Speicher 7, 8 mit dem Adressenbus ABUS, während die Gatter 10 den Cache 8 mit dem Datenbus DBUS verbinden.
  • Die beiden Cache-Speicher 7, 8 empfangen durch einen Kanal 11 Leseadressen, die durch den Prozessor 1 erzeugt werden.
  • Wenn in dem Cache 7 ein Treffer auftritt, sendet der Cache 7 ein aktiviertes Signal HIT (HIT = Treffer) über eine Leitung 12 zu dem Cache 8.
  • Derselbe sendet ferner den angeforderten Befehl über einen Kanal 14 (DATA; DATA = Daten) zu dem Prozessor 1.
  • Vorzugsweise, jedoch nicht notwendigerweise, weisen der Kanal 14, der Datenbus DBUS und der Arbeitsspeicher 3 einen Vier-Byte-Parallelismus auf.
  • Vier Byte ist ferner die Blockgröße in den Cache-Speichern 7, 8.
  • Aus Klarheits- und Einfachheitgründen wird ferner angenommen, daß die Befehle aus Vier-Byte-Worten bestehen und immer ausgerichtet sind (d.h. die zwei niederstwertigen Adressenbits der Befehle sind immer Null).
  • Im Falle eines Fehlschlags sendet der Cache 7 ein deaktiviertes Signal HIT zu dem Cache 8.
  • Wenn der Befehl, auf den durch die Leseadresse in dem Kanal 11 verwiesen wird, in dem Cache 8 gespeichert ist, sendet der Cache 8 die angeforderten Informationen über den Kanal 14 zu dem Prozessor 1.
  • Zusätzlich steuert derselbe den Cache 7 über die Steuerleitung 15, um die gleichen Informationen zu dem Cache 7 über den Kanal 14 zu übertragen.
  • Wenn ferner in dem Cache 8 ein bestimmter Platz zum Speichern einer Mehrzahl von Informationsblöcken verfügbar ist, erzeugt der Cache 8 in einem bidirektionalen Kanal 16 die Adressen der Blöcke, die als nächstes denen folgen, die bereits in dem Cache 8 gespeichert sind, fordert der Cache 8 einen Zugriff auf den Systembus (über Steuerleitungen 117) und steuert der Cache, sobald er denselbe erhalten hat, eine Sequenz von Speicherlesen-Operationen im Stoßbetrieb, wodurch die empfangenen Informationen in den verfügbaren Raum geladen werden.
  • Die Informationen werden über Gatter 10 und einen Kanal 17 empfangen.
  • Wenn der Befehl, der durch den Prozessor 1 angefordert wird, sowohl in dem Cache 7 als auch in dem Cache 8 nicht vorhanden ist, arbeitet der Cache 8, wie es vorher beschrieben wurde, um von dem Arbeitsspeicher den Block, der den angeforderten Befehl enthält, und eine Mehrzahl von nächsten folgenden geordneten Blöcken abzurufen.
  • Sobald der Block, der die angeforderten Informationen enthält, von dem Cache 8 empfangen wird, wird derselbe zu dem Prozessor 1 gesendet und gleichzeitig in den Cache 7 geladen.
  • Bidirektionale Gatter 9, die durch den Cache 18 zum Empfangen von Adressen von dem Systembus geeignet gesteuert werden, versetzen die zwei Cache-Speicher 7, 8 in die Lage, systematisch "Busüberwachungs"-Operationen durchzuführen.
  • Selbst wenn die cache-Speicher 7, 8 lediglich zum Speichern von Befehlen, d.h. Informationen, die allgemein nicht modifiziert werden können, gedacht sind, ist es ratsam, die Blöcke, die in beiden Cache-Speichern gespeichert sind, jedesmal ungültig zu machen, wenn die entsprechenden Blöcke, die in dem Speicher 3 gespeichert sind, durch andere Informationen ersetzt werden.
  • Für diesen Zweck kann der Cache 8 über den Kanal 171 erfassen, ob eine Speicherschreibenoperation durch den Systembus angefordert worden ist.
  • Wenn diese Situation auftritt, werden die Gatter 9 gesteuert, um die Schreibenadresse, die auf dem Bus 5 vorhanden ist, zu dem Cache 7 und zu dem Cache 8 (durch den Kanal 16) zu übertragen.
  • Beide Cache-Speicher überprüfen, ob der Block i, auf den verwiesen wurde, in demselben vorhanden ist, und, wenn dies der Fall ist, machen dieselben den Block ungültig.
  • Diese Operation ist als "Busüberwachung" oder "Schnuppern" bekannt.
  • Der Cache 7 ist für sich betrachtet bekannt und herkömmlich.
  • Er verdient daher keine weitere Erklärung.
  • Fig. 2 zeigt in Blockdiagrammform und detaillierter ein bevorzugtes Ausführungsbeispiel des Cache 8.
  • Der Cache 8 umfaßt eine Logiksequenzereinrichtung SQC 18 (SQC = Logical Sequencer), welche als logische finite Zustandsmaschine implementiert sein kann, einen Befehlspuffer IPB 19 (IPB = Instruction Buffer), in dem eine Mehrzahl von sequentiellen Blöcken von Befehlen gespeichert werden kann, ein Register IPBP 21 zum Speichern der Adressen des ersten der Blöcke, welche gerade in dem Puffer 19 gespeichert sind, ein Zählerregister IPBL 22, eine Adressenvergleichslogikeinheit 23, einen Multiplexer 20 und einen Satz von Drei-Zustands-Gattern 35.
  • Die Vergleichslogikeinheit 23 umfaßt ein UND-Gatter 34, eine Subtrahiereinrichtung 31 und zwei Komparatoren 32, 33.
  • Die Subtrahiereinrichtung 31 weist Eingänge auf, die mit den Ausgängen der Register 21 und 22 verbunden sind.
  • Der Komparator 32 weist Eingänge auf, die jeweils mit dem Ausgang des Multiplexers 20 und mit dem Ausgang des Registers 21 verbunden sind.
  • Der Ausgang des Komparators 32 ist mit einem ersten Eingang eines UND-Gatters 34 verbunden.
  • Der Komparator 33 weist Eingänge auf, die jeweils mit dem Ausgang des Multiplexers 20 und mit dem Ausgang des Zählerregisters 22 verbunden sind. Sein Ausgang ist mit einem zweiten Eingang eines UND-Gatters 34 verbunden.
  • Der Puffer 19 umfaßt vier Register 24, 25, 26, 27, von denen jedes 32 Bit aufweist, und wobei die Eingänge mit dem Kanal 17 (welcher wiederum mit dem Datenbus des Systembusses 5 über die Gatter 10 verbunden ist), mit einem Decodierer 30 und mit einem Multiplexer 28 verbunden sind.
  • Der Ausgang jedes Registers ist mit einem Eingang des Multiplexers 28, der vier Eingänge aufweist, verbunden.
  • Der Ausgang des Multiplexers 28 ist mit dem Kanal 14 verbunden.
  • Der Multiplexer 28 wird durch einen Auswahlcode SC (SC = Selection Code) gesteuert, der aus den zwei niederstwertigen Bits in dem Ausgangssignal von dem Multiplexer 20 besteht.
  • Der Code SC gibt auf gegenseitig exklusive Art und Weise einen der Eingänge frei, damit er mit dem Ausgang verbunden wird.
  • Der Ausgang des Multiplexers 28 wird durch ein Signal EN1 freigegeben (EN = Enable), das durch die Sequenzereinrichtung 18 erzeugt wird.
  • Der Decodierer 30 weist einen Eingang auf, der mit dem Ausgang des Zählerregisters 22 verbunden ist, und derselbe empfängt die niederstwertigen Bits des Ausgangssignals des Registers 22. Der Decodierer 30 gibt auf gegenseitig exklusive Art und Weise eines von vier Auswahlsignalen SL1, SL2, SL3, SL4 aus, wobei jedes das Laden eines der vier Register 24, 25, 26, 27 freigibt.
  • Das Laden wird durch ein Signal LD (LD = Load) gesteuert, das durch die Sequenzereinrichtung 18 erzeugt wird.
  • Der erste Eingangssatz des Multiplexers 20 ist mit dem Kanal 11 verbunden, wohingegen der zweite Eingangssatz mit dem Kanal 16 verbunden ist.
  • Ein Signal BW, das durch die Sequenzereinrichtung 18 erzeugt wird, versetzt den Multiplexer 20 in die Lage, an seinem Ausgang die Informationen zu übertragen, die auf dem Kanal 16 vorhanden sind, wenn die "Busüberwachung" erfaßt, daß Schreibeoperationen auf dem Systembus auftreten.
  • Der Ausgang des Multiplexers 20 ist mit dem Eingang der zwei Register 21, 22 und ferner mit jeweils einem Eingang der Komparatoren 32, 33 verbunden.
  • Die Register 21, 22 werden jeweils durch parallele Ladesignale LD1, LD2 und durch ein Initialisierungsrilcksetzsignal RST (RST = Reset) gesteuert.
  • Das Register 22 wird ferner durch ein Inkrementierungssteuersignal INCR gesteuert.
  • Alle diese Signale werden durch die Sequenzereinrichtung 18 erzeugt.
  • Der Ausgang des Zählerregisters 22 ist mit dem Kanal 16 über die Gatter 35 verbunden.
  • Die Gatter 35 sind normalerweise freigegeben, um Adressen durch ein Signal NBW (BW-negiert) zu dem Kanal 16 zu übertragen.
  • Aus Klarheitsgründen und aufgrund der Konsistenz mit der Annahme, daß die Befehle immer ausgerichtet sind und mit einem Informationsblock zusammenfallen, und da ferner der Parallelismus des Arbeitsspeichers und des Datenkanals gleich der Größe eines Informationsblocks ist, sind die Adressen, die auf dem Kanal 11 und dem Kanal 16 vorhanden sind, sowie die, die an dem Ausgang der Register 21, 22 vorhanden sind, Blockadressen, weshalb dieselben die zwei niederstwertigen Adressenbits nicht aufweisen, welche auf ein "Byte" in dem Informationsblock verweisen.
  • Somit bilden die zwei niederstwertigen Bits der Blockadresse an dem Ausgang des Multiplexers 20 den Auswahlcode SC, wohingegen die zwei niederstwertigen Bits in dem Ausgangssignal von dem Register 22 und dem Eingangssignal in den Decodierer 30 einen Auswahlcode SC zum Schreiben in eines der Register 24, 25, 26, 27 bilden.
  • Die Subtrahiereinrichtung 31 subtrahiert den Inhalt des Registers 21 von dem Inhalt des Registers 22 und signalisiert der Sequenzereinrichtung 18 durch einen Drei-Bit-Code DIF, was die Differenz zwischen den beiden Inhalten ist.
  • Die Sequenzereinrichtung 18 empfängt das Signal HIT von dem Cache 7 und tauscht Steuersignale mit dem Systembus 5 aus. Diese Signale sind nicht detailliert, da sie offensichtlich von dem Systembusprotokoll abhängen, wobei es möglich ist, irgendeines einer Mehrzahl von Standard- oder Nicht-Standard-Protokollen, welche in der Technik bekannt sind, auszuwählen.
  • Die Sequenzereinrichtung 18 empfängt ferner ein Signal HIT1 von dem Gatter 34 und ein periodisches Taktsignal CK (CK = Clock) von einem Oszillator 18A.
  • Besser als irgendeine Schaltungsbeschreibung verdeutlichen die Flußdiagramme der Fig. 3 und 4 die Architektur der Sequenzereinrichtung 18 als eine finite Zustandsmaschine, die gemäß vorbestimmten Logikf lüssen arbeitet, wodurch der Betrieb des Cache 8 offensichtlich wird.
  • Der Cache 8, welcher normalerweise inaktiv ist, wird durch zwei externe Ereignisse getriggert: das deaktivierte Signal HIT von dem Cache 7 zusammen mit Signalen, die von dem Prozessor 1 erzeugt werden, wie z.B. AS, einem Adressenprüfungssignal, und FCO, einem Signal zum Qualifizieren der Adresse als eine Befehlsadresse, oder durch einen Schreibenbefehl SBW auf dem Bus 5, der mit einem Adressenprüfungssignal SBAS auf dem Systembus gekoppelt ist. Die in den beiden Fällen durchgeführten Operationen sind jeweils in Fig. 3 und Fig. 4 gezeigt.
  • In Fig. 3 springt der Cache 8 von einem anfänglichen Zustand IDLE (IDLE = Leerlauf) (Block 100) zu einem ersten aktiven Zustand 101 aufgrund der externen Signale AS, FCO, NHIT.
  • Wenn die Sequenzereinrichtung 18 in diesem Zustand ist, überprüft sie, ob das Signal HIT1 aktiviert ist oder nicht.
  • Wenn HIT1 deaktiviert ist, bedeutet dies, daß die Adresse, die in dem Kanal 11 über den Multiplexer 20 empfangen worden ist, nicht größer oder gleich der Adresse ist, die in dem Register 21 ist, und nicht kleiner als die Adresse ist, die in dem Register 22 gespeichert ist.
  • Diese Bedingung ist beispielsweise die Bedingung, welche nach einer Initialisierung auftritt, welche die Register 21 und 22 zurücksetzt.
  • Wenn HIT1 deaktiviert ist, lädt die Sequenzereinrichtung 18 die auf dem Kanal 11 vorhandene Adresse mittels der Befehle LD1, LD2 in die Register 21 und 22.
  • Es kann angemerkt werden, daß diese Operation nicht den Zustand des Signals HITL verändert.
  • Der Code DIF, der von der Subtrahiereinrichtung 31 erzeugt wird, ist bei diesem Beispiel 000, was signalisiert, daß sich die in den beiden Registern 21, 22 gespeicherten Adresse um einen Betrag von 0 unterscheidet.
  • Daher kann eine Mehrzahl von Blöcken von dem Arbeitsspeicher abgerufen und in den Puffer 19 geladen werden.
  • Die Sequenzereinrichtung 18 ist ferner vorgesehen, um einen Zugriff auf den Systembus 5 anzufordern, indem ein geeignetes Flip-Flop eingestellt wird, was anzeigt, daß eine Busanforderung BRQ schwebend ist (Block 102), wonach die sequenzereinrichtung 18 in einen Busanforderungs- und Entscheidungs-Zustand 103 springt, in dem dieselbe darauf wartet einen Zugriff zu erhalten.
  • Wenn während eines solchen Wartens ein bestimmter Schreibebefehl auf dem Systembus auftritt, wie es durch die aktivierten Signale SBW und SBAS gezeigt ist, verläßt die Sequenzereinrichtung 18 den Zustand 103 und springt zu einem Zustand 104, welcher nachfolgend erläutert wird.
  • Sobald ein Zugriff auf den Bus 5 erhalten ist, wie es beispielsweise durch ein aktiviertes Signal BGRANT gezeigt sein kann, springt die Sequenzereinrichtung 18 in einen Zustand 105 und steuert eine Arbeitsspeicher-Leseoperation in einem Stoßbetrieb durch Aktivieren eines Signals SBRBURST, wobei ein Code NBURST die Anzahl von Blöcken anzeigt, die gelesen werden sollen (bei dem Beispiel ist NBURST das Komplement zu 4 des Codes DIF), und durch Rücksetzen des Indikator-Flip- Flops für eine schwebende Anforderung (Signal RSBRQ).
  • Wenn dieser Zustand vorhanden ist, sind die Gatter 9 zu dem Systembus hin durch ein Signal EN2 und die Gatter 35 durch ein Signal NBW freigegeben, derart, daß die in dem Register 22 gespeicherte Adresse über den Systembus 5 übertragen wird.
  • Die derart übertragene Adresse fällt mit der Blockadresse zusammen, die durch den Kanal 11 erhalten wird.
  • Der Cache 8 ist durch das Signal EN, welches die Gatter 10 freigibt, voreingestellt, um die angeforderten Informationen zu empfangen.
  • Nach einem bestimmten Zeitintervall empfängt der Cache 8 einen ersten Informationsblock, der von einem Prüfungssignal DVAL begleitet wird.
  • Beim Empfang eines solchen Signais erzeugt die Entscheidungseinrichtung 18 ein Signal LD und lädt den Informationsblock in das Register unter den Registern 24, 25, 26, 27, welches durch den Code SC ausgewtohlt ist.
  • Zum gleichen Zeitpunkt aktiviert dieselbe ein Signal INCR, was bewirkt, daß das Zählerregister 22 inkrementiert wird.
  • Bei einer Inkrementierung wählt das Register 22 ein weiteres Register unter den Registern 24, 25, 26, 27, und zwar als Ziel für einen neuen Informationsblock, wenn derselbe empfangen wird.
  • Aufgrund einer solchen Inkrementierung aktiviert die Vergleichseinheit 23 HITI. Als Konsequenz, wenn AS aktiviert und HIT deaktiviert sind, erzeugt die Sequenzereinrichtung 18 das Signal ENI, das den Multiplexer 28 freigibt, um den angeforderten Informationsblock auf dem Kanal 14, welcher durch ein Prüfungssignal DTACK begleitet wird, zu übertragen, welcher durch eine Leitung 15 zu sowohl dem Prozessor 1 als auch dem Cache 7 gesendet wird (Fig. 1).
  • Der Block wird von dem anf ordernden Prozessor (welcher AS deaktiviert) empfangen, und derselbe wird gleichzeitig in den Cache 7 fur eine weitere folgende Verwendung geladen.
  • Die Sequenzereinrichtung 18 begrenzt sich nicht darauf, einen Befehlsblock abzurufen, sondern dieselbe überprüft, ob das Ausgangssignal der Subtrahiereinrichtung 31 eine Differenz anzeigt, die gleich 4 ist, d.h. gleich der Pufferkapazität ist.
  • In dem negativen Fall bleibt die Sequenzereinrichtung in dem Zustand 103 und nimmt wieder den Fluß auf, der bereits am Knoten 107 beschrieben wurde, wodurch die Ladeoperation des Puffers 19 und die Inkrementierung des Zählers 22 wiederholt werden, bis der Code DIF einen Wert gleich 4 anzeigt.
  • Beim Auftreten dieses Ereignisses enden die Stoßbetrieb- Leseoperationen, wonach die Sequenzereinrichtung 18 in den Zustand 100 (IDLE; IDLE = Leerlauf) zurückspringt.
  • Es kann angemerkt werden, daß in dem Falle des Pufferladens, wie es vorher gezeigt wurde, der Multiplexer 28 gesperrt ist, wenn das Signal AS deaktiviert ist, d.h. wenn der Prozessor 1 keinen neuen Befehl benötigt, der in einem der folgenden Blöcke enthalten ist, welche in dem Puffer 19 gespeichert sind.
  • Diese Blöcke werden nicht zu dem Cache 7 übertragen, es sei denn, daß sie von dem Prozessor 1 angefordert werden.
  • Aus dem oben beschriebenen Fluß resultiert, daß der Prozessor 1 und der Cache 7 den Block empfangen, der die angeforderten Informationen enthält, und zwar sobald derselbe verfügbar wird, ohne auf eine Vollendung der Stoßbetrieb- Leseoperation warten zu müssen.
  • Daher ist die Informationslatenzzeit minimiert, und der Cache 7 wird mit einem Inforrnationsblock geladen, welcher zumindest einmal verwendet worden ist.
  • Es mag ebenfalls angemerkt werden, daß während einer Stoßbetrieb-Leseoperation, wenn der Prozessor 1 wieder die Signale AS und FCO aktiviert, um einen Befehl in einem Block anzufordern, welcher nicht in den Cache 7 geladen ist, welcher jedoch bereits in den Puffer 19 geladen ist (Signale NHIT und HIT1 aktiviert, Block 106), der Informationsblock, der den angeforderten Befehl enthält, zu dem anfordernden Prozessor 1 gesendet wird, wobei derselbe gleichzeitig in den Cache 7 geladen wird, ohne auf eine Vollendung der Stoßbetrieb-Leseoperation zu warten (Block 106B). In anderen Worten ist es möglich, gleichzeitig von dem Puffer 19 zu lesen und auf den Puffer 19 zu schreiben.
  • Nachfolgend wird auf das Flußdiagramm von Fig. 3 Bezug genommen, um den Betrieb des Cache 8 in dem Fall zu betrachten, in dem der Prozessor 1 einen Befehl anfordert, der in dem Cache 7 fehlt, der jedoch in dem Puffer 19 enthalten ist.
  • In diesem Fall springt die Sequenzereinrichtung 18 zu dem Zustand 101, wobei jedoch das Signal HIT1 aktiviert ist, wonach die Sequenzereinrichtung 18 ENI und DTACK aktiviert, wonach der angeforderte Block unmittelbar zu dem Prozessor 1 und zu dem Cache 7 übertragen wird.
  • Die Auswahl des Registers des Puffers 19, das den Block speichert, wird durch die Adresse durchgeführt, die auf dem Kanal 11, vorhanden ist, und die durch den Multiplexer 20 zu dem Auswahleingang des Multiplexers 28 übertragen wird.
  • Die Sequenzereinrichtung 18 aktiviert ferner das Signal LD1 und lädt die Adresse an dem Ausgang des Multiplexers 20 in das Register 21.
  • Sobald diese Operation durchgeführt worden ist, überprüft die Sequenzereinrichtung 18, ob aufgrund einer solchen Operation der Code DIF im Ausgangssignal von der Subtrahiereinrichtung 31 eine Differenz anzeigt, die kleiner oder gleich 2 ist (Block 110).
  • Falls dies zutrifft, springt die Sequenzereinrichtung 18 von dem Zustand 101 zu dem Zustand 103.
  • Daher wird eine Stoßbetrieb-Leseoperation, die mindestens zwei Blöcke anfordert, durchgeführt.
  • Die Blöcke werden in den Puffer 19 geladen.
  • In diesem Fall ist die Operation zu dem Prozessor 1 und dem Cache 7 vollständig transparent.
  • In dem negativen Fall (DIF > 2) springt die Sequenzereinrichtung 18 von dem Zustand 101 zu dem Zustand IDLE 100.
  • Zwei weitere Fälle müssen nun betrachtet werden:
  • A) Befehlsanforderung durch den Prozessor 1 mit HIT in dem Cache 7.
  • B) Auf dem Systembus auftretende Schreibeoperation.
  • In dem Fall A) liefert der Cache 7 den Befehl, während der Cache 8 inaktiv bleibt.
  • In dem Fall B) müssen der Cache 7 und der Cache 8 überprüfen, daß die Schreibeoperation auf dem Systembus nicht bestimmte Informationen in einem Block modifiziert, welche entweder in dem Cache 7 oder in dem Cache 8 oder in beiden enthalten sind.
  • Daher springt die Sequenzereinrichtung 18 aufgrund der Signale SBW, SBAS, die auf dem Systembus aktiviert sind, zu dem Zustand 104, und zwar entweder von dem Zustand 100 oder von dem Zustand 103 aus (Fig&sub5; 3) s Wenn dieselbe in dem Zustand 104 ist, aktiviert die Sequenzereinrichtung 18 das Signal BW, welches den Multiplexer 20 steuert und die Gatter 35 sperrt, derart, daß die Vergleichseinheit 23 überprüft, ob die Adresse auf dem Systembus auf einen Block bezogen ist, der in dem Puffer 7 gespeichert ist.
  • Wenn das Signal HIT1 aktiviert wird, erzeugt die Sequenzereinrichtung 18 Rücksetzsignale (RSIPBL, RSIPBP), welche zu dem Register 21, 22 gerichtet sind (Signal RS von Fig. 2), wonach dieselbe zu dem Zustand IDLE 100 springt.
  • Von dem Zustand 100 springt die Sequenzereinrichtung 18 unmittelbar zu dem Zustand 101, wenn eine gleichzeitige Prozessoranforderung aufgetreten ist, und die Signale AS, FCO, NHIT schwebend sind (Fig. 3).
  • Wenn dieselbe in dem Zustand 104 ist und wenn das Signal HIT1 deaktiviert ist, überprüft die Sequenzereinrichtung 18 den Zustand der schwebenden Anforderung BRQ, und wenn diese Bedingung wahr ist, springt dieselbe beim Auftreten der Bedingung BGRANT zu dem Zustand 105 von Fig. 3.
  • Wenn die Bedingung BRQ falsch ist, springt die Sequenzereinrichtung 18 zu dem Zustand 100.
  • Die vorhergehende Beschreibung bezieht sich auf ein bevorzugtes Ausführungsbeispiel der Erfindung, das auf mehrere Arten und Weisen verändert werden kann.
  • Selbst wenn die Beschreibung auf einen Tandem-Cache-Speicher bezogen ist, der spezifisch für das Speichern von Befehlen vorgesehen ist, ist es insbesondere ebenfalls möglich, einen Tandem-Cache-Speicher zu implementieren, bei dem ein Cache, wie z.B. der Cache 7, zum Speichern von sowohl Befehlen als auch Daten gedacht sein kann, während ein Cache, wie z.B. 8, zum ausschließlichen Speichern von Befehlen gedacht ist.
  • Es ist ferner m:glich, einen Tandem-Cache-Speicher zu implementieren, bei dem ein Cache für unabhängige Blöcke von Daten und Befehlen mit einem Paar von Cache-Speichern gekoppelt ist, welche sequentielle Blöcke puffern, wobei jeder der Cache-Speicher des Paars funktionsmäßig äquivalent zu dem Cache 8 ist, der bereits beschrieben worden ist, wobei dieselben jedoch zum Speichern von Blöcken von Befehlen bzw. von Datenblöcken gedacht sind.

Claims (3)

  1. Cache-Speichersystem (2) mit folgenden Merkmalen:
    einem ersten Cache (7) zum Speichern von Informationsblöcken, der einen Adresseneingang (11), einen Informationen-Eingang/Ausgang (14) und einen Signal-Ausgang (12) zum Signalisieren mit einem aktivierten bzw. deaktivierten Signal HIT aufweist, wenn Informationen, auf die durch eine Adresse verwiesen wird, die an dem Adresseneingang (11) empfangen wird, in dem ersten Cache gespeichert sind oder nicht, wobei der erste Cache (7) die Informationen, auf die verwiesen wird, an dem Inforrnationen-Eingang/Ausgang (14) bei einer Aktivierung des Signals HIT ausgibt;
    einem zweiten Cache (8) zum Speichern von Informationsblöcken, auf die von aufeinanderfolgenden geordneten Adressen verwiesen wird, der einen Adresseneingang (11), der mit dem Adresseneingang (11) des ersten Cache (7) verbunden ist, einen Adressenausgang (16), einen Informationeneingang (17), einen Informationenausgang (14), der mit dem Informationen-Eingang/Ausgang (14) des ersten Cache (7) verbunden ist, und einen Eingang (12) zum Empfangen des Signals HIT von dem ersten Cache (7) aufweist;
    wobei der zweite Cache (8) eine Logikeinrichtung (18, 21, 22, 23), die durch das deaktivierte Signal HIT getriggert wird, zum Überprüfen aufweist, ob Informationen, auf die von einer an dem Adresseneingang (11) empfangenen Adresse verwiesen wird, in dem zweiten Cache (8) gespeichert oder nicht gespeichert sind;
    wobei, wenn solche Informationen nicht gespeichert sind, die Logikeinrichtung (18) zu einem Arbeitsspeicher (3) anfordert und eine Mehrzahl von Informationsblöcken mit aufeinanderfolgenden Adressen ansteigender Reihenfolge in den zweiten Cache (8) lädt, wobei die kleinere der aufeinanderfolgenden Adressen auf einen ersten Block verweist, der Informationen enthält, auf die von der Adresse verwiesen wird, die an dem Adresseneingang (11) empfangen wird, wobei die Logikeinrichtung (18) den ersten Block zu dem Informationenausgang (14) überträgt und den ersten Cache (7) anweist, um den ersten Block zu speichern, sobald derselbe von dem Arbeitsspeicher (3) empfangen ist, und zwar ohne darauf zu warten, die Mehrzahl von Informationsblöcken vollständig empfangen zu haben,
    wobei, wenn solche Informationen gespeichert sind, die Logikeinrichtung (18) den Informationenausgang (14) freigibt, um einen Informationenblock auszugeben, der die Informationen enthält, auf die von der Adresse, die an dem Adresseneingang (11) empfangen wird, verwiesen wird, und den ersten Cache (7) anweist, um den ausgegebenen Informationenblock zu speichern, und wobei die Logikeinrichtung (18, 23) ferner überprüft, ob sich die Adresse, die auf den ausgegebenen Block verweist, von der höheren der Adressen der Blöcke, die in dem zweiten Cache gespeichert sind, um weniger als einen vorbestimmten Betrag unterscheidet, und, wenn dies zutrifft, zu dem Arbeitsspeicher (3) anfordert und in den zweiten Cache (8) eine Mehrzahl von Informationsblöcken lädt, welche geordnete Adressen haben, die der höheren Adresse als nächstes folgen.
  2. 2. Cache-Speichersystem gemäß Anspruch 1, bei dem der zweite Cache (8) eine Mehrzahl von Registern (24, 25, 26, 27) aufweist, wobei jedes zum Speichern eines Informationsblocks vorhanden ist, wobei die Logikeinrichtung (18, 21, 22, 23) folgende Merkmale aufweist:
    ein erstes Register (21) zum Speichern der Adresse eines Blocks, der in dem zweiten Block gespeichert ist, der die kleinere unter den Adressen der Blöcke, die in dem zweiten Cache (8) gespeichert sind, aufweist;
    ein zweites Register (22) zum Speichern der Adresse eines Blocks, der als nächstes der höchsten der Adressen der Blöcke, die in dem zweiten Cache (8) gespeichert sind, folgt; und
    eine Vergleichseinrichtung (23) zum Überprüfen, ob eine an dem Adresseneingang (11) empfangene Adresse höher oder gleich der in dem ersten Register (21) gespeicherten Adresse und kleiner als die in dem zweiten Register (22) gespeicherte Adresse ist, und wobei, wenn dies zutrifft, die Vergleichseinrichtung (23) ein aktiviertes Signal HIT1 erzeugt, wobei die Logikeinrichtung (18) beim Auftreten des aktivierten Signals HIT1 eines der Mehrzahl von Registern (24, 25, 26, 27) freigibt, um einen in demselben gespeicherten Informationsblock auszugeben, wobei das eine Register durch ein Feld der Adresse, die an dem Adresseneingang (11) empfangen wird, ausgewählt wird.
  3. 3. Cache-Speichersystem gemäß Anspruch 1, bei dem der zweite Cache (8) einen Puffer (19) aufweist, der gleichzeitig gelesen und beschrieben werden kann.
DE69030368T 1990-01-18 1990-11-30 Tandem-Cache-Speicher Expired - Fee Related DE69030368T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT01909190A IT1238313B (it) 1990-01-18 1990-01-18 Memoria tampone in tandem

Publications (2)

Publication Number Publication Date
DE69030368D1 DE69030368D1 (de) 1997-05-07
DE69030368T2 true DE69030368T2 (de) 1997-07-17

Family

ID=11154455

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69030368T Expired - Fee Related DE69030368T2 (de) 1990-01-18 1990-11-30 Tandem-Cache-Speicher

Country Status (3)

Country Link
EP (1) EP0437712B1 (de)
DE (1) DE69030368T2 (de)
IT (1) IT1238313B (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69327981T2 (de) * 1993-01-21 2000-10-05 Advanced Micro Devices, Inc. Kombinierte Speicheranordnung mit einem Vorausholungspuffer und einem Cachespeicher und Verfahren zur Befehlenversorgung für eine Prozessoreinheit, das diese Anordnung benutzt.
US5603004A (en) * 1994-02-14 1997-02-11 Hewlett-Packard Company Method for decreasing time penalty resulting from a cache miss in a multi-level cache system
FR2755523B1 (fr) * 1996-11-05 1998-12-04 Bull Sa Circuit electrique pour echanger des donnees entre un microprocesseur et une memoire et calculateur comprenant un tel circuit
GB2401967B (en) * 1999-12-30 2005-01-05 Intel Corp Dual cache system
WO2001050275A1 (en) * 2000-01-05 2001-07-12 Sun Microsystems, Inc. A method for employing a page prefetch cache for database applications
US6829680B1 (en) 2000-01-05 2004-12-07 Sun Microsystems, Inc. Method for employing a page prefetch cache for database applications

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4442488A (en) * 1980-05-05 1984-04-10 Floating Point Systems, Inc. Instruction cache memory system
JPS6154547A (ja) * 1984-08-24 1986-03-18 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 3レベルの階層メモリを備えたデ−タ処理システム
IT1215539B (it) * 1987-06-03 1990-02-14 Honeywell Inf Systems Memoria tampone trasparente.

Also Published As

Publication number Publication date
IT9019091A1 (it) 1991-07-19
IT1238313B (it) 1993-07-12
EP0437712A3 (en) 1991-11-13
DE69030368D1 (de) 1997-05-07
EP0437712B1 (de) 1997-04-02
EP0437712A2 (de) 1991-07-24

Similar Documents

Publication Publication Date Title
DE3751399T2 (de) Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen.
DE69327387T2 (de) An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
EP0013737B1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE69323790T2 (de) Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
DE69031978T2 (de) Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern
DE69320847T2 (de) Verfahren und Anordnung zur Ausführung von Prozessen in einem Multiprozessor-System
DE68926036T2 (de) Speicherkonfiguration zur Verwendung für Schnittstellenbildung zwischen einer Systemsteuereinheit für ein Multiprozessorsystem und dem Hauptspeicher
DE3587439T2 (de) Gemeinsam benutzter Mehrprozessor-Pipeline-Cachespeicher.
DE3750107T2 (de) Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt.
DE3011552C2 (de)
DE68927172T2 (de) Multiprozessorsystem mit cache-speichern
DE60037174T2 (de) Puffersystem für externen speicherzugriff
DE68923403T2 (de) Verfahren und Anordnung zur Adressierung eines Seitenmodus-Speichers in einem Computersystem.
DE69203842T2 (de) Speichersteuerungsvorrichtung mit Snoop-Mechanismus.
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE2944419C2 (de)
CH627580A5 (de) Austauschanordnung zur bereitstellung von austauschadressen fuer den betrieb eines pufferspeichers in einer speicherhierarchie.
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE3688400T2 (de) Cachespeicherschaltung geeignet zur verarbeitung einer leseanforderung waehrend der uebertragung eines datenblocks.
DE3046912C2 (de) Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage
DE3012951A1 (de) Datenverarbeitungssystem
DE2856680A1 (de) Befehlspuffer fuer ein datenverarbeitungssystem
DE68926761T2 (de) Mehrprozessorsystem mit einem mehranschlüssigen Cachespeicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee