DE4208924B4 - Verfahren zur Kommunikation zwischen Prozessoren und Parallelverarbeitungscomputer hierfür - Google Patents

Verfahren zur Kommunikation zwischen Prozessoren und Parallelverarbeitungscomputer hierfür Download PDF

Info

Publication number
DE4208924B4
DE4208924B4 DE4208924A DE4208924A DE4208924B4 DE 4208924 B4 DE4208924 B4 DE 4208924B4 DE 4208924 A DE4208924 A DE 4208924A DE 4208924 A DE4208924 A DE 4208924A DE 4208924 B4 DE4208924 B4 DE 4208924B4
Authority
DE
Germany
Prior art keywords
cluster
data
address
transmission
area
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
DE4208924A
Other languages
English (en)
Other versions
DE4208924A1 (de
Inventor
Naoki Hamanaka
Junji Nakagoshi
Tatsuo Higuchi
Hiroyuki Chiba
Shin'ichi Shutoh
Shigeo Takeuchi
Yasuhiro Ogata
Taturu Toba
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.)
Hitachi ULSI Engineering Corp
Hitachi Ltd
Original Assignee
Hitachi ULSI Engineering Corp
Hitachi Ltd
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
Priority claimed from JP05646991A external-priority patent/JP3169624B2/ja
Priority claimed from JP24109491A external-priority patent/JP3375649B2/ja
Application filed by Hitachi ULSI Engineering Corp, Hitachi Ltd filed Critical Hitachi ULSI Engineering Corp
Publication of DE4208924A1 publication Critical patent/DE4208924A1/de
Application granted granted Critical
Publication of DE4208924B4 publication Critical patent/DE4208924B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass

Abstract

Intraprozessorkommunikationsverfahren in einem Parallelprozessorsystem mit mehreren Clustern (100), von denen jeder mindestens einen Prozessor (1; 501, 502) und einen von diesem mindestens einen Prozessor zu nutzenden Hauptspeicher (2; 505) aufweist, und mit einem Netzwerk (4; 509) zum Verbinden der mehreren Cluster, wobei mindestens ein Prozeß mit mindestens einem zugeordneten virtuellen Raum innerhalb jedes Clusters ausgeführt wird, unter Steuerung durch ein jedem Cluster zugeordnetes Betriebssystem, und das Intraprozessorkommunikationsverfahren zum Übertragen von Übertragungsdaten von einem einem ersten Cluster zugeordneten Übertragungsursprungsprozeß zu einem einem zweiten Cluster zugeordneten Übertragungsempfangsprozeß durch folgende Schritte gekennzeichnet ist:
Sicherstellen eines im Hauptspeicher residenten reellen Kommunikationsbereichs (13) innerhalb jedes Clusters für jeden dem Cluster zugeordneten Prozeß, wobei der reelle Kommunikationsbereich in einen virtuellen Kommunikationsbereich (11) innerhalb des jedem Cluster zugeordneten virtuellen Raums abgebildet wird;
Auswählen eines dem Übertragungsempfangsprozeß zugeordneten, reellen Kommunikationsbereichs in dem ersten Cluster, sowie einer virtuellen Schreibeadresse, bei der die Übertragungsdaten innerhalb eines dem...

Description

  • Die Erfindung betrifft ein Verfahren zur Datenübertragung zwischen Prozessoren in einem Parallelprozessor mit dem Ziel, Hochgeschwindigkeitsberechnung zu erreichen, insbesondere in einem Parallelprozessor vom MIMD-Typ mit verteilten Speichern.
  • Grob gesprochen bestehen drei Typen von Techniken zum Erzielen von Hochgeschwindigkeitsverarbeitung unter Nutzung von mehreren Prozessoren.
  • Der erste Typ von Techniken ist ein solcher, bei dem ein Parallelprozessor dadurch strukturiert wird, daß mindestens Dutzende von Prozessoren verwendet werden, um eine extreme Verbesserung in der Wirksamkeit der Abläufe im Vergleich mit einem Prozessor mit nur einem Prozessor zu erzielen. Bedingung ist bei diesem Typ der Technik, daß eine große Anzahl von Prozessoren verwendet wird. Daher ist es wichtig, daß jeder Prozessor verringerte Größe und eventuell begrenzte Funktion im Vergleich zur Funktion eines Allzweckcomputers aufweist. Z. B. wird bei einem kompakten Prozessor des ersten Typs von Techniken der Adreßübersetzungsmechanismus zum Realisieren eines virtuellen Speichers weggelassen. Es bestanden Techniken von Parallelprozessoren mit einer großen Anzahl von Prozessoren, gemäß denen eine Mehrzahl von Prozessen durch einen Prozessor ausgeführt werden kann, wie dies z. B. in EP-A-0 255 857 beschrieben ist. Jedoch ist keiner der Prozessoren gemäß diesen Techniken mit einer Funktion zum Realisieren eines virtuellen Speichers ausgestattet.
  • Andererseits ist als zweiter Typ von Techniken eine Einrichtung eines Parallelverarbeitungscomputers mit mehreren Verarbeitungselementen bekannt, von denen jedes einen lokalen Speicher aufweist, gemäß welcher Technik Daten in einen lokalen Speicher von einem anderen Verarbeitungselement eingeschrieben werden können. Wenn ein gewisses Verarbeitungselement Daten unter Nutzung eines lokalen Speichers eines anderen Verarbeitungselementes überträgt, werden Markierungen an einem Teil oder der Gesamtheit der Wörter im lokalen Speicher angehängt, und diese Markierungen zeigen an, ob der Inhalt der Wörter gültig ist oder nicht. Dieser Typ von Vorrichtung ist z. B. in EP-A-0 326 164 beschrieben.
  • Der dritte Typ von Techniken ist eine sogenannte Verarbeitungstechnik für verteilte Daten zum Verbinden einiger weniger Allgemeinzweckcomputer mit einem LAN-System oder dergleichen. Z. B. entspricht die Verarbeitungstechnik mit verteilten Daten in der Workstation mit einem UNIX-Betriebssystem diesem dritten Typ von Technik, wie sie von UNIX System Laboratories Ltd. entwickelt und derzeit lizensiert wird. Hei diesem Typ von Technik besteht die Bedingung, daß Allgemeinzweckcomputer verwendet werden. Jeder Prozessor weist eine Struktur wie ein Allgemeinzweckcomputer auf, und jedem dieser Allgemeinzweckcomputer ist ein Adapter für die Kommunikation hinzugefügt. Jeder Prozessor wird mit einem Allgemeinzweck-Betriebssystem geladen, und der Kommunikationsadapter wird als ein Hilfsmittel einschließlich Platteneingabe/ausgabeeinheiten gehandhabt, die durch das Be triebssystem verwaltet werden. Daher wird Kommunikation zwischen den Prozessoren über einen Systemaufruf ausgeführt. Das heißt, daß es dann, wenn ein Prozeß zum Ausführen eines von einem Nutzer erstellten Programms beginnt, Daten an einen anderen Prozeß zu senden, erforderlich ist, das Betriebssystemprogramm aufzurufen und es abzuarbeiten.
  • 30 veranschaulicht den Betrieb bei Datenübertragung gemäß dem dritten Typ der bekannten Technik. Derartiges ist z. B. von S. L. Leffler et al. in "The Design and Implementation of the 4.3 BSD UNIX Operating System", Addison-Wesley Publishing Company, S. 384-386 beschrieben. Zunächst führt der Prozeß zum Übertragen von Daten einen Systemaufruf für die Datenübertragung aus. Wenn das Betriebssystem den Systemaufruf erhalten hat, kopiert es die zu übertragenden Daten, zusammen mit Parametern, die für den Prozeß des übertragungsempfangsorts relevant sind, an den Puffer im Betriebssystem. Anschließend überprüft der Betriebsprozessor die Parameter, setzt dieselben, wie auch die Daten für die Sendeschaltung aus dem Pufferbereich im Betriebssystem und gibt die Anweisung zur Datenübertragung an die Sendeschaltung.
  • Wenn die Sendeschaltung die Daten gesendet hat und diese in der Empfangsschaltung des die Daten empfangenden Prozessors angekommen sind, speichert die Empfangsschaltung die Parameter und die Daten im Puffer innerhalb der Empfangsschaltung und gibt dem Betriebssystem im Empfangsprozessor eine Mitteilung. Nachdem das Betriebssystem im empfangenden Prozessor diese Mitteilung empfangen hat, erstellt sie eine Kopie der Parameter und der Daten aus dem Puffer innerhalb der Empfangsschaltung in den Puffer innerhalb des Betriebssystems. Das Betriebssystem untersucht dann die Parameter und die Daten. Wenn die Untersuchung ergibt, daß kein Problem besteht, überträgt das Betriebssystem ein Bestätigungssignal (ACK) an den Übertragungsursprungsprozessor. Wenn dieser das Signal ACK empfangen hat, gibt er den Pufferbereich innerhalb des Betriebssystems frei, der sichergestellt wurde, als eine Anfrage für das Übertragen der Parameter und der Daten erfolgte, was zur Übertragung des ACK-Signals vom Betriebssystem führte.
  • Wenn der Prozeß, der die Daten zu empfangen beginnt, einen Systemaufruf zum Empfangen der Daten ausgeführt hat, überprüft das Betriebssystem im empfangenden Prozessor, ob alle erforderlichen Daten bereits angekommen sind. Wenn dies der Fall ist, erstellt das Betriebssystem eine Kopie der Daten aus dem diese Daten speichernden Bereich innerhalb des Betriebssystems in den Bereich innerhalb des Prozesses, der den Systemaufruf ausgeführt hat. Wenn die Daten noch nicht angekommen sind, wartet das Betriebssystem auf den Empfang der Daten und führt den vorstehenden Ablauf zum Empfangen der Daten nach dem Empfangen der Daten aus.
  • Gemäß dem oben genannten ersten Typ von bekannten Techniken besteht eine Begrenzung in bezug auf die Funktion jedes Prozessors, und der Nutzer ist darauf angewiesen, ein Programm zu erstellen, das die Hardwareeigenschaften ausreichend berücksichtigt, wie die Speicherkapazität jedes Prozessors innerhalb der begrenzten Funktion jedes Prozessors.
  • Dagegen besteht beim vorstehend genannten zweiten Typ von bekannten Techniken kein Overhead in bezug auf das oben genannte Kopieren von Daten. Wenn jedoch mehrere Prozesse in einem Cluster abzuarbeiten sind und wenn ein Übertragungsprozeß in einem anderen Cluster darangeht, Daten an einen besonderen Empfangsprozeß innerhalb der mehreren Prozesse über einen lokalen Speicher zu senden, besteht die Gefahr, daß der Übertragungsprozeß die Daten des gleichzeitig ablaufenden Prozesses so durch den Empfangsprozeß im selben Clu ster ändern kann, daß diese Daten so geändert werden, daß sie ungültig werden.
  • Beim vorstehend beschriebenen dritten Typ bekannter Techniken arbeitet ein Betriebssystem in jedem Cluster in solcher Weise, daß mehrere Prozesse gleichzeitig in jedem Cluster ablaufen können. Daher ist es selbst dann, wenn die Anzahl von Nutzerprozessen, die durch das durch den Parallelverarbeitungscomputer auszuführende Programm erzeugt werden, nicht mit der Anzahl von Clustern übereinstimmt, die der Ausführung dieses Programms zugeordnet sind, möglich, dieses Programm dadurch auszuführen, daß ein virtueller Raum zugeordnet wird, der jedem der Nutzerprozesse entspricht. Dementsprechend bedeutet Datenübertragung zwischen den Nutzerprozessen tatsächlich die Übertragung von Daten in den virtuellen Raum entsprechend dem Übertragungsursprungsprozeß an den virtuellen Raum, der dem Übertragungsempfangsprozeß entspricht. Selbst wenn ein Fehler im Nutzerprogramm vorliegt, kann der Schutzmechanismus oder dergleichen des Betriebssystems eine Steuerung vornehmen, die zu einer unvernünftigen Zerstörung von Daten des Prozesses führt, die für das Programm irrelevant sind.
  • Um Daten mit hoher Geschwindigkeit von einem bestimmten Cluster an eine externe Einheit des Clusters zu senden, wie z. B. ein Netzwerk zum Herstellen von Verbindungen zwischen den Clustern, wird normalerweise eine DMA-Übertragung verwendet. DMA-Übertragung wird dadurch realisiert, daß ein sogenannter DMA-Controller verwendet wird, der so strukturiert ist, daß er dauernd hardwaremäßig eine Speicheradresse erzeugt und dauernd Daten aus dem Speicher liest oder in diesen einschreibt. Wenn jedoch Daten aus dem virtuellen Raum eines Übertragungsursprungsprozesses mit Hilfe des DMA-Controllers an das Netzwerk zu übertragen sind, besteht keine Garantie dahingehend, daß die aus dem virtuellen Speicher zu übertragenden Daten im aktuellen Speicher des Clusters existieren. Um zu garantieren, daß die zu übertragenden Daten im reellen Speicher existieren, ist es unter Umständen erforderlich, ein Seiteneinschreiben vorzunehmen und dann die Daten an den DMA-Controller zu übertragen. Das Seiteneinschreiben ist eine Funktion, die nur einem Betriebssystem erlaubt ist, wodurch das Betriebssystem unvermeidlicherweise in die Datenübertragung gemäß der bekannten Technik einzuspannen ist.
  • Eine derartige Datenübertragungstechnik ist in US 4,956,771 offenbart, wonach ein intelligenter Controller Daten zwischen verschiedenen "Tasks" in einen Host-Computer überträgt. Dabei wird ein an den Host-Computer und den Controller angeschlossenes I/O Segment verwendet.
  • WO 90/05338 beschreibt ein System, in dem mehrere Betriebssysteme laufen, und Datenübertragung zwischen virtuellen Speichern in Hauptspeichern und erweiterten Speichern stattfindet.
  • Selbst wenn kontinuierliche Datenübertragung durch den DMA-Controller nach der oben angegebenen Vorbereitung ausgeführt wurde, besteht keine Garantie dahingehend, daß ein Bereich zum Speichern der übertragenen Daten im virtuellen Raum für den Übertragungsempfangsprozeß dem reellen Speicher des Übertragungsempfangsclusters zugeordnet wurde. Daher weist das Betriebssystem gemäß der bekannten Technik im Übertragungsempfangscluster in seinem Inneren einen Puffer (einen Empfangspuffer) auf, der im reellen Speicher vorhanden ist, um die übertragenen Daten zu speichern. Das Betriebssystem speichert die empfangenen Daten im Empfangspuffer, führt anschließend ein Seiteneinschreiben aus, falls erforderlich, und überträgt dann die Daten an den Datenspeicherbereich im virtuellen Raum, der dem Übertragungsempfangsprozeß entspricht. In diesem Fall muß die vorstehend genannte Seiteneinschreibung unter Nutzung des Betriebssystems ausgeführt werden.
  • Selbst wenn der vorstehend genannte Empfangspuffer z. B. im Übertragungsempfangscluster vorhanden ist, besteht für den Übertragungsempfangscluster keine Möglichkeit dahingehend, daß er im voraus weiß, wann der Übertragungsursprungscluster Daten an den Übertragungsempfangscluster senden wird und wie groß der Umfang dieser Daten sein wird. Dementsprechend ist es nicht möglich, vorab den erforderlichen Bereich im Em pfangspuffer sicherzustellen. Wenn das Volumen der übertragenen Daten größer ist als zuvor abgeschätzt und die sichergestellte Größe des Empfangspuffers überschreitet, empfängt daher das Übertragungsempfangscluster die vom Datenursprungscluster gesendeten Daten nicht, sondern die Daten werden vom Übertragungsursprungscluster an den Übertragungsempfangscluster neu gesendet, nachdem ein neuer Empfangspuffer erforderlicher Größe im Übertragungsempfangscluster sichergestellt wurde.
  • Um die oben genannten Neuübertragung gemäß der bekannten Technik zu ermöglichen, weist das Betriebssystem des Übertragungsursprungsclusters in seinem Inneren einen Übertragungspuffer auf, um in ihm die zu übertragenden Daten zu speichern, bis sichergestellt ist, daß die zu übertragenden Daten sicher vom Übertragungsempfangscluster empfangen wurden.
  • Wenn der Übertragungspuffer im reellen Speicher untergebracht ist, können die zu sendenden Daten, wie sie im Übertragungspuffer gespeichert sind, kontinuierlich durch den DMA-Controller an das Netzwerk übertragen werden. Dadurch führt bei der bekannten Technik der Übertragungsempfangsclustsr beim Übertragen von Daten im virtuellen Raum entsprechend dem Übertragungsursprungsprozeß an den Übertragungsempfangsprozeß die Seiteneinschreibung aus, falls erforderlich, wie oben beschrieben, überträgt die zu sendenden Daten, wie sie im virtuellen Raum gespeichert sind, an den Übertragungspuffer im reellen Speicher und überträgt dann die im Übertragungspuffer gespeicherten Daten durch den DMA-Controller an das Netzwerk.
  • Wie vorstehend beschrieben, laufen gemäß der bekannten Technik dann, wenn Daten vom virtuellen Raum entsprechend dem Übertragungsursprungsprozeß an den virtuellen Raum entspre chend dem Übertragungsempfangsprozeß zu senden sind, diese Daten durch den Übertragungspuffer im Betriebssystem des Übertragungsursprungsclusters, durch das Betriebssystem, zum Empfangspuffer im Betriebssystem des Übertragungsempfangsclusters, über das Betriebssystem. Das Erstellen einer Kopie der Daten in den Puffer hat einen Overhead zur Folge, der beinahe proportional zur Länge der zu übertragenden Daten ist. Dieser Overhead erniedrigt den Wirkungsgrad eines Parallelverarbeitungscomputers in extremer weise.
  • Der Erfindung liegt die Aufgabe zugrunde, den Overhead zu erniedrigen, wie er durch Nutzung des Betriebssystems entsteht, wenn mehrere Prozesse im selben Cluster arbeiten und ein gewisser Cluster Daten an einen Prozeß überträgt, der in einem anderen Cluster abgearbeitet wird.
  • In einem erfindungsgemäßen Parallelprozessor mit mehreren Clustern, von denen jeder mindestens einen unabhängig betreibbaren Prozessor und einen Speicher aufweist, in den sich die Prozessoranordnung mit dem mindestens einen Prozessor teilt, und mit einem Netzwerk zum Verbinden der mehreren Cluster, wobei mindestens ein virtueller Raum jedem der mehreren Cluster zugeordnet ist und mindestens ein Prozeß im virtuellen Raum unter Steuerung des Betriebssystems ausgeführt wird, wird die vorstehend genannte Aufgabe durch eine solche Anordnung gelöst, gemäß der ein Prozeß einen virtuellen Kommunikationsbereich aufweist, der im Speicher innerhalb des Clusters resident ist und im virtuellen Raum angeordnet ist und bei der Daten, die von einem Prozeß (einem Übertragungsursprungsprozeß), der gerade in einem gewissen Cluster (einem Übertragungsursprungscluster) ausgeführt wird, an einen anderen Prozeß (einen Übertragungsempfangsprozeß) zu übertragen sind, der einem anderen Cluster (einem Übertragungsempfangscluster) zugeordnet ist, aus einem reellen Kommunikationsbereich gelesen werden, der dem Übertra gungsursprungsprozeß zugeordnet ist, welcher Bereich innerhalb des Speichers des Übertragungsursprungsclusters resident ist, wobei die gelesenen Daten vom Übertragungsursprungscluster in den Übertragungsempfangscluster übertragen werden und die Daten in einen reellen Kommunikationsbereich eingeschrieben werden, der dem Übertragungsempfangsprozeß zugeordnet ist, der innerhalb des Speichers des Übertragungsempfangsprozesses resident ist.
  • Die Erfindung wird im folgenden anhand von durch Figuren veranschaulichten Ausführungsbeispielen näher beschrieben.
  • 1 zeigt ein Aufbaudiagramm eines Parallelverarbeitungscomputers gemäß einem ersten Ausführungsbeispiel der Erfindung;
  • 2 ist ein Aufbaudiagramm einer Anforderungsauswahlschaltung;
  • 3 ist ein Aufbaudiagramm einer Kommunikationsbereichtabellenadreßerzeugungsschaltung;
  • 4 ist ein Strukturdiagramm einer Entscheidungsschaltung;
  • 5 ist ein Strukturdiagramm einer Adreßerzeugungsschaltung;
  • 6 ist ein Strukturdiagramm eines Kommunikationsbereichs;
  • 7 ist ein Strukturdiagramm eines Anforderungsbereichs;
  • 8 ist ein Strukturdiagramm einer Seitentabelle;
  • 9 ist ein Strukturdiagramm einer Kommunikationsbereichstabelle;
  • 10 ist ein Strukturdiagramm einer Anforderungstabelle;
  • 11 ist ein Diagramm, das den Datenübertragungsfluß zwischen den Prozessen im Parallelverarbeitungscomputer gemäß dem ersten Ausführungsbeispiel der Erfindung zeigt;
  • 12 ist ein Aufbaudiagramm eines Parallelverarbeitungscomputers gemäß einem zweiten Ausführungsbeispiel der Erfindung;
  • 13 ist ein Diagramm, das den Datenübertragungsfluß zwischen Prozessen im Parallelverarbeitungscomputer gemäß dem zweiten Ausführungsbeispiel der Erfindung zeigt;
  • 14 ist ein Aufbaudiagramm eines Parallelverarbeitungscomputers gemäß einem dritten Ausführungsbeispiel der Erfindung;
  • 15 ist ein Diagramm, das den Datenübertragungsfluß zwischen den Prozessen des Parallelverarbeitungscomputers gemäß dem dritten Ausführungsbeispiel der Erfindung zeigt;
  • 16 ist ein Diagramm, das den Datenübertragungsablauf zwischen den Prozessen eines Parallelverarbeitungscomputers gemäß einem vierten Ausführungsbeispiel der Erfindung zeigt;
  • 17 ist ein Aufbaudiagramm eines Parallelprozessors gemäß einem fünften Ausführungsbeispiel der Erfindung;
  • 18 ist ein Diagramm, das den Eintrag in einer Pfadtabelle veranschaulicht, wie sie im Parallelprozessor von 17 verwendet wird, zum übersetzen eines virtuellen Kommuni kationspfades in einen physikalischen Kommunikationspfad;
  • 19 ist ein Diagramm, das Zusammenhangsangaben für einen Prozeß veranschaulicht, wie er vom Parallelprozessor von 17 auszuführen ist;
  • 20 ist ein Diagramm, das das Format eines BASE-Setzbefehls zeigt, wie er im Parallelprozessor von 17 zu verwenden ist;
  • 21 ist ein Diagramm, das das Format eines LEN-Setzbefehls zeigt, wie er im Parallelprozessor von 17 zu verwenden ist;
  • 22 ist ein Diagramm, das das Format eines Fernspeicherungsbefehls zeigt, wie er im Parallelprozessor von 17 zu verwenden ist;
  • 23 ist ein Diagramm, das die Funktion einer Einheit zeigt, wenn ein Datenübertragungsbefehl, wie er im Parallelprozessor von 17 zu verwenden ist, ausgeführt wurde;
  • 24 ist ein Aufbaudiagramm eines Parallelprozessors gemäß einem sechsten Ausführungsbeispiel der Erfindung;
  • 25 ist ein Diagramm, das das Format eines Fernspeicherungsvorbereitungsbefehls zeigt, wie er im Parallelprozessor von 24 zu verwenden ist;
  • 26 ist ein Diagramm, das das Format eines Fernspeicherungsausführungsbefehles zeigt, wie er im Parallelprozessor von 24 zu verwenden ist;
  • 27 ist ein Diagramm, das den Ablauf eines Datenübertragungsbefehls zeigt, wie er im Parallelprozessor von 24 zu verwenden ist;
  • 28 ist eine Aufbaudiagramm eines Parallelprozessors gemäß einem siebten Ausführungsbeispiel der Erfindung;
  • 29 ist ein Aufbaudiagramm eines Parallelprozessors gemäß einem achten Ausführungsbeispiel der Erfindung; und
  • 30 ist ein Diagramm zum Erläutern des Kommunikationsbetriebs zwischen Prozessoren gemäß dem Stand der Technik.
  • Ausführungsbeispiel 1
  • Ein erstes Ausführungsbeispiel der Erfindung wird nun unter Bezugnahme auf 1 beschrieben. 1 zeigt einen erfindungsgemäßen Parallelverarbeitungscomputer. Hei diesem Ausführungsbeispiel sind mehrere Cluster 100 durch ein Netzwerk 4 miteinander verbunden. In 1 ist der Aufbau einer der Cluster 100 gezeigt, während die Aufbauten für weitere Cluster nicht dargestellt sind. In 1 bezeichnet 1 eine CPU, die dieselbe Struktur haben kann wie ein bekannter Mikroprozessor. In 1 ist der Einfachheit halber nur eine einzige CPU dargestellt, jedoch bildet jeder Cluster 100 einen eng gekoppelten Mikroprozessor aus mindestens zwei CPUs. Die Erfindung arbeitet jedoch auch, wenn jeder Cluster 100 nur einen einzigen Prozessor aufweist. 2 bezeichnet einen Speicher, der als Hauptspeicher des Clusters 100 verwendet wird. Zugriff zum Hauptspeicher 2 erfolgt über die CPU 1 oder eine (nicht dargestellte) externe Einrichtung über einen Bus 3, was mit Hilfe der bekannten Technik erfolgt. 4 bezeichnet ein Netzwerk zum Anschließen von Clustern 100. Wenn von einem Cluster die Adresse eines Übertragungsempfangsclusters festgelegt wurde, überträgt das Netzwerk 4 die Daten zu dem (nicht dargestellten) Übertragungsempfangscluster mit dieser Adresse.
  • 110 bezeichnet eine Sendendatenleseschaltung zum Lesen von Daten, die vom Speicher 2 aus zu übertragen sind. 28 bezeichnet eine Sendeschaltung zum Senden der gelesenen Sendedaten in Paketform über das Netzwerk 4. 42 bezeichnet eine Schaltung zum Empfangen eines Pakets vom Netzwerk 4. 120 bezeichnet eine Empfangsdatenschreibschaltung zum Einschreiben der mit dem empfangenen Paket empfangenen Daten in den Speicher 2. 7 bezeichnet eine Speicherzugriffsschaltung zum Ausführen eines Zugriffs auf den Speicher 2 zum Lesen zu sendender Daten oder zum Einschreiben empfangener Daten.
  • In der CPU 1 wird ein Nutzerprozeß in derselben Weise ausgeführt wie ein solcher, der im UNIX-Betriebssystem ausgeführt wird, das von UNIX System Laboratories Ltd., USA entwickelt und lizensiert wird. Es existiert ein virtueller Raum, der einem Nutzerprozeß entspricht. In 1 ist nur ein virtueller Raum 10 in der CPU 1 dargestellt, um die Beschreibung zu vereinfachen. Ein virtueller Kommunikationsbereich 11 zum Senden von Daten und zum Empfangen von Daten und ein virtueller Anforderungsbereich 12 für Information, die zu sendenden Daten hinzuzufügen ist, sind im virtuellen Raum 10 vorhanden.
  • Der Speicher 2 verfügt über einen reellen Kommunikationsbereich 13, in dem der virtuelle Kommunikationsbereich 11, wie er jedem Nutzerprozeß entspricht, kartiert ist. Er verfügt weiterhin über einen reellen Anforderungsbereich 14, in dem der für jeden Nutzerprozeß vorhandene virtuelle Anforderungsbereich 12 kartiert ist. Weiterhin ist eine Seitentabelle 15 für Adreßübersetzung für jeden Nutzerprozeß und eine Kommunikationsbereichstabelle 16 vorhanden, um auf mehrere Kommunikationsbereiche 13 in diesem Cluster zugreifen zu können.
  • Gemäß dem vorliegenden Ausführungsbeispiel besteht eine solche Struktur, daß ein in einem bestimmten Cluster auszuführenden Nutzerprozeß zu sendende Daten in den reellen Kommunikationsbereich 13 innerhalb dieses Clusters einschreibt, ohne daß hierzu das Betriebssystem tätig wird, das diesen Cluster steuert, daß die Sendedatenlesesteuerung 110 die zu sendenden Daten liest, ohne daß hierzu das Betriebssystem arbeiten muß, daß die Empfangsdatenschreibschaltung 120 die von einem anderen Cluster empfangenen Daten in den reellen Kommunikationsbereich 13 einschreibt, ohne daß hierzu das Betriebssystem tätig werden muß, und daß der Nutzerprozeß die Daten liest, ohne daß hierzu das Betriebssystem tätig wird.
  • 6 zeigt eine Struktur für den virtuellen Kommunikationsbereich 11. Es sind in ihm Daten angeordnet, die von einem Nutzerprozeß zu senden sind (z. B. ein Array A, Variable) oder Daten, die von einem anderen empfangen werden, und ein Datenempfangsfleck. Dieser Bereich ist ein solcher, der hauptsächlich dazu dient, Daten mit einem in einem anderen Cluster ausgeführten Prozeß auszutauschen.
  • 7 zeigt eine Struktur für den virtuellen Anforderungsbereich 12. Dies ist ein Bereich, bei dem eine vom Nutzerprozeß verwendete Bibliotheksfunktion einen Zugriff ausführt. Der Anforderungsbereich 12 weist mindestens eine Anforderungsstruktureinheit 12-1 und eine Ortstabelle 12-2 auf. Die Anforderungsstruktureinheit 12-1 speichert eine Datensendeanforderung, die einem Prozeß in einem anderen Cluster von einem Prozeß zugeordnet wird, der dem virtuellen Raum 10 entspricht, in dem sich der Anforderungsbereich 12 befindet, und Parameter, die dieser Datensendeanforderung zugefügt sind. Die Ortstabelle 12-2 speichert Information, die auf den von einem anderen Cluster gesteuerten Prozeß bezogen ist.
  • 9 zeigt eine Struktur für die Kommunikationsbereichstabelle 16. Diese speichert mehrere Einträge, von denen jeder einem Kommunikationsbereich entspricht. Zu jedem Eintrag gehört eine Basisadresse BASE für den zugeordneten Kommunikationsbereich und eine Größenangabe LN für diesen Bereich.
  • 10 zeigt eine Struktur für die Anforderungstabelle 17. Diese weist mehrere Einträge zum Speichern reeller Adressen auf. Wenn die virtuelle Anforderungsstruktureinheit 12-1 (7) im virtuellen Anforderungsbereich 12 in einem beliebigen virtuellen Raum.
  • 8 zeigt eine Struktur für die Seitentabelle 15. Jeder Eintrag der Seitentabelle 15 weist ein Adreßfeld für eine reelle Seite, ein Flagfeld für eine fixierte Seite und andere Steuerinformation auf. Wenn ein Flag F, das anzeigt, daß eine Seite fixiert ist, im Flagfeld für fixierte Seiten gespeichert ist, nimmt das Betriebssystem eine Steuerung so vor, daß die reelle Seite, die diesem Eintrag entspricht, nicht ausgespeichert wird. Eine Spalte "Andere Steuerinformation" speichert Information ähnlich einer dynamischen Adreßübersetzung gemäß der bekannten Technik.
  • Es wird nun der Betrieb eines Parallelverarbeitungscomputers gemäß diesem Ausführungsbeispiel beschrieben. Zunächst wird die Initialisierung des Parallelverarbeitungscomputers erläutert. Jeder Cluster weist eine Ausrüstung auf, wie sie erforderlich ist, um den Betrieb zu initialisieren, wie eine Magnetplatteneinheit, die zum Vereinfachen der Zeichnung nicht dargestellt ist. Wenn die Spannungsversorgung Für das System eingeschaltet ist, lädt jeder Cluster ein Initialisierungsprogramm in derselben Weise, wie dies ein eng gekoppelter Mikroprozessor in der bekannten Technik tut, wodurch das Betriebssystem in jedem Cluster unabhängig von den an deren startet. Nachdem das Betriebssystem in jedem Cluster initialisiert wurde, kann das Betriebssystem damit beginnen, Daten mit dem Betriebssystem jedes gewünschten Clusters auszutauschen, was dadurch erfolgt, daß eine bekannte Technik, wie das TCP/IP-Protokoll, verwendet wird. Der Austausch erfolgt über das Netzwerk 4 oder ein bekanntes, nicht dargestelltes Netzwerk.
  • Heim vorliegenden Ausführungsbeispiel werden nach dem Initialisieren des Betriebssystems die folgenden Abläufe zusätzlich ausgeführt. Das Betriebssystem in jedem Cluster erzeugt die Kommunikationsbereichstabelle 16 im Speicher 2 und setzt über den Bus 3 die Kopfadresse für diese Tabelle in einem Kommunikationsbereichstabellen-Ursprungsregister 6. Dann erzeugt das Betriebssystem die Anforderungstabelle 17 im Hauptspeicher 2 und setzt die Kopfadresse dieser Anforderungstabelle 17 in einem Anforderungstabellen-Ursprungsregister 5. Der Inhalt der Tabelle 17 ist noch nicht geschrieben.
  • Die Initialisierung eines Nutzerprozesses wird nachfolgend beschrieben.
  • Zunächst weist der Benutzer das Betriebssystem jedes Clusters an, eine Prozeßinitialisierung vorzunehmen. Dasjenige Betriebssystem, das den Befehl zum Initialisieren erhielt, erzeugt im Speicher 2 die Seitentabelle 15, um einen virtuellen Raum 10 zu erzeugen, der dem Prozeß entspricht, für den die Initialisierung angewiesen wurde. Dies erfolgt auf dieselbe Weise wie beim Stand der Technik. Anschließend wird der virtuelle Kommunikationsbereich 11 wie folgt initialisiert. Ein zusammenhängender reeller Adreßbereich mit vom Programmierer oder vom Compiler vorgegebener Größer wird im Speicher 2 sichergestellt, und dieser Bereich wird als reeller Kommunikationsbereich 13 gesetzt. Dann werden die Adressen dieses reellen Kommuniikationsbereichs 13 aufeinanderfolgend beschrieben, wobei von der Kopfadresse im Adreßfeld für die reelle Seite im Eintrag der Seitentabelle 15 begonnen wird, was der virtuellen Adresse des Kommunikationsbereichs 11 im virtuellen Raum 10 (siehe 8) entspricht. Außerdem wird das Seitenfixierungsflag F im zugehörigen Seitenfixierungsflagfeld innerhalb der Tabelle 15 gesetzt, damit der Kommunikationsbereich 13 nicht seitenmäßig ausgespeichert wird (paged-out). In diesem Fall ist angenommen, daß die Kopfadresse des virtuellen Kommunikationsbereichs 11 auf einen vorgegebenen Wert gesetzt ist und daß dieser Wert den Nutzerprogrammen in allen Clustern gemeinsam ist. Es ist auch angenommen, daß die Größe des virtuellen Kommunikationsbereichs 11 mit der Größe des reellen Kommunikationsbereichs 13 übereinstimmt.
  • Das Betriebssystem ordnet dem reellen Kommunikationsbereich 13 eine eindeutige Kommunikationsbereichsidentifizierung innerhalb des Clusters 78 zu und setzt die Basisadresse (Kopfadresse) und die Größe des reellen Kommunikationsbereichs 13 im Eintrag (siehe 9) der Kommunikationsbereichstabelle 16 mit der Kommunikationsbereichsidentifizierung als Eintragsnummer. Der virtuelle Kommunikationsbereich 11 wird dem reellen Kommunikationsbereich 13 fest durch das Seitenfixierungsflag der Seitentabelle zugeordnet. Daher kann der virtuelle Kommunikationsbereich 11 eindeutig innerhalb des Clusters durch die eindeutige Kommunikationsidentifizierung innerhalb des Clusters identifiziert werden, die im reellen Kommunikationsbereich 13 gesetzt wurde.
  • Dann stellt das Betriebssystem den reellen Anforderungsbereich 14 im zusammenhängenden Bereich des Speichers 2 sicher und schreibt dann die Adresse des gesicherten reellen Anforderungsbereichs 14 in das reelle Seitenadreßfeld des Eintrags der Seitentabelle 15, der der virtuellen Adresse des Anforderungsbereichs 12 im virtuellen Raum 10 entspricht, und setzt das Seitenfixierungsflag F im Seitenfixierungsflagfeld (siehe 8), damit der Inhalt des gesicherten reellen Anforderungsbereichs 14 nicht seitenmäßig ausgespeichert wird. Dann erzeugt das Betriebssystem die Anforderungsstruktureinheit 12-1 und die Ortstabelle 12-2 im virtuellen Anforderungsbereich 12, wie in 7 dargestellt. Wie vorstehend beschrieben, wurde der zugehörige reelle Anforderungsbereich 14 im virtuellen Anforderungsbereich 12 gesichert, und der reelle Anforderungsbereich 14 wurde als im Speicher 2 resident festgelegt, so daß dieser Bereich nicht seitenmäßig ausgespeichert wird. Dementsprechend entspricht der tatsächliche Speicher ohne Ausnahme der Anforderungsstruktureinheit 12-1 und der Ortstabelle 12-2. Jedoch wurde dort noch keine Information gespeichert.
  • Das Betriebssystem setzt weiterhin die Adresse der Seitentabelle 15 in einem vorgegebenen (nicht dargestellten) Bereich des initialisierten Prozesses, damit sich der Prozeß auf die Seitentabelle 15 beziehen kann.
  • Anschließend schreibt das Betriebssystem die reelle Kopfadresse für den Bereich des reellen Anforderungsbereichs 14, der der wie oben angegeben erzeugten Anforderungsstruktureinheit 12-1 entspricht, im noch unbenutzten Eintragungsbereich der reellen Anforderungstabelle 17.
  • Durch Initialisieren des Betriebssystems, wie vorstehend angegeben, kann vom Nutzerprozeß auf den reellen Kommunikationsbereich 13 dadurch zugegriffen werden, daß die virtuelle Adresse des virtuellen Kommunikationsbereichs 11 verwendet wird. Ein Zugriff kann auch vom Betriebssystem oder einer externen Einrichtung auf den reellen Kommunikationsbereich 13 dadurch erfolgen, daß mit Hilfe der reellen Kommunikationsbereichstabelle 16 die reelle Adresse verwendet wird. Auf den reellen Bereich, der der virtuellen Anforderungsstruktureinheit 12-1 entspricht, kann vom virtuellen Anforderungsbereich 12-1 dadurch zugegriffen werden, daß die virtuelle Adresse des virtuellen Anforderungsbereichs 12-1 verwendet wird. Auf den reellen Bereich kann auch direkt vom Betriebssystem oder der externen Einrichtung zugegriffen werden, in dem die reelle Adresse über die Anforderungstabelle 17 verwendet wird.
  • Dann fügt das Betriebssystem den Namen des Prozesses, der dem Initialisierprozeß vorab durch den Programmierer oder durch den Compiler zugeordnet wurde, die Kommunikationsbereichsidentifizierung für den bei diesem Prozeß zu benutzenden reellen Kommunikationsbereich 13 und die Adresse innerhalb des Netzwerks des Clusters zusammen. Das Betriebssystem überträgt diesen Datensatz an alle anderen Cluster. Wenn das jeweilige Betriebssystem in jedem der anderen Cluster den Prozeßnamen, die Kommunikationsbereichsidentifizierung und die Adresse innerhalb des Netzwerks des Clusters erhalten hat, schreibt sie den empfangenen Prozeßnamen, die empfangene Kommunikationsbereichsidentifizierung und die empfangene Adresse innerhalb des Netzwerks des Clusters in einen freien Eintragungsbereich der Ortstabelle (der Bereich im reellen Speicher, der der Ortstabelle 12-2 in 7 entspricht) im reellen Anforderungsbereich 14, der für den Nutzerprozeß im Cluster vorgesehen ist, wobei die Bezugnahme auf die Prozeßnamen vorab durch den Programmierer oder den Compiler erfolgte. Der Cluster zum Initialisieren des vorstehend genannten Nutzerprozesses führt dieselbe Verarbeitung, wie vorstehend angegeben, aus, wenn der Nutzerprozeß, der den Prozeß innerhalb dieses Clusters als Nutzerprozeß des Übertragungsempfangs verwendet, im anderen Cluster initialisiert wurde. Wenn mit der vorstehend genannten Anordnung der im virtuellen Raum 10 auszuführende Prozeß eine Zuordnung des Namens des Übertragungsempfangs-Nutzerprozesses vornimmt, können die Adresse des Clusters, in dem dieser Prozeß existiert, und die Kommunikationsbereichsidentifizierung des Kommunikationsbereichs 11, der im Übertragungsempfangs-Nutzerprozeß zu verwenden ist, erhalten werden, ohne daß hierzu das Betriebssystem verwendet wird, was weiter unten beschrieben wird.
  • Nutzerprozesse, die in der vorstehend genannten Weise betrieben wurden, arbeiten parallel, indem sie wechselseitig Daten aneinander übertragen.
  • Unter Bezugnahme auf 11 wird nun die Datenübertragung zwischen Prozessen in bezug auf das vorliegende Ausführungsbeispiel erläutert. Der Ablauf, wie er auszuführen ist, um Datenübertragung zwischen Nutzerprozessen vorzunehmen, wird dadurch erläutert, daß die Abläufe in einen solchen für einen Nutzerprozeß des Übertragungsursprungs und einen solchen des Übertragungsempfangs aufgeteilt werden. In der Beschreibung des Ablaufs des Nutzerprozesses des Übertragungsursprungs erfolgt eine Unterteilung der Abläufe in einen solchen des Betriebs des Nutzerprozesses des Übertragungsursprungs, des Clusters des Übertragungsursprungs und des (nicht dargestellten) Clusters des Übertragungsempfangs. Wenn nicht anders angegeben, werden die Abläufe gemäß der folgenden Erläuterung von der CPU 1 ausgeführt.
  • Schritt 50: Aufrufen der Bibliotheksfunktion "Send".
  • Wenn der Übertragungsursprungsprozeß damit beginnt, zu sendende Daten aus dem virtuellen Kommunikationsbereich 11, z. B. ein Array A, an den Datenempfangsprozeß zu senden, wird die vorab erstellte (nicht dargestellte) Bibliotheksfunktion "Send" in folgendem Format aufgerugen:
    Send ("Name des Übertragungsempfangsprozesses", X, Y, Z, L).
  • Ein Nutzer bestimmt den Namen des Übertragungsempfangsprozesses als erstes Argument. Das zweite Argument X ist die virtuelle Adresse des Kopfes im virtuellen Raum 10 des Übertragungsursprungsprozesses für die Sendedaten A. Das dritte Argument Y ist die virtuelle Adresse des Kopfs des Bereichs, in dem die Daten im (nicht dargestellten) virtuellen Raum des Übertragungsempfangsprozesses zu speichern sind. Das vierte Argument Z ist die virtuelle Adresse des Datenempfangsflags, das im Übertragungsempfangscluster zu speichern ist, wenn Daten empfangen werden. Das fünfte Argument L kennzeichnet das Volumen der zu sendenden Daten. Heim vorliegenden Ausführungsbeispiel kennt der Datenübertragungsprozeß vorab die Lage und die Größe des virtuellen Kommunikationsbereichs des Übertragungsempfangsprozesses. Dementsprechend können dem dritten und vierten Argument die virtuellen Adressen zugeordnet werden, wie sie programmgemäß diesem Kommunikationsbereich zugehören. Das durch das fünfte Argument angegebene Datenvolumen ist so programmiert, daß es kleiner ist als die Größe des virtuellen Kommunikationsbereichs.
  • Schritt 51: Umwandeln der Argumente
  • Die Bibliotheksfunktion "Send", die aufgerufen wurde, arbeitet im virtuellen Raum 10 wie folgt als Teil des Nutzerprozesses. Sie liest die Clusteradresse und die Kommunikationsbereichsidentifizierung des Übertragungsempfangsprozesses aus der Ortstabelle 12-2 im virtuellen Anforderungsbereich 12 (der zugehörige reelle Anforderungsbereich 14 ist im Speicher 2 resident) auf Grundlage des Namens des Übertragungsempfangsprozesses. Dann wandelt sie die virtuelle Adresse des Kopfes der Übertragungsdaten in die reelle Adresse der Übertragungsdaten im reellen Kommunikationsbereich 13 des Speichers 2, was unter Nutzung der Seitentabel le 15 erfolgt. Die Bibliotheksfunktion "Send" zieht die Kopfadresse des virtuellen Kommunikationsbereichs 11 des Übertragungsursprungsclusters von der virtuellen Adresse des Datenempfangsbereichs bzw. des Datenempfangsflags ab, um den jeweiligen Offset innerhalb des reellen Kommunikationsbereichs 13 des Übertragungsempfangs zu erhalten. Die Richtigkeit dieser Abläufe wird durch die Tatsache garantiert, daß in allen Clustern die Kopfadresse des virtuellen Kommunikationsbereichs 11 innerhalb des Nutzerprozesses zugesendet wurde und daß der virtuelle Kommunikationsbereich 11 nachfolgend vom Kopf des Bereichs im reellen Kommunikationsbereich 13 des zusammenhängenden Bereichs im Speicher 2 zugeordnet wurde.
  • Das wie vorstehend erhaltene Offsetvolumen wird negativ, wenn sich ein Programmfehler im Nutzerprozeß befindet. In diesem Fall erfolgt im Betriebssystem eine Programmunterbrechung.
  • Schritt 52: Setzvorgänge im Anforderungsbereich
  • Die Bibliotheksfunktion "Send" schreibt dann die Adresse CL des Übertragungsempfangsclusters und die Kommunikationsbereichsidentifizierung ID, wie sie zuvor gelesen wurden, den Offset SO des Datenempfangsbereichs, den Offset FO des Datenempfangsflags, die Datenlänge der Übertragungsdaten und die reelle Adresse, wie sie zuvor erhalten wurden, jeweils in die Anforderungsstruktureinheit 12-1 im virtuellen Anforderungsbereich 12 (7). Sie setzt darüber hinaus das Anforderungsflag im Anforderungsflagfeld in der Anforderungsstruktureinheit 12-1. Da der virtuelle Anforderungsbereich 12 im reellen Anforderungsbereich 14 resident ist, werden diese Parameter in den reellen Anforderungsbereich 14 eingeschrieben.
  • Schritt 53: Ausführen des nächsten Befehls
  • Wenn die vorstehend beschriebenen Abläufe abgeschlossen sind, gibt die Bibliotheksfunktion "Send" die Steuerung an den Nutzerprozeß zurück. Dieser führt den anschließenden Befehl der Übertragungsanforderung parallel mit den folgenden Abläufen durch.
  • Schritt 54: Setzen von Parametern in Registern
  • Eine Anforderungsauswahlschaltung 21 wiederholt immer die folgenden Abläufe. Sie liest den Wert des Anforderungstabellenursprungsregisters 5, d. h. den Wert, wie er durch das Betriebssystem bei dessen Initialisierung festgelegt wurde, in der Anforderungstabelleneintragungsadreßerzeugungsschaltung 21-1 innerhalb der Schaltung 21 (2) erzeugt die reelle Adresse des Kopfeintrags der Anforderungstabelle 17 im Speicher 2 und liest die reelle Adresse der (nicht dargestellten) Anforderungsstruktureinheit, wobei es sich um den Inhalt dieses Eintrags handelt, aus dem Speicher 2, und gibt eine Eingabe über die Speicherzugriffsschaltung 7 und den Bus 3 in die Anforderungsflagadreßerzeugungsschaltung 21-2. Letztere erhält die reelle Adresse des Anforderungsflagfeldes von der gelesenen reellen Adresse der Anforderungsstruktureinheit und gibt den Inhalt dieser reellen Adresse aus dem Speicher 2 über die Speicherzugriffsschaltung 7 und den Bus 3 in eine Anforderungsflagentscheidungsschaltung 21-3. Letztere entscheidet, ob das Anforderungsflag in das Anforderungsflagfeld geschrieben wurde, und sendet ein Signal an die Anforderungstabelleneintragungsadreßerzeugungsschaltung 21-1, wenn das Anforderungsflag noch nicht in das Anforderungsflagfeld eingeschrieben ist. Die Schaltung 21-1 erzeugt eine Adresse für den nächsten Eintrag der Anforderungstabelle 17; danach arbeiten die Anforderungsflagadreßerzeugungsschaltung 21-2 und die Anforderungsflagentscheidungsschal tung 21-3 in derselben Weise, wie vorstehend beschrieben. Wenn das Anforderungsflag in das Anforderungsflagfeld eingeschrieben ist, sendet die Anforderungsflagentscheidungsschaltung 21-3 darüber hinaus an eine Sendeschaltungszustand-Entscheidungsschaltung 21-4 ein Signal, damit diese den Zustand der Sendeschaltung 28 des zugehörigen Clusters feststellt. Wenn die Sendeschaltung 28 gerade beschäftigt ist, überprüft die Schaltung 21-4 den Zustand der Sendeschaltung 28 erneut. Wenn letztere nicht beschäftigt ist, wird eine Anforderungsstruktureinheiteingabeadreßerzeugungsschaltung 21-5 initialisiert. Sie liest die (nicht dargestellte) Anforderungsstruktureinheit im reellen Adreßbereich, der der virtuellen Anforderungsstruktureinheft 12-1 entspricht, was auf Grundlage der Adresse der Anforderungsstruktureinheit 12-1 erfolgt, die zuvor durch die Anforderungstabelleeintragsadreßerzeugungsschaltung 21-1 gelesen wurde, und sie stellt eine Kopie der Clusteradresse CL in einem Register 22 her, eine Kopie der Kommunikationsbereichsidentifizierung ID in einem Register 23, eine Kopie des Offsets SO des Datenempfangsbereichs in einem Register 24, eine Kopie des Offsets FO des Datenempfangsflags in einem Register 25 und eine Kopie der Datenlänge LEN in einem Register 26. Danach erstellt die Schaltung 21-5 eine Kopie der zu sendenden Daten aus dem reellen Kommunikationsbereich 13 in einem Puffer 27, was unter Nutzung der reellen Adresse der Sendedaten innerhalb der (nicht dargestellten) reellen Anforderungsstruktureinheit erfolgt, die gelesen wurde. Danach sendet die Schaltung 21-5 eine Anforderungsflagadresse und einen Rücksetzbefehl aus, um das Anforderungsflagfeld rückzusetzen, damit der Nutzerprozeß, von dem die Übertragungsforderung ausging, erkennen kann, daß der Inhalt des Bereichs, in dem die zu übertragenden Daten gespeichert sind, geändert werden kann, da das Lesen der zu übertragenden Daten abgeschlossen wurde.
  • Wenn die vorstehenden Abläufe abgeschlossen sind, wird dies der Anforderungstabelleneintragungsadreßerzeugungsschaltung 21-1 über eine Leitung 1000 mitgeteilt.
  • Ähnliche Abläufe werden für den Rest der Anforderungsstruktureinheiten ausgeführt.
  • Schritt 55: Übertragen von Daten
  • Die Sendeschaltung 28 sendet den Inhalt der Register 22 bis 26 zusammen mit dem Inhalt des Puffers 27 als Paket an das Netzwerk 4.
  • Wie oben beschrieben, senden im Übertragungsursprungscluster die Bibliotheksfunktion "Send", die Sendedatenleseschaltung 110 und die Sendeschaltung 28 Daten an das Netzwerk 4, ohne daß hierzu das Betriebssystem beansprucht wird. Dies erfolgt auf eine Anforderung hin vom Übertragungsursprungsprozeß. Der Betriebsablauf im Übertragungsempfangscluster wird nachfolgend beschrieben.
  • Schritt 56: Überprüfung der Datenaufnahmefähigkeit im Kommunikationsbereich
  • Wenn ein Paket für das Netzwerk 4 am Übertragungsempfangscluster angekommen ist, empfängt eine Empfangsschaltung 42 das Paket und erstellt eine Kopie der Kommunikationsbereichsidentifizierung (ID) in einem Register 37, eine Kopie des Offsets (SO) des Datenempfangsbereichs in einem Register 38, eine Kopie des Offsets (FO) des Datenempfangsflags in einem Register 39, eine Kopie der Datenlänge (LEN) in einem Register 40 und eine Kopie der Daten in einem Puffer 41, Dann verwendet eine Kommunikationsbereichstabellenadreßerzeugungsschaltung 31 (3) auf Grundlage der Kommunika tionsbereichsidentifizierung ID im Register 37 eine Offsetberechnungsschaltung 31-1, um den Offset der dieser Identifizierung ID entsprechenden Eintragung innerhalb der Kommunikationsbereichstabelle 16 (9) festzustellen. Die Kommunikationsbereichstabellenadreßerzeugungsschaltung 31 verwendet dann eine Addierschaltung 31-2 zum Addieren des Offsets zur Kopfadresse der Kommunikationsbereichstabelle 16 im Speicher 2, wie durch das Kommunikationsbereichstabellenursprungsregister 6 angegeben, um die Eingabeadresse (reelle Adresse) zu berechnen, die dieser Kommunikationsbereichsidentifizierung in der Kommunikationsbereichstabelle 16 entspricht, und sie erstellt eine Kopie der Kommunikationsbereichsbasisadresse BASE dieses Eintrags im Register 32 und eine Kopie der Größe LN des Kommunikationsbereichs im Register 33, was durch die Speicherzugriffsschaltung 7 und den Bus 3 erfolgt.
  • Wenn der Übertragungsursprungsprozeß normal programmiert ist, werden die Adresse zum Speichern der empfangenen Daten und die Adresse zum Speichern des Datenempfangsflags im reellen Kommunikationsbereich 13 abgelegt. Beim vorliegenden Ausführungsbeispiel wird entschieden, ob diese Adressen im reellen Kommunikationsbereich 13 untergebracht werden können, um zu entscheiden, ob ein Programmierfehler im Übertragungsursprungsprozeß vorliegt. Anders gesagt bedeutet dies, daß eine Entscheidungsschaltung 35 (4) mit Hilfe von Vergleichsschaltungen 35-1 und 35-2 eine Entscheidung vornimmt, wobei sie den Offset SO des Datenempfangsbereichs, also des Inhalts des Registers 38, des Offsets FO des Datenempfangsflags, also des Inhalts des Register 39, der Datenlänge LEN, also des Inhalts des Registers 40, und der Größe LN des Kommunikationsbereichs, also des Inhalts des Registers 33, nutzt. Die Vergleichsschaltung trifft Vergleiche auf Grundlage der jeweiligen Ungleichungen, wie sie in 4 dargestellt sind. Wenn die Ungleichheitsbedingungen er füllt sind, wird durch diese Schaltungen ein Schreibsperrsignal erzeugt. Eine ODER-Schaltung 35-4 nimmt eine ODER-Verknüpfung der Ausgangssignale vor, wie sie durch die Vergleichsschaltungen 35-1 und 35-2 erzeugt werden. Wenn ein Signal an diese ODER-Schaltung 35-4 ausgegeben wird, bedeutet dies, daß Daten im Kommunikationsbereich 11 nicht aufgenommen werden können.
  • Schritt 59: Auftreten einer Unterbrechung
  • Wenn Daten infolge der Entscheidung im reellen Kommunikationsbereich 13 nicht aufgenommen werden können, veranlaßt die Entscheidungsschaltung 35, daß ein Hardwareinterruptsignal über den Buß 3 läuft.
  • Schritt 60: Verhindern von Kommunikation
  • Das Hardwareinterruptsignal wird von der mindestens einen CPU im Übertragungsempfangscluster festgestellt. Das Betriebssystem wird durch die Interruptverarbeitungsroutine der CPU 1 initialisiert, das als erstes das Signal feststellte, und anschließende Übertragung wird durch Kommunikation dieses Betriebssystems mit dem Betriebssystem des anderen Clusters verhindert.
  • Schritt 57: Adreßübersetzung
  • Wenn die Sendedaten im reellen Kommunikationsbereich 13 aufgenommen werden können, verwendet eine Adreßerzeugungsschaltung 34 (5) eine Addierschaltung 34-1 dazu, die reelle Adresse für die Position zu erzeugen, unter der die empfangenen Daten zu speichern sind. Dies erfolgt mit Hilfe des Offsets SO für den Empfangsdatenbereich, also des Inhalts des Registers 38, und der Basisadresse BASE des Kommunikationsbereichs 13, also des Inhalts des Registers 32. Darüber hinaus verwendet die Adreßerzeugungsschaltung 34 eine Addierschaltung 34-2, um die reelle Adresse der Position zu erzeugen, unter der das Datenempfangsflag zu speichern ist. Dies erfolgt mit Hilfe des Offsets FO für das Datenempfangsflag, also des Inhalts des Registers 39, und der Basisadresse BASE des Datenempfangsflags, also des Inhalts des Registers 32.
  • Schritt 58: Speichern von Daten
  • Die Speicherzugriffsschaltung 7 überträgt die empfangenen Daten im Puffer 41 an den reellen Kommunikationsbereich 13, wofür sie die reelle Adresse für die empfangenen Daten, wie in Schritt 57 erzeugt, und die Datenlänge LEN, also den Inhalt des Registers 40, verwendet. Die Speicherzugriffsschaltung setzt darüber hinaus das Datenempfangsflag auf die Position der reellen Adresse des Datenempfangsflags, wie in Schritt 57 erzeugt.
  • Wie vorstehend beschrieben, können die empfangenen Daten in den reellen Kommunikationsbereich eingeschrieben werden, ohne daß hierzu das Betriebssystem tätig werden muß.
  • Gemäß den vorstehend beschriebenen Abläufen legt der Datenübertragungsprozeß die Positionen für die Empfangsdaten und das Datenempfangsflag durch die virtuelle Adresse des virtuellen Kommunikationsbereichs 11 fest. Da der virtuelle Kommunikationsbereich 11 im reellen Kommunikationsbereich 13 resident ist, kann jedoch das Einschreiben nie aufgrund eines Seitenfehlers ohne Erfolg sein. Anders gesagt wird das Paket vom Übertragungsursprungscluster nicht an das Übertragungsempfangscluster zurückgesendet. Dementsprechend ist es beim vorliegenden Ausführungsbeispiel nicht erforderlich, einen Bereich zum Speichern einer Kopie des Paketes vorzusehen, um für ein Rücksenden des Pakets gewappnet zu sein, wie dies beim Stand der Technik erforderlich war.
  • Nachfolgend wird der Ablauf des Übertragungsempfangsprozesses beschrieben.
  • Wenn der Übertragungsempfangsprozeß Daten verwenden möchte, prüft er eine Benutzung der Bibliotheksfunktion, um die Ankunft von Daten zu bestätigen, und liest dann das im virtuellen Kommunikationsbereich existierende Datenempfangsflag unter Verwendung der virtuellen Adresse. Dann entscheidet der Prozeß auf Grundlage des Wertes des Datenempfangsflags, ob der Datenempfang abgeschlossen ist oder nicht. Der Übertragungsempfangsprozeß setzt das Datenempfangsflag vorab durch Zuordnung des Programmierers oder des Compilers zurück, bevor Daten übertragen. Wenn der Datenempfang abgeschlossen ist, wird das Flag in der oben beschriebenen Weise gesetzt. Daher kann der Übertragungsempfangsprozeß auf Grundlage des Flags entscheiden, ob der Datenempfang abgeschlossen ist. Nachdem der Abschluß der Datenübertragung festgestellt ist, greift der Übertragungsempfangsprozeß mit Hilfe der virtuellen Adresse auf die empfangenen Daten zu. Wenn das Flag rückgesetzt bleibt, liegt eine solche Programmierung vor, daß der Übertragungsempfangsprozeß keinen Zugriff auf die Daten innerhalb des virtuellen Kommunikationsbereichs 11 vornimmt.
  • Nachfolgend wird der Abschluß des Prozesses beschrieben. Wenn er abzuschließen ist, löscht das Betriebssystem die Seitentabelle 15 für den Prozeß und gibt Hilsfmittel frei, wie den Speicherbereich, der dem Prozeß zugeordnet ist; dies erfolgt auf ähnliche Weise wie bei dem bekannten UNIX-Betrieb. Gemäß dem vorliegenden Ausführungsbeispiel wird weiterhin der Eintrag, der dem reellen Kommunikationsbereich 13 entspricht, wie er dem zu beendenden Prozeß zugeordnet ist, in der Kommunikationsbereichstabelle 16 gelöscht. Darüber hinaus teilt das Betriebssystem dem Betriebssystem des anderen Clusters den Namen des abzuschließenden Prozesses über das Netzwerk mit. Das Betriebssystem des Clusters, dem die Beendigung des Prozesses mitgeteilt wurde, löscht den Term, der dem Prozeßnamen des beendigten Prozesses entspricht, aus der Ortstabelle 12-2.
  • Mit den vorstehenden Ausführungen ist die Erläuterung zum ersten Ausführungsbeispiel der Erfindung beendet.
  • Modifizierung des Ausführungsbeispiels 1 (Ausführungsbeispiel 2)
  • Heim vorstehenden Ausführungsbeispiel wurde angenommen, daß der virtuelle Kommunikationsbereich 11 unter jeweils derselben Adresse in jedem virtuellen Raum abgelegt ist. Es kann jedoch auch angenommen werden, daß ein viertes Feld in jedem Eintrag der Ortstabelle 12-2 (7) vorhanden ist, wobei die virtuelle Kopfadresse des virtuellen Kommunikationsbereichs 11 für den jeweiligen Prozeß in diesem vierten Feld gespeichert wird, und daß der Inhalt des vierten Feldes für denjenigen Teil verwendet wird, in dem der Offset des Datenempfangsbereichs dadurch berechnet wird, daß die Kopfadresse des virtuellen Kommunikationsbereichs 11 des Übertragungsursprungsprozesses berechnet wird, wie im obigen Schritt 51. Hei dieser Anordnung ist es nicht erforderlich, diese für die virtuelle Kopfadresse des virtuellen Kommunikationsbereichs 11 in jedem virtuellen Raum zu setzen.
  • Im oben beschriebenen Schritt 56 werden die Kopfadresse und die Länge des reellen Kommunikationsbereichs 13 dadurch erhalten, daß die Kommunikationsbereichsidentifizierung ID verwendet wird, die im empfangenen Paket vorhanden ist und im Register 37 gespeichert ist. Jedoch ist es auch möglich, eine solche Anordnung vorzunehmen, daß statt der Kommunika tionsbereichsidentifizierung ID eine Identifizierung verwendet wird, die eindeutig den Prozeß zum Empfangen von Daten identifizieren kann, und daß eine Schaltung zum Empfangen der Kopfadresse und der Länge des reellen Kommunikationsbereichs 13 von dieser Identifikation innerhalb der Empfangsdatenschreibschaltung vorgesehen wird.
  • Ein zweites Ausführungsbeispiel der Erfindung wird unter Bezugnahme auf 12 beschrieben. Das zweite Ausführungsbeispiel ist eine Modifizierung des ersten Ausführungsbeispiels. Daher erfolgt eine Beschreibung hauptsächlich für unterschiedliche Punkte. Das vorliegende Ausführungsbeispiel unterscheidet sich vom ersten dadurch, daß nur der Übertragungsursprungsprozeß das Betriebssystem beim Senden von Daten an das Netzwerk beansprucht, während der Datenempfangsprozeß Daten ohne Beanspruchen des Betriebssystems empfängt. Dementsprechend besteht der Vorteil, daß die Anzahl von Beanspruchungen des Betriebssystems zum Senden und Empfangen von Daten geringer ist als beim Stand der Technik, wobei jedoch diese Anzahl größer ist als beim ersten Ausführungsbeispiel. 12 zeigt ein Cluster 100A gemäß dem zweiten Ausführungsbeispiel. In 12 stimmt die Struktur von Elementen, die die gleichen Bezugszeichen tragen, wie Elemente in 1, mit den Strukturen dieser gleich gekennzeichneten Elemente des ersten Ausführungsbeispiels überein.
  • Abweichend vom ersten Ausführungsbeispiel sind beim vorliegenden Ausführungsbeispiel die Anforderungstabelle 17, die Anforderungsbereiche 12 und 14 und das Anforderungstabellenursprungsregister 5 in jedem der Cluster 100A nicht vorhanden.
  • In 12 entsprechen Register 122, 123, 124, 125, 126 und 129 jeweils den Registern 22, 23, 24, 25, 26 und 29 von 1. Diese Register sind direkt an den Bus 3 angeschlossen, so daß Daten von der CPU 1 direkt in diese Register als Hauptspeicher 2 eingeschrieben werden können. 130 bezeichnet ein Register, das an den Bus 3 angeschlossen ist und das Daten direkt aus der CPU 1 wie auch dem Hauptspeicher 2 lesen kann. Das Register 122 dient zum Speichern der Adresse CL des Übertragungsempfangsclusters. Das Register 123 dient zum Speichern der Kommunikationsbereichsidentifizierung ID des reelen Kommunikationsbereichs 13, der dem Übertragungsempfangsprozeß zugeordnet ist. Das Register 124 dient zum Speichern des Offsets SO aus der reellen Kopfadresse des reellen Kommunikationsbereichs 13 des Datenempfangsbereichs im reellen Kommunikationsbereich 13 entsprechend dem virtuellen Kommunikationsbereich 11 des Übertragungsempfangsprozesses. Das Register 125 dient entsprechend zum Speichern des Offsets FO des Datenempfangsflags. Das Register 126 dient zum Speichern der Datenlänge LEN der zu übertragenden Daten. Das Register 129 dient zum Speichern der reellen Kopfadresse ADR der Daten, wie sie durch den Übertragungsursprungsprozeß gesendet werden. Die Sendeschaltung 28 bezieht sich auf das Register 130, dessen Zustand CC zeigt, ob die Schaltung 28 beschäftigt ist oder nicht. 127 bezeichnet einen Puffer zum Speichern von aus dem Hauptspeicher 2 zu sendender Daten. 107A bezeichnet eine Speicherzugriffsschaltung zum Lesen eines Wertes, wie er unter einer Position der Speicheradresse aus dem Hauptspeicher 2 auszulesen ist, oder zum Einschreiben dieses Wertes in das angezeigte Register oder den Hauptspeicher 2, oder zum Einschreiben des Wertes auf dem angezeigten Register oder dem Hauptspeicher 2 in eine besondere Adresse des Hauptspeichers 2, wenn die Speicheradresse angegeben wurde.
  • Es wird nun derjenige Teil des Ablaufs des Parallelverarbeitungscomputers des vorliegenden Ausführungsbeispiels beschrieben, der sich vom ersten Ausführungsbeispiel unterscheidet, was unter Bezugnahme auf 13 erfolgt.
  • Es wird zunächst die Initialisierung des Parallelverarbeitungscomputers beschrieben. Heim vorliegenden Ausführungsbeispiel wird keine Verarbeitung für eine Anforderungstabelle 17 und ein Anforderungstabellenursprungsregister 5 vorgenommen wie gemäß 1, da diese Funktionsgruppen beim vorliegenden Ausführungsbeispiel nicht vorhanden sind. Die anderen Abläufe sind dieselben wie die beim ersten Ausführungsbeispiel.
  • Nun wird die Prozeßinitialisierung beschrieben. Heim vorliegenden Ausführungsbeispiel wird keine Verarbeitung für einen virtuellen Verarbeitungsbereich 12 und einen virtuellen Anforderungsbereich 14 vorgenommen, da solche Bereiche beim vorliegenden Ausführungsbeispiel nicht vorhanden sind. Jedoch wird innerhalb des Betriebssystems eine (nicht dargestellte) Tabelle erstellt, die denselben Inhalt aufweist wie die Ortstabelle 12-2 im virtuellen Anforderungsbereich 12 gemäß 1. Die anderen Abläufe sind dieselben wie diejenigen beim ersten Ausführungsbeispiel.
  • Nun wird die erfindungsgemäße Datenübertragung zwischen Prozessen erläutert. Beim vorliegenden Ausführungsbeispiel unterscheidet sich der Ablauf beim Übertragungsursprungsprozeß von demjenigen beim ersten Ausführungsbeispiel, wobei der Rest des Ablaufs derselbe ist wie beim ersten Ausführungsbeispiel. Daher werden nun unter Bezugnahme auf 13 nur die unterschiedlichen Funktionen erläutert.
  • Schritt 61: Systemaufruf senden
  • Ein Nutzerprogramm gibt einen Systemaufruf an das Betriebssystem ab und übergibt die Steuerung an dasselbe. Dieser Aufruf hat dasselbe Format wie der Aufrufbefehl der Bibliotheksfunktion beim vorgenannten ersten Ausführungsbeispiel.
  • Schritt 62: Umwandlung von Argumenten
  • Wenn ein Systemaufruf ausgegeben wurde, bestimmt das Betriebssystem die Adresse des Clusters auf dem Netzwerk, in dem der Übertragungsempfangsprozeß vorhanden ist, und es bestimmt die Kommunikationsbereichsidentifizierung des reellen Kommunikationsbereichs 13, der dem Übertragungsempfangsprozeß zugeordnet ist, was auf Grundlage des Namens des Übertragungsempfangsprozesses erfolgt. Dabei wird der vorab bei der Prozeßinitialisierung in der (nicht dargestellten) Tabelle innerhalb des Betriebssystems abgespeicherte Inhalt verwendet (entsprechend dem Inhalt der Ortstabelle 12-2 beim ersten Ausführungsbeispiel). Das Betriebssystem bestimmt die reelle Kopfadresse der zu übertragenden Daten im reellen Kommunikationsbereich 13 des Hauptspeichers 2 auf Grundlage der virtuellen Kopfadresse der zu sendenden Daten, wozu die Seitentabelle 15 verwendet wird. Dann erhält das Betriebssystem die Offsetwerte SO und FO der Kopfadresse des virtuellen Kommunikationsbereichs 11 innerhalb des Übertragungsempfangsprozesses, aus der virtuellen Adresse des Datenempfangsbereichs und der virtuellen Adresse des Datenempfangsflags, in derselben Weise wie beim ersten Ausführungsbeispiel.
  • Schritt 63: Setzen von Parametern in Registern
  • Das Betriebssystem liest den Zustand CC 130 über den Bus 3, um sich zu vergewissern, daß die Sendeschaltung 28 nicht beschäftigt ist, und sie setzt die Adresse CL des Übertragungsbestimmungsclusters, die Kommunikationsbereichsidenfizierung ID des dem Übertragungsempfangsprozeß zugeordneten reellen Kommunikationsbereichs 13, den Offset SO des Datenempfangsbereichs, den Offset FO des Datenempfangsflags, die Datenlänge LEN der zu sendenden Daten und die reelle Kopf adresse der zu sendenden Daten in Registern 122, 123, 124, 125, 126 bzw. 129. Das Betriebssystem übergibt dann die Ablaufsteuerung an das Nutzerprogramm.
  • Schritt 64: Ausführen des nächsten Befehls
  • Nach Beendigen des Lesevorgangs gibt das Betriebssystem die Steuerung an das Nutzerprogramm zurück, um den nächsten Befehl auszuführen.
  • Schritt 65: Datenübertragung
  • Die Sendeschaltung 28 bildet durch Benutzen der Inhalte der Register 122, 123, 124, 125 und 126 sowie des Datenpuffers (2) ein Paket und sendet dieses an das Netzwerk 4.
  • Wenn das Paket vom Netzwerk 4 empfangen wird, findet derselbe Ablauf wie beim ersten Ausführungsbeispiel statt, weswegen dieser Ablauf hier nicht mehr beschrieben wird.
  • Nun wird der Abschluß des Prozesses beschrieben. Beim vorliegenden Ausführungsbeispiel werden abweichend vom ersten Beispiel die Anforderungsbereiche 12 und 14 nicht verwendet. Daher ist es nicht erforderlich, die Anforderungsbereiche anschließend an die Beendigung des Prozesses zu löschen.
  • Damit sind die Abläufe des zweiten Ausführungsbeispiels ausreichend beschrieben.
  • Gemäß dem vorliegenden Ausführungsbeispiel beansprucht der Übertragungsursprungscluster das Betriebssystem, so daß der Overhead etwas größer wird als beim ersten Ausführungsbeispiel. Abweichend von der bekannten Technik müssen innerhalb des Betriebssystems jedoch kein Sendepuffer und kein Empfangspuffer geschaffen werden, wie beim ersten Ausführungs beispiel, so daß der Overhead für das Senden und Empfangen von Daten im Vergleich zum Stand der Technik verringert werden kann. Darüber hinaus weist das vorliegenden Ausführungsbeispiel eine einfachere Schaltungsstruktur auf als das erste.
  • Ausführungsbeispiel 3
  • Ein drittes Ausführungsbeispiel der Erfindung wird nun unter Bezugnahme auf 14 beschrieben. Diese dritte Ausführungsbeispiel ist eine Modifizierung des zweiten Ausführungsbeispiels, weswegen vor allem unterschiedliche Punkte erläutert werden. Das vorliegende Ausführungsbeispiel stimmt insoweit mit dem zweiten überein, als der Übertragungsursprungsprozeß Daten unter Beanspruchung des Betriebssystems an das Netzwerk sendet, dagegen der Übertragungsempfangsprozeß die Daten ohne Beanspruchung des Betriebssystems empfängt. Jedoch unterscheidet sich das vorliegende Ausführungsbeispiel dahingehend vom zweiten, daß das Betriebssystem Parameter, wie sie für die Datenübertragung erforderlich sind, im Hauptspeicher 2 planiert. 14 zeigt ein Cluster 100B gemäß dem vorliegenden Ausführungsbeispiel. In 14 sind solche Elemente, die dasselbe Bezugszeichen tragen wie solche in den 1 bis 12 dieselben Elemente wie dort mit derselben Struktur. In 14 bezeichnet 218 einen Anforderungsbereich im Hauptspeicher 2, welcher Anforderungsbereich 218 durch das Betriebssystem gehandhabt wird. 230 bezeichnet ein Anforderungsbereichursprungsregister zum Speichern der Kopfadresse des Anforderungsbereichs 218. 222, 223, 224, 225, 226 und 227 bezeichnen Register, die den Registern 122, 123, 124, 125, 126 bzw. 127 im zweiten Ausführungsbeispiel entsprechen. Das Register 222 dient zum Speichern der Clusteradresse CL des Übertragungsempfangsclusters im Netzwerk. Das Register 223 dient zum Speichern der Kommunikationsbereichsidentifizierung ID des reellen Kommunika tionsbereichs 13, der dem Übertragungsempfangsprozeß zugeordnet ist. Das Register 224 dient zum Speichern des Offsets SO des Datenempfangsbereichs im reellen Kommunikationsbereich 13, der dem übertragungsempfangsprozeß zugeordnet ist. Das Register 225 dient entsprechend zum Speichern des Offsets FO des Datenempfangsflags. Das Register 226 dient zum Speichern der Datenlänge LEN der zu sendenden Daten. Das Register 229 dient zum Setzen eines Wertes, der den Zustand CC der Sendeschaltung 128 anzeigt. Das Register 227 ist ein Datenpuffer zum Speichern des Inhals der über das Netzwerk zu sendenden Daten. 207 bezeichnet eine Speicherzugriffsschaltung zum Zugreifen auf den Hauptspeicher 2, wenn eine Adresse angegeben wurde, um einen Wert in einem angezeigten Register abzuspeichern oder um einen Wert des Registers in den Hauptspeicher einzuschreiben.
  • Der Betrieb des Parallelverarbeitungscomputers gemäß dem vorliegenden Ausführungsbeispiel wird nun beschrieben. Dabei wird nur auf Abläufe eingegangen, die sich von denen des zweiten Ausführungsbeispiels unterscheiden.
  • Zunächst wird die Initialisierung des Parallelverarbeitungscomputers erläutert. Wenn beim vorliegenden Ausführungsbeispiel das Betriebssystem gestartet wird, wird der Anforderungsbereich 218 im Hauptspeicher 2 sichergestellt, und die reelle Kopfadresse des Anforderungsbereichs 218 wird im Anforderungsbereichursprungsregister 230 gesetzt. Andere Abläufe stimmen mit denen des zweiten Ausführungsbeispiels überein.
  • Es wird nun die Datenübertragung gemäß diesem Ausführungsbeispiel zwischen Prozessen erläutert. Heim vorliegenden Beispiel unterscheidet sich der Ablauf beim Übertragungsursprungsprozeß von demjenigen beim zweiten Ausführungsbeispiel. Daher wird nur der Unterschied unter Bezugnahme auf 15 beschrieben.
  • Schritt 61: Systemaufruf senden
  • Der Ablauf zum Ausgeben eines Systemaufrufs durch den Nutzerprozeß ist derselbe wie beim zweiten Ausführungsbeispiel.
  • Schritt 62: Umwandeln von Argumenten
  • Der Ablauf ist derselbe wie beim zweiten Ausführungsbeispiel.
  • Schritt 66: Setzen von Werten im Anforderungsbereich
  • Das Betriebssystem liest den Zustand CC 229 über den Bus, um sicherzustellen, daß die Sendeschaltung 28 nicht beschäftigt ist, und sie setzt im Anforderungsbereich 218 im Speicher 2 die Adresse CL des Übertragungsempfangsclusters, die Kommunikationsbereichsidentifizierung ID des reellen Kommunikationsbereichs 13, der dem Übertragungsempfangsprozeß zugeordnet ist, den Offset SO des Datenempfangsbereichs, den Offset FO des Datenempfangsflags, die Datenlänge der zu sendenden Daten und die reelle Kopfadresse der zu sendenden Daten. Die Speicherzugriffsschaltung 207 wird auf Grundlage dieser gesetzten Werte gestartet. Es ist auch möglich, einen Zeichenträger (Semaphore) im Anforderungsbereich 218 vorzusehen und die Speicherzugriffschaltung 247 über den Zeichenträger zu starten. Das Betriebssystem gibt dann die Ablaufsteuerung an das Nutzerprogramm zurück, um den nächsten Befehl auszuführen (64 in 15).
  • Schritt 67: Setzen von Parametern in Registern
  • Das Betriebssystem gibt einen Befehl zum Lesen des Anforderungsbereichs 218 über den Bus 3 an die Anforderungsbereich zugriffsschaltung 21A. Diese erzeugt jeden Eintrag des Anforderungsbereichs 218 aus dem Anforderungsbereichsursprungsregister 230, liest den Inhalt jedes Eintrags über die Speicherzugriffsschaltung 207 und setzt die Adresse CL des Übertragungsbestimmungsclusters, der Kommunikationsbereichsidentifizierung ID des reellen Kommunikationsbereichs 13, der dem Übertragungsempfangsprozeß zugeordnet ist, den Offset SO des Datenempfangsbereichs, den Offset FO des Datenempfangsflags und die Datenlänge LEN der zu sendenden Daten in den Registern 222, 223, 224, 225 bzw. 226. Die Speicherzugriffsschaltung 207 kopiert die zu sendenden Daten aus dem Hauptspeicher 2 in den Datenpuffer 227 auf Grundlage der reellen Kopfadresse der zu sendenden Daten.
  • Schritt 65: Datenübertragung
  • Nachdem die oben angegebenen Register gesetzt wurden, strukturiert die Sendeschaltung 128 ein Paket mit Hilfe der Inhalte der Register 222, 223, 224, 225 und 226 und des Puffers 227, und sie überträgt das Paket an das Netzwerk.
  • Wenn das Paket vom Netzwerk 4 empfangen wird, ist der Ablauf derselbe wie beim zweiten Ausführungsbeispiel, weswegen die Beschreibung dieses Ablaufs hier weggelassen wird.
  • Damit sind die Abläufe des dritten Ausführungsbeispiels ausreichend beschrieben.
  • Gemäß diesem Ausführungsbeispiel ist es möglich, eine Wirkung entsprechend derjenigen des ersten Ausführungsbeispiels zu erhalten, jedoch mit einfacherer Struktur als beim ersten Ausführungsbeispiel, wobei Abläufe ähnlich wie beim zweiten Ausführungsbeispiel vorliegen.
  • Ausführungsbeispiel 4
  • Nachfolgend wird ein viertes Ausführungsbeispiel der Erfindung erläutert. Dieses ist eine Modifizierung des dritten Ausführungsbeipsiel. Der Aufbau des Clusters des vierten Ausführungsbeispiels stimmt mit demjenigen des dritten Ausführungsbeispiels überein, weswegen die Erklärung unter Bezugnahme auf 14 erfolgt. Jedoch wird der Anforderungsbereich 214 in anderer Weise genutzt als das Anforderungsbereichursprungsregister 230. Dementsprechend wird dieser Unterschied hauptsächlich erläutert.
  • Zunächst wird die Systeminitialisierung beschrieben. Beim vorliegenden Auführungsbeispiel ist der Anforderungsbereich 218 nicht im Hauptspeicher 2 festgelegt, also anders als beim dritten Ausführungsbeispiel. Daher wird der Anforderungsbereich 218 nicht sichergestellt, wenn das System initialisiert wird, sondern er wird zum Zeitpunkt der Datenübertragung sichergestellt. Zum Zeitpunkt der Systeminitialisierung wird kein Wert im Anforderungsbereichursprungsregister 230 gesetzt.
  • Unter Bezugnahme auf 16 wird der vom Betriebssystem ausgeführte Ablauf beim Übertragungsursprungsprozeß erläutert.
  • Schritt 61: Systemaufruf senden
  • Dieser Ablauf ist derselbe wie beim dritten Ausführungsbeispiel.
  • Schritt 62: Umwandeln von Argumenten
  • Dieser Ablauf ist derselbe wie beim dritten Ausführungsbeispiel.
  • Schritt 68: Setzen von Werten im Anforderungsbereich
  • Das Betriebssystem sichert den Anforderungsbereich 218 im Speicher 2 und setzt im Anforderungsbereich 218 die Adresse CL des Übertragungsbestimmungsclusters, die Kommunikationsbereichsidentifizierung ID des reellen Kommunikationsbereichs 13, der dem Übertragungsempfangsprozeß zugeordnet ist, den Offset SO des Datenempfangsbereichs, den Offset FO des Datenempfangsflags, die Datenlänge LEN der zu sendenden Daten und die reelle Kopfadresse der zu sendenden Daten.
  • Schritt 69: Setzen von Werten im Anforderungsbereichursprungsregister
  • Das Betriebssystem liest den Zustand CC 229, um sicherzustellen, daß die Sendeschaltung 128 nicht beschäftigt ist, und sie setzt die Kopfadresse des Anforderungsbereichs 218 auf den Wert des Anforderungsbereichursprungsregisters 230, damit die Speicherzugriffsschaltung 207 und die Sendeschaltung 128 initialisiert werden. Das Betriebssystem gibt dann die Ablaufsteuerung an das Nutzerprogramm weiter, damit der nächste Befehl (64 in 16) ausgeführt wird.
  • Schritt 67: Setzen von Parametern in Registern
  • Der Ablauf ist derselbe wie beim dritten Ausführungsbeispiel.
  • Schritt 65: Datenübertragung
  • Der Ablauf ist derselbe wie beim dritten Ausführungsbeispiel.
  • Wenn ein Paket vom Netzwerk 4 empfangen wird, ist der Ablauf derselbe wie beim dritten Ausführungsbeispiel, weswegen dies hier nicht erläutert wird.
  • Damit ist der Ablauf beim vierten Ausführungsbeispiel im wesentlichen beschrieben.
  • Beim vorliegenden Ausführungsbeispiel kann der Anforderungsbereich 218 immer dann sichergestellt werden, wenn Datenübertragung ausgeführt wird. Wenn die Steuerung so erfolgt, daß jede CPU 1 im Cluster den Anforderungsbereich 218 unter einer anderen Adresse im Hauptspeicher 2 sichert, wird es möglich, die Schritte 61, 62 und 68 in jeder CPU 1 gleichzeitig parallel auszuführen. Mit dieser Anordnung ist es parallel mit dem Ablauf der Sendeschaltung 128, nach Start durch den von einer bestimmten CPU 1 ausgeführten Schritt 69 möglich, daß eine andere CPU 1 die Schritte 61, 62 und 68 ausführt und eine andere CPU 1 den Schritt 69 direkt nach dem Beendigen der Arbeit der Sendeschaltung 128 ausführt. Infolgedessen kann mit diesem Ausführungsbeispiel die Anzahl von Overheadvorgängen in dem beim Senden von Daten tätigen Betriebssystem weiter gegenüber der beim dritten Ausführungsbeispiel erforderlichen Anzahl verringert werden.
  • Ausführungsbeispiel 5
  • 17 zeigt den Aufbau eines Parallelverarbeitungscomputers gemäß einem fünften Ausführungsbeispiel der Erfindung. In 17 bezeichnen 501, 502, 503 und 504 Prozessoren, die alle denselben Aufbau aufweisen. 505 bezeichnet einen Hauptspeicher, in den sich die Prozessen 501 und 502 teilen, während 506 einen Hauptspeicher bezeichnet, in den sich die Prozessoren 503 und 504 teilen. Die Prozessoren 501 und 502 und der Hauptspeicher 505 bilden einen ersten Cluster, während die Prozessoren 503 und 504 und der Hauptspeicher 506 einen zweiten Cluster bilden. 507 bezeichnet eine Sendeschaltung, die mit dem ersten Cluster verbunden ist. 508 bezeichnet eine Empfangsschaltung, die mit dem zweiten Cluster verbunden ist. Der erste Cluster weist eine Empfangsschal tung ähnlich der Empfangsschaltung 508 des zweiten Clusters auf, jedoch ist die Empfangsschaltung des ersten Clusters in 17 nicht dargestellt, um die Zeichnung zu vereinfachen. Entsprechend weist der zweite Cluster eine Sendeschaltung entsprechend der Sendeschaltung im ersten Cluster auf, wobei jedoch auch diese Sendeschaltung weggelassen ist, um die Zeichnung zu vereinfachen. 509 bezeichnet ein Netzwerk zum Verbinden des ersten Clusters und des zweiten Clusters; es überträgt eine Nachricht von der Sendeschaltung 507 des Clusters zu einem angegebenen Zielort.
  • Beim vorliegenden Ausführungsbeispiel werden zwei Prozessoren verwendet, um ein Cluster zu bilden, wobei zwei Cluster verwendet werden, um die Zeichnung zu vereinfachen. Jedoch kann die erfindungsgemäße Technik auch drei oder noch mehr Prozessoren zum Bilden eines Clusters benutzen, und sie kann auch drei oder mehr Cluster verwenden.
  • Es wird nun der Aufbau der Prozessoren 501 bis 504 erläutert. Mit Ausnahme eines weiter unten beschriebenen neuen Befehls können die Prozessoren 501 bis 504 denselben Aufbau aufweisen wie ein bekannter Mikroprozessor, z. B. der Mikroprozessor H32 von Hitachi Ltd. In 17 ist der interne Aufbau nur für den Prozessor 501 dargestellt, um die Zeichnung zu vereinfachen. In 17 bezeichnet 510 eine Ausführungssteuerschaltung zum Steuern der Befehlsausführungsfolge des Prozessors 501. 511 bezeichnet ein PSW (Programmstatuswort). 511-1 bezeichnet ein Privilegstatusanzeigefeld innerhalb des PSW 511, mit der Breite eines Bits. Wenn das Anzeigefeld 511-1 den Wert 1 hat, befindet sich der Prozessor 501 in privilegiertem Status, wohingegen er sich in nichtprivilegiertem Status befindet, wenn das Anzeigefeld 511-1 den Wert 0 aufweist. 511-2 bezeichnet einen Wert PC (Program Counter) zum Speichern der Adresse des gerade ausgeführten Befehls. 512 bezeichnet ein Befehlsregister zum Speichern des ausgeführten Befehls. 512 bezeichnet einen Befehlsdekoder. 514 bezeichnet ein Pfadtabellenbasisregister zum Speichern der Speicheradresse einer weiter unten beschriebenen Pfadtabelle. 515 bezeichnet ein Pfadtabellenlängenregister. 516 bezeichnet einen Addierer und 515 einen Vergleicher. 518 bezeichnet eine Adreßübersetzungsschaltung zum Übersetzen einer virtuellen Adresse, wie sie durch einen Befehl angezeigt wird, in eine reelle Adresse. Die Adreßübersetzungsschaltung 518 kann ohne weiteres gemäß dem Stand der Technik strukturiert sein. 519 bezeichnet ein Bedingungskoderegister zum Speichern eines Wertes, wie er durch eine Befehlsbeschreibung auf Grundlage des Ergebnisses der Ausführung eines Befehls festgelegt wird. 520 und 521 sind Schaltungen zum Lesen von Werten aus dem Hauptspeicher 505. 522 bezeichnet eine Privilegbefehlausführungsentscheidungsschaltung und 523 bezeichnet eine Zugriffungültigentscheidungsschaltung. 524 und 525 bezeichnen UND-Schaltungen.
  • Der Hauptspeicher 505 weist folgendes auf. 528 bezeichnet eine Zugriffsfreigabeschaltung für einen Bereich eines Betriebssystems. 529 bezeichnet einen Betriebssystembereich. Um den Zugriff zum Betriebssystembereich 529 zu ermöglichen, ist es erforderlich, ein Signal in die Betriebssystembereichzugrifffreigabeschaltung 528 einzugeben. Es ist möglich, auf andere Bereiche zuzugreifen, ohne ein Signal in die letztgenannte Schaltung einzugeben. 530 bezeichnet eine weiter unten angegebene Pfadtabelle. Der Eintrag in der Pfadtabelle 30 weist das in 18 dargestellte Format auf. 531 bezeichnet einen Zusammenhang für einen im Prozessor 501 gerade ausgeführten Prozeß. 502 bezeichnet einen virtuellen Raum, der dem Prozeß zugeordnet ist, wie er gerade vom Prozessor 501 ausgeführt wird. 17 zeigt zum Vereinfachen der Zeichnung nur einen einzigen virtuellen Raum, der dem vom Prozessor 501 ausgeführten Prozeß zugeordnet ist. Jedoch können bei der erfindungsgemäßen Vorrichtung auch andere virtuelle Räume verwendet werden. Ein virtueller Raum kann ohne weiteres gemäß dem Stand der Technik strukturiert sein. 533 bezeichnet Daten, die in den virtuellen Raum zu übertragen sind.
  • Die Sendeschaltung 507 weist eine Funktion zum Senden von Daten an das Netzwerk 509 auf Grundlage eines Befehls vom Prozessor 501 oder vom Prozessor 502 auf. 534 bezeichnet ein Senderegister zum Speichern einer an das Netzwerk zu übertragenden Nachricht, 526 bezeichnet eine Sendesteuerschaltung zum Übertragen des Inhalts des Senderegisters 534 an das Netzwerk 509 über eine Leitung L6, solange ein Übertragungsunterbrechungssignal nicht über eine Leitung L7 vom Netzwerk 509 aus eingegeben wurde.
  • Die Empfangsschaltung 509 weist folgende Elemente auf. 523 bezeichnet ein Empfangsregister zum Speichern einer über das Netzwerk 509 über eine Leitung L18 und eine Empfangssteuerschaltung 527 ankommende Nachricht. 536 bezeichnet eine Adreßübersetzungsschaltung zum Entscheiden, ob eine reelle Adresse aus einem PTO-Wert (Page Table Origin) und einem VA-Wert (Virtual Address) erhalten werden kann, wie sie in einem Empfangsregister 535 enthalten sind, und zum Ausgeben der über eine Leitung L10 erhaltenen reellen Adresse, wenn diese reelle Adresse erhalten wurde. Die Adreßübersetzungsschaltung 536 gibt ein Signal an eine Leitung L11, wenn keine reelle Adresse erhalten werden kann. 537 bezeichnet eine Adreßerzeugungsschaltung. 538 und 539 bezeichnen Schreibschaltungen zum Einschreiben von Daten in den Hauptspeicher 506.
  • Der Hauptspeicher 506 verfügt über folgendes. 548 bezeichnet eine Betriebssystemzugrifffreigabeschaltung. 549 bezeichnet einen Betriebssystembereich. Um auf den Betriebssystembereich 549 zugreifen zu können, ist es im Fall eines Zugriffs auf den Hauptspeicher 505 erforderlich, ein Signal in die Betriebssystembereichzugrifffreigabeschaltung 548 einzugeben. 550 bezeichnet eine Seitentabelle. 551 bezeichnet einen virtuellen Raum, in den Daten bei der Datenübertragung einzuschreiben sind, wie sie durch das vorliegende Ausführungsbeispiel erklärt wird. 525 bezeichnet einen Datenspeicherbereich im virtuellen Raum 551. 553 bezeichnet einen Empfangsabfangpuffer, und 554 bezeichnet einen Datenspeicherbereich in demselben.
  • Es wird nun der Betrieb des Parallelverarbeitungscomputers gemäß diesem Ausführungsbeispiel beschrieben. Im erfindungsgemäßen Parallelverarbeitungscomputer sind der erste und der zweite Cluster eng gekoppelte Multiprozessoren, die ein Anfangsprogramm laden, nachdem die Spannungsversorgung eingeschaltet wurde. Dies erfolgt auf dieselbe Weise wie bei eng gekoppelten Mikroprozessoren gemäß dem Stand der Technik, so daß also das Betriebssystem in jedem Cluster unabhängig vom anderen initialisiert wird. In diesem Fall werden die Systembetriebsbereiche 529 und 549 in den Hauptspeichern 505 und 506 sichergestellt. In der Zeichnung sind der Einfachheit halber Einheiten weggelassen, wie sie für den Initialisiervorgang erforderlich sind, wie z. B. Magnetplatteneinheiten.
  • Wenn ein Befehl zum Initialisieren eines Nutzerprogramms in einen gewissen Cluster nach dem Initialisieren des Betriebssystems eingegeben wurde, erzeugt das Betriebssystem dieses Clusters einen virtuellen Raum und erzeugt dann in diesem einen Prozeß, wie er zum Ausführen des Nutzerprogramms erforderlich ist. Nutzerprozesse, die in der oben beschriebenen Weise erzeugt wurden, erzeugen dann Prozesse, wie sie erforderlich sind, um die Nutzerprogramme im eigenen Cluster und in anderen Clustern auszuführen. Eine Gruppe von Nutzerprogrammen, die direkt oder indirekt durch einen Initiali sierbefehl erzeugt wird, wird Job genannt. Jedem Job wird durch das Betriebssystem eine Jobidentifiziermarkierung zugeordnet. Jedem Nutzerprozeß wird durch den Nutzer ein Name zugeordnet, so daß jeder Nutzerprozeß unter den Jobs einzigartig ist. Wenn ein Prozeß mit doppeltem Namen innerhalb der Jobs aufgrund eines Nutzerprogrammfehlers oder dergleichen erzeugt werden soll, stellt das Betriebssystem diese Verdoppelung fest und beendet den entsprechenden Job in nichtnormaler Weise. Mehrere Prozesse können in einem Cluster erzeugt werden, wenn Nutzerprozesse erzeugt werden. Das Verfahren zum Erzeugen von Nutzerprozessen kann ähnlich sein wie bei einem bekannten Verfahren, z. B. dem Verfahren, wie es in einem System mit verteilten Prozessaren verwendet wird, die durch ein LAN-System verbunden sind. Prozesse, die mit dem oben angegebenen Verfahren erzeugt wurden, führen Berechnungen aus, wie sie durch das Programm angezeigt werden, was durch wechselseitiges Übertragen von Daten erfolgt.
  • Wie vorstehend angegeben, können die Prozessoren 501 bis 504 einen Aufbau aufweisen, der über eine auf die Erfindung bezogene Befehlsausführungsschaltung verfügt, die einem Mikroprozessor hinzugefügt wird, der aufgebaut sein kann wie ein bekannter Prozessor. Dementsprechend werden von einer Reihe von Befehlen eines Prozesses, die von jedem Prozessor auszuführen sind, solche Befehle, die innerhalb des jeweiligen Prozessors ausgeführt werden können, wie z. B. arithmetische Befehle, auf dieselbe Weise abgearbeitet, wie dies durch einen bekannten Mikroprozessor erfolgt.
  • Jeder Prozessor mit dem Aufbau, wie in einem Parallelverarbeitungscomputer gemäß der Erfindung, weist eine Adreßübersetzungsschaltung auf, die ähnlich ist wie bei einem bekannten Mikroprozessor und die die Verwaltung des virtuellen Raums unterstützt. Jeder Prozeß entspricht eindeutig einem virtuellen Raum und führt ein Programm im virtuellen Raum aus. Dementsprechend entspricht in jedem Cluster das Zuordnen eines virtuellen Raums dem Zuordnen eines Prozesses.
  • Ein Ablauf zur Prozeßerzeugung wird nun unter Bezugnahme auf 17 beschrieben. Beim erfindungsgemäßen Parallelverarbeitungscomputer erzeugt das Betriebssystem, beim Erzeugen eines Nutzerprozesses, eine Pfadtabelle entsprechend dem zu erzeugenden Prozeß im reellen Speicher im Betriebssystembereich 529. (Da das Betriebssystem im privilegierten Status betrieben wird, wird der Befehl 1 in das Privilegstatusanzeigefeld 511-1 als Signal an die Betriebssystembereichzugrifffreigabeschaltung 528 gegeben, so daß das Betriebssystem die Pfadtabelle im Betriebssystembereich 529 erzeugen kann. Wenn das Betriebssystem sich im nichtprivilegierten Status befindet, ist es nicht möglich, die innerhalb des Betriebssystembereichs 529 vorhandene Pfadtabelle zu überschreiben). Gemäß 17 wird eine dem im virtuellen Raum 529 auszuführenden Nutzerprozeß zugeordnete Pfadtabelle 530 im ersten Cluster erzeugt. In diesem Fall wird ein Feld V des gesamten Eintrags der Pfadtabelle 530 auf den Wert 1 initialisiert. Die Pfadtabelle wird durch einen Wert BASE verwaltet, der die Kopfadresse wiedergibt, und durch einen Wert LEN, die Länge der Pfadtabelle wiedergibt. Beide Werte BASE und LEN werden als Teil des Zusammenhangs gehandhabt, in den der Prozeß gestellt ist. 19 zeigt den Inhalt des Zusammenhangbereichs des Prozesses. Gemäß 19 wird der Inhalt von PSW in einem Feld 103 gespeichert, der Inhalt des Registers in einem Feld 104 gespeichert und andere Steuerinformation in einem Feld 105 gespeichert. Diese Inhalte stimmen mit denjenigen von Zusammenhangswerten überein, wie sie von einem bekannten Betriebssystem verwaltet werden. Im Zusammenhangsbereich bezeichnen 106 und 107 Felder zum Speichern der oben genannten Werte BASE und LEN, die gemäß der Erfindung neu sind.
  • Wenn der zeitliche Ablauf eines dem virtuellen Raum 532 entsprechenden Prozesses im Prozessor 501 festgelegt wird, speichert das Betriebssystem des ersten Clusters den Inhalt des Zusammenhangbereichs 531 in das Register im Prozessor 501 ein. Beim erfindungsgemäßen Parallelprozessor sind das Pfadtabellenbasisregister 514 und das Pfadtabellenlängenregister 515 im Prozessor 501 als exklusive Register zum Speichern der neu eingeführten Werte BASE bzw. LEN als Teile des Zusammenhangs vorhanden. Darüber hinaus verfügt der Parallelprozessor über einen BASE-Setzbefehl und LEN-Setzbefehl als Befehle zum Speichern eines jeweiligen Wertes in diesen Registern. Beide Befehle sind privilegierte Befehle, und wenn diese Befehle im nichtprivilegierten Status auszuführen sind, tritt ein Interrupt im Prozessor 501 auf. Wenn ein gerade durch den Prozessor 501 ausgeführter Befehl aus einem Grund umgeschaltet wird und der Prozessor 501 freigegeben wird, wird der Wert des Registers des Prozessors 501 im Zusammenhangsbereich 531 gespeichert, gegensätzlich zum vorstehend Ausgeführten.
  • Das Schema der Befehlsausführung im Prozessor 501 wird nun erläutert. Zunächst wird aus dem Hauptspeicher 505 ein Befehl auf Grundlage des Feldes 511-2 des PSW 511 in der Ausführungssteuerschaltung 510 ausgelesen, und dieser Befehl wird im Befehlsregister 512 gespeichert. Der im Feld OP des Befehlsregisters 512 gespeicherte Betriebskode wird in die Privilegbefehlausführungsentscheidungsschaltung 522 eingegeben. In diese wird auch der Wert des Privilegstatusanzeigefeldes 511-1 eingegeben. Sie gibt an die Ausführungssteuerschaltung 510 nur dann ein Signal aus, wenn der eingegebene Betriebskode einen privilegierten Befehl anzeigt und wenn das Privilegstatusanzeigefeld 511-1 den nichtprivilegierten Status anzeigt. Durch diese Anordnung tritt ein Interrupt im Prozessor 501 auf. In anderen Fällen wird ein Befehl ausgeführt, wenn ein Befehlsdekoder 513 den Betriebskode deko diert und ein Signal erzeugt, wie es zum Abarbeiten des dekodierten Befehls erforderlich ist. 20 zeigt das Format des BASE-Setzbefehls. Gemäß 20 wird in einem Teil 108 der Betriebskode dieses Befehls gespeichert, und ein erster Operand 109 speichert den im Pfadtabellenbasisregister 514 zu setzenden Wert. In Teilen 110 und 111 gespeicherte Werte werden nicht verwendet. Im Prozessor 501 wird der vorliegende Befehl mit folgendem Ablauf ausgeführt.
  • Zunächst dekodiert der Befehlsdekoder 513 den Befehl, wie oben beschrieben, und gibt ein Signal an die Leitung L1 aus, wenn der Lesebefehl der BASE-Setzbefehl ist. Da der Befehl ein privilegierter Befehl ist, wird er nicht ausgeführt, wenn der Inhalt des Privilegstatusanzeigefeldes 511-1 nicht 1 ist. Wenn der Inhalt dagegen 1 ist, wird ein Signal von der UND-Schaltung 524 ausgegeben. Mit Hilfe dieses Signals wird der im Feld OP1 des Befehlsregisters 512 gespeicherte Wert im Pfadtabellenbasisregister 514 gespeichert.
  • 21 zeigt ein Format für den LEN-Setzbefehl. Gemäß 21 speichert ein Teil 112 einen Betriebskode für den Befehl, und ein erster Operand speichert den im Pfadtabellenbasisregister 514 zu setzenden Wert. In Teilen 114 und 115 gespeicherte Werte werden nicht verwendet. Im Prozessor 501 wird der Befehl in der folgenden Weise abgearbeitet.
  • Zunächst dekodiert der Befehlsdekoder 513 den Befehl, wie oben angegeben, und gibt ein Signal an die Leitung L2 aus, wenn der gelesene Befehl der BASE-Setzbefehl ist. Da der Befehl ein privilegierter Befehl ist, wird er nicht ausgeführt, wenn der Wert des Anzeigefeldes 511-1 nicht 1 ist. Ist dies dagegen der Fall, wird von der UND-Schaltung 525 ein Signal ausgegeben. Mit diesem Signal wird der im Feld OP1 des Befehlsregisters 512 gespeicherte Wert im Pfadtabellenlängenregister 515 gesetzt.
  • Ein Prozeß mit dem im Register durch Ausführen des BASE-Setzbefehls und des LEN-Setzbefehls geladener Zusammenhangswert, welcher Prozeß dem Prozessor 501 zugeordnet wurde, setzt einen Pfad über Datenübertragung vor der Datenübertragung an einen andere Prozeß innerhalb des Jobs.
  • Zunächst führt der Prozeß einen Systemaufruf zum Setzen des Pfads auf. Die Spezifikation dieses Systemaufrufs ist die folgende:
    Pfad = openpath (Name);
    "Name": Name des anderen Prozesses (einmalig innerhalb des Jobs)
    "Pfad": Wert des vom Betriebssystem rückgelieferten Pfades.
  • Der Pfad wird durch die folgende Schrittfolge gesetzt.
  • Zunächst wird beim Betriebssystem des Clusters mit einem Prozeß, der zum selben Job gehört wie der durch den Systemaufruf ausgeführte Prozeß, nachgeforscht, ob ein Prozeß mit dem zugeordneten Namen vorhanden ist. Das Betriebssystem des Clusters, in dem der Prozeß mit dem zugeordneten Namen existiert, teilt dem nachfragenden Cluster die Nummer des Clusters und einen Seitentabellenursprung zum Strukturieren eines virtuellen Raums mit, der eindeutig dem angezeigten Prozeß entspricht. In anderen Fällen teilt das Betriebssystem dem nachfragenden Cluster mit, daß kein Prozeß mit dem angegebenen Namen vorhanden ist.
  • Wenn ein Prozeß mit dem angegebenen Namen nicht gefunden wurde, kehrt der Systemaufruf zu einem speziellen Wert zurück, um dem Nutzerprozeß anzuzeigen, daß der Prozeß nicht gefunden wurde.
  • Wenn ein Cluster mit dem angegebenen Namen gefunden wurde, wird ein Eintrag mit dem Wert 1 im Feld V optional aus der Pfadtabelle 530 ausgewählt, entsprechend dem Nutzerprozeß, der den zugehörigen Systemaufruf ausgeführt hat, und 0 wird in dieses Feld V eingeschrieben, die Nummer des Clusters, in dem der ermittelte Prozeß existiert, wird in das Feld CL eingeschrieben, und der Seitentabelleursprung des virtuellen Raums, der dem ermittelten Prozeß entspricht, wird in das Feld PTO eingeschrieben. Dann wird die Nummer des zugehörigen Eintrags an den Nutzerprozeß rückübermittelt. Anders gesagt bedeutet dies, daß die Nummer des Eintrags der Pfadtabelle 530 der Wert des Pfades wird.
  • Wenn die oben angegebene Vorbereitung abgeschlossen wurde, kann der Prozeß Daten an einen anderen Prozeß übertragen. Anschließend wird die Spezifizierung für einen Fernspeicherungsbefehl zum Übertragen von Daten erläutert. Der Fernspeicherungsbefehl ist ein nichtprivilegierter Befehl und weist ein Format auf, wie es in 22 dargestellt ist. In 22 bezeichnen 117, 118 und 119 virtuelle Adressen innerhalb eines virtuellen Raums, der dem anderen Prozeß entspricht. 116 ist der Betriebskode, 117 ist die virtuelle Adresse zum Speichern eines Wertes des Pfades für die Übertragung, 118 ist die virtuelle Adresse zum Speichern der virtuellen Adresse der zu sendenden Daten im virtuellen Raum des Prozesses zum Ausführen des Befehls, und 119 ist die virtuelle Adresse zum Speichern der zu sendenden Daten. Der Befehl wird auf folgende Weise ausgeführt. Das Schema des Ablaufs des Befehls ist in 23 dargestellt.
  • * Ausführung des Fernspeicherungsbefehls durch den Nutzerprozeß (150 in 23).
  • Der Nutzerprozeß liest den Befehl aus dem Hauptspeicher 505 entsprechend dem Feld 511-2 des PSW 511 in der Ausführungs steuerungsschaltung 510 und speichert den Befehl im Befehlsregister 512. Da der Befehl ein nichtprivilegierter Befehl ist, gibt die Privilegbefehlausführungsentscheidungsschaltung 522 kein Signal aus. Der Befehlsdekoder 513 dekodiert den im Feld OP des Befehlsregisters 512 gespeicherten Betriebskode und erzeugt ein Ausgangssignal auf der Leitung L3, wenn der Lesebefehl ausgeschaltet wurde, damit ein Fernspeicherungsbefehl vorliegt. Dann wird die folgende Betriebsfolge gestartet.
  • * Erste Untersuchung (151 in 23)
  • Der Prozessor addiert den Wert des im ersten Operanden (117 in 22) mit Hilfe des Addierers 516 zu dem im Pfadtabellenbasisregister 514 gespeicherten Wert, um die Eintragungsadresse zu erhalten, die dem Pfad in der Pfadtabelle 530 entspricht, und er erzeugt ein Ausgangssignal für die Leseschaltung 520. Diese empfängt das Signal über die Leitung L3, greift auf den Hauptspeicher 505 auf Grundlage der vom Addierer 516 ausgegebenen Eintragungsadresse zu und erzeugt ein Signal auf der Leitung L4, wenn der Wert im Feld V des zugehörigen Eintrages 1 ist (in diesem Fall ist der Zugriff auf den Hauptspeicher ein Zugriff auf den Betriebssystembereich 529. Da ein Signal über die Leitung L3 in die Betriebssystembereichfreigabeschaltung 528 einzugeben ist, kann die Leseschaltung 512 selbst im nichtprivilegierten Zustand einen Lesevorgang ausführen).
  • Der Prozessor vergleicht den für den Pfad im ersten Operanden gespeicherten Wert mit dem Inhalt des Pfadtabellenlängenregisters 515, was mit Hilfe des Komparators 517 erfolgt. Wenn der Wert für den Pfad größer ist als der Inhalt im Pfadtabellenlängenregister 515, erzeugt der Prozessor ein Ausgangssignal auf der Leitung L12.
  • Die Zugriffungültigentscheidungsschaltung 523 ermittelt, ob der Wert für den durch den Befehl vorgegebenen Pfad einer gültigen Datenübertragung entspricht, was auf Grundlage der Signale auf den Leitungen L3, L4 und L12 erfolgt, und sie erzeugt ein Ausgangssignal für die Ausführungssteuerschaltung 510, wenn der Wert für den Pfad ungültig ist. Der Ungültigkeitsfall ist der Fall, bei dem ein Signal auf mindestens einer der Leitungen L4 und L12 als Ergebnis der Ausführung des Befehls ausgegeben wurde.
  • Das Vorstehende beschreibt die erste Untersuchung. Wenn ein Signal von der Befehlungültigentscheidungsschaltung 523 als Ergebnis der ersten Untersuchung von der Ausführungssteuerschaltung 510 erhalten wird, sperrt diese die Ausführung des Befehls und unterbricht den Prozeß 501.
  • * Zweite Untersuchung (152 in 23)
  • Der Prozessor überprüft den Zustand der Sendesteuerschaltung 526 auf Grundlage des Signals auf der Leitung L3.
  • Wenn sich als Ergebnis der zweiten Untersuchung herausstellt, daß der durch den zuvor ausgeführten Fernspeicherungsbefehl im Senderegister 534 gesetzte Wert noch nicht vollständig an das Netzwerk 509 übertragen wurde, setzt der Prozessor den Betriebskode 1 über die Leitung L13 im Betriebskoderegister 519 und beendet die Ausführung des Befehls. Der Prozessor führt den folgenden Ablauf aus, wenn der im Senderegister 514 durch den zuvor ausgeführten Fernspeicherungsbefehl gesetzte Wert vollständig an das Netzwerk 509 übertragen wurde.
  • * Setzen der Werte in den Feldern CL und PTO (153 in 23)
  • In derselben Weise wie bei der ersten Untersuchung greift die Leseschaltung 520 auf den Speicher 505 mit Hilfe der Eintragungsadresse zu, wie sie vom Addierer 515 ausgegeben wird, und sie gibt den Inhalt des Feldes CL und des Feldes PTO des zugehörigen Eintrags an die Leitung L5 aus. Das Senderegister 514 setzt den an die Leitung L5 ausgegebenen Wert auf die Werte der Felder CL und PTO auf Grundlage des Signals auf der Leitung L3.
  • * Setzen des Wertes im Feld VA (154 in 23)
  • Anschließend setzt der Prozessor die im dritten Operanden (119 in 22) gespeicherte Adresse direkt im Feld VA des Senderegisters 524 auf Grundlage des Signals auf der Leitung L3.
  • Setzen des Datenfeldes (155 in 23)
  • Anschließend übersetzt die Adreßübersetzungsschaltung 518 die im zweiten Operanden (118 in 22) gespeicherte virtuelle Adresse in die reelle Adresse und erzeugt ein Ausgangssignal an die Leseschaltung 521. Diese greift auf den Speicher 505 unter der reellen Adresse auf Grundlage des Signals auf der Leitung L3 zu und gibt die zu sendenden Daten an das Datenfeld des Senderegisters 534 aus. Dieses setzt die zu sendenden Daten für das Datenfeld auf Grundlage des Signals auf der Leitung L3.
  • * Datenübertragung (156 in 23)
  • Wenn die Daten in der vorstehend beschriebenen Weise im Senderegister 534 gesetzt wurden, wird der Bedingungskode 0 im Bedingungskoderegister 519 über die Leitung L13 gesetzt, wodurch die Abarbeitung des Befehls beendet wird. Die Sendesteuerschaltung 526, die das Signal über die Leitung L3 er halten hat, beginnt damit, den Inhalt des Senderegisters 534 an das Metzwerk 509 auszugeben.
  • Der Ablauf des Fernspeicherungsbefehls endet mit den vorstehend angegebenen Vorgängen, und der Prozessor 501 führt den nächsten Befehl aus (157 in 23).
  • Ob Daten erfolgreich an das Netzwerk 509 übertragen wurden oder nicht, kann durch einen bedingten Verzweigungsbefehl überprüft werden, abhängig vom Wert des Bedingungskodes. Wenn aus dem Wert des Bedingungskodes klar ist, daß die Daten nicht erfolgreich übertragen wurden, kann der Befehl erneut abgearbeitet werden.
  • Das Netzwerk 509 überträgt eine Nachricht an die Empfangsschaltung, z. B. die Empfangsschaltung 508 des Clusters, das in der Nachricht angegeben wurde. Infolgedessen werden die Werte des Feldes PTO, des Feldes VA und des Datenfeldes des Senderegisters 534 auf die Werte des Feldes PTO, des Feldes VA bzw. des Datenfeldes des Empfangsregisters 535 gesetzt, was durch die Empfangssteuerschaltung 527 erfolgt.
  • * Überprüfung der Adreßübersetzungsmöglichkeit (160 in 23)
  • Wenn eine Nachricht empfangen wurde, überträgt die Empfangsschaltung 508 die Inhalte der Felder PTO und VA des Empfangsregisters 535 an die Adreßübersetzungsschaltung 536. Nachdem diese die Inhalte dieser beiden Felder erhalten hat, gibt sie ein Signal über die Leitung L19 an die betriebssystembereichzugrifffreigabeschaltung 548 auf Grundlage des im Feld PTO gespeicherten Seitentabellenursprungs und der virtuellen Adresse (des Inhalts des Feldes VA) des zugehörigen virtuellen Raumes 551 aus, wodurch es möglich wird, auf den Betriebssystembereich zuzugreifen. Dadurch greift die Adreß übersetzungsschaltung 536 über die Leitung L20 auf die Seitentabelle 550 zu und überprüft, ob die reelle Adresse des Hauptspeichers 506 erhalten werden kann oder nicht.
  • * Adreßübersetzung (161 in 23)
  • Wenn ein reeller Speicherbereich entsprechend der virtuellen Adresse existiert und die Adreßübersetzung möglich ist, ist der Zugriff auf den Betriebssystembereich in der vorstehend beschriebenen Weise möglich, woraufhin die Empfangsschaltung auf die im Betriebssystembereich 549 untergebrachte Seitentabelle 550 über die Leitung L20 zugreift, welche Seitentabelle dem virtuellen Raum 551 entspricht, der dem Feld PTO im Empfangsregister 535 entspricht. Dadurch führt die Empfangsschaltung eine Adreßübersetzung aus, um die reelle Adresse aus der virtuellen Adresse im Feld VA des Empfangsregisters 535 zu gewinnen, und sie gibt die als Ergebnis der Adreßübersetzung erhaltene reelle Adresse und ein Schreibanforderungssignal an die Leitung L10 aus.
  • * Einschreiben von Daten (162 in 23)
  • Die Schreibschaltung 539, die das oben angegebene Ausgangssignal erhalten hat, erzeugt ein Ausgangssignal für die über die Leitung L10 erhaltene Adresse auf der Leitung L14 und erzeugt ein Ausgangssignal für den Inhalt des Datenfeldes des Empfangsregisters 535 auf der Leitung L15, wodurch die Schreibschaltung 539 den Inhalt des Datenfeldes des Registers 535 in den Datenspeicherbereich 552 des virtuellen Raums 551 einschreibt, wodurch der Ablauf beendet wird.
  • * Adreßerzeugung (170 in 23)
  • Wenn die oben beschriebene Adreßübersetzung nicht möglich ist oder wenn die für eine Seitenausgabe erforderliche Adresse nicht erhalten werden kann, gibt die Adreßübersetzungsschaltung 536 ein Signal an die Leitung L11 aus. Mit der vorstehenden Anordnung kann die Adreßerzeugungsschaltung 537 eine Adresse für den Bereich innerhalb des Empfangsabfangpuffers erzeugen, der den Inhalt des Empfangsregisters 535 speichern kann.
  • Der Empfangsabfangpuffer 553 wurde vorab innerhalb des Betriebssystembereichs 549 des Hauptspeichers 506 durch das Betriebssystem des zugehörigen Clusters gesichert.
  • * Standby des Empfangsregisters (171 in 23)
  • Wenn die von der Adreßerzeugungsschaltung 537 erzeugte Adresse über die Leitung L17 der Schreibschaltung 538 zugeführt wurde, gibt diese über die Leitung L18 ein Signal an die Betriebssystembereichzugrifffreigabeschaltung 548 aus, um das Einschreiben in den Betriebssystembereich 549 freizugeben. Anschließend gibt die Schreibschaltung 538 über eine Leitung L30 die Adresse an den Hauptspeicher aus und schreibt den Inhalt jedes Feldes des Empfangsregisters 535 über eine Leitung L31 ein.
  • * Aufrufen des Betriebssystems durch einen Interrupt (172 in 23)
  • Die Adreßerzeugungsschaltung 537 erzeugt einen Interrupt an die Prozessoren 503 und 504 über die Leitung L21.
  • * Seiteneinleseprozeß (180 in 23)
  • Der Prozessor, in dem ein Interrupt auftrat, ordnet durch einen Seiteneinleseprozeß der virtuellen Adresse, die den Grund für den Interrupt bildete, eine reelle Adresse zu.
  • * Simulation der Empfangsschaltung (181 in 23)
  • Das Betriebssystem entnimmt dem Empfangsabfangpuffer 553 die Nachricht und simuliert prinzipiell den Ablauf der Datenverarbeitung, die durch die Empfangsschaltung 508 auszuführen ist.
  • Die Datenübertragung wird wie vorstehend beschrieben abgeschlossen.
  • Wenn eine Adresse nicht erzeugt werden kann, da im Empfangsabfangpuffer 553 bei der oben beschriebenen Adreßerzeugung (170 in 23) kein Raum frei ist, überträgt die Adreßerzeugungsschaltung 537 ein Signal über die Leitung L16 an die Empfangssteuerschaltung 527. Wenn diese das Signal empfangen hat, sendet sie ein Signal für Empfangsabfang über eine Leitung L9 an das Netzwerk 509, um das übertragen der Nachricht vom Netzwerk 509 auf der Leitung L8 abzufangen. Die Adreßerzeugungsschaltung 537 erzeugt über die Leitung L21 einen Interrupt für den Prozessor 503 oder den Prozessor 504, um das Betriebssystem aufzurufen und eine Erweiterung des Empfangsabfangpuffers 553 anzufordern. Wenn die Erweiterung abgeschlossen ist, teilt das Betriebssystem den Abschluß der Erweiterung der Adreßerzeugungsschaltung 537 über die Leitung L21 mit. Die Adreßerzeugungsschaltung 537, die diese Nachricht empfangen hat, weist die Empfangssteuerschaltung 527 über die Leitung L16 an, den Empfang neu zu starten. Nachdem die Empfangssteuerschaltung 527 diesen Befehl erhalten hat, teilt sie das Neustarten des Empfangs dem Netzwerk 509 über die Leitung L9 mit.
  • Wenn die gesamte erforderliche Datenübertragung abgeschlossen ist, führt der Prozeß einen Systemaufruf zum Freigeben des Pfades aus. Die Spezifizierung dieses Systemaufrufs ist die folgende:
    closepath ("Pfad");
    "Pfad": Wert für den Pfad
  • Um den Pfad freizugeben, wird der Wert 1 im Feld V für den Eintrag gesetzt, wie er durch das Argument "Pfad" in der Pfadtabelle 530 angegeben ist, entsprechend dem Prozeß, der den Systemaufruf ausgeführt hat.
  • Ausführungsbeispiel 6
  • Das sechste Ausführungsbeispiel ist eine Modifizierung des fünften Ausführungsbeispiels, weswegen im wesentlichen nur unterschiedliche Punkte erläutert werden. 24 zeigt den Aufbau eines Parallelprozessors gemäß dem sechsten Ausführungsbeispiel der Erfindung. In 24 haben Elemente, die dieselben Bezugszeichen tragen wie solche beim fünften Ausführungsbeispiel, denselben Aufbau wie die dortigen Elemente.
  • In 24 bezeichnen 501a, 502a, 503a und 504a Prozessoren mit jeweils demselben Aufbau. 505 und 506 bezeichnen Hauptspeicher. 507a und 508 bezeichnen eine Sendeschaltung bzw. eine Empfangsschaltung. 509 bezeichnet ein Netzwerk.
  • Im Prozessor 501a bezeichnet 512a ein Befehlsregister. Dieses unterscheidet sich vom Befehlsregister 512 des fünften Ausführungsbeispiels dadurch, daß das erstere drei Operanden speichert, während das letztere nur zwei Operanden speichert. Im Prozessor 501a sind weitere Aufbauelemente wie im Prozessor 501 von 17 vorhanden, die durch gleiche Bezugszeichen gekennzeichnet sind, wenn sie einander entsprechen.
  • In der Sendeschaltung 507a bezeichnen 534a-1 und 534a-2 Senderegister, die dem Senderegister 534 des fünften Ausfüh rungsbeispiels entsprechen, das jedoch zweigeteilt ist, wie in der Figur dargestellt.
  • Reim vorliegenden Ausführungsbeispiel besteht der Fernspeicherungsbefehl des fünften Ausführungsbeispieles nicht mehr, wohingegen zwei Befehle betreffend einen Fernspeicherungsvorbereitungsbefehl und einen Fernspeicherungsausführungsbefehl neu hinzugefügt sind. Diese zwei neuen Befehle sind nichtprivilegierte Befehle.
  • 25 zeigt ein Format für den Fernspeicherungsvorbereitungsbefehl. In 25 bezeichnet 200 einen Betriebskode für diesen Befehl; ein erster Operand 201 ist ein Wert für den Pfad. Ein in einem Feld 202 gespeicherter Wert wird nicht verwendet.
  • 26 zeigt ein Format für den Fernspeicherungsausführungsbefehl. In 26 bezeichnet 204 einen Betriebskode für diesen Befehl; ein erster Operand 205 ist die virtuelle Adresse innerhalb des virtuellen Raums, der dem anderen Prozeß zum Speichern zu sendender Daten entspricht. Ein dritter Operand 206 ist eine virtuelle Adresse der zu sendenden Daten, wie sie im virtuellen Raum vorhanden sind, der dem Prozeß entspricht, der diesen Befehl ausführt.
  • Die Funktion des Parallelprozessors gemäß diesem Ausführungsbeispiel wird nun erläutert. Die Funktion ist dieselbe wie diejenige beim fünften Ausführungsbeispiel mit der Ausnahme, daß die Abläufe für den gegenüber dem fünften Ausführungsbeispiel nicht mehr vorhandenen Fernspeicherungsbefehl durch die zwei zusätzlichen Befehle, also den Fernspeicherungsvorbereitungsbefehl und den Fernspeicherungsausführungsbefehl ausgeführt werden. Daher werden die Abläufe gemäß diesen zwei Befehlen unter Bezugnahme auf die 24 und 27 beschrieben.
  • Es wird zunächst der Ablauf für den Fernspeicherungsvorbereitungsbefehl beschrieben. Dieser Befehl wird wie folgt ausgeführt.
  • * Ausführung des Fernspeicherungsvorbereitungsbefehls durch den Nutzerprozeß (182 in 27)
  • Zunächst liest der Nutzerprozeß den Befehl aus dem Hauptspeicher 505 abhängig vom Feld 511-2 des PSW 511 in der Ausführungssteuerschaltung 510 und speichert den Befehl im Befehlsregister 512a. Da dieser Befehl ein nichtprivilegierter Befehl ist, erzeugt die Privilegbefehlsausführungsentscheidungsschaltung 522 kein Ausgangssignal. Der Befehlsdekoder 513 dekodiert den im Feld OP des Befehlsregisters 512a gespeicherten Betriebskode und erzeugt ein Ausgangssignal auf der Leitung L3, wenn klar ist, daß der gelesene Befehl der Fernspeichervorbereitungsbefehl ist. Dann wird die folgende Serie von Abläufen ausgeführt.
  • * Erste Überprüfung (151 in 27)
  • Der Prozessor addiert mit Hilfe des Addierers 516 den Wert des im ersten Operanden (201 in 25) gespeicherten Pfades zu dem im Pfadtabellenbasisregister 514 gespeicherten Wert, um eine Bereichsadresse zu erhalten, die dem Pfad in der Pfadtabelle 530 entspricht, und erzeugt ein Ausgangssignal für die Leseschaltung 520. Nachdem diese das Signal über die Leitung L3 erhalten hat, greift sie durch die vom Addierer 516 ausgegebene Eintragungsadresse auf den Hauptspeicher 505 zu und erzeugt auf der Leitung L4 ein Ausgangssignal, wenn der Wert des Feldes V des Eintrages 1 ist. (In diesem Fall ist der Speicherzugriff ein Zugriff auf den Betriebssystembereich 529. Da jedoch ein Signal über die Leitung L3 in die Betriebssystembereichfreigabeschaltung 528 eingegeben wird, kann die Leseschaltung 520 auch dann einen Lesevorgang ausführen, wenn sie nicht im privilegierten Zustand ist). Über die Leitung L4 wird ein Signal ausgegeben, wenn der Wert des Feldes V der Eintragung 1 ist.
  • Der Prozessor vergleicht weiterhin den im ersten Operanden gespeicherten Wert für den Pfad mit dem Inhalt des Pfadtabellenlängenregisters 515, was durch den Komparator 517 erfolgt. Wenn der Wert für den Pfad größer ist als der Inhalt des Pfadtabellenlängenregisters 515, was durch den Vergleich festgestellt wird, erzeugt der Prozessor ein Ausgangssignal auf der Leitung L12.
  • Die Zugriffungültigentscheidungsschaltung 523 entscheidet, ob der Wert für den durch diesen Befehl zugeordneten Pfad eine gültige Datenübertragung kennzeichnet oder nicht, was auf Grundlage der Signale auf den Leitungen L3, L4 und L12 erfolgt, und sie erzeugt ein Ausgangssignal für die Ausführungssteuerschaltung 510, wenn sich herausstellt, daß der Wert für den Pfad ungültig ist. Der Ungültigkeitsfall liegt vor, wenn ein Ausgangssignal auf mindestens einer der Leitungen L14 und L12 nach dem Ausführen des Befehls auftrat.
  • Mit den vorstehenden Ausführungen ist die Beschreibung für die erste Überprüfung abgeschlossen. Wenn ein Signal infolge der ersten Überprüfung von der Zugriffungültigentscheidungsschaltung 523 von der Ausführungssteuerschaltung 510 erhalten wird, sperrt diese die Ausführung dieses Befehls und erzeugt einen Interrupt für den Prozessor 501a.
  • * Zweite Überprüfung (152 in 27)
  • Der Prozessor überprüft den Zustand der Sendesteuerschaltung 526 auf Grundlage des Signals auf der Leitung L3.
  • Wenn als Ergebnis der zweiten Überprüfung klar ist, daß die in den Senderegistern 534a-1 und 534a-2 durch den zuvor ausgeführten Fernspeicherungsausführungsbefehl gesetzten Werte noch nicht völlig an das Netzwerk 509 übertragen wurden, setzt der Prozessor das Bedingungskoderegister 519 über die Leitung L13 auf den Bedingungskode 1 und beendet die Ausführung des Befehls. Der Prozessor führt die folgenden Abläufe aus, wenn die in den Senderegistern 534a-1 und 534a-2 gesetzten Werte, wie sie zuvor durch den Fernspeicherungsausführungsbefehl ausgeführt wurden, alle an das Netzwerk 509 übertragen wurden.
  • * Setzen der Werte der Felder CL und PTO (153 in 27)
  • Zunächst greift, wie bei der ersten Überprüfung, die Leseschaltung 520 mit Hilfe der Eintragungsadresse, wie sie durch den Addierer 516 ausgegeben wird, auf den Hauptspeicher 505 zu und gibt die Inhalte der Felder CL und PTO des Eintrags an die Leitung L5 aus. Das Senderegister 534a-1 setzt den an die Leitung L5 ausgegebenen Wert im Feld CL und den Wert im Feld PTO auf Grundlage des Signals auf der Leitung L3.
  • Durch die vorstehenden Erläuterungen ist der Ablauf für den Fernspeicherungsvorbereitungsbefehl beschrieben.
  • Nun wird der Ablauf für den Fernspeicherungsausführungsbefehl erklärt. Dieser Befehl wird wie folgt abgearbeitet.
  • * Ausführen des Fernspeicherungsausführungsbefehls durch den Nutzerprozeß (183 in 27)
  • Der Nutzerprozeß liest zunächst den Befehl aus dem Hauptspeicher 505 gemäß dem Feld 511-2 des PSW 511 in der Ausführungssteuerschaltung 510 und speichert den Befehl im Be fehlsregister 512a. Da dieser Befehl ein nichtprivilegierter Befehl ist, erzeugt die Privilegbefehlausführungsentscheidungsschaltung 512 kein Ausgangssignal. Der Befehlsdekoder 513 dekodiert den im Feld OP des Befehlsregisters 512a gespeicherten Betriebskode und startet die folgende Serie von Abläufen nach dem Erzeugen eines Ausgangssignals auf einer Leitung L99, wenn klar ist, daß der ausgelesene Befehl der Fernspeicherungsausführungsbefehl ist.
  • * Setzen des Feldes VA (154 in 27)
  • Anschließend wird die im ersten Operanden (205 in 26) gespeicherte virtuelle Adresse direkt im Feld VA des Senderegisters 534a-2 auf Grundlage des Signals auf der Leitung L99 gesetzt.
  • * Setzen des Datenfeldes (155 in 27)
  • Die Adreßübersetzungsschaltung 518 übersetzt die im zweiten Operanden (206 in 26) gespeicherte virtuelle Adresse in eine reelle Adresse und erzeugt ein Ausgangssignal für die Leseschaltung 521. Diese greift auf den Hauptspeicher 505 mit der reellen Adresse auf Grundlage des Signals auf der Leitung L99 zu und gibt die zu sendenden Daten an das Datenfeld des Senderegisters 534a-2 aus. Dieses setzt die zu sendenden Daten im Datenfeld auf Grundlage des Signals auf der Leitung L99.
  • * Datenübertragung (156 in 27)
  • Wenn das Setzen der Senderegister 534a-1 und 534a-2, wie vorstehend beschrieben, abgeschlossen ist, setzt die Sendeschaltung den Bedingungskode 0 über die Leitung L13 im Bedingungskoderegister 519 und beendet die Ausführung des fehls. Die Sendesteuerschaltung 526, die das Signal von der Leitung L99 empfangen hat, beginnt mit dem Senden der Inhalte der Senderegister 534a-1 und 534a-2 an das Netzwerk 509.
  • Damit wird der Ablauf für den Fernspeicherungsausführungsbefehl abgeschlossen.
  • Wie es aus der obigen Erklärung hervorgeht, ist es durch Ausführen des Fernspeicherungsvorbereitungsbefehls zum Setzen des Wertes des Senderegisters 534a-1 mit anschließendem Ausführen des Fernspeicherungsausführungsbefehls möglich, einen Effekt zu erzielen, der mit dem übereinstimmt, wie er erzielt wird, wenn der Fernspeicherungsbefehl beim fünften Ausführungsbeispiel ausgeführt wird. Dementsprechend ist der Betrieb des Prozessors zum Empfangen von Daten genau der gleiche wie im Fall des fünften Ausführungsbeispiels.
  • Damit ist die Erläuterung des sechsten Ausführungsbeispiels der Erfindung abgeschlossen.
  • Beim vorliegenden Ausführungsbeispiel wird der Fernspeicherungsvorbereitungsbefehl dann, wenn im selben Prozeß Daten wiederholt zu senden sind, nur einmal ausgeführt, und der Fernspeicherungsausführungsbefehl wird entsprechend der erforderlichen Anzahl ausgeführt. Demgegenüber wird beim fünften Ausführungsbeispiel der Fernspeicherungsbefehl wiederholt ausgeführt. Da der Fernspeicherungsbefehl des fünften Ausführungsbeispiels durch den Fernspeicherungsausführungsbefehl ersetzt ist, für den die Abarbeitung erheblich einfacher ist, besteht die Wirkung, daß der Overhead, wie er zum Übertragen von Daten erforderlich ist, weiter verringert werden kann.
  • Ausführungsbeispiel 7
  • Das siebte Ausführungsbeispiel ist eine Modifizierung des fünften Ausführungsbeispiels, das jedoch mit einfacherem Aufbau realisiert werden kann, wenn eine Einschränkung beim Verfahren hingenommen wird, wie es beim fünften Ausführungsbeispiel ausgeführt wird.
  • Eine Einschränkung, wie sie zum fünften Ausführungsbeispiel hinzugefügt wird, um das siebte Ausführungsbeispiel zu erhalten, wird nun erläutert.
  • Beim fünften Ausführungsbeispiel kann eine virtuelle Seite im virtuellen Raum des Datenempfangsprozesses, welche Seite durch den Fernspeicherungsbefehl zu übertragen ist, durch das Betriebssystem seitenmäßig ausgegeben werden. Beim vorliegenden Ausführungsbeispiel wird jedoch die Einschränkung hinzugefügt, daß die genannte durch den Fernspeicherungsbefehl zu sendende virtuelle Seite im virtuellen Raum des Datenemfangsprozesses dem reellen Speicher ohne Ausnahme zugeordnet ist.
  • Der Ablauf, gemäß dem eine virtuelle Seite dem reellen Speicher ohne Ausnahme zugeordnet ist und bei dem eine seitenweise Ausgabe nicht zulässig ist, ist ein Ablauf mit sogenannter Seitenfixierung. Dies kann unter Verwendung herkömmlicher Technik einfach realisiert werden.
  • Der Aufbau eines Parallelprozesses gemäß diesem Ausführungsbeispiel kann dadurch realisiert werden, daß ein Teil der Elemente des Aufbaus des fünften Ausführungsbeispiels weggelassen wird. 28 zeigt den Aufbau des Parallelprozessors gemäß dem vorliegenden Ausführungsbeispiel. Diesem Aufbau fehlen die Adreßerzeugungsschaltung 537, die Schreibschaltung 538, der Empfangsabfangpuffer 553, der Datenspeicherbereich 554 des Empfangsabfangpuffers 553 und die an diese Elemente angeschlossenen Leitungen gegenüber dem Parallelprozessor von 17.
  • Die Funktion des Parallelprozessors gemäß diesem Ausführungsbeispiel ist fast dieselbe wie diejenige des Parallelprozessors des fünften Ausführungsbeispiels. Daher werden nur Unterschiede erläutert.
  • Ein erster Unterschied liegt beim Initialisieren des Prozesses zum Empfangen von Daten vor, wie sie durch den Fernspeicherbefehl zu übertragen sind. Gemäß dem vorliegenden Ausführungsbeispiel wird beim Ausführen der Abläufe des Betriebssystems zum Erzeugen eines virtuellen Raums zum Erzeugen eines Prozesses ein reeller Speicherbereich gesichert, dessen Kapazität mit derjenigen der virtuellen Seite übereinstimmt, die für den Kodebereich und den Datenbereich des Prozesses nach dem Erzeugen des Raums erforderlich ist, und dieser reelle Speicherbereich wird dem virtuellen Speicherbereich völlig zugeordnet, wobei ein Seitenfixierungsprozeß für die ganzen virtuellen Seiten ausgeführt wird.
  • Ein zweiter Unterschied besteht beim Empfangsablauf im Prozeß zum Empfangen von Daten, wie sie durch einen Fernspeicherbefehl übertragen werden. Wie vorstehend beschrieben, ist der virtuellen Seite des Prozesses ohne Ausnahme ein reeller Speicher zugeordnet, so daß die Verarbeitung der Adreßübersetzungsmöglichkeitsuntersuchung 160 von 23, die die Funktion des fünften Ausführungsbeispiels verarbeitet, nicht erforderlich ist. Auch ist eine Reihe von Abläufen ab der Adreßerzeugung 170 nicht erforderlich. Dementsprechend ist es im Prozeß zum Empfangen von Daten, die durch die Datenübertragung 156 von 23 übertragen werden, nur erforderlich, die Adreßübersetzung 161 und dann die Datenspeicherung 162 vorzunehmen.
  • Damit ist die Beschreibung des siebten Ausführungsbeispiels der Erfindung im wesentlichen abgeschlossen.
  • Bei diesem siebten Ausführungsbeispiel ist der Empfangsabfangspuffer nicht erforderlich, wodurch der reelle Speicherbereich und die Verwaltung für den Empfangsabfangspuffer nicht erforderlich sind. Daher besteht die Wirkung, daß der Overhead im Prozessor, der Daten empfängt, verringert werden kann.
  • Ausführungsbeispiel 8
  • Das achte Ausführungsbeispiel der Erfindung ist eine Modifizierung des siebten Ausführungsbeispiels, jedoch mit vielen gemeinsamen Punkten. Daher werden nur Unterschiede erläutert. 29 zeigt den Aufbau des Parallelprozessors gemäß dem achten Ausführungsbeispiel. In 29 sind die Strukturen von Elementen, die dieselben Bezugszeichen tragen wie Elemente in 17 dieselben wie diejenigen der Elemente im fünften Ausführungsbeispiel.
  • In 29 bezeichnen Bezugszeichen 501c, 502c, 503c und 504c Prozessoren mit jeweils derselben Struktur. 505 und 506 bezeichnen Speicher. 507c und 508c bezeichnen eine Sendeschaltung bzw. eine Empfangsschaltung. 509 bezeichnet ein Netzwerk.
  • Im Prozessor 501c bezeichnet 999 eine Adreßübersetzungsschaltung, bei der es sich um eine für dieses Ausführungsbeispiel neu eingeführte Anordnung handelt. Andere Aufbauelemente des Prozessors 501c sind solche, wie im Prozessor 501 von 17 vorhanden, wobei dieselben Aufbauelemente dieselben Bezugszeichen tragen.
  • Im Hauptspeicher 505 bezeichnet 530c eine Pfadtabelle. Jeder Eintrag in der Pfadtabelle 530c verfügt über ein Feld V und ein Feld CL. 530c bezeichnet eine Tabelle, die der Tabelle 530 im fünften Ausführungsbeispiel nach Entfernen des Feldes PTO entspricht.
  • In der Sendeschaltung 507c bezeichnet 534c ein Senderegister, das über drei Felder für Werte von CL, RA und Daten verfügt.
  • In der Empfangsschaltung 508c bezeichnet 535c ein Empfangsregister.
  • Das vorliegende Ausführungsbeispiel ist eine Modifizierung des siebten Ausführungsbeispiels dahingehend, daß der Adreßübersetzungsablauf in bezug auf den virtuellen Raum, in den Daten durch den Fernspeicherbefehl einzuschreiben sind, durch den Prozessor auf der Sendeseite ausgeführt wird. Der Unterschied zwischen dem achten und dem siebten Ausführungsbeispiel besteht lediglich in der Funktion des Befehls "openpath", der einem Systemaufruf im siebten Ausführungsbeispiel entspricht, und im Ablauf des Fernspeicherbefehls. Daher werden diese Abläufe erläutert. Der Ablauf "openpath" im siebten Ausführungsbeispiel ist derselbe wie beim fünften Ausführungsbeispiel.
  • Zunächst wird der Ablauf "openpath" erläutert. Die Spezifikation für "openpath" ist dieselbe wie beim siebten Ausführungsbeispiel. Dieser Systemaufruf wird auf folgende Weise ausgeführt.
  • Zunächst frägt ein Cluster beim Betriebssystem des Clusters mit dem Prozeß, der zum selben Job gehört wie der Prozeß, der den Systemaufruf ausgeführt hat, an, ob der Prozeß einen vorgegebenen Namen hat. Das Betriebssystem desjenigen Clusters, in dem sich ein Prozeß mit dem vorgegebenen Namen befindet, gibt die Nummer des Clusters und eine Information aus, um die reelle Adresse aus der virtuellen Adresse im virtuellen Raum zu gewinnen, die eindeutig dem angezeigten Prozeß entspricht; die Eingabe erfolgt an den anfragenden Cluster. In anderen Fällen zeigt der angefragte Cluster dem anfragenden Cluster an, daß kein Prozeß mit dem angegebenen Namen vorhanden ist.
  • Wenn kein Prozeß mit dem angegebenen Namen als Ergebnis der vorstehenden Abfrage gefunden wurde, gibt der Systemaufruf einen speziellen Wert an den Nutzerprozeß ab, der anzeigt, daß kein Prozeß mit dem angegebenen Namen gefunden wurde.
  • Wenn ein Cluster gefunden wurde, in dem der Prozeß mit dem angegebenen Namen vorhanden ist, wird ein Eintrag mit dem Wert 1 im Feld V wahlweise aus der Pfadtabelle 30 ausgelesen, die dem Nutzerprozeß zugeordnet ist, die den Systemaufruf ausgeführt hat. Dann wird der Wert 0 in dieses Feld V eingeschrieben, und die Nummer des Clusters, in dem der festgestellte Prozeß existiert, wird in das Feld CL eingeschrieben. Darüber hinaus wird Information zum Erhalten der reellen Adresse aus der virtuellen Adresse im virtuellen Raum, der eindeutig dem zugeordneten Prozeß entspricht, gesetzt, und es wird die Eintragungsnummer der Pfadtabelle in der Adreßübersetzungsschaltung 999 gesetzt, und die Eintragungsnummer wird an den Nutzerprozeß übergeben. Anders gesagt wird die Eintragungsnummer der Pfadtabelle 530c der Wert für den Pfad.
  • Infolgedessen kann die Adreßübersetzungsschaltung 999 die reelle Adresse auf Grundlage des Wertes für den Pfad und der virtuellen Adresse des virtuellen Raums, der dem Pfadwert entspricht, erhalten. Die Adreßübersetzungsschaltung 99 kann mit herkömmlicher Technik strukturiert sein.
  • Es wird nun die Abarbeitung des Fernspeicherungsbefehls erklärt.
  • * Ausführung des Fernspeicherungsbefehls durch den Nutzerprozeß
  • Zunächst wird der Befehl gemäß dem Feld 511-2 des PSW 511 in der Ausführungssteuerschaltung 510 aus dem Hauptspeicher 505 gelesen, und der Befehl wird im Befehlsregister 512 gespeichert. Dieser Befehl ist ein nichtprivilegierter Befehl, weswegen die Privilegbefehlausführungsentscheidungsschaltung 522 kein Ausgangssignal erzeugt. Der Befehlsdekoder 513 dekodiert den Betriebskode, wie er im Feld OP des Befehlsregisters 512 gespeichert ist. Wenn sich herausstellt, daß der gelesene Befehl der Fernspeicherbefehl ist, wird ein Signal auf die Leitung L3 ausgegeben, und es wird die folgende Serie von Abläufen gestartet.
  • * Erste Überprüfung
  • Der Wert für den Pfad, wie er im ersten Operanden gespeichert wird, und der Wert, wie er im Pfadtabellenbasisregister 514 gespeichert ist, werden durch den Addierer 516 zusammengezählt, um die Eintragungsadresse zu erhalten, die dem Pfad in der Pfadtabelle 530c entspricht. Das Ergebnis der Eingabeadresse wird an die Leseschaltung 520 ausgegeben. Diese greift auf den Hauptspeicher 505 auf Grundlage der Eintragungsadresse zu, wie sie von dem Addierer 516 ausgegeben wird, nachdem sie ein Signal über die Leitung L3 empfangen hat, und sie erzeugt ein Signal auf der Leitung L4, wenn der Wert im Feld V des Eintrags 1 ist.
  • Dann wird der Wert für den Pfad, wie er im ersten Operanden gespeichert ist, durch den Vergleicher 517 mit dem Inhalt des Pfadtabellenlängenregisters 515 verglichen. Wenn der Wert für den Pfad größer ist als der Inhalt des Pfadtabellenlängenregisters 515, was durch den Vergleich festgestellt wird, wird ein Signal auf der Leitung L12 ausgegeben.
  • Auf Grundlage der Signale auf den Leitungen L3, L4 und L12 entscheidet die Zugriffungültigentscheidungsschaltung 523, ob der durch diesen Befehl für den Pfad angegebene Wert für Datenübertragung gültig ist oder nicht. Wenn der Wert ungültig ist, erzeugt die Entscheidungsschaltung 523 ein Ausgangssignal für die Ausführungssteuerschaltung 520. Der Ungültigkeitsfall liegt dann vor, wenn ein Signal mindestens auf einer der Leitungen L4 und L12 als Ergebnis der Ausführung des Befehls ausgegeben wurde.
  • Vorstehendes betrifft die erste Überprüfung. Nachdem die Ausführungssteuerschaltung 510 das Signal von der Zugriffungültigentscheidungsschaltung 523 als Ergebnis der ersten Überprüfung erhalten hat, unterdrückt sie die Ausführung dieses Befehls und erzeugt einen Interrupt im Prozessor 501.
  • * Zweite Überprüfung
  • Auf Grundlage des Signals auf der Leitung L3 wird der Zustand der Sendesteuerschaltung 526 überprüft.
  • Wenn sich als Ergebnis der zweiten Überprüfung herausgestellt hat, daß der im Senderegister 534 durch den zuvor ausgeführten Fernspeicherbefehl gesetzte Wert nicht völlig an das Netzwerk 509 übertragen wurde, wird der Bedingungskode im Bedingungskoderegister 519 über die Leitung L13 auf den Wert 1 gesetzt, wodurch die Ausführung dieses Befehls beendigt wird. Wenn der durch den zuvor ausgeführten Fernspeicherbefehl im Senderegister 534 gesetzte Wert völlig an das Netzwerk 509 übertragen wurde, findet der folgende Ablauf statt.
  • * Setzen des Feldes CL
  • Zunächst greift die Leseschaltung 520 in derselben Weise wie im Fall der ersten Überprüfung auf den Hauptspeicher 505 auf Grundlage der Eintragungsadresse zu, wie sie vom Addierer 516 ausgegeben wird, und gibt den Inhalt des Feldes CL dieses Eintrags an die Leitung L5 aus. Das Senderegister 534c setzt den über die Leitung L5 ausgegebenen Wert im Feld CL auf Grundlage des Signals auf der Leitung L3.
  • * Setzen des Feldes RA
  • Anschließend werden der Wert für den im ersten Operanden gespeicherten Pfad und die virtuelle Adresse, wie sie im dritten Operanden gespeichert ist, in die Adreßübersetzungsschaltung 999 eingegeben. Diese gibt die reelle Adresse für den Empfangsort der Datenübertragung aus. Das Senderegister 534c setzt den von der Adreßübersetzungsschaltung ausgegebenen Wert im Feld RA auf Grundlage des Signals auf der Leitung L3.
  • * Setzen des Datenfeldes
  • Anschließend übersetzt die Datenübersetzungsschaltung 518 die virtuelle Adresse, wie sie im zweiten Operanden gespeichert ist, in die reelle Adresse und gibt die konvertierte reelle Adresse an die Leseschaltung 521 aus. Diese greift mit der reellen Adresse auf Grundlage des Signals auf der Leitung L3 auf den Hauptspeicher 505 zu und gibt die zu sendenden Daten an das Datenfeld des Senderegisters 534c aus. Dieses setzt die zu sendenden Daten im Datenfeld auf Grundlage des Signals auf der Leitung L3.
  • * Datenübertragung
  • Wenn das Setzen des Senderegisters 534c wie vorstehend ab geschlossen ist, wird über die Leitung L13 der Bedingungskode 0 im Bedingungskoderegister 519 gesetzt, wodurch der Ablauf für diesen Befehl beendet wird. Die Sendesteuerschaltung 526, die das Signal auf der Leitung L3 erhalten hat, beginnt mit dem Senden des Inhalts des Senderegisters 534c an das Netzwerk 509.
  • Ob das Übertragen an das Netzwerk erfolgreich war oder nicht, kann mit Hilfe eines Verzweigungsbefehls überprüft werden, abhängig vom Wert des Bedingungskodes. Wenn es aus dem Wert des Bedingungskodes ersichtlich ist, das die Übertragung an das Netzwerk nicht erfolgreich war, wird der Befehl erneut ausgeführt.
  • Das Netzwerk 509 überträgt eine Nachricht an die Empfangsschaltung des in der Nachricht angegebenen Clusters, z. B. an die Empfangsschaltung 508c. Infolgedessen werden der Wert für das Feld RA und das Datenfeld des Senderegisters 534c im Feld RA bzw. im Datenfeld des Empfangsregisters 535c durch die Empfangssteuerschaltung 537 gesetzt.
  • Dann wird der folgende Ablauf ausgeführt.
  • * Schreiben von Daten
  • Die Schreibschaltung 539 gibt den Inhalt des Feldes RA des Empfangsregisters 535c an die Leitung L14 aus und gibt den Inhalt des Datenfeldes des Empfangsregisters 535c an die Leitung L15 aus und schreibt dann den Inhalt des Datenfeldes des Registers 535c in den Datenspeicherbereich 552 des virtuellen Speichers 551, wodurch der Ablauf beendet wird.
  • Die Datenübertragung wird wie vorstehend beschrieben abgeschlossen.
  • Gemäß dem vorstehenden Ausführungsbeispiel wird der Ablauf in der Empfangsschaltung des Clusters, in dem ein Datenempfangsprozeß abläuft, vereinfacht. Daher wird der Betrieb des Lesens von Daten und des Speicherns von Daten im Hauptspeicher im Vergleich zum Ablauf beim siebten Ausführungsbeispiel schneller, wenn Datenübertragungen von vielen Prozessen auf ein Cluster konzentriert sind. Im Ergebnis kann der Kommunikationsoverhead weiter verringert werden.
  • Ausführungsbeispiel 9
  • Das neunte Ausführungsbeispiel betrifft den Fall, daß ein Prozessor auf eine externe Einrichtung, z. B. eine Ein/Ausgabe-Einrichtung für Daten zugreift.
  • Wenn ein Prozessor gemäß dem Stand der Technik Zugriff auf eine externe Dateneinrichtung anfordert, bereitet das Betriebssystem zunächst einen Speicherbereich zum Einschreiben der Daten vor und schützt diesen Speicherbereich davor, daß er seitenweise ausgegeben wird. Zu diesem Zweck ist ein Verfahren vorhanden, gemäß dem der Speicherbereich z. B. im reellen Speicher gesichert wird oder bei dem der Speicherbereich im virtuellen Speicherbereich für die Seitenfixierung gesichert wird. Dann wird ein Befehl einschließlich der Adresse an die externe Einrichtung ausgegeben.
  • Wenn die externe Einrichtung, die den Befehl erhalten hat, die in den Speicher einzuschreibenden Daten vorbereitet hat, schreibt sie die Daten in den oben angegebenen Bereich, der nicht seitenweise ausgegeben wurde.
  • Gemäß der vorstehend angegebenen bekannten Technik kann der für die externe Einrichtung vorbereitete Speicherbereich während der Ansprechzeit der externen Einrichtung nicht zum Ausführen des Programms des Prozessors verwendet werden, wenn die Betriebsgeschwindigkeit der externen Einrichtung niedriger ist als diejenige des Prozessors.
  • Um dieses Problem zu lösen, gibt das vorliegende Ausführungsbeispiel ein Verfahren an, bei dem kein Problem auftritt, wenn der Speicherbereich, in den die externe Einrichtung Daten einzuschreiben hat, seitenweise ausgegeben wurde.
  • Um dieses Problem zu lösen, kann ein Empfangsabfangpuffer verwendet werden, wie er in Zusammenhang mit dem fünften Ausführungsbeispiel der Erfindung beschrieben wurde. Genauer gesagt, werden die Empfangsschaltung 508 und der Empfangsabfangpuffer 553, wie im fünften Ausführungsbeispiel dargestellt, zwischen die externe Einrichtung und den Prozessor geschaltet.
  • Wenn der Prozessor auf eine externe Einrichtung zum Schreiben von Daten zugreift, wird der Bereich zum Schreiben der Daten im normalen virtuellen Speicherbereich sichergestellt, und die virtuelle Adresse dieses Bereichs und ein PTO-Befehl (Page Table Origin), der dem virtuellen Raum mit diesem Bereich entspricht, werden an die externe Einrichtung übertragen. Wenn diese den Ablauf zum Lesen, z. B. der Platteneinheit, gestartet hat und zu schreibende Daten vorbereitet hat, überträgt die externe Einrichtung die PTO, die virtuelle Adresse und die Daten an die Empfangsschaltung, die an den Prozessor angeschlossen ist, der die Daten angefordert hat. Dann entscheidet die Empfangsschaltung in derselben Weise wie beim fünften Ausführungsbeispiel, ob der reelle Speicherbereich, der dem virtuellen Speicherbereich entspricht, in den die Daten einzuschreiben sind, durch die Adreßübersetzungsschaltung eine Zuordnung erfahren hat oder nicht. Wenn ein reeller Speicherbereich zugeordnet wurde, werden die Daten in diesen Bereich eingeschrieben. Wenn dagegen ein reeller Speicherbereich wegen des Auslesens einer Seite nicht zugeordnet wurde, wird ein Bereich zugeordnet, der als Empfangsabfangspuffer verwendet werden kann, was auf dieselbe Weise erfolgt wie durch die Adreßerzeugungsschaltung 537 in der Empfangsschaltung 508, und die PTO, die virtuelle Adresse und die Daten werden in diesen Bereich eingeschrieben. Dann erzeugt die Empfangsschaltung einen Interrupt im Prozessor. Im Ergebnis liest der Prozessor den durch die PTO seitenweise ausgegebenen Bereich seitenweise ein (page-in), wie auch die im Empfangsabfangpuffer gespeicherte Adresse, und er schreibt dann die Daten in diesen Bereich ein.
  • Gemäß diesem Ausführungsbeispiel kann der Bereich, in den die externe Einrichtung Daten einschreiben kann, als Bereich für normales Seitenlesen gesetzt werden. Dementsprechend besetzt die externe Einrichtung selbst dann keinen Speicherbereich, der für diese externe Einrichtung während ihrer Ansprechzeit vorgegeben ist, wenn die Betriebsgeschwindigkeit der externen Einrichtung langsamer ist als die Betriebsgeschwindigkeit des Prozessors, so daß der Speicherbereich für die Ausführung des Programms durch den Prozessor verwendet werden kann.
  • Gemäß der vorliegenden Erfindung ist es zum Ausführen von Datenübertragungen zwischen Nutzerprozessen erforderlich, die Übertragung zwischen den Betriebssystemen der Cluster zu initialisieren, wenn die Nutzerprozesse zu starten sind. Wenn jedoch tatsächlich Datenübertragung zwischen Nutzerprozessen stattfindet, wenn Daten vom virtuellen Raum des Nutzerprozesses in einem besonderen Cluster in den virtuellen Raum des Nutzerprozesses in einem anderen Raum übertragen werden, können die Daten direkt übertragen werden, ohne daß sie in den Pufferbereich des Betriebssystems kopiert werden. Dementsprechend ist es möglich, Datenübertragung mit einem kleinen Overhead auszuführen, ohne daß nichterforderliche Änderungen im virtuellen Raum des Nutzerprozesses erforderlich sind, die nicht in Zusammenhang mit der Datenübertragung stehen.

Claims (5)

  1. Intraprozessorkommunikationsverfahren in einem Parallelprozessorsystem mit mehreren Clustern (100), von denen jeder mindestens einen Prozessor (1; 501, 502) und einen von diesem mindestens einen Prozessor zu nutzenden Hauptspeicher (2; 505) aufweist, und mit einem Netzwerk (4; 509) zum Verbinden der mehreren Cluster, wobei mindestens ein Prozeß mit mindestens einem zugeordneten virtuellen Raum innerhalb jedes Clusters ausgeführt wird, unter Steuerung durch ein jedem Cluster zugeordnetes Betriebssystem, und das Intraprozessorkommunikationsverfahren zum Übertragen von Übertragungsdaten von einem einem ersten Cluster zugeordneten Übertragungsursprungsprozeß zu einem einem zweiten Cluster zugeordneten Übertragungsempfangsprozeß durch folgende Schritte gekennzeichnet ist: Sicherstellen eines im Hauptspeicher residenten reellen Kommunikationsbereichs (13) innerhalb jedes Clusters für jeden dem Cluster zugeordneten Prozeß, wobei der reelle Kommunikationsbereich in einen virtuellen Kommunikationsbereich (11) innerhalb des jedem Cluster zugeordneten virtuellen Raums abgebildet wird; Auswählen eines dem Übertragungsempfangsprozeß zugeordneten, reellen Kommunikationsbereichs in dem ersten Cluster, sowie einer virtuellen Schreibeadresse, bei der die Übertragungsdaten innerhalb eines dem Übertragungsempfangsprozeß zugeordneten virtuellen Speichers einzuschreiben sind; Erzeugen eines Pakets in dem ersten Cluster, enthaltend die Übertragungsdaten, einen Übertragungsbereichsidentifizierkode zur Identifizierung des ausgewählten reellen Kommunikationsbereichs und eine Offset-Adresse zur Anzeige des Unterschieds zwischen einer Basisadresse eines dem ausgewählten reellen Kommunikationsbereichs entsprechenden, virtuellen Kommunikationsbereichs und der ausgewählten virtuellen Schreibeadresse; Senden des Pakets vom ersten Cluster zum zweiten Cluster durch das Netzwerk (4; 509); Auslesen einer Basisadresse des ausgewählten reellen Kommunikationsbereichs in dem zweiten Cluster unter Verwendung des in dem empfangenen Paket enthaltenen Übertragungsbereichsidentifizierkodes; Erzeugen einer reellen Adresse innerhalb des reellen Kommunikationsbereichs in dem zweiten Cluster, indem die in dem empfangenen Paket enthaltene Offset-Adresse zu der ausgelesenen Basisadresse addiert wird; und Schreiben der übertragenen Daten in den zweiten Cluster an eine der erzeugten reellen Adresse entsprechenden Stelle im Hauptspeicher.
  2. Verfahren nach Anspruch 1, wobei das Schreiben der Daten ohne Nutzung des Betriebssystems erfolgt.
  3. Parallelprozessorsystem mit mehreren Clustern (100) und einem Netzwerk (4; 509) zum Verbinden der mehreren Cluster, wobei mindestens ein Prozeß mit mindestens einem zugeordneten virtuellen Raum innerhalb jedem Cluster ausgeführt wird, unter Steuerung durch ein jedem Cluster zugeordnetes Betriebssystem, dadurch gekennzeichnet, daß jeder Cluster folgendes aufweist: mindestens einen Prozessor (1; 501, 502) und einen von diesem mindestens einen Prozessor zu nutzenden Hauptspeicher (2; 505); einen im Hauptspeicher residenten, reellen Kommunikationsbereich (13) für jeden dem Cluster zugeordneten Prozeß, wobei der reelle Kommunikationsbereich in einen virtuellen Kommunikationsbereich (11) innerhalb des jedem Cluster zugeordneten virtuellen Raums abgebildet wird; eine Einrichtung zum Auswählen eines dem Übertragungsempfangsprozeß zugeordneten, reellen Kommunikationsbereichs (13) in dem ersten Cluster, sowie einer virtuellen Schreibeadresse, bei der die Übertragungsdaten innerhalb eines dem Übertragungsempfangsprozeß zugeordneten virtuellen Speichers einzuschreiben sind; eine Einrichtung zum Erzeugen eines Pakets in dem ersten Cluster, enthaltend die Übertragungsdaten, einen Übertragungsbereichsidentifizierkode zur Identifizierung des ausgewählten reellen Kommunikationsbereichs (13) und eine Offset-Adresse zur Anzeige des Unterschieds zwischen einer Basisadresse eines dem ausgewählten reellen Kommunikationsbereichs (13) entsprechenden, virtuellen Kommunikationsbereichs (11) und der ausgewählten virtuellen Schreibeadresse; eine Einrichtung zum Senden des Pakets vom ersten Cluster zum zweiten Cluster durch das Netzwerk (4; 509); eine Einrichtung zum Auslesen einer Basisadresse des ausgewählten reellen Kommunikationsbereichs (13) in dem zweiten Cluster unter Verwendung des in dem empfangenen Paket enthaltenen Übertragungsbereichsidentifizierkodes; eine Einrichtung zum Erzeugen einer reellen Adresse innerhalb des reellen Kommunikationsbereichs in dem zweiten Cluster, indem die in dem empfangenen Paket enthaltene Offset-Adresse zu der ausgelesenen Basisadresse addiert wird; und eine Einrichtung zum Schreiben der übertragenen Daten in den zweiten Cluster an eine der erzeugten reellen Adresse entsprechenden Stelle im Hauptspeicher.
  4. System nach Anspruch 3, weiterhin umfassend: eine Einrichtung (42, 120) zum Empfangen zweiter Übertragungsdaten, die von einem zweiten Übertragungsursprungsprozeß gesendet wurden, der durch einen anderen Cluster ausgeführt wird, und zum Einschreiben der empfangenen zweiten Übertragungsdaten in einen zweiten reellen Kommunikationsbereich, der dem zweiten Übertragungsempfangsprozeß zugeordnet ist, wie er durch jeden Cluster ausgeführt wird (1).
  5. System nach Anspruch 3 oder 4, weiterhin umfassend: eine Übersetzungseinrichtung (530) die zugeordnet zu jedem ersten Prozeß vorhanden ist, wie er von jedem Cluster ausgeführt wird, und die auf einen Datenübertragungsbefehl anspricht, wie er von jedem ersten Prozeß ausgegeben wird, um einen durch den Befehl vorgegebenen, ersten Prozeßidentifizierkode zur Identifizierung eines zweiten Prozesses innerhalb des Systems, bei dem es sich um einen Übertragungsempfangsort für Übertragungsdaten handelt, zu übersetzen in einen Satz eines Clusteridentifizierkodes, der einem anderen Cluster zugeordnet ist, in dem der zweite Prozeß existiert, sowie in einen Innerhalbclusterprozeßidentifizierkode, der dem zweiten Prozeß zugeordnet ist, um den zweiten Prozeß im zweiten Cluster zu identifizieren; und eine Einrichtung (507), die auf den Datenübertragungsbefehl zum Übertragen des Clusteridentifizierkodes und des Innerhalbclusterprozeßidentifizierkodes an das Netzwerk (4; 509) anspricht, wie sie von der Übersetzungseinrichtung zusammen mit den Übertragungsdaten erhalten werden (17).
DE4208924A 1991-03-20 1992-03-19 Verfahren zur Kommunikation zwischen Prozessoren und Parallelverarbeitungscomputer hierfür Expired - Fee Related DE4208924B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP05646991A JP3169624B2 (ja) 1991-03-20 1991-03-20 プロセッサ間通信方法およびそのための並列プロセッサ
JP03-056469 1991-03-20
JP03-241094 1991-09-20
JP24109491A JP3375649B2 (ja) 1991-09-20 1991-09-20 並列計算機

Publications (2)

Publication Number Publication Date
DE4208924A1 DE4208924A1 (de) 1992-09-24
DE4208924B4 true DE4208924B4 (de) 2007-01-11

Family

ID=26397419

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4208924A Expired - Fee Related DE4208924B4 (de) 1991-03-20 1992-03-19 Verfahren zur Kommunikation zwischen Prozessoren und Parallelverarbeitungscomputer hierfür

Country Status (2)

Country Link
US (1) US5386566A (de)
DE (1) DE4208924B4 (de)

Families Citing this family (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537623A (en) * 1993-03-01 1996-07-16 International Business Machines Corporation Multiple group address recognition
JP3315779B2 (ja) * 1993-11-16 2002-08-19 富士通株式会社 ディスク装置間のファイル転送装置およびファイル転送方法
JPH07262152A (ja) * 1994-03-24 1995-10-13 Hitachi Ltd コンピュータシステム
JP3322754B2 (ja) * 1994-05-17 2002-09-09 富士通株式会社 並列計算機
JP2793517B2 (ja) * 1995-03-22 1998-09-03 甲府日本電気株式会社 データ転送制御装置
US5978894A (en) * 1995-11-27 1999-11-02 Hitachi, Ltd. Method of interprocessor data transfer using a network, virtual addresses and paging, a buffer, flags, data transfer status information and user accessible storage areas in main memory
US5963731A (en) * 1995-12-25 1999-10-05 Hitachi, Ltd. Method of assisting execution of plural simulation programs for coupled simulation
US5745781A (en) * 1995-12-26 1998-04-28 International Business Machines Corporation Memoryless communications adapter including queueing and matching primitives for scalable distributed parallel computer systems
US5938746A (en) * 1996-02-29 1999-08-17 Sanyo Electric Co., Ltd. System for prioritizing slave input register to receive data transmission via bi-directional data line from master
US6131141A (en) * 1996-11-15 2000-10-10 Intelligent Computer Solutions, Inc. Method of and portable apparatus for determining and utilizing timing parameters for direct duplication of hard disk drives
US6209041B1 (en) * 1997-04-04 2001-03-27 Microsoft Corporation Method and computer program product for reducing inter-buffer data transfers between separate processing components
AU3116300A (en) * 1998-12-11 2000-06-26 Microsoft Corporation Accelerating a distributed component architecture over a network using an implicit flow control
JP3376956B2 (ja) * 1999-05-14 2003-02-17 日本電気株式会社 プロセッサ間通信装置
US6446086B1 (en) 1999-06-30 2002-09-03 Computer Sciences Corporation System and method for logging transaction records in a computer system
US6952741B1 (en) * 1999-06-30 2005-10-04 Computer Sciences Corporation System and method for synchronizing copies of data in a computer system
US7340426B1 (en) 1999-07-30 2008-03-04 Computer Sciences Corporation Event-triggered transaction processing for electronic data interchange
US6970844B1 (en) 1999-08-27 2005-11-29 Computer Sciences Corporation Flow designer for establishing and maintaining assignment and strategy process maps
US6961708B1 (en) 1999-08-27 2005-11-01 Computer Sciences Corporation External interface for requesting data from remote systems in a generic fashion
JP2001101145A (ja) * 1999-09-28 2001-04-13 Fujitsu Ltd 分散メモリ型並列計算機におけるデータ転送方式
US7359863B1 (en) 1999-09-30 2008-04-15 Computer Sciences Corporation Condition component framework for reinsurance
US7693731B1 (en) 1999-09-30 2010-04-06 Computer Sciences Corporation Business process framework for reinsurance
US7693844B1 (en) 1999-10-29 2010-04-06 Computer Sciences Corporation Configuring processing relationships among entities of an organization
US7356541B1 (en) 1999-10-29 2008-04-08 Computer Sciences Corporation Processing business data using user-configured keys
US7546304B1 (en) 1999-10-29 2009-06-09 Computer Sciences Corporation Configuring keys for use in processing business data
US7571171B1 (en) 1999-10-29 2009-08-04 Computer Sciences Corporation Smart trigger for use in processing business transactions
US6925468B1 (en) 1999-10-29 2005-08-02 Computer Sciences Corporation Configuring systems for generating business transaction reports using processing relationships among entities of an organization
US7353196B1 (en) 1999-10-29 2008-04-01 Computer Sciences Corporation Configuring dynamic database packageset switching for use in processing business transactions
US7526487B1 (en) 1999-10-29 2009-04-28 Computer Sciences Corporation Business transaction processing systems and methods
US7363264B1 (en) 1999-10-29 2008-04-22 Computer Sciences Corporation Processing business transactions using dynamic database packageset switching
US7343307B1 (en) 2000-06-23 2008-03-11 Computer Sciences Corporation Dynamic help method and system for an insurance claims processing system
US7430515B1 (en) 2000-06-23 2008-09-30 Computer Sciences Corporation System and method for externalization of formulas for assessing damages
US7095426B1 (en) 2000-06-23 2006-08-22 Computer Sciences Corporation Graphical user interface with a hide/show feature for a reference system in an insurance claims processing system
US7418400B1 (en) 2000-06-23 2008-08-26 Computer Sciences Corporation Internet-enabled system and method for assessing damages
US7571107B1 (en) 2000-06-23 2009-08-04 Computer Sciences Corporation System and method for externalization of rules for assessing damages
US7398219B1 (en) 2000-06-23 2008-07-08 Computer Sciences Corporation System and method for displaying messages using a messages table
US7430514B1 (en) 2000-06-23 2008-09-30 Computer Sciences Corporation System and method for processing insurance claims using a table of contents
WO2002023364A1 (en) * 2000-09-15 2002-03-21 Wonderware Corporation An industrial process control data access server supporting multiple client data exchange protocols
US7742936B2 (en) * 2000-10-02 2010-06-22 Computer Sciences Corporation Computerized method and system of assessing liability for an accident using impact groups
US7963899B2 (en) * 2001-07-13 2011-06-21 The Proctor & Gamble Company Continuous in-line pleating apparatus and process
JP4681225B2 (ja) * 2001-10-17 2011-05-11 ベプテック インコーポレイテッド オペレーティングシステムにわたる通信の方法
AU2002364036A1 (en) 2001-12-24 2003-07-15 Digimarc Id Systems, Llc Laser etched security features for identification documents and methods of making same
EP1459239B1 (de) * 2001-12-24 2012-04-04 L-1 Secure Credentialing, Inc. Verdeckte variableninformationen auf id-dokumenten und verfahren zu ihrer herstellung
US7694887B2 (en) * 2001-12-24 2010-04-13 L-1 Secure Credentialing, Inc. Optically variable personalized indicia for identification documents
AU2003221894A1 (en) 2002-04-09 2003-10-27 Digimarc Id Systems, Llc Image processing techniques for printing identification cards and documents
US7824029B2 (en) * 2002-05-10 2010-11-02 L-1 Secure Credentialing, Inc. Identification card printer-assembler for over the counter card issuing
US7672860B2 (en) * 2002-09-09 2010-03-02 Computer Sciences Corporation Computerized method and system for determining the contribution of defenses to premises liability for an accident
US7702528B2 (en) * 2002-09-09 2010-04-20 Computer Sciences Corporation Computerized method and system for determining breach of duty in premises liability for an accident
US20040054556A1 (en) * 2002-09-09 2004-03-18 Stephan Wahlbin Computerized method and system for determining causation in premises liability for an accident
US20040054558A1 (en) * 2002-09-09 2004-03-18 Stefan Wahlbin Computerized method and system for determining claimant status in premises liability for an accident
US20040054557A1 (en) * 2002-09-09 2004-03-18 Stefan Wahlbin Computerized method and system for estimating premises liability for an accident
US7124211B2 (en) * 2002-10-23 2006-10-17 Src Computers, Inc. System and method for explicit communication of messages between processes running on different nodes in a clustered multiprocessor system
US7676387B2 (en) * 2002-10-31 2010-03-09 Computer Sciences Corporation Graphical display of business rules
US20040088195A1 (en) * 2002-10-31 2004-05-06 Childress Allen B. Method of modifying a business rule
US7451148B2 (en) * 2002-10-31 2008-11-11 Computer Sciences Corporation Method of modifying a business rule while tracking the modifications
US7689442B2 (en) * 2002-10-31 2010-03-30 Computer Science Corporation Method of generating a graphical display of a business rule with a translation
US20040085357A1 (en) * 2002-10-31 2004-05-06 Childress Allen B. Method of generating a graphical display of a business rule and associated business rule elements
US20040088199A1 (en) * 2002-10-31 2004-05-06 Childress Allen B. Method of forming a business rule
US7804982B2 (en) 2002-11-26 2010-09-28 L-1 Secure Credentialing, Inc. Systems and methods for managing and detecting fraud in image databases used with identification documents
US7818187B2 (en) * 2002-11-27 2010-10-19 Computer Sciences Corporation Computerized method and system for estimating liability
US7792690B2 (en) * 2002-11-27 2010-09-07 Computer Sciences Corporation Computerized method and system for estimating an effect on liability of the speed of vehicles in an accident and time and distance traveled by the vehicles
US20040103005A1 (en) * 2002-11-27 2004-05-27 Stefan Wahlbin Computerized method and system for estimating monetary damages due to injuries in an accident from liability estimated using a computer system
US7702529B2 (en) * 2002-11-27 2010-04-20 Computer Sciences Corporation Computerized method and system for estimating an effect on liability using claim data accessed from claim reporting software
US20040102984A1 (en) * 2002-11-27 2004-05-27 Stefan Wahlbin Computerized method and system for estimating liability using recorded vehicle data
US7895063B2 (en) * 2002-11-27 2011-02-22 Computer Sciences Corporation Computerized method and system for creating pre-configured claim reports including liability in an accident estimated using a computer system
US7805321B2 (en) * 2002-11-27 2010-09-28 Computer Sciences Corporation Computerized method and system for estimating liability for an accident from an investigation of the accident
US7725334B2 (en) * 2002-11-27 2010-05-25 Computer Sciences Corporation Computerized method and system for estimating liability for an accident using dynamic generation of questions
US7809586B2 (en) * 2002-11-27 2010-10-05 Computer Sciences Corporation Computerized method and system for estimating an effect on liability using a comparison of the actual speed of a vehicle in an accident and time and distance traveled by the vehicles in a merging vehicle accident
US7660725B2 (en) * 2002-11-27 2010-02-09 Computer Sciences Corporation Computerized method and system for estimating an effect on liability based on the stopping distance of vehicles
ATE491190T1 (de) 2003-04-16 2010-12-15 L 1 Secure Credentialing Inc Dreidimensionale datenspeicherung
US20040215494A1 (en) * 2003-04-24 2004-10-28 Wahlbin Stefan L. Method and system for determining monetary amounts in an insurance processing system
US20050060205A1 (en) * 2003-09-02 2005-03-17 Woods Randall K. Systems and methods for a graphical input display in an insurance processing system
US7895064B2 (en) * 2003-09-02 2011-02-22 Computer Sciences Corporation Graphical input display in an insurance processing system
US20050108063A1 (en) * 2003-11-05 2005-05-19 Madill Robert P.Jr. Systems and methods for assessing the potential for fraud in business transactions
US20050192850A1 (en) * 2004-03-01 2005-09-01 Lorenz Scott K. Systems and methods for using data structure language in web services
US20060059021A1 (en) * 2004-09-15 2006-03-16 Jim Yulman Independent adjuster advisor
US7685319B2 (en) 2004-09-28 2010-03-23 Cray Canada Corporation Low latency communication via memory windows
US7182415B2 (en) * 2005-01-07 2007-02-27 Takahiro Yamada Bookcase and storage unit
JP2007208594A (ja) * 2006-02-01 2007-08-16 Seiko Epson Corp 画像処理装置、画像処理方法及び画像処理プログラム
US8000986B2 (en) 2007-06-04 2011-08-16 Computer Sciences Corporation Claims processing hierarchy for designee
US8010389B2 (en) * 2007-06-04 2011-08-30 Computer Sciences Corporation Multiple policy claims processing
US8010390B2 (en) * 2007-06-04 2011-08-30 Computer Sciences Corporation Claims processing of information requirements
US8010391B2 (en) 2007-06-29 2011-08-30 Computer Sciences Corporation Claims processing hierarchy for insured
US8244558B2 (en) * 2008-01-18 2012-08-14 Computer Sciences Corporation Determining recommended settlement amounts by adjusting values derived from matching similar claims
JP5132339B2 (ja) * 2008-01-31 2013-01-30 キヤノン株式会社 情報処理装置及びその制御方法、及びコンピュータプログラム
US8782525B2 (en) * 2011-07-28 2014-07-15 National Insturments Corporation Displaying physical signal routing in a diagram of a system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0326164A2 (de) * 1988-01-29 1989-08-02 Hitachi, Ltd. Parallelrechner bestehend aus Prozessorelementen mit einem lokalen Speicher und einem verbesserten Datentransfermechanismus
WO1990005338A1 (en) * 1988-11-02 1990-05-17 Hitachi, Ltd. Virtual computer system having extended memory
US4956771A (en) * 1988-05-24 1990-09-11 Prime Computer, Inc. Method for inter-processor data transfer

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5121487A (en) * 1989-02-21 1992-06-09 Sun Microsystems, Inc. High speed bus with virtual memory data transfer capability using virtual address/data lines

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0326164A2 (de) * 1988-01-29 1989-08-02 Hitachi, Ltd. Parallelrechner bestehend aus Prozessorelementen mit einem lokalen Speicher und einem verbesserten Datentransfermechanismus
US4956771A (en) * 1988-05-24 1990-09-11 Prime Computer, Inc. Method for inter-processor data transfer
WO1990005338A1 (en) * 1988-11-02 1990-05-17 Hitachi, Ltd. Virtual computer system having extended memory
US5341484A (en) * 1988-11-02 1994-08-23 Hitachi, Ltd. Virtual machine system having an extended storage

Also Published As

Publication number Publication date
US5386566A (en) 1995-01-31
DE4208924A1 (de) 1992-09-24

Similar Documents

Publication Publication Date Title
DE4208924B4 (de) Verfahren zur Kommunikation zwischen Prozessoren und Parallelverarbeitungscomputer hierfür
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE3114961C2 (de)
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE602004012492T2 (de) DMA-Steuerung mit Busbesetzungszeit-Beschränkung sowie DMA-Parametersätze für mehrere logische Prozessoren
DE69836778T2 (de) Vorrichtung und Verfahren zur Fernpufferspeicherzuordnung und Verwaltung für Nachrichtenübertragung zwischen Netzknoten
DE3146356C2 (de) Vorrichtung zur Steuerung der Übertragung von Gerätesteuerinformation in einem Datenendgerät
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
DE2350884C2 (de) Adreßumsetzungseinheit
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE3741850A1 (de) Ausfuehrungseinheit fuer einen i/o-prozessor
EP0006164B1 (de) Multiprozessorsystem mit gemeinsam benutzbaren Speichern
DE3127349A1 (de) Signalverarbeitungssystem mit verteilten elementen
DE4423559A1 (de) Datenverbindungsverfahren und Vorrichtung für Multiprozessor-Computersysteme mit gemeinsamem Speicher
DE4319912A1 (de) Echtzeitdaten-Abbildungsnetzwerksystem und Verfahren zum Betreiben desselben
DE3114934A1 (de) Zentrales subsystem fuer eine datenverarbeitungsanlage
DE2054830C3 (de) Informationsverarbeitungsanlage mit Mitteln zum Zugriff zu Speicher-Datenfeldern variabler Länge
DE1524102B2 (de) Elektronische, aus baueinheiten aufgebaute datenverarbeitungsmaschine
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE10006417A1 (de) Computersystem mit Einzelverarbeitungsumgebung für die Ausführung von mehreren Anwendungsprogrammen
DE69816714T2 (de) Instrumentationsanordnung für eine Maschine mit nichtuniformen Speicherzugriffen

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 15/163

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee