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