DE3850514T2 - Cachespeicher mit Treffervorhersagelogik. - Google Patents

Cachespeicher mit Treffervorhersagelogik.

Info

Publication number
DE3850514T2
DE3850514T2 DE3850514T DE3850514T DE3850514T2 DE 3850514 T2 DE3850514 T2 DE 3850514T2 DE 3850514 T DE3850514 T DE 3850514T DE 3850514 T DE3850514 T DE 3850514T DE 3850514 T2 DE3850514 T2 DE 3850514T2
Authority
DE
Germany
Prior art keywords
signal
memory
hit
cache
operand
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
DE3850514T
Other languages
English (en)
Other versions
DE3850514D1 (de
Inventor
Claudio Fiacconi
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 DE3850514D1 publication Critical patent/DE3850514D1/de
Application granted granted Critical
Publication of DE3850514T2 publication Critical patent/DE3850514T2/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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

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 bezieht sich auf einen Treffervorhersage-Cachespeicher.
  • Es ist bekannt, daß Cachespeicher sehr schnelle Speicher mit geringer Kapazität sind, die in modernen Datenverarbeitungssystemen dazu verwendet werden, Teile von Arbeitsspeicherinhalten zu speichern, und zwar die Teile, die von Zeit zu Zeit häufiger tatsächlich oder voraussichtlich verwendet werden.
  • Cachespeicher beinhalten im wesentlichen einen Speicherbereich für Operanden und einen Assoziativspeicher oder CAM, der die Adressen der im Cache enthaltenen Operanden speichert.
  • Wenn ein zentraler Prozessor mit seinem eigenen Cache einen Operanden benötigt, überprüft der Cache, ob die Adresse des Operanden mit einer der in dem CAM- Bereich gespeicherten Adressen übereinstimmt.
  • Wenn dies der Fall ist, bedeutet dies, daß der Operand in dem Cache gespeichert ist, der ein "Treffer"-Signal erzeugt und zum Prozessor sendet und sofort darauf den angeforderten Operanden an den Prozessor übermittelt, ohne daß die Ausführung eines Lesevorgangs im Arbeitsspeicher nötig ist.
  • Wenn der angeforderte Operand nicht in dem Cache gespeichert ist, wird durch den Cache ein Lesevorgang im Arbeitsspeicher gestartet, der üblicherweise zusätzlich zu der Übertragung des vom Arbeitsspeicher ausgelesenen Operanden zum Prozessor vorsieht, den gleichen Operanden in einer seiner Speicherstellen abzuspeichern, wobei ein darin schon vorhandener Operand ersetzt wird.
  • Auch wenn der Vorgang des Adressenvergleichs innerhalb des Cache nur eine sehr kurze Zeitspanne in der Größenordnung von einigen wenigen Zehntel Nanosekunden erfordert, kann bei den modernen Datenverarbeitungssystemen, die immer schnellere Mikroprozessoren verwenden, eine derartige Zeitspanne unangemessen hoch sein und die Leistungsfähigkeit des Mikroprozessors behindern.
  • Der Mikroprozessor muß auf das Treffersignal und die nachfolgende Datenverfügbarkeit warten.
  • Die Situation wird bei den modernen Systemen, die einen virtuellen Speicher verwenden, noch weiter verschlechtert.
  • Bei derartigen Systemen adressiert der zentrale Prozessor die Operanden mit einer logischen Adresse, die durch eine Speicheradressen-Verwaltungseinheit in eine physikalische Speicheradresse umzuwandeln ist.
  • Um Systemschwierigkeiten und eine Komplexität des Cache zu vermeiden, arbeiten die Cachespeicher gewöhnlich mittels Vergleichen physikalischer Speicheradressen.
  • Zwischen dem zeitlichen Augenblick, zu dem ein zentraler Prozessor eine durch eine logische Adresse identifizierte Operandenanforderung erzeugt, und dem Zeitpunkt, zu dem der Cache bereit ist, ein Treffersignal bereitzustellen, verstreicht ein Zeitintervall, das der Summe aus der für die Umwandlung der logischen Adresse in eine physikalische Adresse benötigten Zeit und der Zeit für den Vergleich des Cache- Assoziativspeichers entspricht.
  • Während dieses Zeitintervalls muß der zentrale Prozessor im allgemeinen untätig bleiben und warten, mit der daraus folgenden Reduktion der Leistungsfähigkeit, auch wenn der zentrale Prozessor im allgemeinen eine bestimmte zeitliche Verzögerung zwischen dem Empfang eines Signals, das die demnächst erfolgende Verfügbarkeit des Operanden bestätigt, (möglicherweise des Treffersignals) und der tatsächlichen Verfügbarkeit des Operanden erlaubt.
  • Der Cachespeicher, der den Gegenstand der vorliegenden Erfindung darstellt, überwindet wenigstens teilweise diese Nachteile.
  • Der Cache der Erfindung arbeitet gemäß einem Treffervorhersagekonzept.
  • Mit anderen Worten sendet der Cache ein Vortreffersignal zum zentralen Prozessor, wobei ein Operand angefordert wird, bevor die physikalische Adresse des Operanden mit dem CAM-Inhalt verglichen wird.
  • Wenn nach dem Vergleich ein Treffer auftritt, wird der Operand zur Verfügung gestellt.
  • Wenn der Vergleich nicht erfolgreich ist, das heißt ein "Fehltreffer" auftritt, wird das Vortreffersignal durch ein nachfolgendes Fehlersignal, das zum zentralen Prozessor gesendet wird, unwirksam gemacht.
  • Die Erzeugung des Vortreffersignals geschieht nicht systematisch, sondern erfolgt auf der Grundlage der direkten Vorgeschichte der Operandenanforderungen.
  • Diese Vorgeschichte definiert den Status eines Treffer-/Fehltreffer-Indikatorschaltkreises.
  • Wenn der Treffer-/Fehltrefferindikator ein Vortreffersignal bereitstellt und der Vergleich danach nicht erfolgreich ist und ein Fehltreffer auftritt, wird der Indikator so gesetzt, daß er ein Vorfehltreffersignal bereitstellt.
  • Beim Empfang einer nächstfolgenden Operandenanforderung ermöglicht es die Vorfehltreffer-Anzeige, einen Speicherzugriffsvorgang zu starten, auch wenn der angeforderte Operand möglicherweise im Cache vorhanden ist.
  • Als mögliche Alternative kann der Start des Speicherzugriffsvorgangs vom Auftreten eines Fehltreffersignals vom Cache abhängig sein.
  • Wenn der Operand im Cache vorhanden ist, wird der Indikator so gesetzt, daß er ein Vortreffersignal erzeugt, und der Operand, der aus dem Arbeitsspeicher ausgelesen wird, wird dem zentralen Prozessor zugeführt.
  • Wenn der Operand nicht im Cache vorhanden ist, wird er, sobald er aus dem Hauptspeicher ausgelesen wurde, nicht nur dem zentralen Prozessor zugeführt, sondern er wird auch in den Cache geladen.
  • Der Vortreffer-/Vorfehltrefferindikator wird jedoch im Vorfehltrefferzustand belassen.
  • Durch diesen Vorhersagemechanismus werden die folgenden Vorteile erreicht.
  • Im Falle eines bestätigten Vortreffers kann der Zugriff auf einen im Cache enthaltenen Operanden ohne Wartezustände des zentralen Prozessors erfolgen.
  • Ein Operandenanforderungsvorgang wird nur wiederholt, falls der Vortreffer nicht bestätigt wird.
  • Im Falle eines Vorfehltreffers werden die Lesevorgänge für den Hauptspeicher gestartet, ohne auf eine Bestätigung zu warten, daß deren Ausführung tatsächlich nötig ist.
  • Da die Operanden, sei es, daß sie aus Anweisungen, sei es, daß sie aus Daten bestehen, meistens in Blöcken mit sequentieller Adressierung angeordnet sind, tritt in den meisten Operandenanforderungsvorgängen die bestätigte Vortrefferbedingung auf, und der Cache wird bestmöglich ausgenutzt.
  • In der bestätigten Vorfehltrefferbedingung wird der Hauptspeicher best möglich ausgenutzt.
  • Lediglich wenn es einen Wechsel von einer Bedingung zur anderen gibt, tritt ein Zeitverlust auf, entweder für die Durchführung eines auf einen nicht bestätigten Vortreffer folgenden Zugriffs auf den Arbeitsspeicher oder für die überflüssige Ausführung eines auf einen nicht bestätigten Vorfehltreffer folgenden Speicherzugriffsvorgangs.
  • Auf diese Weise wird die für ein System, das einen zentralen Prozessor, einen Cache und einen Arbeitsspeicher beinhaltet, erzielbare Leistungsfähigkeit außerordentlich erhöht.
  • Die sequentielle Anordnung von Anweisungsoperanden unterscheidet sich im allgemeinen von der sequentiellen Anordnung von Datenoperanden.
  • Daher wird der Vortreffer-/Vorfehltrefferindikator in geeigneter Weise so angeordnet, daß er eine für Daten und Anweisungen verschiedene Anzeige bereitstellt.
  • Diese Merkmale und die Vorteile der Erfindung werden aus der folgenden Beschreibung einer bevorzugten Ausführungsform der Erfindung und aus den beigefügten Zeichnungen klarer ersichtlich werden, in denen:
  • Fig. 1 in einem Blockdiagramm ein Datenverarbeitungssystem zeigt, das den Vorhersage-Cache der Erfindung beinhaltet;
  • Fig. 2 in einem Zeittaktdiagramm die verschiedenen Signale zeigt, die Lese- und Schreibvorgänge im Speicher steuern und die zwischen der zentralen Einheit und dem Arbeitsspeicher oder dem Cache im System von Fig. 1 ausgetauscht werden;
  • Fig. 3 in einem Schaltbild die Steuerlogik für den Vorhersage-Cache der Erfindung zeigt;
  • Fig. 4 in einem Zeittaktdiagramm die verschiedenen Signale zeigt, die zwischen der zentralen Einheit und dem Cache im System von Fig. 1 im Fall einer Treffervorhersage durch den Cache ausgetauscht werden;
  • Fig. 5 in einem Zeittaktdiagramm die Signale zeigt, die zwischen der zentralen Einheit, dem Cache und dem Arbeitsspeicher im Fall einer Fehltreffervorhersage durch den Cache ausgetauscht werden.
  • Fig. 1 zeigt in einem Blockdiagramm ein Datenverarbeitungssystem, das den Vorhersage-Cache der Erfindung enthält.
  • Das System beinhaltet eine zentrale Rechnereinheit oder CPU (1), eine Speicheradressen-Verwaltungseinheit oder MMU (2), den Cachespeicher (3), eine Speichersteuereinheit oder MCU (4), einen Oszillator (6) zur Erzeugung eines periodischen Taktsignals und einen Arbeitsspeicher (7).
  • CPU (1) und MMU (2) können in verschiedenen Weisen ausgeführt sein, für die Klarheit der Beschreibung ist es aber vorteilhaft, auf eine CPU (1), die aus einem von der Firma MOTOROLA hergestellten Mikroprozessor MC68020 besteht, und auf die zugehörige, aus dem integrierten Schaltkreis MC68851 bestehende MMU Bezug zu nehmen.
  • Auf dem Niveau des Blockdiagramms von Fig. 1 ist die Architektur des Systems herkömmlich: Die CPU (1) ist mit dem Arbeitsspeicher (7) zwecks Informationstransfer (Lesen/Schreiben) über einen bidirektionalen Datenbus DBUS (8) verbunden.
  • Die Speicheradresse, bei welcher der Transfer durchzuführen ist, wird durch die CPU (1) auf einem Kanal ABUS (9) geliefert und von der MMU (2) empfangen, welche die virtuelle Adresse in eine physikalische Speicheradresse umwandelt, die auf einem Kanal PADD (11), der die MMU (2) mit der MCU (4) verbindet, vorhanden ist.
  • Steuersignale werden zwischen der CPU (1), der MMU (2), dem Cache (3) und der Steuereinheit (4) über einen Steuerbus CBUS (10) ausgetauscht.
  • Der Cachespeicher (3) ist des weiteren mit dem Kanal PADD (11) zwecks Empfang von Adressen und mit dem Kanal DBUS (8) zwecks Empfang oder Abgabe von Informationen verbunden.
  • Die Kanäle DBUS (8), PADD (11) und CBUS (10) bilden insgesamt einen Kommunikationsanschluß für die Steuereinheit (4), die vorzugsweise vom Doppelanschlußtyp ist. Sie ist mit einem zweiten Anschluß (5) versehen, der mit einem Kommunikationskanal (24) zur Verbindung mit Eingabe-/Ausgabe-Prozessoren und generisch mit peripheren Steuereinheiten verbunden ist.
  • Die MCU (4) ist vorgesehen, um in bekannter Weise Konflikte bei den Zugriffsanforderungen, die über die zwei Anschlüsse empfangen werden, gemäß geeigneten Prioritätskriterien zu lösen.
  • Für ein besseres Verständnis der Erfindung fassen die Zeittaktdiagramme von Figur 2 die Betriebsweise der CPU (1) und der MMU (2) für Speicherübertragungen zusammen.
  • Die Betriebsweise der CPU (1) schreitet gemäß dem Verlauf von Zeitzyklen voran die durch ein periodisches, zusammen mit einem negierten Taktgebersignal vom Oszillator (6) erzeugtes Taktgebersignal CK definiert sind.
  • Das Signal CK weist (beispielsweise) eine Periode von 60 ns auf und beinhaltet zwei Rechteckwellen-Halbperioden von jeweils 30 ns.
  • Jede Halbperiode definiert einen Arbeitszustand der CPU.
  • Ein Speicherlesevorgang erfordert 6 Arbeitszustände und eine variable Anzahl von Wartezuständen in Abhängigkeit von der Geschwindigkeit, mit welcher der Speicher die Anforderung der CPU (1) erfüllen kann.
  • Während eines ersten Zustands S0 plaziert die CPU (1) eine logische Adresse A0-31 auf dem Adressenkanal und einen Satz von Steuersignalen auf dem Steuerkanal.
  • Unter diesen Signalen gibt es ein Signal R/W auf logischem 1-Pegel, um einen Lesevorgang anzuzeigen, und Signale FC0-2, die in Abhängigkeit von ihrem logischen Pegel die Art des angeforderten Operanden als einen Benutzerdatenwert, eine Benutzerprogrammanweisung oder einen Kontrolldatenwert oder eine Kontrollprogrammanweisung festlegen.
  • Während des Zustands S1 erniedrigt die CPU (1) ein Signal AS auf 0-Pegel, um die auf dem Adressen- und dem Steuerkanal vorhandenen Signale zu validieren.
  • Die MMU (2) empfängt die logische Adresse A0-31, den Funktionscode FC0-2 und das Abtastsignal AS.
  • Innerhalb einer maximalen Verzögerung von 45 ns nach dem Empfang der logischen Adresse gibt sie die der logischen Adresse entsprechende physikalische Adresse PA0- XX auf den Kanal PADD und verringert ein Abtast- und ein Validierungssignal PAS auf einer entsprechenden Zuleitung.
  • Dieses Ereignis tritt in dem Zustand SX auf, der dem Zustand S2 sofort folgt.
  • Wenn die CPU (1) kein Signal DSACK auf 0-Pegel empfängt, wird sie in einen Wartezustand SX versetzt, der aus einer oder mehreren Taktperioden besteht.
  • Das durch die CPU (1) empfangene Signal DSACK muß der CPU (1) garantieren, daß die angeforderte Information auf dem Datenbus mit einer Verzögerung verfügbar sein wird, die nicht länger als allerhöchstens eine Taktperiode ist.
  • Wenn DSACK empfangen wird, wird die CPU (1) in die Zustände S3 und S4 versetzt, und am Ende des Zustands S4 lädt sie die auf dem Datenbus vorhandene Information in ein internes Register. Dies wird nur dann durchgeführt, wenn sich ein Signal BERR auf einer Steuerleitung auf 1-Pegel befindet, um anzuzeigen, daß der Lesevorgang korrekt durchgeführt wurde und kein Fehler in den Auslesedaten vorliegt.
  • Im Falle eines Fehlers muß das BERR-Signal wenigstens 20 ns vor dem Übergang vom Zustand S4 in den Zustand S5 auf 0-Pegel erniedrigt werden.
  • Sobald der Lesevorgang abgeschlossen ist, hebt die CPU (1) während des Zustands S5 das Signal AS erneut auf 1-Pegel an und entfernt die Adresse und die Befehle aus den jeweiligen Kanälen.
  • Beim Empfang von AS=1 müssen die MMU (2) und die Einheit, die das Signal DSACK erzeugt hat (MCU (4) oder Cachespeicher (3)), das Signal PAS beziehungsweise DSACK auf 1-Pegel anheben.
  • Wenn die CPU (1) zusammen mit dem Signal BERR=0 auch ein Signal HALT=0 empfängt, führt die CPU (1) bei Beendigung des Zustands S5 einen Wiederholungslauf durch, das heißt sie versucht den vorhergehenden Lesevorgang erneut.
  • Die Betriebsweise im Fall eines Schreibtransfers ist im wesentlichen ähnlich, mit dem einzigen Unterschied, daß in diesem Fall die CPU (1) den zu schreibenden Operanden auf den Datenkanal DBUS (8) während des Zustands S2 (Diagramm DBUS(W)) gibt und im Verlauf des nächstfolgenden Zustands ein Signal DS auf einer Steuerleitung auf 0-Pegel erniedrigt, um anzuzeigen, daß die Daten auf dem Bus vorhanden sind.
  • DS wechselt während des Zustands S5 zusammen mit AS auf 1-Pegel.
  • Aus der vorstehenden Zusammenfassung wird ersichtlich, daß die MCU (4), um mit der CPU (1) zusammenzuarbeiten, einen Eingabe-/Ausgabe-Datenkanal, einen Adresseneingabekanal, ein Eingangssignal zur Speicheraktivierung, wobei das Signal AS oder PAS eine derartige Funktion erfüllen können, einen Eingang für das Signal R/W und möglicherweise DS benötigt und in der Lage sein muß, ein Signal DA- STRO zu erzeugen, das die für das Signal DSACK geforderte Funktion erfüllt, das heißt garantiert, daß die Ausleseinformation mit einer Verzögerung verfügbar ist, die bezüglich des Übergangs von DASTRO von 1- auf 0-Pegel 60 ns (eine Taktperiode) nicht überschreitet.
  • Sowohl die MCU (4) als auch der Speicher (7) können von einem herkömmlichen Typ sein und erfordern keinerlei detaillierte Beschreibung.
  • Es ist lediglich zu erwähnen, daß, auch wenn ein von der CPU (1) ausgeführter Lese- oder Schreibvorgang als Minimum 6 Zustände benötigt, das heißt 180 ns, das Zeitintervall zwischen der Verfügbarkeit der logischen Adresse, durch AS=O validiert, und der Notwendigkeit, einen Auslesedatenwert auf dem Kanal DBUS (8) verfügbar zu haben, lediglich 3 Zustände lang ist (Zustände S2, S3, S4).
  • Es ist bekannt, daß es in gegenwärtig verwendeten dynamischen Speichern, die in Zeilen und Spalten organisiert sind, möglich ist, einen Speicherzyklus zu starten, auch wenn nur derjenige Teil einer Adresse bekannt ist, der einer Zeilenadresse entspricht. Der einer Spaltenadresse entsprechende Teil kann zu einem späteren Zeitpunkt verfügbar gemacht werden.
  • Auch ist bekannt, daß die Umwandlung von einer logischen in eine physikalische Adresse in virtuellen Speichersystemen nur ein Feld der Adresse beeinflußt, und daß der Teil, der eine Speicher-Zeilenadresse identifiziert, mit einer logischen Adresse ausgedrückt werden kann, die mit einer physikalischen Adresse übereinstimmt.
  • Der Speicher (7) kann daher bei Empfang des Signals AS=O einen Speicherzyklus starten.
  • Auch wenn dies der Fall ist, sollte er jedoch in der Lage sein, den Lesevorgang im Verlauf von drei Zuständen, das heißt innerhalb von 90 ns, abzuschließen.
  • Diese Betriebszeit ist beim gegenwärtigen Stand der Technik nicht erreichbar, vielmehr werden dynamische Speicher mit großer Kapazität und geringen Kosten hergestellt, die nur einen Speicherzyklus in der Größenordnung von 200 Nanosekunden aufweisen.
  • Die Einfügung eines Wartezustands im Betrieb der CPU (1) ist daher unvermeidbar, oder es ist die Aufnahme eines Cachespeichers, wie des Speichers (3), erforderlich, um diese ungünstige Eigenschaft zu überwinden.
  • Der Cachespeicher (3) beinhaltet im wesentlichen einen Inhalts-Assoziativspeicher oder CAM (12) mit einem internen Komparator, einen zyklischen Zähler (13), einen schnellen Schreib-/Lese-Speicher (14), einen Satz von bidirektionalen Dreistufengattern (15) und eine Steuerlogik (16).
  • Da die Erfindung im wesentlichen in der Steuerlogik (16) liegt, erfolgt nur eine kurze Beschreibung der anderen funktionalen Elemente.
  • Durch einen Ladeprozeß, der weiter unten beschrieben wird, wird eine physikalische Speicheradresse in den Assoziativspeicher (12) an jede adressierbare Stelle geladen, und zur gleichen Zeit wird der Operand, der in dem Arbeitsspeicher bei der gleichen physikalischen Adresse vorhanden ist, in eine entsprechende Stelle des schnellen Speichers (14) geladen.
  • Der schnelle Speicher (14) ist daher eine Teilkopie des Arbeitsspeichers.
  • Eine Liste jeder der zugehörigen Adressen der in dem schnellen Speicher gespeicherten Operanden ist in dem CAM (12) gespeichert.
  • Wenn die CPU (1) den Arbeitsspeicher (7) und den Cachespeicher (3) nach einem Lesevorgang abfragt, wird die auf dem Kanal PADD (11) vorhandene physikalische Adresse zum CAM (12) übertragen und gleichzeitig mit allen im CAM (12) gespeicherten Adressen verglichen.
  • Im Fall eines erfolgreichen Vergleichs gibt der CAM (12) ein Signal "HIT" auf die Leitung (18) und einen Adressierungscode auf dem Ausgabekanal (19) aus.
  • Ein derartiger Code ermöglicht zusätzlich zu dem Hinweis, welches die spezielle CAM(12)-Stelle ist, für die ein Treffer aufgetreten ist, die Auswahl jener speziellen Stelle des Speichers (14), welche den zugehörigen Operanden enthält.
  • Ein derartiger Operand kann ausgelesen und auf dem Kanal DBUS (8) über die Gatter (15) übertragen werden.
  • Es ist klar, daß im Fall eines Treffers der Arbeitsspeicher (7) nicht aktiviert wird.
  • Im Gegensatz dazu gibt im Fall eines nicht erfolgreichen Vergleichs der CAM (12) ein Signal "MISS" aus, um anzuzeigen, daß der angeforderte Operand nicht in dem schnellen Speicher (14) enthalten ist.
  • In diesem Fall ist es erforderlich, daß im Arbeitsspeicher (7) ein Lesevorgang gestartet und der Inhalt des Cachespeichers (3) aktualisiert wird.
  • Es kann das sogenannte FIFO-Verfahren verwendet werden.
  • Der zyklische Zähler (13) gibt einen Adressencode an den CAM (12) ab, wobei der um eins erniedrigte Code anzeigt, welches die letzte zu ladende Stelle des CAM (12) (und entsprechend die letzte zu ladende Stelle des schnellen Speichers (14)) war.
  • Daher zeigt der Code an, welche der verschiedenen Stellen die erste zu ladende Stelle war.
  • Im Fall eines "Fehltreffers" wird die auf dem Kanal PADD vorhandene physikalische Adresse in die Stelle des CAM (12) geladen, auf die durch den zyklischen Zähler (13) hingewiesen wird, und danach wird der Zähler um eins erhöht.
  • Die darin gespeicherte, vorher existierende Information wird daher gelöscht.
  • Außerdem wird der Operand, der durch den Arbeitsspeicher (7) auf dem Kanal DBUS (8) verfügbar gemacht wurde, in die Stelle des Speichers (14) geladen, die der aktualisierten CAM(12)-Stelle entspricht.
  • Die Architektur-Aufbaumaßnahmen, die eine Verringerung der Anzahl der den CAM (12) bildenden Komponenten erlauben, gehen über den Umfang der Erfindung hinaus.
  • Es genügt zu erwähnen, daß die Steuerlogik (16), welche die Signale HIT und MISS empfängt, einen Inkrementierbefehl INCR für den Zähler (13), einen Schreibbefehl DATL für den Speicher (14) und Steuersignale DATIN - DATEN für die bidirektionalen Gatter (15) zur Freigabe derselben für eine Übertragung in die eine oder die andere Richtung bereitstellen muß.
  • Typischerweise kann der CAM (12) eine maximale Antwortzeit in der Größenordnung von 30 ns und der schnelle Speicher (14) eine maximale Antwortzeit in der Größenordnung von 25 ns aufweisen.
  • Demzufolge kann, wenn die physikalischen Adressen wenigstens in der ersten Hälfte des Zustands S2 verfügbar sind, ein in dem schnellen Speicher (14) vorhandener Operand innerhalb des Zustands S4 ohne die Notwendigkeit von Wartezuständen auf dem Kanal DBUS (8) zur Verfügung gestellt werden, und das Treffersignal kann innerhalb des Zustands S3 zur Verfügung gestellt werden.
  • Daher kann im Fall eines Treffers die CPU (1) den angeforderten Operanden vom Cachespeicher (3) mit einem Lesevorgang in sechs aufeinanderfolgenden Zuständen S0 bis S5 und ohne Wartezustände virtuell erhalten.
  • Es ist jedoch erforderlich, der CPU (1) ein Signal DSACK=0 innerhalb des Zustands S2 zuzuführen, und ein derartiges Signal kann nicht aus dem Treffersignal hervorgehen, da dieses erst im Zustand S3 verfügbar ist.
  • Daher besteht die Notwendigkeit, ein Vorhersagesignal "HIT" zu verwenden, das im voraus abgegeben und erst später bestätigt oder nicht bestätigt wird.
  • Die in Fig. 3 gezeigte Steuerlogik (16) stellt ein derartiges Signal als Funktion vorher aufgetretener Ereignisse bereit.
  • Die Steuerlogik von Fig. 3 beinhaltet einen Dekoder (25), fünfzehn JK-Flip-Flops (26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 45, 46, 52, 53, 54), einen Multiplexer (36), drei NAND-Gatter (37, 38, 39), drei NOR-Gatter (40, 41, 42), drei UND-Catter (43, 44, 55), zwei Inverter (47, 48), drei Treiber (49, 50, 51) mit offenem Kollektor, ein Verzögerungselement (52) und zwei NAND-Gatter (56, 57) mit offenem Kollektor.
  • Die Betriebsweise der Steuerlogik (16) ist unter Bezugnahme auf Fig. 3 und die Fig. 4 und 5, die in einem Zeittaktdiagramm den Status verschiedener in Fig. 3 gezeigter Komponenten und den an einigen Punkten der Steuerlogik vorhandenen Signalpegel für verschiedene Betriebsbedingungen zeigen, leicht verständlich.
  • Das Flip-Flop (30), das Verzögerungselement (52) und das NAND-Gatter (37) bilden eine Zeittaktlogik, die einen aktiven Zustand für den Cache definiert.
  • Das Flip-Flop (30) empfängt das von der CPU (1) erzeugte Signal AS an den Eingängen J, K und das Signal CK am Taktgeber-Eingang.
  • Daher wird, wenn die CPU (1) einen externen Vorgang steuert und das Signal AS während des Zustands S1 erniedrigt, das normalerweise gesetzte Flip-Flop (30) durch die nächstfolgende Vorderflanke von CK, das heißt am Anfang des Zustands S2, zurückgesetzt. Zur gleichen Zeit wird ein Signal CS2 mit 0-Pegel am direkten Ausgang des Flip-Flops (30) erzeugt.
  • Dieses Signal wird bis zur ersten Vorderflanke des Taktgebersignals CK, das als nächstes dem Wiederanstieg von AS auf 1-Pegel folgt, das heißt bis zum Ende des Zustands S5 der CPU (1), aufrechterhalten.
  • Während dieses Zeitintervalls kann eine Anzahl von Wartezuständen zwischen dem Zustand S2 und dem Zustand S3 enthalten sein, was von dem Zeitpunkt abhängt, zu dem die CPU (1) DSACK auf logischem 0-Pegel empfängt.
  • Mit der Rückkehr des Flip-Flops (30) in den Setz-Zustand fällt das an dem invertierenden Ausgang des Flip-Flops (30) vorhandene Signal auf 0-Pegel und wird mit einer durch das Element (52) bewirkten Verzögerung an einem Eingang des NAND- Gatters (37) eingegeben, das an einem zweiten Eingang das bereits auf logischen 1-Pegel angehobene Signal CS2 empfängt.
  • Daher tritt, wenn CS2 wieder auf 1-Pegel angehoben wird, ein kurzer Puls CLR auf logischem 0-Pegel am Ausgang des NAND-Gatters (37) auf, wobei dieser Ausgang normalerweise auf 1-Pegel liegt.
  • Dieser Puls wird dazu verwendet, die verschiedenen Elemente der Steuerlogik zurückzusetzen.
  • Er beendet jeden Aktivierungszyklus der Steuerlogik.
  • Fig. 4 zeigt in einem Zeittaktdiagramm den Status der Signale CK, AS, CS2 und CLR.
  • Der Dekoder (25), die Flip-Flops (26, 27, 28, 29) und der Multiplexer (36) bilden eine Vorhersage- und Treffer-Aktualisierungslogik.
  • Die Flip-Flops (26, 27, 28, 29) zeigen, wenn sie gesetzt sind, an, daß im Verlauf eines Lesevorgangs, der einem momentanen Lesevorgang vorausging, zwischen einer physikalischen Speicheradresse und einer in dem CAM (12) gespeicherten Adresse jeweils für eine Adresse, die zu einem Benutzerdatenfeld (Flip-Flop (26)), einem Benutzerprogrammfeld (Flip-Flop (27)), einem Kontrollprogrammfeld (Flip- Flop (28)) oder einem Kontrolldatenfeld (Flip-Flop (29)) gehört, ein Treffer aufgetreten war.
  • Die von dem direkten Ausgang der Flip-Flops (26, 27, 28, 29) abgegebenen Signale UDI, UPI, SPI beziehungsweise SDI werden an den Eingängen I2, I1, I3 beziehungsweise I4 des Multiplexers (36) eingegeben, der an den Steuer- und Auswahleingängen den Funktionscode FC0-2 empfängt.
  • Wenn im Verlauf einer laufenden Operandenanforderung von externen Betriebsmitteln die CPU (1) den Funktionscode FC0-2=100 erzeugt, um anzuzeigen, daß es sich bei dem angeforderten Operanden um einen Benutzerdatenwert (der zu dem Benutzerdatenfeld gehört) handelt, wählt daher der Multiplexer (36) das am Eingang 12 vorliegende Signal UDI aus und gibt es aus.
  • Wenn das Signal UDI auf 1-Pegel liegt, zeigt es an, daß im Verlauf einer vorangegangenen Operandenanforderung ein Treffer aufgetreten war, das heißt, daß der Operand im Cache enthalten war.
  • Allgemein gibt der Multiplexer (36) bei jeder von der CPU (1) abgegebenen Operandenanforderung ein Signal PRHIT auf 1-Pegel, um anzuzeigen, daß ein Operand der gleichen Art (Benutzerprogrammdaten/-anweisung, Kontrollprogrammdaten/anweisung) vorher im Cache gefunden wurde, oder auf 0-Pegel ab, um anzuzeigen, daß ein Operand der gleichen Art vorher nicht im Cache gefunden wurde.
  • Das Signal PRHIT, welches das Ergebnis der von dem Multiplexer (36) aufgrund des Funktionscodes FC0-2 durchgeführten Auswahlvorgangs ist, ist bereits im Verlauf des Zustands S1 verfügbar und wird am NAND-Catter (36) zusammen mit dem Signal R/ eingegeben, das von der CPU (1) erzeugt wird und, wenn es auf 1- Pegel liegt, anzeigt, daß der angeforderte Vorgang ein Lesevorgang ist.
  • Das NAND-Gatter (39) empfängt an einem dritten Eingang ein Signal NOCAC.
  • NOCAC liegt normalerweise auf logischem 1-Pegel.
  • Der Ausgang des Gatters (39) liegt daher für einen Schreibvorgang auf 1-Pegel und ist für einen Lesevorgang von dem Status des Signals PRHIT abhängig.
  • Nun wird der Fall, in dem PRHIT=1 und R/ =1 (Lesevorgang mit Vortreffer) ist, betrachtet.
  • In diesem in dem Zeittaktdiagramm von Fig. 4 gezeigten Fall liegt der Ausgang des Gatters (39) auf logischem 0-Pegel.
  • Der Ausgang des Gatters (39) ist mit einem Eingang des NOR-Gatters (40) verbunden, das an einem zweiten Eingang das Signal CS2 empfängt.
  • Daher steigt, sobald CS2 auf 0-Pegel fällt, der Ausgang des Gatters (40) auf 1-Pegel und gibt ein Signal ACK=1 aus, das in ein NOR-Gatter (41) eingegeben wird.
  • Der Ausgang des NOR-Gatters (41) fällt auf 0-Pegel und gibt ein Signal DSACK=0 aus, das zur CPU (1) gesendet wird, um anzuzeigen, daß der angeforderte Operand in Kürze verfügbar sein wird.
  • Das Fallen von DSACK auf 0-Pegel tritt ersichtlich während des Zustands S2 auf (siehe DSACK im Diagramm von Fig. 4).
  • Das Signal ACK=1 wird des weiteren an den normalerweise zurückgesetzten Eingängen J, K des Flip-Flops (32) eingegeben.
  • Das Flip-Flop (32) wird durch die Anstiegsflanke des Signals , die dem Beginn des Zustands S3 entspricht, gesetzt und erzeugt am direkten Ausgang ein Signal CACK=1, das an einen zweiten Eingang des NOR-Gatters (41) angelegt wird und das Signal DSACK auf 0-Pegel hält, auch wenn das Signal PRHIT auf 0-Pegel fällt.
  • Der invertierende Ausgang des Flip-Flops (32) ist mit einem Eingang des NOR- Gatters (42) verbunden, welches das Signal CS2=0 an einem zweiten Eingang empfängt.
  • Somit steigt im Zustand S3 das Signal DATEN (Fig. 4) am Ausgang des Gatters (42) auf logischen 1-Pegel und gibt die Dreistufengatter (15) frei, um die aus dem schnellen Speicher (14) ausgelesene Information auf den Datenkanal DBUS (8) zu übertragen.
  • Die Adresse für den schnellen Speicher (14) wird ersichtlich durch den CAM (12) bereitgestellt, der wiederum vom Kanal PADD (11) eine wenigstens innerhalb des Zustands S2 gültige physikalische Adresse empfängt und daher in der Lage ist, eine Auswahladresse für den schnellen Speicher (14) wenigstens innerhalb des Zustands S3 zusammen mit einem Signal HIT oder MISS bereitzustellen.
  • Im Falle von HIT wird der Operandenanforderungsvorgang durch die CPU (1) beendet, welche die von dem schnellen Speicher (14) auf den Datenkanal DBUS (8) übertragene Information liest.
  • Dies geschieht während des Zustands S4.
  • Während des Zustands S5 hebt die CPU (1) das Signal AS auf 1-Pegel an.
  • Dies bewirkt, daß die Dreistufengatter (15) gesperrt werden, da das Signal DATEN auf 0-Pegel fällt, und sofort danach wird mit dem Anheben des Signals CK auf 1- Pegel (Ende des Zustands S5) das Signal CS2 wieder auf 1-Pegel angehoben, und das Signal CLR setzt das Flip-Flop (32) zurück.
  • Folglich steigt das Signal DSACK wieder auf 1-Pegel.
  • Im Falle von MISS=1, erzeugt innerhalb des Zustands S3, hebt das zusammen mit dem Signal CACK am UND-Gatter (55) eingegebene Signal MISS den Ausgang des Gatters (55), der mit einem Eingang der NAND-Gatter (56, 57, 58) verbunden ist, auf 1-Pegel an.
  • Die Gatter (56, 57) empfangen an einem zweiten Eingang das Signal CK und sind mit ihren Ausgängen mit Steuerkanalleitungen zur Übertragung der Signale HALT beziehungsweise BERR an die CPU (1) verbunden.
  • Das Gatter (38) empfängt das Signal CK und ein normalerweise auf 1-Pegel liegendes Signal MASK an einem zweiten beziehungsweise dritten Eingang.
  • Daher wird am Anfang des Zustands S4 im Falle von MISS=1, das heißt bei einem Fehlen des angeforderten Operanden im Cache, ein Signal MISRE=0 (Fig. 4) am Ausgang des Gatters (38) erzeugt. Zur gleichen Zeit werden die Signale HALT und BERR auf 0-Pegel erniedrigt.
  • Das Signal MISRE wird sowohl am Dekoder (25) als auch am Rücksetzeingang des Flip-Flops (31) eingegeben.
  • Wenn MISRE=0 ist, hebt der Dekoder (25) in Abhängigkeit von dem eingangsseitig vorhandenen Funktionscode FC0-2 ausgangsseitig eines der Signale RUPI, RUDI, RSPI beziehungsweise RSDI an. Diese Signale werden an dem Taktgebereingang der Flip-Flops (27), (26), (28) beziehungsweise (29) eingegeben.
  • Die Eingänge J, K derartiger Flip-Flops sind mit 0-Pegel verbunden, so daß sie bei Empfang des Taktgebersignals RUPI, RUDI, RSPI, RSDI zurückgesetzt werden.
  • Daher wird der zu dem Daten-/Anweisungs-Feld, das durch den momentanen Funktionscode FC0-2 identifiziert wird, gehörige Flip-Flop-Indikator zurückgesetzt.
  • Das an dem Setz-Eingang des Flip-Flops (31) eingegebene Signal MISRE=0 setzt ihn zurück.
  • Der invertierende Ausgang des Flip-Flops (31) ist mit dem Eingang der Treiber (49, 50) verbunden, die einen Ausgang vom Typ mit offenem Kollektor besitzen, der mit den Steuerkanalleitungen verbunden ist, die zur Übertragung der Signale HALT beziehungsweise BERR verwendet werden, und hält die Signale BERR, HALT auch nach dem Ende des Taktpulses CK bis zum Ende des Zustands S5 auf 0-Pegel.
  • Mit dem Rücksetzen des Flip-Flops (32), dessen direkter Ausgang mit dem Rücksetzeingang des Flip-Flops (31) verbunden ist, werden diese Signale dann wieder auf 1-Pegel angehoben.
  • Das Signal MISRE steigt im Gegensatz dazu am Ende des Zustands S4 auf 1-Pegel, da das Signal CK auf 0-Pegel fällt.
  • Das Flip-Flop (54), dessen Eingänge J, K mit dem direkten Ausgang des Flip-Flops (32) verbunden sind (um das Signal CACK zu empfangen), besitzt die Funktion, ein Maskierungssignal zu erzeugen, um zu vermeiden, daß am Ende des Zustands S5 und am Anfang des nächstfolgenden Zustands S0, wenn das Flip-Flop (32) aufgrund unvermeidbarer Signallaufzeiten noch nicht zurückgesetzt ist, das Signal MISRE am Ausgang des Gatters (38) durch den dem Zustand S0 entsprechenden Taktpuls CK abfallen kann.
  • Das Flip-Flop (54) wird durch das am Rücksetzeingang empfangene Signal CLR zurückgesetzt.
  • Es ist zusammenfassend zu erwähnen, daß in beiden Fällen (HIT, MISS) die Speicherzugriffsanforderung durch den Cachespeicher (3) "eingefangen" wird, wobei er im einen Fall die angeforderte Information ohne Modifizieren des Status der Treffervorhersagelogik (Flip-Flops (26), (29)) bereitstellt und im anderen Fall die Signale BERR sowie HALT erzeugt und den Status der Treffervorhersagelogik aktualisiert.
  • Bei Empfang des Fehlersignals BERR führt die CPU (1) einen "Wiederholungslauf"- Vorgang durch, das heißt sie versucht den Lesevorgang bei der gleichen Adresse erneut.
  • Es ist von Interesse zu betrachten, wie die Steuerlogik von Fig. 3 auf diese Anforderung antwortet, und allgemeiner, wie sie im Fall eines Lesevorgangs funktioniert, wenn die Vorhersagelogik eine MISS-Situation anzeigt.
  • Der Vorgang ist in dem Zeittaktdiagramm von Fig. 5 gezeigt.
  • Sobald AS=0 empfangen wird, wird die bereits betrachtete Zeittaktlogik aktiviert, und am Anfang des Zustands S2 wird das Signal CS2 auf 0-Pegel abgesenkt.
  • In diesem Fall liegt das Signal PRHIT auf logischem 0-Pegel, weil der entsprechende Treffer-Indikator zurückgesetzt wurde.
  • Der Ausgang des NAND-Gatters (39) ist mit den Eingängen J, K des Flip-Flops (34) verbunden, das am Taktgebereingang das Signal CS2 (das am invertierenden Ausgang des Flip-Flops (30) vorliegt) empfängt.
  • Liegt der Ausgang des Gatters (39) auf logischem 1-Pegel, so wird das Flip-Flop (34) am Anfang des Zustands S2 gesetzt und erzeugt am direkten Ausgang ein Signal NOCAC (Fig. 5). NOCAC wird als Speicherzugriffsanforderung zu der Speichersteuereinheit (4) gesendet.
  • Nach einer Zeitspanne, die von der Dauer des Speicherzyklus und auch von dem Umstand abhängt, daß die Speicherzugriffsanforderung sofort erfüllt oder in andere laufende oder anstehende Zugriffsanforderungen eingereiht werden kann (unter der Annahme, daß MCU (4) von einem Doppelanschlußtyp ist), antwortet die MCU (4) auf die Anforderung durch Anheben eines Signals DASTRO auf logischen 1-Pegel.
  • Das Signal DASTRO wird an einen Eingang des NOR-Gatters (41) angelegt, welches das Signal DSACK=0 an die CPU (1) abgibt.
  • Das Signal DASTRO wird an den Eingang J des Flip-Flops (33) angelegt, dessen Eingang K mit dem logischen 0-Pegel verbunden ist. Das Flip-Flop (33) empfängt am Taktgebereingang das durch den Oszillator (6) erzeugte Signal CK (invertiertes CK).
  • Daher wird das Flip-Flop (33) durch die erste Anstiegsflanke von CK, die dem Empfang von DASTRO folgt und der in der CPU (1) der Anfang des Zustands S3 entspricht, gesetzt, und ein Signal DATIN an seinem direkten Ausgang wird angehoben.
  • DATIN gibt die bidirektionalen Gatter (15) frei, um die auf dem Kanal DBUS (8) vorhandene Information in dem schnellen Speicher (14) an die Adresse, auf die durch den zyklischen Zähler (13) hingewiesen wird, zu übertragen.
  • DATIN wird des weiteren an dem Taktgebereingang des Flip-Flops (52) eingegeben, das am Eingang J das durch den CAM (12) erzeugte Signal MISS empfängt.
  • Im Falle MISS=1 wird das Flip-Flop (52) gesetzt, und es erzeugt am direkten Ausgang ein Signal MISS1=1.
  • DATIN wird auch an dem Eingang J des Flip-Flops (35) eingegeben, das an dem Taktgebereingang das Signal CK und am Eingang K den logischen 0-Pegel empfängt.
  • Durch die Anstiegsflanke von CK, die derjenigen folgt, welche das Flip-Flop (33) setzt, das heißt am Ende des Zustands S4 der CPU (1), wird auch das Flip-Flop (35) gesetzt und sein direkter Ausgang steigt auf logischen 1-Pegel.
  • Der direkte Ausgang des Flip-Flops (35) ist mit einem Eingang des UND-Gatters (44) verbunden, das an anderen Eingängen die Signale MISS1, MERR und R/W empfängt.
  • MISS 1 wird durch das Flip-Flop (52), R/W durch die CPU (1) und MERR durch die MCU (4) zusammen mit den von dem Speicher ausgelesenen Daten erzeugt, wobei MERR im Fall, daß kein Fehler (in den Daten) vorliegt, auf logischem 1-Pegel liegt.
  • Somit wechselt, wenn die angeforderte Information nicht im Cache enthalten und daher MISS=1 ist und der Speichervorgang korrekt durchgeführt wurde und daher MERR=1 ist, der Ausgang des Gatters (44) auf 1-Pegel und erzeugt ein Signal DATL, das zum CAM (12) und zu dem schnellen Speicher (14) gesendet wird, um (beim Erscheinen der Anstiegsflanke von DATL) die auf dem Kanal PADD vorhandene Adresse und die auf dem Kanal DBUS (8) vorhandenen Daten in den CAM (12) beziehungsweise den Speicher (14) zu laden, wobei die von dem Speicher (14) adressierte Stelle durch den zyklischen Zähler (13) identifiziert wird.
  • Am Ende des Zustands S5 der CPU setzt das Signal CLR die Flip-Flops (33), (35) und (52) zurück. Sie senken die Signale DATIN, DATL beziehungsweise MISS1 auf 0-Pegel ab.
  • Das Signal DATL erzeugt über den Inverter (48) das Signal INCR, das durch seine Anstiegsflanke am Ende des Zustands S5 eine Inkrementierung des zyklischen Zählers (13) bewirkt.
  • Im Fall eines Lesefehlers wird der Vorgang, bei dem der Inhalt des Assoziativspeichers aktualisiert wird, nicht durchgeführt, und das Signal MERR=0 wird über den Treiber (51) zur CPU (1) für eine geeignete Fehlerbehandlung übertragen.
  • In dem vorhergehenden Fall eines "Wiederholungslaufs", das heißt, daß das Lesen eines Speichers einem nicht bestätigten Vortreffer folgt, ist es klar, daß das Signal MISS notwendigerweise auf 1-Pegel liegt, und es ist zu bemerken, daß der Zustand der Vortrefferindikatoren (26, 27, 28, 29) nicht modifiziert wird.
  • Nun wird der Fall betrachtet, in dem die Vortrefferanzeige eine Fehltrefferanzeige ist (PRHIT=0) und daher sofort ein Vorgang zum Lesen des Speichers gestartet wird, jedoch im Verlauf von dessen Ausführung der CAM (12) eine HIT-Anzeige liefert.
  • Daher befindet sich die angeforderte Information bereits im Cache.
  • In diesem Fall läuft der Speicherlesevorgang normal weiter, es wird jedoch keine Aktualisierung des Inhalts im Cache durchgeführt. Tatsächlich verhindert das Signal MISS =0 die Erzeugung der Signale DATL und INCR.
  • Umgekehrt wird eine Aktualisierung des Status der Vortrefferindikatoren durchgeführt.
  • Zu diesem Zweck wird das Signal NOCAC am Eingang J des Flip-Flops (45) eingegeben, welches das Signal CK am Taktgebereingang und das Signal CLR am Rücksetzeingang empfängt.
  • Der direkte Ausgang des Flip-Flops (45) ist mit dem Eingang J des Flip-Flops (46) verbunden, welches das Signal CK am Taktgebereingang und das Signal CLR am Rücksetzeingang empfängt.
  • Der direkte Ausgang des Flip-Flops (46) ist mit dem Eingang J des Flip-Flops (53) verbunden welches das Signal CK am Taktgebereingang und das Signal CLR am Rücksetzeingang empfängt.
  • Die Flip-Flops (45), (46) und (53) wirken als ein Schieberegister:
  • Wenn das Signal NOCAC auf 1-Pegel steigt, werden die normalerweise zurückgesetzten Flip-Flops (45), (46) und (53) nacheinander bei jedem Wechsel des Signals CK gesetzt.
  • Am direkten Ausgang des Flip-Flops (46) steigt ein Signal CT150 150 ns nach dem Beginn eines Zustands S0 auf 1-Pegel, und am invertierenden Ausgang des Flip- Flops (53) fällt ein Signal CT180 180 ns nach dem Beginn des Zustands S0 auf 0-Pegel.
  • Die zwei Signale liegen beide während eines Zeitintervalls von 30 ns, während dem das Treffersignal im Fall eines Treffers in stabiler Weise vorliegt, auf logischem 1- Pegel.
  • Die Signale CT150, CT180 werden zusammen mit den Signalen R/W und HIT in den Dekoder (25) eingegeben.
  • Das gemeinsame Vorliegen derartiger Signale auf 1-Pegel bewirkt die Erzeugung (durch den Dekoder (25)) eines Setzpulses auf logischem 0-Pegel von vier möglichen Setzpulsen SUPI, SUDI, SSPI, SSDI, abhängig von dem Funktionscode FC0-2 am Eingang des Dekoders (25).
  • Daher wird, wenn die in Ausführung befindliche Anweisung zu einer Benutzerprogrammanweisung gehört, der Puls SUPI=0 erzeugt.
  • SUPI wird an den Setzeingang des Flip-Flops (27) angelegt und setzt dieses.
  • Um zu vermeiden, daß die Änderung des Indikatorzustands über den Multiplexer (36) im Verlauf des momentanen Lesevorgangs und der sich daraus ergebenden Aktivierung des Flip-Flops (32) eine Vortrefferanzeige liefert, ist ein Eingang des NAND- Gatters (39) mit dem invertierenden Ausgang des Flip-Flops (34) verbunden.
  • Auch wenn es für den Umfang der Erfindung nicht von Bedeutung ist, ist es zweckmäßig, die Betriebsweise der Steuerlogik für den Fall zu betrachten, in dem die CPU (1) Speicherschreibvorgänge anfordert.
  • In diesem Fall ist es wichtig zu garantieren, daß der Inhalt des Cachespeichers mit dem Inhalt des Arbeitsspeichers übereinstimmt.
  • Daher bewirkt das Signal R/ =0 am Eingang des NAND-Gatters (39), daß das Flip-Flop (34) gesetzt und ein Speicherzyklus gestartet wird.
  • Zusätzlich werden, wenn die Schreibadresse eine im CAM (12) vorhandene Adresse und folglich die HIT-Bedingung erfüllt ist, wenn das Signal DASTRO=1 von der MCU (4) empfangen wird, die Flip-Flops (33) und (35) gesetzt.
  • Der direkte Ausgang des Flip-Flops (35) ist mit einem Eingang des UND-Gatters (43) verbunden, das als Eingaben die Signale HIT und /W (das durch den Inverter (47) aus R/ erhalten wird) empfängt.
  • Das UND-Gatter (43) gibt das Signal DATL ab.
  • Daher wird die auf dem Kanal DBUS (8) vorhandene Information zusätzlich dazu, daß sie in den Arbeitsspeicher geschrieben wird, auch in den Cache (und präziser in den Speicher (14)) unter der durch den CAM (12) spezifizierten Adresse geschrieben.
  • Das beschriebene Verfahren ist als "Durchschreiben" bekannt.
  • Es ist klar, daß es sich bei dem Cachespeicher und insbesondere der Steuerlogik, die unter Bezugnahme auf die Zeichnungen beschrieben wurde, lediglich um eine bevorzugte Ausführungsform der Erfindung handelt, und daß verschiedene Änderungen und Zusätze diesbezüglich vorgenommen werden können.
  • Zum Beispiel können sowohl die Flip-Flops (45, 53) als auch die Flip-Flops (33, 35) durch Schieberegister ersetzt werden.
  • Der logische Pegel der Signale kann insgesamt oder teilweise verändert werden, wobei entsprechend die durch die verschiedenen Gatter durchgeführten logischen Funktionen an die geänderten Umstände anzupassen sind.
  • Außerdem ist es, wenn es auf Software-Ebene vorgeplant ist, daß die I/O-Prozessoren auf die gleichen, durch die CPU (1) verwendeten Speicherfelder zugreifen können, und es erwünscht ist, daß die Verwendung eines Speicherblockschutzes auf Software- Ebene vermieden wird, möglich "Überwachungs"-Schaltkreise der Steuerlogik des Cache hinzuzufügen.
  • "Überwachungs"-Schaltkreise überwachen die durch die I/O-Prozessoren innerhalb des Arbeitsspeichers durchgeführten Schreibvorgänge, so daß, wenn derartige Vorgänge eine Information modifizieren, die auch im Cachespeicher enthalten ist, eine derartige Information auch im Cache modifiziert oder ungültig gemacht wird.
  • In ähnlicher Weise kann die HIT-Vorhersagelogik, die eine Vortreffer-/Vorfehltreffer- Anzeige getrennt für Daten/Anweisungen von Kontroll-/Benutzer-Programmen bereitstellt, um die von dem speziellen, verwendeten Mikroprozessor (MC68020) angebotene Leistungsfähigkeit voll auszunutzen, vereinfacht werden und ein spezifisches Vortreffersignal für nur zwei Kategorien von Operanden (Daten-Anweisungen) oder noch einfacher, wenn auch weniger wirksam in Bezug auf eine Erhöhung der Leistungsfähigkeit, ein einziges Vortreffersignal sowohl für Daten als auch für Anweisungen bereitstellen.
  • Weitere Änderungen können sich auf die Vortreffer-, Vorfehltrefferkonzepte beziehen, für die auch eine lediglich partielle Nutzung möglich ist.
  • Zum Beispiel ist es möglich, eine Steuerlogik anzuordnen, die im Fall eines vorherigen Treffers ein Vortreffersignal liefert, die jedoch im Fall eines Fehltreffers nicht sofort einen Speicherlesevorgang startet, sondern auf das Ergebnis des in dem Assoziativspeicher durchgeführten Vergleichs wartet.
  • In diesem Fall braucht der Speicherlesevorgang lediglich im Fall eines tatsächlichen Fehltreffers aktiviert zu werden, das heißt im Fall eines wirklichen Bedarfs.
  • Im Fall eines Treffers kann die angeforderte Information durch den Cache geliefert werden.
  • Zum Zweck der besseren Verdeutlichung des Wortlauts der beigefügten Patentansprüche sei auch erwähnt, daß die Signale CS2 und , deren Erzeugung eindeutig durch das von der CPU (1) synchron mit dem Taktgebersignal CK erzeugte Signal AS festgelegt ist, so betrachtet werden können, als ob sie von der CPU (1) erzeugt oder auf irgendeine Weise von ihr abgeleitet sind und daß sie ein mit dem Taktsignal synchronisiertes Adressen-Abtast-Signal bilden.

Claims (2)

1. Treffervorhersage-Cachespeicher, wobei ein Assoziativspeicher Adressen von Operanden enthält, die in einem Arbeitsspeicher abgespeichert sind, und ein schneller Speicher die zu den Adressen gehörigen Operanden enthält, wobei der Assoziativspeicher, wenn er von einer zentralen Rechnereinheit abgefragt wird, ein Treffer- oder Fehltreffersignal liefert, um jeweils anzuzeigen, daß ein angeforderter Operand in dem schnellen Speicher vorhanden oder nicht vorhanden ist, dadurch gekennzeichnet, daß der Vorhersage-Cachespeicher beinhaltet:
- eine Steuerlogik (25, 26, 27, 28, 29, 36) mit wenigstens einem Speicherelement (26, 27, 28, 29) zur Speicherung einer Treffer- oder Fehltrefferbedingung, die während einer vorausgehenden Abfrage des Cachespeichers auftrat, und zur Bereitstellung eines zugehörigen Vortreffer- oder Vorfehltreffer-Indikatorsignals,
- erste Logikschaltkreise (39, 40, 32, 34), die von der zentralen Rechnereinheit erhaltene Speicherleseabfragesignale (CS2, R/ ) sowie das Indikatorsignal empfangen und der zentralen Rechnereinheit ein für das Vorhandensein eines Operanden im Cachespeicher indikatives Signal (CACK) zuführen, und zwar ungeachtet des tatsächlichen Vorhandenseins des Operanden, wenn das Indikatorsignal ein Vortrefferindikator ist, und die ein Speicherzugriffsignal (NOCAC) liefern,
- zweite Logikschaltkreise (55, 38, 56, 57, 31, 49, 50, 54), die das Fehltreffersignal von dem Assoziativspeicher und das für das Vorhandensein eines Operanden im Cachespeicher indikative Signal (CACK) empfangen, um ein Fehlersignal (BERR) zwecks Zuführung zur zentralen Rechnereinheit, die dann den Lesevorgang bei der gleichen Adresse erneut versucht, sowie ein Rücksetzsignal (MISRE) für das Speicherelement zu erzeugen, wobei das Speicherelement eine Vorfehltreffer-Anzeige bereitstellt, wenn das Fehltreffersignal und das für das Vorhandensein eines Operanden im Cache indikative Signal gemeinsam empfangen werden,
- dritte Logikschaltkreise (33, 35, 52, 44), die ein von dem Arbeitsspeicher ausgegebenes, für die Verfügbarkeit eines Operanden indikatives Signal (DASTRO) sowie das Fehltreffersignal von dem Assoziativspeicher empfangen, um ein Ladesignal (DATL) zum Laden des Assoziativspeichers und des schnellen Speichers zu erzwingen, wenn das Fehltreffersignal und das für die Verfügbarkeit eines Operanden indikative Signal gemeinsam empfangen werden, und
- vierte Logikschaltkreise (45, 46, 53, 25), die das Speicherzugriffsignal (NOCAC) und das Treffersignal von dem Assoziativspeicher empfangen, um für das Speicherelement ein Setzsignal zwecks Abspeicherung einer Trefferbedingung in demselben zu liefern, wenn das Treffersignal und das Speicherzugriffsignal gemeinsam empfangen werden.
2. Treffervorhersage-Cachespeicher nach Anspruch 1, wobei die Steuerlogik des weiteren beinhaltet:
- fünfte Logikschaltkreise (39, 34) welche die von dem zentralen Rechner erhaltenen Speicherleseabfragesignale (CS2, R/ ) und das Indikatorsignal empfangen und als Eingabe in den Arbeitsspeicher das Speicherstartsignal (NOCAC) zum Auslesen eines Operanden aus dem Arbeitsspeicher bereitstellen, und zwar ungeachtet des Nichtvorhandenseins des Operanden in dem Cachespeicher, wenn das Indikatorsignal ein Vortrefferindikator ist, wobei das Nichtvorhandensein des Operanden im Cache anschließend durch den Assoziativspeicher bestätigt oder nicht bestätigt wird.
DE3850514T 1987-03-25 1988-03-14 Cachespeicher mit Treffervorhersagelogik. Expired - Fee Related DE3850514T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT19832/87A IT1202687B (it) 1987-03-25 1987-03-25 Memoria tampone a predizione di hit

Publications (2)

Publication Number Publication Date
DE3850514D1 DE3850514D1 (de) 1994-08-11
DE3850514T2 true DE3850514T2 (de) 1994-10-27

Family

ID=11161653

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3850514T Expired - Fee Related DE3850514T2 (de) 1987-03-25 1988-03-14 Cachespeicher mit Treffervorhersagelogik.

Country Status (4)

Country Link
US (1) US4912626A (de)
EP (1) EP0283891B1 (de)
DE (1) DE3850514T2 (de)
IT (1) IT1202687B (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5151982A (en) * 1988-03-30 1992-09-29 Kabushiki Kaisha Toshiba Data processing system
US5123097A (en) * 1989-01-05 1992-06-16 Bull Hn Information Systems Inc. Apparatus and method for simultaneous execution of a write instruction and a succeeding read instruction in a data processing system with a store through cache strategy
US5093777A (en) * 1989-06-12 1992-03-03 Bull Hn Information Systems Inc. Method and apparatus for predicting address of a subsequent cache request upon analyzing address patterns stored in separate miss stack
JPH04233642A (ja) * 1990-07-27 1992-08-21 Dell Usa Corp キャッシュアクセスと並列的にメモリアクセスを行なうプロセッサ及びそれに用いられる方法
US5392414A (en) * 1992-06-30 1995-02-21 Sun Microsystems, Inc. Rapid data retrieval from data storage structures using prior access predictive annotations
US5513143A (en) * 1992-07-31 1996-04-30 Sgs-Thomson Microelectronics, Inc. Data cache memory internal circuitry for reducing wait states
US5553270A (en) * 1993-09-01 1996-09-03 Digital Equipment Corporation Apparatus for providing improved memory access in page mode access systems with pipelined cache access and main memory address replay
US5548739A (en) * 1993-11-04 1996-08-20 Sun Microsystems, Inc. Method and apparatus for rapidly retrieving data from a physically addressed data storage structure using address page crossing predictive annotations
US5987561A (en) * 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US5752069A (en) * 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure
US5860104A (en) * 1995-08-31 1999-01-12 Advanced Micro Devices, Inc. Data cache which speculatively updates a predicted data cache storage location with store data and subsequently corrects mispredicted updates
US5838943A (en) 1996-03-26 1998-11-17 Advanced Micro Devices, Inc. Apparatus for speculatively storing and restoring data to a cache memory
GB2378779B (en) * 2001-08-14 2005-02-02 Advanced Risc Mach Ltd Accessing memory units in a data processing apparatus
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US7117290B2 (en) * 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US7395372B2 (en) * 2003-11-14 2008-07-01 International Business Machines Corporation Method and system for providing cache set selection which is power optimized
US10257264B1 (en) * 2016-02-22 2019-04-09 Yume, Inc. System and method for reducing data center latency

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4170039A (en) * 1978-07-17 1979-10-02 International Business Machines Corporation Virtual address translation speed up technique
US4363095A (en) * 1980-12-31 1982-12-07 Honeywell Information Systems Inc. Hit/miss logic for a cache memory
US4445177A (en) * 1981-05-22 1984-04-24 Data General Corporation Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions
US4458310A (en) * 1981-10-02 1984-07-03 At&T Bell Laboratories Cache memory using a lowest priority replacement circuit
US4603380A (en) * 1983-07-01 1986-07-29 International Business Machines Corporation DASD cache block staging

Also Published As

Publication number Publication date
IT1202687B (it) 1989-02-09
DE3850514D1 (de) 1994-08-11
US4912626A (en) 1990-03-27
EP0283891B1 (de) 1994-07-06
EP0283891A3 (en) 1990-07-18
EP0283891A2 (de) 1988-09-28
IT8719832A0 (it) 1987-03-25

Similar Documents

Publication Publication Date Title
DE3850514T2 (de) Cachespeicher mit Treffervorhersagelogik.
DE69906156T2 (de) Mikroprozessorvorrichtung mit programmierbaren wartezuständen
DE2847960C2 (de) Speichersteuereinrichtung
DE69203842T2 (de) Speichersteuerungsvorrichtung mit Snoop-Mechanismus.
DE69031658T2 (de) Vorrichtung und verfahren für instandhaltung von cache/zentralspeicherkonsistenz
DE2240433C3 (de) Hierarchische Datenspeicheranordnung für mehrere über Pufferspeicher angeschlossene Einheiten und ein Verfahren zu deren Betrieb
DE69132480T2 (de) Prozessor, der Speicherzugriffe parallel zu Cache-Speicherzugriffen durchführt und Verfahren dafür
DE69130554T2 (de) Registerschaltung zum Kopieren des Inhalts eines Registers in ein anderes Register
DE68923944T2 (de) RAM mit doppelten Ein/Ausgängen.
DE3685876T2 (de) Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher.
DE69025302T2 (de) Hochleistungsrasterpuffer- und -cachespeicheranordnung
DE69018100T2 (de) Datenübertragung über Busadressleitungen.
DE3752017T2 (de) Mikrorechner mit Zugriffsfähigkeit auf einen internen Speicher mit gewünschter variabler Zugriffszeit
DE4237417C2 (de) Datenverarbeitungssystem
EP0013737A1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE2241257B2 (de) Datenverarbeitende Anlage
DE3909896A1 (de) Vorrichtung und verfahren fuer den zugriff zu in einem seitenspeicher gespeicherten daten
DE3750949T2 (de) Datenverarbeitungssystem mit watch-dog Schaltung.
DE68916563T2 (de) Speicheranordnung mit Vorhersage der Bausteinauswahl.
DE69013394T2 (de) Datenverarbeitungssystem mit Zweiwegarbiter zur Steuerung des Zugangs zu einem Systembus.
DE3688400T2 (de) Cachespeicherschaltung geeignet zur verarbeitung einer leseanforderung waehrend der uebertragung eines datenblocks.
DE2547488A1 (de) Mikroprogrammierte datenverarbeitungsanlage
DE3588061T2 (de) Speicherzugriffs-Steuerungssystem und -Verfahren für ein Informationsverarbeitungsgerät.
DE60127520T2 (de) Prozessor mit Befehlscache mit niedrigem Stromverbrauch

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Free format text: PATENTANWAELTE RUFF, WILHELM, BEIER, DAUSTER & PARTNER, 70173 STUTTGART

8339 Ceased/non-payment of the annual fee