DE3854368T2 - Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler. - Google Patents

Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler.

Info

Publication number
DE3854368T2
DE3854368T2 DE3854368T DE3854368T DE3854368T2 DE 3854368 T2 DE3854368 T2 DE 3854368T2 DE 3854368 T DE3854368 T DE 3854368T DE 3854368 T DE3854368 T DE 3854368T DE 3854368 T2 DE3854368 T2 DE 3854368T2
Authority
DE
Germany
Prior art keywords
memory
address
cache
directory
signals
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
DE3854368T
Other languages
English (en)
Other versions
DE3854368D1 (de
Inventor
George J Barlow
James W Keeley
Chester M Nibby
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
Application granted granted Critical
Publication of DE3854368D1 publication Critical patent/DE3854368D1/de
Publication of DE3854368T2 publication Critical patent/DE3854368T2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf Cache-Speichersysteme und insbesondere Cache-Speichersysteme, die von einer Vielzahl von Verarbeitungseinheiten gemeinsam genutzt werden.
  • Das US-Patent 4,562,536 offenbart relevante Hintergründe zum Verständnis der vorliegenden Erfindung, da sie ein Mehrfachebenen-Cache-System lehrt, dessen Verzeichnis und Cache-Speicher in Ebenen von Speicherstellen organisiert ist und da das Verzeichnis eine Fehlerprüfvorrichtung zum Erzeugen von Adreßprüfbits aufweist die in Verzeichnisstellen geschrieben werden, und da eine Steuervorrichtung in Antwort auf Fehlersignale von der Fehlerprülvorrichtung eine Cache-Operation auf jene Ebenen herabsetzt, von denen erfaßt ist, daß sie frei von Fehlern sind.
  • Die europäische Patentanmeldung EP-176,972 mit dem Titel "Multiprocessor Share Pipeline Cache Memory" offenbart ein Cache-Speichersubsystem, welches zwei Pipeline-Stufen aufweist, die von einer Vielzahl von Quellen einschließlich einer Anzahl unabhängig betriebener Zentralverarbeitungseinheiten gemeinsam genutzt werden können. Die erste Pipeline-Stufe sieht eine Verzeichnissuche und eine Vergleichsoperation vor, wohingegen die zweite Pipeline-Stufe die Operationen des Suchens der angeforderten Daten vom Cache-Pufferspeicher und ihre Übertragung an die anfordernde Quelle ausführt. Einä Zeitgabe- und Steuervorrichtung koppelt die Quellen mit Zeitschlitzen und weist jeder Verarbeitungseinheit Zeitschlitze zu, die ihre Operationen durch eine Pipeline-Stufe versetzen. Somit arbeiten die Verarbeitungseinheiten unabhängig und konfliktfrei.
  • Beim gemeinsamen Nutzen eines Cache-Speichers oder eines Hauptspeichers zwischen einer Vielzahl von Verarbeitungseinheiten können Sequenzen von Ereignissen oder Operationen auftreten, die Inkohärenz hervorrufen können. Um dies zu vermeiden, ist es eine Lösung, die Verarbeitungseinheiten den verfügbaren Speicherraum gemeinsam nutzen zu lassen und einen Sperrmechanismus vorzusehen, welcher eine Verarbeitungseinheit daran hindern würde, Information zu modifizieren, auf welche von einer anderen Verarbeitungseinheit zugegriffen wird. Während diese Lösung gut für einen Hauptspeicher arbeitet, kann sie zu übermäßigem Datenaustausch oder -umsatz führen, was das Cache-Trefferverhältnis herabsetzt. Zusätzlich reduziert dieser Anordnungstyp die Fähigkeit jeder Verarbeitungseinheit, unabhängig zu arbeiten.
  • Um dieses Problem zu vermeiden, offenbart das verwandte US-Patent 4,785,395 mit dem Titel "A Coherent Cache System Shared by a Pair of Processing Units" eine Anordnung, welche einen vollständig unabhängigen Betrieb jeder Verarbeitungseinheit erlaubt, indem eine Hälfte des insgesamt verfügbaren Cache-Speicherraums durch eine separate Zählaustauschvorrichtung zugewiesen wird, die in der Puffer-Speicherstufe enthalten ist. Während jedes Verzeichniszuweisungszyklus, der für eine Verarbeitungseinheit ausgeführt wird, wird der zugewiesene Raum für jede Verarbeitungseinheit nach dem Vorhandensein einer Mehrfachzuweisung geprüft. Die Adresse der mehrfach zugewiesenen Stelle, die zu der Verarbeitungseinheit gehört, der eine niedrigere Priorität zugewiesen ist, wird in einem Mehrfachzuweisungsspeicher gespeichert, der einen frühest möglichen Datenaustausch erlaubt, wodurch Datenkohärenz zwischen unabhängig arbeitenden Verarbeitungseinheiten aufrecht erhalten wird.
  • Während die obige Anordnung eine Dateninkohärenz zwischen unabhängig betriebenen Verarbeitungseinheiten verhindert, kann Inkohärenz nach wie vor in eng gekoppelten Verarbeitungssystemen auftreten, bei denen Verarbeitungs- oder Datenbehandlungseinheiten einen gemeinsamen Hauptspeicher gemeinsam nutzen. Um Datenkohärenz in solchen Systemen aufrecht zu erhalten, weist jede Verarbeitungseinheit, die einen zugehörigen Cache aufweist, eine Horchvorrichtung auf, welche Speicherschreibvorgänge überwacht, die von anderen Einheiten an den gemeinsamen Systembus angelegt werden. Dies ermöglicht es der Verarbeitungseinheit, die Inhalte Ihres Cache zu aktualisieren, um Änderungen in den entsprechenden Hauptspeicherdaten widerzuspiegeln, die von anderen Einheiten vorgenommen wurden, um so Cache-Kohärenz sicherzustellen. Während des Aktualisierungsprozesses können manchmal Bedingungen eintreten, die es einer Verarbeitungseinheit unmöglich machen, den Cache genau zu aktualisieren. Zum Beispiel könnten die von der Horchvorrichtung empfangenen Daten verfälscht sein, oder der an den Bus angelegte Speicherschreibvorgang erzeugte eine Auszeit. Die letztere Bedingung kann eintreten, wenn das System Elastizitätsmerkmale aufweist wie jene, die in der gleichzeitig anhängenden Anmeldung EP 165 603 mit dem Titel "Resilient Data Processing Bus System" offenbart sind.
  • Normalerweise würde im Falle verfälschter Daten eine Speicherbedingung erfaßt werden, und die Daten würden verworfen werden. In diesen Fällen, in denen verfälschte Daten an die Cache-Einheit gegeben wurden, würde der sich ergebende Treffer oder das sich ergebende Verfehlen, was erzeugt wird, keine zuverlässigen Anzeigen erzeugen. Zum Beispiel könnte ein Verfehlen, wenn es falsch ist, mehrfache Zuweisungen hervorbringen. Ein Treffer, wenn er falsch ist, könnte zum Aktualisieren von Daten der falschen Verarbeitungseinheit führen. Welche Aktion an diesem Punkt auch immer vorgenommen wird, sie macht den Inhalt der Cache-Einheit an diesem Punkt inkohärent.
  • Das Obige trifft auch für Speicherschreibvorgänge zu, die von jeder Verarbeitungseinheit ausgegeben werden. Das heißt, wenn der Speicherschreibvorgang, der an den Systembus von der Verarbeitungseinheit angelegt wurde, einen Fehler erzeugt, wurde das Sperren des Inhalts ihrer eigenen Cache-Einheit, durch diesen Schreibvorgang aktualisiert zu werden, weiteren Schaden verhindern. Jedoch gibt dies ebenso Anlaß zu einer potentiellen Inkohärenz. Um das Obige zu überwinden, wäre es eine mögliche Lösung, eine zusätzliche Fehlererfassung und Korrekturfähigkeiten über das ganze System hinweg vorzusehen, welche in der Lage wären, die schlechten oder verfälschten Daten zu rekonstruieren. Jedoch würde sich dies als teuer und ziemiich zeitaufwendig herausstellen, wodurch eine beträchtliche Abnahme in der Cache-Leistungsfähigkeit verursacht wird. Darüber hinaus mag immer noch nicht möglich sein, eine Kohärenz unter allen Bedingungen insbesondere innerhalb eines Systems welches Elastizitätsmerkmale aufweist, sicherzustellen.
  • Demgemäß ist es ein Hauptziel der vorliegenden Erfindung, eine Technik und eine Vorrichtung anzugeben, welche in der Lage ist, Cache-Kohärenz auf eine sehr zuverlässige Weise aufrecht zu erhalten, ohne die Gesamtleistungsfähigkeit zu beeinträchtigen.
  • Es ist ein weiteres Ziel der vorliegenden Erfindung, Kohärenz innerhalb eines eng gekoppelten, elastischen Datenverarbeitungssystems aufrecht zu erhalten.
  • Die obigen Ziele und Vorteile der vorliegenden Erfindung werden durch ein Cache-Speichersubsystem erreicht, wie es in Patentanspruch 1 beansprucht ist, und werden durch ein Multiverarbeitungssystem erreicht, welches eine Vielzahl von Cache-Speichersubsystemen gemäß Patentanspruch 1 aufweist, wie es in Patentanspruch 8 beansprucht ist. Das Cache-Speichersubsystem weist einen Mehrfachebenen-Verzeichnisspeicher und Pufferspeicher-Pipeline-Stufen auf, die von zumindest einem Paar unabhängig betriebener Zentralverarbeitungseinheiten gemeinsam genutzt werden, sowie eine FIFO-Vorrichtung auf, welche mit einem Systembus eines eng gekoppelten Datenverarbeitungssystems zusammen mit den anderen Einheiten des Systems koppelt.
  • Das Cache-Speichersubsystem weist ferner eine Anzahl programmierbarer Steuerschaltungen auf. Diese Schaltungen sind verbunden, um eine Vielzahl unterschiedlicher Typen von Busoperationssignalen und Befehlssignalen vom Systembus über die Horchvorrichtung zu empfangen welche die Operationstypen oder Zyklustypen festlegen, welche vom Cache-Speichersubsystem gerade ausgeführt werden. Diese Signale werden logisch verknüpft, um ein Ausgabesignal zu erzeugen, um anzuzeigen, ob der Inhalt des Verzeichnisspeichers geräumt werden soll oder nicht, wenn irgendeine Anzahl von Adressen- oder Systemfehlern erfaßt worden ist. In bestimmten Fällen wird das Ausgabesignal mit einer Anzahl von Signalen verknüpft, welche das Auftreten eines Cache-Adreßfehlers anzeigen, was angibt, daß die von der anfordernden Eingabequelle bereitgestellte Adresse unzuverlässig ist oder daß es ein Verzeichnisadreßfehler war. Die getrennte Behandlung der unterschiedlichen Adreßfehlertypen ermöglicht, daß das Räumen nur auftritt. wenn der Adreßfehler den Cache inkohärent machen wird. Wenn der gleiche Yorgang normalerweise in Antwort auf beide Typen von Adreßfehlern vorgenommen werden würde, kann ein einzelnes oder zusammengesetztes Fehlersignal verwendet werden.
  • Das resultierende Signal wird mit anderen Signalen verknüpft, die das Auftreten anderer Ereignisse oder Befehle darstellen, um ein Verzeichnisrücksetzsignal zu erzeugen. Dieses Signal wird an alle Ebenen des Mehrfachebenen-Verzeichnisspeichers angelegt, um seinen Inhalt zu räumen, swie dies zum Aufrechterhalten einer langfristigen Cache-Kohärenz erforderlich ist. Das heißt, im System der vorliegenden Erfindung wird davon ausgegangen, daß das Cache-Subsystem die gleichen Daten über lange Zeitperioden aufrecht erhält im Gegensatz dazu, daß es häufig in Antwort auf Befehle von dazugehörigen Verarbeitungseinheiten geräumt oder gelöscht wird.
  • Im bevorzugten Ausführungsbeispiel wird das Räumen durch Löschen des Verzeichnisinhalts auf Nullen an allen Speicherstellen ausgeführt, was die momentanen Adressen ungültig macht. Das Räumen ist im Gegensatz zum Wiederauffüllen des gesamten Cache mit neuen Daten ein sanfter Vorgang. Dies erlaubt das Umwandeln einer nicht tolerierbaren Bedingung in ein langsames erneutes Laden des Cache (das heißt, es erzeugt eine Reihe von Verfehloperationen), während nach wie vor erlaubt wird, daß der Cache-Betrieb fortgeführt wird. Dies eliminiert die Notwendigkeit, den Cache zu umgehen oder zu degradieren und den Betrieb mit einer wesentlichen Beeinträchtigung der Leistungsfähigkeit fortsetzen zu können, bis die notwendigen Software-Wiederherstellungsprozeduren aufgerufen werden können, um den Cache-Betrieb wiederherzustellen. Zusätzlich stellt es Elastizität beim Ausführen von Cache-Operationen bereit.
  • Die vorliegende Erfindung erkennt undi macht vollen Gebrauch von der Tatsache, daß das Verzeichnis als ein redundanter Teil innerhalb des eng gekoppelten Systems dient und daher vorübergehend weniger effizient gemacht werden kann, um auf bestimmte Bedingungen auf eine Weise zu antworten, welche Cache-Kohärenz oder Konsistenz aufrecht erhält.
  • Im bevorzugten Ausführungsbeispiel umfassen die Systemereignisse, die ausgewählt sind, um zu verursachen, daß das Verzeichnis während irgendeines Cache-Zyklus einer Operation geräumt wird, eine Systembus-Auszeitbedingung, eine Buszyklus-Fehlerbedingung von dritter Seite und einen FIFO-Überlauffehler. Signale, die andere Bedingungen darstellen, welche mit hoher Wahrscheinlichkeit zum Hervorrufen einer Cache-Kohärenz führen können, können als Eingaben an die Steuerschaltungen je nach Erfordernis hinzugefügt werden. Die programmierbaren Lögikmatrix- Steuerschaltungen sind programmiert, um die Zyklen und Systemereignisse zu filtern, während denen das Räumen zum Aufrechterhalten von Kohärenz notwendigerweise stattfindet. Die Schaltungen erleichtern auch solche Hinzufügungen.
  • Unter bestimmten Umständen gibt es Typen von Fehlerbedingung, die mit einem hohen Grad an Elastizität verarbeitet werden können, ohne das Verzeichnis räumen zu müssen. Eine solche Bedingung ist der Fall, bei dem die vom Hauptspeicher durch eine Verarbeitungseinheit angeforderten und empfangenen Daten einen nicht korrigierbaren Speicherfehler enthalten. wie dies vom Hauptspeicher signalisiert wird. Wie in der verwandten Patentanmeldung EP 258 559 mit dem Titel "Cache Memory Coherency Control Provided with a Read In Progress Indicating Memory" beschrieben, weist das Cache-Subsystem zuvor eine Speicherstelle des Verzeichnisses für die angeforderten Daten während der anfänglichen Verarbeitung einer Speicherleseanforderung zu. Das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung erlaubt die Rücknahme einer Zuweisung einer zuvor zugewiesenen Speicherstelle, wenn nicht korrigierbare Hauptspeicherdaten vom Systembus während der zweiten Hälfte des Verarbeitungszyklus empfangen werden. Die nicht korrigierbaren Daten werden an die anfordernde Verarbeitungseinheit zur Fehleranalyse transferiert, werden jedoch nicht im Cache gespeichert. Durch Ausführen eines Zyklus der Rücknahme der Zuweisung wird Cache-Kohärenz sichergestellt. Der gleiche Zyklusprozeß der Rücknahme der Zuweisung kann für andere Typen von Speicherantworten durchgeführt werden.
  • Die neuen Merkmale, die als charakteristisch für die Erfindung sowohl hinsichtlich ihrer Organisation als auch ihres Betriebsverfahrens angesehen werden, werden zusammen mit weiteren Zielen und Vorteilen besser von der folgenden Beschreibung verstanden werden, wenn sie in Verbindung mit der begleitenden Zeichnung betrachtet wird. Es sei jedoch ausdrücklich verstanden, daß jede der Zeichnungen nur zum Zwecke der Veranschaulichung und Beschreibung angegeben ist und nicht als eine Festlegung der Grenzen der vorliegenden Erfindung beabsichtigt ist.
  • Fig. 1 ist ein Blockdiagramm eines Systems, welches die Vorrichtung der vorliegenden Erfindung enthält.
  • Fig.2 ist ein Blockdiagramm eines der zentralen Subsysteme von Fig. 1, welches gemäß der vorliegenden Erfindung aufgebaut ist.
  • Fig. 3 zeigt im größeren Detail die Schaltung der Pipeline-Stufen von Fig. 2.
  • Fig. 4 ist ein Flußdiagramm, welchem verwendet ist, um den Gesamtbetrieb der Vorrichtung der vorliegenden Erfindung zu erklären.
  • Fig. 5a bis 5g veranschaulichen im größeren Detail bestimmte in Fig. 4 gezeigte Operationen.
  • Fig. 1 zeigt ein Multiprozessor-Datenverarbeitungssystem 10, welches eine Vielzahl von Subsystemen 13 bis 30 aufweist, welche gemeinsam an einen Systembus 12 koppeln. Die veranschaulichenden Subsysteme weisen ein Systemverwaltungseinrichtung-(SMF)-Subsystem 13, eine Vielzahl von zentralen Subsystemen 14 bis 16, eine Vielzahl von Speichersubsystemen 20 bis 28 und ein peripheres Subsystem 30 auf. Jedes Speichersubsystem ist organisiert, um gerade und ungerade Speichermodule aufzuweisen, wie gezeigt in Fig. 1. Ein Beispiel einer solchen Anordnung ist im US-Patent Nr. 4.432,055 offenbart.
  • Jedes Subsystem weist einen Schnittstellenbereich auf, welcher die dazugehörige Einheit oder die dazugehörigen Einheiten befähigt, Anforderungen in der Form von Befehlen, Unterbrechungen, Daten oder Antworten/Status an eine andere Einheit auf dem Systembus 12 auf eine asynchrone Weise zu übertragen oder zu empfangen. Das heißt, es kann angenommen werden, daß jeder Schnittstellenbereich Busschnittstellen- Lögikschaltungen aufweist, wie jene, die im US-Patent Nr. 3,995,258 mit dem Titel "Data Processing System Having a Data Integrity Technique", erfunden von George J. Barlow, offenbart sind.
  • Das SMF-Subsystem 13, welches ganz links am Bus 12 verbindet, weist eine Mikroprozessoreinheit und eine Vielzahl von zentralisierten Betriebsmitteln auf, auf die über den Bus 12' über Befehle von den zentralen Subsystemen 14 bis 16 zugegriffen werden kann. Das SMF-Subsystem 13 kann Befehle an jedes der zentralen Subsysteme ausgeben, um bei der Ausführung von Wartungsfunktionen zu unterstützen. Zur weiteren Information wird auf die verwandte Patentanmeldung EP 247 605 mit dem Titel "System Management Apparatus for a Multiprocessor System" Bezug genommen.
  • Die Organisation jedes der zentralen Subsysteme 14 bis 16 ist die gleische. Fig. 2 zeigt in Blockdiagramrnform die Organisation des zentralen Subsystems 14. Das Subsystem 14 weist ein Paar von zentralen Verarbeitungseinheit-(CPU)-Subsystemen 14-2 und 14-4 auf, die gekoppelt sind, um ein Cache-Subsystem 14-6 gemeinsam zu nutzen. Das Cache- Subsystem 14-6 koppelt mit dem Systembus 12 über ein erstes FIFO- Subsystem 14-10, was als im Schnittstellenbereich 14-1 enthalten angesehen werden kann.
  • Wie aus Fig. 2 ersichtlich sind beide CPU-Subsysteme 14-2 und 14-4 identisch. Das heißt, jedes CPU-Subsystem weist eine 32-Bit-Zentralverarbeitungseinheit (CPU) (das heißt CPUs 14-20 und 14-40) und eine Verwaltungseinheit (VMMU) für virtuellen Speicher (das heißt VMMU 14-26 und 14-46) zum Übersetzen virtueller CPU-Adressen in physische Adressen zur Übergabe an das Cache-Subsystem 14-6 als Teil der Speicheranforderungen auf. Jedes CPU-Subsystem weist auch einen Nur- Lesespeicher (ROS) und ein 16-Bit-ROS-Datenausgaberegister (RDR) (das heißt ROS 14-24, 14-44 und RDR 14-25, 14-45) auf.
  • Zu Beginn jedes Zyklus wird jeder ROS konditioniert, um ein 16-bit- Mikroanweisungswort in sein Datenausgabe-(RDR)-Register auszulesen, was den während des Zyklus (fimware step/box) auszuführenden Operationstyp festlegt. Die Taktschaltungen innerhalb jedes CPU-Subsystems (das heißt Schaltungen 14-22 und 14-42) richten die Grundzeitgabe für jedes Subsystem unter der Steuerung des Cache-Subsystems 14-6 ein, wie es hier erklärt ist. Die Elemente jedes CPU-Subsystems können aus standardintegrierten Schaltungschips aufgebaut werden.
  • Wie ersichtlich aus Fig. 2 ist das Cache-Subsystem 14-6 in einen Quelladreß-Erzeugungsbereich und zwei separate Pipeline-Stufen organisiert, wobei jede ihre eigenen Wegcödier- und Steuerschaltungen aufweist. Der Quelladreß-Erzeugungsbereich weist Blöcke 14-62 und 14-64 auf, welche die Funktionen der Quelladreß-Auswahl und -inkrementierung ausführen. Die erste Pipeline-Stufe ist eine Adreßstufe und weist die Verzeichnisschaltungen der Blöcke 14-66 bis 14-76 auf, angeordnet wie gezeigt. Diese Stufe führt die Funktionen des Zwischenspeicherns der erzeugten Quelladresse, der Verzeichnissuche und des Treffervergleichs aus. Die erste Pipeline-Stufe liefert eine Ausgabeinformation in der Form einer Ebenennummer und einer Spaltenadresse. Die Operationen der ersten Pipeline-Stufe werden durch Zeitgabesignale getaktet, die von den Zeitgabe- und Steuerschaltungen von Block 14-60 erzeugt werden.
  • Die Information von der ersten Stufe wird sofort an die zweite Pipeline- Stufe übergeben, was die erste Stufe für die nächste Quellanforderung verfügbar beläßt. Die zweite Pipeline-Stufe ist eine Datenstufe und weist die Datenpuffer- und zugehörigen Speicherschaltungen der Blöcke 14-80 bis 14-96 auf, angeordnet wie gezeigt. Diese Stufe führt die Funktionen des Zugreifens auf die angeforderten Daten von den Pufferspeichern 14-88 und 14-90 oder des Ersetzens/Speicherns von Daten, die vom FIFO- Subsystem 14-10 empfangen sind. Somit stellt die zweite Pipeline-Stufe ein 36-Bit-Datenwort zur Uebertragung an eines der CPU-Subsysteme bereit. Wiederum werden die Operationen der zweiten Pipeline-Stufe durch Zeitgabesignale getaktet, die von den Zeitgabe- und Steuerschaltungen von Block 14-60 erzeugt sind.
  • Die unterschiedlichen Blöcke der ersten und zweiten Pipeline-Stufe sind aus standardintegrierten Schaltungen aufgebaut, wie jene, die im "The TTL Data Book, Column 3", herausgegeben 1984 von Texas Instruments Inc., und im "Advanced Micro Devices Programmable Array Lögic Handbook", herausgegeben 1983 von Advanced Micro Devices Inc., beschrieben sind. Zum Beispiel ist die Adreßwählschaltung von Block 14-62 aus einem 74AS1823-Dreizustand-Registerchip aufgebaut, der drahtmäßig OR- verknüpft ist, um eine der vier Adressen auszuwählen. Der Austauschmultiplexer von Block 14-92 ist aus Chips des gleichen Typs aufgebaut. Die Zwischenspeicher der Blöcke 14-68 und 14-72 sind aus 74AS843-Zwischenspeicherchips vom D-Typ aufgebaut. Der Austauschmultiplexer und die Datenregisterschaltungen von Block 14-70 sind aus einem einzelnen, getakteten, programmierbaren Matrixlogikelement aufgebaut, wie zum Beispiel Teile Nr. AMPA16R6B, hergestellt von Advanced Micro Devices Inc.
  • Die Verzeichnisspeicher 14-74 und 14-76, die in Fig. 3 in größerem Detail gezeigt sind, sind aus 8-Bit-Abschnitt-Cache-Adreßvergleicherschaltungen mit der Teilenummer TMS2ISOJL, hergestellt von Texas Instruments Inc., aufgebaut. Die Adress- und Datenregister 14-80 bis 14-84 und 14-94 und 14-96 sind aus 9-Bit-Schnittstellen-Flip-Flops mit der Teile Nr. SN74AS823, hergestellt von Texas Instruments Inc., aufgebaut.
  • Die Puffer- und zugehörigen Speicherschaltungen 14-80 und 14-84, die in Fig. 3 in größerem Detail gezeigt sind, sind ebenso aus 4K x 4-Bit- Speicherchips mit der Teile Nr. IMS1421, hergestellt von INMOS-Corporation, aufgebaut. Die Adressinkrementierschaltungen von Block 14-64 sind aus standard ALU-Chips aufgebaut, die mit der Teile Nr. 74AS181A bezeichnet sind und aus einem programmierbaren Matrixiogikelement mit der Teile Nr. AmPAL16L8B, hergestellt von Advanced Micro Devices Inc., aufgebaut sind.
  • Wie hier in größerem Detail beschrieben, verwenden die erste und die zweite Ebene von Befehlsregistern und Decodierschaltungen der Blöcke 14-66 beziehungsweise 14-86 getaktete, programmierbare Matrixiogikschaltungen mit den Teile Nummern AMPAL16R4B und AmPAL16R8B, hergestellt von Advanced Micro Devices Inc. Diese Schaltungen werden auch verwendet, um die erforderlichen Auswahl-Lese-und-Schreibsteuersignale zu erzeugen, wie sie in Fig. 2 angezeigt sind (das heißt, die Signale SWAPLT+00, SWAPRT+00, P0LDDT-OL, PILDDT-OL, P0LDDT-OR, F1LDDT-OR). Für weitere Details wird auf die Gleichungen im Anhang verwiesen.
  • Wie aus Fig. 2 ersichtlich, ist das Cache-Subsystem 14-6 in gerade und ungerade Bereiche organisiert, was es erlaubt, daß auf zwei Datenwörter gleichzeitig in Antwort auf entweder eine ungerade oder eine gerade Speicheradresse zugegriffen wird. Für weitere Information über diesen Typ der Cache-Adressanordnung, wird auf das US-Patent Nummer 4,378,591 verwiesen, welches dem gleichen wie hier benannten Inhaber zugewiesen ist.
  • Fig. 2 zeigt auch in Blockform ein FIFO-Subsystem 14-10, welches die FIFO-Steuer- und Taktschaltungen von Block 14-11 aufweist, welche mit einem Austauschadreßregister 14-12 und mit dem Systembus 12 koppeln. Das FIFO-Subsystem 14-10 empfängt alle Informationen, die zwischen irgendwelchen zwei Subsystemen auf dem Systembus 12 transferiert werden. Wenn die Information zum Aktualisieren von Daten im Hauptspeicher vorgesehen ist, wird die Information codiert, um eine solche Aktualisier- oder Austauschoperation anzuzeigen. Das FIFO-Subsystem 14- 10 empfängt auch alle neuen Daten, die sich aus einer Speicheranforderung ergeben, die an den Systembus 12 durch das Cache-Subsystem 14-6 weitergeleitet wurde. Sowohl aktualisierte als auch neue Daten werden als Anforderungen innerhalb eines Pufferspeichers gespeichert, der innerhalb des Subsystems 14-10 enthalten ist. Schließlich speichert das FIFO-Subsystem 14-10 auch Informationen, die durch andere Subsysteme während eines schlechten Buszyklus transferiert werden, und zwar beim Ausführen seiner Rolle als Zuhörer. Das heißt, das FIFO-Subsystem speichert solche Informationen zum Aktualisieren des Cache, immer wenn der bestimmte Buszyklus, während dem sie transferiert werden, bestätigt worden ist, da sie als Teil eines Speicherschreibbefehls an eines der Speichersubsysteme gesendet werden könnte. Wie hier erklärt, hält die Vorrichtung der vorliegenden Erfindung Cache-Kohärenz ungeachtet dem Empfang einer solchen Information aufrecht.
  • Die FIFO-Steuersschaltungen decodieren jede Anforderung und leiten die geeigneten Operationszyklen ein, was dazu führt, daß eine Adresse, Daten und Befehle an unterschiedliche Teile des Cache-Subsystems 14-6 angelegt werden, wie aus Fig. 2 ersichtlich. Zum Zwecke der vorliegenden Erfindung können die FIFO-Subsysteme in ihrer Konstruktion als herkömmlich angesehen werden und können die Form des Typs von FIFO-Schaltungen annehmen, die in US-Patent Nummer 4,195,340 offenbart sind, welches dem gleichen wie hier benannten Inhaber zugewiesen ist.
  • Die Grundzeitgabe für jedes der Subsysteme von Fig. 2 wird durch die Zeitgabe und Steuerschaltungen von Block 14-60 eingerichtet. Eine solche Steuerung erlaubt das konfliktfreie gemeinsame Nutzen des Cache-Subsystems 14-6 durch die CPU-Subsysteme 14-2 und 14-4 und das FIFO- Subsystem 14-10. Die Schaltungen von Block 14-60 sind in der ersten verwandten Patentanmeldung in größerem Detail beschrieben. Kurz gesagt weisen diese Schaltungen Adreßauswahl-Lögikschaltungen auf, die Steuersignale zum Konditionieren eines Adreßwählers 14-62 erzeugen, um eines der Subsysteme 14-2, 14-4 und 14-10 als eine Anforderungsadreßquelle auszuwählen.
  • Block 14-60 weist auch Pipeline-Taktschaltungen auf, welche die unterschiedlichen Typen von Cache-Speicherzyklen festlegen, die den Beginn der Pipeline einleiten können, was bin der Erzeugung einer vorbestimmten Sequenz von Signalen in Antwort auf jede Anforderung resultiert. Das heißt, erste beziehungsweise zweite Signale zeigen eine Cache-Anforderung zur Bedienung durch das CPU0-Subsystem 14-2 und das CPU1- Subsystem 14-4 an, wohingegen andere Signale Cache-Anforderungen zur Bedienung durch das FIF0-Subsystem 14-10 anzeigen.
  • Diese Anforderungen können wie folgt zusammengefaßt werden:
  • 1. CPU0-Lesezyklus
  • Ein CPU0-Lesevorgang tritt in Antwort auf eine Cache-Anforderung auf. die durch den ROS 14-24 während eines ersten Zeitschlitzes/- Intervalls eingeleitet wurde, wenn der CPU-Anschluß 0 innerhalb der Schnittstelle 14-1 nicht belegt ist. Die Adresse, die vom CPU-Subsystem 14-2 geliefert wird, wird an die erste Pipeline-Stufe ausgeliefert., und das Verzeichnis wird gelesen. Wenn ein Treffer erfaßt wird, der anzeigt daß die angeforderten Daten im Datenpuffer gespeichert sind, wird der Puffer gelesen, und die Daten werden in das CPU0-Datenregister getaktet. Wenn ein Verfehlen erfaßt wird, wird der CPU0-Anschluß auf belegt geschaltet, die Anforderung wird an den Speicher weitergeleitet, um die angeforderten Daten zu holen.
  • 2. CPU1-Lesezyklus
  • Ein CPU1-Lesevorgang tritt in Antwort auf eine Cache-Anforderung auf, die vom ROS 14-44 während eines dritten Zeitschlitzes/Intervalls eingeleitet wird, wenn der CPU-Anschluß 1 innerhalb der Schnittstelle 14-1 nicht belegt ist.
  • 3. Buszyklus der zweiten Hälfte
  • Ein Buszyklus der zweiten Hälfte tritt in Antwort auf einen ersten Typ einer Cache-Anforderung auf, die vom FIFO-Subsystem 14-10 eingeleitet wurde, und zwar nach Daten, die von entweder dem Hauptspeicher oder einer I/O-Vorrichtung angefordert wurden, wobei die Daten auf dem Systembus 12 während eines ersten oder dritten Zeitschlitzes/Intervalls zurückgegeben werden, wenn das FIFO-Subsystem 14-10 eine Anforderung gespeichert hat. Wenn das FIFO- Subsystem 14-10 Daten von einer I/O-Vorrichtung an die erste Pipeline-Stufe liefert, laufen sie dort hindurch, ohne die Zustände irgendwelcher Speicher zu ändern, und werden in das geeignete CPU-Datenregister getaktet. Daten vom Hauptspeicher werden in die Cache-Datenpuffer geschrieben und werden in die geeigneten CPU- Datenregister getaktet.
  • 4. Speicherschreib-Aktualisierungszyklus
  • Ein Speicherschreib-Aktualisierungszyklus tritt in Antwort auf eine zweiten Typ einer Cache-Anforderung auf, die vom FIFO-Subsystem 14-10 zur Erneuerung von Daten eingeleitet ist, die vom Systembus 12 empfangen sind, und zwar nach Bestätigung solcher Daten während eines ersten oder dritten Zeitschlitzes/Intervalls, wenn das FIFO-Subsystem 14-10 eine Anforderung gespeichert hat. Das FIFO- Subsystem 14-10 liefert die Daten an die erste Pipeline-Stufe, was im Lesen des Verzeichnisspeichers resultiert. Wenn ein Treffer erfaßt wird, werden die Aktualisierungsdaten in den Pufferspeicher geschrieben.
  • 5. FIFO-Zuweisungszyklus
  • Eine FIFO-Zuweisung tritt in Antwort auf einen CPU0- oder CPU1- Lesezyklus auf, was dazu führt, daß ein Verfehlen erfaßt wird. Der CPU-Anschluß wird belegt geschaltet, und die Anforderung wird an den Speicher weitergeleitet, um die angeforderten Daten zu holen. Nachdem die Speicherleseanforderung bestätigt ist, wird die CPU- Leseanforderung in die FIFO-Subsystemregister geladen, und die Steuerschaltungen, die in dem Subsystem enthalten sind, leiten eine Anforderung nach einem FIFO-Zyklus einer Operation (das heißt Zwangssignal CYFIFO = 1) ein, Signale, welche den Anforderungstyp und die Ebenennummerinformation angeben, werden als Eingaben an das Befehlsregister und die Decodierschaltung von Block 14-66 angelegt. Diese Signale enthalten FIMREF (Speicherreferenz), (Speicherlesen) und FIDT 16-18/19-21 (Ebenennummer). Die Signale FIMREF und FIWRIT leiten einen FIFO-Zuweisungszyklus (das heißt FIALOCYC= 1) ein.
  • 6. Busverriegelungs-Nichtzyklus
  • Ein Busverriegelungs-Nichtzyklus tritt in Antwort auf eine Verriegelungsspeicher-Leseanforderung mit einem Cache-Treffer auf, was die Einstellung einer Verriegelungsbedingung für eine gegebene Speicherstelle testet. Dies wird für Synchronisierungsoperationen verwendet, bei denen ein CPU-Subsystem als erstes den Inhalt der Speicherstelle lesen kann, dann die Verriegelung einstellen kann und eine nachfolgende Modifizier-Schreiboperation ihres Inhalts ausführen kann. Beim Zugreifen auf solche gemeinsam genutzten Speicherbereiche verifiziert das CPU-Subsystem, daß die bestimmte Stelle nicht durch Ausgeben eines Speicherlese-Verriegelungsbefehls an den Speicher verriegelt ist. Der Speicher erzeugt eine Antwort zum Signalisieren, ob die Stelle verriegelt ist oder nicht, führt jedoch nicht den angeforderten Lesevorgang aus (das heißt, kein Speicherzyklus). Im Falle eines Cache-Verfehlens wird ein Verriegelungs-Nichtzyklus nicht an den Speicher gesendet, und dies führt zu einem Buszyklus der zweiten Hälfte, wenn die Verriegelungsbedingung für die Speicherstelle zuvor nicht eingestellt war.
  • Es gibt auch bestimmte Systemereignisse, welche den Beginn der Pipeline und die Erzeugung der vorbestimmten Sequenz von Signalen einleiten können. Diese Systemereignisse, die hier in größerem Detail erklärt werden, schließen das Auftreten einer Systembus-Betriebsauszeit, einen drittseitigen Buszyklus und eine FIFO-Überlaufbedingung ein.
  • Fig. 3 zeigt die Organisation des geraden und ungeraden Verzeichnisses und der Pufferspeicher-Pipeline-Stufe gemäß der vorliegenden Erfindung. Wie aus Fig. 3 ersichtlich ist der 4K x 16-Bit-Verzeichnisspeicher 14- 74/76 in zwei gleiche Räume aufgeteilt. Die ersten 4 Ebenen, die mit 0- 3 bezeichnet sind, sind an die CPU0 zugewiesen, wohingegen die nächsten 4 Ebenen, die mit 4-7 bezeichnet sind, an die CPU1 zugewiesen sind.
  • Der Verzeichnisspeicher 14-74/76 erzeugt in Antwort auf eine Cache- Adresse 8-Bit-Ausgabesignale (HIT0-7), die an die Trefferdecodierschaltungen von Block 14-86 angelegt werden. Zusätzlich erzeugen die Verzeichnisspeicher-Vergleicherschaltungen 8 Paritätsfehlersignale (PE0-7), die ebenso an die Trefferdecodierschaltungen von Block 14-86 angelegt werden. Die Zustände dieser Signale zeigen an, ob ein Paritätsfehler in irgendeiner der Verzeichnisadressen erfaßt wurde, auf die zugegriffen wurde und die mit der empfangenen Eingabeadresse verglichen werden, einschließlich des Gültigkeitsbit-(v)-Inhalts von Register 14-68/72.
  • Reihenadressinformation einschließlich dem Zustand des Gültigkeitssignals wird in eine bestimmte Ebene geschrieben, wenn ein entsprechendes Schreibfreigabesignal LVWR0-LVWR7 auf eine binäre Null durch die Schaltungen von Block 14-66 gezwungen wird. Zu diesem Zeitpunkt kann der Inhalt des Verzeichnisspeichers 14-74/76 rückgesetzt oder zu Nullen gelöscht werden. Dies tritt ein. wenn ein Signal , welches mit allen Rücksetz-(R)-Anschlüssen verbunden ist, auf einen binären Nullzustand gezwungen wird. Für weitere Details wird auf die Gleichungen im Anhang verwiesen.
  • Die Trefferdecodierschaltungen von Block 14-86 enthalten die Trefferdecodierschaltungen von Block 14-860 und die Mehrfachzuweisungs-Trefferdecodierschaltungen von Block 14-864. Im bevorzugten Ausführungsbeispiel werden separate PLA-Elemente verwendet, um die Schaltungen jedes der Blöcke 14-860 und 14-864 aufzubauen. Einige dieser Elemente sind in Fig. 3 gezeigt und werden hier in größerem Detail beschrieben. Beide Schaltungen enthalten Prioritätscodierschaltungen, die arbeiten, um die höhere Prioritätsebene auszuwählen, wenn mehr als eine Trefferausgabe vorhanden ist. Die Priorität basiert auf dem Ebenennummerwert, wobei Ebene 0 die höchste Priorität hat und Ebene 7 die niedrigste Priorität hat.
  • In Antwort auf die Trefferausgabesignale HITO-7 erzeugen die Trefferdecodierschaltungen 14-860 einen 3-Bit-Treffernummercode entsprechend den Signalen HIT#0-2 zusätzlich zum Trefferausgabesignal HIT, welches verwendet wird, um das Eintreten einer Trefferbedingung zu signalisieren.
  • Zusätzlich empfangen die Trefferdecodierschaltungen 14-860 Signale ODAPEA-2 von den Paritätsprüfschaltungen von Block 14-744. In Antwort auf die Adreßignale vom Verzeichnisadressregister 14-68/72 erzeugen die Paritätsschaltungen, die als 74AS280-Schaltungschips aufgebaut sind, Paritätsfehlersignale ODAPEA-2, die anzeigen, ob irgendwelche Bytes der eingehenden Adresse, die durch die Zwischenspeicher 14-68 für ungerade Adressen vom Adreßwähler 14-62 empfangen sind, schlechte Parität haben. Es wird anerkannt werden, daß ein ähnlicher Signalsatz für die Zwischenspeicher 14-72 für gerade Adressen erzeugt wird.
  • Die Trefferdecodierschaltungen 14-860 verknüpfen die Quellparitätsadreßsignale (zum Beispiel ODAPEA-2) und die Verzeichnisadreßfehlersignale, um ein Cache-Fehlersignal CACERR zu erzeugen. Dieses Signal dient zwei Funktionen. Zunächst wird es verwendet zum Umgehen des Cache während der nachfolgenden zweiten Hälfte der Cache-Operation. Als zweites wird es verwendet, um die Treffersignalindikatoren zu sperren oder zu blockieren, was verursacht, daß das Cache-Subsystem die angeforderten Daten vom Hauptspeicher holt.
  • Die Mehrfachzuweisungs-Trefferdecodierschaltungen 14-864 arbeiten in Antwort auf Ebenennummersignale WRL00-02, die vom FIFO-Subsystem 14-10 empfangen sind, und die Signale HIT0-7, um einen 2-Bit-Code entsprechend den Signalen MAM1-2 zu erzeugen, welche die niedrigere Prioritätsebene anzeigen, bei der ein Mehrfachzuweisungstreffer zusätzlich zum Mehrfachzuweisungs-Speichersignal MAMV eingetreten ist. Für weitere Details bezüglich wie die oben erwähnten Signale erzeugt werden, wird auf die Gleichungen im Anhang verwiesen.
  • Die Sätze von Trefferausgabesignalen werden an den Datenpuffer und die zugehörigen Speicherschaltungen von Block 14-88/90 angelegt. Wie gezeigt, weisen diese Schaltungen das Pufferadreßregister 14-80/84 und den 4K x 16-Bit-Datenpuffer 14-88/90 auf.
  • Fig. 3 zeigt in größerem Detail eine Anzahl der unterschiedlichen Elementen, welche die ersten und zweiten Ebenen der Befehls- und Decodierschaltungen der Blöcke 14-66 und 14-86 ausmachen. Gemaß der vorliegenden Erfindung verknüpfen diese Schaltungen bestimmte Signale des Systembus 12, die über das FIFO-Subsystem 14-10 empfangen werden und vorbestimmte Bedingungen zum Freigeben der Erzeugung eines Verzeichnisrücksatzsignals darstellen, ein Räumsignal FLUSH und ein Verzeichnislöschsignal DIRCLR. Das Signal FLUSH wird mit dem Zeitgabesignal PIPOB + OB und dem Cache-Fehlersignal CACERR innerhalb eines NAND-Gatters 14-741 verknüpft, um das Räumsignal zu erzeugen. Die drei Signale werden innerhalb eines AND- Gatters 14-740 verknüpft, um ein Verzeichnissignal zu erzeugen, welches an die Verzeichnisrücksetzanschlüsse der Cache-Verzeichnisadreß- Vergleicherschaltungen 14-74/76 angelegt wird, wobei sein Inhalt gelöscht oder geräumt wird. Auch wird das Signal welches anzeigt, daß eine Räumoperation ausgeführt worden ist, verwendet, um den Zustand einer Räumbitposition eines Cache-Syndromregisters 14-750 zu setzen. Wie gezeigt speichert das Syndromregister 14-750 auch Signale. die das Eintreten von Ereignissen und Fehlern darstellen, wie es hier betreffend CPU0-Operationen diskutiert wurde. Eine ähnliche Registeranordnung ist ebenso zum Speichern von Status betreffend die CPU1-Operationen vorgesehen.
  • Zusätzlich erzeugen die Schaltungen von Block 14-66 auch ein Verzeichnis-Zuweisungsrücknahmesignal , welches als eine Eingabe an ein OR-Gatter 14-742 angelegt wird, welches als eine zweite Eingabe das Signal ACPURD von Register 14-68/72 empfängt, das durch ein NAND- Gatter 14-744 erzeugt ist.
  • In größerem Detail enthalten die Schaltungen von Block 14-66 ein D- Typ-Flip-Flop 14-660, das verbunden ist, um das Eintreten einer Busbetriebsauszeit-Bedingung in Antwort auf ein Freibussignal CLRBUS und auf ein Zeitgabesignal TM1OR3 zu speichern. Das Signal CLRBUS wird nach Empfang eines Signals von einer der Betriebsauszeitschaltungen erzeugt, die als Teil der Schnittstelle 14-1 enthalten sind. Das heißt die Schnittstelle 14-1 weist Betriebsauszeitschaltungen von 1,2 Millisekunden für die CPU0 und die CPU1 auf. Wenn der Systembus für eine Zeitdauer von mehr als 1,2 Millisekunden in einem Wartezustand ist arbeitet die geeignete Auszeitschaltung, um das Signal CLRBUS auf eine binäre EINS zu zwingen. Das Flip-Flop 14-669 wird in Antwort auf das Signal rückgesetzt wobei es auf eine binäre NULL gezwungen wird. Das Ausgabesignal OPTMOT vom Flip-Flop 14-660 wird an einen Eingang eines NOR-Gatters 14-662 angelegt.
  • Das NOR-Gatter 14-662 empfängt als eine zweite Eingabe ein Signal FIMBER vom FIFO-Subsystem 14-10, was das Auftreten einer drittseitigen Busfehlerbedingung anzeigt. Zusätzlich empfängt das NOR-Gatter 14- 662 auch als eine dritte Eingabe das Signal FIFERR vom Subsystem 14- 10, was eine FIFO-Überlaufbedingung anzeigt. Das NOR-Gatter 14-662 erzeugt ein Verzeichnislöschsignal DIRCLR' welches in einem Register 14-68/72 in Antwort auf ein Zeitgabesignal PIPEOA+OA gespeichert wird.
  • Das FIFO-Subsystem 14-10 weist Überlauferfassungsschaltungen wie z.B. eine Reihe von D-Flip-Flops auf, die verbunden sind, um zu erfassen, wenn die FIFO-Pufferschaltungen nicht in der Lage sind, Daten einer Anforderung vom Systembus zu empfangen, was zu einer Überlaufbedingung führt. Zusätzlich empfängt das FIFO-Subsystem 14-10 von den Antwortschaltungen innerhalb der Schnittste lle 14-1 Busfehlersignale, die anzeigen, ob eine Anforderung, die von einem anderen Subsystem an den Systembus 12 angelegt wurde, und von einem dafür vorgesehenen Subsystem akzeptiert wurde, gute Parität hat oder nicht. Jegliche solche Anforderung, die in dem FIFO-Subsystem 14-10 gespeichert ist, wird von einem Signal FIMBER begleitet, welches auf eine binäre EINS gesetzt wird, um das Eintreten der Fehlerbedingung zu signalisieren.
  • Die Schnittstellenschaltungen liefern für die im FIFO-Subsystem 14-10 gespeicherte Anforderung eine korrekte Parität. Diese Schaltungen bilden einen Teil der Integritätsschaltungen, welche es Anforderungen ermöglichen, vor der Akzeptierung durch ein Subsystem erneut versucht zu werden. Während diese Schaltungen nicht die vorliegende Erfindung betreffen, sind sie im Detail in der zugleich anhängigen Patentanmeldung von George J. Barlow und James W. Keeley mit dem Titel "Resilient Bus System" mit der Seriennummer 623,264, eingereicht am 21. Juni 1984 und dem gleichen wie hier benannten Inhaber zugewiesen, beschrieben. Da verschiedene Subsysteme Schaltungen dieses Typs aufweisen können, um das System von Fig. 1 für Busfehlerbedingungen elastisch zu machen, sieht das FIFO-Subsystem 14-10 die Speicherung solcher Anforderungen vor, wenn die Kriterien, die eine akzeptierte Anforderung anzeigen, erfüllt worden sind.
  • Block 14-66 weist auch getaktete Verzeichnissteuerschaltung-PLA-Elemente 14-664 und 14-666 auf, die jeweils unterschiedliche Signalsätze vom FIFO-Subsystem 14-10 empfangen. Die Schaltung 14-664 arbeitet, um ein Zuweisungsrücknahmesignal und ein Verzeichnisschreibsignal zum Schreiben des Inhalts der Gültigkeitsbitposition einer adressierten Verzeichnisstelle innerhalb einer ausgewählten Ebene zu erzeugen, wie es hier erklärt ist. Wie gezeigt, wird das Signal an einen der Freigabeeingabeanschlüsse einer 3-zu-8-Decodierschaltung 14-670 angelegt. Wie gezeigt, wird das Signal ACPURD an einen zweiten Freigabeeingabeanschluß der Schaltung 14-670, zusammen mit einem Schreibimpuls-Zeitgabesignal WRTPLS angelegt. Die Schreibaustauschsignale WRL00-02 werden durch die Schaltung 14-670 decodiert, was dazu führt, daß eines der Signale LVWRO bis LVWR7 auf eine binäre NULL gezwungen wird, wodurch die zu beschreibende Verzeichnisebene spezifiziert wird.
  • Die Schaltung 14-666 arbeitet, um das CPU0-Cache-Rücksetzignal P0CACR zu erzeugen. Eine ähnliche Schaltung, die nicht gezeigt ist, erzeugt das Signal P1CACR. Diese Signale werden innerhalb eines AND- Gatters 14-668 verknüpft, welches das Verzeichnisrücksetzsignal erzeugt. Die Signale und werden in Antwort auf Unterbrechungsschreibbefehle erzeugt, die von der SMF 13 empfangen werden. Der Befehl hat einen Funktionscode gleich dem Wert 9 wie es durch die Signale FIAD19 bis FIAD22 angezeigt ist, und ist ein Unterbrechungsschreibbefehl, der durch das Signal bezeichnet ist.
  • Zusätzlich weist Block 14-66 ein weiteres Paar getakteter PLA-Elemente 14-672 und 14-674 auf.
  • Die Schaltung 14-672 erzeugt in Antwort auf Signale vom FIFO-System 14-10 als Ausgabe die Signale DIRALC bis MSHBCL, die verwendet werden, um die unterschiedlichen Typen von Cache-Zyklen von Operationen festzulegen, während denen eine Räumoperation ausgeführt werden soll, wenn ein Cache-Adreßfehler oder ein Fehler erfaßt wird. Die PLA- Schaltung 14-674 erzeugt in Antwort auf die gezeigten Signale das Signal CPUCYL, welches anzeigt, wenn das Cache-Subsystem 14-6 einen CPU- Zyklus einer Operation ausführt Dieses Signal wird zusammen mit den Signalen DIRALC bis MSHBCL als Eingaben an ein getaktetes PLA- Element 14-866 angelegt, welches einen Teil der Decodierschaltungen 14- 86 der zweiten Ebene bildet. Diese Schaltung erzeugt als eine Ausgabe ein Räumsignal FLUSH, welches anzeigt, wenn die Räumoperation stattfinden soll.
  • Zusätzlich veranschaulicht Fig. 3 eine Alternafivanordnung, welche ein weiteres NAND-Gatter 14-741A aufweist, gezeigt in gepunkteter Form. Hier erzeugen die Trefferdecodierschaltungen 14-860 als Ausgaben das Signal CACERR, welches einen Verzeichnisadreßfehler anzeigt und das Signal CACERRA, welches einen Eingabeadreß-(Quell)-Fehler anzeigt.
  • Gemäß der vorliegenden Erfindung wird das PLA-Element 14-866 programmiert, um als Ausgaben das erste und das zweite Räumsignal FLUSH und FLUSHA bereitzustellen. Jedes Räumsignal zeigt an wenn das Räumen als eine Funktion von entweder einem Verzeichnisadreßfehler oder einem Eingabeadreßfehler stattfinden soll. Wie hier beschrieben, kann die separate Klassifizierung von Adreßfehlern die Notwendigkeit reduzieren, das Verzeichnis während bestimmter Typen von Cache- Zyklen räumen zu müssen, was zu einer verbesserten Leistungsfähigkeit führen kann. Durch Verwenden von PLA-Elementen ist das Cache-Sub- System 14-6 in der Lage zu bestimmen, unter welchen Ereignissen und Bedingungen ein Verzeichnisräumen stattfinden sollte. Wie hier im Detail beschrieben, erlaubt dies das Ausgleichen von Cache-Kohärenz und Leistungsfähigkeit hinsichtlich des Typs der Aktion, die in Antwort auf unterschiedliche Typen von Adreßfehlern oder Fehlern ausgewählt ist.
  • Beschreibung des Betriebs
  • Mit Bezug auf die Flußdiagramme von Figuren 4, 5a bis 5g, wird nun der Betrieb der vorliegenden Erfindung, gezeigt in Fig. 3, beschrieben. Das Cache-Subsystem 14-6 der vorliegenden Erfindung verarbeitet Anforderungen, die von jeder der Verarbeitungseinheiten CPUO und CPU1 empfangen sind, zusätzlich zu Anforderungen vom FIFO-Subsystem 14-10. Wie zuvor erwähnt, legen die Pipeline-Taktschaltungen, die in Block 14- 60 enthalten sind, die unterschiedlichen Typen von Cache-Speicherzyklen fest, die den Beginn der Pipeline-Information einleiten können, was zur Erzeugung einer vorbestimmten Sequenz von Signalen in Antwort auf jede Anforderung führt. Wie angezeigt in Fig. 3, werden die Signale FIFERR, FIMBER und OPTMOT ebenso als Eingaben an die Pipeline- Taktschaltungen zum Einleiten von Cache-Zyklen einer Operation angelegt, um die wie hier beschriebene Cache-Kohärenz aufrecht zu erhalten.
  • Mit Bezug auf Fig. 4 wird gesehen, daß die unterschiedlichen Typen von Operationen oder Zyklen, die durch das Cache-Subsystem 14-6 ausgeführt werden, eine SMF/MRI-Unterbrechungsoperation, einen CPU-Lesezyklus, einen Verzeichniszuweisungszyklus, einen Verriegelungs-Nichtzyklus, einen Aktualisierungszyklus, einen Speicher-I/O-SHBC-Zyklus, einen drittseitigen Busfehlerzyklus, einen Betriebsauszeitzyklus und einen FIFO-Überlaufzyklus umfassen. Mit der Ausnahme der SMF-Unterbrechung führt das Cache-Subsystem 14-6 einen Operationszyklus aus, während dem es das Vorhandensein unterschiedlicher Typen von Adreßfehlern oder Fehlern prüft. Auf der Grundlage des Typs eines Ereignisses oder des Typs eines Zyklus, während dem der Adreßtehler auftrat, wählt das Cache-Subsystem 14-6, welche Maßnahme unternommen wird, um aus dem erfaßten Adreßfehler in einer Weise herauszukommen, die Kohärenz und einen hohen Leistungsfähigkeitspegel aufrecht erhält. Die Maßnahmen, die getroffen werden können, beinhalten das Umgehen des Cache für diesen bestimmten Zyklus einer Operation und das Räumen des Cache-Verzeichnisses. Das Räumen erlaubt das langsame Neuladen des Cache-Datenpuffers 14-88/90 mit neuen Daten.
  • Mit Bezug auf Fig. 4 werden nun die unterschiedlichen Typen von Zyklen/Operationen beschrieben. Die erste Operation, die als eine SMF/MRI-Unterbrechung bezeichnet ist, wird durch die SMF 13 eingeleitet, die einen Befehl auf dem Systembus 12 erzeugt, der einen Funktionscode gleich "09" hat. Der Funktionscode wird durch die PLA-Schaltung 14-666 von Fig. 3 decodiert, was zur Erzeugung des Verzeichnisrücksetzsignals führt. Diese Sequenz ist in Fig. 5a gezeigt. Das Verzeichnisrücksetzleitungssignal wird für eine Taktperiode, die durch das von den Zeitgabeschaltungen 14-60 erzeugte Signal MCLOCK festgelegt ist, gepulst. Dies zwingt für das gleiche Zeitintervall auf eine binäre NULL, was den Inhalt des Verzeichnisspeichers 14-74/76 räumt. Dies wird dadurch erreicht, daß alle Stellen innerhalb jeder Ebene der acht Ebenen auf NULL gezwungen werden. Zur gleichen Zeit wird das Signal verwendet, um eine vorbestimmte Bitposition des Syndromregisters 14-750 auf eine binäre EINS zu setzen. Wenn gesetzt, signalisiert diese Bitposition, daß eine Cache-Räumoperation stattgefünden hat. Diese Bitposition wird danach durch die SMF 13 rückgesetzt, um spätere Verwirrung zu vermeiden. Dieser Operationstyp ist zum Zwecke der Vollständigkeit enthalten, um zu zeigen, daß das Cache-Subsystem 14-6 in der Lage ist, Räumoperationen in Antwort auf Befehle auszuführen, die durch die SMF 13 während Systemqualitäts- Logiktest-(QLT)-Operationen eingeleitet werden können.
  • Die zweite Operation, die als ein CPU-Lesevorgang bezeichnet ist, wird in Antwort auf eine Cache-Anforderung entweder der CPUO oder der CPU1 während eines ersten bzw. eines zweiten Zeitintervalls eingeleitet. Die Anforderungsadresse der anfordernden CPU wird über den Adreßswähler 14-62 in die Verzeichnisadreß-Zwischenspeicher 14-68/14-72 transferiert. Die Adresse wird in die Zwischenspeicher der ersten Pipelinestufe in Antwort auf das Zeitgabesignal PIPEOA + OA geladen wie gezeigt in Fig. 3. Wie oben beschrieben, veranlassen die Signale, welche den CPU-Lesevorgang festlegen, daß die Pipeline-Startschaltungen von Block 14-60 eine Sequenz von Zeitgabesignalen erzeugen, welche das Signal PIPEOA+OA enthalten. Die gleichen Signale verursachen auch, daß die PLA-Schaltung 14-674 das Signal CPUCYL in Antwort auf das Signal PIPEOA+OA erzeugt, wie gezeigt in Fig. 3. Das Signal CPUCYL wird an die PLA-Schaltung 14-866 angelegt, die so programmiert ist, um die Aktion festzulegen, wo ein Adreßfehler erfaßt ist (d.h. Signal CA- CERR= 1).
  • Mit Bezug auf Fig. 5b wird gesehen, daß in dem Fall, bei dem kein Adreßfehler/Fehler erfaßt wird, das Cache-Subsystem einen normalen CPU-Lesezyklus einer Operation ausführt. Wenn jedoch ein Adreßfehler erfaßt wird, führt das Cache-Subsystem 14-6 keine Räumoperation aus, sondern umgeht den Cache für diesen Zyklus einer Operation. Das heißt, die Trefferdecodierschaltungen 14-860 erzeugen das Signal CACERR, welches den Treffer durch Sperren der Erzeugung der Datenladesignale POLDDT-OL und POLDDT-OR blockiert, die an die CPU-Datenregisterschaltungen angelegt sind, so daß die von der CPU-Anforderung spezifizierten Daten automatisch vom Hauptspeicher geholt werden, so als ob der Treffer nicht stattgefunden hätte. Das Signal CACERR veranlaßt auch, daß eine vorbestimmte Bitposition innerhalb eines Registers der Schnittstelle 14-1 auf einen binären EINS-Zustand gesetzt wird, was eine
  • Cache-Umgehung anzeigt. Dies veranlaßt, daß Daten, die vom Speicher während des zweithälftigen Buszyklus empfangen werden, nur an die anfordernde CPU gesendet werden und nicht im Cache gespeichert werden. Das Signal CACERR setzt auch eine Bitposition im Syndromregister 14-750. Beim Beginn der nächsten Busariforderung setzt die CPU die CACERR-Syndrombitposition rück, um eine richtige Operation sicherzustellen. Die obige Aktion stellt nach wie vor sicher, daß der Cache im gleichen Zustand verbleibt, wodurch Cache-Kohärenz aufrecht erhalten wird. Die Tatsache, daß es einen Verzeichnisfehler oder einen Quelladreßfehler gab, macht den sich ergebenden Treffer unzuverlässig. Somit könnte eine Doppelzuweisung erfolgen, was zu einer potentiellen Inkohärenz führen könnte. Das heißt, die Zuweisung der gleichen Stelle könnte an zwei unterschiedlichen Ebenen vorgenommen worden sein.
  • Der Verzeichnisspeicher 14-74/14-76 wird insoweit geändert, daß seine zuletzt verwendeten Schaltungen (least recently used, LRU) aktualisiert werden, was keine Wirkung hat, da im Falle eines Verzeichnisadreßfehlers sich der Fehler wiederholen wird und das Cache-Subsystem umgangen wird, wobei verhindert wird, daß die vom Speicher empfangenen Daten in das Cache-Subsystem 14-6 geschrieben werden.
  • Die dritte Operation ist ein Verzeichniszuweisungszyklus, der ausgefuhrt wird, wenn die durch die Anforderung spezifizierten Daten nicht im Cache-Datenpuffer 14-88/14-90 gespeichert werden. Wie aus Fig. 5c ersichtlich, wird während dieses Zyklus die Leseariforderung von entweder der CPU0 oder der CPU1 an das Cache-Subsystem 14-6 durch das FIFO-Subsystem 14-10 angelegt, und die Cache-Reihenadresse wird in die Stelle geschrieben, welche durch die Cache-Spaltenadresse in einer der Ebenen bezeichnet ist, die der CPU zugewiesen ist, und zwar spezifiziert von einem Schreibfreigabesignal von der Decodierschaltung 14-670. Wenn die angeforderten Datenwörter während des zweithälftigen Buszyklus zurückgegeben werden, fuhrt dies danach zu einem Cache-SHBC-Zyklus, während dem die empfangenen und im Datenregister 14-82 gespeicherten Daten in den Datenpuffer 14-88/14-90 an der Ebene geschrieben werden, die durch die Cache-Spaltenadresse spezifiziert ist, und Trefferebenensignale HIT#0-2 werden in das Pufteradreßregister 14-80/84 geladen.
  • Beim Ausfuhren eines Verzeichniszuweisungszyklus gewährt die Anordnung von Fig. 3, welche ein NAND-Gatter 14-741A aufweist, zusätzliche Vorteile darin, daß sie in der Lage ist. zwischen zwei unterschiedlichen Typen von Adreßfehlern zu unterscheiden (d.h. Verzeichnisadreßfehler und Eingabeadreßfehler). Diese Anordnung nimmt an, daß der Verzeichnisadreßfehler als "hart" (d.h. keine transiente Bedingung) angesehen werden kann. Wie aus Fig. 5c ersichtlich, wird unter solchen Bedingungen, wenn die Eingabeadresse falsch/fehlerhaft ist, der Verzeichnisspeicher 14-74/76 geräumt. Das heißt, das NAND-Gatter 14-741A zwingt das Signal auf eine binäre NULL in Antwort auf die Signale CACERRA und FLUSHA, welche auf binäre EINSEN gezwungen werden. Das Räumen geschieht in der beschriebenen Weise, indem das Signal auf eine binäre NULL während des Intervalls des laufenden Cache-Zykius gesetzt wird, der durch das Zeitgabesignal PIPEOB + OB festgelegt ist, das an das NAND-Gatter 14-741 angelegt ist. Zu diesem Zeitpunkt sperrt der Verzeichnisspeicher 14-74/76 die Erzeugung jeglicher Trefferausgabesignale, was aus der Ausfuhrung des parallelen Verzeichnisspeichers resultiert. Das Signal veranlaßt auch, daß die Räumbitposition des Syndromregisters 14-750 auf einen binären EINS-Zustand geschaltet wird.
  • In dem Falle jedoch, bei dem nur ein Verzeichnisadreßfehler erfaßt wird (d.h. Signal CACERR= 1), findet kein Räumen statt (d.h. das Signal FLUSH bleibt bei einer binären NULL), und der normale Zuweisungszyklus wird ausgeführt. Da der Fehler hart ist, wird er auch während nachfolgender Zuweisungszyklen einer Operation effaßt werden. Da dieser Typ von Adreßfehler die Cache-Kohärenz nicht beeinträchtigen wird, wenn er während eines Verzeichniszuweisungszyklus effaßt wird, braucht kein Räumen ausgefuhrt zu werden. Somit wird die Leistungsfähigkeit des Cache-Subsystems 14-6 auf einem hohen Niveau, ungeachtet der Erfassung solcher Adreßfehler, aufrecht erhalten.
  • Wie aus Fig. 5c ersichtlich, kann, wenn durch Testen oder ähnliches festgestellt wird, daß dieser Typ von Adreßfehler seiner Natur nach vorübergehend ist, die PLA-Schaltung 14-866 neu programmiert werden, um das Signal FLUSH auf eine binäre EINS zu zwingen, wobei veranlaßt wird, daß ein Räumen fur diesen Typ eines Adreßfehlers stattfindet. In diesem Fall schreitet die Operation wie zuvor beschrieben fort.
  • Die obigen Ausfuhrungen veranschaulichen, daß ein Räumen nur stattfindet wenn ein Typ eines Adreßfehlers oder eines Fehlers erfaßt wird, welcher zu einem nicht erfaßbaren Doppelzuweisungszyklus fuhren könnte, der den Cache inkohärent machen könnte. Zu diesem Zeitpunkt wird die ernstere Maßnahme in der Form eines Räumens ergriffen, um einen zukünftigen zuverlässigen Betrieb sicherzustellen. In diesem Fall wird während des zweithälftigen Buszykius der Verzeichnisspeicher keine Trefferbedingung erzeugen und daher werden die Daten nicht im Cache gespeichert werden, sondern an die anfordernde CPU gesendet werden.
  • Der vierte Typ einer Operation ist eine Verriegelungs-Nichtzyklus-Operation. Aus der in Fig. 5d gezeigten Sequenz veranlaßt die Erfassung eines Adreßfehlers oder eines Fehlers das Räumen eines Verzeichnisspeichers 14-74/76 in der gleichen Weise wie ein Verzeichniszuweisungszyklus. Das heißt, die PLA-Schaltung 14-866 ist so programmiert, um das Signal FLUSH auf einen binären EINS-Zustand zu zwingen, was dazu führt, daß das NAND-Gatter 14-741 das Signal auf eine binäre NULL zwingt, wenn das Signal CACERR auf eine binäre EINS gezwungen wird. Wiederum findet das Räumen während des Intervalls der zweiten Stufe des momentanen Cache statt, der durch das Signal PIPE- OB+OB festgelegt ist.
  • Im obigen Fall wird während der ersten Hälfte der Verriegelungs-Nichtzyklus-Operation, wenn das Cache-Subsystem 14-6 einen Treffer erfaßt, die Anforderungsadresse noch an das Speichersubsystem 20 zum Zwecke der Bestimmung gesendet ob die Speicherstelle in einem verriegeltem Zustand ist. Wenn das Speichersubsystem 20 anzeigt, daß die Stelle nicht verriegelt ist, erzeugt es ein Quittungssignal. Das Quittungssignal veranlaßt, daß die gleiche Stelle erneut durch Anlegen der Adresse, die vom Systembus empfangen ist und im FIFO-Subsystem 14-10 gespeichert ist, an das Cache-Subsystem 14-10 gelesen wird. Das Signal, das erzeugt wird, wenn der Treffer anfänglich erfaßt wurde, wird als Busverriegelungs-Nichtzyklus (FILKNC) bezeichnet. Da im bevorzugten Ausführungsbeispiel die CPU0 und die CPU1 nicht die Fähigkeit haben, diesen Operationstyp erneut zu versuchen, wenn ein Fehler auftritt, ist es notwendig, das Verzeichnls zu räumen anstelle die Cache-Zyklusoperation zu umgehen. Es kann gesehen werden, daß, wenn es eine solche Wiederversuchsfähigkeit gäbe, die PLA-Schaltung 14-866 leicht umprogramniiert werden könnte, um dies zu berücksichtigen.
  • Der funfte Operationstyp ist ein Aktualisierungszykius einer Operation. Hier gibt das FIFO-Subsystem 14-10 eine Anforderung an das Cache- Subsystem 14-10 zum Aktualisieren von Daten, die vom Systembus 12 empfangen sind. Wenn ein Treffer erfaßt ist, werden die Aktualisierungsdaten in den Cache-Puffer geschrieben. In Fig. 5e bezeichnet die dickere durchgezogene Linie um den Adreßfehlertest-Kasten, daß die gleiche Sequenz eines Adreßfehlertesens, die während des Verzeichniszuweisungszyklus ausgefuhrt wird, ebenso während diesem Zyklus ausgefuhrt wird. Das heißt, wenn ein Adreßfehler oder ein Fehler erfaßt wird, findet die Aktualisierungsoperation nicht statt. Hier ist es möglich, daß dies eine Doppelzuweisung hervorrufen könnte. Da nicht bekannt ist, ob die Aktualisierungsadresse im Cache-Verzeichnisspeicher existiert oder nicht, wird es notwendig, seinen Inhalt zu räumen, um Inkohärenz zu vermeiden. Das heibt, eine Verarbeitungseinheit könnte neue Information in den Hauptspeicher geschrieben haben, und das Cache-Subsystem 14-6 ist wegen des Adreßfehlers nicht in der Lage, seinen Inhalt zu aktualisieren, um kohärent mit dieser Anderung im Hauptspeicher zu sein.
  • Demgemaß ist die PLA-Schaltung 14-866 programmiert, um das Signal FLUSHA auf einen binären EINS-Zustand in Antwort auf das Aktualisierungszyklussignal UPDCYL zu zwingen, welches auf eine binäre EINS durch die PLA-Schaltung 14-672 gezwungen ist. Auf die zuvor beschriebene Weise wird das Signal auf eine binäre NULL in Antwort auf das Adreßfehlersignal CACERR gezwungen, welches auf eine binäre EINS gezwungen wird. Wie aus Fig. 5e ersichtlich, tritt das Räumen während des Intervalls des laufenden Zyklus ein, der durch das Signal PIPEOB+OB festgelegt ist. Wenn der Aktualisierungszyklus zwischen einem Verzeichnlszuweisungszyklus und einem zweithälftigen Buszyklus auftritt, werden die Daten, die während des zweithälftigen Buszyklus zurückgegeben werden, nicht im Cache gespeichert (d.h. Verzeichnis geräumt - kein Treffer erfolgt), sondern werden an die anfordernde CPU gesendet.
  • In dem Fall jedoch, bei dem nur ein Verzeichnisadreßfehler erfaßt wird (d.h. Signal CACERR = 1), findet kein Räumen statt, was dazu fuhrt, daß ein normaler Aktualisierungszyklus ausgefuhrt wird. Da die Operation die Cache-Kohärenz nicht beeinträchtigen wird, braucht kein Räumen ausgesfuhrt zu werden. Das Cache-Subsystem 14-6 wird hier wiederum auf einem hohen Leistungsfähigkeitsniveau arbeiten.
  • Wie aus Fig. 4 ersichtlich, sind die sechste und die siebte Operation zweithälftige Buszyklusoperationen. Hier wurde eine Adresse in den Verzeichnisspeicher 14-74/76 ohne jeglichen Fehler geschrieben. Während der zweiten Hälfte dieser Operation wird die gleiche Stelle adressiert, um die angeforderten Daten in die Stelle zu schreiben, welche zuvor zugewiesen wurde. Wenn ein Adreßfehler oder ein Fehler während dieses Zyklustyps erfaßt wird, ist das Cache-Subsystem 14-6 nicht in der Lage, korrekt über die Daten zu verfugen. Daher ist die PLA-Schaltung 14-866 so prograrnnuert, um das Signal FLUSH auf eine binäre EINS zu zwingen, um ein Räumen nach dem Auftreten eines Adreßfehlers (d.h. CACERR = 1) zu veranlassen.
  • Da es nur zweithälftige Buszyklen eines Speichers sind, die die Cache- Kohärenz beeinträchtigen können, ist die PLA-Schaltung 14-866 so programmiert, um ein Räumen nur während eines zweithälftigen Buszyklus eines Speichers (d.h. Signal MSHBCL= 1) zu veranlassen. Die zweithälftigen Buszyklen von I/O und SMF umgehen in wirksamer Weise das Cache-Subsystem 14-6. Eine andere Weise der Programmierung der PLA- Schaltung 14-866 besteht darin, ein Speicherreferenzsignal RPMREF als eine Eingabe hinzuzufügen, während es als eine Eingabe an die PLA- Schaltung 14-672 weggenommen wird. Somit zwingt die PLA-Schaltung 14-672 das Signal SHBCYL auf eine binäre EINS, was einen zweithälftigen Buszyklus anzeigt, während die PLA-Schaltung 14-672 das Signal FLUSH auf eine binäre EINS nur dann zwingt, wenn das Signal RPMREF eine binäre EINS ist, ,was einen zweithälftigen Buszyklus eines Speichers anzeigt.
  • Wie aus Fig. 5f ersichtlich, tritt das Räumen während des Intervalls der zweiten Stufe des momentanen Zyklus auf, der durch das Signal PIPE- OB + OB festgelegt ist. Die Trefferdecodierschaltungen 14-860 erzeugen das Signal CACERR, die sich über die Trefferanzeigeschaltungen hinwegsetzen, wobei verhindert wird, daß Daten in den Datenpuffer 14-88/90 geschrieben werden, jedoch an die anfordernde CPU gesendet werden.
  • Wie aus Fig. 4 ersichtlich, entsprechen die nächsten drei Ereignisse oder Operationen einem drittseitigen Busfehler und einem Betriebsauszeit- und FIFO-Überlauffehler. Die Sequenz der Operationen fur diese drei Ereignlsse ist in Fig. 5g gezeigt. Im Falle eines drittseitigen Busfehlers führt das FIFO-Subsystem 14-10 eine Horchoperation aus, bei der ein Fehler in den Daten, der Adresse oder im Befehlsfeld der durch ein anderes Subsystem an den Systembus 12 angelegten Anforderung erfaßt wird. Da die Subsysteme die Fähigkeit haben, solche Anforderungen erneut zu versuchen, wird die empfangende Einheit normalerweise nicht antworten, wobei eine Systemauszeit erzeugt wird, was ermöglicht, daß ein Neuversuch stattfindet. Somit wird die Anforderung nlcht durch das FIFO-Subsystem 14-10 gespeichert werden. Wenn jedoch aus irgendeinem Grund die Anforderung durch die empfangende Einheit quittiert wird, speichert das FIFO-Subsystem 14-10 die Anforderung und legt die Anforderung dem Verzeichnisspeicher 14-74/76 vor. Da es keine Möglichkeit gibt, den Zyklustyp zu identifizieren, der wegen des Fehlers stattfinden soll, führt das Cache-Subsystem 14-6 eine Räumoperation aus, um die Cache-Kohärenz aufrecht zu erhalten. Zum Beispiel könnte die Information ein Speicherschreibvorgang sein, der die Ausführung einer Cache- Aktualisierung durch das Cache-Subsystem 14-6 erforderlich macht.
  • Das Signal FIMBER wird auf eine binäre 1 gezwungen, um einen drittseitigen Busfehler zu signalisieren. Wie aus Fig. 3 ersichtlich, wird dieses Signal verwendet, um das NOR-Gatter 14-662 zu veranlassen, das Verzeichnislöschsignal DIRCLR auf eine binäre Null zu zwingen, welches seinerseits in eine Bitposition des Verzeichnisadreßregisters 14-68/72 in Antwort auf das Signal DIPEOA+OA geladen wird. Dies veranlaßt, daß das AND-Gatter 14-740 das Signal auf eine binäre Null ab dem Beginn des Verzeichniszyklus entsprechend der fuhrenden Flanke des Signals PIPEOA+ OA bis zum Beginn des nächsten Verzeichnlszyklus zwingt, zu welchem Zeitpunkt die Bitposition des Registers 14-68/72 auf eine binäre Null rückgesetzt werden wird. Wiederum werden die entsprechenden Bitpositionen des Syndromregisters 14-750 durch die Signale und FIMBER auf binäre Einsen gesetzt.
  • Wie aus Fig. 5g ersichtlich, wird im Falle eines FIFO-Überlauffehlers eine ähnliche Maßnahme ergriffen. In diesem Fall führt eine Buszyklusoperation zu einem Verlust von Information, Daten oder eines Befehls. Da der verfehlte Zyklus ein Speicherschreibvorgang hätte sein können, der die Ausführung einer Cache-Aktualisierung durch das Cache-Subsystem 14-6 erforderlich macht, ergreift das Cache-Subsystem 14-6 wie derum die gleiche Maßnahme des Ausführens einer Räumoperation. Wie aus Fig. 3 ersichtlich, veranlaßt das Signal FIERR, welches den FIFO-Überlauffehler darstellt, wenn es auf eine binäre Eins gezwungen wird, daß das NOR-Gatter 14-662 das Verzeichnislöschsignal DIRCLR auf eine binäre Null zwingt. Dies veranlaßt, daß das AND-Gatter 14-740 das Signal auf eine binäre Null zwingt, was den Inhalt des Verzeichnisspeichers 14-74/76 wie zuvor beschrieben räumt.
  • Das letzte Ereignis, welches eine Räumoperation hervorruft, ist eine Betriebsauszeit. Hier richtete das Cache-Subsystem 14-6 eine Speicherleseanforderung an das Speichersubsystem 20, die sie bestätigt, auf die jedoch kein zweithälftiger Buszyklus folgt. Das Fehlen einer Antwort führte zu einer Betriebsauszeit. Da das Cache-Subsystem 14-6 in einem Zwischenzustand belassen wird, führt es eine Räumoperation nach Empfang des Signals CLRBUS aus, welches eine Betriebsauszeitbedingung anzeigt. Wie aus Fig. 3 ersichtlich schaltet das Signal CLRBUS das Flip- Flop 14-660 auf einen binären Eins-Zustand. Dies führt dazu, daß das Signal OPTMOT das NOR-Gatter 14-662 veranlaßt das Verzeichnislöschsignal DIRCLR auf eine binäre Null zu zwingen. Zum gleichen Zeitpunkt wird das Signal OPTMOT verwendet, um einen Cache-Zyklus einer Operation einzuleiten, was dazu befähigt, daß die Räumoperation in der zuvor beschriebenen Weise stattfindet.
  • Die obigen Ausführungen haben gezeigt, wie die Vorrichtung der vorliegenden Erfindung in der Lage ist, auf die Erfassung unterschiedlicher Typen von Adreßfehlern oder Systemereignissen zu reagieren, um Cache- Kohärenz ohne Beeinträchtigung der Leistungsfähigkeit aufrecht zu erhalten. Durch Kategorisieren der Typen von Adreßfehlern ausgedrückt in Typen von gerade ausgeführten Cache-Zyklen, kann eine Maßnahme ergriffen werden, die die besten Ergebnisse hinsichtlich Kohärenz und Leistungsfähigkeit erzielen wird.
  • Darüber hinaus verbessert das bevorzugte Ausführungsbeispiel die Cache- Elastizität hinsichtlich der Verarbeitung zweihälftiger Buszyklen, bei dem bestimmte Typen von Fehlerbedingungen erfaßt werden. Die erste solche Bedingung ist ein nicht korrigierbarer Speicherfehler, der durch den Empfang eines oder beider der Signale FIRDEL und FIREDR vom FIFO-Subsystem 14-10 angezeigt wird. Hier zeigt das Speichersubsystem 20 an, daß die angeforderten Daten einen nicht korrigierbaren Fehler enthalten. Da die Stelle im Verzeichnisspeicher 14-74/76 zuvor bereits zugewiesen wurde, wird es wünschenswert, eine bestimmte Maßnahme zu ergreifen, die die Notwendigkeit eliminiert, fehlerhafte Daten im Cache zu speichern, während gleichzeitig Kohärenz aufrecht erhalten wird. Unter Verwendung des Inhalts des Austauschadreßregisters, der der Adresse der zuvor zugewiesenen Stelle entspricht, erzeugt die PLA-Schaltung 14-664 während des zweithälftigen Buszyklus ein Zuweisungsrücknahmesignal und ein Verzeichnisschreibsignal DIRWRE. Diese Signale veranlassen, daß ein OR-Gatter 14-742 und eine Decodierschaltung 14-670 die notwendigen Signale erzeugen, um die zuvor zugewiesene Stelle innerhalb des Verzeichnisspeichers 14-74/76 zu invalidieren. Das heißt, diese Signale veranlassen, daß die zuvor zugewiesene Verzeichnisspeicherstelle während eines zweithälftigen Buszyklus beschrieben wird, der als ein Zuweisungsrücknahmezyklus dient. Somit werden die Daten nicht im Cache gespeichert, sondern nur an die anfordernde CPU weitergeleitet.
  • Der gleiche Typ einer Zuweisungsrücknahmeoperation wird während eines zweithälftigen Buszyklus ausgeführt, bei dem ein Busverriegelungsbit gesetzt ist (das heißt, Signal FILOCK= 1). Dies bedeutet, daß die Stelle, die zuvor zugewiesen wurde, nicht als Teil des Speichersubsystems existiert, sondern Teil eines anderen Systems ist, mit dem das System gekoppelt ist (zum Beispiel ein entfernter Speicher). Da diese Stelle nicht verfolgt werden kann, arbeitet die PLA-Schaltung 14-664 auf die gleiche Weise, um die Stelle zu invalidieren (ihre Zuweisung zurücknehmen), und zwar während des zweithälftigen Buszyklus. Wiederum verbleibt der Zustand des Cache-Subsystems 14-6 unbeeinträchtigt, während die Daten zu der anfordernden CPU gesendet werden.
  • Die obige Anordnung gewährleistet zusätzliche Elastizität darin, daß sie in der Lage ist, die Zuweisung einer gegebenen Speicherstelle als Funktion bestimmter Typen von Bedingungen zurückzunehmen.
  • Es wird dem Fachmann in dieser Technik erkennbar werden, daß Änderungen am bevorzugten Ausführungsbeispiel der vorliegenden Erfindung vorgenommen werden können, ohne von ihrer Lehre abzuweichen. Zum Beispiel können unterschiedliche Typen von programmierbaren Schaltungen, Speicherschaltungen usw. eingesetzt werden. Solche programmierbaren Schaltungen könnten auch zum Erzeugen anderer Signale verwendet werden, die zum Räumen führen (zum Beispiel Systemereignisse).
  • ANHANG
  • Die Gleichungen zum Erzeugen der Signale von Fig. 2 und 3 sind durch die folgenden Boolschen Ausdrücke gegeben: *These signals are clocked with Signal PIPE0B+0A.
  • BESCHREIBUNG VON GLEICHUNGSTERMEN
  • 1. DBWDRD = Doppelwortlesebefehl, festgelegt durch das ROS-Datenbit 4 = 1 und das ROS-Datenbit 5 = 0, welche durch die Decodierschaltungen von Block 14-66 erzeugt werden, die durch das Signal PIPE0A + 0A getaktet werden.
  • 2. CPUNUM = CPU-Nummer (CPU0 oder CPU1)-Signal, welches durch die Schaltungen von Block 14-66 erzeugt ist, die durch Signal PIPE0A+ 0A getaktet werden.
  • 3. CPUCYL = CPU-Zyklussignal, das durch die Schaltungen von Block 14-66 erzeugt ist, und welches mit dem Signal PIPE0A+ 0A getaktet ist.
  • 4. EVNHIT = HIT-Signal, welches durch die Trefferdecodierschaltungen 14-680 zugehörig zum geraden Verzeichnisspeicher 14-76 erzeugt wird.
  • 5. CMAD22 = Cache-Speicheradreßbit 22, welches am Ausgang des Wählers 14-62 erzeugt ist.
  • 6. CMAD23 = Cache-Speicheradreßbit 23, welches am Ausgang des Wählers 14-62 erzeugt ist, spezifizien, welche Hälfte (die linke oder die rechte) des Datenregisters 14-94 oder 14-96 mit einem Datenwort geladen werden soll.
  • 7. FIAD17 = FIFO-Adreßbit 17 vom FIFO-Subsystem 14-11, legt fest, welche CPU die Austauschdaten empfangen soll.
  • 8. FIDBWD = FIFO-Befehlsbit doppelter Wortbreite vom FIFO-Subsystem 14-11 spezifiziert, wenn die gerade zurückgegebenen Daten zwei Wörter haben.
  • 9. FISHBA = Zweithälftiges Buszyklus-Quittiersignal des FIFO von 14- 11 spezifiziert, daß das FIFO-Subsystem einen Cache-Zyklus erfordert, um die von einer I/O-Vorrichtung oder einem Speicher empfangenen Daten während eines zweithälftigen Buszyklus SHBC zu verarbeiten.
  • 10. ODDHIT = HIT-Signal, welches durch die Trefferdecodierschaltungen 14-680 zugehörig zum ungeraden Verzeichnisspeicher 14-74 erzeugt wird.
  • 11. RPMREF = Speicherreferenzsignal, welches von RAR 14-12 geliefert wird, und welches jeder Ausnahmebedingnng erlaubt, daß sie berücksichtigt wird.
  • 12. RPAD22 = Austauschadreßbit 22 vom RAR 14-12.
  • 13. FIDT 16-18/19-21 = Die geraden/ungeraden Datenbits, welche die Cache-Ebene festlegen, die ,durch das FIFO-Subsystem 14-10 bereitgestellt wird.
  • 14. CYFIFO = ein Signal, das durch die FIFO-Zyklus-Wähllogikschaltun gen von Block 14-60 während einer freien Pipelinestufe erzeugt wird.
  • 15. FISHBC = das zweithälftige Buszyklussignal vom FIFO-Subsystem 14-10.
  • 16. WRTPLS = das Schreibimpulssignal, welches durch die Schaltungen von Block 14-60 erzeugt wird, welches auf halbem Wege zwischen entweder den Taktsignalen PIPE0A+ 0A und PIPE0A+ 0B oder den Taktsignalen PIPE0B + 0A und PIPE0B + 0B auftritt.
  • 17. FIMREF = das Busspeicher-Refernzsignal BSMREF vom FIFO- Subsystem 14-10.
  • 18. FIWRIT = das Busspeicher-Schreibsignal BSWRIT vom FIFO-Sub- System 14-10.
  • 19. TM1AD2 = Zeitschlitz, der der CPU0 zugewiesen ist.
  • 20. PTOBSY = Signal vom Schnittstellenbereich 14-1, das anzeigt, daß die CPU0 nicht belegt ist.
  • 21. PORD02 = der Zustand der Bitposition 2 des ROS 14-24, welcher anzeigt, daß die CPU0 einen Operationszyklus angefordert hat.
  • 22. FILKNC = das Verriegelungs-Nichtzyklussignal BSLKNC vom FIFO- Subsystem 14-10 zum Signalisieren an den Speicher, wenn er einen Speicherzyklus nachfolgend eines Testens/Rücksetzens einer Verriegelungsbedingung ausführen soll.
  • 23. FIAD21 = FIFO-Adreßbit 21 vom FIFO-Subsystem 14-10 zum Signalisieren, wenn das Cache-Subsystem zu umgehen ist.
  • 24. FIAD22 = FIFO-Adreßbit 22 vom FIFO-Subsystem 14-10 zum Signalisieren, ob die SHBC-Adresse gerade oder ungerade ist.
  • 25. FIREAD = Lesesignal, welches vom BSWREC abgeleitet wird, das vom FIFO-Subsystem 14-10 empfangen ist.
  • 26. FIRSQ = Rettungssignal BSRESQ vom FIFO-Subsystem 14-10 zum Anzeigen, wenn ein Doppelwort verfügbar ist, um in Antwort auf die Anforderung gesendet zu werden.
  • 27. FIREDL = Rot-Links-Signal BSREDL vom FIFO-Subsystem 14-10, welches einen nicht korrigierbaren Fehler im linken Wort eines Doppelworts anzeigt.
  • 28. FIREDR = Rot-Rechts-Signal BSREDR vom FIFO-Subsystem 14-10, welches einen nicht korrigierbaren Fehler im rechten Wort eines Doppelworts anzeigt.
  • 29. FILOCK = das Verriegelungssignal BSLOCK vom FIFO-Subsystem 14-10, welches anzeigt, wenn eiiie Speicherverriegelung-Zyklusoperation auszuführen ist.

Claims (10)

1. Elastischer Cache-Speicher zum aufrechterhalten der Kohärenz während des Auftretens unterschiedlicher Typen von Adreßfehlern. die während der Verarbeitung von Speicheranforderungen erfaßt werden, wobei jede Anforderung einen ersten und einen zweiten Adreßabschnitt aufweist, wobei der Cache-Speicher aufweist: eine erste Fließbandstufe. welche aufweist:
ein Eingangsregister (14-68/72) zum Empfangen jeder Anforderung;
einen Verzeichnlsspeicher (14-74/76), welcher in eine Vielzahl von Ebenen organisiert ist, wobei jede Ebene eine Gruppe von Speicherstellen zum Speichern einer entsprechenden Anzahl erster Adreßabschnitte ("Reihenadresse") der Speicheranforderungen aufweist, wobei auf jede der unterschiedlichen Gruppen von Stellen innerhalb des Verzeichnisspeichers von einem unterschiedlichen Abschnitt der zweiten Adreßabschnitte ("Spaltenadresse, COLAD0-8") zugegriffen werden kann; und eine Einrichtung zum Erzeugen einer ersten Anzahl von Fehlersignalen (PEO-7) zum Anzeigen der Erfassung eines ersten Typs eines Adreßfehlers;
eine Adreßprüfeinrichtung (14-746), welche mit dem Eingangsregister gekoppelt ist, wobei die Adreßprüfeinrichtung so arbeitet, um eine zweite Vielzahl von Adreßfehlersignalen (ODAPEA-2) zum Anzeigen der Erfassung eines zweiten Typs eines Adreßfehlers zu erzeugen, wobei der Verzeichnisspeicher eine Einrichtung (14-860) zum Erzeugen einer Vielzahl von Treffersignalen aufweist, um das Vorhandensein irgendeines positiven Vergleichs zwischen den gespeicherten ersten Adreßabschnitten und dem ersten Abschnitt der Anforderung und der ersten Anzahl von Fehlersignalen anzuzeigen;
eine erste Steuerschaltungseinrichtung (14-672/674), weiche mit dem Verzeichnisspeicher über eine zweite Steuerschaltungseinrichtung (14- 866) einer zweiten Fließbandstufe gekoppelt ist und welche gekoppelt ist, um Signale zu empfangen, welche unterschiedliche Typen von Cache-Zyklen anzeigen, die durch den Cache-Speicher in Antwort auf die Anforderungen ausführbar sind;
wobei die zweite Hießband-Cache-Stufe aufweist:
einen Datenspeicher (14-80/84), welcher in die gleiche Anzahl von Ebenen der Gruppen von Stellen wie in dem Verzeichnisspeicher organisiert ist. und wobei jede unterschiedliche Gruppe von Stellen innerhalb der Datenspeicherebenen durch einen unterschiedlichen Abschnitt der zweiten Adreßabschniue (CO- LADRO-8) definiert ist:
die zweite Steuerschaltungseinrichtung (14-866), welche mit dem Verzeichnisspeicher und der ersten Steuerschaltungseinrichtung (14-672, 14-674) gekoppelt ist, wobei die zweite Steuerschaltungseinrichtung in Antwort auf Signale von der ersten Steuerschaltungseinrichtung eine Anzahl von Ausgabesignalen erzeugt, die anzeigen, in welchen Zyklen das Räumen des Verzeichnisspeichers als eine Funktion (CACERRA, CACERR) der ersten und zweiten Adreßfehlersignale während des Betriebs der zweiten Stufe stattfinden soll, um die Cache-Kohärenz aufrecht zu erhalten, was zu einem kontinuierlichen Cache-Betrieb führt, während der Datenspeicher durch eine Abfolge normaler Zyklen aufgefüllt wird, in welchen die Einrichtung zum Erzeugen der Vielzahl von Treffersignalen ein Nicht-Vorhandensein der positiven Vergleiche anzeigt.
2. Elastischer Cache-Speicher gemäß Anspruch 1, wobei die Einrichtung zum Erzeugen der Vielzahl von Treffersignalen (14-860) eine Trefferdecodier-Schaltungseinrichtung aufweist, die mit dem Verzeichnisspeicher (14-74/76) und der Adreßprufeinrichtung (14-746) gekoppelt ist, zum Empfangen des Treffer-, des ersten (PEO-7) und zweiten (ODAPEA-2) Adreßfehlersignals, wobei die Trefferdecodier-Schaltungseinrichtung die ersten und zweiten Adreßsignale zum Erzeugen zumindest eines zusammengesetzten Cache-Fehlersignals (CACERR) verknüpft, um eine nachfolgende Cachezyklus-Operation zu umgehen. die in Antwort auf die Speicheranforderung eingeleitet ist.
3. Elastischer Cache-Speicher gemäß Anspruch 1, der weiterhin aufweist:
eine Verzeichnlslöscheinrichtung (DIRCLR) zum Empfangen und Speichern von Signalen, die eine Vielzahl von unterschiedlichen Ereignissen darstellen, welche während des Betriebs des Cache auftreten könnten; und
eine Ausgabelogikeinrichtung (14-740), die mit jeder der Ebenen des Verzeichnisspeichers, der zweiten Steuerschaltungseinrichtung und der Verzeichnislöscheinrichtung gekoppelt ist, wobei die Ausgabelogikeinrichtung in Antwort auf entweder ein Signal von der Verzeichnislöscheinrichtung oder das Ausgabesignal von der zweiten Steuerschaltungseinrichtung den Verzeichnisspeicher räumt, indem er gleichzeitig die Speicherstellen innerhalb jeder der Ebenen rücksetzt wodurch die ersten Adreßabschnitte ungültig gemacht werden.
4. Elastischer Cachespeicher gemäß Anspruch 3, wobei die Vielzahl von unterschiedlichen Ereignissen eine Betriebsauszeit, einen FIFO-Überlaufzyklus und einen drittseitigen Busfehler beinhalten.
5. Elastischer Cachespeicfier gemäß Anspruch 1, wobei die erste Steuerschaltungseinrichtung aufweist:
erste getaktete, programmierbare Logikmatrixschaltungen (PLA), wobei die erste PLA-Schaltung (14-672, 14-674) so verbunden ist, um die Signale zu empfangen, welche unterschiedliche Typen von Cache- Zyklen darstellen, wobei die erste PLN eine Vielzahl von Signalen erzeugt, um den vom Cache-Speicher gerade in Ausführung befindlichen Cache-Zyklustyp anzuzeigen: und
wobei die zweite Steuerschaltungseinrichtung aufweist:
eine zweite PLA-Schaltung (14-866), die mit der ersten PLA-Schaltung gekoppelt ist, wobei die zweite PLA-Schaltung das Ausgabesignal (FLUSHÄ) erzeugt, um anzuzeigen, ob der Verzeichnisspeicher nach dem Auftreten des ersten und des zweiten Adreßfehlersignals geräumt werden soil oder nicht, um Cache-Kohärenz aufrecht zu erhalten.
6. Elastischer Cache-Speicher gemäß Anspruch 5, wobei die unterschiedlichen Zyklustypen einen CPU-Lesezyklus, einen Verzeichniszuweisungszyklus, einen Verriegungsleerzymus einen Aktualisierungszyklus, einen Speicherbuszyklus der zweiten Hälfte beinhalten.
7. Elastischer Cache-Speicher gemäß Anspruch 1, welcher weiterhin aufweist:
eine Zuweisungsfreigabe-Schaltungseinrichtung (14-742), welche mit dem Verzeichnisspeicher gekoppelt ist; und weiterhin eine programmierbare Steuerschaltungseinrichtung (14-664), welche mit der Zuweisungsfreigabe-Schaltungseinrichtung gekoppelt ist, zum Empfangen von Signalen, welche unterschiedliche Typen des Betriebs zweiter Buszyklen und das Auftreten unterschiedlicher Typen von Fehlerbedingungen anzeigen, wobei die weitere Steuerschaltungseinrichtung nach Erfassen des Auftretens bestimmter Fehlerbedingungen während vorbestimmter Typen zweiter Buszyklen veranlaßt, daß die Zuweisungsfreigabe-Schaltungseinrichtung eine der Verzeichnisspeicherstellen während der Durchführung des zweithälftigen Buszyklus auf einen ungültigen Zustand rücksetzt, welche zuvor als Teil des Inltialisierungsprozesses der Speicheranforderung zugewiesen wurde um den Cache-Speicher kohärent zu halten.
8. Multiverarbeitungssystem mit einer Vielzahl von Verarbeirungsubsystemen und einem Hauptspeicher, der gemeinsam an ein asynchrones System gekoppelt ist, wobei jedes Verarbeitungssubsystem einen elastischen Cache-Speicher aufweist, um einen Hochgeschwindigkeitszugriff durch eine Anzahl von Verarbeitungseinheiten auf kohärente Hauptspeicherdaten in Antwort auf Speicheranforderungen zu gewährleisten, die auf dem Systembus durch die Verarbeitungssysteme übertragen wurden, wobei jede Speicheranforderung einen ersten und einen zweiten Adreßabschnitt einer Cache-Speicheradresse aufweist, welche durch eines der Verarbeitungssubsysteme erzeugt wurde, wobei der Cache-Speicher aufweist:
eine erste Fließbandstufe. die aufweist:
ein Eingangsregister (14-68/72) zum Empfangen jeder Anforderung;
einen Verzeichnisspeicher (14-74/76), der in eine Vielzahl von Ebenen organisiert ist, welche Gruppen von Speicherstellen enthalten, wobei jede Stelle den ersten Adreßabschnitt ("Reihenadresse") einer Speicherleseanforderung speichert, die von einer der Anzahl von dazugehörigen Verarbeitungseinheiten erzeugt ist, und wobei jede unterschiedliche Gruppe von Stellen innerhalb der Verzeichnisspeicherebenen durch einen unterschiedlichen zweiten Adreßabschnitt ("Spaltenadresse" COLADO-8) definiert ist, wobei der Verzeichnisspeicher eine Einrichtung (14- 860) zum Erzeugen einer Vielzahl von Treffersignalen aufweist, um das Vorhandensein eines positiven Vergleichs zwischen den gespeicherten ersten Adreßabschnitten und dem ersten Abschnitt der Anforderung anzuzeigen, und zum Erzeugen einer ersten Vielzahl von Fehlersignalen (PE0-7), welche durch den Verzeichnisspeicher erzeugt werden, zum Anzeigen der Erfassung eines ersten Typs eines Adreßfehlers:
eine Adreßprüfeinrichtiing (14-746). welche init dem Eingangsregister gekoppelt ist, wobei die Adreßprüfeinrichtung so arbeitet, um eine zweite Vieizahl von Adreßfehlersignalen (ODA- PEA-2) zum Anzeigen der Erfassung eines zweiten Typs eines Adreßfehlers zu erzeugen:
eine erste Steuerschaltungseinrichtung (14-672/674), welche mit dem Verzeichnisspeicher über eine zweite Steuerschaltungseinrichtung (14-866) einer zweiten Fließbandstufe gekoppelt ist und welche so gekoppelt ist, um Signale zu empfangen, welche unterschiedliche Typen von Cache-Zyklen anzeigen, die durch den Cache-Speicher in Antwort auf die Anforderungen ausführbar sind;
wobei die zweite Fließband-Cache-Stufe aufweist:
einen Datenspeicher (14-80/84), welcher in die gleiche Anzahl von Ebenen der Gruppen von Stellen wie in dem Verzeichnisspeicher organisiert ist, und wobei jede unterschiedliche Gruppe von Stellen innerhalb der Datenspeicherebenen durch einen unterschiedlichen zweiten Adreßabschnitt (COLADR0-8) definiert ist;
wobei die zweite Steuerschaltungseinrichtung (14-866) mit dem Verzeichnisspeicher und der ersten Steuerschaltungseinrichtung (14-672, 14-674) gekoppelt ist, wobei die zweite Steuerschaltungseinrichtung in Antwort auf Signale von der ersten Steuerschaltungseinrichtung eine Anzahl von Ausgabesignalen erzeugt, welche anzeigen, in welchen Zyklen das Räumen des Verzeichnisspeichers als eine Funktion (CACERRA, CACERR) der ersten und zweiten Adreßfehlersignale während des Betriebs der ersten Stufe stattfinden soll, um Cache- Kohärenz aufrecht zu erhalten, was zu einem kontinuierlichen Cache- Betrieb führt, während der Datenspeicher durch eine Abfolge normaler Zyklen wiederaufgefüllt wird, in welchen die Einrichtung zum Erzeugen der Vielzahl von Treffersignalen ein Nicht-Vorhandensein der positiven Vergleiche anzeigt.
9. Multiverarbeitungssystem gemäß Anspruch 8, wobei die Einrichtung zum Erzeugen der Vielzahl von Treffersignalen (14-860) eine Trefferdecodier-Schaltungseinrichtung aufweist, die mit dem Verzeichnisspeicher und der Adreßprüfeinrichtung gekoppelt ist, zum Empfangen der Treffer-, der ersten und der zweiten Adreßfehlersignale, wobei die Trefferdecodier-Schaltungseinrichtung die ersten und zweiten Adreßsignale verknüpft, um zumindest ein zusammengesetztes Cache- Fehlersignal zu erzeugen, um einen nachfolgenden Cache-Betriebszyklus zu umgehen, der in Antwort auf die Speicheranforderung eingeleitet wurde.
10. Multiverarbeitungssystem gemäß Anspruch 8, wobei die erste Fließbandstufe weiterhin eine Verzeichnislöscheinrichtung (DIRCLR) zum Empfangen und Speichern von Signalen aufweist, die eine Vielzahl von unterschiedlichen Systemereignissen darstellen, weiche während des Betriebs des Cache auftreten könnten; sowie
eine Ausgabelogikeinrichtung, die mit jeder der Ebenen des Verzeichnisspeichers, mit der zweiten Steuerschaltungseinrichtung und mit der Verzeichnislöscheinrichtung gekoppelt ist wobei die Ausgabelogikeinrichtung in Antwort auf entweder ein Signal von der Verzeichnislöscheinrichtung oder das Ausgangssignal von der zweiten Steuerschaltungseinrichtung den Verzeichnisspeicher räumt, indem die Speicherstellen innerhalb jeder Ebene gleichzeitig rückgesetzt werden, wodurch die ersten Adreßabschnitte ungültig gemacht werden.
DE3854368T 1987-05-28 1988-05-27 Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler. Expired - Fee Related DE3854368T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/055,577 US4833601A (en) 1987-05-28 1987-05-28 Cache resiliency in processing a variety of address faults

Publications (2)

Publication Number Publication Date
DE3854368D1 DE3854368D1 (de) 1995-10-05
DE3854368T2 true DE3854368T2 (de) 1996-05-09

Family

ID=21998780

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3854368T Expired - Fee Related DE3854368T2 (de) 1987-05-28 1988-05-27 Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler.

Country Status (13)

Country Link
US (1) US4833601A (de)
EP (1) EP0300166B1 (de)
JP (1) JPS644847A (de)
KR (1) KR920007276B1 (de)
CN (1) CN1012855B (de)
AU (1) AU608848B2 (de)
CA (1) CA1311303C (de)
DE (1) DE3854368T2 (de)
DK (1) DK288488A (de)
ES (1) ES2076149T3 (de)
FI (1) FI882455A (de)
NO (1) NO172267C (de)
YU (1) YU103388A (de)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5123103A (en) * 1986-10-17 1992-06-16 Hitachi, Ltd. Method and system of retrieving program specification and linking the specification by concept to retrieval request for reusing program parts
US5029070A (en) * 1988-08-25 1991-07-02 Edge Computer Corporation Coherent cache structures and methods
US4928225A (en) * 1988-08-25 1990-05-22 Edgcore Technology, Inc. Coherent cache structures and methods
US5018063A (en) * 1988-12-05 1991-05-21 International Business Machines Corporation Method for reducing cross-interrogate delays in a multiprocessor system
US5537640A (en) * 1988-12-30 1996-07-16 Intel Corporation Asynchronous modular bus architecture with cache consistency
US6038641A (en) * 1988-12-30 2000-03-14 Packard Bell Nec Two stage cache memory system and method
US5095428A (en) * 1989-01-04 1992-03-10 Compaq Computer Corporation Cache flush request circuit flushes the cache if input/output space write operation and circuit board response are occurring concurrently
US5060136A (en) * 1989-01-06 1991-10-22 International Business Machines Corp. Four-way associative cache with dlat and separately addressable arrays used for updating certain bits without reading them out first
US4967414A (en) * 1989-01-06 1990-10-30 International Business Machines Corp. LRU error detection using the collection of read and written LRU bits
US5097532A (en) * 1989-03-03 1992-03-17 Compaq Computer Corporation Circuit for enabling a cache using a flush input to circumvent a late noncachable address input
US5060144A (en) * 1989-03-16 1991-10-22 Unisys Corporation Locking control with validity status indication for a multi-host processor system that utilizes a record lock processor and a cache memory for each host processor
US5241681A (en) * 1989-11-03 1993-08-31 Compaq Computer Corporation Computer system having an internal cach microprocessor slowdown circuit providing an external address signal
US5012408A (en) * 1990-03-15 1991-04-30 Digital Equipment Corporation Memory array addressing system for computer systems with multiple memory arrays
US5249284A (en) * 1990-06-04 1993-09-28 Ncr Corporation Method and system for maintaining data coherency between main and cache memories
EP0468831B1 (de) * 1990-06-29 1997-10-15 Digital Equipment Corporation Busprotokoll für Prozessor mit write-back cache
US5249283A (en) * 1990-12-24 1993-09-28 Ncr Corporation Cache coherency method and apparatus for a multiple path interconnection network
US5339322A (en) * 1991-03-29 1994-08-16 Sgs-Thomson Microelectronics, Inc. Cache tag parity detect circuit
US5371872A (en) * 1991-10-28 1994-12-06 International Business Machines Corporation Method and apparatus for controlling operation of a cache memory during an interrupt
US5331673A (en) * 1992-03-30 1994-07-19 International Business Machines Corporation Integrity of data objects used to maintain state information for shared data at a local complex
US5821940A (en) * 1992-08-03 1998-10-13 Ball Corporation Computer graphics vertex index cache system for polygons
US5355471A (en) * 1992-08-14 1994-10-11 Pyramid Technology Corporation Multiprocessor cache coherency tester that exercises the coherency logic exhaustively and also detects errors in a processor using an automatic CPU sort
JPH0756815A (ja) * 1993-07-28 1995-03-03 Internatl Business Mach Corp <Ibm> キャッシュ動作方法及びキャッシュ
DE69421379T2 (de) * 1994-03-31 2000-05-11 St Microelectronics Inc Wiederverwendbarer Mehrwegsatz assoziativer Cache-Speicher
GB2302190B (en) * 1994-05-09 1999-01-06 Secr Defence Data cache
US5898856A (en) * 1995-09-15 1999-04-27 Intel Corporation Method and apparatus for automatically detecting a selected cache type
US5893149A (en) * 1996-07-01 1999-04-06 Sun Microsystems, Inc. Flushing of cache memory in a computer system
US6532468B2 (en) * 1997-12-25 2003-03-11 Kawasaki Microelectronics, Inc. Binary data search method for selecting from among candidate data, and apparatus therefor
US6405322B1 (en) * 1999-04-13 2002-06-11 Hewlett-Packard Company System and method for recovery from address errors
US6618048B1 (en) 1999-10-28 2003-09-09 Nintendo Co., Ltd. 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components
US6622267B1 (en) * 1999-12-08 2003-09-16 Intel Corporation Method and apparatus for detecting multi-hit errors in cache
US7119813B1 (en) 2000-06-02 2006-10-10 Nintendo Co., Ltd. Variable bit field encoding
US6825851B1 (en) 2000-08-23 2004-11-30 Nintendo Co., Ltd. Method and apparatus for environment-mapped bump-mapping in a graphics system
US6937245B1 (en) 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer having reconfigurable pixel formats
US7034828B1 (en) 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US6980218B1 (en) 2000-08-23 2005-12-27 Nintendo Co., Ltd. Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system
US7538772B1 (en) 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US7002591B1 (en) 2000-08-23 2006-02-21 Nintendo Co., Ltd. Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
US7061502B1 (en) 2000-08-23 2006-06-13 Nintendo Co., Ltd. Method and apparatus for providing logical combination of N alpha operations within a graphics system
US7576748B2 (en) * 2000-11-28 2009-08-18 Nintendo Co. Ltd. Graphics system with embedded frame butter having reconfigurable pixel formats
US7184059B1 (en) 2000-08-23 2007-02-27 Nintendo Co., Ltd. Graphics system with copy out conversions between embedded frame buffer and main memory
US6867781B1 (en) 2000-08-23 2005-03-15 Nintendo Co., Ltd. Graphics pipeline token synchronization
US6700586B1 (en) 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for a graphics system
US6895520B1 (en) 2001-03-02 2005-05-17 Advanced Micro Devices, Inc. Performance and power optimization via block oriented performance measurement and control
US6898679B2 (en) * 2001-09-28 2005-05-24 Intel Corporation Method and apparatus for reordering memory requests for page coherency
US6901532B2 (en) * 2002-03-28 2005-05-31 Honeywell International Inc. System and method for recovering from radiation induced memory errors
US10866854B2 (en) 2015-12-29 2020-12-15 Arteris, Inc. System and method for reducing ECC overhead and memory access bandwidth
US10877839B2 (en) * 2017-09-22 2020-12-29 Arteris, Inc. Recovery of a coherent system in the presence of an uncorrectable error

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3820078A (en) * 1972-10-05 1974-06-25 Honeywell Inf Systems Multi-level storage system having a buffer store with variable mapping modes
US3979726A (en) * 1974-04-10 1976-09-07 Honeywell Information Systems, Inc. Apparatus for selectively clearing a cache store in a processor having segmentation and paging
JPS5355917A (en) * 1976-10-29 1978-05-20 Nec Corp Buffer memory unit
US4084236A (en) * 1977-02-18 1978-04-11 Honeywell Information Systems Inc. Error detection and correction capability for a memory system
US4471429A (en) * 1979-12-14 1984-09-11 Honeywell Information Systems, Inc. Apparatus for cache clearing
US4322795A (en) * 1980-01-24 1982-03-30 Honeywell Information Systems Inc. Cache memory utilizing selective clearing and least recently used updating
US4464717A (en) * 1982-03-31 1984-08-07 Honeywell Information Systems Inc. Multilevel cache system with graceful degradation capability
US4562536A (en) * 1983-06-30 1985-12-31 Honeywell Information Systems Inc. Directory test error mode control apparatus
US4667288A (en) * 1983-06-30 1987-05-19 Honeywell Information Systems Inc. Enable/disable control checking apparatus
JPS60235262A (ja) * 1984-05-09 1985-11-21 Nec Corp バツフアメモリ障害制御装置
US4695943A (en) * 1984-09-27 1987-09-22 Honeywell Information Systems Inc. Multiprocessor shared pipeline cache memory with split cycle and concurrent utilization
US4768148A (en) * 1986-06-27 1988-08-30 Honeywell Bull Inc. Read in process memory apparatus

Also Published As

Publication number Publication date
DK288488A (da) 1988-11-29
CA1311303C (en) 1992-12-08
NO172267B (no) 1993-03-15
JPS644847A (en) 1989-01-10
YU103388A (en) 1990-12-31
DK288488D0 (da) 1988-05-26
ES2076149T3 (es) 1995-11-01
EP0300166A2 (de) 1989-01-25
US4833601A (en) 1989-05-23
NO882316D0 (no) 1988-05-26
KR920007276B1 (ko) 1992-08-29
JPH0583935B2 (de) 1993-11-30
EP0300166B1 (de) 1995-08-30
CN1031142A (zh) 1989-02-15
NO172267C (no) 1993-06-23
EP0300166A3 (de) 1991-01-09
FI882455A0 (fi) 1988-05-25
AU608848B2 (en) 1991-04-18
CN1012855B (zh) 1991-06-12
KR880014474A (ko) 1988-12-24
FI882455A (fi) 1988-11-29
NO882316L (no) 1988-11-29
DE3854368D1 (de) 1995-10-05
AU1641788A (en) 1988-12-01

Similar Documents

Publication Publication Date Title
DE3854368T2 (de) Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler.
DE3750107T2 (de) Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt.
DE68920435T2 (de) Steuereinheit für den speicher.
DE69221045T2 (de) Verfahren und Gerät zur programmierbaren Speicherssteuerung mit Fehlerregelung und Prüffunktionen
DE3587439T2 (de) Gemeinsam benutzter Mehrprozessor-Pipeline-Cachespeicher.
DE3486299T2 (de) Bus-Arbitrierungssystem.
DE68926036T2 (de) Speicherkonfiguration zur Verwendung für Schnittstellenbildung zwischen einer Systemsteuereinheit für ein Multiprozessorsystem und dem Hauptspeicher
DE68916167T2 (de) Adressenspeichersperrung mit priorität für einen gemeinsamen speicher.
EP0013737B1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE3855031T2 (de) Kopiesystem mit &#34;Hot-standby&#34;-Speicher
DE3687947T2 (de) Schnittstelle und Verfahren für Buszugriff in einem Rechner.
DE69721368T2 (de) Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher
DE68927172T2 (de) Multiprozessorsystem mit cache-speichern
DE112005002180T5 (de) Lösen von Cachekonflikten
DE3689488T2 (de) Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher.
DE69434473T2 (de) Prozessorschnittstellenchip für Doppelmikroprozessorsystem
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE68924313T2 (de) Mehrprozessoranordnungen mit kreuzweise abgefragten Schreib-in-Cachespeichern.
DE69025658T2 (de) Verfahren zur Verbesserung der Leistung eines mehrstufigen Cachespeichers durch erzwungene Fehlgriffe
DE69031411T2 (de) Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff
DE69029995T2 (de) Multiprozessor mit relativ atomaren Befehlen
DE68902193T2 (de) Datenspeicheranordnung.
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE69029173T2 (de) Mikroprozessor
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.

Legal Events

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