DE68924501T2 - Speichersubsystem mit Fehlerkorrekturcache-Speicher. - Google Patents

Speichersubsystem mit Fehlerkorrekturcache-Speicher.

Info

Publication number
DE68924501T2
DE68924501T2 DE68924501T DE68924501T DE68924501T2 DE 68924501 T2 DE68924501 T2 DE 68924501T2 DE 68924501 T DE68924501 T DE 68924501T DE 68924501 T DE68924501 T DE 68924501T DE 68924501 T2 DE68924501 T2 DE 68924501T2
Authority
DE
Germany
Prior art keywords
cache
memory
data
address
store
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
DE68924501T
Other languages
English (en)
Other versions
DE68924501D1 (de
Inventor
Patrick Francis Dutton
Steven Lee Gregor
Hehching Harry Li
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 DE68924501D1 publication Critical patent/DE68924501D1/de
Application granted granted Critical
Publication of DE68924501T2 publication Critical patent/DE68924501T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • G06F15/8069Details on data memory access using a cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Complex Calculations (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)

Description

  • Diese Erfindung bezieht sich auf ein Speichersubsystem gemäß der Präambel von Anspruch 1.
  • Die Speicheranforderungen an einen Vektorprozessor unterscheiden sich wesentlich von den Anforderungen an einen konventionelleren Prozessor. Systeme, die konventionelle Prozessoren und Vektorprozessoren beinhalten, sind recht verbreitet. In solchen Systemen sind die Speicheroperationen in der Regel auf die Anforderungen des konventionellen Prozessors zugeschnitten, wodurch die Leistungsfähigkeit des Vektorprozessors beeinträchtigt wird.
  • Die Notwendigkeit eines hohen Grades von Fehlererkennung und -behebung für einen Einspeicherungs-Puffercache (store-in buffer cache) ist allgemein anerkannt. Konventionelle Verfahren arbeiten mit Fehlerkorrektur-Codes, die den Einsatz von Prüfblöcken mit mehreren Informationsbytes erfordern, um den Aufwand für die Prüfbits zu senken. Diese Strategie erfordert zwangsläufig zusätzliche Zyklen, um die Umwandlung von Prüfbits in Datenpantätsbits während Abrufoperationen zu ermöglichen, und erfordert außerdem Lese-/Modifizier-/Schreib-Operationen, um das Speichern von Daten zu ermöglichen, die über keine integrierten Prüfblöcke verfügen.
  • In solchen Systemen ist häufig eine als "Erweiterungsspeicher" bezeichnete Erweiterung des Hauptspeichers vorhanden, die von der Systemsoftware auf eine sehr ähnliche Weise verwaltet wird wie eine Halhleiter-Seitenwechseleinheit. Die von einem solchen System bereitgestellte Speicherkapazität ist zwar größer als diejenige, die dem System normalerweise zur Verfügung gestellt würde; die Übertragungen zwischen dem Hauptspeicher und dem Erweiterungsspeicher werden jedoch umständlich, wenn Caches zum Einsatz kommen, und die Gesamt-Systemleistung kann sich deutlich verschlechtern.
  • Die Hinzufügung eines zweistufigen Cachespeicher-Systems verbessert zwar die Systemleistung für die Zwecke der allgemeinen Datenverarbeitung erheblich, bietet aber bei einer Vektorverarbeitungsoperation nicht die gleiche Verbesserung. Darüber hinaus nimmt der Zentral- (oder Haupt-) Prozessor in einer Datenverarbeitungsanlage, die beides enthält, normalerweise eine beherrschende Stellung ein. Dies macht es erforderlich, daß Daten, die zur Verwendung in dem untergeordneten Vektorprozessor abgerufen werden, sich den Speicherzugriff mit dem Hauptprozessor aufteilen müssen, und dies schränkt die Leistungsfähigkeit des Vektorprozessors ein.
  • Cache-Systeme sind zwar dahingehend wirksam, daß sie die Diskrepanz ausgleichen, die infolge der unterschiedlichen Geschwindigkeiten von Hauptspeicher und Zentraleinheiten besteht, durch die Fehleranfälligkeit solcher Einheiten ist es bisher jedoch erforderlich, die durch den Cache übergebenen Daten gründlich auf Fehler zu prüfen und den Fehler nach Möglichkeit zu korrigieren.
  • Ein solches Fehlererkennungs- und Fehlerkorrektursystem ist in der Patentanmeldung US-A-4 084 236 offengelegt, wobei der Cache Paritätsgenerierüngsschaltungen enthält, die Prüfbits für die in den Cache geschriebenen Daten generieren, und darüber hinaus Paritätsprüfschaltungen zum Prüfen der aus dem Cache hinausgeschriebenen Daten.
  • Eine konventionelle Fehlerprüfung und -korrektur würde die ohnehin schon knappe Zeitabstimmung der Cache-Organisation belasten, weitere Zyklen in den Abruf-Zugriff einfügen, um die Wege für die Fehlerprüfung und -korrektur darin unterzubringen, oder - noch komplexer - einen Mechanismus erfordern, um die Prozessor- Pipeline zu unterbrechen, falls nach der Datenübertragung ein Fehler festgestellt wird.
  • Eine Analyse der technologischen Eigenschaften von für Cache- Speicher eingesetzten statischen Speichern mit wahlfreiem Zugriff hat ergeben, daß weiche Defekte, wie sie durch die Verunreinigung durch Alpha-Partikel verursacht werden, so gut wie nicht auftreten. Da dies der Fall ist, muß ein wirksames Fehlerkorrekturverfahren nur die harten Bit-Defekte berücksichtigen, d. h. diejenigen, bei denen ein Ausfall einer Schaltung aufgetreten ist. Die Möglichkeit, konventionelle Fehlerprüf- und Fehlerkorrekturverfahren zu ignorieren, bedeutet, daß zusätzliche Maschinenzyklen oder umfangreiche zusätzliche Schaltungen nicht erforderlich sind. Zusätzliche Komplexität wird ebenfalls ausgeschlossen, da die Einzelbyte-Bearbeitung von Fehlern bedeutet, daß direkte Speichervorgänge in den Cache, die zwischen einem Byte und einer ganzen Zeile lang sein können, auf die gleiche Weise behandelt werden können. Konventionelle Fehlerbehandlungsverfahren eignen sich nicht für die Einzelbyte-Anwendung, da sie eine Lese-/Modifizier-/Schreib-Operation erfordern und dadurch die Leistung des Prozessors vermindern.
  • Das Invertierungs-/Neuversuch-Verfahren dieser Erfindung beeinträchtigt die Systemleistung nicht, solange kein Fehler auftritt. Der normale Betrieb des Systems bleibt somit vollständig unbeeinträchtigt, und es treten keine Zeiteinbußen auf. Die Erfindung bietet nichtsdestoweniger die Möglichkeit der Wiederherstellung nach einem harten Bit-Fehler, wobei die Daten mit einer minimalen Hardware wiederhergestellt werden, die für die Ausführung eines kurzen Wiederherstellungsalgorithmus erforderlich ist. Zwei- und mehrstufige Speichersysteme sind in den Patentanmeldungen US-A 4 442 487 und 4 445 174 beschrieben.
  • Speicherübertragungen, d. h. Übertragungen von Daten aus dem Erweiterungsspeicher des realen Speichers, wurden bisher bearbeitet, indem man den Prozessor einen Abruf aus einem Speicherbereich durchführen und ihn dann einfach umsetzen und an einer anderen Speicherposition speichern ließ. Solche Verfahren weisen verschiedene Einschränkungen auf. Erstens besteht das Problem, daß der Prozessor mit der Durchführung einer recht einfachen Aufgabe belastet wird. Eine solche übermäßige Prozessorzeit steht entweder nicht zur Verfügung oder kann, wenn sie zur Verfügung steht, wesentlich sinnvoller anderswo genutzt werden. Darüber hinaus eignet sich die übliche Abrufanweisung nicht sonderlich für die Art von Übertragung, die erforderlich ist, um Daten zwischen realem Speicher und Erweiterungsspeicher zu verschieben. Cache-Systeme wurden zwar erfolgreich eingesetzt, um die Leistungsfähigkeit von Speichersystemen zu verbessern, indem die Prozessorgeschwindigkeiten an das Abrufen und Speichern von Daten angepaßt wurden; der Verwaltungsaufwand, mit dem solche Cache-Systeme verbunden sind, wird jedoch bei Speicher-zu- Speicher-Übertragungen nicht benötigt und verlangsamt die Übertragung oder verwendet nicht benötigte Hardware oder in manchen Fällen beides. Da der Erweiterungsspeicher definitionsgemäß vom Prozessor nicht direkt adressiert werden kann, muß ein Verfahren eingesetzt werden, um die Daten im Erweiterungsspeicherbereich zu verlagern, bevor sie von den Anwendungsprogrammen genutzt werden können, die im System ausgeführt werden. Die Belastung durch die Übertragung der Daten aus dem Erweiterungsspeicher in den realen Speicher verschlechtert die Systemleistung, und infolgedessen konnten die vollen Vorzüge des Erweiterungsspeichers noch nicht verwirklicht werden.
  • Es ist daher die Aufgabe dieser Erfindung, ein verbessertes, Cache-orientiertes Speichersubsystem zur Verfügung zu stellen, das sich insbesondere für die Verwendung in einem Datenverarbeitungssystem eignet, das eine Vektor-Prozessoreinheit enthält und das insbesondere einen Cache mit Fehlerkorrektur-Fähigkeit sowie ein verbessertes Mittel für Speicher-zu-Speicher-Übertragungen von Daten in einem Cache-System enthält.
  • Die Lösung wird in dem kennzeichnenden Teil von Anspruch 1 sowie in Anspruch 7 bezüglich des zugehörigen Verfahrens beschrieben. Weitere Lösungen sind in den darauf bezugnehmenden Ansprüchen 2 bis 6, 8 und 9 gekennzeichnet.
  • Diese und andere Ziele werden von einem Speichersubsystem erreicht, bei dem Speicher-zu-Speicher-Übertragungen, d. h. Datenübertragungen zwischen realem Speicher und Erweiterungsspeicher, die Verwendung eines Speicherpuffers bedingen, der sich außerhalb des Cache-Systems befindet, aber der Größe des L2-Cache entspricht. Harte Datenfehler im Cache-System werden mit Hilfe von Standard-Paritätsverfahren festgestellt. Das Neuversuch-System für Anweisungen führt zur Korrektur des Fehlers unter Verwendung des Cache eine Reihe von Operationen an den Daten durch. Vektorprozessor-Operationen, die die Übertragung von Daten aus dem Speicher beinhalten, werden durchgeführt, indem die Daten direkt aus dem Speicher übertragen werden, wobei der Cache und die Zentraleinheit umgangen werden.
  • Ein vollständiges Verständnis dieser Erfindung ergibt sich aus der ausführlichen Beschreibung der hierin nachfolgend beschriebenen bevorzugten Ausführungsform und aus den beigefügten Zeichnungen, die nur zur Veranschaulichung vorgesehen sind und nicht auf diese Erfindung beschränkt sein sollen, wobei
  • Fig. 1 ein Einprozessor-Rechnersystem darstellt;
  • Fig. 2 ein Dreifach-Rechnersystem darstellt;
  • Fig. 3 den detaillierten Aufbau der I/D-Caches (L1), der I-Einheit, E-Einheit und des Steuerspeichers (C/S) darstellt, die in Fig. 1 und 2 darstellt sind;
  • Fig. 4 ein weiteres Diagramm des dreiteiligen (triadischen) Rechnersystems von Figur 2 darstellt und
  • Fig. 5 den detaillierten Aufbau des Speichersubsystems von Fig. 4 darstellt.
  • Fig. 6 ist eine Darstellung der Anordnung von realem Speicher und Erweiterungsspeicher in der Hauptspeichereinheit.
  • Fig. 7 ist eine Darstellung der Steuerung für den Speicherpuffer.
  • Fig. 8 zeigt die Art, auf die die Vektorprozessoren mit den Zentralprozessoren verbunden sind.
  • Fig. 9 ist ein Zeitdiagramm der Vektorprozessor-Abrufoperation.
  • In Fig. 1 ist das Ein-Prozessor-Rechnersystem dieser Erfindung darstellt.
  • In Fig. 1 umfaßt das Einprozessor-System einen L3-Speicher 10, der mit einer Speichersteuerung (Storage Controller - SCL) 12 verbunden ist. Auf der einen Seite ist die Speichersteuerung 12 mit einer Steuerung 14 für die integrierten E/A-Subsysteme verbunden, wobei die Steuerung 14 mit integrierten Adaptern und Einzelkartenkanälen 16 verbunden ist. Auf der anderen Seite ist die Speichersteuerung 12 mit I/D-Caches (Jnstructions/Data - Anweisungen/Daten) (L1) 18 verbunden, die aus einem Anweisungscache und einem Datencache bestehen, die zusammen als "L1"-Cache bezeichnet werden. Die I/D-Caches 18 sind mit einer Anweisungseinheit (Instruction Unit - I-unit), einer Ausführungseinheit (Execution Unit - E-unit), einem Steuerspeicher 20 und einem Vektorprozessor (Vector Processor - VP) 22 verbunden. Der Vektorprozessor 22 wird in der Patentanmeldung US-A 4 967 343 mit dem Titel "High Performance Parallel Vector Processort" beschrieben. Das Einprozessor-System von Figur 1 umfaßt auch die Mehrsystem-Kanalkommunikationseinheit 24.
  • Der L3-Speicher 10 umfaßt 2 "intelligente" Speicherkarten. Die Karten sind "intelligent", da sie bestimmte spezifische Merkmale aufweisen: Fehlerprüfung und -korrektur, Refresh-Adreßregister und Zähler mit erweiterter Fehlerprüfung und -korrektur (Extended Error Checking and Correction - ECC) sowie Bit-Spare-Fähigkeit. Die Schnittstelle zum L3-Speicher 10 ist 8 Byte breit. Speichergrößen sind 8, 16, 32 und 64 Megabyte. Der L3-Speicher ist mit einer Speichersteuerung (SCL) 12 verbunden.
  • Die Speichersteuerung 12 umfaßt drei Bus-Vermittler, die Zugriffe auf den L3-Speicher 10, auf die E/A-Subsystemsteuerung 14 und auf die I/D-Caches 18 vermitteln. Die Speichersteuerung enthält weiter ein Verzeichnis, das dafür verantwortlich ist, die Anweisungs- und Datencaches 18, die anders auch als "L1-Cache" bezeichnet werden, nach Daten zu durchsuchen. Falls sich die Daten in den L1-Caches 18 befinden, die Daten aber veraltet sind, entwertet die Speichersteuerung 12 die veralteten Daten in den L1-Caches 18 und ermöglicht es dadurch der E/A-Subsystemsteuerung 14, die Daten im L3-Speicher 10 zu aktualisieren. Anschließend müssen die Anweisungs- und Ausführungseinheiten 20 die aktualisierten Daten aus dem L3-Speicher 10 beschaffen. Die Speichersteuerung 12 enthält weiter eine Vielzahl von Puffern für die Pufferung von Daten, die aus der E/A-Subsystemsteuerung 14 in den L3-Speicher 10 eingegeben werden, und für die Pufferung von Daten, die von den Anweisungs-/Ausführungseinheiten 20 in den L3-Speicher 10 eingegeben werden. Der den Anweisungs-/Ausführungseinheiten 20 zugeordnete Puffer ist ein 256-Byte-Zeilenpuffer, der es gestattet, für bestimmte Anweisungstypen, z. B. für sequentielle Operationen, jeweils 8 Byte lange Einträge aufzubauen. Wenn dieser Zeilenpuffer voll ist, veranlaßt er, daß eine Blockübertragung von Daten zum L3-Speicher stattfindet. Daher werden Speicheroperationen von mehreren einzelnen Speicheroperationen auf eine viel kleinere Zahl von Zeilenübertragungen reduziert.
  • Der Anweisungscache/Datencache 18 ist jeweils ein 16-kbyte-Cache. Die Schnittstelle zur Speichersteuerung 12 ist 8 Byte breit; eine Seiteneinlagerungsoperation aus der Speichersteuerung 12 erfordert daher 8 Datenübertragungszyklen. Der Datencache 18 ist ein "Durchspeicherungs"-Cache; das heißt, daß Daten aus den Anweisungs-/Ausführungseinheiten 20 im L3-Speicher gespeichert werden und, falls die entsprechenden veralteten Daten in den L1-Caches 18 nicht vorhanden sind, die Daten nicht in die L1-Caches transportiert und dort gespeichert werden. Zur Unterstützung dieser Operation befindet sich beim L1-Datencache 18 ein "Speicherungs-Puffer", der in der Lage ist, bis zu 8 Speicherungsoperationen zu puffern.
  • Der Vektorprozessor 22 ist mit dem Datencache 18 verbunden. Er nutzt ebenfalls den Datenstrom von der Anweisungs-/Ausführungseinheit 20 zur Speichersteuerung 12, der Vektorprozessor 22 läßt es jedoch, während er in Betrieb ist, nicht zu, daß die Anweisungs-/Ausführungseinheit 20 zum Abrufen der Daten Zugriffe auf die Speichersteuerung 12 durchführt.
  • Das integrierte E/A-Subsystem 14 ist über einen 8-Byte-Bus mit der Speichersteuerung 12 verbunden. Das Subsystem 14 umfaßt drei 64-Byte-Puffer, die verwendet werden, um von dem integrierten E/A-Subsystem 14 kommende Daten mit der Speichersteuerung 12 zu synchronisieren. Das heißt, die Anweisungs-/Ausführungseinheit 20 und das E/A-Subsystem 14 arbeiten mit verschiedenen Takten, wobei die Synchronisierung der beiden Takte durch die Konstruktion aus den drei 64-Byte-Puffern erreicht wird.
  • Die Mehrsystem-Kanalkommunikationseinheit 24 ist ein systemexterner Kanal-Kanal-Adapter mit vier Anschlüssen.
  • In Figur 2 ist ein dreiteiliges (triadisches) (Mehrprozessoren-) System darstellt.
  • In Figur 2 umfaßt ein Speichersubsystem 10 ein Paar von L3-Speichern 10a/10b und eine Buswechseleinheit (Bus Switching Unit - BSU) 26, wobei die BSU einen L2-Cache 26a enthält. Das Speichersubsystem 10 wird in Figur 5 detaillierter dargestellt. Die BSU 26 ist mit dem integrierten E/A-Subsystem 14, mit dem Gemeinschaftskanal-Prozessor A (Shared Channel Processor A - SHCP-A) 28a, mit dem Gemeinschaftskanal-Prozessor B (Shared Channel Processor B - SHCP-B) 28b und mit drei Prozessoren verbunden: mit einem ersten Prozessor, der Anweisungs-/Datencaches 18a und Anweisungs-/Ausführungseinheiten/Steuerspeicher 20a enthält, einem zweiten Prozessor, der Anweisungs-/Datencaches 18b und Anweisungs-/Ausführungseinheiten/Steuerspeicher 20b enthält, sowie einem dritten Prozessor, der Anweisungs-/Datencaches 18c und Anweisungs-/Ausführungseinheiten/Steuerspeicher 20c enthält. Jeder der Anweisungs-/Datencaches 18a, 18b und 18c wird als "L1"-Cache bezeichnet. Der Cache in der BSU 26 wird als "L2- Cache" 26a bezeichnet, und der Hauptspeicher 10a/10b wird als "L3-Speicher" bezeichnet.
  • Die BSU 26 verbindet die drei Prozessoren 18a/ 20a, 18b/20b und 18c/20c, zwei L3-Speicheranschlüsse 10a/10b, zwei Gemeinschaftskanal-Prozessoren 28 sowie ein integriertes E/A- Subsystem 14. Die BSU 26 umfaßt Schaltungen, die die Priorität für zu verarbeitende Anforderungen festlegen, z. B. Anforderungen von jedem der drei Prozessoren an den L3-Speicher, oder Anforderungen vom E/A-Subsystem 14 oder von den Gemeinschaftskanal-Prozessoren, Schaltungen, die die Schnittstellen betreiben, und Schaltungen für den Zugriff auf den L2- Cache 26a. Der L2-Cache ist ein "Einspeicherungs"-Cache; das heißt, Operationen, die zum Modifizieren von Daten auf den L2- Cache zugreifen, müssen auch Daten modifizieren, die sich im L2- Cache befinden (die einzige Ausnahme zu dieser Regel besteht darin, daß dann, wenn die Operation vom E/A-Subsystem 14 ausgeht und wenn sich die Daten nur im L3-Speicher 10a/10b, aber nicht im L2-Cache 26a befinden, die Daten nur im L3-Speicher, aber nicht im L2-Cache modifiziert werden).
  • Die Schnittstelle zwischen der BSU 26 und den L3-Speichern 10a/10b umfaßt zwei 16-Byte-Zeilen/-Anschlüsse anstelle des einzelnen 8-Byte-Anschlusses in Figur 1. Der Speicher 10 von Figur 1 jedoch ist mit den Speicherkarten 10a/10b von Figur 2 identisch. Auf die beiden Speicherkarten 10a/10b von Figur 2 wird parallel zugegriffen.
  • Der Gemeinschaftskanal-Prozessor 28 ist mit der BSU 26 über zwei Anschlüsse verbunden, wobei jeder Anschluß eine 8-Byte- Schnittstelle ist. Der Gemeinschaftskanal-Prozessor 28 wird bei einer Frequenz betrieben, die von der BSU 26 unabhängig ist, wobei die Takte innerhalb der BSU mit den Takten in dem Gemeinschaftskanal-Prozessor 28 auf eine Weise synchronisiert werden, die der Taktsynchronisierung zwischen der Speichersteuerung 12 und dem integrierten E/A-Subsystem 14 von Figur 1 ähnelt.
  • Eine Funktionsbeschreibung des Betriebs des Einprozessor-Rechnersystems von Figur 1 wird in den folgenden Abschnitten mit Bezug auf Figur 1 dargelegt.
  • Normalerweise befinden sich Anweisungen im Anweisungscache (L1- Cache) 18 und erwarten ihre Ausführung. Die Anweisungs-/Ausführungseinheit 20 durchsucht ein im L1-Cache 18 befindliches Verzeichnis, um zu ermitteln, ob die Beispielanweisung darin gespeichert ist. Falls die Anweisung nicht im L1-Cache 18 gespeichert ist, erzeugt die Anweisungs-/Ausführungseinheit 20 eine Speicheranforderung an die Speichersteuerung 12. Die Adresse der Anweisung bzw. der Cache-Zeile, die die Anweisung enthält, wird der Speichersteuerung 12 zur Verfügung gestellt. Die Speichersteuerung 12 vermittelt den Zugriff auf den mit dem L3-Speicher 10 verbundenen Bus. Schließlich wird die Anforderung von der Anweisungs-/Ausführungseinheit 20 zum L3-Speicher 10 weitergegeben, wobei die Anforderung einen Befehl umfaßt, der angibt, daß eine Zeile im L3-Speicher für die Übertragung zur Anweisungs-/Ausführungseinheit 20 abzurufen ist. Der L3-Speicher speichert die Anforderung ein, decodiert sie, wählt die Position auf der Speicherkarte aus, an der die Anweisung gespeichert ist, und nach einigen Verzögerungszyklen wird die Anweisung in 8- Byte-Inkrementen vom L3-Speicher zur Speichersteuerung 12 geliefert. Die Anweisung wird anschließend von der Speichersteuerung 12 zum Anweisungscache (L1-Cache) 18 übertragen, worin sie vorübergehend gespeichert wird. Die Anweisung wird von dem Anweisungscache 18 zu dem Anweisungspuffer innerhalb der Anweisungs-/Ausführungseinheit 20 erneut übertragen. Die Anweisung wird über einen Decoder innerhalb der Anweisungseinheit 20 decodiert. Recht häufig wird zur Ausführung der Anweisung ein Operand benötigt, wobei sich der Operand im Speicher 10 befindet. Die Anweisungs-/Ausführungseinheit 20 durchsucht das Verzeichnis im Datencache 18; falls der Operand im Verzeichnis des Datencache 18 nicht gefunden wird, wird von der Anweisungs-/Ausführungseinheit 20 ein weiterer Speicherzugriff ausgegeben, um auf den L3-Speicher 10 exakt in der gleichen Weise zuzugreifen, wie oben hinsichtlich des Mißerfolgs im Anweisungscache beschrieben. Der Operand wird im Datencache gespeichert, und die Anweisungs-/Ausführungseinheit 20 durchsucht den Datencache 18 nach dem Operanden. Falls die Anweisung die Verwendung eines Mikroprogramms verlangt, verwendet die Anweisungs-/Ausführungseinheit 20 das Mikroprogramm, das sich auf der Karte der Anweisungs-/Ausführungseinheit 20 befindet. Falls eine Eingabe/Ausgabe-Operation (E/A) durchgeführt werden muß, decodiert die Anweisungs-/Ausführungseinheit 20 eine E/A-Anweisung, die sich im Anweisungscache 18 befindet. Die Informationen werden in einem Hilfsabschnitt des L3-Speichers 10 gespeichert, der von der Anweisungsausführung abgetrennt ist. An diesem Punkt informiert die Anweisungs-/Ausführungseinheit 20 das integrierte E/A-Subsystem 14, daß derartige Informationen im L3-Speicher gespeichert sind, wobei die Prozessoren des Subsystems 14 auf den L3- Speicher 10 zugreifen, um die Informationen abzurufen.
  • Eine Funktionsbeschreibung des Betriebs des Mehrprozessoren- Rechnersystems von Figur 2 wird in den folgenden Abschnitten mit Bezug auf Figur 2 dargelegt.
  • In Figur 2 sei vorausgesetzt, daß eine bestimmte Anweisungs-Ausführungseinheit (20a, 20b oder 20c) eine Anweisung anfordert und ihren eigenen L1-Cache (18a, 18b oder 18c) nach der gewünschten Anweisung durchsucht. Weiter sei vorausgesetzt, daß die gewünschte Anweisung sich nicht im L1-Cache befindet. Die betreffende Anweisungs-/Ausführungseinheit wird daraufhin Zugriff auf die BSU 26 anfordern, um den darin befindlichen L2- Cache zu durchsuchen. Die BSU 26 enthält einen Vermittler, der Anforderungen von jeder der Anweisungs-/Ausführungseinheiten 20a, 20b, 20c und von dem Gemeinschaftskanal-Prozessor. 28 sowie vom integrierten E/A-Subsystem 14 empfängt, wobei der Vermittler jeweils einer dieser Einheiten Zugriff gewährt. Wenn der betreffenden Anweisungs-/Ausführungseinheit (20a bis 20c) Zugriff auf die BSU gewährt wird, um den L2-Cache 26a zu durchsuchen, durchsucht die betreffende Anweisungs-/Ausführungseinheit das Verzeichnis des L2-Cache 26a, der sich innerhalb der BSU 26 befindet, nach der gewünschten Anweisung. Es sei vorausgesetzt, daß die gewünschte Anweisung im L2-Cache gefunden wird. In diesem Fall wird die gewünschte Anweisung zu der betreffenden Anweisungs-/Ausführungseinheit zurückgeliefert. Falls die gewünschte Anweisung sich nicht innerhalb des L2-Cache befindet, wie von seinem Verzeichnis angegeben, wird die gewünschten Anweisung beim L3-Speicher (10a oder 10b) angefordert. Falls sich die gewünschte Anweisung im L3-Speicher befindet, wird sie sofort in 16-Byte-Abschnitten zur BSU 26 übertragen und an die betreffende Anweisungs-/Ausführungseinheit (20a bis 20c) übergeben, während sie gleichzeitig im L2-Cache 26a in der BSU 26 gespeichert wird. Zusätzliche, in der BSU befindliche Funktionen beziehen sich auf Regeln für die Speicherkonsistenz in einem Mehrprozessorensystem. Wenn beispielsweise eine bestimmte Anweisungs-/Ausführungseinheit 20c (sonst auch als "Prozessor" 20c bezeichnet) Daten modifiziert, müssen diese Daten für alle anderen Anweisungs-/Ausführungseinheiten oder "Prozessoren" 20a, 20b in dem Komplex sichtbar gemacht werden. Falls der Prozessor 20c Daten modifiziert, die gegenwärtig in seinem L1-Cache 18c gespeichert sind, wird im L2-Cacheverzeichnis 26a der BSU 26 eine Suche nach diesen konkreten Daten durchgeführt. Falls sie gefunden werden, werden die konkreten Daten modifiziert, um die Modifikation im L1-Cache 18c wiederzugeben. Darüber hinaus wird es den anderen Prozessoren 20a und 20b gestattet, die nun im L2-Cache 26a befindlichen modifizierten, korrekten Daten zu sehen, um es diesen anderen Prozessoren zu ermöglichen, ihre entsprechenden Daten zu modifizieren, die sich in ihren L1-Caches 18a und 18b befinden. Der betreffende Prozessor 20c kann erst wieder auf die betreffenden Daten zugreifen, nachdem die anderen Prozessoren 20a und 20b Gelegenheit hatten, ihre betreffenden Daten entsprechend zu modifizieren.
  • In Figur 3 ist ausführlich der Aufbau jeder Anweisungs-/Ausführungseinheit (20 in Figur 1 oder einer der Blöcke 20a bis 20c in Figur 2) und ihres zugehörigen L1-Cache (18 in Figur 1 oder einer der Blöcke 18a bis 18c in Figur 2) darstellt.
  • In Figur 1 und in Figur 2 befindet sich die Anweisungs-/Ausführungseinheit 20, 20a, 2gb und 20c in einem Block mit der Bezeichnung "I-Einheit E-Einheit C/S (92KB)". Dieser Block kann als "Prozessor", "Anweisungsverarbeitungseinheit" oder, wie oben, "Anweisungs-/Ausführungseinheit" bezeichnet werden. Zur Vereinfachung wird in der unten folgenden Beschreibung der Block 20, 20a bis 20c als "Prozessor" bezeichnet. Außerdem werden die "I/D-Caches (L1)" als "L1-Cache" bezeichnet. Figur 3 zeigt den detaillierten Aufbau des Prozessors (20, 20a, 20b oder 20c) und des L1-Cache (18, 18a, 18b oder 18c)
  • In Figur 3 umfaßt der Prozessor (20, 20a bis 20c) die folgenden Elemente. Ein Steuerspeicher-Subsystem 20-1 umfaßt einen festen Hochgeschwindigkeits-Steuerspeicher 20-1a von 84 kByte, einen seitenwechselfähigen Bereich (8 kByte, 2 kWord, 4-Wege-assoziativer seitenwechselfähiger Bereich) 20-1b, ein Verzeichnis 20-1c für den seitenwechselfähigen Steuerspeicher 20-1b, ein Steuerspeicher-Adreßregister (Control Store Address Register - CSAR) 20-1d und eine 8-Elemente-Verzweigungs- und Verknüpfungseinrichtung (BAL STK) 20-1e. Die Rechnerstatus-Steuerung 20-2 enthält die globale Steuerung 20-2a für den Prozessor, eine Operationen-Verzweigungstabelle 20-2b, die mit dem CSAR über den Steuerspeicher-Ursprungsadreßbus verknüpft ist und verwendet wird, um die Anfangsadresse für mikrocodierte Anweisungen zu erzeugen. Eine Adressenerzeugungseinheit 20-3 umfaßt 3 Chips, wobei der erste Anweisungscache-DLAT und Verzeichnis 20-3a ist, der zweite Datencache-DLAT und Verzeichnis 20-3b ist und der dritte ein Adressengenerierungschip 20-3c ist, der mit dem L1- Cache 18, 18a-18c über den Adreßbus verbunden ist. Anweisungs- DLAT und Verzeichnis 20-3a ist mit dem Anweisungscache-Abschnitt des L1-Cache über vier "Treffer"-Zeilen verbunden, die angeben, daß die angeforderte Anweisung im Anweisungscache-Abschnitt 18- 1a des L1-Cache zu finden ist. Ebenso stellen vier "Treffer"- Zeilen die Verbindung zu Daten-BLAT und Verzeichnis 20-3b her und geben an, daß die angeforderten Daten im Datencache-Abschnitt 18-2b des L1-Cache zu finden sind. Die Adressenerzeugungseinheit 20-3 enthält Kopien der 16 zur Erzeugung von Adressen eingesetzten Mehrzweckregister "siehe GPR COPY 20-3d) und enthält drei Speicher-Adreßregister (Storage Address Register - SARS) 20-3e, die verwendet werden, um dem Mikroprogramm Adressen für die Anweisungsausführung zu liefern. Mit dem Datencache 18-2 ist über den Datenbus (D-Bus) eine Festkomma-Anweisungs-/Ausführungseinheit 20-4 verbunden, die dem lokalen Speicherstapel (lokaler Speicher) 20-4a entspricht, der die oben genannten 16 Mehrzweckregister sowie mehrere Arbeitsregister enthält, die ausschließlich vom Mikroprogramm verwendet werden; Bedingungsregister 20-4b, die die Ergebnisse mehrerer arithmetischer und Schiebe-Operationen enthalten und die Ergebnisse eines 370-Bedingungscodes enthalten; eine 4-Byte-Arithmetik-/Logik-Einheit (ALU) 20-4c; eine 8-Byte-Rotier-/Misch-Einheit 20-4d; eine Verzweigungsbitauswahl-Hardware 20-4e, die die Auswahl von Bits aus verschiedenen Registern gestattet, die die Richtung einer Verzweigungsoperation festlegen, wobei die Bits aus den Mehrzweckregistern, Arbeitsregistern und Bedingungsregistern ausgewählt werden. Ein Gleitkomma-Prozessor 20-5 enthält Gleitkomma- Register und vier Mikroprogramm-Arbeitsregister 20-5e, eine Befehlsdecodier- und Steuerfunktion 20-5a, einen Gleitkomma-Addierer 20-5b, eine Festkomma- und Gleitkomma- Multiplikationsmatrix 20-5c und eine Quadratwurzel- und Divisionseinrichtung 20-5d. Der Gleitkomma-Prozessor 20-5 ist in der Patentanmeldung US-A-4 916 652 mit dem Titel "Dynamic Multiple Instruction Stream Multiple Data Multiple Pipeline Apparatus for Floating Pomt Single Instruction Stream Single Data Architectures" offengelegt. Die ALU 20-4c enthält einen Addierer, der in der Patentanmeldung US-A-4 914 617 mit dem Titel "A High Performance Parallel Binary Byte Adder" offengelegt ist. Ein außerhalb befindlicher Chip 20-6 enthält Zeitgeber und die Unterbrechungsstruktur, wobei die Unterbrechungen vom E/A-Subsystem 14 zur Verfügung gestellt werden, und andere Komponenten. Eine Interprozessor-Kommunikationseinrichtung (Inter-Processor Communication Facility - IPC) 20-7 ist mit dem Speichersubsystem über einen Kommuhikationsbus verbunden, wodurch die Prozessoren in die Lage versetzt werden, sich gegenseitig Nachrichten zuzusenden, und Zugriff auf die Zeituhr ermöglicht wird.
  • In Figur 3 umfaßt der L1-Cache (einer der Blöcke 18, 18a, 18b oder 18c) die folgenden Elemente. Ein Anweisungscache 18-1 umfaßt einen 16-kByte-/4-Wege-Cache 18-1a, einen 16-Byte-Anweisungspuffer 18-1b an dessen Ausgang sowie ein 8-Byte-Seiteneinlagerungsregister 18-1c an dem Eingang vom Speicher. Der mit dem Anweisungscache 18-1 verbundene Speicherbus ist acht Byte breit und mit dem Seiteneinlagerungsregister 18-1c verbunden. Das Seiteneinlagerungsregister 18-1c ist mit dem Steuerspeicher-Subsystem 20-1 verbunden und liefert Daten an das Subsystem für den Fall eines Mißerfolgs im seitenwechselfähigen Steuerspeicher, bei dem neue Daten in den Steuerspeicher geliefert werden müssen. Ein Datencache 18-2 umfaßt einen Seiteneinlagerungspuffer 18-2a, der ebenfalls mit dem Speicherbus verbunden ist; einen Datencache 18-2a, der ein 16-kByte-/4- Wege-Cache ist; einen Cache-Datenstrom 18-2c, der eine Folge von Eingabe-und Ausgaberegistern umfaßt und mit dem Prozessor über einen 8-Byte-Datenbus (D-Bus) und mit dem Vektorprozessor (22a-22c) über einen 8-Byte-"Vektorbus" verbunden ist; einen aus 8 Elementen bestehenden Speicherpuffer (STOR BFR) 18-2d.
  • Eine Beschreibung des funktionalen Betriebs eines Prozessors und L1-Cache, wie in Figur 3 gezeigt, wird in den folgenden Abschnitten mit Bezug auf Figur 3 der Zeichnungen gegeben.
  • Es sei vorausgesetzt, daß.sich eine auszuführende Anweisung im Anweisungscache 18-1a befindet. Die Anweisung wird aus dem Anweisungscache 18-1a abgerufen und im Anweisungspuffer 18-1b gespeichert (es wird nach Möglichkeit versucht, den Anweisungspuffer ständig gefüllt zu halten). Die Anweisung wird aus dem Anweisungspuffer 18-1b abgerufen und in den Anweisungsregistern des Adressenerzeugungschips 20-3, der Festkomma-Ausführungseinheit 20-4 und der Maschinenstatus-Steuerung 20-2 gespeichert; an dieser Stelle beginnt die Decodierung der Anweisung. Operanden werden aus GPR COPY 20-3d in der Adressenerzeugungseinheit 20-3 abgerufen, wenn ein Operand benötigt wird (normalerweise wird auf GPR COPY zugegriffen, wenn Operanden für die Basis- und Indexregister für eine RX-Anweisung erforderlich sind). Im nächsten Zyklus beginnt der Adressenerzeugungszyklus. Der Inhalt der Basis- und Indexregister wird zu einem Verschiebungsfeld aus der Anweisung addiert, und die effektive Adresse wird erzeugt und zum Datencache 18-2 und/oder den Anweisungscache 18-1 gesandt. In diesem Beispiel wird ein Operand gesucht. Daher wird die effektive Adresse zum Datencache 18-2 gesandt. Die Adresse wird auch zum Daten-DLAT- und Verzeichnis-Chip 20-3b gesandt (da in diesem Beispiel ein Operand gesucht wird). Der Zugriff auf den Cache und die Verzeichnisse beginnt im dritten Zyklus. Die DLAT 20-3b bestimmt, ob die Adresse von einer effektiven Adresse in eine absolute Adresse übersetzbar ist. Da wir voraussetzen, daß diese Übersetzung zuvor durchgeführt wurde, haben wir die Übersetzung aufgezeichnet. Die übersetzte Adresse wird mit der Ausgabe des Cache-Verzeichnisses 20-3b verglichen. Vorausgesetzt, daß die Daten zuvor in den Cache 18-2b abgerufen wurden, werden die Verzeichnisausgabe und die DLAT-Ausgabe verglichen; falls der Vergleich Übereinstimmung ergibt, wird eine der vier "Treffer"-Zeilen aus Daten-DLAT und Verzeichnis 20-3b erzeugt. Die Treffer-Zeilen stehen mit dem Datencache 18-2b in Verbindung; eine erzeugte "Treffer"-Zeile gibt an, welche der vier Assoziativitätsklassen die Daten enthält, die wir wieder auffinden möchten. Im nächsten Zyklus wird die Ausgabe des Daten-Cache 18-2b durch eine Schiebeeinrichtung für die Abruf- Ausrichtung im Cache-Datenstrom 18-2c geleitet, entsprechend verschoben, auf dem D-BUS zur Festkomma-Ausführungseinheit 20-4 übertragen und in die ALU 20-4c eingespeichert. Dies ist der Zugriff auf Operand 2 bei einer Anweisung des RX-Typs. Parallel zu diesem Schiebeprozeß wird auf Operand 1 aus den Mehrzweckregistern im lokalen Speicher 20-4a zugegriffen. Infolgedessen werden erforderlichenfalls zwei Operanden im Eingang der ALU 20- 4c eingespeichert. Im fünften Zyklus führt die ALU 20-4c die entsprechende Verarbeitung (addieren, subtrahieren, dividieren etc.) der beiden Operanden durch, wie durch den Op-Code der Anweisung festgelegt. Am Ende des fünften Zyklus wird der Ausgang der ALU 20-4c eingespeichert, und die Bedingungsregister 20-4b werden eingespeichert, um eine Überlauf- oder Null-Bedingung anzuzeigen. Im sechsten Zyklus wird die Ausgabe der ALU 20-4c in den lokalen Speicher 20-4a und in GPR COPY 20-4d der Adressenerzeugungseinheit 20-3 zurückgeschrieben, um GPR COPY 20-3d mit dem Inhalt des lokalen Speichers 20-4a synchronisiert zu halten. Wenn der Decodierzyklus dieser Anweisung abgeschlossen ist, kann der Decodierzyklus der nächsten Anweisung beginnen, so daß zu jedem Zeitpunkt bis zu sechs Anweisungen gerade decodiert oder ausgeführt werden. Bestimmte Anweisungen erfordern die Anwendung eines Mikroprogramms für den Abschluß der Ausführung. Während des Decodierzyklus wird daher die Op-Verzweigungstabelle 20-2b durchsucht, wobei der Op-Code aus der Anweisung als Adresse verwendet wird und die Op-Verzweigungstabelle die Anfangsadresse der Mikroprogramm-Routine liefert, die für die Ausführung der Anweisung benötigt wird. Diese wie auch andere Anweisungen benötigen mehr als einen Zyklus für die Ausführung. Daher wird die Anweisungsdecodierung ausgesetzt, während die Op-Verzweigungstabelle durchsucht wird. Im Fall des Mikroprogramms wird der I- BUS genutzt, um der Decodier-Hardware Mikro-Anweisungen zu liefern. Der Anweisungscache 18-1a wird abgeschaltet, der Steuerspeicher 20-1a wird eingeschaltet, und die Mikro-Anweisungen werden über den I-BUS übergeben. Bei Gleitkomma-Anweisungen verläuft die Decodierung weiter, wie zuvor beschrieben, mit der Ausnahme, daß während des Adressenerzeugungszyklus ein Befehl zur Gleitkomma-Einheit 20-5 gesandt wird, um die richtige, auszuführende Operation anzugeben und kennzuzeichnen. Bei einer RX- Gleitkomma-Operation beispielsweise wird ein Operand aus dem Datencache 18-2b abgerufen, wie oben beschrieben, und der Operand wird zum Gleitkomma-Prozessor 20-5 statt zum Festkomma-Prozessor 20-4 gesandt. Die Ausführung der Gleitkomma-Anweisung beginnt. Wenn sie abgeschlossen ist, werden die Ergebnisse der Ausführung zur Festkomma-Ausführungseinheit 20-4 zurückgehefert, wobei die "Ergebnisse" der Bedingungscode und etwaige Unterbrechungsbedingungen sind, z. B. ein Überlauf.
  • Die folgende Beschreibung ist eine alternative funktionale Beschreibung des in Figur 3 der Zeichnungen dargestellten Systems.
  • In Figur 3 ist der erste Abschnitt der Pipeline mit "Anweisung decodieren" bezeichnet. Die Anweisung wird decodiert. Im Falle einer RX-Anweisung, bei der sich ein Operand im Speicher befindet, muß der Inhalt der Basis- und Indexregister aus GPR COPY 20-3d beschafft werden. Zu den Basis- und Indexregistern wird ein Verschiebungsfeld addiert. Am Anfang des nächsten Zyklus wird die Addition der Basis-, Index- und Verschiebungsfel- der abgeschlossen und liefert eine effektive Adresse. Die effektive Adresse wird zu den DLAT- und Verzeichnis-Chlps 20-3a/20-3b gesandt. Der höherwertige Abschnitt der effektiven Adresse muß übersetzt werden; der niederwertige Abschnitt dagegen wird nicht übersetzt und wird zum Gache 18-1a/18-2b gesandt. Im dritten Zyklus beginnt der Gache eine Zugriffsoperation mit den von ihm beschafften Bits. Die DLAT-Verzeichnisse werden mittels einer virtuellen Adresse durchsucht, um eine absolute Adresse zu beschaffen. Diese absolute Adresse wird mit der im Cache-Verzeichnis gespeicherten absoluten Adresse verglichen. Falls dieser Vergleich erfolgreich verläuft, wird die "Treffer"-Zeile erzeugt und zum Cache-Chip 18-1a/18-2b gesandt. In der Zwischenzeit hat der Cache-Chip auf alle vier Assoziativitätsklassen zugegriffen und führt entsprechend die Einspeicherung einer Ausgabe durch. Im vierten Zyklus wird einer der vier "Anschlüsse" (oder Assoziativitätsklassen) gewählt, die Daten werden ausgerichtet und über den Datenbus zu dem Fest- oder Gleitkommaprozessor 20-4 bzw. 20-5 gesandt. Daher wird am Ende des vierten Zyklus ein Operand im Eingang der ALU 20-4c eingespeichert. In der Zwischenzeit werden im Prozessor andere Anweisungen ausgeführt. Es wird auf GPR COPY 20-3d und den lokalen Speicher 20-4a zugegriffen, um den anderen Operanden zu beschaffen. An dieser Stelle werden beide Operanden am Eingang der ALU 20-4c eingespeichert. Ein Zyklus wird verwendet, um die Berechnung durchzuführen, die Bedingungsregister zu setzen und schließlich das Ergebnis in die Mehrzweckregister in GPR COPY 20-3d zu schreiben. Das Ergebnis kann beispielsweise zum Zweck der Adressenberechnung erforderlich sein. Somit würde das Ergebnis in AGEN ADDER 20-3c eingegeben. Während der Ausführung bestimmter Anweisungen ist kein Zugriff auf die Caches 18-1a/18-2b erforderlich. Daher werden, wenn die Decodierung der Anweisungen abgeschlossen ist, die Ergebnisse ohne weitere Verzögerung (beim Zugriff auf die Cache-Speicher) direkt an die Ausführungseinheit übergeben. Sobald also eine Anweisung decodiert und an den Adressenerzeugungs-Chip 20-3 übergeben wurde, wird eine weitere Anweisung decodiert.
  • In Figur 4 ist ein weiteres Diagramm des Datenverarbeitungssystems von Figur 2 darstellt.
  • In Figur 4 ist das Datenverarbeitungssystem ein Mehrprozessorensystem und enthält ein Speichersubsystem 10; einen ersten L1- Cachespeicher 18a; einen zweiten L1-Cachespeicher 18b; einen dritten L1-Cachespeicher 18c; eine erste Prozessoreinheit 20a, die eine Anweisungseinheit, eine Ausführungseinheit und einen Steuerspeicher enthält, die mit dem ersten L1-Cachespeicher 18a verbunden sind; eine mit dem ersten L1-Cachespeicher 18a verbundene Vektor-Prozessoreinheit 22a; eine zweite Prozessoreinheit 2gb, die eine Anweisungseinheit, eine Ausführungseinheit und einen mit dem zweiten L1-Cachespeicher 18b verbundenen Steuerspeicher enthält; eine mit dem zweiten L1-Cachespeicher 18b verbundene zweite Vektor-Prozessoreinheit 22b; eine dritte Verarbeitungseinheit 20c, die eine Anweisungseinheit, eine Ausführungseinheit und einen mit dem dritten L1-Cachespeicher 18c verbundenen Steuerspeicher enthält; sowie eine dritte, mit dem dritten L1-Cachespeicher 18c verbundene Vektor- Prozessoreinheit 22c. Ein Gemeinschaftskanal-Prozessor A 28a und ein Gemeinschaftskanal-Prozessor B 28b sind gemeinsam mit dem Speichersubsystem 10 verbunden, und ein integriertes Adapter- Subsystem 14, 16 ist ebenfalls mit dem Speichersubsystem 10 verbunden.
  • In Figur 5 ist das Speichersubsystem 10 von Figur 2 und 4 darstellt.
  • In Figur 5 enthält das Speichersubsystem 10 eine L2-Steuerung 26k, eine L2-Cache-/Buswechseleinheit 26a/26, einen L3/L4- Anschluß 0 10c und einen L3/L4-Anschluß 1 10d, die mit der L2- Cache-/Buswechseleinheit 26a/26 verbunden sind, eine Speichersteuerung 26e, die mit der L2-Steuerung 26k verbunden ist, eine Steuerung 26f für die Buswechseleinheit, die mit der L2-Cache/Buswechseleinheit 26a/26 und mit der Speichersteuerung 26e verbunden ist, Speicherkanal-Datenpuffer 269, die mit der Steuerung 26f der Buswechseleinheit und mit der L2-Cache-/Buswechseleinheit 26a/26 verbunden sind, eine Adreß-/Schlüsselsteuerung 26h, die mit der Speichersteuerung 26e und mit der L2- Steuerung 26k verbunden ist, L3-Steuerschlüssel 26i, die mit der Adreß-/Schlüsselsteuerung 26h verbunden sind, und ein Kanal-L2- Cache-Verzeichnis 26j, das mit der Speichersteuerung 26e und mit der Adreß-/Schlüsselsteuerung 26h verbunden ist.
  • In Figur 5 erzeugt die L2-Cache-/Buswechseleinheit 26a/26 drei Ausgangssignale: cp0, cp1 und cp2. Die L2-Steuerung 26k erzeugt ebenfalls drei Ausgangssignale: cp0, cp1 und cp2. Das cp0-Ausgangssignal der L2-Cache-/Buswechseleinheit 26a/26 und das cp0- Ausgangssignal der L2-Steuerung 10k bilden gemeinsam das Ausgangssignal aus dem Speichersubsystem 10 von Figur 1, das den ersten L1-Cachespeicher 18a aktiviert. In ähnlicher Weise umfassen die cp1-Ausgangssignale von der L2-Cache-/Buswechseleinheit 26a/26 und der L2-Steuerung 10k gemeinsam das Ausgangssignal vom Speichersubsystem 10 von Figur 1, das den zweiten L1- Cachespeicher 18b aktiviert, und die cp2-Ausgangssignale von der Einheit 26a/26 und der Steuerung 10k umfassen gemeinsam das Ausgangssignal vom Speichersubsystem 10 von Figur 1, das den dritten L1-Cachespeicher 18c aktiviert.
  • In Figur 5 erzeugen die Speicherkanal-Datenpuffer 10g drei Ausgangssignale: shcpa, shcpb und nio, wobei sich shcpa auf den Gemeinschaftskanal-Prozessor A 28a, shcpb auf den Gemeinschaftskanal-Prozessor B 28b und nio auf das integrierte Adaptersystem 14/16- bezieht. In ähnlicher Weise erzeugt die Adreß-/Schlüsselsteuerung 10h die drei Ausgangssignale shcpa, shcpb und nio. Das shcpa-Ausgangssignal aus den Speicherkanal- Datenpuffern 10g umfaßt in Verbindung mit dem shcpa-Ausgangssignal aus der Adreß-/Schlüsselsteuerung toh gemeinsam das Aus- gangssignal, das vom Speichersubsystem 10 von Figur 1 für den Gemeinschaftskanal-Prozessor A 28a erzeugt wird. Das shcpb-Ausgangssignal von den Speicherkanal-Datenpuffern 10g umfaßt in Verbindung mit dem shcpb-Ausgangssignal von der Adreß-/Schlüsselsteuerung 10h gemeinsam das Ausgangssignal, das vom Speichersubsystem 10 von Figur 1 für den Gemeinschaftskanal-Prozessor B 28b erzeugt wird. Das nio-Ausgangssignal aus den Speicherkanal-Datenpuffern 10g umfaßt in Verbindung mit dem nio- Ausgangssignal aus der Adreß-/Schlüsselsteuerung 10h gemeinsam das aus dem Speichersubsystem von Figur 1 erzeugte Signal für das integrierte Adapter-Subsystem 14/16.
  • Eine Funktionsbeschreibung des Speichersubsystems 10 dieser Erfindung wird in den folgenden Abschnitten mit Bezug auf die Figuren 1 bis 5 der Zeichnungen und insbesondere auf Figur 5 dargelegt, die speziell den Aufbau des Speichersubsystems 10 dieser Erfindung definiert.
  • Die Funktionsbeschreibung des unten dargelegten Speichersubsystems 10 ist in Abschnitte gegliedert, wobei jeder Abschnitt eine bestimmte Operation innerhalb der Funktionsbeschreibung beschreibt. Vor dem Beginn der Funktionsbeschreibung wäre es sinnvoll, ein Inhaltsverzeichnis zur Verfügung zu stellen, mit dessen Hilfe Querverbindungen von jeder konkreten Operation zu ihrem betreffenden Abschnitt hergestellt werden können. Dieses Inhaltsverzeichnis ist im folgenden dargestellt. INHALTSVERZEICHNIS Operationstitel Abschnitt Speicheroperationen Anforderungen an die Prozessorspeicher-Architektur In Warteschlangen eingegliederte Speicherzugriffe Einzelabbild-Speicher Notwendigkeit des Einzelzugriffs Operanden-Überlappung Regeln für synchronisierte Aktualisierung Vergleich des Operandenspeichers Vergleich des Programmspeichers Hierarchisches Prozessor-Speichersystem Stufe 1: Cachespeicher (Level 1 - L1) Stufe 2: Cachespeicher (Level 2 - L2) Stufe 3: Prozessorspeicher (Level 3 - L3) Stufe 3: Prozessorspeicherschlüssel Regeln für implizite Referenzbit-Aktualisierung Regeln für implizite Anderungsbit-Aktualisierung Stufe 4: Erweiterungsspeicher (Level 4 - L4) Regeln für hierarchische Cachedaten Prozessorinterne Regeln für L1-Cachedaten Vergleich des Operandenspeichers Vergleich des Programmspeichers Vergleich des L1-Cache-Seiteneinlagerungspuffers Prozessorübergreifende Regeln für L1-Cachedaten Abrufzugriffe Speicherungszugriffe Speicherroutinen Speicher-Abrufroutinen für den MP/3-Prozessor Speicherabruf, TLB-Mißerfolg Speicherabruf, TLB-Treffer, Zugriff-Ausnahmebedingung, L1-Cache-Treffer oder -Mißerfolg Speicherabruf, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L1-Cache-Treffer, kein anstehender Speicherungskonflikt Speicherabruf, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L1-Cache-Mißerfolg, kein anstehender Speicherungskonflikt, L2-Cache-Treffer Speicherabruf, TLB-Treffer, keine Zugriff-Ausnahme bedingungen, L1-Cache-Mißerfolg, kein anstehender Speicherungs konflikt, L2-Cache-Mißerfolg Speicherabruf und Sperre, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L1-Cache-Treffer oder -Mißerfolg, L2-Cache-Treffer Speicherabruf und Sperre, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L1-Cache-Mißerfolg, L2-Cache-Mißerfolg Speicher-Speicherungsroutinen für den MP/3-Prozessor Speicherung im Speicher, TLB-Mißerfolg Speicherung im Speicher, TLB-Treffer, Zugriff-Ausnahmebedingung Speicherung im Speicher, nicht sequentiell, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, verzögerte Speicherwarteschlangen-Übertragung, L2-Cache belegt Speicherung im Speicher, nicht sequentiell, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L2-Cache-Treffer Speicherung im Speicher, nicht sequentiell, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L2-Cache-Mißerfolg Speicherung im Speicher, sequentiell, Anfangszugriff auf L2-Zeile, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L2-Cache-Treffer Speicher-Anforderungskombinationen für den MP/3-Prozessor Anstehender Speicherungskonflikt Speicherkonsistenz, Beispiel 1 Speicherkonsistenz, Beispiel 2 Speicherbefehle für den Prozessor Alter L2 Cache Request Priority (Anforderungspriorität für L2-Cache ändern) Alter Memory Control Request Priority (Anforderungspriorität für Speichersteuerung ändern) Enable Memory Error Correction Bypass (Umgehung der Speicherfehlerkorrektur aktivieren) Flush Store Queue (Speicherwarteschlange leeren) Force L2 Cache Line Replacement Algorithm (Algorithmus zum Ersetzen der L2-Cachezeile erzwingen) Invalidate L1 Cache Line or Congruence (L1-Cachezeile oder Kongruenz entwerten) Invalidate L2 Cache Entry (L2-Cacheeintrag entwerten) Read Memory Internal Registers (Interne Speicherregister lesen) Set Address-Limit Check (Adreßgrenzprüfung setzen) Invalidate and Flush L2 Cache Entry (L2-Cache-Eintrag entwerten und entleeren) Pad L3 Line (L3-Zeile auffüllen) Reset Processor Storage Interface (Prozessorspeicher-- Schnittstelle zurücksetzen) Transfer L3 Line to Memory Buffer (L3-Zeile zum Speicherpuffer übertragen) Transfer L4 Line to Memory Buffer (L4-Zeile zum Speicherpuffer übertragen) Transfer Memory Buffer to L4 Line (Speicherpuffer zur L4-Zeile übertragen) Test and Set (Prüfen und setzen) Transfer Memory Buffer to L3 Line (Speicherpuffer zur L3-Zeile übertragen) Anwendung "Write Memory Check-bit, Redundant-Bit and Special Function Registers" (Speicher- Prüfbit, Redundanzbit und Spezialfunktionsregister schreiben) Write Memory Redundant-bit Address Registers (Adreßregister für Speicher-Redundanzbits schreiben) Speicherschlüsselbefehle für den Prozessor Fetch Storage Key (Speicherschlüssel abrufen) Insert Storage Key (Speicherschlüssel einfügen) Reset Reference Bit (Referenzbit zurücksetzen) Set Storage Key (Speicherschlüssel setzen) Speicherroutinen Speicher-Abrufroutinen für den Kanal Speicherabruf, 1:8 Vierfachwörter, keine Zugriff- Ausnahmebedingungen, L2M-Verzeichnis-Treffer/ L2-Cachetreffer Speicherzugriff, 1:8 Vierfachwörter, keine Zugriff- Ausnahmebedingungen, L2M-Verzeichnis-Treffer/ L2-Cache-Mißerfolg Speicherabruf, 1:8 Vierfachwörter, keine Zugriff- Ausnahmebedingungen, L2M-Verzeichnis-Mißerfolg Speicher-Speicherungsroutinen für den Kanal Speicherung im Speicher, 1:128 Bytes, keine Zugriff-Ausnahmebedingungen, L2M-Verzeichnis- Treffer/L2-Cache-Treffer Speicherung im Speicher, 1:128 Bytes, keine Zugri ff-Ausnahmebedingungen, L2M-Verzeichnis- Treffer/L2-Cache-Mißerfolg Speicherung im Speicher, 1:128 Bytes, keine Zugriff-Ausnahmebedingungen, L2M-Verzeichnis- Mißerfolg Speicherbefehle für den Kanal Transfer Storage Channel Data Buffer to L4 Line (Speicherkanat-Datenpuffer zur L4-Zeile übertragen) Transfer L4 Line to Storage Channel Data Buffer (L4- Zeile zum Speicherkanal-Datenpuffer übertragen) Test and Set (Testen und setzen) Speicher-Abrufroutinen für den Vektorprozessor Speicherabruf, TLB-Mißerfolg Speicherabruf, TLB-Treffer, Zugriff-Ausnahmebedingung Speicherzeilen-Zugriff, TLB-Treffer, keine Zugriff- Ausnahmebedingungen, L2-Cache-Treffer Speicherzeilenabruf, TLB-Treffer, keine Zugriff- Ausnahmebedingungen, L2-Cache-Mißerfolg Speicherelement-Abruf, TLB-Treffer, keine Zugriff- Ausnahmebedingungen, L2-Cache-Treffer Speicherelement-Abruf, TLB-Treffer, keine Zugriff- Ausnahmebedingungen, L2-Cache-Mißerfolg
  • 1 Speicheroperationen 1.1 Anforderungen an die Prozessorspeicher-Architektur
  • Manche spezifische Rechnersysteme stellen bestimmte Anforderungen an die Art, wie der Prozessorspeicher und die Speicherschlüssel in den Aufbau eines Rechners integriert sind. In den folgenden Abschnitten werden spezifische Elemente aus diesen Architekturen hinsichtlich ihres Bezuges auf das Speichersubsystem dieser Erfindung erörtert. Die Architektur bezieht sich auf eine 'prinzipielle Abfolge' der Anweisungsausführung. Dies ist ein wichtiges Prinzip, das bei jeder Erörterung der architekturellen Anforderungen des Prozessorspeichers berücksichtigt werden muß. Die prinzipielle Abfolge ist sehr einfach: Zuerst wird die Anweisung aus dem Prozessorspeicher abgerufen und decodiert. Anschließend werden Operanden abgerufen, und zwar entweder aus den strukturierten Registern oder aus dem Prozessorspeicher. Die Funktion wird, wie sie durch den Operationscode der Anweisung definiert wurde, an den Operanden ausgeführt. Die Ergebnisse der ausgeführten Funktion werden entweder zu den Registern oder zum Prozessorspeicher zurückgeliefert, und der Bedingungscode kann gesetzt werden. Die Anweisungsadresse im PSW wird aktualisiert. Hiermit wird die Ausführung einer Einzelanweisung abgeschlossen. Abschließend wird die nächste auszuführende Anweisung aus dem Prozessorspeicher abgerufen, und die Sequenz wiederholt sich. Aus der prinzipiellen Abfolge ist das Konzept der 'prinzipiell abgeschlossenen Speichervorgänge' abgeleitet. Ein 'prinzipiell abgeschlossener Speichervorgang' ist ein Speichervorgang, der aus der Sicht der Anweisung, die die Speicherung angefordert hat, in den Prozessorspeicher abgeschlossen wurde. In Wirklichkeit kann der Speichervorgang nur in die Speicherwarteschlange gestellt, aber noch nicht physisch im Cache- oder Prozessorspeicher gespeichert worden sein. Dieses Prinzip ermöglicht die frühzeitige Beendigung von Anweisungen, die Speicherung Ergebnisse im Speicher und die Überlappung von frühzei- tigen Ausführungsphasen aufeinanderfolgender Anweisungen.
  • 1.1.1 In Warteschlangen eingegliederte Speicherzugriffe
  • Anderungen am Speicher erfolgen durch Prozessor-Speicherzugriffe. Innerhalb eines Prozessors müssen diese Speicherzugriffe innerhalb der prinzipiellen Reihenfolge erfolgen. Einfach ausgedrückt, müssen die Speichervorgänge in der Reihenfolge ausgeführt werden, die durch die Anweisungen festgelegt wäre, wenn die Anweisungen der Reihe nach ausgeführt würden. Davon abgesehen, dürfen die Speicherzugriffe unbegrenzt eingegliedert werden, während der eigentliche Speichervorgang im Speicher ansteht. In bestimmten Fällen ist es erforderlich, daß die eingegliederten Speichervorgänge in den Speicher entleert werden. Falls innerhalb eines Prozessors eine Abrufanforderung eine anstehende eingegliederte Speicheranforderung für dieselbe Speicherposition findet, so muß der Speichervorgang abgeschlossen werden, bevor der Abruf zugelassen wird. Dies ist Bestandteil der weiter unten erörterten Einzelabbild-Speicheranforderung. Zum Zeitpunkt der Serialisierung der Prozessoren müssen auch alle für den Prozessor anstehenden Speichervorgänge für den Speicher abgeschlossen sein.
  • 1.1.2 Einzelabbild-Speicher
  • Das Speichersubsystem 10 ist dafür ausgelegt, in verschiedenen Konfigurationen zu arbeiten: in einem Einprozessorsystem (MP/1), in einem zweiteiligen (dyadischen) Mehrprozessorensystem (MP/2) und in einem dreiteiligen (triadischen) Mehrprozessorensystem (MP/3). In allen Fällen muß das Speichersystem ein einzelnes Abbild für alle Prozessoren in einer gegebenen Konfiguration beibehalten. Dies bedeutet, daß dann, wenn ein Prozessor innerhalb der Konfiguration den Speicher ändert, alle Prozessoren in der Konfiguration die Änderung gleichzeitig wahrnehmen. Die Beobachtung der Anderung gilt nicht notwendigerweise für Kanal- Referenzen. Der L2-Cache behandelt die Anforderung der Einzelabbild-Anforderungen der Architektur, indem er protokolliert, welche Daten auf der Stufe des L1-Cache innerhalb jedes Prozessors in der Konfiguration vorhanden sind. Wenn für den anfordernden Prozessor ein Speicherzugriff sichtbar gemacht wird, sehen alle anderen Prozessoren in der Konfiguration die Speicheränderung ebenfalls. Ein Speicherzugriff wird für die anfordernde Einheit sichtbar gemacht, wenn die Daten tatsächlich im L2-Cache gespeichert sind. Die Speicherung wird für die anderen Prozessoren dadurch sichtbar gemacht, daß in den anderen L1- Caches die L1-Cache-Zeile entwertet wird, die vom Anfordernden modifiziert wird.
  • 1.1.3 Notwendigkeit des Einzelzugriffs
  • In der überwiegenden Mehrzahl der Speicherzugriffe ist ein Einzelzugriff auf die Speicherposition erforderlich. Dies bedeutet, daß eine Operandenanforderung (Abruf oder Speicherung) für jedes Byte innerhalb des Speicherfelds nur einmal für jeden Operanden und Zugriffstyp auf einen Speicherplatz zugreifen darf. Die Anforderung wirkt sich auf die Neuversuch-Philosophie für Maschinenfehler aus, die während Speicherzugriffen im Speichersystem festgestellt wurden. Beim Neuversuch der Anweisung kann die Speicherung nicht erneut ausgeführt werden, wenn ein anderer Prozessor an dieser Stelle eine Speicherung zwischen dem Zeitpunkt durchführt, an dem die Anweisung ursprünglich die Ergebnisse in den L2-Cache gespeichert hat, und dem Zeitpunkt, an dem der Neuversuch versucht, den Speicherzugriff zu wiederholen. Innerhalb einer Anweisung werden sequentielle Speicheroperationen bearbeitet, indem das modifizierte Feld in den L2-Cache- Schreibpuffern aufgebaut wird und der L2-Cache erst am Operationsende ("End-of-Operation") für die Anweisung aktualisiert wird. Hierdurch wird die Menge der Informationen minimiert, die erforderlich ist, um diese Einzelzugriff-Anforderung zu gewährleisten; gleichzeitig werden die tatsächlichen Belegt-Zyklen des L2-Cache vermindert.
  • 1.1.4 Operanden-Übertappung
  • Innerhalb der Speicher-zu-Speicher-Anweisungen, bei denen beide Operanden im Speicher vorhanden sind, können sich die Operanden überlappen. Diese Bedingung muß auf der Basis einer logischen Adresse erkannt werden. Die Hardware des Speichersystems erkennt diese Überlappung eigentlich auf der Basis einer absoluten Adresse. Das Zielfeld im Speicher wird eigentlich in der L1- Speicherwarteschlange aufgebaut (und im L1-Cache bei einem Treffer im L1-Cache-Verzeichnis) sowie in den L2-Cache-Schreibpuffern, aber nicht im L2-Cache selbst. Wenn eine Operanden-Überlappung eintritt, werden die Daten aus der L1-Cache-Speicherwarteschlange und die Daten der alten L1-Zeile aus dem L2-Cache bei der Seiteneinlagerung in den L1-Cache zusammengefügt. Im Falle einer zerstörenden Überlappung ist durch die Architektur festgelegt, daß die Abrufdaten für den überlappenden Teil nicht notwendigerweise aus dem Speicher abgerufen werden. Daher wird die tatsächliche Aktualisierung des L2-Cache bis zu "End-of-Operation" für die Anweisung zurückgestellt.
  • 1.1.5 Regeln für synchronisierte Aktualisierung
  • Synchrone Aktualisierungen stellen eine Minimal-Aktualisierung für eine Speicherposition dar. Innerhalb der Konfiguration wird, wenn ein Prozessor eine Speicherposition abruft, um eine synchrone Aktualisierung durchzuführen, für den Anfordernden gewährleistet, daß er die einzige Kopie dieser Daten besitzt, bis die Speicherung (Aktualisierung) an diese Speicherposition durch den Anfordernden abgeschlossen wurde. Ausgehend von dieser strikten Definition, werden die Regeln der Architektur gelokkert. Alle Kanal-Referenzen auf Speicherpositionen für synchronisierte Aktualisierungen sind wie gewohnt zulässig. Normale Abruf-Referenzen auf diese Speicherpositionen durch die Prozessoren in der Konfiguration sind zulässig. Abruf-Zugriffe zum Zwecke synchronisierter Aktualisierungen und Speicherungszugriffe durch andere Prozessoren in der Konfiguration sind unzulässig, solange der Abschluß des Speicherzugriffs durch den ursprünglichen Prozessor, der die Speicherposition für eine synchronisierte Aktualisierung verwendet, noch aussteht. In dem Speichersubsystem werden synchronisierte Aktualisierungen auf der Basis einer Doppetwort-Adresse durchgeführt und sind-auf eine aktive synchronisierte Aktualisierung pro Prozessor in der Konfiguration beschränkt. Ein Prozessor führt die folgende Sequenz durch, um eine synchronisierte Aktualisierung zu erzielen: Zunächst entleert der Prozessor die Speicherwarteschlange. Anschließend erfolgt eine Abruf- und Sperr-Anforderung für den L2- Cache. Falls das Doppetwort momentan nicht durch einen anderen Prozessor im MP/3 gesperrt ist, wird die Sperrung für dem Anfordernden genehmigt. Es wird davon ausgegangen, daß der erste Speicherzugriff durch den Anfordernden der Store-and-Unlock-Zugriff (Speichern und entsperren) ist. Wenn für die Anweisung "End-of-Operation" empfangen wird, wird der Speichervorgang im L2-Bereich verarbeitet. Falls die Speicheradresse nicht mit der "Fetch-and-Lock"-Adresse (Abrufen und sperren) übereinstimmt, ist ein Maschinenfehler die Folge.
  • 1.1.6 Vergleich des Operandenspeichers
  • Wie durch die prinzipielle Abfolge innerhalb eines Prozessors erforderlich, muß, falls eine Anweisung ein Ergebnis an einer Speicherposition speichert und eine nachfolgende Anweisung einen Operanden aus derselben Speicherposition abruft, für den Operanden-Abrufvorgang der aktualisierte Inhalt der Speicherposition sichtbar sein. Der Vergleich ist auf der Basis einer absoluten Adresse erforderlich. Bei der Eingliederung von Speicheranforderungen ist es erforderlich, daß der Operandenabruf verzögert wird, bis der Speichervorgang im L2-Cache tatsächlich abgeschlossen und für alle Prozessoren in der Konfiguration sichtbar gemacht wurde. Für das Einprozessor-System kommt die Einschränkung, daß der Speichervorgang im L2-Cache abgeschlossen sein muß, bevor die Fortsetzung des Abrufs gestattet wird, nicht zur Anwendung, da kein anderer Prozessor vorhanden ist, der von der Anderung im Speicher informiert werden muß. Es ist nicht erforderlich, daß den Kanälen die Prozessor-Speichervorgänge in einer vorgeschriebenen Reihenfolge bekanntgegeben werden, da die Kanäle ihre Operationen dem Prozessor gegenüber asynchron ausführen. In diesem Fall genügt es, Daten in die L1-Speicherwarteschlange einzugliedern und den L1-Operandencache zu aktualisieren, wenn die Daten dort vorhanden sind, um den Abschluß des Speichervorgangs zu markieren. Falls sich jedoch die Daten zum Zeitpunkt des Speicherns nicht im L1-Cache befinden, muß die Abrufanforderung mit Vergleich des Operandenspeichers abwarten, bis der Speichervorgang im L2-Cache abgeschlossen ist, bevor die Seiteneinlagerung in den L1-Cache zugelassen wird, um die Datenkonsistenz auf allen Stufen der Cachespeicher-Hierarchie zu gewährleisten.
  • 1.1.7 Vergleich des Programmspeichers
  • Innerhalb eines Prozessors gibt es zwei Fälle von Programmspeicher-Vergleichen: Der erste betrifft die Speicherung eines Operanden im Speicher, gefolgt von einem Anweisungsabruf aus derselben Speicherposition (Store-then-fetch); der zweite betrifft den vorzeitigen Abruf einer Anweisunq in die Anweisungspuffer und die anschließende Speicherung an dieser Speicherposition, bevor die vorzeitig abgerufene Anweisung ausgeführt wird (Fetch-then-store). Wie von der prinzipiellen Abfolge innerhalb eines Prozessors gefordert, muß, falls eine Anweisung ein Ergebnis an einer Speicherposition speichert und von derselben Speicherposition ein nachfolgender Anweisungsabruf erfolgt, für den Anweisungsabruf der aktualisierte Inhalt der Speicherposition sichtbar sein. Der Vergleich muß auf der Basis einer logischen Adresse erfolgen. Bei der Eingliederung von Speicheran- forderungen ist es erforderlich, daß der Anweisungsabruf verzögert wird, bis die Speicherung im L2-Cache tatsächlich abgeschlossen ist und allen Prozessoren in der Konfiguration bekanntgegeben wurde. Im zweiten Fall wird die Adresse jeder innerhalb eines Prozessors ausgeführten Operandenspeicherung mit etwaigen vorzeitig abgerufenen Anweisungen im Anweisungsst-rom verglichen, und falls diese gleich sind, werden die entsprechenden Anweisungen entwertet. Die Quelle der vorzeitig abgerufenen Anweisungen, die Zeile im L1-Anweisungscache, wird erst dann tatsächlich entwertet, wenn die Operandenspeicherung im L2-Cache erfolgt. Zu diesem Zeitpunkt fordert die L2-Cachesteuerung die Entwertung der Zeile im L1-Anweisungscache an. Eine Lockerung der Regeln für den Einzelprozessor ist nicht möglich, da sich die Programmanweisungen in einem physisch anderen L1-Cache befinden als die Programmoperanden und Speichervorgänge nur im L1- Operandencache erfolgen. Infolgedessen erfordert "Store-thenfetch", daß der L2-Cache die aktuellsten vom Prozessor gespeicherten Daten enthält, bevor die Seiteneinlagerung in den L1- Anweisungscache erfolgt.
  • 1.2 Hierarchisches Prozessor-Speichersystem
  • Der Prozessorspeicher ist als mehrstufiges Speichersystem implementiert. Als allgemeine Regel gilt, daß beim Übergang von der höchsten zur niedrigsten Hierarchiestufe die Zugriffszeit und die Speichergröße zunehmen. Die erste Stufe des Speichersystems ist der Satz der Cachespeicher, die für jeden Prozessor in der Konfiguration eindeutig sind. Die nächste Hierarchiestufe ist der Cache der zweiten Stufe (Second-Level Cache). Dieser Cache ist eine Ressource, die von allen Prozessoren innerhalb der Konfiguration gemeinsam genutzt wird. Die dritte Speicherstufe ist der Hauptspeicher, der Prozessorspeicher, auf den die Architektur Bezug nimmt. Die letzte Speicherstufe, die den Prozessoren zur Verfügung steht, ist der Erweiterungsspeicher. Dieser Bereich soll als Halbleiter-Seitenauslagerungseinheit dienen und unterliegt ausschließlich der Steuerung durch das System- Steuerprogramm.
  • 1.2.1 Stufe 1: Cachespeicher (Level 1 - L1)
  • Innerhalb jedes Prozessors gibt es auf der ersten, als "L1"-Stufe bezeichneten Stufe drei Caches: den Steuerspeicher-, den Anweisungs- und den Operandencache. Jeder L1-Cache ist dafür verantwortlich, Daten zu verwalten, die für bestimmte Hardwarefunktionen spezifisch sind. Der L1-Steuerspeicher-Cache (L1 Control Store Cache - LLCS) stellt die Speichereinheit für seitenwechselfähige Mikroprogramme für den Prozessor dar. Da nicht alle Mikroprogramme des Prozessors im festen Steuerspeicher gehalten werden können, werden ausgewählte mikroprogrammgesteuerte Funktionen seitenwechselfähig gemacht. Die Mikroprogrammroutinen befinden sich physisch im hardwaregesteuerten Speicher, der ein für das Systemsteuerprogramm nicht zugänglicher Teil des Hauptspeichers ist, und werden je nach Bedarf in den LTCS eingelagert. Der Inhalt dieses Cache wird vom Cache der zweiten Stufe nicht überwacht, da Daten von 370-XA-Programmen nicht in diesen Cache geladen werden und 370-XA-Programme keinen Zugriff auf die seitenwechselfähigen Mikroprogramme im hardwaregesteuerten Speicher haben. Infolgedessen besteht keine Notwendigkeit, den Inhalt des LTCS zur Unterstützung der Architektur nachzuverfolgen. Der L1-Anweisungscache (L1 Instruction Cache - L1I) wird verwendet, um 370-XA-Programmanweisungen zu speichern. Alle Anweisungsabrufe, die infolge von Programmverzweigungen beliebiger Form erfolgen, und alle vorgezogenen Anweisungsabrufe für die sequentielle Anweisungsverarbeitung erfolgen im L1I-Cache. Der Inhalt dieses Cache wird vom Cache der zweiten Stufe mitverfolgt, da die Daten in diesem Cache durch die Architektur strukturierte Programmdaten darstellen. Operanden-Speichervorgänge modifizieren den Inhalt dieses Cache nicht, sondern entwerten die Daten, falls sie in diesem Cache vorhanden sind, wenn die Speicherung vom Prozessor ausgeführt wird. Die Organisation des L1I-Cache bilden 64 Kongruenzklassen, 6-Wege-satzassoziativ. Ein Satzassoziativer Lesezugriffliefert 16 Bytes pro Assoziativität oder Cache-Satz; Seiteneinlagerungen können 16-Byte- Schreibzugriffe auf den Gache enthalten. Die Größe der L1I-Cachezeile beträgt 64 Byte. Diese Größe liefert einen 24-kB-Anweisungscache. Der Cache gliedert sich in eine L1-Cache-Verzeichnismatrix, die die höherwertigen Bits der absoluten Adresse der L1-Cache-Zeile verwaltet, und eine L1-Cache-Datenmatrix. Der L1-Operandencache (L1D) verwaltet die 370-XA-Programmoperanden. Alle Abruf- und Speichervorgänge an den Operanden zur Ausführung von Anweisungen erfolgen in diesem L1-Cache. Der L1D-Cache ist ein Durchspeicherungs-Cache; dies bringt mit sich, daß Operanden-Abrufvorgänge, bei denen ein L1D-Cache-Mißerfolg eintritt, eine Seiteneinlagerung im Cache erfordern, bevor die Anweisung fortgesetzt werden darf, Operanden-Speichervorgänge dagegen nicht. Wenn eine Prozessoroperanden-Abrufanforderung den L1D-Cache verfehlt, müssen die Daten aus dem L2-Cache oder L3- Speicher eingelagert werden. Sobald die Daten von den unteren Speicherstufen in den L1D-Cache übertragen werden, wird das ursprünglich angeforderte Doppelwort zuerst zurückgeliefert, gefolgt vom Rest der L1-Cache-Zeile. Auf diese Weise kann der Prozessor frühzeitig für den Neubeginn der Verarbeitung freigegeben werden, während der Abschluß der Cachezeilen-Seiteneinlagerung in den L1-Operandencache noch überhängt. Wenn beim L1D-Cache eine Operandenspeicherung angefordert wird, so wird, falls die Daten im L1D-Cache vorhanden sind, dieser zum Zeitpunkt der Speicherung aktualisiert und parallel in die Speicherwarteschlange gestellt. Falls die Daten zum Zeitpunkt der Speicherung im L1D-Cache nicht vorhanden sind, so werden Adresse, Daten und Steuerungsinformationen, die mit dem Speichervorgang in Verbindung stehen, einfach in die Speicherwarteschlange gestellt. Für Mißerfolge im L1-Speicher wird keine Seiteneinlagerung in den L1D-Cache durchgeführt. Der Inhalt dieses Cache wird vom Cache der zweiten Stufe mitverfolgt, da die Daten in diesem Cache durch die Architektur strukturierte Programmoperanden darstel- len. Die Organisation des L1D-Cache bilden 64 Kongruenzklassen, 6-Wege-satzassoziativ. Ein satzassoziativer Lesezugriff liefert 16 Bytes pro Assoziativität oder Cache-Satz; die Schreibzugriffe erfolgen auf einer 8-Byte-Basis mit Byte-Schreibsteuerung; Seiteneinlagerungen können 16-Byte-Schreibzugriffe zum Cache enthalten. -Die Größe der LTD-Cachezeile beträgt 64 Byte. Diese Größe liefert einen 24-kB-Operandencache. Der Cache gliedert sich in eine L1-Cache-Verzeichnismatrix, die die höherwertigen Bits der absoluten Adresse der L1-Cache-Zeile verwaltet, und eine. L1- Cache-Datenmatrix.
  • 1.2.2 Stufe 2: Cachespeicher (Level 2 - L2)
  • Innerhalb des dreiteiligen Mehrfachprozessors gibt es einen Cachespeicher der zweiten Stufe. Die Funktion dieses Cache besteht darin, zusätzlich zur Durchsetzung der Architektur-Anforderungen an den Prozessorspeicher in einer Mehrprozessorenumgebung einen größeren Pufferspeicher für die drei Prozessoren, die er unterstützt, zur Verfügung zu stellen. In diesem Cache sind sowohl Anweisungen als auch Operanden vorhanden, die auf dieser Stufe nicht zu unterscheiden sind. Der L2-Cache ist eine gemeinsam genutzte Ressource für die Prozessoren in der Konfiguration. Er ist als Einspeicherungscache konzipiert; das heißt, daß alle Prozessor-Referenzen erzwingen, daß die Daten vor dem Abschluß in den L2-Cache kopiert werden. Ein Abruf-Mißerfolg aus dem L1- Cache erzwingt eine Seiteneinlagerung im L1-Cache aus dem L2- Cache, und falls sich die Daten zu dem betreffenden Zeitpunkt nicht im L2-Cache befinden, werden sie parallel zur Übertragung in den L1-Cache aus dem Prozessorspeicher in den L2-Cache eingelagert. Auch hier werden die Daten in einer Reihenfolge eingelagert, die es gestattet, daß die erste Datenübertragung das Doppelwort enthält, das von der zugrundeliegenden Prozessoranforderung gewünscht wurde. Alle Prozessor-Speicherungsanforderungen müssen im L2-Cache gespeichert werden. Falls die L2-Cachezeile zu dem Zeitpunkt nicht vorhanden ist, zu dem der L2-Cache den Speichervorgang -durchzuführen versucht, wird sie in den L2-Cache - aber nicht den L1-Cache - eingelagert, bevor die Speicheranforderung abgeschlossen wird. Der L2-Cache verfolgt alle Daten in den L1-Caches (sowohl L1I als auch L1D) für jeden Prozessor im MP/3. Während Speichervorgänge in der L2-Cache-Matrix erfolgen, bewahrt der L2-Cache die Speicherkonsistenz zwischen den Prozessoren durch lokale Entwertung von Kopien des L1-Anweisungscache innerhalb des anfordernden Prozessors und Quer-Entwertung von L1-Cache-Kopien anderer Prozessoren. Die Organisation des L2-Cache bilden 512 Kongruenzklassen, sechs-Wege-satzassoziativ. Ein satzassoziativer Lesevorgang liefert 32 Bytes pro Assoziativität oder Cachesatz; ein Vollzeilen-Lesevorgang kann 128 Bytes in zwei Cachezyklen liefern; der Schreibzugriff beträgt ein bis 128 Byte innerhalb einer L2-Cachezeile mit Byte-Schreibsteuerung; Seiteneinlagerungen aus dem Prozessorspeicher schreiben in einen Seiteneinlagerungspuffer und werden durch einen zwei Zyklen langen 128-byte-Schreibzugriff abgeschlossen. Die Größe der L2-Cachezeile beträgt 128 Bytes. Diese Größe ergibt einen 384- kB-Cache im MP/3. Der Cache gliedert sich in eine L2-Cache-Verzeichnismatrix, die die höherwertigen Bits der absoluten Adresse der L2-Cachezeile führt, und eine L2-Cache-Datenmatrix. Zusätzlich wird, um die Daten mitzuverfolgen, die auf der Stufe des L1-Cache vorhanden sind, die Verzeichnisstruktur der L1-Cache-Matrizen dupliziert. Für jede 64 Byte lange L1-Cachezeile verwaltet die L1-Statusmatrix von L2 die höherwertige L2-Kongruenz, da eine gegebene L1-Kongruenz auf 16 L2-Kongruenzen abgebildet werden kann, plus den L2-Cachesatz. Auf diese Weise zeichnet der L2-Cache das auf, was auf der Stufe des L1-Cache für die Prozessoren im MP/3 vorhanden ist.
  • 1.2.3 Stufe 3: Prozessorspeicher (Level 3 - L3)
  • Innerhalb des MP/3 sind bis zu 128 MB Hauptspeicher vorhanden. Dieser Speicher wird mit absoluten Adressen adressiert, die in den Prozessorspeicher-Anforderungen geliefert werden. Die Spei- chersteuerung besitzt Zwei physische Anschlüsse, die L3 zur Verfügung stehen. Die Anschlüsse sind in gerade und ungerade L3- Zeilen zu 128 Byte aufgeteilt. Die L3-Speicherschnittstelle ist ein 16 Byte breiter bidirektionaler, gemultiplexter Befehls/Adreß- und Datenbus. Die Speichersteuerung kann zwei parallele Operationen aktiv halten, und zwar jeweils eine zu jedem Anschluß. Aus der Sicht des Prozessors erfolgen alle Zugriffe auf den L3-Speicher für Seiteneinlagerungs- und Seitenauslagerungsanforderungen unter Verwendung von Operationen mit 128-Byte- Vollzeilen. Aus der Sicht des Kanals stehen dem L3-Speicher entweder Teil- (ein bis 128 Byte) oder Vollzeilen-Operationen zur Verfügung. Eine Speicher-Neukonfigurierung in Vorwegnahme des Zwei-Rahmen-Systems wird unterstützt. Die Unterstützung besteht aus Matrizen, die als Teilinkrement-Rahmenabbildungen (subincrement frame maps) bezeichnet werden, und Speicherabbildungen, die eine weitere Stufe der Adreßübersetzung gestatten. Diese Adreßübersetzung erfolgt von absoluten zu physischen Adressen und wird in Teilinkrementen von 2 MB unterstützt. Die Teilinkrement- Rahmenabbildungen gestatten eine schnelle Identifizierung von L3-Speicheranschlüssen, während die Speicherabbildungen eine vollständige Übersetzung von absoluten in physische Adressen leisten.
  • 1.2.4 Stufe 3: Prozessorspeicherschlüssel
  • Für jede 4-kB-Seite im Prozessorspeicher wird ein Speicherschlüssel unterstützt. Der Schlüssel besteht aus einem 4-bit- Zugriffssteuerfeid, einem Abrufschutzbit, einem Referenzbit und einem Anderungsbit. Die Speicherschlüssel werden in vom Prozessorspeicher getrennten Matrizen verwaltet, und Zugriffe darauf erfolgen in anderer Form als auf Prozessorspeicherdaten.
  • In der Architektur gibt es mehrere Anweisungen, die die Speicherschlüssel ausdrücklich manipulieren. Zusätzlich zu diesen Anweisungen werden während der verschiedenen Speicheranforderun- gen, die innerhalb der Speicherhierarchie ausgeführt werden, gleichzeitig Anderungen an den Referenz- und Änderungsbits vorgenommen.
  • 1.2.4.1 Regeln für gleichzeitige Referenzbit-Aktualisierung
  • Für jede Abrufanforderung in den Prozessoren, die einen Abruf- Mißerfolg aus dem L1-Cache liefert, wird im Rahmen des Seiteneinlagerungsprozesses das Referenzbit der 4-kB-Seite, die die gewünschte L1-Zeile enthält, auf '1'b gesetzt. Für jede Speicheranforderung, die im L2-Cache ausgeführt wird, wird das Referenzbit der 4-kB-Seite, die das modifizierte Doppelwort oder den modifizierten L2-Cache-Schreibpuffer enthält, auf '1'b gesetzt. Für Speicherbefehle, die ein Speicherfeld betreffen, dessen Quelle sich direkt im Prozessorspeicher befindet, setzt der Befehl das zugehörige Referenzbit entsprechend. Für Kanal-Anforderungen wird bei jeder Abruf- oder Speicheranforderung an den Speicher das Referenzbit-der betreffenden 4-kB-Seite auf '1'b gesetzt, und zwar unabhängig davon, ob die Anforderung die Daten im L2*-Cache oder im Prozessorspeicher findet.
  • 1.2.4.2 Regeln für gleichzeitige Änderungsbit-Aktualisierung
  • Für jede Speicheranforderung, die im L2-Cache ausgeführt wird, wird das Anderungsbit der 4-kB-Seite, die das modifizierte Doppetwort oder den modifizierten L2-Cache-Schreibpuffer enthält, auf '1'b gesetzt. Für Speicherbefehle, die ein Speicherfeld betreffen, das direkt im Prozessorspeicher geändert wurde, setzt der Befehl das zugehörige Änderungsbit auf '1'b. Für Kanal-Anforderungen wird bei jeder Speicheranforderung an den Speicher das Anderungsbit der betreffenden 4-kB-Seite auf '1'b gesetzt, und zwar unabhängig davon, ob die Anforderung die Daten im L2- Cache oder im Prozessorspeicher findet. 1.2.5 Stufe 4: Erweiterungsspeicher (Level 4 - L4) Innerhalb des MP/3 gibt es bis zu 256 MB Erweiterungsspeicher. Dieser Speicher wird mit absoluten Adressen adressiert und wird als vollständig der Steuerung des System-Steuerprogramms unterliegend angesehen. Die Speichersteuerung besitzt einen physischen Anschluß, der L4 zur Verfügung steht. Die Größe der L4- Zeilen beträgt 128 Byte. Die L4-Speicherschnittstelle ist ein 16 Byte breiter bidirektionaler, gemultiplexter Befehls-/Adreßund Datenbus. Die Speichersteuerung kann zu jedem Zeitpunkt jeweils eine Operation, die den L4-Speicher verwendet, aktiv sein lassen. Alle Prozessorzugriffe auf den L4-Speicher verwenden einen gemeinsam genutzten Speicher-Datenpuffer und greifen auf 128-Byte-Vollzeilen zu, die auf 128-Byte-Grenzen adressiert werden. Alle Kanalzugriffe auf den L4-Speicher verwenden einen beliebigen Satz von Speicherkanal-Datenpuffern und greifen auf 128-Byte-Vollzeilen zu, die auf 128-Byte-Grenzen adressiert werden.
  • 1.3 Regeln für hierarchische Cachedaten
  • Um innerhalb einer Cache-Organisation mit zwei Stufen der Datenspeicherung die Datenkonsistenz wahren zu können, müssen bestimmte Regeln festgelegt werden. Einige Regeln sind erforderlich, um Anforderungen der Architektur zu erfüllen, und andere sind aufgrund der Implementierung der Hardware erforderlich. Die L1-Caches selbst sind für die Gewährleistung der Speicherkonsistenz innerhalb eines Prozessors verantwortlich. Der L2-Cache ist in erster Linie für die Bearbeitung der Konsistenz der L1- Caches im MP/3 zwischen den Prozessoren in der Konfiguration verantwortlich.
  • 1.3.1 Prozessorinterne Regeln für L1-Cachedaten
  • Innerhalb eines Prozessors kann eine L1-Cachezeile (64 Bytes) sowohl im L1-Anweisungscache als auch im L1-Operandencache gleichzeitig vorhanden sein. Dies bringt mit sich, daß Anweisungs- und Operanden-Abrufvorgänge innerhalb eines Prozessors für dieselbe Zeile gleichzeitig erfolgen können.
  • Da jedoch Prozessor-Speicheranforderungen nur für den L1D-Cache vorgenommen werden, müssen solche Anforderungen jede Zeile des L1-Anweisungscache entwerten, die das modifizierte Feld enthält. Wenn der Speichervorgang anschließend vom L2-Cache bearbeitet wird, prüft der L2-Cache seinen L1-Status für den L1-Anweisungscache des Anforderers. Falls im Anweisungscache eine Kopie gefunden wird, wird der L1-Status für den Anweisungscache gelöscht und zu dem anfordernden Prozessor die Anforderung einer lokalen Entwertung übertragen, um die Kopie im L1-Anweisungscache zu entwerten. Es erfolgt keine Änderung am L1-Status des L1-Operandencache, wenn der Speichervorgang im L2-Cache abgeschlossen wird. Es wird gewährleistet, daß die Entwertung in einer festgelegten Anzahl von Zyklen erfolgt, und der Entwertungsprozeß beeinträchtigt die Speicheroperation im L2-Cache in keiner anderen Weise; d. h., für die Durchführung der lokalen Entwertung der L1-Cache-Kopie entsteht keine Verzögerung in der L2-Cache-Pipeline. Man beachte, daß Speichervorgänge innerhalb der Speicherwarteschlange in der Reihenfolge bearbeitet werden, in der sie in die Warteschlange eingegliedert werden. Dies bringt mit sich, daß ein anstehender Speicherungskonflikt (ein Speichervorgang, der abgeschlossen sein muß, damit eine Abrufanforderung möglich wird) mehrere Einträge von dem ältesten Eintrag in der Speicherwarteschlange entfernt sein kann. Die Regeln für Operandenspeicher-Vergleiche und Programmspeichervergleiche müssen innerhalb des Prozessors eingehalten werden.
  • 1.3.1.1 Vergleich des Operandenspeichers
  • Wenn dem L1-Operandencache eine Operanden-Abrufanforderung vorgelegt wird, muß die absolute Adresse mit den aktiven Einträgen in der L1-Speicherwarteschtange dieses Prozessors verglichen werden. Ein aktiver Eintrag ist ein prinzipiell abgeschlossener Speichervorgang, der für eine Anweisung in die Speicherwarteschlange eingegliedert wurde, die aus der Sicht des Prozessors abgeschlossen ist, aber nicht in den L2-Cache geschrieben wurde. Zwei Situationen müssen bearbeitet werden. Um die Möglichkeit von Operandenspeicher-Vergleichen zu minimieren, wenn die Operanden-Abrufanforderung zu einem L1-Cache-Treffer führt, wird die absolute Adresse des Operandenabrufs mit den aktiven Einträgen der L1-Speicherwarteschlange auf der 8-Byte-Grenze verglichen. Falls der Vergleich Übereinstimmung ergibt, wird der Abruf zurückgehalten, solange der Abschluß der erforderlichen Speicheranforderung(en) im L2-Cache aussteht. Dies ist eine architekturbedingte Anforderung an ein Einzelabbild-Speichersystem in einer Mehrprozessorenkonfiguration. In dem Fall, daß der Operandenabruf zu einem im L1-Cache-Mißerfolg führt, wird die absolute Adresse für den Operandenabruf mit den aktiven Warteschlangeneinträgen des L1-Speichers auf der Grenze der L1-Cachezeile (64 Byte) verglichen. Falls der Vergleich Übereinstimmung ergibt, wird der Abrufzurückgehalten, solange der Abschluß der erforderlichen Speicheranforderung(en) im L2-Cache noch ansteht. Dies ist erforderlich, um zu gewährleisten, daß alle für die L1- Cachezeile anstehenden Speichervorgänge im L2-Cache abgeschlossen sind, bevor die Seiteneinlagerung der L1-Zeile in den L1- Operandencache durchgeführt wird. Hierdurch wird die Datenkonsistenz innerhalb der Cachespeicher-Hierarchie aufrechterhalten. Im Rahmen des Seiteneinlagerungsprozesses aktualisiert L2 seinen L1-Status, um die Anwesenheit der L1-Zeile in dem entsprechenden L1-Operandencache wiederzugeben. Der Fall einer zerstörenden Operandenüberlappung innerhalb von Speicher-zu-Speicher-Anweisungen muß berücksichtigt werden. In dieser Situation besteht innerhalb einer Anweisung eine Vergteichsbedingung für eine Operandenspeicherung, da das erste Byte des ersten Speicheroperanden innerhalb des Speicherfelds des zweiten Operanden liegt. Hier erfolgt der Operandenspeicher-Vergleich für die momentan aktive Anweisung, und die Abrufanforderung muß auf eine spezielle Weise bearbeitet werden. Wenn s}ch ein Abrufvorgang mit einem L1-Treffer ergibt, können die Daten aus dem L1-Cache beschafft werden, da dieser das modifizierte Speicherfeld enthält. Wenn sich ein Abruf mit L1-Mißerfplg ergibt, werden die Seiteneinlagerungsdaten aus dem L2-Cache mit den Daten der L1-Speicherwarteschlange zusammengefügt, um die neueste Kopie der L1-Zeile zu bilden, bevor die angeforderten Daten zum Prozessor geliefert werden und der L1-Cache und das Verzeichnis aktualisiert werden. Der Zweck, zu dem der Vergleich der L1-Zeile für die L1- Mißerfolg-Bedingung verwendet wird&sub1; besteht in der Wahrung der Datenkonsistenz zwischen dem L1- und L2-Cache. Ein Beispiel soll die Situation erläutern. Eine L1-Cache-Zeile sei mit 'A' bezeichnet. Die Doppelwörter in der Zeile 'A' seien mit 'A0' bis 'A7' bezeichnet. Eine Speicheranweisung stellt Daten in 'A2', und die Zeile ist in L1 gegenwärtig nicht vorhanden. Folglich wird nur in der Speicherwarteschlange ein Eintrag vorgenommen. Eine nachfolgende Abrufahweisung fordert 'A5' an. Für die gespeicherten Daten besteht kein anstehender Speicherungskonflikt, es tritt jedoch ein L1-Cache-Mißerfolg ein, da sich die Zeile nicht im L1-Cache befindet. Der L2-Cache überträgt die Zeile zum L1-Cache, und der Abruf ist abgeschlossen. Der Speichervorgang für 'A2' wird im L2-Cache abgeschlossen, und der Eintrag wird aus der Warteschlange entfernt. Die Daten in L1 und L2 für 'A2' sind nicht mehr gleich. Der Status der ersetzten L1-Cachezeile wird berücksichtigt. Falls die Zeile unmodifiziert ist oder falls die Zeile modifiziert wurde, aber keine anstehenden Speichervorgänge für diese Zeile in der Speicherwarteschlange vorhanden sind, ist auch im L2-Cache eine identische Kopie vorhanden. Die L1-Zeile wird einfach durch die ankommende Zeile für die Abrufanforderung ersetzt. Falls die Zeile modifiziert ist, aber anstehende Speichervorgänge für diese Zeile in der Speicherwarteschlange vorhanden sind, ist keine genaue Kopie auf der Stufe des L2-Cache vorhanden. Dies stellt jedoch kein Problem dar. Die anstehenden Speichervorgänge werden schließlich abgeschlossen, und die Zeile, zu der sie gehören, sind nur auf der Stufe des L2-Cache vorhanden, sofern nicht eine nachfolgende Abrufanforderung Daten innerhalb dieser Zeile verlangt. Zu diesem Zeitpunkt wird aufgrund anstehender Speicherungskonflikte für die ankommende L1-Cachezeile vor der Seiteneinlagerung ein Abschluß der Speichervorgänge erzwungen. In allen Fällen wird die für die Ersetzung ausgewählte L1-Zeile von der ankommenden Zeile für die Abrufanforderung einfach überschrieben.
  • 1.3.1.2 Vergleich des Programmspeichers
  • Wenn dem L1-Anweisungscache eine Anforderung für einen Anweisungsabruf oder einen vorzeitigen Anweisungsabruf vorgelegt wird, muß die logische Adresse mit den aktiven Einträgen in der L1-Speicherwarteschlange dieses Prozessors verglichen werden. Ein aktiver Eintrag ist ein prinzipiell abgeschlossener Speichervorgang, d. h. ein Speichervorgang, der für eine Anweisung in die Speicherwarteschlange eingegliedert wurde, die aus der Sicht des Prozessors abgeschlossen ist, aber nicht in den L2- Cache geschrieben wurde. Wieder müssen zwei Situationen bearbeitet werden. Im Falle "Store-then-Fetch" geht die Operanden-Speicherungsanforderung der Anweisungs-Abrufanforderung voraus. Wenn die Anweisungs-Abrufanforderung zu einem L1-Cache-Treffer führt, wird die logische Adresse des Anweisungsabrufs mit den aktiven Einträgen,der L1-Speicherwarteschlange auf der 8-Byte-Grenze verglichen. Falls der Vergleich eine Übereinstimmung ergibt, wird der Abruf zurückgehalten, solange der Abschluß der erforderlichen Speicheranforderung(en) im L2-Cache aussteht. Dies führt letztendlich dazu, daß der L2-Cache eine lokale Entwertung der Kopie im L1-Anweisungscache anfordert. Sobald der anstehende Speicherungskonflikt beseitigt wurde, führt die erneute Ausführung des Anweisungsabrufs zu einem L1-Cache-Mißerfolg. Wenn die Anweisungsabruf-Anforderung zu einer vergeblichen Suche im L1- Cache führt, wird die logische Adresse für den Anweisungsabruf mit den aktiven Warteschlangeneinträgen des L1-Speichers auf der Grenze der L1-Cachezeile (64 Byte) verglichen. Falls der Vergleich eine Übereinstimmung ergibt, wird der Abruf zurückgehal- ten, solange der Abschluß der erforderlichen Speicheranforderung(en) im L2-Cache ansteht. Dies ist erforderlich, um zu gewährleisten, daß alle für die L1-Cachezeile anstehenden Speichervorgänge im L2-Cache abgeschlossen sind, bevor die Seiteneinlagerung der L1-Zeile in den L1-Anweisungscache erfolgt. Hierdurch wird die Datenkonsistenz innerhalb der Cachespeicher- Hierarchie aufrechterhalten. Im Rahmen des Seiteneinlagerungsprozesses aktualisiert L2 seinen L1-Status, um die Existenz der L1-Zeile in dem entsprechenden L1-Anweisungscache wiederzugeben. Im Falle von "Fetch-then-Store" geht die Anweisungsabruf-Anforderung der Operanden-Speicherungsanforderung voraus. In diesem Fall sind die Daten im L1-Anweisungscache und möglicherweise in den Anweisungspuffern vorhanden. Eine Übereinstimmung der Adresse der Operandenspeicherung mit der Adresse eines vorzeitigen Anweisungsabrufs bewirkt eine Entwertung des erforderlichen Anweisungspufferinhalts zu dem Zeitpunkt, zu dem beim L1-Operandencache die Operandenspeicherung angefordert wird. Die verworfenen Anweisungen müssen anschließend erneut aus dem Speicher abgerufen werden, nachdem die erforderlichen Speichervorgänge im L2-Cache abgeschlossen sind. Sobald der anstehende Speicherungskonflikt im L2-Cache bearbeitet wurde, löscht der L2-Cache den entsprechenden Eintrag im L1-Status und fordert die lokale Entwertung der Kopie im L1-Anweisungscache an. Ein erneuter Abruf der Anweisungen führt nun zu einem L1-Cache-Mißerfolg und zu einer Seiteneinlagerung aus dem L2-Cache. Die Implementierung des L1-Cache in Form getrennter Anweisungs- und Operandencaches führt zu einem Übersetzungs-Umsetzpuffer (Translation Look-aside Buffer - TLB) für jeden von diesen. Da der Inhalt jedes TLB verschieden sein kann, kann ein Operanden-Speichervorgang, der zu einem TLB-Treffer im Operandencache führt, zu einem TLB-Mißerfolg im Anweisungscache führen. Unter solchen Umständen kann eine L1-Cachezeile, die gleichzeitig im L1-Anweisungscache und Operandencache vorhanden ist, nicht sofort vom L1-Anweisungscache entwertet werden, da die logische Adresse nicht erfolgreich in eine absolute Adresse übersetzt werden kann, die erforderlich ist, um das Verzeichnis des Anweisungscache zu überprüfen. Dies kann durch zwei Alternativen zu dem gewählten Verfahren behoben werden. Erstens kann ein doppelter Operandencache-TLB innerhalb der Anweisungscache-Funktion geführt werden, um eine erfolgreiche Adreßübersetzung zu gewährleisten. Zweitens kann der Prozessor angehalten werden, um der Anweisungscache-Funktion die Übersetzung der Adresse zu ermöglichen, entweder indem die übersetzte Adresse aus dem TLB des Operandencache entnommen wird oder durch tatsächliche Adreßübersetzung. Keine dieser Alternativen ist so wirksam wie das gewählte Verfahren.
  • 1.3.1.3 Vergleich des L1-Cache-Seiteneinlagerungspuffers
  • Der L1-Operandencache enthält einen Seiteneinlagerungspuffer, der dafür ausgelegt ist, eine L1-Cachezeile bei einer Seiteneinlagerung aufgrund L1-Cache-Mißerfolgs aufzunehmen. Bei einem Abruf-Mißerfolg in L1 überträgt der Seiteneinlagerungsvorgang zunächst das gewünschte Doppeiwort, und der Rest der L1-Cachezeile folgt anschließend. Die Seiteneinlagerungsdaten werden nicht in 16-Byte-Abschnitten direkt in den L1-Cache geladen, sondern vielmehr in den Seiteneinlagerungspuffer des L1-Cache. Nach der Anfangs-Datenübertragung wird die Prozessor-Pipeline wieder gestartet, und die Verarbeitung darf fortgesetzt werden. Nachfolgende Abruf- und Speicherungsanforderungen können an den L1-Cache gerichtet werden, während die vorausgegangenen Seiteneinlagerung im Seiteneinlagerungspuffer des L1-Cache abgeschlossen wird. Diese Funktion verkompliziert jedoch die Regeln für Cachedaten. Falls nach der Anfangs-Datenübertragung und dem Neustart der Prozessor-Pipeline eine nachfolgende Abrufanforderung Daten aus derselben L1-Cachezeile anfordert, muß sie abwarten, bis die Daten in den Seiteneinlagerungspuffer des L1-Cache übertragen wurden, bevor sie fortfahren kann. Die Anforderung gilt zwar weiterhin als Mißerfolg bei L1-Abruf, wird jedoch nicht zum L2-Cache übertragen, da die Seiteneinlagerung der L1-Cachezeile bereits durchgeführt wird. Falls nach der Anfangs-Datenübertra- gung und dem Neustart der Prozessor-Pipeline eine nachfolgende Speicheranforderung für dieselbe L1-Cachezeile erfolgt, wird die Speicheranforderung abgebrochen und die Prozessor-Pipeline angehalten, bis der Inhalt des L1-Cache-Seiteneinlagerungspuffers in den L1-Cache geladen und das Cacheverzeichnis aktualisiert wurde. Dies ist erforderlich, um Datenkonsistenz zwischen den Stufen in der Cachespeicher-Hierarchie zu bewahren und um der Möglichkeit vorzubeugen, daß der L1-Status mehrere Vorkommen einer gegebenen L1-Cachezeile in einem einzelnen L1-Cache wiedergibt. Alternativ könnte die Speicheranforderung eine Entwertung des Inhalts des L1-Cache-Seiteneintagerungspuffers verursachen und dadurch ermöglichen, daß die Anweisungsverarbeitung fortgesetzt wird. Dies kann jedoch dazu führen, daß die L1-Cachezeile für die L2-Steuerung in mehr als einem Cachesatz erscheint. Man bedenke das folgende Beispiel. Wegen eines Abruf- Mißerfolgs wird eine L1-Zeile momentan in den Seiteneinlagerungspuffer des L1-Cache eingelagert. Nach der anfänglichen Datenübertragung aus dem L2-Cache wird die Prozessor-Pipeline neu gestartet. Der L1-Status wird in der L2-Steuerung aktualisiert, aber die L1-Aktivität verhindert, daß der Inhalt des Seiteneinlagerungspuffers in den L1-Cache geladen und das L1-Verzeichnis aktualisiert wird. Es erfolgt eine Speicherung in die Zeile im Seiteneinlagerungspuffer, der eine Entwertung des Inhalts des Seiteneinlagerungspuffers bewirkt. Ein nachfolgender Abruf aus derselben Zeile bewirkt eine Seiteneinlagerung im L1- Cache, möglicherweise in einen anderen L1-Cachesatz. Infolge des L1-Abrufmißerfolgs wird die L1-Statusmatrix für L2 aktualisiert. Der L1-Status gibt nun das doppelte Vorkommen der Zeile im L1- Cache wieder.
  • 1.3.2 Prozessorübergreifende Regeln für L1-Cachedaten
  • Im MP/3 kann eine bestimmte L1-Cachezeile in mehreren Prozessoren gleichzeitig vorhanden sein. Dies könnte dazu führen, daß bis zu sechs Kopien gleichzeitig auf der Stufe des L1-Cache im MP/3 vorhanden sind, wenn sowohl Anweisungs- als auch Operandencache in jedem Prozessor eine Kopie enthälten.
  • 1.3.2.1 Abrufzugriffe
  • Für Speicher-Abrufzugriffe durch den Prozessor ist - abgesehen von etwaigen anstehenden Speicherkonftikten innerhalb des Prozessors - der Zugriff niemals untersagt. Ein Abruf mit L1-Cache- Treffer wird fortgesetzt, ohne die mögliche Existenz der L1-Zeile in den anderen Prozessoren zu berücksichtigen. Die inteüessierende Situation ist ein L1-Mißerfolg bei Abruf. Wenn die Anforderung vom L2-Cache bearbeitet wird, ignoriert die Anforderung der L1-Seiteneinlagerung eine etwaige Sperre, die die anderen Prozessoren für ein Doppelwort innerhalb der angeforderten L1-Zeile halten, und der L1-Status für den betreffenden L1-Cache wird aktualisiert, um die Anwesenheit der neuen Zeile im L1-Cache wiederzugeben. Für "Fetch-and-lock"-Zugriffe durch den Prozessor müßte die- Prozessor-Speicherwarteschlange zunächst in den L2-Cache entleert werden, so daß keine anstehenden Speicherungskonflikte bestehen. Der Abrufzugriff ist nur dann unzulässig, wenn ein anderer Prozessor bereits eine Sperre für dasselbe Doppeiwort enthält. Andernfalls wird das Doppeiwort freigegeben, und der Abrufzugriff wird gestattet, so daß eine Kopie der L1- Zeile in mehreren Prozessoren vorhanden sein darf. Bei dieser Implementierung ist es möglich, daß alle Prozessoren innerhalb des MP/3 eine Sperre für ein jeweils anderes Doppelwort in derselben L1-Cachezeile halten.
  • 1.3.2.2 Speicherungszugriffe
  • Bei einem Speicherungszugriff durch einen Prozessor muß zusätzlich zu den Regeln für prozessorinterne L1-Cache-Daten eine Quer-Entwertung der L1-Caches der anderen Prozessoren stattfinden. Die Entwertung der L1-Cache-Kopien der anderen Prozessoren erfolgt zu dem Zeitpunkt, zu dem die Speicheranforderung auf der Stufe des L2-Cache bearbeitet wird und die L2-Cache-Datenmatrizen aktualisiert werden. Für sequentielle Speicheroperationen wird während der Übertragung von Daten aus der Speicherwarteschlange in die L2-Cache-Schreibpuffer keine Überprüfung der L1- Cachekopien durchgeführt, sondern erst während der Routine für den Abschluß der sequentielten Speicherung, wenn der L2-Cache tatsächlich aktualisiert wird. Die L1-Statusmatrizen von L2 für die L1-Caches der anderen Prozessoren werden nach der angegebenen L1-Cachezeile durchsucht. Falls sie gefunden wird, wird eine Entwertungsanforderung nach Bedarf an beide L1-Caches in den anderen Prozessoren gleichzeitig gesandt, und der Kopie-Status für die entwerteten L1-Cachezeilen wird in den entsprechenden L1-Statusmatrizen gelöscht. Es wird gewährleistet, daß die Entwertung in einer festgelegten Zahl von Zyklen erfolgt und der Entwertungsprozeß die Speicheroperation in den L2-Cache in keiner anderen Weise beeinträchtigt, d. h., daß keine Verzögerung in der Pipeline des L2-Cache entsteht, um die Quer-Entwertung der L1-Cachekopien durchzuführen. Anweisungen oder Operanden, die innerhalb eines Prozessors aus dem L1-Cache vorzeitig abgerufen, aber in diesem Prozessor noch nicht genutzt wurden, müssen nicht aufgrund einer Quer-Entwertung von L1-Cache kopien entwertet werden, wenn aufgrund eines anderen Prozessors in der Konfiguration ein Speicherzugriff im L2-Cache erfolgt. Falls jedoch eine durch Quer-Entwertung angeforderte L1-Cachezeile ganz oder teilweise im Seiteneinlagerungspuffer des L1-Cache vorhanden ist, muß sie entwertet werden, als ob die Zeile im L1- Cache vorhanden wäre. Dies ist erforderlich, um die Einhaltung der Anforderungen der Architektur zu gewährleisten. Eine Entwertung von L1-Cache-Kopien zwischen Prozessoren erfolgt nur bei Speicherzugriffen auf der L2-Cache-Stufe. In der Realität könnte die Entwertung für synchronisierte Aktualisierungen beim "Fetchand-Lock"-Zugriff erfolgen; dies würde aber Abrufzugriffe oder "Fetch-and-Lock"-Zugriffe auf andere Daten innerhalb der L1-Cachezeile durch die anderen Prozessoren verhindern. Da synchronisierte Aktualisierungen voraussetzen, daß das Sperregister auf der Stufe des L2-Cache gesetzt wird, und die Sperre für ein Doppeiwort im Speicher gilt, wurde beschlossen, die Entwertung beim Store-and-Unlock-Zugriff durchzüführen und dadurch gleichzeitige Zugriffe auf diese L1-Cachezeile zu ermöglichen. Molglich erfordern Abrufzugriffe niemals eine Quer-Entwertung von L1-Cache- Kopien.
  • 2. Speicherroutinen 2.1 Speicher-Abrufroutinen für den MP/3-Prozessor 2.1.1 Speicherabruf, TLB-Mißerfolg
  • Die Ausführungseinheit gibt eine Prozessorspeicher-Abrufanforderung an den L1-Cache aus. Der satzassoziativen TLB-Suche gelingt es nicht, eine absolute Adresse zu der von der Anforderung vorgelegten logischen Adresse zu liefern. Der Ausführungseinheit wird eine Anforderung für dynamische Adreßübersetzung vorgelegt, und die aktuelle Speicheroperation wird ausgesetzt, solange ihre Ergebnisse ausstehen. Der TLB-Mißerfolg setzt die Ergebnisse der Suche im L1-Cacheverzeichnis außer Kraft, da vom Tlbkeine gültige absolute Adresse für den Vergleich zur Verfügung gestellt wird. Ein satzassoziativer Lesezugriff auf den L1-Cache wird gleichzeitig durchgeführt. Die erhaltenen Daten werden ignoriert. Die Anforderung wird aufgrund der TLB-Mißerfolgsbedingung nicht zum L2-Cache übertragen. Die Anforderung wird anschließend erneut ausgeführt, falls die Adresse erfolgreich übersetzt werden kann.
  • 2.1.2 Speicherabruf, TLB-Treffer, Zugriff-Ausnahmebedingung, L1-Cache-Treffer oder -Mißerfolg
  • Die Ausführungseinheit gibt eine Prozessorspeicher-Abrufanforderung an den L1-Cache aus. Die satzassoziative TLB-Suche liefert eine absolute Adresse zu der von der Anforderung vorgelegten logischen Adresse. Es wird jedoch infolge des TLB-Zugriffs eine Zugriff-Ausnahmebedingung (Schutz oder Adressierung) festgestellt. Der Ausführungseinheit wird die Zugriff-Ausnahmebedingung mitgeteilt, und die aktuelle Speicheroperation wird annulliert. Die Zugriff-Ausnahmebedingung setzt die Ergebnisse der Verzeichnissuche im L1-Cache außer Kraft. Gleichzeitig wird ein satzassoziativer Lesezugriff auf den L1-Cache durchgeführt. Die erhaltenen Daten werden ignoriert. Die Anforderung wird aufgrund der Zugriff-Ausnahmebedingung nicht zum L2-Cache übertragen.
  • 2.1.3 Speicherabruf, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L1-Cache-Treffer, kein anstehender Speicherungskonflikt
  • Die Ausführungseinheit gibt eine Prozessorspeicher-Abrufanforderung an den L1-Cache aus. Die satzassoziative TLB-Suche liefert eine absolute Adresse (ohne Zugriff-Ausnahmebedingungen) zu der von der Anforderung vorgelegten logischen Adresse. Bei der Durchsuchung des L1-Cacheverzeichnisses werden die Daten im Cache gefunden (L1-Treffer), da im Vergleich mit der absoluten Adresse aus dem TLB eine Übereinstimmung ergibt. Ein satzassoziativer Lesevorgang zum L1-Cache wird gleichzeitig durchgeführt. Als Ergebnis des L1-Cache-Treffers wird, wenn es sich um eine L1-Operandencache-Anforderung handelt, bei anstehenden Speicherungskonflikten die absolute Adresse der Abrufanforderung mit den absoluten Adressen der Warteschlangeneinträge für prinzipiell abgeschlossene Speichervorgänge auf der 8-Byte-Grenze verglichen; wenn es sich um eine L1-Anweisungscache-Anforderung handelt, wird bei anstehenden Speicherungskonflikten die logische Adresse der Abrufanforderung mit den logischen Adressen der Warteschlangeneinträge fr prinzipiell abgeschlossene Vorgänge auf der 8-Byte-Grenze verglichen. Ebenso werden, falls diese Abrufanforderung Bestandteil der Ausführung einer Speicher-zu- Speicher-Anweisung ist, die absoluten Adressen der Speicherwarteschlangeneinträge für diese Anweisung verglichen, um eine zer- störende Operandenüberlappung festzustellen. Es bestehen keine anstehenden Speicherungskonflikte. Die satzassoziative Durchsuchung des Cache-Verzeichnisses identifiziert den Cache-Satz anhand einer Übereinstimmung mit der absoluten Adresse aus dem TLB, und die ausgewählten Daten werden an die Anforderung und die Adresse für die Übertragung zum Anforderer korrekt angepaßt. Die Anforderung wird aufgrund der L1-Cache-Trefferbedingung nicht zum L2-Cache übertragen.
  • 2.1.4 Speicherabruf, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L1-Cache-Nißerfolg, kein anstehender Speicherungskonflikt, L2-Cache-Treffer
  • Die Ausführungseinheit gibt an den L1-Cache eine Prozessorspeicher-Abrufanforderung aus. Die satzassoziative TLB- Durchsuchung liefert eine absolute Adresse - ohne Zugriff-Ausnahmebedingungen - für die von der Anforderung vorgelegte logische Adresse. Die satzassoziative Durchsuchung des L1-Cache-Verzeichnisses zeigt, daß sich die angeforderten Daten nicht im Cache befinden (L1-Mißerfolg), da ein Vergleich mit der Adresse aus dem TLB fehlschlägt. Ein satzassoziativer Lesezugriff auf den L1-Cache wird gleichzeitig durchgeführt. Infolge des L1- Cache-Mißerfolgs wird, falls es sich um eine L1-Operandencache- Anforderung handelt, für anstehende Speicherungskonflikte die absolute Adresse der Abrufanforderung mit den absoluten Adressen der Warteschlangeneinträge für prinzipiell abgeschlossene Speichervorgänge auf der Grenze der L1-Cachezeile (64 Byte) verglichen; falls essich um eine L1-Anweisungscache-Anforderung handelt, wird die logische Adresse der Abrufanforderung bei anstehenden Speicherungskonflikten mit den logischen Adressen der Warteschlangeneinträge für prinzipiell abgeschlossene Speichervorgänge auf der Grenze der L1-Cachezeile (64-Byte) verglichen. Außerdem werden, falls diese Abrufanforderung Teil der Ausführung einer Speicher-zu-Speicher-Anweisung ist, die absoluten Adressen der Speicherwarteschlangeneinträge für diese Anweisung verglichen, um eine Zerstörende Operandenüberlappung festzustellen. Es bestehen keine anstehenden Speicherungskonflikte. Der L1-Cache überträgt die Prozessorspeicher-Abrufanforderung und die Bits 4:28 der absoluten Adresse an L2, sobald eine Seiteneinlagerung in den L1-Cache angefordert wird. Im folgenden Zyklus wird der L1-Cachesatz der zu ersetzenden L1-Zeile gemeinsam mit der L1-Cache-Kennung (Steuerspeicher, Anweisungs- oder Operandencache) zu L2 übertragen. Der ausgewählte Ersetzungseintrag wird im L1-Cache-Verzeichnis entwertet. Falls ein anstehender Speicherungskonflikt besteht, wird die wegen Mißerfolgs beim L1- Abruf gestellte Anforderung nicht zum L1-Cache übertragen, bevor die Prozessorspeicher-Anforderung, die den anstehenden Speicherungskonflikt verursacht hat, in den L2-Cache geschrieben und die Fehlerbedingung in L1 behoben ist. Die L2-Cache-Priorität wählt diese Prozessor-Abrufanforderung zur Bearbeitung aus. Die L2-Steuerung überträgt einen L2-Cache-Abrufbefehl des Prozessors und eine L2-Cache-Kongruenz zur L2-Cachesteuerung sowie einen L2-Cache-Abrufbefehl des Prozessors zur Speichersteuerung. Eine Seiteneinlagerung im L1-Cache des anfordernden Prozessors ist erforderlich und zulässig, und zwar unabhängig von etwaigen Sperr- oder Zeilenhalt-Bedingungen, die der anfordernde Prozessor eventuell aufweist, oder unabhängig von Sperr- oder Zeilenhalt-Bedingungen ohne aktive Anzeige für einen nicht behebbaren Speicherfehler, die ein anderer Prozessor eventuell aufweist. Aus der Durchsuchung des L2-Cache-Verzeichnisses ergibt sich eine von zwei Bedingungen, die einen L2-Cache-Treffer liefern.
  • Fall 1
  • Die Durchsuchung des L2-Cacheverzeichnises führt zu einem L2- Cache-Treffer, aber ein Einfrierregister mit aktiver Anzeige für einen nicht behebbaren Speicherfehler oder ein Zeilenhalt-Register mit aktiver Anzeige für einen nicht behebbaren Speicherfehler ist für einen anderen Prozessor für die angeforderte L2- Cachezeile gesetzt. Die L2-Steuerung setzt diese Speicherungsanforderung aus, solange die Freigabe der Einfrier- oder Zeilenhalt-Bedingung mit nicht behebbarem Speicherfehler aussteht. Speicherwarteschlangen-Anforderungen für diesen Prozessor können weiterhin von der L2-Steuerung bearbeitet werden. Zu Adresse/Schlüssel werden keine Informationen übertragen. Der Status der L2-Cachezeile und Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Wegen der Einfrier- oder Zeilenhalt-Bedingung mit nicht behebbarem Speicherfehlerkonflikt bei dem anderen Prozessor wird ein Sperrstatus erzwungen. Die Aktualisierung der L1-Statusmatrix ist aufgrund der Einfrier- bzw. Zeilenhalt-Bedingung mit nicht behebbarem Speicherfehlerkonflikt blockiert. Die L2-Cachesteuerung empfängt den L2-Cache-Abrufbefehl des Prozessors und die L2-Kongruenz und beginnt den Zugriff auf den L2- Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Zwei Lesezyklen sind erforderlich, um die gewünschte 64 Byte lange L1-Cachezeile zu beschaffen. Der erste Leseiyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Treffer und gesperrt) empfangen hat, blockiert sie alle Datenübertragungen zu dem anfordernden L1-Cache und verwirft den Befehl. Die Speichers teuerung empfängt den L2-Befehl und die Kennung des L3-Anschlusses. Sobald der Status der L2- Cachezeile (L2-Treffer und gesperrt) empfangen wurde, wird die Anforderung verworfen.
  • Fall 2
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Treffer. Die absolute Adresse wird mit einem Befehl "Set Reference Bit" (Referenzbit setzen) zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die L1-Statusmatrix des L1- Cache des anfordernden Prozessors wird aktualisiert, um die Anwesenheit der L1-Zeile im L1-Cache wiederzugeben. Die L1-Cache- Kongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als diejenigen Daten verwendet, die in den Eintrag gestellt werden, der durch den L1-Cachesatz und die Kennung gewählt wurde, die mit der Prozessor-Abrufanforderung übertragen wurden. Die L2-Cachesteuerung empfängt den L2-Cache-Abrufbefehl des Prozessors und die L2-Cache-Kongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen, zum L2-Datenstrom. Zwei Lesezyklen werden benötigt, um die gewünschte 64 Byte lange L1-Cachezeile zu beschaffen. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Nachdem die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Treffer und nicht gesperrt) empfangen hat, verwendet sie den L2-Cachesatz, um die richtigen 32 Bytes in jedem Lesezyklus auszuwählen und 8 Bytes pro Übertragungszyklus, beginnend mit dem anfangs angeforderten Doppelwort, zu dem anfordernden L1-Cache zu leiten. Während die Verarbeitung neu gestartet wird, wird die Seiteneinlagerungsoperation im L1-Cache abgeschlossen, indem der Cache geladen wird; anschließend erfolgt die Aktualisierung des L1-Cacheverzeichnisses. Die Speichersteuerung empfängt den L2-Befehl und die L3- Anschlußkennung. Sobald der Status der L2-Cachezeile (L2-Treffer und nicht gesperrt) empfangen wurde, wird die Anforderung verworfen. Adresse/Schlüssel empfängt die absolute Adresse zur Aktualisierung des Referenzbits. Das Referenzbit für die 4-kB-Seite, die die in der Prozessor-Abrufanforderung angeforderte L1- Cachezeile enthält, wird auf '1'b gesetzt.
  • 2.1.5 Speicherabruf, TLB-Treffer, keine Zugriff-Ausnahmebe- dingungen, L1-Cache-Mißerfolg, kein anstehender Speicherungskonflikt, L2-Cache-Mißerfolg
  • Die Ausführungseinheit gibt eine Prozessorspeicher-Abrufanforderung an den L1-Cache aus. Die satzassoziative TLB-Suche liefert eine absolute Adresse ohne Zugriff-Ausnahmebedingungen für die von der Anforderung vorgelegte logische Adresse. Die satzassoziative Durchsuchung des L1-Cache-Verzeichnisses zeigt, daß sich die angeforderten Daten nicht im Cache befinden (L1-Mißerfolg), da ein Vergleich mit der Adresse aus dem TLB eine Diskrepanz ergibt. Ein satzassoziativer Lesezugriff auf den L1-Cache wird gleichzeitig durchgeführt. Als Ergebnis des L1-Cache-Mißerfolgs wird, falls es sich um eine Anforderung des L1-Operandencache handelt, die absolute Adresse der Abrufanforderung mit den absoluten Adressen der Warteschlangeneinträge für prinzipiell abgeschlossene Speichervorgänge auf der Grenze der L1-Zeile (64 Bytes) für anstehende.Speicherungskonflikte verglichen; falls es sich um eine Anforderung des L1-Anweisungscache handelt, wird die logische Adresse der Abrufanforderung mit den logischen Adressen der Warteschlangeneinträge für prinzipiell abgeschlossene Speichervorgänge auf der Grenze der L1-Zeile (64 Byte) für anstehende Speicherungskonflikte verglichen. Außerdem werden, wenn diese Abrufanforderung Bestandteil der Ausführung einer Speicher-zu-Speicher-Anweisung ist, die absoluten Adressen der Speicherwarteschlangeneinträge für diese Anweisung verglichen, um eine zerstörende Operandenüberlappung erkennen zu können. Es bestehen keine anstehenden Speicherungskonflikte. Der L1-Cache überträgt die Prozessorspeicher-Abrufanforderung und die Bits 4:28 der absoluten Adresse an L2, sobald eine Seiteneinlagerung im L1-Cache erforderlich ist. Im folgenden Zyklus wird der L1-Cachesatz der zu ersetzenden L1-Zeile gemeinsam mit der L1-Cache-Kennung (Steuerspeicher, Anweisungs- oder Operandencache) zu L2 übertragen. Der ausgewählte Ersetzungseintrag wird im L1-Cache-Verzeichnis entwertet. Falls ein anstehender Speicherungskonflikt besteht, wird die wegen Mißerfolgs bei L1- Abruf gestellte Anforderung nicht zum L1-Cache übertragen, bevor die Prozessor-Speicheranforderung, die den anstehenden Speicherungskonflikt verursacht hat, in den L2-Cache geschrieben und die Fehlerbedingung in L1 behoben ist. Die L2-Cache-Priorität wählt diese Prozessor-Abrufanforderung zur Bearbeitung aus. Die L2-Steuerung überträgt einen L2-Cache-Abrufbefehl des Prozessors und eine L2-Cache-Kongruenz zur L2-Cachesteuerung sowie einen L2-Cache-Abrufbefehl des Prozessors zur Speichersteuerung. Eine Seiteneinlagerung im L1-Cache des anfordernden Prozessors ist erforderlich und zulässig, und zwar unabhängig von etwaigen Sperr- oder Zeilenhalt-Bedingungen, die der anfordernde Prozessor eventuell aufweist, oder unabhängig von etwaigen Sperr- oder Zeilenhalt-Bedingungen ohne aktive Anzeige für einen nicht behebbaren Speicherfehler, die ein anderer Prozessor eventuell aufweist. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich einer von drei Zuständen, die einen L2-Cache-Mißerfolg liefern. Infolge des L2-Cache-Mißerfolgs wird die Abrufanforderung ausgesetzt, um die Bearbeitung anderer Anforderungen im L2-Cache zu ermöglichen, während die Seiteneinlagerung für die angeforderte L3-Zeile erfolgt.
  • Fall A
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg, aber eine frühere L2-Cache-Seiteneinlagerung steht für diesen Prozessor an. Die L2- Steuerung setzt diese Abrufanforderung aus, solange die Beendigung der früheren Seiteneinlagerungsanforderung aussteht. Für diesen Prozessor können keine weiteren Anforderungen im L2-Cache bearbeitet werden, da sowohl für die Befehlspuffer als auch für die Speicherwarteschlange der Abschluß einer L2-Cache-Seiteneinlagerung aussteht. Zu Adresse/Schlüssel werden keine Informationen übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Spei- chersteuerung übertragen. Aufgrund der vorherigen Seiteneinlagerungsanforderung wird der Sperrstatus erzwungen. Die Aktualisierung der L1-Statusmatrix ist aufgrund des L2-Cache-Mißerfolgs blockiert. Die L2-Cachesteuerung empfängt den L2-Cache-Abrufbefehl des Prozessors und die L2-Cache-Kongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Zwei Lesezyklen werden benötigt, um die gewüngchte 64 Byte lange L1-Cachezeile zu beschaffen. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Nachdem die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Mißerfolg und gesperrt) empfangen hat, blockiert sie etwaige Datenübertragungen zu dem anfordernden L1-Cache und verwirft den Befehl. Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Sobald der Status der L2-Cachezeile (L2-Mißerfolg und gesperrt) empfangen wurde, wird die Anforderung verworfen.
  • Fall B
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg, aber eine frühere L2-Cache-Seiteneinlagerung steht für einen anderen Prozessor zu derselben L2-Cachezeile an. Die L2-Steuerung setzt diese Abrufanforderung aus, solange der Abschluß der vorherigen Seiteneinlagerungsanforderung aussteht. Speicherwarteschlangenanforderungen für diesen Prozessor können von der L2-Steuerung weiterhin bearbeitet werden. Zu Adresse/Schlüssel werden keine Informationen übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Aufgrund des Einfrierkonflikts der früheren Seiteneinlagerung wird der Sperrstatus erzwungen. Die Aktualisierung der L1-Statusmatrix ist aufgrund des L2-Cache-Mißerfolgs blockiert. Die L2-Cachesteuerung empfängt den L2-Cache-Abrufbefehl des Prozessors und die L2-Cache-Kongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Zwei Lesezyklen werden benötigt, um die gewünschte 64 Byte lange L1-Cachezeile zu beschaffen. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Nachdem die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Mißerfolg und gesperrt) empfangen hat, blockiert sie etwaige Datenübertragungen zum anfordernden L1-Cache und verwirft den Befehl. Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Sobald der Status der L2-Cachezeile (L2-Mißerfolg und gesperrt) empfangen wurde, wird die Anforderung verworfen.
  • Fall C
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg. Die L2-Steuerung setzt diese Abrufanforderung aus und setzt das Seiteneinlagerung-Einfrierregister des Prozessors. Speicherwarteschlangenanforderungen für diesen Prozessor können von der L2-Steuerung weiterhin bearbeitet werden. Die absolute Adresse wird zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Aktualisierung der L1-Statusmatrix ist aufgrund des L2-Cache-Mißerfolgs blockiert. Die L2-Cachesteuerung empfängt den L2-Cache-Abrufbefehl des Prozessors und die L2-Cachekongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Zwei Lesezyklen werden benötigt, um die gewünschte 64 Byte lange L1-Cachezeile zu beschaffen. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (Mißerfolg und nicht gesperrt) empfangen hat, blockiert sie etwaige Datenübertragungen zu dem anfordernden L1-Cache und verwirft den Befehl. Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Sobald der Status der L2-Cachezeile (L2-Mißerfolg und nicht gesperrt) empfangen wurde, wird die Anforderung in die Priorität für den erforderlichen L3-Speicheranschluß eingetragen. Wenn alle Ressourcen (einschließlich eines Seiteneinlagerungs-/Seitenauslagerungs-Pufferpaars) verfügbar sind, wird zur BSU-Steuerung ein Befehl übertragen, den L3-Abrufzugriff für den Prozessor zu beginnen. Die Speichersteuerung weist die L2-Steuerung an, den Status des L2-Verzeichnisses für die anstehende Seiteneinlagerung auf normale Weise zu setzen. Adresse/Schlüssel empfängt die absolute Adresse. Das Referenzbit für die 4-kB-Seite, die 4ie angeforderte L2-Cachezeile enthält, wird auf '1'b gesetzt. Die absolute Adresse wird in eine physische L3-Adresse umgewandelt. Die physische Adresse wird zur BSU- Steuerung übertragen, sobald die Schnittstelle infolge des L2- Cache-Mißerfolgs verfügbar ist. Sobald die Bsu-Steuerung den Befehl der Speichersteuerung und die physische L3-Adresse von Adresse/Schlüssel empfangen hat, leitet sie den 128 Byte langen Abruf am L3-Speicheranschluß ein, indem sie Befehl und Adresse zum Prozessorspeicher überträgt und die Speicherkarten in dem gewünschten Anschluß wählt. Die Daten werden in 16-Byte-Abschnitten über eine gemultiplexte Befehls-/Adreß- und Datenschnittstelle mit dem L3-Speicheranschluß übertragen. Acht Übertragungen aus dem L3-Speicher werden benötigt, um die 128 Byte lange L2-Cachezeile zu beschaffen. Die Sequenz der Vierfachwort-Übertragungen beginnt mit demjenigen Vierfachwort, das das vom Abrufzugriff angeforderte Doppelwort enthält. Die nächsten drei Übertragungen enthalten den Rest der L1-Cachezeile. Die letzten vier Übertragungen enthalten den Rest der L2- Cachezeile. Die vom Prozessor gewünschten Daten werden so zum L1-Cache übertragen, wie sie im L2-Cache empfangen und in einen Seiteneinlagerungspuffer des L2-Cache geladen werden. Während die Verarbeitung wieder gestartet wird, wird die L1-Cache-Sei- teneinlagerungsoperation mit dem Laden des Cache abgeschlossen, an das sich die Aktualisierung des L1-Cacheverzeichnisses anschließt. Während die letzte Datenübertragung zum Seiteneinlagerungspuffer des L2-Cache abgeschlossen wird, aktiviert die BSU- Steuerung das Signal "Inpage Complete" (Seiteneinlagerung abgeschlossen) des betreffenden Prozessors für die L2-Steuerung. Während der Datenübertragungen zum L2-Cache überwacht Adresse/Schlüssel die Zeilen für nicht behebbaren L3-Fehler. Falls während des Seiteneinlagerungsvorgangs ein nicht behebbarer Fehler festgestellt wird, werden mehrere Funktionen ausgeführt. Bei jeder Doppelwortübertragung zum L1-Cache wird gleichzeitig ein Signal für einen nicht behebbaren L3-Fehler übertragen, um den Status der Daten zu kennzeichnen. Der Status der restlichen Vierfachwörter in der betreffenden L2-Cachezeile wird dem anfordernden Prozessor ebenfalls gemeldet. Der Prozessor empfängt für eine gegebene Seiteneinlagerungsanforderung maximal einen Hinweis auf einen nicht behebbaren Speicherfehler, und zwar den ersten, der von Adresse/Schlüssel festgestellt wird. Die Doppelwortadresse des ersten von Adresse/Schlüssel festgestellten nicht behebbaren Speicherfehlers wird für den anfordernden Prozessor aufgezeichnet. Falls für irgendwelche Daten in der vom Prozessor angeforderten L1-Zeile ein nicht behebbarer Speicherfehler auftritt, wird ein Hinweis für die Behandlung nicht behebbarer Speicherfehler gesetzt. Falls schließlich bei Daten, die zum Seiteneinlagerungspuffer des L2-Cache übertragen werden, ein nicht behebbarer Fehler auftritt, sendet Adresse/Schlüssel ein Signal zur L2-Steuerung, um die Beendigung der Seiteneinlagerung in den L2-Cache zu verhindern. Die L2-Cache-Priorität wählt das "Inpage Complete" für den Prozessor zur Bearbeitung aus. Die L2-Steuerung überträgt einen Befehl "Write Inpage Buffer" und die L2-Cache-Kongruenz zur L2-Cachesteuerung und eine Statusantwort "Inpage Complete" zur Speichersteuerung. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich einer von drei Zuständen.
  • Fall 1
  • Bei der Seiteneinlagerung in den Seit eneinlagerungspuffer des L2-Cache wurde ein nicht behebbarer L3-Speicherfehler festgestellt. Die L2-Steuerung erkennt, daß fehlerhäfte Daten im Seiteneinlagerungspuffer vorhanden sind, und blockiert die Aktualisierung des L2-cacheverzeichnisses. Das Einfrierregister, das für diese durch einen L2-cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, wird geleert. Der betreffende L1-Cache- Anzeiger für den Prozessor, der die Seiteneinlagerung angefordert hat, wird gesetzt, um einen nicht behebbaren Speicherfehler zu melden. Zu Adresse/Schlüssel werden keine Informationen übertragen. Für den Status der L2-Cachezeile, der auf normale Weise zur L2-Cachesteuerung und Speichersteuerung übertragen wird, wird "gesperrt und nicht modifiziert" erzwungen. Der gewählte L2-Cachesatz wird zur L2-Cachesteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1-Statusmatrizen werden nicht geändert. Die L2-Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet den Schreibvorgang einer L2-Zeile vor, um die Seiteneinlagerung in den L2- Cache abzuschließen, solange der Status von der L2-Steuerung ansteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Zeilenstatus (gesperrt und nicht modifiziert) und setzt die Steuerungsinformationen zurück, die dem Seiteneinlagerungspuffer des L2-Cache zugeordnet sind, der diesem Befehl "Write Inpage Buffer" zugeordnet ist. Die Aktualisierung des L2-Cache wird abgebrochen, und die BSU-Steuerung überträgt "End of Operation" zur Speichersteuerung. Die Speichersteuerung empfängt den Status der L2-Cachezeile (gesperrt und nicht geändert) und gibt die Ressourcen frei, die durch die Seiteneinlagerungsanforderung des Prozessors festgehalten werden. Das L2-Miniverzeichnis wird nicht aktualisiert.
  • Fall 2
  • Die L2-Steuerung wählt eine L2-Cachezeile zum Ersetzen aus. In diesem Fall zeigt der Status der ersetzten Zeile, daß sie nicht verändert wurde; es ist keine Auslagerung erforderlich. Das L2- Verzeichnis wird aktualisiert, um die Anwesenheit der neuen L2- Cachezeile wiederzugeben. Das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, wird geleert. Der ausgewählte L2-Cachesatz wird zu Adresse/Schlüssel und zur L2-Cachesteuerung übertragen. Der Status der ersetzten L2-Cachezeile wird zur L2-Cachesteuerung und Speichersteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1-Statusmatrizen für alle L1- Caches in der Konfiguration werden auf Kopien der ersetzten L2- Cachezeile geprüft. Falls Kopien gefunden werden, werden die entsprechenden Anfragen für die Entwertung zu den L1-Caches übertragen. Aus dem L1-Status wird der Status der L1-Kopie für die ersetzte L2-Cachezeile gelöscht. Die L1-Statusmatrix des L1- Cache des anfordernden Prozessors wird aktualisiert, um die Anwesenheit der L1-Zeile im L1-Cache wiederzugeben. Die L1-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu aktualisieren,. und der L2-Cachesatz und die höherwertige Kongruenz werden als diejenigen Daten verwendet, die in den Eintrag gestellt wurden, der durch den L1-Cachesatz und die mit der Prozessor- Abrufanforderung übertragene Kennung ausgewählt wurde. Die L2- Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet das Schreiben einer L2-Zeile vor, um die Seiteneinlagerung in den L2-Cache vorzubereiten, solange der Status von der L2-Steuerung ansteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Status der ersetzten Zeile. Da die ersetzte Zeile unmodifiziert ist, signalisiert die L2-Cachesteuerung dem L2- Cache, daß der Seiteneinlagerungspuffer in den L2-Cache zu schreiben ist. Da es sich hierbei um einen Vollzeilen-Schreibvorgang handelt und die Cachesätze verschachtelt sind, muß der L2-Cachesatz verwendet werden, um die Adreßbits 25 und 26 so zu manipulieren, daß der Schreibvorgang der L2-Cachezeile zugelassen wird. Die BSU-Steuerung überträgt "End-of-Operation" zur Speichersteuerung. Adresse/Schlüssel empfängt den L2-Cachesatz von der L2-Steuerung. Das Adreßregister für die Aktualisierung des L2-Miniverzeichnisses wird aus den Seiteneinlagerungs-Adreßpuffern und dem L2-Cachesatz gesetzt, der von der L2-Steuerung empfangen wurde. Die Speichersteuerung empfängt den Status der ersetzten Zeile. Da keine Auslagerung erforderlich ist, gibt die Speichersteuerung die von der Seiteneinlagerungsanforderung zurückgehaltenen Ressourcen frei. Die Speichersteuerung überträgt zu Adresse/Schlüssel einen Befehl, das L2-Miniverzeichnis mit Hilfe des diesem Prozessor zugeordneten Adreßregisters für die Aktualisierung des L2-Miniverzeichnisses zu aktualisieren. Die Speichersteuerung markiert anschließend die aktuelle Operation als abgeschlossen und ermöglicht es dem anfordernden Prozessor, sich wieder in die Speicherresourcen-Priorität eintragen zu lassen.
  • Fall 3
  • Die L2-Steuerung wählt eine L2-Cachezeile zum Ersetzen aus. In diesem Fall zeigt der Status der ersetzten Zeile, daß sie modifiziert wurde; eine L2-Cache-Auslagerung ist erforderlich. Das L2-Verzeichnis wird aktualisiert, um die Existenz der neuen L2- Gachezeile wiederzugeben. Das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, wird geleert. Die aus dem Verzeichnis gelesene Adresse wird gemeinsam mit dem gewählten L2-Cachesatz zu Adresse/Schlüssel übertragen. Der Status der ersetzten L2-Cachezeile wird zur L2-Cachesteuerung und zur Speichersteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1-Statusmatrizen für alle L1-Caches in der Konfiguration werden auf Kopien der ersetzten L2-Cachezeile geprüft. Falls Kopien gefunden werden, werden die entsprechenden Entwertungsanforderungen zu den L1-Caches übertragen. Aus dem L1-Status wird der L1-Kopie-Status für die ersetzte L2-Cachezeile gelöscht. Die L1- Statusmatrix des L1-Cache des anfordernden Prozessors wird aktualisiert, um die Anwesenheit der L1-Zeile im L1-Cache wiederzugeben. Die L1-Cache-Kongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als diejenigen Daten verwendet, die in den Eintrag gestellt werden, der durch den L1-Cachesatz und die die mit der Prozessor-Abrufanforderung übertragene Kennung ausgewählt wurde. Die L2-Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet einen Schreibvorgang der L2-Zeile vor, um die Seiteneinlagerung des L2-Cache abzuschließen, solange der Status von der L2-Steuerung ansteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Status der ersetzten Zeile. Da die ersetzte Zeile modifiziert wurde, signalisiert die L2-Cachesteuerung dem L2-Cache, daß ein Vollzeilen-Lesevorgang in den mit dem Seiteneinlagerungspuffer gepaarten Seitenauslagerungspuffer erforderlich ist, bevor die Daten des Seiteneinlagerungspuffers in den L2-Cache geschrieben werden. Da es sich hierbei um Vollzeilen-Zugriffe handelt und die Cachesätze verschachtelt sind, muß der L2-Cachesatz verwendet werden, um die Adreßbits 25 und 26 so zu manipulieren, daß Zugriffe auf die L2- Cachezeile zugelassen werden. Adresse/Schlüssel empfängt die Seitenauslagerungsadresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie gemeinsam mit dem L2-Cachesatz in den Adreßpuffern für die Seitenauslagerung. Das Adreßregister für die Aktualisierung des L2-Miniverzeichnisses wird aus den Seiteneinlagerungs-Adreßpuffern und dem L2-Cachesatz gesetzt, der von der L2-Steuerung empfangen wurde. Adresse/Schlüssel überträgt die physische Adresse für die Seitenauslagerung zur BSU-Steuerung, um den Schreibvorgang der L3-Zeile vorzubereiten. Die Speichersteuerung empfängt den Status der ersetzten Zeile. Da eine Seitenauslagerung erforderlich ist, kann die Speichersteuerung die L3-Ressourcen nicht freigeben, bevor die Speicheraktualisierung abgeschlossen ist. Es wird gewährleistet, daß Auslagerungen an demselben Speicheranschluß erfolgen, der für die Einlagerung verwendet wurde. Die Speichersteuerung überträgt zu Adresse/Schlüssel einen Befehl, das L2- Miniverzeichnis mit Hilfe des diesem Prozessor zugeordneten Adreßregisters für die Aktualisierung des L2-Miniverzeichnisses zu aktualisieren. Die Speichersteuerung markiert die aktuelle Operation anschließend als abgeschlossen und ermöglicht es dem anfordernden Prozessor, sich wieder in die Speicherressourcen- Priorität eintragen zu lassen. Die BSU-Steuerung erkennt, daß die ersetzte L2-Cachezeile modifiziert wurde, und beginnt die Auslagerungssequenz, nachdem sie die Auslagerungsadresse von Adresse/Schlüssel empfangen hat, indem sie über den L2-Cachedatenstrom einen Vollzeilen-Schreibbefehl samt Adresse zu dem gewählten Speicheranschluß überträgt. Die Daten werden in 16- Byte-Abschnitten vom Seitenauslagerungspuffer zum Speicher übertragen. Nach der Übertragung des letzten Vierfachworts in den Speicher überträgt die BSU-Steuerung "end-of-Operation" zur Speichersteuerung. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, gibü sie den L3-Anschluß frei, um einen überlappten Zugriff auf den Speicheranschluß zu ermöglichen.
  • 2.1.6 Speicherabruf und Sperre, TLB-Treffer, keine Zugriff- Ausnahmebedingungen, L1-Cache-Treffer oder -Mißerfolg, L2-Cache-Treffer
  • Die Ausführungseinheit gibt eine Abruf- und Sperr-Anforderung für den Prozessorspeicher an den L1-Operandencache aus. Die satzassoziative TLB-Suche liefert eine absolute Adresse ohne Zugriff-Ausnahmebedingungen für die von der Anforderung vorgelegte logische Adresse. Synchronisierte Aktualisierungen werden von der L2-Steuerung verarbeitet. Das Doppelwort-Sperregister ist auf der Stufe des L2-Cache vorhanden und muß gesetzt werden, bevor der L1-Cache die angeforderten Daten zur Ausführungseinheit zurückliefert. Infolgedessen behandelt die L1-Steuerung die Abruf- und Sperranforderung stets als L1-Cache-Mißerfolg und überträgt die Anforderung zur L2-Steuerung und erwartet Daten vom L2-Cache. Die Rücklieferung der Daten ist das Signal für die L1-Steuerung, daß die Sperre erteilt wurde. Falls bei der Durchsuchung des L1-Cacheverzeichnisses die Daten im Cache gefunden werden (L1-Cache-Treffer), wird dies dem Prozessor gegenüber als L1-Mißerfolg behandelt, dieser L1-Cachesatz ist aber derjenige, der im Rahmen der L1-Cache- Seiteneinlagerungsanforderung zur L2-Cachesteuerung übertragen wird. Falls die Verzeichnisdurchsuchung zu einem L1-Cache-Mißerfolg führt, wählt der Algorithmus für die Ersetzung der L1-Cachezeile den L1-Cachesatz aus, der die Seiteneinlagerungsdaten aufnehmen soll, und dieser Cachesatz wird zur L2-Steuerung übertragen. Gleichzeitig wird ein satzassoziativer Lesezugriff auf den L1-Cache durchgeführt. Da die Speicherwarteschlange geleert wurde, bevor diese Speicheranforderung ausgegeben wurde, können keine anstehenden Speicherungskonflikte bestehen. Die Ausführungseinheit muß abwarten, bis die Daten verfügbar sind, bevor die Arbeit fortgesetzt wird. Der L1- Cache überträgt die Prozessorspeicher-Abruf- und Sperranforderung sowie die Bits 4:28 der absoluten Adresse zu L2, da das Sperregister gesetzt werden muß und eine Seiteneinlagerung in den L1-Cache erforderlich ist. Im folgenden Zyklus wird der L1- Cachesatz der zu ersetzenden L1-Zeile gemeinsam mit der Kennung des L1-Operandencache zu L2 übertragen. Der gewählte Ersetzungseintrag wird im Verzeichnis des L1-Operandencache entwertet. Die L2-Cachepriorität wählt diese Prozessorabruf- und Sperranforderung zur Bearbeitung aus. Die L2-Steuerung überträgt einen L2- Cache-Abrufbefehl des Prozessors und eine L2-Cache-Kongruenz zur L2-Cachesteuerung und einen L2-Cache-Abruf- und Sperrbefehl des Prozessors zur Speichersteuerung. Eine Seiteneinlagerung im L1- Cache des anfordernden Prozessors ist erforderlich. Aus der Durchsuchung des L2-Cache-Verzeichnisses ergibt sich eine von drei Bedingungen, die einen L2-Cache-Treffer liefern.
  • Fall 1
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Treffer, aber ein Einfrierregister mit aktiver Anzeige für einen nicht behebbaren Speicherfehler oder ein Zeilenhalt-Register mit aktiver Anzeige für einen nicht behebbaren Speicherfehler ist für einen anderen Prozessor für die angeforderte L2- Cachezeile gesetzt. Die L2-Cachesteuerung setzt diese Abruf- und Sperranforderung aus, solange die Freigabe der Einfrier- oder Zeilenhalt-Bedingung mit nicht behebbarem Speicherfehler ansteht. Von der L2-Steüerung können keine weiteren Anforderungen für diesen Prozessor bearbeitet werden, da die Speicherwarteschlange leer ist und Abruf und Sperre in den Befehlpuffern ausgesetzt sind. Zu Adresse/Schlüssel werden keine Informationen übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Steuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Aufgrund der Einfrier- oder Zeilenhalt-Bedingung des anderen Prozessors mit nicht behebbarem Speicherfehlerkonflikt wird ein Sperrstatus erzwungen. Die Aktualisierung der L1-Statusmatrix ist aufgrund der Einfrier- oder Zeilenhalt-Bedingung mit nicht behebbarem Speicherfehlerkonflikt blockiert. Die L2-Cachesteuerung empfängt den L2-Cache-Abrufbefehl des Prozessors und die L2-Kongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Zwei Lesezyklen werden benötigt, um die gewünschte 64 Byte lange L1-Cachezeile zu beschaffen. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Nach Empfang des Status der L2-Cachezeile (L2-Treffer und gesperrt) blockiert die L2-Cachesteuerung alle Datenübertragungen zu dem anfordernden L1-Cache und verwirft den Befehl. Die Speichersteuerung empfängt den L2-Befehl und die Kennung des L3-Anschlusses. Sobald der Status der L2-Cachezeile (L2-Treffer und gesperrt) empfangen wurde, wird die Anforderung verworfen.
  • Fall 2
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Treffer, für das angeforderte Doppelwort ist jedoch ein Sperregister für einen anderen Prozessor gesetzt. Die L2-Steuerung setzt diese Abruf- und Sperranforderung aus, solange die Freigabe der Sperre aussteht. Von der L2-Steuerung können keine weiteren Anforderungen für diesen Prozessor bearbeitet werden, da die Speicherwarteschlange leer ist und Abruf und Sperre in den Befehlspuffern ausgesetzt sind. Zu Adressetschlüssel werden keine Informationen übertragen. Der Status der L2-Cachezeiie und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Aufgrund des Sperrkonflikts des anderen Prozessors wird ein -Sperrstatus erzwungen. Die Aktualisierung der L1-Statusmatrix ist aufgrund des Sperrkonflikts blockiert. Die L2-Cachesteuerung empfängt den L2-Cache-Abrufbefehl des Prozessors und die L2- Cache-Kongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cache-Steuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Zwei Lesezyklen werden benötigt, um die gewünschte 64 Byte lange L1-Cachezeile zu beschaffen. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Treffer und gesperrt) empfangen hat, werden alle Datenübertragungen zu dem anfordernden L1-Cache blockiert, und der Befehl wird verworfen. Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Nach Empfang des Status der L2-Cachezeile (L2-Treffer und gesperrt) wird die Anforderung verworfen.
  • Fall 3
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Treffer. Die absolute Adresse wird mit dem Befehl "Set Reference Bit" zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Das Sperregister des Prozessors, das aus den Bits 4:28 der absoluten Adresse und dem L2-Cachesatz besteht, wird für diese Anforderung eingerichtet. Die Statusmatrix des L1-Operandencache des anfordernden Prozessors wird aktualisiert, um die Anwesenheit der L1-Zeile im L1-Operandencache wiederzugeben. Die L1-Cache-Kongruenz wird verwendet, um die Statusmatrizen der L1-Operanden zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als diejenigen Daten verwendet, die in den Eintrag gestellt werden, der durch den mit der Abruf- und Sperranforderung des Prozessors übertragenen Cache satz des L1-Operanden gewählt wurde. Die L2-Cachesteuerung empfängt den L2-Cache-Abrufbefehl des Prozessors und die L2-Kongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2- Cachesätze an der angegebenen Kongruenz zu lesen.
  • Zwei Lesezyklen werden benötigt, um die gewünschte 64 Byte lange L1-Cachezeile zu beschaffen. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (Treffer und nicht gesperrt) empfangen hat, verwendet sie den L2-Cachesatz, um die richtigen 32 Bytes in jedem Lesezyklus auszuwählen und 8 Bytes pro Übertragungszyklus, beginnend mit dem anfangs angeforderten Doppelwort, zu dem anfordernden L1-Cache zu übertragen. Während die Verarbeitung wieder gestartet wird, wird die Seiteneinlagerungsoperation in den L1-Cache mit dem Laden des Cache abgeschlossen, an das sich die Aktualisierung des L1-Cacheverzeichnisses anschließt. Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Sobald der Status der L2-Cachezeile (L2-Treffer und nicht gesperrt) empfangen wird, wird die Anforderung verworfen. Adresse/Schlüssel empfängt die absolute Adresse für die Aktualisierung des Referenzbits. Das Referenzbit für die von der Abruf- und Sperranforderung des Prozessors angeforderte 4-kB-Seite, die die L1- Cachezeile enthält, wird auf '1'b gesetzt.
  • 2.1.7 Speicherabruf und Sperre, TLB-Treffer, keine Zugriff- Ausnahmebedingungen, L1-Cache-Hißerfolg, L2-Cache-Mißerfolg
  • Die Ausführungseinheit gibt eine Abruf- und Sperranforderung für den Prozessorspeicher an den L1-Operandencache aus. Die satzassoziative TLB-Durchsuchung liefert eine absolute Adresse ohne Zugriff-Ausnahmebedingungen für die von der Anforderung vorgelegte logische Adresse. Synchronisierte Aktualisierungen werden von der L2-Steuerung bearbeitet. Das Doppelwort-Sperregister ist auf der Stufe des L2-Cache vorhanden und muß gesetzt werden, bevor der L1-Cache die angeforderten Daten zur Ausführungseinheit zurückliefert. Infolgedessen behandelt die L1-Steuerung die Abruf- und Sperranforderung stets als einen L1-Cache-Mißerfolg und überträgt die Anförderung zur L2-Steuerung und erwartet Daten vom L2-Cache. Die Rücklieferung der Daten ist das Signal für die L1-Steuerung, daß die Sperre erteilt wurde. Die Verzeichnissuche.führt zu einem L1-Cache-Mißerfolg, der Algorithmus für 4en Austausch der L1-Cachezeile wählt den L1-Cachesatz aus, der die Seiteneinlagerungsdaten aufnehmen soll, und dieser Cachesatz wird zur L2-Steuerung übertragen. Gleichzeitig wird ein satzassoziativer Lesezugriff auf den L1-Cache durchgeführt. Da die Speicherwarteschlange geleert wurde, bevor diese Speicheranforderung ausgegeben wurde, können keine anstehenden Speicherungskonflikte bestehen. Die Ausführungseinheit muß abwarten, bis die Daten verfügbar sind, bevor sie fortfährt. Der L1-Cache überträgt. die Prozessorspeicherabruf- und Sperranforderung und die Bits 4:28 der absoluten Adresse zu L2, da das Sperregister gesetzt werden muß und eine Seiteneinlagerung in den L1-Cachesatz erforderlich ist. Im folgenden Zyklus wird der L1-Cachesatz der zu ersetzenden L1-Zeile gemeinsam mit der Kennung des L1-Operandencache zu L2 übertragen. Der gewählte Ersetzungseintrag wird im L1-Operanden-Cacheverzeichnis entwertet. Die L2-Cachepriorität wählt diese Prozessorabruf- und Sperranforderung zur Bearbeitung aus. Die L2-Steuerung überträgt einen L2-Cache-Abrufbefehl des Prozessors und eine L2-Cache-Kongruenz zur L2-Cachesteuerung und einen L2-Cache-Abruf- und Sperrbefehl zur Speichersteuerung. Eine Seiteneinlagerung in den L1-Cache des anfordernden Prozessors ist erforderlich. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von zwei Bedingungen, die einen L2-Cache-Mißerfoig liefern. Die Abruf- und Sperranforderung wird infolge des L2-Cache-Mißerfolgs ausgesetzt, um die Bearbeitung anderer Anforderungen im L2-Cache zu ermöglichen, während die Seiteneinlagerung für die angeforderte L3-Zeile erfölgt.
  • Fall A
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg, aber eine frühere L2-Cache-Seiteneinlagerung steht für einen anderen Prozessor für dieselbe L2-Cachezeile an. Die L2-Steuerung setzt diese Abruf- und Sperranforderung aus, solange der Abschluß der früheren Seiteneinlagerungsanforderung aussteht. Für diesen Prozessor können von der L2-Steuerung keine weiteren Anforderungen bearbeitet werden, da die Speicherwarteschlange leer ist und Abruf und Sperre in den Befehlspuffern ausgesetzt sind. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Aufgrund des Einfrier-Konflikts der vorherigen Seiteneinlagerung wird ein Sperrstatus erzwungen. Die Aktualisierung der L1-Statusmatrix ist infolge des L2-Cache-Mißerfolgs blockiert. Die L2- Cachesteuerung empfängt den Abrufbefehl für den L1-Cache des Prozessors und die L2-Cache-Kongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Es werden zwei Lesezyklen benötigt, um die gewünschte 64 Byte lange L1-Cachezeile zu beschaffen. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Mißerfolg und gesperrt) empfangen hat, blockiert sie alle Datenübertragungen zu dem anfordernden L1- Cache und verwirft den Befehl. Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Sobald der Status der L2-Cachezeile (L2-Mißerfolg und gesperrt) empfangen wurde, wird die Anforderung verworfen.
  • Fall B
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg. Die L2-Steuerung setzt diese Abruf- und Sperranforderung aus und setzt das Einfrierregister für die Seiteneinlagerung des Prozessors. Von der L2-Steuerung können keine weiteren Anforderungen für diesen Prozessor bearbeitet werden, da die Speicherwarteschlange leer ist und Abruf und Sperre infolge des L2-Cache-Mißerfolgs ausgesetzt sind. Die absolute Adresse wird zu Adresse/Schlüssel übertragen. Der status der L2- Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Das Sperregister des Prozessors, das aus den Bits 4:28 der absoluten Adresse und dem L2-Cachesatz besteht, wird für diese Anforderung eingerichtet. Die Aktualisierung der L1-Statusmatrix ist aufgrund des L2-Cache-Mißerfolgs blockiert. Die L2-Cachesteuerung empfängt den L2-Cache-Abrufbefehl des Prozessors und die L2-Cache-Kongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Zwei Lesezyklen werden benötigt, um die gewunschte 64 Byte lange L1-Cachezeile zu beschaffen. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Sobald die L2-Steuerung den Status der L2-Cachezeile (Mißerfolg und nicht gesperrt) empfangen hat, blockiert sie alle Datenübertragungen zu dem anfordernden L1-Cache und verwirft den Befehl. Die Speichersteuerung empfängt den L2-Befehl und die L3- Anschlußkennung. Sobald der Status der L2-Cachezeile (L2-Mißerfolg und nicht gesperrt) empfangen wurde, wird die Anforderung in die Priorität für den angeforderten L3-Speicheranschluß eingetragen. Wenn alle Ressourcen (einschließlich eines Seiteneinlagerungs-/Seitenauslagerungs-Pufferpaars) verfügbar sind, wird zur BSÜ-Steuerung ein Befehl übertragen, den L3-Abrufzugriff für den Prozessor zu beginnen. Die Speichersteuerung weist die L2-Steuerung an, den Status des L2-Verzeichnisses für die anstehende Seiteneinlagerung auf normale Weise zu setzen. Adresse/Schlüssel empfängt die absolute Adresse. Das Referenzbit für die 4-kB-Seite, die die angeforderte L2-Cachezeile enthält, wird auf '1'b gesetzt. Die absolute Adresse wird in eine physische L3-Adresse umgewandelt. Die physische Adresse wird zur BSU- Steuerung übertragen, sobald die Schnittstelle infolge des L2- Cache-Mißerfolgs verfügbar ist. Sobald die BSU-Steuerung den Befehl der Speichersteuerung und die physische L3-Adresse von Adresse/Schlüssel empfangen hat, leitet sie den 128 Byte langen Abruf am L3-Speicheranschluß ein, indem sie Befehl und Adresse zum Prozessorspeicher überträgt und die Speicherkarten in dem gewünschten Anschluß auswählt. Die Daten werden in 16-Byte-Abschnitten über eine gemultiplexte Befehls-/Adreß- und Datenschnittstelle mit dem L3-Speicheranschluß übertragen. Acht Übertragungen aus dem L3-Speicher werden benötigt, um die 128 Byte lange L2-Cachezeile zu beschaffen. Die Sequenz von Vierfachwort-Übertragungen beginnt mit dem Vierfachwort, das das durch den Abrufzugriff angeforderte Doppelwort enthält. Die nächsten drei Übertragungen enthalten den Rest der L1-Cachezeile. Die letzten vier Übertragungen enthalten den Rest der L2- Cachezeile. Die vom Prozessor gewünschten Daten werden so zum L1-Cache übertragen, wie sie im L2-Cache empfangen und in einen L2-Cache-Seiteneinlagerungspuffer geladen werden. Während die Verarbeitung wieder begonnen wird, wird die Seiteneinlagerungsoperation des L1-Cache mit dem Laden des Cache abgeschlossen; anschließend wird das Verzeichnis des L1-Cache aktualisiert. Während die letzte Datenübertragung zum Seiteneinlagerungspuffer des L2-Cache abgeschlossen wird, aktiviert die BSU-Steuerung das entsprechende Signal "Processor Inpage Complete" für die L2- Steuerung. Während der Datenübertragungen zum L2-Cache überwacht Adresse/Schlüssel die Zeilen für nicht behebbaren L3-Fehler. Falls während des Seiteneinlagerungsprozesses ein nicht behebbarer Fehler festgestellt wird, werden mehrere Funktionen ausgeführt. Bei jeder Doppelwortübertragung zum L1-Cache wird gleichzeitig ein Signal für einen nicht behebbaren L3-Fehler übertragen, um den Status der Daten zu kennzeichnen. Der Status der verbleibenden Vierfachwörter in der betreffenden L2-Cachezeile wird dem anfordernden Prozessor ebenfalls mitgeteilt. Der Prozessor empfängt für eine gegebene Seiteneinlagerungsanforderung maximal einen Hinweis auf einen nicht behebbaren Speicherfehler, und zwar den ersten, der von Adresse/Schlüssel festgestellt wurde. Die Doppelwortadresse des ersten von Adresse/Schlüssel festgestellten nicht behebbaren Speicherfehlers wird für den anforderndeh Prozessor aufgezeichnet. Falls für irgendwelche Daten in der vom Prozessor angeforderten L1-Zeile ein nicht behebbarer Speicherfehler eintritt, wird ein Hinweis für die Bearbeitung eines nicht behebbaren Speicherfehlers gesetzt. Falls schließlich ein nicht behebbarer Fehler für irgendwelche Daten auftritt, die zum Seiteneinlagerungspuffer des L2-Cache übertragen werden, sendet Adresse/Schlüssel ein Signal zur L2-Steuerung, um den Abschluß der Seiteneinlagerung im L2-Cache zu verhindern. Die L2-Cache-Priorität wählt das "Inpage Complete" für den Prozessor zur Bearbeitung. Die L2-Steuerung überträgt einen Befehl "Write Inpage Buffer" und die L2-Cachekongruenz zur L2-Cachesteuerung sowie eine Statusantwort über die abgeschlossene Seiteneinlagerung zur Speichersteuerung. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von drei Bedingungen.
  • Fall 1
  • Bei der Seiteneinlagerung in den Seiteneinlagerungspuffer des L2-Cache wurde ein nicht behebbarer L3-Speicherfehler festgestellt. Die L2-Steuerung erkennt, daß fehlerhafte Daten im Seiteneinlagerungspuffer vorhanden sind, und blockiert die Aktualisierung des L2-Cacheverzeichnisses. Das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, und das dem angeforderten Doppelwort zugeordnete Sperregister werden geleert. Der L1-Operandencache- Anzeiger für den Prozessor, der die Seiteneinlagerung angefordert hat, wird gesetzt, um einen nicht behebbaren Speicherfehler zu melden. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile wird auf normale Weise zur L2-Cachesteuerung übertragen, und für die Speichersteuerung wird "gesperrt, nicht modifiziert" erzwungen. Der gewählte L2- Cachesatz wird zur L2-Cachesteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1-Statusmatrizen werden nicht geändert. Die L2-Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet das Schreiben einer L2-Zeile vor, um die Seiteneinlagerung im L2-Cache abzuschließen, solange der Status von der L2-Steuerung ansteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Zeilenstatus (gesperrt und nicht modifiziert) und setzt die Steuerungsinformationen zurück, die dem L2-Cache-Seiteneinlagerungspuffer zugeordnet sind, der diesem Befehl "Write Inpage Buffer" zugeordnet ist. Die Aktualisierung des L2-Cache wird abgebrochen, und die BSU-Steuerung überträgt "End-of-Operation" zur Speichersteuerung. Die Speichersteuerung empfängt den Status der L2-Cachezeile (gesperrt und nicht geändert) und gibt die Ressourcen frei, die durch die Anforderung der Prozessor-Seiteneinlagerung festgehalten werden. Das L2-Miniverzeichnis wird nicht aktualisiert.
  • Fall 2
  • Die L2-Steuerung wählt eine L2-Cachezeile zum Ersetzen aus. In diesem Fall zeigt der Status der ersetzten Zeile, daß sie nicht modifiziert ist; es ist keine Auslagerung erforderlich. Das L2- Verzeichnis wird aktualisiert, um die Existenz der neuen L2-Cachezeile wiederzugeben. Das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seite neinlagerung eingerichtet wurde, wird geleert. Der gewählte L2-Cachesatz wird zu Adresse/Schlüssel und nur 12-Gachesteuerung übertragen. Der Status der ersetzten L2-Cachezeile wird zur L2-Cachesteuerung und zur Speichersteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1-Statusmatrizen für alle L1- Caches in der Konfiguration werden auf Kopien der ersetzten L2- Cachezeile überprüft. Falls Kopien gefunden werden, werden die entsprechenden Entwertungsanforderun gen zü den L1-Caches übertragen. Aus dem L1-Status wird der L1-Kopie-Status für die ersetzte L2-Cachezeile gelöscht. Die L1-Statusmatrix des L1-Operandencache des anfordernden Prozessors wird aktualisiert, um die Existenz der L1-Zeile im L1-Operandencache wiederzugeben. Die L1-Cachekongruenz wird verwendet, um die Matrizen für den L1-Operandenstatus zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als diejenigen Daten verwendet, die in den Eintrag gestellt werden, der durch den mit der Abrufund Sperranforderung des Prozessors übertragenen L1-Operanden- Cachesatz gewählt wurde. Die L2-Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet das Schreiben einer L2- Zeile vor, um die Seiteneinlagerung im L2-Cache abzuschließen, solange der Status von der L2-Steuerung ansteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Status der ersetzten Zeile. Da die ersetzte Zeile nicht modifiziert ist, signalisiert die L2-Cachesteuerung dem L2-Cache, daß der Seiteneinlagerungspuffer in den L2-Cache zu schreiben ist. Da dies ein Vollzeilen- Schreibvorgang ist und die Cachesätze verschachtelt sind, muß der L2-Cachesatz verwendet werden, um die Adreßbits 25 und 26 so zu manipulieren, daß der Schreibvorgang der L2-Cachezeile zugelassen wird. Die BSU-Steuerung überträgt "End-of-Operation" zur Speichersteuerung. Adresse/Schlüssel empfängt den L2-Cachesatz von der L2-Steuerung. Das Adreßregister für die Aktualisierung des L2-Miniverzeichnisses wird aus den Seiteneinlagerungs- Adreßpuffern und dem von der L2-Steuerung empfangenen L2-Cachesatz gesetzt. Die Speichersteuerung empfängt den Status der ersetzten Zeile. Da keine Auslagerung erforderlich ist, gibt die Speichersteuerung die von der Seiteneinlagerungsanforderung zurückgehaltenen Ressourcen frei. Die Speichersteuerung überträgt zu Adresse/Schlüssel einen Befehl, das L2-Miniverzeichnis unter Verwendung des diesem Prozessor zugeordneten Adreßregisters für die Aktualisierung des L2-Miniverzeichnisses zu aktualisieren. Anschließend markiert die Speichersteuerung die aktuelle Operation als abgeschlossen und ermöglicht es dem anfordernden Prozessor, sich wieder in die Speicherressourcen-Priorität eintragen zu lassen.
  • Fall 3
  • Die L2-Steuerung wählt eine L2-Cachezeile zum Ersetzen aus. In diesem Fall zeigt der Status der ersetzten Zeile, daß sie modifiziert wurde; eine L2-Cache-Auslagerung ist erforderlich. Das L2-Verzeichnis wird aktualisiert, um die Anwesenheit der neuen L2-Cachezeile wiederzugeben. Das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, wird geleert. Die aus dem Verzeichnis gelesene Adresse wird gemeinsam mit dem ausgewählten L2-Cachesatz zu Adresse/Schlüssel übertragen. Der ausgewählte L2-Cachesatz wird an die L2-Cachesteuerung übertragen. Der Status der ersetzten L2-Cachezeile wird zur L2-Cachesteuerung und zur Speichersteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1-Statusmatrizen für alle L1-Caches in der Konfiguration werden auf Kopien der ersetzten L2-Cachezeile geprüft. Falls Kopien gefunden werden, werden die entsprechenden Entwertungsanforderungen zu den L1-Caches übertragen. Aus dem L1-Status wird der L1-Kopie-Status für die ersetzte L2-Cachezeile gelöscht. Die L1-Statusmatrix des L1-Operandencache des anfordernden Prozessors wird aktualisiert, um die Anwesenheit der L1-Zeile im L1-Operandencache wiederzugeben. Die L1-Cachekongruenz wird verwendet, um die Matrizen für den L1-Operandenstatus zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als diejenigen Daten verwendet, die in den Eintrag gestellt werden, der durch den mit der Abruf- und Sperranforderung des Prozessors übertragenen L1-Operanden-Cachesatz gewählt wurde. Die L2-Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet einen Schreibvorgang der L2-Zeile vor, um die L2-Cache-Seiteneinlagerung abzuschließen, solange der Status von der L2-Steuerung ansteht. Die L2-Cache-Steuerung empfängt den L2-Cachesatz und den Status der ersetzten Zeile. Da die ersetzte Zeile modifiziert ist, signalisiert die L2-Cachesteuerung dem L2-Cache, daß ein Vollzeilen-Lesevorgang zu dem mit dem Seiteneinlagerungspuffer gepaarten Seitenauslagerungspuffer erforderlich ist, bevor die Daten des Seiteneinlagerungspuffers in den L2-Cache geschrieben werden. Da dies Vollzeilen- Zugriffe sind und die Cachesätze verschachtelt sind, muß der L2- Cachesatz verwendet werden, um die Adreßbits 25 und 26 so zu manipulieren, daß die Zugriffe auf die L2-Cachezeile zugelassen werden. Adresse/Schlüssel empfängt die Seitenauslagerungsadresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie gemeinsam mit dem L2-Cachesatz in den Adreßpuffern für die Seitenauslagerung. Das Adreßregister für die Aktualisierung des L2-Miniverzeichnisses wird aus den Seiteneinlagerungs- Adreßpuffern und dem von der L2-Steuerung empfangenen L2-Cachesatz gesetzt. Adresse/Schlüssel überträgt die physische Seitenauslagerungsadresse zur BSU-Steuerung, um den Schreibvorgang der L3-Zeile vorzubereiten. Die Speichersteuerung empfängt den Status der ersetzten Zeile. Da eine Auslagerung erforderlich ist, kann die Speichersteuerung die L3-Ressourcen nicht freigeben, bevor die Speicheraktualisierung abgeschlossen ist. Für Auslagerungen wird gewährleistet, daß sie zu demselben Speiche ranschluß erfolgen, der für die Seiteneinlagerung verwendet wurde. Die Speichersteuerung überträgt zu Adresse/Schlüssel einen Befehl, das L2-Miniverzeichnis unter Verwendung des diesem Prozessor zugeordneten Adreßregisters für die Aktualisierung des L2-Miniverzeichnisses zu aktualisieren. Anschließend markiert die Speichersteuerung die aktuelle Operation als abgeschlossen und ermöglicht es dem anfordernden Prozessor, sich wieder in die Speicherressourcen-Priorität eintragen zu lassen. Die BSU-Steuerung erkennt, daß die ersetzte L2-Cachezeile modifiziert ist, und beginnt die Auslagerungssequenz, nachdem sie die Seitenauslagerungsadresse von Adresse/Schlüssel empfangen hat, indem sie einen Vollzeilen-Schreibbefehl samt Adresse über den Datenstrom des L2-Cache zu dem gewählten Speicheranschluß überträgt. Die Daten werden in 16-Byte-Abschnitten vom Seitenauslagerungspuffer zum Speicher übertragen. Nach der Übertragung des letzten Vierfachworts zum Speicher überträgt die BSU-Steuerung "End-of-Operation" zur Speichers teuerung. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den L3-Anschluß frei, um einen überlappten Zugriff auf den Speicheranschluß zu ermöglichen.
  • 2.2 Speicher-Speicherungsroutinen für den MP/3-Prozessor 2.2.1 Speicherung im Speicher, TLB-Mißerfolg
  • Die Ausführungseinheit gibt eine Speicheranforderung für den Prozessorspeicher an den L1-Operandencache aus. Die satzassoziative TLB-Suche kann keine absolute Ädresse für die von der Anforderung vorgelegte logische Adresse liefern. Eine Anforderung für dynamische Adreßübersetzung wird der Ausführungseinheit vorgelegt, und die aktuelle Speicheroperation wird annulliert. Der TLB-Mißerfolg setzt die Ergebnisse der Durchsuchung des L1-Cacheverzeichnisses außer Kraft, da eine gültige absolute Adresse für Vergleichszwecke vom TLB fehlt. Der Schreibvorgang zum L1- Cache wird abgebrochen. Die L1-Speicherwarteschlange gliedert die Anforderung aufgrund des TLB-Mißerfolgs nicht ein. Etwaige vorzeitig abgerufene Anweisungen, die auf die aktuelle Anweisung folgen, werden durch logischen Adressenvergleich auf Änderung durch die Speicheranforderung geprüft. Da ein TLB-Mißerfolg für den L1-Operandencache eingetreten ist, existiert keine gültige absolute Adresse, um die Speicheranforderung abzuschließen. Die Programmspeicher-Vergleichsprüfungen sind blockiert. Die Speicheranforderung wird aufgrund des TLB-Mißerfolgs nicht zum L2- Cache übertragen. Für eine von der Hardware ausgeführte Anweisüng wird die Programmausführung an dieser Anweisungsadresse neu gestartet, falls die Adreßübersetzung erfolgreich verläuft. Für eine Mikroanweisungs-Speicheranfrage wird die Mikroanweisung erneut ausgeführt, wenn die Adreßübersetzung erfolgreich ist. In beiden Fällen vermeidet es die L1-steuerung, wiederholte Speicheranforderungen einzugliedern, um die Übertragung doppelter Speicheranforderungen in die L2-Speicherwarteschlange zu vermeiden, und beginnt Eingliederungen in die L1-Speicherwarteschlange erst wieder mit der ersten neuen Speicheranforderung.
  • 2.2.2 Speicherung im Speicher, TLB-Treffer, Zugriff-Ausnahmebedingung
  • Die Ausführungseinheit gibt eine Speicheranforderung für den Prozessorspeicher an den L1-Operandencache aus. Die satzassoziative TLB-Suche liefert eine absolute Adresse für die von der Anforderung vorgelegt logische Adresse. Es wird jedoch infolge des TLB-Zugriffs eine Zugriff-Ausnahmebedingung fest-gestellt (entweder Schutz oder Adressierung). Die Ausführungseinheit wird von der Zugriff-Ausnahmebedingung benachrichtigt, und die aktuelle Speicheroperation wird annulliert. Die Zugriff-Ausnahmebedingung setzt die Ergebnisse der Suche im L1-Cacheverzeichnis außer Kraft. Der Schreibvorgang zum L1-Cache wird abgebrochen. Aufgrund der Zugriff-Ausnahmebedingung gliedert die L1-Speicherwarteschlange die Anforderung nicht ein. Etwaige vorzeitig abgerufene Anweisungen, die auf die aktuelle Anweisung folgen, werden durch logischen Adressenvergleich auf Modifikation durch die Speicheranforderung geprüft. Da eine Zugriff-Ausnahmebedingung eingetreten ist, existiert keine gültige absolute Adresse, um die Speicheranforderung abzuschließen. Die Programmspeicher-Vergleichsprüfungen sind blockiert. Die Speicheranforderung wird nicht in die L2-Speicherwarteschlange übertragen, da das aktuelle Programm abnorm enden wird. Schließlich wird die L2-Schnittstelle des Prozessors durch ein Mikroprogramm im Rahmen der Wiederherstellungsroutine des Prozessors zurückgesetzt, um etwaige eingegliederte Speichervorgänge zu löschen, die dieser Anweisung zugeordnet sind.
  • 2.2.3 Speicherung im Speicher, nicht sequentiell, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, verzögerte Speicherwarteschlangen-Übertragung, L2-Cache belegt
  • Die Ausführungseinheit gibt eine nicht-sequentielle Speicheranf6rderung für den Prozessorspeicher an den L1-Operandencache aus. Die satzassoziative TLB-Suche liefert eine absolute Adresse ohne Zugriff-Äusnahmebedingungen für die von der Anforderung vorgelegte logische Adresse. Falls bei der Durchsuchung des L1- Cacheverzeichnisses durch Übereinstimmung beim Vergleich mit der absoluten Adresse aus dem TLB die Daten im Cache gefunden werden (L1-Treffer), wird ein Schreibvorgang zu dem gewählten L1-Cachesatz aktiviert. Die Daten der Speicheranforderung werden in die L1-Cache-Kongruenz und den gewählten Satz geschrieben, wobei die Steuermarkierungen der Speicherbytes verwendet werden, um nur die gewünschten Bytes innerhalb des Doppelworts zu schreiben. Falls die Verzeichnissuche aufgrund einer Diskrepanz mit der absoluten Adresse aus dem TLB zu einem L1-Cache-Mißerfolg führt, wird der Schreibvorgang im L1-Cache abgebrochen. In beiden Fällen wird die Speicheranforderung in die L1-Speicherwarteschlange eingegliedert. Die Informationen im Warteschlangeneintrag bestehen aus der absoluten Adresse, den Daten, den Speicherbyte-Markierungen und dem Typ der Speicheranforderung (nicht-sequentielle oder sequentielle Speicherung, "End-of-Operation"). Die Über- tragung der Prozessorspeicher-Anforderung in die L2-Cache-Speicherwarteschlange wird verzögert. Drei Situationen können in beliebiger Kombination die Übertragung verzögern. Im ersten Fall müssen Speicheranforderungen in der Reihenfolge bearbeitet werden, in der sie in die Speicherwarteschlange gelangen. Falls der Eingliederungszeiger der L1-Speicherwarteschlange größer als der L1-Übertragungszeiger ist (aufgrund eines vorausgegangenen Belegt-Zustands der L1/L2-Schnittstelle), kann diese Anforderung nicht in den L2-Cache übertragen werden, bis alle vorausgehenden Einträge zuerst übertragen worden sind. Im zweiten Fall stimmt der Eingliederungszeiger der L1-Cache-Speicherwarteschlange mit dem L1-Übertragungszeiger überein, aber die L1/L2-Schnittstelle ist mit Datenübertragungen zu einem anderen L1-Cache oder einer Anforderung von L2 für die Entwertung einer L1-Cachezeile belegt. Im dritten Fall ist die L2-Speicherwarteschlange momentan gefüllt und nicht in der Lage, eine weitere Speicheranforderung von der L1-Speicherwarteschlange zu übernehmen. Im vierten Fall läuft eine asynchrone Operation der Ausführungseinheit ab (etwa in der Gleitkommaeinheit), die die Prüfpunktbearbeitung beeinträchtigt. Die Speicheranforderung erfolgt während der Ausführung dieser Operation, befindet sich aber innerhalb eines anderen Prüfpunktintervalls. Da die Prüfpunktintervalle der Reihe nach abgearbeitet werden, wird die Speicheranforderung nicht zum L2-Cache übertragen, bevor der vorige Prüfpunkt beendet ist. Etwaige vorzeitig abgerufene Anweisungen, die auf die aktuelle Anweisung folgen, werden durch logischen Adressenvergleich auf Modifikation durch die Speicheranforderung geprüft. Falls eine Übereinstimmung auftritt, werden die Anweisungspuffer entwertet. Die Prozessor-Speicheranforderung wird schließlich zum L2-Cache übertragen. Falls die diesem Prozessor zugeordnete L2-Speicherwarteschlange zu dem Zeitpunkt leer ist, zu dem die Anforderung empfangen wird, und mit der Speicherungsanforderung "end-of-Operation" angegeben wird, kann dieses Anforderung sofort bearbeitet werden, falls sie von der L2-Cachepriorität gewählt wird. In jedem Fall wird in der L2-Speicherwarteschlange für den anfor- dernden Prozessor ein Eintrag erstellt. Die L2-Cache-Speicherwarteschlange ist physisch in zwei Abschnitte aufgeteilt: Steuerung und Daten. Die absolute Adresse und der Typ der Speicherungsanforderung werden in der L2-Steuerfunktion verwaltet. Die zugehörigen Daten und Speicherbyte-Markierungen werden in die Datenstromfunktion des L2-Cache eingegliedert. Die L2-Cachepriorität wählt diese Prozessor-Speicherungsanforderung nicht zur Bearbeitung aus.
  • 2.2.4 Speicherung im Speicher, nicht sequentiell, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L2-Cache-Treffer
  • Die Ausführungseinheit gibt eine nicht-sequentielle Speicheranforderung für den Prozessorspeicher an den L1-Operandencache aus. Die satzassoziative TLB-Suche liefert eine absolute Adresse ohne Zugriff-Ausnahmebedingungen für die von der Anforderung vorgelegte logische Adresse. Falls bei der Durchsuchung des L1- Cacheverzeichnisses durch Übereinstimmung beim Vergleich mit der absöluten Adresse aus dem TLB die Daten im Cache gefunden werden (L1-Treffer), wird ein Schreibvorgang zu dem gewählten L1-Cachesatz aktiviert. Die Daten der Speicheranforderung werden in die L1-Cache-Kongruenz und den gewählten Satz geschrieben, wobei die Speicherbyte-Steuermarkierungen verwendet werden, um nur die gewünschten Bytes innerhalb des Doppelworts zu schreiben. Falls die Verzeichnissuche aufgrund einer Diskrepanz beim Vergleich mit der absoluten Adresse aus dem TLB zu einem L1-Cache-Mißerfolg führt, wird der Schreibvorgang im L1-Cache abgebrochen. In beiden Fällen wird die Speicheranforderung in die L1-Speicherwarteschlange eingegliedert. Die Informationen im Warteschlangeneintrag bestehen aus der absoluten Adresse, den Daten, den Speicherbyte-Markierungen und dem Typ der Speicheranforderung (nicht-sequentielle oder sequentielle Speicherung, "End-of-Operation"). Falls die Speicherwarteschlange vor dieser Anforderung leer ist oder der Eingliederungszeiger der L1-Speicherwartesch- lange dem Übertragungszeiger entspricht und die L1/L2-Schnittstelle verfügbar ist, wird die Speicheranforderung sofort zu L2 übertragen. Andernfalls wird die Übertragung verzögert, bis der Übertragungszeiger der L1-Speicherwarteschlange diesen Eintrag auswählt, während die L1/L2-Schnittstelle verfügbar ist. Etwaige vorzeitig abgerufene Anweisungen, die auf die aktuelle Anweisung folgen, werden durch logischen Adressenvergleich auf Modifikation durch die Speicheranforderung geprüft. Falls eine Übereinstimmung auftritt, werden die Anweisungspuffer entwertet. Die L2-Steuerung empfängt die Speicheranforderung. Falls die L2- Speicherwarteschlange leer ist und mit der Speicheranforderung "End-of-Operation" angegeben wird, kann diese Anforderung sofort bearbeitet werden, falls sie von der L2-Cache-Priorität ausgewählt wird. Falls die Speicherwarteschlange leer ist, aber der Speicheranforderung kein "End-of-Operation" zugeordnet ist, muß sie in der Speicherwarteschlange warten, bis "End-of-Operation" empfangen wurde, bevor sie in die L2-Cache-Priorität eingetragen werden darf. Falls die L2-Speicherwarteschlange für diesen Prozessor nicht leer ist, muß diese Anforderung in der Speicherwarteschlange abwarten, bis alle vorausgegangenen Speichervorgänge für diesen Prozessor im L2-Cache abgeschlossen sind. In jedem Fall wird in der L2-Speicherwarteschlange für den anfordernden Prozessor ein Eintrag erstellt. Die L2-Cache-Speicherwarteschlange ist physisch in zwei Abschnitte aufgeteilt: Steuerung und Daten. Die absolute Adresse und der Typ der Speicheranforderung werden in der L2-Steuerfunktion verwaltet. Die zugehörigen Daten und Speicherbyte-Markierungen werden in die Datenstromfunktion des L2-Cache eingegliedert. Die L2-Cache-Priorität wählt diese Prozessorspeicher-Anforderung zur Bearbeitung aus. Die L2-Steuerung überträgt einen L2-Cache-Speicherbefehl des Prozessors und eine L2-Cachekongruenz zur L2-Cachesteuerung und einen L2-Cache- Speicherbefehl des Prozessors zur Speichersteuerung. Da der L1- Operandencache ein Durchspeicherungs-Cache ist, wird unabhängig vom L1-Cache-Treffer/Mißerfolg-Status der ursprünglichen Speicheranforderung keine Seiteneinlagerung in den L1-Cache benö- tigt. Die L2-Steuerung gliedert die Speicheranforderung aus dem Steuerungsabschnitt der L2-Cache-Speicherwarteschlange für diesen Prozessor aus. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von vier Bedingungen, die einen L2-Cachetreffer liefern.
  • Fall 1
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cachetreffer, aber ein Einfrierregister mit aktiver Anzeige für einen nicht behebbaren Speicherfehler oder ein Zeilenhalt-Register mit aktiver Anzeige für einen nicht behebbaren Speicherfehler ist für einen anderen Prozessor für die angeforderte L2- Cachezeile gesetzt. Die L2-Steuerung setzt diese Speicheranforderung aus, solange die Freigabe des Einfrier- oder Zeilenhalt- Register mit nicht behebbarem Speicherfehler aussteht. Die Speicheranforderung wird in den Steuerungsabschnitt der L2-Cache- Speicherwarteschlange für diesen Prozessor zurückgespeichert. Befehlspufferanforderungen für diesen Prozessor können von der L2-Steuerung weiterhin bearbeitet werden. Zu Adresse/Schlüssel werden keine Informationen übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Aufgrund der Einfrier- oder Zeilenhalt-Bedingung mit nicht behebbarem Speicherfehlerkonflikt für den anderen Prozessor wird ein Sperrstatus erzwungen. Die Vergleiche der L1-Statusmatrizen sind aufgrund der Einfrier- oder Zeilenhalt-Bedingung mit nicht behebbarem Speicherfehlerkonflikt blockiert. Die L2-Steuerung blockiert die Übertragung von "Instruction Complete" zum L1-Cache des anfordernden Prozessors aufgrund der Einfrier- oder Zeilenhalt-Bedingung mit nicht behebbarem Speicherfehlerkonflikt. Die L2-Cachesteuerung empfängt den Speicherbefehl für den L2-Cache des Prozessors und die L2-Cache-Kongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, den ältesten Eintrag aus der L2- Speicherwarteschlange auszugliedern und den L2-Schreibpuffer in den L2-Cache durchzuschreiben. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Treffer und gesperrt) empfangen hat, bricht die L2-Cachesteuerung die Ausgliederung des Eintrags aus der Datenspeicher-Warteschlange und den Schreibvorgang im L2-Cache ab. Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Sobald der Status der L2-Cachezeile (L2- Treffer und gesperrt) empfangen wurde, wird die Anforderung verworfen.
  • Fall 2
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Treffer, aber für das angeforderte Doppelwort ist ein Sperregister für einen anderen Prozessor gesetzt. Die L2-Steuerung setzt diese Speicheranforderung aus, solange die Freigabe der Sperre ansteht. Die Speicheranforderung wird in den Steuerungsabschnitt der Speicherwarteschlange für den L2-Cache für diesen Prozessor zurückgespeichert. Befehlspufferanforderungen für diesen Prozessor können weiterhin von der L2-Steuerung bearbeitet werden. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Aufgrund des Sperrkonflikts des anderen Prozessors wird ein Sperrstatus erzwungen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des Sperrkonflikts blockiert. Die L2-Steuerung blokkiert aufgrund des Sperrkonflikts die Übertragung von "Instruction Complete" zum L1-Cache des anfordernden Prozessors. Die L2- Cachesteuerung empfängt den L2-Cache-Speicherbefehl des Prozessors und die L2-Cachekongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, den ältesten Eintrag aus der Speicherwarteschlange auszugliedern und den L2-Schreibpuffer in den L2-Cache durchzuschreiben. Sobald der Status der L2-Cachezeile (Treffer und gesperrt) empfangen wurde, bricht die L2-Cachesteuerung die Ausgliederung des Eintrags aus der Datenspeicher-Warteschlange und den Schreibvorgang im L2-Cache ab. Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Sobald der Status der L2-Cachezeile (L2-Treffer und gesperrt) empfangen wurde, wird die Anforderung verworfen.
  • Fall 3
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cachefehler, aber ein Seiteneinlagerungs-Einfrierregister mit Anzeige eines nicht behebbaren Speicherfehlers ist für diesen Prozessor aktiv. Diese Situation ergibt sich für einen Prozessor, nachdem ein nicht behebbarer Speicherfehler für eine L2- Cache-Seiteneinlagerung aufgrund einer Speicheranforderung gemeldet wurde. Die L2-Cachezeile wird als ungültig markiert. Die absolute Adresse wird mit einem Befehl "Set Reference and change Bits" zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zu L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die L2-Steuerung leert den Block-Zwischenspeicher für die Befehlspufferanforderung, das Einfrier-Register und den dem Einfrierregister infolge der Speicheranforderung zugeordneten Hinweis auf den nicht behebbaren Speicherfehler. Alle L1-Statusmatrizen (mit Ausnahme des Status des Operandencache des anfordernden Prozessors) werden nach Kopien der modifizierten L1-Cachezeile durchsucht. Die niederwertige L2-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2- Cachesatz und die höherwertige Kongruenz werden als Komparand für den Vergleich mit den Ausgabedaten der L1-Statusmatrix verwendet. Falls eine Übereinstimmung in der Statusmatrix des L1- Anweisungscache des anfordernden Prozessors gefunden wird, wird der Eintrag gelöscht, und die L1-Cachekongruenz und der L1-Cachesatz werden zur lokalen Entwertung der L1-Cachekopie zum anfordernden Prozessor übertragen, nachdem die Anforderung des Adreßbusses durch L1 freigegeben wurde. Falls L1-Statusmatrizen der anderen Prozessoren eine Übereinstimmung liefern, werden die erforderlichen Einträge im L1-Status gelöscht, und die L1-Cachekongruenz und die L1-Cachesätze (einer für den L1-Operandencache und einer für den L1-Anweisungscache) werden zur Quer-Entwertung der L1-Cachekopien zu den erforderlichen anderen Prozessoren gleichzeitig übertragen, nachdem die Anforderung des Adreßbusses durch diesen L1 freigegeben wurde. Der L2-Speicherzugriff ist von der Anforderung einer lokalen Entwertung oder Quer-Entwertung nicht betroffen, da L1 die Freigabe der erforderlichen Adreßschnittstelle in einer festen Zahl von Zyklen gewährleistet. Man beachte, daß in diesem Fall keine L1-Kopien gefunden werden können, da der Speichervorgang stattfindet, nachdem eine durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung für die Speicheranforderung bearbeitet wurde und ein nicht behebbarer Speicherfehler in der L3-Zeile festgestellt wurde. Falls dieser Speicheranforderung "End-of-Operation" zugeordnet ist, überträgt die L2-Steuerung ein Signal "Instruction Complete" (Anweisung abgeschlossen) zum L1-Cache des anfordernden Prozessors, um alle dieser Anweisung zugeordneten Einträge aus der L1- Speicherwarteschlange zu löschen; die Speichervorgänge in den L2-Cache sind abgeschlossen. Die Ausgliederung aus der L1-Speicherwarteschlange erfolgt gleichzeitig mit der letzten (oder einzigen) Aktualisierung des L2-Cache. Die Ausgliederung aus der L2-Speicherwarteschlange erfolgt jedesmal, sobald eine nichtsequentielle Speicherung in den L2-Cache abgeschlossen wird. Die L2-Cachesteuerung empfängt den L2-Cache-Speicherbefehl des Prozessors und die L2-Kongruenz und beginnt den Zugriff auf den L2- Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, den ältesten Eintrag aus der L2-Speicherwarteschlange auszugliedern und den L2-Schreibpuffer in den L2-Cache durchzuschreiben. Sobald der Status der L2-Cachezeile (L2-Treffer und nicht gesperrt) empfangen wurde, verwendet die L2-Cachesteuerung den L2-Cachesatz, um den Speichervorgang im L2-Cache zu steuern, und der Schreibvorgang erfolgt nach Maßgabe der Speicherbyte- Markierungen innerhalb des Zyklus, der dem zweiten Zyklus der Lesesequenz aus dem L2-Cache des Prozessors entsprechen würde. Die Speichersteuerung empfängt den L2-Befehl und (ie L3-Anschlußkennung. Sobald der Status der L2-Cachezeile "L2-Treffer und nicht gesperrt) empfangen wurde, wird die Anforderung verworfen. Adresse/Schlüssel empfängt die absolute Adresse zur Aktualisierung der Referenz- und Anderungsbits. Die Referenz- und Anderungsbits für die 4-kB-Seite, die die durch die Speicheranforderung aktualisierte L2-Cachezeile enthält, werden auf '1'b gesetzt.
  • Fall 4
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Treffer. Die L2-Cachezeile wird als modifiziert markiert. Die absolute Adresse wird mit dem Befehl "Set Reference and Change Bits" zu Adresse/Schlüssel übertragen. Der Status der L2- Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Falls der anfordernde Prozessor eine Sperre aufrechterhält, wird die Sperradresse mit der Adresse der Speicheranforderung verglichen. Wenn sich Übereinstimmung ergibt, wird die Sperre gelöscht; wenn sich eine Diskrepanz ergibt, wird ein Naschinenfehler gesetzt. Alle L1-Statusmatrizen (ausgenommen den Status des L1-Operandencache des Prozessors) werden nach Kopien der modifizierten L1-Cachezeile durchsucht. Die niederwertige L2-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als Komparand für den Vergleich mit den Ausgängen der L1- Statusmatrix verwendet. Falls in der Statusmatrix des L1-Anweisungscache des anfordernden Prozessors eine Übereinstimmung ge- funden wird, wird der Eintrag gelöscht, und die L1-Cachekongruenz und der L1-Cachesatz werden zu lokalen Entwertung der L1- Cachekopie zu dem anfordernden Prozessor übertragen, nachdem die Adreßbus-Anforderung durch den L1 freigegeben wurde. Falls L1- Statusmatrizen der anderen Prozessoren eine Übereinstimmung liefern, werden die erforderlichen Einträge im L1-Status gelöscht, und die L1-Cachekongruenz und die L1-Cachesätze (einer für den L1-Operandencache und einer für den L1-Anweisungscache) werden zur Quer-Entwertung der L1-Cachekopien zu den erforderlichen anderen Prozessoren gleichzeitig übertragen, nachdem die Adreßbus-Anforderung durch diesen L1 freigegeben wurde. Der L2- Speicherzugriff ist von der Anforderung einer lokalen Entwertung oder Quer-Entwertung nicht betroffen, da L1 die Freigabe der erforderlichen Adreßschnittstelle in einer festen Zahl von Zyklen garantiert. Falls dieser Speicheranforderung ein End-of- Operation" zugeordnet ist, überträgt die L2-Steuerung ein Signal "Instruction Complete" zum L1-Cache des anfordernden Prozessors, um alle dieser Anweisung zugeordneten Einträge aus der L1-Speicherwarteschlange zu entfernen; die Speichervorgänge in den L2- Cache sind abgeschlossen. Die Ausgliederung aus der L1-Speicherwarteschlange erfolgt gleichzeitig mit der letzten (öder einzigen) Aktualisierung des L2-Cache. Die Ausgliederung aus der L2-Speicherwarteschlange erfolgt jedesmal, sobald eine nichtsequentielle Speicherung im L2-Cache abgeschlossen wird. Die L2- Cachesteuerung empfängt den L2-Cache-Speicherbefehl des Prozessors und die L2-Kongruenz und beginnt den Zugriff auf den L2- Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, den ältesten Eintrag aus der L2-Speicherwarteschlange auszugliedern und den L2-Schreibpuffer in den L2-Cache durchzuschreiben. Sobald der Status der L2-Cachezeile (L2-Treffer und nicht gesperrt) empfangen wurde, verwendet die L2-Cachesteuerung den L2-Cachesatz, um den Speichervorgang im L2-Cache zu steuern, und der Schreibvorgang erfolgt nach Maßgabe der Speicherbyte- Markierungen innerhalb des Zyklus, der dem zweiten Zyklus der Lesesequenz aus dem L2-Cache des Prozessors entsprechen würde.
  • Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Sobald der Status der L2-Cachezeile (L2-Treffer und nicht gesperrt) empfangen wurde, wird die Anforderung verworfen. Adresse/Schlüssel empfängt die absolute Adresse zur Aktualisierung der Referenz- und Anderungsbits. Die Referenz- und Änderungsbits für die 4-kB-Seite, die die durch die Speicheranforderung aktualisierte L2-Cachezeile enthält, werden auf '1'b gesetzt.
  • 2.2.5 Speicherung im Speicher, nicht sequentiell, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L2-Cache-Mißerfolg
  • Die Ausführungseinheit gibt eine nicht-sequentielle Speicheranforderung für den Prozessorspeicher an den L1-Operandencache aus. Die satzassoziative TLB-Suche liefert eine absolute Adresse ohne Zugriff-Ausnahmebedingungen für die von der Anforderung vorgelegte logische Adresse. Falls bei der Durchsuchung des L1- Cacheverzeichnisses durch Übereinstimmung beim Vergleich mit der absoluten Adresse aus dem TLB die Daten im Cache gefunden werden (L1-Treffer), wird ein Schreibvorgang in den gewählten L1-Cachesatz aktiviert. Die Daten der Speicheranforderung werden in die L1-Cachekongruenz und den gewählten Satz geschrieben, wobei die Speicherbyte-Steuermarkierungen verwendet werden, um nur die gewünschten Bytes innerhalb des Doppelworts zu schreiben. Falls die Verzeichnissuche aufgrund einer Diskrepanz beim Vergleich mit der absoluten Adresse aus dem TLB zu einem L1-Cache-Mißerfolg führt, wird der Schreibvorgang im L1-Cache abgebrochen. In beiden Fällen wird die Speicheranforderung in die L1-Speicher- Warteschlange eingegliedert. Die Informationen im Warteschlangeneintrag bestehen aus der absoluten Adresse, den Daten, den Speicherbyte-Markierungen und dem Typ der Speicheranforderung (nicht-sequentielle oder sequentielle Speicherung, "End-of-Operation"). Falls die Speicherwarteschlange vor dieser Anforderung leer ist oder der Eingliederungszeiger für die L1-Speicherwarteschlange dem Übertragungszeiger entspricht und die L1/L2- Schnittstelle verfügbar ist, wird die Speicheranforderung sofort zu L2 übertragen. Andernfalls wird die Übertragung verzögert, bis der Übertragungszeiger der L1-Speicherwarteschlange diesen Eintrag auswählt, während die L1/L2-Schnittstelle verfügbar ist. Etwaige vorzeitig abgerufene Anweisungen, die auf die aktuelle Anweisung folgen, werden durch Vergleich der logischen Adressen auf Modifikation durch die Speicheranforderung geprüft. Falls eine Übereinstimmung auftritt, werden die Anweisungspuffer entwertet. Die L2-Steuerung empfängt die Speicheranforderung. Falls die L2-Speicherwarteschlange leer ist und mit der Speicheranforderung "End-of-Operation" angegeben wird, kann diese Anforderung sofort bearbeitet werden, wenn sie von der L2-Cachepriorität ausgewählt wird. Falls die Speicherwarteschlange leer ist, aber der Speicheranforderung kein "End-of-Operation" zugeordnet ist, muß sie in der Speicherwarteschlange abwarten, bis "End-of- Operation" empfangen wird, bevor sie in die L2-Cachepriorität eingetragen werden darf. Falls die L2-Speicherwarteschlange für diesen Prozessor nicht leer ist, muß diese Anforderung in der Speicherwarteschlange abwärten, bis alle vorausgegangenen Speichervorgänge für diesen Prozessor im L2-Cache abgeschlossen sind. In jedem Fall wird für den anfordernden Prozessor ein Eintrag in der L2-Speicherwarteschlange erzeugt. Die L2-Cache-Speicher warteschlange ist physisch in zwei Abschnitte aufgeteilt: Steuerung und Daten. Die absolute Adresse und der Typ der Speicheranforderung werden in der L2-Steuerungsfunktion verwaltet. Die zugeordneten Daten und Speicherbyte-Markierungen werden in die Datenstromfunktion des L2-Cache eingegliedert. Die L2-Cache- Priorität wählt diese Prozessor-Speicheranforderung zur Bearbeitung aus. Die L2-Steuerung überträgt einen L2-Cache-Speicherbefehl des Prozessors und die L2-Cachekongruenz zur L2-Cachesteuerung und einen L2-Cache-Speicherbefehl des Prozessors zur Speichersteuerung. Da der L1-Operandencache ein Durchspeicherungs- Cache ist, ist unabhängig vom L1-Cache-Treffer-/Mißerfolg-Status der ursprünglichen Speicheranforderung keine Seiteneinlagerung in den L1-Cache erforderlich. Die L2-Steuerung gliedert die Speicheranforderung aus dem Steuerungsabschnitt der L2-Cache- Speicherwarteschlange für diesen Prozessor aus. Die Durchsuchung des L2-Cacheverzeichnisses führt zu einer von drei Bedingungen, die einen L2-Cache-Mißerfolg liefern. Da der L2-Cache ein Einspeicherungs-Cache ist, muß die L2-Cachezeile aus dem L3-Prozessorspeicher eingelagert werden, bevor die Speicheranforderung abgeschlossen ist. Die Speicheranforderung wird infolge des L2- Cache-Mißerfolgs ausgesetzt, damit andere Anforderungen im L2- Cache bearbeitet werden können, während die Seiteneinlagerung für die angeforderte L3-Zeile erfolgt.
  • Fall A
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg, aber eine frühere L2-Cache-Seiteneinlagerung steht für diesen Prozessor an. Die L2-Steuerung setzt diese Speicheranforderung aus, während der Abschluß der früheren Seiteneinlagerungsanforderung aussteht. Die Speicheranforderung wird in den Steuerungsabschnitt der L2-Cache-Speicherwarteschlange für diesen Prozessor zurückgespeichert. Für diesen Prozessor können keine weiteren Anforderungen im L2-Cache bearbeitet werden, da sowohl für die Befehlspuffer als auch für die Speicherwarteschlange der Abschluß einer Seiteneinlagerung im L2- Cache aussteht. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Ein Sperrstatus wird infolge vorausgehender Seiteneinlagerungs-Anfragen erzwungen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des L2-Cache-Mißerfolgs blockiert. Die L2-Steuerung blokkiert aufgrund des L2-Cache-Mißerfolgs die Übertragung von "Instruction Complete" zum L1-Cache des anfordernden Prozessors. Die L2-Cachesteuerung empfängt den L2-Cache-Speicherbefehl des Prozessors und die L2-Cache-Kongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cache-Steuerung überträgt zum L2-Datenstrom den Befehl, den ältesten Eintrag aus der L2-Speicherwarteschlange auszugliedern und den L2-Schreibpuffer in den L2-Cache durchzuschreiben. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Mißerfolg und gesperrt) empfangen hat, bricht sie die Ausgliederung des Eintrags aus der Speicherwarteschlange und den Schreibvorgang im L2-Cache ab. Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Sobald der Status der L2-Cachezeile (L2-Mißerfolg und gesperrt) empfangen wurde, wird die Anforderung verworfen.
  • Fall B
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg, aber eine frühere Seiteneinlagerung im L2-Cache steht für einen anderen Prozessor für dieselbe L2-Cachezeile an. Die L2-Steuerung setzt diese Speicheranforderung aus, solange die Beendigung der früheren Seiteneinlagerungsanforderung aussteht. Die Speicheranforderung wird in den Steuerungsabschnitt der L2-Cache-Speicherwarteschlange für diesen Prozessor zurückgespeichert. Befehlspufferanforderungen für diesen Prozessor können von der L2-Steuerung weiterhin bearbeitet werden. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Aufgrund des Einfrierkonflikts der früheren Seiteneinlagerung wird ein Sperrstatus erzwungen. Die Vergleiche der L1-Statusmatrizen werden aufgrund des L2-Mißerfolgs blockiert. Die L2-Steuerung blockiert aufgrund des L2- Cache-Mißerfolgs die Übertragung von "Instruction Complete" zum L1-Cache des anfordernden Prozessors. Die L2-Cachesteuerung empfängt den L2-Cache-Speicherbefehl des Prozessors und die L2-Cachekongruenz und beginnt den Zugriff auf den L2-Cache. Die L2- Cachesteuerung überträgt zum L2-Datenstrom den Befehl, den ältesten Eintrag aus der L2-Speicherwarteschlange auszugliedern und den L2-Schreibpuffer in den L2-Cache durchzuschreiben. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Mißerfolg und gesperrt) empfangen hat, bricht sie die Ausgliederung des Eintrags aus der Speicherwarteschlange und den Schreibvorgang des L2-Cache ab. Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Sobald der Status der L2-Cachezeile (L2-Mißerfolg und gesperrt) empfangen wurde, wird die Anforderung verworfen.
  • Fall C
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg. Die L2-Steuerung setzt diese Speicheranforderung aus und setzt das Seiteneinlagerung-Einfrierregister des Prozessors. Die Speicheranforderung wird in den Steuerungsabschnitt der L2-Cache-Speicherwarteschlange für diesen Prozessor zurückgespeichert. Befehlspufferanforderungen für diesen Prozessor können weiterhin von der L2-Steuerung bearbeitet werden. Die absolute Adresse wird zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des L2-Cache-Mißerfolgs blöckiert. Die L2-Steuerung blockiert aufgrund des L2-Cache-Mißerfolgs die Übertragung von "Instruction Complete" zum L1-Cache des anfordernden Prozessors. Die L2-Cachesteuerung empfängt den L2-Cache-Speicherbefehl des Prozessors und die L2-Cachekongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, den ältesten Eintrag aus der L2-Speicherwarteschlange auszugliedern und den L2-Puffer in den L2-Cache durchzuschreiben. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Mißerfolg und nicht gesperrt) empfangen hat, bricht sie die Ausgliederung des Eintrags. aus der Speicherwarteschlange und den Schreibvorgang des L2-Cache ab. Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Sobald der Status der L2-Cachezeile (L2-Mißerfolg und nicht gesperrt) empfangen wurde, wird die Anforderung in die Priorität für den angeforderten L3-Speicheranschluß eingetragen. Wenn alle Ressourcen (einschließlich eines Seiteneinlagerungs/Seitenauslagerungs-Pufferpaars) verfügbar sind, wird zur BSU- Steuerung ein Befehl übertragen, den L3-Abrufzugriff für den Prozessor zu beginnen. Die Speichersteuerung weist die L2-Steuerung an, den L2-Verzeichnisstatus für die anstehende Seiteneinlagerung auf normale Weise zu setzen. Adresse/Schlüssel empfängt die absolute Adresse. Das Referenzbit für die 4-kB-Seite, die die angeforderte L2-Cachezeile enthält, wird atif '1'b gesetzt. Das zugeordnete Änderungsbit wird nicht geändert, da nur eine Seiteneinlagerung des L2-Cache gerade ausgeführt wird; der Speicherzugriff wird erneut ausgeführt, nachdem die Seiteneinlagerung abgeschlossen ist. Die absolute Adresse wird in eine physische L3-Adresse umgewandelt. Die physische Adresse wird zur BSU- Steuerung übertragen, sobald die Schnittstelle infolge des L2- Cache-Mißerfolgs verfügbar ist. Sobald die BSU-Steuerung den Befehl der Speichersteuerung und die physische L3-Adresse von Adresse/Schlüssel empfangen hat, leitet sie den 128 Byte langen Abrufvorgang vom L3-Speicheranschluß ein, indem sie Befehl und Adresse zum Prozessorspeicher überträgt und die Speicherkarten in dem gewünschten Anschluß auswählt. Daten werden in 16-Byte- Abschnitten über eine gemultiplexte Befehls-/Adreß- und Datenschnittstelle mit dem L3-Speicheranschluß übertragen. Acht Übertragungen aus dem L3-Speicher werden benötigt, um die 128 Byte lange L2-Cachezeile zu beschaffen. Die Folge von Vierfachwort-Übertragungen beginnt mit dem Vierfachwort, das das durch den Speicherzugriff angeforderte Doppelwort enthält. Die nächsten drei Übertragungen enthalten den Rest der L1-Cachezei le. Die letzten vier Übertragungen enthalten den Rest der L2- Cachezeile. Während die letzte Datenübertragung zum Seitenein- lagerungspuffer des L2-Cache abgeschlossen wird, aktiviert die BSU-Steuerung für die L2-Steuerung das "Inpage complete" für den betreffenden Prozessor. Während der Datenübertragungen zum L2- Cache überwacht Adresse/Schlüssel die L3-Zeilen mit nicht behebbarem Fehler. Falls während des Seiteneinlagerungsprozesses ein nicht behebbarer Fehler festgestellt wird, werden mehrere Funktionen ausgeführt. Bei jeder Vierfachwort-Übertragung zum L2- Cache wird ein Signal für einen nicht behebbaren L3-Fehler zu dem Prozessor übertragen, der den Speicherzugriff ursprünglich angefordert hat. Der Prozessor empfängt zu einer gegebenen Seiteneinlagerungsanforderung für den L2-Cache maximal einen Hinweis auf einen nicht behebbaren Speicherfehler, und zwar den ersten, der von Adresse/Schlüssel festgestellt wurde. Die Doppelwortadresse des ersten von Adresse/Schlüssel festgestellten nicht behebbaren Speicherfehlers wird für den anfordernden Prozessor aufgezeichnet. Falls für irgendwelche Daten in der L1- Zeile, auf die vom Prozessor zugegriffen wird, ein nicht behebbarer Speicherfehler eintritt, wird ein Hinweis für die Bearbeitung eines nicht behebbaren Speicherfehlers gesetzt. Falls schließlich für irgendwelche zum Seiteneinlagerungspuffer des L2-Cache übertragene Daten ein nicht behebbarer Fehler auftritt, sendet Adresse/Schlüssel zur L2-Steuerung ein Signal, die Bearbeitung der Seiteneinlagerung im L2-Cache und der nachfolgenden Speicheranforderung zu ändern. Die L2-Cache-Priorität wählt das "Inpage Complete" für den Prozessor zur Bearbeitung. Die L2- Steuerung überträgt einen Befehl "Write Inpage Buffer" und die L2-Cachekongruenz zur L2-Cachesteuerung und eine Statusantwort "Inpage Complete" zur Speichersteuerung. Aus der Suche im L2- Cacheverzeichnis ergibt sich eine von zwei Bedingungen.
  • Fall 1
  • Die L2-Steuerung wählt eine L2-Cachezeile zum Ersetzen aus. In diesem Fall zeigt der Status der ersetzten Zeile, daß sie unmodifiziert ist; es ist keine Auslagerung erforderlich. Das L2- Verzeichnis wird aktualisiert, um die Existenz der neuen L2-Cachezeile wiederzugeben. Wenn bei der Seiteneinlagerung in den Seiteneinlagerungspuffer des L2-Cache kein nicht behebbarer L3- Speicherfehler festgestellt wurde, wird das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, geleert. Wenn bei der Seiteneinlagerung in den Seiteneinlagerungspuffer des L2-Cache ein nicht behebbarer L3-Speicherfehler festgestellt wurde, wird das Einfrierregister, das für diese durch einen L2-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, aktiv gelassen, und der dem Einfrierregister zugeordnete Hinweis auf einen nicht behebbaren Speicherfehler wird gesetzt; die Befehlspuffer für den Prozessor, der die Seiteneinlagerung angefordert hat, werden daran gehindert, sich in die L2-Cachepriorität eintragen zu lassen; alle L1-Cache-Anzeiger für diesen Prozessor werden gesetzt, um einen nicht behebbaren Speicherfehlers zu melden. Der ausgewählte L2-Cachesatz wird zu Adresse/Schlüssel und zur L2-Cachesteuerung übertragen. Der Status der ersetzten L2-Cachezeile wird zur L2-Cachesteuerung und Speichersteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1- Statusmatrizen für alle L1-Caches in der Konfiguration werden auf Kopien der ersetzten L2-Cachezeile geprüft. Falls Kopien gefunden werden, werden die entsprechenden Entwertungsanfragen zu den L1-Caches übertragen. Aus dem L1-Status wird der L1-Kopiestatus für die ersetzte L2-Cachezeile gelöscht. Die L2-Cachesteuerung empfängü den Befehl "Write Inpage Buffer" und bereitet einen Schreibvorgang für eine L2-Zeile vor, um die Seiteneinlagerung im L2-Cache abzuschließen, solange der Status von der L2-Steuerung ansteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Status der ersetzten Zeile. Da die ersetzte Zeile unmodifiziert ist, signalisiert die L2-Cachesteuerung dem L2- Cache, daß der Seiteneinlagerungspuffer in den L2-Cache zu schreiben ist. Da dies ein Vollzeilen-Schreibvorgang ist und die Cachesätze verschachtelt sind, muß der L2-Cachesatz verwendet werden, um die Adreßbits 25 und 26 so zu manipulieren, daß der Schreibvorgang für die L2-Cachezeile zugelassen wird. Die BSU- Steuerung überträgt "End-of-Operation" zur Speichersteuerung. Adresse/Schlüssel empfängt den L2-Cachesatz von der L2-Steuerung. Das Adreßregister für die Aktualisierung des L2-Miniverzeichnisses wird aus den Adreßpuffern für die Seiteneinlagerung und aus dem von der L2-Steuerung empfangenen L2-Cachesatz gesetzt. Die Speichersteuerung empfängt den Status der ersetzten Zeile. Da keine Auslagerung erforderlich ist, gibt die Speichersteuerung die von der Seiteneinlagerungsanforderung zurückgehaltenen Ressourcen frei. Die Speichersteuerung überträgt zu Adresse/Schlüssel einen Befehl, das L2-Miniverzeichnis unter Verwendung des diesem Prozessor zugeordneten Adreßregisters für die Aktualisierung des L2-Miniverzeichnisses zu aktualisieren. Die Speichersteuerung markiert die aktuelle Operation anschließend als abgeschlossen und gestattet es dem anfordernden Prozessor, sich wieder in die Speicherressourcen-Priorität eintragen zu lassen. Die ursprüngliche Anforderung der L2-Speicherwarteschlange wird nun erneut in die Bearbeitungsproritätsschaltung des L2-Cache eingetragen. Der speicherzugriff wird erneut versucht, sobald er für die L2-Cachebearbeitung ausgewählt wurde, und ausgeführt, als ob dies der erste Versuch sei, die Anforderung innerhalb der L2-Steuerung zu bearbeiten.
  • Fall 2
  • Die L2-Steuerung wählt eine L2-Cachezeile zum Ersetzen aus. In diesem Fall zeigt der Status der ersetzten Zeile, daß sie modifiziert ist; eine L2-Cache-Auslagerung ist erforderlich. Das L2- Verzeichnis wird aktualisiert, um die Anwesenheit der neuen L2- Cachezeile wiederzugeben. Falls bei der Seiteneinlagerung in den Seiteneinlagerungspuffer des L2-Cache kein nicht behebbarer L3- Speicherfehler festgestellt wurde, wird das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, geleert. Wenn bei der Seiteneinlagerung in den Seiteneinlagerungspuffer des L2-Cache ein nicht behebbarer L3-Speicherfehler festgestellt wurde, wird das Einfrierregister, das für diese durch einen L2-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, aktiv gelassen, und der dem Einfrierregister zugeordnete Hinweis auf einen nicht behebbaren Speicherfehler wird gesetzt; die Befehlspuffer für den Prozessor, der die Seiteneinlagerung angefordert hat, werden daran gehindert, die L2-Cache-Priorität aufzusuchen; alle L1- Cache-Anzeiger für diesen Prozessor werden gesetzt, um einen nicht behebbaren Speicherfehler zu melden. Die aus dem Verzeichnis gelesene Adresse wird gemeinsam mit dem gewählten L2-Cachesatz än Adresse/Schlüssel übertragen. Der gewählte L2-Cachesatz wird zur L2-Cachesteuerung übertragen. Der Status der ersetzten L2-Cachezeile wird zur L2-Cachesteuerung und Speichersteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1-Statusmatrizen für alle L1-Caches in der Konfiguration werden auf Kopien der ersetzten L2-Cachezeile überprüft. Falls Kopien gefunden werden, werden die entsprechenden Entwertungsanforderüngen zu den L1-Caches übertragen. Aus dem L1-Status wird der L1-Kopiestatus für die ersetzte L2-Cachezeile gelöscht. Die L2-Steuerung empfängt den Befehl "write inpage buffer" und bereitet zur Beendigung der L2-Seiteneinlagerung einen L2-Schreibvorgang vor, solange der Status der L2-Steuerung ansteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Status der ersetzten Zeile. Da die ersetzte Zeile modifiziert ist, signalisiert die L2-Cachesteuerung dem L2-Cache, daß ein Vollzeilen-Lesevorgang zu dem mit dem Seiteneinlagerungspuffer gepaarten Seitenauslagerungspuffer erforderlich ist, bevor die Daten aus dem Seiteneinlagerungspuffer in den L2-Cache geschrieben werden. Da dies Vollzeilen-Zugriffe sind und die Cachesätze verschachtelt sind, muß der L2-Cachesatz verwendet werden, um die Adreßbits 25 und 26 so zu manipulieren, daß die Zugriffe auf die L2-Cachezeile zugelassen werden. Adresse/Schlüssel empfängt die Seitenauslagerungsadresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie gemeinsam mit dem L2- Cachesatz in den Adreßpuffern für die Seitenauslagerung. Das Adreßregister für die Aktualisierung des L2-Miniverzeichnisses wird aus den Adreßpuffern für die Seiteneinlagerung und aus dem von der L2-Steuerung empfangenen L2-Cachesatz gesetzt. Adresse/Schlüssel überträgt zur Vorbereitung des Schreibvorgarigs der L3-Zeile die physische Seitenauslagerungsadresse zur BSU-Steuerung. Die Speichersteuerung empfängt den Status der ersetzten Zeile. Da eine Auslagerung erforderlich ist, kann die Speichersteuerung die L3-Ressourcen nicht freigeben, bevor die Aktualisierung des Speichers abgeschlossen ist. Es wird gewährleistet, daß Auslagerungen zu demselben Speicheranschluß erfolgen, der für die Seiteneinlagerung verwendet wird. Die Speichersteuerung überträgt zu Adresse/Schlüssel einen Befehl, das L2-Miniverzeichnis unter Verwendung des diesem Prozessor zugeordneten Adreßregisters für die Aktualisierung des L2-Miniverzeichnisses zu aktualisieren. Die Speichersteuerung markiert die aktuelle Operation anschließend als abgeschlossen und gestattet es dem anfordernden Prozessor, wieder in die Speicherressourcen-Priorität eingetragen zu werden. Die ursprüngliche Anfrage nach der L2-Speicherwarteschlange wird nun erneut in die Prioritätsschaltung für die Bearbeitung des L2-Cache eingetragen. Der Speicherzugriff wird erneut versucht, sobald er für die Bearbeitung des L2-Cache ausgewählt worden ist, und so ausgeführt, als sei dies der erste Versuch, die Anforderung innerhalb der L2-Steuerung zu bearbeiten. Die BSU-Steuerung erkennt, daß die ersetzte L2-Cachezeile modifiziert wurde, und startet die Auslagerungssequenz, nachdem sie die Seitenauslagerungsadresse von Adresse/Schlüssel empfangen hat, indem sie einen Vollzeilen-Schreibbefehl und die Adresse über den L2-Cachedatenstrom zu dem gewählten Speicheranschluß überträgt. Die Daten werden in 16-Byte-Abschnitten vom Seitenauslagerungspuffer zum Speicher übertragen. Nach der Übertragung des letzten Vierfachworts in den Speicher überträgt die BSU-Steuerung "End-of-Operation" zur Speichersteuerung. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den L3-Anschluß frei, um einen überlappenden Zugriff auf den Speicheranschluß zu ermöglichen.
  • 2.2.6 Speicherung im Speicher, sequentiell, Anfangszugriff auf L2-Zeile, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L2-Cache-Treffer
  • Die Ausführungseinheit gibt eine. sequentielle Speicheranforderung für den Prozessorspeicher an den L1-Operandencache aus. Die satzassoziative TLB-Suche liefert eine absolute Adresse (ohne Zugriff-Ausnahmebedingungen) für die von der Anforderung vorgelegte logische Adresse. Falls bei der Durchsuchung des L1-Cacheverzeichnisses die Daten im Cache durch Übereinstimmung beim Vergleich mit der absoluten Adresse aus dem TLB gefunden werden (L1-Treffer), wird ein Schreibvorgang zu dem gewählten L1-Cachesatz aktiviert. Die Daten der Speicheranforderung werden in die L1-Cachekongruenz und den gewählten Satz geschrieben, wobei die Speicherbyte-Steuermarkierungen verwendet werden, nur die gewünschten Bytes innerhalb des Doppelworts zu schreiben. Falls die Verzeichnissuche aufgrund einer Diskrepanz zu der absoluten Adresse aus dem TLB zu einem L1-Cache-Mißerfolg führt, wird der Schreibvorgang des L1-Cache abgebrochen. In beiden Fällen wird die Speicheranforderung in die L1-Speicherwarteschlange eingegliedert. Die Informationen des Warteschlangeneintrags bestehen aus der absoluten Adresse, den Daten, den Speicherbyte-Markierungen und dem Typ der Speicheranforderung (nicht-sequentielle oder sequentielle Speicherung, "end-of-Operation"). Falls die Speicherwarteschlange vor dieser Anforderung leer ist oder der Eingliederungszeiger der L1-Speicherwarteschlange dem Übertragungszeiger entspricht und die L1/L2-Schnittstelle verfügbar ist, wird die Speicheranforderung sofort zu L2 übertragen. Andernfalls wird die Übertragung verzögert, bis der Übertragungszeiger der L1/L2-Speicherwarteschlange diesen Eintrag auswählt, während die L1/L2-Schnittstelle verfügbar ist. Etwaige vorzeitig abgerufene Anweisungen, die auf die aktuelle Anweisung folgen, werden durch Vergleich der logischen Adressen auf Modifikation durch die Speicheranforderung geprüft. Falls eine Übereinstimmung auftritt, werden die Anweisungs puffer entwertet. Die L2- Steuerung empfängt die Speicheranforderung. Falls die sequentielle Speicherungsroutine noch nicht begonnen wurde, ist diese Anforderung sowohl der erste sequentielle Speicherzugriff als auch der erste Speicherzugriff auf die L2-Cachezeile. Wenn die erste sequentielle Speicheranforderung bearbeitet worden ist und eine sequentielle Operation läuft, stellt dies den ersten Speicherzugriff auf eine neue L2-Cachezeile in der sequentiellen Speicherroutine dar. Falls die L2-Speicherwarteschlange leer ist, kann diese Anforderung sofort bearbeitet werden, wenn sie von der L2-Cachepriorität gewählt wird. Falls die L2-Speicherwarteschlange für diesen Prozessor nicht leer ist, muß diese Anforderung in der Speicherwarteschlange abwarten, bis alle vorausgegangenen Speichervorgänge für diesen Prozessor in den L2- Gache oder in die Schreibpuffer des L2-Cache abgeschlossen sind. In beiden Fällen wird ein Eintrag in der L2-Speicherwarteschlange für den anfordernden Prozessor erstellt. Die Speicherwarteschlange für den L2-Cache ist physisch in zwei Abschnitte aufgeteilt: Steuerung und Daten. Die absolute Adresse und der Typ der Speicheranforderung werden in der L2-Steuerfunktion verwaltet. Die zugeordneten Daten und Speicherbyte-Markierungen sind in die Warteschlange der Datenstromfunktion des L2-Cache eingegliedert. Falls diese Speicheranforderung der Beginn einer sequentiellen Speicheroperation ist, muß die L2-Steuerung das L2- Cacheverzeichnis auf die Anwesenheit der Zeile im L2-Cache überprüfen. Falls eine sequentielle Operation für diesen Prozessor gerade äusgeführt wird und der Vergleich der Adreßbits 25, 25, 27 und 28 mit denjenigen der vorausgegangenen sequentiellen Speicheranforderung für diesen Prozessor erwiesen hat, daß das Bit 24 der absoluten Adresse dieser Speicheranforderung von demjenigen der vorausgegangenen Speicheranforderung abweicht, gilt diese Speicheranforderung für eine andere L2-Cachezeile. Infolgedessen muß die L2-Steuerung das L2-Cacheverzeichnis auf die Anwesenheit dieser Zeile im L2-Cache überprüfen. Es wird kein Wiederholungsbefehl zur L2-Cachesteuerung übertragen, und keine Informationen werden sofort zu Adresse/Schlüssel und zur Spei- chersteuerung übertragen. Da dies nicht die erste Zeile ist, auf die durch die sequentielle Speicheroperation zugegriffen werden soll, prüft die L2-Steuerung den Status der vorausgegangenen L2- Cachezeile, auf die sequentiell zugegriffen wurde. Falls die vorausgegangene Zeile sich nicht im L2-Cache befindet, hält die L2-Steuerung die sequentielle Steuerung der aktuellen Zeile zurück, bis die Seiteneinlagerung abgeschlossen ist. Andernfalls kann die L2-Steuerung weiterhin sequentielle Speichervorgänge zur aktuellen L2-Cachezeile durchführen. Die L2-Cachepriorität wählt diese Prozessor-Speicheranforderung zur Bearbeitung aus. Die L2-Steuerung überträgt einen Befehl "Store to L2 Cache Write Buffer" und die L2-Cachekoügruenz zur L2-Cachesteuerung sowie einen Prozessor-L2-Cache-Speicherbefehl zur Speichersteuerung. Da der L1-Operandencache ein Durchspeicherungs-Cache ist, ist (unabhängig vom L1-Cache-Treffer/Mißerfolg-Status der ursprünglichen Speicheranforderung) keine Seiteneinlagerung in den L1- Cache erforderlich. Die L2-Steuerung gliedert die Speicheranforderung aus dem Steuerungsabschnitt der L2-Speicherwarteschlange aus, um eine überlappte Verarbeitung nachfolgender sequentieller Speicheranforderungen in dieselbe L2-Cachezeile zu ermöglichen. Die L2-Steuerung erkennt, däß diese Speicheranforderung der Beginn einer neuen L2-Cachezeile innerhalb der sequentiellen Speicheroperation ist. Falls diese Speicheranforderung der Beginn einer sequentiellen Speicheroperation ist, setzt die L2-Steuerung für diesen Prozessor den Anzeiger für eine momentan ausgeführte sequentielle Operation. Die Bits 24, 25, 27 und 28 der absoluten Adresse der Speicherwarteschlangen-Anforderung werden für zukünftige Referenzen in der sequentiellen Speicherroutine gesichert. Falls ein Sperrkonflikt für einen anderen Prozessor festgestellt wird, wird er ignoriert, da die Daten für die Schreibpuffer des L2-Cache für den anfordernden Prozessor bestimmt sind, nicht für den L2-Cache. Falls der anfordernde Prozessor eine Sperre hält, wird ein Maschinenfehler gesetzt. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von zwei Bedingungen, die einen L2-Cachetreffer liefern.
  • Fall 1
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cachetreffer, aber für die angeforderte L2-Cachezeile ist für einen anderen Prozessor ein Einfrierregister mit aktiver Anzeige für einen nicht behebbaren Speicherfehler oder ein Zeilenhalt- Register mit aktiver Anzeige für einen nicht behebbaren Speicherfehler gesetzt. Die L2-Steuerung setzt diese Speicheranforderung und nachfolgende sequentielle Speicheranforderungen aus, solange die Freigabe des Einfrier- oder Zeilenhalt-Register mit nicht behebbarem Speicherfehler ansteht. Die Speicheranforderung wird in den Steuerungs abschnitt der L2-Cache-Speicherwarteschlange für diesen Prozessor zurückgespeichert. Befehlspufferanforderungen für diesen Prozessor können weiterhin von der L2- Steuerung bearbeitet werden. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Aufgrund der Einfrier- oder Zeilenhalt-Bedingung mit nicht behebbarem Speicherfehlerkonflikt für den anderen Prozessor wird ein Sperrstatus erzwungen. Die Vergleiche der L1-Statusmatrizen sind aufgrund der momentan ausgeführten sequentiellen Speicheroperation blockiert. Die L2-Steuerung überträgt aufgrund der momentan ausgeführten sequentiellen Speicheroperation kein "Instruction Complete" zum L1-Cache des anfordernden Prozessors. Die L2-Cachesteuerung empfängt den Befehl "store to L2 Cache Write Buffer" und die L2-Kongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, den ältesten Eintrag aus der L2-Speicherwarteschlange auszugliedern und ihn in den nächsten L2-Cache-Schreibpuffer zu schreiben. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Treffer und gesperrt) empfangen hat, bricht die L2-Cachesteuerung die Ausgliederung des Eintrags aus der Datenspeicher-Warteschlange und den Schreibvorgang des L2-Cache- Schreibpuffers ab. Die Speichersteuerung empfängt den L2-Befehl und die Kennung des L3-Anschlusses. Sobald der Status der L2- Gachezeile (L2-Treffer und gesperrt) empfangen wurde, wird die Anforderung verworfen.
  • Fall 2
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cachetreffer. Die L2-Cachezeile wird nicht als modifiziert markiert. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Ein Zeilenhalt, der aus den Bits 4:24 der absoluten Adresse und aus dem L2-Cachesatz besteht, wird für die L2-Cachezeile eingerichtet, die durch diese Speicheranforderung modifiziert werden soll. Bit 25 der absoluten Adresse wird verwendet, um aufzuzeichnen, ob diese Speicheranforderung die obere Halbzeile oder die untere Halbzeile der L2-Cachezeile modifiziert. Wenn Bit 25 gleich '0'b ist, setzt es den oberen Halbzeilen-Nodifikator des aktuellen Zeilenhalt-Registers; wenn Bit 25 gleich '1'b ist, setzt es den unteren Halbzeilen-Modifikator. Die Vergleichsvorgänge der L1-Statusmatrizen sind aufgrund der momentan ausgeführten sequentiellen Speicheroperation blockiert. Die L2-Steuerung überträgt aufgrund der momentan ausgeführten sequentiellen Speicheroperation nicht "Instruction Complete" zum L1-Cache des anfordernden Prozessors. Die L2-Cachesteuerung empfängt den Befehl "Store to L2 Cache Write Buffer" und die L2-Cachekongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Cachedatenstrom den Befehl, den ältesten Eintrag aus der L2-Speicherwarteschlange auszugliedern und in den nächsten Schreibpuffer des L2-Cache zu schreiben. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Treffer und nicht gesperrt) empfangen hat, schließt sie die Speicherung im Schreibpuffer des L2-Cache ab und lädt die Daten und Speicherbyte-Markierungen (an Adressen ausgerichtet) in den Schreibpuffer für den anfordernden Prozessor. Die L2-Cachekongruenz wird für nachfolgende sequentielle Speicheranforderungen gesichert, die dieser Operation und dem Schreibpuffer des L2-Cache im L2-Datenstrom zugeordnet sind. Für diesen Abschnitt der sequentiellen Speicheroperation ist der Cachesatz nicht erforderlich, aber die Pipeline-Phasen sorgen dafür, daß die Daten der Speicherwarteschlange auf eine mit nicht-sequentiellen Speicheranforderungen konsistente Weise in den Schreibpuffer des L2-Cache verschoben werden. Zu dem Zeitpunkt, zu dem die Daten in den Schreibpuffer des L2-Cache geschrieben werden, wird der Eintrag der Daten-Speicherwarteschlange aus der L2-Speicherwarteschlange, aber nicht aus der L1- Speicherwarteschlange ausgegliedert. Die Speichersteuerung empfängt den L2-Befehl und die Kennung des L3-Anschlusses. Sobald der Status der L2-Cachezeile (L2-Treffer und nicht gesperrt) empfangen worden ist, wird die Anforderung verworfen.
  • 2.3 Speicher-Anforderungskombinationen für den MP/3-Prozessor 2.3.1 Anstehender Speicherungskonflikt
  • Ein nicht-sequentieller Prozessorspeicher-Speichervorgang erfolgt an einer Speicherposition im Hauptspeicher. Unabhängig vom Status der Zeile im L1-Cache wird ein Eintrag in die L1-Speicherwarteschlange gestellt. So bald wie möglich wird die Speicheranforderung in die L2-Speicherwarteschlange übertragen. Im Rahmen der Ausführungssequenz einer nachfolgenden Anweisung versucht der Prozessor, Daten aus 'derselben Speicherposition' im LLD-Cache abzurufen, und liefert dadurch einen Vergleich des Operandenspeichers. Ein anstehender Speicherungskonflikt kann für den L1I-Cache entstehen, wenn der Prozessor einen vorgezogenen Abruf einer sequentiellen Anweisung oder einen Abruf eines Verzweigungsziels von 'derselben Speicherposition' durchführt, woraus sich ein Programmspeichervergleich ergibt (Typ 'Store- then-Fetch'). Die Definition von 'dieselbe Speicherposition' hängt vom Status der Zeile im L1-Cache zum Zeitpunkt des Abrufzugriffs ab. Aus der Durchsuchung des L1-Cacheverzeichnisses nach der nachfolgenden Abrufanforderung ergibt sich eine von zwei Bedingungen.
  • Fall 1
  • Die Durchsuchung des L1-Cacheverzeichnisses führt zu einem L1- Treffer, und 'dieselbe Speicherposition' ist als 8-Byte-Grenze im Speicher definiert. Die Adressen der Einträge der L1-Speicherwarteschlange werden mit der Abrufadresse auf der 8-Byte- Grenze hinsichtlich Übereinstimmungen mit Adressen für anstehende Speichervorgänge verglichen. Die Adresse der Abrufanforderung erkennt eine Übereinstimmung in der L1-Speicherwarteschlange, einen anstehenden Speicherungskonflikt. Im MP/1 wird die Übereinstimmungsbedingung ignoriert, und der Abruf darf nur für den L1D-Cache fortgesetzt werden. In den Mehrprozessoren-Konfigurationen für den L1D-Cache und in allen Konfigurationen für den L1I-Cache wird die Abrufanforderung anstehend gehalten, bis der von der Konfliktbedingung betroffene Speichervorgang im L2-Cache abgeschlossen ist. Da der Abrufvorgang tatsächlich einen oder mehrere anstehende Speicherungskonflikte erkennen kann, wird er anstehend gehalten, bis alle Konflikte beseitigt sind. Als Ergebnis des L1-Treffers wird die Abrufanforderung nicht zur L2- Steuerung übertragen. Mit der Rücklieferung von "Instruction Complete" für den neuesten anstehenden Speicherungskonflikt wird der Eintrag aus der Speicherwarteschlange ausgegliedert, und die Abrufanforderung darf wieder auf den L1-Cache zugreifen. Falls die Wiederholung der Abrufanforderung die Daten noch im L1-Cache findet, werden die Daten wieder zum Anforderer zurückgeliefert, und zur L2-Steuerung werden keine Informationen übertragen. Falls die Wiederholung der Abrufanforderung einen L1-Cache-Mißerfolg feststellt, wird die Anforderung zur L2-Steuerung übertragen, da nun eine Seiteneinlagerung des L1-Cache erforderlich ist.
  • Fall 2
  • Die Durchsuchung des L1-Cacheverzeichnisses führt zu einem L1- Mißerfolg, und 'dieselbe Speicherposition' ist als eine 64-Byte- Grenze im Speicher definiert (die Größe einer L1-Cachezeile) Die Adressen der Einträge in der L1-Speicherwarteschlange werden mit den Abrufadressen auf der 64-Byte-Grenze hinsichtlich übereinstimmender Adressen für ausstehende Speichervorgänge verglichen. "Fetch Request Address" stellt eine Übereinstimmung in der L1-Speicherwarteschlange (einen anstehenden Speicherungskonflikt) fest. In allen Konfigurationen für sowohl L1I- als auch L1D-Caches wird die Abrufanforderung. anstehend gehalten, bis der eine Konfliktbedingung aufweisende Speichervorgang im L2-Cache abgeschlossen ist. Da der Abruf einen oder sogar mehrere anstehende Speicherungskonflikte feststellen kann, wird er solange anstehend gehalten, bis alle Konflikte beseitigt sind. Infolge des anstehenden Speicherungskonflikts wird die Abrufanforderung nicht zur L2-Steuerung übertragen. Mit der Rücklieferung des "Instruction Complete" für den neuesten anstehenden Speicherungskonflikt wird der Eintrag aus der Speicherwarteschlange ausgegliedert, und die Abrufanforderung darf wieder auf den L1- Cache zugreifen. Die Wiederholung der Abrufanforderung erkennt einen L1-Cache-Mißerfolg, und die Anforderung wird zur L2-Steuerung übertragen, da eine L1-Cäche-Seiteneinlagerung erforderlich ist. Diese Implementierung verwendet ein L1I-Cache-Konzept, bei dem ein Zugriff des Prozessors auf das L1I-Cacheverzeichnis von dem Zyklus an, in dem die Entwertungsanforderüng in der L1I-Cachesteuerung empfangen wurde, bis zur tatsächlichen Aktualisierung des L1I-Cacheverzeichnisses aufgrund der Anforderung einer lokalen Entwertung oder Quer-Entwertung unzulässig ist. Dies führt dazu, daß der L1I-Cache je nach der Zahl der L1I-Cachezeilen, die momentan entwertet werden (null bzw. zwei) vier bis sechs Zyklen lang nicht verfügbar ist. Für den L1D-Cache ist der Prozessorzugriff auf das Cacheverzeichnis des L1D-Cache von dem Zyklus an, nachdem die Entwertungsanforderung in der L1D-Cachesteuerung empfangen wurde, bis zur tatsächlichen Aktualisierung des L1D-Cacheverzeichnisses aufgrund der Anforderung einer lokalen Entwertung oder Quer-Entwertung unzulässig. Dies führt dazu, daß der L1I-Cache je nach der Zahl der L1D-Cachezeilen, die momentan entwertet werden (null bzw. zwei) drei bis fünf Zyklen lang nicht verfügbar ist.
  • 2.3.2 Speicherkonsistenz, Beispiel 1
  • Bei diesem Beispiel für die Speicherkonsistenz sind zwei Prozessoren beteiligt. Die Prozessoren "mit den Bezeichnungen CPO und CPL) führen die folgenden Anweisungsströme mit den angegebenen Anfangsbedingungen aus: CP0-Anweisungsstrom CP1-Anweisungsstrom Anfangsbedingungen: Speicher:
  • Jeder Prozessor führt eine Anweisungssequenz aus, die einen anstehenden Speicherungskonflikt enthält. Jeder Prozessor versucht anschließend, die Speicherposition mit dem anstehenden Speicherungskonflikt des anderen Prozessors abzurufen. Der Fehlerstatus, der sich aus der Ausführung beider Sequenzen ergibt, ist in beiden Prozessoren GR3=X'00000000'. Es sind auch beliebige andere Kombinationen von Ergebnissen gültig. Es ist zu beachten, daß die Auswahl des Prozessors, der seinen Speichervorgang zuerst durchführt, für das Architekturbeispiel irrelevant ist. Wichtig ist lediglich, daß dann, wenn ein Prozessor eine Anderung an einer Speicherposition wahrnimmt, diese Anderung für alle Prozessoren innerhalb der Konfigupation sichtbar ist. Auf der Zeitachse speichert zuerst CP0 in den L2-Cache" dann CP1. Infolgedessen wird zuerst CP0 von seinem anstehenden Speicherungskonflikt freigegeben und lädt GR3 mit X'00000000'. CPL muß aufgrund der Quer-Entwertung der A enthaltenden L1-Zeile durch CPO eine Seiteneinlagerung aus dem L2-Cache durchführen und lädt GR3 mit x'00000000'.
  • 2.3.3 Speicherkonsistenz, Beispiel 2
  • Bei diesem Beispiel für Speicherkonsistenz sind zwei Prozessoren beteiligt. Die Prozessoren (mit den Bezeichnungen CP0 und CP1) führen die folgenden Anweisungsströme mit den angegebenen Anfangsbedingungen aus: CP0-Anweisungsstrom CP1-Anweisungsstrom Anfangsbedingungen: Speicher:
  • Jeder Prozessor führt eine Anweisungssequenz aus, die einen anstehenden Speicherungskonflikt für ein gemeinsames 8-Byte-Speicherfeld enthält. Jeder Prozessor versucht anschließend, eine eindeutige Speicherposition abzurufen, um sie mit der gemeinsam genutzten Speicherposition logisch durch UND zu verknüpfen. Der Fehlerstatus, der sich aus der Ausführung beider Sequenzen ergibt, tritt ein, wenn die logische UND-Operation bei beiden Prozessoren X'00000000' ergibt. Jede andere Kombination von Ergebnissen ist gültig. Man sollte beachten, daß die Wahl, welcher Prozessor seinen Speichervorgang zuerst durchführt, für das Ar- chitekturbeispiel irrelevant ist. Wichtig ist lediglich, daß dann, wenn ein Prozessor eine Änderung an einer Stelle im Speicher wahrnimmt, alle Prozessoren innerhalb der Konfiguration die Anderung wahrnehmen. Auf der Zeitachs&speichert zunächst CP0 in den L2-Cache, anschließend CP1. Infolgedessen wird CP0 von seinem anstehenden Speicherungskonflikt zuerst freigegeben und lädt GR1 mit X'FF000000'.Das Ergebnis der UND-Verknüpfung mit MASKO ist X'00000000'. CP1 muß aufgrund der CP0-Quer-Entwertung der L1-Zeile, die A enthält, den Inhalt aus dem L2-Cache abrufen. CPL lädt GRL mit X'FFFF0000'. Das Ergebnis der UND-Verknüpfung mit Masklist X'FF000000'.
  • 2.4 Speicherbefehle für den Prozessor 2.4.1 Alter L2 Cache Request Priority (Anforderungspriorität für L2-Cache ändern)
  • Anwendung: Leistungsoptimierung. Mögliche Verwendung bei Anweisungen, die eine Modifikation nicht-sequentieller Speicherpositionen erfordern, die das Fassungsvermögen der Struktur der aktuellen Speicherwarteschlange überschreiten (der L2-Öache kann exklusiv für einen Prozessor verwaltet werden). Der Befehl ist innerhalb des Prozessors synchronisiert, um zu gewährleisten, daß der Speicherbefehl abgeschlossen wird, bevor ein weiterer Speicherbefehl oder Speicherschlüsselbefehl ausgegeben wird. Der Abruf aus dem Prozessorspeicher und die Speicheranforderungen können mit der Ausführung dieses Speicherbefehls überlappt werden. Durch Mikroprogramme muß gewährleistet werden, daß dann, wenn sich ein bestimmter Prozessor innerhalb der Konfiguration im Ruhezustand befindet, dieser Prozessor in einem Status verbleibt, in dem er keinerlei Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingungen mit Anzeige eines nicht behebbaren Speicherfehlers aufweist. Wenn dies nicht beachtet wird, kann sich eine Aussperr-Bedingung ergeben, da der Speicherbefehl "Alter L2 Cache Request Priority" nicht abgeschlossen werden kann, wenn er versucht, Anforderüngen von einem anderen Prozessor zu blockieren, falls sich der andere Prozessor im Ruhezustand befindet und eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers aufweist.
  • Beschreibung des Speicherbefehls
  • Ein Mikroprogramm liefert den Befehl und eine absolute Adresse. Nur die Bits 18:22 der absoluten Adresse sind entscheidend. Die Adreßbits 18 und 19 beziehen sich auf Speicheranforderungen des anderen Prozessors; die Adreßbits 20:22 gelten für die Prioritätssteuerung für den anfordernden Prozessor. Wenn Adreßbit 18 '0'b ist, wird keine Anderung der Priorität des anderen Prozessors angefordert, und das Adreßbit 19 wird ignoriert. Falls Adreßbit 18 '1'b ist, werden Anforderungen des anderen Prozessors deaktiviert, falls Adreßbit 19 '0'b ist; wenn Adreßbit 19 gleich '1'b ist, aktiviert dies die Anforderungen der anderen Prozessoren. Man beachte, daß Abschlußanforderungen für die Seiteneinlagerung für andere Prozessoren nicht blockiert werden können. Die gültigen Bitmuster für die Prioritätsteuerung des lokalen Prozessors bilden eine Teilmenge der verfügbaren Muster. Die Regeln sind relativ einfach. Es stehen drei Quellen für Anforderungen zur Verfügung: Befehlspuffer (Speicherbefehle, Speicherschlüsselbefehle, Abrufanforderungen für den Prozessorspeicher, Abrufanforderungen für Zeilen des Vektorspeichers); L2- Speicherwarteschlange (Speicheranforderungen für den Prozessorspeicher, Speicheranforderungen für den Vektorspeicher, Abrufanforderungen für ein Element des Vektorspeichers); Abschlußanforderungen für die Seiteneinlagerung. Die Prioritätsschaltung unterstützt alle möglichen Permutationen. Man beachte, daß keine Anforderungsquelle durch diesen Mechanismus von einer Berücksichtigung der Priorität ausgeschlossen werden kann. Die Adreßbits werden verwendet, um die Prioritätssteuerung des lokalen Prozessors zu laden, wie in der folgenden Tabelle dargestellt. Decodierung von Bit 20:22 der aktuellen Adresse Prioritätsstufe cb - Quelle für Anforderung des Befehlspuffers (Command Buffer) ic - Quelle für Anforderung von "Inpage Complete" nc - keine Änderung der gegenwärtigen Anforderungspriorität (No Change) sq - Quelle für Anforderung einer Speicherwarteschlange (Store Queue)
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl und eine absolute Adresse für L1 aus. L1 überträgt. die absolute Adresse und einen Speicherbefehl "Pass Address" zur L2-Steuerung und den eigentlichen Speicherbefehl zur Speichersteuerung. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den Primärbefehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Address Valid" zu Speichersteuerung und Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt den eigentlichen Speicherbefehl und wartet ein Signal der L2-Steuerung ab, daß die Adresse bearbeitet wurde, bevor der Befehl in die Priorität eingetragen wird. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Adreßpuffern für den Speicherbefehl. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses von der L2-Steuerung. Die Speichersteuerung weist die erforderlichen Ressourcen zu und aktiviert den Speicherbefehl, wenn er von der Priorität ausgewählt wird. Der Befehl wird zur L2-Steuerung übertragen, und Adresse/Schlüssel wird angewiesen, die absolute Adresse zur L2- Steuerung zu übertragen. Die L2-Steuerung empfängt den Befehl von der Speichersteuerung und verwendet nach der Auswahl durch die Bearbeitungspriorität des L2-Cache die absolute Adresse von Adresse/Schlüssel. Die L2-Steuerung überträgt keine Informationen zur L2-Cachesteuerung und "End-of-Operation" zur Speichersteuerung. Die Prioritätskontrolle für den anfordernden Prozessor wird sofort aktualisiert, und zwar unabhängig vom aktuellen Status der betroffenen Anforderungsquellen. Aus der Decodierung der Adreßbits 18 und 19 ergeben sich drei mögliche Fälle.
  • Fall 1
  • Falls Adreßbit 18 '0'b ist, sind Anforderungen von den anderen Prozessoren nicht betroffen. Zu Adresse/Schlüssel werden keine Informationen übertragen. Diese Befehldecodierung führt stets dazu, daß der Speichersteuerung der Status "abgeschlossen" gemeldet wird.
  • Fall 2
  • Falls die Adreßbits 18,19 gleich '10'b sind, werden nachfolgende Anforderungen anderer Prozessoren aus den Befehlspuffern und Speicherwarteschlangen, aber nicht Anforderungen von "Inpage Complete", daran gehindert, in die Bearbeitungspriorität des L2- Cache eingetragen zu werden. Jede Anforderungsquelle der anderen Prozessoren (Speicherwarteschlange und Befehlspuffer) wird deaktiviert, sofern dieser Prozessor keine Sperr-, Zeilenhaltoder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers aufweist, die einen Speicherfehler liefert. Falls er eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers aufweist, verhindert dies lediglich, daß die Anforderungsquellen des haltenden Prozessors deaktiviert werden. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Falls ein Sperrkonflikt mit einem der anderen Prozessören eintritt, kann die L2-Steuerung den Befehl nicht abschließen und liefert den Sperrstatus zur Speichersteuerung zurück, nachdem sie den Speicherbefehl teilweise beendet hat. Ohne Sperrkonflikte des anderen Prozessors schließt die L2-Steuerung den Befehl ab und antwortet mit dem Status "abgeschlossen" für die Speichersteuerung.
  • Fall 3
  • Falls die Adreßbits 18,19 gleich '11'b sind, werden nachfolgende Anforderungen aus dem Befehlspuffer und der Speicherwarteschlange der anderen Prozessoren aktiviert. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Diese Befehlsdecodierung führt stets dazu, daß der Speichersteuerung deüstatus "abgeschlossen" gemeldet wird.
  • Alle Fälle
  • Nachdem die Speichersteuerung von der L2-Steuerung den Befehlsstatus empfangen hat, antwortet sie dem anfordernden Prozessor mit "End-of-Operation", falls die L2-Steuerung den Status "abgeschlossen" meldet. Andernfalls wird der Speicherbefehl zeitweilig ausgesetzt, so daß Zeit zur Behebung des Sperrkonflikts zur Verfügung steht, und anschließend erneut in die Priorität der Speichersteuerung eingetragen, um zu versuchen, den Befehl vollständig auszuführen.
  • 2.4.2 Alter Memory Control Request Priority (Anforderungs- priorität für Speichersteuerung ändern)
  • Anwendung: Funktionen für Adreßübereinstimmungen und Fehlersuche im Speichersystem. Der Befehl ist innerhalb des Prozessors synchronisiert, um zu gewährleisten, daß der Speicherbefehl äbgeschlossen ist, bevor ein weiterer Speicherbefehl oder Speicherschlüsselbefehl eingegeben wird. Abruf- und Speicheranforderungen für den Prozessorspeicher können sich mit der Ausführung dieses Speicherbefehls überlappen.
  • Beschreibung des Speicherbefehls
  • Ein Mikroprogramm liefert den Befehl und eine absolute Adresse. Nur die Bits 19 und 24 der absoluten Adresse sind signifikant. Adreßbit 19 bezieht sich auf Speicheranforderungen für andere Prozessoren; Adreßbit 24 bezieht sich auf alle Kanal-Speicheranforderungen. Der Bitwert '0'b deaktiviert die Anforderungen für die entsprechende Quelle; der Bitwert '1'b aktiviert die Anforderungen für die entsprechende Quelle. Wenn der Speicherbefehl ausgeführt wird, hat er keine Wirkung für etwaige momentan aktive Anforderungen im Speichersystem; sie werden auf normale Weise abgeschlossen. Wenn eine bestimmte Anforderungsquelle deaktiviert wird, soll der Befehl die Aktivierung etwaiger weiterer Speicheranforderungen für den Prozessorspeicher (L3) und Erweiterungsspeicher (L4) unterbinden. Die Warteschlange für Speicheranforderungen ist insofern betroffen, als die Aktivierung weiterer Anforderungen von dieser Quelle unterbunden wird, die Speichersteuerung kann jedoch Anforderungen von dieser Quelle annehmen, bis ihre Warteschlangen gefüllt sind. Wenn eine bestimmte Anforderungsquelle aktiviert ist, soll der Befehl der Anforderungsquelle wieder Zugriff auf den L3- und L4-Speicheranschluß ermöglichen. Man beachte, daß der anfordernde Prozessor nicht in der Lage ist, seine eigene Anforderungspriorität in der Speichersteuerung zu ändern. Falls die interne Einrichtung des Speichersystems (regelmäßige Entleerung des L2-Cache) für den Einsatz in der Konfiguration aktiviert ist, wird sie deaktiviert, falls eine der Anforderungsquellen in der Speichersteuerung deaktiviert ist, und nur dann aktiviert, wenn beide Anforderungsquellen (anderer Prozessor und Kanäle) aktiviert sind. Falls Anforderungen des anderen Prozessors deaktiviert werden sollen, muß vor der Ausgabe dieses Befehls ein Mikroprogramm gewährleisten; daß sich die anderen Prozessoren in der Konfiguration in einem Zustand befinden, in dem sie keine Speicherpuffer-, Sperr-, Zeilenhaltbedingungen, anstehende Seiteneinlagerungs-Anforderungen oder Seiteneinlagerungs-Einfrierbedingungen mit Anzeige eines nicht behebbaren Speicherfehlers aufweisen. Wenn dies nicht beachtet wird, kann sich eine Aussperr-Bedingüng ergeben, da nachfolgende Speicherreferenzen dürch den Prozessor in der Konfiguration aktiv gelassen werden. Es sind keine besonderen Maßnahmen für Kanal-Speicheranforderungen erforderlich, ausgenommen die Vorbereitung für einen möglichen Kanalüberlauf.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl und eine absolute Adresse an L1 aus. L1 überträgt die absolute Adresse und einen Speicherbefehl "Pass Address" zur L2-Steuerung sowie den eigentlichen Speicherbefehl zur Speichersteuerung. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den Primärbefehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Command Valid" zur Speichersteuerung und zu Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die L2-Steuerung übergibt die Bits 19 und 24 der absoluten Adresse als Bestandteil der Speicheranschlußkennung zur Speichersteuerung. Die Speichersteuerung empfängt den eigentlichen Speicherbefehl und erwartet von der L2-Steuerung ein Signal, daß die Adresse verarbeitet wurde, bevor sie den Befehl ausführt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Adreßpuffern für Speicherbefehle. Die L2-Cächesteuerung empfängt keinen Befehl von der L2- Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt von der L2-Steuerung den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses, die die beiden Adreßbits enthält, die erforderlich sind, um die Operation abzuschließen. Die Speichersteuerung führt den Befehl sofort aus, da keine Ressourcen erforderlich sind, um die Operation abzuschließen. Die Speichersteuerung setzt unter Verwendung der Adreßbits 18 und 19 ihre Zwischenspeicher für die Prioritätssteuerung entsprechend. Falls der Befehl es erfordert, daß eine Anforderungsquelle deaktiviert wird, dürfen etwaige Befehle, die für diese Quelle momentan aktiv sind, auf normale Weise abgeschlossen werden; weitere Anforderungen von dieser Quelle werden aus der Prioritätsauswahl entfernt. Wenn der Befehl eine Anforderungsquelle aktiviert hatte, können etwaige in Warteschlangen eingegliederte Anforderungen erneut in die Prioritätsauswahl eingetragen werden. Die Speichersteuerung antwortet dem anfordernden Prozessor mit "Endof-Operation", während die Gültigkeit der Quellen für die Speicheranforderung geändert wird. Der Abschluß etwaiger momentan aktiver Speicheroperationen muß nicht abgewartet werden, da die normale Ressourcenpriorität etwaige Zugriffe auf die angeforderten Ressourcen serialisiert. 2.4.3 Enable Memory Error Correction Bypass (Umgehung der Speicherfehlerkorrektur aktivieren)
  • Anwendung: Diagnosetests von Prozessorspeicher und Erweiterungsspeicher. Da der Befehl es ermöglicht, die normale Anwendung der Fehlerkorrektur in dem angegebenen Speicheranschluß zu umgehen, müssen die normalen Systemoperationen an dem Speicheranschluß für die Dauer der Diagnosetests ausgesetzt werden. Der Befehl ist innerhalb des Prozessors synchronisiert, um den Abschluß des Speicherbefehls zu gewährleisten, bevor die Speicheraktivität innerhalb des anfordernden Prozessors beginnt.
  • Beschreibung des Speicherbefehls
  • Die Ausführung des Befehls ermöglicht es, die Fehlerkorrekturschaltung zu umgehen, die innerhalb des Speicheranschlusses eingesetzt wird, der durch die mit dem Speicherbefehl gelieferte Adresse gewählt wird. In der gelieferten Adresse ist nur Bit 24 der absoluten Adresse signifikant. Dieser Modus verleiht direkten Zugriff auf den Speicherinhalt unter Umgehung der normalen Einzelbit-Fehlerkorrektur. Wenn Abrufbefehle auf den Speicheranschluß zugreifen, werden die Daten aus dem Speicher gelesen, und die zugehörigen Prüfbits werden auf die normale Weise in die Prüfbit-Register geladen. Die dem Abruf-Zugriff zugeordnete Einzelbit-Fehlerkorrektur wird umgangen; die Daten werden auf dem Speicherbus unkorrigiert, aber mit fehlerloser Parität übertragen. Wenn Speicherbefehle auf den Speicheranschluß zugreifen, werden die Daten in den Speicher geschrieben, wobei Prüfbits aus dem Prüfbitregister verwendet werden, das durch einen vorherigen Speicherzugriff geladen wurde, nicht aber Prüfbits, die aus den gelieferten Daten erzeugt wurden.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl und eine absolute Adresse an L1 aus. L1 überträgt die absolute Adresse und einen Speicherbefehl "Pass Address" zur L2-Steuerung und den eigentlichen Speicherbefehl zur Speichersteuerung. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den Primärbefehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Command Valid" zur Speichersteuerung und zu Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt den eigentlichen Speicherbefehl und erwartet von der L2-Steuerung ein Signal, daß die Adresse verarbeitet wurde, bevor wie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Adreßpuffern für den Speicherbefehl. Die L2-Cachesteuerung empfängt keinen Befehl von der L2- Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speicheranforderung empfängt von der L2-Steuerung den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses, die Bit 24 der absoluten Adresse enthält. Die Speichersteuerung weist die erforderlichen Ressourcen zu und aktiviert den Speicherbefehl, wenn er von der Priorität ausgewählt wird. Der Befehl wird zur BSU-Steuerung übertragen, und Adresse/Schlüssel wird angewiesen, die physische Adresse zur BSU- Steuerung zu übertragen. Die BSU-Steuerung überträgt den Befehl und die physische Adresse zum L2-Datenstrom, damit sie zum angegebenen Speicheranschluß übertragen werden, und überträgt anschließend "End-of-Operation" zur Speichersteuerung. Die Speichersteuerungsmodule im gewählten Speicheranschluß setzen ihre jeweilige Steuerungsinformationen für die Umgehung der Fehlerkorrektur so, daß direkter Zugriff auf den Speicherinhalt zulässig ist und die Fehlerkorrektur vermieden wird. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den Speicheranschluß frei und überträgt "End-of- Operation" zu dem anfordernden Prozessor.
  • 2.4.4 Flush Store Queue (Speicherwarteschlange leeren)
  • Anwendungen: Wird bei S/370-Anweisungen verwendet, die eine Serialisierung erfordern, bevor die Ausführung der aktuellen Anweisung beginnt. Wird außerhalb der Anweisungsverarbeitung verwendet, bevor eine "Fetch-and-Lock"-Speicheranforderung im Rahmen einer synchronisierten Aktualisierung ausgegeben wird. Dieser Speicherbefehl ändert nicht die Priorität, mit der Speicheranforderungen im L2-Cache für den anfordernden Prozessor bearbeitet werden.
  • Beschreibung des Speicherbefehls
  • Ein Mikroprogramm liefert nur den Befehl. L1 bearbeitet die Anforderung zum Entleeren des Speichers selbst, indem es die "Instruction Complete"-Signale vom L2-Cache empfängt und die abgeschlossenen Speicheranforderungen aus der L1-Speicherwarteschlange entfernt. Bis die L1-Speicherwarteschlange leer ist, erscheint L1 etwaigen Anforderungen als belegt. Sobald die Speicherwarteschlange leer ist, läßt L1 die normale Aktivität wieder anlaufen. Dieser Befehl wird nicht zur L2-Cachesteuerung übertragen.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl an til aus. L1 überträgt keine Informationen zur L2-Steuerung, da er den Befehl vollständig verarbeitet. L1 setzt die Ausführung von Speicheranforderungen in der Prozessor-Pipeline aus, bis alle vorherigen Speicheranforderungen im L2-Cache abgeschlossen sind und dies durch eine Bedingung "L1-Speicherwarteschlange leer" angegeben wird.
  • 2.4.5 Force L2 Cache Line Replacement Algorithm (Algorithmus zum Ersetzen der L2-Cachezeile erzwingen)
  • Anwendung: Diagnosetests des Speichersystems. Der Befehl ist innerhalb des Prozessors synchronisiert, um zu gewährleisten, daß der Speicherbefehl abgeschlossen wird, bevor die Speicheraktivität innerhalb des anfordernden Prozessors beginnt. Ein Mikroprogramm muß gewährleisten, daß eine angeforderte L2-Speichereinlagerung nicht für einen fehlerhaften L2-Cache-Eintrag erzwungen wird, wenn ein fester Ersetzungs-Cachesatz verwendet wird, falls in dem festgelegten L2-Cacheeintrag gültige Daten gewünscht werden.
  • Beschreibung des Speicherbefehls
  • Ein Mikroprogramm liefert den Befehl und eine absolute Adresse. Nur die Bits 25:28 der absoluten Adresse sind signifikant. Der Befehl wird verwendet, um den Algorithmus zum Ersetzen der L2- Cachezeile zu zwingen, einen einzelnen Cachesatz auszuwählen, bis er durch einen anderen derartigen Speicherbefehl geändert wird, oder die Verwendung des normalen Algorithmus zum Ersetzen der L2-Cachezeile wiederauf zunehmen. Die gültigen Bitmuster zum Erzwingen des Ersetzungs-Cachesatzes bilden eine Teilmenge der verfügbaren Muster. Ein nur aus Nullen bestehendes Muster ('0000'b in den Bits 25:28 der absoluten Adresse) wird als Befehl interpretiert, die Verwendung des normalen Cache-Ersetzungsalgorithmus wiederaufzunehmen. '0100'b, '0010'b und '0001'b werden so interpretiert, daß erzwungen wird, den Ersetzungs-Cachesatz jeweils auf 0, 1 oder 2 zu setzen; '1100'b, '1010'b und '1001'b werden so interpretiert, daß erzwungen wird, den Ersetzungs-Cachesatz jeweils auf 3, 4 oder 5 zu setzen. Alle anderen Muster sind ungültig und liefern, wenn sie verwendet werden, nicht vorhersehbare Ergebnisse.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl und eine absolute Adresse für L1 aus. L1 überträgt die absolute Adresse und einen Speicherbefehl "Pass Address" zur L2-Steuerung und den eigentlichen Speicherbefehl zur Speichersteuerung. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den Primärbefehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Command Valid" zur Speichersteuerung und zu Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichers teuerung empfängt den eigentlichen Speicherbefehl und erwartet vön der L2-Steuerung ein Signal, daß die Adresse verarbeitet wurde, bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Adreßpuffern für Speicherbefehle. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses von der L2-Steuerung. Die Speichersteuerung weist die erforderlichen Ressourcen zu und aktiviert den Speicherbefehl, wenn er von der Priorität ausgewählt wird. Der Befehl wird zur L2-Steuerung übertragen, und Adresse/Schlüssel wird angewiesen, die absolute Adresse. zur L2- Steuerung zu übertragen. Die L2-Steuerung empfängt den Befehl der Speichersteuerung und verwendet nach der Auswahl durch die Bearbeitungspriorität des L2-Cache die absolute Adresse von Adresse/Schlüssel. Wenn die Adreßbits 25:28 kein reines Null- Muster bilden, werden sie verwendet, um den normalen Ersetzungsalgorithmus für die L2-Cachezeile außer Kraft zu setzen und damit zu erzwingen, daß die Auswahl zu einem bestimmten Cachesatz geleitet wird. Falls die Adreßbits 25:28 gleich '0000'b sind, wird wieder der normale Ersetzungsalgorithmus für die L2-Cachezeile gewählt. Die L2-Steuerung antwortet der Speichersteuerung mit "End-of-Operation", nachdem sie die Operation eingeleitet hat. Nachdem die Speichersteuerung den Befehlsstatus von der L2- Steuerung empfangen hat, antwortet sie dem anfordernden Prozessor mit "End-of-Operation".
  • 2.4.6 Invalidate L1 Cache Line or Congruence (L1-Cachezeile oder Kongruenz entwerten)
  • Anwendungen: Löschen von Teilergebnissen aus dem L1-Cache während der Bearbeitungsroutine für Seitenfehler. Wiederherstellung nach Fehlern, die die Bedingung 'Processor Stopped' (Prozessor angehalten) verursachen. Für die Bearbeitung von Seitenfehlern beschafft das Mikroprogramm absolute Adressen aus der L1-Speicherwarteschlange für die Anweisung, die zum Zeitpunkt des TLB- Mißerfolgs und des nachfolgenden Seitenfehlers ausgeführt wurde. Jede dieser L1-Cachezeilen muß entwertet werden, bevor der Prozessor neu gestartet wird, um die Datenintegrität innerhalb des Systems aufrechtzuerhalten. Die zugeordneten L1-Statuseinträge innerhalb der L2-Steuerfunktion müssen ebenfalls gelöscht werden. Für die Wiederherstellung nach Fehlern wurde der Prozessortakt angehalten; dies bringt mit sich, daß die L1-Cachematrizen des Prozessors und die zugeordneten L1-Statusmatrizen nicht die aktuelle Stufe des Speicherinhalts wiedergeben. Die L1-Cache- Matrizen werden mit Hilfe von R-Map-Zugriffen gelöscht. Die L1- Statusmatrizen werden mit Hilfe der Befehle "Invalidate L1 Cache Congruence" gelöscht. Der Befehl ist innerhalb des Prozessors synchronisiert, um zu gewährleisten, daß der Speicherbefehl abgeschlossen ist, bevor ein weiterer Speicherbefeht oder Speicherschlüsselbefeht ausgegeben wird. Abruf- und Speicheranforderungen für den Prozessorspeicher können mit der Ausführung dieses Speicherbefehls überlappt werden.
  • Beschreibung des Speicherbefehls
  • Bit 26 der absoluten Adresse wird verwendet, um entweder "Invalidate L1 Cache Line" (Bit 26 gleich '0'b) oder "Invalidate L1 Cache Congruence" (Bit 26 gleich '1'b) zu wählen. Die Bits 4:25 der absoluten Adresse sind signifikant, um die L1-Cachezeile zu entwerten; die Bits 20:25 der absoluten Adresse sind signifikant, um die L1-Cachekongruenz zu entwerten. Für "Invalidate L1 Cache Line" entwertet L1 die richtigen L1-Cachezeilen, falls diese im anfordernden Prozessor noch vorhanden sind, indem eine L1-Verzeichnissuche unter Verwendung der angegebenen absoluten Adresse durchgeführt wird. L1-Anweisungs- und Operandencache führen die von dem Befehl "Invalidate L1 Cache Line" angeforderte Operation durch. Die L2-Steuerung löscht die L1-Statuseinträge für den L1-Anweisungs- und Operandencache innerhalb des anfordernden Prozessors, falls sie noch vorhanden sind. Es wird keine Entwertungsanforderung von der L2-Steuerung zu L1 übertragen, da der Befehl L1-Einträge so entwertet, wie sie zur L2- Steuerung übertragen werden. Für "Invalidate L1 Cache Congruence" entwertet L1 die richtigen L1-Cachezeilen (falls sie noch im anfordernden Prozessor vorhanden sind), indem eine L1-Verzeichnissuche unter Verwendung der angegebenen absoluten Adresse durchgeführt wird. L1-Anweisungs- und Operandencache führen die vom Befehl "Invalidate L1 Cache Line" angeforderte Operation durch. Dies ist eine redundante Maßnahme, da beim Neuversuch der Inhalt des L1-Cache bereits gelöscht wurde. Die L2-Steuerung löscht die L1-Statuseinträge für den L1-Anweisungs- und Operandencache innerhalb des anfordernden Prozessors für die angegebene L1-Kongruenz. Alle sechs Einträge in jeder Statusmatrix werden in den ungültigen Status versetzt. Es wird keine Entwertungsanforderung von der L2-Steuerung zu L1 übertragen, da die Einträge im L1-Cache durch vorausgegangene Neuversuch-Aktionen gelöscht wurden.
  • Ausführung des Speicherbefehls
  • Ein Mikroproqramm gibt den Befehl und eine absolute Adresse an L1 aus. L1 überträgt die absolute Adresse und den Speicherbefehl zur L2-Steuerung. Es werden keine Daten auf dem Datenbus übertragen. L1 verwendet die Informationen, um die betreffenden L1- Cache-Einträge in den Operanden- und Anweisungscaches zu entwerten. Man beachte, daß, falls ein anderer Prozessor aufgrund einer Speicheranforderung die Quer-Entwertung derselben L1-Cachezeile angefordert hat, die Möglichkeit besteht, daß sich ein L1-Cache-Mißerfolg ergibt, falls die betreffende L2-Cachezeile im L2-Cache ersetzt wurde oder wenn die vorgesehene Verwendung "Invalidate L1 Cache Congruence" ist. Die L2-Steuerung empfängt den Primärbefeht, Speicherbefeht und die absolute Adresse, gefolgt vom eigentlichen Speicherbefehl. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird die absolute Adresse verwendet, um das L2-Verzeichnis zu dürchsuchen. Etwaige aktive Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingungen mit Anzeige eines nicht behebbaren Speicherfehlers für die adressierte L2-Cachezeile werden ignoriert, da nur die L1-Statusmatrizen infolge dieses Speicherbefehls modifiziert werden können. Es werden keine Informationen zur L2-Cachesteuerung übertragen, und zur Speichersteuerung wird "End-of-Operation" übertragen. Die höherwertigen Bits der Adresse werden als Komparand mit den Ausgabedaten des L2-Cacheverzeichnisses verwendet. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von zwei möglichen Bedingungen. Die Ergebnisse der Durchsuchung des L2-Cacheverzeichnisses gelten nur für den Befehl "Invalidate L1 Cache Line", nicht für "Invatidate L1 Cache Congruence". Entwerte L1-Cache-Zeile (AA26='0'6)
  • Fall 1
  • Es ergibt sich ein L2-Cache-Mißerfolg, der anzeigt, daß die entsprechenden L1-Statuseinträge bereits gelöscht wurden. Weder zu Adresse/Schlüssel noch zur L2-Cachesteuerung werden Informationen übertragen. Die L2-Steuerung antwortet mit der Statusmeldung "Command Completed" für die Speichersteuerung. Sobald die Speichersteuerung den Befehlsstatus von der L2-Steuerung empfangen hat, antwortet sie dem anfordernden Prozessor mit "End-of-Operation".
  • Fall 2
  • Es ergibt sich ein L2-Treffer, wodurch der L2-Cachesatz bezeichnet ist. Weder zu Adresse/Schlüssel noch zur L2-Cachesteuerung werden Informationen übertragen. Die L2-Steuerung antwortet mit der Statusmeldung "Command completed" für die Speichersteuerung. Beide L1-Statusmatrizen des anfordernden Prozessors werden nach Kopien der L1-Cachezeile durchsucht. Die L1-Statusmatrizen des anderen Prozessors sind von der Anforderung nicht betroffen. Die niederwertige L2-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als Komparand mit den Ausgabedaten der L1-Statusmatrix verwendet. Falls sich Übereinstimmungen ergeben, werden die entsprechenden Einträge gelöscht. Für die Entwertung des L1-Cache ist keine Adreßbusanforderung erforderlich. Sobald die Speichersteuerung den Befehlsstatus von der L2-Steuerung empfangen hat, antwortet sie dem anfordernden Prozessor mit "End-of-Operation".
  • Entwerte L1-Cache-Zeile (AA26= '0'b').
  • Es ergibt sich ein L2-Cache-Treffer oder -Mißerfolg. Weder zu Adresse/Schlüssel noch zur L2-Cachesteuerung werden Informationen übertragen. Die L2-Steuerung antwortet mit dem Status "Command Completed" für die Speichersteuerung. Für beide L1-Statusmatrizeri des anfordernden Prozessors werden alle Einträge innerhalb der angegebenen L1-Cachekongruenz auf den ungültigen Status zurückgesetzt. Die L1-Statusmatrizen der anderen Prozessoren sind von der Anforderung nicht betroffen. Es ist keine Adreßbus-Anforderung zur Entwertung des L1-Cache erforderlich. Sobald die Speichersteuerung den Befehlsstatus von der L2-Steuerung empfangen hat, antwortet sie dem anfordernden Prozessor mit "End-of-Operation".
  • 2.4.7 Invalidate L2 Cache Entry (L2-Cacheeintrag entwerten)
  • Anwendung: Diagnosetests des Speichersystems. Die Datenintegrität innerhalb der Speicherhierarchie ist für die Umgebung nicht relevant, in der dieser Speicherbefehl verwendet wird. Der Befehl ist innerhalb des Prozessors synchronisiert, um die Aktivierung des Speicherbefehls zu gewährleisten, bevor ein anderer Speicherbefeht oder Speicherschlüsselbefehl ausgegeben wird. Abruf- und Speicheranforderungen für den Prozessorspeicher können mit der Ausführung dieses Speicherbefehls übertappt werden. Das Mikroprogramm muß gewährleisten, daß ein bestimmter Prozessor, falls er sich innerhalb der Konfiguration im Ruhezustand befindet, in einem Status belassen wird, in dem er keinerlei Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers aufweist. Wenn dies nicht beachtet wird, kann sich eine Aussperr-Bedingung ergeben, da der Speicher-Entwertungsbefehl nicht abgeschlossen werden kann, wenn ein im Ruhezustand befindlicher Prozessor in der L2-Cachezeile innerhalb des angeforderten L2-Cacheeintrags eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers auf weist.
  • Beschreibung des Speicherbefehls
  • Ein Mikroprogramm liefert eine L2-Cachekongruenz (Bits 16:24 der absoluten Adresse) an den entsprechenden Bit-Positionen des Speicher-Adreßbusses. Der L2-Cachesatz wird in die Adreßbits 25:27 eingefügt und wie folgt interpretiert:
  • '000'b ist Satz 0,
  • '001'b ist Satz 1,
  • '010'b ist Satz 2,
  • '100'b ist Satz 3,
  • '101'b ist Satz 4,
  • '110'b ist Satz 5.
  • Die restlichen Bitmuster sind ungültig. Die Adresse wird von L1 als absolute Adresse aufgefaßt. Der L2-Cacheeintrag, der durch die L2-Cachekongruenz und den Satz angegeben wird, die vom Mikroprogramm geliefert werden, wird gemeinsam mit dem entsprechenden Eintrag im L2-Miniverzeichnis entwertet. Unabhängig vom Status der L2-Cachezeite innerhalb des angeforderten Eintrags wird die Zeile niemals in den L3-Speicher entleert. Die L1-Statusmatrizen werden ebenfalls durchsucht, und etwaige Kopien der L2-Cachezeile, die auf der Stufe des L1-Cache bestehen, werden gelöscht, und die betreffenden L1-Statuseinträge werden gelöscht.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl und eine absolute Adresse (die L2-Cachekongruenz und den Satz) an L1 aus. L1 überträgt die absolute Adresse und einen Speicherbefehl "Pass Address" zur L2- Steuerung und den eigentlichen Speicherbefeht zur Speichersteuerung. Es werden keine Daten auf dem Datenbus übertragen. Die L2- Steuerung empfängt den Primärbefehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2- Steuerung überträgt "Command Valid" zu Speichersteuerung und Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt den eigentlichen Speicherbefehl und erwartet von der L2-Steuerung ein Signal, daß die Adresse verarbeiteü wurde, bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Adreßpuffern für den Speicherbefeht. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache- Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses von der L2-Steuerung. Die Speichersteuerung weist die benötigten Ressourcen zu und aktiviert den Speicherbefeht, wenn er von der Priorität ausgewählt wird. Der Befehl "Invalidate L2 Cache Entry" wird zur L2-Steuerung übertragen, und Adresse/Schlüssel wird angewiesen, die absolute Adresse zur L2-Steuerung zu übertragen. Die L2-Steuerung empfängt den Befehl der Speichersteuerung, den L2-Cacheeintrag zu entwerten, und nach der Auswahl durch die Bearbeitungspriorität des L2-Cache verwendet sie die absolute Adresse von Adresse/Schlüssel, um das L2- Cacheverzeichnis zu adressieren. L2 verwendet die Adresse von Adresse/Schlüssel, da er erkennt, daß sie L2-Cachekongruenz und -Satz enthält. Die L2-Steuerung überträgt keine Informationen zur L2-Cachesteuerung und eine Befehlsantwort zur Speichersteuerung. Aus der Durchsuchung des L2-Verzeichnisses ergibt sich eine von drei Bedingungen.
  • Fall 1
  • Der angegebene L2-Cacheeintrag ist bereits als ungültig oder fehlerhaft markiert. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile wird anschließend zur Speichersteuerung übertragen. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Cache-Mißerfolg) und antwortet dem anfordernden Prozessor mit "End-of-Operation". Es ist keine Entwertung des Eintrags im L2-Miniverzeichnis erforderlich.
  • Fall 2
  • Eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers ist für die gewählte L2-Cachezeile aktiv. Zu Adresse/Schlüssel werden keine Informationen übertragen. Der Status der L2-Cachezeile wird anschließend zur Speichersteuerung übertragen. Die Speichersteuerung empfängt den Status der L2-Cachezeile (gesperrt) und bricht die momentane Ausführung des Befehls ab. Der Speicherbefehl wird vorübergehend ausgesetzt, wodurch Zeit für die Behebung des Sperrkonflikts zur Verfügung steht, und anschließend wieder in die Priorität der Speichersteuerung aufgenommen, um zu versuchen, den Befehl vollständig auszuführen.
  • Fall 3
  • Die L2-Cachezeile ist gültig und entweder modifiziert oder unmodifiziert. Der L2-Cacheeintrag wird als ungültig markiert. Die L2-Steuerung überträgt die kombinierte Adresse, die L2-Cachekongruenz und die aus dem L2-Cacheverzeichnis gelesenen Bits der absoluten Adresse gemeinsam mit dem L2-Cachesatz zu Adresse/Schlüssel. Der Status der L2-Cachezeile wird anschließend zur Speichersteuerung übertragen. Der Trefferstatus für das L2-Verzeichnis muß für die Speichersteuerung erzwungen werden, um eine Aktualisierung des Miniverzeichnisses für den entwerteten L2- Cacheeintrag zu gewährleisten. Alle L1-Statusmatrizen werden auf Kopien der beiden. L1-Cachezeilen innerhalb der als ungültig markierten L2-Cachezeile durchsucht. Die niederwertige L2-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2-Cache und die höherwertige Kongruenz werden als Komparand mit den Ausgabedaten der LI-Statusmatrix verwendet. Falls L1-Cachekopien gefunden werden, werden die entsprechenden L1/L2- Adreßbusse zur Entwertung angefordert. Die L1-Cachekongruenz und die L1-Cachesätze (zwei für den L1-Operandencache und zwei für den L1-Anweisungscache) werden zur Entwertung der L1-Cachekopien zu den entsprechenden Prozessoren gleichzeitig übertragen, um die L1-Cachekopien zu entwerten, nachdem die Anforderung für den Adreßbus von diesem L1 freigegeben wurde. Der Befehl "Invalidate L2 Cache Entry" ist von der Anforderung einer lokalen Entwertung oder Quer-Entwertung nicht betroffen, da L1 gewährleistet, daß die benötigte Adreßschnittstelle in einer festgelegten Zahl von Zyklen freigegeben wird. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie gemeinsam mit dem L2-Cachesatz in den Ädreßpuffern für den Speicherbefeht. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Treffer) und fordert eine Entwertung des betreffenden Eintrags im L2-Miniverzeichnis mit Hilfe der diesem Prozessor in Adresse/Schlüssel zugeordneten Adreßpuffer für den Speicherbefeht an. Die Speichersteuerung antwortet anschließend dem anfordernden Prozessor mit "End-of- Operation".
  • 2.4.8 Read Memory Internal Registers (Interne Speicherregister lesen)
  • Anwendung: Diagnosetests von Prozessorspeicher und Erweiterungsspeicher. Der Befehl wird in Verbindung mit der Prozessorspeicher-Abrufanforderung verwendet, um den Abruf ausgewählter interner Speicherregister für den anfordernden Prozessor abzuschließen. Der Befehl ist innerhalb des Prozessors synchronisiert, um zu gewährleisten, daß der Speicherbefehl abgeschlossen ist, bevor die Speicheraktivität innerhalb des anfordernden Prozessors beginnt.
  • Beschreibung des Speicherbefehls
  • Ein Mikroprogramm liefert den Befehl und eine absolute Adresse. Nur Bit 24 der absoluten Adresse ist für den Befehl "Read Memory Internal Registers" bei der Auswahl des Speicheranschlusses signifikant. Dieser Speicherbefeht stellt die erste Hälfte eines operationellen Befehlspaars dar. Der Befehl ist dafür ausgelegt, ausgewählte interne Speicherregister aus dem angegebenen Speicheranschluß in einen 128 Byte großen Speicherpuffer einzulesen. Alle vier Steuerchips innerhalb der Speicherkarten des ausgewählten Anschlusses sind an der Leseoperation beteiligt und übertragen ihre Kopien der Spezialfunktionsregister, der Prüfbitregister, der Redundanzbitregister und der Syndromregister an zuvor festgelegten Positionen auf dem Speicher-Datenbus zum Speichersystem. Der Speicherbefehl ordnet dem anfordernden Prozessor einen Speicherpuffer zu, aber nur für die Ausführung dieses Speicherbefehls. Die Ressourcensperre des Speicherpuffers wird zwischen der Ausführung dieses Speicherbefehls und dem Empfang des zweiten Befehls vom anfordernden Prozessor (Prozessor- Abruf mit L2-Cache-Mißerfolg) und seinem nachfolgenden Abschluß nicht aufrechterhalten. Der zweite Befehl des operationellen Befehlspaars ist die nächste von demselben Prozessor ausgegebene Prozessorspeicher-Abrufanforderung, die zu einem L2-Cache-Mißerfolg führt. Das Speichersystem behandelt den L2-Cache-Mißer folg auf normale Weise, abgesehen von der Quelle der Daten und der Aktualisierung des L2-Cache. Die von der angegebenen Adresse in den Cache-Speicher eingelagerten Daten stammen aus dem Speicherpuffer statt von dem gewählten Speicheranschluß. Die 32 Byte Daten, die zuvor von dem Befehl "Read Memory Internat Registers" in den Speicherpuffer geladen wurden, werden zweimal zu L1 übertragen, um eine normale 64 Byte lange Seiteneinlagerungssequenz in den L1-Cache zu ermöglichen. Die Daten werden nicht in den Seiteneinlagerungspufferfür den L2-Cache geladen, der derabrufanforderung für den Prozessor zugeordnet ist. Statt dessen wird der vorherige Inhalt des Seiteneinlagerungspuffers in den ausgewählten L2-Cacheeintrag geladen, woraus sich eine Inkonsistenz der Daten zwischen dem L1-Cache und dem L2-Cache für die gegebene L2-Cachezeile ergibt. Das Mikroprogramm muß gewährleisten, daß bei einen L2-Cache-Mißerfolg für die nächste Prozessorspeicher-Abrufanforderung der Inhalt des Speicherpuffers in den L1-Cache eingelagert wird. Die angegebene Speicheradresse muß auf einer 128-Byte-Grenze liegen, es kann aber jeder der beiden L3-Anschlüsse gewählt werden.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl und eine absolute Adresse an L1 aus. L1 überträgt die absolute Adresse und einen Speicherbefehl "pass Address" zur L2-Steuerung und den eigentlichen Speicherbefeht zur Speichersteuerung. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den Primärbefeht, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Command Valid" zur Speichersteuerung und zu Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt den eigentlichen Speicherbefehl und erwartet ein Signal von der L2- Steuerung, daß die Adresse verarbeitet wurde, bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Adreßpuffern für den Speicherbefehl. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses von der L2-Steuerung. Die Speichersteuerung weist die erforderlichen Ressourcen zu und aktiviert den Speicherbefehl, wenn er von der Priorität ausgewählt wird. Der Befehl wird zur BSU-Steuerung übertragen, und Adresse/Schlüssel wird angewiesen, die entsprechende Adresse zur BSU-Steuerung zu übertragen. Die BSU-Steuerung leitet den Diagnose-Speicherabruf ein, indem sie den Befehl und die physische Adresse über den L2-Datenstrom zu dem angegebenen Speicheranschluß überträgt. Die BSU-Steuerung zeichnet die diesem Speicherbefeht zugeordnete Prozessorkennung auf, um den nachfolgenden Abschluß der Leseoperation bei der nächsten Prozessorspeicher-Abrufanforderung von diesem Prozessor zu ermöglichen. Der ausgewählte Speicheranschluß führt den angeforderten Diagnose-Lesevorgang durch, übergibt die Daten an das benötigte Speicherschnittstellen-Register, und der L2-Datenstrom leitet sie zu dem Speicherpuffer in der Speicherkanal-Datenpufferfunktion. Es erfolgen nur zwei Datenübertragungenvon dem ausgewählten Speicheranschluß zum Speicherpuffer. Während die letzte Datenübertragung in den Speicherpuffer abgeschlossen wird, überträgt die BSU-Steuerung "End-of-Operation" zur Speichersteuerung. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den Speicheranschluß und die Ressourcensperre des Speicherpuffers für diesen Prozessor frei und überträgt "End-of-Operation" zu dem anfor- dernden Prozessor.
  • 2.4.9 Set Address-Limit Check (Adreßgrenzprüfung setzen)
  • Anwendung: Wird von 370-XA-Kanälen verwendet, um den absoluten Speicher in zwei Bereiche aufzuteilen und Datenzugriffe durch Unterkanäle auf eine oder beide Partitionen zu beschränken. Der Befehl ist innerhalb des Prozessors synchronisiert, um zu gewährleisten, daß der Speicherbefehl abgeschlossen ist, bevor ein anderer Speicherbefehl oder Speicherschlüsselbefeht ausgegeben wird. Abruf- und Speicheranforderungen für den Prozessorspeicher können mit der Ausführung dieses Speicherbefehls überlappt werden.
  • Beschreibung des Speicherbefehls
  • Ein Mikroprogramm liefert den Befehl und eine absolute Adresse. Nur die Bits 1:15 der absoluten Adresse sind signifikant, die eine absolute Adresse auf einer 64-kB-Grenze liefern. Vor der Ausgabe des Befehls muß das Mikroprogramm die Bits 1:15 der absoluten Adresse an die Bit-Positionen 5:19 der absoluten Adresse verschieben, wobei Nullen an den freigewordenen Bit-Positionen eingefügt werden.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl und eine absolute Adresse für L1 aus. L1 überträgt die absolute Adresse und einen Speicherbefehl "Pass Address" zur L2-Steuerung und den eigentlichen Speicherbefehl zur Speichersteuerung. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den Primär-Befehl, den Speicherbefeht und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Command Valid" zur Speichersteuerung und zu Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt. den eigentlichen Speicherbefeht und erwartet von der L2-Steuerung ein Signal, daß die Adresse verarbeitet wurde,. bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Adreßpuffern des Speicherbefehls.
  • Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses von der L2-Steuerung. Die Speichersteuerung weist die erforderlichen Ressourcen zu und aktiviert den Speicherbefeht, wenn er von der Priorität ausgewählt wird. Der Befehl wird zu Adresse/Schlüssel übertragen, um das Adreßgrenzregister zu setzen. "End-of-Operation" wird zu dem anfordernden Prozessor übertragen. Sobald sie den Befehl der Speichersteuerung empfangen hat, setzt Adresse/Schlüssel sofort das Adreßgrenzregister (Bits 1:15) aus dem Puffer für die absolute Speicherbefehl-Adresse (Bits 5:19), der dem anfordernden Prozessor zugeordnet ist.
  • 2.4.10 Invatidate and Flush L2 Cache Entry (L2-Cache-Eintrag entwerten und entleeren)
  • Anwendung: Diagnose-Tests des Speichersystems. Der Befehl ist innerhalb des Prozessors synchronisiert, um sicherzustellen, daß der Speicherbefehl aktiviert wird, bevor ein anderer Speicherbefehl oder Speicherschlüsselbefeht ausgegeben wird. Abruf- und Speicheranforderungen für den Prozessorspeicher können mit der Ausführung dieses Speicherbefehls überlappt werden. Das Mikroprogramm muß gewährleisten, daß ein Prozessor, falls er sich innerhalb der Konfiguration im Ruhezustand befindet, in einem Status belassen wird, in dem er keinerlei Sperr-, Zeilenhaltoder Seiteneintagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehters aufweist. Wenn das nicht erfolgt, kann sich eine Aussperr-Bedingung ergeben, da der Speicher-Entwertungs- und Entleerungsbefehl nicht abgeschlossen werden kann, wenn ein im Ruhezustand befindlicher Prozessor in der L2-Cachezeile innerhalb des angeforderten L2-Cacheeintrags eine Sperr-, Zeilenhalt- oder Seiteneintagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers aufweist.
  • Beschreibung des Speicherbefehls
  • Ein Mikroprogramm liefert eine L2-Cachekongruenz (Bits 16:24 der absoluten Adresse) an den entsprechenden Bit-Positionen des Speicher-Adreßbusses. Der L2-Cachesatz wird in die Adreßbits 25:27 eingefügt und wie folgt interpretiert: '000'b ist Satz 0, '001'b ist Satz 1, '010'b ist Satz 2, '100'b ist Satz 3, '101'b ist Satz 4, '110'b ist Satz 5. Die restlichen Bitmuster sind ungültig. Die Adresse wird von L1 als absolute Adresse aufgefaßt. Der L2-Cache-Eintrag, wie er dürch die L2-Cachekongruenz und den Satz angegeben wird, die vom Mikroprogramm geliefert werden, wird gemeinsam mit dem entsprechenden Eintrag im L2-Miniverzeichnis entwertet. Falls die innerhalb des angegebenen Cacheeintrags enthaltene L2-Cachezeile modifiziert wird, wird die Zeile in den L3-Speicher entleert. Die L1-Statusmatrizen werden ebenfalls durchsucht, und etwaige Kopien der L2-Cachezeile, die auf der Stufe des L1-Cache vorhanden sind, werden entfernt, und die entsprechenden L1-Statuseinträge werden gelöscht.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl und eine absolute Adresse (die L2-Cachekongruenz und den Satz) an L1 aus. L1 überträgt die absolute Adresse und einen Speicherbefeht "Pass Address" zur L2- Steuerung und den eigentlichen Speicherbefehl zur Speichersteuerung. Es werden keine Daten auf dem Datenbus übertragen. Die L2- Steuerung empfängt den Primärbefehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2- Steuerung überträgt "Command Valid" zur Speichersteuerung und zu Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt den eigentlichen Speicherbefehl und erwartet von der L2-Steuerung ein Signal, daß die Adresse bearbeitet wurde, bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Adreßpuffern für den Speicherbefehl. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses von der L2-Steuerung. Die Speichersteuerung weist die erforderlichen Ressourcen zu und aktiviert den Speicherbefehl, wenn er von der Priorität ausgewählt wird. Der Befehl "Invalidate and Flush L2 Cache Entry" wird zur L2-Steuerung übertragen, und Adresse/Schlüssel wird angewiesen, die absolute Adresse zur L2-Steuerung zu übertragen. Die L2-Steuerung empfängt den Befehl der Speichersteuerung, den L2-Cache-Eintrag zu entwerten und zu entleeren, und verwendet nach der Auswahl durch die Bearbeitungspriorität des L2-Cache die absolute Adresse von Adresse/Schlüssel, um das L2-Cacheverzeichnis zu adressieren. L2 verwendet die Adresse von Adresse/Schlüssel, da er erkennt, daß sie die L2-Cachekongruenz und den Satz enthält. Ein Befehl "Load Outpage Buffer if Modified and not Locked" wird zur L2-Cachesteuerung übertragen, und eine Befehtsantwort wird zur Speichersteuerung übertragen. Aus der Durchsuchung des L2-Verzeichnisses ergibt sich eine von vier Bedingungen.
  • Fall 1
  • Der angegebene L2-Cache-Eintrag ist bereits als ungültig oder fehlerhaft markiert. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Aufgrund des ungültigen oder fehlerhaften Status des L2-Cachezeileneintrags wird der Status "Not Modified" erzwungen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des ungültigen oder fehlerhaften Status des L2-Cacheeintrags blockiert. Die L2- Cachesteuerung empfängt "Load Outpage Buffer if Modified and not Locked" von der L2-Steuerung und bereitet einen Lesevorgang einer L2-Cachezeile vor. Die L2-Cachesteuerung verwirft den Befehl, sobald sie den Status der L2-Cachezeite (nicht modifiziert> empfangen hat. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Cache-Mißerfolg) und antwortet dem anfordernden Prozessor mit "End-of-Operation". Es ist keine Entwertung des Eintrags im L2-Miniverzeichnis erforderlich.
  • Fall 2
  • Eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers ist für die gewählte L2-Cachezeile aktiv. Zu Adresse/Schlüssel werden keine Informationen übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund der Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige für einen nicht behebbaren Speicherfehlerkonflikt blokkiert. Die L2-Cachesteuerung empfängt "Load Outpage Buffer if Modified and not Locked" von der L2-Steuerung und bereitet einen Lesevorgang für eine L2-Cachezeile vor. Die L2-Cachesteuerung verwirft den Befehl, sobald sie den Status der L2-Cachezeile (gesperrt) empfangen hat. Die Speichersteuerung empfängt den Status der L2-Cachesteuerung (gesperrt) und bricht die momentane Ausführung des Befehls ab. Der Speicherbefehl wird vorübergehend ausgesetzt, so daß Zeit zur Behebung des Sperrkonftikts zur Verfügung steht, und anschließend wieder in die Priorität der Speichersteuerung eingetragen, um zu versuchen, den Befehl vollständig auszuführen.
  • Fall 3
  • Die L2-Cachezeile ist gültig, aber unmodifiziert. Der L2-Cacheeintrag wird als ungültig markiert. Die L2-Steuerung überträgt die kombinierte Adresse, die L2-Cachekongruenz und die aus dem L2-Cacheverzeichnis gelesenen Bits der absoluten Adresse gemeinsam mit dem L2-Cachesatz zu Adresse/Schlüssel. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Für die Speichersteuerung muß ein L2- Verzeichnis-Trefferstatus erzwungen werden, um eine Aktualisierung des Miniverzeichnisses für den entwerteten L2-Cacheeintrag zu gewährleisten. Alle L1-Statusmatrizen werden nach Kopien der beiden L1-Cachezeilen innerhalb der als ungültig markierten L2- Cachezeile durchsucht. Die niederwertige L2-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2- Cachesatz und die höherwertige Kongruenz werden als Komparand mit den Ausgangsdaten der L1-Statusmatrizen verwendet. Falls L1- Cachekopien gefunden werden, werden die entsprechenden L1/L2- Adreßbusse zur Entwertung angefordert. Die L1-Cachekongruenz und die L1-Cachesätze (zwei für den L1-Operandencache und zwei für den L1-Anweisungscache) werden zur Entwertung der L1-Cachekopien zu den betreffenden Prozessoren gleichzeitig übertragen, nachdem die Anforderung für den Adreßbus von diesem L1 freigegeben worden ist. Der "Invalidate and Flush"-Befehl ist von der Anforderung der lokalen Entwertung oder Quer-Entwertung nicht betrof- fen, da L1 die Freigabe der benötigten Adreßschnittstelle in einer festen Zahl von Zyklen gewährleistet. Adresse/Schlüssel empfängt die absolute Adresse von der L2- Steuerung, wandelt sie in eine physische Adresse um und hält sie gemeinsam mit dem L2- Cachesatz in den Puffern für die Befehlsadresse. Die L2-Cachesteuerung empfängt "Load Outpage Buffer if Modified and not Lokked" von der L2-Steuerung und bereitet einen Lesevorgang der L2- Cachezeile vor. Sobald die L2-Cachesteuerung den Status der L2- Cachezeile (nicht modifizierty empfangen hat, verwirft sie den Befehl. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Treffer) und fordert eine Entwertung des entsprechenden Eintrags im L2-Miniverzeichnis unter Verwendung der diesem Prozessor in Adresse/Schlüssel zugeordneten Speicherbefehl- Adreßpuffer an. Anschließend antwortet die Speichersteuerung den anfordernden Prozessor mit "End-of-Operation".
  • Fall 4
  • Die L2-Cachezeile ist gültig und modifiziert. Der L2-Cacheeintrag wird als ungültig markiert. Die L2-Steuerung überträgt die kombinierte Adresse, die L2-Cachekongruenz und die aus dem L2- Cacheverzeichnis ausgelesenen Bits der absoluten Adresse gemeinsam mit dem L2-Cachesatz zu Adresse/Schlüssel. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Ftir die Speichersteuerung muß ein L2- Verzeichnis-Trefferstatus erzwungen werden, um eine Aktualisierung des Miniverzeichnisses für den entwerteten L2-Cache-Eintrag zu gewährleisten. Alle L1-Statusmatrizen werden nach Kopien der beiden L1-Cachezeilen innerhalb der als ungültig markierten L2- Cachezeile durchsucht. Die niederwertige L2-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2- Cachesatz und die höherwertige Kongruenz werden als Komparand mit den Ausgabedaten der L1-Statusmatrizen verwendet. Falls L1- Cachekopien gefunden werden, werden die entsprechenden L1/L2- Adreßbusse zur Entwertung angefordert. Die L1-Cachekongruenz und die L1-Cachesätze (zwei für den L1-Operandencache und zwei für den L1-Anweisungscache) werden zur Entwertung der L1-Cachekopien zu den betreffenden Prozessoren gleichzeitig übertragen, nachdem die Anfgrderung des Adreßbusses durch diesen L1 freigegeben wurde. Die "Invalidate and Flush"-Anforderung ist von der Anforderung einer lokalen Entwertung oder Quer-Entwertung nicht betroffen, da L1 die Freigabe der erforderlichen Adreßschnittstelle in einer festen Zahl von Zyklen gewährleistet. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie gemeinsam mit dem L2- Cachesatz in den Speicherbefehl-Adreßpuffern. Die L2-Cachesteuerung empfängt "Load Outpage Buffer if Modified and not Locked" von der L2-Steuerung und bereitet einen Lesevorgang der L2-Cachezeile vor. Sobald die L2-Cachesteuerung den Status von der L2-Steuerung empfangen hat, weist die L2-Cachesteuerung den L2- Cache an, eine Vollzeile aus der angegebenen L2-Cachekongruenz und dem Satz in den von der L2-Steuerung angegebenen Seitenauslagerungspuffer einzulesen. Die Speichersteuerung empfängt den Stätus der L2-Cachezeile (erzwungener L2-Treffer) und fordert eine Entwertung des betreffenden Eintrags im L2-Miniverzeichnis mit Hilfe der diesem Prozessor in Adresse/Schlüssel zugeordneten Speicherbefehl-Adreßpuffer an. Die Speichersteuerung fordert an, daß Adresse/Schlüssel die physische L3-Adresse zur BSU-Steuerung sendet, und überträgt einen Befehl "Unload Outpage Buffer" zur BSU-Steuerung, um die L2-Zeile in den benötigten L3-Speicheranschluß zu speichern. Die Speichersteuerung antwortet anschließend dem anfordernden Prozessor mit "End-of-Operation". Die BSU- Steuerung empfängt den Befehl von der Speichersteuerung und die physische Adresse von Adresse/Schlüssel. Die BSU-Steuerung leitet den Schreibvorgang der L3-Zeile ein, indem sie Befehl und Adresse über den Datenstrom des L2-Cache zu dem ausgewählten Speicheranschtuß überträgt. Die Daten werden in 16-Byte-Abschnitten vom Seitenaustagerungspuffer zum Speicher übertragen.
  • Nach der letzten Datenübertragung antwortet die BSU mit "End-of- Operation" für die Speichersteuerung. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den L3-Anschluß frei, um einen überlappten Zugriff auf den Speicheranschluß zu ermöglichen.
  • 2.4.11 Pad L3 Line (L3-Zeile auffüllen)
  • Anwendung: Auffüllen des Prozessorspeichers mit MVCL-Mustern. Diagnosetests des L3-Prozessorspeichers. Ein Mikroprogramm muß gewährleisten, daß die Speicherwarteschlange für den anfordernden Prozessor leer ist, bevor dieser Speicherbefeht ausgegeben wird. Der Befehl ist innerhalb des Prozessors synchronisiert, um die Aktivierung des Speicherbefehls vor dem Beginn der Speicheraktivität innerhalb des anfordernden Prozessors zu gewährleisten. Das Mikroprogramm muß gewährleisten, daß ein bestimmter Prozessor, falls er sich innerhalb der Konfiguration im Ruhezustand befindet, in einem Status belassen wird, in dem er keine Sperr-, Zeilenhatt- oder Seiteneintagerungs-Einfrierbedingungen mit Anzeige eines nicht behebbaren Speicherfehlers aufweist. Wenn dies nicht beachtet wird, kann sich eine Aussperr-Bedingung ergeben, da der Speicherbefeht "Pad L3 Line" nicht abgeschlossen werden kann, wenn ein im Ruhezustand befindlicher Prozessor einen Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierzustand mit Anzeige eines nicht behebbaren Speicherfehlers in der angeforderten L2-Cachezeile aufweist.
  • Beschreibung des Speicherbefehls
  • Der Speicherbefehl wird verwendet, um ein acht Byte langes Datenmuster in einer 128 Byte langen L3-Zeile durchgehend zu vervielfältigen. Ein Mikroprogramm gibt im Befehl eine logische Adresse an. Die absolute Adresse wird nach der entsprechenden Adreßübersetzung in L1 verwendet, um das L2-Cacheverzeichnis zu durchsuchen. Falls sich ein L2-Cachetreffer ergibt, wird die L2- Cachezeile entwertet. Der entsprechende Eintrag im L2-Miniverzeichnis wird entwertet. Die L1-Statusmatrizen werden ebenfalls durchsucht, und etwaige Kopien der L2-Cachezeile, die auf der Stufe des L1-Cache vorhanden sind, werden entfernt, und die entsprechenden L1-Statuseinträge werden gelöscht. L1 braucht die dem Speicherbefeht zugeordneten L1-Cachezeilen nicht zu entwerten. Die L2-Steuerung fordert eine Entwertung aller L1-Cachekopien in der Konfiguration im Rahmen der Ausführung des Befehls an, falls die Zeile im L2-Cache vorhanden ist.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt für L1 den Befehlund eine logische Adresse auf einer 128-Byte-Grenze im L3-Prozessorspeicher gemeinsam mit einem aus dem lokalen Datenspeicher stammenden Acht- Byte-Muster aus. Falls eine Adressierungs- oder Schutz-Ausnahmebedingung besteht, werden Speicherbefeht, Adresse und Daten nicht zu L2 und Speichersteuerung übertragen. L1 überträgt die absolute Adresse und einen Speicherbefeht "Pass Address" zur L2- Steuerung und den eigentlichen Speicherbefehl zur Speichersteuerung. Das Acht-Byte-Datenmuster wird zu L2 übertragen. Die L2- Steuerung empfängt den Primärbefeht, den Speicherbefeht und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die acht Bytes der Musterdaten werden vervielfältigt und in den 16 Byte großen anderen Datenpuffer geladen, da der Speicherbefehl nicht direkt auf den L2-Cache zugreift. Die L2-Steuerung überträgt "Command Valid" zur Speichersteuerung und zu Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt den eigentlichen Steuerbefehl und erwartet von der L2- Steuerung ein Signal, daß die Adresse verarbeitet wurde, bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Speicherbefeht- Adreßpuffern. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses -von der L2-Steuerung. Die Speichersteuerung weist die erforderlichen Ressourcen zu und aktiviert den Speicherbefehl, wenn er von der Priorität ausgewählt wird. Die Speichersteuerung überträgt zur L2-Steuerung einen Befehl, die L2-Cachezeile zu entwerten, und fordert an, daß Adresse/Schlüssel die absolute Adresse zur L2- Steuerung und die physische Adresse zur BSU-Steuerung überträgt und die Referenz- und Anderungsbits der betreffenden 4-kB-Seite aktualisiert. Die Speichersteuerung überträgt einen Befehl zur BSU-Steuerung. Dieser Befehl, "Pad L3 Line", wird von der BSU- Steuerung vorbehaltlich ausgeführt, und zwar abhängig vom Status der L2-Cachezeile, der von der L2-Steuerung anschließend mit dem Befehl "Perform Memory Control Access if not Locked" übertragen wird. Adresse/Schlüssel verwendet den Speicherbefehl-Adreßpuffer, um eine Aktualisierung der Speicherschlüsselmatrix einzuleiten. Referenz- und Anderungsbits der angegebenen 4-kB-Seite werden auf '1'b gesetzt. Die BSU-Steuerung empfängt den Befehl von der Speichersteuerung und erwartet den Status von der L2- Steuerung. Die L2-Steuerung empfängt den Befehl von der Spei chersteuerung und verwendet nach Auswahl durch die Bearbeitungspriorität des L2-Cache die Adresse von Adresse/Schlüssel, um das L2-Cacheverzeichnis zu durchsuchen. Ein Befehl "Perform Memory Control Access if not Locked" wird zur L2-Cachesteuerung übertragen, um zur BSU-Steuerung weitergeleitet zu werden, und die Befehtsantwort wird zur Speichersteuerung übertragen. Aus der Durchsuchung des L2-Verzeichnisses ergibt sich eine von drei Bedingungen.
  • Fall 1
  • Die Verzeichnissuche führt zu einem L2-Cache-Mißerfolg. Zu Adresse/Schlüssel werden keine Informationen übertragen. Der Status der L2-Cachezeile und der Cachesati werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des L2-Cache-Mißerfolgs blockiert. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Cache-Mißerfolg und nicht gesperrt); eine Aktualisierung des L2-Miniverzeichnisses ist nicht erforderlich. Die Speichersteuerung überträgt "End-of-Operation" zu dem anfordernden Prozessor. Die BSU- Steuerung empfängt "perform Memory Control Access if not Locked" von der L2-Steuerung und die physische Adresse von Adresse/Schlüssel und bereitet den Schreibvorgang von "Pad L3 Line" vor. Sobald die BSU-Steuerung den Status von der L2-Steuerung (nicht gesperrt) empfangen hat, leitet sie den Schreibvorgang der L3-Zeile ein, indem sie Befehl und Adresse über den L2-Datenstrom zum benötigten Speicheranschluß überträgt. Die BSU- Steuerung legt anschließend fest, daß der Inhalt des anderen Datenpuffers zum Speicheranschluß zu übertragen ist. Das Datenmuster wird achtmal über die 16 Byte breite L3-Speicherschnittstelle gesandt, um die Auffüll-Operation für die L3-Z eile abzuschließen. Nach der letzten Datenübertragung wird "End-of-Operation" von der BSU-Steuerung zur Speichersteuerung übertragen. Sobald die Speichersteuerung "End-of-Operation" empfangen hat, gibt sie den L3-Anschluß frei, um einen überlappten Zugriff auf den Speicheranschiuß zu ermöglichen.
  • Fall 2
  • Eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers ist für die adressierte L2-Cachezeile aktiv. Zu Adresse/Schlüssel werden keine Informationen übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Sta- tus der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund der Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit nicht behebbarem Speicherfehlerkonflikt blockiert. Die Speichersteuerung empfängt den Status der L2-Cachezeile (gesperrt) und bricht die momentane Ausführung des Befehls ab. Der Speicherbefeht wird vorübergehend ausgesetzt, so daß Zeit zur Behebung des Sperrkonflikts zur Verfügung steht, und anschließend wieder in die Priorität der Speichersteuerung eingetragen, um zu versuchen, den Befehl vollständig auszuführen. Die BSU-Steuerung empfängt "Perform Memory Control Access if not Locked" von der L2-Steuerung und die physische Adresse von Adresse/Schlüssel und bereitet den Schreibvorgang von "Pad L3 Line" vor. Sobald die BSU-Steuerung den Status (gesperrt) von der L2-Steuerung empfangen hat, verwirft sie den Befehl.
  • Fall 3
  • Die Verzeichnissuche führt zu einem L2-Cachetreffer, und die Cachezeile ist entweder modifiziert oder unmodifiziert. Der L2- Cacheeintrag wird als ungültig markiert. Die L2-Steuerung überträgt die absolute Adresse gemeinsam mit dem L2-Cachesatz zu Adresse/Schlüssel. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2- Cachezeile wird zur Speichersteuerung übertragen. Alle L1-Statusmatrizen werden nach Kopien der beiden L1-Cachezeilen innerhalb der als ungültig markierten L2-Cachezeile durchsucht. Die niederwertige L2-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als Komparand mit den Ausgabedaten der L1-Statusmatrizen verwendet. Falls L1-Cachekopien gefunden werden, werden die betreffenden L1/L2-Adreßbusse zur Entwertung angefordert. Die L1-Cachekongruenz und die L1-Cachesätze (zwei für den L1-Operandencache und zwei für den L1-Anweisungscache) werden zur Entwertung der L1-Cachekopien zu den betreffenden Prozessoren gleichzeitig übertragen, nachdem die Anforderung des Adreßbusses durch diesen L1 genehmigt wurde. Der Befehl "Invalidate L2 Cache Line" ist von der Anforderung der lokalen Entwertung oder Quer-Entwertung nicht betroffen, da L1 die Genehmigung der angeforderten Adreßschnittstelle in einer festen Zahl von Zyklen gewährleistet. Adresse/schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie gemeinsam mit dem L2-Cachesatz in den Speicherbefehl-Adreßpuffern. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Treffer und nicht gesperrt) und fordert eine Entwertung des betreffenden Eintrags im L2-Miniverzeichnis unter Verwendung der diesem Prozessor in Adresse/Schlüssel zugeordneten Speicherbefehl-Adreßpuffer an. Die Speichersteuerung antwortet anschließend dem anfordernden Prozessor mit "end-of-Operation". Die BSU-Steuerung empfängt "Perform Memory Control Access if not Locked" von der L2-Steuerung und die physische Adresse von Adresse/Schlüssel und bereitet den Schreibvorgang für "pad L3 Line" vor. Sobald die BSU-Steuerung den Status (nicht gesperrt) von der L2-Steuerung empfangen hät, leitet die BSU-Steuerung den Schreibvorgang der L3-Zeile ein, indem sie Befehl und Adresse über den L2-Datenstrom zu dem benötigten Speicheranschluß überträgt. Die BSU-Steuerung legt anschließend fest, daß der Inhalt des anderen Datenpuffers zum Speicheranschluß zu übertragen ist. Das Datenmuster wird achtmal über die 16 Byte breite L3-Speicherschnittstelle gesandt, um die Auffülloperation für die L3-Zeile abzuschließen. Nach der letzten Datenübertragung wird "End-öf-Operation" von der BSU-Steuerung zur Speichersteuerung übertragen. Nachdem die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den L3-Anschluß frei, um einen überlappten Zugriff auf den Speicheranschluß zu ermöglichen.
  • 2.4.12 Reset Processor Storage Interface (Prozessorspeicher- Schnittstelle zurücksetzen)
  • Anwendungen: Wird in der Routine für Seitenfehlerbearbeitung verwendet. Wird verwendet, um den "Store-and-Unlock"-Zugriff einer synchronisierten Aktualisierüng zu vermeiden. Das Mikroprogramm muß gewährleisten, daß die Speicherwarteschlange für den anfordernden Prozessor frei von prinzipiell abgeschlossenen Speichervorgängen ist, bevor dieser Speicherbefehl ausgegeben wird. Der Befehl ist innerhalb des Prozessors synchronisiert, um den Abschluß des Speicherbefehls zu gewährleisten, bevor die Speicheraktiviüät innerhalb des anfordernden Prozessors begonnen wird. Dieser Speicherbefehl wird in Situationen verwendet, in denen S/370-Anweisungen während der Seitenfehler-Bearbeitungsroutine annulliert oder unterdrückt werden sollen. Der Befehl soll das Speichersystem von allen innerhalb der Speicherwarteschlange eingegliederten Speicheranforderungen oder Schreibpuffern des L2-Cache freistellen, die der S/370-Anweisung zugeordnet sind, die den Seitenfehler verursacht. Der Speicherbefehl kann verwendet werden, um den "Store-and-Unlock"-Speicherzugriff einer synchronisierten Aktualisierung zu vermeiden, wenn der Speicherzugriff über den in der Anweisung gewählten Ausführungsweg unnötig scheint. Er ermöglicht das Rücksetzen der Sperre, ohne eine Speicheranforderung für diese Speicherposition auszuführen. Man beachte, daß dieser Befehl jeden etwaigen Status der Speicherwarteschlange ignoriert. Da der Befehl "Reset Processor Storage Interface" direkt von L1 zur L2-Steuerung übertragen wird, müssen etwaige anstehende Anforderungen für L2 (ausgenommen in die Warteschlange eingegliederte Speicheranforderungen) abgeschlossen sein, bevor dieser Befehl bearbeitet wird.
  • Beschreibung des Speicherbefehls
  • Ein Mikroprogramm liefert nur den Befehl. Der Speicherbefehl veranlaßt, daß die folgenden Schritte in der Speicherhierarchie durchgeführt werden. Erstens wird die Speicherwarteschlange auf der Stufe des L1-Cache im anfordernden Prozessor in ihren System-Rücksetzstatus versetzt. Alle Statusanzeiger der Einträge in der Speicherwarteschlange werden gelöscht. Zweitens wird die L2-Speicherwarteschlange des anfordernden Prozessors in ihren System-Rücksetzstatus versetzt, und alle Statusanzeiger der Einträge in der Speicherwarteschlange werden gelöscht. Der Status- Zwischenspeicher für den "Immediate Store"-Modus (sofort speichern), der der Speicherwarteschlange des anfordernden Prozessors zugeordnet ist, wird zurückgesetzt. Die Sperr- und Zeilenhalt-Register des anfordernden Prozessors werden gelöscht. Falls nicht behebbare Speicherfehier in vorzeitig verlagerten L2-Cachezeilen für eine momentan ausgeführte sequentielle Speicheroperation festgestellt wurden, muß die L2-Cachesteuerung im Rahmen der Ausführung dieses Speicherbefehls die durch die Zeilenhalt-Register bezeichneten L2-Cachezeilen entwerten, die Hinweise auf nicht behebbare Speicherfehler enthalten. Für Vektoranweisungen, die sequentielle Vollzeilen-Speicheroperationen verwenden, muß die L2-Steuerung die von den Zeilenhalt-Registern mit "Nicht-vorhanden"-Hinweisen (not-in-here) bezeichneten L2- Cachezeilen im Rahmen der Ausführung dieses Speicherbefehls entwerten. Aus allen L2-Cache-Schreibpuffern des anfordernden Prozessors werden etwaige Daten- und Speicherbyte-Markierungen gelöscht, indem die zugehörigen Steuer- und Adreßregister in ihren "System-Reset"-Statüs versetzt werden. Eine etwaige anstehende Seiteneinlagerung für den Prozessor kann auf normale Weise abgeschlossen werden. Abschließend werden etwaige für den Prozessor aufrechterhaltene Ressourcensperren freigegeben. Da Seiteneinlagerungsanforderungen auf normale Weise abgeschlossen werden, bedeutet dies, daß die Sperre der Speicherpuffer-Ressourcen aufgehoben wird, falls sie dem anfordernden Prozessor zugeordnet wurde. Insgesamt werden die anstehenden Prozessoraktivitäten in der gesamten Speicherhierarchie gelöscht, und der prozessorspezifische Anteil des Speichersystems wird in den System-Rücksetzstatus versetzt.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl an L1 aus. L1 überträgt den Speicherbefehl und die absolute Adresse standardmäßig zur L2- Steuerung. Es werden keine Daten auf dem Datenbus übertragen. L1 setzt seine Speicherwarteschlange auf den "System-Reset"-Status zurück und löscht dabei alle Statusanzeiger in den Warteschlangeneinträgen. Die L2-Steuerung empfängt standardmäßig den Pnmärbefehl, den Speicherbefehl und die absolute Adresse, gefolgt von.dem Befehl "Reset Processor Storage Interface". Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache setzt die L2-Steuerungen die Steuerung der L2-Speicherwarteschlange auf ihren System-Rücksetzstatus und löscht alle dem anfordernden Prozessor zugeordneten Sperr- und Zeilenhalt-Register. Etwaige L2-Zeilen, die aufgrund der nicht behebbaren Speicherfehler oder "Nicht-vorhanden"-Bits exklusiv gehalten werden, werden im L2- Cacheverzeichnis entwertet. Dies kann mehrere Zyklen im L2-Cacheverzeichnis erfordern. Eine etwaige anstehende Seiteneinlagerungsanforderung für einen Speichervorgang mit L2-Cache-Mißerfolg wird abgeschlossen, wobei das Einfrierregister nach dem Abschluß zurückgesetzt wird; es wird jedoch kein Zeilenhalt-Register gesetzt. Falls bei der Seiteneinlagerung für die Speicheranforderung ein nicht behebbarer Speicherfehler eintritt, wird die Zeile nicht in den L2-Cache geladen, und das Verzeichnis wird nicht aktualisiert; in dieser Situation wird sie als Seiteneinlagerung einer Abrufanforderung behandelt. Der Befehl "Reset Processor Storage Interface" wird zur Speichersteuerung und L2-Cachesteuerung übertragen. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Die L2-Cachesteuerung setzt etwaige der L2-Speicherwarteschlange zugeordnete Steuerregister und L2-Cache-Schreibpuffer für den anfordernden Prozessor zurück. Die L2-Cachesteuerung weist den L2-Datenstrom an, ähnliche Aktionen durchzuführen. Nachdem die Speichersteuerung den Befehl von der L2-Steuerung empfangen hat, antwortet sie dem anfordernden Prozessor mit "End-of-Operation". Parallel dazu löscht die Speichersteuerung die Sperre der Speicherpuffer-Ressourcen, falls dem Prozessor eine solche zugeordnet ist.
  • 2.4.13 Transfer L3 Line to Memory Buffer (L3-Zeile zum Speicherpuffer übertragen)
  • Anwendung: S/370-Anweisung PGOUT (Page Out). Für die Verwendung in der Anweisung PGOUT muß die Speicherwarteschlange für den anfordernden Prozessor leer sein, bevor dieser Befehl ausgegeben wird, um zu gewährleisten, daß alle Speichervorgänge für die zu verschiebende 4-kB-Seite abgeschlossen sind. Dies ist ein Bestandteil der Operation zur Serialisierung und Prüfpunkt-Synchronisierung, die zu Beginn der Anweisung von der S/370-Architektur verlangt wird. Der Befehl wird in Verbindung mit dem Befehl "Transfer Memory Buffer to L4 Line" verwendet, um die Verschiebung der Daten vom Prozessorspeicher zum Erweiterungspeicher abzuschließen. Da jedes Befehlspaar 128 Bytes verschiebt, wird im Mikroprogramm eine Schleife mit 32 Iterationen zur Bearbeitung der 4-kB-Seite eingerichtet. Der Befehl ist innerhalb des Prozessors synchronisiert, um die Aktivierung des Speicherbefehls zu gewährleisten, bevor die Speicheraktivität innerhalb des anfordernden Prozessors beginnt. Das Speichersystem gewährleistet mit Hilfe des Speicherpuffers eine korrekte Überlappung der Befehlspaare des operationellen Speichers. Das Mikroprogramm muß gewährleisten, daß ein bestimmter Prozessor innerhalb der Konfiguration, wenn er sich im Ruhezustand befindet, in einem Status belassen wird, in dem er nicht den Speicherpuffer besitzt oder etwaige Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingungen mit Anzeige eines nicht behebbaren Speicherfehlers aufweist. Wenn dies nicht beachtet wird, kann sich eine Aussperr-Bedingung ergeben, da der Speicherbefehl "Transfer L3 Line to Memory Buffer" nicht abgeschlossen werden kann, wenn ein im Ruhezustand befindlicher Prozessor den Speicherpuffer besitzt oder eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers in der angeforderten L3-Cachezeile aufweist.
  • Beschreibung des Speicherbefehls
  • Dieser Befehl stellt die erste Hälfte eines operationellen Speicherbefehlspaars dar. Der Befehl ist dafür ausgelegt, 128 Bytes mit L3-Prozessorspeicherdaten auf einer 128-Byte-Grenze von der angegebenen L3-Adresse zu einem 128-Byte-Speicherpuffer zu kopieren. Der Speicherbefehl ordnet dem anfordernden Prozessor einen Speicherpuffer zu und hält ihn exklusiv, bis der zweite Befehl von dem anfordernden Prozessor empfangen und abgeschlossen ist. Für PGOUT ist "Transfer Memory Buffer to L4 Line" der zweite Speicherbefehl. Der Befehl "Reset Processor Storage Interface" kann als zweiter Befehl des Befehlspaars verwendet werden, um die zugewiesenen Ressourcen freizugeben, ohne die Ziel- Speicherposition zu modifizieren. Die skizzierte Implementierung gewährleistet nicht, daß ein anderer Prozessor oder Kanäle in dem Intervall zwischen dem Zeitpunkt, zu dem der Prozessor diesen Speicherbefehl ausgibt, und dem Zeitpunkt, zu dem die Speichersteuerung den zweiten Speicherbefehl aktiviert, um den Inhalt des Speicherpuffers für die Anweisung PGOUT zu L4 zu übertragen, nicht auf die L3-Zeile zugreifen können. Dies wird nur als minimale Schwäche aufgefaßt, da das Betriebssystem damit beschäftigt ist, diese 4-kB-Seite für die Anweisung PGOUT auszulagern, und kaum gleichzeitige Referenzen für diese 4-kB-Seite bestehen können.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt an L1 den Befehl und eine absolute Adresse auf einer 128-Byte-Grenze im L3-Prozessorspeicher aus. L1 überträgt die absolute Adresse und einen Speicherbefehl "Pass Address" zur L2-Steuerung und den eigentlichen Speicherbefehl zur Speichersteuerung. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den Primärbefehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Command Valid" zur Speichersteuerung und zu Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt den eigentlichen Speicherbefehl und erwartet von der L2-Steuerung ein Signal, daß die Adresse verarbeitet wurde, bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Speicherbefehl-Adreßpuffern. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses von der L2-Steuerung. Die Speichersteuerung ordnet die erforderlichen Ressourcen zu und aktiviert den Speicherbefehl, wenn er durch die Priorität gewählt wurde. Der Befehl, den modifizierten Status zurückzusetzen und die L2-Cachezeile zu entleeren, wird zur L2-Steuerung übertragen, und Adresse/Schlüssel wird angewiesen, die absolute Adresse zur L2- Steuerung und die physische Adresse zur BSU-Steuerung zu übertragen und das Referenzbit der betreffenden 4-kB-Seite zu aktualisieren. Die Speichersteuerung überträgt einen Befehl zur BSU- Steuerung. Dieser Befehl, "Unload Outpage Buffer if Modified and not Locked" oder "Transfer L3 Line to Memory Buffer if not Modified and not Locked", wird von aer BSU-Steuerung vorbehaltlich ausgeführt, und zwar abhängig vom Status der L2-Cachezeile, der anschließend von der L2-Steuerüng mit dem Befehl "Load Outpage Buffer if Modified and not Locked" übertragen wird. Adresse/Schlüssel verwendet den Speicherbefehl-Adreßpuffer, um eine Aktualisierung der Speicherschlüsselmatrix einzuleiten. Das Referenzbit der angegebenen 4-kB-Seite wird auf '1'b gesetzt. Die BSU-Steuerung empfängt den Befehl von der Speichersteuerung und erwartet den Status von der L2-Steuerung. Die L2-Steuerung empfängt den Befehl der Speichersteuerung und verwendet nach der Auswahl durch die Bearbeitungspriorität des L2-Cache die absolute Adresse von Adresse/Schlüssel, um das L2-Cacheverzeichnis zu durchsuchen. Ein Befehl "Load Outpage Buffer if Modified and not Locked" wird zur L2-Cache steuerung übertragen, und die Befehlsantwort wird zur Speichersteuerung übertragen. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von vier Bedingungen.
  • Fall 1
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg. Es wetden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Der Status "nicht modifiziert" wird aufgrund des L2-Cache-Mißerfolgs erzwungen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des Befehls "Reset Modified State and Flush L2 Line" blockiert. Die L2-Cachesteuerung empfängt "Load Outpage Buffer if Modified and not Locked" von der L2-Steuerung und bereitet einen Lesevorgang für die L2-Cachezeile vor. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) empfangen hat, verwirft sie den Befehl. Die BSU-Steuerung leitet infolge des Status der L2-Cachezeile (L2-Mißerfolg und nicht gesperrt) den Befehl "Transfer L3 Line to Memory Buffer" ein. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Mißerfolg und nicht gesperrt) und erkennt, daß die BSU-Steuerung den vollständigen Abrufzugriff auf die L3-Zeile für die Übertragung zum Speicherpuffer beginnt. Die Speichersteuerung überträgt "End-of-Operation" zu dem anfordernden Prozessor.
  • Fall 2
  • Eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Fehlers ist für die gewählte L2-Cachezeile aktiv. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des Befehls "Reset Modified Status and Flush L2 Line" blockiert. Die L2-Cachesteuerung empfängt "Load Output Buffer if Modified and not Lokked" von der L2-Steuerung und bereitet einen Lesevorgang für eine L2-Cachezeile vor. Die L2-Cachesteuerung und die BSU-Steuerung verwerfen den Befehl, sobald sie den Status der L2-Cachezeile (gesperrt) empfangen haben. Die Speichersteuerung empfängt den Status der L2-Cachezeile (gesperrt) und bricht die laufende Ausführung des Befehls ab. Der Speicherbefehl wird vorübergehend ausgesetzt, um Zeit für die Beseitigung des Sperrkonflikts zur Verfügung zu stellen, und anschließend erneut in die Priorität der Speichersteuerung eingetragen, um zu versuchen, den Befehl vollständig auszuführen.
  • Fall 3
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cachetreffer, und die Cachezeile ist unmodifiziert. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des Befehls "Reset Modified Status and Flush L2 Line" blockiert. Die L2-Cachesteuerung empfängt "Load Outpage Buffer if Modified and not Locked" von der L2-Steuerung und bereitet einenlesevorgang einer L2-Cachezeile vor. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) empfangen hat, verwirft sie den Befehl. Die BSU- Steuerung leitet infolge des Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) den Befehl "Transfer L3 Line to Memory Buffer" ein. Die Speichersteuerung empfängt den Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) und erkennt, daß die BSU-Steuerung den vollständigen Abrufzugriff auf die L3-Zeile für die Übertragung zum Speicherpuffer beginnt. Die Speichersteuerung überträgt "End-of-Operation" zu dem anfordernden Prozessor.
  • Fall 4
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cachetreffer, und die Cachezeile ist modifiziert. Die L2-Cachezeile wird anschließend als unmodifiziert markiert, da ihr Inbalt zum L3-Prozessorspeicher übertragen wird. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des Befehls "Reset Modified Status and Flush L2 Line" blockiert. Die L2-Cachesteuerung empfängt von der L2-Steuerung "Load Output Buffer if Modified und not Locked" und bereitet einen Lesevorgang für die L2-Cachezeile vor. Sobald die L2-Cachesteuerung den Status von der L2-Steuerung empfangen hat, weist sie den L2-Cache an, eine Vollzeile aus der angegebenen L2-Cachekongruenz und dem Satz in den von der L2-Steuerung bezeichneten Seitenauslagerungspuffer einzulesen. Die Speichersteuerung empfängt den Status der L2-Cachezeile und erkennt, daß ein Entleerungsvorgang (Flush) zum Prozessorspeicher gerade ausgeführt wird. Der Status (modifiziert und nicht gesperrt) veranlaßt die BSU-Steuerung, die Entleerung zu beginnen. Der Befehl und die Adresse werden über den L2-Datenstrom zu dem benötigten Speicheranschluß übertragen, um die Schreiboperation für die L3- Zeile einzuleiten. Die Daten werden in 16-Byte-Abschnitten vom Seitenauslagerungspuffer zum Speicher übertragen. Nach der Übertragung des letzten Vierfachworts zum Speicher überträgt die BSU-Steuerung "End-of-Operation" zur Speichersteuerung. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, überträgt sie einen vorbehaltslosen Befehl "Transfer L3 Line to Memory Buffer" zur BSU-Steuerung und fordert an, daß Adresse/Schlüssel die physische L3-Adresse zur BSU- Steuerung sendet. Die Speichersteuerung überträgt "End-of-Operation" zu dem anfordernden Prozessor. Die BSU-Steuerung empfängtden Befehl von der Speichersteuerung und die physische Adresse von Adresse/Schlüssel und beginnt den Befehl "Transfer L3 Line to Memory Buffer".
  • Fälle 1, 3, 4
  • Die BSU-Steuerung leitet den 128 Byte langen Abruf des L3-Speicheranschlusses ein, indem sie Befehl und Adresse zum Prozessorspeicher überträgt und die Speicherkarten in dem gewünschten Anschluß auswählt. Der L3-Speicher führt den angeforderten Lesevorgang aus, übergibt die Daten zum L3-Schnittstellenregister, und der L2-Datenstrom leitet sie zu dem Speicherpuffer in der Speicherkanal-Datenpufferfunktion. Während die letzte Datenübertragung zum Speicherpuffer abgeschlossen wird, überträgt die BSU-Steuerung "End-of-Operation" zur Speichersteuerung. Während der Datenübertragungen zum L3-Schnittstellenregister überwacht Adresse/Schlüssel die Zeilen für nicht behebbaren Fehler vom Speicher. Falls während des Abrufs der L3-Zeile ein nicht behebbarer Fehler festgestellt wird, werden mehrere Funktionen ausgeführt. Bei jeder Übertragung zum Speicherpuffer wird ein Signal für einen nicht behebbaren Speicherfehler zum anfordernden Prozessor übertragen. Der Prozessor empfängt für einen gegebenen Befehl "Transfer L3 Line to Memory Buffer" maximal einen Hinweis auf einen nicht behebbaren Speicherfehler, nämlich den ersten, der von Adresse/Schlüssel festgestellt wurde. Die Doppelwortadresse des ersten von Adresse/Schlüssel festgestellten nicht behebbaren Speicherfehlers wird für den anfordernden Prozessor aufgezeichnet, und ein Anzeige-Zwischenspeicher für den L3-Speicher wird gesetzt. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den L3-Anschluß frei, hält aber die Sperre der Speicherpuffer-Ressourcen für diesen Prozessor aufrecht.
  • 2.4.14 Transfer L4 Line to Memory 13uffer (L4-Zeile zum Speicherpuffer übertragen)
  • Anwendung: 5/370-Anweisung PGIN (Page In - Seite einlagern). Für die Verwendung in der Anweisung PGIN muß die Speicherwarteschlange des anfordernden Prozessors leer sein, bevor dieser Befehl ausgegeben wird, um zu gewährleisten, daß alle Speichervorgänge für zuvor ausgeführte Anweisungen abgeschlossen sind. Dies ist ein Bestandteil der Operation zur Serialisierung und Prüfpunkt- Synchronisierung, die zu Beginn der Anweisung von der S/370-Architektur verlangt wird. Das Mikroprogramm ist dafür verantwortlich zu prüfen, ob die in der Anweisung PGIN angegebene Nummer des L4-Erweiterungsspeicherblocks (extended-storage-block) in der Konfiguration zur Verfügung steht, bevor sie diesen Befehl ausgibt. Die Nummer des Erweiterungsspeicherblocks müß vom Mikroprogramm in eine absolute Adresse des L4-Erweiterungspeichers umgewandelt werden. Sobald die Adresse erzeugt wurde, wird sie dem Speichersystem mit den L4-Adreßbits 4:24 an den Stellen 4:24 der Speicheradreßbits geliefert. Die L4-Adreßbits 1:3 werden an die Stellen 26:28 der Speicher-Adreßbits gesetzt. Der Befehl wird in Verbindung mit dem Befehl "Transfer Memory Buffer to L3 Line" verwendet, um die Verschiebung der Daten vom Erweiterungspeicher zum Prozessorspeicher abzuschließen. Da jedes Befehlspaar 128 Bytes verschiebt, wird zur Bearbeitung der 4-kB-Seite im Mikroprogramm eine Schleife mit 32 Iterationen eingerichtet. Der Befehl ist innerhalb des Prozessors synchronisiert, um die Aktivierung des Speicherbefehls zu gewährleisten, bevor die Speicheraktivität innerhalb des anfordernden Prozessors beginnt. Das Speichersystem gewährleistet die richtige Überlappung der operationellen Speicherbefehlspaare, die den Speicherpuffer verwenden. Das Mikroprogramm muß gewährleisten, daß ein bestimmter Prozessor, falls er sich innerhalb der Konfiguration im Ruhezustand befindet, in einem Status belassen wird, in dem er den Speicherpuffer nicht besitzt. Wenn dies nicht beachtet wird, kann sich eine Aussperr-Bedingung ergeben, da der Speicherbefehl "Transfer L4 Line to Memory Buffer" nicht abgeschlossen werden kann, wenn ein im Ruhezustand befindlicher Prozessor den Speicherpuffer besitzt.
  • Beschreibung des Speicherbefehls
  • Dieser Befehl stellt die erste Hälfte eines operationellen Speicherbefehlspaars dar. Der Befehl ist dafür ausgelegt, 128 Bytes mit Daten des L4-Erweiterungsspeichers auf einer 128-Byte-Grenze von der angegebenen L4-Adresse zu einem 128-Byte-Speicherpuffer zu kopieren. Der Speicherbefehl ordnet dem anfordernden Prozessor einen Speicherpuffer zu und hält ihn exklusiv, bis der zweite Befehl von dem anfordernden Prozessor empfangen und abgeschlossen ist. Für PGIN ist "Transfer Memory Buffer to L3 Line" der zweite Speicherbefehl. Der Befehl "Reset Process6r Storage Interface" kann als zweiter Befehl des Befehlspaars verwendet werden, um die zugewiesenen Ressourcen freizugeben, ohne die Ziel-Speicherposition zu modifizieren. Die skizzierte Implementierung gewährleistet nicht, daß ein anderer Prozessor oder Kanäle in dem Intervall zwischen dem Zeitpunkt, zu dem der Prozessor diesen Speicherbefehl ausgibt, und dem Zeitpunkt, zu dem die Speichersteuerung den zweiten Speicherbefehl aktiviert, um den Inhalt des zugeordneten Speicherpuffers für die Anweisung PGIN zu L3 zu übertragen, nicht auf die zu ladende L3-Zeile zugreifen können. Dies wird als minimale Schwäche aufgefaßt, da das Betriebssystem damit beschäftigt ist, diese 4-kB-Seite für die Anweisung PGIN einzulagern, und wohl keine gleichzeitigen Referenzen für den zugeordneten 4-kB-Seitenrahmen bestehen können. Vom Speichersystem werden keine Adreßprüfungen zu der vom Mikro- programm gelieferten Adresse des L4-Erweiterungsspeichers durchgeführt.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl und eine absolute Adresse auf einer 128-Byte-Grenze im L4-Erweiterungsspeicher an L1 aus. L1 überträgt die absolute Adresse und einen Speicherbefehl "Pass Address" zur L2-Steuerung und den eigentlichen Speicherbefehl zur Speichersteuerung. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den primären Befehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Command Valid" zu Speichersteuerung ünd Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt den eigentlichen Speicherbefehl und erwartet ein Signal von der L2-Steuerung, daß die Adresse verarbeitet wurde, bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Adreßpuffern für den Speicherbefehl. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt würde, und die Kennung des L4-Speicheranschlusses von der L2-Steuerung. Die Speichersteuerung weist die benötigten Ressourcen zu und aktiviert den Speicherbefehl, wenn er von der Priorität ausgewählt wird. Die Speichersteuerung überträgt zur BSU-Steuerung einen Befehl, 128 Bytes aus dem L4-Speicheranschluß zu dem angegebenen Speicherpuffer abzurufen, und fordert an, daß Adresse/Schlüssel die absolute L4-Adresse zur BSU-Steuerung sendet. Anschließend wird "End-of-Operation" zu dem anfordernden Prozessor übertragen. Die BSU-Steuerung empfängt den Befehl von der Speichersteuerung und die absolute L4-Adresse von Adresse/Schlüssel. Die BSU-Steuerung leitet den 128 Byte langen Abruf vom L4-Speicheranschluß ein, indem sie Befehl und Adresse zum Erweiterungspeicher überträgt und die Speicherkarten in dem gewünschten Anschluß auswählt. Der L4-Speicher führt den angeforderten Lesevorgang aus, indem er die Daten an das L3-Schnittstellenregister übergibt, und der L2- Datenstrom überträgt sie in der Speicherkanal-Datenpufferfunktion zum Speicherpuffer. Während die letzte Datenübertragung zum Speicher abgeschlossen wird, überträgt die BSU-Steuerung "End- of-Operation" zur Speichersteuerung. Während der Datenübertragungen zum L3-Schnittstellenregister überwacht Adresse/Schlüssel die Zeilen für nicht behebbare Fehler aus dem Speicher. Falls während des Abrufs der L4-Zeile ein nicht behebbarer Fehler festgestellt wird, werden mehrere Funktionen ausgeführt. Bei jeder Übertragung zum Speicherpuffer wird ein Signal für einen nicht behebbaren L3-Fehler zum anfordernden Prozessor übertragen. Der Prozessor empfängt für einen gegebenen Befehl "Transfer L4 Line to Memory Buffer" maximal einen Hinweis auf einen nicht behebbaren Speicherfehler, nämlich den ersten, der von Adresse/Schlüssel festgestellt wurde. Die Doppelwortadresse des ersten von Adresse/Schlüssel festgestellten nicht behebbaren Speicherfehlers wird für den anfordernden Prozessor aufgezeichnet, und ein Anzeige-Zwischenspeicher für den L4-Speicher wird gesetzt. Im Rahmen der Routine für den nicht behebbaren Speicherfehler muß das Mikroprogramm ermitteln, daß eine PGIN-Anweisung momentan ausgeführt wird, um den Bedingungscode vor dem Abschluß der S/370-Anweisung entsprechend zu setzen. Sobald die Speicheroperation "End-of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den L4-Anschluß frei, hält aber die Sperre der Speicherpuffer-Ressourcen für diesen Prozessor aufrecht.
  • 2.4.15 Transfer Memory Buffer to L4 Line (Speicherpuffer zur L4-Zeile übertragen)
  • Anwendung: S/370-Anweisung PGOUT (Page Out - Seite auslagern)
  • Für die Verwendung in der Anweisung PGOUT muß die Speicherwarteschlange des anfordernden Prozessors leer sein, bevor dieser Befehl ausgegeben wird, um zu gewährleisten, daß alle Speichervorgänge für zuvor ausgeführte Anweisungen abgeschlossen sind. Dies ist ein Bestandteil der Operation zur Serialisierung und Prüfpunkt-Synchronisierung, die zu Beginn der Anweisung von der S/370-Architektur verlangt wird. Das Mikroprogramm ist dafür verantwortlich, sich zu vergewissern, daß die in der Anweisung PGOUT angegebene Nummer des L4-Erweiterungsspeicherblocks (extended-storage-block) in der Konfiguration zur Verfügung steht, bevor sie diesen Befehl ausgibt. Die Nummer des Erweiterungsspeicherblocks muß vom Mikroprogramm in eine absolute Adresse des L4-Erweiterungspeichers umgewandelt werden. Sobald die Adresse erzeugt wurde, wird sie dem Speichersystem mit den L4-Adreßbits 4:24 an den Stellen 4:24 der Speicheradreßbits geliefert. Die L4-Adreßbits 1:3 werden an die Stellen 26:28 der Speicher-Adreßbits gesetzt. Der Befehl wird in Verbindung mit dem Befehl "Transfer L3 Line to Memory Buffer" verwendet, um die Verschiebung der Daten vom Prozessorspeicher zum Erweiterungspeicher abzuschließen. Da jedes Befehlspaar 128 Bytes verschiebt, wird zur Bearbeitung der 4-kB-Seite im Mikro programm eine Schleife mit 32 Iterationen eingerichtet. Der Befehl ist innerhalb des Prozessors synchronisiert, um die Aktivierung des Speicherbefehls zu gewährleisten, bevor die Speicheraktivität innerhalb des anfordernden Prozessors beginnt. Das Speichersystem gewährleistet die richtige Überlappung der operationellen Speicherbefehlspaare, die den Speicherpuffer verwenden.
  • Beschreibung des Speicherbefehls
  • Dieser Befehl stellt die zweite Hälfte eines operationellen Speicherbefehlspaars dar. Der Befehl verwendet einen zuvor zugeordneten Speicherpuffer für den Prozessor als die Quelle der in die angegebene Zeile des L4-Erweiterungsspeichers zu verschiebenden 128 Datenbytes und gibt ihn nach Beendigung dieser Operation frei. Für PGOUT ist "Transfer L3 Line to Memory Buffer" der erste Speicherbefehl. Die skizzierte Implementierung gewährleistet nicht, daß ein anderer Prozessor oder Kanäle in dem Intervall zwischen dem Zeitpunkt, zu dem der Prozessor den ersten Speicherbefehl ausgibt, und dem Zeitpunkt, zu dem die Speichersteuerung diesen Speicherbefehl aktiviert, um den Inhalt des zugeordneten Speicherpuffers für die Anweisung PGOUT zu L4 zu übertragen, nicht auf die zu verschiebende L3-Zeile zugreifen können. Dies wird nur als minimale Schwäche aufgefaßt, da das Betriebssystem damit beschäftigt ist, diese 4-kB-Seite für die Anweisung PGOUT auszulagern, und wohl keine gleichzeitigen Referenzen für diese 4-kB-Seite bestehen können. Vom Speichersystem werden keine Adreßprüfungen zu der vom Mikroprogramm gelieferten Adresse des L4-Erweiterungsspeichers durchgeführt.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl und eine absolute Adresse auf einer 128-Byte-Grenze im L4-Erweiterungsspeicher an L1 aus. L1 überträgt die absolute Adresse und einen Speicherbefehl "Pass Address" zur L2-Steuerung und den eigentlichen Speicherbefehl zur Speichersteuerung. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den primären Befehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Command Valid" zu Speichersteuerung und Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt den eigentlichen Speicherbefehl und erwartet ein Signal von der L2-Steuerung, daß die Adresse verarbeitet wurde, bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Adreßpuffern für den Speicherbefehl. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des L4-Speicherarischlusses von der L2-Steuerung. Die Speichersteuerung ordnet die erforderlichen Ressourcen zu und aktiviert bei Auswahl durch die Priorität den Speicherbefehl. Die Speichersteuerung überträgt zur BSU-Steuerung den Befehl, den Inhalt ds Speicherpuffers in der L4-Zeile zu speichern, und fordert an, daß Adresse/Schlüssel die absolute Adresse zur BSU- Steuerung sendet. Anschließend wird "End-of-Operation" zu dem anfordernden Prozessor übertragen. Die BSU-Steuerung empfängt den Befehl von der Speichersteuerung und die absolute L4-Adresse von Adresse/Schlüssel. Die BSU-Steuerunqleitet den Schreibvorgang der L4-Zeile ein, indem sie Befehl und Adresse über den L2- Datenstrom zum L4-Speicheranschluß leitet. Die BSU-Steuerung legt anschließend fest, daß der Inhalt des Speicherpuffers für die Übertragung zum L4-Speicher von der Speicherkanal-Datenpufferfunktion zum richtigen L3-Schnittstellenregister zu übertragen ist. Nach der letzten Datenübertragung zum Speicher wird "End-of-Operation" von der BSU-Steuerung zur Speichersteuerung übertragen. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den L4-Anschluß frei, um einen überlappten Zugriff auf den Speicheranschluß und die Sperre für die Speicherpuffer-Ressourcen zu ermöglichen.
  • 2.4.16 Test and Set (Prüfen und setzen)
  • Anwendung: Synchronisierte Software-Aktualisierungen an Speicherpositionen im Hauptspeicher, denen sich sowohl Kanäle als auch Prozessoren unterziehen. Das Mikroprogramm muß gewährleisten, daß die Speicherwarteschlange für den anfordernden Prozessor vor der ersten Ausgabe dieses Speicherbefehls innerhalb der E/A-Anweisung leer ist. Der Befehl ist innerhalb des Prozessors synchronisiert, um die Aktivierung des Speicherbefehls zu gewährleisten, bevor die Speicheraktivität innerhalb des anfordernden Prozessors beginnt. Das Mikroprogramm muß gewährleisten, daß ein bestimmter Prozessor innerhalb der Konfiguration, falls er sich im Ruhezustand befindet, in einem Status belassen wird, in dem er keinerlei Sperr-, Zeilenhalt- oder Seiteneinlagerungs- Einfrierbedingungen mit Anzeige eines nicht behebbaren Speicherfehlers aufweist. Wenn dies nicht beachtet wird, kann sich eine Aussperr-Bedingung ergeben, da der Speicherbefehl "Test and Set" nicht abgeschlossen werden kann, wenn ein im Ruhezustand befindlicher Prozessor eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingunq mit Anzeige eines nicht behebbaren Speicherfehlers in der angeforderten L2-Cachezeile aufweist. Wenn innerhalb einer E/A-Anweisung mehr als ein Befehl "Test and Set" ausgeführt wird und dazwischen anfallende Speicheranforderungen ausgeführt werden, ist das Mikroprogramm für die Speicherkonsistenz innerhalb der Anweisung verantwortlich. Das Speichersystem führt für "Test and Set"-Befehle keine Prüfungen auf anstehende Speicherungskonflikte durch. Innerhalb derselben E/A-Anweisung darf das Mikroprogramm keine sequentiellen Speichervorgänge zu einer L3-Zeile (128 Bytes) durchführen, bevor ein "Test and Set" für ein Byte innerhalb dieser L3-Zeile ausgeführt wurde. Aufgrund einer vorzeitigen Hardware-Seitenverlagerung in den L2-Cache für sequentielle Speichervorgänge könnte diese Sequenz verursachen, daß der Prozessor blockiert.
  • Beschreibung des Speicherbefehls
  • Ein Mikroprogramm liefert den Befehl, eine absolute Adresse (auf einer 8-Byte-Grenze) und ein einzelnes Datenbyte, das als Sperrbyte bezeichnet wird. Das Sperrbyte enthält zwei Felder. Das erste Bit (Bit 0) ist das Sperrbit. Die restlichen sieben Bits innerhalb des Bytes enthalten eine Prozeßkennung. Wie beim Speicher erörtert, bezeichnet der Wert '0'b im Sperrbit, daß das zugeordnete Speicherfeld momentan ungesperrt, zur Verwendung verfügbar ist. Der Wert '1'b bezeichnet, daß das Speicherfeld gesperrt ist oder gegenwärtig bereits durch einen anderen Prozeß benutzt wird, der das Speicherfeld momentan verändert und die exklusive Nutzung des Inhalts benötigt. Die restlichen sieben Bits kennzeichnen den momentanen (bzw. letzten) Prozeßeigner der Sperre für das zugehörige Speicherfeld. Wenn ein Mikroprogramm den Befehl ausgibt, dient dies dem Zweck, sich exklusiven Zugriff auf das dem Sperrbyte zugeordnete Speicherfeld zu beschaffen. Ein Mikroprogramm liefert eine '1'b im höherwertigen Bit und die Prozeßkennung des Anforderers. Befehl, absolute Adresse und Sperrbyte werden an das Speichersystem übergeben. Aus der neuesten Kopie der adressierten Speicherposition wird der aktuelle Status des Sperrbits abgefragt. Falls der Wert des Sperrbits '0'b ist, wird das neue Sperrbyte in die Speicherposition eingefügt, und die neuen Daten werden zu dem Prozessör zurückgeliefert; falls der Wert des Sperrbits '1'b ist, bleibt die Speicherposition unverändert, und der ursprüngliche Speicherinhalt wird zu dem Prozessor zurückgeliefert. Die absolute Adresse wird verwendet, um das L2-Cache-Verzeichnis zu durchsuchen. Falls die das Sperrbyte enthaltende L2-Cachezeile modifiziert ist, wird die L2-Cachezeile in den L3-Prozessorspeicher entleert, bevor das Sperrbyte für die Operation "Test and Set" abgerufen wird. Dies gewährleistet exklusiven Zugriff auf die Daten, da der Speicheranschluß eine nicht gemeinsam nutzbare Ressource ist. Der Eintrag im L2-Cacheverzeichnis und der entsprechende Eintrag im L2-Miniverzeichnis werden entwertet. Die L1-Statusmatrizen werden ebenfalls durchsucht, und etwaige Kopien der L2-Cachezeile, die auf der Stufe des L1-Cache existieren, werden entfernt, und die betreffenden L1-Statuseinträge werden gelöscht. Die das Sperrbyte enthaltende L3-Zeile wird anschließend in den L2-Cache eingelagert, und die gewünschte Halbzeile wird in den L1-Operandencache des Anforderers eingelagert. Das Sperrbyte wird in Abhängigkeit vom aktuellen Status des Sperrbits an der Speicherposition vorbehaltlich modifiziert, bevor die Daten in den Cachespeicher geladen werden. Das adressierte Byte wird zum Prüfen der Prozeßkennung zum Prozessor übertragen. Eine Übereinstimmung mit dem gemeinsam mit dem Be- fehl gelieferten Sperrbyte bedeutet, daß die Sperre dem Anforderer genehmigt wurde; eine Diskrepanz bedeutet, daß das Speicherfeld durch einen anderen Prozeß momentan gesperrt ist, der durch die Prozeßkennung in dem vom Prozeßspeicher zurückgelieferten Byte bezeichnet wird.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl, eine absolute Adresse und das aus dem lokalen Speicher stammende Sperrbyte an L1 aus. L1 entwertet die zugehörige L1-Cachezeile (sofern vorhanden) im L1- Operandencache. L1 überträgt Primärbefehl, Speicherbefehl, absolute Adresse und Sperrbyte in Byte 0 der 8 Byte breiten Speicherdaten-Schnittstelle zu L2. Im folgenden Zyklus überträgt L1 den. Befehl "Test and Set" und den L1-Cachesatz, der die L1- Seiteneinlagerungsdaten aus dem Prozessorspeicher aufnehmen soll. Im Falle eines L1-Cachetreffers wird der Cachesatz des aktuellen L1-Eintrags übertragen; bei einem L1-Cache-Mißerfolg wählt der Ersetzungsalgorithmus den zu ladenden Cachesatz. Die L2-Steuerung empfängt Primärbefehl, Speicherbefehl und absolute Adresse, gefolgt von dem Befehl "Test and Set" und dem L1D-Cachesatz. Die das Sperrbyte enthaltenden Daten werden in den anderen Datenpuffer geladen, da der Speicherbefehl nicht direkt auf den L2-Cache zugreift. Die L2-Steuerung hält den L1D-Cachesatz für eine spätere Aktualisierung des L1-Status zurück. Sofern keine Seiteneinlagerung des L2-Cache für die Statuswarteschlange des anfordernden Prozessors ansteht, darf der Befehl "Test and Set" in die L2-Cachepriorität eingetragen werden. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die L2-Steuerung setzt den Zwischenspeicher für anstehende Befehlspuffer-Seiteneinlagerung für die "Test and Set"-Anforderung. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Speicherbefehl-Adreßpuffern. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl "Test and Set" und die Speicheranschlußkennung von der L2-Steuerung. Die Speichersteuerung weist die benötigten Ressourcen zu und aktiviert den Speicherbefehl, wenn er von der Priorität ausgewählt wird. Die Entwertung und Löschung für den Befehl "Test and Set" wird zur L2-Steuerung übertragen, und Adresse/Schlüssel wird angewiesen, die absolute Adresse zur L2-Steuerung und die physische Adresse zur BSU-Steuerung zu übertragen. Die Speichersteuerung überträgt einen Befehl zur BSU-Steuerung. Dieser Befehl, "Unload Outpage Buffer if Modified and not Locked" oder "Inpage for Test and Set if not Modified and not Locked", wird von der BSU-Steuerung vorbehaltlich ausgeführt, und zwar in Abhängigkeit vom Status der L2-Cachezeile, die anschließend von der L2-Steuerung mit dem Befehl "Load Qutpage Buffer if Modified and not Locked" übertragen wird. Die BSU-Steuerung empfängt den Befehl von der Speichersteuerung, die physische Adresse von Adresse/Schlüssel und erwartet einen Status von der L2-Steuerung. Die L2-Steuerung empfängt den Befehl der Speichersteuerung, die L2-Cachezeile für "Test and Set" zu entwerten, und verwendet nach der Auswahl durch die Bearbeitungspriorität des L2-Cache die Adresse von Adresse/Schlüssel, um das L2-Cacheverzeichnis zu durchsuchen. Ein Befehl "Load Outpage Buffer if Modified and not Locked" wird zur L2-Cachesteuerung übertragen, und die Befehlsantwort wird zur Speichersteuerung übertragen. Aus der Durchsuchung des L2-Verzeichnisses ergibt sich eine von fünf Bedingungen.
  • Fall A
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg, aber eine vorausgegangene Seiteneinlagerung des L2-Cache steht für einen anderen Prozessor bezüglich derselben L2-Cachezeile an. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Aufgrund des L2-Cache-Mißerfolgs wird der Status "Not Modified" erzwungen; aufgrund des Einfrierkonflikts der vorausgegangenen Seiteneinlagerung wird ein Sperrstatus gesendet. Die Vergleiche der L1-Statusmatrizen sind aufgrund des L2-Cache-Mißerfolgs blockiert. Die L2-Cachesteuerung empfängt "Load Outpage Buffer if Modified and not Locked" von der L2-Stetierung und bereitet einen Lesevorgang der L2-Cachezeile vor. Die L2-Cachesteuerung und die BSU-Steuerung verwerfen den Befehl, sobald der Status der L2-Cachezeile (nicht modifiziert und gesperrt) empfangen wurde. Die Speichersteuerung empfängt den Status der L2-Cachezeile (gesperrt) und bricht die momentane Ausführung des Befehls ab. Der Speicherbefehl wird vorübergehend ausgesetzt, so daß Zeit zur Behebung des Speicherungskonflikts zur Verfügung steht, und wird anschließend wieder in die Priorität der Speichersteuerung eingetragen, um zu versuchen, den Befehl vollständig auszuführen. Dieser Vergleich ist erforderlich, obwohl der Befehl "Test and Set" über den L3-Anschluß verfügt, um der Möglichkeit vorzubeugen, daß die gleiche L3-Cachezeile zweimal in den L2- Cache geladen wird. Es sei vorausgesetzt, daß eine votausgegangene Seiteneinlagerungsanforderung von einem anderen Prozessor für dieselbe Zeile wie die Anforderung für "Test and Set" ansteht. Die "Test and Set"-Anforderung führt ihre Seiteneinlagerung in den L2-Cache aus, da die Speichersteuerung sie zuerst ausgewählt hat, und anschließend wird die zuvor anstehende Seiteneinlagerungsanforderung von der Speichersteuerung berücksichtigt. Dieselbe L3-Zeile wird anschließend erneut in den L2-Cache eingelagert, wobei eventuell gleichzeitig existierende Kopien im L2-Cache erzeugt werden.
  • Fall B
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg, und es besteht kein Einfrierkonflikt. Die L2- Steuerung überträgt die absolute Adresse zu Adresse/Schlüssel. Der Status der L2-Zeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Zeile wird zur Speichersteuerung übertragen. Aufgrund des L2-Cache-Mißerfolgs wird der Status "nicht modifiziert" erzwungen. Für die das "Test and Set"-Byte enthaltende L3-Zeile wird ein Einfrierregister für Prozessor-Seiteneinlagerung gesetzt, da eine Seiteneinlagerungssequenz zum L1- und L2-Cache auf die anfängliche Durchsuchung des L2-Verzeichnisses folgen wird. Die Vergleiche der L1-Statusmatrizen sind aufgrund des L2-Cache-Mißerfolgs blockiert. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Adreßpuffern für Speicherbefehle und Seiteneinlagerungen. Die L2-Cachesteuerung empfängt "Load Outpage Buffer if Modified and not Locked" von der L2-Steuerung und bereitet einen Lesevorgang für eine L2-Cachezeile vor. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile empfangen hat (nicht modifiziert und nicht gesperrt), bereitet sie einen Einlagerungsvorgang für L2- Cache vor. Die BSU-Steuerung leitet infolge des Status der L2- Cachezeile (nicht modifiziert und nicht gesperrt) die Seiteneinlagerung für den Befehl "Test and Set" ein. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Mißerfolg und nicht gesperrt) und erkennt, daß die BSU-Steuerung den vollständigen Abrufzugriff der L3-Zeile mit einer vorbehaltlichen Modifikation des Sperrbytes der Speicherposition für die Seiteneinlagerung in den L1- und L2-Cache beginnt. Es ist keine Entwertung des Eintrags im L2-Miniverzeichnis erforderlich. Die Speichersteuerung überträgt zur L2-Steuerung einen Befehl, den L2- Status für eine anstehende Seiteneinlagerung zu setzen, und markiert die ankommende Zeile als modifiziert, und zwar unabhängig davon, ob der Inhalt durch die "Test and Set"-Operation tatsächlich geändert wurde.
  • Fall C
  • Eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers ist für die gewählte L2-Cachezeile aktiv. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Caches teuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund der Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers blockiert. Die L2- Cachesteuerung empfängt "Load outpage Buffer if Modified and not Locked" von der L2-Steuerung und bereitet einen Lesevorgang für die L2-Cachezeile vor. Die L2-Cachesteuerung und die BSU-Steuerung verwerfen den Befehl, sobald sie den Status der L2-Cachezeile (gesperrt) empfangen haben. Die Speichersteuerung empfängt den Status der L2-Cachezeile (gesperrt) und bricht die momentane Ausführung des Befehls ab. Der Speicherbefehl wird vorübergehend ausgesetzt, so daß Zeit zur Behebung des Sperrkonflikts zur Verfügung steht, und anschließend wieder in die Priorität der Speichersteuerung eingetragen, um zu versuchen, den Befehl vollständig auszuführen.
  • Fall D
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cachetreffer, und die Cachezeile ist unmodifiziert. Der L2-Cacheeintrag wird als ungültig markiert. Die L2-Steuerung überträgt die absolute Adresse und den L2-Cachesatz zu Adresse/Schlüssel. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Ein Seiteneinlagerungs-Einfrierregister für den Prozessor wird für die das "Test and Set"-Byte enthaltende L3-Zeile gesetzt, da eine Seiteneinlagerungssequenz zum L1- und L2-Cache auf die anfängliche Durchsuchung des L2-Verzeichnisses folgen wird. Alle L1-Statusmatrizen werden nach Kopien der beiden L1-Cachezeilen innerhalb der als ungültig markierten L2-Cachezeile durchsucht. Die niederwertige L2-Cachekongruenz wird verwendet, um die L2- Statusmatrizen zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als Komparand mit den Ausgabedaten der L1-Statusmatrizen verwendet. Falls L1-Cachekopien gefunden werden, werden die entsprechenden L1/L2-Adreßbusse zur Entwertung angefordert. Die L1-Cachekongruenz und die L1-Cachesätze (zwei für den L1-Operandencache und zwei für den L1-Anweisungscache) werden zur Entwertung der L1-Cachekopien zu den entsprechenden Prozessoren gleichzeitig übertragen, nachdem die Anforderung des Adreßbusses durch diesen L1 genehmigt wurde. Der Befehl "Invalidate and Flush for Test and Set" ist von der Anforderung einer lokalen Entwertung oder Quer-Entwertung nicht betroffen, da L1 die Genehmigung der benötigten Adreßschnittstelle in einer festen Zahl von Zyklen gewährleistet. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Speicherbefehlund Seiteneinlagerungs-Adreßpuffern. Der L2-Cachesatz wird mit den Speicherbefehl-Adreßpuffern zurückgehalten. Die L2-Cachesteuerung empfängt "Load Outpage Buffer if Modified and not Lokked" von der L2-Steuerung und bereitet einen Lesevorgang der L2- Cachezeile vor. Sobald die L2-Cachesteuerung den Status der L2- Cachezeile (nicht modifiziert und nicht gesperrt) empfangen hat, bereitet sie eine L2-Cache-Seiteneinlagerung vor. Die BSU-Steuerung leitet infolge des Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) die Seiteneinlagerung für den Befehl "Test and Set" ein. Die Speichersteuerung empfängt den Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) und erkennt, daß die BSU-Steuerung den vollständigen Abrufzugriff für die L3-Zeile (mit einer vorbehaltlichen Modifikation des Sperrbytes der Speicherposition) für die Seiteneinlagerung in den L1- und L2-Cache beginnt. Die Speichersteuerung fordert eine Entwertung des betreffenden Eintrags im L2-Miniverzeichnis unter Verwendung der diesem Prozessor in Adresse/Schlüssel zugeordneten Speicherbefehl-Adreßpuffer an. Die Speichersteuerung überträgt zur L2-Steuerung einen Befehl, den L2-Status für eine anstehende Seiteneinlagerung zu setzen, und markiert die ankommende Zeile als modifiziert, und zwar unabhängig davon, ob der Inhalt durch die Operation "Test and Set" tatsächlich geändert wurde.
  • Fall E
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Treffer, und die Cachezeile ist modifiziert. Die L2-Cachezeile wird anschließend als ungültig markiert, da ihr Inhalt zum L3-Prozessorspeicher übertragen wird. Die L2-Steuerung überträgt die absolute Adresse und den L2-Cachesatz zu Adresse/Schlüssel. Der Status der L2-Cachezeile und der Cachesatz werden zur L2- Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Ein Seiteneinlagerungs-Einfrierregister des Prozessors wird für die das "Test and Set"-Byte enthaltende L3-Zeile gesetzt, da auf die anfängliche Durchsuchung des L2-Verzeichnisses eine Seiteneinlagerungssequenz zum L1- und L2-Cache folgen wird. Alle L1-Statusmatrizen werden nach Kopien der beiden L1-Cachezeilen innerhalb der als ungültig markierten L2-Cachezeile durchsucht. Die niederwertige L2-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als Komparand mit den Ausgabedaten der L1-Statusmatrix verwendet. Falls L1-Cachekopien gefunden werden, werden die entsprechenden L1/L2-Adreßbusse zur Entwertung angefordert. Die L1-Cachekongruenz und die L1-Cachesätze (zwei für den L1-Operandencache und zwei für den L1-Anweisungscache) werden zur Entwertung der L1- Cachekopien zu den betreffenden Prozessoren gleichzeitig über- tragen, nachdem die Anforderung des Adreßbusses von diesem L1 genehmigt wurde. Die Entwertung und Entleerung für den Befehl "Test and Set" ist von der Anforderung einer lokalen Entwertung oder Quer-Entwertung nicht betroffen, da L1 die Genehmigung der benötigten Adreßschnittstelle in einer festen Zahl von Zyklen gewährleistet. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Speicherbefehl- und Seiteneinlagerungs- Adreßpuffernc Der L2-Cachesatz wird mit den Speicherbefehl- Adreßpuffern zurückgehalten. Die L2-Cachesteuerung empfängt "Load outpage Buffer if Modified and not Locked" von der L2-Steuerung und bereitet einen Lesevorgang der L2-Cachezeile vor. Sobald sie den Status von der L2-Steuerung empfangen hat, weist die L2-Cachesteuerung den L2-Cache an, eine vollständige Zeile aus der angegebenen L2-Cachekongruenz und dem Satz in den von der L2-Steuerung angegebenen Seitenauslagerungspuffer einzulesen. Die Speichersteuerung empfängt den Status der L2-Cachezeile (modifiziert und nicht gesperrt) und fordert die Entwertung des entsprechenden Eintrags im L2-Miniverzeichnis unter Verwendung der diesem Prozessor in Adresse/Schlüssel zugeordneten Speicherbefehl-Adreßpuffer an. Der Status (L2-Cachetreffer und modifiziert) veranlaßt die BSU-Steuerung, die Auslagerung zu beginnen. Die BSU-Steuerung beginnt die Auslagerungssequenz, indem sie einen Vollzeilen-Schreibbefehl samt Adresse über den Datenstrom des L2-Cache zu dem gewählten Speicheranschluß überträgt. Die Daten werden in 16-Byte-Abschnitten vom Seitenauslagerungspuffer zum Speicher übertragen. Nach der Übertragung des letzten Vierfachworts zum Speicher überträgt die BSU-Steuerung "End-of-Operation" zur Speichersteuerung. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, beginnt sie einen vollständigen Abrufzugriff für die L3- Zeile (mit einer vorbehaltlichen Modifikation des Sperrbytes der Speicherposition) für die Seiteneinlagerung in den L1- und L2- Cache. Die Speichersteuerung überträgt zur L2-Steuerung einen Befehl, den L2-Status für anstehende Seiteneinlagerung zu setzen, und markiert dte ankommende Zeile als modifiziert, und zwar unabhängig davon, ob der Inhalt durch die "Test and Set"-Operation tatsächlich modifiziert wurde. Die Speichersteuerung sendet zur BSU-Steuerung einen Befehl, 128 Bytes für "Test and Set" von dem L3-Speicheranschluß zu dem angegebenen Seiteneinlagerungspuffer abzurufen, und fordert an, daß Adresse/Schlüssel die physische L3-Adresse zur BSU-Steuerung sendet. Die BSU-Steuerung empfängt den Befehl von der Speichersteuerung und die physische Adresse von Adresse/Schlüssel und beginnt die Seiteneinlagerung für "Test and Set".
  • Fälle B, D, E
  • Die BSU-Steuerung leitet den 128 Byte langen Abruf des L3-Speicheranschlusses ein, indem sie Befehl und Adresse zum Prozessorspeicher überträgt und die Speicherkarten in dem gewünschten Anschluß auswählt. Die Daten werden in 16-Byte-Abschnitten über eine mit dem L3-Speicheranschluß gemultiplexte Befehls-/Adreß- und Datenschnittstelle übertragen. Acht Übertragungen aus dem L3-Speicher werden benötigt, um die 128 Byte lange L2-Cachezeile zu beschaffen. Die Sequenz von Vierfachwort-Übertragungen beginnt mit dem Vierfachwort, das das vom Prozessor angeforderte Doppelwort enthält. Sobald er das erste Vierfachwort empfangen hat, überprüft der L2-Datenstrom das Sperrbyte für die Speicherposition und aktualisiert das Datenbyte vorbehaltlich unter Verwendung des im anderen Datenpuffer zurückgehaltenen Sperrbyte. Die drei nächsten Übertragungen enthalten den Rest der L1-Cachezeile. Die letzten vier Übertragungen enthalten den Rest der L2- Cachezeile. Die vom Prozessor gewünschten Daten werden so zum L1-Cache übertragen, wie sie im L2-Cache empfangen (vorbehaltlich modifiziert) und in einen Seiteneinlagerungspuffer des L2- Cache geladen werden. Während die Verarbeitung neu gestartet wird, wird die Seiteneinlagerungsoperation des L1-Cache mit dem Laden des Cache abgeschlossen, gefolgt von der Aktualisierung des L1-Cacheverzeichnisses. Während die letzte Datenübertragung zum Seiteneinlagerungspuffer des L1-Cache abgeschlossen wird, aktiviert die BSU-Steuerung "Inpage Complete" des betreffenden Prozessors für die L2-Steuerung. Während der Datenübertragungen zum L2-Cache überwacht Adresse/Schlüssel die Fehlerzeilen für nicht behebbaren L3-Fehler. Falls während des Seiteneinlagerungsvorgangs ein nicht behebbarer Fehler festgestellt wird, werden mehrere Funktionen ausgeführt. Bei jeder Doppelwort-Übertragung zum L1-Cache wird gleichzeitig ein Signal für einen nicht behebbaren L3-Fehler übertragen, um den Status der Daten zu kennzeichnen. Der Status der restlichen Vierfachwörter in der betreffenden L2-Cachezeile wird ebenfalls dem anfordernden Prozessor mitgeteilt. Der Prozessor empfängt für eine gegebene Seiteneinlagerungsanforderung maximal einen Hinweis auf einen nicht behebbaren Speicherfehler, nämlich den ersten, der von Adresse/Schlüssel festgestellt wurde. Die Doppelwortadresse des ersten von Adresse/Schlüssel festgestellten nicht behebbaren Speicherfehlers wird für den anfordernden Prozessor aufgezeichnet. Falls für irgendwelche Daten in der vom Prozessor angeforderten L1-Zeile ein nicht behebbarer Speicherfehler auftritt, wird ein Hinweis für die Bearbeitung eines nicht behebbaren Speicherfehlers gesetzt. Falls schließlich ein nicht behebbareüspeicherfehler für irgendwelche zum Seiteneinlagerungspuffer des L2-Cache übertragenen Daten auftritt, sendet Adresse/Schlüssel ein Signal zur L2-Steuerung, um den Abschluß der Seiteneinlagerung in den L2-Cache zu verhindern. Die L2-Cachepriorität wählt für den Prozessor das "Inpage Complete" zur Bearbeitung aus. Die L2- Steuerung überträgt einen Befehl "Write Inpage Buffer" und die L2-Cachekongruenz zur L2-Cachesteuerung und eine Statusantwort "Inpage Complete" zur Speichersteuerung. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von drei möglichen Bedingungen.
  • Fall 1
  • Ein nicht behebbarer L3-Speicherfehler wurde bei der Seiteneinlagerung in den Seiteneinlagerunqspuffer des L2-Cache festgestellt. Die L2-Steuerung erkennt, daß fehlerhafte Daten im Seiteneinlagerungspuffer vorhanden sind, und blockiert die Aktualisierung des L2-Cacheverzeichnisses. Das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, wird geleert. Die L1-Operandencache- Anzeige für diesen Prozessor wird gesetzt, um einen nicht behebbaren Speicherfehler zu melden. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Für den auf normale Weise zur L2- Cachesteuerung und Speichersteuerung übertragenen Status der L2- Cachezeile wird "gesperrt und nicht modifiziert" erzwungen. Der gewählte L2-Cachesatz wird zur L2-Cachesteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1- Statusmatrizen werden nicht geändert. Die L2-Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet einen Schreibvorgang der L2-Zeile vor, um die Seiteneinlagerung des L2-Cache abzuschließen, solange der Status vön der L2-Steuerung aussteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Zeilenstatus (gesperrt und nicht modifiziert) und setzt die Steuerungsinformationen zurück, die dem L2-Cache-Seiteneinlagerungspuffer zugeordnet sind, der diesem Befehl "Write Inpage Buffer" zugeordnet ist. Die Aktualisierung des L2-Cache wird abgebrochen, und die BSU-Steuerung überträgt "End-of-Operation" zur Speichersteuerung. Die Speichersteuerung empfängt den Status der L2-Cachezeile (gesperrt und nicht modifiziert) und gibt die von der Seiteneinlagerungsanforderung des Prozessors zurückgehaltenen Ressourcen frei. Das L2-Miniverzeichnis wird nicht aktualisiert.
  • Fall 2
  • Die L2-Steuerung wählt eine L2-Cachezeile zum Ersetzen aus. In diesem Fall zeigt der Status der ersetzten Zeile, daß sie unmodifiziert ist; es ist keine Auslagerung erforderlich. Das L2- Verzeichnis wird aktualisiert, um die Existenz der neuen L2-Ca- chezeile wiederzugeben. Das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, wird geleert. Der gewählte L2-Cachesatz wird zu Adresse/Schlüssel und zur L2-Cachesteuerung übertragen. Der Status der ersetzten L2-Cachezeile wird zur L2-Cachesteuerung und zur Speichersteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1-Statusmatrizen für alle L1- Caches in der Konfiguration werden äuf Kopien der ersetzten L2- Cachezeile geprüft. Falls Kopien gefunden werden, werden die betreffenden Entwertungsanforderungen zu den L1-Caches übertragen. Aus dem L1-Status wird der L1-Kopiestatus für die ersetzte L2-Cachezeile gelöscht. Die L1-Statusmatrix des L1-Operandencache des anfordernden Prozessors wird aktualisiert, um die Existenz der L1-Zeile im L1-Cache wiederzugeben. Die L1-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als diejenigen Daten verwendet, die in den Eintrag gestellt werden, der von dem L1-Cachesatz gewählt wird, der mit dem Speicherbefehl "Test and Set" des Prozessors übertragen wird. Die L2-Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet einen Schreibvorgang der L2-Zeile vor, um die Seiteneinlagerung des L2-Cache abzuschließen, solange der Status von der L2-Steuerung aussteht. Die L2-Cachesteuerung empfängt den L2- Cachesatz und den Status der ersetzten Zeile. Da die ersetzte Zeile unmodifiziert ist, signalisiert die L2-Cachesteuerung dem L2-Cache, daß der Seiteneinlagerungspuffer in den L2-Cache zu schreiben ist. Da dies ein Vollzeilen-Schreibvorgang ist und die Cachesä£ze verschachtelt sind, muß der L2-Cachesatz verwendet werden, um die Adreßbits 25 und 26 so zu manipulieren, daß der Schreibvorgang der L2-Cachezeile zugelassen wird. Die BSU-Steuerung überträgt "End-of-Operation" zur Speichersteuerung. Adresse/Schlüssel empfängt den L2-Cachesatz von der L2-Steuerung. Das Adreßregister für die Aktualisierung des L2-Miniverzeichnisses wird aus den Seiteneinlagerungs-Adreßpuffern und dem L2-Cachesatz gesetzt, der von der L2-Steuerung empfangen wurde. Die Speichersteuerung empfängt den Status der ersetzten Zeile. Da keine Auslagerung erforderlich ist, gibt die Speichersteuerung die von der Seiteneinlagerungsanforderung zurückgehaltenen Ressourcen frei. Die Speichersteuerung überträgt zu Adresse/Schlüssel einen Befehl, das L2-Miniverzeichnis unter Verwendung des diesem Prozessor zugeordneten Adreßregisters für die Aktualisierung des L2-Miniverzeichnisses zu aktualisieren. Danach markiert die Speichersteuerung die aktuelle Operation als abgeschlossen und gestattet es dem anfordernden Prozessor, sich wieder in die Speicherressourcen-Priorität eintragen zu lassen.
  • Fall 3
  • Die L2-Steuerung wählt eine L2-Cachezeile zum Ersetzen aus. In diesem Fall zeigt der Status der ersetzten Zeile, daß sie modifiziert ist; eine L2-Cache-Auslagerung ist erforderlich. Das L2- Verzeichnis wird aktualisiert, um die Existenz der neuen L2-Cachezeile wiederzugeben. Das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, wird geleert. Die aus dem Verzeichnis gelesene Adresse wird gemeinsam mit dem gewählten L2-Cachesatz zu Adresse/Schlüssel übertragen. Der gewählte L2-Cachesatz wird zur L2- Cachesteuerung übertragen. Der Status der ersetzten L2-Cachezeile wird zur L2-Cachesteuerung und zur Speichersteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1-Statusmatrizen für alle L1-Caches in der Konfiguration werden auf Kopien der ersetzten L2-Cachezeile überprüft. Falls Kopien gefunden werden, werden die betreffenden Entwertungsanforderungen zu den L1-Caches übertragen. Aus dem L1-Status wird der L1-Kopiestatus für die ersetzte L2-Cachezeile gelöscht. Die L1-Statusmatrix des L1-Operandencache des anfordernden Prozess-ors wird aktualisiert, um die Existenz der L1-Zeile im L1-Cache wiederzugeben. Die L1-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als diejenigen Daten verwendet, die in den Eintrag gestellt werden, der durch den mit dem Speicherbefehl "Test and Set" des Prozessors übertragenen L1-Cachesatz ausgewählt wird. Die L2-Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet einen Schreibvorgang für die L2-Zeile vor, um die Seiteneinlagerung des L2-Cache abzuschließen, solange der Status von der L2-Steuerung aussteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Status der ersetzten Zeile. Da die ersetzte Zeile modifiziert ist, signalisiert die L2-Cachesteuerung dem L2-Cache, daß ein Vollzeilen-Lesevorgang zu dem mit dem Seiteneinlagerungspuffer gepaarten Seitenauslagerungspuffer erforderlich ist, bevor die Daten des Seiteneinlagerungspuffers zum L2-Cache geschrieben werden. Da dies Vollzeilenzugriffe sind und die Cachesätze verschachtelt sind, muß der L2-Cachesatz verwendet werden, um die Adreßbits 25 und 26 so zu manipulieren, daß die Zugriffe auf die L2-Cachezeile zugelassen werden. Adresse/Schlüssel empfängt die Seitenauslagerungsadresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie gemeinsam mit dem L2-Cachesatz in den Seitenauslagerungs-Adreßpuffern. Das Adreßregister für die Aktualisierung des L2-Miniverzeichnisses wird aus den Seiteneinlagerungs-Adreßpuffern und dem L2-Cachesatz gesetzt, der von der L2-Steuerung empfangen wurde. Adresse/Schlüssel überträgt zur Vorbereitung des Schreibvorgangs der L3-Zeile die physische Seitenauslagerungsadresse zur BSU-Steuerung. Die Speichersteuerung empfängt den Status der ersetzten Zeile. Da eine Auslagerung erforderlich ist, kann die Speichersteuerung die L3-Ressourcen nicht freigeben, bevor die Aktualisierung des Speichers abgeschlossen ist. Es wird gewährleistet, daß Auslagerungen zu demselben Speicheranschluß erfolgen, der für die Seiteneinlagerung verwendet wird. Die Speichersteuerung überträgt zu Adresse/Schlüssel einen Befehl, das L2-Miniverzeichnis unter Vetwendung des diesem Prozessor zugeordneten Adreßregisters für die Aktualisierung des L2-Miniverzeichnisses zu aktualisieren. Die Speichersteuerung markiert die aktuelle Operation anschließend als abgeschlossen und gestattet es dem anfordernden Prozessor, wieder in die Speicherressourcen-Priorität eingetragen zu werden. Die BSU-Steuerung erkennt, daß die ersetzte L2-Cachezeile modifiziert wurde, und startet die Auslagerungssequenz, nachdem sie die Auslagerungsadresse von Adresse/Schlüssel empfangen hat, indem sie einen Vollzeilen-Schreibbefehl samt Adresse über den Datenstrom des L2-Cache zu dem ausgewählten Speicheranschluß überträgt. Die Daten werden in 16- Byte-Abschnitten vom Seitenauslagerungspuffer zum Speicher übertragen. Nach der letzten Vierfachwort-Übertragung zum Speicher überträgt die BSU-Steuerung "End-of-Operation" zur Speichersteuerung. Sobald die Speichersteuerung "End-of-Operation" vonder BSU-Steuerung empfangen hat, gibt sie den L3-Anschluß frei, um einen überlappten Zugriff auf den Speicheranschluß zu ermöglichen.
  • 2.4.17 Transfer Memory Buffer to L3 Line (Speicherpuffer zur L3-Zeile übertragen)
  • Anwendung: 5/370-Anweisung PGIN (Page In - Seiteneinlagerung) - zur Verwendung in der PGIN-Anweisung muß die Speicherwarteschlange des anfordernden Prozessors leer sein, bevor dieser Befehl ausgegeben wird, um zu gewährleisten, daß alle Speichervorgänge für zuvor ausgeführte Anweisungen abgeschlossen sind. Dies ist ein Bestandteil der Operation zur Serialisierung und Prüfpunkt- Synchronisierung, die zu Beginn der Anweisung von der S/370-Ardhitektur verlangt wird. Der Befehl wird in Verbindung mit dem Befehl "Transfer L4 Line to Memory Buffer" verwendet, um die Verschiebung der Daten vom Erweiterungspeicher zum Prozessorspeicher abzuschließen. Da jedes Befehlspaar 128 Bytes verschiebt, wird im Mikroprogramm eine Schleife mit 32 Iterationen eingerichtet, um die 4-kB-Seite zu verarbeiten. Der Befehl ist innerhalb des Prozessors synchronisiert, um die Aktivierung des Speicherbefehls zu gewährleisten, bevor die Speicheraktivität innerhalb des anfordernden Prozessors beginnt. Das Speichersystem gewährleistet die richtige Überlappung der operationellen Speicherbefehlspaare unter Verwendung des Speicherpuffers. Das Mikroprogramm muß gewährleisten, daß ein bestimmter Prozessor, wenn er sich innerhalb der Konfiguration im Ruhezustand befindet, in einem Status belassen wird, in dem er keine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers aufweist. Wenn dies nicht beachtet wird, kann sich eine Aussperr-Bedingung ergeben, da der Speicherbefehl "Transfer Memory Buffer to L3 Line" nicht abgeschlossen werden kann, wenn ein im Ruhezustand befindlicher Prozessor eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers in der angeforderten L2-Cachezeile aufweist.
  • Beschreibung des Speicherbefehls
  • Dieser Befehl stellt die zweite Hälfte eines operationellen Speicherbefehlspaars dar. Der Befehl verwendet einen zuvor zugewiesenen Speicherpuffer für den Prozessor als Quelle der 128 Datenbytes, die in die angegebene Zeile des L3-Prozessorspeichers zu verschieben sind, und gibt sie nach Abschluß dieser Operation frei. Für PGIN ist "Transfer L4 Line to Memory Buffer" der erste Speicherbefehl. Die skizzierte Implementierung gewährleistet nicht, daß ein anderer Prozessor oder Kanäle in dem Intervall zwischen dem Zeitpunkt, zu dem der Prozessor den ersten Speicherbefehl ausgibt, und dem Zeitpunkt, zu dem die Speichersteuerung diesen Speicherbefehl aktiviert, um den Inhalt des zugeordneten Speicherpuffers für die Anweisung PGIN zu L3 zu übertragen, nicht auf die zu ladende L3-Zeile zugreifen können. Dies wird nur als minimale Schwäche aufgefaßt, da das Betriebssystem damit beschäftigt ist, diese 4-kB-Seite für die Anweisung PGIN einzulagern, und wohl keine gleichzeitigen Referenzen für den zugewiesenen 4-kB-Seitenrahmen bestehen können.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl und eine absolute Adresse auf einer 128-Byte-Grenze im L3-Prozessorspeicher an L1 aus. L1 überträgt die absolute Adresse und etnen Speicherbefehl "Pass Address" zur L2-Steuerung und den eigentlichen Speicherbefehl zur Speichersteuerung. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den Primärbefehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Command Valid" zur Speichersteuerung und zu Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt den eigentlichen Speicherbefehl und erwartet von der L2-Steuerung ein Signal, daß die Adresse verarbeitet wurde, bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Speicherbefehl-Adreßpuffern. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was bezeichnet, daß die Adresse zu Adresse/Schlüssel gesandt wurde, ünd die Speicherkennung von der L2-Steuerung. Die Speichersteuerung weist die benötigten Ressourcen zu und aktiviert den Speicherbefehl, wenn er von der Priorität ausgewählt wird. Die Speichersteuerung überträgt zur L2-Steuerung einen Befehl, die L2-Cachezeile zu entwerten, und fordert an, daß Adresse/Schlüssel die absolute Adresse zur L2-Steuerung und die physische Adresse zur BSU-Steuerung überträgt und die Referenz- und Anderungsbits der betreffenden 4-kB-Seite aktualisiert. Die Speichersteuerung überträgt einen Befehl zur BSU-Steuerung. Dieser Befehl, "Transfer Memory Buffer to L3 Line", wird von der BSU-Steuerung abhängig vom Status der L2-Cachezeile, der anschließend mit dem Befehl "Perform Memory Control Access if not Locked" von der L2- Steuerung übertragen wird, vorbehaltlich ausgeführt. Adresse/Schlüssel verwendet den Speicherbefehl-Adreßpuffer, um eine Aktualisierung der Speicherschlüsselmatrix einzuleiten. Die Referenz- und Änderungsbits der angegebenen 4-kB-Seite werden auf '1'b gesetzt. Die BSU-Steuerung empfängt den Befehl von der Speichersteuerung und erwartet den Status von der L2-Steuerung. Die L2-Steuerung empfängt den Befehl der Speichersteuerung und verwendet nach Auswahl durch die Bearbeitungspriorität des L2- Cache die Adresse von Adresse/Schlüssel, um das L2-Cacheverzeichnis zu durchsuchen. Zur L2-Cachesteuerung wird ein zur BSU-Steuerung weiterzuleitender Befehl "Perform Memory Control Access if not Locked" übertragen, und die Befehlsantwort wird zur Speichersteuerung übertragen. Aus der Durchsuchung des L2- Verzeichnisses ergibt sich eine von drei Bedingungen.
  • Fall 1
  • Die Durchsuchung des Verzeichnisses führt zu einem L2-Cache-Mißerfolg. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachezeile übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des L2-Cache-Mißerfolgs blockiert. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Cache-Mißerfolg und nicht gesperrt); es ist keine Aktualisierung des L2-Miniverzeichnisses erforderlich. Zu dem anfordernden Prozessor wird "End-of-Operation" übertragen. Die BSU-Steuerung empfängt "Perform Memory Control Access if not Locked" von der L2- Steuerung und die physische Adresse von Adresse/Schlüssel und bereitet den Schreibvorgang der L3-Zeile vor. Sobald die BSU- Steuerung von der L2-Steuerung den Status (nicht gesperrt) empfangen hat, leitet sie den Schreibvorgang der L3-Zeile ein, indem sie Befehl und Adresse über den L2-Datenstrom zu dem erforderlichen Speicheranschluß überträgt. Die BSU-Steuerung legt anschließend fest, daß der Speicherpufferinhalt von der Speicherkanal-Datenpufferfunktion für die Übertragung zum L3- Speicher zu dem richtigen L3-Schnittstellenregister übertragen werden soll. Nach der letzten Datenübertragung zum Speicher wird von der BSU-Steuerung "End-of-Operation" zur Speichersteuerung übertragen. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den L3-Anschluß frei, um einen überlappten Zugriff auf den Speicheranschluß und die Sperre der Speicherpuffer-Ressourcen zu ermöglichen.
  • Fall 2
  • Eine Sperr-, Zeilenhalt- oder Seiteneinlagerungsleinfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers ist für die adressierte L2-Cachezeile aktiv. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund der Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit nicht behebbarem Speicherfehlerkonflikt blockiert. Die Speichersteuerung empfängt den Status der L2-Cachezeile (gesperrt) und bricht die momentane Ausführung des Befehls ab. Der Speicherbefehl wird vorübergehend ausgesetzt, so daß Zeit zur Behebung des Sperrkonflikts zur Verfügung steht, und anschließend erneut in die Priorität der Speichersteuerung eingetragen, um zu versuchen, den Befehl vollständig auszuführen. Die BSU-Steuerung empfängt "Perform Memory Control Access if not Locked" von der L2-Steuerung und die physische Adresse von Adresse/Schlüssel und bereitet den Schreibvorgang der L3-Zeile vor. Sobald die BSU-Steuerung den Status (gesperrt) von der L2-Steuerung empfangen hat, verwirft sie den Befehl.
  • Fall 3
  • Die Durchsuchung des Verzeichnisses führt zu einem L2-Cache- Treffer, und die Cachezeile ist entweder modifiziert oder unmodifiziert. Der L2-Cacheeintrag wird als ungültig markiert. Die L2-Steuerung überträgt die absolute Adresse gemeinsam mit dem L2-Cachesatz zu Adresse/Schlüssel. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Alle L1-Statusmatrizen werden nach Kopien der beiden L1-Cachezeilen innerhalb der als ungültig markierten L2-Cachezeile durchsucht. Die niederwertige L2-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als Komparand mit den Ausgangsdaten der L1-Statusmatrizen verwendet. Falls L1-Cachekopien gefunden werden, werden die entsprechenden L1/L2-Adreßbusse zur Entwertung angefordert. Die L1-Cachekongruenz und die L1-Cachesätze (zwei für den L1-Operandencache und zwei für den L1-Anweisungscache) werden zur Entwertung der L1-Cachekopien zu den betreffenden Prozessoren gleichzeitig übertragen, nachdem die Anforderung des Adreßbusses durch diesen L1 genehmigt wurde. Der Befehl "Invalidate L2 Cache Line" ist vön der Anforderung einer lokalen Entwertung oder Quer-Entwertung nicht betroffen, da L1 die Genehmigung der benötigten Adreßschnittstelle in einer festen Zahl von Zyklen gewährleistet. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie gemeinsam mit dem L2-Cachesatz in den Speicherbefehl-Adreßpuffern. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Treffer und nicht gesperrt) und fordert die Entwertung des betreffenden Eintrags im L2-Miniverzeichnis unter Verwendung der diesem Prozessor in Adresse/Schlüssel zugeordneten Speicherbefehl-Adreßpuffer an. "End-of-Operation" wird zu dem anfordernden Prozessor übertragen. Die BSU-Steuerung empfängt "Perform Memory Control Access if not Locked" von der L2-Steuerung und die physische-Adresse von Adresse/Schlüssel und bereitet den Schreibvorgang der L3- Zeile vor. Sobald die BSU-Steuerung den Status (nicht gesperrt) von der L2-Steuerung empfangen hat, leitet sie den Schreibvorgang der L3-Zeile ein, indem sie Befehl und Adresse über den L2- Datenstrom zu dem benötigten Speicheranschluß überträgt. Die BSU-Steuerung legt anschließend fest, daß der Speicherpufferinhalt von der Speicherkanal-Datenpufferfunktion für die Übertragung zum L3-Speicher zu dem richtigen L3-Schnittstellenregister übertragen werden soll. Nach der letzten Datenübertragung zum Speicher wird "End-of-Operation" von der BSU-Steuerung zur Speichersteuerung übertragen. Sobald die Speichersteuerung "End- of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den L3-Anschluß frei, um einen überlappten Zugriff auf den Speicheranschluß und die Speicherpuffer-Ressourcensperre zu ermöglichen.
  • 2.4.18 Anwendung "Write Memory Check-bit, Redundant-Bit and Special Function Registers" (Speicher-Prüfbit, Redundanzbit und Spezialfunktionsregister schreiben)
  • Anwendung: Diagnosetest von Prozessorspeicher und Erweiterungspeicher. Der Befehl wird in Verbindung mit Speicheranforderungen für den Prozessorspeicher verwendet, um das Laden ausgewählter interner Speicherregister abzuschließen. Der Befehl ist innerhalb des Prozessors synchronisiert, um den Abschluß des Speicherbefehls zu gewährleisten, bevor die Speicheraktivität innerhalb des anfordernden Prozessors beginnt. Ein Mikroprogramm muß gewährleisten, daß ein bestimmter Prozessor, falls er sich innerhalb der Konfiguration im Ruhezustand befindet, in einem Status belassen wird, in dem er keine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers aufweist. Wenn dies nicht beachtet wird, kann sich eine Aussperr-Bedingung ergeben, da der Speicherbefehl "Write Memory Check-bit, Redundant-bit, and Special Function Registers" nicht abgeschlossen werden kann, wenn ein im Ruhezustand befindlicher Prozessor eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers in der angeforderten L2-Cachezeile aufweist.
  • Beschreibung des Speicherbefehls
  • Ein Mikroprogramm liefert den Befehl und eine absolute Adresse auf einer 128-Byte-Grenze im L3-Prozessorspeicher. Dieser Speicherbefehl stellt die zweite Hälfte eines operationellen Befehlspaars dar. Det Befehl verwendet eine zuvor geladene L2-Cachezeile als Quelle der zu dem gewählten Speicheranschluß zu übertragenden Daten. Alle vier Steuerchips innerhalb der Speicherkarten des gewählten Speicheranschlusses beteiligen sich an der Schreiboperation, indem sie einen eindeutigen Wert für ihre Prüfbit-Register, Redundanzbit-Register und Spezialfunktionsregister an festgelegten Stellen vom Speicher-Datenbus übernehmen. Jeder Chip enthält zwei vier Byte breite Fehlerprüf- und Fehlerkorrekturnetze, von denen jedes ein sieben Bit breites Prüfbit-Register und ein Einzelbit-Redundanzbit-Register verwaltet. Jeder Steuerchip verwaltet außerdem ein Spezialfunktionsregister. Die ersten Befehle des operationellen Befehlspaars sind die Prozessorspeicher-Speicherbefehle, die die L2-Cachezeile laden. Alle Daten sind an den richtigen Bitpositionen im Vierfachwort 0 der L2-Cachezeile gespeichert. Der Speicheranschluß nimmt mit diesem Befehl eine Datenübertragung an. Der Inhalt der Speichermatrizen in dem gewählten Anschluß ist von der Ausführung dieses Speicherbefehls nicht betroffen.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl und eine absolute Adresse auf einer 128-Byte-Grenze im L3-Prozessorspeicher an L1 aus. L1 überträgt die absolute Adresse und einen Speicherbefehl "Pass Address" zur L2-Steuerung und den eigentlichen Speicherbefehl zur Speichersteuerung. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den Primärbefehl, Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Command Valid" zur Speichersteuerung und zu Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt den eigentlichen Speicherbefehl und erwartet von der L2-Steuerung ein Signal, daß die Adresse verarbeitet wurde, bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Speicherbefehl-Adreßpuffern. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses von der L2-Steuerung. Die Speichersteuerung weist die benötigten Ressourcen zu und aktiviert den Speicherbefehl, wenn er von der Priorität ausgewählt wird. Der Befehl, den modifizierten Status zurückzusetzen und die L2-Cachezeile zu leeren, wird zur L2-Steuerung übertragen, und Adresse/Schlüssel wird angewiesen, die absolute Adresse zur L2-Steue rung und die physische Adresse zur BSU-Steuerung zu übertragen. Die Speichersteuerung überträgt einen Befehl zur BSU-Steuerung. Dieser Befehl, "Write Memory Check-bit, Redundant-bit, and Special Function Registers if Modified and not Locked", wird von der BSU-Steuerung abhängig vom Status der L2-Cachezeile, der anschließend von der L2-Steuerung mit dem Befehl "Load Outpage Buffer if Modified and not Locked" übertragen wird, vorbehaltlich ausgeführt. Die BSU-Steuerung empfängt den Befehl von der Speichersteuerung und erwartet den Status von der L2-Steuerung. Die L2-Steuerung empfängt den Speicher-Steuerbefehl und verwendet nach der Auswahl durch die Bearbeitungspriorität des L2-Cache die absolute Adresse von Adresse/Schlüssel, um das L2-Cacheverzeichnis zu durchsuchen. Ein Befehl "Load Outpage Buffer if Modified and not Locked" wird zur L2-Cachesteuerung übertragen, und die Befehlsantwort wird zur Speichersteuerung übertragen.
  • Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von vier Bedingungen.
  • Fall 1
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Aufgrund des L2-Cache-Mißerfolgs wird der Status "nicht modifiziert" erzwungen. Die Vergleiche der L1-Statusmatrizen sind aüfgrund des Befehls "Reset Modified Status and Flush L2 Line" blockiert. Die L2-Cachesteuerung empfängt "Load Outpage Buffer if Modified and not Locked" von der L2-Steuerung und bereitet einen Lesevorgang der L2-Cachezeile vor. Sobald die L2-Cachesteuerung und die BSU-Steuerung den Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) empfangen haben, verwerfen sie den Befehl. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Mißerfolg und nicht gesperrt) und schließt den Befehl ab, indem sie "End-of-Operation" zu dem anfordernden Prozessor überträgt.
  • Fall 2
  • Eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers ist für die gewählte L2-Cachezeile aktiv. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des Befehls "Reset Modified Status and Flush L2 Line" blockiert. Die L2-Cache- steuerung empfängt "Load outpage Buffer if Modified and not Lokked" von der L2-Steuerung und bereitet einen Lesevorgang der L2- Cachezeile vor. Die L2-Cachesteuerung und die BSU-Steuerung verwerfen den Befehl, sobald sie den Status der L2-Cachezeile (gesperrt) empfangen haben. Die Speichersteuerung empfängt den Status der L2-Cachezeile (gesperrt) und bricht die momentane Ausführung des Befehls ab. Der Speicherbefehl wird vorübergehend ausgesetzt, so daß Zeit zur Behebung des Sperrkonflikts zur Verfügung steht, und anschließend wieder in die Priorität der Speichersteuerung eingetragen, um zu versuchen, den Befehl vollständig auszuführen.
  • Fall 3
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cachetreffer, und die Cachezeile ist unmodifiziert. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des Befehls "Reset Modified Status and Flush L2 Line" blockiert. Die L2-Cachesteuerung empfängt "Load Outpage Buffer if Modified and not Locked" von der L2-Steuerung und bereitet einen Lesevorgang der L2-Cachezeile vor. Sobald die L2-Cachesteuerung und die BSU-Steuerung den Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) empfangen haben, verwerfen sie den Befehl. Die Speichersteuerung empfängt den Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) und schließt den Befehl ab, indem sie "End-of-Operation" zu dem anfordernden Prozessor überträgt.
  • Fall 4
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Treffer, und die Cachezeile ist modifiziert. Die L2-Cachezeile wird anschließend als nicht modifiziert markiert. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des Befehls "Reset Mddified Status and Flush L2 Line" blockiert. Die L2-Cachesteuerung empfängt "Load Outpage Buffer if Modified and not Locked" von der L2-Steuerung und bereitet einen Lesevorgang der L2-Cachezeile vor. Sobald die L2- Cachesteuerung den Status von der L2-Steuerung empfangen hat, weist sie den L2-Cache an, eine Vollzeile aus der angegebenen L2-Cachekongruenz und dem Satz in den von der L2-Steuerung bezeichneten Seitenauslagerungspuffer zu lesen&sub5; Die Speichersteue rung empfängt den Status der L2-Cachezeile und erkennt, daß der Diagnose-Speichervorgang in den Prozessorspeicher gerade ausgeführt wird. Der Status (modifiziert und nicht gesperrt) veranlaßt die BSU-Steuerung, den Diagnose-Speichervorgang im Speicher zu beginnen, indem sie den Befehl und die physische Adresse über den L2-Datenstrom zu dem angegebenen Speicheranschluß überträgt. Nur das Vierfachwort 0 wird vom Seitenauslagerungspuffer zu dem gewählten Speicheranschluß übertragen. Nach der Datenübertragung zum Speicher überträgt die BSU-Steuerung "End-of-Operation" zur Speichersteuerung. Das gewählte Speicherkartenpaar führt den angeforderten Diagnose-Schreibvorgang durch, indem es das Prüfbit, Redundanz-Bit und die Spezialfunktionsregister von den richtigen Positionen im Speicher-Datenbus lädt und die kombinierte "Belegt"-Anzeige beider Karten für die Speichersteuerung deaktiviert. Sobald die Speichersteuerung von dem gewählten Speicherkartenpaar "nicht belegt" empfangen hat, gibt sie den Speicheranschluß frei und überträgt "End-of-Operation" zu dem anfordernden Prozessor.
  • 2.4.19 Write Memory Redundant-bit Address Registers (Adreß- register für Speicher-Redundanzbits schreiben)
  • Anwendung: Diagnosetest von Prozessorspeicher und Erweiterungspeicher. Der Befehl wird in Verbindung mit Speicheranforderungen für den Prozessorspeicher verwendet, um das Laden ausgewählter speicherinterner Register abzuschließen. Der Befehl ist innerhalb des Speichers synchronisiert, um den Abschluß des Speicherbefehis zu gewährleisten, bevor die Speicheraktivität innerhalb des anfordernden Prozessors beginnt. Ein Mikroprogramm muß gewährleisten, daß ein bestimmter Prozessor, falls er sich innerhalb der Konfiguration im Ruhezustand befindet, in einem Status belassen wird, in dem er keine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingungen mit Anzeige eines nicht behebbaren Speicherfehlers aufweist. Wenn dies nicht beachtet wird, kann sich eine Aussperr-Bedingung ergeben, da der Speicherbefehl "Write Memory Redundant-bit Address Registers" nicht abgeschlossen werden kann, wenn ein im Ruhezustand befindlicher Prozessor eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers in der angeforderten L2-Cachezeile aufweist.
  • Beschreibung des Speicherbefehls
  • Ein Mikroprogramm liefert den Befehl und eine absolute Adresse auf einer 128-Byte-Grenze im L3-Prozessorspeicher. Dieser Speicherbefehl stellt die zweite Hälfte eines operationellen Befehlspaars dar. Der Befehl verwendet eine zuvor geladene L2-Cachezeile als Quelle der zu dem gewählten Speicheranschluß zu übertragenden Daten. Alle vier Steuerchips innerhalb der Speicherkarten des gewählten Speicheranschlusses beteiligen sich an der Schreiboperation, indem sie einen eindeutigen Wert für ihre Redundanzbit-Adreßregister an festgelegten Stellen vom Speicher- Datenbus übernehmen. Jeder Chip enthält zwei vier Byte breite Fehlerprüf- und Fehlerkorrekturnetze, von denen jedes zwei sechs bit breite Redundanzbit-Register verwaltet. Die ersten Befehle des operationellen Befehlspaars sind die Speichervorgänge für den Prozessorspeicher, die die L2-Cachezeile laden. Alle Daten werden an den richtigen Bit-Positionen in Vierfachwort der L2-Cachezeile gespeichert. Der Speicheranschluß nimmt mit diesem Befehl eine Datenübertragung an. Der Inhalt der Speichermatrizen in dem gewählten Anschluß ist von der Ausführung dieses Speicherbefehis nicht betroffen.
  • Ausführung des Speicherbefehls
  • Ein Mikroprogramm gibt den Befehl und eine absolute Adresse auf einer 128-Byte-Grenze im L3-Prozessorspeicher an L1 aus. L1 überträgt die absolute Adresse und einen Speicherbefehl "Pass Address" zur L2-Steuerung und den eigentlichen Speicherbefehl zur Speichersteuerung. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung überträgt den Primärbefehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Command Valid" zu Speichersteuerung und Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt den eigentlichen Speicherbefehl und erwartet von der L2-Steuerung ein Signal, daß die Adresse verarbeitet wurde, bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Speicherbefehl-Adreßpuffern. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um einen L2-Cache-Speicherbefehl des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses von der L2-Steuerung. Die Speichersteuerung weist die erforderlichen Ressourcen zu und aktiviert den Speicherbefehl, wenn er von der Priorität ausgewählt wird. Der Befehl, den modifizierten Status zurückzusetzen und die L2-Cache- zeile zu entleeren, wird zur L2-Steuerung übertragen, und Adresse/Schlüssel wird angewiesen, die absolute Adresse zur L2-Steuerung und die physische Adresse zur BSU-Steuerung zu übertragen. Die Speichersteuerung überträgt einen Befehl zur BSU-Steuerung. Dieser Befehl, "Write Memory Redundant-bit Address Registers if Modified and not Locked", wird von der BSU-Steuerung abhängig vom Status der L2-Cachezeile vorbehaltlich ausgeführt, der von der L2-Steuerung anschließend mit dem Befehl "Load Outpage Buffer if Modified and not Locked" übertragen wird. Die BSU-Steuerung empfängt den Befehl von der Speichersteuerung und erwartet den Status von der L2-Steuerung. Die L2-Steuerung empfängt den Befehl von der Speichersteuerung und verwendet nach der Auswahl durch die Bearbeitungspriorität des L2-Cache die absolute Adresse von Adresse/Schlüssel, um das L2-Cacheverzeichnis zu durchsuchen. Ein Befehl "Load outpage Buffer if Modified and not Lokked" wird zur L2-Cachesteuerung übertragen, und die Befehlsantwort wird zur Speichersteuerung übertragen. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von vier Bedingungen.
  • Fall 1
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen&sub5; Aufgrund des L2-Cache-Mißerfolgs wird der Status "nicht modifiziert" erzwungen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des Befehls "Reset Modified Status and Flush L2 Line" blockiert. Die L2-Cachesteuerung empfängt "Load Outpage Buffer if Modified and not Locked" von der L2-Steuerung und bereitet einen Lesevorgang der L2-Cachezeile vor. Sobald die L2-Cachesteuerung und die BSU-Steuerung den Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) empfangen haben, wird der Befehl verworfen. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Mißerfolg und nicht gesperrt), und schließt den Befehl ab, indem sie "End-of-Operation" zu dem anfordernden Prozessor überträgt.
  • Fall 2
  • Eine Sperr-, Zeilenhalt- oder Seiteneinlagerungs-Einfrierbedingung mit Anzeige eines nicht behebbaren Speicherfehlers ist für die gewählte L2-Cachezeile aktiv. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des Befehls "Reset Modified Status and Flush L2 Line" blockiert. Die L2-Cachesteuerung empfängt "Load Output Buffer if Modified and not Lokked" von der L2-Steuerung und bereitet einen Lesevorgang der L2- Cachezeile vor. Die L2-Cachesteuerung und die BSU-Steuerung verwerfen den Befehl, sobald sie den Status der L2-Cachezeile "gesperrt) empfangen haben. Die Speichersteuerung empfängt den Status der L2-Cachezeile (gesperrt) und bricht die momentane Ausführung des Befehls ab. Der Speicherbefehl wird vorübergehend ausgesetzt, wodurch Zeit zur Behebung des Sperrkonflikts zur Verfügung steht, und anschließend wieder in die Priorität der Speichersteuerung;eingetragen, um zu versuchen, den Befehl vollständig auszuführen.
  • Fall 3
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Treffer, und die Cachezeile ist nicht modifiziert. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die vergleiche der L1-Statusmatrizen sind aufgrund des Befehis "Reset Modified Status and Flush L2 Line" blockiert. Die L2-Cachesteuerung empfängt "Load outpage Buffer if Modified and not Locked" von der L2-Steuerung und bereitet einen Lesevorgang der L2-Cachezeile vor. Sobald die L2- Cachesteuerung und die BSU-Steuerung den Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) empfangen haben, verwerfen sie den Befehl. Die Speichersteuerung empfängt den Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) und schließt den Befehl ab, indem sie "End-of-Operation" zu dem anfordernden Prozessor überträgt.
  • Fall 4
  • Die Durchsuchüng des L2-Cacheverzeichnisses führt zu einem L2- Cachetreffer, und die Cachezeile ist modifiziert. Die L2-Cachezeile wird anschließend als nicht modifiziert markiert. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Nodifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die vergleiche der L1-Statusmatrizen sind aufgrund des Befehls Itreset Modified Status and Flush L2 Line" blockiert. Die L2-Cachesteuerung empfängt "Load Outpage Buffer if Modified and not Locked" von der L2-Steuerung und bereitet einen Lesevorgang der L2-Cachezeile vor. Sobald die L2- Cachesteuerung den Status von der L2-Steuerung empfangen hat, weist die L2-Cachesteuerung den L2-Cache an, eine Vollzeile aus der angegebenen L2-Cachekongruenz und dem Satz in den von der L2-Steuerung angegebenen Seitenauslagerungspuffer zu lesen. Die Speichersteuerung empfängt den Status der L2-Cachezeile und erkennt, daß der Diagnose-Speichervorgang in den Prozessorspeicher gerade ausgeführt wird. Der Status (modifiziert und nicht ge- sperrt) veranlaßt die BSU-Steuerung, den Diagnose-Speichervorgang im Speicher zu beginnen, indem sie den Befehl und die physische Adresse über den L2-Datenstrom zu dem angegebenen Speicheranschluß überträgt. Nur das Vierfachwort 0 wird von dem Seitenauslagerungspuffer zu dem gewählten Speicheranschluß übertragen. Nach der Datenübertragung zum Speicher überträgt die BSU-Steuerung "end-of-operation" zur Speichersteuerung. Das gewählte Speicherkartenpaar führt den angeforderten Diagnose- Schreibvorgang durch, indem es die Redundanzbit-Adreßregister von den richtigen Positionen im Speicher-Datenbus lädt und die kombinierte "Belegt"-Anzeige beider Karten für die Speichersteuerung deaktiviert. Sobald die Speichersteuerung von dem gewählten Speicherkartenpaar "nicht belegt" empfangen hat, gibt sie den Speicheranschluß frei und überträgt "end-of-Operation" zu dem anfordernden Prozessor.
  • 2.5 Speicherschlüsselbefehle für den Prozessor 2.5.1 Fetch Storage Key (Speicherschlüssel abrufen)
  • Anwendung: Laden des TLB für dynamische Adreßübersetzung. Der Befehl ist innerhalb des Prozessors synchronisiert, um den Abschluß des Speicherschlüssel-Befehls zu gewährleisten, bevor die Speicheraktivität innerhalb des anfordernden Prozessors beginnt.
  • Beschreibung des Speicherschlüssel-Befehls
  • Um den schlüsselgesteuerten Schutz zu unterstützen, verwaltet der TLB einen Teil des Speicherschlüsseis (die Zugriffsteuerbits und das Abrufschutzbit), der im Rahmen der Prozessorspeicher- Anforderungen im L1-Cache auf Schutzverletzungen geprüft wird. Dieser Befehl wird während der Adreßübersetzung verwendet, um diese Felder innerhalb des Speicherschlüsseis zum anschließenden Laden in den TLB abzurufen.
  • Ausführung des Speicherschlüssel-Befehls
  • Die Adreßübersetzungshardware erzeugt den Befehl und die absolute Adresse, die zu L1 zu übertragen sind. Nur die innerhalb der Adreßübersetzungsfunktion erzeugten Adreßbits 1:19 sind als absolute Adresse signifikant. L1 prüft auf etwaige Adressierungs- Ausnahmebedingungen ("address check boundary exceeded" - Adreßprüfgrenze überschritten). Falls keine Adressierungs-Ausnahmebedingung besteht, werden der Befehl und die Bits 4:19 der absoluten Adresse zur L2-Steuerung übertragen. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den Pnmärbefehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Fetch Storage Key". Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache werden der Befehl "Fetch Storage Key" und die absolute Adresse direkt zu Adresse/Schlüssel übertragen. Es werden weder zur L2-Cachesteuerung noch zur Speichersteuerung Informationen übertragen. Adresse/Schlüssel empfängt den Befehl und die absolute Adresse von der L2-Steuerung und hält sie im Abrufspeicherschlüssel-Adreßpuffer für diesen Prozessor. Falls der Speicherschlüsselmatrix-Zugriffspuffer verfügbar ist, wird der Befehl sofort gestartet, indem die absolute Adresse in diesen Puffer gestellt und der Zugriff auf die Speicherschlüsselmatrix begonnen wird. Der gesamte Speicherschlüssel wird aus der Matrix gelesen, und die Zugriffsteuerbits und Abrufschutzbits werden an die entsprechenden Bit-Positionen im Schlüssel-Bus der Schnittstelle der L1-Speichersteuerung für den anfordernden Prozessor gestellt. Für die Referenz- und Änderungsbits auf dem Bus wird '0'b erzwungen, und das "Key Valid"- Bit (Schlüssel gültig) wird auf aktiv gesetzt. Die L2-Cache- Steuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die L2-Speichersteuerung empfängt keinen Befehl von der L2-Steuerung, da dieser Speicherschlüsselbefehl vollständig ohne ihr Eingreifen bearbeitet wird. Der anfordernde Prozessor interpretiert die Einstellung des "Key Valid"-Bits des Prozessors als ein "End-of-Operati6n" für diesen Speicherschlüsselbefehl.
  • 2.5.2 Insert Storage Key (Speicherschlüssel einfügen)
  • Anwendungen: Unterstützung der Anweisungen S/370 ISK (Insert Storage Key - Speicherschlüssel einfügen) und 370-XA ISKE (Insert Storage Key Extended - Speicherschlüssel einfügen, erweitert). Der Befehl ist innerhalb des Prozessors synchronisiert, um den Abschluß des Speicherschlüsselbefehls zu gewährleisten, bevor die Speicheraktivität innerhalb des anfordernden Prozessors beginnt.
  • Beschreibung des Speicherschlüsselbefehls
  • Ein Mikroprogramm liefert eine reale Adresse, um auf die Matrizen für Speicherschlüssel und Referenz- und Anderungsbits (R/C) des Prozessors zuzugreifen. Nur die Adreßbits 1:19 sind signifikant. Es existiert eine Speicherschlüsselmatrix zur Verwaltung des vollständigen Speicherschlüssels, und es existiert eine R/C- Matrix für überlappten Zugriff durch zwei Anschlüsse zur Verwaltung der gleichzeitigen Aktualisierungen des Prozessors zugeordneten Referenz- und Anderungsbits. Anforderungen des vollständigen Speicherschlüssels erfordern es, auf alle Kopien der Referenz- und Änderungsbits zuzugreifen und sie logisch durch ODER zu verknüpfen, um exakte Informationen zu erhalten.
  • Ausführung des Speicherschlüsselbefehls
  • Ein Mikroprogramm gibt den Befehl und eine reale Adresse an L1 aus. L1 übersetzt die reale Adresse in eine absolute Adresse. Falls für die reale Adresse keine Adressierungs-Ausnahmebedingungen bestehen, werden der Speicherschlüsselbefehl und die Bits 4:19 der absoluten Adresse zur L2-Steuerung und zur Speichersteuerung übertragen. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den Primärbefehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Command Valid" zur Speichersteuerung und zu Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt den eigentlichen Speicherschlüsselbefehl und erwartet von der L2-Steuerung ein Signal, daß die Adresse verarbeitet wurde, bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Speicherbefehl-Adreßpuffern. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses von der L2-Steuerung. Die. Speichersteuerung weist die erforderlichen Ressourcen zu, indem sie den Befehl in die Prioritätsschaltung für die Speicherschlüsselmatrix einträgt. Wenn die Speichersteuerung keinen vorherigen für die Speicherschlüsselmatrix aktiven Speicherschlüsselbefehl besitzt, überträgt sie diesen Befehl zu Adresse/Schlüssel. Adresse/Schlüssel empfängt den Befehl und stellt den Befehl und die gewählte Adresse in den Zugriffspuffer für die Speicherschlüsselmatrix. Die R/C-Matrix ist eine Matrix für den überlappten Zugriff zweier Anschlüsse. Wenn Aktualisierungen aufgrund von Prozessor-Speicheranforderungen nicht beide Anschlüsse nutzen, wird der Speicherschlüsselbefehl aktiviert. Aus dem ersten verfügbaren Anschluß wird ein Satz R/C-Bits gelesen; es erfolgt keine Änderung des aktuellen Status der R/C-Bits. Parallel zum ersten Zugriff auf die R/C-Matrix wird die Speicherschlüsselmatrix für die 4-kB-Seite gelesen; es erfolgt keine Anderung des momentanen Status. Adresse/Schlüssel antwortet zu diesem Zeitpunkt mit "End-of-Operation" für die Speichersteuerung, um die maximal zulässige überlappung zu ermöglichen. Anschließend wird der andere Anschluß der R/C-Matrix bezüglich des Referenz- und des Anderungsbits gelesen; es erfolgt keine Anderung des momentanen Status. Alle Kopien des Referenz- und des Anderungsbits aus den Anschlüssen der R/C-Matrizen beider Prozessoren und die Speicherschlüsselmatrix werden logisch ODER- verknüpft und an den entsprechenden Bit-Positionen im Schlüssel- Bus der Schnittstelle der L1-Speichersteuerung gemeinsam mit den aus der Speicherschlüsselmatrix gelesenen Zugriffsteuerungs- und Abrufschutzbits zu dem anfordernden Prozessor gesandt. Das "Key Valid"-Bit wird auf aktiv gesetzt. Der anfordernde Prozessor interpretiert die Einstellung des "Key Valid"-Bits des Prozessors als "End-of-Operation" für diesen Speicherschlüsselbefehl.
  • 2.5.3 Reset Reference Bit (Referenzbit zurücksetzen)
  • Anwendungen: Unterstützung der Anweisungen S/370 RRB (Reset Reference Bit Referenzbit zurücksetzen) und 370-XA RRBE (Reset Reference Bit Extended - Referenzbit zurücksetzen, erweitert) Der Befehl ist innerhalb des Prozessors synchronisiert, um den Abschluß des Speicherschlüsselbefehls zu gewährleisten, bevor die Speicheraktivität in dem anfordernden Prozessor beginnt.
  • Beschreibung des Speicherschlüsselbefehls
  • Ein Mikroprogramm liefert eine reale Adresse, um auf die Matrizen für Speicherschlüssel und Prozessor-Referenz-/Anderungsbits (R/c) zuzugreifen. Nur die Adreßbits 1:19 sind signifikant. Es existiert eine Speicherschlüsselmatrix zur Verwaltung des vollständigen Speicherschlüsseis, und es existiert eine R/C-Matrix für überlappten Zugriff durch zwei Anschlüsse zur Verwaltung der gleichzeitigen Aktualisierungen des Prozessors zugeordneten Referenz- und Anderungsbits. Anforderungen der Referenz- und Anderungsbits erfordern es, auf alle Kopien der Referenz- und Anderungsbits zuzugreifen und sie logisch durch ODER zu verknüpfen, um exakte Informationen zu erhalten. Die Referenz- und Änderungsbits werden von einem Mikroprogramm verwendet, um den Bedingungscode für die Anwendungen zu ermitteln. Alle Kopien des von der absoluten Adresse angegebenen Referenzbits werden in Rahmen der Befehlsausführung auf '0'b gesetzt.
  • Ausführung des Speicherschlüsselbefehls
  • Ein Mikroprogramm gibt den Befehl und eine reale Adresse an L1 aus. L1 übersetzt die reale Adresse in.eine absolute Adresse. Falls für die reale Adresse keine Adressierungs-Ausnahmebedingungen existieren, werden der Speicherschlüsselbefehl und die Bits 4:19 der absoluten Adresse zur L2-Steuerung und zur Speichersteuerung übertragen. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den Primärbefehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Command Valid" zur Speichersteuerung und zu Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speichersteuerung und die Adresse zu Adresse/Schlüssel übertragen. Die Speichersteuerung empfängt den eigentlichen Speicherschlüsselbefehl und erwartet von der L2-Steuerung ein Signal, daß die Adresse verarbeitet wurde, bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Speicherbefehl-Adreßpuffern. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranforderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses von der L2-Steuerung. Die Speichersteuerung weist die erforderlichen Ressourcen zu, indem sie den Befehl in die Prioritätsschaltung für die Speicherschlüsselmatrix einträgt. Wenn die Speichersteuerung keinen vorherigen für die Speicherschlüsselmatrix aktiven Speicherschlüsselbefehl besitzt, überträgt sie diesen Befehl zu Adresse/Schlüssel. Adresse/Schlüssel empfängt den Befehl und stellt den Befehl und die gewählte Adresse in den Zugriffspuffer für die Speicherschlüsselmatrix. Die R/C-Matrix ist eine Matrix für den überlappten Zugriff zweier Anschlüsse. Wenn Aktualisierungen aufgrund von Prozessor-Speicheranforderungen nicht beide Anschlüsse nutzen, wird der Speicherschlüsselbefehl aktiviert. Aus dem ersten verfügbaren Anschluß wird ein Satz R/C-Bits gelesen, und anschließend wird das Referenzbit der 4-kB-Seite in diesem Anschluß auf '0'b zurückgesetzt. Parallel zu dem ersten Zugriff auf die R/C-Matrix und ihrer Aktualisierung wird die Speicherschlüsselmatrix für die 4-kB-Seite gelesen, und ihr Referenzbit wird auf '0'b zurückgesetzt. Adresse/Schlüssel antwortet zu diesem Zeitpunkt mit "End-of-Operation" für die Speichersteuerung, um die maximal zulässige Überlappung zu ermöglichen. Anschließend wird der andere Anschluß der R/C-Matrix bezüglich der Referenz- und Änderungsbits gelesen, und das Referenzbit der 4- kB-Seite in diesem Anschluß wird auf '0'b zurückgesetzt. Alle Kopien der aus den Anschlüssen der R/C-Matrizen beider Prozessoren eingelesenen Referenz- und Anderungsbits und die Speicherschlüsselmatrix werden logisch ODER-verknüpft und an den entsprechenden Bit-Positionen im Schlüssel-Bus der Schnittstelle der L1-Speichersteuerung zu dem anfordernden Prozessor gesandt. Für die Datenbits an allen anderen Bit-Positionen des Schlüsselbus wird '0'b erzwungen, und das "Key Valid"-Bit wird auf aktiv gesetzt. Der anfordernde Prozessor interpretiert die Einstellung des "Key Valid"-Bits des Prozessors als "End-of-Operation" für diesen Speicherschlüsselbefehl.
  • 2.5.4 Set Storage Key (Speicherschlüssel setzen)
  • Anwendungen: Unterstützung der Anwendungen 3/370 33K (Set Storage Key - Speicherschlüssel setzen) und 370-XA SSKE (Set Storage Key Extended - Speicherschlüssel setzen, erweitert). Ein Mikroprogramm muß gewährleisten, daß die Speicherwarteschlange für den anfordernden Prozessor leer ist, bevor dieser Speicherschlüsselbefehl ausgegeben wird. Dies ist ein Bestandteil der Operation zur Serialisierung und Prüfpunkt-Synchronisierung, die zu Beginn der Anweisung von der S/370-Architektur verlangt wird. Der Befehl ist innerhalb des Prozessors synchronisiert, um den Abschluß des Speicherschlüsselbefehls zu gewährleisten, bevor die Speicheraktivität innerhalb des Prozessors beginnt.
  • Beschreibung des Speicherschlüsselbefehls
  • Ein Mikroprogramm liefert eine reale Adresse, um auf die Matrizen für Speicherschlüssei und Prozessor-Referenz-/Änderungsbits (R/C) zuzugreifen. Nur die Adreßbits 1:19 sind signifikant. Es existiert eine Speicherschlüsselmatrix zur Verwaltung des vollständigen Speicherschlüssels, und es existiert eine R/C-Matrix für überlappten Zugriff durch zwei Anschlüsse zur Verwaltung der gleichzeitigen Aktualisierungen des Prozessors zugeordneten Referenz- und Änderungsbits. Anforderungen, die Speicherschlüssel zu setzen, erfordern es, alle Kopien der Referenz- und Anderungsbits in der R/C-Matrix auf '0'b zurückzusetzen und den neuen Steuerschlüsselwert in die Speicherschlüsselmatrix einzusetzen.
  • Ausführung des Speicherschlüsselbefehls
  • Ein Mikroprogramm gibt den Befehl und eine reale Adresse gemeinsam mit einem sieben Bit langen Schlüsseiwert, der in den niederwertigen Teil der bereitgestellten Adresse eingesetzt wurde, an L1 aus. L1 übersetzt die reale Adresse in eine absolute Adresse. Falls für die reale Adresse keine Adressierungs-Ausnahmebedingung besteht, werden der Speicherschlüsselbefehl und die Bits 4:19 der absoluten Adresse zu L2-Steuerung und Speichersteuerung übertragen, und der sieben bit lange Speicherschlüssel wird mit auf aktiv gesetztem "Key Valid"-Bit zu Adresse/Schlüssel übertragen. Es werden keine Daten auf dem Datenbus übertragen. Die L2-Steuerung empfängt den Primärbefehl, den Speicherbefehl und die absolute Adresse, gefolgt von dem Befehl "Pass Address". Die L2-Steuerung überträgt "Command Valid" zur Speichersteuerung und zu Adresse/Schlüssel. Nach der Auswahl durch die Bearbeitungspriorität des L2-Cache wird der Befehl zur Speiche rsteuerung und die Adresse zu Adresse/Schlüssel übertragen. Adresse/Schlüssel erkennt die Anderung im Status des "Key Valid"-Bit und speichert die Daten des Prozessor-Schlüsselbusses ein, um den Speicherschlüsselbefehl vorzubereiten. Die Speichersteuerung empfängt den eigentlichen Speicherschlüsselbefehl und erwartet ein Signal von der L2-Steuerung, daß die Adresse verarbeitet wurde, bevor sie den Befehl in die Priorität einträgt. Adresse/Schlüssel empfängt die absolute Adresse von der L2- Steuerung, wandelt sie in eine physische Adresse um und hält sie in den Speicherbefehl-Adreßpuffern. Die L2-Cachesteuerung empfängt keinen Befehl von der L2-Steuerung, da es sich nicht um eine L2-Cache-Speicheranfbrderung des Prozessors handelt. Die Speichersteuerung empfängt den Befehl, was besagt, daß die Adresse zu Adresse/Schlüssel gesandt wurde, und die Kennung des Speicheranschlusses von der L2-Steuerung. Die Speichersteuerung weist die erforderlichen Ressourcen zu, indem sie den Befehl in die Prioritätsschaltung für die Speicherschlüsselmatrix einträgt. Wenn die Speichersteuerung keinen vorherigen Speicherschlüsselbefehl besitzt, der für die Speicherschlüsselmatrix aktiv ist, überträgt sie diesen Befehl zu Adresse/Schlüssel. Adresse/Schlüssel empfängt den Befehl und stellt den Befehl und die gewählte Adresse in den Zugriffspuffer für die Speicherschlüsselmatrix. Die R/C-Matrix ist eine Matrix für zwei Anschlüsse. Wenn Aktualisierungen aufgrund von Prozessor-Speicheranforderungen nicht beide Anschlüsse nutzen, wird der Speicherschlüsselbefehl aktiviert. Aus dem ersten verfügbaren Anschluß wird ein Satz R/C-Bits gelesen, und anschließend werden die Referenz- und Anderungsbits der 4-kB-Seite in diesem Anschluß auf '0'b zurückgesetzt. Parallel zu dem ersten Zugriff auf die R/C-Matrix und ihrer Aktualisierung wird die Speicherschlüsselmatrix für die 4-kB-Seite gelesen, und der neue sieben bit lange Schlüsselwert aus dem Prozessorschlüsselregister wird in der Speicherschlüsselmatrix gespeichert. Adresse/Schlüssel antwortet zu diesem Zeitpunkt mit "End-of-Operation" für die Speichersteuerung, um die maximal zulässige Überlappung zu ermöglichen. Anschließend wird der andere Anschluß der R/C-Matrix bezüglich der Referenz- und Anderungsbits gelesen, und diese werden auf '0'b zurückgesetzt. Das "Key Valid"-Bit wird auf aktiv gesetzt. Der anfordernde Prozessor interpretiert das Setzen des "Key Valid"-Bits des Prozessors als "End-of-Operation" für diesen Speicherschlüsselbefehl. Das Gültigkeitsbit wird erst gegen Ende der Operation gesetzt, um zu gewährleisten, daß etwaige damit in Zusammenhang stehende Maschinenfehler mit diesem Prüfpunkt der 3/370-Anweisung in Verbindung gebracht werden können.
  • 3.0 Speicherroutinen 3.1 Speicher-Abrufroutinen für den Kanal 3.1.1 Speicherabruf, 1:8 Vierfachwörter, keine Zugriff-Ausnahmebedingungen, L2M-Verzeichnis-Treffer/L2-Cachetreffer
  • Der Gemeinschaftskanal-Prozessor gibt durch eine mehrere Zyklen lange Übertragung von Befehl und Adresse zu Adresse/Schlüssel eine Kanal-Speicherabrufanforderung an das Speichersystem aus. Die vier Zyklen der Befehls-/Adreßübertragung erfolgen mit der Kanal-Taktfrequenz. Die erste Übertragung enthält die Pufferkennung des Gemeinschaftskanal-Prozessors, eine Abrufanforderung für den L3-Speicher und einen Hinweis darauf, ob eine Prüfung der Speicher-Adreßprüfgrenze (Storage Address-Check Boundary - ACB) und des Speicherschlüssels erforderlich ist. Die zweite Übertragung enthält die niederwertigen Bits der absoluten Adresse, 16:31. Die darauffolgende Übertragung enthält die höherwertigen Bits der absoluten Adresse, 0:15, wobei 4:15 für den L3-Prozessorspeic her signifikant sind. Die letzte Übertragung enthält den Kanal-Speicherschlüssel, die Steuerungsinformationen für die Adreßgrenzprüfung, eine Vorrangkennung für die Speicherschlüssel- und ACB-Prüfung sowie eine sieben bit lange Speicherfeldlänge. Adresse/Schlüssel empfängt die Kanal-Speicheranforderung mit der Kanal-Taktfrequenz. Im Anschluß an die letzte Übertragung wird ein Zwischenspeicher für anstehende Kanal-Speicheranforderung mit der Kanal-Taktfrequenz gesetzt, und die Kanal-Anforderung wird in Prozessortakte umgewandelt. Wenn die Metastabilität beseitigt wurde, werden die SHCP-Pufferkennung, die Kanal-Speicheranforderung und die Speicheranschlußkennung zur Speichersteuerung übertragen. Adresse/Schlüssel wandelt die absolute Adresse durch Speicherabbildung in eine physische Adresse um und berechnet die Endadresse (oder Endfeld-Adresse) für die angegebene Speicherfeldlänge. Die Speichersteuerung empfängt die Kennung des Speicherkanal-Datenpuffers, die Speicheranforderung, eine Anzeige für L3-Teil- oder Vollzeile sowie die Kennung des Speicheranschlusses, und die Anforderung wird in die Priorität für das L2-Cache-Miniverzeichnis und die Speicherschlüsselmatrix getrennt eingetragen. Falls momentan keine Anforderung für das L2-Miniverzeichnis aktiv ist, veranlaßt diese Kanalspeicher-Anforderung, sobald sie von der Priorität ausgewählt wurde, daß zum L2-Miniverzeichnis ein Befehl übertragen wird, auf die Anwesenheit der Zeile im L2-Cache zu prüfen. Adresse/Schlüssel wird angewiesen, die betreffende Adresse zum L2-Miniverzeichnis zu übertragen. Falls keine Anforderung für die Speicherschlüsselmatrix momentan aktiv ist, veranlaßt diese Kanal-Speicheränforderung, sobald sie von der Priorität ausgewählt wurde, daß zu Adresse/Schlüssel ein Befehl übertragen wird, die Adreß- und Schutzprüfungen durchzuführen, die der Kanal-Speicheranforderung im SRCP-Befehlspuffer von Adresse/Schlüssel zugeordnet sind. Sobald Adresse/Schlüssel die SHCP-Befehle der Speichersteuerung empfangen hat, verwendet sie den entsprechenden SHCP-Befehlspuffer, um zu ermitteln, welche Adressierungs- und Schutzprüfungen anzuwenden sind, und überträgt die gewählte Speicheradresse zum L2-Miniverzeichnis. "Endof-Operation" von Adresse/Schlüssel wird zur Speichersteuerung zurückgeliefert, wenn der SHCP-Befehl Zugriff auf die Speicherschlüsselmatrix erhält. Die entsprechenden Adressierungs- und Schutzprüfungen werden durchgeführt, und das Referenzbit der die angeforderte L3-Zeile enthaltenden 4-kB-Seite wird infolge der Kanal-Abrufanforderung auf '1'b gesetzt, sofern keine Zugriff- Ausnahmebedingungen eintreten. Die Ergebnisse der Adressierungsund Schutzprüfungen werden zur Speichersteuerung zurückgehefert. Sobald das L2-Cache-Miniverzeichnis den Befehl von der Speichersteuerung und die Adresse von Adresse/Schlüssel empfangen hat, wird es satzassoziativ durchsucht und liefert einen L2- Cachetreffer. Der L2-Status wird zur Speichersteuerung zurückgeliefert. Sobald die Speichersteuerung den Status des L2-Miniverzeichnisses und den von Adresse/Schlüssel empfangen hat, trägt sie die Kanal-Anforderung in die Speicherpriorität ein, sofern keine Zugriff-Ausnahmebedingungen bestehen. In diesem Fall wird bei der Durchsuchung des L2-Cache-Miniverzeichnisses ein L2-Treffer angezeigt. Da jedoch das L2-Miniverzeichnis fälschlicherweise die Existenz einer Zeile im L2-Cache angeben kann, muß der benötigte Speicheranschluß zugewiesen werden. Die Speichersteuerung weist die benötigten Ressourcen zu und aktiviert die Anforderung, wenn sie von der Priorität ausgewählt wird. Zur L2-Steuerung wird ein Befehl übertragen, einen L2- Cache-Abruf für den Kanal durchzuführen. Adresse/Schlüssel wird angewiesen, die Adresse des gewählten SHCP-Befehlspuffers zur L2-Steuerung und BSU-Steuerung zu übertragen. Zur BSU-Steuerung wird ein Befehl übertragen, einen Kanal-L2-Cache-Zugriff zu dem gewählten Speicherkanal-Datenpuffer durchzuführen. Im Falle eines L2-Cache-Mißerfolgs überträgt Adresse/Schlüssel die gewählte absolute Adresse zur L2-Steuerung und die physische L3-Adresse zur BSU-Steuerung. Die End- und die Anfangsadresse für den Kanal-Abruf werden ebenfalls zur BSU-Steuerung übertragen, damit sie bei einem L2-Cache-Mißerfolg das Laden des Speicherkanal- Datenpuffers steuert. Die BSU-Steuerung empfängt den Kanal-L2- Abrufbefehl von der Speichersteuerung und die benötigten Adressen von Adresse/Schlüssel und hält sie für die momentane Spei- cheroperation bereit. Die BSU-Steuerung überträgt den Befehl, die Endadresse und die Anfangsadresse zur SCDB-Steuerung und erwartet den L2-Status, um die Datenübertragungen zu beginnen. Die L2-Steuerung empfängt den Befehl der Speichersteuerung und verwendet nach der Auswahl durch die Bearbeitungspriorität des L2-Cache die Adresse von Adresse/Schlüssel, um das L2-Cacheverzeichnis zu durchsuchen. Die Seiteneinlagerungs-Einfrierregister und Zeilenhalt-Register des Prozessors mit aktiven Anzeigen für nicht behebbare Speicherfehler werden verglichen, um eine Übereinstimmung mit der Adresse der Kanal-L2-Abrufzeile zu finden. Falls eine Übereinstimmung auftritt, wird der L2-Mißerfolg-Status erzwungen, um die Kanal-Anforderung auf den L3-Speicher zugreifen zu lassen. Ein Kanal-L2-Abrufbefehl wird zur BSU-Steuerung übertragen, und eine Befehlsantwort wird zur Speichersteuerung übertragen. Aus der Verzeichnissuche ergibt sich ein L2- Cache-Treffer. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile wird anschließend zur BSU-Steuerung und Speichersteuerung übertragen. Die SCDB-Steuerung empfängt den Kanal-L2-Abrufbefehl, die Datenpuffer-Kennung des Speicherkanals, die End- und Anfangsadresse und erwartet die Daten aus der Datenstromfunktion des L2-Cache. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Cache-Treffer) und gibt den der Kanal-Anforderung zugeordneten Speicheranschluß frei. "End-of-Operation" für die Kanal-Anforderung wird zu Adresse/Schlüssel übertragen. Bevor der L2-Cachestatus bekannt ist, werden Befehl und Adresse zur BSU-Steuerung übertragen, um den Zugriff auf den L2-Cache zu beginnen. Die Lesezyklen im L2-Cache werden vorgenommen, und der L2-Trefferstatus leitet die Übertragungen zum Speicherkanal-Datenpuffer ein. Die sechs L2-Cachesätze werden gleichzeitig gelesen und liefern dabei in jedem der vier Lesezyklen 32 Bytes. Die gewünschten 128 Bytes werden in aufeinanderfolgenden Zyklen für die Übertragung zu dem gewählten Speicherkanal-Datenpuffer eingespeichert. Die Daten werden in 32-Byte-Abschnitten zum Speicherkanal-Datenpuffer übertragen, und zwar von den 32 Bytes ganz links bis zu den 32 Bytes ganz rechts innerhalb der 128 Bytes langen L2-Cachezeile. Man beachte, daß für eine Kanal- Speicherabrufanforderung, die die Daten im L2-Cache vorfindet, die vollständige L2-Cachezeile zum Speicherkanal-Datenpuffer übertragen wird, und zwar unabhängig von der Feldlänge. Sobald Adresse/Schlüssel "End-of-Operation" von der Speichersteuerung empfangen hat, wandelt sie den Hinweis in die Kanal-Taktfrequenz um und antwortet mit "SHCF Request Complete with Clean Status" für den Gemeinschaftskanal-Prözessor. Die SCDB-Steuerung empfängt die L2-Cachedaten (32 Bytes pro Zyklus) und leitet die Daten mit der Taktfrequenz des Prozessors in den gewählten Speicherkanal-Datenpuffer.
  • 3.1.2 Speicherzugriff, 1:8 Vierfachwörter, keine Zugriff- Ausnahmebedingungen, L2N-Verzeichnis-Treffer/L2-Cache- Mißerfolg
  • Der Gemeinschaftskanal-Prozessor gibt durch eine mehrere Zyklen lange Übertragung von Befehl und Adresse zu Adresse/Schlüssel eine Kanal-Speicherabrufanforderung an das Speichersystem aus. Die vier Zyklen der Befehls-/Adreßübertragung erfolgen mit der Kanal-Taktfrequenz. Die erste Übertragung enthält die Pufferkennung des Gemeinschaftskanal-Prozessors, eine Abrufanforderung für den L3-Speicher und einen Hinweis darauf, ob eine Prüfung der Speicher-Adreßprüfgrenze (Storage Address-Check Boundary - ACB) und des Speicherschlüssels erforderlich ist. Die zweite Übertragung enthält die niederwertigen Bits der absoluten Adresse, 16:31. Die darauffolgende Übertragung enthält die höherwertigen Bits der absoluten Adresse, 0:15, wobei 4:15 für den L3-Prozessorspeicher signifikant sind. Die letzte Übertragung enthält den Kanal-Speicherschlüssel, die Steuerungsinformationen für die Adreßgrenzprüfung, eine Vorrangkennung für die Speicherschlüssel- und ACB-Prüfung sowie eine sieben Bit lange Speicherfeldlänge. Adresse/Schlüssel empfängt die Kanal-Speicheranforderung mit der Kanal-Taktfrequenz. Im Anschluß an die letzte Übertragung wird ein Zwischenspeicher für anstehende Kanal-Speicheranforderung mit der Kanal-Taktfrequenz gesetzt, und die Kanal-Anforderung wird in Prozessortakte umgewandelt. Wenn die Metastabilität beseitigt wurde, werden die SHCP-Pufferkennung, die Kanal-Speicheranforderung und die Speicheranschlußkennung zur Speichersteuerung übertragen. Adresse/Schlüssel wandelt die absolute Adresse durch Speicherabbildung in eine physische Adresse um und berechnet die Endadresse (oder Endfeld-Adresse) für die angegebene Speicherfeldlänge. Die Speichersteuerung empfängt die Kennung des Speicherkanal-Datenpuffers, die Speicheranforderung, eine Anzeige für L3-Teil- oder Vollzeile sowie die Kennung des Speicheranschlusses, und die Anforderung wird in die Priorität für das L2-Cache-Miniverzeichnis und die Speicherschlüsselmatrix getrennt eingetragen. Falls momentan keine Anforderung für das L2-Miniverzeichnis aktiv ist, veranlaßt diese Kanalspeicher-Anforderung, sobald sie von der Priorität ausgewählt wurde, daß zum L2-Miniverzeichnis ein Befehl übertragen wird, auf die Anwesenheit der Zeile im L2-Cache zu prüfen. Adresse/Schlüssel wird angewiesen, die betreffende Adresse zum L2-Miniverzeichnis zu übertragen. Falls keine Anforderung für die Speicherschlüsselmatrix momentan aktiv ist, veranlaßt diese Kanal-Speicheranforderung, sobald sie von der Priorität ausgewählt wurde, daß zu Adresse/Schlüssel ein Befehl übertragen wird, die Adreß- und Schutzprüfungen durchzuführen, die der Kanal-Speicheranforderung im SHCP-Befehlspuffer von Adresse/Schlüssel zugeordnet sind. Sobald Adresse/Schlüssel die SHCP-Befehle der Speichersteuerung empfangen hat, verwendet sie den entsprechenden SHCP-Befehlspuffer, um zu ermitteln, welche Adressierungs- und Schutzprüfungen anzuwenden sind, und überträgt die gewählte Speicheradresse zum L2-Miniverzeichnis. "End- of-Operation" von Adresse/Schlüssel wird zur Speichersteuerung zurückgeliefert, wenn der SHCP-Befehl Zugriff auf die Speicherschlüsselmatrix erhält. Die entsprechenden Adressierungs- und Schutzprüfungen werden durchgeführt, und das Referenzbit der die angeforderte L3-Zeile enthaltenden 4-kB-Seite wird infolge der Kanal-Abrufanforderung auf '1'b gesetzt, sofern keine Zugriff- Ausnahmebedingungen eintreten. Die Ergebnisse der Adressierungs- und Schutzprüfungen werden zur Speichersteüerung zurückgehefert. Sobald das L2-Cache-Miniverzeichnis den Befehl von der Speichersteuerung und die Adresse von Adresse/Schlüssel empfangen hat, wird es satzassoziativ durchsucht und liefert einen L2- Cachetreffer. Der L2-Status wird zur Speichersteuerung zurückgeliefert. Sobald die Speichersteuerung den Status des L2-Miniverzeichnisses und den von Adresse/Schlüssel empfangen hat, trägt sie die Kanal-Anforderung in die Speicherpriorität ein, sofern keine Zugriff-Ausnahmebedingungen bestehen. In diesem Fall wird bei der Durchsuchung des L2-Cache-Miniverzeichnisses ein L2-Treffer angezeigt. Da jedoch das L2-Miniverzeichnis fälschlicherweise die Existenz einer Zeile im L2-Cache angeben kann, muß der benötigte Speicheranschluß zugewiesen werden. Die Speichersteuerung weist die benötigten Ressourcen zu und aktiviert die Anforderung, wenn sie von der Priorität ausgewählt wird. Zur L2-Steuerung wird ein Befehl übertragen, einen Kanal- L2-Cache-Abruf durchzuführen. Adresse/Schlüssel wird angewiesen, die Adresse des gewählten SHCP-Befehlspuffers zur L2-Steuerung und BSU-Steuerung zu übertragen. Zur BSU-Steuerung wird ein Befehl gesandt, einen Kanal-L2-Cache-Abruf zu dem gewählten Speicherkanal-Datenpuffer durchzuführen. Im Falle eines L2- Cache-Mißerfolgs überträgt Adresse/Schlüssel die gewählte absolute Adresse zur L2-Steuerung und die physische L3-Adresse zur BSU-Steuerung. Die End- und die Anfangsadresse für den Kanal- Abruf werden ebenfalls zur BSU-Steuerung übertragen, damit sie bei einem L2-Cache-Mißerfolg das Laden des Speicherkanal-Datenpuffers steuert. Die BSU-Steuerung empfängt den Kanal-L2-Abrufbefehl von der Speichersteuerung und die benötigten Adressen von Adresse/Schlüssel und hält sie für die momentane Speicheroperation bereit. Die BSU-Steuerung überträgt den Befehl, die Endadresse und die Anfangsadresse zur SCDB-Steuerung und erwartet den L2-Status, um die Datenübertragungen zu beginnen. Die L2- Steuerung empfängt den Befehl der Speichersteuerung und verwendet nach der Auswahl durch die Bearbeitungspriorität des L2-Cache die Adresse von Adresse/Schlüssel, um das L2-Cacheverzeichnis zu durchsuchen. Die Seiteneinlagerungs-Einfrierregister und Zeilenhalt-Register des Prozessors mit aktiven Anzeigen für nicht behebbare Speicherfehler werden verglichen, um eine Übereinstimmung mit der Adresse der Kanal-L2-Abrufzeile zu finden. Falls eine Übereinstimmung auftritt, wird der L2-Mißerfolg-Status erzwungen, um die Kanal-Anforderung auf den L3-Speicher zugreifen zu lassen. Ein Kanal-L2-Abrufbefehl wird zur BSU-Steuerung übertragen, und eine Befehlsantwort wird zur Speichersteuerung übertragen. Aus der Verzeichnissuche ergibt sich ein L2- Cache-Mißerfolg. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile wird anschließend zur BSU-Steuerung und Speichersteuerung übertragen. Die SCDB-Steuerung empfängt den Kanal-L2-Abrufbefehl, die Datenpuffer-Kennung des Speicherkanals, die End- und Anfangsadresse und erwartet die Daten aus der Datenstromfunktion des L2-Cache. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Cache-Mißerfolg). Die Speichersteuerung erkennt, daß die BSU-Steuerung die angeforderten Daten aus dem Prozessorspeicher abrufen muß, und behält die mit der Kanal-Anforderung in Verbindung stehende Sperre des Speicheranschlusses bei. Bevor der L2-Cachestatus bekannt ist, werden Befehl und Adresse zur BSU-Steuerung übertragen, um den Zugriff auf den L2-Cache zu beginnen. Die Lesezyklen im L2-Cache werden vorgenommen, aber der L2-Mißerfolgsstatus verhindert eine Datenübertragung zum Speicherkanal-Datenpuffer. Die BSU-Steuerung leitet den Abruf der 128 Bytes aus dem L3-Speicher ein, indem sie Befehl und Adresse über den L2-Datenstrom zu dem benötigten Speicheranschluß überträgt. Die BSU-Steuerung überträgt aufgrund des L2- Cache-Mißerfolgs einen neuen Befehl, Endadresse und Anfangsadresse zur SCDB-Steuerung. Die SCDB-Steuerung empfängt den Kanal-L3-Abrufbefehl, die Speicherkanal-Datenpufferkennung, End- und Anfangsadresse und erwartet die Daten von der Datenstromfunktion des L2-Cache. Für diese Sequenz erwartet die SCDB- Steuerung 16 Bytes Speicherdaten pro Übertragung. Der L3-Speicher führt den angeforderten Lesevorgang durch, indem er die Daten dem L3-Schnittstellenregister übergibt, und der L2-Datenstrom leitet sie zur Speicherkanal-Datenpufferfunktion. Die Daten werden stets beginnend mit der angegebenen Adresse der Reihe nach von links nach rechts für die innerhalb der L3-Zeile angegebene Zahl von Bytes gelesen und in vollständigen Vierfachwörtern zum L2-Datenstrom übertragen. Während die letzte Datenübertragung zum Speicherkanal-Datenpuffer abgeschlossen wird&sub1; überträgt die BSU-Steuerung "End-of-Operation" zur Speichersteuerung. Während der Datenübertragungen zum L3-Schnittstellenregister überwacht Adresse/Schlüssel die Zeilen mit nicht behebbaren Fehlern aus dem Speicher. Der Fehlerstatus wird für den bezeichneten SHCP-Puffer aufgezeichnet und bei Abschluß der Anforderung zu dem Gemeinschaftskanal-Prozessor weitergeleitet. Die SCDB- Steuerung empfängt die L3-Speicherdaten (16 Bytes pro Zyklus) vom L2-Datenstrom und leitet die Daten mit der prozessor-Taktfrequenz in den gewählten Speicherkanal-Datenpuffer. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den L3-Anschluß frei und liefert "End-of- Operation" für die Kanal-Anforderung an Adresse/Schlüssel zurück. Sobald Adresse/Schlüssel "End-of-Operation" von der Speichersteuerung empfangen hat, wandelt sie den Hinweis in die Kanal-Taktfrequenz um und antwortet mit "SHCP Request complete with Clean Status" für den Gemeinschaftskanal-prozessor, sofern alle aus dem L3-Speicher abgerufenen Daten gültig sind.
  • 3.1.3 Speicherabruf, 1:8 Vierfachwörter, keine Zugriff-Ausnahmebedingungen, L2M-Verzeichnis-Mißerfolg
  • Der Gemeinschaftskanal-Prozessor gibt durch eine mehrere Zyklen lange Übertragung von Befehl und Adresse zu Adresse/Schlüssel eine Kanal-Speicherabrufanforderung an das Speichersystem aus. Die vier Zyklen der Befehls-/Adreßübertragung erfolgen mit der Kanal-Taktfrequenz. Die erste Übertragung enthält die Pufferkennung des Gemeinschaftskanal-Prozessors, eine Abrufanforderung für den L3-Speicher und einen Hinweis darauf, ob eine Prüfung der Speicher-Adreßprüfgrenze (Storage Address-Check Boundary - ACB) und des Speicherschlüssels erforderlich ist. Die zweite Übertragung enthält die niederwertigen Bits der absoluten Adresse, 16:31. Die darauffolgende Übertragung enthält die höherwertigen Bits der absoluten Adresse, 0:15, wobei 4:15 für den L3-Prozessorspeicher signifikant sind. Die letzte Übertragung enthält den Kanal-Speicherschlüssel, die Steuerungsinformationen für die Adreßgrenzprüfung, eine Vorrangkennung für die Speicherschlüssel- und ACB-Prüfung sowie eine sieben Bit lange Speicherfeldlänge. Adresse/Schlüssel empfängt die Kanal-Speicheranforderung mit der Kanal-Taktfrequenz. Im Anschluß an die letzte Übertragung wird ein Zwischenspeicher für anstehende Kanal-Speicheranforderung mit der Kanal-Taktfrequenz gesetzt, und die Kanal-Anforderung wird in Prozessortakte umgewandelt. Wenn die Metastabilität beseitigt wurde, werden die SHCP-Pufferkennung, die Kanal-Speicheranforderung und die Speicheranschlußkennung zur Speichersteuerung übertragen. Adresse/Schlüssel wandelt die absolute Adresse durch Speicherabbildung in eine physische Adresse um und berechnet die Endadresse (oder Endfeld-Adresse) für die angegebene Speicherfeldlänge. Die Speichersteuerung empfängt die Kennung des Speicherkanal-Datenpuffers, diespeicheranforderung, eine Anzeige für L3-Teil- oder Vollzeile sowie die Kennung des Speicheranschlusses, und die Anforderung wird in die Priorität für das L2-Cache-Miniverzeichnis und die Speicherschlüsselmatrix getrennt eingetragen. Falls momentan keine Anforderung für das L2-Miniverzeichnis aktiv ist, veranlaßt diese Kanalspeicher-Anforderung, sobald sie von der Priorität ausgewählt wurde, daß zum L2-Miniverzeichnis ein Befehl übertragen wird, auf die Anwesenheit der Zeile im L2-Cache zu prüfen. Adresse/Schlüssel wird angewiesen, die betreffende Adresse zum L2-Miniverzeichnis zu übertragen. Falls keine Anforderung für die Speicherschlüsselmatrix momentan aktiv ist, veranlaßt diese Kanal-Speicheranforderung, sobald sie von der Priorität ausgewählt wurde, daß zu Adresse/Schlüssel ein Befehl übertragen wird, die Adreß- und Schutzprüfungen durchzuführen, die der Kanal-Speicheranforderung im SHCP-Befehlspuffer von Adresse/Schlüssel zugeordnet sind. Sobald Adresse/Schlüssel die SHCP-Befehle der Speichersteuerung empfangen hat, verwendet sie den entsprechenden SHCP-Befehlspuffer, um zu ermitteln, welche Adressierungs- und Schutzprüfungen anzuwenden sind, und überträgt die gewählte Speicheradresse zum L2-Miniverzeichnis. "Endof-Operation" von Adresse/Schlüssel wird zur Speichersteuerung zurückgeliefert, wenn der SHCP-Befehl Zugriff auf die Speicherschlüsselmatrix erhält. Die entsprechenden Adressierungs- und Schutzprüfungen werden durchgeführt, und das Referenzbit der die angeforderte L3-Zeile enthaltenden 4-kB-Seite wird infolge der Kanal-Abrufanforderung auf '1'b gesetzt, sofern keine Zugriff- Ausnahmebedingungen eintreten. Die Ergebnisse der Adressierungsund Schutzprüfungen werden zur Speichersteuerung zurückgehefert. Sobald das L2-Cache-Miniverzeichnis den Befehl von der Speichersteuerung und die Adresse von Adresse/Schlüssel empfangen hat, wird es satzassoziativ durchsucht und liefert einen L2- Cache-Mißerfolg. Der L2-Status wird zur Speichersteuerung zurückgeliefert. Sobald die Speichersteuerung den status des L2- Miniverzeichnisses und den von Adresse/Schlüssel empfangen hat, trägt sie die Kanal-Anforderung in die Speicherpriorität ein, sofern keine Zugriff-Ausnahmebedingungen bestehen. In diesem Fall wird bei der Durchsuchung des L2-Cache-Miniverzeichnisses ein L2-Mißerfolg angezeigt. Dies ist stets eine korrekte Angabe des Status der L3-Zeile zum Zeitpunkt der Durchsuchung des L2- Miniverzeichnisses, und der benötigte Speicheranschluß muß zugewiesen werden. Die Speichersteuerung weist die benötigten Ressourcen zu und aktiviert die Anforderung, wenn sie von der Priorität ausgewählt wird. Adresse/Schlüssel wird angewiesen, die Adresse des gewählten SHCP-Befehlspuffers zur BSU-Steuerung zu übertragen. Zur BSU-Steuerung wird ein Befehl übertragen&sub1; einen Kanal-L3-Speicher-Abruf zu dem gewählten Speicherkanal-Datenpuffer durchzuführen. Adresse/Schlüssel überträgt die ausgewählte physische Adresse von L3 an die BSU-Steuerung. Die End- und die Anfangsadresse für den Kanal-Abruf werden ebenfalls zur BSU- Steuerung übertragen, um das Laden des Speicherkanal-Datenpuffers zu steuern. Die BSU-Steuerung empfängt den Kanal-L3-Abrufbefehl von der Speichersteuerung und die benötigten Adressen von Adresse/Schlüssel und hält sie für die momentane Speicheroperation bereit. Die BSU-Steuerung leitet den L3-Speicherabruf ein, indem sie Befehl und Adresse über den L2-Datenstrom zu dem gewünschten Speicheranschluß überträgt. Die BSU-Steuerung überträgt den Befehl, die Endadresse und die Anfangsadresse zur SCDB-Steuerung. Die SCDB-Steuerung empfängt den Kanal-L3-Abrufbefehl, die Datenpuffer-Kennung des Speicherkanals, die End- und Anfangsadresse und erwartet die Daten aus der Datenstromfunktion des L2-Cache. Für diese Sequenz erwartet die SCDB-Steuerung 16 Bytes Speicherdaten pro Übertragung. Der L3-Speicher führt den angeforderten Lesevorgang durch, indem er die Daten dem L3- Schnittstellenregister übergibt, und der L2-Datenstrom leitet sie zur Speicherkanal-Datenpufferfunktion. Die Daten werden stets beginnend mit der angegebenen Adresse der Reihe nach von links nach rechts für die innerhalb der L3-Zeile angegebene Zahl von Bytes gelesen und in vollständigen Vierfachwörtern zum L2- Datenstrom übertragen. Während die letzte Datenübertragung zum Speicherkanal-Datenpuffer abgeschlossen wird, überträgt die BSU- Steuerung "End-of-Operation" zut Speichersteuerung. Während der Datenübertragungen zum L3-Schnittstellenregister überwacht Adresse/Schlüssel die Zeilen mit nicht behebbaren Fehlern aus dem Speicher. Der Fehlerstatus wird für den bezeichneten SHCP- Puffer aufgezeichnet und bei Abschluß der Anforderung zu dem Gemeinschaftskanal-Prozessor weitergeleitet. Die SCDB-Steuerung empfängt die L3-Speicherdaten (16 Bytes pro Zyklus) vom L2-Datenstrom und leitet die Daten mit der Prozessor-Taktfrequenz in den gewählten Speicherkanal-Datenpuffer. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den L3-Anschluß frei und liefert "End-of-Operation" für die Kanal-Anforderung an Adresse/Schlüssel zurück. Sobald Adresse/Schlüssel "End-of-Operation" von der Speichersteuerung empfangen hat, wandelt sie den Hinweis in die Kanal- Taktfrequenz um und antwortet mit "SHCP Request Complete with Clean Status" für den Gemeinschaftskanal-Prozessor, sofern alle aus dem L3-Speicher abgerufenen Daten gültig sind.
  • 3.2 Speicher-Speicherungsroutinen für den Kanal 3.2.1 Speicherung im Speicher, 1:128 Bytes, keine Zugriff- Ausnahmebedingungen, L2M-Verzeichnis-Treffer/L2-Cache- Treffer
  • Der Gemeinschäftskanal-Prozessor gibt durch eine zweiphasige Operation eine Kanalspeicher-Speicherungsanforderung an das Speichersystem aus. Zuerst werden die Speichervorgangdaten zu einem Speicherkanal-Datenpuffer übertragen. Nach dem erfolgreichen Abschluß der Datenübertragung werden Befehl und Adresse zu Adresse/Schlüssel übertragen, um die eigentliche Speicheroperation zu beginrien. Der Gemeinschaftskanal-Prozessor beginnt eine Kanalspeicher-Speicherungsanforderung, indem er anfordert, daß der Kanal-Datenpuffer die Daten über eine 8 Byte breite bidirektionale Datenschnittstelle mit der Kanal-Taktfrequenz zur SCDB- Steuerung überträgt. Die erste Übertragung auf der Schnittstelle enthält die Kennung des Speicherkanal-Datenpuffers, den Befehl (Fetch oder Store - Abrufen oder Speichern) sowie eine Vierfachwort-Adresse innerhalb des 128 Byte breiten Puffers, Bits 25:27 der absoluten Adresse. Die Datenübertragungen schließen sich an und erfolgen stets in Zweier-Inkrementen, wobei sie eine ganze Zahl von Vierfachwörtern bilden. Die SCDB-Steuerung empfängt mit der Kanal-Taktfrequenz den Befehl und die Datenübertragungen und lädt mit der Kanal-Taktfrequenz die Steuerinformationen in die betreffenden Register und die Daten in den gewählten Speicherkanal-Datenpuffer. Die Daten werden, beginnend mit dem durch die Vierfachwort-Adresse bezeichneten Vierfachwort, in den Speicherkanal-Datenpuffer geladen. Die SCDB-Steue- rung signalisiert dem Kanal-Datenpuffer einen erfolgreichen Abschluß, indem sie das Übertragungsecho in dem Zyklus nach der letzten Datenübertragung deaktiviert. Der Kanal-Datenpuffer signalisiert anschließend dem Gemeinschaftskanal-Prozessor den erfolgreichen Abschluß der Datenübertragung. Der Gemeinschaftskanal-Prozessor gibt durch eine mehrere Zyklen lange Übertragung von Befehl und Adresse zu Adresse/Schlüssel eine Kanalspeicher-Speicherungsanforderung an das Speichersystem aus. Die vier Zyklen der Befehls-/Adreßübertragung erfolgen mit der Kanal-Taktfrequenz. Die erste Übertragung enthält die Pufferkennung des Gemeinschaftskanal-Prozessors, eine Speicherungsanforderung für den L3-Speicher und einen Hinweis, ob Prüfungen der Adreßprüfgrenze (ACB) des Speichers und des Speicherschlüssels erforderlich sind. Die zweite Übertragung enthält die niederwertigen Bits der absoluten Adresse, 16:31. Die darauffolgende Übertragung enthält die höherwertigen Bits der absoluten Adresse, 0:15, wobei 4:15 für den L3-Prozessorspeicher signifikant sind. Die abschließende Übertragung enthält den Kanal-Speicherschlüssel, die Steuerungsinformatiönen für die Adreßgrenzprüfung, eine Vorrangkennung für die Speicherschlüssel- und ACB- Prüfung sowie eine sieben bit lange Speicherfeldlänge. Adresse/Schlüssel empfängt die Kanal-Speicheranforderung mit der Kanal-Taktfrequenz. Im Anschluß an die letzte Übertragung wird ein Zwischenspeicher für anstehende Kanal-Speicheranforderung mit der Kanal-Taktfrequenz gesetzt, und die Kanal-Anforderung wird in Prozessortakte umgewandelt. Wenn die Metastabilität beseitigt wurde, werden die SHCP-Pufferkennung, die Kanal-Speicheranforderung und die Speicheranschlußkennung zur Speichersteuerung übertragen. Adresse/Schlüssel wandelt die absolute Adresse durch Speicherabbildung in eine physische Adresse um und berechnet die Endadresse (oder Endfeld-Adresse) für die angegebene Speicherfeldlänge. Unter Verwendung der Anfangsadresse und Feldlänge erzeugt Adresse/Schlüssel zwei Bits, um anzugeben, welche L2-Halbzeilen durch die Speicherungsanforderung modifiziert werden, und zwar ein Bit für jede 64 Byte lange Ralbzeile. Diese werden in die Adreßbit-Positionen 27 und 28 der absoluten L2- Adresse eingesetzt. Wenn Bit 27 gleich '1'b ist, zeigt dies an, daß die obere Halbzeile modifiziert ist; wenn Bit 28 gleich '1'b ist, zeigt dies an, daß die untere Halbzeile modifiziert ist. Die Speichersteuerung empfängt die Kennung des Speicherkanal- Datenpuffers, die Speicheranforderung, eine Anzeige für L3-Teiloder Vollzeile sowie die Kennung des Speicheranschlusses, und die Anforderung wird in die Priorität für das L2-Cache-Miniverzeichnis und die Speicherschlüsselmatrix getrennt eingetragen. Falls momentan keine Anforderung für das L2-Miniverzeichnis aktiv ist, veranlaßt diese Kanalspeicher-Anforderung, sobald sie von der Priorität ausgewählt wurde, daß zum L2-Miniverzeichnis ein Befehl übertragen wird, auf die Anwesenheit der Zeile im L2- Cache zu prüfen. Adresse/Schlüssel wird angewiesen, die betreffende Adresse zum L2-Miniverzeichnis zu übertragen. Falls keine Anforderung für die Speicherschlüsselmatrix momentan aktiv ist, veranlaßt diese Kanal-Speicheranforderung, sobald sie von der Priorität ausgewählt wurde, daß zu Adresse/Schlüssel einbefehl übertragen wird, die Adreß- und Schutzprüfungen durchzuführen, die der Kanal-Speicheranforderung im SHCP-Befehlspuffer von Adresse/Schlüssel zugeordnet sind. Sobald Adresse/Schlüssel die SHCP-Befehle der Speichersteuerung empfangen hat, verwendet sie den entsprechenden SHCP-Befehlspuffer, um zu ermitteln, welche Adressierungs- und Schutzprüfungen anzuwenden sind, und überträgt die gewählte Speicheradresse zum L2-Miniverzeichnis. "End- of-Operation" von Adresse/Schlüssel wird zur Speichersteuerung zurückgeliefert, wenn der SHCP-Befehl Zugriff auf die Speicherschlüsselmatrix erhält. Die entsprechenden Adressierungs- und Schutzprüfungen werden durchgeführt, und die Referenz- und Änderungsbits der die angeforderte L3-Zeile enthaltenden 4-kB-Seite werden infolge der Kanal-Speicherungsanforderung auf '1'b gesetzt, sofern keine Zugriff-Ausnahmebedingungen eintreten. Die Ergebnisse der Adressierungs- und Schutzprüfungen werden zur Speichersteuerung zurückgeliefert. Sobald das L2-Cache-Miniverzeichnis den Befehl von der Speichersteuerung und die Adresse von Adresse/Schlüssel empfangen hat, wird es satzassoziativ durchsucht und liefert einen L2-Cache-Treffer. Der L2-Status wird zur Speichersteuerung zurückgeliefert. Sobald die Speichersteuerung den Status des L2-Miniverzeichnisses und den von Adresse/Schlüssel empfangen hat, trägt sie die Kanal-Anforderung in die Speicherpriorität ein, sofern keine Zugriff-Ausnahmebedingungen bestehen. In diesem Fall wird bei der Durchsuchung des L2-Cache-Miniverzeichnisses ein L2-Treffer angezeigt. Da jedoch das L2-Miniverzeichnis fälschlicherweise die Existenz einer Zeile im L2-Cache angeben kann, muß der benötigte Speicheranschluß zugewiesen werden. Die Speichersteuerung weist die benötigten Ressourcen (einschließlich eines Seiteneinlagerungs/Seitenauslagerungs-Pufferpaars) zu und aktiviert die Anforderung, wenn sie von der Priorität ausgewählt wird. Adresse/Schlüssel wird angewiesen, die Adresse des-gewählten SHCP- Befehlspuffers zur BSU-Steuerung zu übertragen. Zur BSU-Steuerung wird ein Befehl übertragen, eine Kanal-L2-Cache-Speicherung aus dem gewählten Speicherkanal-Datenpuffer durchzuführen. Im Falle eines L2-Cache-Mißerfolgs überträgt Adresse/Schlüssel die gewählte physische L3-Adresse zur BSU-Steuerung. Die End- und die Anfangsadresse für den Kanal-Speichervorgang werden ebenfalls zur BSU-Steuerung übertragen, um die Erzeugung der Speicherbyte-Markierungen für den Schreibvorgang der L2-Cachezeile zu ermöglichen. Die BSU-Steuerung empfängt den L2-Speicherungsbefehl des Kanals von der Speichersteuerung und die benötigten Adressen von Adresse/Schlüssel und hält sie für die momentane Speicheroperation bereit. Die BSU-Steuerung überträgt den Befehl, die Endadresse und die Anfangsadresse zur SCDB- Steuerung und synchronisiert die Erzeugung und das Laden der Speicherbyte-Markierungen des Seiteneinlagerungspuffers mit den Datenübertragungen aus dem Speicherkanal-Datenpuffer. Die SCDB- Steuerung empfängt den L2-Speicherungsbefehl des Kanals, die Datenpuffer-Kennung des Speicherkanals und die End- und Anfangsadresse und beginnt, den Inhalt des gewählten Speicherkanal-Datenpuffers zu lesen. Für L2-Speicherungsoperationen des Kanals überträgt SCDB stets 128 Bytes aus dem Speicherkanal-Datenpuffer zum L2-Datenstrom, und zwar unabhängig von der Zahl der tatsächlich gespeicherten Bytes. Es werden vier 32 Byte lange Übertragungen züm Seiteneinlagerungspuffer des L2-Cache vorgenommen, wobei von links nach rechts vorgegangen wird, und zwar beginnend mit den Vierfachwörtern 0 und 1. Parallel zu dem ersten Lesevorgang des Spei6herkanal-Datenpuffers überträgt die Speichersteuerung zur L2-Steuerung einen Befehl, eine Speicherung im L2- cachespeicher des Kanals durchzuführen. Adresse/Schlüssel wird angewiesen, die Adresse des gewählten SHCP-Befehlspuffers zur L2-Steuerung zu übertragen. Adresse/Schlüssel überträgt die modifizierte absolute L2-Adresse (einschließlich der Halbzeilen- Modifikatoren der L3-Cachezeile) zur L2-Steuerung. Die L2-Steuerung empfängt den Befehl der Speichersteuerung und verwendet nach Auswahl durch die Bearbeitungspriorität des L2-Cache die Adresse von Adresse/Schlüssel, um das L2-Cacheverzeichnis zu durchsuchen. Die Seiteneinlagerungs-Einfrierregister und Zeilenhalt-Register des Prozessors mit aktivem Hinweis auf einen nicht behebbaren Speicherfehler werden verglichen, um eine Übereinstimmung mit der Adresse der Kanal-L2-Speicherungszeile zu finden. Falls eine Übereinstimmung auftritt, wird der L2- Mißerfolg-Status erzwungen, um die Kanal-Anforderung auf den L3- Speicher zugreifen zu lassen. Ein L2-Speicherungsbefehl des Kanals wird zur BSU-Steuerung übertragen, und eine Befehlsantwort wird zur Speichersteuerung übertragen. Aus der Durchsuchung des Verzeichnisses ergibt sich ein L2-Cache-Treffer. Die Sperregister des Prozessors werden nicht mit der Adresse verglichen, da es sich hierbei um eine Kanal-Speicherungsanforderung handelt. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile wird anschließend zur BSU-Steuerung und zur Speichersteuerung übertragen. Alle L1-Statusmatrizen werden nach Maßgabe der Halbzeilen-Modifikatoren (Adreßbits 27 und 28 von Adresse/Schlüssel) nach Kopien der modifizierten Hälften der L2-Cachezeile durchsucht. Die niederwertige L2-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als Komparand mit den Ausgabedaten der L1-Statusmatrizen verwendet. Falls L1-Cache-Kopien gefunden werden, werden die betreffenden L1/L2-Busse zur Entwertung angefordert. Die L1- Cache-Kongruenz und die L1-Cachesätze (zwei für den L1-Operandencache und zwei für den L1-Anweisungscache) werden für die Entwertung der L1-Cache-Kopien zu den betreffenden Prozessoren gleichzeitig übertragen, nachdem die Anforderung des Adreßbusses durch diesen L1 genehmigt wurde. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Cache-Treffer) und gibt den der Kanal-Anforderung zugeordneten Speicheranschluß frei. "End-of- Operation" für die Kanal-Anforderung wird zu Adresse/Schlüssel übertragen. Bevor der L2-Cache-Status bekannt ist, werden Befehl und Adresse zur BSU-Steuerung übertragen, um den Zugriff auf den L2-Cache zu beginnen. Da es sich hierbei um einen Vollzeilen- Speichervorgang handelt und die Cachesätze verschachtelt sind, muß der L2-Cachesatz verwendet werden, um die Adreßbits 25 und 26 so zu manipulieren, daß der Schreibvorgang der L2-Cachezeile zugelassen wird. Sobald der L2-Cachesatz und der Zeilenstatus (L2-Treffer) empfangen wurden, wird der Vollzeilen- Schreibvorgang zum L2-Cache nach Maßgabe der Speicherbyte-Markierungen des Seiteneinlagerungspuffers abgeschlossen. Sobald Adresse/Schlüssel "End-of-Operation" von der Speichersteuerung empfangen hat, wandelt sie den Hinweis in die Kanal-Taktfrequenz um und antwortet mit "SHCP Request Complete with dean Status" für den Gemeinschaftskanal-Prozessor.
  • 3.2.2 Speicherung im Speicher, 1:128 Bytes, keine Zugriff- Ausnahmebedingungen, L2M-Verzeichnis-Tre ffer/L2-Cache- Mißerfolg
  • Der Gemeinschaftskanal-Prozessor gibt durch eine zweiphasige Operation eine Kanalspeicher-Speicherungsanforderung an das Speichersystem aus. Zuerst werden die Speichervorgangdaten zu einem Speicherkanal-Datenpuffer übertragen. Nach dem erfolgreichen Abschluß der Datenübertragung werden Befehl und Adresse zu Adresse/Schlüssel übertragen, um die eigentliche Speicheroperation zu beginnen. Der Gemeinschaftskanal-Prozessor beginnt eine Kanalspeicher-Speicherungsanforderung, indem er anfordert, daß der Kanal-Datenpuffer die Daten über eine 8 Byte breite bidirektionale Datenschnittstelle mit der Kanal-Taktfrequenz zur SCDB- Steuerung überträgt. Die erste Übertragung auf der Schnittstelle enthält die Kennung des Speicherkanal-Datenpuffers, den Befehl (Fetch oder Store - Abrufen oder Speichern) sowie eine Vierfachwort-Adresse innerhalb des 128 Byte breiten Puffers, Bits 25:27 der absoluten Adresse. Die Datenübertragungen schließen sich an und erfolgen stets in Zweier-Inkrementen, wobei sie eine ganze Zahl von Vierfachwörtern bilden. Die SCDB-Steuerung empfängt mit der Kanal-Taktfrequenz den Befehl und die Datenübertragungen und lädt mit der Kanal-Taktfrequenz die Steuerinformationen in die betreffenden Register und die Daten in den gewählten Speicherkanal-Datenpuffer. Die Daten werden, beginnend mit dem durch die Vierfachwort-Adresse bezeichneten Vierfachwort, in den Speicherkanal-Datenpuffer geladen. Die SCDB-Steuerung signalisiert dem Kanal-Datenpuffer einen erfolgreichen Abschluß, indem sie das Übertragungsecho in dem Zyklus nach der letzten Datenübertragung deaktiviert. Der Kanal-Datenpuffer signalisiert anschließend dem Gemeinschaftskanal-Prozessor den erfolgreichen Abschluß der Datenübertragung. Der Gemeinschaftskanal-Prozessor gibt durch eine mehrere Zyklen lange Übertragüng von Befehl und Adresse zu Adresse/Schlüssel eine Kanalspeicher-Speicherungsanforderung an das Speichersystem aus. Die vier Zyklen der Befehls-/Adreßübertragung erfolgen mit der Kanal-Taktfrequenz. Die erste Übertragung enthält die Pufferkennung des Gemeinschaftskanal-Prozessors, eine Speicherungsanforderung für den L3-Speicher und einen Hinweis, ob Prüfungen der Adreßprüfgrenze (ACB) des Speichers und des Speicherschlüssels erforderlich sind. Die zweite Übertragung enthält die niederwertigen Bits der äbsoluten Adresse, 16:31. Die darauffolgende Übertragung enthält die höherwertigen Bits der absoluten Adresse, 0:15, wobei 4:15 für den L3-Prozessorspeicher signifikant sind. Die abschließende Übertragung enthält den Kanal-Speicherschlüssel, die Steuerungsinformationen für die Adreßgrenzprüfung, eine Vorrangkennung für die Speicherschlüssel- und ACB- Prüfung sowie eine sieben bit lange Speicherfeldlänge. Adresse/Schlüssel empfängt die Kanal-Speicheranforderung mit der Kanal-Taktfrequenz. Im Anschluß an die letzte Übertragung wird ein Zwischenspeicher für anstehende Kanal-Speicheranforderung mit der Kanal-Taktfrequenz gesetzt, und die Kanal-Anforderung wird in Prozessortakte umgewandelt. Wenn die Metastabilität beseitigt wurde, werden die SHCP-Püfferkennung, die Kanal-Speicheranforderung und die Speicheranschlußkennung zur Speichersteuerung übertragen. Adresse/Schlüssel wandelt die absolute Adresse durch Speicherabbildung in eine physische Adresse um und berechnet die Endadresse (oder Endfeld-Adresse) für die angegebene Speicherfeldlänge. Unter Verwendung der Anfangsadresse und Feldlänge erzeugt Adresse/Schlüssel zwei Bits, um anzugeben, welche L2-Halbzeilen durch die Speicherungsanforderung modifiziert werden, und zwar ein Bit für jede 64 Byte lange Halbzeile. Diese werden in die Adreßbit-Positionen 27 und 28 der absoluten L2- Adresse eingesetzt. Wenn Bit 27 gleich '1'b ist, zeigt dies an, daß die obere Halbzeile modifiziert ist; wenn Bit 28 gleich '1'b ist, zeigt dies an, daß die untere Halbzeile modifiziert ist. Die Speichersteuerung empfängt die Kennung des Speicherkanal- Datenpuffers, die Speicheranforderung, eine Anzeige für L3-Teil- oder Vollzeile sowie die Kennung des Speicheranschlusses, und die Anforderung wird in die Priorität für das L2-Cache-Miniverzeichnis und die Speicherschlüsselmatrix getrennt eingetragen. Falls momentan keine Anforderung für das L2-Miniverzeichnis aktiv ist, veranlaßt diese Kanalspeicher-Anforderung, sobald sie von der Priorität ausgewählt wurde, daß zum L2-Miniverzeichnis ein Befehl übertragen wird, auf die Anwesenheit der Zeile im L2- Cache zu prüfen. Adresse/Schlüssel wird angewiesen, die betreffende Adresse zum L2-Miniverzeichnis zu übertragen. Falls keine Anforderung für die Speicherschlüsselmatrix momentan aktiv ist, veranlaßt diese Kanal-Speicheranforderung, sobald sie von der Priorität ausgewählt wurde, daß zu Adresse/Schlüssel ein Befehl übertragen wird, die Adreß- und Schutzprüfungen durchzuführen, die der Kanal-Speicheranforderung im SHCP-Befehlspuffer von Adresse/Schlüssel zugeordnet sind. Sobald Adresse/Schlüssel die SHCP-Befehle der Speichersteuerung empfangen hat, verwendet sie den entsprechenden SHCP-Befehlspuffer, um zu ermitteln, welche Adressierungs- und Schutzprüfungen anzuwenden sind, und über trägt die gewählte Speicheradresse zum L2-Miniverzeichnis. "End- of-Operation" von Adresse/Schlüssel wird zur Speichersteuerung zurückgeliefert, wenn der SHCP-Befehl Zugriff auf die Speicherschlüsselmatrix erhält. Die entsprechenden Adressierungs- und Schutzprüfungen werden durchgeführt, und die Referenz- und Anderungsbits der die angeforderte L3-zeile enthaltenden 4-kB-Seite werden infolge der Kanal-Speicherungsanforderung auf '1'b gesetzt, sofern keine Zugriff-Ausnahmebedingungen eintreten. Die Ergebnisse der Adressierungs- und Schutzprüfungen werden zur Speichersteuerung zurückgeliefert. Sobald das L2-Cache-Miniverzeichnis den Befehl von der Speichersteuerung und die Adresse von Adresse/Schlüssel empfangen hat, wird es satzassoziativ durchsucht und liefert einen L2-Cache-Treffer. Der L2-Status wird zur Speichersteuerung zurückgeliefert. Sobald die Speichersteuerung den Status des L2-Miniverzeichnisses und den von Adresse/Schlüssel empfangen hat, trägt sie die Kanal-Anforderung in die Speicherpriorität ein, sofern keine Zugriff-Ausnahmebedingungen bestehen. In diesem Fall wird bei der Durchsuchung des L2-Cache-Miniverzeichnisses ein L2-Treffer angezeigt. Da jedoch das L2-Miniverzeichnis fälschlicherweise die Existenz einer Zeile im L2-Cache angeben kann, muß der benötigte Speicheranschluß zugewiesen werden. Die Speichersteuerung weist die benötigten Ressourcen (einschließlich eines Seiteneinlagerungs/Seitenauslagerungs-Pufferpaars) zu und aktiviert die Anforderung, wenn sie von der Priorität ausgewählt wird. Adresse/Schlüssel wird angewiesen, die Adresse des gewählten SHCP- Befehlspuffers zur BSU-Steuerung zu übertragen. Zur BSU-Steuerung wird ein Befehl übertragen, eine Kanal-L2-Cache-Speicherung aus dem gewählten Speicherkanal-Datenpuffer durchzuführen. Im Falle eines L2-Cache-Mißerfolgs überträgt Adresse/Schlüssel die gewählte physische L3-Adresse zur BSU-Steuerung. Die End- und die Anfangsadresse für die Kanalspeicherung werden ebenfalls zur BSU-Steuerung übertragen, um die Erzeugung der Speicherbyte-Markierungen für den Schreibvorgang der L2-Cachezeile zu ermöglichen. Die BSU-Steuerung empfängt den L2-Speicherungsbefehl des Kanals von der Speichersteuerung und die benötigten Adressen von Adresse/Schlüssel und hält sie für die momentane Speicheroperation bereit. Die BSU-Steuerung überträgt den Befehl, die Endadresse und die Anfangsadresse zur SCÜB-Steuerung und synchronisiert die Erzeugung und das Laden der Speicherbyte-Markierungen des Seiteneinlagerungspuffers mit den Datenübertragungen aus dem Speicherkanal-Datenpuffer. Die SCDB-Steuerung empfängt den L2- Speicherungsbefehl des Kanals, die Datenpuffer-Kennung des Speicherkanals und die End- und Anfangsadresse und beginnt, den Inhalt des gewählten Speicherkanal-Datenpuffers zu lesen. Für L2- Speicherungsoperationen des Kanals überträgt SCDB stets 128 Bytes aus dem Speicherkanal-Datenpuffer zum L2-Datenstrom, und zwar unabhängig von der Zahl deü tatsächlich gespeicherten Bytes. Es werden vier 32 Byte lange Übertragungen zum Seiteneinlagerungspuffer des L2-Cache vorgenommen, wobei von links nach rechts vorgegangen wird, und zwar beginnend mit den Vierfachwörtern 0 und 1. Parallel zu dem ersten Lesevorgang des Speicherkanal-Datenpuffers überträgt die Speichersteuerung zur L2-Steuerung einen Befehl, eine Speicherung im L2-Cachespeicher des Kanals durchzuführen. Adresse/Schlüssel wird angewiesen, die Adresse des gewählten SHCP-Befehlspuffers zur L2-Steuerung zu übertragen. Adresse/Schlüssel überträgt die modifizierte absolute L2-Adresse (einschließlich der Halbzeilen-Modifikatoren der L3-Cachezeile) zur L2-Steuerung. Die L2-Steuerung empfängt den Befehl der Speichersteuerung und verwendet nach Auswahl durch die Bearbeitungspriorität des L2-Cache die Adresse von Adresse/Schlüssel, um das L2-Cacheverzeichnis zu durchsuchen. Die Seiteneinlagerungs-Einfrierregister und Zeilenhalt-Register des Prozessors mit aktivem Hinweis auf einen nicht behebbaren Speicherfehler werden mit der Adresse der Kanal-L2-Speicherungszeile verglichen. Falls eine Übereinstimmung auftritt, wird der L2- Mißerfolg-Status erzwungen, um die Kanal-Anforderung auf den L3- Speicher zugreifen zu lassen. Ein L2-Speicherungsbefehl des Kanals wird zur BSU-Steuerung übertragen, und eine Befehlsantwort wird zur Speichersteuerung übertragen. Aus der Durchsuchung des Verzeichnisses ergibt sich ein L2-Cache-Mißerfolg. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile wird anschließend zur BSU-Steuerung und zur Speichersteuerung übertragen. Die Vergleiche der L1-Statusmatrizen sind aufgrund des L2-Cache-Mißerfolgs blockiert. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Cache- Mißerfolg). Die Speichersteuerung erkennt, daß die BSU-Steuerung die angeforderten Daten im L3-Prozessorspeicher speichern muß, und behält die mit der Kanal-Anforderung in Verbindung stehende Sperre des Speicheranschlusses bei. Bevor der L2-Cachestatus bekannt ist, werden Befehl und Adresse zur BSU-Steuerung übertragen, um den Zugriff auf den L2-Cache zu beginnen. Da es sich hierbei um eine Vollzeilen-Speicherung handelt und die Cachesätze verschachtelt sind, muß der L2-Cachesatz verwendet werden, um die Adreßbits 25 und 26 so zu manipulieren, daß der Schreibvorgang der L2-Cachezeile zugelassen wird. Sobald der L2-Cachesatz und der Zeilenstatus (L2-Mißerfolg) empfangen wurden, wird der Vollzeilen-Schreibvorgang abgebrochen. Die BSU-Steuerung überträgt aufgrund des L2-Cache-Mißerfolgs einen neuen Befehl sowie eine neue Endadresse und Anfangsadresse zur SCDB-Steuerung. Die SCDB-Steuerung empfängt den Kanal-L3-Speicherungsbefehl, die Datenpuffer-Kennung des Speicherkanals und die End- und Anfangsadresse und beginnt, den Inhalt des gewählten Speicherkanal-Datenpuffers zu lesen. Für Kanal-L3-Speicherungsoperationen überträgt SCDB nur die benötigten Vierfachwörter aus dem Speicherkanal-Datenpuffer zum L2-Datenstrom, und zwar für die anschließende Übertragung zum L3-Speicher. Die Vierfachwort- Übertragungen beginnen mit der Anfangsadresse und werden der Reihe nach bis zur Endadresse fortgesetzt. Die BSU-Steuerung wählt den Speicheranschluß aus und überträgt in dem Zyklus, bevor das erste Vierfachwort aus dem Speicherkanal-Datenpuffer im L2-Datenstrom eingespeichert wird, Befehl und Adresse zu den Speicherkarten. Die BSU-Steuerung leitet anschließend die betreffende Zahl von Vierfachwörtern vom. Speicherkanal-Datenpuffer über das L3-Schnittstellenregister zum L3-Speicher. Die BSU- Steuerung überträgt im Anschluß an die letzte Datenübertragung zu dem gewählten Speicheranschluß "End-of-Operation" zur Speichersteuerung. Falls gerade ein Vollzeilen-Speichervorgang abläuft, gibt die Speichersteuerung den Speicheranschluß aufgrund des "End-of-Operation" von der BSU-Steuerung frei, um einen überlappten Zugriff auf den Speicheranschluß zu ermöglichen, und überträgt "End-of-Operation" für die Kanal-Anforderung zu Adresse/Schlüssel. Falls nicht gerade ein Vollzeilen-Speichervorgang ausgeführt wird, wartet die Speichersteuerung ab, bis das L3- "belegt"-Signal von dem gewählten Speicheranschluß inaktiv wird, bevor sie den L3-Anschluß freigibt, überträgt aber aufgrund des "End-of-Operation" der BSU ein "End-of-Operation" für die Kanal- Anforderung zu Adresse/Schlüssel. Sobald Adresse/Schlüssel "End- of-Operation" von der Speichersteuerung empfangen hat, wandelt sie den Hinweis in die Kanal-Taktfrequenz um und antwortet mit "SHCP Request Complete with Clean Status" für den Gemeinschaftskanal-Prozessor.
  • 3.2.3 Speicherung im Speicher, 1:128 Bytes, keine Zugriff- Ausnahmebedingungen, L2M-Verzeichnis-Mißerfolg
  • Der Gemeinschaftskanal-Prozessor gibt durch eine zweiphasige Operation eine Kanalspeicher-Speicherungsanforderung an das Speichersystem aus. Zuerst werden die Speicherungsdaten zu einem Speicherkanal-Datenpuffer übertragen. Nach dem erfolgreichen Abschluß der Datenübertragung werden Befehl und Adresse zu Adresse/Schlüssel übertragen, um die eigentliche Speicheroperation zu beginnen. Der Gemeinschaftskanal-Prozessor beginnt eine Kanalspeicher-Speicherungsanforderung, indem er anfordert, daß der Kanal-Datenpuffer die Daten über eine 8 Byte breite bidirektionale Datenschnittstelle mit der Kanal-Taktfrequenz zur SCDB- Steuerung überträgt. Die erste Übertragung auf der Schnittstelle enthält die Kennung des Speicherkanal-Datenpuffers, den Befehl (Fetch oder Store - Abrufen oder Speichern) sowie eine Vierfachwort-Adresse innerhalb des 128 Byte breiten Puffers, Bits 25:27 der absoluten Adresse. Die Datenübertragungen schließen sich an und erfolgen stets in Zweier-Inkrementen, wobei sie eine ganze Zahl von Vierfachwörtern bilden. Die SCDB-Steuerung empfängt mit der Kanal-Taktfrequenz den Befehl und die Datenübertragungen und lädt mit der Kanal-Taktfrequenz die Steuerinformationen in die betreffenden Register und die Daten in den gewählten Speicherkanal-Datenpuffer. Die Daten werden, beginnend mit dem durch die Vierfachwort-Adresse bezeichneten Vierfachwort, in den Speicherkanal-Datenpuffer geladen. Die SCDB-Steuerung signalisiert dem Kanal-Datenpuffer einen erfolgreichen Abschluß, indem sie das Übertragungsecho in dem Zyklus nach der letzten Datenübertragung deaktiviert. Der Kanal-Datenpuffer signalisiert anschließend dem Gemeinschaftskanal-Prozessor den erfolgreichen Abschluß der Datenübertragung. Der Gemeinschaftskanal-Prozessor gibt durch eine mehrere Zyklen lange Übertragung von Befehl und Adresse zu Adresse/Schlüssel eine Kanalspeicher-Speicherungsanforderung an das Speichersystem aus. Die vier Zyklen der Befehls-/Adreßübertragung erfolgen mit der Kanal-Taktfrequenz. Die erste Übertragung enthält die Pufferkennung des Gemeinschaftskanal-Prozessors, eine Speicherungsanforderung für den L3-Speicher und einen Hinweis, ob Prüfungen der Adreßprüfgrenze (ACB) des Speichers und des Speicherschlüssels erforderlich sind. Die zweite Übertragung enthält die niederwertigen Bits der absoluten Adresse, 16:31. Die darauffolgende Übertragung enthält die höherwertigen Bits der absoluten Adresse, 0:15, wobei 4:15 für den L3-Prozessorspeicher signifikant sind. Die abschließende Übertragung enthält den Kanal-Speicherschlüssel, die Steuerung für die Adreßprüfgrenze, eine Vorrangkennung für die Speicherschlüssel- und ACB-Prüfung sowie eine sieben bit lange Speicherfeldlänge. Adresse/Schlüssel empfängt die Kanal-Speicheranforderung mit der Kanal-Taktfrequenz. Im Anschluß an die letzte Übertragung wird ein Zwischenspeicher für anstehende Kanal-Speicheranforderung mit der Kanal-Taktfrequenz gesetzt, und die Kanal-Anforderung wird in Prozessortakte umgewandelt. Wenn die Metastabilität beseitigt wurde, werden die SHCP-Pufferkennung, die Kanal-Speicheranforderung und die Speicheranschlußkennung zur Speichersteuerung übertragen. Adresse/Schlüssel wandelt die absolute Adresse durch Speicherabbildung in eine physische Adresse um und berechnet die Endadresse (oder Endfeld-Adresse) für die angegebene Speicherfeldlänge. Unter Verwendung der Anfangsadresse und Feldlänge erzeugt Adresse/Schlüssel zwei Bits, um anzugeben, welche L2-Halbzeilen durch die Speicherüngsanforderung modifiziert werden, und zwar ein Bit für jede 64 Byte lange Halbzeile. Diese werden in die Adreßbit- Positionen 27 und 28 der absoluten L2-Adresse eingesetzt. Wenn Bit 27 gleich '1'b ist, zeigt dies an, daß die obere Halbzeile modifiziert ist; wenn Bit 28 gleich '1b ist, zeigt dies an, daß die untere Halbzeile modifiziert ist. Die Speichersteuerung empfängt die Kennung des Speicherkanal-Datenpuffers, die Speicheranforderung, eine Anzeige für L3-Teil- oder Vollzeile sowie die Kennung des Speicheranschlusses, und die Anforderung wird in die Priorität für das L2-Cache-Miniverzeichnis und die Speicherschlüsselmatrix getrennt eingetragen. Falls momentan keine Anforderung für das L2-Miniverzeichnis aktiv ist, veranlaßt diese Kanalspeicher-Anforderung, sobald sie von der Priorität ausgewählt wurde, daß zum L2-Miniverzeichnis ein Befehl übertragen wird, auf die Anwesenheit der Zeile im L2-Cache zu prüfen. Adresse/Schlüssel wird angewiesen, die betreffende Adresse zum L2-Miniverzeichnis zu übertragen. Falls keine Anforderung für die Speicherschlüsselmatrix momentan aktiv ist, veranlaßt diese Kanal-Speicheranforderung, sobald sie von der Priorität ausgewählt wurde, daß zu Adresse/Schlüssel ein Befehl übertragen wird, die Adreß- und Schutzprüfungen durchzuführen, die der Kanal-Speicheranforderung im SHCP-Befehlspuffer von Adresse/Schlüssel zugeordnet sind. Sobald Adresse/Schlüssel die SHCP- Befehle der Speichersteuerung empfangen hat, verwendet sie den entsprechenden SHCP-Befehlspuffer, um zu ermitteln, welche Adressierungs- und Schutzprüfungen anzuwenden sind, und überträgt die gewählte Speicheradresse zum L2-Miniverzeichnis. "End- of-Operation" von Adresse/Schlüssel wird zur Speichersteuerung zurückgeliefert, wenn der SHCP-Befehl Zugriff auf die Speicherschlüsselmatrix erhält. Die entsprechenden Adressierungs- und Schutzprüfungen werden durchgeführt, und die Referenz- und Anderungsbits der die angeforderte L3-Zeile enthaltenden 4-kB-Seite werden infolge der Kanal-Speicherungsanforderung auf '1'b gesetzt, sofern keine Zugriff-Ausnahmebedingungen eintreten. Die Ergebnisse der Adressierungs- und Schutzprüfungen werden zur Speichersteuerung zurückgeliefert. Sobald das L2-Cache-Miniverzeichnis den Befehl von der Speichersteuerung und die Adresse von Adresse/Schlüssel empfangen hat, wird es satzassoziativ durchsucht und liefert einen L2-Cache-Mißerfolg. Der L2-Status wird zur Speichersteuerung zurückgeliefert. Sobald die Speichersteuerung den Status des L2-Miniverzeichnisses und den von Adresse/Schlüssel empfangen hat, trägt sie die Kanal-Anforderung in die Speicherpriorität ein, sofern keine Zugriff-Ausnahmebedingungen bestehen. In diesem Fall wird bei der Durchsuchung des L2-Cache-Miniverzeichnisses ein L2-Mißerfolg angezeigt. Dies ist stets eine richtige Angabe des Status der L3-Zeile zum Zeitpunkt der Durchsuchung des L2-Miniverzeichnisses, und der benötigte Speicheranschluß muß zugewiesen werden. Die Speichersteuerung weist die benötigten Ressourcen (einschließlich eines Seiteneinlagerungs-/Seitenauslagerungs-Pufferpaars) zu und aktiviert die Anforderung, wenn sie von der Priorität ausgewählt wird. Adresse/Schlüssel wird angewiesen, die Adresse des gewählten SHCP-Befehlspuffers zur BSU-Steuerung zu übertragen. Zur BSU-Steuerung wird ein Befehl übertragen, eine Kanal-L3-Speicherung aus dem gewählten Speicherkanal-Datenpuffer durchzuführen. Adresse/Schlüssel überträgt die gewählte physische L3-Adresse zur BSU-Steuerung. Die End- und die Anfangsadresse für den Kanal-Speichervorgang werden ebenfalls zur BSU-Steuerung übertragen, um die Zahl der Vierfachwort-Übertragungen zum L3-Speicher anzugeben. Die BSU-Steuerung empfängt den L3-Speicherungsbefehl des Kanals von der Speichersteuerung und die benötigten Adressen von Adresse/Schlüssel und hält sie für die momentane Speicheroperation bereit. Die BSU-Steuerung überträgt den Befehl, die Endadresse und die Anfangsadresse zur SCDB-Steuerung. Die SCDB-Steuerung empfängt den L3-Speicherungsbefehl des Kanals, die Datenpuffer-Kennung des Speicherkanals und die Endund Anfangsadresse und beginnt, den Inhalt des gewählten Speicherkanal-Datenpuffers zu lesen. Für L3-Speicherungsoperationen des Kanals überträgt SCDB nur die benötigten Vierfachwörter aus dem Speicherkanal-Datenpuffer zum L2-Datenstrom für die anschließende Übertragung zum L3-Speicher. Die Vierfachwort- Übertragungen beginnen mit der Anfangsadresse und werden der Reihe nach bis zur Endadresse fortgesetzt. Die BSU-Steuerung wählt den Speicheranschluß aus und überträgt in dem Zyklus, bevor das erste Vierfachwort aus dem Speicherkanal-Datenpuffer im L2-Datenstrom eingespeichert wird, Befehl und Adresse zu den Speicherkarten. Die BSU-Steuerung leitet anschließend die betreffende Zahl von Vierfachwörtern vom Speicherkanal-Datenpuffer über das L3-Schnittstellenregister zum L3-Speicher. Die BSU- Steuerung überträgt im Anschluß an die letzte Datenübertragung zu dem gewählten Speicheranschluß "End-of-Operation" zur Speichersteuerung. Falls gerade ein Vollzeilen-Speichervorgang abläuft, gibt die Speichersteuerung den Speicheranschluß aufgrund des "End-of-Operation" von der BSU-Steuerung frei, um einen überlappten Zugriff auf den Speicheranschluß zu ermöglichen, und überträgt "End-of-Operation" für die Kanal-Anforderung zu Adresse/Schlüssel. Falls nicht gerade ein Vollzeilen-Speichervorgang ausgeführt wird, wartet die Speichersteuerung ab, bis das L3- "belegt"-Signal von dem gewählten Speicheranschluß inaktiv wird, bevor sie den L3-Anschluß freigibt, überträgt aber aufgrund des "End-of-Operation" der BSU ein "End-of-Operation" für die Kanal- Anforderung zu Adresse/Schlüssel. Sobald Adresse/Schlüssel "End- of-Operation" von der Speichersteuerung empfangen hat, wandelt sie den Hinweis in die Kanal-Taktfrequenz um und antwortet mit "SHCP Request Complete with.Clean Status" für den Gemeinschaftskanal-Prozessor.
  • 3.3 Speicherbefehle für den Kanal 3.3.1 Transfer Storage Channel Data Buffer to L4 Line (Speicherkanal-Datenpuffer zur L4-Zeile übertragen)
  • Anwendung: Bei 370-XA Unterstützung direkter Datenübertragungen von Kanal-E/A-Einheiten zum Erweiterungsspeicher. Berechtigungsund Schutzprüfung werden durch ein Kanal-Mikroprogramm durchgeführt. Das Kanal-Mikroprogramm ist dafür verantwortlich zu überprüfen, ob die im Datenadreßfeld des Kanalbefehlsworts festgelegte Nummer des L4-Erweiterungsspeicherblocks in der Konfiguration verfügbar ist, bevor dieser Befehl ausgegeben wird. Die Nummer des Erweiterungsspeicherblocks muß von einem Mikroprogramm in eine absolute Adresse im L4-Erweiterungsspeicher umgewandelt werden. Sobald die Adresse erzeugt wurde, wird sie dem Speichersystem mit den L4-Adreßbits 3:24 an den Bit-Positionen 3:24 der Speicheradresse geliefert.
  • Beschreibung des Speicherbefehls
  • Dieser Befehl ermöglicht es dem Gemeinschaftskanal-Prozessor, Daten von E/A-Einheiten über das Kanal-Subsystem zum L4-Erweiterungsspeicher zu verschieben. Der Befehl ist dafür vorgesehen, 128 Datenbytes aus dem gewählten Speicherkanal-Datenpuffer zum L4-Erweiterungsspeicher zu verschieben, und zwar an die in dem Speicherbefehl angegebene absolute Adresse von L4. Die absolute Adresse vori L4 muß auf einer 128-Byte-Grenze liegen. Die einzigen wesentlichen Unterschiede zwischen diesem Befehl und einem 128 Byte breiten Kanalspeicher-Speichervorgang zum L3-Prozessorspeicher sind das Ziel der Daten und das Fehlen jeglicher von seiten des Speichersubsystems für den L4-Erweiterungsspeicher erforderlichen Adreß- und Schutzprüfung.
  • Ausführung des Speicherbefehls
  • Der Gemeinschaftskanal-Prozessor beginnt einen Befehl "Transfer Channel Buffer to L4 Line", indem er anfordert, daß der Kanal- Datenpuffer die Daten mit der Kanal-Taktfrequenz über eine 8 Byte breite bidirektionale Datenschnittstelle zur SCDB-Steuerung überträgt. Die erste Übertragung auf der Schnittstelle enthält die Kennung des Speicherkanal-Datenpuffers, den Befehl (Abruf oder Speicherung) und eine Vierfachwort-Adresse innerhalb des 128-Byte-Puffers (Bits 25:27 der absoluten Adresse), die '000'b lauten muß. Danach folgen sechzehn Datenübertragungen. Die SCDB-Steuerung empfängt mit der Kanal-Taktfrequenz den Befehl und die Datenübertragungen und lädt mit der Kanal-Taktfrequenz die Steuerinformationen in die betreffenden Register und die Daten in den gewählten Speicherkanal-Datenpuffer. Die Daten werden, beginnend mit dem von der Vierfachwort-Adresse angegebenen Vierfachwort, in den Speicherkanal-Datenpuffer geladen. Die SCDB-Steuerung signalisiert dem Kanal-Datenpuffer den erfolgreichen Abschluß, indem sie das Übertragungsecho in dem Zyklus nach der letzten Datenübertragung deaktiviert. Der Kanal-Datenpuffer signalisiert anschließend dem Gemeinschaftskanal-Prozessor den erfolgreichen Abschluß der Datenübertragung. Der Gemeinschaftskanal-Prozessor gibt durch eine mehrere Zyklen lange Übertragung von Befehl und Adresse zu Adresse/Schlüssel einen Kanal-Speicherbefehl an das Speichersystem aus. Die vier Zyklen der Befehls-/Adreßübertragung laufen mit der Kanal-Taktfrequenz ab. Die erste Übertragung enthält die Pufferkennung des Gemeinschaftskanal-Prozessors und einen Speicherbefehl "Transfer Channel Buffer to L4 Line". Die zweite Übertragung enthält die niederwertigen Bits der absoluten Adresse (16:31), wobei 16:24 für den L4-Erweiterungsspeicher signifikant sind. Die Adreßbits 25:31 müssen sämtlich null sein. Die nachfolgende Übertragung enthält die höherwertigen Bits der absoluten Adresse (0:15), wobei 3:15 für den L4-Erweiterungsspeicher signifikant sind. Die letzte Übertragung enthält eine sieben bit lange Speicherfeldlänge, die eine Länge von 128 Byte angeben muß. Adresse/Schlüssel empfängt den Kanal-Speicherbefehl mit der Kanal- Taktfrequenz. Im Anschluß an die letzte Übertragung wird ein Zwischenspeicher für anstehende Kanal-Speicheranforderung mit der Kanal-Taktfrequenz gesetzt, und die Kanal-Anforderung wird in Prozessortakte umgewandelt. Wenn die Metastabilität beseitigt wurde, werden die SHCP-Pufferkennung, der Kanal-Speicherbefehl und die Speicherahschlußkennung zur Speichersteuerung übertragen. Die Speichersteuerung empfängt die Kennung des Speicherkanal-Datenpuffers, den Speicherbefehl "Transfer Channel Buffer to L4 Line" und die Kennung des L4-Speicheranschlusses, und die Anforderung wird in die Priorität für die Speicherschlüsselmatrix eingetragen. Diese Prioritätsreihenfolge wird verwendet, um der Speichersteuerurig die Möglichkeit zu geben, bei Adresse/Schlüssel nachzuprüfen, ob dies eine gültige Anforderung ist. Falls momentan keine Anforderung für die Speicherschlüsselmatrix aktiv ist, veranlaßt diese Kanal-Speicheranforderung, sobald sie von der Priorität ausgewählt wurde, daß zu Adresse/Schlüssel ein Befehl übertragen wird, den Gültigkeitsstatus zu übertragen, der dem Kanal-Speicherbefehl im SHCP-Befehlspuffer von Adresse/Schlüssel zugeordnet ist. Sobald Adresse/Schlüssel den SHCP-Befehl der.Speichersteuerung empfangen hat, antwortet sie der Speichersteuerung mit "End-of-Operation". Der Gültigkeitsstatus des SHCP-Speicherbefehls wird zur Speichersteuerung übertragen. Sobald die Speichersteuerung den Status von Adresse/Schlüssel empfangen hat, trägt sie den Kanalbefehl in die Speicherpriorität ein, sofern es sich um einen gültigen Befehl handelt. Die Speichersteuerung weist die benötigten Ressourcen zu und aktiviert den Befehl, wenn er von der Priorität ausgewählt wird. Adresse/Schlüssel wird angewiesen, die Adresse des gewählten SHCP-Befehlspuffers zur BSU-Steuerung zu übertragen. Zur BSU-Steuerung wird ein Befehl gesandt, eine Vollzeilen-Speicherung im L4-Speicher aus dem gewählten Speicherkanal-Datenpuffer durchzuführen. Adresse/Schlüssel überträgt die gewählte absolute L4-Adresse und Kartenpaar-Auswahl zur BSU-Steuerung. Die BSU-Steuerung empfängt den Befehl "Transfer Channel Buffer to L4 Line" von der Speichersteuerung und die absolute L4-Adresse und die Auswahl des L4-Kartenpaars von Adresse/Schlüssel. Die BSU-Steuerung überträgt den Befehl zur SCDB-Steuerung. Die SCDB-Steuerung empfängt den Befehl "Transfer Channel Buffer to L4 Line" und die Kennung des Speicherkanal- Datenpuffers und beginnt, den Inhalt des gewählten Speicherkanal-Datenpuffers zu lesen. Die SCDB-Steuerung überträgt die Vierfachwörter aus dem Speicherkanal-Datenpuffer der Reihe nach von null bis sieben. Die BSU-Steuerung leitet die 128 Byte lange L4-Speicherung ein, indem der Befehl und die Adresse über den L2-Datenstrom zum L4-Speicheranschluß übertragen werden. Anschließend leitet die BSU-Steuerung die Datenübertragungen von der SCDB-Steuerung über die L4-Schnittstellenregister zum L4-Speicher. Die BSU-Steuerung überträgt im Anschluß an die letzte Datenübertragung zu dem gewäh7lten L4-Speicherkartenpaar "End-of-Operation" zur Speichersteuerung. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, überträgt sie für die Kanal-Anforderung "End-of-Operation" zu Adresse/Schlüssel, und da sie erkennt, daß gerade eine Vollzeilen-Speicherung ausgeführt wird, gibt sie den L4-Speicheranschluß aufgrund des "End-of-Operation" von der BSU frei, wobei eine Verzögerung den maximal zulässigen überlappten Zugriff auf den Speicheranschluß ermöglichen soll. Sobald Adresse/Schlüssel "End-of-Operation" von der Speichersteuerung empfangen hat, wandelt sie den Hinweis in die Kanal-Taktfrequenz um und antwortet mit "SHCP Request Complete with Clean Status" für den Gemeinschaftskanal-Prozessor.
  • 3.3.2 Transfer L4 Line to Storage Channel Data Buffer (L4- Zeile zum Speicherkanal-Datenpuffer übertragen)
  • Anwendung: Bei 370-XA Unterstützung direkter Datenübertragungen vom Erweiterungsspeicher zu Kanal-E/A-Einheiten. Berechtigungsund Schutzprüfung werden durch ein Kanal-Mikroprogramm durchgeführt. Das Kanal-Mikroprogramm ist dafür verantwortlich zu überprüfen, ob die im Datenadreßfeld des Kanalbefehlsworts festgelegte Nummer des L4-Erweiterungsspeicherblocks in der Konfiguration verfügbar ist, bevor dieser Befehl ausgegeben wird. Die Nummer des Erweiterungsspeicherblocks muß von einem Mikroprogramm in eine absolute Adresse im L4-Erweiterungsspeicher umgewandelt werden. Sobald die Adresse erzeugt wurde, wird sie dem Speichersystem mit den L4-Adreßbits 3:24 an den Bit-Positionen 3:24 der Speicheradresse geliefert.
  • Beschreibung des Speicherbefehls
  • Dieser Befehl ermöglicht es dem Gemeinschaftskanal-Prozessor, Daten vom L4-Erweiterungsspeicher über das Kanal-Subsystem zu E/A-Einheiten zu verschieben. Der Befehl ist dafür vorgesehen, 128 Datenbytes aus dem L4-Erweiterungsspeicher von der angegebenen absoluten L4-Adresse (auf einer 128-Byte-Grenze) zu dem gewählten Speicherkanal-Datenpuffer zu verschieben. Anschließend kann der Gemeinschaftskanal-Prozessor den Speicherkanal-Datenpuffer für das Kanal-Subsystem entladen. Die einzigen wesentlichen Unterschiede zwischen diesem Befehl und einem 128 Byte langen Kanalspeicher-Abruf aus dem L3-Prozessorspeicher sind die Quelle der Daten und das Fehlen jeglicher von seiten des Speichersubsystems für den L4-Erweiterungsspeicher erforderlichen Adreß- und Schutzprüfung.
  • Ausführung des Speicherbefehls
  • Der Gemeinschaftskanal-Prozessor gibt durch eine mehrere Zyklen lange Übertragung von Befehl und Adresse zu Adresse/Schlüssel einen Kanal-Speicherbefehl an das Speichersystem aus. Die vier Zyklen der Befehls-/Adreßübertragung laufen mit der Kanal- Taktfrequenz ab. Die erste Übertragung enthält die Pufferkennung des Gemeinschaftskanal-Prozessors und einen Speicherbefehl "Transfer Channel Buffer to L4 Line". Die zweite Übertragung enthält die niederwertigen Bits der absoluten Adresse (16:31), wobei 16:24 für den L4-Erweiterungsspeicher signifikant sind. Die Adreßbits 25:31 müssen sämtlich null sein. Die nachfolgende Übertragung enthält die höherwertigen Bits der absoluten Adresse (0:15), wobei 3:15 für den L4-Erweiterungsspeicher signifikant sind. Die letzte Übertragung enthält eine sieben bit lange Speicherfeldlänge, die eine Länge von 128 Byte angeben muß. Adresse/Schlüssel empfängt den Kanal-Speicherbefehl mit der Kanal- Taktfrequenz. Im Anschluß an die letzte Übertragung wird ein Zwischenspeicher für anstehende Kanal-Speicheranforderung mit der Kanal-Taktfrequenz gesetzt, und der Kanalbefehl wird in Prozessortakte umgewandelt. Wenn die Metastabilität beseitigt wurde, werden die SHCP-Pufferkennung, der Kanal-Speicherbefehl und die Speicheranschlußkennung zur Speichersteuerung übertragen. Die Speichersteuerung empfängt die Kennung des Speicherkanal- Datenpuffers, den Speicherbefehl "Transfer Channel Buffer to L4 Line" und die Kennung des L4-Speicheranschlusses, und die Anforderung wird in die Priorität für die Speicherschlüsselmatrix eingetragen. Diese Prioritätsreihenfolge wird verwendet, um der Speichersteuerung die Möglichkeit zu geben, sich bei Adresse/Schlüssel zu vergewissern, daß es sich um eine gültige Anforderung handelt. Falls momentan keine Anforderung für die Speicherschlüsselmatrix aktiv ist, veranlaßt diese Kanal-Speicheranforderung, sobald sie von der Priorität ausgewählt wurde, daß zu Adresse/Schlüssel ein Befehl übertragen wird, den Gültigkeitsstatus zu Adresse/Schlüssel zu übertragen, der dem Kanal- Speicherbefehl im SHCP-Befehlspuffer von Adresse/Schlüssel zugeordnet ist. Sobald Adresse/Schlüssel den SHCP-Befehl der Speichersteuerung empfangen hat, antwortet sie mit "End-of-Operation" für die Speichersteuerung. Der Gültigkeitsstatus des SHCP- Speicherbefehls wird zur Speichersteuerung übertragen. Sobald die Speichersteuerung den Status von Adresse/Schlüssel empfangen hat, gibt sie den Kanalbefehl in die Speicherpriorität ein, sofern es sich um einen gültigen Befehl handelt. Die Speichersteuerung weist die benötigten Ressourcen zu und aktiviert den Befehl, wenn er von der Priorität ausgewählt wird. Adresse/Schlüssel wird angewiesen, die Adresse des gewählten SHCP- Befehlspuffers zur BSU-Steuerung zu übertragen. Zur BSU-Steuerung wird ein Befehl gesandt, einen Vollzeilen-Speicherabruf vom L4-Speicher zu dem gewählten Speicherkanal-Datenpuffer durchzuführen. Adresse/Schlüssel überträgt die gewählte absolute L4- Adresse und die Kartenpaar-Auswahl zur BSU-Steuerung. Die BSU- Steuerung empfängt den Befehl "Transfer L4 Line to Channel Buffer" von der Speichersteuerung und die absolute L4-Adresse und die Auswahl des L4-Kartenpaars von Adresse/Schlüssel. Die BSU- Steuerung überträgt den Befehl zur SCDB-Steuerung. Die BSU- Steuerung leitet den 128 Byte langen Abruf des L4-Speichers ein, indem sie Befehl und Adresse über den L2-Datenstrom zum L4-Speicheranschluß überträgt. Die SCDB-Steuerung empfängt den Befehl "Transfer L4 Line to Channel Buffer" und die Kennung des Speicherkanal-Datenpuffers und erwartet die Daten aus der Datenstromfunktion des L2-Cache. Die SCDB-Steuerung erwartet 16 Bytes Speicherdaten pro Übertragung. Das gewählte L4-Speicherkartenpaar führt den angeforderten Lesevorgang durch, indem es die Daten an das L4-Schnittstellenregister übergibt, und der L2-Datenstrom leitet sie zur Speicherkanal-Datenpufferfunktion. Während die letzte Datenübertragung zum Speicherkanal-Datenpuffer abgeschlossen wird, überträgt die BSU-Steuerung "End-of-Operation" zur Speichersteuerung. Während der Datenübertragungen zum L4-Schnittstellenregister überwacht Adresse/Schlüssel die Zeilen für nicht behebbaren Fehler aus dem Speicher. Der Fehlerstatus wird für den angegebenen SHCP-Puffer aufgezeichnet und bei Abschluß der Anforderung zu dem Gemeinschaftskanal-Prozessor weitergeleitet. Die SCDB-Steuerung empfängt die L4-Speicherdaten (16 Bytes pro Zyklus) aus dem L2-Datenstrom und leitet die Daten mit der Prozessor-Taktfrequenz zu dem gewählten Speicherkarial- Datenpuffer. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den L4-Anschluß frei und liefert "End-of-Operation" für die Kanal-Anforderung an Adresse/Schlüssel zurück. Sobald Adresse/Schlüssel "End-of-Operation" von der Speichersteuerung empfangen hat, wandelt sie den Hinweis in die Kanal-Taktfrequenz um und antwortet mit "SHCP Request Complete with Clean Status" für den Gemeinschaftskanal- Prozessor, sofern alle aus dem L4-Erweiterungsspeicher abgerufenen Daten gültig sind.
  • 3.3.3 Test and Set (Testen und setzen)
  • Anwendung: Synchronisierte Software-Aktualisierungen für Speicherpositionen im Hauptspeicher, denen sich sowohl Kanäle als auch Prozessoren unterziehen. Ein Mikroprogramm muß gewährleisten, daß ein bestimmter Prozessor, falls er sich innerhalb der Konfiguration im Ruhezustand befindet, in einem Status belassen wird, in dem er keine Sperr- oder Zeilenhalt-Bedingungen aufweist. Wenn dies nicht beachtet wird, kann sich eine Aussperr- Bedingung ergeben, da der Kanalbefehl "Test and Set" nicht abgeschlossen werden kann, wenn ein im Ruhezustand befindlicher Prozessor eine Sperr- oder Zeilenhaltbedingung in der angeforderten L2-Cachezeile aufweist.
  • Beschreibung des Speicherbefehls
  • Ein Kanal-Mikroprogramm liefert den Befehl, eine absolute Adresse (auf einer 8-Byte-Grenze) und ein einzelnes Datenbyte, das als 'Sperr-Byte' bezeichnet wird. Das Sperrbyte enthält zwei Felder. Das erste Bit, Bit 0, ist das Sperrbit. Die restlichen sieben Bits innerhalb des Bytes enthalten eine Prozeßkennung. Wie beim Speicher erörtert, bezeichnet der Wert '0'b im Sperrbit, daß das zugeordnete Speicherfeld momentan ungesperrt, zur Verwendung verfügbar ist. Der Wert '1'b bezeichnet, daß das Speicherfeld gesperrt ist oder gegenwärtig bereits durch einen anderen Prozeß benutzt wird, der momentan das Speicherfeld ver ändert und die exklusive Nutzung des Inhalts benötigt. Die restlichen sieben Bits kennzeichnen den momentanen (bzw. letzten) Prozeßeigner der Sperre für das zugehörige Speicherfeld. Wenn ein Kanal-Mikroprogramm den Befehl ausgibt, dient dies dem Zweck, sich exklusiven Zugriff auf das dem Sperrbyte zugeordnete Speicherfeld zu beschaffen. Ein Mikroprogramm liefert eine '1'b im höherwertigen Bit und die Prozeßkennung des Anforderers. Befehl, absolute Adresse und Sperrbyte werden an das Speichersystem übergeben. Die neueste Kopie der adressierten Speicherposition wird nach dem aktuellen Status des Sperrbits abgefragt. Falls der Wert des Sperrbits '0' ist, wird das neue Sperrbyte in die Speicherposition eingefügt, und die neuen Daten werden zu dem Gemeinschaftskanal-Prozessor zurückgeliefert; falls der Wert des Sperrbits '1'b ist, bleibt die Speicherposition unverändert, und der ursprüngliche Speicherinhalt wird zu dem Gemeinschaftskanal-Prozessor zurückgeliefert. Die absolute Adresse wird verwendet, um das L2-Cache-Miniverzeichnis zu durchsuchen. Falls sich aus der Durchsuchung des L2-Miniverzeichnisses ein L2-Cachetreffer ergibt, muß die Kopie der L3- Zeile innerhalb des L2-Cache entfernt werden. Falls die das Sperrbyte enthaltende L2-Cachezeile modifiziert ist, wird die L2-Cachezeile in den L3-Prozessorspeicher entleert, bevor das Sperrbyte für die Operation "Test and Set" abgerufen wird. Dies gewährleistet exklusiven Zugriff auf die Daten, da der Speicheranschluß eine nicht gemeinsam nutzbare Ressource ist. Der Eintrag im L2-Cacheverzeichnis und der entsprechende Eintrag im L2- Miniverzeichnis werden entwertet. Die L1-Statusmatrizen werden ebenfalls durchsucht, und etwaige Kopien der L2-Cachezeile, die auf der Stufe des L1-Cache existieren, werden entfernt, und die betreffenden L1-Statuseinträge werden gelöscht. Die das Sperrbyte enthaltende L3-Zeile wird anschließend aus dem L3-Prozessorspeicher in den gewählten Speicherkanal-Datenpuffer abgerufen. Es wird nur die erforderliche Zahl von Vierfachwörtern aus dem Speicher abgerufen, wie durch die Länge des Kanal-Speicherbefehlfelds festgelegt. Das Sperrbyte wird abhängig vom aktuellen Status des Sperrbits- an der Speicherposition vorbehaltlich modifiziert, bevor die Daten in den Speicherkanal-Datenpuffer geladen werden. Das Sperrbyte wird vorbehaltslos zum L3-Prozessorspeicher zurückgespeichert. Der Gemeinschaftskanal-Prozessor beschafft letztendlich die angeforderten Daten aus dem Speicherkanal-Datenpuffer und prüft die Prozeßkennung. Eine Übereinstimmung mit dem gemeinsam mit dem Befehl gelieferten Sperrbyte bezeichnet, daß dem Anforderer die Sperre erteilt wurde; eine Diskrepanz bezeichnet, daß das Speicherfeld durch einen anderen Prozeß momentan gesperrt ist, wie durch die Prozeßkennung in dem aus dem Prozeßspeicher zurückgelieferten Byte bezeichnet.
  • Ausführung des Speicherbefehls
  • Der Gemeinschaftskanal-Prozessor beginnt einen Befehl "Set and Test", indem er anfordert, daß der Kanal-Datenpuffer die Daten über eine 8 Byte breite bidirektionale Datenschnittstelle mit der Kanal-Taktfrequenz zur SCDB-Steuerung überträgt. Die erste Übertragung auf der Schnittstelle enthält die Kennung des Speicherkanal-Datenpuffers, den Befehl (Abruf oder Speicherung) und eine Vierfachwort-Adresse innerhalb des 128-Byte-Puffers (Bits 25:27 der absoluten Adresse). Danach folgen zwei Datenübertragungen, die das Vierfachwort umfassen, das das Sperrbyte enthält. Die SCDB-Steuerung empfängt mit der Kanal- Taktfrequenz den Befehl und die Datenübertragungen und lädt mit der Kanal-Taktfrequenz die Steuerinformationen in die betreffenden Register und die Daten in den gewählten Speicherkanal-Datenpuffer. Die Daten werden an den von der Vierfachwort-Adresse angegebenen Positionen in den Speicherkanal-Datenpuffer geladen. Die SCDB-Steuerung signalisiert dem Kanal-Datenpuffer den erfolgreichen Abschluß, indem sie das Übertragungsecho in dem Zyklus nach der letzten Datenübertragung deaktiviert. Der Kanal- Datenpuffer signalisiert anschließend dem Gemeinschaftskanal- Prozessor den erfolgreichen Abschluß der Datenübertragung. Der Gemeinschaftskanal-Prozessor gibt durch eine mehrere Zyklen lange Übertragung von Befehl und Adresse zu Adresse/Schlüssel einen Kanal-Speicherbefehl an das Speichersystem aus. Die vier Zyklen der Befehls-/Adreßübertragung laufen mit der Kanal-Taktfrequenz ab. Die erste Übertragung enthält die Pufferkennung des Gemeinschaftskanal-Prozessors, einen Speicherbefehl "Set und Test" und einen Hinweis, ob Prüfungen der Adreßprüfgrenze (ACB) des Speichers und des Speicherschlüssels erforderlich sind. Die zweite Übertragung enthält die niederwertigen Bits der absoluten Adresse, 16:31. Die darauffolgende Übertragung enthält die höherwertigen Bits der absoluten Adresse, 0:15, wobei 4:15 für den L3-Prozessorspeicher signifikant sind. Die abschließende Übertragung enthält den Kanal-Speicherschlüssel, die Steuerungsinformationen für die Adreßgrenzprüfung, eine Vorrangkennung für die Speicherschlüssel- und ACB-Prüfung sowie eine sieben bit lange Speicherfeldlänge. Adresse/Schlüssel empfängt den Kanal- Speicherbefehl mit der Kanal-Taktfrequenz. Im Anschluß an die letzte Übertragung wird ein Zwischenspeicher für anstehende Kanal-Speicheranforderung mit der Kanal-Taktfrequenz gesetzt, und der die Kanal-Befehl wird in Prozessortakte umgewandelt. Wenn die Metastabilität beseitigt wurde, werden die SRCP-Pufferkennung, der Kanal-Speicherbefehl und die Speicheranschlußkennung zur Speichersteuerung übertragen. Adresse/Schlüssel wandelt die absolute Adresse durch Speicherabbildung in eine physische Adresse um und berechnet die Endadresse (oder Endfeld-Adresse) für die angegebene Speicherfeldlänge. Die Speichersteuerung empfängt die Kennung des Speicherkanal-Datenpuffers, den Speicherbefehl und die Kennung des Speicheranschlusses, und die Anforderung wird in die Priorität für das L2-Cache-Miniverzeichnis und für die Speicherschlüsselmatrix getrennt eingetragen. Falls momentan keine Anforderung für das L2-Miniverzeichnis aktiv ist, veranlaßt diese Kanal-Speicheranforderung, sobald sie von der Priorität ausgewählt wurde, daß zum L2-Miniverzeichnis ein Be- fehl übertragen wird, auf die Anwesenheit der Zeile im L2-Cache zu prüfen. Adresse/Schlüssel wird angewiesen, die betreffende Adresse zum L2-Miniverzeichnis zu übertragen. Falls keine Anforderung für die Speicherschlüsselmatrix momentan aktiv ist, veranlaßt diese Kanal-Speicheranforderung, sobald sie von der Priorität ausgewählt wurde, daß zu Adresse/Schlüssel ein Befehl übertragen wird, die Adreß- und Schutzprüfungen durchzuführen, die der Kanal-Speicheranforderung im SHCP-Befehlspuffer von Adresse/Schlüssel zugeordnet sind. Sobald Adresse/Schlüssel die SHCP-Befehle der Speichersteuerung empfangen hat, verwendet sie den entsprechenden SHCP-Befehlspuffer, um zu ermitteln, welche Adressierungs- und Schutzprüfungen anzuwenden sind, und überträgt die gewählte Speicheradresse zum L2-Miniverzeichnis. "End- of-Operation" von Adresse/Schlüssel wird zur Speichersteuerung zurückgeliefert, wenn der SHCP-Befehl Zugriff auf die Speicherschlüsselmatrix erhält. Die entsprechenden Adressierungs- und Schutzprüfungen werden durchgeführt, und die Referenz- und Anderungsbits der die angeforderte L3-Zeile enthaltenden 4-kB-Seite werden infolge des Befehls "Test and Set" des Kanals auf '1'b gesetzt, sofern keine Zugriff-Ausnahmebedingungen eintreten. Die Ergebnisse der Adressierungs- und Schutzprüfungen werden zur Speichersteuerung zurückgeliefert. Sobald das L2-Cache-Miniverzeichnis den Befehl von der Speichersteuerung und die Adresse von Adresse/Schlüssel empfangen hat, wird es satzassoziativ durchsucht. Aus der Durchsuchung des L2-Miniverzeichnisses ergibt sich eine von zwei Bedingungen. Der Status der L2-Cachezeile wird zur Speichersteuerung zurückgeliefert.
  • Fall A
  • Sobald die Speichersteuerung den Status des L2-Miniverzeichnisses und den von Adresse/Schlüssel empfangen hat, trägt sie die Kanal-Anforderung in die Speicherpriorität ein, sofern keine Zugriff-Ausnahmebedingungen bestehen. In diesem Fall wird bei der Durchsuchung des L2-Cache-Miniverzeichnisses ein L2-Mißerfolg angezeigt. Dies ist stets eine korrekte Angabe des Status der L3-Zeile zum Zeitpunkt der Durchsuchung des L2-Miniverzeichnisses, und der benötigte Speicheranschluß muß zugewiesen werden. Die Speichersteuerung weist diebenötigten Ressourcen zu und aktiviert die Anforderung, wenn sie von der Priorität ausgewählt wird. Adresse/Schlüssel wird angewiesen, die Adresse des gewählten SHCP-Befehlspuffers zur BSU-Steuerung zu übertragen. Zur BSU-Steuerung wird ein Befehl übertragen, ein Kanal-L3-"Test and Set" mit dem gewählten Speicherkanal-Datenpuffer durchzuführen. Adresse/Schlüssel überträgt die gewählte physische L3- Adresse zur BSU-Steuerung. Dieend- und die Anfangsadresse für den Kanal-L3-"Test and Set"-Abruf werden ebenfalls zur BSU- Steuerung übertragen, um das Laden des Speicherkanal-Datenpuffers zu steuern. Die BSU-Steuerung empfängt den L3-"test and Set"-Befehl des Kanals von der Speichersteuerung und die benötigten Adressen von Adresse/Schlüssel und hält sie für die momentane Speicheroperation bereit. Die BSU-Steuerung leitet den L3-Speicherabruf ein, indem sie Befehl und Adresse über den L2- Datenstrom zu dem gewünschten Speicheranschluß überträgt. Die BSU-Steuerung überträgt den Befehl, die Endadresse, die Anfangsadresse und Bit 28 der absoluten Adresse zur SCDB-Steuerung.
  • Fall B
  • Sobald die Speichersteuerung den Status des L2-Miniverzeichnisses und den von Adresse/Schlüssel empfangen hat, trägt sie die Kanal-Anforderung in die Speicherpriorität ein, sofern keine Zugriff-Ausnahmebedingungen bestehen. In diesem Fall wird bei der Durchsuchung des L2-Cache-Miniverzeichnisses ein L2-Treffer angezeigt. Da jedoch das L2-Miniverzeichnis fälschlicherweise die Existenz einer Zeile im L2-Cache angeben kann, muß der benötigte Speicheranschluß zugewiesen werden. Die Speichersteuerung weist die benötigten Ressourcen (einschließlich eines Seiteneinlagerungs-/Seitenauslagerungs-Pufferpaars) zu und aktiviert die Anforderung, wenn sie von der Priorität ausgewählt wird. Zur L2-Steuerung wird ein Befehl übertragen, für Kanal-"Test and Set" ein "Invalidate and Flush" durchzuführen. Adresse/Schlüssel wird angewiesen, die Adresse des gewählten SHCP- Befehjspuffers zur L2-Steuerung und BSU-Steuerung zu übertragen. Die Speichersteuerung überträgt "unload Outpage Buffer if Modified and not Locked" oder einen Kanalbefehl "Test and Set if not Modified and not Locked" gemeinsam mit der Kennung des Speicherkanal-Datenpuffers zur BSU-Steuerung. Adresse/Schlüssel überträgt die gewählte absolute Adresse zur L2-Steuerung und die physische L3-Adresse zur BSU-Steuerung. Die End- und die Anfangsadresse für den Kanal-"Test and Set"-L3-Abruf werden ebenfalls zur BSU-Steuerung übertragen, um das Laden des Speicherkanal-Datenpuffers zu steuern. Die BSU-Steuerung empfängt den Befehl "unload Outpage Buffer if Modified and not Lokked" oder den Kanalbefehl "Test and Set if Not Modified and not Locked" von der Speichersteuerung und die benötigten Adressen von Adresse/Schlüssel und hält sie für die momentane Speicheroperation bereit. Anschließend erwartet die BSU-Steuerung den L2-Status. Die L2-Steuerung empfängt den Befehl der Speichersteuerung, die L2-Cachezeile für das Kanal-"test and Set" zu entwerten und zu entleeren, und nach der Auswahl durch die Bearbeitungspriorität des L2-Cache verwendet sie die Adresse von Adresse/Schlüssel, um das L2-Cacheverzeichnis zu durchsuchen. Ein Befehl "Load Outpage Buffer if Modified and not Locked" wird zur BSU-Steuerung übertragen, und die Befehlsantwort wird zur Speichersteuerung übertragen. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von fünf Bedingungen.
  • Fall 1
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile wird anschließend zur BSU-Steuerung und zur Speichersteuerung übertragen. Aufgrund des L2-Cache-Mißerfolgs wird der Status "nicht modifiziert" erzwungen. Die BSU-Steuerung empfängt den Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) und beginnt die Kanal-L3-Abrufoperation "Test and Set". Die BSU- Steuerung leitet, den L3-Speicherabruf ein, indem sie Befehl und Adresse über den L2-Datenstrom zu dem benötigten Speicheranschluß überträgt. Die BSU-Steuerung überträgt den Befehl, die Endadresse, die Anfangsadresse und Bit 28 der absoluten Adresse zur SCDB-Steuerung. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Mißerfolg) und erkennt, daß die BSU-Steuerung die Kanal-L3-"Test and Set"-Operation beginnen wird.
  • Fall 2
  • Eine Sperr- oder Zeilenhalt-Bedingung ist für die gewählte L2- Cachezeile aktiv. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile wird anschließend zur BSU-Steuerung und zur Speichersteuerung übertragen. Die BSU-Steuerung empfängt den Status der L2-Cachezeile (gesperrt) und verwirft den Befehl der Speichersteuerung. Die Speichersteuerung empfängt denstatus der L2-Cachezeile (gesperrt) und bricht die momentane Ausführung des Befehls ab. Der Kanal-Speicherbefehl wird vorübergehend ausgesetzt, so daß Zeit zur Behebung des Sperrkonflikts zur Verfügung steht, und anschließend erneut in die Priorität der Speichersteuerung eingetragen, um zu versuchen, den Befehl vollständig auszuführen.
  • Fall 3
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Treffer, aber ein Seiteneinlagerungs-Einfrierregister mit Anzeige eines nicht behebbaren Speicherfehlers ist für einen Prozessor für die adressierte L2-Cachezeile aktiv. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile wird anschließend zur BSU-Steuerung und zur Speichersteuerung übertragen. Der Status "nicht modifiziert" und ein L2-Cache-Mißerfolg werden erzwungen. Die BSU-Steuerung empfängt den Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) und beginnt die Kanal-L3-Abrufoperation "Test and Set". Die BSU-Steuerung leitet den L3-Speicherabruf ein, indem sie Befehl und Adresse über den L2-Datenstrom zu dem benötigten Speicheranschluß überträgt. Die BSU-Steuerung überträgt Befehl, Endadresse, Anfangsadresse und Bit 28 der absoluten Adresse zur SCDB-Steuerung. Die Speichersteuerung empfängt den Statusder L2-Cachezeile (L2-Mißerfolg) und erkennt, daß die BSU-Steuerung die Kanal-L3-Operation "Test and Set" beginnen wird.
  • Fall 4
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Treffer, und die Cachezeile ist unmodifiziert. Der L2-Cacheeintrag wird als ungültig markiert. Die absolute Adresse und der L2-Cachesatz werden zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile wird anschließend zur BSU-Steuerung und zur Speichersteuerung übertragen. Alle L1-Statusmatrizen werden nach Kopien der beiden L1-Cachezeilen innerhalb der als ungültig markierten L2-Cachezeile durchsucht. Die niederwertige L2-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als Komparand mit den Ausgabedaten der L1-Statusmatrix verwendet. Falls L1-Cachekopien gefunden werden, werden die betreffenden L1/L2-Adreßbusse zur Entwertung angefordert. Die L1-Cachekongruenz und die L1-Cachesätze (zwei für den L1-Operandencache und zwei für den L1-Anweisungscache) werden zur Entwertung der L1-Cachekopien zu den betreffenden Prozessoren gleichzeitig übertragen, nachdem die Anforderung des Adreßbusses durch diesen L1 genehmigt wurde. Adresse/Schlüssel empfängt die absolute Adresse und den L2-Cachesatz. Da erkannt wird, daß gerade eine Kanaloperati6n ausgeführt wird, wird der L2-Cachesatz in den betreffenden SHCP-Adreßpuffer eingespeichert. Die BSU-Steuerung empfängt den Status der L2-Cachezeile (nicht modifiziert und nicht gesperrt) und beginnt die Kanal-L3-Abrufoperation "Test and Set". Die BSU-Steuerung leitet den L3-Speicherabruf ein, indem sie Befehl und Adresse über den L2-Datenstrom zu dem benötigten Speicheranschluß überträgt. Die BSU-Steuerung überträgt Befehl, Endadresse, Anfangsadresse und Bit 28 der absoluten Adresse zur SCDB-Steuerung. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Treffer und nicht modifiziert) und erkennt, daß die BSU-Steuerung die Kanal-L3-Operation "Test and Set" starten wird. Die Speichersteuerung fordert die Entwertung des betreffenden Eintrags im L2-Miniverzeichnis unter Verwendung der betreffenden SHCP-Befehlspufferadresse an.
  • Fall 5
  • Die Durchsuchung des L2-Cache-Verzeichnisses führt zu einem L2- Cache-Treffer, und die Cachezeile ist modifiziert. Der L2-Cacheeintrag wird als ungültig markiert, da sein Inhalt gerade zum L3-Prozessorspeicher übertragen wird. Die absolute Adresse und der L2-Cachesatz werden zu Adresse/Schlüssel übertragen. Die absolute Adresse und der L2-Cachesatz werden zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile wird anschließend zur BSU-Steuerung und zur Speichersteuerung übertragen. Alle L1-Statusmatrizen werden nach Kopien der beiden L1- Cachezeilen innerhalb als ungültig markierten L2-Cachezeile durchsucht. Die niederwertige L2-Cachekongruenz wird verwendet, um die L1-Statusmatrizen zu adressieren, und der L2-Cachesatz und die höherwertige Kongruenz werden als Komparand mit den Ausgabedaten der L1-Statusmatrizen verwendet. Falls L1-Cachekopien gefunden werden, werden die betreffenden L1/L2-Adreßbusse zur Entwertung angefordert. Die L1-Cachekongruenz und die L1-Cachesätze (zwei für den L1-Operandencache und zwei für den L1-Anweisungscache) werden zur Entwertung der L1-Cachekopien zu den betreffenden Prozessoren gleichzeitig übertragen, nachdem die Anforderung des Adreßbusses durch diesen L1 genehmigt wurde. Adresse/Schlüssel empfängt die absolute Adresse und den L2-Cachesatz. Da erkannt wird, daß gerade eine Kanaloperation ausgeführt wird, wird der L2-Cachesatz in den betreffenden SHCP- Adreßpuffer eingespeichert. Die BSU-Steuerung empfängt den Status der L2-Cachezeile (modifiziert und nicht gesperrt) und beginnt die Auslagerungsoperation. Die BSU-Steuerung weist den L2- Cache an, eine Vollzeile aus der angegebenen L2-Cachekongruenz und dem Satz in den von der L2-Steuerung angegebenen Seitenauslagerungspuffer einzulesen. Die Speichersteuerung empfängt den Status der L2-Cachezeile (L2-Treffer und modifiziert) und erkennt, daß die BSU-Steuerung die Auslagerung beginnen wird. Die Speichersteuerung fordert die Entwertung des betreffenden Eintrags im L2-Miniverzeichnis unter Verwendung der betreffenden SHCP-Befehlspufferadresse an. Die BSU-Steuerung leitet die Speicherung im L3-Speicher ein, indem sie Befehl und Adresse über den L2-Datenstrom zu dem benötigten Speicheran&chluß überträgt. Die BSU steuert die Übertragung von Vierfachwörtern von dem betreffenden Seitenauslagerungspuffer über das L3-Schnittstellenregister zum Speicher. Nach der letzten Datenübertragung antwortet die BSU-Steuerung mit "End-of-Operation" für die Speichersteuerung. Sobald die Speichersteuerung "End-of-Operation" von der BSU empfangen hat, beginnt sie die Kanal-L3-"Test and Set"-Sequenz in dem Zyklus, in dem dem Bus Priorität erteilt wird. Alle Ressourcen sind zuvor zugeordnet worden, und der L2- Cache-Mißerfolg ist jetzt garantiert. Adresse/Schlüssel wird angewiesen, die Adresse des gewählten SHCP-Befehlspuffers zur BSU-Steuerung zu übertragen. Zur BSU-Steuerung wird ein Befehl übertragen, ein Kanal-L3-"Test and Set" mit dem gewählten Speicherkanal-Datenpuffer durchzuführen. Adresse/Schlüssel überträgt die gewählte physische L3-Adresse zur BSU-Steuerung. Die End- und die Anfangsadresse für den "Test and Set" L3-Abruf des Kanals werden ebenfalls zur BSU-Steuerung übertragen, um däs Laden des Speicherkanal-Datenpuffers zu steuern. Die BSU-Steuerung empfängt den Kanal-L3-Befehl "Test and Set" von der Speichersteuerung und die benötigten Adressen von Adresse/Schlüssel und hält sie für die aktuelle Speicheroperation bereit. Die BSU- Steuerüng leitet den L3-Speicherabruf ein, indem sie Befehl und Adresse über den L2-Datenstrom zu dem benötigten Speicheranschluß überträgt. Die BSU-Steuerung überträgt Befehl, Endadresse, Anfangsadresse und Bit 28 der absoluten Adresse zur SCDB-Steuerung.
  • Fälle A, (B.1), (B.3), (B.4), (B.5)
  • Die SCDB-Steuerung empfängt den Kanalbefehl "Test and Set", die Speicherkanal-Datenpufferkennung, die End- und Anfangsadresse und Bit 28 der absoluten Adresse und erwartet die Daten von der Datenstromfunktion des L2-Cache. Die SCDB-Steuerung erwartet 16 Bytes Speicherdaten pro Übertragung. Der L3-Speicher führt den angeforderten Lesevorgang durch, indem er die Daten dem L3- Schnittstellenregister übergibt, und der L2-Datenstrom leitet sie zur Speicherkanal-Datenpufferfunktion. Die Daten werden stets beginnend mit der angegebenen Adresse der Reihe nach von links nach rechts für die innerhalb der L3-Zeile angegebene Zahl von Bytes gelesen und in vollständigen Vierfachwörtern zum L2- Datenstrom übertragen. Während die letzte Datenübertragung zum Speicherkanal-Datenpuffer abgeschlossen wird, erzeugt die BSU- Steuerung einen Kanal-L3-Speicherungsbefehl für denselben Speicherkanal-Datenpuffer. Während der Datenübertragungen zum L3-Schnittstellenregister überwacht Adresse/Schlüssel die Zeilen für nicht behebbaren Fehler aus dem Speicher. Der Fehlerstatus wird für den angegebenen SRCP-Puffer aufgezeichnet und bei Abschluß der Anforderung zu dem Gemeinschaftskanal-Prozessor weitergeleitet. Die SCDB-Steuerung empfängt die L3-Speicherdaten (16 Bytes pro Zyklus) aus dem L2-Datenstrom und leitet die Daten mit der Prozessor-Taktfrequenz zu dem gewählten Speicherkanal- Datenpuffer. Die erste Vierfachwort-Übertragung enthält das Speicher-Sperrbyte, wie durch Bit 28 der absoluten Adresse bezeichnet. Das Sperrbit wird geprüft, und das Sperrbit der Speicherposition wird an die richtige Position im Speicherkanal-Datenpuffer geladen, falls das Sperrbit '1'b ist; andernfalls bleiben die von dem Gemeinschaftskanal-Prozessor gelieferten Daten für den Kanalbefehl "Test and Set" für diese Byte-Position in dem Speicherkanal-Datenpuffer. Im Anschluß an den letzten Schreibvorgang in den Speicherkanal-Datenpuffer liest die SCDB- Steuerung das durch die Startadresse gekennzeichnete Vierfachwort und überträgt die Daten zum L2-Datenstrom. Parallel dazu erzwingt die BSU-Steuerung, daß die Speicherfeldlänge "1 Byte" angibt, wählt den Speicheranschluß und überträgt in dem Zyklus, bevor das Vierfachwort des Speicherkanal-Datenpuffers in dem L2- Datenstrom eingespeichert wird; einen Speicherbefehl samt Adresse zu den Speicherkarten. Anschließend leitet die BSU-Steuerung das einzelne Vierfachwort aus dem Speicherkanal-Datenpuffer über das L3-Schnittstellenregister zum L3-Speicher. Die BSU-Steuerung überträgt im Anschluß an die Vierfachwort-Datenübertragung zu dem gewählten Speicheranschluß "End-of-Operation" zur Speichersteuerung. Die Speichersteuerung erkennt, daß eine Kanal-Operation "Test and Set" gerade ausgeführt wird, und überträgt aufgrund des "End-of-Operation" von der BSU ein "End-of-Operation" für die Kanal-Anforderung zu Adresse/Schlüssel, wartet aber ab, bis das L3-"Belegt"-Signal von dem gewählten Speicheranschluß inaktiv wird, bevor sie den L3-Anschluß freigibt. Sobald Adresse/Schlüssel "End-of-Operation" von der Speichersteuerung empfangen hat, wandelt sie den Hinweis in die Kanal-Taktfrequenz um und antwortet mit "SHCP Request Complete with Clean Status" für den Gemeinschaftskanal-Prozessor, sofern alle vom L3-Speicher abgerufenen Daten gültig sind.
  • 3.4 Speicher-Abrufroutinen für den Vektorprozessor 3.4.1 Speicherabruf, TLB-Mißerfolg
  • Die Ausführungseinheit gibt an den L1-Cache und die Externa- Funktion eine Vektor-Speicherabrufanforderung aus, und zwar entweder für ein Element oder eine 64-Byte-Zeile. Die satzassoziative TLB-Suche kann keine absolute Adresse für die von der Anforderung vorgelegte logische Adresse liefern. Der Ausführungseinheit wird eine Anforderung für dynamische Adreßübersetzung vorgelegt, und die momentane Speicheroperation wird ausgesetzt, während ihre Ergebnisse ausstehen. Die Anforderung wird aufgrund der TLB-Mißerfolgbedingung nicht zum L2-Cache oder Vektorprozessor übertragen. Die Anforderung wird anschließend erneut ausgeführt, falls die Adresse erfolgreich übersetzt werden kann.
  • 3.4.2 Speicherabruf, TLB-Treffer, Zugriff-Ausnahmebedingung
  • Die Ausführungseinheit gibt an den L1-Cache und die Externa- Funktion eine Vektor-Speicherabrufanforderung aus, und zwar entweder für ein Element oder eine 64-Byte-Zeile. Die satzassoziative TLB-Suche liefert eine absolute Adresse für die von der Anforderung vorgelegte logische Adresse. Infolge des TLB-Zugriffs wird jedoch eine Zugriff-Ausnahmebedingung (entweder Schutz oder Adressierung) festgestellt. Der Ausführungseinheit wird die Zugriff-Ausnahmebedingung mitgeteilt, und die momentane Speicheroperation wird annulliert. Die Anforderung wird aufgrund der Zugriff-Ausnahmebedingung nicht zum L2-Cache oder Vektorprozessor übertragen.
  • 3.4.3 Speicherzeilen-Zugriff, TLB-Treffer, keine Zugriff- Ausnahmebedingungen, L2-Cache-Treffer
  • Die Ausführungseinheit gibt an den L1-Cache und die Externa- Funktion eine Vektor-Speicherabrufanforderung für eine 64-Byte- Zeile aus. Die satzassoziative TLB-Suche liefert eine absolute Adresse (ohne Zugriff-Ausnahmebedingungen) für die von der Anforderung vorgelegte logische Adresse. Der L1-Cache wird nicht auf die Anwesenheit der von einem Vektorspeicherabruf angeforderten Daten geprüft. Um anstehende Speichervorgänge innerhalb des Prozessors zu vermeiden, wird die Speicherwarteschlange des anfordernden Prozessors entleert, bevor eine Vektoranweisung begonnen wird. Folglich können keine anstehenden Speicherungs- konflikte für Vektor-Zeilenabrufanforderungen bestehen. Die Externa-Funktion überträgt die Vektorabrufanforderung zum Vektorprozessor. Der L1-Cache überträgt die Vektor-Zeilenabrufanforderung und die Bits 4:28 der absoluten Adresse zu L2, da für den Vektorprozessor eine-Zeile benötigt wird. Im folgenden Zyklus wird der L1-Cachesatz, der verwendet wird, Vektor-Zeilenabrufe zu bezeichnen, gemeinsam mit der Kennung des L1-Operandencache zu L2 übertragen. Da keine Seiteneinlagerung in den L1- Cache erfolgt, wird kein L1-Cacheeintrag zum Ersetzen gewählt, und der Inhalt des L1-Cache und des Seiteneinlagerungspuffers sind nicht betroffen. Die L2-Cache-Priorität wählt diese Vektorabrufanforderung zur Bearbeitung aus. Die L2-Steuerung überträgt einen L2-Cache-Abrufbefehl des Prozessors und die L2-Cachekongruenz zur L2-Cachesteuerung und einen L2-Cache-Abrufbefehl des Prozessors zur Speichersteuerung. Eine Seiteneinlagerung in den L1-Cache des anfordernden Prozessors ist erforderlich und zulässig, und zwar unabhängig von etwaigen Sperr- oder Zeilenhalt- Bedingungen ohne aktive Anzeige eines nicht behebbaren Speicherfehlers, die ein anderer Prozessor eventuell aufweist. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von zwei Bedingungen, die einen L2-Cachetreffer liefern.
  • Fall 1
  • Die-Durchsuchung des L2-Cächeverzeichnisses führt zu einem L2- Cache-Treffer, aber für einen anderen Prozessor für die angeforderte L2-Cachezeile ist ein Einfrier-Register mit aktiver Anzeige für einen nicht behebbaren Speicherfehler oder ein Zeilenhalt-Register mit aktiver Anzeige für einen nicht behebbaren Speicherfehler gesetzt. Die L2-Steuerung setzt diese Abrufanforderung aus, während die Freigabe des Einfrier- oder Zeilenhalt-Registers mit nicht behebbarem Speicherfehler aussteht. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Aufgrund der Einfrier- oder Zeilenhalt-Bedingung des anderen Prozessors mit nicht behebbarem Speicherfehlerkonflikt wird ein Sperrstatus erzwungen. Die L1- Statusmatrizen für den anfordernden Prozessor sind von der Vektor-Zeilenabrufanforderung nicht betroffen, da die Daten für den Vektorprozessor, nicht für den L1-Cache bestimmt sind. Die L2-Cachesteuerung empfängt den L2-Cache-Abrufbefehl des Prozessors und die L2-Cachekongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Zwei Lesezyklen sind erforderlich, um die gewünschte 64 Byte lange L1-Cachezeile zu beschaffen. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Treffer und gesperrt) empfangen hat, blockiert sie etwaige Datenübertragungen zu dem anfordernden L1-Cache und verwirft den Befehl. Die Speichersteuerung empfängt den L2-Befehl und die Kennung des L3-Anschlusses. Sobald der Status der L2- Cachezeile (L2-Treffer und gesperrt) empfangen wurde, wird die Anforderung verworfen.
  • Fall 2
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Treffer. Die absolute Adresse wird mit einem Befehl "Set Reference Bit" zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die L1-Statusmatrizen für den anfordernden Prozessor sind von der Vektor-Zeilenabrufanforderung nicht betroffen, da die Daten für den Vektorprozessor, nicht für den L1-Cache bestimmt sind. Die L2-Cachesteuerung empfängt den L2-Cache- Abrufbefehl des Prozessors und die L2-Cachekongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Zwei Lesezyklen sind erforderlich, um die gewünschte 64 Byte lange L1-Cachezeile zu beschaffen. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Treffer und nicht gesperrt) empfangen hat; verwendet sie den L2-Cachesatz, um die richtigen 32 Bytes in jedem Lesezyklus auszuwählen und 8 Bytes pro Übertragungszyklus zu dem anfordernden L1-Cache zu leiten, und zwar beginnend mit dem anfangs angeforderten Doppelwort. Sobald jedes Doppelwort vom L2-Cache empfangen wurde, richtet der L1-Cache die Daten entsprechend der Speicheradresse der ursprünglichen Vektor-Zeilenabrufanforderung aus. Im folgenden Zyklus werden alle 8 Bytes mit ausgerichteten Daten zum Vektorprozessor übertragen. Die Speichersteuerung empfängt den L2-Befehl und die Kennung des L3-Anschlusses. Sobald der Status der L2-Cachezeile (L2-Treffer und nicht gesperrt) empfangen wurde, wird die Anforderung verworfen. Adresse/Schlüssel empfängt die absolute Adresse zur Aktualisierung des Referenzbits. Das Referenzbit für die 4-kB-Seite, die die durch die Vektorabrufanförderung angefotderte L1-Cachezeile enthält, wird auf '1'b gesetzt.
  • 3.4.4 Speicherzeilenabruf, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L2-Cache-Mißerfolg
  • Die Ausführungseinheit gibt an den L1-Cache und die Externa- Funktion eine Abrufanforderung für eine 64-Byte-Zeile aus dem Vektorspeicher aus. Die satzassoziative TLB-Suche liefert eine absolute Adresse (ohne Zugriff-Ausnahmebedingungen) für die von der Anforderung vorgelegte logische Adresse. Der L1-Cache wird nicht auf die Anwesenheit der von einem Vektorspeicherabruf angeforderten Daten geprüft. Um anstehende Speichervorgänge innerhalb des Prozessors zu vermeiden, wird die Speicherwartesch- lange des anfordernden Prozessors entleert, bevor eine Vektoranweisung begonnen wird. Folglich können keine anstehenden Speicherungskonflikte für Vektor-Zeilenabrufanforderungen bestehen. Die Externa-Funktion überträgt die Vektorabrufahforderung zum Vektorprozessor. Der L1-Cache überträgt die Vektor-Zeilenabrufanforderung und die Bits 4:28 der absoluten Adresse zu L2, da für den Vektorprozessor eine Zeile benötigt wird. Im folgenden Zyklus wird der L1-Cachesatz, der dazu verwendet wird, Vektor- Zeilenabrufe zu bezeichnen, gemeinsam mit der Kennung des L1- Operandencache zu L2 übertragen. Da keine Seiteneinlagerung in den L1-Cache erfolgt, wird kein L1-Cacheeintrag zur Ersetz-ung gewählt, und der Inhalt des L1-Cache und des Seiteneinlagerungspuffers sind nicht betroffen. Die L2-Cache-Priorität wählt diese Vektorabrufanforderung zur Bearbeitung aus. Die L2-Steuerung überträgt einen L2-Cache-Abrufbefehl des Prozessors und die L2- Cachekongruenz zur L2-Cachesteuerung und einen L2-Cache-Abrufbefehl des Prozessors zur Speichersteuerung. Eine Seiteneinlagerung in den L1-Cache des anfordernden Prozessors ist erforderlich und zulässig, und zwar unabhängig von etwaigen Sperr- oder Zeilenhalt-Bedingungen ohne aktive Anzeige eines nicht behebbaren Speicherfehlers, die ein anderer Prozessor eventuell aufweist. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von zwei Bedingungen, die einen L2-Cachetreffer hefern. Die Abrufanforderung wird infolge des L2-Cache-Mißerfolgs ausgesetzt, um die Bearbeitung-anderer Anforderungen im L2-Cache zu ermöglichen, während die Seiteneinlagerung für die angeforderte L3-Zeile erfolgt.
  • Fall A
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg, aber eine frühere L2-Cache-Seiteneinlagerung steht für einen anderen Prozessor zu derselben L2-Cachezeile an. Die L2-Steuerung setzt diese Abrufanforderung aus, solange der Abschluß der vorherigen Seiteneinlagerungsanforderung aussteht.
  • Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2- Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Aufgrund des Einfrierkonflikts der vorherigen Seiteneinlagerung wird ein Sperrstatus erzwungen. Die L1-Statusmatrizen für den anfordernden Prozessor sind von der Vektor-Zeilenabrufanforderung nicht betroffen, da die Daten für den Vektorprozessor, nicht für den L1-Cache bestimmt sind. Die L2-Cachesteuerung empfängt den L2-Cache-Abrufbefehl des Prozessors und die L2-Cachekongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Zwei Lesezyklen sind erforderlich, um die gewünschte 64 Byte lange L1-Cachezeile zu beschaffen. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Mißerfolg und gesperrt) empfangen hat, blockiert sie etwaige Datenübertragungen zu dem anfordernden L1-Cache und verwirft den Befehl. Die Speichersteuerung empfängt den L2-Befehl und die Kennung des L3-Anschlusses. Sobald der Status der L2- Cachezeile (L2-Mißerfolg und gesperrt) empfangen wurde, wird die Anforderung verworfen.
  • Fall B
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg. Die L2-Steuerung setzt diese Abrufanforderung aus und setzt das Seiteneinlagerungs-Einfrierregister des Prozessors. Die absolute Adresse wird zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die L1-Statusmatrizen für den anfordernden Prozessor sind von der Vektor-Zeilenabrufanforde- rung nicht betroffen, da die Daten für den Vektorprozessor, nicht für den L1-Cache bestimmt sind. Die L2-Cachesteuerung empfängt den L2-Cache-Abrufbefehl des Prozessors und die L2-Cachekongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Zwei Lesezyklen sind erforderlich, um die gewünschte 64 Byte lange L1-Cachezeile zu beschaffen. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Mißerfolg und nicht gesperrt) empfangen hat, blockiert sie etwaige Datenübertragungen zu dem anfordernden L1-Cache und verwirft den Befehl. Die Speichersteuerung empfängt den L2-Befehl und die Kennung des L3-Anschlusses. Sobald der Status der L2- Cachezeile (L2-Mißerfolg und nicht gesperrt) empfangen wird, wird die Anforderung in die Priorität für den benötigten L3- Speicheranschluß eingetragen. Wenn alle Ressourcen (einschließlich eines Seiteneinlagerungs-/Seitenauslagerungs-Pufferpaars> verfügbar sind, wird zur BSU-Steuerung ein Befehl übertragen, den L3-Abrufzugriff für den Prozessor zu beginnen. Die Speichersteuerung weist die L2-Steuerung an, den L2-Verzeichnisstatus für die anstehende Seiteneinlagerung auf normale Weise zu setzen. Adresse/Schlüssel empfängt die absolute Adresse. Das Referenzbit für die 4-kB-Seite, die die angeforderte L2-Cachezeile enthält, wird auf '1'b gesetzt. Die absolute Adresse wird in eine physische L3-Adresse umgewandelt. Die physische Adresse wird zur BSU-Steüerung übertragen, sobald die Schnittstelle infolge des L2-Cache-Mißerfolgs verfügbar ist. Sobald die BSU- Steuerung den Befehl vön der Speichersteuerung und die physische L3-Adresse von Adresse/Schlüssel empfangen hat, leitet sie den 128 Byte langen Abruf aus dem L3-Speicheranschluß ein, indem sie Befehl und Adresse zum Prozessorspeicher überträgt und die Speicherkarten in dem gewünschten Anschluß auswählt. Die Daten werden in 16-Byte-Abschnitten über eine mit dem L3-Speicheranschluß gemultiplexte Befehls-/Adreß- und Datenschnittstelle übertragen. Acht Übertragungen aus dem L3-Speicher werden benötigt, um die 128 Byte lange L2-Cachezeile zu beschaffen. Die Sequenz von Vierfachwort-Übertragungen beginnt mit dem Vierfachwort, das das durch den Abrufzugriff angeforderte Doppelwort enthält. Die nächsten drei Übertragungen enthalten den Rest der L1-Cachezeile. Die letzten vier Übertragungen enthalten den Rest der L2- Gachezeile. Die vom Prozessor gewünschten Daten werden so zum L1-Cache übertragen, wie sie im L2-Cache empfangen und in einen Seiteneinlagerungspuffer des L2-Cache geladen werden. Während die letzte Datenübertragung zum Seiteneinlagerungspuffer des L2- Cache abgeschlossen wird, aktiviert die BSU-Steuerung für die L2-Steuerung "Inpage Complete" für den betreffenden Prozessor. Sobald ein Doppelwort vom L2-Cache empfangen wurde, richtet der L1-Cache jeweils die Daten entsprechend der Speicheradresse der ursprünglichen Vektor-Zeilenabrufanforderung aus. Im folgenden Zyklus werden alle 8 Bytes mit ausgerichteten Daten zum Vektorprozessor übertragen. Während der Datenübertragungen zum L2-Cache überwacht Adresse/Schlüssel die Zeilen für nicht behebbarem L3-Fehler. Falls während des Seiteneinlagerungsprozesses ein nicht behebbarer Fehler festgestellt wird, werden mehrere Funktionen ausgeführt. Bei jeder Doppelwort-Übertragung zum L1-Cache wird gleichzeitig ein Signal für einen nicht behebbaren L3-Fehder übertragen, um den Status der Daten anzuzeigen. Der Status der restlichen Vierfachwörter in det betreffenden L2-Cachezeile wird ebenfalls dem anfordernden Prozessor mitgeteilt. Der Prozessor empfängt für eine gegebene Seiteneinlagerungsanforderung maximal einen Hinweis auf einen nicht behebbaren Speicherfehler, nämlich den ersten, der von Adresse/Schlüssel festgestellt wurde. Die Doppelwortadresse des ersten von Adresse/Schlüssel festgestellten nicht behebbaren Speicherfehlers wird für den anfordernden Prozessor aufgezeichnet. Falls für irgendwelche Daten in der vom Prozessor angeforderten L1-Zeile ein nicht behebbarer Speicherfehler auftritt, wird ein Hinweis zur Bearbeitung eines nicht behebbaren Speicherfehlers gesetzt. Falls schließlich für irgendwelche zum Seiteneinlagerungspuffer des L2-Cache übertra- genen Daten ein nicht behebbarer Speicherfehler auftritt, sendet Adresse/Schlüssel ein Signal zur L2-Steuerung, um den Abschluß der Seiteneinlagerung in den. L2-Cache zu verhindern. Die L2-Cachepriorität wählt das "Inpage complete" für den Prozessor zur Bearbeitung aus. Die L2-Steuerung überträgt einen Befehl "Write Inpage Buffer" und die L2-Cachekongruenz zur L2-Cachesteuerung und eine Statusantwort "Inpage complete" zur Speichersteuerung. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von drei möglichen Bedingungen.
  • Fall 1
  • Ein nicht behebbarer L3-Speicherfehler wurde bei der Seiteneinlagerung in den Seiteneinlagerungspuffer des L2-Cache festgestellt. Die L2-Steuerung erkennt, daß, fehlerhafte Daten im Seiteneinlagerungspuffer vorhanden sind, und blockiert die Aktualisierung, des L2-Cacheverzeichnisses. Das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, wird geleert. Die L1-Operandencache- Anzeige für den Prozessor, der die Seiteneinlagerung angefordert hat, wird gesetzt, um einen nicht behebbaren Speicherfehler zu melden. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Für den auf normale Weise zur L2-Cachesteuerung und Speichersteuerung übertragenen,Status der L2-Cachezeile wird "gesperrt und nicht modifiziert" erzwungen. Der gewählte L2-Cachesatz wird zur L2-Cachesteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1-Statusmatrizen werden nicht geändert. Die L2-Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet einen Schreibvorgang der L2-Zeile vor, um die Seiteneinlagerung des L2-Cache abzuschließen, solange der Status von der L2-Steuerung aussteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Zeilenstatus (gesperrt und nicht modifiziert) und setzt die Steuerungsinformationen zurück, die dem L-2-Cache-Seiteneinlagerungspuffer zugeordnet sind, der diesem "Write Inpage Buffer"- Befehl zugeordnet ist. Die Aktualisierung des L2-Cache wird abgebrochen, und die BSU-Steuerung überträgt "End-of-Operation" zur Speichersteuerung. Die Speichersteuerung empfängt den Status der L2-Cachezeile (gesperrt und nicht modifiziert) und gibt die durch die Seiteneinlagerungsanforderung des Prozessors zurückgehaltenen Ressourcen frei. Das L2-Miniverzeichnis wird nicht aktualisiert.
  • Fall 2
  • Die L2-Steuerung wählt eine L2-Cachezeile zum Ersetzen aus. In diesem Fall zeigt der Status der ersetzten Zeile, daß sie unmodifiziert ist; es ist keine Auslagerung erforderlich. Das L2- Verzeichnis wird aktualisiert, um die Anwesenheit der neuen L2- Cachezeile wiederzugeben. Das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, wird geleert. Der gewählte L2-Cachesatz wird zu Adresse/Schlüssel und zur L2-Cachesteuerung übertragen. Der Status der ersetzten L2-Cachezeile wird zur L2-Cachesteuerung und zur Speichersteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1-Statusmatrizen für alle L1- Caches in der Konfiguration werden auf Kopien der ersetzten L2- Cachezeile geprüft. Falls Kopien gefunden werden, werden die betreffenden Entwertungsanforderungen zu den L1-Caches übertragen. Aus dem L1-Status wird der L1-Kopiestatus für die ersetzte L2-Cachezeile gelöscht. Die L1-Statusmatrix des L1-Operandencache des anfordernden Prozessors wird nicht aktualisiert, da sich die Abrufanforderung auf den Vektorprozessor bezieht. Die L2- Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet einen Schreibvorgang der L2-Zeile vor, um die Seiten einlagerung des L2-Cache abzuschließen, solange der Status von der L2-Steuerung aussteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Zeilenstatus "ersetztt". Da die ersetzte Zeile unmodifiziert ist, signalisiert die L2-Cachesteuerung dem L2-Cache, daß der Seiteneinlagerungspuffer zum L2-Cache zu schreiben ist. Da dies ein Vollzeilen-Schreibvorgang ist und die Cachesätze verschachtelt sind, muß der L2-Cachesatz verwendet werden, um die Adreßbits 25 und 26 so zu manipulieren, daß der Schreibvorgang der L2-Cachezeile zugelassen wird. Die BSU-Steuerung überträgt "End-of-Operation" zur Speichersteuerung. Adresse/Schlüssel empfängt den L2-Cachesatz von der L2-Steuerung. Das Adreßregister für die Aktualisierung des L2-Miniverzeichnisses wird aus den Seiteneinlagerungs-Adreßpuffern und aus dem L2-Cachesatz gesetzt, der von der L2-Steuerung empfangen wurde. Die Speichersteuerung empfängt den Status der ersetzten Zeile. Da keine Auslagerung erforderlich ist, gibt die Speichersteuerung die von der Seiteneinlagerungsanforderung zurückgehaltenen Ressourcen frei. Die Speichersteuerung überträgt zu Adresse/Schlüssel einen Befehl, das L2-Miniverzeichnis utiter Verwendung des diesem Prozessor zugeordneten Adreßregisters für die Aktualisierung des L2-Miniverzeichnisses zu aktualisieren. Danach markiert die Speichersteuerung die aktuelle Operation als abgeschlossen und gestattet es dem anfordernden Prozessor, wieder in die Speicherressourcen-Priorität eingetragen zu werden.
  • Fall 3
  • Die L2-Steuerung wählt eine L2-Cachezeile zum Ersetzen aus. In diesem Fall zeigt der Status der ersetzten Zeile, daß sie modifiziert ist; eine L2-Cache-Auslagerung ist erforderlich. Das L2- Verzeichnis wird aktualisiert, um die Existenz der neuen L2-Cachezeile wiederzugeben. Das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, wird geleert. Die aus dem Verzeichnis gelesene Adresse wird gemeinsam mit dem gewählten L2-Cachesatz zu Adresse/Schlüssel übertragen. Der gewählte L2-Cachesatz wird zur L2- Cachesteuerung übertragen. Der Status der ersetzten L2-Cachezeile wird zur L2-Cachesteuerung und zur Speichersteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1-Statusmatrizen für alle L1-Caches in der Konfigu- ration werden auf Kopien der ersetzten L2-Cachezeile überprüft. Falls Kopien gefunden werden, werden die betreffenden Entwertungsanforderungen zu den L1-Caches übertragen. Aus dem L1-Status wird der L1-Kopiestatus für die ersetzte L2-Cachezeile gelöscht. Die L1-Statusmatrix des L1-Operandencache. des anfordernden Prozessors wird nicht aktualisiert, da sich die Abrufanforderung auf den Vektorprozessor bezieht. Die L2-Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet einen Schreibvorgang für die L2-Zeile vor, um die Seiteneinlagerung des L2-Cache abzuschließen, solange der Status von der L2-Steuerung aussteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Status der ersetzten Zeile. Da die ersetzte Zeile modifiziert ist, signalisiert die L2-Cachesteuerung dem L2-Cache, daß ein Vollzeilen-Lesevorgang zu dem mit dem Seiteneinlagerungspuffer gepaarten Seitenauslagerungspuffer erforderlich ist, bevor die Daten des Seiteneinlagerungspuffers zum L2-Cache geschrieben werden. Da dies Vollzeilenzugriffe sind und die Cacbesätze verschachtelt sind, muß der L2-Cachesatz verwendet werden, um die Adreßbits 25 und 26 so zu manipulieren, daß die Zugriffe auf die L2-Cachezeile zulässig sind. Adresse/Schlüssel empfängt die Seitenauslagerungsadresse von der L2-Steuerung, wandelt sie in eine physische Adresse um und hält sie gemeinsam mit dem L2-Cachesatz in den Seitenauslagerungs-Adreßpuffern. Das Adreßregister für die Aktualisierung des L2-Miniverzeichnisses wird aus den Seiteneinlagerungs-Adreßpuffern und dem L2-Cachesatz gesetzt, der von der L2-Steuerung empfangen wurde. Adresse/Schlüssel überträgt zur Vorbereitung des Schreibvorgangs der L3-Zeile die physische Seitenauslagerungsadresse zur BSU-Steuerung. Die Speichersteuerung empfängt den Status der ersetzten Zeile. Da eine Auslagerung erforderlich ist, kann die Speichersteuerung die L3-Ressourcen nicht freigeben, bevor die Aktualisierung des Speichers abgeschlossen ist. Es wird gewährleistet, daß Auslagerungen zu demselben Speicheranschluß erfolgen, der für die Seiteneinlagerung verwendet wird. Die Speichersteuerung überträgt zu Adresse/Schlüssel einen Befehl, das L2-Miniverzeichnis unter Verwendung des diesem Prozessor zugeordneten Adreßregisters für die Aktualisierung des L2-Miniverzeichnisses zu aktualisieren. Die Speichersteuerung markiert die aktuelle Operation anschließend als abgeschlossen und gestattet es dem anfordernden Prozessor, wieder in die Speicherressourcen-Priorität eingetragen zu werden. Die BSU-Steuerung erkennt, daß die ersetzte L2-Cachezeile modifiziert wurde, und startet die Auslagerungssequenz, nachdem sie die Auslagerungsadresse von-Adresse/Schlüssel empfangen hat, indem sie einen Vollzeilen-Schreibbefehl samt Adresse über den Datenstrom des L2-Cache zu dem ausgewählten Speicheranschluß überträgt. Die Daten werden in 16- Byte-Abschnitten vom Seitenauslaqerungspuffer zum Speicher übertragen. Nach der letzten Vierfachwort-Übertragung zum Speicher überträgt die BSU-Steuerung "End-of-Operation" zur Speichersteuerung. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung, empfangen hat, gibt sie den L3-Anschluß frei, um einen überlappten Zugriff auf den Speicheranschluß zu ermöglichen.
  • 3.4.5 Speicherelement-Abruf, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L2-Cache-Treffer
  • Die Ausführungseinheit gibt an den L1-Cache und die Externa- Funktion eine Abrufanforderung für ein Element aus dem Vektorspeicher aus. Die satzassoziative TLB-Suche liefert eine absolute Adresse (ohne Zugriff-Ausnahmebedingungen) für die von der Anforderung vorgelegte logische Adresse. Der L1-Cache wird nicht auf die Anwesenheit der von einem Vektorspeicherabruf angeforderten Daten geprüft. Um anstehende Speichervorgänge innerhalb des Prozessors zu vermeiden, wird die Speicherwarteschlange des anfordernden Prozessors entleert, bevor eine Vektoranweisung begonnen wird. Folglich können keine anstehenden Speicherungskonflikte für Vektor-Zeilenabrufanforderungen bestehen. Die Externa-Funktion überträgt die Vektorabrufanforderung zum Vektorprozessor. Der L1-Cache puffert die benötigten Ausrichtungs- informationen zu der Vektorelement-Abrufanforderung. Der L1-Cache überträgt die Vektorelement-Abrufanforderung und die Bits 4:28 der äbsoluten Adresse für den Vektorprozessor zu L2. Da keine Seiteneinlagerung in den L1-Cache erfolgt, wird kein L1-Cacheeintrag zum Ersetzen ausgewählt, und der Inhalt des L1- Cache und des Seiteneinlagerungspuffers sind nicht betroffen. Die L2-Steuerung empfängt die Vektorelement-Abrufanforderung. Falls die L2-Speicherwarteschlange leer ist, kann diese Anforderung sofort bearbeitet werden, wenn sie von der L2-Cachepriorität gewählt wird. Falls die L2-Speicherwarteschlange für diesen Prozessor nicht leer ist, muß diese Anforderung in der Speicherwarteschlange abwarten, bis alle vorausgegangenen Vektorelement- Abrufanforderungen für diesen Prozessor im L2-Cache abgeschlossen sind. In beiden Fällen wird ein Eintrag in der L2-Speicherwarteschlange für den anfordernden Prozessor erstellt. Die Speicherwarteschlange für den L2-Cache ist physisch in zwei Abschnitte aufgeteilt: Steuerung und Daten. Die absolute Adresse und die Steuerung der Vektorelement-Abrufanforderung werden in der L2-Steuerfunktion verwaltet. Die Datenspeicher- Warteschlange im Datenstrom des L2-Cache ist von der Vektorelement-Abrufanforderung nicht betroffen. Die L2-Cachepriorität wählt diese Vektorabrufanforderung zur Bearbeitung aus. Die. L2-Steuerung überträgt einen Vektorelement-Abrufbefehl für den L2-Cache und die L2-Cachekongruenz zur L2-Cachesteuerung und einen L2-Cache-Abrufbefehl des Prozessors zur Speichersteuerung. Eine einzelne Doppelwortübertragung zum L1-Cache des anfordernden Prozessors ist erforderlich und zulässig, und zwar unabhängig von etwaigen Sperr- oder Zeilenhalt-Bedingungen ohne aktive Anzeige für einen nicht behebbaren Speicherfehler, die ein anderer Prozessor eventuell aufweist. Die L2-Steuerung gliedert die Vektorelement-Abrufanforderung aus dem Steuerungsabschnitt der L2-Cache-Speicherwarteschlange für diesen Prozessor aus. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von zwei Bedingungen, die einen L2-Cache-Treffer liefern.
  • Fall 1
  • Die Durchsuchung des L2-Cache-Verzeichnisses führt zu einem L1- Cache-Treffer, aber ein Einfrierregister mit aktiver Anzeige für einen nicht behebbaren Speicherfehler oder ein Zeilenhalt-Register mit aktiver Anzeige für einen nicht behebbaren Speicherfehler ist für einen anderen Prozessor für die angeforderte L2- Cachezeile gesetzt. Die L2-Steuerung setzt diese Abrufanforderung aus, solange die Freigabe der Einfrier- oder Zeilenhalt- Bedingung mit nicht behebbarem Speicherfehler aussteht. Die Vektorelement-Abrufanforderung wird in den Steuerungsabschnitt der L2-Cache-Speicherwarteschlange für diesen Prozessor zurückgespeichert. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung-übertragen. Aufgrund der Einfrieroder Zeilenhalt-Bedingung mit nicht behebbarem Speicherfehlerkonflikt für den anderen Prozessor wird ein Sperrstatus erzwungen. Die L1-Statusmatrizen für den anfordernden Prozessor sind von der Vektorelement-Abrufanforderung nicht betroffen, da die Daten für den Vektorprozessor, nicht den L1-Cache bestimmt sind. Die L2-Cachesteuerung empfängt den Abrufbefehl für das L2-Cache- Vektorelement und die L2-Cachekongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Mit Rücksicht auf die Pipeline werden wie für einen Zeilenabruf zwei Lesezyklen verwendet, obwohl nur 8 Bytes gewünscht sind. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Sobald die L2-Cachesteuerung- den Status der L2-Cachezeile (L2-Treffer und gesperrt) empfangen hat, blockiert sie die Datenübertragung zu dem anfordernden L1-Cache und verwirft den Befehl. Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Sobald sie den Status der L2-Cachezeile (L2-Treffer und gesperrt) empfangen hat, wird die Anforderung verworfen.
  • Fall 2
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Treffer. Die absolute Adresse wird mit einem Befehl "Set Reference Bit" zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die L1-Statusmatrizen für den anfordernden Prozessor sind von der Vektorelement-Abrufanforderung nicht betroffen, da die Daten für den Vektorprozessor, nicht für den L1-Cache bestimmt sind. Die L2-Cachesteuerung empfängt den Vektorelement-Abrufbefehl für den L2-Cache und die L2-Cachekongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2- Cachesätze an der angegebenen Kongruenz zu lesen. Mit Rücksicht auf die Pipeline werden wie für einen Zeilenabruf zwei Lesezyklen verwendet, obwohl nur 8 Bytes gewünscht sind. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Treffer und nicht gesperrt) empfangen hat, verwendet sie den L2-Cachesatz, um in jedem Lesezyklus die richtigen 32 Bytes zu wählen, leitet aber nur die durch die Anfangsadresse angeforderten 8 Bytes zum L1-Cache. Der Befehl ist nun im L2-Cache abgeschlossen. Sobald das Doppelwort vom L2-Cache empfangen wird, richtet der L1-Cache die Daten entsprechend den gepufferten Ausrichtungsinformationen der ursprünglichen Vektorelement-Abrufanforderung aus. In dem folgenden Zyklus werden die 8 Bytes mit ausgerichteten Daten zum Vektorprozessor übertragen. Die Speichersteuerung empfängt den L2- Befehl und die Kennung des L3-Anschlusses. Sobald der Status der L2-Cachezeile (L2-Treffer und nicht gesperrt) empfangen wurde, wird die Anforderung verworfen. Adresse/Schlüssel empfängt die absolute Adresse zur Aktualisierung des Referenzbits. Das Referenzbit für die 4-kB-Seite, die die durch die Vektorabrufanforderung angeforderte L1-Cachezeile enthält, wird auf '1'b gesetzt.
  • 3.4.6 Speicherelement-Abruf, TLB-Treffer, keine Zugriff-Ausnahmebedingungen, L2-Cache-Mißerfolg
  • Die Ausführungseinheit gibt an den L1-Cache und die Externa- Funktion eine Abrufanforderung für ein Element aus dem Vektorspeicher aus. Die satzassoziative TLB-Suche liefert eine absolute Adresse (ohne Zugriff-Ausnahmebedingungen) für die von der Anforderung vorgelegte logische Adresse. Der L1-Cache wird nicht auf die Anwesenheit der von einem Vektorspeicherabruf angeforderten Daten geprüft. Um anstehende Speichervorgänge innerhalb des Prozessors zu vermeiden, wird die Speicherwarteschlange des anfordernden Prozessors entleert, bevor eine Vektoranweisung begonnen wird. Folglich können keine anstehenden Speicherungskonflikte für Vektor-Zeilenabrufanforderungen bestehen. Die Externa-Funktion überträgt die Vektorabrufanforderung zum Vektorprozessor. Der L1-Cache puffert die benötigten Ausrichtungsinformationen für die Vektorelement-Abrufanforderung. Der L1- Cache überträgt die Vektorelement-Abrufanforderung und die Bits 4:28 der absoluten Adresse für den Vektorprozessor zu L2. Da keine Seiteneinlagerung in den L1-Cache erfolgt, wird kein L1-Cacheeintrag zum Ersetzen ausgewählt, und der Inhalt des L1- Cache und des Seiteneinlagerungspuffers sind nicht betroffen. Die L2-Steuerung empfängt die Vektorelement-Abrufanforderung. Falls die L2-Speicherwarteschlange leer ist, kann diese Anforderung sofort bearbeitet werden, wenn sie von der L2-Cachepriorität gewählt wird. Falls die L2-Speicherwarteschlange für diesen Prozessor nicht leer ist, muß diese Anforderung in der Speicherwarteschlange warten, bis alle vorausgegangenen Vektorelement- Abrufanforderungen für diesen Prozessor im L2-Cache abgeschlossen sind. In beiden Fällen wird ein Eintrag in der L2-Speicher- warteschlange für den aüfordernden Prozessor erstellt. Die Speicherwarteschlange für den L2-Cache ist physisch in zwei Abschnitte aufgeteilt: Steuerung- und Daten. Die absolute Adresse und die Steuerung der Vektorelement-Abrufanforderung werden in der L2-Steuerfunktion verwaltet. Die Datenspeicher- Warteschlange im Datenstrom des L2-Cache ist von der Vektorelement-Abrufanforderung nicht betroffen. Die L2-Cachepriorität wählt diese Vektorabrufanforderung zur Bearbeitung aus. Die L2-Steuerung überträgt einen Vektorelement-Abrufbefehl für den L2-Cache und die L2-Cachekongruenz zur L2-Cachesteuerung und einen L2-Cache-Abrufbefehl des Prozessors zur Speichersteuerung. Eine einzelne Doppelwortübertragung zum L1-Cäche des anfordernden Prozessors ist erforderlich und zulässig, und zwar unabhängig von etwaigen Sperr- oder Zeilenhalt-Bedingungen ohne aktive Anzeige für einen nicht behebbaren Speicherfehler, die ein anderer Prozessor eventuell aufweist. Die L2-Steuerung gliedert die Vektorelement-Abrufanforderung aus dem Steuerungsabschnitt der L2-Cache-Speicherwarteschlange für diesen Prozessor aus. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von zwei Bedingungen, die einen L2-Cache-Mißerfolg liefern. Die Abrufanforderung wird infolge des L2-Cache-Mißerfolgs ausgesetzt, um die Bearbeitung anderer Anforderungen im L2-Cache zu ermöglichen, während die Seiteneinlagerung für die angeforderte L3-Cachezeile erfolgt.
  • Fall A
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg, aber eine frühere L2-Cache-Seiteneinlagerung steht für einen anderen Prozessor zu derselben L2-Cachezeile an. Die L2-Steuerung setzt diese Abrufanforderung aus, solange der Abschluß der vorherigen Seiteneinlagerungsanforderung aussteht. Die Vektorelement-Abrufanforderung wird in den Steuerungsabschnitt der L2-Cache-Speicherwarteschlange für diesen Prozessor zurückgespeichert. Es werden keine Informationen zu Adresse/Schlüssel übertragen.-Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cache steuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Aufgrund des Einfrierkonflikts der vorherigen Seiteneinlagerung wird ein Sperrstatus erzwungen. Die L1-Statusmatrizen für den anfordernden Prozessor sind von der Vektorelement-Abrufanforderung nicht betroffen, da die Daten für den Vektorprozessor, nicht für den L1-Cache bestimmt sind. Die L2-Cachesteuerung empfängt den L2-Cache-Abrufbefehl des Prozessors und die L2-Cachekongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Mit Rücksicht auf die Pipeline werden wie für einen Zeilenabruf zwei Lesezyklen verwendet, obwohl nur 8 Bytes gewünscht sind. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Mißerfolg und gesperrt) empfangen hat, blockiert sie die Datenübertragung zu dem anfordernden L1-Cache und verwirft den Befehl. Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Sobald sie den Status der L2-Cachezeile (L2-Mißerfolg und gesperrt) empfangen hat, wird die Anforderung verworfen.
  • Fall B
  • Die Durchsuchung des L2-Cacheverzeichnisses führt zu einem L2- Cache-Mißerfolg. Die L2-Steuerung setzt diese Abrufanforderung aus und setzt das Seiteneinlagerungs-Einfrierregister des Prozessors. Die absolute Adresse wird zu Adresse/Schlüssel übertragen. Der Status der L2-Cachezeile und der Cachesatz werden zur L2-Cachesteuerung übertragen, der Cachesatz-Modifikator wird zum L2-Cache übertragen, und der Status der L2-Cachezeile wird zur Speichersteuerung übertragen. Die L1-Statusmatrizen für den anfordernden Prozessor sind von der Vektorelement-Abrufanforderung nicht betroffen, da die Daten für den Vektorprozessor, nicht für den L1-Cache bestimmt sind. Die L2-Cachesteuerung empfängt den L2-Cache-Abrufbefehl des Prozessors und die L2-Cachekongruenz und beginnt den Zugriff auf den L2-Cache. Die L2-Cachesteuerung Überträgt zum L2-Datenstrom den Befehl, die sechs L2-Cachesätze an der angegebenen Kongruenz zu lesen. Mit Rücksicht auf die Pipeline werden wie für einen Zeilenabruf zwei Lesezyklen verwendet, obwohl nur 8 Bytes gewünscht sind. Der erste Lesezyklus liefert 32 Bytes, die das vom Prozessor angeforderte Doppelwort enthalten. Sobald die L2-Cachesteuerung den Status der L2-Cachezeile (L2-Mißerfolg und nicht gesperrt) empfangen hat, blockiert sie die Datenübertragung zu dem anfordernden L1-Cache und verwirft den Befehl. Die Speichersteuerung empfängt den L2-Befehl und die L3-Anschlußkennung. Sobald der Status der L2-Cachezeile (L2-Mißerfolg und nicht gesperrt) empfangen wurde, wird die Anforderung in die Priorität für den angeforderten L3-Speicheranschluß eingetragen. Wenn alle Ressourcen (einschließlich eines Seiteneinlagerungs/Seitenauslagerungs-Pufferpaars) verfügbar sind, wird zur BSU- Steuerung ein Befehl übertragen, den L3-Abrufzugriff für den Prozessor zu beginnen. Die Speichersteuerung weist die L2-Steuerung an, den L2-Verzeichnisstatus für die anstehende Seiteneinlagerung auf normale Weise zu setzen. Adresse/Schlüssel empfängt die absolute Adresse. Das Referenzbit für die 4-kB-Seite, die die angeforderte L2-Cachezeile enthält, wird auf '1'b gesetzt. Die absolute Adresse wird in eine physische L3-Adresse umgewandelt. Die physische Adresse wird zür BSU-Steuerung übertragen, sobald die Schnittstelle infolge des L2-Cache-Mißerfolgs verfügbar ist. Sobald die BSU-Steuerung den Befehl von der Speichersteuerung und die physische L3-Adresse von Adresse/Schlüssel empfangen hat, leitet sie den 128 Byte langen Abruf aus dem L3- Speicheranschluß ein, indem sie Befehl und Adresse zum Prozessorspeicher überträgt und die Speicherkarten in dem gewünschten Anschluß auswählt. Die Daten werden in 16-Byte-Abschnitten über eine mit dem L3-Speicheranschluß gemultiplexte Befehls-/Adreß- und Datenschnittstelle übertragen. Acht Übertragungen aus dem L3-Speicher werden benötigt, um die 128 Byte lange L2-Cachezeile zu beschaffen. Die Sequenz von Vierfachwort-Übertragungen beginnt mit dem Vierfachwort, das das durch den Abrufzugriff angeforderte Doppelwort enthält. Die nächsten drei Übertragungen enthalten den Rest der L1-Cachezeile. Die letzten vier Übertragungen enthalten den Rest der L2-Cachezeile. Die vom Prozessor gewünschten Daten werden so zum L1-Cache übertragen, wie sie im L2-Cache empfangen und in einen Seiteneinlagerungspuffer des L2-Cache geladen werden. Während die letzte Datenübertragung zum Seiteneinlagerungspuffer des L2-Cache abgeschlossen wird, aktiviert die BSU-Steuerung für die L2-Steuerung "Inpage Gomplete" für den betreffenden Prozessor. Sobald das Doppelwort vom L2-Cache empfangen wurde, richtet der L1-Cache die Daten entsprechend den gepufferten Ausrichtungsinformationen der ursprünglichen Vektorelement-Abrufanforderung aus. In dem folgenden Zyklus werden die 8 Bytes mit ausgerichteten Daten zum Vektorprozessor übertragen. Während der Datenübertragungen zum L2-Cache überwacht Adresse/Schlüssel die Zeilen mit nicht behebbarem L3-Fehler. Falls während des Seiteneinlagerungsprozesses ein nicht behebbarer Fehler festgestellt wird, werden mehrere Funktionen ausgeführt. Bei der Doppelwort-Übertragung zum L1- Cache wird gleichzeitig ein Signal für einen nicht behebbaren L3-Fehler übertragen, um den Status der Daten anzuzeigen. Der Status der restlichen Vierfachwörter in der betreffenden L2-Cachezeile wird ebenfalls dem anfordernden Prozessor mitgeteilt. Der Prozessor empfängt für eine gegebene Seiteneinlagerungsanforderung maximal einen Hinweis auf einen nicht behebbaren Speicherfehler, nämlich den ersten, der von Adresse/Schlüssel festgestellt wurde. Die Doppelwortadresse des ersten von Adresse/Schlüssel festgestellten nicht behebbaren Speicherfehlers wird für den anfordernden Prozessor aufgezeichnet. Falls für irgendwelche Daten in der vom Prozessor angeforderten L1-Zeile ein nicht behebbarer Speicherfehler auftritt, wird ein Hinweis für die Bearbeitung eines nicht behebbaren Speicherfehlers gesetzt. Falls schließlich ein nicht behebbarer Speicherfehler für irgendwelche zum Seiteneinlagerungspu.ffer des L2-Cache übertragenen Daten auftritt, sendet Adresse/Schlüssel ein Signal zur L2-Steuerung, um den Abschluß der Seiteneinlagerung in den L2- Cache zu verhindern. Die L2-Cachepriorität wählt das "Inpage Complete" für den Prozessor zur Bearbeitung aus. Die L2-Steuerung überträgt einen Befehl "Write Inpage Buffer" und die L2- Cachekongruenz zur L2-Cachesteuerung und eine Statusantwort "Inpage Complete" zur Speichersteuerung. Aus der Durchsuchung des L2-Cacheverzeichnisses ergibt sich eine von drei möglichen Bedingungen.
  • Fall 1
  • Ein nicht behebbarer L3-Speicherfehler wurde bei der Seiteneinlagerung in den Seiteneinlagerungspuffer des L2-Cache festgestellt. Die L2-Steuerung erkennt, daß fehlerhafte Daten im Seiteneinlagerungspuffer vorhanden sind, und blockiert die Aktualisierung des L2-Cacheverzeichnisses. Das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, wird geleert. Die L1-Operandencache- Anzeige für den Prozessor, der die Seiteneinlagerung angefordert hat, wird gesetzt, um einen nicht behebbaren Speicherfehler zu melden. Es werden keine Informationen zu Adresse/Schlüssel übertragen. Für den auf normale Weise zur L2-Cachesteuerung und Speichersteuerung übertragenen Status der L2-Cachezeile wird "gesperrt und nicht modifiziert" erzwungen. Der gewählte L2-Cachesatz wird zur L2-Cachesteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1-Statusmatrizen werden nicht geändert. Die L2-Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet einen Schreibvorgang der L2-Zeile vor, um die Seiteneinlagerung des L2-Cache abzuschließen, solange der Status von der L2-Steuerung aussteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Zeilenstatus (gesperrt und nicht modifiziert) und setzt die Steuerungsinformationen zurück, die dem L2-Cache-Seiteneinlagerungspuffer zugeordnet sind, der diesem Befehl "Write Inpage Buffer" zugeordnet ist. Die Aktualisierung des L2-Cache wird abgebrochen, und die BSU-Steuerung überträgt "end-of-Operation" zur Speichersteuerung. Die Speichersteuerung empfängt den Status der L2-Cachezeile (gesperrt und nicht modifiziert) und gibt die von der Prozessor-Seiteneinlagerungsanforderung zurückgehaltenen Ressourcen frei. Das L2-Miniverzeichnis wird nicht aktualisiert.
  • Fall 2
  • Die L2-Steuerung wählt eine L2-Cachezeile zum Ersetzen aus. In diesem Fall zeigt der Status der ersetzten Zeile, daß sie unmodifiziert ist; es ist keine-Auslagerung erforderlich. Das L2- Verzeichnis wird aktualisiert, um die Anwesenheit der neuen L2- Cachezeile wiederzugeben. Das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, wird geleert. Der gewählte L2-Cachesatz wird zu Adresse/Schlüssel und zur L2-Cachesteuerung übertragen. Der Status der ersetzten L2-Cachezeile wird zur L2-Cachesteuerung und zur Speichersteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache- übertragen. Die L1-Statusmatrizen für alle L1- Caches in der Konfiguration werden auf Kopien der ersetzten L2- Cachezeile geprüft. Falls Kopien gefunden werden, werden die betreffenden Entwertungsanforderungen zu den L1-Caches übertragen. Aus dem L1-Status wird der L1-Kopiestatus für die ersetzte L2-Cachezeile gelöscht. Die L1-Statusmatrix des L1-Operandencache des anfordernden Prozessors wird nicht aktualisiert, da sich die Abrufanforderung auf den Vektorprozessor bezieht. Die L2- Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet einen Schreibvorgang der L2-Zeile vor, um die Seiteneinlagerung des L2-Cache abzuschließen, solange der Status von der L2-Steuerung aussteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Zeilenstatus "ersetzt". Da die ersetzte Zeile unmodifiziert ist, signalisiert die L2-Cachesteuerung dem L2-Cache, daß der Seiteneinlagerungspuffer in den L2-Cache zu schreiben ist. Da dies ein Vollzeilen-Schreibvorgang ist und die Cachesätze verschachtelt sind, muß der L2-Cachesatz verwendet werden, um die Adreßbits 25 und 26 so zu manipulieren, daß der Schreibvorgang der L2-Cachezeile zugelassen wird. Die BSU-Steuerung überträgt "End-of-Operation" zur Speichersteuerung. Adresse/Schlüssel empfängt den L2-Cachesatz von der L2-Steuerung. Das Adreßregister für. die Aktualisierung des L2-Miniverzeichnisses wird aus den Seiteneinlagerungs-Adreßpuffern und dem L2-Cachesatz gesetzt, der von der L2-Steuerung empfangen wurde. Die Speichersteuerung empfängt den Status der ersetzten Zeile. Da keine Auslagerung erforderlich ist, gibt die Speichersteuerung die von der Seite neinlagerungsanforderung zurückgehaltenen Ressourcen frei. Die Speichersteuerung überträgt zu Adresse/Schlüssel einen Befehl, das L2-Miniverzeichnis unter Verwendung des diesem Prozessor zugeordneten Adreßregisters für die Aktualisierung des L2-Miniverzeichnisses zu aktualisieren. Danach markiert die Speichersteuerung die aktuelle Operation als abgeschlossen und gestattet es dem anfordernden Prozessor, wieder in die Speicherressourcen-Priorität eingetragen zu werden.
  • Fall 3
  • Die L2-Steuerung wählt eine L2-Cachezeile zum Ersetzen aus. In diesem Fall zeigt der Status der ersetzten Zeile, daß sie modifiziert ist; eine L2-Cache-Auslagerung ist erforderlich. Das L2- Verzeichnis wird aktualisiert, um die Existenz der neuen L2-Cachezeile wiederzugeben. Das Einfrierregister, das für diese durch einen L2-Cache-Mißerfolg bedingte Seiteneinlagerung eingerichtet wurde, wird geleert. Die aus dem Verzeichnis gelesene Adresse wird gemeinsam mit dem gewählten L2-Cachesatz zu Adresse/Schlüssel übertragen. Der gewählte L2-Cachesatz wird zur L2- Cachesteuerung übertragen. Der Status der ersetzten L2-Cachezeile wird zur L2-Cachesteuerung und zur Speichersteuerung übertragen, und der Cachesatz-Modifikator wird zum L2-Cache übertragen. Die L1-Statusmatrizen für alle L1-Caches in der Konfiguration werden auf Kopien der ersetzten L2-Cachezeile überprüft. Falls Kopien gefunden werden, werden die betreffenden Entwertungsanforderungen zu den L1-Caches übertragen. Aus dem L1-Status wird der L1-Kopiestatus für die ersetzte L2-Cachezeile ge- löscht. Die L1-Statusmatrix des L1-Operandencache des anfdrdernden Prozessors wird nicht aktualisiert, da sich die Abrufanforderung auf den Vektorprozessor bezieht. Die L2-Cachesteuerung empfängt den Befehl "Write Inpage Buffer" und bereitet einen Schreibvorgang für die L2-Zeile vor, um die Seiteneinlagerung des L2-Cache abzuschließen, solange der Status von der L2-Steuerung aussteht. Die L2-Cachesteuerung empfängt den L2-Cachesatz und den Status der ersetzten Zeile. Da die ersetzte Zeile modifiziert ist, signalisiert die L2-Cachesteuerung dem L2-Cache, daß ein Vollzeilen-Lesevorgang zu dem mit dem Seiteneinlagerungspuffer gepaarten Seitenauslagerungspuffer erforderlich ist, bevor die Daten des Seiteneinlagerungspuffers zum L2-Cache geschrieben werden. Da dies Vollzeilenzugriffe sind und die Cachesätze verschachtelt sind, muß der L2-Cachesatz verwendet werden, um die Adreßbits 25 und 26 so zu manipulieren, daß die Zugriffe auf die L2-Cachezeile zugelassen werden. Adresse/Schlüssel empfängt die Seitenauslagerungsadresse von der L2- Steuerung, wandelt sie in eine physische Adresse um und hält sie gemeinsam mit dem L2-Cachesatz in den Seitenauslagerungs-Adreßpuffern. Das Adreßregister für die Aktualisierung des L2-Miniverzeichnisses wird aus den Seiteneinlagerungs-Adreßpuffern und dem L2-Cachesatzes gesetzt, der von der L2-Steuerung empfangen wurde. Adresse/Schlüssel überträgt zur Vorbereitung des Schreibvorgangs der L3-Zeile die physische Seitenauslagerungsadresse zur BSU-Steuerung. Die Speichersteuerung empfängt den Status der ersetzten Zeile. Da eine Auslagerung erforderlich ist, kann die Speichersteuerung die L3-Ressourcen nicht freigeben, bevor die Aktualisierung des Speichers abgeschlossen ist. Es wird gewährleistet, daß Auslagerungen zu demselben Speicheranschluß erfolgen, der für die Seiteneinlagerung verwendet wird. Die Speichersteuerung überträgt zu Adresse/Schlüssel einen Befehl, das L2- Miniverzeichnis unter Verwendung des diesem Prozessor zugeordneten Adreßregisters für die Aktualisierung des L2-Miniverzeichnisses zu aktualisieren. Die Speichersteuerung markiert die aktuelle Operation anschließend als abgeschlossen und gestattet es dem anfordernden Prozessor, wieder in die Speicherressourcen- Priorität eingetragen zu werden. Die BSU-Steuerung erkennt, daß die ersetzte L2-Cachezeile modifiziert wurde, und startet die Auslagerungssequenz, nachdem sie die Auslagerungsadresse von Adresse/Schlüssel empfangen hat, inde-m sie einen Vollzeilen- Schreibbefehl samt Adresse über den Datenstrom des L2-Cache zu dem ausgewählten Speicheranschluß überträgt. Die Daten werden in 16-Byte-Abschnitten vom Seitenauslagerungspuffer zum Speicher übertragen. Nach der letzten Vierfachwort-Übertragung zum Speicher überträgt die BSU-Steuerung "End-of-Operation" zur Speichersteuerung. Sobald die Speichersteuerung "End-of-Operation" von der BSU-Steuerung empfangen hat, gibt sie den L3-Anschluß frei, um einen überlappten Zugriff auf den Speicheranschluß zu ermöglichen.
  • Wie zuvor bereits erwähnt, erfordert der Einspeicherungs-Cachepuffer (store-in Cache) ein hohes Maß von Fehlererkennung und Fehlerkorrektur. Dies ist leider mit der Anforderung eines Hochgeschwindigkeitsbetriebs unvereinbar. Ebenso ist es mit dem Wunsch nach minimalem Schaltungsaufwand unvereinbar. Fehlererkennungs- und Fehlerkorrekturverfahren verwenden normalerweise Fehlerkorrektur-Codes, die den Einsatz von Prüfblöcken mit mehreren Informationsbytes erfordern, um den Aufwand für Prüfbits zu vermindern. Solche Verfahren erfordern gewöhnlich zusätzliche Maschinen- (Anweisungs-) Zyklen und können sogar zusätzliche Speicherzyklen erfordern. Der Zeitbedarf für diese Zyklen neigt dazu, den Cachebetrieb zu verlangsamen, und läuft damit dem eigentlichen Zweck zuwider, zu dem ein Cachespeicher eingefügt wird. Die Einfügung von Schaltungen kann zwar wirksam sein, um den durch Fehlererkennung und -korrektur verursachten Zeitverlust teilweise auszugleichen, aber die Cacheschaltungen sind in der Regel Hochgeschwindigkeitskomponenten und darum teurer als gewöhnlich. Die Einfügung teurer Schaltungen ist offensichtlich keine anzustrebende Lösung.
  • In dem Fehlerkorrektursystem dieser Erfindung wird nur das einzelne Prüfbit verwendet, das einem Datenbyte gewöhnlich zugeordnet ist. Das System versucht nicht, einen Abruffehler direkt zu korrigieren. Statt dessen kann wie bei einem beliebigen Paritätsfehler der normale Maschinenfehler eintreten. Die Neuversuch-Routine ermittelt, daß ein Cachefehler aufgetreten ist, und ruft einen Hardware-Mechanismus für invertierten Neuversuch auf, der dafür ausgelegt ist, erkennbare harte Bitfehler innerhalb jedes Prüfblocks zu korrigieren.
  • Der Fehlerprüfmechanismus nutzt die Byte-orientierte Organisation des Cachespeichers aus. Jeweils acht Datenbits sind einem einzelnen Prüfbit, d. h. einem Paritätsbit, zugeordnet. In dem entstehenden Neun-bit-Feld wird eine ungerade Parität aufrechterhalten. Dieses Verfahren- unterstützt die Einzelbit-Erkennung von Fehlern, die aufgrund des Status auftreten, der zu dem blokkierten Status der defekten Speicherzelle entgegengesetzt ist. Wenn die Speicherzellen ausfallen und der vorgesehene Wert des Bits dem Status der ausgefallenen Zelle entspricht, wird kein Fehler festgestellt, aber die aus der Zelle gelesenen Daten sind auch nicht unkorrekt, so daß kein Nachteil entsteht.
  • Das folgende Beispiel veranschaulicht den Fehlerkorrektur-Algorithmus, der auf einfache Weise in konventioneller Logik des gleichen Typs ausgeführt werden kann, wie sie an anderer Stelle im System eingesetzt wird. Das Beispiel betrachtet ein einzelnes Byte der Cachezeile mit einem harten Fehler in Bit 2 des Byte, wobei das Bit auf einer logischen "1" blockiert.
  • 0 1 2 3 4 5 6 7 P
  • 0 0 0 0 0 0 0 0 1 Während einer versuchten Speicherungsoperation enthält das Schreibregister des L2-Cache intakte Daten.
  • 0 0 1 0 0 0 0 0 1 Inhalt des Cache nach einer Schreiboperation mit einem harten Bit-Fehler in Bit 2.
  • 0 0 1 0 0 0 0 0 1 Bei einem nachfolgenden Cache-Leseoperation entsteht ein Paritätsfehler, der ein Maschinenfehlersignal verursacht, das einen Neuversuch der Anweisung einleitet. Der Neuversuch stellt fest, daß der Fehler im Cache aufgetreten ist, und versetzt die Maschine in einen Status, der es der Cache-Datenstromhardware ermöglicht, einen invertierten Neuversuch an der Adresse und in dem Cachesatz des Fehlers zu beginnen.
  • 0 0 1 0 0 0 0 0 1 Die Cache-Datenstromhardware liest die Cachezeile an der Adresse des defekten Byte und stellt die Daten in den Seitenauslagerungspuffer.
  • 1 1 0 1 1 1 1 1 0 Die Cache-Datenstromhardware invertiert die Daten und lädt sie zur Vorbereitung eines Cachezeilen-Schreibvorgangs in den Seiteneinlagerungspuffer.
  • 1 1 1 1 1 1 1 1 0 Die Cache-Datenstromhardware schreibt den Inhalt des Seiteneinlagerungspuffers in den adressieren Cache-Eintrag. Bit zwei ist in den fehlerhaften Status invertiert worden.
  • 0 0 0 0 0 0 0 0 1 Der Inhalt des Seitenauslagerungspuffers wird von der Hardware des Cache-Datenstroms invertiert, und die nun korrekten Daten werden in den Seitenauslagerungspuffer eingespeichert. Die Paritätsprüfung zeigt nun an, daß in dem Register gültige Daten vorhanden sind.
  • Dieses System zur Erkennung und Korrektur von Cache-Fehlern ist außerordentlich wirksam, da es viele vorhandene Einrichtungen des Systems nutzt und nicht in Funktion ist, wenn kein Fehler festgestellt wurde.
  • In Fig. 6 arbeitet der Mechanismus, der Daten zwischen dem realen Speicher 601 (L3) und dem Erweiterungsspeicher 610 (L4) überträgt, mit einer Zeilengröße, die mit der Größe der Zeilen vergleichbar ist, die von dem in der Speicherhierarchie unmittelbar darüber befindlichen Cache unterstützt werden. Ein Satz von vier Befehlen ermöglicht es, Zeilen von einem beliebigen logischen Speichertyp zu einem anderen zu verschieben. Die Verwendung eines Speicherpuffers, der sich außerhalb der normalen Cachestruktur befindet, ermöglicht eine Verschiebung von Daten ohne Belastung der Caches innerhalb des Systems, da die Datenübertragungen vollständig innerhalb des Speichersubsystems erfolgen.
  • Der reale Speicher L3 601 und der erweiterte Speicher L4 610 nutzen einen gemeinsamen Kartensatz, wodurch die Aufteilung zwischen ihnen eine rein logische ist. In der bevorzugten Ausführungsform kann die Grenze zwischen L3 und L4 auf eine beliebige 16-MB-Grenze gelegt werden. L3 liegt unterhalb der Grenze, und L4 liegt oberhalb.
  • Ein Speicherpuffer, der in der Lage ist, eine 128 Byte lange Zeile aufzunehmen (entsprechend der Größe des L2-Cache im System), wird als Vorbereitungsbereich für Datenübertragungen zwischen L3 und L4 verwendet. In der bevorzugten Ausführungsform ermöglicht ein Satz von vier Speicherbefehlen Datenübertragungen zwischen dem Speicherpuffer und dem L3-Speicher 601 oder dem L4- Speicher 610. Alle Datenbewegungen verarbeiten 128 Bytes. Jedes 128-Byte-Feld beginnt an einer 128-Byte-Grenze im Speicher.
  • Die vier von den Mikroprogrammen der Zentraleinheit verwendeten Speicherbefehle sind: Transfer L3 Line to Storage (Memory) Buffer (TL3LMB) (L3-Zeile zum Speicherpuffer übertragen), Transfer L4 Line to Storage (Memory) Buffer (TL4LMB) (L4-Zeile zum, Speicherpuffer übertragen), Transfer Storage (Memory) Buffer to L3 Line (TMBL3L) (Speicherpuffer zur L3-Z eile übertragen) und Transfer Storage (Memory) Buffer to L4 Line (TMBL4L) (Speicherpuffer zur L4-Zeile übertragen). Die Befehle werden paarweise verwendet, um eine Datenübertragung von einer Speicherposition zu einer anderen zu bewirken, wobei jeder Befehl eine Hälfte der Operation ausführt. Jedes Befehlspaar kopiert eine 128 Byte lange Zeile von einer Speicherposition zu einer anderen.
  • TL3LMB und TL4LMB kopieren jeweils eine 128 Byte lange Zeile von der angegebenen Speicherposition zum Speicherpuffer. Die Anforderung, die einen Befehl und eine absolute Ädresse auf einer 128-Byte-Grenze umfaßt, ergeht zunächst an die L3/L4-Speichersteuerung 12 (Fig. 1). Die Speichersteuerung 12 muß sowohl für die benötigte Speicherressource als auch für den Speicherpuffer den Zugriff erteilen. Wenn diese Befehle von der L3/L4-Speichersteuerung 12 gewählt werden, wird der Speicherpuffer für den anfordernden Prozessor mit einer Sperre belegt. Hierdurch wird die Verwendung des Speicherpuffers serialisiert. Nur der Prozessor, der den Speicherpuffer mit einer Sperre belegt hat, darf sie freigeben.
  • Wie zuvor beschrieben, ist der L2-Cachepufferspeicher 26 (Fig. 2) ein Einspeicherungs-Cache (store-in Cache); infolgedessen ist es möglich, daß die vom Befehl TL3LMB angeforderte 128 Byte lange Zeile im L2-Cache vorhanden ist. Falls dies der Fall ist und sie nicht modifiziert wurde, werden die Daten vom L3-Speicher zum Speicherpuffer abgerufen. Falls die Zeile im L2- Cache vorhanden ist und modifiziert wurde, werden die Daten in den L3-Speicher zurückgespeichert und in den Speicherpuffer kopiert. Der Status der Zeile im L2-Cache wird aktualisiert, um anzuzeigen, daß sie unmodifiziert, aber noch gültig ist, da sie in den L3-Speicher kopiert wurde. Das Referenzbit in dem Speicherschlüssel, der der 4-kB-Seite zugeordnet ist, die die 128 Byte lange Zeile enthält, wird auf aktiv gesetzt.
  • Aus Protokollgründen kann die von TL4LMB angeforderte 128-Byte- Zeile nicht im L2-Cache existieren. Nur Daten aus dem L3-Speicher dürfen in den L2-Speicher kopiert werden. Infolgedessen werden die Daten für diesen Befehl einfach vom L4-Speicher in den Speicherpuffer kopiert.
  • TMBL3L und TMBL4L verschieben jeweils eine 128 Byte lange Zeile vom Speicherpuffer zu der angegebenen Speicherposition. Die Anforderung, die den Befehl und eine absolute Adresse auf einer 128-Byte-Grenze enthält, ergeht zunächst an die L3/L4-Speichersteuerung. Die Speichersteuerung muß sowohl für die benötigte Speicherressource als auch für den Speicherpuffer den Zugriff genehmigen. Der Befehl bemüht sich nur dann um den L3- oder L4- Anschluß, wenn die Speicherpuffer-Sperre zuvor von demselben Prozessor gesetzt wurde. Wenn die Speicherpuffer-Sperre von der L3/L4-Speichersteuerung ausgewählt wird, wird sie zurückgesetzt. Hierdurch wird der Speicherpuffer für die Verwendung durch einen anderen Prozessor im System freigegeben.
  • Wie zuvor beschrieben, ist der L2-Cachepufferspeicher 28 ein Einspeicherungs-Cache (store-in Cache). Es ist möglich, daß die durch den Befehl TMBL3L modifizierte 128-Byte-Zeile im L2-Cache vorhanden ist. Falls dies der Fall ist, wird sie gemeinsam mit etwaigen Kopien im L1-Cache entwertet, sobald der Inhalt des Speicherpuffers zum L3-Speicher verschoben wird, und ersetzt dabei die alten Daten. Die Referenz- und Anderungsbits in dem Speicherschlüssel, der der 4-kB-Seite zugeqrdnet ist, die die 128-Byte-Zeile enthält, werden auf aktiv gesetzt. Eine von TMBL4L angeforderte 128-Byte-Zeile kann nicht im L2-Cache vorhanden sein, sondern nur im Speicherpuffer. Nur Daten aus dem L3-Speicher dürfen in den L2-Cache kopiert werden. Die Daten werden einfach aus dem Speicherpuffer an die L4-Speicherposition kopiert.
  • Diese Befehle ersparen dem Prozessor die Notwendigkeit, Zeit darauf zu verwenden, die Daten aus dem Speicher abzurufen, sie an eine Stelle im Prozessor zu stellen und sie anschließend in einem gesonderten Schritt erneut zu speichern; hierdurch wird die Leistungsfähigkeit für Anweisungen deutlich verbessert, die eine solche Datenverschiebung benötigen.
  • Häufig ist es erforderlich, Datenblöcke zu verschieben, die wesentlich länger sind als die 128 Bytes, die von den zuvor beschriebenen Anweisungen geliefert werden. Eine Anweisung PAGE IN verschiebt den 4-kB-Block vom L4-Speicher zum L3-Speicher. Die Anweisung PAGE OUT verschiebt einen 4-kB-Datenblock vom L3-Speicher zum L4-Speicher. Da die Speicherbefehle jeweils nur 128 Bytes gleichzeitig verschieben, wird eine Mikroprogramm- Schleife mit 32 Iterationen eingesetzt (wobei die Speicheradresse nach jeder Iteration aktualisiert wird), um die Verschiebung des 4-kB-Blocks durchzuführen. Für PAGE IN besteht die Schleife aus TL4LMB4-TMBL3L-Befehlspaaren. Für PAGE OUT besteht die Schleife aus TL3LMB-TMBL4L-Befehlspaaren.
  • Die Anweisungen PAGE IN und PAGE OUT geben den L4-Block durch eine Erweiterungsspeicher-Blocknummer an. Diese Nummer wird von einem Mikroprogramm vor der Ausführung der Datenübertragungsbefehle in eine für das Speichersubsystem geeignete absolute Adresse übersetzt, wobei die logische Trennadresse zwischen L3 und L4 berücksichtigt wird.
  • MOVE LONG nutzt ebenfalls. die Speicher-zu-Speicher-Befehle. In dem Fall, in dem jeder der Speicheroperanden an einer 128-Byte- Grenze im Speicher ausgerichtet ist, können die Befehlspaare TL3LMB-TMBL3L für alle vollständigen 128-Byte-Zeilen ausgeführt werden. Hierdurch wird die Notwendigkeit umgangen, eine Abruf- Speicherungsschleife im Zentralprozessor auszuführen, bei der Daten zum Prozessor und zurück zum Speicher verschoben werden. Hierdurch wird die Leistungsfähigkeit der Anweisung MOVE LONG in dem Fall deutlich verbessert, in dem von der Anweisung tatsächlich eine Verschiebung der Daten benötigt wird.
  • In Fig. 7 steht der Befehlspuffer 710 zur Verfügung, um die angegebenen Befehlsinformationen zu halten. Die Speicherwarteschlange 720 arbeitet so, wie zuvor beschrieben. Ein Abschnitt 720a enthält Steuerungsinformationen, die die Adresse der Speicherungsanforderung und den Typ der Speicherungsoperation (sequentiell oder nicht-sequentiell) sowie andere Statusinformationen angeben. Block 730 für sequentielle Speicherungsanforderungen zeigt an, daß eine sequentielle Speicherungsanforderung vorhanden ist, die es erforderlich macht, daß die Daten gesammelt und als Block gespeichert werden. Der L2-Schreibpuffer 740 und der L2-Schreibpuffer 750 stellen 256 Byte Datenspeicher bereit. Der Puffer 760 enthält Befehl und Adresse des L2-Cache.
  • Zusammengefaßt dienen die vier oben beschriebenen Datenübertragungsbefehle dazu, die Anweisungen des IBM System 370 zu unterstützen, die große Datenmengen von Speicher zu Speicher verschieben. Die Befehle sind hinreichend flexibel, um die Übertragung von Daten zwischen Kombinationen von L3- und L4-Speicher zu ermöglichen. Das Problem der Wahrutig der Speicherkonsistenz wird dadurch erleichtert, daß die-Daten in Blöcken verschoben werden, deren Größe der L2-Cachezeilengröße entspricht, so daß für diese Befehle die bestehenden Speicherkonsistenz-Mechanismen wirken können. Pipeline-Verarbeitung wird insofern erzielt, als die Zugriffszeiten des L3/L4-Speichers die Beschränkungsfaktoren für die Ausführungsgeschwindigkeit der Befehle sind. Die Daten werden direkt vom Speicher zu einem Puffer im Speichersubsystem und zurück zum Speicher übertragen. Dieses Verfahren verbessert auch die Cache-Trefferquoten, da unerwünschte Daten nicht lediglich deswegen in den Cache-Pufferspeicher eingelagert werden müssen, um die Speicher-zu-Speicher-Übertragungen durchzuführen. Anders ausgedrückt: Der Algorithmus für die Cachespeicher-Zuweisung wird durch die Speicher-zu-Speicher-Übertragungen nicht beeinträchtigt.
  • Wenn man nun die spezifischen Art und Weise betrachtet, in der vom System Vektor-Speicheroperationen durchgeführt werden, und insbesondere die Darstellung in Fig. 8 und 9, so wird man erkennen, daß sich die Speicheraktivität eines Vektorprozessors von den Speicherreferenzmustern des konventionellen Zentralprozessors deutlich unterscheidet. Es wurde festgestellt, daß die Einführung einer spezifischen, auf den Vektorprozessor zugeschnittenen Betriebsart eine unerwartet deutliche Verbesserung der Systemleistung bewirkt.
  • Das System bietet sowohl eine Zeilenabruf- als auch eine Elementabruf-Betriebsart. Die Zeilenabruf-Betriebsart unterstützt Datenstromverfahren und überträgt Daten annähernd mit der maximalen theoretisch möglichen Geschwindigkeit zum Vektorprozessor. Die Elementabruf-Betriebsart ermöglicht die Handhabung großer Schrittweiten (Aufteilungen) zwischen den Elementen im Speicher, da nur eine einzelne Datenübertragung zwischen dem Speichersubsystem und dem Vektqrprozessor erforderlich ist. Solche Anforderungen nutzen die Cache-Warteschlange des L2-Speichers für den zugehörigen Zentralprozessor, um Elementabruf-Anforderungen in eine Warteschlange einzugliedern und so eine maximale Geschwindigkeit für die Bearbeitung von Anforderungen in der gemeinsam genutzten L2-Cache-Ressource zu ermöglichen.
  • Bei Vektorprozessor-Abrufoperationen wird der L1-Cache umgangen, um Pipeline-Verarbeitung mit dem größeren L2-Cachespeicher zu ermöglichen.
  • Das System sieht Speicherabrufoperationen vor, die im nicht-sequentiellen Element-Speicherungsmodus, im sequentiellen Vollzeilenmodus und im sequentiellen Teilzeilenmodus ablaufen. Der nicht-sequentielle Modus unterstützt zwischen den Elementen im Speicher große Schrittweiten, mit denen bis zu acht Bytes pro Anforderung gespeichert werden können. Der sequentielle Teilzeilenmodus unterstützt kleinere Schrittweiten und verkürzt dabei die Belegungszeit, die dem L2-Cache-Zugriff für diesen Operationstyp zugeteilt wird. Der sequentielle Vollzeilenmodus unterstützt die Speicherung aneinandergrenzender Datenelemente in einer L2-Cache-Vollzeile und umgeht dadurch die Notwendigkeit einer Cache-Seiteneinlagerung, wenn ein Mißerfolg im L2-Cache eintritt. Die verschiedenen Modi unterstützen die unterschiedliche Datenorganisation so, daß die Leistungsfähigkeit des Vektorprozessors optimiert und gleichzeitig die Verwendung der gemeinsamen L2-Cache-Ressource minimiert wird.
  • In Fig. 8 ist eine Vielzahl von Vektorprozessoren 800a, 80db und 800c in dem Datenverarbeitungssystem enthalten, das auch die zuvor beschriebenen Zentral-Prozessoreinheiten 20a, 20b und 20c enthält. Die Vektorprozessoren und Zentral-Prozessoreinheiten sind über den Steuerbus 810a, 810b bzw. 810c verbunden. Jeder der Vektorprozessoren ist mit dem jeweiligen L1-Cache 18a, 18b bzw. 18c über seinen jeweiligen Datenbus 820a, 820b bzw. 820c verbunden. Alle Datenbusse sind durch den L2-Cache geführt, der L1-Cache wird jedoch für die Vektor-Speicheroperationen umgangen.
  • In der bevorzugten Ausführungsform ist der Vektorprozessor spezifisch dafür ausgelegt, den Anweisungssatz der Vektorarchitektur des IBM System 370 zu verarbeiten. Der Zentralprozessor ist an der Ausführung derartiger Anweisungen dadurch beteiligt, daß er anfangs den Operationscode der Anweisung decodiert und die Arbeit an den Vektorprozessor übergibt. Der Zentralprozessor ist nqch aktiv, während der Vektorprozessor Arbeit für ihn ausführt, geht jedoch nicht zu der nächsten Anweisung weiter, bevor der Vektorprozessor die für die betreffende Vektoranweisung erforderliche Arbeit ausgeführt hat.
  • Die Zentral-Prozessoreinheit bearbeitet alle Speicherreferenzen für den Vektorprozessor. Vektor-Abrufoperationen sind Anforderungen, die vom Zentralprozessor im Auftrag des Vektorprozessors ausgegeben werden. Die von den Zentral-Prozessoreinheiten 20a, 20b und 20c genutzten Hardware-Wege werden auch bei Vektor-Abrufvorgängen verwendet. Die jeweiligen Zentral-Prozessoreinheiten geben während Vektor-Abrufoperationen über den mit dem L2- Cache 26a verbundenen Steuerbus 840a, 840b und 840c Befehle an den L2-Cache aus.
  • Während Vektor-Abrufoperationen zeichnet der L1-Cache die an den Vektorprozessor übergebenen Speicherdaten nicht auf. Der L1-Cache wird bei allen Vektor-Abrufvorgängen umgangen, um zu ermöglichen, daß der L2-Cache-Pufferspeicher als Datenquelle in der Pipeline der Vektor-Abrufanforderungen fungiert.
  • Vektor-Speicheroperationen sind Anforderungen, die von der Zentral-Prozessoreinheit im Auftrag des Vektorprozessors ausgegeben werden. Die Anforderung wird gleichzeitig an die L1-Speicherwarteschlange und an den Vektorprozessor ausgegeben. Die der Speicheranforderung zugeordneten Daten, die vom Vektorprozessor stammen, werden im Anschluß an Befehl und Adresse in die L1- Speicherwarteschlange eingetragen. Wenn sich alle erforderlichen Informationen für die Vektor-Speicherungsanforderung in der L1- Speicherwarteschlange befinden, werden sie zur anschließenden Speicherung im L2-Cache-Pufferspeicher an die L2-Speicherwarteschlange übergeben. Der L1-Cache, der nach dem Durchspeicherungs-Prinzip aufgebaut ist, kann durch die Vektor- Speicheranforderungen aktualisiert werden, wenn im L1-Cache Kopien gefunden werden, oder er kann entwertet werden, sobald Speicherungsanforderungen in den L2-Cache eingetragen werden. Der L2-Cache ist ein Einspeicherungs-Cache für die Vektor-Speicherungsanforderungen, und die Speicherkonsistenz wird durch die vorhandene Hardware des L2-Cache aufrechterhalten.
  • Vektoroperationen sind unterschiedlichen Datentypen und Arten der Datenorganisation zugeordnet. Vektoren sind als eine Sammlung ähnlicher Datenelemente im Speicher definiert. Sie besitzen eine gemeinsame Elementlänge und ein gemeinsames Datenformat. Die Länge kann zwei, vier oder acht Byte betragen und ist an vollständigen Grenzen im Speicher ausgerichtet, wodurch Halbwort-Elemente (Halfword Elements - HWE), Vollwort-Elemente (Fullword Elements - FWE) und Doppelwort-Elemente (Doubleword Elements - DWE) erzeugt werden. Die Aufteilung zwischen den Elementen wird als "Schrittweite" (stride) bezeichnet. Bei aneinandergrenzenden Elementen innerhalb eines Vektors beträgt die Schrittweite eins.
  • Komplexe Zahlen werden mit einem realen Teil und einem imaginären Teil für dasselbe Element an aneinandergrenzenden Speicherpositionen im Speicher gespeichert. Wenn komplexe Zahlen als aneinandergrenzende Elemente in einem Vektor im Speicher gespeichert werden, bedeutet dies, daß sowohl die realen Teile als auch die imaginären Teile jeweils durch eine Schrittweite von zwei getrennt sind. Die Verarbeitung komplexer Vektoren erfordert die getrennte Handhabung der realen und imaginären Tei le. Die Fähigkeit zur Handhabung einer Schrittweite von zwei ist daher ein wichtiger Aspekt des Systems.
  • Die Daten für eine Matrix werden entweder zeilenorientiert oder spaltenorientiert gespeichert. In einem Fall, in dem die Speicherung zeilenorientiert erfolgt und es gewünscht wird, auf alle Elemente einer Zeile zuzugreifen, wird mit einer Schrittweite von eins auf die Daten zugegriffen, da alle Elemente einer Zeile im Speicher aneinandergrenzend gespeichert sind. Wenn gewünscht wird, auf alle Elemente einer Spalte zuzugreifen, werden die Elemente durch eine Schrittweite getrennt, die der Spaltenzahl entspricht. Bei großen Matrizen kann die Aufteilung so erfolgen, daß sich jedes der gewünschten Elemente in einer gesonderten Cachezeile befindet. Es ist von wesentlicher Bedeutung, daß nur auf die gewünschten Elemente statt auf die gesamte Cachezeile zugegriffen werden kann, wenn eine optimale Leistung erzielt werden soll.
  • Aus der vorausgegangenen Erörterung ist leicht zu. ersehen, daß die Elementgröße und die Schrittweite wichtige Faktoren bei den Zugriffoperationen im Vektorspeicher sind.
  • Vektor-Abrufe können entweder Zeilen-Abrufe oder Element-Abrufe sein. Zeilen-Abrufe beziehen sich auf die L1-Cache-Größe; in der bevorzugten Ausführungsform sind dies 64 Byte. Jeder Abrufzugriff dieses Typs umgeht wirksam den L1-Cache und wird direkt zum L2-Cache gesandt. Jeder Zeilenabruf erscheint für die L2- Cache-Hardware als eine Seiteneinlagerungsanforderüng für den L1-Cache des Prozessors. Für jeden. Zeilenabruf werden die L2- Cache-Lesezyklen benötigt, wobei jeder Zyklus auf 32 Bytes der gewünschten L1-Cachezeile zugreift. Die Daten werden acht Zyklen lang über den L1-Cache des anfordernden Prözessors zu dem zugehörigen Vektorprozessor übertragen.
  • Der Element-Abruf verwendet ebenfalls zwei L2-Cache-Lesezyklen, obwohl nur ein einzelner Lesezugriff erforderlich ist. Dies ist durch die Zwei-Zyklus-Struktur des L2-Cache bedingt. Nur ein einzelner Datenübertragungszyklus ist erforderlich, um das Element über den L1-Cache zu dem zugehörigen Vektorprozessor zu senden.
  • L2-Cache-Mißerfolge bei Element- und Zeilen-Abrufen werden als Seiteneinlagerungsanforderungen für den L1-Cache des Prozessors mit L2-Cache-Mißerfolgen behandelt, mit Ausnahme der Zahl der Datenübertragungen, die bei Element-Abrufen zum L1-Cache erfolgen.
  • Ein Prozessor-Mikroprogramm wird verwendet, um zu ermitteln, welcher Anforderungstyp zu verwenden ist. In einem dreiteiligen System (d. h. in einem Drei-Prozessoren-System) steuert ein Ring-Prioritätsalgorithmus (round-robin priority algorithm) den Zugriff des Prozessors auf den L2-Cache. Somit kann, wenn jeder Prozessor alle drei Prioritätszyklen einmal zugreifen kann und jeder Zugriff zwei Zyklen erfordert, jeder Prozessor alle sechs Zyklen einmal auf den L2-Cache zugreifen. Bei acht Datenübertragungszyklen für Zeilen-Abrufe ist nicht die Verarbeitungsgeschwindigkeit des L2-Cache, sondern die Geschwindigkeit der Übertragungszyklender einschränkende Faktor für die Datenübertragungsgeschwindigkeit. Wenn mittels Zeilen-Abrufen nicht-aneinandergrenzende Elemente abgerufen werden, werden die überschüssigen Daten vom Vektorprozessor einfach verworfen.
  • Bei Element-Abrufen erfolgt nur eine Elementübertragung alle sechs Zyklen, falls der L2-Cache von allen drei Prozessoren voll genutzt wird. Im besten Fall erfolgt eine Datenübertragung alle zwei Zyklen, falls dem anfordernden Prozessor in jedem Prioritätszyklus Zugriff auf den L2-Cache erteilt wird. Zeilenabrufe bieten, sofern möglich, eine größere Bandbreite.
  • Die Hardware-Implementierung der Zeilen-Abrufoperation nutzt denselben Befehlspuffer, der für Seiteneinlagerungs-Anforderungen des L1-Cache des Prozessors verwendet wird. Der Befehl und die Doppelwortadresse des ersten gewünschten Elements werden zum L2-Cache übertragen. Eine L1-Cache-Kennung, die den Operandencache kennzeichnet, und ein L1-Cachesatz, der den Vektorprozessor als das Ziel der Daten bezeichnet, nicht einen eigentlichen L1- Cachesatz, sind Bestandteil der Zeilen-Abrufanforderung. Es erfolgt keine Seiteneinlagerung von Daten in den L1-Cache, und auf der Stufe des L2-Cache wird keine Aufzeichnung über die Daten geführt, die in dem zugehörigen Vektorprozessor vorhanden sind.
  • Um die Nutzung des L2-Cache während Element-Abrufen zu verbessern, nutzen die Anforderungen die Speicherwarteschlange des Prozessors. Bei einer solchen Operation fungiert die Speicherwarteschlange als Elementabruf-Warteschlange. Nur der Befehl und die Adresse werden eingegeliedert, da die Daten bei jedem L2- Cache-Abrufzugriff übertragen werden. Der Vorteil besteht darin, daß Abrufanforderungen am Eingang zur L2-Cache-Anforderungspriorität in der Anforderungsquelle für die Prozessor-Speichervorgänge gestapelt werden. Ein Vektorelement-Abrufbit wird an die Speicherwarteschlange angefügt, um den Anforderungstyp für die L2-Cache-Priorität zu kennzeichnen. In der Vektoranweisungsumgebung des IBM System 370 besteht keine Notwendigkeit, Vektor- Abruf- und Vektor-Speicherungsanforderungen innerhalb der Speicherwarteschlange für eine gegebene System 370-Anforderung gemischt zu bearbeiten. Element-Abrufe können von der Speicherwarteschlange aus mit einer Maximalgeschwindigkeit von einem Abruf alle zwei Zyklen bearbeitet werden.
  • Vektor-Speicherungsanforderungen arbeiten in drei Betriebsarten: Element-Speichervorgänge, Teilzeilen-Speichervorgänge und Vollzeilen-Speichervorgänge. Element-Speichervorgänge werden auf identische Art bearbeitet wie nicht-sequentielle Speichervorgänge des Prozessors und "End-of-Operation" im Speichersubsystem. Der einzige Unterschied besteht auf der Stufe des L1-Cache. Da die Daten für die Zentralprozessor-Speicherungsanforderung vom Vektorprozessor stammen, werden sie nach Befehl und Adresse in die L1-Speicherwarteschlange aufgenommen. Sobald die Daten empfangen wurden, kann die Anforderung zur Bearbeitung auf der gemeinsamen Speicherstufe zur L2-Speicherwarteschlange übertragen werden. Jede Element-Speicherung mit L2-Cache-Treffer erfordert zwei Schreibzyklen des L2-Cache. Der erste Zyklus ist erforderlich, um zu ermöglichen, daß die gewählten Cachesatz-Informationen die Schreibbefehl-Steuerungsinformationen des Cache so manipulieren, daß im zweiten Zyklus das richtige Zwei-Byte-zu-acht- Byte-Element geschrieben wird.
  • Teilzeilen-Speichervorgänge werden auf die gleiche Weise bearbeitet wie Prozessoranforderungen für sequentielle Speichervorgänge im Speichersubsystem, mit zwei Ausnahmen. Erstens modifizieren Prozessoranforderungen für sequentielle Speichervorgängealle Bytes innerhalb des Speicherfelds. Teilzeilen-Speichervorgänge lassen Lücken zwischen den gespeicherten Bytes zu, um zu ermöglichen, daß die Ergebnisse mit einer Schrittweite von zwei gespeichert werden. Innerhalb der L1-Speicherwarteschlange wird die Anforderung so behandelt, als ob es sich um einen echten sequentiellen Speichervorgang handeln würde. Der Unterschied wird innerhalb der L2-Speicherungsschreibpuffer berücksichtigt, sobald die Ergebnisse aus der Speicherwarteschlange entnommen werden. Die betreffenden Datenbytes und Speicherbyte-Markierungen werden in die L2-Schreibpuffer für sequentielle Speichervorgänge geladen. Wenn der L2-Cache aktualisiert wird, erfolgt der Schreibvorgang der 128-Byte-Cachezeile nach Maßgabe der Speicherbyte-Markierungen, wobei nur die gewünschten Bytes innerhalb der L2-Cachezeile modifiziert werden.
  • Der zweite Unterschied betrifft die Zeitsteuerung der Aktualisierungen des L2-Cache. Eine Vektoranweisung des IBM System 370 kann auch erheblich mehr als die 256 Bytes innerhalb des Speichers modifizieren. Die L2-Schreibpuffer für sequentielle Speichervorgänge sind 256 Byte lang. Daher erzwingt die Hardware ein "End-of-Operation" für einen internen sequentiellen Speichervorgang jedesmal, wenn eine 256-Byte-Grenze im Vektor-Speicherungsfeld überquert wird, wodurch veranlaßt wird, daß die in den L2-Schreibpuffern für sequentielle Speichervorgänge erstellten L2-Cachezeilen in den L2-Cache geschrieben werden. Hierdurch wird ein Überlauf der Speicherwarteschlange für die Vektoranweisung wirksam vermieden.
  • Vollzeilen-Speichervorgänge werden wie Teilzeilen-Speichervorgänge behandelt, mit der Ausnahme, daß diese nur bei Schrittweitengleichheit bei Speicherungsoperationen verwendet werden, die alle Bytes innerhalb der L2-Cachezeilen modifzieren, auf die zugegriffen wird. Da Vollzeilen-Speichervorgänge letztendlich die gesamte L2-Cachezeile aktualisieren, besteht keine Notwendigkeit, eine Seiteneinlagerung der alten Daten durchzuführen, nur um sie später zu überschreiben. Dies ermöglicht es, den L3- Abrufzugriff zu umgehen, der für einen L2-Cache-Mißerfolg normalerweise erforderlich ist, der mit der Verarbeitung des sequentiellen Speichervorgangs im L2-Cache in Verbindung steht, wodurch die L3-Belegungszeit vermindert und eine entsprechend verbesserte Reaktionszeit für Vektor-Speichervorgänge erzielt wird. Diese Operation nutzt das dem Zeilenhalt-Register zugeordnete "Nicht-vorhanden"-Bit.
  • Ein Mikroprogramm ermittelt den Typ der zu verwendenden Speicherungsanforderung in Abhängigkeit von den Anforderungen der Vektoranweisung des IBM System 370. Element-Speichervorgänge werden für Vektoranweisungen verwendet, die Schrittweiten größer zwei erfordern. Solche Operationen können das Speichern der Ergebnisse von Vektoranweisungen nach Maßgabe eines Maskenregisters beinhalten, wobei Speichervorgänge nur für Elemente ausgeführt werden, deren Maskenbit aktiv gesetzt ist. Teilzeilen-Speichervoränge werden für Vektoren verwendet, deren Elemente durch eine Schrittweite von 2 getrennt sind, wie bei komplexen Zahlen. Teilzeilen-Speichervorgänge werden auch in Fällen verwendet, in denen die Schrittweite gleich eins ist, aber es wird nicht die gesamte L2-Cachezeile aktualisiert. Vollzeilen-Speichervorgänge werden nur für Fälle verwendet, in denen die Schrittweite gleich eins ist, wobei abgeschlossene L2-Cachezeilen modifiziert werden.
  • Wo ein L2-Cachetreffer erfolgt, ermöglicht der Einsatz von Element-Speichervorgängen eine maximale Speichervorgang-Geschwindigkeit von einem Element alle zwei Zyklen, wobei natürlich vorausgesetzt wird, daß der Prozessor für jeden verfügbaren Zyklus die Priorität erhält. Im schlechtesten Fall ist garantiert, daß der Prozessor einen von jeweils drei Prioritätszyklen gewinnt, woraus sich eine Speichervorgang-Geschwindigkeit von einem Element alle sechs Zyklen ergibt. Für sequentielle Speichervorgänge (sowohl Teilzeilen- als auch Vollzeilen-Speicher- Vorgänge) beträgt die Speichervorgang-Geschwindigkeit ein Element pro Zyklus. Dies ist von der Aktivität der anderen Prozessoren im L2-Cache im wesentlichen unabhängig, da die meisten Speicherungsanforderungen keinen Zugriff auf den L2-Cache benötigen. Für jeweils 128 im L2-Cache gespeicherte Bytes sind nur fünf L2-Cache-Zyklen erforderlich: zwei für die einleitende Prüfung der L2-Cachezeile und drei für den eigentlichen Schreibvorgang der Zeile in den L2-Cache.
  • Zur Unterstützung von Vektorelement-Schreibvorgängen wird ein spezielles Bit in die Speicherwarteschlange gestellt, um anzuzeigen, daß es sich um eine Anforderung für einen nicht-sequentiellen Vektor-Speichervorgang handelt. In der L1-Speicherwarteschlange wird der Übertragungszeiger nicht aktualisiert, wodurch verhindert wird, daß diese Anforderung zum L2-Cache übertragen wird, bevor die Daten vom Vektorprozessor empfangen wurden. In der Anforderungspriorität für den L2-Cache erscheint die nicht-sequentielle Vektor-Speicherung als eine nicht-sequentielle Prozessor-Speicherung mit "End-of-Operation", wodurch sie zu einem bearbeitungsfähigen Speichervorgang wird, sobald sie in die L2-Speicherwarteschlange eingegliedert wurde.
  • Die Vektor-Zeilenspeichervorgänge erfordern die Einfügung von Steuerbits für die Einträge in der Speicherwarteschlange, um anzuzeigen, daß die Speicherungsanforderungen Vektor-Speichervorgänge sind, die sequentielle Teilzeilen-Speicherungsanforderungen oder sequentielle Vollzeilen-Speicherungsanforderungen sind. Auch erzeugt die Rardware zur Verarbeitung sequentieller Speichervorgänge der L2-Speicherwarteschlange ein internes "End- of-Operation" bei jeder Überschreitung einer 256-Byte-Speichergrenze. Das "Nicht-vorhanden"-Bit wird während der Vollzeilen- Verarbeitung genutzt, um die Nachteile einzuschränken, die mit L2-Cache-Mißerfolgen verbunden sind.
  • In Fig. 9 ist das Zeitsteuerungsdiagramm für einen Vektorprozessor-Elementabrufs mit einem L2-Cachetreffer dargestellt. Die Zeitsteuerung und die Signalfolge ist für die verschiedenen zuvor beschriebenen Signale dargestellt.

Claims (9)

1. Speichersubsystem für den Einsatz in einer Datenverarbeitungsanlage mit
einer Zentraleinheit,
einer Hauptspeichereinheit (10),
einem Datencache (26), der sich zwischen der Zentraleinheit und der Hauptspeichereinheit (10) befindet,
einem Cache-Datenübertragungsmittel zum Übertragen von Daten von dem Datencache (26) zu der Hauptspeichereinheit (10) und
einem Paritätsprüfmittel, das mit dem Cache-Datenübertragungsmittel verbunden ist, zum Prüfen der Parität der Daten, die von dem Datencache (26) zu der Hauptspeichereinheit (10) zu übertragen sind,
gekennzeichnet durch
ein Dateninvertierungsmittel, das mit dem Paritätsprüfmittel und dem Cache-Datenübertragungsmittel verbunden ist, zum Ihvertieren der Daten, die vom Datencache (26) zur Hauptspeichereinheit (10) übertragbar sind, und
ein Datenschreibmittel, das mit dem Dateninvertierungsmittel und dem Datencache (26) verbunden ist, zum Zurückschreiben der invertierten Daten in den Cache von der Position aus, von der sie ausgegangen sind.
2. Speichersubsystem nach Anspruch 1, weiter dadurch gekennzeichnet, daß
die Hauptspeichereinheit (10) realen Speicher (601) und Erweiterungsspeicher (610) enthält, wobei die Hauptspeichereinheit (10) weiter verfügt über
einen Speicherpuffer, der zwischen dem realen Speicher (601) und dem Erweiterungsspeicher (610) angeschlossen ist,
ein erstes Datenübertragungsmittel, um die Daten aus dem Erweiterungsspeicher (610) zu holen und die geholten Daten in den Speicherpuffer zu laden, und
ein zweites Datenübertragungsmittel, um die Daten aus dem Speicherpuffer zu holen und die geholten Daten in den realen Speicher (601) zu laden.
3. Speichersubsystem nach Anspruch 2, weiter gekennzeichnet durch
ein drittes Datenübertragungsmittel, um Daten aus dem realen Speicher (601) zu holen und die geholten Daten in den Speicherpuffer zu laden, und
ein viertes Datenübertragungsmittel, um Daten aus dem Speicherpuffer zu holen und die geholten Daten in den erweiterten Speicher (610) zu laden.
4. Speichersubsystem nach einem der obigen Ansprüche, weiter gekennzeichnet durch
ein Speicherkonsistenzmittel, um die Datenkonsistenz zwischen der Hauptspeichereinheit (10) und dem Datencache (26) aufrechtzuerhalten.
5. Speichersubsystem nach einem der obigen Ansprüche, wobei
der Datencache (26) und der Speicherpuffer die gleiche Kapazität haben.
6. Speichersubsystem nach einem der obigen Ansprüche, weiter dadurch gekennzeichnet, daß
die Zentraleinheit einen Vektorprozessor (22) enthält, wobei
Mittel zur Verfügung stehen, um im Auftrag des Vektorprozessors (22) einen Datenholbefehl an den Datencache (26) oder die Hauptspeichereinheit (10) auszugeben.
7. Verfahren zur Berichtigung von Daten, die von einem Datencache (26) zu einer Hauptspeichereinheit (10) in einer Datenverarbeitungsanlage zu übertragen sind, mit den folgenden Schritten:
ein erster Schritt, in dem die Daten an einer Ausgangsposi tion aus dem Datencache (26) ausgelesen werden,
ein zweiter Schritt, in dem die Parität der Daten aus der Ausgangsppsition geprüft wird,
ein dritter Schritt, in dem die Daten aus der Ausgangsposition invertiert werden, falls die Paritätsprüfung einen Fehler in den Daten anzeigt, und in dem andernfalls die Daten in die Hauptspeichereinheit (10) geschrieben werden,
ein vierter Schritt, in dem die invertierten Daten an der Ausgangsposition in den Datencache (26) geschrieben werden,
ein fünfter Schritt, in dem die invertierten Daten erneut aus der Ausgangsposition gelesen werden,
ein sechster Schritt, in dem die invertierten Daten re-invertiert werden,
ein siebenter Schritt, in dem die re-invertierten Daten in die Hauptspeichereinheit (10) geschrieben werden.
8. Verfahren nach Anspruch 7, wobei der siebente Schritt folgendes umfaßt:
Schreiben der Datenin einen Seitenauslagerungspuffer und
Einlesen der Daten aus dem Seitenauslagerungspuffer in die Hauptspeichereinheit.
9. Verfahren nach Anspruch 7 oder 8, wobei während des fünften Schritts keine Paritätsprüf-Operation durchgeführt wird.
DE68924501T 1988-06-28 1989-04-18 Speichersubsystem mit Fehlerkorrekturcache-Speicher. Expired - Fee Related DE68924501T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US21243288A 1988-06-28 1988-06-28

Publications (2)

Publication Number Publication Date
DE68924501D1 DE68924501D1 (de) 1995-11-16
DE68924501T2 true DE68924501T2 (de) 1996-06-13

Family

ID=22790982

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68924501T Expired - Fee Related DE68924501T2 (de) 1988-06-28 1989-04-18 Speichersubsystem mit Fehlerkorrekturcache-Speicher.

Country Status (4)

Country Link
EP (1) EP0348616B1 (de)
JP (1) JPH0245845A (de)
BR (1) BR8903173A (de)
DE (1) DE68924501T2 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5269009A (en) * 1990-09-04 1993-12-07 International Business Machines Corporation Processor system with improved memory transfer means
US5717895A (en) * 1994-12-01 1998-02-10 Cray Research, Inc. Associative scalar data cache with write-through capabilities for a vector processor
JP3153765B2 (ja) * 1996-06-24 2001-04-09 矢崎総業株式会社 平型回路体とコネクタの接続構造
GB2390700B (en) 2002-04-15 2006-03-15 Alphamosaic Ltd Narrow/wide cache
US6922754B2 (en) 2002-12-09 2005-07-26 Infabric Technologies, Inc. Data-aware data flow manager
DE102012203640A1 (de) 2012-03-08 2013-09-12 Robert Bosch Gmbh Verfahren zum Lösen einer Rückhalteeinrichtung für einen Aufsaßen auf einem Fahrzeug und ein diesbezügliches Fahrzeug
US11296467B2 (en) 2012-11-06 2022-04-05 Server Technology, Inc. High outlet density power distribution unit
US9477550B2 (en) 2013-10-24 2016-10-25 Globalfoundries Inc. ECC bypass using low latency CE correction with retry select signal

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4084236A (en) * 1977-02-18 1978-04-11 Honeywell Information Systems Inc. Error detection and correction capability for a memory system
US4445174A (en) * 1981-03-31 1984-04-24 International Business Machines Corporation Multiprocessing system including a shared cache
JPS60138653A (ja) * 1983-12-27 1985-07-23 Hitachi Ltd 階層記憶制御方式
JPS61169949A (ja) * 1985-01-22 1986-07-31 Fujitsu Ltd バツフアメモリ制御方式
JPS6237754A (ja) * 1985-08-13 1987-02-18 Fujitsu Ltd 仮想拡張記憶方式

Also Published As

Publication number Publication date
EP0348616A3 (de) 1991-03-13
BR8903173A (pt) 1990-03-06
DE68924501D1 (de) 1995-11-16
JPH0245845A (ja) 1990-02-15
JPH0574101B2 (de) 1993-10-15
EP0348616B1 (de) 1995-10-11
EP0348616A2 (de) 1990-01-03

Similar Documents

Publication Publication Date Title
DE68922326T2 (de) Speicherwarteschlange für eine festgekoppelte Mehrprozessorenkonfiguration mit einem zweistufigen Cache-Pufferspeicher.
DE68923490T2 (de) Prüfpunkt-Wiederholungssystem.
US6161208A (en) Storage subsystem including an error correcting cache and means for performing memory to memory transfers
US5276848A (en) Shared two level cache including apparatus for maintaining storage consistency
DE68926385T2 (de) Methode und Hardware-Ausführung von komplexen Datentransferbefehlen
DE69127726T2 (de) Kombinierte Warteschlange für Entwertungen und Rücklaufdaten in einem Multiprozessorsystem
DE69127111T2 (de) Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher
DE69031433T2 (de) Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher
DE69127936T2 (de) Busprotokoll für Prozessor mit write-back cache
DE68917325T2 (de) Verfahren und Vorrichtung zum Schreiben gegenseitiger verriegelter Variablen in einen integrierten Cachespeicher.
DE3854368T2 (de) Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler.
DE3688978T2 (de) Seitenspeicherverwaltungseinheit mit der fähigkeit nach wahl mehrere adressräume zu unterstützen.
DE4218003C2 (de) Cache-Steuereinrichtung für ein sekundäres Cache-Speichersystem
DE10296989B4 (de) Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms
DE68926059T2 (de) Organisation einer integrierten Cache-Einheit zur flexiblen Verwendung beim Entwurf von Cache-Systemen
DE3587439T2 (de) Gemeinsam benutzter Mehrprozessor-Pipeline-Cachespeicher.
DE69029995T2 (de) Multiprozessor mit relativ atomaren Befehlen
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE69029173T2 (de) Mikroprozessor
DE69025658T2 (de) Verfahren zur Verbesserung der Leistung eines mehrstufigen Cachespeichers durch erzwungene Fehlgriffe
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE68925470T2 (de) Verfahren zum Abrufen von potentiell ungültigen Daten in einem Mehrrechnersystem
DE102016219651A1 (de) Für Vorabzugriff unempfindlicher transaktionsgebundener Speicher
DE112005003339T5 (de) Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung

Legal Events

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