DE3750107T2 - Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt. - Google Patents

Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt.

Info

Publication number
DE3750107T2
DE3750107T2 DE3750107T DE3750107T DE3750107T2 DE 3750107 T2 DE3750107 T2 DE 3750107T2 DE 3750107 T DE3750107 T DE 3750107T DE 3750107 T DE3750107 T DE 3750107T DE 3750107 T2 DE3750107 T2 DE 3750107T2
Authority
DE
Germany
Prior art keywords
memory
data
cache
request
address
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
DE3750107T
Other languages
English (en)
Other versions
DE3750107D1 (de
Inventor
George J Barlow
James W Keeley
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 DE3750107D1 publication Critical patent/DE3750107D1/de
Publication of DE3750107T2 publication Critical patent/DE3750107T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory

Landscapes

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

Description

  • Verwandte Patente sind:
  • 1. Das US-Patent 4,695,943 von James W. Keeley und Thomas F. Joyce mit dem Titel "Multiprocessor Shared Pipeline Cache Memory", eingereicht am 27. September 1984, welches dem gleichen Inhaber wie diese Patentanmeldung zugewiesen ist. EP 176,972 ist eine entsprechende Anmeldung.
  • 2. Das US-Patent 4,785,395 von James W. Keeley mit dem Titel "A Coherent Cache System Shared by a Pair of Processing Units", eingereicht am gleichen Tage wie diese Anmeldung, welches dem gleichen Inhaber wie diese Patentanmeldung zugewiesen ist. Es gibt keine entsprechende EP-Anmeldung.
  • Die vorliegende Erfindung bezieht sich auf Cache-Speichersysteme und insbesondere auf Cache-Speichersysteme, die in Multiprozessorsystemen verwendet werden.
  • Es ist gut bekannt, daß Cache-Speicher beim Erhöhen des Durchsatzes von kleinen und großen Monoprozessor- und Multiprozessor-Systemen sehr effektiv gewesen sind. In solchen Systemen sind die Cache häufig in einer sogenannten Privat-Cache-Anordnung konfiguriert, bei der der Cache-Speicher einem einzelnen Prozessor zugeteilt ist.
  • Um den Systemdurchsatz zu erhöhen, haben die Systeme die Anzahl von Verarbeitungseinheiten erhöht, wobei jede einen Cache-Speicher verwendet, welcher seinerseits mit einem Hauptspeicher und den anderen Einheiten des Gesamtsystems über einen asynchronen Systembus verbunden war. In solchen Systemen erzeugen die unabhängig arbeitenden Verarbeitungseinheiten, unsynchronisierte, sich überlappende Anforderungen an den Hauptspeicher. Dies kann die Cache-Kohärenz wesentlich beeinflussen, was die Fähigkeit des Cache ist, dem Inhalt des Hauptspeichers genau und korrekt zu folgen. Das Ergebnis ist, daß Verarbeitungseinheiten gezwungen sein können, mit veralteten Daten zu arbeiten, welche das System schließlich zu einem Halt bringen könnten.
  • Im allgemeinen sind zwei grundsätzliche Herangehensweisen zum Aufrechterhalten der Cache-Kohärenz eingesetzt worden. Die erste, welche als eine Durchschreib-Herangehensweise bezeichnet wird, verwendet eine Horchvorrichtung, welche das Auftreten irgendwelcher Schreiboperationen erfaßt, die an dem Hauptspeicher vorgenommen wurden, und erneuert den Inhalt des Cache. Die zweite Herangehensweise verwendet Schaltungen, welche den Dateninhalt der Cache-Stellen invalidiert, wenn eine andere Systemeinheit in eine Hauptspeicherstelle schreibt, welche auf einen Cache der Verarbeitungseinheit abgebildet worden ist.
  • Beim Einsatz der Durchschreib-Herangehensweise erfaßt ein Cache-System des Standes der Technik, wenn irgendwelche Daten in den Hauptspeicher durch eine andere Einheit gelesen oder geschrieben werden, und zwar vor dem Empfang der angeforderten Daten, welche in einen gegebenen Adreßbereich fallen. Wenn dem so ist, wird der Cache umgangen, und die angeforderten Daten werden an die anfordernde Verarbeitungseinheit übertragen. Während dies eine Cache-Kohärenz gewährleistet, kann der Prozeß des Umgehens des Cache zu einer verminderten Systemeffizienz führen. Dies tritt auf, wenn das System auf Grund der Hinzufügung von mehr und schnelleren Verarbeitungseinheiten belebter wird, was zu einer wesentlichen Verminderung der Cache-Trefferrate führt.
  • Das US-Patent 3,771,137 offenbart ein Multiverarbeitungs-Computersystem, welches eine Vielzahl von Prozessoren aufweist, und zwar jeder mit seinem eigenen Pufferspeicher (Cache), und welche einen Hauptspeicher gemeinsam nutzen. Ein "Durchsage"-System (Horchvorrichtung) stellt jedem Prozessor die Fähigkeit bereit, jeden anderen Prozessor zu befragen, um zu bestimmen, ob sich eine modifizierte, z. B. erneuerte, Version der gewünschten Daten in dem Pufferspeicher eines anderen Prozessors befindet. Wenn festgestellt wird, daß sich in einem Pufferspeicher eine modifizierte Version der Daten befindet, werden sie an den Hauptspeicher übertragen, wo sie die ursprünglichen Daten ersetzen. Dann werden die modifizierten Daten auf den Speicherdatenbus gelegt und an den anfordernden Prozessor übertragen. In diesem System, welches nur einem Puffer erlaubt, eine modifizierte Version irgendeines Datenabschnitts zu enthalten, erhält der anfordernde Prozessor die neuesten Daten, als ob sie vom Hauptspeicher ausgingen.
  • Das US-Patent 3,723,976 ist eine Verbesserung des obigen Systems vom US-Patent 3,771,137, worin zusätzlich im Falle eines Pufferspeicher-Lesefehlers und vor der Durchsageanforderung ein Verzeichnis mit der Adresse der über die Durchsage zu erhaltenden Daten erneuert wird. Die durch die Durchsageanforderung zurückgegebenen Daten werden dann immer zu der zugehörigen Pufferspeicherstelle geleitet. Zwischenzeitliche Lese- und Schreibzugriffe auf solche Stellen sind nicht zugelassen.
  • Die deutsche Offenlegungsschrift DE 34 39 302 offenbart ein Speichersteuersystem, welches eine Vielzahl von Pufferadreßmatrizen (Verzeichnissen) verwendet. Dieses System erlaubt es, eine neue Zugriffsanforderung anzunehmen, welche in dem eigenen Prozessor bei einer Bedingung aufgetreten ist, daß ein Blocktransfer zu dem eigenen Prozessor beendet ist, und daß die erste Pufferadreßmatrix im Zusammenhang mit dem Blocktransfer erneuert ist. Die Adresse, welche zu der Pufferspeicher- Lesefehleranforderung gehört, welche vom Hauptspeicher gemacht ist, wird nicht in die erste Pufferadreßmatrix eingetragen, bis nachdem die angeforderten Daten vom Hauptspeicher empfangen worden sind. Eine Steuervorrichtung (Flip-Flop) wird gesetzt, wenn eine Pufferspeicher- Lesefehleranforderung gemacht ist, welche Vorrichtung, wenn gesetzt, alle nachfolgenden Anforderungen nach einem Zugriff auf den Pufferspeicher sperrt. Es können somit keine Probleme mit inkohärenten Daten angetroffen werden, da jegliche zwischenzeitlichen Lese- und Schreibzugriffe auf den Pufferspeicher gerade gesperrt sind.
  • Keines der Systeme des Standes der Technik geht diese Probleme an und beschäftigt sich mit der Lösung solcher Probleme, die unvermeidbar auftreten, wenn ein Zugriff auf die Cache-Einheit während der Zwischenzeit zwischen der Zeit, wenn die Cache-Einheit eine Lesefehleranforderung ausgibt, und der Zeit, wenn die angeforderten Daten vom Hauptspeicher oder einer anderen Cache-Einheit zurückgegeben werden, zugelassen ist, oder mit dem Verknüpfen solcher Probleme durch die vorherige Zuweisung einer Stelle in der Cache-Einheit, wenn eine solche Anforderung ausgegeben wird.
  • Es ist somit das Ziel dieser Erfindung, ein verbessertes Multiverarbeitungs-Computersystem bereitzustellen, welches Cache-Speichereinheiten und einen gemeinsam genutzten Hauptspeicher aufweist, wodurch die Cache- Kohärenz aufrechterhalten wird, ohne die Systemeffizienz zu vermindern, und zwar ungeachtet unsynchronisierter, überlappender Speicheranforderungen, welche zugelassen sind und während der Zwischenzeit zwischen der Zeit auftreten können, wenn die Cache-Einheit eine Lesefehleranforderung ausgibt, und der Zeit, wenn die angeforderten Daten vom Hauptspeicher oder einer anderen Cache-Einheit zurückgegeben werden.
  • Dieses und andere Ziele werden durch eine Cache-Einheit erreicht, wie sie in Anspruch 1 gekennzeichnet ist, und werden offenkundiger, wenn sie in Verbindung mit der folgenden Beschreibung und der angehängten Zeichnung genommen werden, welche ein bevorzugtes Ausführungsbeispiel der Erfindung zeigen.
  • In dem bevorzugten Ausführungsbeispiel koppelt ein Cache-Speichersubsystem mit einem gemeinsam genutzten Hauptspeicher durch Schnittstellenschaltungen über einen asynchronen Systembus zusammen mit einer Anzahl von Zentralverarbeitungs-Subsystemen, welche ähnliche Schnittstellenschaltungen aufweisen. Das Cache-Speichersubsystem enthält einen Vielschicht-Verzeichnisspeicher und Pufferspeicher-Pipelinestufen, welche von einer Anzahl von Verarbeitungseinheiten gemeinsam genutzt werden können.
  • Eine Einleseprozeß-(RIP)-Speichereinrichtung ist betrieblich einer der Pipelinestufen zugeordnet. Die RIP-Speichereinrichtung ist auf einen vorbestimmten Zustand in Antwort auf eine Leseanforderung von einer Verarbeitungseinheit gesetzt, welche eine Fehlerbedingung erzeugt, die anzeigt, daß die angeforderten Daten sich nicht in der Pufferspeicherstufe befinden. Das Setzen tritt auf, wenn die Horchvorrichtung, welche mit dem Systembus gekoppelt ist, erfaßt, daß das Cache-Speichersubsystem eine Anforderung nach den fehlenden Daten an den Hauptspeicher weitergereicht hat, und diese Speicheranforderung an das Cache-Speichersubsystem übergibt, was zu einer Vorzuweisung von Verzeichnisspeicherraum führt. Wenn dies so gesetzt ist, identifiziert die RIP-Speichereinrichtung die Adresse der Verzeichnisstelle innerhalb einer bestimmten Ebene, welche vorher zugewiesen wurde. Die Horchvorrichtung hält den Inhalt der Pufferspeicherstufe kohärent, indem ihr Inhalt in Antwort auf irgendeine Anforderung erneuert wird, welche an den Systembus durch andere Subsysteme gegeben ist.
  • Vor dem Empfang der angebotenen Daten vom Hauptspeicher arbeitet das Cache-Speichersubsystem, und zwar in Antwort auf das Erfassen, daß die Horchvorrichtung Daten empfangen hat, welche den Pufferspeicher inkohärent machen würden, um eine Steuereinrichtung, welche zum RIP- Speicher gehört, von einem voreingestellten Zustand zu einem unterschiedlichen Zustand zu schalten. Wenn die angeforderten Daten empfangen sind, wird auf den Verzeichnisspeicher zugegriffen, die RIP-Speichereinrichtung wird rückgesetzt, und die letzte Version der angeforderten Daten wird an die anfordernde Verarbeitungseinheit als eine Funktion des Zustands der Steuereinrichtung weitergereicht. Das heißt, wenn die Steuereinrichtung auf einen unterschiedlichen Zustand geschaltet worden ist, bedeutet dies, daß die angeforderten Daten nicht die neuesten Daten sind (z. B. wurden sie durch eine andere Verarbeitungseinheit modifiziert). Daher wird die letzte Version der in dem Pufferspeicher gespeicherten Daten ausgelesen und zu der anfordernden Verarbeitungseinheit transferiert, während die vom Hauptspeicher empfangenen Daten verworfen werden. Wenn jedoch die Steuereinrichtung in einem anfänglich voreingestellten Zustand verbleibt, bedeutet dies, daß die vom Hauptspeicher empfangenen Daten die neuesten Daten sind. Somit werden die angeforderten Daten in den Pufferspeicher geschrieben und zu der anfordernden Verarbeitungseinheit transferiert.
  • Die Anordnung der vorliegenden Erfindung ist in der Lage, Kohärenz aufrechtzuerhalten, ohne die Cache-Effizienz zu vermindern, da angeforderte Hauptspeicherdaten in den Pufferspeicher geschrieben werden, außer wenn sich herausstellt, daß sie veraltet sind (nicht die neuesten). Natürlich wird dabei davon ausgegangen, daß die Daten jene Anforderungen erfüllen, die zum Sicherstellen von Datenintegrität (z. B. Fehlerfreiheit) erforderlich sind.
  • Zusätzlich zum Aufrechterhalten von Kohärenz wird sichergestellt, daß der Betrieb des Cache-Speichersubsystems richtig mit dem asynchronen Betrieb des Systembus synchronisiert ist. Das heißt, die gleiche Speicheranforderung, welche an den Hauptspeicher auf dem Systembus gesendet ist, wird auch an das Cache-Speichersubsystem während des gleichen Zyklus gegeben, was zu einer Vorzuweisung des Verzeichnisspeichers führt. Dies stellt einen zuverlässigen Betrieb innerhalb der Pipelinestufen sicher.
  • Zusätzlich zum Obigen kann die vorliegende Erfindung verwendet werden, um Cache-Kohärenz zwischen einem Paar von Verarbeitungseinheiten aufrechtzuerhalten, welche das Cache-Speichersubsystem gemeinsam nutzen. Unter solchen Umständen gehört ein zweiter Speicher zu einer anderen Pipeline und ist so konditioniert, um die gleiche Information wie der RIP-Speicher zu speichern. Wenn die andere Verarbeitungseinheit eine Speicherleseanforderung für die gleichen Daten macht, blockiert der Zustand des zweiten Speichers das Laden der Datenregister der anderen Verarbeitungseinheit, was eine Fehlerbedingung verursacht. Dies erlaubt der anderen Verarbeitungseinheit, ihre Operationen anzuhalten, bis zu dem Zeitpunkt, bei dem die angeforderten Hauptspeicherdaten bereitgestellt werden können.
  • Ein einzelner Speicher, der zur Verzeichnisstufe gehört, kann verwendet werden, um Kohärenz zwischen Verarbeitungseinheiten aufrechtzuerhalten. Jedoch ist es aus Leistungsfähigkeitsgründen bevorzugt, einen Speicher in jeder Pipelinestufe zu verwenden. Dies eliminiert die Notwendigkeit, Lese-Modifizier-Schreib-Operationen ausführen zu lassen, welche die Zeit einer Pipelinestufe erhöhen würde, um die erforderlichen Operationen auszuführen. Die Anordnung erlaubt auch genügend Zeit, um der Verarbeitungseinheit zu signalisieren, ihre Operationen anzuhalten.
  • 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, welche gemäß der vorliegenden Erfindung konstruiert sind.
  • Fig. 3 zeigt in größerem Detail die Schaltungen der Pipelinestufen von Fig. 2.
  • Fig. 4a und 4b sind Flußdiagramme, die verwendet werden, um den Betrieb der Vorrichtung der vorliegenden Erfindung zu erklären, die in unterschiedlich konfigurierten zentralen Subsystemen verwendet wird.
  • Fig. 1 zeigt ein Multiprozessor-Datenverarbeitungssystem 10, welches eine Vielzahl von Subsystemen 14 bis 30 aufweist, die gemeinsam an einen Systembus 12 koppeln. Die veranschaulichenden Subsysteme enthalten eine Vielzahl von zentralen Subsystemen 14 bis 16, eine Vielzahl von Speichersubsystemen 20 bis 28 und ein peripheres Subsystem 30. Jedes Speichersubsystem ist organisiert, um geradzahlige und ungeradzahlige Speichermodule aufzuweisen. Ein Beispiel einer solchen Anordnung ist in US-Patent Nr. 4,432,055 offenbart.
  • Jedes Subsystem weist einen Schnittstellenbereich auf, welcher die zugehörige Einheit oder die zugehörigen Einheiten befähigt, Anforderungen in der Form von Befehlen, Unterbrechungen, Daten oder Antworten/- Status an eine andere Einheit auf den Systembus 12 auf eine asynchrone Weise zu senden oder zu empfangen. Das heißt, von jedem Schnittstellenbereich kann angenommen werden, daß er Busschnittstellen-Logikschaltungen aufweist, wie sie in dem US-Patent Nr. 3,995,258 mit dem Titel "Data Processing System Having a Data Integrity Technique", erfunden von George J. Barlow, offenbart sind.
  • Die Organisation jedes der zentralen Subsysteme 14 bis 16 ist die gleiche. Fig. 2 zeigt in Blockdiagrammform die Organisation des zentralen Subsystems 14. Das Subsystem 14 weist ein Paar von Zentralverarbeitungseinheit-(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 an einen Systembus 12 über ein erstes FIFO-Subsystem 14-10, von welchem angenommen werden kann, daß es in dem Schnittstellenbereich 14-1 enthalten ist.
  • Wie aus Fig. 2 ersichtlich, sind beide CPU-Subsysteme 14-2 und 14-4 in ihrer Konstruktion identisch. Das heißt, jedes CPU-Subsystem weist eine 32-Bit-Zentralverarbeitungseinheit (CPU) (d. h. CPU's 14-20 und 14- 40) und eine virtuelle Speicherverwaltungseinheit (VMMU) (d. h. VMMU 14-26 und 14-46) zum Übersetzen der virtuellen CPU-Adressen in physische Adressen zur Übergabe an das Cache-Subsystem 14-6 als Teil der Speicheranforderungen auf. Auch weist jedes CPU-Subsystem einen Nur- Lese-Speicher (ROS) und ein 16-Bit-ROS-Datenausgaberegister (RDR) (d. h. ROS 14-25, 14-44 und RDR 14-25, 14-45) auf.
  • Am Beginn jedes Zyklus ist jeder ROS so konditioniert, um ein 16-Bit- Mikroanweisungswort in sein Datenausgabe-(RDR)-Register auszulesen, was den Typ der während des Zyklus auszuführenden Operation (Firmware-Schritt/Box) festlegt. Die Taktschaltungen innerhalb jedes CPU- Subsystems (d. h. Schaltungen 14-22 und 14-42) legen die grundsätzliche Zeit für ihr der Steuerung unterliegendes Subsystem oder das Cache- Subsystem 14-6 fest, wie es hier erklärt ist. Die Elemente jedes CPU- Subsystems können aus standard-integrierten Schaltungschips konstruiert sein.
  • Wie aus Fig. 2 ersichtlich, ist das Cache-Subsystem 14-6 in einen Quellenadreßerzeugungsabschnitt und zwei separate Pipelinestufen organisiert, und zwar jeweils mit ihren eigenen Decodier- und Steuerschaltungen. Der Quellenadreßerzeugungsabschnitt enthält die Blöcke 14-62 und 14-64, welche die Funktionen der Quellenadreßauswahl und des Inkrementierens ausführen. Die erste Pipelinestufe ist eine Adreßstufe und weist die Verzeichnis- und zugehörigen Speicherschaltungen der Blöcke 14-66 bis 14-76 auf, angeordnet wie gezeigt. Diese Stufe führt die Funktionen des Zwischenspeicherns der erzeugten Quellenadresse, des Verzeichnissuchens und des Treffervergleichens auf. Die erste Pipelinestufe stellt eine Ausgabeinformation in der Form einer Ebenennummer und einer Spaltenadresse bereit. Die Operationen der ersten Pipelinestufe werden durch Zeitgabesignale getaktet, welche durch die Zeitgabe- und Steuerschaltungen von Block 14-60 erzeugt werden.
  • Die Information von der ersten Stufe wird unmittelbar an die zweite Pipelinestufe übergeben, wobei die erste Stufe für die nächste Quellenanforderung verfügbar gelassen wird. Die zweite Pipelinestufe ist eine Datenstufe und weist das Datenpuffer und zugehörige 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 mit Daten, die vom FIFO-Subsystem 14-10 empfangen sind, auf. Somit stellt die zweite Pipelinestufe ein 36-Bit-Datenwort zur Übertragung an eines der CPU-Subsysteme bereit. Wiederum werden die Operationen der zweiten Pipelinestufe durch Zeitgabesignale getaktet, welche durch die Zeitgabe- und Steuerschaltungen von Block 14-60 erzeugt sind.
  • Die unterschiedlichen Blöcke der ersten und zweiten Pipelinestufen sind aus standard-integrierten Schaltungen konstruiert, wie z. B. solche, die in "The TTL Data Book, Column 3", Copyrighted 1984, von Texas Instruments Inc. und in "Advanced Micro Devices Programmable Array Logic Handbook", Copyright 1983, von Advanced Micro Devices Inc. beschrieben werden. Zum Beispiel ist die Adreßwählschaltung von Block 14-62 aus zwei Sätzen von sechs 74AS857 Multiplexerchips konstruiert, welche kaskadiert sind, um eine der vier Adressen auszuwählen. Der Swap- Multiplexer von Block 14-92 ist aus dem gleichen Typ von Chips konstruiert. Die Zwischenspeicher der Blöcke 14-68 und 14-72 sind aus 74AS843 D-Typ Zwischenspeicherchips konstruiert. Der Swap-Multiplexer und die Datenregisterschaltungen von Block 14-70 sind aus einem einzelnen, getakteten, programmierbaren Matrixlogikelement konstruiert, wie zum Beispiel als Teilenummer AMPA16R6A, hergestellt von Advanced Micro Devices Inc.
  • Die Verzeichnis- und zugehörigen Speicher 14-74 und 14-76, die im größeren Detail in Fig. 3 gezeigt sind, sind aus 8-Bit-Stück-Cache-Adreßkomparatorschaltungen, welche die Teilenummer TMS2150JL haben, hergestellt von Texas Instruments Incorporated, sowie aus einem 4K · 4- Bit-Speicherchip mit der Teilenummer 1MS1421, hergestellt von INMOS Corporation, konstruiert. Die Adreß- und Datenregister 14-80 bis 14-84 und 14-94 und 14-96 sind aus 9-Bit-Schnittstellen-Flip-Flops mit der Teilenummer SN74AS823 konstruiert, hergestellt von Texas Instruments Inc.
  • Die Pufferspeicher 14-88 und 14-90, die im größeren Detail in Fig. 3 gezeigt sind, sind ebenso aus 4K · 4-Bit-Speicherchips mit der Teilenummer IMS1421, hergestellt von INMOS Corporation, sowie aus einem 4096 · 1 statischen RAM-Chip mit der Teilenummer AM2147, hergestellt von Advanced Micro Devices Inc., konstruiert. Die Adreßinkrementierschaltungen von Block 14-64 sind aus Standard-ALU-Chips, die mit der Teilenummer 74AS181A bezeichnet sind, sowie aus einem programmierbaren Matrixlogikelement mit der Teilenummer 74AmPAL16L8A, hergestellt von Advanced Micro Devices Inc., konstruiert
  • Die ersten und zweiten Ebenen der Befehlsregister und Dekodierschaltungen von Block 14-66 bzw. 14-86 verwenden getaktete, programmierbare Matrixlogikelemente mit den Teilenummern ArnPAL16R4A und Am- PAL16R6A, hergestellt von Advanced Micro Devices Inc. Diese Schaltungen erzeugen die erforderlichen Auswahl-Lese- und Schreib-Steuersignale, wie angezeigt in Fig. 2 (d. h. die Signale SWAPLT+00, SWAPRT+00, P0LDDT-OL, P1LDDT-OL, P0LDDFOR, F1LDDT-OR). Für weitere Details wird auf die Gleichungen im Anhang Bezug genommen.
  • Wie aus Fig. 2 ersichtlich, ist das Cache-Subsystem 14-6 in gerade und ungerade Abschnitte organisiert, welche es erlauben, daß auf zwei Datenworte gleichzeitig in Antwort auf entweder eine geradzahlige oder eine ungeradzahlige Speicheradresse zugegriffen wird. Für weitere Information über diesen Typ von Cache-Adressieranordnung wird auf das US-Patent Nr. 4,378,591 Bezug genommen, welches dem gleichen Inhaber, wie dem hier genannten, zugewiesen ist.
  • Fig. 2 zeigt auch in Blockform das FIFO-Subsystem 14-10, welches die FIFO-Steuer- und Taktschaltungen von Block 14-11 aufweist, welche an ein Ersetzadreßregister 14-12 und an den Systembus 12 koppeln. Das FIFO-Subsystem 14-10 empfängt alle die zwischen irgend zwei Subsystemen auf dem Systembus 12 transferierten Informationen. Wenn die Information zum Erneuern von Daten im Hauptspeicher vorgesehen ist, wird die Information codiert, um eine solche Erneuerungs- oder Ersetzoperation anzuzeigen. Das FIFO-Subsystem 14-10 empfängt auch irgendwelche neuen Daten, die von einer Speicheranforderung resultieren, welche an den Systembus 12 über das Cache-Subsystem 14-6 weitergereicht wird. Sowohl erneuerte als auch neue Daten werden als Anforderungen innerhalb eines Pufferspeichers gespeichert, der innerhalb des Subsystems 14-10 enthalten ist. Die FIFO-Steuerschaltungen dekodieren jede Anforderung und leiten die geeigneten Betriebszyklen ein, welche in einer Adresse, Daten und Befehlen resultieren, die an unterschiedliche Teile des Cache-Subsystems 14-6 gegeben werden, wie es aus Fig. 2 ersichtlich ist. Zum Zwecke der vorliegenden Erfindung kann das FIFO-Subsystem in seiner Konstruktion als herkömmlich angesehen werden und die Form des Typs der FIFO-Schaltungen annehmen, die im US-Patent Nr. 4,195,340 offenbart sind, welches dem gleichen wie dem hier genannten Inhaber zugewiesen ist.
  • Die grundsätzliche Zeitgabe 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 werden im größeren Detail in der ersten verwandten Patentanmeldung beschrieben. Diese Schaltungen enthalten Adreßauswahl-Logikschaltungen, welche 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 enthält auch Pipeline-Taktschaltungen von Block 14-620, welche die unterschiedlichen Typen von Cache-Speicherzyklen festlegen, die den Anfang der Pipeline einleiten können, was zur Erzeugung einer vorbestimmten Sequenz von Signalen in Antwort auf jede Anforderung führt. Das heißt, erste bzw. zweite Signale zeigen eine Cache-Anforderung zur Bedienung durch das Subsystem 14-2 CPU0 und das Subsystem 14-4 CPU1 an, wohingegen andere Signale Cache-Anforderungen zur Bedienung durch das FIFO-Subsystem 14-10 anzeigen.
  • Diese Anforderungen können wie folgt zusammengefaßt werden:
  • 1. CPU0-LESEZYKLUS
  • Ein CPU0-Lesen tritt in Antwort auf eine Cache-Anforderung ein, die durch den ROS 14-24 während eines ersten Zeitschlitz/Intervalls eingeleitet wird, wenn der CPU-Anschluß 0 innerhalb der Schnittstelle 14-1 nicht belegt ist. Die vom CPU0-Subsystem 14-2 gelieferte Adresse wird der ersten Pipelinestufe zugeführt, und das Verzeichnis wird gelesen. Wenn ein Treffer erfaßt ist, welcher anzeigt, daß die angeforderten Daten in dem Datenpuffer gespeichert sind, wird der Puffer gelesen, und die Daten werden in das CPU0-Datenregister getaktet. Wenn ein Fehler bzw. Fehlen erfaßt ist, wird der CPU0-Anschluß belegt gemacht, die Anforderung wird an den Speicher weitergereicht, um die angeforderten Daten zu holen.
  • 2. CPU1-LESEZYKLUS
  • Ein CPU1-Lesen tritt in Antwort auf eine Cache-Anforderung auf, die durch den ROS 14-44 während eines dritten Zeitschlitz/Intervalls eingeleitet wird, wenn der CPU-Anschluß 1 innerhalb der Schnittstelle 14-1 nicht belegt ist.
  • 3. ZWEITHALTIGER BUS-ZYKLUS
  • Ein zweithälftiger Buszyklus tritt in Antwort auf einen ersten Typ einer Cache-Anforderung auf, welche durch das FIFO-Subsystem 14- 10 eingeleitet wird, und zwar nach Daten, die entweder vom Hauptspeicher oder einer I/O-Vorrichtung angefordert sind und die auf dem Systembus 12 während eines ersten oder dritten Zeitschlitz/- 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 Pipelinestufe zuführt, treten diese 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-ERNEUERUNGSZYKLUS
  • Ein Speicherschreib-Erneuerungszyklus tritt in Antwort auf einen zweiten Typ einer Cache-Anforderung auf, die durch das FIFO- Subsystem 14-10 zum Ersetzen oder Erneuern von Daten, die vom Systembus 12 empfangen sind, eingeleitet wird, und zwar nach Bestätigung solcher Daten während eines ersten oder dritten Zeitschlitz/Intervalls, wenn das FIFO-Subsystem 14-10 eine Anforderung gespeichert hat. Das FIFO-Subsystem 14-10 liefert Daten an die erste Pipelinestufe, was zum Lesen des Verzeichnisspeichers führt. Wenn ein Treffer erfaßt ist, werden die Ersatzdaten in den Pufferspeicher geschrieben.
  • 5. FIFO-ZUTEILUNGSZYKLUS
  • Eine FIFO-Zuteilung 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 gemacht, und die Anforderung wird an den Speicher weitergereicht, um die angeforderten Daten zu holen. Nachdem die Speicherleseanforderung quittiert wurde, wird die CPU-Leseanforderung in die FIFO-Subsystemregister geladen und Steuerschaltungen, die in dem Subsystem enthalten sind, leiten eine Anforderung für einen FIFO-Betriebszyklus ein (d. h. Zwangssignal CYFIFO = 1). Signale, welche den Anforderungstyp und die Ebenennummerinformation spezifizieren, werden als Eingaben an das Befehlsregister und die Decodierschaltungen von Block 14-66 angelegt. Diese Signale enthalten FIMREF (Speicherreferenz), FIWRIT (Speicherlesen) und FIDT16- 18/19-21 (Ebenennummer). Die Signale FIMREF und FIWRIT leiten einen FIFO-Zuteilungszyklus ein (d. h. FIALOCYC= 1).
  • Fig. 3 zeigt die Organisation des geraden und ungeraden Verzeichnisspeichers und der Pufferspeicher-Pipelinestufen gemäß der vorliegenden Erfindung. Wie aus Fig. 3 ersichtlich, enthalten die Verzeichnis- und zugehörigen Speicherschaltungen der Blöcke 14-74 und 14-76 jeweils einen Mehrfachebenen-4K · 20-Bit-Verzeichnisspeicher 14-740 und einen 512 · 4-Bit-Prozeßspeicher (SIP) 14-742 für den zweithälftigen Buszyklus.
  • Der Verzeichnisspeicher 14-740 erzeugt in Antwort auf eine Cache-Adresse acht Trefferausgabesignale (HIT0-7), die an die Trefferdecodierschaltungen von Block 14-86 angelegt werden. Der Verzeichnisspeicher 14- 740 wird in Antwort auf Schreibfreigabesignale LVWR0 bis LVWR7 von den Schaltungen 14-66 beschrieben. Der SIP-Speicher 14-742 erzeugt in Antwort auf die Cache-Spaltenadresse vier Ausgabesignale (SIP0-3), die ebenso an die Trefferdekodierschaltungen von Block 14-86 angelegt werden. Der SIP-Speicher 14-742 wird mit der Ebenennummer und den SIP-Bitsignalen als eine Funktion von Eingabedatensignalen SIPDT0-3 und ein Schreibfreigabesignal SIPWRT beschrieben, welches durch die Schaltungen von Block 14-66 erzeugt ist. Für weitere Details, wie diese Signale erzeugt sind, wird auf die Gleichungen im Anhang Bezug genommen.
  • Die Trefferdecodierschaltungen von Block 14-86 enthalten die Trefferdecodierschaltungen von Block 14-860 und die SIP-Trefferdecodierschaltungen von Block 14-862. In dem bevorzugten Ausführungsbeispiel werden separat getaktete PLA-Elemente verwendet, um die Trefferdecodierschaltungen der Blöcke 14-860 und 14-862 zu konstruieren.
  • In Antwort auf die gezeigten Eingabesignale erzeugen die Trefferdecodierschaltungen von Block 14-860 die Trefferebenennummer-Ausgabesignale HIT0-2 und HIT. Diese Signale zeigen die Ebene an, bei der der Treffer aufgetreten ist, sowie die Trefferbedingung, die während eines zweithälftigen Buszyklus oder eines Erneuerungszyklus (d. h. normaler Betrieb) auftritt. Gleichzeitig erzeugen die prioritäts-codierten SIP-Trefferdecodierschaltungen von Block 14-862 ein SIP-Ausgabesignal SIPHIT nach dem Erfassen des Vorhandenseins eines möglichen Kohärenzproblems, da beide Verarbeitungseinheiten die gleichen Daten angefordert haben. Für weitere Details, wie diese Signale erzeugt sind, wird auf die Gleichungen im Anhang Bezug genommen.
  • Die Aufgaben von den Schaltungen der Blöcke 14-860 und 14-682 werden als Eingaben an die Schaltungen der Datenpuffer-Pipelinestufe angelegt, wie gezeigt. Gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung weisen der Datenpuffer und die zugehörigen Speicherschaltungen der Blöcke 14-88 und 14-90 jeweils einen 4K · 16- Bit-Datenpuffer 14-880, einen 4K · 1-Bit-Einieseprozeß-(RIP)-Speicher 14- 882 und ein zugehöriges D-Typ getaktetes Steuer-Flip-Flop 14-884 und ein AND-Gatter 14-886 auf, die alle wie gezeigt verbunden sind. Der RIP-Speicher 14-882 wird als eine Funktion eines Eingabedatensignals RIPDTI und eines Schreibfreigabesignals RIPWRT beschrieben, welche durch die Schaltungen von Block 14-86 erzeugt sind. Für weitere Details, wie diese Signale erzeugt sind, kann auf die Gleichungen im Anhang Bezug genommen werden.
  • Das Datenausgabesignal RIPDAT vom RIP-Speicher 14-882 wird in das Steuer-Flip-Flop 14-884 über das AND-Gatter 14-886 in Antwort auf ein Treffersignal von Block 14-860 während eines Erneuerungszyklus geladen, (d. h. wenn das Signal FIUPDATE eine "Eins" ist). Das Flip-Flop 14-884 wird auf einen binären Nullzustand während eines Zuteilungszyklus voreingestellt (d. h. wenn das Signal FIALOCYCLE eine binäre "Null" ist). Das Ausgabesignal RIPFLP vom Flip-Flop 14-884 wird als eine Eingabe an eine Datenwählschaltung 14-866 angelegt, welche auch im Block 14-86 enthalten ist.
  • Als eine Funktion des Zustands des Signals RIPFLP erzeugt die Datenwählschaltung 14-866 Ausgabefreigabesignale CADREGEN, CADBWEN und CADBEN, welche die Datenregister 14-82 und den Datenpufferspeicher 14-880 selektiv konditionieren, um die Datensignale bereitzustellen, die in eines der CPU-Datenregister 14-94 und 14-96 geladen werden sollen. Für weitere Details, wie diese Signale erzeugt sind, kann auf die Gleichungen im Anhang Bezug genommen werden.
  • Mit Bezug auf die Flußdiagramme der Fig. 4a und 4b wird nun der Betrieb der Vorrichtung der vorliegenden Erfindung, gezeigt in Fig. 3, beschrieben werden. In dem System von Fig. 1 kann jede Verarbeitungseinheit Verarbeitungsanforderungen an den Speicher einieiten. Das Speichersubsystem arbeitet normalerweise, um die Speicheranforderungen in eine Warteschlange einzureihen und um die Anforderungen sequentiell zu verarbeiten. Unter bestimmten Umständen kann eine Verarbeitungseinheit ein Wort oder einen Teil eines Worts von der gleichen Stelle lesen, welche eine andere Verarbeitungseinheit gerade erneuert oder beschreibt. Da die Verarbeitungseinheit die Schreibanforderung an den Systembus 12 anlegen kann, bevor das Speichersubsystem die durch die erste Verarbeitungseinheit angeforderte Information liefert, wird die Information, die tatsächlich an die erste Verarbeitungseinheit geliefert wird, inkohärent sein, d. h. die Information wird eine Mischung aus alter und neuer Information enthalten.
  • Während es möglich sein kann, die Inkohärenz zu vermeiden, indem die Auferlegung von Verriegelungsanweisungen für die Verarbeitungseinheiten, welche gemeinsame Speicherbereiche nutzen, erforderlich gemacht wird, mag dies nicht immer praktisch sein. Es kann auch schwierig sein, Verletzungen zu erfassen und zu verhindern.
  • Die Vorrichtung der vorliegenden Erfindung befähigt nicht nur das Cache-Subsystem, kohärente Daten an ihre zugehörige Verarbeitungseinheit oder ihre zugehörigen Verarbeitungseinheiten bereitzustellen, sondern sie stellt die letzte Version der gerade angeforderten Daten bereit. In dem bevorzugten Ausführungsbeispiel ist die Einleseprozeß-RIP-Speichervorrichtung in sowohl den geraden als auch ungeraden Cache-Abschnitten enthalten, um eine Kohärenz für jedes der zwei 16-Bit-Worte zu gewährleisten. Natürlich kann diese Vorrichtung erweitert werden, um das gleiche Maß von Kohärenz für jedes Byte jedes Wortes zu gewährleisten. Dies kann geschaffen werden, indem die RIP-Speichervorrichtung dupliziert wird.
  • Die Reihenfolge der Operationen, die in Fig. 4a gezeigt sind, veranschaulichen den Betrieb eines Systems, das als eine einzelne Verarbeitungseinheit konfiguriert ist, welche mit dem Systembus 12 über einen einzelnen Cache koppelt. In diesem Fall benötigt Fig. 3 nur einen einzelnen Speicher (entweder SIP-Speicher 14-742 oder RIP-Speicher 14- 882). Aus Leistungsfähigkeitsgründen ist es wünschenswert, den Speicher in der ersten Pipelinestufe aufzunehmen. Es wird bemerkt, daß beide Speicher 14-742 und 14-882 äquivalent sind. Um die Betriebsgeschwindigkeit des RIP-Speichers 14-882 zu erhöhen, ist der Speicher in einen 4K · 1-Bit-Speicher organisiert. Jede der 512 adressierbaren Stellen hat acht dazugehörige Ebenen. Somit werden die Ebenen codiert und ihr Wert durch Zugriff auf den Speicher bestimmt.
  • In dem Fall der Konfiguration mit einzelnen Verarbeitungseinheiten sind der Ausgang SIPHIT von den SIP-Trefferdecodierschaltungen von Block 14-862 als eine Eingabe mit dem AND-Gatter 14-886 anstelle des RIP- DAT-Signals verbunden. Der RIP-Speicher 14-882 ist daher eliminiert.
  • Mit Bezug auf das Flußdiagramm von Fig. 4a wird angenommen, daß die CPU0 mit dem Cache-Subsystem 14-6 koppelt. Wenn die CPU 14-2 das Datenwort 0 anfordert, das an der Stelle A0 des geraden Speichermoduls des Speichersubsystems 20-2 der Figur gespeichert ist, signalisieren die Trefferdecodierschaltungen von Block 14-660 des Cache-Subsystems 14-6 eine Fehlbedingung (d. h. Signal HIT = 0). Dieses Signal veranlaßt den Schnittstellenbereich 14-1, eine Leseanforderung an das Hauptspeichersubsystem 20-2 auszugeben, wobei das an der Stelle A0 gespeicherte Datenwort angefordert wird. Das heißt, die Speicherleseanforderung wird an den Systembus 12 angelegt und wird durch die Schaltungen des Schnittstellenbereichs 20-1 quittiert, nachdem sie durch das Speichersubsystem 20-2 akzeptiert ist.
  • Nach Quittierung wird die gleiche Leseanforderung in das FIFO-Subsystem 14-10 vom Systembus 12 geladen. Auf diese Weise wird die Busanforderung mit der Zeitgabe der Cache-Pipeline synchronisiert. Die Cache-Speicheradresse wird über die Adreßwählschaltung 14-62 an die Adreßzwischenspeicher 14-68/74 angelegt, während bestimmte Befehls- und Datenbits an das Befehlsregister und die Decodierschaltungen von Block 14-66 angelegt werden. Dies tritt immer auf, wenn es eine freie Pipelinestufe gibt und das FIFO-Subsystem 14-10 eine Anforderung für einen FIFO-Zyklus eingeleitet hat (d. h. Signal CYFIFO = 1).
  • Die Befehlsbits, welche den Typ der FIFO-Anforderung spezifizieren, werden durch die Schaltungen von Block 14-66 decodiert. Da die Anforderung eine Speicherleseanforderung ist, sind die Signale FIMREF und FIWRIT binäre "Einsen". Diese Signale zwingen das Signal FIUP- DATE auf eine binäre "EINS", wobei ein FIFO-Zuteilungsbetriebszyklus eingeleitet wird (d. h. Signal FIALOCYC = 1).
  • Wie ersichtlich aus der Fig. 4a nimmt das Cache-Subsystem eine Vorzuteilung des Verzeichnisses vor, indem der Reihenadreßabschnitt der Leseanforderung-Cache-Adresse in die durch die Cache-Spaltenadresse spezifizierte Stelle an der bezeichneten Ebene geschrieben wird. Die Ebene wird bestimmt, indem die Ebenennummerbits FIDT16-18 oder FIDT19-21 vom FIFO-Subsystem 14-10 decodiert werden, was einem entsprechenden Signal der Verzeichnisschreib-Freigabesignal LVWR0 bis LVWR7 auf eine binäre "NULL" zwingt.
  • Zur gleichen Zeit wird der RIP-Speicher 14-742 auf einen vorbestimmten Zustand gesetzt, um anzugeben, daß ein Lesen in der Verarbeitung ist. Das heißt, die Ebenennummer und die Einleseprozeßbits werden in die durch die Cache-Spaltenadresse spezifizierte Stelle in Antwort auf Signale SIPDT0-3 und SIPWRT geschrieben. Zu dieser Zeit stellt das Signal FIALOCYC das RIP-Flip-Flop 14-884 auf einen binären NULL-Zustand ein.
  • Wie aus Fig. 4a ersichtlich, horcht das FIFO-Subsystem 14-11 auf irgendeine Schreibanforderung, welche durch eine andere Verarbeitungseinheit gemacht wird. Der Empfang einer solchen Anforderung veranlaßt das FIFO-Subsystem 14-10, einen Speicherschreiberneuerungszyklus einzuleiten (d. h., es zwingt das Signal FIUPDATE auf eine binäre "EINS"). Auf die gleiche wie oben beschriebene Weise wird die Speicherschreib- Cache-Adresse über Zwischenspeicher 14-68/72 an den Verzeichnisspeicher 14-740 und den Speicher 14-742 von Fig. 3 angelegt.
  • Während jedes Schreiberneuerungszyklus wird auf die Verzeichnis- und zugehörigen Speicherschaltungen durch die Cache-Spaltenadreßsignale COLAD0-8 zugegriffen. Der Verzeichnisspeicher 14-740 arbeitet, um Treffersignale HIT0-7 zu erzeugen, die anzeigen, ob die gerade erneuerten Daten in dem Datenpuffer 14-880 gespeichert sind, und wenn dem so ist, die Ebene in dem Datenpuffer, wo sie gespeichert sind. Zur gleichen Zeit arbeitet der Speicher 14-742, um eine Ebenennummer und RIP-Bitsignale SIP0-3 zu erzeugen, die anzeigen, ob ein Einleseprozeßzustand für diese Spaltenadresse vorliegt.
  • Die Trefferdecodierschaltungen 14-680 arbeiten, um die Signale HIT0-7 in einen 3-Bit-Trefferebenencode umzuwandeln, welcher den Signalen HIT#0-2 entspricht, und zwar zusätzlich zum Erzeugen des Trefferausgabesignals HIT, welches das Auftreten einer Trefferbedingung anzeigt. Die SIP-Trefferdecodierschaltungen 14-862 arbeiten, um die Ebenennummersignale SIP0-2 mit den umgewandelten Signalen HIT#0-2 zu vergleichen, um zu bestimmen, ob die gerade erneuerten Daten ein Kohärenzproblem hervorrufen werden oder nicht. Wenn es eine Übereinstimmung gibt und das RIP-Bitsignal wahr ist, zwingen die Trefferdecodierschaltungen 14-862 das Signal SIPHIT auf eine binäre "EINS", welches das potentielle Kohärenzproblem anzeigt.
  • Wie aus Fig. 4a ersichtlich, verursacht das Auftreten eines Verzeichnistreffers, daß die Schreiberneuerungsdaten, die in das Datenregister 14-82 geladen sind, in den Datenpuffer 14-884 geladen werden, und zwar in Antwort auf Signale CADBWEN und CADBEN (d. h. beide binär "NULL"). Das Datenwort wird in die Stelle geschrieben, die durch die Cache-Spaltenadreßsignale COLAD0-8 und durch die Trefferebenennummersignale HIT#0-2 spezifiziert sind, welche in das Pufferadreßregister 14-80/84 geladen wurden, und zwar in Antwort auf das Taktsignal PIPEOB + OA. Zu dieser Zeit veranlaßt das Auftreten eines RIP-Treffers, daß das RIP-Flip-Flop 14-884 auf eine binäre "EINS" geschaltet wird, und zwar in Antwort auf Signale SIPHIT und FIUPDATE und das Zeitgabesignal PIPEOB-OB.
  • Wenn auf eine binäre "EINS" gesetzt, stellt RIP-Flip-Flop sicher, daß das Cache-Subsystem kohärente Daten an die Verarbeitungseinheit liefert, und zwar ungeachtet der Tatsache, daß das angeforderte Datenwort durch eine andere Verarbeitungseinheit erneuert wurde. Genauer gesagt, wenn das angeforderte Datenwort vom Hauptspeicher während eines zweithälftigen Buszyklus empfangen wird, wird ein weiterer FIFO-Zyklus eingeleitet. Dies führt dazu, daß das angeforderte Datenwort über das SWAPMUX- Datenregister 14-70 an das Datenregister 14-82 transferiert wird.
  • Die Cache-Adreßsignale werden auch an den Verzeichnisspeicher 14-740 angelegt. Da das Verzeichnis zuvor zugeteilt wurde, führt das Lesen des Verzeichnisses zur Erzeugung einer Trefferbedingung durch die Trefferdecodierschaltungen 14-680, wie angezeigt in Fig. 4a. Als nächstes wird der Zustand des RIP-Flip-Flops 14-884 untersucht. Der Zustand des Signals RIPFLP konditioniert den Datenwähler 14-866, um die letzte Version des Datenwortes für den Transfer zur Verarbeitungseinheit auszuwählen. Das heißt, wenn das Signal RIPFLP eine binäre "EINS" wie im vorliegenden Beispiel ist, zeigt dies an, daß ein Erneuerungszyklus an der gleichen Stelle wie die angeforderten Daten vor dem SHBC- Zyklus aufgetreten waren, welcher das angeforderte Datenwort zurückgab. Daher werden die Datenwählschaltungen 14-866 konditioniert, um das zurückgegebene Datenwort, das in dem Datenregister 14-82 gespeichert ist, zu verwerfen und um den Datenpuffer 14-880 zum Auslesen des erneuerten Datenwortes zum CPU-Datenregister 14-94/96 zu befähigen. Dies wird durch die Datenwählschaltung 14-866 erreicht, welche das Signal DREGEN auf eine binäre "EINS" zwingt, wobei das Datenregister 14-82 gesperrt wird, sowie das Signal CADBEN auf eine binäre "NULL" zwingt, wobei der Datenpuffer 14-880 freigegeben wird.
  • Wie aus Fig. 4a ersichtlich, wird, wenn das RIP-Flip-Flop 14-886 nicht auf eine binäre "EINS" gesetzt worden ist, das Datenwort in den Datenpuffer 14-880 geschrieben und zu der CPU0 transferiert. Das heißt, die Datenwählschaltung 14-860 gibt das Datenregister 14-82 frei, um das Datenwort an das CPU-Datenregister 14-94/96 anzulegen (d. h. zwingt das Signal DREGEN auf eine binäre "NULL"), während der Datenpuffer 14- 880 zum Schreiben des Datenwortes in die Stelle A0 auf der spezifizierten Ebene konditioniert wird (d. h. zwingt das Signal CADBWEN auf eine binäre "NULL" und CADBEN auf eine binäre "EINS").
  • Während des SHBC-Zyklus wird das RIP-Bit auch auf eine binäre "NULL" in Antwort auf das Signal SIPWRT rückgesetzt. Zu diesem Zeitpunkt ist das Dateneingangssignal SIPDT3 eine binäre "NULL".
  • Aus dem obigen wird erkannt, daß die Vorrichtung der vorliegenden Erfindung in der Lage ist, sowohl Kohärenz aufrechtzuerhalten als auch eine Verarbeitungseinheit mit der letzten Version eines kohärenten Paares von Datenworten bereitzustellen. Das heißt, die geraden und ungeraden Abschnitte des Cache-Subsystems enthalten die Vorrichtung von Fig. 3 und arbeiten auf die in Fig. 4a veranschaulichte Weise, um den Transfer inkohärenter Datenworte zur CPU 14-2 zu verhindern.
  • Fig. 4b veranschaulicht den Betrieb der vorliegenden Erfindung, wenn sie in einem System verwendet wird, das als ein Cache-Subsystem 14-6 von Fig. 2 konfiguriert ist. Um eine Kohärenz zwischen zwei Verarbeitungseinheiten CPU0 und CPU1 sicherzustellen, welche das Cache-Subsystem gemeinsam nutzen, werden beide Speicher 14-742 und 14-882 in den unterschiedlichen Pipelinestufen verwendet, wie gezeigt in Fig. 3. Die Anordnung gewährleistet Leistungsfähigkeitsvorteile darin, daß die Speicher in jeder Pipelinestufe entweder beschrieben oder gelesen werden (d. h. es sind keine Lese-Modifizier-Schreib-Operationen erforderlich), wodurch Pipeline-Verzögerungen minimiert werden.
  • Wie aus Fig. 4b ersichtlich, wird dort angenommen, daß die CPU0 eine Speicherleseanforderung erzeugt, um das Wort 0 aus der Stelle A0 des Hauptspeichersubsystems 20 zu lesen, was eine Fehlbedingung erzeugt. Auf die gleiche wie oben beschriebene Weise gibt die Schnittstelle 14-1 eine Speicherleseanforderung an das Hauptspeichersubsystem 20 für das Datenwort 0 in der Stelle A0 aus. Die CPU0 signalisiert dem Speichersubsystem 20 auch, daß das Lesen ein Doppelwortlesen ist (d. h. zwingt eine Doppelwort-Busleitung auf einen binären "EINS"-Zustand). Dies veranlaßt, daß das Subsystem 20 Datenworte von den geradzahligen und ungeradzahligen Speichermodulen (d. h. Stellen A0 und A0+1) an die CPU0 liefert.
  • Wie in Fig. 4b gezeigt, wird die Speicherleseanforderung in das FIFO- Subsystem 14-10 geladen und führt zu einer FIFO-Cache-Zyklusanforderung. Wie zuvor diskutiert, wird der Verzeichnisspeicher 14-740 der geraden und ungeraden Cache-Abschnitte zuvor zugeteilt, indem die Leseanforderung-Cache-Reihenadresse in die durch die Cache-Spaltenadresse spezifizierte Stelle A0 auf der bezeichneten Ebene (Xi) geschrieben wird. Zur gleichen Zeit wird auf den SIP-Speicher 14-742 zugegriffen, und die Ebenennummer Xi zusammen mit dem SIP-Bit werden in die Stelle A0 geschrieben, welche durch die Cache-Spaltenadresse spezifiziert ist.
  • Als nächstes wird auf den RIP-Speicher 14-882 der geraden und ungeraden Cache-Abschnitte zugegriffen. Die durch die Cache-Spaltenadreß- Treffernummersignale HIT#0-2 spezifizierte RIP-Bitstelle wird in Antwort auf die Signale RIPDTI und RIPWRT, welche durch die Schaltungen 14- 86 erzeugt sind, auf eine binäre "EINS" gesetzt. Das RIP-Flip-Flop 14- 884 jedes Cache-Abschnitts wird auch auf eine binäre "NULL" auf die zuvor beschriebene Weise gesetzt.
  • Wie aus Fig. 4b ersichtlich, bestimmt das Cache-Subsystem 14-6 in Antwort auf jede Anforderung, ob die Anforderung für ein CPU-Lesen, -Schreiben, -Erneuern oder einen zweithälftigen Buszyklus ist. Angenommen es ist ein CPU-Lesezyklus, wird die Speicherleseanforderung, welche durch die CPU1 erzeugt ist (d. h. CPU0 wartet auf Ergebnisse der Speicherleseanforderung), untersucht, wenn sie an das Cache-Subsystem 20 durch die CPU1 gegeben wird. Das heißt, die Cache-Adresse, welche in die Zwischenspeicher 14-68/72 geladen ist, greift auf den Verzeichnisspeicher 14-740 und den SIP-Speicher 14-742 der geraden und ungeraden Cache-Abschnitte zu. Wenn die CPU1 eines der zuvor durch die CPU0 angeforderten Datenworte anfordert, erzeugt der Verzeichnisspeicher 14- 740 die Ausgabetreffersignale HIT0-7, welche das Auftreten einer Trefferbedingung auf der Ebene Xi anzeigen.
  • Die SIP-Trefferdecodierschaltungen 14-862 arbeiten, um das Signal SI- PHIT auf eine binäre "EINS" zu zwingen, wenn das SIP-Bit eine binäre "EINS" ist und die Trefferausgabesignale HIT0-7 mit den Ebenennummersignalen SIP0-2 übereinstimmen. Das SIPHIT-Signal wird verwendet, um das Vorhandensein eines Kohärenzproblems zwischen der CPU0 und der CPU1 anzuzeigen.
  • Wie in Fig. 4b angezeigt, wird das SIPHIT-Signal verwendet, um das Laden der CPU1-Datenregister mit Daten vom Datenpuffer 14-880 zu blockieren, was eine Fehlbedingung im Schnittstellenbereich 14-1 erzeugt. Dies nimmt effektiv die Anforderung zurück, soweit das Cache-Subsystem 20 betroffen ist. Um die Konstruktion zu vereinfachen, gibt der Schnittstellenbereich 14-1 die Speicheranforderung der CPU1 an das Hauptspeichersubsystem 20 in Antwort auf die Fehlbedingung weiter.
  • In Antwort auf jeden Schreiberneuerungszyklus wird die Speicherschreibanforderung untersucht, wenn sie an das Cache-Subsystem 20 durch das FIFO-Subsystem 14-10 gegeben wird, und zwar nachfolgend dem Empfang einer Quittung vom Systembus 12. Wie oben beschrieben, wird die Cache-Adresse über die Zwischenspeicher 14-68/72 an den Verzeichnisspeicher 14-740 angelegt, und wenn das gerade erneuerte Datenwort das gleiche ist, das durch die CPU0 angefordert wurde, arbeitet die Trefferdecodierschaltung 14-860, um einen Treffer zu erzeugen.
  • Dies führt dazu, daß das erneuerte Datenwort in dem Datenpuffer 14- 880 an der durch die Cache-Spaltenadresse und die Trefferebenensignale HIT#0-2 spezifizierte Stelle geschrieben wird. Zur gleichen Zeit wird auch auf den RIP-Speicher 14-882 zugegriffen. Wenn das RIP-Bit auf eine binäre "EINS" gesetzt worden ist, was signalisiert, daß ein Lesen unter Verarbeitung ist, zwingt dies das Signal RIPDAT auf eine binäre "EINS". Dies veranlaßt, daß das RIP-Flip-Flop 14-884 auf eine binäre "EINS" geschaltet wird, und zwar in Antwort auf die Signale HIT, FIUP- DATE und PIPEOB-OB, wie gezeigt in Fig. 4b.
  • Wenn das Hauptspeichersubsystem 20 seine Verarbeitung der CPUO- Speicherleseanforderung vervollständigt, arbeitet es, um die Datenworte 0 und 1 auf den Systembus 12 während eines zweithälftigen Buszyklus zurückzugeben. Wie aus Fig. 4b ersichtlich, wird ein SHBC-Zyklus eingeleitet, währenddessen die zurückgegeben Datenworte zusammen mit der Cache-Adresse an das Cache-Subsystem 20 durch das FIFO-Subsystem 14-10 gegeben werden.
  • Wie oben beschrieben, wird die Cache-Adresse an den Verzeichnisspeicher 14-740 angelegt, was dazu führt, daß die Trefferdecodierschaltungen 14-860 einen Treffer erzeugen. Es wird auch auf den SIP-Speicher 14- 742 zugegriffen, und das SIP-Bit wird auf eine binäre "NULL" in Antwort auf das Signal SIPWWRT rückgesetzt.
  • Wie aus Fig. 4b ersichtlich, bestimmt der Zustand des RIP-Flip-Flops 14- 884, ob der Datenpuffer 14-880 oder das Datenregister 14-82 die letzte Version der angeforderten Datenworte enthält. Wenn auf eine binäre "EINS" gesetzt, konditioniert das Signal RIPFLP die Datenwählschaltung 14-866, um den Transfer der SHBC-Daten vom Register 14-82 zu verhindern. Es gibt auch das erneute Lesen des Cache-Datenpuffers 14-880 frei, indem das Signal CADBEN auf eine binäre "NULL" gesetzt wird, sowie die Auslieferung der erneuerten Datenworte an die CPU0-Datenregister.
  • Wenn das RIP-Flip-Flop 14-884 eine binäre "NULL" ist, zeigt dies an, daß die angeforderten Datenworte nicht erneuert worden sind. Daher werden die SHBC-Datenworte, die im Register 14-82 gespeichert sind, in den Datenpuffer 14-880 geschrieben und an die CPU0-Datenregister geliefert. Wie aus Fig. 4b ersichtlich, wird während des SHBC-Zyklus das RIP-Bit, auf das vom RIP-Speicher 14-882 zugegriffen wird, auf eine binäre "NULL" in Antwort auf die Signale RIPDTI und RIPWRT rückgesetzt. Da dies kein Zuteilungszyklus ist, ist das Signal RIPDTI eine binäre "NULL".
  • Aus dem obigen ist ersichtlich, wie die Vorrichtung der vorliegenden Erfindung gewährleistet, daß jede Verarbeitungseinheit innerhalb des Systems oder in dem Fall eines gemeinsam genutzten Cache, jedes Paar von Verarbeitungseinheiten innerhalb des Systems kohärente Daten und die letzte Version solcher kohärenter Daten empfängt, und zwar trotz unsynchronisierter, sich überlappender Speicheranforderungen, die erlaubt sind und während der Zwischenzeit zwischen der Zeit, wenn die Cache- Einheit eine Lesefehleranforderung ausgibt, und der Zeit, wenn die angeforderten Daten vom Hauptspeicher oder einer anderen Cache- Einheit zurückgegeben werden, auftreten können. Dies wird erreicht durch die Hinzufügung weniger Einheiten und/oder Schaltungen, wie sie im Anspruch gekennzeichnet sind, und zwar innerhalb einer oder mehrerer der Pipelinestufen des Cache-Subsystems. Aus Leistungsfähigkeitsgründen sind Speicherschaltungen in jeder Pipelinestufe des gemeinsam genutzten Cache-Subsystems enthalten.
  • ANHANG
  • Die Gleichungen zum Erzeugen der Signale der Fig. 2 und 3 sind durch die folgenden Boole'schen Ausdrücke gegeben:
  • * Diese Signale werden mit Signal PIPE0B + 0A getaktet.
  • BESCHREIBUNG DER GLEICHUNGSAUSDRÜCKE
  • 1. DBWDRD = Doppelwort-Lesebefehl (Double word read command), festgelegt durch ROS-Datenbit 4 = 1 und ROS-Datenbit 5 = 0, welche durch die Decodierschaltungen von Block 14-66 erzeugt sind, welcher mit dem Signal PIPE0A+ 0A getaktet ist.
  • 2. CPUNUM = CPU-Nummer-(CPU0 oder CPU1)-Signal, welches durch die Schaltungen von Block 14-66 erzeugt ist, welcher mit dem Signal PIPE0A+ 0A getaktet ist.
  • 3. CPUCYL = CPU-Zyklussignal, welches 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 erzeugt ist, zugehörig zum geradzahligen Verzeichnisspeicher 14-76.
  • 5. CMAD22 = Cache-Speicheradreßbit 22, welches am Ausgang des Wählers 14-62 erzeugt ist.
  • 6. CMAD22 = Cache-Speicheradreßbit 23, welches am Ausgang des Wählers 14-62 erzeugt ist, spezifiziert, welche Hälfte (linke oder rechte) des Datenregisters 14-94 oder 14-96 mit einem Datenwort geladen werden soll.
  • 7. FIAD17 = FIFO-Adreßbit 17 vom FIFO-Subsystem 14-10 legt fest, welche CPU die Ersatzdaten empfangen soll.
  • 8. FIDBWD = FIFO-Doppelbreitwortbefehl-Bit vom FIFO-Subsystem 14-11 spezifiziert, wenn die gerade zurückgegebenen Daten zwei Worte aufweisen.
  • 9. FISHBA = zweithälftiges Buszyklus-Quittungssignal des FIFO (FIFO second half bus cycle acknowledge signal) von 14-11 spezifiziert, daß das FIFO-Subsystem einen Cache-Zyklus erfordert, um Daten zu verarbeiten, die von einer I/O-Vorrichtung oder einem Speicher während eines zweithälftigen Buszyklus SHBC empfangen sind.
  • 10. ODDHIT = HIT-Signal, welches durch die Trefferdecodierschaltungen 14-680 erzeugt ist, zugehörig zum ungeraden Verzeichnisspeicher 14-74.
  • 11. RPMREF = Speicherreferenzsignal, welches durch RAR 14-12 bereitgestellt ist, welches irgendwelche Ausnahmebedingungen, die berücksichtigt werden sollen, erlaubt.
  • 12. RPAD22 = Ersatzadreßbit 22 von RAR 14-12.
  • 13. FIDT16-18/19-21 = die geraden/ungeraden Datenbits, welche die Cache-Ebene definieren, die durch das FIFO-Subsystem 14-10 bereitgestellt ist.
  • 14. CYFIFO = ein Zyklussignal, welches durch die FIFO-Zykluswahl- Logikschaltungen vom Block 14-60 während einer freien Pipelinestufe erzeugt ist.
  • 15. FISHBC = das zweithältige Buszyklussignal vom FIFO-Subsystem 14- 10.
  • 16. WRTPLS = das Schreibimpulssignal, welches durch die Schaltungen von Block 14-60 erzeugt ist, welches auf halbem Wege zwischen entweder den Taktsignalen PIPE0A+0A und PIPE0A+0B oder den Taktsignalen PIPE0B + 0A und PIPE0B + OB auftritt.
  • 17. FIMREF = das Busspeicherreferenzsignal BSMREF vom FIFO- Subsystem 14-10.
  • 18. FIWRIT = das Busspeicherschreibsignal BSWRIT vom FIFO-Subsystem 14-10.
  • Es wird anerkannt werden, daß viele Änderungen am oben beschriebenen Ausführungsbeispiel der Erfindung gemacht werden können. Wie erwähnt wird nur ein einzelner Speicher zugehörig zur Verzeichnisspeicherstufe im Falle einer einzelnen Verarbeitungseinheit gebraucht. Wenn es mehr als eine Verarbeitungseinheit gibt, welche das Cache-Subsystem gemeinsam nutzen, wird ein Speicher zum Erfassen einer Inkohärenz zwischen den Verarbeitungseinheiten verwendet, während der zweite Speicher verwendet wird, um einen Einleseprozeßzustand anzuzeigen, der für eine verbesserte Leistungsfähigkeit aufgenommen ist. Jedoch kann es noch möglich sein, beide innerhalb eines einzelnen Speichers zu kombinieren sowie die Funktion des RIP-Steuer-Flip-Flops mit begleitender Verminderung der Pipelinestufengeschwindigkeit zu kombinieren.

Claims (1)

  1. Cache-Einheit (14, 6) zum Bereitstellen an einen Prozessor, der Daten anfordert, nur die aktuellste Version der angeforderten Daten; wobei die Cache-Einheit in einem Datenverarbeitungssystem arbeitet, das eine Vielzahl von Prozessoren (14-2, 14-4) aufweist, die an einen Systembus (12) zur Kommunikation mit einem Hauptspeicher (20) gekoppelt sind, wobei zumindest einer der Prozessoren gekoppelt ist, um Daten von der Cache-Einheit anzufordern und zu empfangen, indem eine Hauptspeicher-Anforderungsadresse mit einem ersten Teil (ROW) und einem zweiten Teil (COM) geliefert wird, und wobei die Cache-Einheit einen adressierbaren Datenspeicher (14-880) zum Halten einer Dateneinheit in jeder adressierbaren Speicherstelle und einen Verzeichnisspeicher (14-740) zum Halten eines ersten Adreßteils in jeder Steile aufweist, wobei auf den Datenspeicher und den Verzeichnisspeicher durch den zweiten Adreßteil zugegriffen wird; wobei die Cache-Einheit gekennzeichnet ist durch:
    einen zusätzlichen Speicher (14-742, 14-882), wobei der Speicher ein Bit (SIP) für jede zugreifbare Stelle des Daten- und Verzeichnisspeichers hält: wobei auf den zusätzlichen Speicher durch den zweiten Adreßteil zugegriffen wird;
    - eine erste Steuereinheit (14-66, 14-86), die mit dem Datenspeicher, dem Verzeichnisspeicher und dem zusätzlichen Speicher gekoppelt ist und auf jede Daten-Lese-Anforderung, die von dem einen Prozessor empfangen ist, für nicht in dem Datenspeicher gefundene Daten anspricht, zum Ausgeben einer Anforderung für diese Daten an den Hauptspeicher und zum Ausführen eines Vor-Zuweisungszyklus durch
    (i) Eintragen des ersten Adreßteils der Anforderungsadresse in den Verzeichnisspeicher in die Stelle des Verzeichnisspeichers, auf die durch den zweiten Adreßteil der Anforderungsadresse zugegriffen wird, und
    (ii) Setzen, und zwar auf einen vorbestimmten Zustand, des Bits in dem zusätzlichen Speicher in der Stelle des zusätzlichen Speichers, auf den durch den zweiten Adreßteil der Anforderungsadresse zugegriffen wird;
    - ein Flip-Flop (14-884);
    - eine Steuerschaltung (14-862, 14-886), die an den zusätzlichen Speicher und an den Datenspeicher gekoppelt ist, um das Flip-Flop (14- 884) zu veranlassen, in einem von dessen Zuständen zu arbeiten, wenn der Inhalt einer Stelle in dem Datenspeicher in Antwort auf eine Schreibanforderung von einem anderen Prozessor erneuert wird und wenn der vorbestimmte Zustand des entsprechenden Bits in dem zusätzlichen Speicher anzeigt, daß die Stelle noch vor-zugewiesen ist; und
    - eine zweite Steuereinheit (14-866), die an das Flip-Flop (14-884) und den Datenspeicher (14-880) gekoppelt ist und anspricht auf:
    (i) den einen Betriebszustand des Flip-Flops, um das Liefern einer Dateneinheit zu verhindern, die als eine Folge der Anforderung an den Hauptspeicher (20) zurückgegeben wird, dabei jedoch den Datenspeicher veranlassend, die Dateneinheit zu liefern, die darin durch die Steuerschaltung (14-862, 14-886) eingetragen ist; oder
    (ii) den anderen Betriebszustand des Flip-Flops, die Auslieferung der zurückgegebenen Dateneinheit zu veranlassen.
DE3750107T 1986-06-27 1987-06-26 Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt. Expired - Fee Related DE3750107T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/879,856 US4768148A (en) 1986-06-27 1986-06-27 Read in process memory apparatus

Publications (2)

Publication Number Publication Date
DE3750107D1 DE3750107D1 (de) 1994-07-28
DE3750107T2 true DE3750107T2 (de) 1995-02-23

Family

ID=25375022

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3750107T Expired - Fee Related DE3750107T2 (de) 1986-06-27 1987-06-26 Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt.

Country Status (6)

Country Link
US (1) US4768148A (de)
EP (1) EP0258559B1 (de)
KR (2) KR920010916B1 (de)
AU (1) AU599671B2 (de)
CA (1) CA1284389C (de)
DE (1) DE3750107T2 (de)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0668735B2 (ja) * 1987-02-09 1994-08-31 日本電気アイシーマイコンシステム株式会社 キヤツシユメモリ−
US4833601A (en) * 1987-05-28 1989-05-23 Bull Hn Information Systems Inc. Cache resiliency in processing a variety of address faults
US5291581A (en) * 1987-07-01 1994-03-01 Digital Equipment Corporation Apparatus and method for synchronization of access to main memory signal groups in a multiprocessor data processing system
US4935849A (en) * 1988-05-16 1990-06-19 Stardent Computer, Inc. Chaining and hazard apparatus and method
US4969117A (en) * 1988-05-16 1990-11-06 Ardent Computer Corporation Chaining and hazard apparatus and method
EP0349123B1 (de) * 1988-06-27 1995-09-20 Digital Equipment Corporation Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern
US5101497A (en) * 1988-09-09 1992-03-31 Compaq Computer Corporation Programmable interrupt controller
US5163142A (en) * 1988-10-28 1992-11-10 Hewlett-Packard Company Efficient cache write technique through deferred tag modification
US4980819A (en) * 1988-12-19 1990-12-25 Bull Hn Information Systems Inc. Mechanism for automatically updating multiple unit register file memories in successive cycles for a pipelined processing system
US5125083A (en) * 1989-02-03 1992-06-23 Digital Equipment Corporation Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system
US5222224A (en) * 1989-02-03 1993-06-22 Digital Equipment Corporation Scheme for insuring data consistency between a plurality of cache memories and the main memory in a multi-processor system
JPH0740247B2 (ja) * 1989-06-20 1995-05-01 松下電器産業株式会社 キャッシュメモリ装置
CA2066454C (en) * 1989-09-11 1998-08-25 Bhikoo J. Patel Apparatus and method for maintaining cache/main memory consistency
US5012408A (en) * 1990-03-15 1991-04-30 Digital Equipment Corporation Memory array addressing system for computer systems with multiple memory arrays
JP2822588B2 (ja) * 1990-04-30 1998-11-11 日本電気株式会社 キャッシュメモリ装置
US5611070A (en) * 1990-05-10 1997-03-11 Heidelberger; Philip Methods and apparatus for performing a write/load cache protocol
US5249284A (en) * 1990-06-04 1993-09-28 Ncr Corporation Method and system for maintaining data coherency between main and cache memories
US5195101A (en) * 1990-06-28 1993-03-16 Bull Hn Information Systems Inc. Efficient error detection in a vlsi central processing unit
US5404483A (en) * 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for delaying the processing of cache coherency transactions during outstanding cache fills
US5404482A (en) * 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
US5276835A (en) * 1990-12-14 1994-01-04 International Business Machines Corporation Non-blocking serialization for caching data in a shared cache
US5313609A (en) * 1991-05-23 1994-05-17 International Business Machines Corporation Optimum write-back strategy for directory-based cache coherence protocols
US5353426A (en) * 1992-04-29 1994-10-04 Sun Microsystems, Inc. Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete
US5821940A (en) * 1992-08-03 1998-10-13 Ball Corporation Computer graphics vertex index cache system for polygons
US5598551A (en) * 1993-07-16 1997-01-28 Unisys Corporation Cache invalidation sequence system utilizing odd and even invalidation queues with shorter invalidation cycles
US5530933A (en) * 1994-02-24 1996-06-25 Hewlett-Packard Company Multiprocessor system for maintaining cache coherency by checking the coherency in the order of the transactions being issued on the bus
US6076150A (en) * 1995-08-10 2000-06-13 Lsi Logic Corporation Cache controller with improved instruction and data forwarding during refill operation
US6061755A (en) * 1997-04-14 2000-05-09 International Business Machines Corporation Method of layering cache and architectural specific functions to promote operation symmetry
US6032226A (en) * 1997-04-14 2000-02-29 International Business Machines Corporation Method and apparatus for layering cache and architectural specific functions to expedite multiple design
US5937172A (en) * 1997-04-14 1999-08-10 International Business Machines Corporation Apparatus and method of layering cache and architectural specific functions to permit generic interface definition
US6061762A (en) * 1997-04-14 2000-05-09 International Business Machines Corporation Apparatus and method for separately layering cache and architectural specific functions in different operational controllers
US6134632A (en) * 1998-01-26 2000-10-17 Intel Corporation Controller that supports data merging utilizing a slice addressable memory array
US6212616B1 (en) * 1998-03-23 2001-04-03 International Business Machines Corporation Even/odd cache directory mechanism
US6519682B2 (en) * 1998-12-04 2003-02-11 Stmicroelectronics, Inc. Pipelined non-blocking level two cache system with inherent transaction collision-avoidance
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
US7119813B1 (en) 2000-06-02 2006-10-10 Nintendo Co., Ltd. Variable bit field encoding
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
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for a graphics system
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
US6867781B1 (en) 2000-08-23 2005-03-15 Nintendo Co., Ltd. Graphics pipeline token synchronization
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
US7538772B1 (en) 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
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
US6937245B1 (en) 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer 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
US6700586B1 (en) 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
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
US7576748B2 (en) 2000-11-28 2009-08-18 Nintendo Co. Ltd. Graphics system with embedded frame butter having reconfigurable pixel formats
US7034828B1 (en) 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US6825851B1 (en) 2000-08-23 2004-11-30 Nintendo Co., Ltd. Method and apparatus for environment-mapped bump-mapping in a graphics system
KR100872414B1 (ko) * 2007-08-07 2008-12-08 정근석 온수순환장치
US9658968B1 (en) * 2015-11-09 2017-05-23 International Business Machines Corporation Implementing hardware accelerator for storage write cache management

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3771137A (en) * 1971-09-10 1973-11-06 Ibm Memory control in a multipurpose system utilizing a broadcast
US3723976A (en) * 1972-01-20 1973-03-27 Ibm Memory system with logical and real addressing
US4084234A (en) * 1977-02-17 1978-04-11 Honeywell Information Systems Inc. Cache write capacity
US4156906A (en) * 1977-11-22 1979-05-29 Honeywell Information Systems Inc. Buffer store including control apparatus which facilitates the concurrent processing of a plurality of commands
US4161024A (en) * 1977-12-22 1979-07-10 Honeywell Information Systems Inc. Private cache-to-CPU interface in a bus oriented data processing system
US4245304A (en) * 1978-12-11 1981-01-13 Honeywell Information Systems Inc. Cache arrangement utilizing a split cycle mode of operation
US4314331A (en) * 1978-12-11 1982-02-02 Honeywell Information Systems Inc. Cache unit information replacement apparatus
US4349874A (en) * 1980-04-15 1982-09-14 Honeywell Information Systems Inc. Buffer system for supply procedure words to a central processor unit
US4415970A (en) * 1980-11-14 1983-11-15 Sperry Corporation Cache/disk subsystem with load equalization
US4445174A (en) * 1981-03-31 1984-04-24 International Business Machines Corporation Multiprocessing system including a shared cache
JPS58102381A (ja) * 1981-12-15 1983-06-17 Nec Corp バツフアメモリ
US4494190A (en) * 1982-05-12 1985-01-15 Honeywell Information Systems Inc. FIFO buffer to cache memory
US4472774A (en) * 1982-09-27 1984-09-18 Data General Corp. Encachement apparatus
JPS6093563A (ja) * 1983-10-27 1985-05-25 Hitachi Ltd バツフア記憶制御方式
DE3581556D1 (de) * 1984-04-27 1991-03-07 Bull Hn Information Syst Steuerungsgeraet in einem digitalen computer.
CA1241768A (en) * 1984-06-22 1988-09-06 Miyuki Ishida Tag control circuit for buffer storage
US4695943A (en) * 1984-09-27 1987-09-22 Honeywell Information Systems Inc. Multiprocessor shared pipeline cache memory with split cycle and concurrent utilization

Also Published As

Publication number Publication date
KR880000858A (ko) 1988-03-30
KR920010916B1 (ko) 1992-12-24
KR880000861A (ko) 1988-03-30
DE3750107D1 (de) 1994-07-28
AU599671B2 (en) 1990-07-26
EP0258559A2 (de) 1988-03-09
CA1284389C (en) 1991-05-21
EP0258559B1 (de) 1994-06-22
US4768148A (en) 1988-08-30
AU7478687A (en) 1988-01-07
EP0258559A3 (en) 1990-05-23
KR920008430B1 (ko) 1992-09-28

Similar Documents

Publication Publication Date Title
DE3750107T2 (de) Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt.
DE3854368T2 (de) Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler.
DE3587439T2 (de) Gemeinsam benutzter Mehrprozessor-Pipeline-Cachespeicher.
DE3689488T2 (de) Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher.
DE3782335T2 (de) Speichersteuersystem.
DE3688192T2 (de) Seitenorganisierter cachespeicher mit virtueller adressierung.
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE3689042T2 (de) Gerät zur Pufferung von Schreibanforderungen.
DE3687947T2 (de) Schnittstelle und Verfahren für Buszugriff in einem Rechner.
DE3486161T2 (de) Datenverarbeitungssystem mit Datenkohärenz.
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE68926036T2 (de) Speicherkonfiguration zur Verwendung für Schnittstellenbildung zwischen einer Systemsteuereinheit für ein Multiprozessorsystem und dem Hauptspeicher
DE68902193T2 (de) Datenspeicheranordnung.
DE69031411T2 (de) Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69128107T2 (de) Busanordnung für Speicherzugriff
DE69203842T2 (de) Speichersteuerungsvorrichtung mit Snoop-Mechanismus.
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE69029173T2 (de) Mikroprozessor
DE68924313T2 (de) Mehrprozessoranordnungen mit kreuzweise abgefragten Schreib-in-Cachespeichern.
DE112005002180T5 (de) Lösen von Cachekonflikten
DE69109803T2 (de) Verfahren und Vorrichtung zur Aufrechterhaltung der Integrität eines Cachespeichers.
DE2241257B2 (de) Datenverarbeitende Anlage
DE68928343T2 (de) Schreib-Lese/Schreib-Weitergabe-Speichersubsystemzyklus
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: BULL HN INFORMATION SYSTEMS INC., BILLERICA, MASS.

8339 Ceased/non-payment of the annual fee