DE69232881T2 - Verbesserter Digitalprozessor mit verteiltem Speichersystem - Google Patents

Verbesserter Digitalprozessor mit verteiltem Speichersystem

Info

Publication number
DE69232881T2
DE69232881T2 DE69232881T DE69232881T DE69232881T2 DE 69232881 T2 DE69232881 T2 DE 69232881T2 DE 69232881 T DE69232881 T DE 69232881T DE 69232881 T DE69232881 T DE 69232881T DE 69232881 T2 DE69232881 T2 DE 69232881T2
Authority
DE
Germany
Prior art keywords
page
processing
cell
cache
digital data
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
DE69232881T
Other languages
English (en)
Other versions
DE69232881D1 (de
Inventor
Mark A. Kaufman
Fernando Oliveira
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE69232881D1 publication Critical patent/DE69232881D1/de
Application granted granted Critical
Publication of DE69232881T2 publication Critical patent/DE69232881T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/27Using a specific cache architecture
    • G06F2212/272Cache only memory architecture [COMA]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Image Input (AREA)
  • Memory System (AREA)

Description

    Hintergrund der Erfindung
  • Die vorliegende Erfindung bezieht sich auf die digitale Datenverarbeitung und genauer gesagt auf das Verschieben und Zuordnen von Daten innerhalb eines verteilten Speichersystems.
  • Physikalischer Hochgeschwindigkeitsspeicherraum in Computersystemen steht nur begrenzt zur Verfügung. Programme, die mit solchen Systemen laufen, erfordern oftmals einen Zugriff auf mehr Daten als diejenigen, die in die Hochgeschwindigkeitsspeicher passen, die als Random Access Memory oder RAM (Speicher mit wahlweisem Zugriff) bezeichnet werden. Manchmal benötigen die Programme selbst - nicht nur die Daten, die sie verarbeiten - mehr Speicher als auf dem System verfügbar ist.
  • Frühe Programme haben Daten verwaltet bzw. verarbeitet, indem sie sie direkt zwischen dem Speicher und der Festplatte nach Bedarf verschoben haben. Dies erforderte nur wenig Speicher - lediglich den Speicherplatz, der benötigt wurde, um die gerade in Verarbeitung befindlichen Daten zu speichern -, hat jedoch die Verarbeitung verlangsamt, indem häufige Festplattenzugriffe erforderlich waren. Einige Verbesserungen wurden erreicht durch den Zugriff auf Daten in Blöcken, Lesen großer Mengen von Daten aus einer Festplatte in Arrays bzw. Speicherfelder, Verarbeiten dieser Arrays und dann Schreiben derselben zurück auf die Festplatte.
  • Mit dem Erscheinen von Verwaltungssystemen für virtuelle Speicher sind Datenverwaltungsfunktionen und Betriebssystemsoftware des Computers übernommen worden. Programme, die für die Verwendung mit diesen Systemen geschrieben wurden, rufen große Mengen an Daten auf, als wenn sie vollständig in dem Speicher (Arbeitsspeicher) gespeichert wären. Oftmals ist dies nicht der Fall: Das virtuelle Speichersystem verschiebt seinerseits Daten zwischen dem physikalischen Speicher (Arbeitsspeicher) und der Festplatte hin und her.
  • Die Datenverwaltung und -zuordnung wird zunehmend komplizierter in Computersystemen, die verteilte Speicher verwenden, das heißt eine Mehrzahl verschiedener bzw. getrennter Speicherelemente, welche Daten von einem oder mehreren Prozessoren speichern. Ein Beispiel eines solchen Systems wird offenbart durch Frank et al., US-Patentanmeldung mit der Seriennummer 136,930, eingereicht am 22. Dezember 1987 (US 5 555 999, entsprechend EP-A-0 322 117). Darin heißt es, daß ein digitales Datenverarbeitungssystem eine Mehrzahl von Verarbeitungszellen aufweisen soll, die in einer Hierarchie von Ringen angeordnet sind. Die Verarbeitungszellen umfassen zentrale Verarbeitungseinheiten, die mit den Speicherelementen verbunden sind. Gruppen von Zellen sind entlang unidirektionaler Ringbusse miteinander verbunden, um Einheiten zu bilden, die als Segmente bezeichnet werden. Kommunikation zwischen Zellen unterschiedlicher Domäne(0)- Segmente wird ausgeführt auf Informationsübertragungsdomänen höherer Ebene. Diese Domänen höherer Ebene bestehen ihrerseits aus einem oder mehreren Segmenten, welche jeweils eine Mehrzahl von Routingelementen aufweisen, die über einen unidirektionalen Ringbus miteinander verbunden sind.
  • Ein System des durch Frank et al. beschriebenen Typs erfordert kein Hauptspeicherelement, das heißt ein Speicherelement, welches mit vielen Prozessoren des Systems verbunden ist und von diesen gemeinsam verwendet wird. Stattdessen sind die von dem System bereitgehaltenen Daten zwischen den Speicherelementen, die diesen Prozessoren zugeordnet sind, verteilt, und zwar sowohl auf exklusiver als auch auf geteilter (gemeinsam verwendeter) Basis. Modifikationen an exklusiv in irgendeiner Verarbeitungszelle gespeicherten Daten müssen nicht über die Busstruktur an andere Speicherbereiche mitgeteilt werden. Dementsprechend müssen nur diejenigen Daten, welche die Prozessoren dynamisch gemeinsam verwenden, beispielsweise die gemeinsame Verwendung durch das Ausführungsprogramm selbst gefordert wird, müssen entlang der Busstruktur übermittelt werden.
  • Auch wenn das System von Frank et al. Mechanismen bereitstellt, wie z. B. die "Recombine"- (Rekombinations-) Operation für das Zuordnen von Daten in dem System, sind dennoch weitere Fortschritte auf diesem Gebiet wünschenswert.
  • Dementsprechend ist es eine Aufgabe der vorliegenden Erfindung, ein verbessertes digitales Datenverarbeitungssystem bereitzustellen. Genauer gesagt ist es eine Aufgabe der Erfindung, ein digitales Datenverarbeitungssystem mit verteiltem Speicher mit einer verbesserten Speicherverwaltung bereitzustellen.
  • Eine weitere Aufgabe der Erfindung liegt darin, einen Mechanismus zum Verwalten von Daten in effizienter Weise und unter Reduzierung des Seitenwechsels bzw. der Seitenverwaltung in einem verteilten Speichersystem bereitzustellen.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung stellt einen digitalen Datenprozessor gemäß den anhängenden Ansprüchen bereit. Eine Ausführungsform der Erfindung sieht ein digitales Datenverarbeitungssystem mit einem geteilten bzw. gemeinsam verwendeten, verteilten Speicher vor, der Daten zwischen entsprechenden Datensätzen innerhalb des Speichers überträgt bzw. verschiebt.
  • Genauer gesagt sieht eine Ausführungsform der Erfindung einen digitalen Datenprozessor vor, der eine Mehrzahl von Verarbeitungszellen hat, die beispielsweise durch ein hierarchisches Netzwerk miteinander verbunden sind. Jede der Verarbeitungszellen umfaßt eine zentrale Verarbeitungseinheit und ein Speicherelement. Der Speicherraum innerhalb jedes Speichers ist in Sätzen angeordnet, die jeweils eine Mehrzahl von Datenseiten halten können. Beispielsweise kann jeder Satz Seiten halten, die gemeinsame Adreßbits höherer Ordnung haben.
  • Zumindest eine erste Verarbeitungszelle weist eine Seitenverteileinrichtung auf, um festzustellen, wann zumindest ein erster Satz in dem zugehörigen Speicher einen vorbestimmten Speichereinsatzzustand erreicht hat - beispielsweise wenn der Satz gefüllt ist. Unter einem solchen Zustand ruft die Seitenverteilungseinrichtung ein Seitenübertragungselement auf, welches eine vorgesehene Verarbeitungszelle (Verarbeitungszell-Kandidat) unter den übrigen Zellen auswählt und eine oder mehrere Seiten von dem ersten Satz zu einem entsprechenden Satz in dem Zellkandidaten überträgt.
  • Nach einem damit zusammenhängenden Aspekt der Erfindung erzeugt das Seitenübertragungselement ein Signal auf dem Netzwerk und übermittelt dieses, welches eine Anforderung nach dem Transfer von Seiten von dem ersten Satz repräsentiert. In entsprechender Weise beinhaltet der Verarbeitungszellkandidat ein Element der Besitzübernahme, um auf die Übertragungsanforderung zu reagieren und eine Anforderung nach Besitzerzugriff auf die Seite zu erzeugen.
  • Steuereinheiten, die mit den ersten und zweiten Verarbeitungszellen verbunden sind, reagieren auf diese Besitzanforderung, um innerhalb des entsprechenden Satzes des Speichers des Zellkandidaten exklusiv physikalischen Speicherraum für die zu übertragenden Seiten zuzuordnen, diese Seiten in den zugeordneten Speicherraum zu übertragen und die Zuordnung des physikalischen Speicherraums aufzuheben, der zuvor die übertragenen Seiten in dem ersten Satz gespeichert hat (oder diesen Raum für eine neue Zuordnung verfügbar zu machen).
  • Gemäß einem anderen Aspekt der Erfindung erzeugt die zentrale Verarbeitungseinheit der ersten Verarbeitungszelle eine lokale Anforderung für den Zugriff auf eine Seite. Die Steuereinheit reagiert auf zumindest ausgewählte dieser Anforderungen - beispielsweise Anforderungen, die eine Zuordnung einer Seite in einem Satz erfordern, welcher bereits voll ist -, um ein Signal "Zeile voll" zu erzeugen. Ein Zeile-voll-Element in dem Seitenverteilungselement reagiert auf den Zeile-voll- Zustand durch Aufrufen der Seitenübertragungseinrichtung.
  • Gemäß einem anderen Aspekt umfaßt ein digitaler Datenprozessor des oben beschriebenen Typs eine Tabelle für das Speichern eines Einsatzzustandes der Sätze in den Verarbeitungszellspeichern. Einträge höherer Ebene innerhalb der Tabelle entsprechen den Sätzen, während solche auf niedriger Ebene den Zustand dieses Satzes in einem speziellen Speicherelement wiedergeben.
  • Das Seitenverteilelement kann auf vorbestimmte Parameter reagieren, um zu bestimmen, welche Seiten in dem ersten Satz zu übertragen sind. Diese Parameter können beispielsweise die Auswahl bestimmter modifizierter Seiten, für welche keine Unterseiten in einem Untercache sind, für die Übertragung aufrufen.
  • Weiterhin kann ein (fest) installierter Seitenmechanismus verwendet werden, um zu verhindert, daß ausgewählte Seiten innerhalb eines Satzes für eine Übertragung bzw. einen Transfer ausgewählt werden. Dieses Merkmal kann beispielsweise verwendet werden, um sicherzustellen, daß Speicherraum für kritische Funktionen und Daten des Betriebssystems reserviert wird.
  • Darüber hinaus kann das Seitenverteilelement die Zelle bestimmen, an welche die Übertragungsanforderung gesendet werden soll, ebenso wie die Seiten, die zu übertragen sind, und zwar auf der Basis von vorbestimmten Parametern. Die Zellkandidaten können beispielsweise auf der Basis ihrer ordentlichen Anordnung im Verhältnis zu der Zelle ausgewählt werden, die versucht, Seiten zu übertragen.
  • Gemäß einem weiteren Aspekt der Erfindung kann für den Fall, daß die erste Verarbeitungszelle nicht in der Lage ist, Seiten von einem allzusehr beanspruchten Satz innerhalb einer ausgewählten Zeitdauer zu übertragen, sie diese Seiten direkt auf die Festplatte oder eine andere sekundäre Speichereinrichtung übertragen.
  • Diese und andere Aufgaben werden aus den Figuren und der folgenden Beschreibung offensichtlich.
  • Kurze Beschreibung der Figuren
  • Ein vollständigeres Verständnis der Erfindung kann man erhalten unter Bezug auf die Zeichnungen, von denen:
  • Fig. 1 die Struktur eines Systems mit mehreren Prozessoren für die Verwendung in einer bevorzugten Ausführung der Erfindung zeigt,
  • Fig. 2A-2B eine bevorzugte Speicherkonfiguration und Datenverwaltungsoperation für den Mehrfachprozessor nach Fig. 1 zeigen,
  • Fig. 3 eine bevorzugte Konfiguration für ein beispielhaft dargestelltes Ebene: 0-Segment des Systems mit mehreren Prozessoren (Mehrprozessorsystem bzw. Mehrfachprozessor) nach Fig. 1 zeigt,
  • Fig. 4 einen bevorzugten Aufbau für Verarbeitungszellen des Mehrprozessorsystems nach Fig. 1 zeigt,
  • Fig. 5 einen bevorzugten Aufbau eines Cacheverzeichnisses des Mehrprozessorsystems nach Fig. 1 zeigt,
  • Fig. 6 eine bevorzugte Datenstruktur für die Überwachung des Zustandes der Cachezeile (oder jedes Speichersatzes) auf jeder Zelle in dem Mehrprozessorsystem nach Fig. 1 zeigt,
  • Fig. 7 eine bevorzugte Sequenz von Schritten zeigt, die durch eine Prozessorzelle unternommen werden, um eine Ausnahme "Cachezeile voll" in dem Mehrprozessorsystem nach Fig. 1 zu handhaben, und
  • Fig. 8 bis 11 eine bevorzugte Sequenz von Schritten zeigen, die von einer Verarbeitungszelle vorgenommen werden, um Seiten von einer Cachezeile in einer Zelle zu einer anderen Zelle in dem Mehrprozessorsystem nach Fig. 1 zu übertragen.
  • Fig. 12 zeigt eine bevorzugte Sequenz von Schritten, die von einer Verarbeitungszelle durchlaufen werden, um "installierte" Seiten zwischen Zellen in dem Mehrprozessorsystem nach Fig. 1 zu übertragen.
  • Genaue Beschreibung der dargestellten Ausführungsform
  • Fig. 1 zeigt ein bevorzugtes Multiprozessorsystem, welches verwendet wird, um die Erfindung auszuführen. Das dargestellte System beinhaltet drei Ebenen der Informationsübertragung: Ebene: 0, Ebene: 1, und Ebene: 2. Jede Informationsübertragungsebene beinhaltet ein oder mehrere Ebenensegmente, die gekennzeichnet sind durch ein Buselement und eine Mehrzahl von Schnittstellenelementen. Insbesondere beinhaltet die Ebene: 0 des dargestellten Systems 10 sechs Segmente, die als 12A, 12B, 12C, 12D, 12E bzw. 12F bezeichnet werden. In ähnlicher Weise beinhaltet die Ebene: 1 Segmente 14A und 14B, während die Ebene: 2 das Segment 16 beinhaltet.
  • Jedes Segment der Ebene: 0, das heißt die Segmente 12A, 12B, ...., 12F, weisen eine Mehrzahl von Verarbeitungszellen bzw. Prozessorzellen auf. Beispielsweise enthält das Segment 12A die Zellen 18A, 18B und 18C, das Segment 12B beinhaltet die Zellen 18D, 18E und 18F, usw. Jede dieser Zellen beinhaltet eine zentrale Verarbeitungseinheit und ein Speicherelement, die über einen intrazellulären Prozessorbus (nicht dargestellt) miteinander verbunden sind. Gemäß der bevorzugten Ausführungsform der Erfindung speichert das Speicherelement, welches in jeder Zelle enthalten ist, alle Steuer- und Datensignale, die von der ihr zugeordneten zentralen Prozessoreinheit verwendet werden.
  • Bestimmte Zellen des Verarbeitungssystems 10 sind mit sekundären Speichereinrichtungen verbunden. In dem dargestellten System ist beispielsweise die Zelle 18C mit dem Plattenlaufwerk 19A verbunden, die Zelle 18D ist mit dem Plattenlaufwerk 19B verbunden, und die Zelle 180 ist mit dem Plattenlaufwerk 19C verbunden. Die Plattenlaufwerke 19A-19G sind von konventioneller Gestaltung und können aus irgendeiner von mehreren kommerziell erhältlichen Einrichtungen ausgewählt werden. Es versteht sich, daß auch sekundäre Speichereinrichtungen, die keine Plattenlaufwerke sind, also z. B. Bandlaufwerke, ebenso für die Speicherung der Information verwendet werden können.
  • Wie weiterhin dargestellt ist, kann jedes Segment der Ebene: 0 dadurch gekennzeichnet sein, daß es ein Buselement hat, welches einen Kommunikationspfad für das Übertragen von Informationspaketen zwischen den Zellen des Segmentes bereitstellt. Demnach ist das dargestellte Segment 12A gekennzeichnet durch den Bus 20A, das Segment 12B durch 20B, das Segment 12C durch 20C etc. Wie unten noch genauer beschrieben wird, werden digitale Informationspakete zwischen den Zellen 18A, 18B und 18C des beispielhaft dargestellten Segmentes 12A über die Speicherelemente geleitet, die jeder dieser Zellen zugeordnet sind. Spezielle Schnittstellen zwischen diesen Speicherelementen und dem Bus 20A werden bereitgestellt durch die Zellschnittstelleneinheiten 22A, 22B und 22C, wie dargestellt. Ähnliche direkte Kommunikationswege werden bereitgestellt in den Segmenten 12B, 12C und 12D zwischen ihren jeweiligen Zellen 18D, 18E, ... 18R durch Zellenschnittstelleneinheiten 22D, 22E, ... 22R, wie dargestellt.
  • Wie in der Darstellung gezeigt und oben erwähnt, weisen die verbleibenden Informationsübertragungsebenen, das heißt die Ebene: 1 und die Ebene: 2 jeweils ein oder mehrere entsprechende Ebenensegmente auf. Die Anzahl von Segmenten in jedem nachfolgenden Segment ist kleiner als die Anzahl der Segmente in dem vorhergehenden. Demnach ist also die Anzahl der beiden Segmente 14A und 14B der Ebene: 1 kleiner als die Zahl der sechs Segmente 12A, 128, ... 12F der Ebene: 0, wohingegen die Ebene: 2 nur ein Segment 16 hat und damit die geringste Zahl von allen aufweist. Jedes der Segments in der Ebene: 1 und der Ebene: 2, den "höheren" Ebenen, umfaßt ein Buselement für das Übertragen von Paketen innerhalb der jeweiligen Segmente. In der Darstellung umfassen die Segmente 14A und 14B der Ebene: 1 Buselemente 24A bzw. 24B, während das Segment 16 der Ebene: 2 das Buselement 26 umfaßt. Die Leitungs- bzw. Routing-Zellen ihrerseits stellen einen Mechanismus für das Übertragen von Information zwischen zugehörigen Segmenten aufeinanderfolgender Ebenen bereit. Die Routing-Zellen 28A, 28B und 28C stellen beispielsweise eine Einrichtung zum Übertragen von Information zu und von dem Ebene: 1-Segment 14A und jedem der Segmente 12A, 12B bzw. 12C der Ebene: 0 bereit. In ähnlicher Weise stellen die Routing-Zellen 28D, 28E und 28F eine Einrichtung zum Übertragen von Information zu und von dem Segment 14B der Ebene: 1 und jedem der Segmente 12D, 12E bzw. 12F der Ebene: 0 bereit. Weiterhin stellen die Routing-Zellen 30A und 30B einen Informationsübertragungspfad zwischen dem Segment 16 der Ebene: 2 und den Segmenten 14A und 14B der Ebene: 1 bereit, wie dargestellt.
  • Die Routing-Zellen bilden Schnittstellen für ihre jeweiligen Segmente über Zwischenverbindungen bzw. Anschlüsse an den Buselementen. Demnach bildet die Routing-Zelle 28A eine Schnittstelle zu den Buselementen 20A und 24A an den Ringverbindungen 32A bzw. 34A, während das Element 28B eine Schnittstelle bildet für die Buselemente 20B bzw. 24B an den Ringverbindungen 32B bzw. 34B, usw. In ähnlicher Weise bilden die Zellen 30A und 30B Schnittstellen für ihre entsprechenden Busse, das heißt 24A, 24B und 26, an den Ringanschlüssen 36A, 36B, 38A und 38B, wie dargestellt.
  • Datenbewegung und -kohärenz
  • Fig. 2A veranschaulicht einen Mechanismus für die Datenbewegung innerhalb des Verarbeitungssystems nach Fig. 1 für die Sicherstellung einer Datenkohärenz. In der Figur sind mehrere zentrale Prozessoreinheiten 40(A), 40(B) und 40(C) jeweils mit zugehörigen Speicherelementen 42(A), 42(B) und 42(C) verbunden. Kommunikationen zwischen den Arbeits- und Speichereinheiten jedes Paares erfolgen über die Busse 44A, 44B und 44C, wie dargestellt. Das Netzwerk 46, welches die zuvor erwähnten Ebenensegmente und Routing-Zellen repräsentiert, überträgt Informationspakete (die über Busse 48(A), 48(B) und 48(C) an das Netzwerk 46 geleitet werden) zwischen den dargestellten Verarbeitungszellen 42A-42C.
  • In der dargestellten Ausführungsform umfassen die zentralen Prozessoreinheiten 40A, 40B und 40C jeweils ein Zugriffsanforderungselement, welches mit 50A, 50B bzw. 50C bezeichnet ist. Diese Zugriffsanforderungselemente erzeugen Anforderungen für einen Zugriff auf Daten, die in den Speicherelementen 42A, 42B und 42C gespeichert sind. Unter den Zugriffsanforderungssignalen, die von den Elementen 50A, 50B und 50C erzeugt werden, befindet sich die Besitzanforderung, die eine Anforderung nach exklusivem Modifizierungszugriff auf Daten repräsentiert, die in den Speicherelementen gespeichert sind. In einer bevorzugten Ausführungsform weisen die Zugriffsanforderungselemente 50A, 50B und 50C einen Teilsatz des Befehlssatzes auf, der auf den CPUs 40A, 40B und 40C implementiert ist. Dieser Befehlsteilsatz wird unten noch beschrieben.
  • Die zentralen Prozessoreinheiten 40A, 40B, 40C arbeiten unter der Steuerung eines Betriebssystems 51, von welchem Teile 51A, 51B und 51C auf entsprechenden der zentralen Prozessoreinheiten resident sind. Das Betriebssystem 51 liefert eine Schnittstelle zwischen Anwendungsprogrammen, die auf den zentralen Prozessoreinheiten und den Einrichtungen des Systems 10 laufen, und umfaßt ein Verwaltungssystem für virtuellen Speicher für die Handhabung von Datenzugriffen und -zuordnungen.
  • Ein bevorzugtes Betriebssystem zum Steuern der zentralen Prozessoreinheiten 40A, 40B und 40C ist ein UNIX-artiges Betriebssystem und vorzugsweise OSF/1, welches gemäß der hier erläuterten Lehre modifiziert ist.
  • Die Speicherelemente 40A, 40B und 40C umfassen Cache-Steuereinheiten 52A, 52B bzw. 52C. Jede dieser Cache-Steuereinheiten bildet eine Schnittstelle für einen Datenspeicherbereich 54A, 54B und 54C über ein entsprechendes Verzeichniselement 56A, 56B und 56C, wie dargestellt. Speicher 54A, 54B und 54C werden von dem dargestellten System verwendet, um physikalischen Speicherraum für Daten und Befehlssignale bereitzustellen, die von ihren jeweiligen zentralen Prozessoreinheiten benötigt werden. Demnach hält der Speicher 54A Daten und Steuerinformation bereit, die von der CPU 40A verwendet wird, während die Speicher 54B und 54C Information bereithalten, die von den zentralen Prozessoreinheiten 40B bzw. 40C verwendet werden. Die in jedem der Speicher bereitgehaltenen Daten werden durch eindeutige Deskriptoren identifiziert, welche Systemadressen entsprechen. Diese Deskriptoren werden auf Adreßspeicherplätzen des entsprechenden Verzeichnisses gespeichert. Während die Deskriptoren als eindeutig angesehen werden, können Mehrfachkopien einiger Deskriptoren in den Speicherelementen 42A, 42B und 42C existieren, wo diese Kopien ihrerseits Kopien desselben Datenelementes identifizieren.
  • Zugriffsanforderungen, die von den zentralen Prozessoreinheiten 40A, 40B und 40C erzeugt werden, umfassen, zusammen mit anderer Steuerinformation, einen Deskriptor- oder SVA-(System Virtual Address - virtuelle Systemadresse) Anforderungsabschnitt, der mit demjenigen der angeforderten Daten zusammenpaßt. Die Cache-Steuereinheiten 52A, 52B und 52C reagieren auf Zugriffsanforderungen, die von ihren jeweiligen zentralen Prozessoreinheiten 40A, 40B und 40C erzeugt wurden, indem sie bestimmen, ob die angefragten Daten in dem entsprechenden Speicherelement 54A, 54B und 54C gespeichert sind. Wenn dies der Fall ist, so wird dieser Informationsgegenstand für die Verwendung durch den anfordernden Prozessor übertragen. Falls nicht, übermittelt die Cache-Steuereinheit 52A, 52B, 52C ein Paket, welches die Anforderung umfaßt, an das Netzwerk 46 über die Leitungen 48A, 48B und 48C.
  • Während dieses Paket innerhalb der Netzwerke läuft und insbesondere entlang der Ring: 0- Segmente überprüfen die Cache-Steuereinheiten in den Prozessorzellen ihre eigenen Verzeichnisse und leiten die angeforderten Daten, falls sie gefunden werden, in einem Antwortpaket. In ähnlicher Weise überprüft das Routing-Element sein Verzeichnis. Wenn dieses Verzeichnis zeigt, daß die angeforderten Daten in dem lokalen Ring in dem geeigneten Zugriffszustand vorhanden sind, so erlaubt die Routing-Zelle, daß das Anforderungspaket entlang des lokalen Ringbusses weiterläuft. Falls dies nicht der Fall ist, extrahiert die Routing-Zelle das Paket und leitet es an das zugeordnete Segment der Ebene: 1.
  • Das nicht aufgelöste Anforderungspaket läuft entlang des Ebene: 1-Segmentes in ähnlicher Weise, das heißt es wird mit den Verzeichnissen der zugehörigen Routing-Zellen der Ebene: 1 verglichen. Wenn eines dieser Verzeichnisse die angeforderten Daten in dem passenden Zugriffszustand in einem nachgeordneten Segment der Ebene: 0 auflistet, so wird die Anforderung an dieses Segment weitergeleitet. Ansonsten kann das Anforderungspaket in der Hierarchie zu einem höheren Ebene weiterlaufen, falls vorhanden, oder ohne Auflösen bzw. ohne Erledigung an den Anfordernden zurückgegeben werden.
  • Pakete, die angeforderte Daten enthalten, werden über verschiedene Mechanismen zurück zu den anfordernden Zellen geleitet. Ein erster Mechanismus bezieht sich auf die Adresse oder die ID der anfordernden Zelle. Hier umfaßt jede anfordernde Zelle innerhalb ihres Anforderungspaketes eine ID (Identitätskennzeichnung), welche diese Zelle eindeutig identifiziert. Wenn das Paket die reagierende Zelle erreicht, kopiert diese Zelle die ID des Anforderers zusammen mit den Daten und dem entsprechenden Deskriptor in das Antwortpaket. Wenn das Antwortpaket entlang der Segmentringe läuft, untersuchen die Routing-Zellen die ID des Anforderers, um zu bestimmen, ob die anfordernde Zelle sich in einem untergeordneten oder übergeordneten Segment befindet und leiten das Paket dementsprechend.
  • Ein zweiter Mechanismus wird in Verbindung mit Antwortpaketen verwendet, die Daten enthalten, welche von Verarbeitungszellen angefordert wurden, die jedoch nicht speziell in Antwort auf diese Anforderungen erzeugt wurden. Beispielsweise greift dieser Mechanismus in Fällen, in welchen zwei oder mehr Anforderungszellen Anforderungen nach Nur-Lese-Kopien spezieller Daten erzeugen, die in einer ferngelegenen Zelle enthalten sind.
  • In der Annahme, gemäß einer bevorzugten Ausführung der Erfindung, daß das Netzwerk verhindert, daß zumindest einige, jedoch nicht alle dieser Anforderungen eine Verarbeitungszelle erreichen, welche eine Kopie dieser Daten hat, erzeugt die antwortende Zelle Antwortpakete, die nur die Anforderungs-ID eines Anforderungspaketes tragen, das sie erreicht hat.
  • Datenkohärenz wird durch Zusammenarbeit der Verarbeitungszellen in Reaktion auf Datenanforderungen und -übertragungen aufrecht erhalten. Genauer gesagt ordnet gleichzeitig mit der Erzeugung eines Besitzzugriffs-Anforderungspaketes durch eine erste Verarbeitungszelle der zugeordnete Speicher seinem Speicher physikalischen Speicherraum zu, um die angeforderten Daten zu halten. In ähnlicher Weise hebt gleichzeitig mit der Übertragung von angeforderten Daten von der Verarbeitungszelle, in welcher sie zuvor gespeichert waren, der zugehörige Speicher den physikalischen Speicherraum auf, der zuvor für die Speicherung der angeforderten Daten zugewiesen war.
  • Diese kooperativen Vorgänge sind in den Fig. 2A und 2B veranschaulicht. In der ersten dieser Figuren werden DATUM(0), DATUM(1) und DATUM(2), welche Datenunterseiten repräsentieren, in dem Speicher des Speicherelementes 42A gehalten, der als Partner zu der CPU 40A gehört. Deskriptoren "foo", "bar" und "bas" entsprechen jeweils denjenigen Daten, die in dem Verzeichnis 56A gespeichert sind. Jeder derartige Deskriptor beinhaltet einen Zeiger, der die Stelle seines zugehörigen Informationssignales in dem Speicher 42A anzeigt.
  • Das Speicherelement 42B, welches als Partner zu der CPU 40 gehört, speichert DATUM(2) und DATUM(3), welche ebenfalls einer Datenunterseite entsprechen. Entsprechend jedem dieser Datenelemente werden Deskriptoren "car" und "bas" in dem Verzeichnis 56B gehalten. DATUM(2) und sein zugehöriger Deskriptor "bas" werden aus dem Speicher 42A kopiert und halten deshalb dieselben Etiketten.
  • Das in Fig. 2A dargestellte System speichert keinerlei Daten in dem Speicherelement 54C, welches als Partner zur CPU 40C gehört.
  • Fig. 2B veranschaulicht, wie Daten sich in Verbindung mit dem Besitztum daran durch eine Prozessorzelle bewegen, die noch keinen Zugriff auf diese Daten hat. Insbesondere zeigt die Darstellung die Bewegung von DATUM(0), im Anschluß an die Ausgabe einer nicht aufgelösten Anforderung nach dem Besitz daran durch die Verarbeitungszelle, die aus der CPU 40C und dem Speicher 42C gebildet wird. Zu Beginn ordnet die Cache-Steuereinheit 52C gleichzeitig mit der Anforderung physikalischen Speicherraum in dem Speicher 54C des Speicherelementes 42C zu.
  • Ein Antwortpaket, welches durch den Speicher 42A erzeugt wurde, überträgt die angeforderten Daten, DATUM(0), von dem Speicher 54A, wo sie zuvor gespeichert waren, in den Speicher 54C des Anfordernden. Gleichzeitig hebt die Cache-Steuereinheit 52A den Speicherraum im Speicher 54A auf, der zuvor die angeforderten Daten hielt. Zum selben Zeitpunkt bewirkt die Cache- Steuereinheit 52A ein Ungültigmachen des Deskriptors "foo" in dem Verzeichnis 56A, wo dieser zuvor verwendet worden war, um DATUM(0) im Speicher 54A zu identifizieren, während die Cache- Steuereinheit 52C denselben Deskriptor im Verzeichnis 56C erneut zuordnet, wo er im folgenden verwendet wird, um das Signal in dem Speicher 54C zu identifizieren.
  • Zusätzlich zu den Deskriptoren ordnen die Speicherelemente 42A-42C Zugriffszustandsinformation den Daten und Steuersignalen in ihren entsprechenden Speichern zu. Diese Zugriffszustände, die die Zustände Ungültig, Nur-Lese, Besitz- und Unteilbar umfassen, steuern die Art und Weise, in welcher bestimmte Prozessoren auf welche Daten zugreifen können. Daten, die in einem Speicherelement gespeichert werden, deren zugeordnete CPU einen Modifizierungszugriff über diese Daten hat, werden einem Besitzzustand zugeordnet. Dagegen werden Daten, welche in einem Speicherelement gespeichert sind, dessen zugehörige CPU keinen Prioritätszugriff über diese Daten hält, einem Nur-Lese-Zustand zugeordnet. Weiterhin wird vermeintlichen Daten, die zu "schlechten" Daten gehören, der Ungültigkeitszustand zugeordnet.
  • Ein weiteres Verständnis bevorzugter Strukturen (z. B. Cache-Steuereinheiten) für Datenbewegung und Speicherkohärenz in einem digitalen Datenverarbeitungssystem, welches gemäß der vorliegenden Erfindung aufgebaut ist, kann man unter Bezug auf die oben zitierten verwandten Anmeldungen erhalten, nämlich US SN 136,930, eingereicht am 22. Dezember 1987 (Anwaltsaktenzeichen KSP-001) und US SN 370,287, eingereicht am 22. Juni 1989 (Anwaltsaktenzeichen KSP- 007CP), US SN 521,798, eingereicht am 10. Mai 1990 (Anwaltsaktenzeichen KSP-011), US SN 531,506, eingereicht am 31. Mai 1990 (Anwaltsaktenzeichen KSP-016).
  • Segmentbus
  • Fig. 3 zeigt eine bevorzugte Konfiguration für ein beispielhaftes Segment 12A der Ebene: 0 in Fig. 1. Das Segment 12A beinhaltet Verarbeitungszellen 18A, 18B und 18C, die durch Zellverbindungen 22A, 22B und 22C entlang des Bussegmentes 20A miteinander verbunden sind. Eine Routing-Einheit 28A liefert eine Verbindung zwischen dem Segment 12A der Ebene 0 und falls ein übergeordnetes vorhanden ist, dem Segment 14A der Ebene: 1 gemäß Fig. 1. Diese Routing- Einheit 28A ist entlang des Busses 20A mit Hilfe einer Zellverbindung 32A verbunden, wie dargestellt. Die Struktur des dargestellten Bussegmentes 20A, ebenso wie seine Beziehung zu Zellverbindungen 22A, 22B, 22C und 32A kann man vollständig verstehen unter Bezug auf die oben zitierten verwandten Anmeldungen, z. B. die US-Patentanmeldung Nr. 696,291.
  • Verarbeitungszelle
  • Fig. 4 zeigt einen bevorzugten Aufbau für ein Beispiel einer Verarbeitungszelle 18A der dargestellten Ausführungsform. Die dargestellte Verarbeitungszelle 18A umfaßt eine zentrale Verarbeitungseinheit 58, die mit einer Schnittstelle 60 für eine externe Einrichtung, einem Datenuntercache 62 und einem Befehlsuntercache 64 über den Prozessorbus 66 bzw. den Befehlsbus 68 verbunden ist.
  • Die Schnittstelle 60 stellt Kommunikationen mit einer externen Einrichtung, z. B. einem Festplattenlaufwerk 19A über den Bus 70 für die externe Einrichtung bereit, und zwar in einer Art und Weise, die im Stand der Technik üblich ist. Ein vollständigeres Verständnis des in dieser Figur dargestellten Schaltkreises kann man erhalten unter Bezug auf die oben zitierten verwandten Anmeldungen, z. B. Seriennummern 136,930, eingereicht am 22. Dezember 1987 (Anwaltsaktenzeichen KSP-001), 370,325, eingereicht am 22. Juni 1989 (Anwaltsaktenzeichen KSP-006) und 499,182, eingereicht am 26. März 1990 (Anwaltsaktenzeichen KSP-014).
  • Das Speichersystem
  • Wie oben beschrieben, ermöglicht ein Mehrprozessorsystem 10, welches gemäß einer bevorzugten Ausführungsform der Erfindung aufgebaut ist, den Zugriff auf individuelle Datenelemente, die den Verarbeitungszellen 18A, 18B... 18R zugeordnet sind, unter Bezugnahme auf einen eindeutigen Deskriptor, und zwar auf Basis einer virtuellen Systemadresse (SVA), die den jeweiligen Daten bzw. Datenelementen zugeordnet ist. In dem dargestellten System 10 wird die Implementierung dieser Fähigkeit bereitgestellt durch die kombinierten Wirkungen der Speichereinheiten der Verarbeitungszelle in Verbindung mit deren Übertragung von Anforderungs- und Antwortpaketen über das Netzwerk 46. In der folgenden Diskussion wird dies insgesamt als das "Speichersystem" bezeichnet.
  • Die Prozessoren des dargestellten Systems, z. B. die Prozessoren 40A, 40B, 40C kommunizieren mit dem Speichersystem über zwei primäre Logikschnittstellen (Interfaces). Die erste ist die Datenzugriffsschnittstelle, die implementiert wird durch die Lade- und Speicheranweisungen. Im Datenzugriffsbetrieb liefert der Prozessor dem Speichersystem eine SVA und Zugriffs-Betriebsinformation, und das Speichersystem versucht, diesen Zugriff zu erfüllen, indem es die Unterseite findet, welche die Daten enthält und sie zurückleitet.
  • Der zweite logische Interfacebetrieb ist der Steuerungszugriff, der implementiert wird durch Steueranweisungen des Speichersystems. Im Steuerungszugriff weist der Prozessor das Speichersystem an, einige Nebeneffekte auszuführen oder irgendeine Information zurückzugeben, die sich von den aktuellen Daten einer Seite unterscheidet. Zusätzlich zu den primären Schnittstellen verwendet das Betriebssystem 51 (z. B. das Betriebssystem) die Steuerpositionen in dem SPA-Raum für die Konfiguration, die Aufrechterhaltung, Fehlerbeseitigung und Diagnose.
  • Das Speichersystem implementiert eine Hierarchie von Speicherraum. In der dargestellten, bevorzugten Ausführungsform enthält jede Verarbeitungszelle eine zentrale Prozessoreinheit (oder CEU), die einen Teilcache hat, der 0,5 MByte an Daten speichert. Diese Verarbeitungszellen umfassen auch Caches, welche 32 MByte von Daten speichern. Darüber hinaus speichert ein bevorzugtes Ebene: 0, welches beispielsweise 15 Verarbeitungszellen hat, insgesamt 480 MByte. Dagegen hat ein bevorzugtes Ebene: 1 mit beispielsweise 32 Ebenen: 0 insgesamt 15360 MByte.
  • Das Speichersystem speichert Daten in Einheiten von Seiten und Unterseiten. Beispielsweise beschreibt in der dargestellten Ausführungsform jeder einzelne Cache 32 MByte an SVA-Raum, der in 2048 Seiten aufgeteilt ist. Seiten enthalten 2¹&sup4; (16384) Byte, die in 128 Unterseiten von 2&sup7; (128) Bytes aufgeteilt sind. Das Speichersystem ordnet Speicherraum in den Caches seitenweise zu und jede Seite von SVA-Raum ist entweder vollständig in dem System repräsentiert oder überhaupt nicht. Das Speichersystem verwendet Daten gemeinsam zwischen den Caches in Einheiten von Unterseiten bzw. Teilseiten.
  • Wenn eine Seite von SVA-Raum in dem System resident ist, so gilt folgendes:
  • (1) Einer oder mehrere Caches ordnen eine Seite von Speicherraum der Seite zu, wobei jede Unterseite der Seite auf einem oder mehreren der Caches mit zugeordnetem Speicherraum gespeichert wird, jedoch
  • (2) jeder Cache mit Speicherraum, der für eine Seite zugeordnet ist, kann eine Kopie aller (oder irgendeiner) der Unterseiten der Seite enthalten oder nicht.
  • Ein weitergehendes Verständnis eines bevorzugten Speichersystems für die Verwendung in einem digitalen Datenverarbeitungssystem, welches gemäß der Erfindung aufgebaut ist, kann man erhalten unter Bezug auf die oben zitierten verwandten Anmeldungen, z. B. US SN 136,930, eingereicht am 22. Dezember 1987 (US 5,055,999, entsprechend EP-A-0 322 117), US SN 370,287, eingereicht am 22. Juni 1989 (US 5,251,308, entsprechend EP-A-0 404 560) und US SN 531,506, eingereicht am 31. Mai 1990 (US5,341,483, entsprechend EP-A-0 458 552).
  • Unterseitenzustände
  • Die Unterseitenzustände werden definiert nach drei Klassen von Unterseitenzuständen: Ungültig, Nur-Lese, und Besitzer. Diese drei Klassen sind in ihrer Stärke bezüglich des Zugriffs, den sie zulassen, geordnet. Ungültige Seiten erlauben keinerlei Zugriff. Der Nur-Lese-Zustand ermöglicht einen Zugriff für das Laden und das Heranholen von Anweisungen. Es gibt einige Besitzzustände: Alle ermöglichen den Zugriff des Ladens und ermöglichen es, daß der Cache auf eine Datenanforderung von dem Netzwerk 46 reagiert; einige ermöglichen einen Speicherzugriff. Nur ein Cache kann zu einem gegebenen Zeitpunkt eine bestimmte Unterseite in einem Besitzzustand halten. Der Cache, welcher eine Unterseite in einem Besitzzustand hält, wird der Besitzer der Unterseite genannt. Der Besitz jeder Unterseite wandert von Cache zu Cache, wenn die Prozessoren den Besitz über Speicheranweisungen, spezielle Ladeanweisungen und Anweisungen für den unteilbaren Zustand (z. B. gsp oder rsp) anfordern, welche den Besitz erfordern.
  • Ungültige Zustände
  • Wenn eine Unterseite in einem Cache nicht vorhanden ist, so sagt man, daß sie in einem Ungültigkeitszustand bezüglich dieses Cache sei. Wenn ein Prozessor ein Laden oder Speichern für eine Unterseite anfordert, die in seinem lokalen Cache in einem Ungültigkeitszustand ist, so muß dieser Cache eine Kopie dieser Unterseite in irgendeinem anderen Zustand anfordern, um den Datenzugriff zu erfüllen. Es gibt zwei Ungültigkeitszustände: invalid-descriptor und invalid.
  • Wenn ein bestimmter Cache keinen Deskriptor für eine bestimmte Seite hat, so sagt man, daß dann alle Unterseiten dieser Seite in diesem Cache in dem Ungültig-Deskriptor-Zustand (invalid-descriptor) sind. Demnach sind Unterseiten in dem invalid-descriptor-Zustand in dem Cache nicht ausdrücklich repräsentiert.
  • Wenn die CEU auf eine Unterseite im invalid-descriptor-Zustand Bezug nimmt, so muß der lokale Cache einen der Deskriptoren (in dem richtigen Satz) der SVA zuordnen. Nachdem die Deskriptor-Zuordnung vollendet ist, haben alle Unterseiten auf der Seite einen Ungültigkeitszustand.
  • Wenn der lokale Cache einen Deskriptor für eine bestimmte Seite hat, jedoch eine bestimmte Unterseite in diesem Cache nicht vorhanden ist, so befindet sich die Unterseite in dem Ungültigkeitszustand. Der lokale Cache versucht dann, die Unterseitendaten zu erhalten, indem er mit anderen Caches kommuniziert.
  • Nur-Lese-Zustand
  • Es gibt nur einen Nur-Lese-Zustand, nämlich read-only. Eine beliebige Anzahl von Caches kann eine bestimmte Unterseite im Nur-Lese-Zustand halten, vorausgesetzt, daß der Besitzer der Unterseite die Unterseite im nicht-exklusiven Zustand hält. Wenn der Besitzer der Unterseite irgendeinen anderen Zustand hat (z. B. einen exklusiven Besitzzustand, das heißt einen der Zustände exklusiv, unteilbar oder übergangsweise unteilbar), so kann in keiner Zelle eine Nur-Lese-Kopie existieren. Die CEU kann eine Unterseite, die sich im Nur-Lese-Zustand befindet, nicht modifizieren.
  • Besitzzustände
  • Es gibt zwei grundlegende Besitzzustandstypen: nicht-exklusiver und exklusiver Besitz. Wenn ein bestimmter Cache eine bestimmte Unterseite im nicht-exklusiven Zustand hält, so können irgendwelche anderen Caches diese Unterseite im Nur-Lese-Zustand halten. Für das Programm ist der nicht-exklusive Zustand dasselbe wie der Nur-Lese-Zustand. Die CEU kann eine Unterseite nicht modifizieren, die im nicht-exklusiven Zustand ist. Nicht-exklusiver Zustand ist im wesentlichen ein buchhalterischer Zustand, der von dem Speichersystem verwendet wird; er definiert den Besitz der Unterseite.
  • Die exklusiven Besitzzustände sind exklusiv, unteilbar und übergangsweise unteilbar. Wenn ein bestimmter Cache eine bestimmte Unterseite in einem exklusiven Besitzzustand hält, so kann kein weiterer Cache eine Nur-Lese- oder nicht-exklusive Kopie dieser Unterseite halten. Wenn der fokale Cache eine Unterseite in einem exklusiven Besitzzustand hält, so kann die CEU die Unterseitendaten modifizieren, vorausgesetzt, daß der STT einen Schreibzugriff zu dem Segment gewährt und daß die descriptor.no_write-Anzeige frei ist.
  • Unteilbarer Zustand
  • Der atomare bzw. unteilbare Zustand ist eine stärkere Form des Besitzes als der exklusive Zustand. Unterseiten gehen nur in den unteilbaren Zustand und verlassen ihn nur als Folge ausdrücklicher Anforderungen durch die Programme.
  • Grundsätzlich kann der unteilbare Zustand verwendet werden, um einen einzelnen Zugriffspfad zu irgendeiner Unterseite im SVA-Raum zu gewähren. Wenn ein Prozessor ein gsp.nwt (hole Unterseite, kein Warten) ausführt, um anzufordern, daß eine Unterseite in den unteilbaren Zustand eintritt, so wird diese Anweisung nur dann normal vollendet, wenn die Unterseite sich nicht schon im unteilbaren Zustand befindet. Demnach kann der unteilbare Zustand auf eine Unterseite als eine einfache Verriegelung verwendet werden. Die Verriegelung wird geschlossen, wenn die gsp.nwt- Anweisung normal vollendet wird, indem zunächst die Unterseite im exklusiven Zustand erhalten wird und dann der Zustand von exklusiv in unteilbar verändert wird. Die Verriegelung wird entriegelt durch Ausführen der rsp-Anweisung (release subpage). Die rsp-Anweisung erfordert, daß die Unterseite in irgendeinem Cache im unteilbaren oder übergangsweise unteilbaren Zustand existiert. (Der lokale Cache erhält die Unterseite und verändert dann die Unterseite aus dem unteilbaren oder übergangsweise unteilbaren Zustand in den exklusiven Zustand, wenn die Unterseite einen übergangsweise unteilbaren Zustand hat, so ist der Vorgang komplizierter, jedoch ist der Effekt in programmtechnischer Hinsicht derselbe.)
  • Es ist wichtig anzumerken, daß der unteilbare Zustand nur mit einer Unterseite verknüpft ist. Es gibt keine Zuordnung zu einem bestimmten Betriebssystemvorgang (typischerweise einem Benutzerprogramm) oder zu einer bestimmten Zelle. Es ist möglich, daß ein Vorgang eine gsp- Anweisung ausführt, um eine Unterseite im unteilbaren Zustand zu erhalten und daß er anschließend durch das Betriebssystem 51 umgeschaltet wird, so daß er die Ausführung auf einer weiteren Zelle fortsetzt. Dieser Vorgang setzt die Ausführung auf der zweiten Zelle fort und führt schließlich eine rsp-Anweisung aus, um die Unterseite freizugeben. Zwischen diesen beiden Anweisungen gibt es nur eine einzige Kopie der Unterseite in dem gesamten Speichersystem und sie befindet sich im unteilbaren oder übergangsweise unteilbaren Zustand. Wenn mehrere Prozessoren Anweisungen mit Bezug auf die Unterseite ausführen, bewegt sich diese einzige verfügbare Kopie von Zelle zu Zelle. Es ist außerdem möglich, daß ein bestimmter Vorgang einen unteilbaren Zustand erhält und ein weiterer Prozeß den unteilbaren Zustand freigibt.
  • Der unteilbare Zustand ist einfach eine zusätzliche Anzeige, die zu einer Unterseite gehört; es ist möglich, Protokolle zu implementieren, die den unteilbaren Zustand zusätzlich zu dem Datenzustand der Unterseite verwenden. Wie ein Protokoll, welches nur unter Verwendung von Daten implementiert wird, Fehler haben kann, so ist es auch möglich, daß ein Protokoll des unteilbaren Zustands einen Defekt hat. Die Hardware legt der Verwendung des unteilbaren Zustandes über die von dem STT ausgeübte Zugriffskontrolle und descriptor.noatomic hinaus keine Überprüfung auf.
  • Übergangsweise unteilbarer Zustand
  • Die gsp.nwt-Anweisung läuft immer innerhalb ihrer definierten Ausführungszeit ab, jedoch kann sie entweder Erfolg oder Mißerfolg haben (je nachdem, wie der aktuelle Zustand in der Unterseite in dem Speichersystem ist). Eine zweite Form der Anweisung ist die gsp.wt (get-subpage, wait - hole Unterseite, warte), welche nicht vollendet wird, bis die Unterseite im exklusiven Zustand erhalten worden und in den unteilbaren Zustand geändert worden ist. Die gsp.wt-Anweisung wendet von dem Programmierer die Last ab, zu bestimmen, ob der gsp-Befehl erfolgreich war oder nicht. Wenn die Unterseite sich bereits im unteilbaren oder übergangsweise unteilbaren Zustand befindet, wenn ein Prozessor gsp.wt ausführt, so hält der Prozessor an, bis die Unterseite freigegeben ist, die von dem lokalen Cache erhalten wird und die von dem exklusiven Zustand wieder zurück in den unteilbaren oder übergangsweise unteilbaren Zustand geändert wird. Die Verwendung der gsp.wt- Anweisung kann die Anzahl von Nachrichten reduzieren, die zwischen den Caches gesendet werden, wenn eine Zelle auf die Gelegenheit zum "Verriegeln des Schlosses" wartet.
  • Der übergangsweise unteilbare Zustand wird durch das Speichersystem automatisch verwendet, um gsp.wt zu ermöglichen, in effektiver Weise zu funktionieren. Seine Verwendung ist für den Programmierer vollständig transparent. Wenn eine Unterseite sich im unteilbaren Zustand befindet und ein anderer Cache gsp.wt auf der Unterseite ausführt, so tritt diese Unterseite in dem haltenden Cache in den übergangsweise unteilbaren Zustand ein. Wenn die Unterseite später mit einer rsp-Anweisung freigegeben wird, zwingt der übergangsweise unteilbare Zustand die Unterseite, daß sie auf das Netzwerk 46 in einem speziellen Freigabezustand ausgestoßen wird. Der freigebende Cache verändert seinen eigenen Zustand für diese Unterseite in ungültig. Irgendein anderer Cache, der ein gsp ausführt, wird die Unterseite sehen und sie annehmen. Der annehmende Cache wird dann in der Lage sein, seine gsp-Anweisung zu vollenden und die Unterseite tritt in diesem Cache in den übergangsweise unteilbaren Zustand ein. Dieser Vorgang geschieht für alle nachfolgenden gsp und rsp bis zu einem solchen Zeitpunkt, zu welchem eine ausgestoßene Unterseite nicht durch irgendeinen anderen Cache angenommen wird. Zu diesem Zeitpunkt verändert der Cache, der die Freigabe ausführt, seinen Unterseitenzustand aus dem Ungültigkeitszustand zurück (der gesetzt wurde, als die Unterseite freigegeben wurde) in den exklusiven Zustand.
  • Ein besseres Verständnis der bevorzugten Unterseitenzustände, die in einem digitalen Datenverarbeitungssystem verwendet werden, welches gemäß der Erfindung aufgebaut ist, erhält man unter Bezugnahme auf die oben zitierten, verwandten Anmeldungen, z. B. US SN 136,930, eingereicht am 22. Dezember 1987 (US 5,055,999, entsprechend EP-A-0 322 117), US SN 370,287, eingereicht am 22. Juni 1989 (US 5,251,308, entsprechend EP-A-0 404 560) und US SN 531,506, eingereicht am 31. Mai 1990 (US 5,341,483, entsprechend EP-A-0 458 552).
  • Cacheverzeichnisse
  • Die Zuordnungen zwischen Cacheseiten und SVA-Seiten werden von jedem Cache in seinem Cacheverzeichnis aufgezeichnet. Jedes Cacheverzeichnis besteht aus Deskriptoren. Es gibt für jede Seite des Speichers in einem Cache einen Deskriptor. Zu einem bestimmten Zeitpunkt sagt man, daß der Deskriptor gültig oder ungültig ist. Wenn ein Deskriptor gültig ist, so wird die entsprechende Cachespeicherseite einer Seite von SVA-Raum zugeordnet und der Deskriptor zeichnet die zugehörige SVA-Seitenadresse und Zustandsinformation auf. Wenn ein Deskriptor ungültig ist, so ist die betreffende Cachespeicherseite logisch nicht in Gebrauch. Es gibt keine ausdrückliche Gültigkeitsanzeige, die einem Deskriptor zugeordnet ist; ein Deskriptor kann als ungültig angesehen werden, wenn der Anker und die Haltefelder beide frei sind und wenn es keine gültigen Unterseiten gibt, die für die SVA-Seite vorliegen.
  • Jedes Cacheverzeichnis wirkt als ein inhaltsadressierbarer Speicher. Dies ermöglicht es, daß ein Cache einen Deskriptor für eine bestimmte Seite von SVA-Raum lokalisiert, ohne eine iterative Suche durch alle seine Deskriptoren. Jedes Cacheverzeichnis ist implementiert als ein 16-Wege Satz-assoziativer Speicher mit 128 Sätzen. Alle Seiten von SVA-Raum sind in 128 Äquivalenzklassen aufgeteilt, die jeweils einem Satz des Cacheverzeichnisses zugeordnet sind. Ein Deskriptor für eine Seite kann nur in dem Satz eines Cacheverzeichnisses gespeichert werden, der der Äquivalenzklasse der Seite entspricht. Die Äquivalenzklasse wird ausgewählt durch SVA[20 : 14]. Zu irgendeinem gegebenen Zeitpunkt kann ein Cache nicht mehr als 16 Seiten mit demselben Wert für SVA[20 : 14] beschreiben, da es 16 Elemente in jedem Satz gibt.
  • Eine bevorzugte Organisation eines Cacheverzeichnisses ist in Fig. 5 dargestellt. Wenn auf eine SVA Bezug genommen wird, muß der Cache bestimmen, ob er die erforderliche Information hat oder nicht. Dies wird erreicht durch Auswählen eines Satzes innerhalb des Cache und dann Untersuchen aller Deskriptoren dieses Satzes. SVA[20 : 14] wählt einen Satz aus. In der allgemeinen Architektur wird jeder der Deskriptoren in dem ausgewählten Satz gleichzeitig gegenüber SVA[63 : 21] verglichen. In einer bevorzugten Ausführungsform, die einen Speicherraum von 440 MByte SVA hat, impliziert dieses einen Vergleich mit SVA[39 : 21]. Wenn eines der Elemente des Satzes ein Deskriptor für die gewünschte Seite ist, so zeigt der entsprechende Vergleicher eine Übereinstimmung an. Der Index in dem Satz des passenden Deskriptors, verknüpft mit der Satzzahl, identifiziert eine Seite in dem Cache.
  • Wenn mehr als ein Deskriptor paßt, signalisiert der Cache die Ausnahme einer mehrfachen Deskriptorübereinstimmung (descriptor_match). Wenn kein Deskriptor paßt, ordnet der Cache einen Deskriptor zu und fordert Daten von dem Netzwerk an. Es ist möglich, daß entweder die Zuordnung oder die Datenanforderung versagt und der Cache zeigt einen Fehler gegenüber der CEU an. Die Verwendung von SVA[20 : 14] für das Auswählen eines Satzes ist effektiv eine Hash-Funktion über SVA-Adressen. Das Betriebssystem 51 muß SVA-Adressen zuordnen, so daß diese Hash-Funktion in üblichen Fällen sehr gut arbeitet. Es gibt zwei wichtige Unterscheidungsfälle: die Bezugnahme auf viele Seiten eines einzelnen Segmentes und die Bezugnahme auf die erste Seite von vielen Segmenten. Dieser Satzauswähler erzeugt ein gutes Cacheverhalten für zusammenhängende Gruppen von Seiten, da 128 zusammenhängende Seiten in 128 verschiedenen Sätzen residieren bzw. vorliegen. Dieser Selektor erzeugt jedoch ein schlechtes Hash-Verhalten für viele Seiten mit demselben Wert in SVA[20 : 14]. Das Betriebssystem 51 kann letztere Situation vermeiden, indem es den logischen Ursprung von Daten innerhalb von Segmenten variiert. Beispielsweise kann jeder Benutzerstapel pro Prozeß bei einem unterschiedlichen Segmentversatz begonnen werden.
  • Inhalte eines Deskriptors
  • Wenn eine Zelle auf eine Anforderung nach einer Unterseite reagiert, so liefert sie die Unterseitendaten und die Werte bestimmter Deskriptorfelder in dem lokalen Cache. Wenn die Antwort zu dem Anfordernden zurückkehrt, so kopiert er entweder diese Felder in Deskriptorfelder (wenn er keine anderen gültigen Unterseiten hat) oder verknüpft diese Felder über logisch ODER mit den Deskriptorfeldern. Einige Deskriptorfelder werden von dem Antwortenden nie zugeführt noch werden sie durch den Anfordernden auf den neuesten Stand gebracht.
  • In einer bevorzugten Ausführungsform sind die Deskriptorfelder folgendermaßen definiert
  • descriptor.tag (19 Bits)
  • Bits[39 : 21] einer SVA. Dieses Feld kennzeichnet die betreffende Seite des SVA- Raumes, die durch den entsprechenden Deskriptor beschrieben wird. Für einen gegebenen Satz in einer gegebenen Zeile muß dieses Feld unter allen 16 Deskriptoren eindeutig sein. Das Betriebssystem 51 "setzt" dieses Feld, wenn es eine SVA-Seite erzeugt. (Es wird auch gesetzt durch das Betriebssystem 51 während der Cache- Initialisierung.)
  • descriptor.atomic_modified (1 Bit)
  • Ein Cache setzt diese Bit-Anzeige auf 1, wenn irgendeine Unterseite dieser Seite einen Übergang in oder aus dem unteilbaren Zustand erfährt, weil eine gsp- oder rsp- Anweisung erfolgreich ausgeführt worden ist. Es wird auch gesetzt, wenn eine Unterseite sich von dem unteilbaren Zustand in den übergangsweise unteilbaren Zustand verändert. Diese Anzeige wird nicht gesetzt, wenn ein gsp fehlschlägt, weil die Unterseite sich bereits im unteilbaren Zustand befindet oder wenn ein rsp fehlschlägt, weil die Unterseite nicht im unteilbaren Zustand war. Diese Anzeige wird nicht gesetzt, wenn gsp oder rsp fehlschlagen, weil descriptor.noatomic gesetzt ist. Das Betriebssystem 51 setzt diese Anzeige auf 0, um anzuzeigen, daß es festgestellt hat, daß der unteilbare Zustand sich verändert. Dieses Feld wird von Cache zu Cache weitergeleitet.
  • descriptor.modified (1 Bit)
  • Ein Cache setzt diese Bit-Anzeige auf 1, wenn irgendwelche Daten auf der Seite modifiziert werden. Das Betriebssystem 51 setzt descriptor.modified auf 0, um anzuzeigen, daß es die Modifikation der Seite festgestellt hat. Diese Anzeige wird nicht gesetzt, wenn ein Versuch, die Daten zu modifizieren, fehlschlägt, weil descriptor.no_write gesetzt ist. Dieses Feld wird von Cache zu Cache weitergeleitet.
  • descriptor.referenced (1 Bit)
  • Der Cache setzt dieses Feld bei Aufrufen der Seite und macht das Feld periodisch frei. Das Feld wird verwendet, um anzuzeigen, daß die Seite kürzlich aufgerufen wurde.
  • descriptor.anchor (1 Bit)
  • Die Software setzt dieses Feld, um anzuzeigen, daß Datenanforderungen von anderen Caches nicht eingelöst werden und auch der Deskriptor nicht fallen gelassen wird. Jede Lese- oder Heranholanforderung von einem anderen Cache geht unbeantwortet zu dem Anfordernden zurück und wird behandelt, als wenn die Seite nicht existieren würde. Dieses Feld wird gesetzt durch das Betriebssystem 51 als Teil des Erzeugens oder Zerstörens einer SVA-Seite und als Teil der Modifizierung des Seitendeskriptors.
  • descriptor.held (1 Bit)
  • Die Software setzt das Feld, um anzuzeigen, daß der Deskriptor durch den Cache nicht fallengelassen werden darf, selbst wenn keine Unterseiten in dem Cache vorhanden sind.
  • descriptor.no_atomic (1 Bit)
  • Die Software setzt dieses Feld, um zu verhindern, daß irgendein Cache den unteilbaren Zustand irgendeiner Unterseite dieser Seite verändert. Ein Versuch, ein gsp oder rsp auszuführen, schlägt fehl und wird an den Prozessor zurückgemeldet. Der Prozessor gibt ein Signal page_no_atomic-Ausnahme aus. Descriptor.noatomic kann geändert werden, wenn einige Unterseiten den unteilbaren Zustand haben. Diese Anzeige verhindert einfach den Versuch, den unteilbaren Zustand zu verändern, in derselben Art und Weise, in welcher descriptor.no_write einfach Versuche verhindert, den Datenzustand zu verändern. Dieses Feld wird von Cache zu Cache weitergeleitet.
  • descriptor.no_write (1 Bit)
  • Die Software setzt dieses Feld, um Modifikationen an der Seite durch den lokalen Prozessor zu verhindern. Ein Versuch, die Seite zu modifizieren, schlägt fehl und wird an den Prozessor zurückgemeldet. Der Prozessor signalisiert eine Ausnahme page_no write. Diese Anzeige beeinflußt nicht die Fähigkeit irgendeines Cache, die Unterseite im exklusiven oder unteilbaren/übergangsweise unteilbaren Zustand zu beschaffen. Das Feld wird von Cache zu Cache weitergeleitet.
  • descriptor.summary (3 Bits)
  • Summiert das Unterseitenzustandsfeld eines Satzes von Unterseiten. Es gibt ein 3- Bit-Summenfeld für jeden Satz von Unterseiten. Die Summe überschreibt mitunter den Inhalt der individuellen subpage_state-Felder für die Unterseiten innerhalb des Summensatzes.
  • descriptor.subpage_state (4 Bits)
  • Der Unterseitenzustand besteht aus einem 3-Bit-Zustandsfeld und einem einzelnen Statusfeld im Untercache. Es wird gesetzt von dem Cache, um den Zustand jeder Unterseite aufzuzeichnen und um anzuzeigen, ob irgendein Bereich der Unterseite CEU Untercache vorhanden ist oder nicht.
  • Ein weiteres Verständnis bevorzugter Aufbauten und Strukturen für das Cacheverzeichnis und die Deskriptoren in einem digitalen Datenverarbeitungssystem, welches gemäß der Erfindung aufgebaut ist, kann man unter Bezugnahme auf die oben zitierten, verwandten Anmeldungen gewinnen, z. B. in der US SN 136,930, eingereicht am 22. Dezember 1987 (Anwaltsaktenzeichen KSP- 001), US SN 370,287, eingereicht am 22. Juni 1989 (Anwaltsaktenzeichen KSP-007CP), US SN 521,798, eingereicht am 10. Mai 1990 (Anwaltsaktenzeichen KSP-011) und US SN 531,506, eingereicht am 31. Mai 1990 (Anwaltsaktenzeichen KSP-016).
  • Anweisungen zum unteilbaren Zustand der Unterseite
  • Die Anweisungen zum unteilbaren Zustand der Unterseite bilden die Programmschnittstelle zu den Heranhol- und Freigabevorgängen, die oben beschrieben wurden. Diese Anweisungen existieren in verschiedenen Formen, um ein genaues Abstimmen paralleler Programme zu ermöglichen.
  • get subpage[gsp.nwtj
  • get subpage & wait[gsp.wt]
  • Get subpage fordert an, daß eine Unterseite in den unteilbaren Zustand gesetzt werden soll. Für beide Formen der get subpage-Anweisung gilt, daß dann, wenn die Unterseite nicht im unteilbaren Zustand in irgendeinem Cache ist, der lokale Cache sie in dem unteilbaren Zustand erhält.
  • Für gsp.nwt zeigt der @MEM Zustandscode den Erfolg oder das Fehlschlagen des Versuches an; die Anweisung springt, anstatt @MEM zu verändern, falls die Sprungoption in der Anweisung vorhanden ist und die Unterseite sich bereits im unteilbaren Zustand befindet.
  • Die gsp.wt-Anweisungsform bewirkt, daß der Cache die CEU anhält, bis die Unterseite in dem unteilbaren Zustand erhalten werden kann. Dies vermindert die Menge bzw. den Umfang des Verbindungsverkehrs, wenn das Programm den unteilbaren Zustand erhalten muß, bevor es fortschreiten kann. Wenn die Unterseite sich bereits in irgendeinem Cache in dem unteilbaren Zustand befindet (einschließlich des lokalen Cache) wartet die Anweisung, bis die Unterseite freigegeben wird. Der lokale Cache gewinnt dann die Unterseite in dem unteilbaren Zustand. Der @MEM-Zustand wird immer verändert, um den Erfolg anzuzeigen.
  • release subpage[rsp]
  • Release subpage wird verwendet, um eine Unterseite aus dem unteilbaren Zustand zu entfernen bzw. freizugeben. Wenn die Unterseite nicht in dem lokalen Cache vorhanden ist, so wird sie zuerst über die Zwischenverbindung angefordert. Wenn der lokale Cache einen exklusiven Besitzzustand hat, schreitet rsp fort. Wenn die Unterseite sich nicht im unteilbaren Zustand befindet, so verändert release subpage den Zustand der Unterseite nicht. In dieser Situation macht die CEU einen Sprung (trap), wenn die Sprungmodifizierung für die Anweisung vorhanden ist. Wenn die Unterseite sich im unteilbaren Zustand befindet, so wird sie in den exklusiven Zustand geändert. Wenn die Unterseite sich in dem übergangsweise unteilbaren Zustand befindet, so wird sie in den exklusiven Zustand verändert und auf die Zwischenverbindung ausgestoßen, so daß irgendeine wartende Zelle den unteilbaren Zustand erhalten kann.
  • Seitenmanipulation
  • Das System 10 handhabt die Seite und den Deskriptor in der unten beschriebenen Weise. Diese Diskussion geht von der Annahme aus, daß auf dem lokalen Cache ein verankerter Deskriptor existiert.
  • Erzeugen einer SVA-Seite
  • Im Anschluß an mpsa existiert der Deskriptor, jedoch sind alle Unterseiten im Ungültigkeitszustand. Das Betriebssystem 51 führt mpdw aus und zeigt an, daß alle Unterseitenzustände in den exklusiven Zustand gesetzt werden sollten. Dieses bewirkt, daß eine Nachricht an das Netzwerk 46 übermittelt wird, so daß irgendwelche interessierten Mitglieder des Ringes die Erzeugung der Seite feststellen können.
  • Nun existiert die SVA-Seite, auch wenn ihre Datenwerte undefiniert sind. Die Software muß die Seite initialisieren unter Verwendung von Speicheranweisungen oder 1/0, bevor sie den Benutzer auf die Seite Bezug nehmen läßt. Aus diesem Grund erzeugt das Betriebssystem 51 typischerweise eine Seite an einem SVA-Platz, der für Benutzerprogramme nicht zugänglich ist, initialisiert die Seitendaten und verändert dann die Adresse der SVA-Seite, wie unten beschrieben. Die Seite wird für den allgemeinen Gebrauch freigegeben, indem eine mpdw-Anweisung ausgeführt wird, die den Anker freigibt bzw. löst.
  • Zerstören einer SVA-Seite
  • Nach dem mpsa muß das Betriebssystem 51 alle Unterseiten in dem exklusiven Zustand erhalten. Dies geschieht unter Verwendung von mfsva-Anweisungen. Das Betriebssystem 51 führt dann mpdw aus und gibt an, daß alle Unterseiten in den Ungültigkeitszustand geändert werden sollen. Diese Anweisung bewirkt, daß eine Nachricht an das Netzwerk 46 gesendet wird, so daß alle interessierten Ringmitglieder die Zerstörung der Seite feststellen können. Die SVA-Seite wird durch diesen Vorgang zerstört. Die Software gibt den Deskriptor für die erneute Verwendung frei, indem sie ein zweites mpdw ausführt, was den Anker freigibt.
  • Verändern der Deskriptorfelder
  • Die mpdw-Anweisung wird verwendet, um verschiedenen Felder in einem lokalen Deskriptor zu verändern. Sie kann die Felder modified, atomic_modified, no_write, noatomic und held setzen oder freimachen und kann das Ankerfeld freimachen. Mpdw kann auch die Anzeige verändern und damit die SVA-Speicheradresse, die zu dem Deskriptor gehört. (Da der Index des Deskriptors einen Teil des SVA bildet, befindet sich die neue Anzeige per Definition in demselben Cachesatz.)
  • Um die Konsistenz des Speichersystems sicherzustellen, muß das Betriebssystem 51 gewissen Regeln folgen, wenn es die Felder oder Anzeigen eines Deskriptors ändert, gesetzt ist (auch wenn die Anweisung selbst dazu führen kann, daß descriptor.anchor freigegeben wird). Verschiedene Sequenzen erfordern, daß alle Unterseiten in dem lokalen Cache in einem ausschließlichen Besitzzustand vorhanden sind. Dies wird erreicht durch Setzen von descriptor.anchor und Ausführen von mfsva.ex für jede Unterseite. Verschiedene Sequenzen erfordern, daß alle Unterseiten nicht in dem Untercache des lokalen Caches sind. Dies wird erreicht durch Ausführen von mflsp für jede Unterseite, die in der lokalen CEU in einem Untercache sein könnte. (Das Ausführen von mfsva.ex stellt sicher, daß eine Unterseite nicht in einem Untercache der CEU oder irgendeiner anderen Zelle ist.)
  • Steueranweisungen für das Speichersystem
  • Steueranweisungen für das Speichersystem ermöglichen es dem Prozessor, das Speichersystem direkt zu manipulieren. Es gibt zwei Klassen von Steueranweisungen: Datenbewegung bzw. -verschiebung und Steuerung des Seitenzustandes. Die Steueranweisungen für die Datenverschiebung bewegen Seiten und Unterseiten von Daten von Cache zu Cache in der Hierarchie. Die Steueranweisungen für den Seitenzustand manipulieren die Seitendeskriptoren.
  • Diese CEU-Anweisungen führen zu Cache-Befehlen, die synchron oder asynchron ablaufen, je nach dem Befehl. Eine CEU-Cache-Anweisung kann einen Eintrag in dem Cache PRT (einer Hardwaretabelle) setzen, während er abläuft. Der PRT hat vier Einträge bzw. Eingänge, so daß maximal vier Cache-Anweisungen parallel ausgeführt werden können. Die meisten dieser CEU- Anweisungen resultieren in einer Zuordnung eines PRT-Einganges, der in Gebrauch bleibt, bis die Anforderung erfüllt ist, wodurch ein synchrones Verhalten sichergestellt wird. Beispielsweise laufen Lade-/Speicheranweisungen synchron ab, so daß gewisse softwaregesteuerte Ausnahmen (wie z. B. eine fehlende Seite oder eine nicht beschreibbare Seite) in vorhersehbarer Weise aufgelöst werden können. Die pcsp- (Vorabheranholen einer Cache-Unterseite) und pstsp- (Nach-Speicher- Unterseite) Anweisungen arbeiten asynchron, wie es in den folgenden Abschnitten beschrieben wird.
  • Synchronfehler führen typischerweise dazu, daß die CEU die Sprungsequenz (trap) ausführt.
  • Asynchronfehler resultieren aus aktuellen Hardwarefehlern oder werden durch eine Anforderung von irgendeinem anderen Cache hervorgerufen. Derartige Fehler werden durch Interrupts des Speichersystems berichtet.
  • Anweisung zum Heranholen einer Unterseite
  • Die mfsva-Anweisungen erlauben dem Betriebssystem 51, daß es eine Unterseite Nur-Lese oder im ausschließlichen Besitzzustand heranholt, wobei die SVA-Position der Unterseite spezifiziert wird. Dieses erspart dem Betriebssystem 51 die Mühe, eine DSTT-Übersetzung bereitzustellen, wie es durch pcsp erforderlich ist.
  • Flush Subcached Subpage Instruction
  • Die mflsp-Anweisung bewirkt, daß der Cache sicherstellt, daß die angegebene Unterseite in der lokalen CEU nicht im Untercache ist. Wenn die Unterseite in dem ungültig-Deskriptorzustand oder in dem ungültigen Zustand ist, so wird kein Deskriptor zugeordnet und die Unterseite wird nicht über das Netzwerk 46 angefordert.
  • Anweisung zum Rekombinieren der Unterseite
  • Die mrcsp-Anweisung erlaubt es dem Betriebssystem, die Anzahl aktiver Deskriptoren für eine Seite zu reduzieren, indem sie bewirkt, daß der Besitzzustand zu einem anderen Cache wandert. Im Gegensatz zu der Aktivität zur Rekombinierung des Hintergrundes des Cache wird diese Anweisung nicht durch Konfigurationsparameter des Cache gesteuert.
  • Die Steueranweisungen des Seitenzustandes arbeiten auf individuellen Seiten des SVA- Raumes.
  • Anker-Deskriptor-Anweisung
  • Die mpsa-Anweisung liefert einen verankerten Deskriptor in dem lokalen Cache für eine SVA-Seite. Wenn der Deskriptor schon vor dem mpsa existierte, so wird seine Ankerflagge bzw.- anzeige gesetzt. Steuervorgänge des Seitenzustandes erfordern es, daß ein verankerter Deskriptor für die SVA-Seite auf dem lokalen Cache vorhanden ist.
  • Schreibedeskriptor-Anweisung
  • Die mpdw-Anweisung wird verwendet, um SVA-Seiten zu erzeugen und zu zerstören, und um Deskriptoranzeigen existierender SVA-Seiten zu verändern. Mpdw erfordert, daß das Betriebssystem 51 zunächst einen verankerten Deskriptor für die Seite erhält, wobei die mpsa-Anweisung verwendet wird.
  • Ein weiteres Verständnis von Speichersystemsteueranweisungen in einem digitalen Datenverarbeitungssystem, welches gemäß der Erfindung aufgebaut ist, kann man gewinnen unter Bezug auf die oben zitierten verwandten Anmeldungen, z. B. die US SN 136,930, eingereicht am 22. Dezember 1987 (US 5,055,999, entsprechend EP-A-0 322 117), US SN 370,287, eingereicht am 22. Juni 1989 (US 5,251,308, entsprechend EP-A-0 404 560) und US SN 531,506, eingereicht am 31. Mai 1990 (US 5,341,483, entsprechend EP-A-0 458 552).
  • Virtuelles Speichersystem
  • Wie oben erwähnt, beinhaltet das Betriebssystem 51 einen Mechanismus zum Verwalten von Datenzugriffen und -zuweisungen. Dieser Mechanismus, der hier auch als das "virtuelle Speicher"- oder "VM"-System bezeichnet wird, führt drei Hauptfunktionen aus. Zunächst verwaltet er den SVA-Raum. Dies umfaßt das Zuordnen von Objekten (Dateien, Geräten, etc.) zu SVA-Bereichen und die Aufrechterhaltung bzw. Bereithaltung von Information über den unteilbaren Zustand für diese Bereiche. Aspekte dieser ersten Funktion werden genauer diskutiert in der gleichzeitig anhängigen, demselben Inhaber übertragenen, US-Patentanmeldung mit der Seriennummer 764 368, welche am gleichen Tag eingereicht wurde mit dem Titel DIGITAL DATA PROCESSOR WITH IMPROVED PAGING (entsprechend EP-A-533 447).
  • Zum zweiten verwaltet das VM-System den Kontextadreß- (CA-) Raum für jeden Prozeß. Dies umfaßt das Zuordnen von CA-Raum zu einem Bereich von SVA-Raum unter Verwendung der Einträge in die Segmentübersetzungstabelle (STTEs). Dies umfaßt außerdem auch die Prozeßverwaltung und die Unterstützung für das Debugging. Aspekte dieser zweiten Funktion werden genauer in der gleichzeitig anhängigen, demselben Inhaber übertragenen, US-Patentanmeldung mit der Seriennummer 763 505, die am selben Tag eingereicht wurde mit dem Titel DIGITAL DATA PROCES- SOR WITH IMPROVED CHECKPOINTING & FORKING (entsprechend EP-A-533 446).
  • Zum dritten ist das VM-System verantwortlich für das Auflösen bzw. Beheben von Seitenfehlern und die meisten der Einfangzustände (Trap-Zustände). Ein Teil dieser Aufgabe besteht in der Reduzierung der Häufigkeit der schwerwiegenderen Fehlertypen, wie z. B. voller Zeilen, und Fehler, die zu einem Seitenwechsel bzw. einer Seitenüberlagerung zu oder von anderen Seiten führen. Dies wird dadurch angegangen, daß man versucht, den effizientesten Gebrauch von dem in dem System verfügbaren physikalischen Speicher zu machen.
  • Als Teil des Betriebssystems 51 sind zumindest Teile des VM-Systems in jeder Zelle vorhanden (resident), beispielsweise für den Betrieb in Verbindung mit zentralen Verarbeitungseinheiten 40A, 40B, 40C.
  • Gebrauch und Ersatz des Cachedeskriptors
  • Die Caches des dargestellten Systems 10 werden von dem Betriebssystem 51 als Teil eines Speichersystems auf mehreren Niveaus bzw. mehreren Ebenen verwendet. Einem solchen System wird physikalischer Speicherraum nach dem Multiplex-Prinzip über einen großen Adreßraum über das Zuweisen von Seiten auf Anforderung verteilt. Die Caches umfassen Merkmale, die die Implementierung eines Speichersystems mit mehreren Ebenen, in welchem Softwaredaten zwischen den Caches und sekundärem Speicherraum in Einheiten von SVA-Seiten verschiebt, beschleunigt.
  • Alle Caches bilden gemeinsam den Primärspeicher eines Systems. Für gewisse Zwecke ist es jedoch notwendig, jeden einzelnen Cache als einen unabhängigen Primärspeicher zu betrachten. Dies liegt daran, daß jeder Cache nur eine begrenzte Anzahl von SVA-Seiten halten kann: 2.048 Seiten in jedem Cache und 16 in jedem speziellen Satz.
  • Im Betrieb kann eine CEU-Anweisung eine SVA-Seite aufrufen, die in dem lokalen Cache nicht vorhanden ist (sie befindet sich in dem Zustand mit ungültigem Deskriptor). Bevor auf dem Netzwerk 46 eine Anforderung nach der angeforderten Unterseite ausgegeben wird, muß der lokale Cache einen Deskriptor zuordnen, indem er (1) einen ungültigen Deskriptor findet, (2) eine Nur- Lese-Kopie ungültig macht, oder (3) eine reine SVA-Seite zerstört (das heißt eine, für welche: alle Unterseiten sich in exklusiven Besitzzuständen befinden, keine Unterseiten in den Untercaches aufgenommen, keine Anweisungen anhängig sind, beispielsweise GETs in Bearbeitung sind, wie es in einer PRT-Tabelle wiedergegeben wird, und descriptor.modified, descriptor.atomicmodified, descriptor.held und descriptor.anchor alle gelöscht sind).
  • Schließlich füllt der Prozeß des Zuordnens von Deskriptoren die Elemente eines bestimmten Cachesatzes auf. In diesem Fall ist die entsprechende Cachesteuereinheit, beispielsweise 52A ( Fig. 2A) nicht in der Lage, einen Deskriptor in dem entsprechenden Verzeichnis, beispielsweise 56A, und Speicherelement, beispielsweise 54A, zuzuordnen. Dementsprechend zeigt die Cachesteuereinheit eine "Zeile voll"-Ausnahme an und ruft eine Handhabe für einen Einfangzustand (trap handler) und damit das Betriebssystem 51 auf. Wenn das Betriebssystem 51 aufgerufen worden ist, kann es beispielsweise eine Seite, die sich gerade in der Cachezeile bzw. -leitung zu einer Festplatte befindet, übertragen und öffnet dadurch einen Raum in dem Cache (und der Cachezeile) für die Zuordnung.
  • Es ist jedoch wünschenswert, eine unnötige Seitenzuweisung zu begrenzen. Dementsprechend können in einem bevorzugten System 10 die Caches benötigte Deskriptoren zuordnen, indem sie (1) Seiten "ablegen" bzw. "fallenlassen", für welche Kopien irgendwoanders in dem System existieren, (2) Seiten neu kombinieren, für welche Unterseiten in anderen Caches gespeichert sind, und (3) Seiten auf weniger aktive oder weniger gefüllte Cachezeilen in anderen Caches verteilen.
  • Fallenlassen von Seiten
  • Manchmal hat man einen oder mehrere Deskriptoren in einem Cachesatz, die keine gültigen Unterseiten haben. Diese Situation kann entstehen als Folge von Anforderungen, die durch andere Caches erzeugt werden, oder als Folge einer Rekombinationsaktivität (die unten noch beschrieben wird). Es sei beispielsweise angenommen, daß ein Cachedeskriptor nur eine gültige Unterseite hat, für welche er einen exklusiven Zustand hat. Wenn irgendein anderer Cache den Besitz der Unterseite anfordert, hat dieser Cache keine gültigen Unterseiten dieser Seite mehr. Wenn descriptor.held und descriptor.anchor in diesem Cache gelöscht bzw. frei sind, so kann dieser Deskriptor erneut verwenden, wenn die CEU irgendeine andere Seite aufruft, die einen ungültigen Deskriptorzustand in demselben Satz dieses Cache hat.
  • Ein Cache läßt automatisch eine Seite fallen - das heißt den Deskriptor für diese Seite ungültig machen, die alle Seiten in einem Nur-Lese- oder Ungültigkeitszustand sind (eine Nur-Lese-Seite), vorausgesetzt, daß sich keine Unterseite in einem Untercache befindet. Dies ist möglich, weil im Speichersystem keine Information verloren geht, wenn es Nur-Lese-Kopien zerstört. Der Cache hat Konfigurationsoptionen, um das Fallenlassen bzw. Ablegen einer Kopie vollständig abzuschalten bzw. außer Kraft zu setzen oder es auf einen Teilbereich von Deskriptoren zu beschränken, entsprechend dem aufgerufenen Bit.
  • Ein Cache läßt automatisch eine Seite fallen, für die alle Unterseiten sich in irgendeinem exklusiven Besitzzustand befinden, für welche descriptor.modified und descriptor.atomicmodified beide frei bzw. gelöscht sind. Die Tatsache, daß der Cache einen exklusiven Besitzzustand von allen Unterseiten hat, stellt sicher, daß kein anderer Cache einen Besitz oder eine Kopie von irgendeinem Teil des Datenzustandes hat und ermöglicht es diesem Cache, einen Datenzustand ohne Kommunikation mit irgendeinem anderen Cache zu zerstören. Die Tatsache, daß descriptor.modified und descriptor.atomicmodified beide frei bzw. gelöscht sind, zeigt an, daß keine Änderungen von Daten oder des unteilbaren Zustandes (einschließlich eines Überganges von einem unteilbaren Zustand in einen übergangsweise unteilbaren Zustand als Folge einer gsp.wt-Anweisung) aufgetreten ist, seit die SVA-Seite erzeugt worden ist oder zuletzt durch das Betriebssystem 51 abgefragt wurde. Das Speichersystem geht von der Annahme aus, daß das Betriebssystem 51 eine Kopie der Seitendaten und des atomaren Zustandes in einem Sekundärspeicher hat, der verwendet werden, kann, um die SVA-Seite wiederherzustellen und zerstört diese Seite. Der Cache hat Konfigurationsoptionen, um das reine Fallenlassen der Seite vollständig abzuschalten oder es auf einen Teilbereich von Deskriptoren zu beschränken, entsprechend dem aufgerufenen Bit. Man beachte, daß das Betriebssystem niemals in asynchroner Weise descriptor.atomicmodified löschen darf, wenn irgendeine Unterseite sich in dem übergangsweise atomaren bzw. unteilbaren Zustand befindet. Man beachte, daß das Einstellen von descriptor.held nicht garantiert, daß die individuellen Unterseiten in dem lokalen Cache vorhanden sind. Weiterhin verhindert das einfache Setzen von descriptor.held für eine Seite nicht, daß irgendein anderer Cache die Seite zerstört. Das Betriebssystem 51 muß ausdrücklich einen Vorgang einleiten, um zu verhindern, daß Hardware automatisch eine reine Seite fallenläßt (beispielsweise descriptor.modified setzen).
  • Eine weitere Einschätzung bzw. Diskussion des Fallenlassens von Seiten in einem digitalen Datenverarbeitungssystem, welches gemäß der vorliegenden Erfindung aufgebaut ist, kann man unter Bezug auf die oben zitierten, verwandten Anmeldungen erhalten, beispielsweise der US SN 136,930, eingereicht am 22. Dezember 1987 (US 5,055,999, entsprechend der EP-A-0 322 117), der US SN 370,287, eingereicht am 22. Juni 1989 (US 5,251,398, entsprechend der EP-A-0 404 560), und der US SN 531,506, eingereicht am 31. Mai 1990 (US 5,341,483, entsprechend EP-A-0 458 552).
  • Rekombination von Seiten
  • Bei dem Rekombinationsvorgang wird eine in Besitz befindliche Unterseite von einem Cache auf das Netzwerk 46 gestoßen und andere Caches erhalten eine Gelegenheit, den Besitzzustand anzunehmen. Irgendein annehmender Cache muß bereits einen Deskriptor für die enthaltende Seite zugeordnet haben, ein Cache ordnet einen Deskriptor nicht zu, um den Besitz einer Unterseite anzunehmen, die rekombiniert wird. Das Ziel der Rekombinierung von Seiten besteht darin, die Gesamtzahl von Deskriptoren, die für eine bestimmte SVA-Seite zugeordnet sind, zu reduzieren.
  • Ein Cache gibt eine Rekombinierungsnachricht aus, um eine Unterseite zu rekombinieren. Wenn die Rekombinierungsnachrichten keinen anderen Cache finden, der die Seite übernimmt, so behält der rekombinierende Cache die Daten. Im Ergebnis hat er sich selbst als das Ziel der Rekombinierung gefunden. Wenn irgendein anderer Cache den Besitzzustand annimmt (der nicht exklusiv, exklusiv, unteilbar oder übergangsweise unteilbar sein kann), so verändert der ausgebende Cache seinen Unterseitenzustand nach ungültig.
  • Die Caches versuchen automatisch, Hintergrundaktivität von Unterseiten zu rekombinieren, während eine Speichererneuerung bzw. Speicherreorganisation erfolgt. In jedem Erneuerungsintervall untersucht der Cache einen bestimmten Satz und sucht nach einem akzeptablen Deskriptor. Der Deskriptor darf keine im Untercache aufgenommenen Unterseiten haben, muß irgendeine Unterseite besitzen und darf nicht alle Unterseiten in dem ausschließlichen Besitzzustand haben. Wenn eine solche Unterseite gefunden wird, so gibt der Cache eine Rekombinierungsnachricht für irgendeine im Besitz befindliche Unterseite aus. Der Cache hat Konfigurationsoptionen, um Hintergrundrekombinierung vollständig abzuschalten oder um sie auf einen bestimmten Bereich von Deskriptoren zu beschränken, entsprechend dem aufgerufenen Bit. Die Hintergrundrekombinierung macht es wahrscheinlicher, daß der Cache in der Lage ist, einen Deskriptor für eine neu aufgerufene SVA-Seite zuzuordnen statt einen Zeile-voll-Fehler zu verursachen.
  • Da Seiten, für welche das Referenzbit nicht gesetzt ist, mit geringerer Wahrscheinlichkeit aktiv in Gebrauch sind, bewegen die meisten der Rekombinationen, welche tatsächlich Daten verschieben, diese von einer Zelle, die nicht die Daten für eine Zelle aufruft, zu einer Zelle, welche diese aufruft.
  • Wenn der Cache relativ wenige Unterseiten in Besitzzuständen hält, so kann die Software versuchen, diese Unterseiten mit anderen Caches zu rekombinieren, welche den MRCSP- (Recombine-Subpage-) Befehl verwenden. Anderenfalls könnte sie entscheiden, die gesamte SVA-Seite zu erhalten und sie zu reinigen oder zu zerstören.
  • Wenn der Arbeitssatz sich ändert, kann das Betriebssystem 51 die Konfigurationsparameter modifizieren, welche den Cache steuern. Die Parameter für das reine Fallenlassen bzw. Seitenfallenlassen, das Fallenlassen einer Kopie und Hintergrundrekombinierungen können geändert werden, um sicherzustellen, daß Hardwareaktionen mit der Politik bzw. Strategie der Software des Arbeitssatzes konsistent sind. Eine weitere Darstellung der Rekombinierung in einem digitalen Datenverarbeitungssystem, welches gemäß der Erfindung aufgebaut ist, kann man erhalten unter Bezug auf die oben zitierten, verwandten Anmeldungen, beispielsweise die US SN 136,930, eingereicht am 22. Dezember 1987 (US 5,055,999, entsprechend EP-A-0 322 117), US SN 370,287, eingereicht am 22. Juni 1989 (US 5,251,308, entsprechend EP-A-0 404 560) und US SN 531,506, eingereicht am 31. Mai 1990 (US 5,31,483, entsprechend EP-A-0 458 552).
  • Cachezeilenverteilung
  • Fig. 6 stellt eine bevorzugte Datenstruktur für das Überwachen des Status jeder Zeile jeder Zelle in dem System 10 und insbesondere der Häufigkeit bzw. Zahl des Auftretens des Zustandes "Zeile voll" während der gegebenen Zeitintervalle dar, die als "Quantum" in jeder solchen Zellenzeile bezeichnet werden.
  • Die dargestellte Datenstruktur umfaßt ein SYSTEM-STATUS-Array, welches Einträge hat, die mit "RING: 0 #0", "RING: 0 #1", "RING: 0 #2" usw. bezeichnet werden, jeweils für einen entsprechenden Ring: 0 in dem System 10.
  • Die Einträge des SYSTEM-STATUS-Arrays halten jeweils (oder zeigen auf) ein RING- STATUS-Array des dargestellten Typs. Das Array hat Einträge, die mit "CELL #0", "CELL #1", "CELL #2" usw. bezeichnet sind, jeweils für eine entsprechende Zelle in dem entsprechenden Ring: 0.
  • In ähnlicher Weise halten die Einträge des RING-STATUS-Arrays jeweils ein (oder zeigen auf ein) ZELL-STATUS-Array des dargestellten Typs. Dieses Array hat Einträge, die mit "SET #0", "SET #1", "SET #2" usw. markiert sind, jeweils für eine entsprechende der Cachezeilen in der entsprechenden Zelle.
  • Darüber hinaus halten die Einträge des ZELL-STATUS-Arrays jeweils (oder zeigen jeweils auf ein) ZEILEN-STATUS-Array, welches zumindest drei Einträge hat, die mit "DIESES QUANTUM" und "LETZTES QUANTUM" markiert sind, und welche die Anzahl der "Zeile-voll-Ereignisse" in der entsprechenden Zellzeile während der aktuellen bzw. während früherer Zeitintervalle ebenso wie die Anzahl von Installationsseiten in der Zeile wiedergeben.
  • Das VM-System initialisiert das ZEILEN-STATUS-Array auf Null. Werte in dem Eintrag "DIESES QUANTUM" werden schrittweise durch die Einfanghandhabung jedesmal dann heraufgesetzt, wenn eine "Zeile-voll"-Ausnahme ausgegeben wird. Werte in dem Eintrag DIESES QUANTUM werden periodisch an den zugehörigen Eintrag LETZTES QUANTUM durch die Prozedur VM_CLEAN_LINE übertragen, die unten noch erläutert wird. Gleichzeitig wird der Wert in DIESES QUANTUM auf Null gesetzt.
  • VM-FEHLER ZEILE VOLL
  • Beim Anzeigen einer Ausnahme "Zeile voll" durch die Cachesteuereinheit, beispielsweise 52A und durch Aufrufen der Abfanghandhabung führt das VM-System 51 die Prozedur VM_FAULT_LINE_FULL mit der entsprechenden zentralen Verarbeitungseinheit aus. Wenn VM_FAULT_LINE_FULL aufgerufen wird, so arbeitet es synchron, um zumindest eine Seite aus der fehlerhaften Cachezeile zu "löschen" und den fehlerhaften Vorgang erneut zu starten (beispielsweise ein Anwenderprogramm). Beim Löschen einer Seite ruft die Prozedur VM_FAULT_LINE_FULL und VM_PAGE_CLEAN und VM_PAGE_TRANSFER auf, wie nachstehend beschrieben. VM_FAULT_LINE_FULL nimmt als Eingabe die Kennzeichnung einer Zeile auf einer Zelle an, die den Fehler "Zeile voll" verursacht hat.
  • Eine bevorzugte Abfolge von Schritten für VM_FAULT_LINE_FULL ist in Fig. 7 wiedergegeben und beginnt mit Schritt 60.
  • Schritt Vorgang
  • 60 Beginn
  • 62 Identifizieren eines Seitenkandidaten unter Verwendung der Prozedur VM_PAGE_SELECT und Lesen des Deskriptors dieser Seite.
  • 66 Wenn das modifizierte Bit des Kandidaten nicht gesetzt ist, so tue folgendes:
  • A) Rufe vm_page_clean auf.
  • 68 B) Falls es erfolgreich ist, zurück.
  • 70 Wenn sich mehrere Seiten in der Zeile befinden, so tue folgendes:
  • A) Wähle die nächste Seite aus, und verwendet erneut
  • vm_page_select.
  • B) Gehe zu Schritt 64.
  • 72 Rufe VM_PAGE_TRANSFER auf, um zu sehen, ob der Seitenkandidat in eine andere Zelle verschoben werden kann.
  • 74 Wenn keine Kandidatenzelle gefunden wurde, so schreibe die Seite auf ihre Einrichtung aus.
  • 76 Kehre zurück.
  • VM_PAGE_CLEAN
  • Das VM-System führt die Prozedur VM_PAGE_CLEAN auf Anforderung durch, beispielsweise wenn die Zeile-voll-Ereignisse gehandhabt werden VM_FAULT_LINE_FULL und auf periodischer Basis, beispielsweise als Teil eines Löschvorganges im Hintergrund. Demnach kann die Prozedur aufgerufen werden als Teil eines synchronen oder asynchronen Vorganges.
  • Wenn VM_PAGE_CLEAN aufgerufen wird, so versucht es, zumindest eine minimale Anzahl an Seiten auf jeder Zeile durch Fallenlassen, Rekombinieren oder das Übertragen von Seiten freizuhalten. Der Vorgang nimmt als Eingangsgröße die Adresse einer zu löschenden Seite an und liefert als Ausgangsgröße ein Statussignal.
  • Eine bevorzugte Abfolge von Schritten für VM_PAGE_CLEAN ist in Fig. 8 wiedergegeben, beginnend mit Schritt 78.
  • Schritt Vorgang
  • 78 Beginn.
  • 80 Setze den Rückkehrstatus auf VM_PAGE_NOT_CLEANED.
  • 82 Bestimme die Anzahl von Unterseiten der Eingangsseite der Zelle.
  • 84 Wenn zumindest eine Unterseite nicht exklusiv ist, so tue folgendes:
  • A) Für jede Unterseite, die Besitz dieser Zelle ist, gib die Rekombinationsanweisung aus.
  • B) Setze Status auf VM_PAGE_CLEAN_ATTEMPTED.
  • C) Kehre zurück (Return).
  • 86 Anderenfalls, wenn das Bit atomic modified gesetzt ist, so tue folgendes:
  • A) Hole den unteilbaren Zustand für die Unterseiten.
  • B) Wenn keine der Unterseiten im unteilbaren Zustand ist, so mache folgendes:
  • i) Lösche das Bit atomic modified.
  • ii) Setze Status auf VM_PAGE_CLEANED.
  • iii) Kehre zurück (Return).
  • 88 Bestimme, welche Zeile die Seite enthält.
  • 90 Rufe VM_PAGE_TRANSFER auf, um die Verschiebung der Seite zu einer anderen Zelle zu versuchen.
  • 92 Falls nicht erfolgreich, kehre zurück.
  • 94 Setze Status auf VM_PAGE_CLEAN_ATTEMPTED.
  • 96 Kehre zurück.
  • VM-SEITENÜBERTRAGUNG
  • Das VM-System führt den Vorgang VM_PAGE_TRANSFER aus, um zu bestimmen, ob eine erste Zelle den Besitz einer Seite von einer zweiten Zelle übernehmen kann. Wenn dies der Fall ist, so signalisiert es der ersten Zelle, den Besitz zu übernehmen. VM_PAGE_TRANSFER wird beispielsweise durch VM_PAGE_CLEAN aufgerufen. Der Vorgang VM_PAGE_TRANSFER akzeptiert als Eingangsgröße die Adresse einer zu übertragenden Seite und erzeugt als Ausgangsgröße ein Statussignal.
  • VM_PAGE_TRANSFER durchsucht die Datenstruktur nach Fig. 6, um zu bestimmen, welcher Cache ausreichend Platz in seiner entsprechenden Cachezeile hat, um eine übertragene Seite aufzunehmen. Seitenspezifische Parameter können verwendet werden, um die Sequenz zu bestimmen, in welcher Cachekandidaten ausgewählt werden. Beispielsweise werden in einer bevorzugten Ausführungsform die Cachekandidaten, in die transferiert werden soll, aus speziellen Verarbeitungszellen in demselben Ring: 0 ausgewählt, in dem sich auch der übertragende Cache befindet. Wenn die entsprechenden Leitungen all dieser lokalen Caches voll sind, so kann VM_PAGE_TRANSFER unter den Verarbeitungszellen anderer Ring: 0s auswählen.
  • Eine bevorzugte Sequenz von Schritten für VM_PAGE_TRANSFER ist in Fig. 9 wiedergegeben, beginnend mit Schritt 98.
  • Schritt Vorgang
  • 98 Beginne.
  • 100 Setze Status auf VM_NORMAL.
  • Setze target_ring: 0 auf den in diesem Prozeß aufgelisteten Ring: 0.
  • 102 Starten der Schleife.
  • 104 Durchsuche jeden Eintrag in vm_line_status ring[target_ring: 0] (siehe Fig. 6), um diejenige Zelle mit der geringsten Rate an Zeile-voll-Ereignissen zu finden.
  • 106 Wenn seine Zeile-voll-Rate größer als die von VM_LINE_FULL_RATE_TARGET ist, so tue das folgende:
  • A) Setze target_ring: 0 auf den nächsten Ring: 0.
  • B) Wenn der neue target_ring: 0 nicht schon untersucht worden ist, so gehe zurück zu Schritt 102.
  • 108 Wenn kein Zellkandidat gefunden wurde, so setze den Status auf VM_PAGE_NOT_TRANSFERRED und kehre zurück.
  • 110 Wenn ein Zellkandidat gefunden wurde, so tue das folgende:
  • A) Lesen der Zusammenfassungsbits der Seite.
  • B) Rufe enqueue_cell_msg auf (Warten auf die Seite), um eine Anforderung an eine andere Zelle zu senden, um die Unterseiten zu übernehmen, die aktuell im Besitz dieser Zelle sind.
  • 112 C) Wenn erwacht, kehre zurück.
  • VM_PAGE_TAKE_OWNERSHIP
  • Das VM-System führt den Vorgang VM_PAGE_TAKE_OWNERSHIP aus, um den Besitz einer Seite von einer anderen Zelle zu übernehmen. Dieser Vorgang wird aufgerufen durch die Handhabungseinrichtung für Zwischenzellnachrichten, die ihrerseits eine Nachricht trägt bzw. übermittelt, die durch eine andere Zelle angezeigt wird, welche VM_PAGE_TRANSFER ausführt. VM_PAGE_TAKE_OWNERSHIP akzeptiert als Eingang die Adresse einer zu übertragenden Seite.
  • Eine bevorzugte Sequenz von Schritten für VM_PAGE_TAKE_OWNERSHIP ist in Fig. 10 wiedergegeben, beginnend bei Schritt 114.
  • Schritt Vorgang
  • 116 Gib die Anweisung prefetch-exclusive (hole den Exklusivzustand vorab heran) für jede Unterseite in der Seite aus.
  • 118 Rufe den Weckvorgang auf, mit der Seitenadresse als Kanal, um den Vorgang aufzuwecken, der die Anforderung der Seitenübernahme erzeugt hat.
  • 120 Kehre zurück.
  • VM_CLEAN_LINE
  • Das VM-System in jeder Verarbeitungszelle führt den Vorgang VM_CLEAN_LINE periodisch aus, um die Anzahl der gelöschten bzw. freien Seiten in dieser Zelle oberhalb eines Grenzwertes zu halten, VM_LINE_FULL_TOT_HIGH. Der Vorgang wird vorzugsweise aufgerufen durch den Softwaretakt als Teil der Leitung der Ausrufschlange.
  • Kurz gesprochen geht auf jeder Zelle das VM-System (welches einen "Daemon" ausführt) in einer Schleife durch den Cache der Zelle und versucht, Seiten auf Zeilen zu reinigen, die eine große Anzahl von Zeile-voll-Ereignissen hatten. Diese Reinigung erfolgt auf einem von vier Wegen: (1) durch Ausgeben einer Rekombinierung lokaler Unterseiten, (2) durch Löschen von atomic modified- Bits auf Seiten, die nicht modifiziert worden sind und die keine Seiten im unteilbaren Zustand enthalten, (3) durch Abfragen einer anderen Zelle, um einen Besitz der Seite zu übernehmen, und (4) durch Kopieren einer Seite auf eine Festplatte.
  • Eine bevorzugte Abfolge von Schritten für VM_CLEAN_LINE ist in Fig. 11 wiedergegeben, beginnend mit Schritt 122.
  • Schritt Vorgang
  • 122 Beginn.
  • 124 Hole die Ringnummer der Zelle. Hole auch die Anzahl von Zeile-voll-Ereignissen (siehe Fig. 6) für diese Zelle.
  • 126 Wenn die Gesamtzahl von Zeile-voll-Ereignissen für diese Zelle (aus dem Zellaufbau) die Seite dem letzten Ablauf dieses Vorganges größer ist als VM_LINE_FULL_TOT_HIGH, so tue folgendes:
  • A) Wenn time to wait (Wartezeit) größer als
  • VM_CLEAN_DELAY MIN ist, so erniedrige es um
  • VM_CLEAN_DELAY DELTA.
  • Wenn die Gesamtzahl der "Zeile-voll"-Ereignisse für diese Zelle (aus dem Zellaufbau) seit dem letzten Lauf dieses Vorganges geringer ist als VM_LINE_FULL_TOT_LOW, so tue folgendes:
  • A) Wenn time_to_wait kleiner ist als
  • VM_CLEAN_DELAY_MAX, so vergrößere es um
  • VM_CLEAN_DELAY_DELTA.
  • 128 Setze die Gesamtzahl von Zeile-voll-Ereignissen für die Zelle auf Null. Setze num_lines_tested auf Null.
  • 130 Starten der Schleife.
  • 132 Wenn num_lines_tested gleich VM_LINE_TEST_MAX ist, so tue folgendes:
  • A) Rufe eine Unterbrechung (Timeout) auf, um VM_CLEAN_LINE zurück auf die Ausrufschlange zu setzen.
  • B) Kehre zurück.
  • 134 Setze line_to_test Zelle last_line_tested + 1.
  • 136 Wenn die Anzahl von Ereignissen "Zeile voll" für diese Zeile in diesem Quantum und in dem letzten Quantum beidesmal niedriger als VM_LINE_FULL_THRESH waren, so tue folgendes:
  • A) Setze Zelle last_line tested auf line_to_test.
  • B) Gehe zurück zu Schritt 130.
  • 138 Wenn ein volles Zeitquantum seit dem letzten Mal vergangen ist, als dieser Code ablief, so tue folgendes:
  • A) In line_status dieser Zelle setze last_quantum auf this_quantum.
  • B) In line_status dieser Zelle setze this_quantum auf Null.
  • 140 Gib eine Anweisung find-page-local aus, um zu versuchen, eine Seite in der Zeile zu finden, die nicht modifiziert ist, jedoch atomic-modified gesetzt ist. Falls eine gefunden wird, so ist dies die Zielseite.
  • 142
  • 142 Wenn keine Zielseite gefunden worden ist, so gib eine Anweisung find-page-local aus, um zu versuchen, eine Seite in der Zeile zu finden, die modifiziert ist, jedoch das aufgerufene Bit nicht gesetzt hat. Falls eine gefunden wird, so ist dies die Zielseite.
  • 144 Wenn keine Zielseite gefunden worden ist, so gib eine Anweisung find-page-local aus, um eine modifizierte Seite in der Zeile zu erhalten.
  • 146 Rufe VM_PAGE_CLEAN auf, um zu versuchen, die Seite zu einer anderen Zelle zu verschieben.
  • 148 Wenn VM_PAGE_CLEAN funktioniert hat, so tue folgendes:
  • A) Setze cell last_line_tested auf line_to_test.
  • B) Gehe zurück zu Schritt 130.
  • 150 Rufe VM_PAGE_TRANSFER auf, um zu versuchen, die Seite zu einer anderen Zelle zu verschieben.
  • 152 Falls es nicht möglich ist, die Seite in eine andere Zelle zu verschieben, kopiere die Seite heraus in ihre Einrichtung.
  • 154 Setze cell last_line_tested auf line_to_test.
  • 156 Gehe zurück zu Schritt 130.
  • VM_PAGE_SELECT
  • Der Vorgang VM_PAGE_SELECT bestimmt, welche Seite in einer Zeile die nächste zu reinigende sein soll. Der Vorgang nimmt als Eingangsgröße die zu suchende Zeile an und liefert als Ausgangsgröße einen Seitenkandidaten zurück.
  • Die Schritte des Vorganges sind die folgenden:
  • 1) Gib eine Anweisung zum Finden einer lokalen Seite aus, die danach auswählt, ob das Referenzbit gesetzt ist, das modified-Bit gesetzt ist, das held-Bit nicht gesetzt ist, das anchor-Bit nicht gesetzt ist und nicht alle Unterseiten im Besitzzustand dieser Zelle sind.
  • 2) Falls keine Seite gefunden wurde, so gib eine Anweisung zum Finden einer lokalen Seite aus, die danach ausgewählt ist, ob atomic modified gesetzt ist, das modified- Bit nicht gesetzt ist, das held-Bit nicht gesetzt ist, das anchor-Bit nicht gesetzt ist und keine der Unterseiten im unteilbaren oder übergangsweise unteilbaren Zustand ist.
  • 3) Falls keine Seite gefunden wurde, so gib eine Anweisung zum Finden einer lokalen Seite aus, die danach ausgewählt ist, daß das Referenzbit nicht gesetzt ist, das modified-Bit gesetzt ist, das held-Bit nicht gesetzt, das anchor-Bit nicht gesetzt ist und nicht alle Unterseiten im Besitz dieser Zelle sind.
  • 4) Falls keine Seite gefunden wurde, so gib eine Anweisung zum Finden einer lokalen Seite aus, die danach auswählt, daß das held-Bit nicht gesetzt und das anchor-Bit nicht gesetzt sind.
  • 5) Wenn noch immer keine Seite gefunden wurde, so rufe time_sleep auf.
  • 6) Gehe zurück zu Schritt 1.
  • Konstanten
  • Die Konstanten, auf welche in der obigen Beschreibung Bezug genommen wurde, können variiert werden, um die Leistungsfähigkeit in Abhängigkeit von der Systemkonfiguration und der Benutzung zu verbessern. Ein beispielhafter Satz von Werten wird nachstehend wiedergegeben.
  • VM_CLEAN_DELAY_MIN = 50 msec
  • VM_CLEAN_DELAY_MAX = 5 sec
  • VM_LINE_FULL_THRESH = 2 (minimale Zahl der Zeile-voll-Ereignisse pro Quantum, um zu bewirken, daß eine Hintergrundreinigung stattfindet).
  • VM_LINE_FULL_RATE_TARGET = 1 (maximale Anzahl der Zeile-voll- Ereignisse/Quantum, um zu ermöglichen, daß eine Zelle ein Kandidat für das Übernehmen einer Seite sein kann).
  • VM_LINE_FULL_TOT_HIGH = 4
  • VM_LINE_FULL_TOT_LOW = 1
  • VM_LINE_TEST_MAX = 32 (maximale Anzahl der in einem Durchlauf des VM-Daemon-Codes zu untersuchenden Zeilen).
  • Installierte Seiten
  • Zumindest eine Seite in jeder Verarbeitungszelle, beispielsweise 18A, 18B und 18C, des Systems 10 wird reserviert durch Setzen des "held"-Bits seines Deskriptors, das heißt desriptor.held und Setzen des "installiert"-Bit in dem Seiteneintrag. Diese Seite wird verwendet, um diejenigen Abschnitte des Betriebssystems 51 zu speichern, die notwendig sind, um Zeile-voll-Fehler aufzulösen, wie es oben beschrieben wurde. Dies ist notwendig, um eine Sackgasse bei "Zeile-voll" auszuschließen, das heißt einen Konflikt zwischen zwei (oder mehr) Zellen, die denselben "Zeile-voll"- Zustand haben.
  • Während die in dem vorstehenden Abschnitt diskutierten Seiten verwendet werden können, um Befehle bzw. Anweisungen des Kernes des Betriebssystems 51 zu speichern, das heißt "Text"- Seite, können Seiten ebenso durch individuelle Zellen reserviert werden, um beispielsweise Teile der Betriebssystemdaten zu speichern.
  • Um eine starke Zunahme von gehaltenen Seiten in irgendeiner Zelle zu vermeiden, verteilt das VM-System vorzugsweise diese Seiten in derselben Art und Weise, in welcher sie die Seiten zwischen mehreren Zellen verteilt, um Zeile-voll-Fehler aufzulösen. Daher kann beispielsweise irgendeine volle Seite von Kerndaten auf einem Teilsatz von Zellen in dem System liegen.
  • Insbesondere sieht man gemäß Fig. 6, daß das CELL-STATUS-Array innerhalb der LINE- STATUS-Einträge die Anzahl von Seiten hält, die in dem "installiert"-Status von der entsprechenden Zelle reserviert sind. Während des Seitenlöschvorganges, der durch den Vorgang VM_CLEAN_LINE ausgeführt wird, kann das VM-System Zellen identifizieren, die mehr als eine vorbestimmte Anzahl von installierten Seiten haben. Ausgewählte gehaltene Seiten, beispielsweise diejenigen, die Systemdaten halten (im Gegensatz zu Systemcode oder Text), können dann zu Zellen verschoben werden, die weniger von diesen Seiten haben.
  • Eine bevorzugte Abfolge von Schritten zum Verteilen installierter Seiten ist in Fig. 12 wiedergegeben, beginnend in Schritt 160.
  • Schritt Vorgang
  • 160 Beginn.
  • 162 Wähle Cachezeilenkandidaten aus.
  • 164 Bestimme die Anzahl verdrahteter Seiten in dem Kandidaten.
  • 166 Wenn die Anzahl installierter Seiten größer als ein erster Grenzwert ist, so gehe zu Schritt 172.
  • 168 Wenn es noch mehr Cachezeilen gibt, die überprüft werden müssen, so gehe zu Schritt 162.
  • 170 Kehre zurück.
  • 172 Überprüfe die nächste Zelle.
  • 174 Wenn (a) die Anzahl installierter Seiten in der nächsten Zelle kleiner ist als ein zweiter Grenzwert, und (b) die Differenz zwischen der Anzahl installierter Seiten in dieser nächsten Zelle und der Anzahl von installierten Seiten in der vorherigen Zeile kleiner ist als ein dritter Grenzwert, so übertrage eine installierte Seite von der vorherigen Zelle in diese nächste Zelle und kehre zurück.
  • 176 Wenn die Anzahl der überprüfen Zellen kleiner ist als ein vierter Grenzwert, so gehe zu Schritt 172.
  • 178 Wenn noch mehr Cachezeilen zu überprüfen sind, so gehe zu Schritt 162.
  • 180 Kehre zurück.
  • Zusammenfassung
  • Das Vorstehende beschreibt ein verbessertes digitales Datenverarbeitungssystem, welches die oben erwähnten Aufgaben löst. Insbesondere beschreibt es ein digitales Datenverarbeitungssystem, welches in effizienter Weise die Datenzuordnung zwischen einer Vielzahl verteilter Speicherelemente verwaltet. Die Fachleute auf diesem Gebiet erkennen, daß die oben beschriebenen Ausführungsformen nur beispielhaft sind und daß andere Vorrichtungen und Verfahren - einschließlich Modifikationen, Ergänzungen und Weglassungen - in den Schutzumfang der Erfindung fallen.
  • Beispielsweise erkennt man, daß die oben gegebene Lehre auf andere Multiprozessorsysteme mit verteiltem Speicher angewendet werden können, von beispielsweise dem beschriebenen Typ, z. B. diejenigen, die eine unterschiedliche Ringkonfigurierung haben. Anhand eines anderen Beispiels erkennt man, daß abweichende Datenstrukturen verwendet werden können, um den Beanspruchungsstatus der Cachezeilen zu speichern, so daß äquivalente, jedoch veränderte Vorgänge verwendet werden können, um Daten zwischen entsprechenden Zeilen von Caches zu übertragen, und, anhand eines anderen Beispiels, daß Parameter, die verwendet werden, um zu bestimmen, welche Seiten zwischen Cachezeilen übertragen werden sollen und welche Caches diese Seiten übertragen sollen, gemäß den Seitenerfordernissen variiert werden können.

Claims (30)

1. Digitaler Datenprozessor mit einer Mehrzahl von Verarbeitungszellen (18A, 18B..), welche durch ein Netzwerk (20A, 20B...) miteinander verbunden sind, wobei jede Verarbeitungszelle ein zugehöriges Speicherelement (42A, 42B...) umfaßt, das eine Mehrzahl von Sätzen (Bezugszeichen "SET STATUS", Fig. 6) hat, wobei jeder Satz zumindest eine Seite speichert und jeder Satz, der durch das Speicherelement jeder Verarbeitungszelle instandgehalten wird, jeweils einem der Sätze entspricht, die durch das Speicherelement jeder anderen der Verarbeitungszellen instandgehalten werden, und dadurch gekennzeichnet, daß
eine der Verarbeitungszellen als eine erste Verarbeitungszelle aufweist:
einen Seitendistributor (Ausnahme "line full"), um festzustellen, ob ein erster der Sätze in dem zugehörigen Speicherelement einen vorbestimmten Speichereinsatzzustand erreicht, und
ein Seitenübertragungselement (52A, 52B, ... und Fig. 10), um ein Übertragungsanforderungssignal nach einer ausgewählten Seite in dem ersten der Sätze zu erzeugen und an eine ausgewählte der anderen Verarbeitungszellen als eine sich bewerbende Verarbeitungszelle (Zellkandidat) zu übermitteln, und zwar in Reaktion darauf, daß der Seitendistributor feststellt, daß ein erster der Sätze den vorbestimmten Speichereinsatzzustand erreicht hat, wobei das Übertragungsanforderungssignal dazu dient, eine Übertragung der ausgewählten Seite aus dem ersten der Sätze in den entsprechenden Satz in dem Speicherelement der sich bewerbenden Verarbeitungszelle auszulösen,
wobei die sich bewerbende Verarbeitungszelle ein Besitzübernahmeelement (52A, 52B... und Fig. 20) aufweist, welches auf das Übertragungsanforderungssignal zum Erzeugen einer Anforderung nach einem Besitzzugriff auf die ausgewählte Seite reagiert.
2. Digitaler Datenprozessor nach Anspruch 1, welcher weiterhin eine Steuereinheit (52A, 52B ...) aufweist, die mit der ersten Verarbeitungszelle und der sich bewerbenden Verarbeitungszelle verbunden ist, um auf das Besitzanforderungssignal zu reagieren, um
Speicherraum für die ausgewählte Seite innerhalb eines der durch das Speicherelement der Verarbeitungsbewerberzelle instandgehaltenen Sätze zuzuordnen,
die ausgewählte Seite von der ersten Verarbeitungszelle zu der Verarbeitungsbewerberzelle zu übertragen zwecks Speicherung in dem Speicherraum, und
die Zuordnung von Speicherraum in dem ersten der Sätze aufzuheben, welcher durch das Speicherelement der ersten Verarbeitungszelle instandgehalten wird, in welcher die ausgewählte Seite gespeichert war.
3. Digitaler Datenprozessor nach Anspruch 2, wobei
die erste Verarbeitungszelle einen Prozessor (40A, 40B, ...) aufweist, um eine Zuordnungsanforderung zu erzeugen, um eine Zuordnung der ausgewählten Seite in dem Speicherelement der ersten Verarbeitungszelle anzufordern,
wobei die Steuereinheit auf die Zuordnungsanforderung reagiert, um ein Signal "line-full" (Zeile voll) zu erzeugen, und
der Seitendistributor auf das Signal "line-full" reagiert, um das Seitenübertragungselement aufzurufen.
4. Digitaler Datenprozessor nach Ansprüch 3, wobei die Steuereinheit das Signal "line-full" in Reaktion auf eine Anforderung erzeugt, die ausgewählte Seite in einem vollen Satz eines der Speicherelemente zuzuordnen, welches voll ist.
5. Digitaler Datenprozessor nach Anspruch 1, welcher weiterhin eine Tabelle (Fig. 6, "Zellzustand") aufweist, um eine Statusanzeige zu speichern, welche einen aus einer Mehrzahl von Zuständen bzw. Bedingungen eines zugeordneten der Sätze innerhalb des Speicherelements jeder Verarbeitungszelle anzeigt.
6. Digitaler Datenprozessor nach Anspruch 5, wobei der Seitendistributor das Seitenübertragungselement in Reaktion darauf aufruft, daß die Tabelle einen Statusindikator hat, welcher einen ausgewählten der Statuszustände bzw. -bedingungen anzeigt.
7. Digitaler Datenprozessor nach Anspruch 5, wobei der Statusindikator eine Zählung der Male repräsentiert, um welche der zugeordnete der Sätze innerhalb eines vorbestimmten Zeitintervalls gefüllt wird.
8. Digitaler Datenprozessor nach Anspruch 7, wobei
die erste Verarbeitungszelle einen Zuordnungsanforderer (52A, 52B, ...; Fig. 9) aufweist, um Zuordnungsanforderung zu erzeugen, die eine Zuordnung der ausgewählten Seite in ihrem zugehörigen Speicherelement anfordern,
wobei der Prozessor eine Steuereinheit zum Erzeugen eines Signals "line-full" in Reaktion auf ausgewählte der Zuordnungsanforderungen aufweist,
der digitale Datenprozessor weiterhin eine Tabellensteuerung (52A, 552B, ...) aufweist, um den Statusindikator, der zu einem der Sätze gehört, in Reaktion darauf um einen Schritt heraufzusetzen, daß für den einen der Sätze das Signal "line-full" erzeugt wird.
9. Digitaler Datenprozessor nach Anspruch 7, wobei der Seitendistributor ein Seitenreinigungs- (line-clean-)-Element (52A, 52B, ...; Fig. 11) aufweist, um das Seitenübertragungselement in Reaktion darauf aufzurufen, daß die Zählung einen vorbestimmten Wert innerhalb des angegebenen Zeitintervalls übersteigt.
10. Digitaler Datenprozessor nach Anspruch 1, wobei der Seitendistributor einen Seitenauswähler (52A, 52B, ...) aufweist, um die ausgewählte Seite für die Übertragung auszuwählen.
11. Digitaler Datenprozessor nach Anspruch 10, wobei der Seitenauswähler für die Übertragung ausgewählte der modifizierten Seiten auswählt, von welchen kein Teil derselben in einem Cache für die Verwendung durch einen diesem zugeordneten Prozessor gespeichert ist.
12. Digitaler Datenprozessor nach Anspruch 10, welcher weiterhin eine Seitenhaltesteuerung (52A, 52B, ...; Fig. 12) aufweist, um zu verhindern, daß die ausgewählte Seite in einem Satz für die Übertragung ausgewählt wird.
13. Digitaler Datenprozessor nach Anspruch 12, wobei die ausgewählte Seite ausgewählte Befehle für den Betrieb des digitalen Datenprozessors speichert.
14. Digitaler Datenprozessor nach Anspruch 12, wobei die ausgewählte Seite Befehle für den Betrieb der Verteilungseinrichtung speichert.
15. Digitaler Datenprozessor nach Anspruch 1, wobei der Seitendistributor eine Auswahleinrichtung (52A, 52B, ...; Fig. 9106) für eine Verarbeitungsbewerberzelle aufweist, um eine der Verarbeitungszellen in Reaktion auf einen Wert eines vorbestimmten Parameters als die Verarbeitungsbewerberzelle auszuwählen.
16. Digitaler Datenprozessor nach Anspruch 15, wobei die Auswahleinrichtung für die Verarbeitungszelle die Verarbeitungsbewerberzelle gemäß einer Suche nach einer oder mehreren Verarbeitungszellen auswählt, die in Bezug auf die erste Verarbeitungszelle lokal ist bzw. sind.
17. Digitaler Datenprozessor nach Anspruch 15, wobei die Auswahleinrichtung für die Verarbeitungszelle die Verarbeitungsbewerberzelle auf der Basis einer Suche danach auswählt, welche der Verarbeitungszellen bezüglich der ersten Verarbeitungszelle nicht lokal sind, und zwar in Reaktion darauf, daß eine Verarbeitungsbewerberzelle aus Verarbeitungszellen, die für die erste Verarbeitungszelle lokal sind, nicht identifiziert werden konnte.
18. Digitaler Datenprozessor nach einem der Ansprüche 1 bis 17, welcher weiterhin einen sekundären Datenspeicher für die Bereitstellung sekundären Speicherraums aufweist, wobei der Seitendistributor darauf reagiert, daß eine Übertragung einer Seite an eine Verarbeitungsbewerberzelle innerhalb der angegebenen Periode fehlschlägt, nachdem das zugehörige Speicherelement den vorbestimmten Speichereinsatzzustand erreicht hat, um die Seite in den sekundären Datenspeicher zu kopieren.
19. Verfahren zum Betreiben eines digitalen Datenprozessors mit einer Mehrzahl von Verarbeitungszellen, die durch ein Netzwerk miteinander verbunden sind, wobei jede Verarbeitungszelle ein zugehöriges Speicherelement umfaßt, das eine Mehrzahl von Sätzen hat, jeder Satz eine Seite speichert und jeder dieser Sätze einem entsprechenden Satz des Speicherelements aller anderen Verarbeitungszellen entspricht, gekennzeichnet durch zumindest eine Verarbeitungszelle als erste Verarbeitungszelle, einschließlich eines Seitendistributors, um zu bestimmen, wann ein erster der Sätze in dem zugehörigen Speicherelement einen vorbestimmten Speichereinsatzzustand erreicht, wobei das Verfahren die Schritte aufweist: Bestimmen, wann zumindest ein erster der Sätze in dem Speicherelement einer ersten Verarbeitungszelle einen vorbestimmten Speichereinsatzzustand erreicht, und in Reaktion darauf Erzeugen eines Übertragungsanforderungssignals für eine ausgewählte Seite in dem ersten der Sätze und Senden an eine ausgewählte der anderen Verarbeitungszellen, als Verarbeitungsbewerbungszelle, um die Übertragung der ausgewählten Seite von dem ersten der Sätze zu dem entsprechenden Satz in dem Speicherelement einer der Verarbeitungsbewerberzellen auszulösen,
wobei die Verarbeitungsbewerbungszelle in die Lage versetzt wird, eine Anforderung nach einem Besitzzugriff auf eine ausgewählte Seite in Reaktion auf ein solchen Übertragungsanforderungssignal zu erzeugen.
20. Verfahren nach Anspruch 19, welches weiterhin den Schritt aufweist, daß auf das Besitzanforderungssignal reagiert wird, indem Speicherraum für die ausgewählte Seite innerhalb eines Satzes des Speicherelements der Verarbeitungsbewerberzelle zugeordnet wird,
die ausgewählte Seite aus der ersten Verarbeitungszelle in die Verarbeitungsbewerberzelle für eine Speicherung in dem Speicherraum übertragen wird, und
Aufheben der Zuordnung des Speicherraumes in dem ersten der Sätze, welcher durch das Speicherelement der ersten Verarbeitungszelle instandgehalten wird, in welcher die ausgewählte Seite gespeichert worden war.
21. Verfahren nach Anspruch 20, welches weiterhin die Schritte aufweist:
Erzeugen einer Zuordnungsanforderung für die Anforderung einer Zuordnung einer Seite in dem Speicherelement der ersten Verarbeitungszelle,
Reagieren auf die Zuordnungsanforderung zum Erzeugen eines Signals "line-full" (Zeile voll), Reagieren auf das Signal "line-full", um den ausgewählten Seitenübertragungsschritt auszuführen.
22. Verfahren nach Anspruch 21 mit dem Schritt, daß das Signal "line-full" in Reaktion auf eine Anforderung erzeugt wird, eine Seite in einem gefüllten Satz eines Speicherelementes zuzuordnen.
23. Verfahren nach Anspruch 19 mit dem Schritt, daß der Status für jeden der entsprechenden Sätze innerhalb der Speicherelemente der Verarbeitungszellen gespeichert wird.
24. Verfahren nach Anspruch 23, wobei das System weiterhin eine Tabelle umfaßt, der bezüglich jedes Satzes ein Zählwort zugeordnet ist, wobei das Verfahren die Schritte aufweist Anforderung einer Zuordnung einer Seite in dem Speicherelement der ersten Verarbeitungszelle,
Erzeugen eines Signals "line-full" in Reaktion auf ausgewählte der Zuordnungsanforderungen, und
Reagieren auf das Signal "line-full" durch Heraufsetzen der Zählung des entsprechenden Satzes um einen Schritt.
25. Verfahren nach Anspruch 24, welches weiterhin den Schritt aufweist, daß eine Reaktion daraufhin erfolgt, daß der Zählwert innerhalb des angegebenen Zeitintervalls größer wird als ein vorbestimmter Wert, indem ein Seitenübertragungsschritt ausgelöst wird, um die ausgewählte Seiten an die Verarbeitungsbewerberzelle zu übermitteln.
26. Verfahren nach Anspruch 19, wobei die ausgewählte Seite entsprechend zumindest einem vorbestimmten Parameter ausgewählt wird.
27. Verfahren nach Anspruch 19, welches weiterhin den Schritt aufweist, daß die Verarbeitungsbewerberzelle aus den anderen Zellen auf Basis zumindest eines vorbestimmten Parameters identifiziert wird.
28. Verfahren nach Anspruch 27, welches weiterhin den Schritt des Auswählens der Verarbeitungsbewerberzelle gemäß einer Suche nach einer oder mehreren Verarbeitungszellen aufweist, die bezüglich der ersten Verarbeitungszelle lokal sind.
29. Verfahren nach Anspruch 28, welches weiterhin den Schritt aufweist, daß die Verarbeitungsbewerberzellen auf der Basis einer Suche nach zumindest ausgewählten Verarbeitungszellen ausgewählt wird, die bezüglich der ersten Verarbeitungszelle nicht lokal sind, und zwar in Reaktion darauf, daß eine Identifizierung der Bewerberzelle aus den Verarbeitungszellen, die bezüglich der ersten Verarbeitungszelle lokal sind, fehlgeschlagen ist.
30. Verfahren nach einem der Ansprüche 19 bis 29, wobei das System weiterhin einen sekundären Datenspeicher aufweist, welcher eine sekundäre Speicherung zumindest eines Bereiches der Seite bereitstellt, wobei das Verfahren weiterhin den Schritt aufweist, daß auf einen Fehlschlag der Übertragung der ausgewählten Seite in die Verarbeitungsbewerberzelle innerhalb einer angegebenen Zeitperiode, nachdem das zugehörige Speicherelement den vorbestimmten Speichereinsatzzustand erreicht hat, reagiert wird, um die ausgewählte Seite in den sekundären Datenspeicher zu kopieren.
DE69232881T 1991-09-20 1992-09-16 Verbesserter Digitalprozessor mit verteiltem Speichersystem Expired - Fee Related DE69232881T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US76313291A 1991-09-20 1991-09-20

Publications (2)

Publication Number Publication Date
DE69232881D1 DE69232881D1 (de) 2003-02-06
DE69232881T2 true DE69232881T2 (de) 2003-08-28

Family

ID=25066967

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69232881T Expired - Fee Related DE69232881T2 (de) 1991-09-20 1992-09-16 Verbesserter Digitalprozessor mit verteiltem Speichersystem

Country Status (6)

Country Link
US (1) US6088758A (de)
EP (1) EP0539012B1 (de)
JP (1) JPH05225048A (de)
AT (1) ATE230502T1 (de)
CA (1) CA2078310A1 (de)
DE (1) DE69232881T2 (de)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5931903A (en) * 1995-12-20 1999-08-03 Tandem Computers Incorporated Computer system data I/O by reference among multiple CPUS
US5941959A (en) * 1995-12-20 1999-08-24 Tandem Computers Incorporated System for transferring a data stream to a requestor without copying data segments to each one of multiple data source/sinks during data stream building
US5954794A (en) * 1995-12-20 1999-09-21 Tandem Computers Incorporated Computer system data I/O by reference among I/O devices and multiple memory units
US5852719A (en) * 1995-12-20 1998-12-22 Tandem Computers Incorporated System for transferring data over a network in which a data source sends only a descriptor which a data sink uses to retrieve data
JP3705305B2 (ja) * 1996-05-16 2005-10-12 カシオ計算機株式会社 音声記憶再生装置
US5950226A (en) * 1996-07-01 1999-09-07 Sun Microsystems, Inc. Multiprocessing system employing a three-hop communication protocol
US5897657A (en) * 1996-07-01 1999-04-27 Sun Microsystems, Inc. Multiprocessing system employing a coherency protocol including a reply count
DE69933376T2 (de) 1998-06-05 2007-08-02 Arkray, Inc. Vorrichtung zur messung der ionenaktivität
US6785278B1 (en) * 1998-12-10 2004-08-31 International Business Machines Corporation Methods, systems and computer program products for hashing address values
JP4036992B2 (ja) * 1998-12-17 2008-01-23 富士通株式会社 キャッシュモジュール間でデータを動的に管理するキャッシュ制御装置および方法
US6857051B2 (en) * 1998-12-23 2005-02-15 Intel Corporation Method and apparatus for maintaining cache coherence in a computer system
US6321238B1 (en) * 1998-12-28 2001-11-20 Oracle Corporation Hybrid shared nothing/shared disk database system
US6826668B1 (en) * 1999-10-05 2004-11-30 International Business Machines Corporation System and method for reorganizing data on a disk drive to improve spatial locality
US6363336B1 (en) * 1999-10-13 2002-03-26 Transmeta Corporation Fine grain translation discrimination
US6678803B2 (en) * 1999-11-03 2004-01-13 Micron Technology, Inc. Method and device to use memory access request tags
US6457107B1 (en) * 2000-02-28 2002-09-24 International Business Machines Corporation Method and apparatus for reducing false sharing in a distributed computing environment
US6742148B1 (en) * 2000-03-06 2004-05-25 Pc-Doctor Inc. System and method for testing memory while an operating system is active
US20030009509A1 (en) * 2001-06-22 2003-01-09 Fish Russell H. Distributed means of organizing an arbitrarily large number of computers
US8086738B2 (en) * 2007-05-24 2011-12-27 Russell Fish Distributed means of organizing an arbitrarily large number of computers
US7103747B2 (en) * 2001-06-28 2006-09-05 Hewlett-Packard Development Company, L.P. Memory table and memory manager for use in managing memory
US6795907B2 (en) * 2001-06-28 2004-09-21 Hewlett-Packard Development Company, L.P. Relocation table for use in memory management
US7640547B2 (en) * 2002-02-08 2009-12-29 Jpmorgan Chase & Co. System and method for allocating computing resources of a distributed computing system
US6895472B2 (en) * 2002-06-21 2005-05-17 Jp Morgan & Chase System and method for caching results
US7376693B2 (en) * 2002-02-08 2008-05-20 Jp Morgan Chase & Company System architecture for distributed computing and method of using the system
US7103628B2 (en) * 2002-06-20 2006-09-05 Jp Morgan Chase & Co. System and method for dividing computations
AU2003256699A1 (en) * 2002-07-23 2004-02-09 Gatechange Technologies, Inc. Self-configuring processing element
AU2003252157A1 (en) * 2002-07-23 2004-02-09 Gatechange Technologies, Inc. Interconnect structure for electrical devices
AU2003254126A1 (en) * 2002-07-23 2004-02-09 Gatechance Technologies Inc Pipelined reconfigurable dynamic instruciton set processor
US7299467B2 (en) * 2002-12-23 2007-11-20 Hewlett-Packard Development Company, L.P. Method and system for minimizing memory access latency in a computer system
US8234517B2 (en) * 2003-08-01 2012-07-31 Oracle International Corporation Parallel recovery by non-failed nodes
US7277897B2 (en) * 2003-08-01 2007-10-02 Oracle International Corporation Dynamic reassignment of data ownership
US7120651B2 (en) * 2003-08-01 2006-10-10 Oracle International Corporation Maintaining a shared cache that has partitions allocated among multiple nodes and a data-to-partition mapping
US7139772B2 (en) 2003-08-01 2006-11-21 Oracle International Corporation Ownership reassignment in a shared-nothing database system
US20050057079A1 (en) * 2003-09-17 2005-03-17 Tom Lee Multi-functional chair
US20050144397A1 (en) * 2003-12-29 2005-06-30 Rudd Kevin W. Method and apparatus for enabling volatile shared data across caches in a coherent memory multiprocessor system to reduce coherency traffic
US7814065B2 (en) * 2005-08-16 2010-10-12 Oracle International Corporation Affinity-based recovery/failover in a cluster environment
US8683572B1 (en) 2008-01-24 2014-03-25 Dunti Llc Method and apparatus for providing continuous user verification in a packet-based network
US8510334B2 (en) * 2009-11-05 2013-08-13 Oracle International Corporation Lock manager on disk
US9009364B1 (en) * 2013-09-03 2015-04-14 Xpliant, Inc. Apparatus and method for accelerated page link list processing in a packet processor operating at wirespeed
US11829333B2 (en) * 2015-05-08 2023-11-28 Chicago Mercantile Exchange Inc. Thread safe lock-free concurrent write operations for use with multi-threaded in-line logging
US20170078367A1 (en) * 2015-09-10 2017-03-16 Lightfleet Corporation Packet-flow message-distribution system
CN116881001B (zh) * 2023-07-04 2024-03-01 中科驭数(北京)科技有限公司 多dpu宿主机的云平台的管控方法、装置、设备及介质

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US28811A (en) * 1860-06-19 Dulcimer
US3731002A (en) * 1970-10-08 1973-05-01 Bell Telephone Labor Inc Interconnected loop data block transmission system
USRE28811E (en) 1970-10-08 1976-05-11 Bell Telephone Laboratories, Incorporated Interconnected loop data block transmission system
US3713096A (en) * 1971-03-31 1973-01-23 Ibm Shift register interconnection of data processing system
US3748647A (en) * 1971-06-30 1973-07-24 Ibm Toroidal interconnection system
US3735362A (en) * 1971-09-22 1973-05-22 Ibm Shift register interconnection system
US3723976A (en) * 1972-01-20 1973-03-27 Ibm Memory system with logical and real addressing
US3800291A (en) * 1972-09-21 1974-03-26 Ibm Data processing system memory relocation apparatus and method
US4011545A (en) * 1975-04-28 1977-03-08 Ridan Computers, Inc. Computer and communications systems employing new architectures
US4031512A (en) * 1975-05-29 1977-06-21 Burroughs Corporation Communications network for general purpose data communications in a heterogeneous environment
US4077059A (en) * 1975-12-18 1978-02-28 Cordi Vincent A Multi-processing system with a hierarchial memory having journaling and copyback
US4141067A (en) * 1977-06-13 1979-02-20 General Automation Multiprocessor system with cache memory
US4245306A (en) * 1978-12-21 1981-01-13 Burroughs Corporation Selection of addressed processor in a multi-processor network
US4240143A (en) * 1978-12-22 1980-12-16 Burroughs Corporation Hierarchical multi-processor network for memory sharing
US4484262A (en) * 1979-01-09 1984-11-20 Sullivan Herbert W Shared memory computer method and apparatus
IT1118355B (it) * 1979-02-15 1986-02-24 Cselt Centro Studi Lab Telecom Sistema di interconnessione tra processori
US4293910A (en) * 1979-07-02 1981-10-06 International Business Machines Corporation Reconfigurable key-in-storage means for protecting interleaved main storage
US4322795A (en) * 1980-01-24 1982-03-30 Honeywell Information Systems Inc. Cache memory utilizing selective clearing and least recently used updating
GB2077468B (en) * 1980-06-04 1984-10-24 Hitachi Ltd Multi-computer system with plural serial bus loops
US4394731A (en) * 1980-11-10 1983-07-19 International Business Machines Corporation Cache storage line shareability control for a multiprocessor system
US4410944A (en) * 1981-03-24 1983-10-18 Burroughs Corporation Apparatus and method for maintaining cache memory integrity in a shared memory environment
US4814979A (en) * 1981-04-01 1989-03-21 Teradata Corporation Network to transmit prioritized subtask pockets to dedicated processors
JPS57166756A (en) * 1981-04-08 1982-10-14 Hitachi Ltd Transmission controlling method
US4410946A (en) * 1981-06-15 1983-10-18 International Business Machines Corporation Cache extension to processor local storage
US4476524A (en) * 1981-07-02 1984-10-09 International Business Machines Corporation Page storage control methods and means
US4488256A (en) * 1981-11-23 1984-12-11 Motorola, Inc. Memory management unit having means for detecting and preventing mapping conflicts
US4432057A (en) * 1981-11-27 1984-02-14 International Business Machines Corporation Method for the dynamic replication of data under distributed system control to control utilization of resources in a multiprocessing, distributed data base system
US4503497A (en) * 1982-05-27 1985-03-05 International Business Machines Corporation System for independent cache-to-cache transfer
US4714990A (en) * 1982-09-18 1987-12-22 International Computers Limited Data storage apparatus
US4625081A (en) * 1982-11-30 1986-11-25 Lotito Lawrence A Automated telephone voice service system
US4598400A (en) * 1983-05-31 1986-07-01 Thinking Machines Corporation Method and apparatus for routing message packets
US5212773A (en) * 1983-05-31 1993-05-18 Thinking Machines Corporation Wormhole communications arrangement for massively parallel processor
US4768144A (en) * 1983-10-25 1988-08-30 Keycom Electronic Publishing, Inc. Method and apparatus for retrieving information distributed over nonconsecutive pages
US4604694A (en) * 1983-12-14 1986-08-05 International Business Machines Corporation Shared and exclusive access control
JPS60136097A (ja) * 1983-12-23 1985-07-19 Hitachi Ltd 連想メモリ装置
JPH06100981B2 (ja) * 1983-12-28 1994-12-12 株式会社日立製作所 記憶階層制御方式
US4622631B1 (en) * 1983-12-30 1996-04-09 Recognition Int Inc Data processing system having a data coherence solution
US4754394A (en) * 1984-10-24 1988-06-28 International Business Machines Corporation Multiprocessing system having dynamically allocated local/global storage and including interleaving transformation circuit for transforming real addresses to corresponding absolute address of the storage
US4700347A (en) * 1985-02-13 1987-10-13 Bolt Beranek And Newman Inc. Digital phase adjustment
US5067071A (en) * 1985-02-27 1991-11-19 Encore Computer Corporation Multiprocessor computer system employing a plurality of tightly coupled processors with interrupt vector bus
JPH0732401B2 (ja) * 1985-04-24 1995-04-10 株式会社日立製作所 伝送制御方式
EP0211613A3 (de) * 1985-07-31 1989-05-10 Sperry Corporation Vektorendateieinrichtung für wissenschaftlichen Prozessor
US4706080A (en) * 1985-08-26 1987-11-10 Bell Communications Research, Inc. Interconnection of broadcast networks
US4734907A (en) * 1985-09-06 1988-03-29 Washington University Broadcast packet switching network
US4701756A (en) * 1985-09-10 1987-10-20 Burr William E Fault-tolerant hierarchical network
IT1184013B (it) * 1985-12-13 1987-10-22 Elsag Memoria ad elevata capacita accessibile a diverse agenti
IT1184015B (it) * 1985-12-13 1987-10-22 Elsag Sistema multiprocessore a piu livelli gerarchici
US4742447A (en) * 1986-01-16 1988-05-03 International Business Machines Corporation Method to control I/O accesses in a multi-tasking virtual memory virtual machine type data processing system
US4730249A (en) * 1986-01-16 1988-03-08 International Business Machines Corporation Method to operate on large segments of data in a virtual memory data processing system
US4780873A (en) * 1986-05-19 1988-10-25 General Electric Company Circuit switching network with routing nodes
US4951193A (en) * 1986-09-05 1990-08-21 Hitachi, Ltd. Parallel computer with distributed shared memories and distributed task activating circuits
US4811216A (en) * 1986-12-22 1989-03-07 American Telephone And Telegraph Company Multiprocessor memory management method
US4887204A (en) * 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
IT1217130B (it) * 1987-03-12 1990-03-14 Cselt Centro Studi Lab Telecom Sistema di commutazione in tecnologia ottica
US4984235A (en) * 1987-04-27 1991-01-08 Thinking Machines Corporation Method and apparatus for routing message packets and recording the roofing sequence
US4797880A (en) * 1987-10-07 1989-01-10 Bell Communications Research, Inc. Non-blocking, self-routing packet switch
IT1223142B (it) * 1987-11-17 1990-09-12 Honeywell Bull Spa Sistema multiprocessore di elaborazione con multiplazione di dati globali
US5119481A (en) * 1987-12-22 1992-06-02 Kendall Square Research Corporation Register bus multiprocessor system with shift
US5251308A (en) * 1987-12-22 1993-10-05 Kendall Square Research Corporation Shared memory multiprocessor with data hiding and post-store
US5282201A (en) * 1987-12-22 1994-01-25 Kendall Square Research Corporation Dynamic packet routing network
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5226039A (en) * 1987-12-22 1993-07-06 Kendall Square Research Corporation Packet routing switch
US5025366A (en) * 1988-01-20 1991-06-18 Advanced Micro Devices, Inc. Organization of an integrated cache unit for flexible usage in cache system design
JP2584647B2 (ja) * 1988-01-28 1997-02-26 株式会社リコー 通信網のノード装置
US4930106A (en) * 1988-08-29 1990-05-29 Unisys Corporation Dual cache RAM for rapid invalidation
US5025365A (en) * 1988-11-14 1991-06-18 Unisys Corporation Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors
US5136717A (en) * 1988-11-23 1992-08-04 Flavors Technology Inc. Realtime systolic, multiple-instruction, single-data parallel computer system
US5101485B1 (en) * 1989-06-29 1996-12-10 Frank L Perazzoli Jr Virtual memory page table paging apparatus and method
US5226175A (en) * 1989-07-21 1993-07-06 Graphic Edge, Inc. Technique for representing sampled images
EP0432075B1 (de) * 1989-11-09 1997-02-26 International Business Machines Corporation Multiprozessor mit relativ atomaren Befehlen
US5226109A (en) * 1990-04-26 1993-07-06 Honeywell Inc. Three dimensional computer graphic symbol generator
EP0459233A3 (en) * 1990-05-29 1992-04-08 National Semiconductor Corporation Selectively locking memory locations within a microprocessor's on-chip cache

Also Published As

Publication number Publication date
DE69232881D1 (de) 2003-02-06
EP0539012B1 (de) 2003-01-02
US6088758A (en) 2000-07-11
EP0539012A3 (de) 1995-05-24
JPH05225048A (ja) 1993-09-03
EP0539012A2 (de) 1993-04-28
CA2078310A1 (en) 1993-03-21
ATE230502T1 (de) 2003-01-15

Similar Documents

Publication Publication Date Title
DE69232881T2 (de) Verbesserter Digitalprozessor mit verteiltem Speichersystem
DE3856552T2 (de) Multiprozessor-Digitaldatenverarbeitungssystem und Verfahren zum Betreiben dieses Systems
DE69231743T2 (de) Prozessintervalabhängige Adressraumverwaltung
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69132945T2 (de) Schalter und Verfahren zum Verteilen von Paketen in Netzwerken
DE69721640T2 (de) Multiprozessor-Rechnersystem und Verfahren zur Steuerung des Verkehrsflusses
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69838367T2 (de) Paralleles Dateiensystem und Verfahren zur unabhängigen Aufzeichnung von Metadaten
DE69022716T2 (de) Mehrrechnersystem mit verteilten gemeinsamen Betriebsmitteln und dynamischer und selektiver Vervielfältigung globaler Daten und Verfahren dafür.
DE69901291T2 (de) Verfahren und vorrichtung zur datenübertragung zwischen der caches von netzwerkknoten
DE69905287T2 (de) Unterbrechungsarchitektur für ein rechnersystem mit nichtuniformem speicherzugriff
DE3751399T2 (de) Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen.
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE69722962T2 (de) Strukturiertes datenspeichersystem mit global adressierbarem speicher
DE69715203T2 (de) Ein Datenverarbeitungssystem mit cc-NUMA (cache coherent, non-uniform memory access) Architektur und im lokalen Speicher enthaltenem Cache-Speicher für Fernzugriff
DE3587960T2 (de) Datenverarbeitungsanlage mit einem Speicherzugriffssteuergerät.
DE69128107T2 (de) Busanordnung für Speicherzugriff
DE69129534T2 (de) Betriebsmittelverwaltung in einem mehrbetriebsmittelsystem
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69832943T2 (de) Sequenzsteuerungsmechanismus für ein switch-basiertes Mehrprozessorsystem
DE69606648T2 (de) Verfahren und vorrichtung zur ablauffolgen von multiprozessoren mit starker affinität
DE3854384T2 (de) Verfahren zum Betreiben eines einen anteilig genutzten virtuellen Speicher verwendenden Multiprozessorsystems.
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE69804099T2 (de) Initialisierung von unterteilten datenobjekten
DE69803478T2 (de) Ein/ausgabe weiterleitung in einem cachekohärenten rechnersystem mit gemeinsam genutztem plattenspeicher

Legal Events

Date Code Title Description
8339 Ceased/non-payment of the annual fee