DE3873388T2 - Cache-speicher. - Google Patents

Cache-speicher.

Info

Publication number
DE3873388T2
DE3873388T2 DE8888102093T DE3873388T DE3873388T2 DE 3873388 T2 DE3873388 T2 DE 3873388T2 DE 8888102093 T DE8888102093 T DE 8888102093T DE 3873388 T DE3873388 T DE 3873388T DE 3873388 T2 DE3873388 T2 DE 3873388T2
Authority
DE
Germany
Prior art keywords
cache
plat
memory
partition
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
DE8888102093T
Other languages
English (en)
Other versions
DE3873388D1 (de
Inventor
James Gerald Brenza
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE3873388D1 publication Critical patent/DE3873388D1/de
Application granted granted Critical
Publication of DE3873388T2 publication Critical patent/DE3873388T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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

Landscapes

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

Description

  • Die vorliegende Erfindung bezieht sich auf einen Cache-Speicher nach dem Oberbegriff des Anspruchs 1.
  • Einer der wichtigsten Faktoren bei der Leistungsfähigkeit eines intelligenten Hochgeschwindigkeitsrechners ist die Leistungsfähigkeit des zugehörigen Speichersystems. Es wird jetzt allgemein angenommen, daß ein solches Computersystem die Verwendung eines Cache-Speichers zur Erleichterung der Handhabung der Eingangs- und Ausgangsinformation enthalten wird. Es ist bekannt, daß die gesamte Leistungsfähigkeit des Computersystems um so größer ist, je größer die Kapazität und je höher die Betriebsgeschwindigkeit des Cache-Speichers ist.
  • Der Stand der Technik zeigt verschiedene Anstrengungen zur Verbesserung der Leistungsfähigkeit von Cache-Speichern. Zu diesen Anstrengungen gehört die Verwendung mehrerer Cache-Speicher in verschiedenen organisatorischen Beziehungen. Beispielsweise ist die Verwendung separater Cache-Speicher für Befehle und für Daten bekannt. Andere Cache-Entwürfe nutzen zwei Caches parallel zueinander in einem Gerade-Ungerade-Verzahnungs-Entwurf, so daß die Speicherzugriffszeit für Information aus dem Cache für eine Datenfolge verbessert wird. Andere Cache-Entwürfe nutzen Caches unterschiedlicher Größe in einer hierarchischen Anordnung. Einige dieser Cache-Entwürfe sind zur Benutzung mit mehr als einem Verarbeitungselement oder mehr als einer Ausführungseinheit vorgesehen, so daß mehrere unterschiedliche Cache-Zugriffe in einem kurzen Zeitintervall initiiert werden können.
  • Eine der für diese Entwürfe nach dem Stand der Technik typischen Schwierigkeiten ist die, daß, wenn ein Cache-Aufruf erfolgt, der Cache eine Suche ausführen muß, um festzustellen, ob die Information verfügbar ist. Wenn der Cache-Zugriff erfolgreich ist, wird die Information an die anfordernde Einheit geliefert. Wenn die Information nicht verfügbar ist, folgt eine Cache-Ausfallroutine, die die benötigte Information von einem anderen Speicherniveau aufruft, während die anfordernde Einheit entweder wartet oder etwas anderes tut. In den meisten Cache-Entwürfen gibt es einen signifikanten Zeitverlust, wenn ein Cache-Ausfall vorkommt, und der Entwurf wird derart optimiert, daß Cache-Ausfälle selten sind.
  • Beim Stand der Technik hat eine Multiprozessor-Umgebung typischerweise einen separaten Cache-Speicher für jeden Prozessor. Es ist jedoch teuer und ineffizient, einen unabhängigen Cache für jeden Prozessor vorzusehen, wenn ein gemeinsamer Hauptspeicher verwendet wird. Außerdem ist, wenn mehr als ein Prozessor dieselbe Information nutzen muß, die Handhabung von mehreren Informationskopien in unterschiedlichen Caches schwierig und komplex. Beim Stand der Technik wird jedoch dem Handhaben mehrerer gemeinsamer und/oder unabhängiger Caches in einer Multiprozessor-Umgebung im Vergleich zur Komplexität oder Ineffizienz der Handhabung eines einzelnen Caches in einer Mehrprozessor-Umgebung der Vorzug gegeben. Dies zeigt sich beim folgenden Stand der Technik:
  • Die US-Patentschrift 4,169,284 mit dem Titel "Cache Control For Concurrent Access", auf den Inhaber der vorliegenden Erfindung übertragen, zeigt eine Cache-Speichersteuerung, die zwei Cache- Zugriffs-Zeitfolgezyklen während jedes Prozessor-Speicheraufrufzyklus bereitstellt. Obwohl dieser Cache mehr als einen Zugriff pro Zyklus erlaubt, stellt er einen zeitverzahnten Cache und keinen Cache mit wirklich simultanem Zugriff dar.
  • Die US-Patentschrift 4,371,929 mit dem Titel "Multiprocessor System with High Density Memory Set Architecture Including Partitionable Cache Store Interface To Shared Disk Drive Memory", auf den Inhaber der vorliegenden Erfindung übertragen, zeigt einen Cache-Speicher mit Speicherbereichen, die auf einer zeitverzahnten Grundlage arbeiten.
  • Die US-Patentschrift 4,441,155 mit dem Titel "Page Controlled Cache Directory Addressing", auf den Inhaber der vorliegenden Erfindung übertragen, zeigt ein Cache-Addressiersteuersystem zur Verringerung der Cache-Ausfallrate.
  • Die US-Patentschrift 4,442,487 mit dem Titel "Three Level Memory Hierarchy Using Write And Share Flags", auf den Inhaber der vorliegenden Erfindung übertragen, zeigt unterschiedliche Niveaus von Caches und in individuelle und gemeinsame Cache-Systeme getrennte Caches. Die individuellen und gemeinsamen Cache-Systeme sind in erster Linie getrennte Caches mit Umschaltmechanismen zwischen ihnen und nicht etwa getrennte Abschnitte desselben Cache. Dieser Entwurf hat die Absicht, Multiprozessorsystemen eine gemeinsame Nutzung einer Speichermöglichkeit ohne Queranfrage-Anforderungen zu erlauben, die anderenfalls erforderlich wären.
  • Die US-Patentschrift 4,463,424 mit dem Titel "Method For Dynamically Allocating LRU/MRU Managed Memory Among Concurrent Sequential Processes", auf den Inhaber der vorliegenden Erfindung übertragen, ist ein Cache-Handhabungssystem zum Trennen eines Cache-Speichers in Partitionen, deren Speicherplatz auf der Grundlage der Anforderungen des Prozesses bestimmt wird, der den Cache-Speicher nutzt. Die Partitionen werden durch ein Überwachungsverfahren zugeordnet und sind nicht physisch bestimmt.
  • Die US-Patentschrift 4,464,712 mit dem Titel "Second Level Cache Replacement Method and Apparatus", auf den Inhaber der vorliegenden Erfindung übertragen, behandelt ein Cache-Speichersystem als aus getrennten Untersystemen von Seiten bestehend, die mit einem Ersetzungs-Flag-Mechanismus verknüpft sind, um den Zugriff für die Ersetzung von Cache-Inhalten zu steuern.
  • Die US-Patentschrift 4,484,267 mit dem Titel "Cache Sharing Control In A Multiprocessor", auf den Inhaber der vorliegenden Erfindung übertragen, ist eine Multiprozessor-Umgebung, wo jeder Prozessor einen individuellen Cache hat. Jeder Cache hat ein Verzeichnis mit einer Teilungs-Flag, die steuert, ob die zugehörige Cacheleitung in einem Durchspeicher- oder einem Einspeicher-Modus arbeitet. Dies schafft zwei verschiedene Typen von Cache-Betriebsweisen zur Verwendung bei der Handhabung sowohl normaler Cache-Zugriffe als auch des Quer-Anfrageverfahrens mit anderen Caches.
  • Es gibt auf diesem Gebiet andere interessante Patente. Die US- Patentschrift 4,503,501 zeigt einen Cache-Speicher, der durch ein Überwachungssteuersystem in Domänen raum-partitioniert ist. Die US-Patentschrift 4,493,033 zeigt einen zweikanaligen Cache, der auf eine zeitverzahnte Weise arbeitet. Die US-Patentschrift 4,195,342 zeigt eine weitere zweikanalige, verzahnte Cache-Anordnung. Die US-Patentschrift 3,618,041 ist ein frühes Patent, das die getrennte Ablage von Befehlen und Operanden in unterschiedliche Caches zeigt. Die US-Patentschrift 4,502,110 ist ein aufgeteilter Cache, der Operanden-und Befehlsspeicher gleicher Größe hat.
  • Das IBM Technical Disclosure Bulletin, Vol. 22, No. 2, Juli 1979, Seiten 851 und 852, zeigt unter dem Titel "Partitioned Memory And Split SCE For Asymmetric Multiprocessor" einen elektronischen Zaun unter Überwachungs-Steuerung zur Trennung eines Speichers in zwei Abschnitte und zur Einschränkung des Zugriffes zu einem der beiden Abschnitte.
  • Das IBM Technical Disclosure Bulletin, Vol. 29, No. 1, Juni 1986, Seiten 357-359 lehrt unter dem Titel "Branch-Processing Instruction Cache" einen neuen Befehlsholmechanismus, der für eine Computerarchitektur entworfen wurde, die Verzweigungsbefehle verarbeitet, während andere Befehle geholt werden, und dadurch das meiste der sogenannten Verzweigungseinbuße eliminiert.
  • In den meisten Architekturen und Maschinenorganisationen werden Verzweigungsbefehle durch die Festkommaeinheit gehandhabt, was potentiell die Leistungsfähigkeit verringert. Die Befehlscache- Bandbreite ist typischerweise begrenzt. Durch Integration der Verzweigungs-Verarbeitung in den Befehlshol-/Cachezugriffs-Prozeß werden diese Begrenzungen überwunden. Die Maschinenzyklen pro Befehl werden bei niedrigen Kosten wesentlich verringert. Infolge des Vordecodierens, wenn neue Zeilen in den Cache geschrieben werden, ist dieser Verzweigungsverarbeitungsmechanismus nahezu vollständig beim normalen Befehlszugriff "verborgen", so daß zur Ausführung einer ähnlichen Funktion keine gesonderten Pipeline-Stufen erforderlich sind. Der Befehls-Cache umfaßt vier physische Felder, jedes Feld kann unabhängig adressiert werden. Bei diesem Beispiel wird auf maximal vier Befehle vom Befehls- Cache gleichzeitig zugegriffen, einen aus jedem Feld, beginnend mit dem aktuellen Wert des Befehlszählers und zum Ende der das aufgerufene Wort enthaltenden Cacheleitung fortschreitend. Um Chipfläche und Leistung zu sparen, werden Leseverstärker von vier benachbarten Spalten der Cache-Zeilen gemeinsam genutzt, außer für jene Spalten, die das Verzeichnis und spezielle Funktionsbits speichern. Jede Zeile des Befehls-Cache umfaßt zwei physische Zeilen der Cache-Felder; daher ist eine Logik erforderlich, um einige der Bits niedriger Ordnung der durch den IC erzeugten Adresse zu transformieren, um die richtige Zeile zu adressieren.
  • Es gibt ein fortdauerndes Bedürfnis für Verbesserungen im Cache- Speicherentwurf, insbesondere für Cache-Entwürfe, die verwendet werden können, um eine große Anzahl von Aufrufen in einer kurzen Zeitspanne oder im wesentlichen gleichzeitig zu handhaben.
  • Die Lösung ist ein verbessertes Cache-Speichersystem, das im kennzeichnenden Teil von Anspruch 1 beschrieben ist.
  • Weitere Lösungen und Verbesserungen sind in den Ansprüchen 2-20 beschrieben.
  • Dieser verbesserte Cache-Speicher bietet besondere Vorteile in einer Umgebung mit mehreren Verarbeitungselementen oder Multiprozessoren, erfordert aber nicht eine solche Umgebung oder hängt von ihr ab, um seine Vorteile darzustellen.
  • Eine Mehrfachverarbeitung im Kontext einer einzelnen CPU schließt mehrere Befehlsverarbeitungseinheiten und mehrere Ausführungsverarbeitungeinheiten ein. Um die zur Ausführung eines Objektprogramms erforderliche Zeit zu verringern, ist es wünschenswert, mehrere Befehle von jenem Programm parallel zu verbarbeiten, die dann mehrere Ausführungseinheiten parallel aufrufen. Diese Praxis schließt mehrere Befehlsdecoder, parallele Befehlsflüsse und "Außerhalb-der-Folge"-Ausführungen ein. Da sowohl die Befehle als auch Datenoperanden üblicherweise vom Cache angefordert werden, ist es wünschenswert, mehrere Cache-Anschlüsse und mehrere unabhängige Cache-Operationen während eines einzelnen CPU-Maschinenzyklus bereitzustellen.
  • Der Erfindung entsprechend ist der Cache-Speicher ein M-geteilter oder -partitionierter Cache, wobei M vorzugsweise eine Potenz von 2, etwa 8, ist. Der Cache ist in der Lage, ein Ereignis pro Partition pro Zyklus oder M Ereignisse pro Zyklus auszuführen. Der Cache hat N Anschlüsse, wobei N kleiner als oder gleich M ist. N ist maschinenspezifisch, aber gewöhnlich kleiner als M und durch zwei teilbar. Die in dieser Anmeldung diskutierte Ausführungsform ist ein Cache mit acht Partitionen und sechs Anschlüssen, weil dies vernünftige und nützliche Entwurfsfaktoren in Anbetracht des angemessenen Maßes an Entwurfs-Komplexität und Leistungsverbesserung sind. Die Anzahl der Partitionen ist nicht auf 8 begrenzt und kann ebenso 4, 16 oder 32 sein. Der Cache wird unter Verwendung einer Partitions-Verweistabelle (partition look-aside table = PLAT) gesteuert, die die korrekten Partitionen für den Zugriff auf eine Information identifiziert, wenn an den Cache ein Aufruf gesendet wird.
  • Jede Cache-Partition arbeitet unabhängig und parallel. Jede Partition kann einen Speicher- oder Aufruf-Vorgang in jedem Maschinenzyklus ausführen. Adreßschalter, Datenbusschalter und spezielle Steuersysteme sind vorgesehen, so daß jede Partition mit jedem Anschluß verbunden sein kann. Somit können mehrere Kombinationen von Partition-Anschluß-Verbindungen für jeden Zyklus gesteuert werden, so daß der Cache eine Kombination von N Speicherungen und Aufrufen in jedem Zyklus ausführen kann. Der Cache ist so gestaltet, daß die Anzahl von Partitionen gleich der Anzahl von mengenassoziativen Fächern im Entwurf ist. Die Cache- Datenanordnung ist so, daß alle Daten, die gewöhnlich einem besonderen Fach zugeordnet sind, auch einer entsprechenden reellen Partition zugeordnet sind. D. h., eine Cachezeile ist vollständig innerhalb einer einzelnen Partition enthalten. So kann ein Prozessor mit mehreren Ausführungseinheiten verschiedene Speicherungen oder Aufrufe zur selben Zeit ausführen, wenn jene Aufrufe an unterschiedliche Cache-Partitionen gerichtet sind.
  • Ein PLAT (eine Partitions-Verweistabelle) steuert den Cache und speichert einen Satz der zuletzt zugegriffenen Cachezeilenanforderungen zusammen mit einem Partitions-Zuordnungsidentifikator für die Zeilenadresse. Mehrere PLATs können für Befehlsaufrufe und für Operandenaufrufe vorgesehen sein.
  • Unter Verwendung der gespeicherten Information richtet der PLAT maschinell erzeugte Adressen an die korrekte Cache-Partition, wenn bestimmt ist, daß die Information sich im Cache befindet. Ein Ausfall im PLAT bedeutet keinen Cache-Ausfall, wie dieser Begriff allgemein verstanden wird. Wenn die Partitions-Information nicht im PLAT ist, wird der Cache-Aufruf gleichzeitig an alle Partitionen und das Cache-Verzeichnis unter Verwendung eines globalen Aufrufs gerichtet. Wenn die Information im Cache als Ergebnis eines globalen Aufrufs gefunden wurde, wird der PLAT mit dem Zeilenadreß- und Partitionsidentifikator aktualisiert. Wenn die Information im Cache nicht gefunden wurde, wird eine bekannte Cacheausfallroutine verwendet, wie etwa die Verwendung einer Verzeichnis-Verweistabelle (DLAT) und ein Zugriff im Hauptspeicher oder einem höheren Cache-Niveau.
  • Le Cacheausfall-Steuerlogik hat teilweise einen LRU (least recently used = am wenigsten zuletzt benutzt)-Algorithmus, der den Platz oder für diesen Cache die Partitionsnummer bestimmt, worin die vom höheren Niveau der Speicherhierarchie geholte neue Zeile geladen wird. Auf diese Weise werden neue Cachezeilen aufgrund einer "Am-Wenigsten-Zuletzt-Benutzt"-Basis in alle Partitionen verteilt.
  • Die hier gezeigte Ausführungsform eines partitionierten Cache wird als ein L1-Cache bezeichnet, der ein Individualprozessor- Cache ist. Ein L2- oder L3-Cache ist größer und näher zum Hauptspeicher als ein L1-Cache und kann gemeinsam genutzt werden. Dieser L1-Cache führt nicht zuerst ein Aussondern der alten Zeile vor dem Ladevorgang der neuen Zeile aus, da ein Durchspeicher-L1-Cache implementiert ist. D. h., alle Speicheraufrufe werden an L1 und an mindestens ein höheres Niveau der Speicherhierarchie gesandt. Das Laden neuer Zeilendaten in den Cache führt dazu, daß gerade eine der M Partitionen beschäftigt ist.
  • Fig. 1 ist eine Systemdarstellung eines Computersystems mit mehreren Zentralverarbeitungseinheiten, das einen partitionierten Cache entsprechend der vorliegenden Erfindung einschließt, der eine gemeinsame Speicherhierarchie sichert.
  • Fig. 2 ist eine schematische Darstellung einer Ausführungsform eines partitionierten Cache-Speichers entsprechend der vorliegenden Erfindung.
  • Fig. 3 ist eine genauere Darstellung der Cache-Felder, des Verzeichnisses, der Adreß-, Daten- und Steuerbusse des in Fig. 2 gezeigten partitionierten Cache.
  • Die Fig. 4A, 4B, 4C und 4D haben eine Reihenfolge von links nach rechts und zeigen eine detaillierte Darstellung der Steuerbus- Struktur, die zu dem in Fig. 2 gezeigten partitionierten Cache- Speicher gehört.
  • Fig. 5A ist eine Darstellung der Beziehung der Verzeichnis-und Partitions-Struktur in einem Cache-Speicher entsprechend der vorliegenden Erfindung, wie in Fig. 2 gezeigt.
  • Fig. 5B zeigt die Organisation eines der Adreßanschlüsse, der den in Fig. 5A gezeigten Adreßbus aufweist.
  • Fig. 6 ist eine genaue Darstellung eines der Aufruf-Anschlüsse eines Cache-Speichers entsprechend der in Fig. 2 gezeigten Ausführungsform.
  • Fig. 7 ist eine detaillierte Darstellung einer Ausführungsform eines CPU-Speicheranschlusses entsprechend dem Cache-Speicher nach Fig. 2.
  • Fig. 8 ist eine detaillierte Darstellung der PLAT-Struktur des in Fig. 2 gezeigten Cache-Speichers.
  • Fig. 9 ist eine Darstellung eines schematischen Diagramms des Aufbaus eines Datenfeldes im PLAT vom Befehls-Typ entsprechend der vorliegenden Erfindung.
  • Fig. 10 ist eine Darstellung eines weiteren Aufbaus eines Datenfeldes im PLAT vom Daten-Typ entsprechend der vorliegenden Erfindung.
  • Fig. 11A und 11B sind in der Reihenfolge von links nach rechts eine Darstellung eines partitionierten Cache-Verzeichnisses und partitionierten Cache-Datenfeldes entsprechend der vorliegenden Erfindung und des Betriebs mit einer einzelnen Cache-Partition.
  • Fig. 12A, 12B und 12C sind jeweils eine detaillierte Darstellung verschiedener Ausführungsformen der Adreßstruktur eines partitionierten Cache-Speichers entsprechend der vorliegenden Erfindung.
  • Fig. 13 ist eine detaillierte Darstellung einer fehlertoleranten Struktur zum Identifizieren und Ausschalten von fehlerhaften Partitionen entsprechend der vorliegenden Erfindung.
  • Unter Bezugnahme auf Fig. 1 ist ein Rechnersystem 10 gezeigt, das mehrere Zentralverarbeitungseinheiten 12, 14 usw. zur Einheit 16 zeigt. Jede der Zentralverarbeitungseinheiten hat eine Eingangs- und eine Ausgangs-Verbindung zu einem Systemsteuerelement 18. Das Systemsteuerelement 18 ist mit einem L2(Niveau 2)- Speicher oder einer Speicherhierarchie 20 verbunden, welche(r) wiederum mit nachfolgenden Niveaus der Speicherhierarchie L3, das 22 genannt ist, und L4, das 24 genannt ist, verbunden ist. Jedes dieser Niveaus ist fortschreitend größer in der Kapazität und weiter vom Prozessor entfernt. Das Ziel ist, Befehle und raten so nahe an die Zentralverarbeitungseinheit heranzubringen, wie es bei der Größe des beteiligten Speichers möglich ist. Die Verwendung mehrerer Speicherhierarchien in Computersystemen ist bekannt. Die Darstellung dieser Niveaus ist illustrativ für die Entwurfspraxis und keine besondere Anforderung an den Partitions-Cache. Das Systemsteuerelement 18 hat auch verschiedene Kanäle 26, 28 und 30, die zur Bereitstellung von Verbindungen zu den Eingabe-/Ausgabe-Vorrichtungen dienen, die Anzeigen, Drucker, Diskettenlaufwerke o. ä. sein können.
  • Jede Zentralverarbeitungseinheit wird eine Befehls-und Ausführungs-Hardware enthalten, allgemein mit 32 bezeichnet, und eine Hardware Fehler-Testlogik, die allgemein mit 40 bezeichnet ist. Die Befehls-und Ausführungs-Hardware 32 erlaubt es jeder Zentralverarbeitungseinheit, herkömmliche Arten von Rechneroperationen auszuführen. Mit der Zentralverarbeitungseinheit verbunden ist ein L1(Niveau 1)-Cache-Speichersystem, das entsprechend der vorliegenden Erfindung ein partitionierter Cache-Speicher 34 sein wird. Ein solcher Cache 34 enthält M Speicherpartitionen und ist durch die Datenpfade 36 mit der Befehls- und Ausführungs-Hardwareeinheit verbunden. Bis zu N Datenpfade 36 können in Abhängigkeit von den optimalen Datenflußanforderungen, wie sie für die Befehls- und Ausführungseinheit vorgesehen sind, verwendet werden.
  • Ein Verzeichnis 38 ist vorgesehen, um das Finden von Information in einer Speicherhierarchie zu ermöglichen, welches durch die Befehls- und Ausführungs-Hardware 32 aufgerufen wird. Das Verzeichnis 38 ist über Steuerpfade und Datenpfade 39 mit der Befehls- und Ausführungs-Hardware 32 verbunden.
  • Die Hardwarefehler-Testlogik 40 überwacht die Adreß-, Daten- und Steuerpfade zu und von der Befehls- und Ausführungs-Hardware, dem Verzeichnis und dem Cache. Sollte in einem dieser Pfade ein Fehler vorkommen, kann eine mit einem speziellen Fehler verbundene Fehlerverriegelung zum Zwecke einer diagnostischen, Auffrischungs- oder anderweitig korrigierenden Aktion gesetzt werden.
  • Die anderen, mit demselben Systemsteuerelement 18 verbundenen Zentralverarbeitungseinheiten werden ähnliche interne Strukturen haben, die Befehle und Ausführung besorgen, einen lokalen partitionierten Cache-Speicher und ein geeignetes Verzeichnis zum Zugriff auf die Inhalte der Speicherhierarchie.
  • In Fig. 2 ist die Struktur 2 eines partitionierten Cache und PLAT entprechend der vorliegenden Erfindung gezeigt. Es ist ein Cache-Speicher mit M Cache-Partitionen 50 gezeigt. In diesem Falle sind der Einfachheit halber acht Cache-Partitionen dieser besonderen Ausführungsform gezeigt. Dies scheint für viele Zwecke eine geeignete Anzahl zu sein, um ein handhabbares Niveau an Steuerung ebenso wie diejenigen Vorteile zu liefern, die in einem partitionierten Cache-Speicher erhalten werden können.
  • Die verschiedenen Cache-Partitionen 50 sind durch einen Datenbus-Schaltmechanismus 52 mit N Datenbusanschlüssen verbunden. In diesem Falle werden sechs Datenbusanschlüsse verwendet, weil dies eine geeignete Anzahl zu sein scheint, um effektiv mit einem Cache-Speicher zu arbeiten, der acht Partitionen hat, und geeignet zu sein scheint, hinsichtlich der Anforderungen des hypothetischen Prozessors, mit dem dieses System verwendet wird.
  • Der Datenbusschalter 52 unterliegt der Steuerung durch eine Eingangssteuerbuseinheit 54, die geeignete Schaltsteuersignale für die Datenbusanschlüsse liefert. Der Cache hat auch eine Ausgangssteuerbuseinheit 56, die die Ausgangsdatenbusstruktur steuert. Die Eingangssteuerbuseinheit 54 ist mit einem Eingangsadreßschalter 58 verbunden, der aufgerufene Adressen den geeigneten Partitionen unter der Steuerung eines Adreßaufrufbusses 60 zuordnet. Die Eingangssteuerbuseinheit 54 ist auch mit dem Datenbusschalter 52 verbunden, der die Datenbusanschlüsse der adressierten Partition zuordnet.
  • Die Eingangssteuerbuseinheit 54 ist mit zwei Steuerbussen 62 und 64 verbunden. Der Steuerbus 62 ist der C1-Bus, der globale Aufrufe der Cache-Einheit handhabt. Ein globaler Aufruf der Cache- Einheit ist einer, der an alle Partitionen des Cache gleichzeitig gerichtet ist. Dies wird später detaillierter beschrieben. Der Steuerbus 64 ist der C2-Bus, der lokale Aufrufe der Cache- Einheit handhabt, die an eine spezielle ausgewählte Partition gerichtet sind. Diese lokalen Aufrufe der Cache-Einheit werden später detaillierter erklärt.
  • Die Ausgangssteuerbuseinheit 56 ist mit dem C3-Bus 66 verbunden, der lokale Ausgabesteuersignale vom Cache handhabt. Die Signifikanz der lokalen Ausgabeaufrufe wird später erklärt, aber es ist zu beobachten, daß, da alle Inhalte des Cache sich in einer speziellen Partition befinden, nur spezielle Partitionen die Ausgabeaufrufe erzeugen werden und daher alle Ausgabeaufrufe lokal sind und nicht global sein können.
  • Jede Zentralverarbeitungseinheit (CPU) wird verschiedene arithmetische und logische Einheiten haben, die mit ihr verbunden sind. In Fig. 2 ist eine Zentralverarbeitungseinheit mit verschiedenen Elementen 70, 72, 74 und 76 gezeigt. Diese Einheiten können von jeder gewünschten Art sein, und sie bestehen aus verschiedenen Kombinationen von arithmetischen, logischen oder Befehlsverarbeitungselementen. Jeder der Datenbusse vom Datenbusschalter 52 ist mit dieser Gruppe von Zentralverarbeitungseinheiten über eine Kombination von Hol-Puffern und Speicher-Puffern verbunden, um die Mehrzahl von Eingangs- und Ausgangsdatenpfaden zu den Zentralverarbeitungseinheiten zu bilden. So können in einem Falle, wo sechs Datenbusse vorgeschlagen sind, drei der Datenbusse mit Hol-Puffern 80, 82 und 84 verbunden sein, während zwei der Busse mit Speicher-Puffern 86 und 88 verbunden sind. All diese Puffer sind mit der Zentralverarbeitungseinheit und ihren verschiedenen Elementen verbunden.
  • Der Zentralprozessor erzeugt Aufrufe für die Speicherhierarchie an eine Mehrzahl von Adreßerzeugungsmechanismen 90, 92, 94, 96 und 98. Die Adreßerzeugungseinheiten sind mit einem zugehörigen PLAT verbunden, so daß der Zentralprozessor eine Mehrzahl von PLAT-Einheiten 100, 102, 104, 106 und 108 hat. Die erzeugten Adressen werden auf einem Adreßbus für jeden Adreßerzeugungsmechanismus auf dem Adreßaufrufbus 60 ebenso wie dem zugehörigen PLAT angeordnet. Jeder PLAT kann, wenn er eine Eingangsadresse erhält, einen Globalaufruf des partitionierten Cache auf dem C1- Bus oder einen Lokalaufruf des partitionierten Cache unter Verwendung eines ausgewählten der C2-Busse erzeugen.
  • Die PLATs haben jeweils einen Eingangsbus von der Ausgangssteuerbuseinheit 56, der lokale Eingangssteuersignale enthält. Im allgemeinen erzeugt, wenn eine Zentralprozessor-Logikeinheit - wie etwa die Logikeinheit 70 - einen Aufruf des Speichers ausführt, die Adreßerzeugungseinheit - etwa 90 - einen Adreßaufruf auf dem Adreßaufrufbus 60. Dieser Aufruf geht sowohl zum Adreßschalter 58 als auch zum PLAT 100. Wenn der PLAT die Partition des Cache identifizieren kann, in der die aufgerufene Information gelegen ist, wird ein Aufruf an die Eingangssteuerbuseinheit 54 auf dem Lokalaufrufsbus 64 erzeugt. Dies bewirkt, daß der Adreßschalter 58 die aufgerufene Adresse nur an die spezielle Partition im Cache richtet, die die angeforderte Information enthält. Der Datenbusausschalter 52 wird dann umgeschaltet, um die angeforderte Information von der speziellen Partition, in der sie gelegen ist, an die spezielle anfordernde Einheit, für die die Information erhalten wurde, zu liefern. In dem Falle, daß der PLAT keine spezielle Partition identifizieren kann, wird der Globalaufrufsbus 62 aktiviert, und der Adreßschalter liefert die Adresse an alle Partitionen des Cache-Speichers.
  • Ein Leitungszugriffpuffer 110 ist so angeordnet, daß, wenn die angeforderte Information nicht im Cache 50 ist, ein Aufruf der angeforderten Information auf das nächste Niveau des Speichers in der Hierarchie weitergeleitet werden kann. Der Leitungszugriffpuffer ist dazu mit einem der Datenbusanschlüsse des Cache verbunden, und in diesem Beispiel ist der Fall gezeigt, daß er mit dem N-ten oder letzten Anschluß verbunden ist. Der Leitungszugriffpuffer ist auch mit dem Adreßaufrufbus 60 und dem Steuerbus 64 oder den Steuersignalen verbunden. Der Datenbus vom nächsten Niveau der Speicherhierarchie ist schematisch mit 112 dargestellt. Es ist wichtig zu beachten, daß der Leitungszugriffpuffer 110 nur einen Zugriff zu einer einzelnen ausgewählten Cache-Partition erfordert, wenn die Inhalte des Leitungszugriffpuffers in den Cache gespeichert werden. Die anderen Cache-Partitionen können normal arbeiten, wenn der Leitungszugriffpuffer in den Cache speichert. Siehe auch Fig. 13.
  • Allgemein kann der Betrieb des in Fig. 2 gezeigten Systems auf die folgende Weise beschrieben werden.
  • Der Cache ist in eine Mehrzahl von Abschnitten oder Partitionen geteilt, und jede Partition arbeitet unabhängig von und parallel zu den anderen. Jede Partition kann einen Abspeicher- oder Hol- Vorgang in jedem Maschinenzyklus ausführen. Adreßschalter 58, Datenbusschalter 52 und die geeigneten Steuersysteme sind so angeordnet, daß jede Partition mit einem Eingangs- oder Ausgangsanschluß verbunden sein kann. So können mehrere Kombinationen von Partition-Anschluß-Verbindungen während eines einzelnen Zyklus des Speicherbetriebs aktiviert werden. Dies erlaubt es dem Cache, eine Kombination von Speicherungen und Abholungen in einem einzelnen Maschinenzyklus gleich oder kleiner der Anzahl von Anschlüssen auszuführen.
  • Die Anzahl von Partitionen ist gleich der Anzahl von mengen assoziativen Fächern, die für den Cache-Entwurf gewählt wurde. Die Cachedaten-Plazierung ist so, daß alle herkömmlicherweise einem besonderen Fach zugeordneten Daten jetzt so zugeordnet sind, daß sie entsprechend einer physischen Partition auftreten.
  • Die Partitions-Verweistabelle (PLAT) ist in den Prozessor-Entwurf eingegliedert. Die exakte logische und physische Plazierung des PLAT obliegt dem Entwerfer und kann von der Maschinenorganisation abhängen. Ein geeigneter Platz für eine oder mehrere PLAT ist nahe zur Adreßerzeugungs-Hardware im Prozessor. Mehrere PLATs können zur Handhabung einer typischen Zentralverarbeitungs-Organisation verwendet werden. Zum Beispiel kann ein Typ von PLAT idealerweise zur Handhabung von Befehlsaufrufen und ein anderer Typ für Datenoperandenaufrufe gestaltet sein. Mehrere Kopien von jedem Typ können individuell durch die CPU-Logikeinheiten verwendet werden.
  • Die PLATs werden einen Satz von zuletzt zugegriffenen L1-Zeilenadressen zusammen mit einem Partitions-Identifikator für jede solche Zeilenadresse speichern. Die PLATs werden dann maschinenerzeugte Adressen an die korrekte L1-Cache-Partition in einem großen Prozentsatz der L1-Cache-Zugriffsaufrufe richten. Solche Aufrufe werden Lokalaufrufe genannt und verwenden den lokalen Steuerleitungsbus 64. Ein PLAT-Ausfall wird erfordern, daß die erzeugte Adresse gleichzeitig an alle Partitionen gerichtet wird, um die der entsprechenden L1-Zeile zugeordnete Partition zu bestimmen. In diesem Falle wird der globale Steuerleitungsbus 64 verwendet. Zu dieser Zeit wird eine neue Eingabe in die PLATs vorgenommen, die den Zeilenadreß- und Partitions-Identifikator speichert, ein nachfolgender Speicher- oder Hol-Aufruf an dieselbe L1-Zeile wird an die korrekte Partition gerichtet, bis die Eingabe vom PLAT veraltet ist. Im Idealfall würde die höchste Leistungsfähigkeit eines partitionierten Cache-Speichers entsprechend der vorliegenden Erfindung sich ergeben, wenn die Anzahl der Anschlüsse gleich der Anzahl der Partitionen wäre, und wenn jeder Anschluß bei jedem überschüssigen Zyklus mit einer Partition verbunden wäre. Physische Vorgaben, wie die Anzahl der Eingangs- und Ausgangsanschlüsse pro Speicherarraychip, können die maximale Anzahl der Anschlüsse jedoch begrenzen.
  • Es gibt eine direkte Entsprechung zwischen Adreßanschlüssen und Datenanschlüssen. D. h., ein Adreßanschluß 1 ist mit einem Adreßschalter 58 verbunden, der für den Datenanschluß 1 vorgesehen ist, der wiederum mit dem Datenbusschalter 52 verbunden ist, usw . . Diese Anschlußpaare können in der Hardware fixiert sein. Weiterhin ist jeder Datenanschluß entweder ein Hol-Anschluß oder ein Speicher-Anschluß, wenn unidirektionale Bustreiber verwendet werden. Mit Zweifach-Treibern und Datenschaltern an den CPU-Anschlüssen kann jeder Anschluß sowohl als Hol- als auch als Speicher-Anschluß dienen. Jedoch werden zum Zwecke dieser Beschreibung die Anschlüsse als unidirektionale Anschlüsse, entweder all Hol-Anschlüsse oder Abspeicher-Anschlüsse, beschrieben.
  • Wie oben festgestellt, kann der Adreßschalter entweder im Globalaufrufsmodus oder im Lokalaufrufsmodus funktionieren. Ein Globalaufruf bewirkt, daß eine der dem Adreßschalter angebotenen Adressen allen Partitionen des Cache gleichzeitig angeboten wird. So wird die Adresse gleichzeitig allen Verzeichniselementen und allen Cache-Speicher-Partitionen zugeschaltet. Dies beruht auf der Steuerung des Globalsteuerbus 62. Der Globalsteuerzyklus wird wie in einem herkömmlichen Cache ausgeführt in dem Sinne, daß, wenn der Wert im Cache gültig ist, eines der acht Verzeichniselemente ein positives Vergleichsergebnis liefern und ein ausgewähltes Gatter der entsprechenden Cache-Partition anheben wird. Dieser Ausgang wird dann auf den anfordernden Datenanschlußbus geschaltet. Ein Globalaufruf kann in einem einzelnen Maschinenzyklus ausgeführt werden.
  • Ein Lokalaufruf bewirkt, daß eine Adresse an die von den M- Cache-Partitionen ausgewählte Partition geschaltet wird, und daß das Verzeichnis für die Handhabung des Lokalaufrufs nicht verwendet wird. Während eines einzelnen Maschinenzyklus können so viele Lokalaufrufsadressen an die Cache-Partitionen geschaltet werden, wie es im Cache-Speicher Anschlüsse gibt. Dies hängt davon ab, daß jede der Lokalaufrufsadressen an eine andere Partition gerichtet ist, so daß jede der Partitionen, die adressiert sind, eindeutig mit einem einzelnen Anschluß verbunden sein kann. Mehrere Aufrufe derselben Partition in aufeinanderfolgenden Maschinenzyklen sind erlaubt. Die Eingangssteuerbusse 62 und 64 bestimmen für jeden einzelnen Adreßanschluß, ob die anfordernde Adresse ein Globalaufruf oder ein Lokalaufruf ist, und auf welchen Anschluß zugegriffen wird. Wenn der Aufruf ein Lokalaufruf ist, codiert der Steuerbus 64 den Partitions-Identifikator für die Ziel-Zeile des Cache.
  • Der Datenbusschalter 52 wird verwendet, um die Ausgänge von den partitionierten Cache-Feldern 50 für Hol-Aufrufe an die Datenbusanschlüsse zu schalten und um Eingänge von den Datenbusanschlüssen für Speicher-Aufrufe an die partitionierten Cache-Felder zu schalten. Wenn die aufrufende Adresse ein Globalaufruf ist, der einen PLAT-Ausfall anzeigt, und der Wert tatsächlich im Cache gefunden wird, wird zusätzlich zum Zurückliefern des angeforderten Werts an die CPU der Partitions-Identifikator an die CPU und den Steuerbus 66 zurückgegeben, so daß der PLAT jene Information in sein Feld einfügt. Ein neuer Eintrag wird im PLAT erzeugt, der sowohl die Ziel-Cache-Zeilenadresse als auch den Partitions-Identifikator speichert. Nachfolgende Bezugnahmen auf jene Cache-Zeile werden zu PLAT-Treffern und Lokalaufrufen führen.
  • In diesem Beispiel hat der Cache N Direktzugriffsanschlüsse, wobei N auf die Zahl 6 festgelegt ist, und die Zentralverarbeitungseinheit ist N-1 Direktzugriffsanschlüssen zum Cache zugeordnet. So hat der Prozessor einen auf den Cache zugreifenden Anschluß weniger als der Cache Anschlüsse hat. In diesem Falle ist der Prozessor fünf Direktzugriffsanschlüssen zum Cache zugeordnet. Der letzte Anschluß ist Ablege-Operationen des Leitungszugriffspuffers 110 vorbehalten. Für den Fall eines unidirektionalen Puffers ist jeder Anschluß entweder ein Hol-Anschluß oder ein Speicher-Anschluß. In diesem Beispiel sind die Anschlüsse 1, 2 und 3 den Hol-Puffern 80, 82 und 84 zugeordnet, und die Anschlüsse 4, 5 und 6 sind als Speicher-Anschlüsse dem Speicher- Puffer 86, dem Speicher-Puffer 88 und dem Leitungszugriffpuffer 110 zugeordnet. Jeder Anschluß ist an der CPU mit Hol- oder Speicher-Puffern abgeschlossen. Diese Puffer können in Abhängigkeit von ihrem optimalen Entwurf und der Busübertragungsgröße unterschiedliche Größe haben, z. B. 8 bis 512 Byte.
  • Die individuellen Unterteilungen der CPU sind symbolisch und dienen dazu, den CPU-Entwurf zu skizzieren, bei dem viele Operationen parallel ausgeführt werden und daher mehrere Zugriffe pro Zyklus auf den Cache erfordern, um die mittleren Zyklen pro Befehl zu verringern. Eine oder mehrere der Unterteilungen kann man sich als Befehlsprozessor, eine arithmetische Festkommaeinheit, eine arithmetische Gleitkommaeinheit, einen Vektor-Prozessor usw. denken, um verschiedene mögliche Rechnerfunktionen darzustellen. Die beste Zuordnung von Cache-Anschlüssen zu einer CPU-Funktion beruht auf einer CPU-Entwurfsoptimierung, die die optimale Mischung von Abspeicher- und Hol-Anschlüssen innerhalb der Gesamtanzahl von für den Cache vorgesehenen Anschlüssen beinhaltet.
  • Jede Unterteilung des Zentralprozessors wie 70, 72, 74 und 76 hat zusätzlich zu ihrer Prozessorfunktion die Hardware-Fähigkeit, eine Adresse zu erzeugen, wenn Cache-Daten für Befehlszugriffe, Operandenzugriffe oder Operandenspeicherungen benötigt werden. Dies wird durch das Vorsehen von Adreßerzeugungseinheiten 90, 92, 94, 96 und 98 angegeben. Die Adreßerzeugung kann sich aus der Inkrementierung eines Zählers, dem Lesen einer Adresse aus einem Feldstapel, dem Verwenden des Ergebnisses von einem Adreßerzeugungs-Addierer usw. ergeben. Nachdem die Adresse geliefert ist, wird die Adresse auf den Adreßaufrufsbus 60 gebracht, wo sie an den lokalen PLAT, wie den PLAT 100, 102, 104, 106 oder 108, ebenso wie an den Adreßschalter 58 und den Leitungszugriffpuffer 110 geliefert wird. Die Zeilenadresse wird im lokalen PLAT geprüft. Wenn ein PLAT-Ausfall vorkommt, plaziert der PLAT ein Bit auf dem Globalsteuerbus 62, um einen Globalaufruf für jenen PLAT anzuzeigen. Wenn ein PLAT-Treffer vorkommt, wird ein Bit auf einer der Positionen des Lokalaufrufs-Steuerbus 64 angeordnet, um die Partition zu bezeichnen, an die jene Adresse gerichtet werden sollte. Das Anordnen dieses Bits in der Position des Lokalsteuerbusses zeigt das Vorliegen des Lokalaufrufes an und identifiziert die Partition für den aufgerufenen Wert im Cache.
  • Obwohl das System in Fig. 2 einen PLAT für jede logische Einheit der CPU bereitstellt, ist eine Mehrzahl von PLAT-Anordnungen in Abhängigkeit von den Entwurfsanforderungen möglich. Es kann wünschenswert sein, unterschiedliche Typen von PLATs für unterschiedliche Funktionstypen zu haben. Jeder Typ kann dann in jeder logischen CPU-Einheit repliziert werden, die jene Funktion ausführt. Beispielsweise ist ein Typ idealerweise für Datenoperandenzugriffe und -speicherungen vorgesehen. Jeder Typ kann dann mehrere Kopien haben, die strategisch in den logischen Partitionen der CPU angeordnet sind. Jeder PLAT ist ein kleines Register-Feld mit z. B. 1-4 Komparatoren, und ein Duplizieren der Hardware ist infolge der vergleichsweise kleinen Menge an Hardware, die für jeden PLAT benötigt wird, nicht schwierig. Mehrere Komparatoren können vorgesehen sein, da eine "mengenassoziative" Anordnung der PLAT-Felder deren Leistungsfähigkeit verbessert.
  • Fig. 3 zeigt die Ausführung des partitionierten Cache 50 der Fig. 2 detaillierter. Der Globalbus 62 bedient die Anschlüsse 1 bis 5 des Zentralprozessors. Jedes Bit des Globalsteuerbusses bezeichnet die anfordernde Einheit der Zentralverarbeitungseinheit. Der Bus 62 hat keine Globalposition, obwohl er eine haben könnte, da das "Ablegen" des Leitungszugriffpuffers immer ein Lokalaufruf ist, der die korrekte, zuzugreifende Cache-Partition aufgrund einer LRU-Logik kennt. Jeder PLAT-Typ hat einen lokalen Aussteuerbus C3, der schematisch mit der Bezugsziffer 66 gezeigt ist. Diese Beschreibung kennzeichnet einen Typ für Befehlsadressen und einen zweiten Typ für Datendressen. Jeder kann mehrere Verbindungen mit mehreren PLAT-Kopien haben. Dieser Steuerbus 66 liefert den Partitions-Identifikator zurück, der durch eine Globalverzeichnis-Suche bestimmt wurde, damit er in den speziellen PLATs für einen neuen Eintrag gespeichert werden kann. Anschluß 6 ist in Fig. 2 gezeigt und wird für Zeilen-Ablagen verwendet und verwendet nicht einen lokalen C3-Ausgangssteuerbus, weil er seinen Partitions-Identifikator für Speicheraufrufe vom Am-Wenigsten-Zuletzt-Benutzt (least recently used = LRU)-Steuersystem, das genauer in Fig. 13 gezeigt ist, erhält. Der Ausgabesteuerbus C3 enthält auch eine Gültiger-Speicher-Leitung, die später beschrieben wird. In der Fig. ist auch die innere Struktur des partitionierten Cache aufgezeigt. Jede Partition enthält einen Adreßschalter, ein Partitionsverzeichnis, das tatsächliche Cache-Speicherfeld und Datenbusschalter.
  • In den Fig. 4A, 4B, 4C und 4D ist nun jede der acht Cache- Partitionen des Cache-Speichers 50, wie er in Fig. 2 gezeigt ist, mit ihrem Verzeichnis-Feld gezeigt, und Speicherstapelelemente und Verzeichniselemente sind mit der Steuerbusstruktur verbunden gezeigt. Die Adreß- und Datenbusse sind nicht in dieser Fig. gezeigt, aber sie sind in anderen Figuren detaillierter gezeigt. Alle Leitungen des Globalsteuerbus in 62 sind zu allen acht der Verzeichniselemente DIR.1 bis DIR.8 gerichtet. Der Lokalsteuerbus C2 ist in sechs Bestandteil-Gruppen von Steuerleitungen aufgebrochen, wobei jeder Bestandteil eine Leitung für jeden Speicherstapel hat. So ist jede der einzelnen Leitungen des lokalen Bus in 64 auf einen Zielpartitions-Speicherstapel des Speicherfeldes gerichtet.
  • Die Leitungen des Lokalsteuerbus aus 66 sind von einem Register in jedem der Verzeichniselemente abgeleitet. In dieser Beschreibung hat das Register drei Bit, die die folgende Funktion habe: Bit 1 ist ein Partitions-Identifikator zur Angabe eines PLAT vom Befehlstyp, Bit 2 ist ein Partitions-Identifikator zur Bezeichnung eines PLAT vom Datentyp und Bit 3 ist eine Gültiger-Speicher-Anzeigeleitung. Die Register für die Verzeichniselemente können andere Zusammensetzungen und Funktionen haben, als dies in der Speicherstruktur notwendig ist. Die lokalen Ausgangsbusse für jedes Bit im Register in den Verzeichnissen haben eine einzige Leitung, so daß das spezielle Cachepartitions-Verzeichnis, dem ein Signal entstammt, identifiziert werden kann. Die lokalen Ausgangsbusse empfangen so das Partitions-Identifizierungsbit, das sich aus einem Globalaufruf ergibt, und die Gültiger-Speicher (V/S)-Leitung, wenn die Speicheranfrage des Verzeichniselements positiv ist. Es ist zu beachten, daß der Speicheranfragebetrieb und die Gültiger-Speicher-Leitungserzeugung sowohl für Global-Hol- als auch Global-Abspeicher-Aufrufe ausgeführt wird. Der Speicheranfragebetrieb schließt das Testen verschiedener Steuerbits im Verzeichnis wie des Gültig-Bits, des Ausschließlich-Bits, des Speicherschlüssel-Bits etc. ein.
  • Wie jetzt Fig. 5A zeigt, ist der Cache-Adreßbus 60A mit jeder der acht Partitionen des Cache 50 entsprechend der vorliegenden Erfindung verbunden.
  • Ähnlich sind die Ausgangsdatenbusse D1, D2 und D3 ebenso wie die Eingangsdatenbusse D4, D5 und D6 so angeschlossen, daß sie Daten von einer Partition holen oder in eine Partition speichern. Jede Partition hat ein separates Verzeichniselement, welches z. B. auf einem eigenständigen assoziativen Array-Chip sein kann. Sowohl das Verzeichnis als auch die Cache-Partitionen haben Adreßschalter, während nur die Cache-Partitionen Datenbusschalter haben. Die verschiedenen Adreßschalter für die verschiedenen Partitionen sind schematisch dargestellt.
  • Beispielsweise hat die Partition 1 des Cache 50 einen Adreßschalter 150, der mit dem Adreßbus 60A verbunden ist. Die Datenbusschalter 152 und 154 gehören auch zur ersten Partition. Der Adreßschalter 156 des zur ersten Partition gehörenden Verzeichniselements ist mit dem Verzeichnisadreßbus 60B verbunden. Die anderen Cache-Partitionen und Verzeichniselemente sind ähnlich organisiert. Es ist zu beachten, daß der Adreßbus 60 der Fig. 2 und 3 aus zwei Teilen zusammengesetzt ist, dem Adreßbus 60A und dem Adreßbus 60B der Fig. SB. Jeder Anschluß des Adreßbus 60 ist aus drei Feldern zusammengesetzt, wie in Fig. 5B gezeigt. Das Verzeichnis 38 benötigt die Bits mittlerer und höherer Ordnung von jedem Adreßanschluß, während der Cache die Bits mittlerer und niedriger Ordnung von jedem Adreßanschluß benötigt.
  • In Fig. 6 und 7 sind nun zwei verschiedene Ausführungsformen von Zentralverarbeitungsanschlüssen zum Gebrauch mit der vorliegenden Erfindung dargestellt. In Fig. 6 ist ein Zentralverarbeitungsanschluß 200 gezeigt, der als ein Hol-Anschluß entweder für Befehle oder für aus zu führende Datenoperanden verwendet werden kann. Der Anschluß enthält einen PLAT 202, eine logische Einheit 204 zum Adreßaufruf, eine Zentralverarbeitungs-Befehls-, logische oder arithmetische Einheit 206, einen Eingabepuffer 208, und er kann einen lokalen Speicher 210 enthalten. Die C3-Steuerleitung für lokale Ausgabe 212, die globale C1-Steuerleitung 214 und die Eingangs-C2-Steuerleitung 216 des PLAT sind zusammen mit der Anzahl von Bits gezeigt, die für den Betrieb in jedem Falle erforderlich ist. Die Adreßerzeugungseinheit 204 erzeugt 27 Bitadressen, und die Puffereinheit 208 ist so gestaltet, daß sie zu einer Zeit 144-Bit-Vierfachworte empfängt.
  • In Fig. 7 ist der CPU-Anschluß 220 als ein Speicheranschluß mit einem PLAT 222, einer logischen Adreßaufrufseinheit 224, einer logischen CPU-Einheit 226, einem Datenpuffer 228 und einem lokalen Speicher 230 konfiguriert. Wieder hat der PLAT eine Lokalausgangs-C3-Steuerleitung 232, eine Globalausgangs-C1-Steuerleitung 234 und eine Lokaleingangs-C2-Steuerleitung 236. Außerdem hat der PLAT eine Gültiger-Speicher(V/S)-Leitung 238. Der Puffer 228 ist so gestaltet, daß er Vierfachworte von 144 Bit handhabt.
  • Die Gültiger-Speicher-Leitung 228 ist in den PLAT 222 hineingeführt, so daß, wenn der Anschluß einen Speicheraufruf ausgibt, die Gültiger-Speicher-Bedingung auf dem PLAT bestimmt werden kann.
  • In Fig. 8 ist jetzt der logische Betrieb eines PLAT 300 dargestellt. Der lokale C3-Lokalausgabe-Bus 302 entspringt von einem Schaltgattersystem 304, während der Lokaleingabe-C2-Steuerbus 306 mit einem Gatter 308 und der C1-Globalsteuerbus 310 mit einem Gatter 312 verbunden ist. Eine Zentralverarbeitungseinheit ?3 20 hat einen Adreßerzeugungsmechanismus 322, der Adressen auf einem Adreßbus 324 an den partitionierten Cache und auf dem Bus 322 auch an den PLAT liefert. Die Adresse wird an einen Komparator 328 geliefert, der entweder einen Treffer auf der Leitung 330 zum Steuern der Einheit 308 oder einen Ausfall auf der Leitung 332 zum Steuern der Einheit 312 in Abhängigkeit davon, ob ein Ausfall oder ein Treffer im PLAT aufgezeichnet wird, aufzeichnet, das Globalsteuersignal wird auf die C1-Leitung 310 gesendet, oder das C2-Lokalsteuersignal wird auf die Leitungen 306 gesendet, was den durch den PLAT gefundenen Platz im partitionierten Speicher zeigt.
  • Beim normalen Betriebsablauf wird die CPU 320 ihre Adreßerzeugungs-Hardware 322 anrufen, die die Aufrufadresse auf dem Ausgangs-Adreßbus 324 unterbringt. Zur gleichen Zeit wird die Adresse an den PLAT 300 gesendet, wo eine oder mehrere Adressen jener Kongruenzklasse aus dem PLAT-Feld gelesen werden. Die verbleibenden Bits hoher Ordnung der Adresse werden für jeden PLAT- mengenassoziativen Eintrag verglichen.
  • Ein PLAT-Treffer wird bewirken, daß eines der acht im Partitions-Identifikatorarrayfeld des PLAT gespeicherten Bits zur entsprechenden der acht Positionen des C2-Steuerbus 306 ausgegeben wird. Dies kennzeichnet einen Lokalaufruf der gewählten Cache- Partition. Ein PLAT-Ausfall wird die Ein-Bit-C1-Globalaufrufleitung auf dem Bus 310 anheben. Ein PLAT-Ausfall wird auch die Gatter freigeben, die die anfordernde Adresse und den Partitions-Identifikator speichern, der auf dem C3-Steuerbus 302 zurückgegeben wird. Auf diese Weise wird im PLAT in Reaktion auf eine Globalanfrage ein neuer Eintrag erzeugt. Dieser neue Speichereintrag in den PLAT wird durch die neue Speicherbox 334 angefordert, wenn sie eine Ausfallkennzeichnung von der Leitung 332 erhält, und sie ist in der Lage, die Adresse, die sie von 324 empfängt, in das Adreßfeld des PLAT 300 abzulegen.
  • Im allgemeinen ist das PLAT-Feld 300 ein mengenassoziatives (Feld. Mehrere Mengen, die Menge A, die Menge B etc., werden parallel für jede Kongruenzadresse geprüft. Jedes Mengenabteil des PLAT hat einen individuellen Satz eines Ausgabegatters 308, eines Adreßvergleichers 328, eines Globalgatters 312 und von Eingabegattern 304 und 334. Die Ausgabegatter 308 werden "zusammengeODERt", unmittelbar bevor eine Kongruenzadresse auf einen PLAT-Zyklus treffen kann. Auf ähnliche Weise werden die Ausgänge 310 von jedem Mengengatter 312 kombiniert, um eine einzelne C2- Aufrufsleitung zu bilden. In diesem Falle werden die Ausgänge 310 "zusammengeUNDet", da ein Ausfall von allen mengenassoziativen Komparatoren vorkommen muß, bevor ein Globalaufruf C1 auf dem Bus 310 initiiert wird. Auf der Eingangsseite des PLAT können der Adreßbus 326 und der Steuerbus 302 auf eines der mengenassoziativen Abteile, zur Menge A oder zur Menge B etc., gegeben werden, wie durch die LRU-Logik bestimmt, wenn ein neuer PLAT-Eintrag erzeugt wird.
  • Fig. 9 zeigt den Typ von PLAT-Dateneintragsfeld, der für einen PLAT-Entwurf, der sich mit Befehlen befaßt, verwendet werden könnte. Ein Adreßfeld 400 enthält Adressen, während ein Partitions-Identifikator 402 die Partition des Cache zeigt, die jene Adresse enthält. Ein Steuerfeld 404 ist vorgesehen, das ein Gültiges-Bit-Feld 406 und ein Feld 408 für Paritäts- und andere gemischte Steuerfunktionen enthält.
  • Fig. 10 zeigt den Typ von PLAT-Eintrag, der als Datentyp des PLAT verwendet werden könnte. Ein Adreßfeld 400 ist zusammen mit einem Partitions-Identifikatorfeld 402 vorgesehen. Jedoch kann das Steuerfeld 402 geringfügig unterschiedlich sein. Ein Gültiges-Bit-Eintrag 406 wird geliefert, und ein Gültiger-Speicher- Bit 414 ist auch enthalten. Außerdem ist ein zusätzliches Feld 416 für Paritäts- und andere gemischte Steuerfunktionen, wie oben, bereitgestellt. Der in den Fig. 9 und 10 gezeigte PLAT-Typ dient für einen möglichen Betrieb in Gegenwart eines erweiterten Zentralverarbeitungseinheits(CPU)-Puffers, der die Form eines lokalen Cache (L0) annehmen könnte. In diesem Falle kann das Verzeichnis für den lokalen Cache und den PLAT parallel arbeiten. Nachdem die Adreßerzeugungsfunktion auftritt, wird die Adresse an den Adreßaufrufbus, den PLAT, das lokale Cache-Verzeichnis und das lokale Cache-Feld gesendet.
  • Ein Treffer im lokalen Cache-Verzeichnis bewirkt, daß Daten aus dem lokalen Cache-Feld an das zugehörige Zentralverarbeitungselement ausgegeben werden und die anderen Adreßpfade zu vernachlässigen sind. Ein Ausfall im lokalen Cache-Verzeichnis, kombiniert mit einem Treffer im PLAT, führt zu einem Lokalaufruf an den partitionierten L1-Cache. Ein Ausfall des lokalen Verzeichnisses, kombiniert mit einem PLAT-Ausfall, führt zu einer Globalanfrage an den partitionierten Cache.
  • Der Unterschied zwischen den beiden Typen von PLAT-Einträgen, die in Fig. 9 und Fig. 10 gezeigt sind, ist das Vorhandensein des Gültiger-Speicher-Bits 414 im PLAT-Eintrag vom Datentyp.
  • Dieses Bit wird zu der Zeit auf "ein" gesetzt, zu der im PLAT vom Daten-Typ ein neuer Eintrag erzeugt wird, der danach ein Globalaufruf sein wird. Zu dieser Zeit wird im partitionierten Cache-Verzeichnis ein Speicheranfragebetrieb ausgeführt. Dies schließt das Testen der Speicherschlüssel-, Gültiges-Bit-, Ausschließliches-Bit- und anderer Funktionen im Cache ein. Wenn dieser Test positiv ist, dann wird das Gültiger-Speicher-Bit im partitionierten Cache-Verzeichnis für jenen neuen Eintrag im PLAT vom Daten-Typ auf "ein" gesetzt, andernfalls wird es auf "aus" gesetzt. Jede folgende Speicher-Anforderung an jene partitionierte Cacheleitung, während der Eintrag im PLAT gültig bleibt, führt einen einzelnen Speicherzyklus aus. Solche Speicherungen werden als lokale Speicheraufrufe an den partitionierten Cache übertragen. Es ist zu beachten, daß jede ungültige Ausgabe an den partitionierten Cache auch an den zugehörigen PLAT ausgegeben wird.
  • In den Fig. 11A und 11B, die in der Reihenfolge von links nach rechts zu betrachten sind, ist ein partitionierter Cache mit deinen Steuer- und Datenflußpfaden gezeigt. Eine Verzeichnis- Partition 500 gehört zu einer einzelnen Cachefeld-Partition 502, die mit ihrem "Stapel" von Speicherplätzen gezeigt ist. Ein Cache-Prioritätsgatter 504 nimmt den lokalen C2-Steuerbus 506 und den globalen C1-Steuerbus in 508 auf, was auch in Fig. 4A gezeigt ist. Der Ausgang der Prioritätslogik 504 wird in die ODER- Gatter 510 und 512 ebenso wie zum Lesegatterschalter 514 und zum Schreibgatterschalter 516 geführt. Ein Adreßbusschalter 518 empfängt einen Eingang von der Prioritätslogik 504 und richtet Adressen an die Cachefeld-Partition 502. Der Ausgang des ODER- Gatters 510 ist ein Schreibgatter-Auswahlbus 520, und der Ausgang des ODER-Gatters 512 ist ein Lesegatter-Auswahlbus 522. Das ODER-Gatter 510 empfängt eine Eingabe 560 vom Verzeichnis 500, und das ODER-Gatter 512 empfängt eine Eingabe 558 vom Verzeichnis 500.
  • Das Cache-Verzeichnis 500 nimmt über einen Adreßbusschalter 542 einen Eingangsadreßbus 60B auf. Der Adreßbusschalter 542 ist durch ein Prioritätsgatter 544 gesteuert, das als Eingang den C1-Globalsteuerbus 508 hat. Das Prioritätsgatter 544 liefert auch einen Ausgang an die Gatter 548, die als einen Ausgang die Eingangssteuersignale für den lokalen C3-Bus 550 haben, der mit dem zugehörigen PLAT verbunden ist. Der Ausgang des Cache-Verzeichnisfeldes 500 besteht aus einem Datenausgabebus 552 und Eingängen in die logischen Einheiten 554 und 556. Die Einheiten 554 und 556 erzeugen einen Gültig-Lesen-Ausgangsbus 558 bzw. einen Gültig-Schreiben-Ausgangsbus 560.
  • Um den Betrieb der Cache-Partition 502 darzustellen, empfängt die Prioritätslogikeinheit 504 Steuerbuseingänge 506 und 508. Wenn ein lokaler Aufruf auf der Grundlage des C2-Steuereingangs 506 bestimmt wird, wird eine von sechs Adressen durch den Adreßschalter 518 vom Adreßbus an das Cache-Feld geschaltet. Der Datenbus, der der ausgewählten Adresse entspricht, wird auch durch die Busauswahlsteuerleitung 530 für Lesevorgänge oder die Busauswahlleitung 532 für Schreibvorgänge ausgewählt. Die Lesegatter-Auswahlleitung 522 oder die Schreibgatter-Auswahlleitung 520 werden auch durch die Prioritätslogik für lokale Lese- und Schreibaufrufe freigegeben. So kann eine Cache-Partition einen Abspeicher- oder Hol-Vorgang eines einzelnen Zyklus ohne Verwendung des Cache-Verzeichnisses ausführen. Für den Abhol-Vorgang wird ein Cache-Betrieb des zweiten Taktzyklus verwendet, um die aufgerufenen Daten an das anfordernde Zentralverarbeitungselement zu übertragen. Für Speicherbetrieb ist der zweite Cache-Zyklus nicht erforderlich.
  • Wenn eine Globalanfrage bestimmt ist, wählen und schalten die Prioritätslogik des Cache-Feldes 544 und das Verzeichnis 500 unter Verwendung des Schalters 542 eine gemeinsame Adresse. Das Cache-Feld wird gleichermaßen den entsprechenden Adreßbus mit dem Schalter 518, wie oben, auswählen, aber in diesem Falle wird es nicht die Lese- bzw. Schreibgattersteuerleitungen 522 und 520 erzeugen. Statt dessen werden diese Leitungen von der Vergleichs- und Testlogik 554 und 556 des Verzeichnisses 500 erzeugt. Im globalen Fall gibt die Gültig-Lesen-Leitung 558 die ausgewählten Lesegatter an den ausgewählten Datenbus frei. Die Gültig-Schreiben-Leitung 560 gibt die ausgewählten Schreibgatter frei, so daß das Cache-Feld 502 den Speicherbetrieb im nachfolgenden Zyklus ausführen kann. So führt für einen globalen Aufruf der erste Zyklus des Cache-Betriebs den Feldzugriff und das Datenbus-Schalten für ein Abholen und eine Speicher-Anfragefunktion für einen Speicheraufruf aus. Der zweite Zyklus des Cache-Betriebs wird verwendet, um die angeforderten Daten für ein Abholen zu übertragen oder für einen Abspeicher-Aufruf das Cachefeld 502 zu durchlaufen. Für Globalaufrufe werden der Partitions-Identifikator und Gültiger-Speicher-Leitungen durch die Gatter 548 erzeugt und auf den C3-Bussen zurückgeführt, um den neuen PLAT-Eintrag zu aktualisieren.
  • Globale Aufrufe haben eine höhere Priorität als jeder lokale Aufruf. Die Priorität sowohl für globale Aufrufe als auch lokale Aufrufe wird durch eine vorbestimmte Folge von Anschlußpositionen bestimmt.
  • Zur Vereinfachung ist ein kleines PLAT-Feld in Fig. -12A dargestellt, eines, das acht Einträge speichern kann, jeder mit Inhalten, wie sie in den Fig. 9 und 10 dargestellt sind. In Cachefeld-Terminologie hat dieses Feld acht Kongruenzklassen-Adreßpositionen und eine Mengenassoziativität, die Menge A. Dieses Feld hat Abmessungen (8·1). Größere PLAT-Felder können durch Replizieren der Bestandteile nach Fig. 12A aufgebaut sein. Jede Replikation in horizontaler Richtung fügt acht zusätzliche Einträge und eine zusätzliche Menge hinzu, d. h. die Menge B (8·2), die Menge C (8·3) etc . . Alternativ fügt jede Replikation in vertikaler Richtung acht zusätzliche Einträge hinzu, wodurch die Kongruenzklassenadressen um acht erhöht werden, während eine einzelne Mengenassoziativität, die Menge A, aufrechterhalten wird. Ein solches Feld hat Abmessungen (16·1). Wenn beispielsweise 32 Einträge als eine optimale Anzahl bestimmt wären, könnte das PLAT-Feld angeordnet werden: (8·4), (16·2) oder (32·:1). In jeder gewählten Anordnung des PLAT ist die erforderliche Anzahl von Komparatoren, 636 in Fig. 12A, gleich der Mengenassoziativität, einer pro Menge.
  • Ebenfalls unter Bezugnahme auf Fig. 12A liefert der Adreßgenerator 600 einen decodierten Satz von Adreßzeilen 602 an den PLAT, wobei die Anzahl der decodierten Zeilen durch die Anzahl der Kongruenzklassen bestimmt ist. Die zur Decodierung der Kongruenzklassen-Auswahlleitungen verwendeten Adreßbits werden durch die Zeilengröße des partitionierten L1-Cache bestimmt und sind die Bits "niedrigster Ordnung" des Abschnittes der Adresse, der normalerweise verwendet wird, um das L1-Verzeichnis, den Adreßbus 60B der Fig. 5A zu adressieren. Für einen PLAT mit acht Kongruenzklassen werden drei Bits niedriger Ordnung verwendet, um acht Kongruenzklassen-Auswahlleitungen zu decodieren, vier Bits niedriger Ordnung, um sechzehn zu decodieren, etc. In Fällen, wo die erzeugte Adresse von einem "AGEN"-Addierer erhalten wird, kann der "AGEN"-Addierer die decodierte Form des Kongruenzklassen-Auswahlbus 602 direkt erzeugen, anstatt die codierte Form zu erzeugen, die dann einen Decodierungsvorgang erfordern würde.
  • In den Fig. 12A und 5A ist die Arbeit eines PLAT gezeigt. Ein Adreßgenerator 600 erzeugt die aufgerufene Adresse 664 und sendet bestimmte dieser Adreßbits auf dem Cache-Adreßbus 60A an den Cache, auf dem Verzeichnis-Adreßbus 60B an das Verzeichnis und an die Adreßvergleicherschaltung 636. Außerdem sendet der Adreßgenerator 600 parallel den 8-Bit-Kongruenzleitungs-Auswahlbus 602 an den PLAT. Für jede anfordernde Andresse ist nur eine der acht Leitungen des Bus 602 aktiv. In Abhängigkeit von der aktiven Leitung wird eine der acht Adressen von den PLAT-Einträgen 604, 606, 608, 610, 612, 614, 616 und 618 auf einem gemeinsamen Bus 662 an die Vergleicherschaltung 636 durchgelassen. Die Gatter 620, 622, 624, 626, 628, 630, 632 oder 634 führen das Adressen-Durchschalten aus. Ein Vergleich der erzeugten Adresse 664 mit der ausgewählten Adresse 662 mit dem Ergebnis der Gleichheit führt zu einem positiven Treffer auf der Ausgangsleitung 640. Die Leitung 640 liefert dann ein Signal an die Gatter 624, 644, 646, 648, 650, 652, 654 und 656, die mit dem Kongruenzleitungs- Auswahlbus 602 zusammenwirken' um eines der Partitions-I/D-Felder von den PLAT-Einträgen 604, 606, 608, 610, 612, 614, 616 oder 618 an den gemeinsamen Bus 660 auszugeben. Der Bus 660 wird dann als eine der Lokal-In-C2-Komponenten des Steuerbus 64 der Fig. 4A, 4B, 4C und 4D an den partitionierten Cache gesandt. Ein Vergleich der Vergleicherschaltung 636, der Ungleichkeit ergibt, führt zu einem Ausfallsignal 638 auf dem C1-Globalaufrufsbus. Die Signalleitung 638 wird an das Partitions-Zählwerk und Verzeichnis als eine der Global-In-C1-Komponenten des Steuerbus 62 der Fig. 4A, 4B, 4C und 4D gesendet.
  • Fig. 12B ist eine Abwandlung der Fig. 12A und wird für jeden CPU-Anschluß verwendet, der als Abhol-Anschluß für Befehle oder Datenoperanden bestimmt ist. Hier wird zusätzlich zum Adreßfeld das Gültig-Bit von den PLAT-Eingängen 604 bis 618 durch Gatter 620 bis 634 an den gemeinsamen Bus 662 ausgegeben. Die Vergleicherschaltung 636 prüft wie oben die Gültiges-Bit-Eingangsleitung zusätzlich zur Ausführung des Adreßvergleiches. Wenn das gültige Bit "ja" oder gültig ist (Cache-Konventionen verwenden üblicherweise den Hoch- oder Eins-Zustand für ungültig und den Niedrig- oder Null-Zustand für gültig), dann bestimmt wie oben die Vergleicherschaltung 636 einen Treffer auf der Leitung 640 oder einen Ausfall auf der Leitung 634 auf der Grundlage des Adreßvergleichsvorganges. Wenn das Gültig-Bit "nein" (ungültig) ist, dann wird die Ausfalleitung 638 angehoben, und der Adreßvergleichsvorgang wird ignoriert.
  • Immer dann, wenn im PLAT ein neuer Eintrag geschaffen wird, wird das Gültig-Bit auf "ja" (Nullzustand) gesetzt. Während eines normalen CPU-Verarbeitungsvorganges kann es jedoch erforderlich sein, vor dem Altern des Eintrags vom PLAT durch die LRU-Logik den Eingang ungültig zu setzen. Solche Vorgänge sind beispielsweise, wenn eine neue Cache-Zeile in den partitionierten L1-Cache gebracht wird und dann jeder Eintrag im PLAT, der sich auf die alte Zeile bezieht, als ungültig markiert wird. Auch ist es in einer Mehr-CPU-Umgebung üblich, daß eine CPU dazu auffordert, daß eine andere CPU eine Cache-Zeile als ungültig markiert. In diesem Falle wird auch jeder Eintrag im PLAT als ungültig markiert. Das tatsächliche Vorkommen des Bedürfnisses zur Ungültigmachung eines PLAT-Eintrages ist sehr selten, aber es wird der Genauigkeit und Vollständigkeit halber eingeschlossen.
  • Fig. 12C ist eine Abwandlung von Fig. 12B und wird durch einen CPU-Anschluß verwendet, der als Speicher-Anschluß für Datenoperanden fungiert. Hier werden sowohl das Gültig-Bit (V) als auch das Gültiger-Speicher-Bit (V/S) vom PLAT-Eingang zur Vergleicherschaltung 636 durchgesteuert. In diesem Falle müssen sowohl der Gültig-Zustand als auch der Gültiger-Speicher-Zustand zusätzlich zum Zustand des positiven Ergebnisses des Adreßvergleiches gegeben sein, bevor der Trefferzustand auf der Leitung 640 bestimmt wird. Wenn entweder der Gültig-Zustand oder der Gültiger-Speicher-Zustand nicht vorliegen, dann wird die Ausfalleitung 638 wiederum angetrieben, und der Adreßvergleich wird ignoriert. Immer dann, wenn infolge eines PLAT-Ausfalles im PLAT ein neuer Eintrag erzeugt wird, wird der Speicherabfragebetrieb im L1-Verzeichnis ausgeführt. Wenn dieser Test positiv ist, dann wird der Gültiger-Speicher-Zustand im PLAT-Eintrag aufgezeichnet. Nachfolgende Speicheraufrufe führen zu PLAT-Treffern auf der Leitung 640 und erfordern keinen Speicherabfragevorgang im Verzeichnis.
  • Im normalen Cache-Betrieb ist es nicht unüblich, eine gültige, Nur-Lesen-Datenzeile im L1-Cache ebenso wie einen jener Zeile entsprechenden gültigen Eintrag im PLAT zu haben. Wenn die Zeile durch den L1-Cache "Nur-Lesen" aufgerufen wurde, dann würde der Speicherabfragetest negativ sein, und der Ungültiger-Speicher- Zustand würde in den PLAT für jenen Eintrag gesetzt. Ein nachfolgender Speicheraufruf auf jene Zeile würde zu einem PLAT-Ausfall und einer Globalanfrage des L1-Verzeichnisses führen. Der Nur-Lese-Zustand würde dann bestimmt, und die L1-Cache-Steuerungen würden vom SCE-Element der Fig. 1 den Speicher-Berechtigungszustand im L1-Verzeichnis aufrufen. Dann kann ein nachfolgender Speicheraufruf auf jene Zeile zu einer positiven Anzeige vom Speicherabfragetest führen, und der Gültiger-Speicher- Indikator ist im PLAT-Eintrag gesetzt.
  • Fig. 13 zeigt eine spezielle, fehlertolerante Fähigkeit dieses partitionierten Cache. Diese Fähigkeit toleriert Hauptfehler des Cache-Datenfeldes und der Verzeichnisbestandteile, während ein Systemausfall oder eine Unterbrechung der Leistungen für den Benutzer des Rechners vermieden wird. Solche Fehler würden zu einer verringerten Leistungsfähigkeit des Cache-Untersystems für die Zeitspanne, bis ein Reparaturvorgang den (die) Fehler korrigiert hat, führen. Beispielsweise kann ein gesamtes Verzeichniselement ausfallen (was als "Chipkill" bezeichnet wird) oder einer bis zu allen Datenchips, die zu einer einzelnen Cache-Partition gehören, können ausfallen. In diesen Fällen wird die ausgefallene Partition logisch vom Cache-Untersystem entkoppelt, was zu einem Verlust von 12,5% der Cache-Kapazität für einen partitionierten Cache mit acht Paritionen führt (beachte, daß ein Verlust von 12,5% der Cache-Kapazität nicht zu einer 12,5%-igen Verschlechterung der Leistungen führt, sondern infolge der Natur der Cache-Leistung in Abhängigkeit von seiner Kapazität nur zu einem wesentlich kleineren Prozentsatz). Ein zweiter solcher Hauptfehler vor dem Reparaturvorgang würde zum Verlust einer zweiten Partition und einer kombinierten Verringerung der Cache- Kapazität von 25% führen etc . . Für die obigen Fälle wäre in vorhandenen Cache-Untersystemen die gesamte CPU "verloren", bis der Reparaturvorgang beendet wäre. Für die meisten Benutzer ist ein geringfügiger Verlust der Leistungsfähigkeit während kritischer Betriebsphasen akzeptabel, während ein Computerausfall schwerwiegende Folgen haben könnte.
  • Die Basis für die Fehlertoleranz ist, daß die einer speziellen Cache-Zeile zugeordneten Cache-Daten vollständig innerhalb einer einzelnen Cache-Partition enthalten sind und ihre Adreßsteuerinformation vollständig innerhalb eines einzelnen Verzeichniselements enthalten ist, das auf einem einzelnen Chip vorliegen kann. Auch wird ein Durchspeicher-L1-Cache verwendet. Dies liefert eine duplizierte, gültige Kopie aller L1-Cachedaten auf mindestens einem höheren Niveau der Speicherhierarchie. So weist, wenn ein Hauptfehler, wie beschrieben, vorkommen sollte, die Hardware den Fehler nach und entkoppelt die fehlerhafte(n) Partition(en), aber keine Daten sind verloren. Außerdem werden die in der (den) fehlerhaften Partition(en) vorliegenden Daten auf Aufforderung durch den Prozessor zurückgeholt, von L2 in L1, aber in eine andere Partition des Cache, die noch funktioniert. Im wesentlichen erscheinen die Daten in der (den) fehlerhaften Partition(en) gegenüber der CPU als dieselben wie beliebige nichtresidente Cache-Daten, die nach einem L1-Ausfall geholt werden müssen.
  • Der Betrieb des fehlertoleranten Mechanismus ist in Fig. 13 gezeigt. Die Hardwarefehler-Testlogik 40 ist während aller Cache- Übertragungen aktiv. Dies fließt beispielsweise in eine Paritätstestung der Adreßdaten und Steuerbusse 36 und 39 auf her-. kömmliche Weise ein. Ein Ungültige-Partition-Anzeigeregister 702 ist dazu vorgesehen, acht Bit zu speichern, wobei jedes Bit einer der acht Cache-Partitionen entspricht. Sollte ein Hauptfehler vorkommen, setzt die Fehlertest-Hardware 40 das entsprechende Bit im Ungültige-Partition-Anzeigeregister 702 mit dem Eingabebus 700. Außerdem sind eine LRU-Logik und Tabellen 708 vorgesehen. Im Normalfall überwacht die LRU-Logik 708 den Cache- Adreßbus 60A und die Cache-Steuerbusse C2, 64 und C3, 66 und erhält ein aktuelles LRU-Feld 712 aufrecht. Der C2-Steuerbus zeigt die aktiv zugegriffene Partitionsnummer für lokale Cache-Bezugnahmen, während der C3-Steuerbus die Nummer der aktiven, reagierenden Partition zur Bezugnahme auf den globalen Cache anzeigt. Dieses Feld 712 speichert einen codierten Eintrag für jede Kongruenzklasse des Caches 34 und des Verzeichnisses 38. Im wesentlichen speichert jeder Eintrag im LRU-Feld 712 eine Zeiger- oder Partitionsnummer der Partition, die als nächste verwendet wird, um die neue Zeile zu speichern, wenn ein Cache-Ausfall vorkommt. Ein herkömmlicher, partitionierter LRU-Algorithmus kann auch verwendet werden, um die aktuellen LRU-Einträge im LRU-Feld aufrechtzuerhalten.
  • Die LRU-Logik 708 überwacht auch die Inhalte des Ungültige-Partition-Anzeigeregisters 702 auf dem Bus 704. Sollte ein Bit oder sollten Bits in 702 gesetzt sein, wirken diese Bits als ein Ersatz für die LRU-Logik 708, so daß jene Partitionen nicht als Eingang für das LRU-Feld ausgewählt werden. Statt dessen wird der LRU 708 LRU-Einträge für das Feld 712 auf der Grundlage von Gültige-Partition-Anzeigen im Register 702 wählen. Immer dann, wenn ein L1-Cache-Ausfall vorkommt, wird die anfordernde Adresse auf dem Bus 714 an das LRU-Feld 712 gesendet. Das LRU-Feld 712 lädt die Partitionsnummer entsprechend der Kongruenzklasse in jener anfordernden Adresse auf dem Bus 716, die zum Leitungszugriffpuffer 110 gesendet und im Partitionsnummern(PN)-Register 720 gespeichert wird. Die anfordernde Adresse wird auch zum Puffer 110 gesandt und im Adreßregister(AR)-Register 724 gespeichert. Der Zugriff der neuen Zeile wird von L2 auf dem Bus 112 zum Puffer 110 gesandt und im Puffer 726 gespeichert. Der Zeilen-Ablegevorgang folgt dem Zeilen-Abholvorgang. Hier wird die Cache- Aufrufsadresse A6 auf dem Bus 60 angeordnet, die Partitions- Identität, der C2-Steuerbus, wird durch den Decoder 720 auf dem Bus 64 angeordnet, und die Zeilendaten werden auf dem Speicherbus-Anschluß N der Fig. 2 und 13 plaziert.
  • Die Hardware von Fig. 13 entkoppelt die fehlerhafte(n) Partition(en) von der zukünftigen Zuordnung neuer Cache-Daten, bis ein Reparaturvorgang die (den) Fehler korrigiert. Die Zeit des Reparaturvorgangs wird nach den Bedürfnissen des Benutzers gewählt. Zu dieser Zeit werden die Inhalte des Ungültige-Partition-Anzeigeregisters 702 in den Gültig-Zustand zurückgeführt.
  • Auch werden zur Zeit des Nachweises des Auftretens eines Fehlers bestimmte Betriebsüberwachungsaufgaben verstanden. Diese enthalten ein Abtasten des LRU-Feldes auf dem Bus 718, um auf der Grundlage der neuen Werte des Ungültige-Partition-Anzeigeregisters 702 jeden ungültigen Eintrag rückzusetzen. Außerdem sollten alle PLAT-Felder gelöscht werden, so daß keine Partitionsanzeigen auf fehlerhafte Partitionen zeigen, und um auf fehlerhafte Partition(en), die durch das Register 702 bestimmt sind, gerichtete Adressen auf den Adreßbussen 60A und 60B zu unterdrücken.
  • Einige zusätzliche Merkmale des Gesamtbetriebes des partitionierten Cache und PLAT entsprechend der vorliegenden Erfindung werden jetzt diskutiert.
  • Eines der Merkmale ist es, daß eine Mehrzahl von Speicheroperationen jetzt in einem einzelnen Cache-Zyklus abgeschlossen wird. Dies wird durch die Eliminierung des Speicherabfragezyklus von jedem lokalen Speichervorgang des Cache erreicht. Der Speicherabfragevorgang wird einmal auf Globalspeicher- oder -Hol-Vorgänge infolge eines PLAT-Ausfalls ausgeführt. Zu dieser Zeit erfolgt im PLAT ein neuer Eintrag, und ein Gültiger- oder Ungültiger-Speicher-Bit wird für jenen Eintrag gesetzt. Nachfolgende Speicheraufrufe mit dem Gültiger-Speicher-Bit "ein" im PLAT werden in einem einzelnen Zyklus ausgeführt. Ein-Zyklus-Speichervorgänge verringern die Anzahl von Zyklen, die für einen Speicherbefehl benötigt werden, und verringern die mittleren Zyklen pro Befehls-Gesamtzahl, wodurch die Prozessor-Befehlsausführungsgeschwindigkeit erhöht wird.
  • Der Zeilenablegevorgang wird mit einer minimalen Partitions-Cache-Wechselwirkung mit dem Zentralprozessor bewerkstelligt. Ablege-Partitions-Cache-Speicherzyklen von einem Leitungszugriffpuffer werden gerade eine der (M) Partitionen beschäftigen und nur für jene Zyklen aktiviert, wenn diese Partition anderweitig frei ist. Dies erlaubt es, größere Cache-Leitungen vorteilhaft zu benutzen, wodurch das Verhältnis von Cache-Befehlen pro Ausfall und die PLAT-Trefferverhältnisse verbessert werden.
  • Die kritischen Cache-Zugriffspfade sind innerhalb zweier Chip- Kreuzungen der gegenwärtig verfügbaren Chips für alle (N) parallen Betriebsanschlüsse enthalten. Dies bedeutet, daß jeder der N gleichzeitig arbeitenden Anschlüsse einen oder zwei Zugriffszyklen hat. Lokale Speicherungen, die Zeilenablegevorgänge enthalten, werden in einem Ein-Zyklus-Zugriff pro Speicherblock ausgeführt, während alle anderen Vorgänge einen Zwei-Zyklen-Zugriff haben. Gegenwärtige Ein-Port-Cacheorganisationen haben einen Zwei-Zyklen-Zugriff sowohl zum Speichern als auch zum Abholen und sind auf einen Vorgang pro Zyklus beschränkt.
  • Der partitionierte Cache hat eine größere Verfügbarkeit infolge hoher Fehlertoleranzeigenschaften. Herkömmliche Cache-Strukturen führen eine Paritätsprüfung, aber keine Fehlerkorrektur aus. Wenn ein Ein-Bit-"Hard-Error" bezüglich einer Cache-Zeile oder eines Verzeichnis-Faches vorkommt, dann kann ein im Verzeichnis geführtes Löschbit durch Hardwaresteuerungen gesetzt werden, um jenes Cache-Abteil von der weiteren Nutzung zu entkoppeln, bis ein Reparaturvorgang notwendig ist. Sowohl der herkömmliche als auch der partitionierte Cache verwenden einen Entkopplungs-Fehler-Mechanismus. Wenn jedoch ein vollständiger Cache oder ein Verzeichnis-Chip verloren ist, was einen Chipkill schafft, ergibt sich bei einem herkömmlichen Cache ein Systemausfall für den gesamten Cache. Der partitionierte Cache erweitert das Konzept des Löschbits auf die Löschung einer Partition. So ist im Falle eines Chipkill eine Partition des Cache verloren und ein Systemausfall wird vermieden.
  • Es sind eine Vielzahl von Gestaltungen verfügbar, um die mit den einzelnen Cache-Anschlüssen und Datenbussen verknüpfte Ausgangsdaten-Blockgröße zu variieren. Abwandlungen des grundlegenden Cache-Entwurfs, einschließlich Vorkehrungen für einen Zentralprozessor-Entwurf, der eine separate L0-Cache-Struktur verwendet, sind Möglichkeiten.

Claims (19)

1. Cachespeicher mit M Partitionen eines unabhängig adressierten assoziativ gesetzten Speichers in einem einzigen Speicherkomplex, gekennzeichnet
durch Adreßbus-Schaltmittel (58) zur Herstellung von N Anschlüssen für Adressenzugriff zu diesen M Partitionen, wobei N kleiner als oder gleich M ist;
durch Datenbus-Schaltmittel (52) zur Herstellung von N Anschlüssen für Datenzugriff zu diesen N Partitionen;
durch Steuermittel (54, 56) zur Steuerung dieser Adreßbus-Schaltmittel (58) zur Schaltung von Adressen zu ausgewählten Partitionen des assoziativ gesetzten Speichers und zur Steuerung dieser Datenbus-Schaltmittel (52) zur Schaltung der Eingänge und Ausgänge dieser Partitionen zu ausgewählten Datenbussen; und
durch Partition-Umsetztabellen (PLAT) (100, 102, . . . , 108) die Speicheraufrufe empfangen und die Adreßbus- und Datenbus-Schaltmittel steuern, wobei jede dieser PLAT-Mittel Einträge enthalten, die den Adressen Partitionenplatz-Kennzeichen zuordnen,
durch örtliche Aus-Steuermittel (66) zwischen jeder der M Cachepartitionen und den PLAT-Mitteln, wobei jede der M Partitionen eine Anfrage identifizierbar macht, indem diese Mittel den PLAT-Mitteln das Partitionen-Kennzeichen für eine neue PLAT-Eintragung identifizieren;
durch örtliche Ein-Steuermittel (64) zwischen jeder der M Cachepartitionen und den PLAT-Mitteln, um eine Zugriffsanforderung zu einer speziellen Partition zu machen;
durch globale Anforderungs-Steuermittel (62) uin eine Zugriffsanforderung für alle M Partitionen gleichzeitig zu machen, und
durch Steuermittel in den PLAT-Mitteln zur Aktivierung dieser globalen Anforderungs-Steuermittel als Antwort auf einen PLAT-Ausfall auf eine Zugriffsanforderung.
2. Cachespeicher nach Anspruch 1, dadurch gekennzeichnet, daß in den PLAT-Mitteln ein globaler Speicheraufruf für alle N Partitionen des Cachespeichers erzeugt wird, wenn für eine Speicheroperation eine bestiiumte Partition nicht identifiziert werden kann.
3. Cachespeicher nach Anspruch 1, dadurch gekennzeichnet, daß in den PLAT-Mitteln mehrere PLATs jeweils einem Speicherbenutzungselement zugeordnet sind, so daß jedes Speicherbenutzungselement Aufrufe an die eigene PLAT richten kann.
4. Cachespeicher nach Anspruch 1, mit wenigstens zwei PLATs, von denen die eine so ausgebildet ist, daß sie im Speicherlesemode und die andere so ausgebildet ist, daß sie iin Speicherschreibmode arbeitet.
5. Cachespeicher nach Anspruch 1, mit wenigstens zwei PLATs, von denen die eine vom PLAT-Befehlseingabe- Bearbeitungstyp und die andere vom Datenverarbeitungs-PLAT-Typ ist.
6. Cachespeicher nach Anspruch 1, dadurch gekennzeichnet, daß jedes der PLAT-Mittel (100, 102, . . . , 108) Einträgen zugeordnete Adressen mit Partitionenplatz- Kennzeichen und jeder Eintrag ferner ein Gültig-Bit (V) und ein Gültiger-Speicher-Bit (V/S) enthält, wobei das Gültig-Bit anzeigt, daß der Partitionen- Eintrag für eine Adresse gültig ist oder ignoriert werden sollte und das Gültiger-Speicher-Bit anzeigt, daß eine Speicherabfrage-Operation durchgeführt wurde.
7. Cachespeicher nach Anspruch 1, gekennzeichnet durch Fehlertestlogikmittel (40) zur Bestimmung ob eine der Partitionen nicht ausgefallen ist;
Anzeigeregister (702) für ungültige Partitionen, das eine Stufe für jede der M Partitionen und für den Empfang und die Speicherung eines Anzeigers für eine ausgefallene Partition von den Fehlertestlogikmitteln (40) aufweist und
Mittel (708, 712, 720, 722) die neue Speicheranforderungen ausgewählten Partitionen des Caches zuordnen, das mit dem die ungültigen Partition anzeigenden Register (702) verbunden ist, wobei besagte Mittel für die Zuordnung auf das die ungültige Partition anzeigende Register reagiert, so daß neuerliche Speicheranforderungen nicht einer ausgefallenen Partition zugeleitet werden.
8. Cachespeicher nach Anspruch 7, dadurch gekennzeichnet, daß die Mittel zur Zuordnung neuer Speicheranforderungen die zuletzt benutzte Logikeinheit (712) ist, die die nächste zu benutzende Partition vorab auf die Zeit einer Speicheranforderung einstellt.
9. Cachespeicher nach Anspruch 1, dadurch gekennzeichnet, daß das PLAT-Mittel Speichermittel zur Speicherung eines Gültig-Bits, eines Gültiger-Speicher- Bits und eines Partitionen-Kennzeichens für jede Adresse in der PLAT enthalten, wobei sowohl das Gültig-Bit als auch das Gültiger-Speicher-Bit zusätzlich zu der Adresse vorhanden sein müssen, um einen PLAT-Treffer für Speicheranfragen zu erhalten, und daß ferner ein Cacheverzeichnis für den Cache, Mittel zur Einstellung des besagten Gültiger-Speicher-Bits bei einem PLAT-Eintrag für eine Speicher- oder Leseoperation auf einen PLAT-Ausfall erzeugt wird und Mittel um eine Abf rageoperation des Cacheverzeichnisses nach einem PLAT-Ausfall zu erzeugen, vorgesehen sind.
10. Cachespeicher nach Anspruch 9, gekennzeichnet durch logische Mittel zur Einstellung des Gültiger-Speicher-Bits und zum Lesen des Gültiger-Speicher-Bits, so daß wenn besagtes Bit "aus" ist, ein PLAT-Ausfall für einen Schreibzugriff zu der zugeordneten Adresse und ein PLAT-Treffer für einen Lesezugriff zu der zugeordneten Adresse auftritt.
11. Cachespeicher nach Anspruch 1, gekennzeichnet durch
Leitungszugriff-Puffermittel (110) zur Speicherung neuer Leitungen in den Cache auf Anforderung, wobei die Leitungszugriff-Puffermittel Zugriff zu einer einzigen ausgewählten Cachepartition fordern, wenn der Inhalt dieser Leitungszugriff-Puffermittel in den Cache gespeichert wird und alle anderen Cachepartitionen normal arbeiten; und
Mittel zum Kennzeichnen ausgewählter Partitionen mit Speicheranforderungen in einer Tabelle, zum Empfang von Speicheranforderungen und zur Steuerung der Adreßbus- und Datenbus-Schaltmittel um Speicheraufrufe an eine ausgewählte Partition abhängig von Information in besagten Mitteln zur Kennzeichnung ausgewählter Partitionen im Falle einer Leseoperation und um einen Speicheraufruf zu einer ausgewählten Partition im Falle einer Schreiboperation zu leiten.
12. Cachespeicher nach Anspruch 11, in welchem die Mittel zur Kennzeichnung ausgewählter Partitionen aus mehreren PLAT-Xitteln bestehen und jedes PLAT-Mittel gekennzeichnet ist durch,
wenigstens einen Satz von assoziativ gesetzten Registern (300) für die Speicherung von Cache- Adreßkennzeichen, die in wenigstens M entsprechenden Klassen angeordnet sind;
Mittel zum Empfang einer Eingabe-Adreßanforderung (322);
Vergleichsmittel (328) zum Vergleich der Inhalte des Satzes der assoziativ gesetzten Register mit den Mitteln zwa Empfang einer Eingabe-Adreßanforderung und zur Erzeugung eines Partitionen-Kennzeichens, wenn ein Treffer vorliegt und eine Ausfallanzeige, wenn kein positiver Vergleich vorliegt.
13. Cachespeicher nach Anspruch 12 in welchem wenigstens eines der PLAT-Mittel gekennzeichnet ist durch
Mittel zur Speicherung und Zuordnung eines Gültiger- Speicher-Bits zu jedem Adreß- und Partitionen-Kennzeichen und logische Mittel zur Erzeugung eines PLAT-Ausfalls für einen Schreibzugriff zu einer Adresse für welche das Bit nicht gesetzt ist und zur Ermöglichung eines Lesezugriffs, wenn das Bit weder gesetzt noch nicht gesetzt ist.
14. PLAT-Mittel nach Anspruch 12, in welchen ein globaler Speicherzugriff an alle M Partitionen des Caches ausgelöst wird, wenn eine bestimmte Partition für eine Speicherleseoperation nicht identifiziert werden kann.
15. PLAT-Mittel nach Anspruch 12, in welchen mehrere PLATs jeweils einem Speicherbenutzungselement zu geordnet sind, so daß jedes Speicherbenutzungselement Zugriffe an sein eigenes PLAT richten kann.
16. PLAT-Mittel nach Anspruch 12, die wenigstens zwei PLATs enthalten von denen das eine im Speicherlesemode und das andere im Speicherschreibmode arbeitet.
17. PLAT-Mittel nach Anspruch 12, die wenigstens zwei PLATs enthalten von denen das eine vom Befehlseingabebearbeitungstyp und das andere vom Datenbearbeitungstyp ist.
18. Cachespeicher nach einem der Ansprüche 1 bis 17, dadurch gekennzeichnet, daß mehrere ausgewählte Cacheoperationen in jedem Cachezyklus auftreten können wobei eine Operation an jeder Partition auftritt, die einem Anschluß für diesen Cachezyklus zugeordnet ist.
19. Cachespeicher nach einem der Ansprüche 1 bis 18, dadurch gekennzeichnet, daß jedes PLAT Eingaben zugeordnete Adressen mit Partitionsplatz-Kennzeichen enthält und in welchen jede Eingabe ferner ein Gültig-Bit (V) und ein Gültiger-Speicher-Bit (V/S) einschließt, wobei das Gültig-Bit anzeigt, ob eine Partitioneingabe für eine Adresse gültig ist oder ignoriert werden sollte und das Gültiger-Speicher- Bit anzeigt daß eine Speicherabfrageoperation durchgeführt worden ist.
DE8888102093T 1987-04-03 1988-02-12 Cache-speicher. Expired - Fee Related DE3873388T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US3413687A 1987-04-03 1987-04-03

Publications (2)

Publication Number Publication Date
DE3873388D1 DE3873388D1 (de) 1992-09-10
DE3873388T2 true DE3873388T2 (de) 1993-03-18

Family

ID=21874539

Family Applications (1)

Application Number Title Priority Date Filing Date
DE8888102093T Expired - Fee Related DE3873388T2 (de) 1987-04-03 1988-02-12 Cache-speicher.

Country Status (3)

Country Link
EP (1) EP0284751B1 (de)
JP (1) JPS63257853A (de)
DE (1) DE3873388T2 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0727492B2 (ja) * 1988-01-21 1995-03-29 三菱電機株式会社 緩衝記憶装置
US5553262B1 (en) * 1988-01-21 1999-07-06 Mitsubishi Electric Corp Memory apparatus and method capable of setting attribute of information to be cached
EP0340901A3 (de) * 1988-03-23 1992-12-30 Du Pont Pixel Systems Limited Zugriffsystem für Speicher mit doppelter Anschlussstelle
CA1301367C (en) * 1988-03-24 1992-05-19 David James Ayers Pseudo set-associative memory cacheing arrangement
JPH01280860A (ja) * 1988-05-06 1989-11-13 Hitachi Ltd マルチポートキヤツシユメモリを有するマルチプロセツサシステム
US5247649A (en) * 1988-05-06 1993-09-21 Hitachi, Ltd. Multi-processor system having a multi-port cache memory
EP0477595A3 (en) * 1990-09-26 1992-11-19 Siemens Aktiengesellschaft Cache memory device with m bus connections
US5392414A (en) * 1992-06-30 1995-02-21 Sun Microsystems, Inc. Rapid data retrieval from data storage structures using prior access predictive annotations
GB2292822A (en) * 1994-08-31 1996-03-06 Hewlett Packard Co Partitioned cache memory
US5924117A (en) * 1996-12-16 1999-07-13 International Business Machines Corporation Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto
US6138209A (en) * 1997-09-05 2000-10-24 International Business Machines Corporation Data processing system and multi-way set associative cache utilizing class predict data structure and method thereof
US6745293B2 (en) 2000-08-21 2004-06-01 Texas Instruments Incorporated Level 2 smartcache architecture supporting simultaneous multiprocessor accesses
EP1215581A1 (de) * 2000-12-15 2002-06-19 Texas Instruments Incorporated Cache-Speicherzugriffs-Anordnung und Verfahren
JP3900025B2 (ja) 2002-06-24 2007-04-04 日本電気株式会社 共有キャッシュメモリのヒット判定制御方法及び共有キャッシュメモリのヒット判定制御方式
EP3258382B1 (de) * 2016-06-14 2021-08-11 Arm Ltd Speichersteuerung
CN113114684B (zh) * 2021-04-14 2022-08-16 浙江中拓合控科技有限公司 一种用于现场设备的信息传输***、方法和装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5619575A (en) * 1979-07-25 1981-02-24 Fujitsu Ltd Data processing system having hierarchy memory
US4371929A (en) * 1980-05-05 1983-02-01 Ibm Corporation Multiprocessor system with high density memory set architecture including partitionable cache store interface to shared disk drive memory
US4484267A (en) * 1981-12-30 1984-11-20 International Business Machines Corporation Cache sharing control in a multiprocessor
JPS5948879A (ja) * 1982-09-10 1984-03-21 Hitachi Ltd 記憶制御方式
JPS59213084A (ja) * 1983-05-16 1984-12-01 Fujitsu Ltd バッファ記憶装置のアクセス制御方式

Also Published As

Publication number Publication date
EP0284751B1 (de) 1992-08-05
JPS63257853A (ja) 1988-10-25
EP0284751A3 (en) 1989-05-31
EP0284751A2 (de) 1988-10-05
DE3873388D1 (de) 1992-09-10
JPH0551936B2 (de) 1993-08-04

Similar Documents

Publication Publication Date Title
DE69721368T2 (de) Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher
DE2847960C2 (de) Speichersteuereinrichtung
DE69317729T2 (de) Cache-Etikettenspeicher
DE3688192T2 (de) Seitenorganisierter cachespeicher mit virtueller adressierung.
DE69715203T2 (de) Ein Datenverarbeitungssystem mit cc-NUMA (cache coherent, non-uniform memory access) Architektur und im lokalen Speicher enthaltenem Cache-Speicher für Fernzugriff
DE3873388T2 (de) Cache-speicher.
DE3689488T2 (de) Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher.
DE3587960T2 (de) Datenverarbeitungsanlage mit einem Speicherzugriffssteuergerät.
DE2749850C3 (de) Hybrider Halbleiterspeicher mit assoziativer Seitenadressierung, Seitenaustausch und Steuerung auf dem Chip
DE69030945T2 (de) Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung
DE3854368T2 (de) Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler.
DE69637294T2 (de) Mikro-tlb mit parallelem zugriff zum beschleunigen der adressübersetzung
DE69127773T2 (de) Vorrichtung zur echten LRU-Ersetzung
DE3588009T2 (de) Vorrichtung und Verfahren zum Rekonfigurieren eines Speichers in einer Datenverarbeitungsanordnung.
DE69432133T2 (de) Datenprozessor mit Cache-Speicher
DE69029173T2 (de) Mikroprozessor
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE69031411T2 (de) Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff
DE3852695T2 (de) Multiprozessorsystem mit mehreren Speichern.
DE69229667T2 (de) Simulierte cachespeicher-assoziativität
DE68926761T2 (de) Mehrprozessorsystem mit einem mehranschlüssigen Cachespeicher
DE3888438T2 (de) Cachespeichersteuerungsvorrichtung für eine Datenverarbeitungsanordnung mit virtuellem Speicher.
EP1915694A1 (de) Vorrichtung und verfahren zur speicherung von daten und/oder befehlen in einem rechnersystem mit wenigstens zwei verarbeitungseinheiten und wenigstens einem ersten speicher oder speicherbereich für daten und/oder befehle
DE2906685C2 (de)
DE4234695A1 (de) Speichermanagementsystem und verfahren zur aufrechterhaltung der cache-kohaerenz zwischen einem daten-cache und einem segmentdeskriptor-cache

Legal Events

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