DE4208924A1 - Verfahren zur kommunikation zwischen prozessoren und parallelverarbeitungscomputer hierfuer - Google Patents

Verfahren zur kommunikation zwischen prozessoren und parallelverarbeitungscomputer hierfuer

Info

Publication number
DE4208924A1
DE4208924A1 DE4208924A DE4208924A DE4208924A1 DE 4208924 A1 DE4208924 A1 DE 4208924A1 DE 4208924 A DE4208924 A DE 4208924A DE 4208924 A DE4208924 A DE 4208924A DE 4208924 A1 DE4208924 A1 DE 4208924A1
Authority
DE
Germany
Prior art keywords
transmission
data
cluster
clusters
processor
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.)
Granted
Application number
DE4208924A
Other languages
English (en)
Other versions
DE4208924B4 (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

Description

Die Erfindung betrifft ein Verfahren zur Datenübertragung zwischen Prozessoren in einem Parallelprozessor mit dem Ziel, Hochgeschwindigkeitsberechnung zu erreichen, insbeson­ dere in einem Parallelprozessor vom MIMD-Typ mit verteilten Speichern.
Grob gesprochen bestehen drei Typen von Techniken zum Erzie­ len von Hochgeschwindigkeitsverarbeitung unter Nutzung von mehreren Prozessoren.
Der erste Typ von Techniken ist ein solcher, bei dem ein Pa­ rallelprozessor 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. Bedin­ gung 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 er­ sten Typs von Techniken der Adreßübersetzungsmechanismus zum Realisieren eines virtuellen Speichers weggelassen. Es be­ standen Techniken von Parallelprozessoren mit einer großen Anzahl von Prozessoren, gemäß denen eine Mehrzahl von Pro­ zessen durch einen Prozessor ausgeführt werden kann, wie dies z. B. in EP-A-02 55 857 beschrieben ist. Jedoch ist keiner der Prozessoren gemäß diesen Techniken mit einer Funktion zum Realisieren eines virtuellen Speichers ausge­ stattet.
Andererseits ist als zweiter Typ von Techniken eine Einrich­ tung eines Parallelverarbeitungscomputers mit mehreren Ver­ arbeitungselementen bekannt, von denen jedes einen lokalen Speicher aufweist, gemäß welcher Technik Daten in einen lo­ kalen Speicher von einem anderen Verarbeitungselement ein­ geschrieben werden können. Wenn ein gewisses Verarbeitungs­ element Daten unter Nutzung eines lokalen Speichers eines anderen Verarbeitungselementes überträgt, werden Markierun­ gen 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 Vor­ richtung ist z. B. in EP-A-03 26 164 beschrieben.
Der dritte Typ von Techniken ist eine sogenannte Verarbei­ tungstechnik für verteilte Daten zum Verbinden einiger weni­ ger Allgemeinzweckcomputer mit einem LAN-System oder der­ gleichen. Z. B. entspricht die Verarbeitungstechnik mit ver­ teilten Daten in der Workstation mit einem UNIX-Betriebs­ system diesem dritten Typ von Technik, wie sie von UNIX System Laboratories Ltd. entwickelt und derzeit lizensiert wird. Bei 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 Kommunika­ tionsadapter wird als ein Hilfsmittel einschließlich Plat­ teneingabe/ausgabeeinheiten gehandhabt, die durch das Be­ triebssystem verwaltet werden. Daher wird Kommunikation zwi­ schen 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 Be­ triebssystemprogramm aufzurufen und es abzuarbeiten.
Fig. 30 veranschaulicht den Betrieb bei Datenübertragung ge­ mäß dem dritten Typ der bekannten Technik. Derartiges ist z. B. von S. L. Leffler et al. in "The Design and Implemen­ tation 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 Sy­ stemaufruf erhalten hat, kopiert es die zu übertragenden Da­ ten, zusammen mit Parametern, die für den Prozeß des Über­ tragungsempfangsorts relevant sind, an den Puffer im Be­ triebssystem. 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 Sendeschal­ tung.
Wenn die Sendeschaltung die Daten gesendet hat und diese in der Empfangsschaltung des die Daten empfangenden Prozessors angekommen sind, speichert die Empfangsschaltung die Parame­ ter und die Daten im Puffer innerhalb der Empfangsschaltung und gibt dem Betriebssystem im Empfangsprozessor eine Mit­ teilung. Nachdem das Betriebssystem im empfangenden Prozes­ sor diese Mitteilung empfangen hat, erstellt sie eine Kopie der Parameter und der Daten aus dem Puffer innerhalb der Em­ pfangsschaltung in den Puffer innerhalb des Betriebssystems. Das Betriebssystem untersucht dann die Parameter und die Daten. Wenn die Untersuchung ergibt, daß kein Problem be­ steht, überträgt das Betriebssystem ein Bestätigungssignal (ACK) an den Übertragungsursprungsprozessor. Wenn dieser das Signal ACK empfangen hat, gibt er den Pufferbereich inner­ halb 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 Betriebs­ system führte.
Wenn der Prozeß, der die Daten zu empfangen beginnt, einen Systemaufruf zum Empfangen der Daten ausgeführt hat, über­ prü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 Be­ triebssystems 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 Pro­ zessors, und der Nutzer ist darauf angewiesen, ein Programm zu erstellen, das die Hardwareeigenschaften ausreichend be­ rücksichtigt, wie die Speicherkapazität jedes Prozessors in­ nerhalb der begrenzten Funktion jedes Prozessors.
Dagegen besteht beim vorstehend genannten zweiten Typ von bekannten Techniken kein Overhead in bezug auf das oben ge­ nannte Kopieren von Daten. Wenn jedoch mehrere Prozesse in einem Cluster abzuarbeiten sind und wenn ein Übertragungs­ prozeß 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 ablau­ fenden 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 Techni­ ken 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 Parallelverar­ beitungscomputer auszuführende Programm erzeugt werden, nicht mit der Anzahl von Clustern übereinstimmt, die der Ausführung dieses Programms zugeordnet sind, möglich, die­ ses Programm dadurch auszuführen, daß ein virtueller Raum zugeordnet wird, der jedem der Nutzerprozesse entspricht. Dementsprechend bedeutet Datenübertragung zwischen den Nut­ zerprozessen 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 vor­ liegt, kann der Schutzmechanismus oder dergleichen des Be­ triebssystems eine Steuerung vornehmen, die zu einer unver­ nünftigen Zerstörung von Daten des Prozesses führt, die für das Programm irrelevant sind.
Um Daten mit hoher Geschwindigkeit von einem bestimmten Clu­ ster 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 ver­ wendet. DMA-Übertragung wird dadurch realisiert, daß ein so­ genannter DMA-Controller verwendet wird, der so strukturiert ist, daß er dauernd hardwaremäßig eine Speicheradresse er­ zeugt und dauernd Daten aus dem Speicher liest oder in die­ sen einschreibt. Wenn jedoch Daten aus dem virtuellen Raum eines Übertragungsursprungsprozesses mit Hilfe des DMA-Con­ trollers an das Netzwerk zu übertragen sind, besteht keine Garantie dahingehend, daß die aus dem virtuellen Speicher zu übertragenden Daten im aktuellen Speicher des Clusters exi­ stieren. Um zu garantieren, daß die zu übertragenden Daten im reellen Speicher existieren, ist es unter Umständen er­ forderlich, ein Seiteneinschreiben vorzunehmen und dann die Daten an den DMA-Controller zu übertragen. Das Seitenein­ schreiben ist eine Funktion, die nur einem Betriebssystem erlaubt ist, wodurch das Betriebssystem unvermeidlicherweise in die Datenübertragung gemäß der bekannten Technik einzu­ spannen ist.
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 Übertra­ gungsempfangscluster 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 an­ schließend ein Seiteneinschreiben aus, falls erforderlich, und überträgt dann die Daten an den Datenspeicherbereich im virtuellen Raum, der dem Übertragungsempfangsprozeß ent­ spricht. In diesem Fall muß die vorstehend genannte Seiten­ einschreibung 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 übertra­ genen Daten größer ist als zuvor abgeschätzt und die sicher­ gestellte Größe des Empfangspuffers überschreitet, empfängt daher das Übertragungsempfangscluster die vom Datenur­ sprungscluster gesendeten Daten nicht, sondern die Daten werden vom Übertragungsursprungscluster an den Übertragungs­ empfangscluster neu gesendet, nachdem ein neuer Empfangs­ puffer erforderlicher Größe im Übertragungsempfangscluster sichergestellt wurde.
Um die oben genannten Neuübertragung gemäß der bekannten Technik zu ermöglichen, weist das Betriebssystem des Über­ tragungsursprungsclusters in seinem Inneren einen Übertra­ gungspuffer auf, um in ihm die zu übertragenden Daten zu speichern, bis sichergestellt ist, daß die zu übertragenden Daten sicher vom Übertragungsempfangscluster empfangen wur­ den.
Wenn der Übertragungspuffer im reellen Speicher unterge­ bracht ist, können die zu sendenden Daten, wie sie im Über­ tragungspuffer gespeichert sind, kontinuierlich durch den DMA-Controller an das Netzwerk übertragen werden. Dadurch führt bei der bekannten Technik der Übertragungsempfangscluster beim Übertragen von Daten im virtuellen Raum ent­ sprechend dem Übertragungsursprungsprozeß an den Übertra­ gungsempfangsprozeß die Seiteneinschreibung aus, falls er­ forderlich, 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 Tech­ nik 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 Übertragungsempfangs­ clusters, ü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 Pa­ rallelverarbeitungscomputers in extremer Weise.
Der Erfindung liegt die Aufgabe zugrunde, den Overhead zu erniedrigen, wie er durch Nutzung des Betriebssystems ent­ steht, 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 be­ treibbaren Prozessor und einen Speicher aufweist, in den sich die Prozessoranordnung mit dem mindestens einen Prozes­ sor teilt, und mit einem Netzwerk zum Verbinden der mehreren Cluster, wobei mindestens ein virtueller Raum jedem der meh­ reren Cluster zugeordnet ist und mindestens ein Prozeß im virtuellen Raum unter Steuerung des Betriebssystems ausge­ führt wird, wird die vorstehend genannte Aufgabe durch eine solche Anordnung gelöst, gemäß der ein Prozeß einen virtuel­ len Kommunikationsbereich aufweist, der im Speicher inner­ halb des Clusters resident ist und im virtuellen Raum ange­ ordnet 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 Übertragungsempfangs­ prozeß) zu übertragen sind, der einem anderen Cluster (einem Übertragungsempfangscluster) zugeordnet ist, aus einem reel­ len Kommunikationsbereich gelesen werden, der dem Übertra­ gungsursprungsprozeß zugeordnet ist, welcher Bereich inner­ halb des Speichers des Übertragungsursprungsclusters resi­ dent ist, wobei die gelesenen Daten vom Übertragungsur­ sprungscluster in den Übertragungsempfangscluster übertragen werden und die Daten in einen reellen Kommunikationsbereich eingeschrieben werden, der dem Übertragungsempfangsprozeß zugeordnet ist, der innerhalb des Speichers des Übertra­ gungsempfangsprozesses resident ist.
Die Erfindung wird im folgenden anhand von durch Figuren veranschaulichten Ausführungsbeispielen näher beschrieben.
Fig. 1 zeigt ein Aufbaudiagramm eines Parallelverarbeitungs- Computers gemäß einem ersten Ausführungsbeispiel der Erfin­ dung;
Fig. 2 ist ein Aufbaudiagramm einer Anforderungsauswahl­ schaltung;
Fig. 3 ist ein Aufbaudiagramm einer Kommunikationsbereich­ tabellenadreßerzeugungsschaltung;
Fig. 4 ist ein Strukturdiagramm einer Entscheidungsschal­ tung;
Fig. 5 ist ein Strukturdiagramm einer Adreßerzeugungsschal­ tung;
Fig. 6 ist ein Strukturdiagramm eines Kommunikationsbe­ reichs;
Fig. 7 ist ein Strukturdiagramm eines Anforderungsbereichs;
Fig. 8 ist ein Strukturdiagramm einer Seitentabelle;
Fig. 9 ist ein Strukturdiagramm einer Kommunikationsbe­ reichstabelle;
Fig. 10 ist ein Strukturdiagramm einer Anforderungstabelle;
Fig. 11 ist ein Diagramm, das den Datenübertragungsfluß zwi­ schen den Prozessen im Parallelverarbeitungscomputer gemäß dem ersten Ausführungsbeispiel der Erfindung zeigt;
Fig. 12 ist ein Aufbaudiagramm eines Parallelverarbeitungs­ computers gemäß einem zweiten Ausführungsbeispiel der Erfin­ dung;
Fig. 13 ist ein Diagramm, das den Datenübertragungsfluß zwi­ schen Prozessen im Parallelverarbeitungscomputer gemäß dem zweiten Ausführungsbeispiel der Erfindung zeigt;
Fig. 14 ist ein Aufbaudiagramm eines Parallelverarbeitungs­ computers gemäß einem dritten Ausführungsbeispiel der Erfin­ dung;
Fig. 15 ist ein Diagramm, das den Datenübertragungsfluß zwi­ schen den Prozessen des Parallelverarbeitungscomputers gemäß dem dritten Ausführungsbeispiel der Erfindung zeigt;
Fig. 16 ist ein Diagramm, das den Datenübertragungsablauf zwischen den Prozessen eines Parallelverarbeitungscomputers gemäß einem vierten Ausführungsbeispiel der Erfindung zeigt;
Fig. 17 ist ein Aufbaudiagramm eines Parallelprozessors ge­ mäß einem fünften Ausführungsbeispiel der Erfindung;
Fig. 18 ist ein Diagramm, das den Eintrag in einer Pfadta­ belle veranschaulicht, wie sie im Parallelprozessor von Fig. 17 verwendet wird, zum Übersetzen eines virtuellen Kommuni­ kationspfades in einen physikalischen Kommunikationspfad;
Fig. 19 ist ein Diagramm, das Zusammenhangsangaben für einen Prozeß veranschaulicht, wie er vom Parallelprozessor von Fig. 17 auszuführen ist;
Fig. 20 ist ein Diagramm, das das Format eines BASE-Setzbe­ fehls zeigt, wie er im Parallelprozessor von Fig. 17 zu ver­ wenden ist;
Fig. 21 ist ein Diagramm, das das Format eines LEN-Setzbe­ fehls zeigt, wie er im Parallelprozessor von Fig. 17 zu ver­ wenden ist;
Fig. 22 ist ein Diagramm, das das Format eines Fernspeiche­ rungsbefehls zeigt, wie er im Parallelprozessor von Fig. 17 zu verwenden ist;
Fig. 23 ist ein Diagramm, das die Funktion einer Einheit zeigt, wenn ein Datenübertragungsbefehl, wie er im Parallel­ prozessor von Fig. 17 zu verwenden ist, ausgeführt wurde;
Fig. 24 ist ein Aufbaudiagramm eines Parallelprozessors ge­ mäß einem sechsten Ausführungsbeispiel der Erfindung;
Fig. 25 ist ein Diagramm, das das Format eines Fernspeiche­ rungsvorbereitungsbefehls zeigt, wie er im Parallelprozessor von Fig. 24 zu verwenden ist;
Fig. 26 ist ein Diagramm, das das Format eines Fernspeiche­ rungsausführungsbefehles zeigt, wie er im Parallelprozessor von Fig. 24 zu verwenden ist;
Fig. 27 ist ein Diagramm, das den Ablauf eines Datenübertra­ gungsbefehls zeigt, wie er im Parallelprozessor von Fig. 24 zu verwenden ist;
Fig. 28 ist ein Aufbaudiagramm eines Parallelprozessors ge­ mäß einem siebten Ausführungsbeispiel der Erfindung;
Fig. 29 ist ein Aufbaudiagramm eines Parallelprozessors ge­ mäß einem achten Ausführungsbeispiel der Erfindung; und
Fig. 30 ist ein Diagramm zum Erläutern des Kommunikationsbe­ triebs zwischen Prozessoren gemäß dem Stand der Technik.
Ausführungsbeispiel 1
Ein erstes Ausführungsbeispiel der Erfindung wird nun unter Bezugnahme auf Fig. 1 beschrieben. Fig. 1 zeigt einen erfin­ dungsgemäßen Parallelverarbeitungscomputer. Bei diesem Aus­ führungsbeispiel sind mehrere Cluster 100 durch ein Netzwerk 4 miteinander verbunden. In Fig. 1 ist der Aufbau einer der Cluster 100 gezeigt, während die Aufbauten für weitere Clu­ ster nicht dargestellt sind. In Fig. 1 bezeichnet 1 eine CPU, die dieselbe Struktur haben kann wie ein bekannter Mikroprozessor. In Fig. 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 ver­ wendet 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 er­ folgt. 4 bezeichnet ein Netzwerk zum Anschließen von Clu­ stern 100. Wenn von einem Cluster die Adresse eines Übertra­ gungsempfangsclusters festgelegt wurde, überträgt das Netz­ werk 4 die Daten zu dem (nicht dargestellten) Übertragungs­ empfangscluster mit dieser Adresse.
110 bezeichnet eine Sendendatenleseschaltung zum Lesen von Daten, die vom Speicher 2 aus zu übertragen sind. 28 be­ zeichnet eine Sendeschaltung zum Senden der gelesenen Sende­ daten in Paketform über das Netzwerk 4. 42 bezeichnet eine Schaltung zum Empfangen eines Pakets vom Netzwerk 4. 120 be­ zeichnet eine Empfangsdatenschreibschaltung zum Einschreiben der mit dem empfangenen Paket empfangenen Daten in den Spei­ cher 2. 7 bezeichnet eine Speicherzugriffsschaltung zum Aus­ führen eines Zugriffs auf den Speicher 2 zum Lesen zu sen­ dender Daten oder-zum Einschreiben empfangener Daten.
In der CPU 1 wird ein Nutzerprozeß in derselben Weise ausge­ führt wie ein solcher, der im UNIK-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 Fig. 1 ist nur ein virtu­ eller 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 virtu­ eller Anforderungsbereich 12 für Information, die zu senden­ den Daten hinzuzufügen ist, sind im virtuellen Raum 10 vor­ handen.
Der Speicher 2 verfügt über einen reellen Kommunikationsbe­ reich 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 Anforde­ rungsbereich 12 kartiert ist. Weiterhin ist eine Seitenta­ belle 15 für Adreßübersetzung für jeden Nutzerprozeß und eine Kommunikationsbereichstabelle 16 vorhanden, um auf meh­ rere Kommunikationsbereiche 13 in diesem Cluster zugreifen zu können.
Gemäß dem vorliegenden Ausführungsbeispiel besteht eine sol­ che Struktur, daß ein in einem bestimmten Cluster auszufüh­ renden Nutzerprozeß zu sendende Daten in den reellen Kommu­ nikationsbereich 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.
Fig. 6 zeigt eine Struktur für den virtuellen Kommunika­ tionsbereich 11. Es sind in ihm Daten angeordnet, die von einem Nutzerprozeß zu senden sind (z. B. ein Array A, Varia­ ble) 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.
Fig. 7 zeigt eine Struktur für den virtuellen Anforderungs­ bereich 12. Dies ist ein Bereich, bei dem eine vom Nutzer­ prozeß verwendete Bibliotheksfunktion einen Zugriff aus­ führt. Der Anforderungsbereich 12 weist mindestens eine An­ forderungsstruktureinheit 12-1 und eine Ortstabelle 12-2 auf. Die Anforderungsstruktureinheit 12-1 speichert eine Da­ tensendeanforderung, die einem Prozeß in einem anderen Clu­ ster 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ß be­ zogen ist.
Fig. 9 zeigt eine Struktur für die Kommunikationsbereichsta­ belle 16. Diese speichert mehrere Einträge, von denen jeder einem Kommunikationsbereich entspricht. Zu jedem Eintrag ge­ hört eine Basisadresse BASE für den zugeordneten Kommunika­ tionsbereich und eine Größenangabe LN für diesen Bereich.
Fig. 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 (Fig. 7) im virtuellen Anforderungsbereich 12 in einem be­ liebigen virtuellen Raum.
Fig. 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 an­ dere 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 Steuerinfor­ mation" 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 er­ lä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 Initiali­ sierungsprogramm in derselben Weise, wie dies ein eng gekop­ pelter 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 aus­ zutauschen, was dadurch erfolgt, daß eine bekannte Technik, wie das TCP/IP-Protokoll, verwendet wird. Der Austausch er­ folgt über das Netzwerk 4 oder ein bekanntes, nicht darge­ stelltes Netzwerk.
Beim vorliegenden Ausführungsbeispiel werden nach dem Ini­ tialisieren des Betriebssystems die folgenden Abläufe zu­ sätzlich ausgeführt. Das Betriebssystem in jedem Cluster er­ zeugt 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 Anforde­ rungstabelle 17 in einem Anforderungstabellen-Ursprungsregi­ ster 5. Der Inhalt der Tabelle 17 ist noch nicht geschrie­ ben.
Die Initialisierung eines Nutzerprozesses wird nachfolgend beschrieben.
Zunächst weist der Benutzer das Betriebssystem jedes Clu­ sters an, eine Prozeßinitialisierung vorzunehmen. Dasjenige Betriebssystem, das den Befehl zum Initialisieren erhielt, erzeugt im Speicher 2 die Seitentabelle 15, um einen virtu­ ellen 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 initiali­ siert. Ein zusammenhängender reeller Adreßbereich mit vom Programmierer oder vom Compiler vorgegebener Größe wird im Speicher 2 sichergestellt, und dieser Bereich wird als re­ eller Kommunikationsbereich 13 gesetzt. Dann werden die Adressen dieses reellen Kommunikationsbereichs 13 aufein­ anderfolgend 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 Kommunika­ tionsbereichs 11 im virtuellen Raum 10 (siehe Fig. 8) ent­ spricht. Außerdem wird das Seitenfixierungsflag F im zuge­ hörigen Seitenfixierungsflagfeld innerhalb der Tabelle 15 gesetzt, damit der Kommunikationsbereich 13 nicht seitenmä­ ßig ausgespeichert wird (paged-out). In diesem Fall ist an­ genommen, daß die Kopfadresse des virtuellen Kommunikations­ bereichs 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 Kommuni­ kationsbereichs 13 übereinstimmt.
Das Betriebssystem ordnet dem reellen Kommunikationsbereich 13 eine eindeutige Kommunikationsbereichsidentifizierung in­ nerhalb des Clusters 78 zu und setzt die Basisadresse (Kopf­ adresse) und die Größe des reellen Kommunikationsbereichs 13 im Eintrag (siehe Fig. 9) der Kommunikationsbereichstabelle 16 mit der Kommunikationsbereichsidentifizierung als Ein­ tragsnummer. Der virtuelle Kommunikationsbereich 11 wird dem reellen Kommunikationsbereich 13 fest durch das Seitenfixie­ rungsflag der Seitentabelle zugeordnet. Daher kann der vir­ tuelle Kommunikationsbereich 11 eindeutig innerhalb des Clu­ sters durch die eindeutige Kommunikationsidentifizierung in­ nerhalb des Clusters identifiziert werden, die im reellen Kommunikationsbereich 13 gesetzt wurde.
Dann stellt das Betriebssystem den reellen Anforderungsbe­ reich 14 im zusammenhängenden Bereich des Speichers 2 si­ cher 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 ent­ spricht, und setzt das Seitenfixierungsflag F im Seitenfi­ xierungsflagfeld (siehe Fig. 8), damit der Inhalt des gesi­ cherten reellen Anforderungsbereichs 14 nicht seitenmäßig ausgespeichert wird. Dann erzeugt das Betriebssystem die An­ forderungsstruktureinheit 12- 1 und die Ortstabelle 12-2 im virtuellen Anforderungsbereich 12, wie in Fig. 7 darge­ stellt. Wie vorstehend beschrieben, wurde der zugehörige reelle Anforderungsbereich 14 im virtuellen Anforderungsbe­ reich 12 gesichert, und der reelle Anforderungsbereich 14 wurde als im Speicher 2 resident festgelegt, so daß dieser Bereich nicht seitenmäßig ausgespeichert wird. Dementspre­ chend 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 Seiten­ tabelle 15 in einem vorgegebenen (nicht dargestellten) Be­ reich des initialisierten Prozesses, damit sich der Prozeß auf die Seitentabelle 15 beziehen kann.
Anschließend schreibt das Betriebssystem die reelle Kopf­ adresse für den Bereich des reellen Anforderungsbereichs 14, der der wie oben angegeben erzeugten Anforderungsstruktur­ einheit 12-1 entspricht, im noch unbenutzten Eintragungsbe­ reich der reellen Anforderungstabelle 17.
Durch Initialisieren des Betriebssystems, wie vorstehend angegeben, kann vom Nutzerprozeß auf den reellen Kommunika­ tionsbereich 13 dadurch zugegriffen werden, daß die virtuel­ le Adresse des virtuellen Kommunikationsbereichs 11 verwen­ det wird. Ein Zugriff kann auch vom Betriebssystem oder einer externen Einrichtung auf den reellen Kommunikations­ bereich 13 dadurch erfolgen, daß mit Hilfe der reellen Kom­ munikationsbereichstabelle 16 die reelle Adresse verwendet wird. Auf den reellen Bereich, der der virtuellen Anforde­ rungsstruktureinheit 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 Anforderungsta­ belle 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 Kommunikationsbe­ reichsidentifizierung für den bei diesem Prozeß zu benutzen­ den reellen Kommunikationsbereich 13 und die Adresse inner­ halb 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 empfange­ ne 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 Fig. 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 er­ folgte. Der Cluster zum Initialisieren des vorstehend ge­ nannten 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ß exi­ stiert, und die Kommunikationsbereichsidentifizierung des Kommunikationsbereichs 11, der im Übertragungsempfangs-Nut­ zerprozeß zu verwenden ist, erhalten werden, ohne daß hierzu das Betriebssystem verwendet wird, was weiter unten be­ schrieben wird.
Nutzerprozesse, die in der vorstehend genannten Weise be­ trieben wurden, arbeiten parallel, indem sie wechselseitig Daten aneinander übertragen.
Unter Bezugnahme auf Fig. 11 wird nun die Datenübertragung zwischen Prozessen in bezug auf das vorliegende Ausführungs­ beispiel 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 sol­ chen des Übertragungsempfangs aufgeteilt werden. In der Be­ schreibung des Ablaufs des Nutzerprozesses des Übertragungsursprungs erfolgt eine Unterteilung der Abläufe in einen solchen des Betriebs des Nutzerprozesses des Übertragungs­ ursprungs, 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 sen­ dende Daten aus dem virtuellen Kommunikationsbereich 11, z. B. ein Array A, an den Datenempfangsprozeß zu senden, wird die vorab erstellte (nicht dargestellte) Bibliotheks­ funktion "Send" in folgendem Format aufgerufen: Send ("Name des Übertragungsempfangsprozesses", K, Y, Z, L).
Ein Nutzer bestimmt den Namen des Übertragungsempfangspro­ zesses als erstes Argument. Das zweite Argument K ist die virtuelle Adresse des Kopfes im virtuellen Raum 10 des Über­ tragungsursprungsprozesses 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 Datenem­ pfangsflags, das im Übertragungsempfangscluster zu speichern ist, wenn Daten empfangen werden. Das fünfte Argument L kennzeichnet das Volumen der zu sendenden Daten. Beim vor­ liegenden Ausführungsbeispiel kennt der Datenübertragungs­ prozeß vorab die Lage und die Größe des virtuellen Kommuni­ kationsbereichs des Übertragungsempfangsprozesses. Dement­ sprechend können dem dritten und vierten Argument die vir­ tuellen 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 Kommunikationsbe­ reichs.
Schritt 51: Umwandeln der Argumente
Die Bibliotheksfunktion "Send", die aufgerufen wurde, arbei­ tet im virtuellen Raum 10 wie folgt als Teil des Nutzerpro­ zesses. Sie liest die Clusteradresse und die Kommunikations­ bereichsidentifizierung 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 Übertra­ gungsempfangsprozesses. Dann wandelt sie die virtuelle Adresse des Kopfes der Übertragungsdaten in die reelle Adresse der Übertragungsdaten im reellen Kommunikationsbe­ reich 13 des Speichers 2, was unter Nutzung der Seitentabelle 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 Kommunikationsbe­ reichs 13 des Übertragungsempfangs zu erhalten. Die Richtig­ keit dieser Abläufe wird durch die Tatsache garantiert, daß in allen Clustern die Kopfadresse des virtuellen Kommunika­ tionsbereichs 11 innerhalb des Nutzerprozesses zugesendet wurde und daß der virtuelle Kommunikationsbereich 11 nach­ folgend vom Kopf des Bereichs im reellen Kommunikationsbe­ reich 13 des zusammenhängenden Bereichs im Speicher 2 zuge­ ordnet wurde.
Das wie vorstehend erhaltene Offsetvolumen wird negativ, wenn sich ein Programmfehler im Nutzerprozeß befindet. In diesem Fall erfolgt im Betriebssystem eine Programmunterbre­ chung.
Schritt 52: Setzvorgänge im Anforderungsbereich
Die Bibliotheksfunktion "Send" schreibt dann die Adresse CL des Übertragungsempfangsclusters und die Kommunikationsbe­ reichsidentifizierung ID, wie sie zuvor gelesen wurden, den Offset 50 des Datenempfangsbereichs, den Offset FO des Da­ tenempfangsflags, die Datenlänge der Übertragungsdaten und die reelle Adresse, wie sie zuvor erhalten wurden, jeweils in die Anforderungsstruktureinheit 12-1 im virtuellen Anfor­ derungsbereich 12 (Fig. 7). Sie setzt darüber hinaus das An­ forderungsflag im Anforderungsflagfeld in der Anforderungs­ struktureinheit 12-1. Da der virtuelle Anforderungsbereich 12 im reellen Anforderungsbereich 14 resident ist, werden diese Parameter in den reellen Anforderungsbereich 14 einge­ schrieben.
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 Be­ fehl der Übertragungsanforderung parallel mit den folgenden Abläufen durch.
Schritt 54: Setzen von Parametern in Registern
Eine Anforderungshubwahlschaltung 21 wiederholt immer die folgenden Abläufe. Sie liest den Wert des Anforderungstabel­ lenursprungsregisters 5, d. h. den Wert, wie er durch das Betriebssystem bei dessen Initialisierung festgelegt wurde, in der Anforderungstabelleneintragungsadreßerzeugungsschal­ tung 21-1 innerhalb der Schaltung 21 (Fig. 2) erzeugt die reelle Adresse des Kopfeintrags der Anforderungstabelle 17 im Speicher 2 und liest die reelle Adresse der (nicht darge­ stellten) 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 Anforderungsflagfel­ des von der gelesenen reellen Adresse der Anforderungsstruk­ tureinheit 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 Anfor­ derungsflagfeld geschrieben wurde, und sendet ein Signal an die Anforderungstabelleneintragungsadreßerzeugungsschaltung 21-1, wenn das Anforderungsflag noch nicht in das Anforde­ rungsflagfeld eingeschrieben ist. Die Schaltung 21-1 erzeugt eine Adresse für den nächsten Eintrag der Anforderungstabel­ le 17; danach arbeiten die Anforderungsflagadreßerzeugungs­ schaltung 21-2 und die Anforderungsflagentscheidungsschaltung 21-3 in derselben Weise, wie vorstehend beschrieben. Wenn das Anforderungsflag in das Anforderungsflagfeld einge­ schrieben ist, sendet die Anforderungsflagentscheidungs­ schaltung 21-3 darüber hinaus an eine Sendeschaltungszu­ stand-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 Sende­ schaltung 28 erneut. Wenn letztere nicht beschäftigt ist, wird eine Anforderungsstruktureinheiteingabeadreßerzeugungs­ schaltung 21-5 initialisiert. Sie liest die (nicht darge­ stellte) Anforderungsstruktureinheit im reellen Adreßbe­ reich, der der virtuellen Anforderungsstruktureinheit 12-1 entspricht, was auf Grundlage der Adresse der Anforderungs­ struktureinheit 12-1 erfolgt, die zuvor durch die Anforde­ rungstabelleeintragsadreßerzeugungsschaltung 21-1 gelesen wurde, und sie stellt eine Kopie der Clusteradresse CL in einem Register 22 her, eine Kopie der Kommunikationsbe­ reichsidentifizierung 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. Da­ nach sendet die Schaltung 21-5 eine Anforderungsflagadresse und einen Rücksetzbefehl aus, um das Anforderungsflagfeld rückzusetzen, damit der Nutzerprozeß, von dem die Übertra­ gungsforderung 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 übertragen­ den 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 Anforderungsstruk­ tureinheiten 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 nach­ folgend beschrieben.
Schritt 56: Überprüfung der Datenaufnahmefähigkeit im Kommu­ nikationsbereich
Wenn ein Paket für das Netzwerk 4 am Übertragungsempfangs­ cluster angekommen ist, empfängt eine Empfangsschaltung 42 das Paket und erstellt eine Kopie der Kommunikationsbe­ reichsidentifizierung (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ßer­ zeugungsschaltung 31 (Fig. 3) auf Grundlage der Kommunika­ tionsbereichsidentifizierung ID im Register 37 eine Offset­ berechnungsschaltung 31-1, um den Offset der dieser Identi­ fizierung ID entsprechenden Eintragung innerhalb der Kommu­ nikationsbereichstabelle 16 (Fig. 9) festzustellen. Die Kom­ munikationsbereichstabellenadreßerzeugungsschaltung 31 ver­ wendet dann eine Addierschaltung 31-2 zum Addieren des Off­ sets zur Kopfadresse der Kommunikationsbereichstabelle 16 im Speicher 2, wie durch das Kommunikationsbereichstabellen­ ursprungsregister 6 angegeben, um die Eingabeadresse (reelle Adresse) zu berechnen, die dieser Kommunikationsbereichs­ identifizierung ist der Kommunikationsbereichstabelle 16 ent­ spricht, und sie erstellt eine Kopie der Kommunikationsbe­ reichsbasisadresse BASE dieses Eintrags im Register 32 und eine Kopie der Größe LN des Kommunikationsbereichs im Regi­ ster 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 re­ ellen Kommunikationsbereich 13 abgelegt. Beim vorliegenden Ausführungsbeispiel wird entschieden, ob diese Adressen im reellen Kommunikationsbereich 13 untergebracht werden kön­ nen, um zu entscheiden, ob ein Programmierfehler im Übertra­ gungsursprungsprozeß vorliegt. Anders gesagt bedeutet dies, daß eine Entscheidungsschaltung 35 (Fig. 4) mit Hilfe von Vergleichsschaltungen 35-1 und 35-2 eine Entscheidung vor­ nimmt, wobei sie den Offset SO des Datenempfangsbereichs, also des Inhalts des Registers 38, des Offsets FO des Daten­ empfangsflags, also des Inhalts des Registers 39, der Daten­ länge LEN, also des Inhalts des Registers 40, und der Größe LN des Kommunikationsbereichs, also des Inhalts des Regi­ sters 33, nutzt. Die Vergleichsschaltung trifft Vergleiche auf Grundlage der jeweiligen Ungleichungen, wie sie in Fig. 4 dargestellt sind. Wenn die Ungleichheitsbedingungen er­ füllt sind, wird durch diese Schaltungen ein Schreibsperr­ signal erzeugt. Eine ODER-Schaltung 35-4 nimmt eine ODER- Verknüpfung der Ausgangssignale vor, wie sie durch die Ver­ gleichsschaltungen 35-1 und 35-2 erzeugt werden. Wenn ein Signal an diese ODER-Schaltung 35-4 ausgegeben wird, bedeu­ tet dies, daß Daten im Kommunikationsbereich 11 nicht aufge­ nommen werden können.
Schritt 59: Auftreten einer Unterbrechung
Wenn Daten infolge der Entscheidung im reellen Kommunika­ tionsbereich 13 nicht aufgenommen werden können, veranlaßt die Entscheidungsschaltung 35, daß ein Hardwareinterrupt­ signal über den Bus 3 läuft.
Schritt 60: Verhindern von Kommunikation
Das Hardwareinterruptsignal wird von der mindestens einen CPU im Übertragungsempfangscluster festgestellt. Das Be­ triebssystem wird durch die Interruptverarbeitungsroutine der CPU 1 initialisiert, das als erstes das Signal fest­ stellte, und anschließende Übertragung wird durch Kommunika­ tion dieses Betriebssystems mit dem Betriebssystem des ande­ ren Clusters verhindert.
Schritt 57: Adreßübersetzung
Wenn die Sendedaten im reellen Kommunikationsbereich 13 auf­ genommen werden können, verwendet eine Adreßerzeugungsschal­ tung 34 (Fig. 5) eine Addierschaltung 34-1 dazu, die reelle Adresse für die Position zu erzeugen, unter der die empfan­ genen 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 Kommunika­ tionsbereichs 13, also des Inhalts des Registers 32. Darüber hinaus verwendet die Adreßerzeugungsschaltung 34 eine Ad­ dierschaltung 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 Datenempfangs­ flag, also des Inhalts des Registers 39, und der Basisadres­ se BASE des Datenempfangsflags, also des Inhalts des Regi­ sters 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 In­ halt des Registers 40, verwendet. Die Speicherzugriffsschal­ tung setzt darüber hinaus das Datenempfangsflag auf die Po­ sition 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 vir­ tuellen 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 Übertra­ gungsempfangscluster zurückgesendet. Dementsprechend ist es beim vorliegenden Ausführungsbeispiel nicht erforderlich, einen Bereich zum Speichern einer Kopie des Paketes vorzu­ sehen, um für ein Rücksenden des Pakets gewappnet zu sein, wie dies beim Stand der Technik erforderlich war.
Nachfolgend wird der Ablauf des Übertragungsempfangsprozes­ ses beschrieben.
Wenn der Übertragungsempfangsprozeß Daten verwenden möchte, prüft er eine Benutzung der Bibliotheksfunktion, um die An­ kunft von Daten zu bestätigen, und liest dann das im virtu­ ellen 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 Über­ tragungsempfangsprozeß setzt das Datenempfangsflag vorab durch Zuordnung des Programmierers oder des Compilers zu­ rück, bevor Daten übertragen. Wenn der Datenempfang abge­ schlossen ist, wird das Flag in der oben beschriebenen Weise gesetzt. Daher kann der Übertragungsempfangsprozeß auf Grundlage des Flags entscheiden, ob der Datenempfang abge­ schlossen 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 Program­ mierung vor, daß der Übertragungsempfangsprozeß keinen Zu­ griff auf die Daten innerhalb des virtuellen Kommunikations­ bereichs 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 Hilfsmittel frei, wie den Speicherbereich, der dem Prozeß zugeordnet ist; dies erfolgt auf ähnliche Weise wie bei dem bekannten UNIK-Be­ trieb. Gemäß dem vorliegenden Ausführungsbeispiel wird wei­ terhin 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 ande­ ren 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ührungsbei­ spiel 2)
Beim vorstehenden Ausführungsbeispiel wurde angenommen, daß der virtuelle Kommunikationsbereich 11 unter jeweils dersel­ ben Adresse in jedem virtuellen Raum abgelegt ist. Es kann jedoch auch angenommen werden, daß ein viertes Feld in jedem Eintrag der Ortstabelle 12-2 (Fig. 7) vorhanden ist, wobei die virtuelle Kopfadresse des virtuellen Kommunikationsbe­ reichs 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 Daten­ empfangsbereichs dadurch berechnet wird, daß die Kopfadresse des virtuellen Kommunikationsbereichs 11 des Übertragungs­ ursprungsprozesses berechnet wird, wie im obigen Schritt 51. Bei dieser Anordnung ist es nicht erforderlich, diese für die virtuelle Kopfadresse des virtuellen Kommunikationsbe­ reichs 11 in jedem virtuellen Raum zu setzen.
Im oben beschriebenen Schritt 56 werden die Kopfadresse und die Länge des reellen Kommunikationsbereichs 13 dadurch er­ halten, 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 verwen­ det 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 Kommunikationsbe­ reichs 13 von dieser Identifikation innerhalb der Empfangs­ datenschreibschaltung vorgesehen wird.
Ein zweites Ausführungsbeispiel der Erfindung wird unter Be­ zugnahme auf Fig. 12 beschrieben. Das zweite Ausführungsbei­ spiel ist eine Modifizierung des ersten Ausführungsbei­ spiels. Daher erfolgt eine Beschreibung hauptsächlich für unterschiedliche Punkte. Das vorliegende Ausführungsbeispiel unterscheidet sich vom ersten dadurch, daß nur der Übertra­ gungsursprungsprozeß das Betriebssystem beim Senden von Da­ ten an das Netzwerk beansprucht, während der Datenempfangs­ prozeß Daten ohne Beanspruchen des Betriebssystems empfängt. Dementsprechend besteht der Vorteil, daß die Anzahl von Be­ anspruchungen des Betriebssystems zum Senden und Empfangen von Daten geringer ist als beim Stand der Technik, wobei je­ doch diese Anzahl größer ist als beim ersten Ausführungsbei­ spiel. Fig. 12 zeigt ein Cluster 100A gemäß dem zweiten Aus­ führungsbeispiel. In Fig. 12 stimmt die Struktur von Elemen­ ten, die die gleichen Bezugszeichen tragen, wie Elemente in Fig. 1, mit den Strukturen dieser gleich gekennzeichneten Elemente des ersten Ausführungsbeispiels überein.
Abweichend vom ersten Ausführungsbeispiel sind beim vorlie­ genden Ausführungsbeispiel die Anforderungstabelle 17, die Anforderungsbereiche 12 und 14 und das Anforderungstabellen­ ursprungsregister 5 in jedem der Cluster 100A nicht vorhan­ den.
In Fig. 12 entsprechen Register 122, 123, 124, 125, 126 und 129 jeweils den Registern 22, 23, 24, 25, 26 und 29 von Fig. 1. Diese Register sind direkt an den Bus 3 angeschlossen, so daß Daten von der CPU 1 direkt in diese Register als Haupt­ speicher 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 reellen Kommunikationsbereichs 13, der dem Übertragungsem­ pfangsprozeß zugeordnet ist. Das Register 124 dient zum Speichern des Offsets SO aus der reellen Kopfadresse des re­ ellen Kommunikationsbereichs 13 des Datenempfangsbereichs im reellen Kommunikationsbereich 13 entsprechend dem virtuellen Kommunikationsbereich 11 des Übertragungsempfangsprozesses. Das Register 125 dient entsprechend zum Speichern des Off­ sets 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ß ge­ sendet 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 Speicheradres­ se aus dem Hauptspeicher 2 auszulesen ist, oder zum Ein­ schreiben dieses Wertes in das angezeigte Register oder den Hauptspeicher 2, oder zum Einschreiben des Wertes aus dem angezeigten Register oder dem Hauptspeicher 2 in eine beson­ dere Adresse des Hauptspeichers 2, wenn die Speicheradresse angegeben wurde.
Es wird nun derjenige Teil des Ablaufs des Parallelverarbei­ tungscomputers des vorliegenden Ausführungsbeispiels be­ schrieben, der sich vom ersten Ausführungsbeispiel unter­ scheidet, was unter Bezugnahme auf Fig. 13 erfolgt.
Es wird zunächst die Initialisierung des Parallelverarbei­ tungscomputers beschrieben. Beim vorliegenden Ausführungs­ beispiel wird keine Verarbeitung für eine Anforderungstabel­ le 17 und ein Anforderungstabellenursprungsregister 5 vorge­ nommen wie gemäß Fig. 1, da diese Funktionsgruppen beim vor­ liegenden Ausführungsbeispiel nicht vorhanden sind. Die an­ deren Abläufe sind dieselben wie die beim ersten Ausfüh­ rungsbeispiel.
Nun wird die Prozeßinitialisierung beschrieben. Beim vorlie­ genden Ausführungsbeispiel wird keine Verarbeitung für einen virtuellen Verarbeitungsbereich 12 und einen virtuellen An­ forderungsbereich 14 vorgenommen, da solche Bereiche beim vorliegenden Ausführungsbeispiel nicht vorhanden sind. Je­ doch wird innerhalb des Betriebssystems eine (nicht darge­ stellte) Tabelle erstellt, die denselben Inhalt aufweist wie die Ortstabelle 12-2 im virtuellen Anforderungsbereich 12 gemäß Fig. 1. Die anderen Abläufe sind dieselben wie dieje­ nigen beim ersten Ausführungsbeispiel.
Nun wird die erfindungsgemäße Datenübertragung zwischen Pro­ zessen erläutert. Beim vorliegenden Ausführungsbeispiel un­ terscheidet sich der Ablauf beim Übertragungsursprungsprozeß von demjenigen beim ersten Ausführungsbeispiel, wobei der Rest des Ablaufs derselbe ist wie beim ersten Ausführungs­ beispiel. Daher werden nun unter Bezugnahme auf Fig. 13 nur die unterschiedlichen Funktionen erläutert.
Schritt 61: Systemaufruf senden
Ein Nutzerprogramm gibt einen Systemaufruf an das Betriebs­ system ab und übergibt die Steuerung an dasselbe. Dieser Aufruf hat dasselbe Format wie der Aufrufbefehl der Biblio­ theksfunktion beim vorgenannten ersten Ausführungsbeispiel.
Schritt 62: Umwandlung von Argumenten
Wenn ein Systemaufruf ausgegeben wurde, bestimmt das Be­ triebssystem die Adresse des Clusters auf dem Netzwerk, in dem der Übertragungsempfangsprozeß vorhanden ist, und es be­ stimmt die Kommunikationsbereichsidentifizierung des reellen Kommunikationsbereichs 13, der dem Übertragungsempfangspro­ zeß zugeordnet ist, was auf Grundlage des Namens des Über­ tragungsempfangsprozesses erfolgt. Dabei wird der vorab bei der Prozeßinitialisierung in der (nicht dargestellten) Ta­ belle 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 Betriebs­ system die Offsetwerte SO und FO der Kopfadresse des virtu­ ellen Kommunikationsbereichs 11 innerhalb des Übertragungs­ empfangsprozesses, aus der virtuellen Adresse des Datenem­ pfangsbereichs und der virtuellen Adresse des Datenempfangs­ flags, in derselben Weise wie beim ersten Ausführungsbei­ spiel.
Schritt 63: Setzen von Parametern in Registern
Das Betriebssystem liest den Zustand GG 130 über den Bus 3, um sich zu vergewissern, daß die Sendeschaltung 28 nicht be­ schäftigt ist, und sie setzt die Adresse CL des Übertra­ gungsbestimmungsclusters, die Kommunikationsbereichsidenfi­ zierung ID des dem Übertragungsempfangsprozeß zugeordneten reellen Kommunikationsbereichs 13, den Offset SO des Daten­ empfangsbereichs, 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 Ab­ laufsteuerung 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 Be­ fehl 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 dersel­ be Ablauf wie beim ersten Ausführungsbeispiel statt, weswe­ gen dieser Ablauf hier nicht mehr beschrieben wird.
Nun wird der Abschluß des Prozesses beschrieben. Beim vor­ liegenden 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 aus­ reichend beschrieben.
Gemäß dem vorliegenden Ausführungsbeispiel beansprucht der Übertragungsursprungscluster das Betriebssystem, so daß der Overhead etwas größer wird als beim ersten Ausführungsbei­ spiel. Abweichend von der bekannten Technik müssen innerhalb des Betriebssystems jedoch kein Sendepuffer und kein Em­ pfangspuffer 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 wer­ den kann. Darüber hinaus weist das vorliegenden Ausführungs­ beispiel eine einfachere Schaltungsstruktur auf als das er­ ste.
Ausführungsbeispiel 3
Ein drittes Ausführungsbeispiel der Erfindung wird nun unter Bezugnahme auf Fig. 14 beschrieben. Diese dritte Ausfüh­ rungsbeispiel ist eine Modifizierung des zweiten Ausfüh­ rungsbeispiels, weswegen vor allem unterschiedliche Punkte erläutert werden. Das vorliegende Ausführungsbeispiel stimmt insoweit mit dem zweiten überein, als der Übertragungsur­ sprungsprozeß Daten unter Beanspruchung des Betriebssystems an das Netzwerk sendet, dagegen der Übertragungsempfangspro­ zeß die Daten ohne Beanspruchung des Betriebssystems em­ pfängt. Jedoch unterscheidet sich das vorliegende Ausfüh­ rungsbeispiel dahingehend vom zweiten, daß das Betriebssy­ stem Parameter, wie sie für die Datenübertragung erforder­ lich sind, im Hauptspeicher 2 plaziert. Fig. 14 zeigt ein Cluster 100B gemäß dem vorliegenden Ausführungsbeispiel. In Fig. 14 sind solche Elemente, die dasselbe Bezugszeichen tragen wie solche in den Fig. 1 bis 12 dieselben Elemente wie dort mit derselben Struktur. In Fig. 14 bezeichnet 218 einen Anforderungsbereich im Hauptspeicher 2, welcher Anfor­ derungsbereich 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 Re­ gistern 122, 123, 124, 125, 126 bzw. 127 im zweiten Ausfüh­ rungsbeispiel entsprechen. Das Register 222 dient zum Spei­ chern der Clusteradresse CL des Übertragungsempfangsclusters im Netzwerk. Das Register 223 dient zum Speichern der Kommu­ nikationsbereichsidentifizierung ID des reellen Kommunika­ tionsbereichs 13, der dem Übertragungsempfangsprozeß zuge­ ordnet ist. Das Register 224 dient zum Speichern des Offsets SO des Datenempfangsbereichs im reellen Kommunikationsbe­ reich 13, der dem Übertragungsempfangsprozeß zugeordnet ist. Das Register 225 dient entsprechend zum Speichern des Off­ sets FO des Datenempfangsflags. Das Register 226 dient zum Speichern der Datenlänge LEN der zu sendenden Daten. Das Re­ gister 229 dient zum Setzen eines Wertes, der den Zustand CC der Sendeschaltung 128 anzeigt. Das Register 227 ist ein Da­ tenpuffer zum Speichern des Inhalts der über das Netzwerk zu sendenden Daten. 207 bezeichnet eine Speicherzugriffsschal­ tung zum Zugreifen auf den Hauptspeicher 2, wenn eine Adres­ se angegeben wurde, um einen Wert in einem angezeigten Regi­ ster 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 Parallelverarbeitungs­ computers erläutert. Wenn beim vorliegenden Ausführungsbei­ spiel das Betriebssystem gestartet wird, wird der Anforde­ rungsbereich 218 im Hauptspeicher 2 sichergestellt, und die reelle Kopfadresse des Anforderungsbereichs 218 wird im An­ forderungsbereichursprungsregister 230 gesetzt. Andere Ab­ läufe stimmen mit denen des zweiten Ausführungsbeispiels überein.
Es wird nun die Datenübertragung gemäß diesem Ausführungs­ beispiel zwischen Prozessen erläutert. Beim vorliegenden Beispiel unterscheidet sich der Ablauf beim Übertragungsur­ sprungsprozeß von demjenigen beim zweiten Ausführungsbei­ spiel. Daher wird nur der Unterschied unter Bezugnahme auf Fig. 15 beschrieben.
Schritt 61: Systemaufruf senden
Der Ablauf zum Ausgeben eines Systemaufrufs durch den Nut­ zerprozeß ist derselbe wie beim zweiten Ausführungsbeispiel.
Schritt 62: Umwandeln von Argumenten
Der Ablauf ist derselbe wie beim zweiten Ausführungsbei­ spiel.
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 Kommu­ nikationsbereichsidentifizierung ID des reellen Kommunika­ tionsbereichs 13, der dem Übertragungsempfangsprozeß zuge­ ordnet ist, den Offset SO des Datenempfangsbereichs, den Offset FO des Datenempfangsflags, die Datenlänge der zu sen­ denden Daten und die reelle Kopfadresse der zu sendenden Da­ ten. Die Speicherzugriffsschaltung 207 wird auf Grundlage dieser gesetzten Werte gestartet. Es ist auch möglich, einen Zeichenträger (Semaphore) im Anforderungsbereich 218 vorzu­ sehen und die Speicherzugriffschaltung 207 über den Zeichen­ träger zu starten. Das Betriebssystem gibt dann die Ablauf­ steuerung an das Nutzerprogramm zurück, um den nächsten Be­ fehl auszuführen (64 in Fig. 15).
Schritt 67: Setzen von Parametern in Registern
Das Betriebssystem gibt einen Befehl zum Lesen des Anforde­ rungsbereichs 218 über den Bus 3 an die Anforderungsbereich­ zugriffsschaltung 21A. Diese erzeugt jeden Eintrag des An­ forderungsbereichs 218 aus dem Anforderungsbereichsur­ sprungsregister 230, liest den Inhalt jedes Eintrags über die Speicherzugriffsschaltung 207 und setzt die Adresse CL des Übertragungsbestimmungsclusters, der Kommunikationsbe­ reichsidentifizierung ID des reellen Kommunikationsbereichs 13, der dem Übertragungsempfangsprozeß zugeordnet ist, den Offset SO des Datenempfangsbereichs, den Offset FO des Da­ tenempfangsflags und die Datenlänge LEN der zu sendenden Da­ ten in den Registern 222, 223, 224, 225 bzw. 226. Die Spei­ cherzugriffsschaltung 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, struk­ turiert die Sendeschaltung 128 ein Paket mit Hilfe der In­ halte der Register 222, 223, 224, 225 und 226 und des Puf­ fers 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 aus­ reichend beschrieben.
Gemäß diesem Ausführungsbeispiel ist es möglich, eine Wir­ kung 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 Erfin­ dung erläutert. Dieses ist eine Modifizierung des dritten Ausführungsbeispiels. Der Aufbau des Clusters des vierten Ausführungsbeispiels stimmt mit demjenigen des dritten Aus­ führungsbeispiels überein, weswegen die Erklärung unter Be­ zugnahme auf Fig. 14 erfolgt. Jedoch wird der Anforderungs­ bereich 214 in anderer Weise genutzt als das Anforderungs­ bereichursprungsregister 230. Dementsprechend wird dieser Unterschied hauptsächlich erläutert.
Zunächst wird die Systeminitialisierung beschrieben. Beim vorliegenden Ausführungsbeispiel ist der Anforderungsbereich 218 nicht im Hauptspeicher 2 festgelegt, also anders als beim dritten Ausführungsbeispiel. Daher wird der Anforde­ rungsbereich 218 nicht sichergestellt, wenn das System ini­ tialisiert wird, sondern er wird zum Zeitpunkt der Daten­ übertragung sichergestellt. Zum Zeitpunkt der Systeminitia­ lisierung wird kein Wert im Anforderungsbereichursprungsre­ gister 230 gesetzt.
Unter Bezugnahme auf Fig. 16 wird der vom Betriebssystem ausgeführte Ablauf beim Übertragungsursprungsprozeß erläu­ tert.
Schritt 61: Systemaufruf senden
Dieser Ablauf ist derselbe wie beim dritten Ausführungsbei­ spiel.
Schritt 62: Umwandeln von Argumenten
Dieser Ablauf ist derselbe wie beim dritten Ausführungsbei­ spiel.
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 Kommunikations­ bereichsidentifizierung ID des reellen Kommunikationsbe­ reichs 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 Anforderungsbereich­ ursprungsregister
Das Betriebssystem liest den Zustand CC 229, um sicherzu­ stellen, 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 Sendeschal­ tung 128 initialisiert werden. Das Betriebssystem gibt dann die Ablaufsteuerung an das Nutzerprogramm weiter, damit der nächste Befehl (64 in Fig. 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 we­ sentlichen beschrieben.
Beim vorliegenden Ausführungsbeispiel kann der Anforderungs­ bereich 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 gleichzei­ tig parallel auszuführen. Mit dieser Anordnung ist es paral­ lel mit dem Ablauf der Sendeschaltung 128, nach Start durch den von einer bestimmten CPU 1 ausgeführten Schritt 69 mög­ lich, daß eine andere CPU 1 die Schritte 61, 62 und 68 aus­ führt und eine andere CPU 1 den Schritt 69 direkt nach dem Beendigen der Arbeit der Sendeschaltung 128 ausführt. Infol­ gedessen kann mit diesem Ausführungsbeispiel die Anzahl von Overheadvorgängen in dem beim Senden von Daten tätigen Be­ triebssystem weiter gegenüber der beim dritten Ausführungs­ beispiel erforderlichen Anzahl verringert werden.
Ausführungsbeispiel 5
Fig. 17 zeigt den Aufbau eines Parallelverarbeitungscompu­ ters gemäß einem fünften Ausführungsbeispiel der Erfindung. In Fig. 17 bezeichnen 501, 502, 503 und 504 Prozessoren, die alle denselben Aufbau aufweisen. 505 bezeichnet einen Haupt­ speicher, in den sich die Prozessoren 501 und 502 teilen, wäh­ rend 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äh­ rend die Prozessoren 503 und 504 und der Hauptspeicher 506 einen zweiten Cluster bilden. 507 bezeichnet eine Sende­ schaltung, die mit dem ersten Cluster verbunden ist. 508 be­ zeichnet 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 Fig. 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 Clu­ sters zu einem angegebenen Zielort.
Beim vorliegenden Ausführungsbeispiel werden zwei Prozesso­ ren 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äu­ tert. 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 Mikro­ prozessor H32 von Hitachi Ltd. In Fig. 17 ist der interne Aufbau nur für den Prozessor 501 dargestellt, um die Zeich­ nung zu vereinfachen. In Fig. 17 bezeichnet 510 eine Ausfüh­ rungssteuerschaltung zum Steuern der Befehlsausführungsfolge des Prozessors 501. 511 bezeichnet ein PSW (Programmstatus­ wort). 511-1 bezeichnet ein Privilegstatusanzeigefeld inner­ halb des PSW 511, mit der Breite eines Bits. Wenn das Anzei­ gefeld 511-1 den Wert 1 hat, befindet sich der Prozessor 501 in privilegiertem Status, wohingegen er sich in nichtprivi­ legiertem 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 Befehlsdeko­ der. 514 bezeichnet ein Pfadtabellenbasisregister zum Spei­ chern 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 ange­ zeigt wird, in eine reelle Adresse. Die Adreßübersetzungs­ schaltung 518 kann ohne weiteres gemäß dem Stand der Technik strukturiert sein. 519 bezeichnet ein Bedingungskoderegister zum Speichern eines Wertes, wie er durch eine Befehlsbe­ schreibung 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 bezeich­ net 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 Be­ triebssystems. 529 bezeichnet einen Betriebssystembereich. Um den Zugriff zum Betriebssystembereich 529 zu ermöglichen, ist es erforderlich, ein Signal in die Betriebssystembe­ reichzugrifffreigabeschaltung 528 einzugeben. Es ist mög­ lich, 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 Fig. 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 Pro­ zessor 501 ausgeführt wird. Fig. 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 übertra­ gen 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 über­ tragenden Nachricht, 526 bezeichnet eine Sendesteuerschal­ tung zum Übertragen des Inhalts des Senderegisters 534 an das Netzwerk 509 über eine Leitung L6, solange ein Übertra­ gungsunterbrechungssignal 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 Empfangssteuer­ schaltung 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ßübersetzungs­ schaltung 536 gibt ein Signal an eine Leitung L11, wenn kei­ ne reelle Adresse erhalten werden kann. 537 bezeichnet eine Adreßerzeugungsschaltung. 538 und 539 bezeichnen Schreib­ schaltungen 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 Betriebssystembe­ reich 549 zugreifen zu können, ist es im Fall eines Zugriffs auf den Hauptspeicher 505 erforderlich, ein Signal in die Betriebssystembereichzugrifffreigabeschaltung 548 einzuge­ ben. 550 bezeichnet eine Seitentabelle. 551 bezeichnet einen virtuellen Raum, in den Daten bei der Datenübertragung ein­ zuschreiben sind, wie sie durch das vorliegende Ausführungs­ beispiel erklärt wird. 525 bezeichnet einen Datenspeicherbe­ reich im virtuellen Raum 551. 553 bezeichnet einen Empfangs­ abfangpuffer, und 554 bezeichnet einen Datenspeicherbereich in demselben.
Es wird nun der Betrieb des Parallelverarbeitungscomputers gemäß diesem Ausführungsbeispiel beschrieben. Im erfindungs­ gemäßen Parallelverarbeitungscomputer sind der erste und der zweite Cluster eng gekoppelte Multiprozessoren, die ein An­ fangsprogramm laden, nachdem die Spannungsversorgung einge­ schaltet 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 Sy­ stembetriebsbereiche 529 und 549 in den Hauptspeichern 505 und 506 sichergestellt. In der Zeichnung sind der Einfach­ heit halber Einheiten weggelassen, wie sie für den Initiali­ siervorgang erforderlich sind, wie z. B. Magnetplattenein­ heiten.
Wenn ein Befehl zum Initialisieren eines Nutzerprogramms in einen gewissen Cluster nach dem Initialisieren des Betriebs­ systems eingegeben wurde, erzeugt das Betriebssystem dieses Clusters einen virtuellen Raum und erzeugt dann in diesem einen Prozeß, wie er zum Ausführen des Nutzerprogramms er­ forderlich ist. Nutzerprozesse, die in der oben beschriebe­ nen 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 Nutzer­ programmen, die direkt oder indirekt durch 60056 00070 552 001000280000000200012000285915994500040 0002004208924 00004 59937einen Initiali­ sierbefehl erzeugt wird, wird Job genannt. Jedem Job wird durch das Betriebssystem eine Jobidentifiziermarkierung zu­ geordnet. Jedem Nutzerprozeß wird durch den Nutzer ein Name zugeordnet, so daß jeder Nutzerprozeß unter den Jobs einzig­ artig ist. Wenn ein Prozeß mit doppeltem Namen innerhalb der Jobs aufgrund eines Nutzerprogrammfehlers oder dergleichen erzeugt werden soll, stellt das Betriebssystem diese Verdop­ pelung fest und beendet den entsprechenden Job in nichtnor­ maler Weise. Mehrere Prozesse können in einem Cluster er­ zeugt werden, wenn Nutzerprozesse erzeugt werden. Das Ver­ fahren zum Erzeugen von Nutzerprozessen kann ähnlich sein wie bei einem bekannten Verfahren, z. B. dem Verfahren, wie es in einem System mit verteilten Prozessoren 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 wer­ den, 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 be­ zogene Befehlsausführungsschaltung verfügt, die einem Mikro­ prozessor hinzugefügt wird, der aufgebaut sein kann wie ein bekannter Prozessor. Dementsprechend werden von einer Reihe von Befehlen eines Prozesses, die von jedem Prozessor auszu­ fü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 Parallelverar­ beitungscomputer gemäß der Erfindung, weist eine Adreßüber­ setzungsschaltung auf, die ähnlich ist wie bei einem bekann­ ten 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 Zuord­ nen eines virtuellen Raums dem Zuordnen eines Prozesses.
Ein Ablauf zur Prozeßerzeugung wird nun unter Bezugnahme auf Fig. 17 beschrieben. Beim erfindungsgemäßen Parallelverar­ beitungscomputer erzeugt das Betriebssystem, beim Erzeugen eines Nutzerprozesses, eine Pfadtabelle entsprechend dem zu erzeugenden Prozeß im reellen Speicher im Betriebssystembe­ reich 529. (Da das Betriebssystem im privilegierten Status betrieben wird, wird der Befehl 1 in das Privilegstatusan­ zeigefeld 511-1 als Signal an die Betriebssystembereichzu­ grifffreigabeschaltung 528 gegeben, so daß das Betriebssy­ stem 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 über­ schreiben). Gemäß Fig. 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. Fig. 19 zeigt den Inhalt des Zusammenhangbereichs des Prozesses. Gemäß Fig. 19 wird der Inhalt von PSW in einem Feld 103 gespeichert, der Inhalt des Registers in einem Feld 104 gespeichert und andere Steuerin­ formation in einem Feld 105 gespeichert. Diese Inhalte stim­ men mit denjenigen von Zusammenhangswerten überein, wie sie von einem bekannten Betriebssystem verwaltet werden. Im Zu­ sammenhangsbereich bezeichnen 106 und 107 Felder zum Spei­ chern der oben genannten Werte BASE und LEN, die gemäß der Erfindung neu sind.
Wenn der zeitliche Ablauf eines dem virtuellen Raum 532 ent­ sprechenden 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ängenre­ gister 515 im Prozessor 501 als exklusive Register zum Spei­ chern der neu eingeführten Werte BASE bzw. LEN als Teile des Zusammenhangs vorhanden. Darüber hinaus verfügt der Paral­ lelprozessor ü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 ge­ rade 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 Zu­ sammenhangsbereich 531 gespeichert, gegensätzlich zum vor­ stehend Ausgeführten.
Das Schema der Befehlsausführung im Prozessor 501 wird nun erläutert. Zunächst wird aus dem Hauptspeicher 505 ein Be­ fehl auf Grundlage des Feldes 511-2 des PSW 511 in der Aus­ führungssteuerschaltung 510 ausgelesen, und dieser Befehl wird im Befehlsregister 512 gespeichert. Der im Feld OP des Befehlsregisters 512 gespeicherte Betriebskode wird in die Privilegbefehlsausführungsentscheidungsschaltung 522 eingege­ ben. In diese wird auch der Wert des Privilegstatusanzeige­ feldes 511-1 eingegeben. Sie gibt an die Ausführungssteuer­ schaltung 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 ausge­ führt, wenn ein Befehlsdekoder 513 den Betriebskode deko­ diert und ein Signal erzeugt, wie es zum Abarbeiten des de­ kodierten Befehls erforderlich ist. Fig. 20 zeigt das Format des BASE-Setzbefehls. Gemäß Fig. 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 vorliegen­ de 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 OPI des Befehlsregisters 512 gespeicherte Wert im Pfadtabellenbasisregister 514 gespeichert.
Fig. 21 zeigt ein Format für den LEN-Setzbefehl. Gemäß Fig. 21 speichert ein Teil 112 einen Betriebskode für den Befehl, und ein erster Operand speichert den im Pfadtabellenbasisre­ gister 514 zu setzenden Wert. In Teilen 114 und 115 gespei­ cherte 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 Be­ fehl ein privilegierter Befehl ist, wird er nicht ausge­ fü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 OPI des Befehlsregisters 512 gespeicherte Wert im Pfadtabel­ lenlängenregister 515 gesetzt.
Ein Prozeß mit dem im Register durch Ausführen des BASE- Setzbefehls und des LEN-Setzbefehls geladener Zusammenhangs­ wert, welcher Prozeß dem Prozessor 501 zugeordnet wurde, setzt einen Pfad über Datenübertragung vor der Datenübertra­ gung an einen anderen 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 System­ aufruf 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 exi­ stiert, teilt dem nachfragenden Cluster die Nummer des Clu­ sters und einen Seitentabellenursprung zum Strukturieren eines virtuellen Raums mit, der eindeutig dem angezeigten Prozeß entspricht. In anderen Fällen teilt das Betriebssy­ stem 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 zu­ rü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 Seitentabellenursprung des virtuellen Raums, der dem ermittelten Prozeß entspricht, wird in das Feld PTO eingeschrieben. Dann wird die Nummer des zugehöri­ gen Eintrags an den Nutzerprozeß rückübermittelt. Anders ge­ sagt bedeutet dies, daß die Nummer des Eintrags der Pfadta­ belle 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 Fernspeiche­ rungsbefehl zum Übertragen von Daten erläutert. Der Fern­ speicherungsbefehl ist ein nichtprivilegierter Befehl und weist ein Format auf, wie es in Fig. 22 dargestellt ist. In Fig. 22 bezeichnen 117, 118 und 119 virtuelle Adressen in­ nerhalb eines virtuellen Raums, der dem anderen Prozeß ent­ spricht. 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 Fig. 23 dargestellt.
Ausführung des Fernspeicherungsbefehls durch den Nutzerprozeß (150 in Fig. 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 Befehls­ register 512. Da der Befehl ein nichtprivilegierter Befehl ist, gibt die Privilegbefehlsausführungsentscheidungsschal­ tung 522 kein Signal aus. Der Befehlsdekoder 513 dekodiert den im Feld OP des Befehlsregisters 512 gespeicherten Be­ triebskode und erzeugt ein Ausgangssignal auf der Leitung L3, wenn der Lesebefehl ausgeschaltet wurde, damit ein Fern­ speicherungsbefehl vorliegt. Dann wird die folgende Be­ triebsfolge gestartet.
Erste Untersuchung (151 in Fig. 23)
Der Prozessor addiert den Wert des im ersten Operanden (117 in Fig. 22) mit Hilfe des Addierers 516 zu dem im Pfadtabel­ lenbasisregister 514 gespeicherten Wert, um die Eintragungs­ adresse zu erhalten, die dem Pfad in der Pfadtabelle 530 entspricht, und er erzeugt ein Ausgangssignal für die Lese­ schaltung 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 Betriebssystembe­ reich 529. Da ein Signal über die Leitung L3 in die Be­ triebssystembereichfreigabeschaltung 528 einzugeben ist, kann die Leseschaltung 512 selbst im nichtprivilegierten Zu­ stand einen Lesevorgang ausführen).
Der Prozessor vergleicht den für den Pfad im ersten Operan­ den gespeicherten Wert mit dem Inhalt des Pfadtabellenlän­ genregisters 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ührungssteuerschal­ tung 510, wenn der Wert für den Pfad ungültig ist. Der Un­ gültigkeitsfall ist der Fall, bei dem ein Signal auf minde­ stens einer der Leitungen L4 und L12 als Ergebnis der Aus­ führung des Befehls ausgegeben wurde.
Das Vorstehende beschreibt die erste Untersuchung. Wenn ein Signal von der Befehlsungültigentscheidungsschaltung 523 als Ergebnis der ersten Untersuchung von der Ausführungssteuer­ Schaltung 510 erhalten wird, sperrt diese die Ausführung des Befehls und unterbricht den Prozeß 501.
Zweite Untersuchung (152 in Fig. 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 heraus­ stellt, daß der durch den zuvor ausgeführten Fernspeiche­ rungsbefehl 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 Be­ triebskoderegister 519 und beendet die Ausführung des Be­ fehls. Der Prozessor führt den folgenden Ablauf aus, wenn der im Senderegister 514 durch den zuvor ausgeführten Fern­ speicherungsbefehl gesetzte Wert vollständig an das Netzwerk 509 übertragen wurde.
Setzen der Werte in den Feldern CL und PTO (153 in Fig. 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 Sen­ deregister 514 setzt den an die Leitung L5 ausgegebenen Wert auf die Werte der Felder CL und PTO auf Grundlage des Sig­ nals auf der Leitung L3.
Setzen des Wertes im Feld VA (154 in Fig. 23)
Anschließend setzt der Prozessor die im dritten Operanden (119 in Fig. 22) gespeicherte Adresse direkt im Feld VA des Senderegisters 524 auf Grundlage des Signals auf der Leitung L3.
Setzen des Datenfeldes (155 in Fig. 23)
Anschließend übersetzt die Adreßübersetzungsschaltung 518 die im zweiten Operanden (118 in Fig. 22) gespeicherte vir­ tuelle Adresse in die reelle Adresse und erzeugt ein Aus­ gangssignal 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 Da­ ten 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 Fig. 23)
Wenn die Daten in der vorstehend beschriebenen Weise im Sen­ deregister 534 gesetzt wurden, wird der Bedingungskode 0 im Bedingungskoderegister 519 über die Leitung L13 gesetzt, wo­ durch die Abarbeitung des Befehls beendet wird. Die Sende­ steuerschaltung 526, die das Signal über die Leitung L3 er­ halten hat, beginnt damit, den Inhalt des Senderegisters 534 an das Netzwerk 509 auszugeben.
Der Ablauf des Fernspeicherungsbefehls endet mit den vorste­ hend angegebenen Vorgängen, und der Prozessor 501 führt den nächsten Befehl aus (157 in Fig. 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 Da­ ten nicht erfolgreich übertragen wurden, kann der Befehl er­ neut abgearbeitet werden.
Das Netzwerk 509 überträgt eine Nachricht an die Empfangs­ schaltung, 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 Fig. 23)
Wenn eine Nachricht empfangen wurde, überträgt die Empfangs­ schaltung 508 die Inhalte der Felder PTO und VA des Em­ pfangsregisters 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 Betriebssy­ stembereichzugrifffreigabeschaltung 548 auf Grundlage des im Feld PTO gespeicherten Seitentabellenursprungs und der vir­ tuellen 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 Sei­ tentabelle 550 zu und überprüft, ob die reelle Adresse des Hauptspeichers 506 erhalten werden kann oder nicht.
Adreßübersetzung (161 in Fig. 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 Seiten­ tabelle 550 über die Leitung L20 zugreift, welche Seitenta­ belle dem virtuellen Raum 551 entspricht, der dem Feld PTO im Empfangsregister 535 entspricht. Dadurch führt die Em­ pfangsschaltung eine Adreßübersetzung aus, um die reelle Adresse aus der virtuellen Adresse im Feld VA des Empfangs­ registers 535 zu gewinnen, und sie gibt die als Ergebnis der Adreßübersetzung erhaltene reelle Adresse und ein Schreiban­ forderungssignal an die Leitung L10 aus.
Einschreiben von Daten (162 in Fig. 23)
Die Schreibschaltung 539, die das oben angegebene Ausgangs­ signal 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 Regi­ sters 535 in den Datenspeicherbereich 552 des virtuellen Raums 551 einschreibt, wodurch der Ablauf beendet wird.
Adreßerzeugung (170 in Fig. 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ßüberset­ zungsschaltung 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 Empfangsab­ fangpuffers erzeugen, der den Inhalt des Empfangsregisters 535 speichern kann.
Der Empfangsabfangpuffer 553 wurde vorab innerhalb des Be­ triebssystembereichs 549 des Hauptspeichers 506 durch das Betriebssystem des zugehörigen Clusters gesichert.
Standby des Empfangsregisters (171 in Fig. 23)
Wenn die von der Adreßerzeugungsschaltung 537 erzeugte Adresse über die Leitung L17 der Schreibschaltung 538 zuge­ führt wurde, gibt diese über die Leitung L18 ein Signal an die Betriebssystembereichzugrifffreigabeschaltung 548 aus, um das Einschreiben in den Betriebssystembereich 549 frei zu­ geben. 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 Fig. 23)
Die Adreßerzeugungsschaltung 537 erzeugt einen Interrupt an die Prozessoren 503 und 504 über die Leitung L21.
Seiteneinleseprozeß (180 in Fig. 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 Fig. 23)
Das Betriebssystem entnimmt dem Empfangsabfangpuffer 553 die Nachricht und simuliert prinzipiell den Ablauf der Datenver­ arbeitung, die durch die Empfangsschaltung 508 auszuführen ist.
Die Datenübertragung wird wie vorstehend beschrieben abge­ schlossen.
Wenn eine Adresse nicht erzeugt werden kann, da im Empfangs­ abfangpuffer 553 bei der oben beschriebenen Adreßerzeugung (170 in Fig. 23) kein Raum frei ist, überträgt die Adreßer­ zeugungsschaltung 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 Lei­ tung L9 an das Netzwerk 509, um das Übertragen der Nachricht vom Netzwerk 509 auf der Leitung L8 abzufangen. Die Adreßer­ zeugungsschaltung 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 Em­ pfangsabfangpuffers 553 anzufordern. Wenn die Erweiterung abgeschlossen ist, teilt das Betriebssystem den Abschluß der Erweiterung der Adreßerzeugungsschaltung 537 über die Lei­ tung 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 erhal­ ten hat, teilt sie das Neustarten des Empfangs dem Netzwerk 509 über die Leitung L9 mit.
Wenn die gesamte erforderliche Datenübertragung abgeschlos­ sen 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. Fig. 24 zeigt den Aufbau eines Parallelprozessors gemäß dem sechsten Ausfüh­ rungsbeispiel der Erfindung. In Fig. 24 haben Elemente, die dieselben Bezugszeichen tragen wie solche beim fünften Aus­ führungsbeispiel, denselben Aufbau wie die dortigen Ele­ mente.
In Fig. 24 bezeichnen 501a, 502a, 503a und 504a Prozessoren mit jeweils demselben Aufbau. 505 und 506 bezeichnen Haupt­ speicher. 507a und 508 bezeichnen eine Sendeschaltung bzw. eine Empfangsschaltung. 509 bezeichnet ein Netzwerk.
Im Prozessor 501a bezeichnet 512a ein Befehlsregister. Die­ ses unterscheidet sich vom Befehlsregister 512 des fünften Ausführungsbeispiels dadurch, daß das erstere drei Operanden speichert, während das letztere nur zwei Operanden spei­ chert. Im Prozessor 501a sind weitere Aufbauelemente wie im Prozessor 501 von Fig. 17 vorhanden, die durch gleiche Be­ zugszeichen gekennzeichnet sind, wenn sie einander entspre­ chen.
In der Sendeschaltung 507a bezeichnen 534a-1 und 534a-2 Sen­ deregister, die dem Senderegister 534 des fünften Ausfüh­ führungsbeispiels entsprechen, das jedoch zweigeteilt ist, wie in der Figur dargestellt.
Beim vorliegenden Ausführungsbeispiel besteht der Fernspei­ cherungsbefehl des fünften Ausführungsbeispieles nicht mehr, wohingegen zwei Befehle betreffend einen Fernspeicherungs­ vorbereitungsbefehl und einen Fernspeicherungsausführungsbe­ fehl neu hinzugefügt sind. Diese zwei neuen Befehle sind nichtprivilegierte Befehle.
Fig. 25 zeigt ein Format für den Fernspeicherungsvorberei­ tungsbefehl. In Fig. 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.
Fig. 26 zeigt ein Format für den Fernspeicherungsausfüh­ rungsbefehl. In Fig. 26 bezeichnet 204 einen Betriebskode für diesen Befehl; ein erster Operand 205 ist die virtuelle Adresse innerhalb des virtuellen Raums, der dem anderen Pro­ zeß zum Speichern zu sendender Daten entspricht. Ein dritter Operand 6 ist eine virtuelle Adresse der zu sendenden Da­ ten, wie sie im virtuellen Raum vorhanden sind, der dem Pro­ zeß entspricht, der diesen Befehl ausführt.
Die Funktion des Parallelprozessors gemäß diesem Ausfüh­ rungsbeispiel wird nun erläutert. Die Funktion ist dieselbe wie diejenige beim fünften Ausführungsbeispiel mit der Aus­ nahme, daß die Abläufe für den gegenüber dem fünften Ausfüh­ rungsbeispiel nicht mehr vorhandenen Fernspeicherungsbefehl durch die zwei zusätzlichen Befehle, also den Fernspeiche­ rungsvorbereitungsbefehl und den Fernspeicherungsausfüh­ rungsbefehl ausgeführt werden. Daher werden die Abläufe ge­ mäß diesen zwei Befehlen unter Bezugnahme auf die Fig. 24 und 27 beschrieben.
Es wird zunächst der Ablauf für den Fernspeicherungsvorbe­ reitungsbefehl beschrieben. Dieser Befehl wird wie folgt ausgeführt.
Ausführung des Fernspeicherungsvorbereitungsbefehls durch den Nutzerprozeß (181 in Fig. 27)
Zunächst liest der Nutzerprozeß den Befehl aus dem Haupt­ speicher 505 abhängig vom Feld 511-2 des PSW 511 in der Aus­ führungssteuerschaltung 510 und speichert den Befehl im Be­ fehlsregister 512a. Da dieser Befehl ein nichtprivilegierter Befehl ist, erzeugt die Privilegbefehlsausführungsentschei­ dungsschaltung 522 kein Ausgangssignal. Der Befehlsdekoder 513 dekodiert den im Feld OP des Befehlsregisters 512a ge­ speicherten 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 Fig. 27)
Der Prozessor addiert mit Hilfe des Addierers 516 den Wert des im ersten Operanden (201 in Fig. 25) gespeicherten Pfa­ des zu dem im Pfadtabellenbasisregister 514 gespeicherten Wert, um eine Bereichsadresse zu erhalten, die dem Pfad in der Pfadtabelle 530 entspricht, und erzeugt ein Ausgangssig­ nal für die Leseschaltung 520. Nachdem diese das Signal über die Leitung L3 erhalten hat, greift sie durch die vom Addie­ rer 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 Betriebs­ systembereich 529. Da jedoch ein Signal über die Leitung L3 in die Betriebssystembereichfreigabeschaltung 528 eingegeben wird, kann die Leseschaltung 520 auch dann eine 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 Pfadta­ bellenlängenregisters 515, was durch den Komparator 517 er­ folgt. 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üh­ rungssteuerschaltung 5, 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 Lei­ tungen 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ültigentscheidungs­ schaltung 523 von der Ausführungssteuerschaltung 510 erhal­ ten wird, sperrt diese die Ausführung dieses Befehls und er­ zeugt einen Interrupt für den Prozessor 501a.
Zweite Überprüfung (152 in Fig. 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 aus­ gefü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üh­ rung des Befehls. Der Prozessor führt die folgenden Abläufe aus, wenn die in den Senderegistern 534a-1 und 534a-2 ge­ setzten Werte, wie sie zuvor durch den Fernspeicherungsaus­ führungsbefehl ausgeführt wurden, alle an das Netzwerk 509 übertragen wurden.
Setzen der Werte der Felder CL und PTO (153 in Fig. 27)
Zunächst greift, wie bei der ersten Überprüfung, die Lese­ schaltung 520 mit Hilfe der Eintragungsadresse, wie sie durch den Addierer 516 ausgegeben wird, auf den Hauptspei­ cher 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 Lei­ tung L3.
Durch die vorstehenden Erläuterungen ist der Ablauf für den Fernspeicherungsvorbereitungsbefehl beschrieben.
Nun wird der Ablauf für den Fernspeicherungsausführungsbe­ fehl erklärt. Dieser Befehl wird wie folgt abgearbeitet.
Ausführen des Fernspeicherungsausführungsbefehls durch den Nutzerprozeß (183 in Fig. 27)
Der Nutzerprozeß liest zunächst den Befehl aus dem Haupt­ speicher 505 gemäß dem Feld 511-2 des PSW 511 in der Ausfüh­ rungssteuerschaltung 510 und speichert den Befehl im Be­ fehlsregister 512a. Da dieser Befehl ein nichtprivilegierter Befehl ist, erzeugt die Privilegbefehlausführungsentschei­ dungsschaltung 512 kein Ausgangssignal. Der Befehlsdekoder 513 dekodiert den im Feld OP des Befehlsregisters 512a ge­ speicherten 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 Fig. 27)
Anschließend wird die im ersten Operanden (205 in Fig. 26) gespeicherte virtuelle Adresse direkt im Feld VA des Sende­ registers 534a-2 auf Grundlage des Signals auf der Leitung L99 gesetzt.
Setzen des Datenfeldes (155 in Fig. 27)
Die Adreßübersetzungsschaltung 518 übersetzt die im zweiten Operanden (206 in Fig. 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 Daten­ feld des Senderegisters 534a-2 aus. Dieses setzt die zu sen­ denden Daten im Datenfeld auf Grundlage des Signals auf der Leitung L99.
Datenübertragung (156 in Fig. 27)
Wenn das Setzen der Senderegister 534a-1 und 534a-2, wie vorstehend beschrieben, abgeschlossen ist, setzt die Sende­ schaltung den Bedingungskode 0 über die Leitung L13 im Be­ dingungskoderegister 519 und beendet die Ausführung des Be­ fehls. Die Sendesteuerschaltung 526, die das Signal von der Leitung L99 empfangen hat, beginnt mit dem Senden der Inhal­ te der Senderegister 534a-1 und 534a-2 an das Netzwerk 509.
Damit wird der Ablauf für den Fernspeicherungsausführungsbe­ fehl abgeschlossen.
Wie es aus der obigen Erklärung hervorgeht, ist es durch Ausführen des Fernspeicherungsvorbereitungsbefehls zum Set­ zen 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 Fernspeiche­ rungsvorbereitungsbefehl dann, wenn im selben Prozeß Daten wiederholt zu senden sind, nur einmal ausgeführt, und der Fernspeicherungsausführungsbefehl wird entsprechend der er­ forderlichen Anzahl ausgeführt. Demgegenüber wird beim fünf­ ten Ausführungsbeispiel der Fernspeicherungsbefehl wieder­ holt ausgeführt. Da der Fernspeicherungsbefehl des fünften Ausführungsbeispiels durch den Fernspeicherungsausführungs­ befehl ersetzt ist, für den die Abarbeitung erheblich einfa­ cher 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ührungs­ beispiel ausgeführt wird.
Eine Einschränkung, wie sie zum fünften Ausführungsbeispiel hinzugefügt wird, um das siebte Ausführungsbeispiel zu er­ halten, wird nun erläutert.
Beim fünften Ausführungsbeispiel kann eine virtuelle Seite im virtuellen Raume des Datenempfangsprozesses, welche Seite durch den Fernspeicherungsbefehl zu übertragen ist, durch das Betriebssystem seitenmäßig ausgegeben werden. Beim vor­ liegenden Ausführungsbeispiel wird jedoch die Einschränkung hinzugefügt, daß die genannte durch den Fernspeicherungsbe­ fehl zu sendende virtuelle Seite im virtuellen Raum des Da­ tenemfangsprozesses dem reellen Speicher ohne Ausnahme zuge­ ordnet ist.
Der Ablauf, gemäß dem eine virtuelle Seite dem reellen Spei­ cher ohne Ausnahme zugeordnet ist und bei dem eine seiten­ weise Ausgabe nicht zulässig ist, ist ein Ablauf mit soge­ nannter Seitenfixierung. Dies kann unter Verwendung herkömm­ licher Technik einfach realisiert werden.
Der Aufbau eines Parallelprozesses gemäß diesem Ausführungs­ beispiel kann dadurch realisiert werden, daß ein Teil der Elemente des Aufbaus des fünften Ausführungsbeispiels wegge­ lassen wird. Fig. 28 zeigt den Aufbau des Parallelprozessors gemäß dem vorliegenden Ausführungsbeispiel. Diesem Aufbau fehlen die Adreßerzeugungsschaltung 537, die Schreibschal­ tung 538, der Empfangsabfangpuffer 553, der Datenspeicherbe­ reich 554 des Empfangsabfangpuffers 553 und die an diese Elemente angeschlossenen Leitungen gegenüber dem Parallel­ prozessor von Fig. 17.
Die Funktion des Parallelprozessors gemäß diesem Ausfüh­ rungsbeispiel ist fast dieselbe wie diejenige des Parallel­ prozessors des fünften Ausführungsbeispiels. Daher werden nur Unterschiede erläutert.
Ein erster Unterschied liegt beim Initialisieren des Prozes­ ses zum Empfangen von Daten vor, wie sie durch den Fernspei­ cherbefehl zu übertragen sind. Gemäß dem vorliegenden Aus­ führungsbeispiel wird beim Ausführen der Abläufe des Be­ triebssystems zum Erzeugen eines virtuellen Raums zum Erzeu­ gen eines Prozesses ein reeller Speicherbereich gesichert, dessen Kapazität mit derjenigen der virtuellen Seite über­ einstimmt, die für den Kodebereich und den Datenbereich des Prozesses flach dem Erzeugen des Raums erforderlich ist, und dieser reelle Speicherbereich wird dem virtuellen Speicher­ bereich völlig zugeordnet, wobei ein Seitenfixierungsprozeß für die ganzen virtuellen Seiten ausgeführt wird.
Ein zweiter Unterschied besteht beim Empfangsablauf im Pro­ zeß zum Empfangen von Daten, wie sie durch einen Fernspei­ cherbefehl ü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 Fig. 23, die die Funktion des fünften Ausführungsbeispiels verarbei­ tet, nicht erforderlich ist. Auch ist eine Reihe von Abläu­ fen ab der Adreßerzeugung 170 nicht erforderlich. Dement­ sprechend ist es im Prozeß zum Empfangen von Daten, die durch die Datenübertragung 156 von Fig. 23 übertragen wer­ den, 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 Empfangsab­ fangspuffer nicht erforderlich, wodurch der reelle Speicher­ bereich 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 Modifi­ zierung des siebten Ausführungsbeispiels, jedoch mit vielen gemeinsamen Punkten. Daher werden nur Unterschiede erläu­ tert. Fig. 29 zeigt den Aufbau des Parallelprozessors gemäß dem achten Ausführungsbeispiel. In Fig. 29 sind die Struktu­ ren von Elementen, die dieselben Bezugszeichen tragen wie Elemente in Fig. 17 dieselben wie diejenigen der Elemente im fünften Ausführungsbeispiel.
In Fig. 29 bezeichnen Bezugszeichen 501c, 502c, 503c und 504c Prozessoren mit jeweils derselben Struktur. 505 und 506 bezeichnen Speicher. 507c und 508c bezeichnen eine Sende­ schaltung bzw. eine Empfangsschaltung. 509 bezeichnet ein Netzwerk.
Im Prozessor 501c bezeichnet 999 eine Adreßübersetzungs­ schaltung, bei der es sich um eine für dieses Ausführungs­ beispiel neu eingeführte Anordnung handelt. Andere Aufbau­ elemente des Prozessors 501c sind solche, wie im Prozessor 501 von Fig. 17 vorhanden, wobei dieselben Aufbauelemente dieselben Bezugszeichen tragen.
Im Hauptspeicher 5 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 Senderegi­ ster, das über drei Felder für Werte von CL, RA und Daten verfügt.
In der Empfangsschaltung 508c bezeichnet 535c ein Empfangs­ register.
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ührungs­ beispiel besteht lediglich in der Funktion des Befehls "openpath", der einem Systemaufruf im siebten Ausführungs­ beispiel 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 Spezifi­ kation für "openpath" ist dieselbe wie beim siebten Ausfüh­ rungsbeispiel. Dieser Systemaufruf wird auf folgende Weise ausgeführt.
Zunächst fragt 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 Clu­ sters, in dem sich ein Prozeß mit dem vorgegebenen Namen be­ findet, 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 ausgele­ sen, die dem Nutzerprozeß zugeordnet ist, die den Systemauf­ ruf 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 einge­ schrieben. Darüber hinaus wird Information zum Erhalten der reellen Adresse aus der virtuellen Adresse im virtuellen Raum, der eindeutig dem zugeordneten Prozeß entspricht, ge­ setzt, und es wird die Eintragungsnummer der Pfadtabelle in der Adreßübersetzungsschaltung 999 gesetzt, und die Eintra­ gungsnummer wird an den Nutzerprozeß übergeben. Anders ge­ sagt 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 999 kann mit herkömmlicher Technik strukturiert sein.
Es wird nun die Abarbeitung des Fernspeicherungsbefehls er­ klä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 gespei­ chert. Dieser Befehl ist ein nichtprivilegierter Befehl weswegen die Privilegbefehlsausführungsentscheidungsschaltung 522 kein Ausgangssignal erzeugt. Der Befehlsdekoder 513 de­ kodiert den Betriebskode, wie er im Feld OP des Befehlsregi­ sters 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 Se­ rie von Abläufen gestartet.
Erste Überprüfung
Der Wert für den Pfad, wie er im ersten Operanden gespei­ chert wird, und der Wert, wie er im Pfadtabellenbasisregi­ ster 514 gespeichert ist, werden durch den Addierer 516 zu­ sammengezä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 ausge­ geben wird, nachdem sie ein Signal über die Leitung L3 em­ pfangen 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 Pfadtabel­ lenlä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ül­ tig ist, erzeugt die Entscheidungsschaltung 523 ein Aus­ gangssignal für die Ausführungssteuerschaltung 520. Der Un­ gültigkeitsfall liegt dann vor, wenn ein Signal mindestens auf einer der Leitungen L4 und L12 als Ergebnis der Ausfüh­ rung des Befehls ausgegeben wurde.
Vorstehendes betrifft die erste Überprüfung. Nachdem die Ausführungssteuerschaltung 510 das Signal von der Zugriff­ ungü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 Zu­ stand der Sendesteuerschaltung 526 überprüft.
Wenn sich als Ergebnis der zweiten Überprüfung herausge­ stellt 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 Bedingungs­ kode 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 Fern­ speicherbefehl im Senderegister 534 gesetzte Wert völlig an das Netzwerk 509 übertragen wurde, findet der folgende Ab­ lauf 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 die­ ses 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 ge­ speicherten Pfad und die virtuelle Adresse, wie sie im drit­ ten Operanden gespeichert ist, in die Adreßübersetzungs­ schaltung 999 eingegeben. Diese gibt die reelle Adresse für den Empfangsort der Datenübertragung aus. Das Senderegister 534c setzt den von der Adreßübersetzungsschaltung ausgegebe­ nen Wert im Feld RA auf Grundlage des Signals auf der Lei­ tung L3.
Setzen des Datenfeldes
Anschließend übersetzt die Datenübersetzungsschaltung 518 die virtuelle Adresse, wie sie im zweiten Operanden gespei­ chert 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 sen­ denden Daten an das Datenfeld des Senderegisters 534c aus. Dieses setzt die zu sendenden Daten im Datenfeld auf Grund­ lage 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 Bedingungs­ kode 0 im Bedingungskoderegister 519 gesetzt, wodurch der Ablauf für diesen Befehl beendet wird. Die Sendesteuerschal­ tung 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, daß die Über­ tragung an das Netzwerk nicht erfolgreich war, wird der Be­ fehl erneut ausgeführt.
Das Netzwerk 509 überträgt eine Nachricht an die Empfangs­ schaltung 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 vir­ tuellen Speichers 551, wodurch der Ablauf beendet wird.
Die Datenübertragung wird wie vorstehend beschrieben abge­ schlossen.
Gemäß dem vorstehenden Ausführungsbeispiel wird der Ablauf in der Empfangsschaltung des Clusters, in dem ein Datenem­ pfangsprozeß abläuft, vereinfacht. Daher wird der Betrieb des Lesens von Daten und des Speicherns von Daten im Haupt­ speicher im Vergleich zum Ablauf beim siebten Ausführungs­ beispiel schneller, wenn Datenübertragungen von vielen Pro­ zessen 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/Aus­ gabe-Einrichtung für Daten zugreift.
Wenn ein Prozessor gemäß dem Stand der Technik Zugriff auf eine externe Dateneinrichtung anfordert, bereitet das Be­ triebssystem 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 Ver­ fahren vorhanden, gemäß dem der Speicherbereich z. B. im re­ ellen Speicher gesichert wird oder bei dem der Speicherbe­ reich 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üh­ rungsbeispiel ein Verfahren an, bei dem kein Problem auf­ tritt, wenn der Speicherbereich, in den die externe Einrich­ tung 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 Empfangs­ abfangpuffer 553, wie im fünften Ausführungsbeispiel darge­ stellt, zwischen die externe Einrichtung und den Prozessor geschaltet.
Wenn der Prozessor auf eine externe Einrichtung zum Schrei­ ben 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 Be­ reich entspricht, werden an die externe Einrichtung übertra­ gen. Wenn diese den Ablauf zum Lesen, z. B. der Plattenein­ heit, gestartet hat und zu schreibende Daten vorbereitet hat, überträgt die externe Einrichtung die PTO, die virtuel­ le 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 ent­ spricht, 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 da­ gegen 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ßerzeugungsschal­ tung 537 in der Empfangsschaltung 508, und die PTO, die vir­ tuelle Adresse und die Daten werden in diesen Bereich einge­ schrieben. Dann erzeugt die Empfangsschaltung einen Inter­ rupt 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 be­ setzt die externe Einrichtung selbst dann keinen Speicherbe­ reich, der für diese externe Einrichtung während ihrer An­ sprechzeit vorgegeben ist, wenn die Betriebsgeschwindigkeit der externen Einrichtung langsamer ist als die Betriebsge­ schwindigkeit 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 Nutzerpro­ zessen stattfindet, wenn Daten vom virtuellen Raum des Nut­ zerprozesses 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ß nicht erforderliche Änderungen im virtuellen Raum des Nutzerprozesses erforder­ lich sind, die nicht in Zusammenhang mit der Datenübertra­ gung stehen.

Claims (8)

1. Intraprozessorkommunikationsverfahren in einem Paral­ lelprozessorsystem mit mehreren Clustern, von denen jeder mindestens einen Prozessor (1) und einen von diesem minde­ stens einen Prozessor zu nutzenden Hauptspeicher (2) auf­ weist, und mit einem Netzwerk (4) zum Verbinden der mehreren Cluster, wobei mindestens ein Prozeß mit mindestens einem zugeordneten virtuellen Raum innerhalb jedes der Cluster ausgeführt wird, unter Steuerung durch ein Betriebssystem, das jedem der Cluster zugeordnet ist, welches Verfahren durch folgende Schritte gekennzeichnet ist:
  • - Sicherstellen eines im Hauptspeicher residenten reellen Kommunikationsbereichs (13) innerhalb jedes Clusters für je­ den dem Cluster zugeordneten Prozeß, welcher reelle Kommunikationsbereich in einen virtuellen Kommunikations­ bereich (11) innerhalb des virtuellen Raums abgebildet wird, der jedem dieser Prozesse zugeordnet ist; und
  • - Senden zu übertragender Daten von einem reellen Kommunika­ tionsbereich (13), der einem Übertragungsursprungsprozeß zu­ geordnet ist, wie er einem der Cluster zugeordnet ist, an einen reellen Kommunikationsbereich (13), wie er einem Über­ tragungsempfangsprozeß zugeordnet ist, der einem anderen der Cluster zugeordnet ist.
2. Intraprozessorkommunikationsverfahren in einem Paral­ lelprozessorsystem mit mehreren Clustern, von denen jeder mindestens einen Prozessor (1) und einen von diesem minde­ stens einen Prozessor zu nutzenden Hauptspeicher (2) auf­ weist, und mit einem Netzwerk (4) zum Verbinden der mehreren Cluster, wobei mindestens ein Prozeß mit mindestens einem zugeordneten virtuellen Raum innerhalb jedes der Cluster ausgeführt wird, unter Steuerung durch ein Betriebssystem, das jedem der Cluster zugeordnet ist, welches Verfahren durch folgende Schritte gekennzeichnet ist:
  • - Sicherstellen eines im Hauptspeicher residenten reellen Kommunikationsbereichs (13) innerhalb jedes Clusters für je­ den dem Cluster zugeordneten Prozeß, welcher reelle Kommunikationsbereich in einen virtuellen Kommunikations­ bereich (11) innerhalb des virtuellen Raums abgebildet wird, der jedem dieser Prozesse zugeordnet ist;
  • - Bestimmen innerhalb eines der Cluster (eines Sendeur­ sprungsclusters), dem ein Prozeß (ein Übertragungsursprungs­ prozeß) zugeordnet ist, der das Übertragen von Daten anfor­ dert, von Ortsinformation, die sich auf eine Datenspeicher­ position innerhalb eines reellen Kommunikationsbereichs be­ zieht, der einem Prozeß (einem Übertragungsempfangsprozeß) zugeordnet ist, wie er einem anderen der Cluster (einem Übertragungsempfangscluster) zugeordnet ist, auf eine Über­ tragungsanforderung hin, wie sie durch den Übertragungsur­ sprungsprozeß ausgegeben wird;
  • - Senden, vom Übertragungsursprungscluster an das Übertra­ gungsempfangscluster, der bestimmten Ortsinformation zusam­ men mit Übertragungsdaten, die durch den Übertragungsur­ sprungsprozeß festgelegt wurden, und die in einem reellen Kommunikationsbereich bestehen, wie er dem Übertragungsur­ sprungsprozeß zugeordnet ist; und
  • - Einschreiben der zu übertragenden Daten in eine Position, wie sie durch die Positionsinformation im reellen Kommunika­ tionsbereich bestimmt wird, der dem Übertragungsempfangspro­ zeß zugeordnet ist, ohne daß hierzu das Betriebssystem be­ nutzt wird, das den Übertragungsempfangsprozeß steuert (Fig. 1).
3. Intraprozessorkommunikationsverfahren in einem Paral­ lelprozessorsystem mit mehreren Clustern, von denen jedes mindestens einen Prozessor (501, 502), der unabhängig arbei­ ten kann und einen Hauptspeicher (5) aufweist, der von der Prozessoranordnung mit dem mindestens einen Prozessor ge­ meinsam genutzt wird, und mit einem Netzwerk (509) zum Ver­ binden der mehreren Cluster, mit mindestens einem virtuellen Raum, der jedem der mehreren Cluster zugeordnet ist, und mit mindestens einem Prozeß, der unter Nutzung des virtuellen Raums unter Steuerung durch ein Betriebssystem ausgeführt wird, welches Verfahren durch folgende Schritte gekennzeich­ net ist:
  • - Lesen von Daten, die von einem Prozeß (einem Übertragungs­ ursprungsprozeß), der in einem der Cluster (einem Übertra­ gungsursprungscluster) ausgeführt wird, die an einen anderen Prozeß (einen Übertragungsempfangsprozeß) zu übertragen sind, der einem anderen der Cluster (einem Übertragungsem­ pfangscluster) zugeordnet ist, aus einer Position innerhalb eines Hauptspeichers des Übertragungsursprungsclusters, die einer Position für Sendedaten innerhalb eines virtuellen Raums zugeordnet ist, wie er vom Übertragungsursprungsprozeß verwendet wird, ohne daß hierbei ein Betriebssystem verwen­ det wird, das den Übertragungsursprungsprozeß steuert;
  • - Senden der gelesenen Daten und der relevanten Information an den Übertragungsempfangsprozeß vom Übertragungsursprungs­ cluster an das Übertragungsempfangscluster;
  • - Bestimmen einer Empfangsdatenspeicherposition innerhalb des Übertragungsempfangsclusters, nach dem Empfangen der Da­ ten, innerhalb eines Hauptspeichers des Übertragungsem­ pfangsclusters, die einer Position zugeordnet wurde, die für empfangene Daten innerhalb eines virtuellen Raums geschaffen wurde, wie er vom Übertragungsempfangsprozeß verwendet wird, der aufgrund der relevanten Information bestimmt wird; und
  • - Einschreiben der übertragenen Daten in die bestimmte Em­ pfangsdatenspeicherposition, ohne daß hierzu ein Betriebssy­ stem verwendet wird, das den Übertragungsempfangsprozeß steuert (Fig. 17).
4. Intraprozessorkommunikationsverfahren in einem Paral­ lelprozessorsystem mit mehreren Clustern, von denen jedes mindestens einen Prozessor (501, 502), der unabhängig arbei­ ten kann und einen Hauptspeicher (505) aufweist, der von der Prozessoranordnung mit dem mindestens einen Prozessor ge­ meinsam genutzt wird, und mit einem Netzwerk (509) zum Ver­ binden der mehreren Cluster, mit mindestens einem virtuellen Raum, der jedem der mehreren Cluster zugeordnet ist, und mit mindestens einem Prozeß, der unter Nutzung des virtuellen Raums unter Steuerung durch ein Betriebssystem ausgeführt wird, welches Verfahren durch folgende Schritte gekennzeich­ net ist:
  • - Lesen von Daten, die von einem Prozeß (einem Übertragungs­ ursprungsprozeß), der in einem der Cluster (einem Übertra­ gungsursprungscluster) ausgeführt wird, die an einen anderen Prozeß (einen Übertragungsempfangsprozeß) zu übertragen sind, der einem anderen der Cluster (einem Übertragungsem­ pfangscluster) zugeordnet ist, aus einer Position innerhalb eines Hauptspeichers des Übertragungsursprungsclusters, die einer Position für Sendedaten innerhalb eines virtuellen Raums zugeordnet ist, wie er vom Übertragungsursprungsprozeß verwendet wird, ohne daß hierbei ein Betriebssystem verwen­ det wird, das den Übertragungsursprungsprozeß steuert;
  • - Senden der gelesenen Daten und der relevanten Information an den Übertragungsempfangsprozeß vom Übertragungsursprungs­ cluster an das Übertragungsempfangscluster, ohne daß hierzu das Betriebssystem des Übertragungsursprungsclusters verwen­ det wird (Fig. 17).
5. Parallelprozessorsystem mit:
  • - mehreren Clustern, von denen jeder mindestens einen Pro­ zessor (1) und einen Hauptspeicher (2) aufweist, der von dem mindestens einen Prozessor (1) zu benutzen ist; und
  • - ein Netzwerk (4) zum Verbinden der mehreren Cluster;
wobei mindestens ein Prozeß mit mindestens einem zugeord­ neten virtuellen Raum in jedem der Cluster unter Steuerung durch ein Betriebssystem ausgeführt wird, dadurch gekennzeichnet, daß jeder der Cluster folgendes auf­ weist:
  • - einen reellen Kommunikationsbereich (13), der an einer vorgegebenen Position innerhalb eines virtuellen Raums ange­ ordnet ist, wie er von jedem Prozeß verwendet wird und für jeden Prozeß vorhanden ist, der jedem der Cluster zugeordnet ist, und in einem Hauptspeicher innerhalb jedes Clusters vorhanden ist, wobei der reelle Kommunikationsbereich in einen virtuellen Kommunikationsbereich (11) mit vorgegebener Größe abgebildet wird und unter einer vorgegebenen Position innerhalb eines von jedem Prozeß verwendeten virtuellen Be­ reichs angeordnet ist;
  • - eine Einrichtung (110) zum Lesen erster Übertragungsdaten, die durch einen ersten Übertragungsursprungsprozeß festge­ legt werden, der von jedem der Cluster ausgeführt wird, aus einem ersten Kommunikationsbereich, der für den ersten Über­ tragungsursprungsprozeß vorhanden ist;
  • - eine Einrichtung (28) zum Senden der gelesenen ersten Übertragungsdaten an einen ersten Übertragungsempfangsclu­ ster, der vom ersten Übertragungsursprungsprozeß über das Netzwerk angesprochen wird; und
  • - eine Einrichtung (42, 120) zum Empfangen zweiter Übertra­ gungsdaten, die von einem zweiten Übertragungsursprungspro­ zeß gesendet wurden, der durch einen anderen Cluster ausge­ führt wird, und zum Einschreiben der empfangenen zweiten Übertragungsdaten in einen zweiten reellen Kommunikationsbe­ reich, der dem zweiten Übertragungsempfangsprozeß zugeordnet ist, wie er durch jeden der Cluster ausgeführt wird (Fig. 1).
6. Parallelprozessorsystem mit
  • - mehreren Clustern, von denen jeder mindestens einen Pro­ zessor (501, 502) und einen Hauptspeicher (505) aufweist, der von diesem mindestens einen Prozessor zu nutzen ist;
  • - und einem Netzwerk (509) zum Verbinden der mehreren Clu­ ster;
dadurch gekennzeichnet, daß jeder Cluster folgendes auf­ weist:
  • - eine Übersetzungseinrichtung (530) die zugeordnet zu jedem ersten Prozeß vorhanden ist, wie er von jedem Cluster ausge­ führt wird, und die auf einen Datenübertragungsbefehl an­ spricht, wie er von jedem ersten Prozeß ausgegeben wird, um einen ersten Prozeßidentifizierkode zu übersetzen, wie er durch den Befehl vorgegeben wird, um innerhalb des Systems einen zweiten Prozeß zu identifizieren, bei dem es sich um einen Übertragungsempfangsort für Übertragungsdaten handelt, in einen Satz eines Clusteridentifizierkodes, der einem an­ deren Cluster zugeordnet ist, in dem der zweite Prozeß exi­ stiert, und 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übertragungsbe­ fehl zum Übertragen des Clusteridentifizierkodes und des In­ nerhalbclusterprozeßidentifizierkodes an das Netzwerk an­ spricht, wie sie von der Übersetzungseinrichtung erhalten werden, zusammen mit den Übertragungsdaten (Fig. 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
JP03-056469 1991-03-20
JP05646991A JP3169624B2 (ja) 1991-03-20 1991-03-20 プロセッサ間通信方法およびそのための並列プロセッサ
JP03-241094 1991-09-20
JP24109491A JP3375649B2 (ja) 1991-09-20 1991-09-20 並列計算機

Publications (2)

Publication Number Publication Date
DE4208924A1 true DE4208924A1 (de) 1992-09-24
DE4208924B4 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
US6826763B1 (en) 1998-12-11 2004-11-30 Microsoft Corporation Accelerating a distributed component architecture over a network using a direct marshaling
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
US7353196B1 (en) 1999-10-29 2008-04-01 Computer Sciences Corporation Configuring dynamic database packageset switching 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
US7356541B1 (en) 1999-10-29 2008-04-08 Computer Sciences Corporation Processing business data using user-configured keys
US7571171B1 (en) 1999-10-29 2009-08-04 Computer Sciences Corporation Smart trigger for use in processing business transactions
US7693844B1 (en) 1999-10-29 2010-04-06 Computer Sciences Corporation Configuring processing relationships among entities of an organization
US7546304B1 (en) 1999-10-29 2009-06-09 Computer Sciences Corporation Configuring keys for use in processing business data
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
US7430515B1 (en) 2000-06-23 2008-09-30 Computer Sciences Corporation System and method for externalization of formulas for assessing damages
US7418400B1 (en) 2000-06-23 2008-08-26 Computer Sciences Corporation Internet-enabled system and method 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
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
US7343307B1 (en) 2000-06-23 2008-03-11 Computer Sciences Corporation Dynamic help method and system for an insurance claims processing system
US7571107B1 (en) 2000-06-23 2009-08-04 Computer Sciences Corporation System and method for externalization of rules for assessing damages
WO2002023875A1 (en) * 2000-09-15 2002-03-21 Wonderware Corporation A method and system for remote configuration of process data access servers
US7904318B2 (en) * 2000-10-02 2011-03-08 Computer Sciences Corporation Computerized method and system of determining right of way and liability for an accident
US7963899B2 (en) * 2001-07-13 2011-06-21 The Proctor & Gamble Company Continuous in-line pleating apparatus and process
CN1282924C (zh) * 2001-10-17 2006-11-01 Bep技术公司 通过操作系统进行通信的方法
CA2471457C (en) * 2001-12-24 2011-08-02 Digimarc Id Systems, Llc Covert variable information on id documents and methods of making same
US7694887B2 (en) * 2001-12-24 2010-04-13 L-1 Secure Credentialing, Inc. Optically variable personalized indicia for identification documents
EP1467834A4 (de) 2001-12-24 2005-04-06 Digimarc Id Systems Llc Lasergeätzte sicherheitsmerkmale zur identifikation von dokumenten und herstellungsverfahren dafür
WO2003088144A2 (en) * 2002-04-09 2003-10-23 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
US20040054558A1 (en) * 2002-09-09 2004-03-18 Stefan Wahlbin Computerized method and system for determining claimant status in premises liability for an accident
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
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
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
US7451148B2 (en) * 2002-10-31 2008-11-11 Computer Sciences Corporation Method of modifying a business rule while tracking the modifications
US20040088199A1 (en) * 2002-10-31 2004-05-06 Childress Allen B. Method of forming a business rule
US20040088195A1 (en) * 2002-10-31 2004-05-06 Childress Allen B. Method of modifying a business rule
US7689442B2 (en) * 2002-10-31 2010-03-30 Computer Science Corporation Method of generating a graphical display of a business rule with a translation
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
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
US20040102984A1 (en) * 2002-11-27 2004-05-27 Stefan Wahlbin Computerized method and system for estimating liability using recorded vehicle data
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
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
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
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
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
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
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
DE602004030434D1 (de) 2003-04-16 2011-01-20 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 画像処理装置、画像処理方法及び画像処理プログラム
US8010390B2 (en) * 2007-06-04 2011-08-30 Computer Sciences Corporation Claims processing of information requirements
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
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

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0326164B1 (de) * 1988-01-29 1997-07-16 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
US5341484A (en) * 1988-11-02 1994-08-23 Hitachi, Ltd. Virtual machine system having an extended storage
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

Also Published As

Publication number Publication date
DE4208924B4 (de) 2007-01-11
US5386566A (en) 1995-01-31

Similar Documents

Publication Publication Date Title
DE4208924A1 (de) Verfahren zur kommunikation zwischen prozessoren und parallelverarbeitungscomputer hierfuer
DE3114961C2 (de)
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
DE3127349C2 (de)
DE112013006063B4 (de) Funktionsübernahme für einen Datenübertragungskanal in einem Netzwerk mit Hochleistungsdatenverarbeitung
DE69836778T2 (de) Vorrichtung und Verfahren zur Fernpufferspeicherzuordnung und Verwaltung für Nachrichtenübertragung zwischen Netzknoten
DE69433293T2 (de) Netzwerkübertragungsverfahren für Systeme mit virtuellem Speicher
DE69133257T2 (de) Vorrichtung und verfahren zur schnellen paketvermittlung
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE602005003987T2 (de) Verfahren zur Programmierung einer System auf Chip DMA Steuerung, sowie ein System auf Chip dafür.
DE69533230T2 (de) Verfahren und vorrichtung zur verbesserung der fehlertoleranz eines netzwerkes
DE2350884C2 (de) Adreßumsetzungseinheit
DE69628631T2 (de) Dateneingangs/-ausgangsvorrichtung durch Referenzierung zwischen zentralen Verarbeitungseinheiten und Ein-/Ausgabevorrichtungen
DE602004012492T2 (de) DMA-Steuerung mit Busbesetzungszeit-Beschränkung sowie DMA-Parametersätze für mehrere logische Prozessoren
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
EP0006164B1 (de) Multiprozessorsystem mit gemeinsam benutzbaren Speichern
DE3642324C2 (de) Multiprozessoranlage mit Prozessor-Zugriffssteuerung
DE3741850A1 (de) Ausfuehrungseinheit fuer einen i/o-prozessor
DE112007001466T5 (de) Behandlung von Adressübersetzungen und Ausnahmen einer Heterogenen Ressource
DE3114934A1 (de) Zentrales subsystem fuer eine datenverarbeitungsanlage
DE4319912A1 (de) Echtzeitdaten-Abbildungsnetzwerksystem und Verfahren zum Betreiben desselben
DE2847216A1 (de) Datenverarbeitungssystem mit mehrprogrammbetrieb
DE60025788T2 (de) Flexibles Mehrzweck-Ein/Ausgabesystem
DE112021003094T5 (de) System und verfahren zum planen von gemeinsam nutzbaren pcie-endpunktvorrichtungen
DE102013209643A1 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens

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