DE4208924A1 - Verfahren zur kommunikation zwischen prozessoren und parallelverarbeitungscomputer hierfuer - Google Patents
Verfahren zur kommunikation zwischen prozessoren und parallelverarbeitungscomputer hierfuerInfo
- Publication number
- DE4208924A1 DE4208924A1 DE4208924A DE4208924A DE4208924A1 DE 4208924 A1 DE4208924 A1 DE 4208924A1 DE 4208924 A DE4208924 A DE 4208924A DE 4208924 A DE4208924 A DE 4208924A DE 4208924 A1 DE4208924 A1 DE 4208924A1
- Authority
- DE
- Germany
- Prior art keywords
- transmission
- data
- cluster
- clusters
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Description
Die Erfindung betrifft ein Verfahren zur Datenübertragung
zwischen Prozessoren in einem Parallelprozessor mit dem
Ziel, Hochgeschwindigkeitsberechnung zu erreichen, insbeson
dere in einem Parallelprozessor vom MIMD-Typ mit verteilten
Speichern.
Grob gesprochen bestehen drei Typen von Techniken zum Erzie
len von Hochgeschwindigkeitsverarbeitung unter Nutzung von
mehreren Prozessoren.
Der erste Typ von Techniken ist ein solcher, bei dem ein Pa
rallelprozessor dadurch strukturiert wird, daß mindestens
Dutzende von Prozessoren verwendet werden, um eine extreme
Verbesserung in der Wirksamkeit der Abläufe im Vergleich mit
einem Prozessor mit nur einem Prozessor zu erzielen. Bedin
gung ist bei diesem Typ der Technik, daß eine große Anzahl
von Prozessoren verwendet wird. Daher ist es wichtig, daß
jeder Prozessor verringerte Größe und eventuell begrenzte
Funktion im Vergleich zur Funktion eines Allzweckcomputers
aufweist. Z. B. wird bei einem kompakten Prozessor des er
sten Typs von Techniken der Adreßübersetzungsmechanismus zum
Realisieren eines virtuellen Speichers weggelassen. Es be
standen Techniken von Parallelprozessoren mit einer großen
Anzahl von Prozessoren, gemäß denen eine Mehrzahl von Pro
zessen durch einen Prozessor ausgeführt werden kann, wie
dies z. B. in EP-A-02 55 857 beschrieben ist. Jedoch ist
keiner der Prozessoren gemäß diesen Techniken mit einer
Funktion zum Realisieren eines virtuellen Speichers ausge
stattet.
Andererseits ist als zweiter Typ von Techniken eine Einrich
tung eines Parallelverarbeitungscomputers mit mehreren Ver
arbeitungselementen bekannt, von denen jedes einen lokalen
Speicher aufweist, gemäß welcher Technik Daten in einen lo
kalen Speicher von einem anderen Verarbeitungselement ein
geschrieben werden können. Wenn ein gewisses Verarbeitungs
element Daten unter Nutzung eines lokalen Speichers eines
anderen Verarbeitungselementes überträgt, werden Markierun
gen an einem Teil oder der Gesamtheit der Wörter im lokalen
Speicher angehängt, und diese Markierungen zeigen an, ob der
Inhalt der Wörter gültig ist oder nicht. Dieser Typ von Vor
richtung ist z. B. in EP-A-03 26 164 beschrieben.
Der dritte Typ von Techniken ist eine sogenannte Verarbei
tungstechnik für verteilte Daten zum Verbinden einiger weni
ger Allgemeinzweckcomputer mit einem LAN-System oder der
gleichen. Z. B. entspricht die Verarbeitungstechnik mit ver
teilten Daten in der Workstation mit einem UNIX-Betriebs
system diesem dritten Typ von Technik, wie sie von UNIX
System Laboratories Ltd. entwickelt und derzeit lizensiert
wird. Bei diesem Typ von Technik besteht die Bedingung, daß
Allgemeinzweckcomputer verwendet werden. Jeder Prozessor
weist eine Struktur wie ein Allgemeinzweckcomputer auf, und
jedem dieser Allgemeinzweckcomputer ist ein Adapter für die
Kommunikation hinzugefügt. Jeder Prozessor wird mit einem
Allgemeinzweck-Betriebssystem geladen, und der Kommunika
tionsadapter wird als ein Hilfsmittel einschließlich Plat
teneingabe/ausgabeeinheiten gehandhabt, die durch das Be
triebssystem verwaltet werden. Daher wird Kommunikation zwi
schen den Prozessoren über einen Systemaufruf ausgeführt.
Das heißt, daß es dann, wenn ein Prozeß zum Ausführen eines
von einem Nutzer erstellten Programms beginnt, Daten an
einen anderen Prozeß zu senden, erforderlich ist, das Be
triebssystemprogramm aufzurufen und es abzuarbeiten.
Fig. 30 veranschaulicht den Betrieb bei Datenübertragung ge
mäß dem dritten Typ der bekannten Technik. Derartiges ist
z. B. von S. L. Leffler et al. in "The Design and Implemen
tation of the 4. 3 BSD UNIX Operating System", Addison-Wesley
Publishing Company, S. 384-386 beschrieben. Zunächst führt
der Prozeß zum Übertragen von Daten einen Systemaufruf für
die Datenübertragung aus. Wenn das Betriebssystem den Sy
stemaufruf erhalten hat, kopiert es die zu übertragenden Da
ten, zusammen mit Parametern, die für den Prozeß des Über
tragungsempfangsorts relevant sind, an den Puffer im Be
triebssystem. Anschließend überprüft der Betriebsprozessor
die Parameter, setzt dieselben, wie auch die Daten für die
Sendeschaltung aus dem Pufferbereich im Betriebssystem und
gibt die Anweisung zur Datenübertragung an die Sendeschal
tung.
Wenn die Sendeschaltung die Daten gesendet hat und diese in
der Empfangsschaltung des die Daten empfangenden Prozessors
angekommen sind, speichert die Empfangsschaltung die Parame
ter und die Daten im Puffer innerhalb der Empfangsschaltung
und gibt dem Betriebssystem im Empfangsprozessor eine Mit
teilung. Nachdem das Betriebssystem im empfangenden Prozes
sor diese Mitteilung empfangen hat, erstellt sie eine Kopie
der Parameter und der Daten aus dem Puffer innerhalb der Em
pfangsschaltung in den Puffer innerhalb des Betriebssystems.
Das Betriebssystem untersucht dann die Parameter und die
Daten. Wenn die Untersuchung ergibt, daß kein Problem be
steht, überträgt das Betriebssystem ein Bestätigungssignal
(ACK) an den Übertragungsursprungsprozessor. Wenn dieser das
Signal ACK empfangen hat, gibt er den Pufferbereich inner
halb des Betriebssystems frei, der sichergestellt wurde als
eine Anfrage für das Übertragen der Parameter und der Daten
erfolgte, was zur Übertragung des ACK-Signals vom Betriebs
system führte.
Wenn der Prozeß, der die Daten zu empfangen beginnt, einen
Systemaufruf zum Empfangen der Daten ausgeführt hat, über
prüft das Betriebssystem im empfangenden Prozessor, ob alle
erforderlichen Daten bereits angekommen sind. Wenn dies der
Fall ist, erstellt das Betriebssystem eine Kopie der Daten
aus dem diese Daten speichernden Bereich innerhalb des Be
triebssystems in den Bereich innerhalb des Prozesses, der
den Systemaufruf ausgeführt hat. Wenn die Daten noch nicht
angekommen sind, wartet das Betriebssystem auf den Empfang
der Daten und führt den vorstehenden Ablauf zum Empfangen
der Daten nach dem Empfangen der Daten aus.
Gemäß dem oben genannten ersten Typ von bekannten Techniken
besteht eine Begrenzung in bezug auf die Funktion jedes Pro
zessors, und der Nutzer ist darauf angewiesen, ein Programm
zu erstellen, das die Hardwareeigenschaften ausreichend be
rücksichtigt, wie die Speicherkapazität jedes Prozessors in
nerhalb der begrenzten Funktion jedes Prozessors.
Dagegen besteht beim vorstehend genannten zweiten Typ von
bekannten Techniken kein Overhead in bezug auf das oben ge
nannte Kopieren von Daten. Wenn jedoch mehrere Prozesse in
einem Cluster abzuarbeiten sind und wenn ein Übertragungs
prozeß in einem anderen Cluster darangeht, Daten an einen
besonderen Empfangsprozeß innerhalb der mehreren Prozesse
über einen lokalen Speicher zu senden, besteht die Gefahr,
daß der Übertragungsprozeß die Daten des gleichzeitig ablau
fenden Prozesses so durch den Empfangsprozeß im selben Clu
ster ändern kann, daß diese Daten so geändert werden, daß
sie ungültig werden.
Beim vorstehend beschriebenen dritten Typ bekannter Techni
ken arbeitet ein Betriebssystem in jedem Cluster in solcher
Weise, daß mehrere Prozesse gleichzeitig in jedem Cluster
ablaufen können. Daher ist es selbst dann, wenn die Anzahl
von Nutzerprozessen, die durch das durch den Parallelverar
beitungscomputer auszuführende Programm erzeugt werden,
nicht mit der Anzahl von Clustern übereinstimmt, die der
Ausführung dieses Programms zugeordnet sind, möglich, die
ses Programm dadurch auszuführen, daß ein virtueller Raum
zugeordnet wird, der jedem der Nutzerprozesse entspricht.
Dementsprechend bedeutet Datenübertragung zwischen den Nut
zerprozessen tatsächlich die Übertragung von Daten in den
virtuellen Raum entsprechend dem Übertragungsursprungsprozeß
an den virtuellen Raum, der dem Übertragungsempfangsprozeß
entspricht. Selbst wenn ein Fehler im Nutzerprogramm vor
liegt, kann der Schutzmechanismus oder dergleichen des Be
triebssystems eine Steuerung vornehmen, die zu einer unver
nünftigen Zerstörung von Daten des Prozesses führt, die für
das Programm irrelevant sind.
Um Daten mit hoher Geschwindigkeit von einem bestimmten Clu
ster an eine externe Einheit des Clusters zu senden, wie
z. B. ein Netzwerk zum Herstellen von Verbindungen zwischen
den Clustern, wird normalerweise eine DMA-Übertragung ver
wendet. DMA-Übertragung wird dadurch realisiert, daß ein so
genannter DMA-Controller verwendet wird, der so strukturiert
ist, daß er dauernd hardwaremäßig eine Speicheradresse er
zeugt und dauernd Daten aus dem Speicher liest oder in die
sen einschreibt. Wenn jedoch Daten aus dem virtuellen Raum
eines Übertragungsursprungsprozesses mit Hilfe des DMA-Con
trollers an das Netzwerk zu übertragen sind, besteht keine
Garantie dahingehend, daß die aus dem virtuellen Speicher zu
übertragenden Daten im aktuellen Speicher des Clusters exi
stieren. Um zu garantieren, daß die zu übertragenden Daten
im reellen Speicher existieren, ist es unter Umständen er
forderlich, ein Seiteneinschreiben vorzunehmen und dann die
Daten an den DMA-Controller zu übertragen. Das Seitenein
schreiben ist eine Funktion, die nur einem Betriebssystem
erlaubt ist, wodurch das Betriebssystem unvermeidlicherweise
in die Datenübertragung gemäß der bekannten Technik einzu
spannen ist.
Selbst wenn kontinuierliche Datenübertragung durch den DMA-
Controller nach der oben angegebenen Vorbereitung ausgeführt
wurde, besteht keine Garantie dahingehend, daß ein Bereich
zum Speichern der übertragenen Daten im virtuellen Raum für
den Übertragungsempfangsprozeß dem reellen Speicher des
Übertragungsempfangsclusters zugeordnet wurde. Daher weist
das Betriebssystem gemäß der bekannten Technik im Übertra
gungsempfangscluster in seinem inneren einen Puffer (einen
Empfangspuffer) auf, der im reellen Speicher vorhanden ist,
um die übertragenen Daten zu speichern. Das Betriebssystem
speichert die empfangenen Daten im Empfangspuffer, führt an
schließend ein Seiteneinschreiben aus, falls erforderlich,
und überträgt dann die Daten an den Datenspeicherbereich im
virtuellen Raum, der dem Übertragungsempfangsprozeß ent
spricht. In diesem Fall muß die vorstehend genannte Seiten
einschreibung unter Nutzung des Betriebssystems ausgeführt
werden.
Selbst wenn der vorstehend genannte Empfangspuffer z. B. im
Übertragungsempfangscluster vorhanden ist, besteht für den
Übertragungsempfangscluster keine Möglichkeit dahingehend,
daß er im voraus weiß, wann der Übertragungsursprungscluster
Daten an den Übertragungsempfangscluster senden wird und wie
groß der Umfang dieser Daten sein wird. Dementsprechend ist
es nicht möglich, vorab den erforderlichen Bereich im Em
pfangspuffer sicherzustellen. Wenn das Volumen der übertra
genen Daten größer ist als zuvor abgeschätzt und die sicher
gestellte Größe des Empfangspuffers überschreitet, empfängt
daher das Übertragungsempfangscluster die vom Datenur
sprungscluster gesendeten Daten nicht, sondern die Daten
werden vom Übertragungsursprungscluster an den Übertragungs
empfangscluster neu gesendet, nachdem ein neuer Empfangs
puffer erforderlicher Größe im Übertragungsempfangscluster
sichergestellt wurde.
Um die oben genannten Neuübertragung gemäß der bekannten
Technik zu ermöglichen, weist das Betriebssystem des Über
tragungsursprungsclusters in seinem Inneren einen Übertra
gungspuffer auf, um in ihm die zu übertragenden Daten zu
speichern, bis sichergestellt ist, daß die zu übertragenden
Daten sicher vom Übertragungsempfangscluster empfangen wur
den.
Wenn der Übertragungspuffer im reellen Speicher unterge
bracht ist, können die zu sendenden Daten, wie sie im Über
tragungspuffer gespeichert sind, kontinuierlich durch den
DMA-Controller an das Netzwerk übertragen werden. Dadurch
führt bei der bekannten Technik der Übertragungsempfangscluster
beim Übertragen von Daten im virtuellen Raum ent
sprechend dem Übertragungsursprungsprozeß an den Übertra
gungsempfangsprozeß die Seiteneinschreibung aus, falls er
forderlich, wie oben beschrieben, überträgt die zu sendenden
Daten, wie sie im virtuellen Raum gespeichert sind, an den
Übertragungspuffer im reellen Speicher und überträgt dann
die im Übertragungspuffer gespeicherten Daten durch den DMA-
Controller an das Netzwerk.
Wie vorstehend beschrieben, laufen gemäß der bekannten Tech
nik dann, wenn Daten vom virtuellen Raum entsprechend dem
Übertragungsursprungsprozeß an den virtuellen Raum entspre
chend dem Übertragungsempfangsprozeß zu senden sind, diese
Daten durch den Übertragungspuffer im Betriebssystem des
Übertragungsursprungsclusters, durch das Betriebssystem, zum
Empfangspuffer im Betriebssystem des Übertragungsempfangs
clusters, über das Betriebssystem. Das Erstellen einer Kopie
der Daten in den Puffer hat einen Overhead zur Folge, der
beinahe proportional zur Länge der zu übertragenden Daten
ist. Dieser Overhead erniedrigt den Wirkungsgrad eines Pa
rallelverarbeitungscomputers in extremer Weise.
Der Erfindung liegt die Aufgabe zugrunde, den Overhead zu
erniedrigen, wie er durch Nutzung des Betriebssystems ent
steht, wenn mehrere Prozesse im selben Cluster arbeiten und
ein gewisser Cluster Daten an einen Prozeß überträgt, der in
einem anderen Cluster abgearbeitet wird.
In einem erfindungsgemäßen Parallelprozessor mit mehreren
Clustern, von denen jeder mindestens einen unabhängig be
treibbaren Prozessor und einen Speicher aufweist, in den
sich die Prozessoranordnung mit dem mindestens einen Prozes
sor teilt, und mit einem Netzwerk zum Verbinden der mehreren
Cluster, wobei mindestens ein virtueller Raum jedem der meh
reren Cluster zugeordnet ist und mindestens ein Prozeß im
virtuellen Raum unter Steuerung des Betriebssystems ausge
führt wird, wird die vorstehend genannte Aufgabe durch eine
solche Anordnung gelöst, gemäß der ein Prozeß einen virtuel
len Kommunikationsbereich aufweist, der im Speicher inner
halb des Clusters resident ist und im virtuellen Raum ange
ordnet ist und bei der Daten, die von einem Prozeß (einem
Übertragungsursprungsprozeß), der gerade in einem gewissen
Cluster (einem Übertragungsursprungscluster) ausgeführt
wird, an einen anderen Prozeß (einen Übertragungsempfangs
prozeß) zu übertragen sind, der einem anderen Cluster (einem
Übertragungsempfangscluster) zugeordnet ist, aus einem reel
len Kommunikationsbereich gelesen werden, der dem Übertra
gungsursprungsprozeß zugeordnet ist, welcher Bereich inner
halb des Speichers des Übertragungsursprungsclusters resi
dent ist, wobei die gelesenen Daten vom Übertragungsur
sprungscluster in den Übertragungsempfangscluster übertragen
werden und die Daten in einen reellen Kommunikationsbereich
eingeschrieben werden, der dem Übertragungsempfangsprozeß
zugeordnet ist, der innerhalb des Speichers des Übertra
gungsempfangsprozesses resident ist.
Die Erfindung wird im folgenden anhand von durch Figuren
veranschaulichten Ausführungsbeispielen näher beschrieben.
Fig. 1 zeigt ein Aufbaudiagramm eines Parallelverarbeitungs-
Computers gemäß einem ersten Ausführungsbeispiel der Erfin
dung;
Fig. 2 ist ein Aufbaudiagramm einer Anforderungsauswahl
schaltung;
Fig. 3 ist ein Aufbaudiagramm einer Kommunikationsbereich
tabellenadreßerzeugungsschaltung;
Fig. 4 ist ein Strukturdiagramm einer Entscheidungsschal
tung;
Fig. 5 ist ein Strukturdiagramm einer Adreßerzeugungsschal
tung;
Fig. 6 ist ein Strukturdiagramm eines Kommunikationsbe
reichs;
Fig. 7 ist ein Strukturdiagramm eines Anforderungsbereichs;
Fig. 8 ist ein Strukturdiagramm einer Seitentabelle;
Fig. 9 ist ein Strukturdiagramm einer Kommunikationsbe
reichstabelle;
Fig. 10 ist ein Strukturdiagramm einer Anforderungstabelle;
Fig. 11 ist ein Diagramm, das den Datenübertragungsfluß zwi
schen den Prozessen im Parallelverarbeitungscomputer gemäß
dem ersten Ausführungsbeispiel der Erfindung zeigt;
Fig. 12 ist ein Aufbaudiagramm eines Parallelverarbeitungs
computers gemäß einem zweiten Ausführungsbeispiel der Erfin
dung;
Fig. 13 ist ein Diagramm, das den Datenübertragungsfluß zwi
schen Prozessen im Parallelverarbeitungscomputer gemäß dem
zweiten Ausführungsbeispiel der Erfindung zeigt;
Fig. 14 ist ein Aufbaudiagramm eines Parallelverarbeitungs
computers gemäß einem dritten Ausführungsbeispiel der Erfin
dung;
Fig. 15 ist ein Diagramm, das den Datenübertragungsfluß zwi
schen den Prozessen des Parallelverarbeitungscomputers gemäß
dem dritten Ausführungsbeispiel der Erfindung zeigt;
Fig. 16 ist ein Diagramm, das den Datenübertragungsablauf
zwischen den Prozessen eines Parallelverarbeitungscomputers
gemäß einem vierten Ausführungsbeispiel der Erfindung zeigt;
Fig. 17 ist ein Aufbaudiagramm eines Parallelprozessors ge
mäß einem fünften Ausführungsbeispiel der Erfindung;
Fig. 18 ist ein Diagramm, das den Eintrag in einer Pfadta
belle veranschaulicht, wie sie im Parallelprozessor von Fig.
17 verwendet wird, zum Übersetzen eines virtuellen Kommuni
kationspfades in einen physikalischen Kommunikationspfad;
Fig. 19 ist ein Diagramm, das Zusammenhangsangaben für einen
Prozeß veranschaulicht, wie er vom Parallelprozessor von
Fig. 17 auszuführen ist;
Fig. 20 ist ein Diagramm, das das Format eines BASE-Setzbe
fehls zeigt, wie er im Parallelprozessor von Fig. 17 zu ver
wenden ist;
Fig. 21 ist ein Diagramm, das das Format eines LEN-Setzbe
fehls zeigt, wie er im Parallelprozessor von Fig. 17 zu ver
wenden ist;
Fig. 22 ist ein Diagramm, das das Format eines Fernspeiche
rungsbefehls zeigt, wie er im Parallelprozessor von Fig. 17
zu verwenden ist;
Fig. 23 ist ein Diagramm, das die Funktion einer Einheit
zeigt, wenn ein Datenübertragungsbefehl, wie er im Parallel
prozessor von Fig. 17 zu verwenden ist, ausgeführt wurde;
Fig. 24 ist ein Aufbaudiagramm eines Parallelprozessors ge
mäß einem sechsten Ausführungsbeispiel der Erfindung;
Fig. 25 ist ein Diagramm, das das Format eines Fernspeiche
rungsvorbereitungsbefehls zeigt, wie er im Parallelprozessor
von Fig. 24 zu verwenden ist;
Fig. 26 ist ein Diagramm, das das Format eines Fernspeiche
rungsausführungsbefehles zeigt, wie er im Parallelprozessor
von Fig. 24 zu verwenden ist;
Fig. 27 ist ein Diagramm, das den Ablauf eines Datenübertra
gungsbefehls zeigt, wie er im Parallelprozessor von Fig. 24
zu verwenden ist;
Fig. 28 ist ein Aufbaudiagramm eines Parallelprozessors ge
mäß einem siebten Ausführungsbeispiel der Erfindung;
Fig. 29 ist ein Aufbaudiagramm eines Parallelprozessors ge
mäß einem achten Ausführungsbeispiel der Erfindung; und
Fig. 30 ist ein Diagramm zum Erläutern des Kommunikationsbe
triebs zwischen Prozessoren gemäß dem Stand der Technik.
Ein erstes Ausführungsbeispiel der Erfindung wird nun unter
Bezugnahme auf Fig. 1 beschrieben. Fig. 1 zeigt einen erfin
dungsgemäßen Parallelverarbeitungscomputer. Bei diesem Aus
führungsbeispiel sind mehrere Cluster 100 durch ein Netzwerk
4 miteinander verbunden. In Fig. 1 ist der Aufbau einer der
Cluster 100 gezeigt, während die Aufbauten für weitere Clu
ster nicht dargestellt sind. In Fig. 1 bezeichnet 1 eine
CPU, die dieselbe Struktur haben kann wie ein bekannter
Mikroprozessor. In Fig. 1 ist der Einfachheit halber nur
eine einzige CPU dargestellt, jedoch bildet jeder Cluster
100 einen eng gekoppelten Mikroprozessor aus mindestens zwei
CPUs. Die Erfindung arbeitet jedoch auch, wenn jeder Cluster
100 nur einen einzigen Prozessor aufweist. 2 bezeichnet
einen Speicher, der als Hauptspeicher des Clusters 100 ver
wendet wird. Zugriff zum Hauptspeicher 2 erfolgt über die
CPU 1 oder eine (nicht dargestellte) externe Einrichtung
über einen Bus 3, was mit Hilfe der bekannten Technik er
folgt. 4 bezeichnet ein Netzwerk zum Anschließen von Clu
stern 100. Wenn von einem Cluster die Adresse eines Übertra
gungsempfangsclusters festgelegt wurde, überträgt das Netz
werk 4 die Daten zu dem (nicht dargestellten) Übertragungs
empfangscluster mit dieser Adresse.
110 bezeichnet eine Sendendatenleseschaltung zum Lesen von
Daten, die vom Speicher 2 aus zu übertragen sind. 28 be
zeichnet eine Sendeschaltung zum Senden der gelesenen Sende
daten in Paketform über das Netzwerk 4. 42 bezeichnet eine
Schaltung zum Empfangen eines Pakets vom Netzwerk 4. 120 be
zeichnet eine Empfangsdatenschreibschaltung zum Einschreiben
der mit dem empfangenen Paket empfangenen Daten in den Spei
cher 2. 7 bezeichnet eine Speicherzugriffsschaltung zum Aus
führen eines Zugriffs auf den Speicher 2 zum Lesen zu sen
dender Daten oder-zum Einschreiben empfangener Daten.
In der CPU 1 wird ein Nutzerprozeß in derselben Weise ausge
führt wie ein solcher, der im UNIK-Betriebssystem ausgeführt
wird, das von UNIX System Laboratories Ltd., USA entwickelt
und lizensiert wird. Es existiert ein virtueller Raum, der
einem Nutzerprozeß entspricht. In Fig. 1 ist nur ein virtu
eller Raum 10 in der CPU 1 dargestellt, um die Beschreibung
zu vereinfachen. Ein virtueller Kommunikationsbereich 11 zum
Senden von Daten und zum Empfangen von Daten und ein virtu
eller Anforderungsbereich 12 für Information, die zu senden
den Daten hinzuzufügen ist, sind im virtuellen Raum 10 vor
handen.
Der Speicher 2 verfügt über einen reellen Kommunikationsbe
reich 13, in dem der virtuelle Kommunikationsbereich 11, wie
er jedem Nutzerprozeß entspricht, kartiert ist. Er verfügt
weiterhin über einen reellen Anforderungsbereich 14, in dem
der für jeden Nutzerprozeß vorhandene virtuelle Anforde
rungsbereich 12 kartiert ist. Weiterhin ist eine Seitenta
belle 15 für Adreßübersetzung für jeden Nutzerprozeß und
eine Kommunikationsbereichstabelle 16 vorhanden, um auf meh
rere Kommunikationsbereiche 13 in diesem Cluster zugreifen
zu können.
Gemäß dem vorliegenden Ausführungsbeispiel besteht eine sol
che Struktur, daß ein in einem bestimmten Cluster auszufüh
renden Nutzerprozeß zu sendende Daten in den reellen Kommu
nikationsbereich 13 innerhalb dieses Clusters einschreibt,
ohne daß hierzu das Betriebssystem tätig wird, das diesen
Cluster steuert, daß die Sendedatenlesesteuerung 110 die zu
sendenden Daten liest, ohne daß hierzu das Betriebssystem
arbeiten muß, daß die Empfangsdatenschreibschaltung 120 die
von einem anderen Cluster empfangenen Daten in den reellen
Kommunikationsbereich 13 einschreibt, ohne daß hierzu das
Betriebssystem tätig werden muß, und daß der Nutzerprozeß
die Daten liest, ohne daß hierzu das Betriebssystem tätig
wird.
Fig. 6 zeigt eine Struktur für den virtuellen Kommunika
tionsbereich 11. Es sind in ihm Daten angeordnet, die von
einem Nutzerprozeß zu senden sind (z. B. ein Array A, Varia
ble) oder Daten, die von einem anderen empfangen werden, und
ein Datenempfangsfleck. Dieser Bereich ist ein solcher, der
hauptsächlich dazu dient, Daten mit einem in einem anderen
Cluster ausgeführten Prozeß auszutauschen.
Fig. 7 zeigt eine Struktur für den virtuellen Anforderungs
bereich 12. Dies ist ein Bereich, bei dem eine vom Nutzer
prozeß verwendete Bibliotheksfunktion einen Zugriff aus
führt. Der Anforderungsbereich 12 weist mindestens eine An
forderungsstruktureinheit 12-1 und eine Ortstabelle 12-2
auf. Die Anforderungsstruktureinheit 12-1 speichert eine Da
tensendeanforderung, die einem Prozeß in einem anderen Clu
ster von einem Prozeß zugeordnet wird, der dem virtuellen
Raum 10 entspricht, in dem sich der Anforderungsbereich 12
befindet, und Parameter, die dieser Datensendeanforderung
zugefügt sind. Die Ortstabelle 12-2 speichert Information,
die auf den von einem anderen Cluster gesteuerten Prozeß be
zogen ist.
Fig. 9 zeigt eine Struktur für die Kommunikationsbereichsta
belle 16. Diese speichert mehrere Einträge, von denen jeder
einem Kommunikationsbereich entspricht. Zu jedem Eintrag ge
hört eine Basisadresse BASE für den zugeordneten Kommunika
tionsbereich und eine Größenangabe LN für diesen Bereich.
Fig. 10 zeigt eine Struktur für die Anforderungstabelle 17.
Diese weist mehrere Einträge zum Speichern reeller Adressen
auf. Wenn die virtuelle Anforderungsstruktureinheit 12-1
(Fig. 7) im virtuellen Anforderungsbereich 12 in einem be
liebigen virtuellen Raum.
Fig. 8 zeigt eine Struktur für die Seitentabelle 15. Jeder
Eintrag der Seitentabelle 15 weist ein Adreßfeld für eine
reelle Seite, ein Flagfeld für eine fixierte Seite und an
dere Steuerinformation auf. Wenn ein Flag F, das anzeigt,
daß eine Seite fixiert ist, im Flagfeld für fixierte Seiten
gespeichert ist, nimmt das Betriebssystem eine Steuerung so
vor, daß die reelle Seite, die diesem Eintrag entspricht,
nicht ausgespeichert wird. Eine Spalte "Andere Steuerinfor
mation" speichert Information ähnlich einer dynamischen
Adreßübersetzung gemäß der bekannten Technik.
Es wird nun der Betrieb eines Parallelverarbeitungscomputers
gemäß diesem Ausführungsbeispiel beschrieben. Zunächst wird
die Initialisierung des Parallelverarbeitungscomputers er
läutert. Jeder Cluster weist eine Ausrüstung auf, wie sie
erforderlich ist, um den Betrieb zu initialisieren, wie eine
Magnetplatteneinheit, die zum Vereinfachen der Zeichnung
nicht dargestellt ist. Wenn die Spannungsversorgung für das
System eingeschaltet ist, lädt jeder Cluster ein Initiali
sierungsprogramm in derselben Weise, wie dies ein eng gekop
pelter Mikroprozessor in der bekannten Technik tut, wodurch
das Betriebssystem in jedem Cluster unabhängig von den an
deren startet. Nachdem das Betriebssystem in jedem Cluster
initialisiert wurde, kann das Betriebssystem damit beginnen,
Daten mit dem Betriebssystem jedes gewünschten Clusters aus
zutauschen, was dadurch erfolgt, daß eine bekannte Technik,
wie das TCP/IP-Protokoll, verwendet wird. Der Austausch er
folgt über das Netzwerk 4 oder ein bekanntes, nicht darge
stelltes Netzwerk.
Beim vorliegenden Ausführungsbeispiel werden nach dem Ini
tialisieren des Betriebssystems die folgenden Abläufe zu
sätzlich ausgeführt. Das Betriebssystem in jedem Cluster er
zeugt die Kommunikationsbereichstabelle 16 im Speicher 2 und
setzt über den Bus 3 die Kopfadresse für diese Tabelle in
einem Kommunikationsbereichstabellen-Ursprungsregister 6.
Dann erzeugt das Betriebssystem die Anforderungstabelle 17
im Hauptspeicher 2 und setzt die Kopfadresse dieser Anforde
rungstabelle 17 in einem Anforderungstabellen-Ursprungsregi
ster 5. Der Inhalt der Tabelle 17 ist noch nicht geschrie
ben.
Die Initialisierung eines Nutzerprozesses wird nachfolgend
beschrieben.
Zunächst weist der Benutzer das Betriebssystem jedes Clu
sters an, eine Prozeßinitialisierung vorzunehmen. Dasjenige
Betriebssystem, das den Befehl zum Initialisieren erhielt,
erzeugt im Speicher 2 die Seitentabelle 15, um einen virtu
ellen Raum 10 zu erzeugen, der dem Prozeß entspricht, für
den die Initialisierung angewiesen wurde. Dies erfolgt auf
dieselbe Weise wie beim Stand der Technik. Anschließend wird
der virtuelle Kommunikationsbereich 11 wie folgt initiali
siert. Ein zusammenhängender reeller Adreßbereich mit vom
Programmierer oder vom Compiler vorgegebener Größe wird im
Speicher 2 sichergestellt, und dieser Bereich wird als re
eller Kommunikationsbereich 13 gesetzt. Dann werden die
Adressen dieses reellen Kommunikationsbereichs 13 aufein
anderfolgend beschrieben, wobei von der Kopfadresse im
Adreßfeld für die reelle Seite im Eintrag der Seitentabelle
15 begonnen wird, was der virtuellen Adresse des Kommunika
tionsbereichs 11 im virtuellen Raum 10 (siehe Fig. 8) ent
spricht. Außerdem wird das Seitenfixierungsflag F im zuge
hörigen Seitenfixierungsflagfeld innerhalb der Tabelle 15
gesetzt, damit der Kommunikationsbereich 13 nicht seitenmä
ßig ausgespeichert wird (paged-out). In diesem Fall ist an
genommen, daß die Kopfadresse des virtuellen Kommunikations
bereichs 11 auf einen vorgegebenen Wert gesetzt ist und daß
dieser Wert den Nutzerprogrammen in allen Clustern gemeinsam
ist. Es ist auch angenommen, daß die Größe des virtuellen
Kommunikationsbereichs 11 mit der Größe des reellen Kommuni
kationsbereichs 13 übereinstimmt.
Das Betriebssystem ordnet dem reellen Kommunikationsbereich
13 eine eindeutige Kommunikationsbereichsidentifizierung in
nerhalb des Clusters 78 zu und setzt die Basisadresse (Kopf
adresse) und die Größe des reellen Kommunikationsbereichs 13
im Eintrag (siehe Fig. 9) der Kommunikationsbereichstabelle
16 mit der Kommunikationsbereichsidentifizierung als Ein
tragsnummer. Der virtuelle Kommunikationsbereich 11 wird dem
reellen Kommunikationsbereich 13 fest durch das Seitenfixie
rungsflag der Seitentabelle zugeordnet. Daher kann der vir
tuelle Kommunikationsbereich 11 eindeutig innerhalb des Clu
sters durch die eindeutige Kommunikationsidentifizierung in
nerhalb des Clusters identifiziert werden, die im reellen
Kommunikationsbereich 13 gesetzt wurde.
Dann stellt das Betriebssystem den reellen Anforderungsbe
reich 14 im zusammenhängenden Bereich des Speichers 2 si
cher und schreibt dann die Adresse des gesicherten reellen
Anforderungsbereichs 14 in das reelle Seitenadreßfeld des
Eintrags der Seitentabelle 15, der der virtuellen Adresse
des Anforderungsbereichs 12 im virtuellen Raum 10 ent
spricht, und setzt das Seitenfixierungsflag F im Seitenfi
xierungsflagfeld (siehe Fig. 8), damit der Inhalt des gesi
cherten reellen Anforderungsbereichs 14 nicht seitenmäßig
ausgespeichert wird. Dann erzeugt das Betriebssystem die An
forderungsstruktureinheit 12- 1 und die Ortstabelle 12-2 im
virtuellen Anforderungsbereich 12, wie in Fig. 7 darge
stellt. Wie vorstehend beschrieben, wurde der zugehörige
reelle Anforderungsbereich 14 im virtuellen Anforderungsbe
reich 12 gesichert, und der reelle Anforderungsbereich 14
wurde als im Speicher 2 resident festgelegt, so daß dieser
Bereich nicht seitenmäßig ausgespeichert wird. Dementspre
chend entspricht der tatsächliche Speicher ohne Ausnahme der
Anforderungsstruktureinheit 12-1 und der Ortstabelle 12-2.
Jedoch wurde dort noch keine Information gespeichert.
Das Betriebssystem setzt weiterhin die Adresse der Seiten
tabelle 15 in einem vorgegebenen (nicht dargestellten) Be
reich des initialisierten Prozesses, damit sich der Prozeß
auf die Seitentabelle 15 beziehen kann.
Anschließend schreibt das Betriebssystem die reelle Kopf
adresse für den Bereich des reellen Anforderungsbereichs 14,
der der wie oben angegeben erzeugten Anforderungsstruktur
einheit 12-1 entspricht, im noch unbenutzten Eintragungsbe
reich der reellen Anforderungstabelle 17.
Durch Initialisieren des Betriebssystems, wie vorstehend
angegeben, kann vom Nutzerprozeß auf den reellen Kommunika
tionsbereich 13 dadurch zugegriffen werden, daß die virtuel
le Adresse des virtuellen Kommunikationsbereichs 11 verwen
det wird. Ein Zugriff kann auch vom Betriebssystem oder
einer externen Einrichtung auf den reellen Kommunikations
bereich 13 dadurch erfolgen, daß mit Hilfe der reellen Kom
munikationsbereichstabelle 16 die reelle Adresse verwendet
wird. Auf den reellen Bereich, der der virtuellen Anforde
rungsstruktureinheit 12-1 entspricht, kann vom virtuellen
Anforderungsbereich 12-1 dadurch zugegriffen werden, daß die
virtuelle Adresse des virtuellen Anforderungsbereichs 12-1
verwendet wird. Auf den reellen Bereich kann auch direkt vom
Betriebssystem oder der externen Einrichtung zugegriffen
werden, in dem die reelle Adresse über die Anforderungsta
belle 17 verwendet wird.
Dann fügt das Betriebssystem den Namen des Prozesses, der
dem Initialisierprozeß vorab durch den Programmierer oder
durch den Compiler zugeordnet wurde, die Kommunikationsbe
reichsidentifizierung für den bei diesem Prozeß zu benutzen
den reellen Kommunikationsbereich 13 und die Adresse inner
halb des Netzwerks des Clusters zusammen. Das Betriebssystem
überträgt diesen Datensatz an alle anderen Cluster. Wenn das
jeweilige Betriebssystem in jedem der anderen Cluster den
Prozeßnamen, die Kommunikationsbereichsidentifizierung und
die Adresse innerhalb des Netzwerks des Clusters erhalten
hat, schreibt sie den empfangenen Prozeßnamen, die empfange
ne Kommunikationsbereichsidentifizierung und die empfangene
Adresse innerhalb des Netzwerks des Clusters in einen freien
Eintragungsbereich der Ortstabelle (der Bereich im reellen
Speicher, der der Ortstabelle 12-2 in Fig. 7 entspricht) im
reellen Anforderungsbereich 14, der für den Nutzerprozeß im
Cluster vorgesehen ist, wobei die Bezugnahme auf die Prozeß
namen vorab durch den Programmierer oder den Compiler er
folgte. Der Cluster zum Initialisieren des vorstehend ge
nannten Nutzerprozesses führt dieselbe Verarbeitung, wie
vorstehend angegeben, aus, wenn der Nutzerprozeß, der den
Prozeß innerhalb dieses Clusters als Nutzerprozeß des Übertragungsempfangs
verwendet, im anderen Cluster initialisiert
wurde. Wenn mit der vorstehend genannten Anordnung der im
virtuellen Raum 10 auszuführende Prozeß eine Zuordnung des
Namens des Übertragungsempfangs-Nutzerprozesses vornimmt,
können die Adresse des Clusters, in dem dieser Prozeß exi
stiert, und die Kommunikationsbereichsidentifizierung des
Kommunikationsbereichs 11, der im Übertragungsempfangs-Nut
zerprozeß zu verwenden ist, erhalten werden, ohne daß hierzu
das Betriebssystem verwendet wird, was weiter unten be
schrieben wird.
Nutzerprozesse, die in der vorstehend genannten Weise be
trieben wurden, arbeiten parallel, indem sie wechselseitig
Daten aneinander übertragen.
Unter Bezugnahme auf Fig. 11 wird nun die Datenübertragung
zwischen Prozessen in bezug auf das vorliegende Ausführungs
beispiel erläutert. Der Ablauf, wie er auszuführen ist, um
Datenübertragung zwischen Nutzerprozessen vorzunehmen, wird
dadurch erläutert, daß die Abläufe in einen solchen für
einen Nutzerprozeß des Übertragungsursprungs und einen sol
chen des Übertragungsempfangs aufgeteilt werden. In der Be
schreibung des Ablaufs des Nutzerprozesses des Übertragungsursprungs
erfolgt eine Unterteilung der Abläufe in einen
solchen des Betriebs des Nutzerprozesses des Übertragungs
ursprungs, des Clusters des Übertragungsursprungs und des
(nicht dargestellten) Clusters des Übertragungsempfangs.
Wenn nicht anders angegeben, werden die Abläufe gemäß der
folgenden Erläuterung von der CPU 1 ausgeführt.
Wenn der Übertragungsursprungsprozeß damit beginnt, zu sen
dende Daten aus dem virtuellen Kommunikationsbereich 11,
z. B. ein Array A, an den Datenempfangsprozeß zu senden,
wird die vorab erstellte (nicht dargestellte) Bibliotheks
funktion "Send" in folgendem Format aufgerufen:
Send ("Name des Übertragungsempfangsprozesses",
K, Y, Z, L).
Ein Nutzer bestimmt den Namen des Übertragungsempfangspro
zesses als erstes Argument. Das zweite Argument K ist die
virtuelle Adresse des Kopfes im virtuellen Raum 10 des Über
tragungsursprungsprozesses für die Sendedaten A. Das dritte
Argument Y ist die virtuelle Adresse des Kopfs des Bereichs,
in dem die Daten im (nicht dargestellten) virtuellen Raum
des Übertragungsempfangsprozesses zu speichern sind. Das
vierte Argument Z ist die virtuelle Adresse des Datenem
pfangsflags, das im Übertragungsempfangscluster zu speichern
ist, wenn Daten empfangen werden. Das fünfte Argument L
kennzeichnet das Volumen der zu sendenden Daten. Beim vor
liegenden Ausführungsbeispiel kennt der Datenübertragungs
prozeß vorab die Lage und die Größe des virtuellen Kommuni
kationsbereichs des Übertragungsempfangsprozesses. Dement
sprechend können dem dritten und vierten Argument die vir
tuellen Adressen zugeordnet werden, wie sie programmgemäß
diesem Kommunikationsbereich zugehören. Das durch das fünfte
Argument angegebene Datenvolumen ist so programmiert, daß es
kleiner ist als die Größe des virtuellen Kommunikationsbe
reichs.
Die Bibliotheksfunktion "Send", die aufgerufen wurde, arbei
tet im virtuellen Raum 10 wie folgt als Teil des Nutzerpro
zesses. Sie liest die Clusteradresse und die Kommunikations
bereichsidentifizierung des Übertragungsempfangsprozesses
aus der Ortstabelle 12-2 im virtuellen Anforderungsbereich
12 (der zugehörige reelle Anforderungsbereich 14 ist im
Speicher 2 resident) auf Grundlage des Namens des Übertra
gungsempfangsprozesses. Dann wandelt sie die virtuelle
Adresse des Kopfes der Übertragungsdaten in die reelle
Adresse der Übertragungsdaten im reellen Kommunikationsbe
reich 13 des Speichers 2, was unter Nutzung der Seitentabelle 15
erfolgt. Die Bibliotheksfunktion "Send" zieht die
Kopfadresse des virtuellen Kommunikationsbereichs 11 des
Übertragungsursprungsclusters von der virtuellen Adresse des
Datenempfangsbereichs bzw. des Datenempfangsflags ab, um den
jeweiligen Offset innerhalb des reellen Kommunikationsbe
reichs 13 des Übertragungsempfangs zu erhalten. Die Richtig
keit dieser Abläufe wird durch die Tatsache garantiert, daß
in allen Clustern die Kopfadresse des virtuellen Kommunika
tionsbereichs 11 innerhalb des Nutzerprozesses zugesendet
wurde und daß der virtuelle Kommunikationsbereich 11 nach
folgend vom Kopf des Bereichs im reellen Kommunikationsbe
reich 13 des zusammenhängenden Bereichs im Speicher 2 zuge
ordnet wurde.
Das wie vorstehend erhaltene Offsetvolumen wird negativ,
wenn sich ein Programmfehler im Nutzerprozeß befindet. In
diesem Fall erfolgt im Betriebssystem eine Programmunterbre
chung.
Die Bibliotheksfunktion "Send" schreibt dann die Adresse CL
des Übertragungsempfangsclusters und die Kommunikationsbe
reichsidentifizierung ID, wie sie zuvor gelesen wurden, den
Offset 50 des Datenempfangsbereichs, den Offset FO des Da
tenempfangsflags, die Datenlänge der Übertragungsdaten und
die reelle Adresse, wie sie zuvor erhalten wurden, jeweils
in die Anforderungsstruktureinheit 12-1 im virtuellen Anfor
derungsbereich 12 (Fig. 7). Sie setzt darüber hinaus das An
forderungsflag im Anforderungsflagfeld in der Anforderungs
struktureinheit 12-1. Da der virtuelle Anforderungsbereich
12 im reellen Anforderungsbereich 14 resident ist, werden
diese Parameter in den reellen Anforderungsbereich 14 einge
schrieben.
Wenn die vorstehend beschriebenen Abläufe abgeschlossen
sind, gibt die Bibliotheksfunktion "Send" die Steuerung an
den Nutzerprozeß zurück. Dieser führt den anschließenden Be
fehl der Übertragungsanforderung parallel mit den folgenden
Abläufen durch.
Eine Anforderungshubwahlschaltung 21 wiederholt immer die
folgenden Abläufe. Sie liest den Wert des Anforderungstabel
lenursprungsregisters 5, d. h. den Wert, wie er durch das
Betriebssystem bei dessen Initialisierung festgelegt wurde,
in der Anforderungstabelleneintragungsadreßerzeugungsschal
tung 21-1 innerhalb der Schaltung 21 (Fig. 2) erzeugt die
reelle Adresse des Kopfeintrags der Anforderungstabelle 17
im Speicher 2 und liest die reelle Adresse der (nicht darge
stellten) Anforderungsstruktureinheit, wobei es sich um den
Inhalt dieses Eintrags handelt, aus dem Speicher 2, und gibt
eine Eingabe über die Speicherzugriffsschaltung 7 und den
Bus 3 in die Anforderungsflagadreßerzeugungsschaltung 21-2.
Letztere erhält die reelle Adresse des Anforderungsflagfel
des von der gelesenen reellen Adresse der Anforderungsstruk
tureinheit und gibt den Inhalt dieser reellen Adresse aus
dem Speicher 2 über die Speicherzugriffsschaltung 7 und den
Bus 3 in eine Anforderungsflagentscheidungsschaltung 21-3.
Letztere entscheidet, ob das Anforderungsflag in das Anfor
derungsflagfeld geschrieben wurde, und sendet ein Signal an
die Anforderungstabelleneintragungsadreßerzeugungsschaltung
21-1, wenn das Anforderungsflag noch nicht in das Anforde
rungsflagfeld eingeschrieben ist. Die Schaltung 21-1 erzeugt
eine Adresse für den nächsten Eintrag der Anforderungstabel
le 17; danach arbeiten die Anforderungsflagadreßerzeugungs
schaltung 21-2 und die Anforderungsflagentscheidungsschaltung 21-3
in derselben Weise, wie vorstehend beschrieben.
Wenn das Anforderungsflag in das Anforderungsflagfeld einge
schrieben ist, sendet die Anforderungsflagentscheidungs
schaltung 21-3 darüber hinaus an eine Sendeschaltungszu
stand-Entscheidungsschaltung 21-4 ein Signal, damit diese
den Zustand der Sendeschaltung 28 des zugehörigen Clusters
feststellt. Wenn die Sendeschaltung 28 gerade beschäftigt
ist, überprüft die Schaltung 21-4 den Zustand der Sende
schaltung 28 erneut. Wenn letztere nicht beschäftigt ist,
wird eine Anforderungsstruktureinheiteingabeadreßerzeugungs
schaltung 21-5 initialisiert. Sie liest die (nicht darge
stellte) Anforderungsstruktureinheit im reellen Adreßbe
reich, der der virtuellen Anforderungsstruktureinheit 12-1
entspricht, was auf Grundlage der Adresse der Anforderungs
struktureinheit 12-1 erfolgt, die zuvor durch die Anforde
rungstabelleeintragsadreßerzeugungsschaltung 21-1 gelesen
wurde, und sie stellt eine Kopie der Clusteradresse CL in
einem Register 22 her, eine Kopie der Kommunikationsbe
reichsidentifizierung ID in einem Register 23, eine Kopie
des Offsets SO des Datenempfangsbereichs in einem Register
24, eine Kopie des Offsets FO des Datenempfangsflags in
einem Register 25 und eine Kopie der Datenlänge LEN in einem
Register 26. Danach erstellt die Schaltung 21-5 eine Kopie
der zu sendenden Daten aus dem reellen Kommunikationsbereich
13 in einem Puffer 27, was unter Nutzung der reellen Adresse
der Sendedaten innerhalb der (nicht dargestellten) reellen
Anforderungsstruktureinheit erfolgt, die gelesen wurde. Da
nach sendet die Schaltung 21-5 eine Anforderungsflagadresse
und einen Rücksetzbefehl aus, um das Anforderungsflagfeld
rückzusetzen, damit der Nutzerprozeß, von dem die Übertra
gungsforderung ausging, erkennen kann, daß der Inhalt des
Bereichs, in dem die zu übertragenden Daten gespeichert
sind, geändert werden kann, da das Lesen der zu übertragen
den Daten abgeschlossen wurde.
Wenn die vorstehenden Abläufe abgeschlossen sind, wird dies
der Anforderungstabelleneintragungsadreßerzeugungsschaltung
21-1 über eine Leitung 1000 mitgeteilt.
Ähnliche Abläufe werden für den Rest der Anforderungsstruk
tureinheiten ausgeführt.
Die Sendeschaltung 28 sendet den Inhalt der Register 22 bis
26 zusammen mit dem Inhalt des Puffers 27 als Paket an das
Netzwerk 4.
Wie oben beschrieben, senden im Übertragungsursprungscluster
die Bibliotheksfunktion "Send", die Sendedatenleseschaltung
110 und die Sendeschaltung 28 Daten an das Netzwerk 4, ohne
daß hierzu das Betriebssystem beansprucht wird. Dies erfolgt
auf eine Anforderung hin vom Übertragungsursprungsprozeß.
Der Betriebsablauf im Übertragungsempfangscluster wird nach
folgend beschrieben.
Wenn ein Paket für das Netzwerk 4 am Übertragungsempfangs
cluster angekommen ist, empfängt eine Empfangsschaltung 42
das Paket und erstellt eine Kopie der Kommunikationsbe
reichsidentifizierung (ID) in einem Register 37, eine Kopie
des Offsets (SO) des Datenempfangsbereichs in einem Register
38, eine Kopie des Offsets (FO) des Datenempfangsflags in
einem Register 39, eine Kopie der Datenlänge (LEN) in einem
Register 40 und eine Kopie der Daten in einem Puffer 41.
Dann verwendet eine Kommunikationsbereichstabellenadreßer
zeugungsschaltung 31 (Fig. 3) auf Grundlage der Kommunika
tionsbereichsidentifizierung ID im Register 37 eine Offset
berechnungsschaltung 31-1, um den Offset der dieser Identi
fizierung ID entsprechenden Eintragung innerhalb der Kommu
nikationsbereichstabelle 16 (Fig. 9) festzustellen. Die Kom
munikationsbereichstabellenadreßerzeugungsschaltung 31 ver
wendet dann eine Addierschaltung 31-2 zum Addieren des Off
sets zur Kopfadresse der Kommunikationsbereichstabelle 16 im
Speicher 2, wie durch das Kommunikationsbereichstabellen
ursprungsregister 6 angegeben, um die Eingabeadresse (reelle
Adresse) zu berechnen, die dieser Kommunikationsbereichs
identifizierung ist der Kommunikationsbereichstabelle 16 ent
spricht, und sie erstellt eine Kopie der Kommunikationsbe
reichsbasisadresse BASE dieses Eintrags im Register 32 und
eine Kopie der Größe LN des Kommunikationsbereichs im Regi
ster 33, was durch die Speicherzugriffsschaltung 7 und den
Bus 3 erfolgt.
Wenn der Übertragungsursprungsprozeß normal programmiert
ist, werden die Adresse zum Speichern der empfangenen Daten
und die Adresse zum Speichern des Datenempfangsflags im re
ellen Kommunikationsbereich 13 abgelegt. Beim vorliegenden
Ausführungsbeispiel wird entschieden, ob diese Adressen im
reellen Kommunikationsbereich 13 untergebracht werden kön
nen, um zu entscheiden, ob ein Programmierfehler im Übertra
gungsursprungsprozeß vorliegt. Anders gesagt bedeutet dies,
daß eine Entscheidungsschaltung 35 (Fig. 4) mit Hilfe von
Vergleichsschaltungen 35-1 und 35-2 eine Entscheidung vor
nimmt, wobei sie den Offset SO des Datenempfangsbereichs,
also des Inhalts des Registers 38, des Offsets FO des Daten
empfangsflags, also des Inhalts des Registers 39, der Daten
länge LEN, also des Inhalts des Registers 40, und der Größe
LN des Kommunikationsbereichs, also des Inhalts des Regi
sters 33, nutzt. Die Vergleichsschaltung trifft Vergleiche
auf Grundlage der jeweiligen Ungleichungen, wie sie in Fig.
4 dargestellt sind. Wenn die Ungleichheitsbedingungen er
füllt sind, wird durch diese Schaltungen ein Schreibsperr
signal erzeugt. Eine ODER-Schaltung 35-4 nimmt eine ODER-
Verknüpfung der Ausgangssignale vor, wie sie durch die Ver
gleichsschaltungen 35-1 und 35-2 erzeugt werden. Wenn ein
Signal an diese ODER-Schaltung 35-4 ausgegeben wird, bedeu
tet dies, daß Daten im Kommunikationsbereich 11 nicht aufge
nommen werden können.
Wenn Daten infolge der Entscheidung im reellen Kommunika
tionsbereich 13 nicht aufgenommen werden können, veranlaßt
die Entscheidungsschaltung 35, daß ein Hardwareinterrupt
signal über den Bus 3 läuft.
Das Hardwareinterruptsignal wird von der mindestens einen
CPU im Übertragungsempfangscluster festgestellt. Das Be
triebssystem wird durch die Interruptverarbeitungsroutine
der CPU 1 initialisiert, das als erstes das Signal fest
stellte, und anschließende Übertragung wird durch Kommunika
tion dieses Betriebssystems mit dem Betriebssystem des ande
ren Clusters verhindert.
Wenn die Sendedaten im reellen Kommunikationsbereich 13 auf
genommen werden können, verwendet eine Adreßerzeugungsschal
tung 34 (Fig. 5) eine Addierschaltung 34-1 dazu, die reelle
Adresse für die Position zu erzeugen, unter der die empfan
genen Daten zu speichern sind. Dies erfolgt mit Hilfe des
Offsets SO für den Empfangsdatenbereich, also des Inhalts
des Registers 38, und der Basisadresse BASE des Kommunika
tionsbereichs 13, also des Inhalts des Registers 32. Darüber
hinaus verwendet die Adreßerzeugungsschaltung 34 eine Ad
dierschaltung 34-2, um die reelle Adresse der Position zu
erzeugen, unter der das Datenempfangsflag zu speichern ist.
Dies erfolgt mit Hilfe des Offsets FO für das Datenempfangs
flag, also des Inhalts des Registers 39, und der Basisadres
se BASE des Datenempfangsflags, also des Inhalts des Regi
sters 32.
Die Speicherzugriffsschaltung 7 überträgt die empfangenen
Daten im Puffer 41 an den reellen Kommunikationsbereich 13,
wofür sie die reelle Adresse für die empfangenen Daten, wie
in Schritt 57 erzeugt, und die Datenlänge LEN, also den In
halt des Registers 40, verwendet. Die Speicherzugriffsschal
tung setzt darüber hinaus das Datenempfangsflag auf die Po
sition der reellen Adresse des Datenempfangsflags, wie in
Schritt 57 erzeugt.
Wie vorstehend beschrieben, können die empfangenen Daten in
den reellen Kommunikationsbereich eingeschrieben werden,
ohne daß hierzu das Betriebssystem tätig werden muß.
Gemäß den vorstehend beschriebenen Abläufen legt der Daten
übertragungsprozeß die Positionen für die Empfangsdaten und
das Datenempfangsflag durch die virtuelle Adresse des vir
tuellen Kommunikationsbereichs 11 fest. Da der virtuelle
Kommunikationsbereich 11 im reellen Kommunikationsbereich 13
resident ist, kann jedoch das Einschreiben nie aufgrund
eines Seitenfehlers ohne Erfolg sein. Anders gesagt wird das
Paket vom Übertragungsursprungscluster nicht an das Übertra
gungsempfangscluster zurückgesendet. Dementsprechend ist es
beim vorliegenden Ausführungsbeispiel nicht erforderlich,
einen Bereich zum Speichern einer Kopie des Paketes vorzu
sehen, um für ein Rücksenden des Pakets gewappnet zu sein,
wie dies beim Stand der Technik erforderlich war.
Nachfolgend wird der Ablauf des Übertragungsempfangsprozes
ses beschrieben.
Wenn der Übertragungsempfangsprozeß Daten verwenden möchte,
prüft er eine Benutzung der Bibliotheksfunktion, um die An
kunft von Daten zu bestätigen, und liest dann das im virtu
ellen Kommunikationsbereich existierende Datenempfangsflag
unter Verwendung der virtuellen Adresse. Dann entscheidet
der Prozeß auf Grundlage des Wertes des Datenempfangsflags,
ob der Datenempfang abgeschlossen ist oder nicht. Der Über
tragungsempfangsprozeß setzt das Datenempfangsflag vorab
durch Zuordnung des Programmierers oder des Compilers zu
rück, bevor Daten übertragen. Wenn der Datenempfang abge
schlossen ist, wird das Flag in der oben beschriebenen Weise
gesetzt. Daher kann der Übertragungsempfangsprozeß auf
Grundlage des Flags entscheiden, ob der Datenempfang abge
schlossen ist. Nachdem der Abschluß der Datenübertragung
festgestellt ist, greift der Übertragungsempfangsprozeß mit
Hilfe der virtuellen Adresse auf die empfangenen Daten zu.
Wenn das Flag rückgesetzt bleibt, liegt eine solche Program
mierung vor, daß der Übertragungsempfangsprozeß keinen Zu
griff auf die Daten innerhalb des virtuellen Kommunikations
bereichs 11 vornimmt.
Nachfolgend wird der Abschluß des Prozesses beschrieben.
Wenn er abzuschließen ist, löscht das Betriebssystem die
Seitentabelle 15 für den Prozeß und gibt Hilfsmittel frei,
wie den Speicherbereich, der dem Prozeß zugeordnet ist; dies
erfolgt auf ähnliche Weise wie bei dem bekannten UNIK-Be
trieb. Gemäß dem vorliegenden Ausführungsbeispiel wird wei
terhin der Eintrag, der dem reellen Kommunikationsbereich 13
entspricht, wie er dem zu beendenden Prozeß zugeordnet ist,
in der Kommunikationsbereichstabelle 16 gelöscht. Darüber
hinaus teilt das Betriebssystem dem Betriebssystem des ande
ren Clusters den Namen des abzuschließenden Prozesses über
das Netzwerk mit. Das Betriebssystem des Clusters, dem die
Beendigung des Prozesses mitgeteilt wurde, löscht den Term,
der dem Prozeßnamen des beendigten Prozesses entspricht, aus
der Ortstabelle 12-2.
Mit den vorstehenden Ausführungen ist die Erläuterung zum
ersten Ausführungsbeispiel der Erfindung beendet.
Beim vorstehenden Ausführungsbeispiel wurde angenommen, daß
der virtuelle Kommunikationsbereich 11 unter jeweils dersel
ben Adresse in jedem virtuellen Raum abgelegt ist. Es kann
jedoch auch angenommen werden, daß ein viertes Feld in jedem
Eintrag der Ortstabelle 12-2 (Fig. 7) vorhanden ist, wobei
die virtuelle Kopfadresse des virtuellen Kommunikationsbe
reichs 11 für den jeweiligen Prozeß in diesem vierten Feld
gespeichert wird, und daß der Inhalt des vierten Feldes für
denjenigen Teil verwendet wird, in dem der Offset des Daten
empfangsbereichs dadurch berechnet wird, daß die Kopfadresse
des virtuellen Kommunikationsbereichs 11 des Übertragungs
ursprungsprozesses berechnet wird, wie im obigen Schritt 51.
Bei dieser Anordnung ist es nicht erforderlich, diese für
die virtuelle Kopfadresse des virtuellen Kommunikationsbe
reichs 11 in jedem virtuellen Raum zu setzen.
Im oben beschriebenen Schritt 56 werden die Kopfadresse und
die Länge des reellen Kommunikationsbereichs 13 dadurch er
halten, daß die Kommunikationsbereichsidentifizierung ID
verwendet wird, die im empfangenen Paket vorhanden ist und
im Register 37 gespeichert ist. Jedoch ist es auch möglich,
eine solche Anordnung vorzunehmen, daß statt der Kommunika
tionsbereichsidentifizierung ID eine Identifizierung verwen
det wird, die eindeutig den Prozeß zum Empfangen von Daten
identifizieren kann, und daß eine Schaltung zum Empfangen
der Kopfadresse und der Länge des reellen Kommunikationsbe
reichs 13 von dieser Identifikation innerhalb der Empfangs
datenschreibschaltung vorgesehen wird.
Ein zweites Ausführungsbeispiel der Erfindung wird unter Be
zugnahme auf Fig. 12 beschrieben. Das zweite Ausführungsbei
spiel ist eine Modifizierung des ersten Ausführungsbei
spiels. Daher erfolgt eine Beschreibung hauptsächlich für
unterschiedliche Punkte. Das vorliegende Ausführungsbeispiel
unterscheidet sich vom ersten dadurch, daß nur der Übertra
gungsursprungsprozeß das Betriebssystem beim Senden von Da
ten an das Netzwerk beansprucht, während der Datenempfangs
prozeß Daten ohne Beanspruchen des Betriebssystems empfängt.
Dementsprechend besteht der Vorteil, daß die Anzahl von Be
anspruchungen des Betriebssystems zum Senden und Empfangen
von Daten geringer ist als beim Stand der Technik, wobei je
doch diese Anzahl größer ist als beim ersten Ausführungsbei
spiel. Fig. 12 zeigt ein Cluster 100A gemäß dem zweiten Aus
führungsbeispiel. In Fig. 12 stimmt die Struktur von Elemen
ten, die die gleichen Bezugszeichen tragen, wie Elemente in
Fig. 1, mit den Strukturen dieser gleich gekennzeichneten
Elemente des ersten Ausführungsbeispiels überein.
Abweichend vom ersten Ausführungsbeispiel sind beim vorlie
genden Ausführungsbeispiel die Anforderungstabelle 17, die
Anforderungsbereiche 12 und 14 und das Anforderungstabellen
ursprungsregister 5 in jedem der Cluster 100A nicht vorhan
den.
In Fig. 12 entsprechen Register 122, 123, 124, 125, 126 und
129 jeweils den Registern 22, 23, 24, 25, 26 und 29 von Fig.
1. Diese Register sind direkt an den Bus 3 angeschlossen, so
daß Daten von der CPU 1 direkt in diese Register als Haupt
speicher 2 eingeschrieben werden können. 130 bezeichnet ein
Register, das an den Bus 3 angeschlossen ist und das Daten
direkt aus der CPU 1 wie auch dem Hauptspeicher 2 lesen
kann. Das Register 122 dient zum Speichern der Adresse CL
des Übertragungsempfangsclusters. Das Register 123 dient zum
Speichern der Kommunikationsbereichsidentifizierung ID des
reellen Kommunikationsbereichs 13, der dem Übertragungsem
pfangsprozeß zugeordnet ist. Das Register 124 dient zum
Speichern des Offsets SO aus der reellen Kopfadresse des re
ellen Kommunikationsbereichs 13 des Datenempfangsbereichs im
reellen Kommunikationsbereich 13 entsprechend dem virtuellen
Kommunikationsbereich 11 des Übertragungsempfangsprozesses.
Das Register 125 dient entsprechend zum Speichern des Off
sets FO des Datenempfangsflags. Das Register 126 dient zum
Speichern der Datenlänge LEN der zu übertragenden Daten. Das
Register 129 dient zum Speichern der reellen Kopfadresse ADR
der Daten, wie sie durch den Übertragungsursprungsprozeß ge
sendet werden. Die Sendeschaltung 28 bezieht sich auf das
Register 130, dessen Zustand CC zeigt, ob die Schaltung 28
beschäftigt ist oder nicht. 127 bezeichnet einen Puffer zum
Speichern von aus dem Hauptspeicher 2 zu sendender Daten.
107A bezeichnet eine Speicherzugriffsschaltung zum Lesen
eines Wertes, wie er unter einer Position der Speicheradres
se aus dem Hauptspeicher 2 auszulesen ist, oder zum Ein
schreiben dieses Wertes in das angezeigte Register oder den
Hauptspeicher 2, oder zum Einschreiben des Wertes aus dem
angezeigten Register oder dem Hauptspeicher 2 in eine beson
dere Adresse des Hauptspeichers 2, wenn die Speicheradresse
angegeben wurde.
Es wird nun derjenige Teil des Ablaufs des Parallelverarbei
tungscomputers des vorliegenden Ausführungsbeispiels be
schrieben, der sich vom ersten Ausführungsbeispiel unter
scheidet, was unter Bezugnahme auf Fig. 13 erfolgt.
Es wird zunächst die Initialisierung des Parallelverarbei
tungscomputers beschrieben. Beim vorliegenden Ausführungs
beispiel wird keine Verarbeitung für eine Anforderungstabel
le 17 und ein Anforderungstabellenursprungsregister 5 vorge
nommen wie gemäß Fig. 1, da diese Funktionsgruppen beim vor
liegenden Ausführungsbeispiel nicht vorhanden sind. Die an
deren Abläufe sind dieselben wie die beim ersten Ausfüh
rungsbeispiel.
Nun wird die Prozeßinitialisierung beschrieben. Beim vorlie
genden Ausführungsbeispiel wird keine Verarbeitung für einen
virtuellen Verarbeitungsbereich 12 und einen virtuellen An
forderungsbereich 14 vorgenommen, da solche Bereiche beim
vorliegenden Ausführungsbeispiel nicht vorhanden sind. Je
doch wird innerhalb des Betriebssystems eine (nicht darge
stellte) Tabelle erstellt, die denselben Inhalt aufweist wie
die Ortstabelle 12-2 im virtuellen Anforderungsbereich 12
gemäß Fig. 1. Die anderen Abläufe sind dieselben wie dieje
nigen beim ersten Ausführungsbeispiel.
Nun wird die erfindungsgemäße Datenübertragung zwischen Pro
zessen erläutert. Beim vorliegenden Ausführungsbeispiel un
terscheidet sich der Ablauf beim Übertragungsursprungsprozeß
von demjenigen beim ersten Ausführungsbeispiel, wobei der
Rest des Ablaufs derselbe ist wie beim ersten Ausführungs
beispiel. Daher werden nun unter Bezugnahme auf Fig. 13 nur
die unterschiedlichen Funktionen erläutert.
Ein Nutzerprogramm gibt einen Systemaufruf an das Betriebs
system ab und übergibt die Steuerung an dasselbe. Dieser
Aufruf hat dasselbe Format wie der Aufrufbefehl der Biblio
theksfunktion beim vorgenannten ersten Ausführungsbeispiel.
Wenn ein Systemaufruf ausgegeben wurde, bestimmt das Be
triebssystem die Adresse des Clusters auf dem Netzwerk, in
dem der Übertragungsempfangsprozeß vorhanden ist, und es be
stimmt die Kommunikationsbereichsidentifizierung des reellen
Kommunikationsbereichs 13, der dem Übertragungsempfangspro
zeß zugeordnet ist, was auf Grundlage des Namens des Über
tragungsempfangsprozesses erfolgt. Dabei wird der vorab bei
der Prozeßinitialisierung in der (nicht dargestellten) Ta
belle innerhalb des Betriebssystems abgespeicherte Inhalt
verwendet (entsprechend dem Inhalt der Ortstabelle 12-2 beim
ersten Ausführungsbeispiel). Das Betriebssystem bestimmt die
reelle Kopfadresse der zu übertragenden Daten im reellen
Kommunikationsbereich 13 des Hauptspeichers 2 auf Grundlage
der virtuellen Kopfadresse der zu sendenden Daten, wozu die
Seitentabelle 15 verwendet wird. Dann erhält das Betriebs
system die Offsetwerte SO und FO der Kopfadresse des virtu
ellen Kommunikationsbereichs 11 innerhalb des Übertragungs
empfangsprozesses, aus der virtuellen Adresse des Datenem
pfangsbereichs und der virtuellen Adresse des Datenempfangs
flags, in derselben Weise wie beim ersten Ausführungsbei
spiel.
Das Betriebssystem liest den Zustand GG 130 über den Bus 3,
um sich zu vergewissern, daß die Sendeschaltung 28 nicht be
schäftigt ist, und sie setzt die Adresse CL des Übertra
gungsbestimmungsclusters, die Kommunikationsbereichsidenfi
zierung ID des dem Übertragungsempfangsprozeß zugeordneten
reellen Kommunikationsbereichs 13, den Offset SO des Daten
empfangsbereichs, den Offset FO des Datenempfangsflags, die
Datenlänge LEN der zu sendenden Daten und die reelle Kopf
adresse der zu sendenden Daten in Registern 122, 123, 124,
125, 126 bzw. 129. Das Betriebssystem übergibt dann die Ab
laufsteuerung an das Nutzerprogramm.
Nach Beendigen des Lesevorgangs gibt das Betriebssystem die
Steuerung an das Nutzerprogramm zurück, um den nächsten Be
fehl auszuführen.
Die Sendeschaltung 28 bildet durch Benutzen der Inhalte der
Register 122, 123, 124, 125 und 126 sowie des Datenpuffers
(2) ein Paket und sendet dieses an das Netzwerk 4.
Wenn das Paket vom Netzwerk 4 empfangen wird, findet dersel
be Ablauf wie beim ersten Ausführungsbeispiel statt, weswe
gen dieser Ablauf hier nicht mehr beschrieben wird.
Nun wird der Abschluß des Prozesses beschrieben. Beim vor
liegenden Ausführungsbeispiel werden abweichend vom ersten
Beispiel die Anforderungsbereiche 12 und 14 nicht verwendet.
Daher ist es nicht erforderlich, die Anforderungsbereiche
anschließend an die Beendigung des Prozesses zu löschen.
Damit sind die Abläufe des zweiten Ausführungsbeispiels aus
reichend beschrieben.
Gemäß dem vorliegenden Ausführungsbeispiel beansprucht der
Übertragungsursprungscluster das Betriebssystem, so daß der
Overhead etwas größer wird als beim ersten Ausführungsbei
spiel. Abweichend von der bekannten Technik müssen innerhalb
des Betriebssystems jedoch kein Sendepuffer und kein Em
pfangspuffer geschaffen werden, wie beim ersten Ausführungs
beispiel, so daß der Overhead für das Senden und Empfangen
von Daten im Vergleich zum Stand der Technik verringert wer
den kann. Darüber hinaus weist das vorliegenden Ausführungs
beispiel eine einfachere Schaltungsstruktur auf als das er
ste.
Ein drittes Ausführungsbeispiel der Erfindung wird nun unter
Bezugnahme auf Fig. 14 beschrieben. Diese dritte Ausfüh
rungsbeispiel ist eine Modifizierung des zweiten Ausfüh
rungsbeispiels, weswegen vor allem unterschiedliche Punkte
erläutert werden. Das vorliegende Ausführungsbeispiel stimmt
insoweit mit dem zweiten überein, als der Übertragungsur
sprungsprozeß Daten unter Beanspruchung des Betriebssystems
an das Netzwerk sendet, dagegen der Übertragungsempfangspro
zeß die Daten ohne Beanspruchung des Betriebssystems em
pfängt. Jedoch unterscheidet sich das vorliegende Ausfüh
rungsbeispiel dahingehend vom zweiten, daß das Betriebssy
stem Parameter, wie sie für die Datenübertragung erforder
lich sind, im Hauptspeicher 2 plaziert. Fig. 14 zeigt ein
Cluster 100B gemäß dem vorliegenden Ausführungsbeispiel. In
Fig. 14 sind solche Elemente, die dasselbe Bezugszeichen
tragen wie solche in den Fig. 1 bis 12 dieselben Elemente
wie dort mit derselben Struktur. In Fig. 14 bezeichnet 218
einen Anforderungsbereich im Hauptspeicher 2, welcher Anfor
derungsbereich 218 durch das Betriebssystem gehandhabt wird.
230 bezeichnet ein Anforderungsbereichursprungsregister zum
Speichern der Kopfadresse des Anforderungsbereichs 218, 222,
223, 224, 225, 226 und 227 bezeichnen Register, die den Re
gistern 122, 123, 124, 125, 126 bzw. 127 im zweiten Ausfüh
rungsbeispiel entsprechen. Das Register 222 dient zum Spei
chern der Clusteradresse CL des Übertragungsempfangsclusters
im Netzwerk. Das Register 223 dient zum Speichern der Kommu
nikationsbereichsidentifizierung ID des reellen Kommunika
tionsbereichs 13, der dem Übertragungsempfangsprozeß zuge
ordnet ist. Das Register 224 dient zum Speichern des Offsets
SO des Datenempfangsbereichs im reellen Kommunikationsbe
reich 13, der dem Übertragungsempfangsprozeß zugeordnet ist.
Das Register 225 dient entsprechend zum Speichern des Off
sets FO des Datenempfangsflags. Das Register 226 dient zum
Speichern der Datenlänge LEN der zu sendenden Daten. Das Re
gister 229 dient zum Setzen eines Wertes, der den Zustand CC
der Sendeschaltung 128 anzeigt. Das Register 227 ist ein Da
tenpuffer zum Speichern des Inhalts der über das Netzwerk zu
sendenden Daten. 207 bezeichnet eine Speicherzugriffsschal
tung zum Zugreifen auf den Hauptspeicher 2, wenn eine Adres
se angegeben wurde, um einen Wert in einem angezeigten Regi
ster abzuspeichern oder um einen Wert des Registers in den
Hauptspeicher einzuschreiben.
Der Betrieb des Parallelverarbeitungscomputers gemäß dem
vorliegenden Ausführungsbeispiel wird nun beschrieben. Dabei
wird nur auf Abläufe eingegangen, die sich von denen des
zweiten Ausführungsbeispiels unterscheiden.
Zunächst wird die Initialisierung des Parallelverarbeitungs
computers erläutert. Wenn beim vorliegenden Ausführungsbei
spiel das Betriebssystem gestartet wird, wird der Anforde
rungsbereich 218 im Hauptspeicher 2 sichergestellt, und die
reelle Kopfadresse des Anforderungsbereichs 218 wird im An
forderungsbereichursprungsregister 230 gesetzt. Andere Ab
läufe stimmen mit denen des zweiten Ausführungsbeispiels
überein.
Es wird nun die Datenübertragung gemäß diesem Ausführungs
beispiel zwischen Prozessen erläutert. Beim vorliegenden
Beispiel unterscheidet sich der Ablauf beim Übertragungsur
sprungsprozeß von demjenigen beim zweiten Ausführungsbei
spiel. Daher wird nur der Unterschied unter Bezugnahme auf
Fig. 15 beschrieben.
Der Ablauf zum Ausgeben eines Systemaufrufs durch den Nut
zerprozeß ist derselbe wie beim zweiten Ausführungsbeispiel.
Der Ablauf ist derselbe wie beim zweiten Ausführungsbei
spiel.
Das Betriebssystem liest den Zustand CC 229 über den Bus, um
sicherzustellen, daß die Sendeschaltung 28 nicht beschäftigt
ist, und sie setzt im Anforderungsbereich 218 im Speicher 2
die Adresse CL des Übertragungsempfangsclusters, die Kommu
nikationsbereichsidentifizierung ID des reellen Kommunika
tionsbereichs 13, der dem Übertragungsempfangsprozeß zuge
ordnet ist, den Offset SO des Datenempfangsbereichs, den
Offset FO des Datenempfangsflags, die Datenlänge der zu sen
denden Daten und die reelle Kopfadresse der zu sendenden Da
ten. Die Speicherzugriffsschaltung 207 wird auf Grundlage
dieser gesetzten Werte gestartet. Es ist auch möglich, einen
Zeichenträger (Semaphore) im Anforderungsbereich 218 vorzu
sehen und die Speicherzugriffschaltung 207 über den Zeichen
träger zu starten. Das Betriebssystem gibt dann die Ablauf
steuerung an das Nutzerprogramm zurück, um den nächsten Be
fehl auszuführen (64 in Fig. 15).
Das Betriebssystem gibt einen Befehl zum Lesen des Anforde
rungsbereichs 218 über den Bus 3 an die Anforderungsbereich
zugriffsschaltung 21A. Diese erzeugt jeden Eintrag des An
forderungsbereichs 218 aus dem Anforderungsbereichsur
sprungsregister 230, liest den Inhalt jedes Eintrags über
die Speicherzugriffsschaltung 207 und setzt die Adresse CL
des Übertragungsbestimmungsclusters, der Kommunikationsbe
reichsidentifizierung ID des reellen Kommunikationsbereichs
13, der dem Übertragungsempfangsprozeß zugeordnet ist, den
Offset SO des Datenempfangsbereichs, den Offset FO des Da
tenempfangsflags und die Datenlänge LEN der zu sendenden Da
ten in den Registern 222, 223, 224, 225 bzw. 226. Die Spei
cherzugriffsschaltung 207 kopiert die zu sendenden Daten aus
dem Hauptspeicher 2 in den Datenpuffer 227 auf Grundlage der
reellen Kopfadresse der zu sendenden Daten.
Nachdem die oben angegebenen Register gesetzt wurden, struk
turiert die Sendeschaltung 128 ein Paket mit Hilfe der In
halte der Register 222, 223, 224, 225 und 226 und des Puf
fers 227, und sie überträgt das Paket an das Netzwerk.
Wenn das Paket vom Netzwerk 4 empfangen wird, ist der Ablauf
derselbe wie beim zweiten Ausführungsbeispiel, weswegen die
Beschreibung dieses Ablaufs hier weggelassen wird.
Damit sind die Abläufe des dritten Ausführungsbeispiels aus
reichend beschrieben.
Gemäß diesem Ausführungsbeispiel ist es möglich, eine Wir
kung entsprechend derjenigen des ersten Ausführungsbeispiels
zu erhalten, jedoch mit einfacherer Struktur als beim ersten
Ausführungsbeispiel, wobei Abläufe ähnlich wie beim zweiten
Ausführungsbeispiel vorliegen.
Nachfolgend wird ein viertes Ausführungsbeispiel der Erfin
dung erläutert. Dieses ist eine Modifizierung des dritten
Ausführungsbeispiels. Der Aufbau des Clusters des vierten
Ausführungsbeispiels stimmt mit demjenigen des dritten Aus
führungsbeispiels überein, weswegen die Erklärung unter Be
zugnahme auf Fig. 14 erfolgt. Jedoch wird der Anforderungs
bereich 214 in anderer Weise genutzt als das Anforderungs
bereichursprungsregister 230. Dementsprechend wird dieser
Unterschied hauptsächlich erläutert.
Zunächst wird die Systeminitialisierung beschrieben. Beim
vorliegenden Ausführungsbeispiel ist der Anforderungsbereich
218 nicht im Hauptspeicher 2 festgelegt, also anders als
beim dritten Ausführungsbeispiel. Daher wird der Anforde
rungsbereich 218 nicht sichergestellt, wenn das System ini
tialisiert wird, sondern er wird zum Zeitpunkt der Daten
übertragung sichergestellt. Zum Zeitpunkt der Systeminitia
lisierung wird kein Wert im Anforderungsbereichursprungsre
gister 230 gesetzt.
Unter Bezugnahme auf Fig. 16 wird der vom Betriebssystem
ausgeführte Ablauf beim Übertragungsursprungsprozeß erläu
tert.
Dieser Ablauf ist derselbe wie beim dritten Ausführungsbei
spiel.
Dieser Ablauf ist derselbe wie beim dritten Ausführungsbei
spiel.
Das Betriebssystem sichert den Anforderungsbereich 218 im
Speicher 2 und setzt im Anforderungsbereich 218 die Adresse
CL des Übertragungsbestimmungsclusters, die Kommunikations
bereichsidentifizierung ID des reellen Kommunikationsbe
reichs 13, der dem Übertragungsempfangsprozeß zugeordnet
ist, den Offset SO des Datenempfangsbereichs, den Offset FO
des Datenempfangsflags, die Datenlänge LEN der zu sendenden
Daten und die reelle Kopfadresse der zu sendenden Daten.
Das Betriebssystem liest den Zustand CC 229, um sicherzu
stellen, daß die Sendeschaltung 128 nicht beschäftigt ist,
und sie setzt die Kopfadresse des Anforderungsbereichs 218
auf den Wert des Anforderungsbereichursprungsregisters 230,
damit die Speicherzugriffsschaltung 207 und die Sendeschal
tung 128 initialisiert werden. Das Betriebssystem gibt dann
die Ablaufsteuerung an das Nutzerprogramm weiter, damit der
nächste Befehl (64 in Fig. 16) ausgeführt wird.
Der Ablauf ist derselbe wie beim dritten Ausführungsbeispiel.
Der Ablauf ist derselbe wie beim dritten Ausführungsbeispiel.
Wenn ein Paket vom Netzwerk 4 empfangen wird, ist der Ablauf
derselbe wie beim dritten Ausführungsbeispiel, weswegen dies
hier nicht erläutert wird.
Damit ist der Ablauf beim vierten Ausführungsbeispiel im we
sentlichen beschrieben.
Beim vorliegenden Ausführungsbeispiel kann der Anforderungs
bereich 218 immer dann sichergestellt werden, wenn Daten
übertragung ausgeführt wird. Wenn die Steuerung so erfolgt,
daß jede CPU 1 im Cluster den Anforderungsbereich 218 unter
einer anderen Adresse im Hauptspeicher 2 sichert, wird es
möglich, die Schritte 61, 62 und 68 in jeder CPU 1 gleichzei
tig parallel auszuführen. Mit dieser Anordnung ist es paral
lel mit dem Ablauf der Sendeschaltung 128, nach Start durch
den von einer bestimmten CPU 1 ausgeführten Schritt 69 mög
lich, daß eine andere CPU 1 die Schritte 61, 62 und 68 aus
führt und eine andere CPU 1 den Schritt 69 direkt nach dem
Beendigen der Arbeit der Sendeschaltung 128 ausführt. Infol
gedessen kann mit diesem Ausführungsbeispiel die Anzahl von
Overheadvorgängen in dem beim Senden von Daten tätigen Be
triebssystem weiter gegenüber der beim dritten Ausführungs
beispiel erforderlichen Anzahl verringert werden.
Fig. 17 zeigt den Aufbau eines Parallelverarbeitungscompu
ters gemäß einem fünften Ausführungsbeispiel der Erfindung.
In Fig. 17 bezeichnen 501, 502, 503 und 504 Prozessoren, die
alle denselben Aufbau aufweisen. 505 bezeichnet einen Haupt
speicher, in den sich die Prozessoren 501 und 502 teilen, wäh
rend 506 einen Hauptspeicher bezeichnet, in den sich die
Prozessoren 503 und 504 teilen. Die Prozessoren 501 und 502
und der Hauptspeicher 505 bilden einen ersten Cluster, wäh
rend die Prozessoren 503 und 504 und der Hauptspeicher 506
einen zweiten Cluster bilden. 507 bezeichnet eine Sende
schaltung, die mit dem ersten Cluster verbunden ist. 508 be
zeichnet eine Empfangsschaltung, die mit dem zweiten Cluster
verbunden ist. Der erste Cluster weist eine Empfangsschal
tung ähnlich der Empfangsschaltung 508 des zweiten Clusters
auf, jedoch ist die Empfangsschaltung des ersten Clusters in
Fig. 17 nicht dargestellt, um die Zeichnung zu vereinfachen.
Entsprechend weist der zweite Cluster eine Sendeschaltung
entsprechend der Sendeschaltung im ersten Cluster auf, wobei
jedoch auch diese Sendeschaltung weggelassen ist, um die
Zeichnung zu vereinfachen. 509 bezeichnet ein Netzwerk zum
Verbinden des ersten Clusters und des zweiten Clusters; es
überträgt eine Nachricht von der Sendeschaltung 507 des Clu
sters zu einem angegebenen Zielort.
Beim vorliegenden Ausführungsbeispiel werden zwei Prozesso
ren verwendet, um ein Cluster zu bilden, wobei zwei Cluster
verwendet werden, um die Zeichnung zu vereinfachen. Jedoch
kann die erfindungsgemäße Technik auch drei oder noch mehr
Prozessoren zum Bilden eines Clusters benutzen, und sie kann
auch drei oder mehr Cluster verwenden.
Es wird nun der Aufbau der Prozessoren 501 bis 504 erläu
tert. Mit Ausnahme eines weiter unten beschriebenen neuen
Befehls können die Prozessoren 501 bis 504 denselben Aufbau
aufweisen wie ein bekannter Mikroprozessor, z. B. der Mikro
prozessor H32 von Hitachi Ltd. In Fig. 17 ist der interne
Aufbau nur für den Prozessor 501 dargestellt, um die Zeich
nung zu vereinfachen. In Fig. 17 bezeichnet 510 eine Ausfüh
rungssteuerschaltung zum Steuern der Befehlsausführungsfolge
des Prozessors 501. 511 bezeichnet ein PSW (Programmstatus
wort). 511-1 bezeichnet ein Privilegstatusanzeigefeld inner
halb des PSW 511, mit der Breite eines Bits. Wenn das Anzei
gefeld 511-1 den Wert 1 hat, befindet sich der Prozessor 501
in privilegiertem Status, wohingegen er sich in nichtprivi
legiertem Status befindet, wenn das Anzeigefeld 511-1 den
Wert 0 aufweist. 511-2 bezeichnet einen Wert PC (Program
Counter) zum Speichern der Adresse des gerade ausgeführten
Befehls. 512 bezeichnet ein Befehlsregister zum Speichern
des ausgeführten Befehls. 512 bezeichnet einen Befehlsdeko
der. 514 bezeichnet ein Pfadtabellenbasisregister zum Spei
chern der Speicheradresse einer weiter unten beschriebenen
Pfadtabelle. 515 bezeichnet ein Pfadtabellenlängenregister.
516 bezeichnet einen Addierer und 515 einen Vergleicher. 518
bezeichnet eine Adreßübersetzungsschaltung zum Übersetzen
einer virtuellen Adresse, wie sie durch einen Befehl ange
zeigt wird, in eine reelle Adresse. Die Adreßübersetzungs
schaltung 518 kann ohne weiteres gemäß dem Stand der Technik
strukturiert sein. 519 bezeichnet ein Bedingungskoderegister
zum Speichern eines Wertes, wie er durch eine Befehlsbe
schreibung auf Grundlage des Ergebnisses der Ausführung
eines Befehls festgelegt wird. 520 und 521 sind Schaltungen
zum Lesen von Werten aus dem Hauptspeicher 505. 522 bezeich
net eine Privilegbefehlausführungsentscheidungsschaltung und
523 bezeichnet eine Zugriffungültigentscheidungsschaltung.
524 und 525 bezeichnen UND-Schaltungen.
Der Hauptspeicher 505 weist folgendes auf. 528 bezeichnet
eine Zugriffsfreigabeschaltung für einen Bereich eines Be
triebssystems. 529 bezeichnet einen Betriebssystembereich.
Um den Zugriff zum Betriebssystembereich 529 zu ermöglichen,
ist es erforderlich, ein Signal in die Betriebssystembe
reichzugrifffreigabeschaltung 528 einzugeben. Es ist mög
lich, auf andere Bereiche zuzugreifen, ohne ein Signal in
die letztgenannte Schaltung einzugeben. 530 bezeichnet eine
weiter unten angegebene Pfadtabelle. Der Eintrag in der
Pfadtabelle 30 weist das in Fig. 18 dargestellte Format auf.
531 bezeichnet einen Zusammenhang für einen im Prozessor 501
gerade ausgeführten Prozeß. 502 bezeichnet einen virtuellen
Raum, der dem Prozeß zugeordnet ist, wie er gerade vom Pro
zessor 501 ausgeführt wird. Fig. 17 zeigt zum Vereinfachen
der Zeichnung nur einen einzigen virtuellen Raum, der dem
vom Prozessor 501 ausgeführten Prozeß zugeordnet ist. Jedoch
können bei der erfindungsgemäßen Vorrichtung auch andere
virtuelle Räume verwendet werden. Ein virtueller Raum kann
ohne weiteres gemäß dem Stand der Technik strukturiert sein.
533 bezeichnet Daten, die in den virtuellen Raum zu übertra
gen sind.
Die Sendeschaltung 507 weist eine Funktion zum Senden von
Daten an das Netzwerk 509 auf Grundlage eines Befehls vom
Prozessor 501 oder vom Prozessor 502 auf. 534 bezeichnet ein
Senderegister zum Speichern einer an das Netzwerk zu über
tragenden Nachricht, 526 bezeichnet eine Sendesteuerschal
tung zum Übertragen des Inhalts des Senderegisters 534 an
das Netzwerk 509 über eine Leitung L6, solange ein Übertra
gungsunterbrechungssignal nicht über eine Leitung L7 vom
Netzwerk 509 aus eingegeben wurde.
Die Empfangsschaltung 509 weist folgende Elemente auf. 523
bezeichnet ein Empfangsregister zum Speichern einer über das
Netzwerk 509 über eine Leitung L18 und eine Empfangssteuer
schaltung 527 ankommende Nachricht. 536 bezeichnet eine
Adreßübersetzungsschaltung zum Entscheiden, ob eine reelle
Adresse aus einem PTO-Wert (Page Table Origin) und einem VA-
Wert (Virtual Address) erhalten werden kann, wie sie in
einem Empfangsregister 535 enthalten sind, und zum Ausgeben
der über eine Leitung L10 erhaltenen reellen Adresse, wenn
diese reelle Adresse erhalten wurde. Die Adreßübersetzungs
schaltung 536 gibt ein Signal an eine Leitung L11, wenn kei
ne reelle Adresse erhalten werden kann. 537 bezeichnet eine
Adreßerzeugungsschaltung. 538 und 539 bezeichnen Schreib
schaltungen zum Einschreiben von Daten in den Hauptspeicher
506.
Der Hauptspeicher 506 verfügt über folgendes. 548 bezeichnet
eine Betriebssystemzugrifffreigabeschaltung. 549 bezeichnet
einen Betriebssystembereich. Um auf den Betriebssystembe
reich 549 zugreifen zu können, ist es im Fall eines Zugriffs
auf den Hauptspeicher 505 erforderlich, ein Signal in die
Betriebssystembereichzugrifffreigabeschaltung 548 einzuge
ben. 550 bezeichnet eine Seitentabelle. 551 bezeichnet einen
virtuellen Raum, in den Daten bei der Datenübertragung ein
zuschreiben sind, wie sie durch das vorliegende Ausführungs
beispiel erklärt wird. 525 bezeichnet einen Datenspeicherbe
reich im virtuellen Raum 551. 553 bezeichnet einen Empfangs
abfangpuffer, und 554 bezeichnet einen Datenspeicherbereich
in demselben.
Es wird nun der Betrieb des Parallelverarbeitungscomputers
gemäß diesem Ausführungsbeispiel beschrieben. Im erfindungs
gemäßen Parallelverarbeitungscomputer sind der erste und der
zweite Cluster eng gekoppelte Multiprozessoren, die ein An
fangsprogramm laden, nachdem die Spannungsversorgung einge
schaltet wurde. Dies erfolgt auf dieselbe Weise wie bei eng
gekoppelten Mikroprozessoren gemäß dem Stand der Technik, so
daß also das Betriebssystem in jedem Cluster unabhängig vom
anderen initialisiert wird. In diesem Fall werden die Sy
stembetriebsbereiche 529 und 549 in den Hauptspeichern 505
und 506 sichergestellt. In der Zeichnung sind der Einfach
heit halber Einheiten weggelassen, wie sie für den Initiali
siervorgang erforderlich sind, wie z. B. Magnetplattenein
heiten.
Wenn ein Befehl zum Initialisieren eines Nutzerprogramms in
einen gewissen Cluster nach dem Initialisieren des Betriebs
systems eingegeben wurde, erzeugt das Betriebssystem dieses
Clusters einen virtuellen Raum und erzeugt dann in diesem
einen Prozeß, wie er zum Ausführen des Nutzerprogramms er
forderlich ist. Nutzerprozesse, die in der oben beschriebe
nen Weise erzeugt wurden, erzeugen dann Prozesse, wie sie
erforderlich sind, um die Nutzerprogramme im eigenen Cluster
und in anderen Clustern auszuführen. Eine Gruppe von Nutzer
programmen, die direkt oder indirekt durch 60056 00070 552 001000280000000200012000285915994500040 0002004208924 00004 59937einen Initiali
sierbefehl erzeugt wird, wird Job genannt. Jedem Job wird
durch das Betriebssystem eine Jobidentifiziermarkierung zu
geordnet. Jedem Nutzerprozeß wird durch den Nutzer ein Name
zugeordnet, so daß jeder Nutzerprozeß unter den Jobs einzig
artig ist. Wenn ein Prozeß mit doppeltem Namen innerhalb der
Jobs aufgrund eines Nutzerprogrammfehlers oder dergleichen
erzeugt werden soll, stellt das Betriebssystem diese Verdop
pelung fest und beendet den entsprechenden Job in nichtnor
maler Weise. Mehrere Prozesse können in einem Cluster er
zeugt werden, wenn Nutzerprozesse erzeugt werden. Das Ver
fahren zum Erzeugen von Nutzerprozessen kann ähnlich sein
wie bei einem bekannten Verfahren, z. B. dem Verfahren, wie
es in einem System mit verteilten Prozessoren verwendet
wird, die durch ein LAN-System verbunden sind. Prozesse, die
mit dem oben angegebenen Verfahren erzeugt wurden, führen
Berechnungen aus, wie sie durch das Programm angezeigt wer
den, was durch wechselseitiges Übertragen von Daten erfolgt.
Wie vorstehend angegeben, können die Prozessoren 501 bis 504
einen Aufbau aufweisen, der über eine auf die Erfindung be
zogene Befehlsausführungsschaltung verfügt, die einem Mikro
prozessor hinzugefügt wird, der aufgebaut sein kann wie ein
bekannter Prozessor. Dementsprechend werden von einer Reihe
von Befehlen eines Prozesses, die von jedem Prozessor auszu
führen sind, solche Befehle, die innerhalb des jeweiligen
Prozessors ausgeführt werden können, wie z. B. arithmetische
Befehle, auf dieselbe Weise abgearbeitet, wie dies durch
einen bekannten Mikroprozessor erfolgt.
Jeder Prozessor mit dem Aufbau, wie in einem Parallelverar
beitungscomputer gemäß der Erfindung, weist eine Adreßüber
setzungsschaltung auf, die ähnlich ist wie bei einem bekann
ten Mikroprozessor und die die Verwaltung des virtuellen
Raums unterstützt. Jeder Prozeß entspricht eindeutig einem
virtuellen Raum und führt ein Programm im virtuellen Raum
aus. Dementsprechend entspricht in jedem Cluster das Zuord
nen eines virtuellen Raums dem Zuordnen eines Prozesses.
Ein Ablauf zur Prozeßerzeugung wird nun unter Bezugnahme auf
Fig. 17 beschrieben. Beim erfindungsgemäßen Parallelverar
beitungscomputer erzeugt das Betriebssystem, beim Erzeugen
eines Nutzerprozesses, eine Pfadtabelle entsprechend dem zu
erzeugenden Prozeß im reellen Speicher im Betriebssystembe
reich 529. (Da das Betriebssystem im privilegierten Status
betrieben wird, wird der Befehl 1 in das Privilegstatusan
zeigefeld 511-1 als Signal an die Betriebssystembereichzu
grifffreigabeschaltung 528 gegeben, so daß das Betriebssy
stem die Pfadtabelle im Betriebssystembereich 529 erzeugen
kann. Wenn das Betriebssystem sich im nichtprivilegierten
Status befindet, ist es nicht möglich, die innerhalb des
Betriebssystembereichs 529 vorhandene Pfadtabelle zu über
schreiben). Gemäß Fig. 17 wird eine dem im virtuellen Raum
529 auszuführenden Nutzerprozeß zugeordnete Pfadtabelle 530
im ersten Cluster erzeugt. In diesem Fall wird ein Feld V
des gesamten Eintrags der Pfadtabelle 530 auf den Wert 1
initialisiert. Die Pfadtabelle wird durch einen Wert BASE
verwaltet, der die Kopfadresse wiedergibt, und durch einen
Wert LEN, die Länge der Pfadtabelle wiedergibt. Beide Werte
BASE und LEN werden als Teil des Zusammenhangs gehandhabt,
in den der Prozeß gestellt ist. Fig. 19 zeigt den Inhalt des
Zusammenhangbereichs des Prozesses. Gemäß Fig. 19 wird der
Inhalt von PSW in einem Feld 103 gespeichert, der Inhalt des
Registers in einem Feld 104 gespeichert und andere Steuerin
formation in einem Feld 105 gespeichert. Diese Inhalte stim
men mit denjenigen von Zusammenhangswerten überein, wie sie
von einem bekannten Betriebssystem verwaltet werden. Im Zu
sammenhangsbereich bezeichnen 106 und 107 Felder zum Spei
chern der oben genannten Werte BASE und LEN, die gemäß der
Erfindung neu sind.
Wenn der zeitliche Ablauf eines dem virtuellen Raum 532 ent
sprechenden Prozesses im Prozessor 501 festgelegt wird,
speichert das Betriebssystem des ersten Clusters den Inhalt
des Zusammenhangbereichs 531 in das Register im Prozessor
501 ein. Beim erfindungsgemäßen Parallelprozessor sind das
Pfadtabellenbasisregister 514 und das Pfadtabellenlängenre
gister 515 im Prozessor 501 als exklusive Register zum Spei
chern der neu eingeführten Werte BASE bzw. LEN als Teile des
Zusammenhangs vorhanden. Darüber hinaus verfügt der Paral
lelprozessor über einen BASE-Setzbefehl und LEN-Setzbefehl
als Befehle zum Speichern eines jeweiligen Wertes in diesen
Registern. Beide Befehle sind privilegierte Befehle, und
wenn diese Befehle im nichtprivilegierten Status auszuführen
sind, tritt ein Interrupt im Prozessor 501 auf. Wenn ein ge
rade durch den Prozessor 501 ausgeführter Befehl aus einem
Grund umgeschaltet wird und der Prozessor 501 freigegeben
wird, wird der Wert des Registers des Prozessors 501 im Zu
sammenhangsbereich 531 gespeichert, gegensätzlich zum vor
stehend Ausgeführten.
Das Schema der Befehlsausführung im Prozessor 501 wird nun
erläutert. Zunächst wird aus dem Hauptspeicher 505 ein Be
fehl auf Grundlage des Feldes 511-2 des PSW 511 in der Aus
führungssteuerschaltung 510 ausgelesen, und dieser Befehl
wird im Befehlsregister 512 gespeichert. Der im Feld OP des
Befehlsregisters 512 gespeicherte Betriebskode wird in die
Privilegbefehlsausführungsentscheidungsschaltung 522 eingege
ben. In diese wird auch der Wert des Privilegstatusanzeige
feldes 511-1 eingegeben. Sie gibt an die Ausführungssteuer
schaltung 510 nur dann ein Signal aus, wenn der eingegebene
Betriebskode einen privilegierten Befehl anzeigt und wenn
das Privilegstatusanzeigefeld 511-1 den nichtprivilegierten
Status anzeigt. Durch diese Anordnung tritt ein Interrupt im
Prozessor 501 auf. In anderen Fällen wird ein Befehl ausge
führt, wenn ein Befehlsdekoder 513 den Betriebskode deko
diert und ein Signal erzeugt, wie es zum Abarbeiten des de
kodierten Befehls erforderlich ist. Fig. 20 zeigt das Format
des BASE-Setzbefehls. Gemäß Fig. 20 wird in einem Teil 108
der Betriebskode dieses Befehls gespeichert, und ein erster
Operand 109 speichert den im Pfadtabellenbasisregister 514
zu setzenden Wert. In Teilen 110 und 111 gespeicherte Werte
werden nicht verwendet. Im Prozessor 501 wird der vorliegen
de Befehl mit folgendem Ablauf ausgeführt.
Zunächst dekodiert der Befehlsdekoder 513 den Befehl, wie
oben beschrieben, und gibt ein Signal an die Leitung L1 aus,
wenn der Lesebefehl der BASE-Setzbefehl ist. Da der Befehl
ein privilegierter Befehl ist, wird er nicht ausgeführt,
wenn der Inhalt des Privilegstatusanzeigefeldes 511-1 nicht
1 ist. Wenn der Inhalt dagegen 1 ist, wird ein Signal von
der UND-Schaltung 524 ausgegeben. Mit Hilfe dieses Signals
wird der im Feld OPI des Befehlsregisters 512 gespeicherte
Wert im Pfadtabellenbasisregister 514 gespeichert.
Fig. 21 zeigt ein Format für den LEN-Setzbefehl. Gemäß Fig.
21 speichert ein Teil 112 einen Betriebskode für den Befehl,
und ein erster Operand speichert den im Pfadtabellenbasisre
gister 514 zu setzenden Wert. In Teilen 114 und 115 gespei
cherte Werte werden nicht verwendet. Im Prozessor 501 wird
der Befehl in der folgenden Weise abgearbeitet.
Zunächst dekodiert der Befehlsdekoder 513 den Befehl, wie
oben angegeben, und gibt ein Signal an die Leitung L2 aus,
wenn der gelesene Befehl der BASE-Setzbefehl ist. Da der Be
fehl ein privilegierter Befehl ist, wird er nicht ausge
führt, wenn der Wert des Anzeigefeldes 511-1 nicht 1 ist.
Ist dies dagegen der Fall, wird von der UND-Schaltung 525
ein Signal ausgegeben. Mit diesem Signal wird der im Feld
OPI des Befehlsregisters 512 gespeicherte Wert im Pfadtabel
lenlängenregister 515 gesetzt.
Ein Prozeß mit dem im Register durch Ausführen des BASE-
Setzbefehls und des LEN-Setzbefehls geladener Zusammenhangs
wert, welcher Prozeß dem Prozessor 501 zugeordnet wurde,
setzt einen Pfad über Datenübertragung vor der Datenübertra
gung an einen anderen Prozeß innerhalb des Jobs.
Zunächst führt der Prozeß einen Systemaufruf zum Setzen des
Pfads auf. Die Spezifikation dieses Systemaufrufs ist die
folgende:
Pfad = openpath (Name);
"Name": Name des anderen Prozesses (einmalig innerhalb des Jobs)
"Pfad": Wert des vom Betriebssystem rückgelieferten Pfades.
"Name": Name des anderen Prozesses (einmalig innerhalb des Jobs)
"Pfad": Wert des vom Betriebssystem rückgelieferten Pfades.
Der Pfad wird durch die folgende Schrittfolge gesetzt.
Zunächst wird beim Betriebssystem des Clusters mit einem
Prozeß, der zum selben Job gehört wie der durch den System
aufruf ausgeführte Prozeß, nachgeforscht, ob ein Prozeß mit
dem zugeordneten Namen vorhanden ist. Das Betriebssystem des
Clusters, in dem der Prozeß mit dem zugeordneten Namen exi
stiert, teilt dem nachfragenden Cluster die Nummer des Clu
sters und einen Seitentabellenursprung zum Strukturieren
eines virtuellen Raums mit, der eindeutig dem angezeigten
Prozeß entspricht. In anderen Fällen teilt das Betriebssy
stem dem nachfragenden Cluster mit, daß kein Prozeß mit dem
angegebenen Namen vorhanden ist.
Wenn ein Prozeß mit dem angegebenen Namen nicht gefunden
wurde, kehrt der Systemaufruf zu einem speziellen Wert zu
rück, um dem Nutzerprozeß anzuzeigen, daß der Prozeß nicht
gefunden wurde.
Wenn ein Cluster mit dem angegebenen Namen gefunden wurde,
wird ein Eintrag mit dem Wert 1 im Feld V optional aus der
Pfadtabelle 530 ausgewählt, entsprechend dem Nutzerprozeß,
der den zugehörigen Systemaufruf ausgeführt hat, und 0 wird
in dieses Feld V eingeschrieben, die Nummer des Clusters, in
dem der ermittelte Prozeß existiert, wird in das Feld CL
eingeschrieben, und der Seitentabellenursprung des virtuellen
Raums, der dem ermittelten Prozeß entspricht, wird in das
Feld PTO eingeschrieben. Dann wird die Nummer des zugehöri
gen Eintrags an den Nutzerprozeß rückübermittelt. Anders ge
sagt bedeutet dies, daß die Nummer des Eintrags der Pfadta
belle 530 der Wert des Pfades wird.
Wenn die oben angegebene Vorbereitung abgeschlossen wurde,
kann der Prozeß Daten an einen anderen Prozeß übertragen.
Anschließend wird die Spezifizierung für einen Fernspeiche
rungsbefehl zum Übertragen von Daten erläutert. Der Fern
speicherungsbefehl ist ein nichtprivilegierter Befehl und
weist ein Format auf, wie es in Fig. 22 dargestellt ist. In
Fig. 22 bezeichnen 117, 118 und 119 virtuelle Adressen in
nerhalb eines virtuellen Raums, der dem anderen Prozeß ent
spricht. 116 ist der Betriebskode, 117 ist die virtuelle
Adresse zum Speichern eines Wertes des Pfades für die Übertragung,
118 ist die virtuelle Adresse zum Speichern der
virtuellen Adresse der zu sendenden Daten im virtuellen Raum
des Prozesses zum Ausführen des Befehls, und 119 ist die
virtuelle Adresse zum Speichern der zu sendenden Daten. Der
Befehl wird auf folgende Weise ausgeführt. Das Schema des
Ablaufs des Befehls ist in Fig. 23 dargestellt.
Der Nutzerprozeß liest den Befehl aus dem Hauptspeicher 505
entsprechend dem Feld 511-2 des PSW 511 in der Ausführungs
steuerungsschaltung 510 und speichert den Befehl im Befehls
register 512. Da der Befehl ein nichtprivilegierter Befehl
ist, gibt die Privilegbefehlsausführungsentscheidungsschal
tung 522 kein Signal aus. Der Befehlsdekoder 513 dekodiert
den im Feld OP des Befehlsregisters 512 gespeicherten Be
triebskode und erzeugt ein Ausgangssignal auf der Leitung
L3, wenn der Lesebefehl ausgeschaltet wurde, damit ein Fern
speicherungsbefehl vorliegt. Dann wird die folgende Be
triebsfolge gestartet.
Der Prozessor addiert den Wert des im ersten Operanden (117
in Fig. 22) mit Hilfe des Addierers 516 zu dem im Pfadtabel
lenbasisregister 514 gespeicherten Wert, um die Eintragungs
adresse zu erhalten, die dem Pfad in der Pfadtabelle 530
entspricht, und er erzeugt ein Ausgangssignal für die Lese
schaltung 520. Diese empfängt das Signal über die Leitung
L3, greift auf den Hauptspeicher 505 auf Grundlage der vom
Addierer 516 ausgegebenen Eintragungsadresse zu und erzeugt
ein Signal auf der Leitung L4, wenn der Wert im Feld V des
zugehörigen Eintrages 1 ist (in diesem Fall ist der Zugriff
auf den Hauptspeicher ein Zugriff auf den Betriebssystembe
reich 529. Da ein Signal über die Leitung L3 in die Be
triebssystembereichfreigabeschaltung 528 einzugeben ist,
kann die Leseschaltung 512 selbst im nichtprivilegierten Zu
stand einen Lesevorgang ausführen).
Der Prozessor vergleicht den für den Pfad im ersten Operan
den gespeicherten Wert mit dem Inhalt des Pfadtabellenlän
genregisters 515, was mit Hilfe des Komparators 517 erfolgt.
Wenn der Wert für den Pfad größer ist als der Inhalt im
Pfadtabellenlängenregister 515, erzeugt der Prozessor ein
Ausgangssignal auf der Leitung L12.
Die Zugriffungültigentscheidungsschaltung 523 ermittelt, ob
der Wert für den durch den Befehl vorgegebenen Pfad einer
gültigen Datenübertragung entspricht, was auf Grundlage der
Signale auf den Leitungen L3, L4 und L12 erfolgt, und sie
erzeugt ein Ausgangssignal für die Ausführungssteuerschal
tung 510, wenn der Wert für den Pfad ungültig ist. Der Un
gültigkeitsfall ist der Fall, bei dem ein Signal auf minde
stens einer der Leitungen L4 und L12 als Ergebnis der Aus
führung des Befehls ausgegeben wurde.
Das Vorstehende beschreibt die erste Untersuchung. Wenn ein
Signal von der Befehlsungültigentscheidungsschaltung 523 als
Ergebnis der ersten Untersuchung von der Ausführungssteuer
Schaltung 510 erhalten wird, sperrt diese die Ausführung des
Befehls und unterbricht den Prozeß 501.
Der Prozessor überprüft den Zustand der Sendesteuerschaltung
526 auf Grundlage des Signals auf der Leitung L3.
Wenn sich als Ergebnis der zweiten Untersuchung heraus
stellt, daß der durch den zuvor ausgeführten Fernspeiche
rungsbefehl im Senderegister 534 gesetzte Wert noch nicht
vollständig an das Netzwerk 509 übertragen wurde, setzt der
Prozessor den Betriebskode 1 über die Leitung L13 im Be
triebskoderegister 519 und beendet die Ausführung des Be
fehls. Der Prozessor führt den folgenden Ablauf aus, wenn
der im Senderegister 514 durch den zuvor ausgeführten Fern
speicherungsbefehl gesetzte Wert vollständig an das Netzwerk
509 übertragen wurde.
In derselben Weise wie bei der ersten Untersuchung greift
die Leseschaltung 520 auf den Speicher 505 mit Hilfe der
Eintragungsadresse zu, wie sie vom Addierer 515 ausgegeben
wird, und sie gibt den Inhalt des Feldes CL und des Feldes
PTO des zugehörigen Eintrags an die Leitung L5 aus. Das Sen
deregister 514 setzt den an die Leitung L5 ausgegebenen Wert
auf die Werte der Felder CL und PTO auf Grundlage des Sig
nals auf der Leitung L3.
Anschließend setzt der Prozessor die im dritten Operanden
(119 in Fig. 22) gespeicherte Adresse direkt im Feld VA des
Senderegisters 524 auf Grundlage des Signals auf der Leitung
L3.
Anschließend übersetzt die Adreßübersetzungsschaltung 518
die im zweiten Operanden (118 in Fig. 22) gespeicherte vir
tuelle Adresse in die reelle Adresse und erzeugt ein Aus
gangssignal an die Leseschaltung 521. Diese greift auf den
Speicher 505 unter der reellen Adresse auf Grundlage des
Signals auf der Leitung L3 zu und gibt die zu sendenden Da
ten an das Datenfeld des Senderegisters 534 aus. Dieses
setzt die zu sendenden Daten für das Datenfeld auf Grundlage
des Signals auf der Leitung L3.
Wenn die Daten in der vorstehend beschriebenen Weise im Sen
deregister 534 gesetzt wurden, wird der Bedingungskode 0 im
Bedingungskoderegister 519 über die Leitung L13 gesetzt, wo
durch die Abarbeitung des Befehls beendet wird. Die Sende
steuerschaltung 526, die das Signal über die Leitung L3 er
halten hat, beginnt damit, den Inhalt des Senderegisters 534
an das Netzwerk 509 auszugeben.
Der Ablauf des Fernspeicherungsbefehls endet mit den vorste
hend angegebenen Vorgängen, und der Prozessor 501 führt den
nächsten Befehl aus (157 in Fig. 23).
Ob Daten erfolgreich an das Netzwerk 509 übertragen wurden
oder nicht, kann durch einen bedingten Verzweigungsbefehl
überprüft werden, abhängig vom Wert des Bedingungskodes.
Wenn aus dem Wert des Bedingungskodes klar ist, daß die Da
ten nicht erfolgreich übertragen wurden, kann der Befehl er
neut abgearbeitet werden.
Das Netzwerk 509 überträgt eine Nachricht an die Empfangs
schaltung, z. B. die Empfangsschaltung 508 des Clusters, das
in der Nachricht angegeben wurde. Infolgedessen werden die
Werte des Feldes PTO, des Feldes VA und des Datenfeldes des
Senderegisters 534 auf die Werte des Feldes PTO, des Feldes
VA bzw. des Datenfeldes des Empfangsregisters 535 gesetzt,
was durch die Empfangssteuerschaltung 527 erfolgt.
Wenn eine Nachricht empfangen wurde, überträgt die Empfangs
schaltung 508 die Inhalte der Felder PTO und VA des Em
pfangsregisters 535 an die Adreßübersetzungsschaltung 536.
Nachdem diese die Inhalte dieser beiden Felder erhalten hat,
gibt sie ein Signal über die Leitung L19 an die Betriebssy
stembereichzugrifffreigabeschaltung 548 auf Grundlage des im
Feld PTO gespeicherten Seitentabellenursprungs und der vir
tuellen Adresse (des Inhalts des Feldes VA) des zugehörigen
virtuellen Raumes 551 aus, wodurch es möglich wird, auf den
Betriebssystembereich zuzugreifen. Dadurch greift die Adreß
übersetzungsschaltung 536 über die Leitung L20 auf die Sei
tentabelle 550 zu und überprüft, ob die reelle Adresse des
Hauptspeichers 506 erhalten werden kann oder nicht.
Wenn ein reeller Speicherbereich entsprechend der virtuellen
Adresse existiert und die Adreßübersetzung möglich ist, ist
der Zugriff auf den Betriebssystembereich in der vorstehend
beschriebenen Weise möglich, woraufhin die Empfangsschaltung
auf die im Betriebssystembereich 549 untergebrachte Seiten
tabelle 550 über die Leitung L20 zugreift, welche Seitenta
belle dem virtuellen Raum 551 entspricht, der dem Feld PTO
im Empfangsregister 535 entspricht. Dadurch führt die Em
pfangsschaltung eine Adreßübersetzung aus, um die reelle
Adresse aus der virtuellen Adresse im Feld VA des Empfangs
registers 535 zu gewinnen, und sie gibt die als Ergebnis der
Adreßübersetzung erhaltene reelle Adresse und ein Schreiban
forderungssignal an die Leitung L10 aus.
Die Schreibschaltung 539, die das oben angegebene Ausgangs
signal erhalten hat, erzeugt ein Ausgangssignal für die über
die Leitung L10 erhaltene Adresse auf der Leitung L14 und
erzeugt ein Ausgangssignal für den Inhalt des Datenfeldes
des Empfangsregisters 535 auf der Leitung L15, wodurch die
Schreibschaltung 539 den Inhalt des Datenfeldes des Regi
sters 535 in den Datenspeicherbereich 552 des virtuellen
Raums 551 einschreibt, wodurch der Ablauf beendet wird.
Wenn die oben beschriebene Adreßübersetzung nicht möglich
ist oder wenn die für eine Seitenausgabe erforderliche
Adresse nicht erhalten werden kann, gibt die Adreßüberset
zungsschaltung 536 ein Signal an die Leitung L11 aus. Mit
der vorstehenden Anordnung kann die Adreßerzeugungsschaltung
537 eine Adresse für den Bereich innerhalb des Empfangsab
fangpuffers erzeugen, der den Inhalt des Empfangsregisters
535 speichern kann.
Der Empfangsabfangpuffer 553 wurde vorab innerhalb des Be
triebssystembereichs 549 des Hauptspeichers 506 durch das
Betriebssystem des zugehörigen Clusters gesichert.
Wenn die von der Adreßerzeugungsschaltung 537 erzeugte
Adresse über die Leitung L17 der Schreibschaltung 538 zuge
führt wurde, gibt diese über die Leitung L18 ein Signal an
die Betriebssystembereichzugrifffreigabeschaltung 548 aus,
um das Einschreiben in den Betriebssystembereich 549 frei zu
geben. Anschließend gibt die Schreibschaltung 538 über eine
Leitung L30 die Adresse an den Hauptspeicher aus und
schreibt den Inhalt jedes Feldes des Empfangsregisters 535
über eine Leitung L31 ein.
Die Adreßerzeugungsschaltung 537 erzeugt einen Interrupt an
die Prozessoren 503 und 504 über die Leitung L21.
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.
Das Betriebssystem entnimmt dem Empfangsabfangpuffer 553 die
Nachricht und simuliert prinzipiell den Ablauf der Datenver
arbeitung, die durch die Empfangsschaltung 508 auszuführen
ist.
Die Datenübertragung wird wie vorstehend beschrieben abge
schlossen.
Wenn eine Adresse nicht erzeugt werden kann, da im Empfangs
abfangpuffer 553 bei der oben beschriebenen Adreßerzeugung
(170 in Fig. 23) kein Raum frei ist, überträgt die Adreßer
zeugungsschaltung 537 ein Signal über die Leitung L16 an die
Empfangssteuerschaltung 527. Wenn diese das Signal empfangen
hat, sendet sie ein Signal für Empfangsabfang über eine Lei
tung L9 an das Netzwerk 509, um das Übertragen der Nachricht
vom Netzwerk 509 auf der Leitung L8 abzufangen. Die Adreßer
zeugungsschaltung 537 erzeugt über die Leitung L21 einen
Interrupt für den Prozessor 503 oder den Prozessor 504, um
das Betriebssystem aufzurufen und eine Erweiterung des Em
pfangsabfangpuffers 553 anzufordern. Wenn die Erweiterung
abgeschlossen ist, teilt das Betriebssystem den Abschluß der
Erweiterung der Adreßerzeugungsschaltung 537 über die Lei
tung L21 mit. Die Adreßerzeugungsschaltung 537, die diese
Nachricht empfangen hat, weist die Empfangssteuerschaltung
527 über die Leitung L16 an, den Empfang neu zu starten.
Nachdem die Empfangssteuerschaltung 527 diesen Befehl erhal
ten hat, teilt sie das Neustarten des Empfangs dem Netzwerk
509 über die Leitung L9 mit.
Wenn die gesamte erforderliche Datenübertragung abgeschlos
sen ist, führt der Prozeß einen Systemaufruf zum Freigeben
des Pfades aus. Die Spezifizierung dieses Systemaufrufs ist
die folgende:
closepath ("Pfad");
"Pfad": Wert für den Pfad
"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.
Das sechste Ausführungsbeispiel ist eine Modifizierung des
fünften Ausführungsbeispiels, weswegen im wesentlichen nur
unterschiedliche Punkte erläutert werden. Fig. 24 zeigt den
Aufbau eines Parallelprozessors gemäß dem sechsten Ausfüh
rungsbeispiel der Erfindung. In Fig. 24 haben Elemente, die
dieselben Bezugszeichen tragen wie solche beim fünften Aus
führungsbeispiel, denselben Aufbau wie die dortigen Ele
mente.
In Fig. 24 bezeichnen 501a, 502a, 503a und 504a Prozessoren
mit jeweils demselben Aufbau. 505 und 506 bezeichnen Haupt
speicher. 507a und 508 bezeichnen eine Sendeschaltung bzw.
eine Empfangsschaltung. 509 bezeichnet ein Netzwerk.
Im Prozessor 501a bezeichnet 512a ein Befehlsregister. Die
ses unterscheidet sich vom Befehlsregister 512 des fünften
Ausführungsbeispiels dadurch, daß das erstere drei Operanden
speichert, während das letztere nur zwei Operanden spei
chert. Im Prozessor 501a sind weitere Aufbauelemente wie im
Prozessor 501 von Fig. 17 vorhanden, die durch gleiche Be
zugszeichen gekennzeichnet sind, wenn sie einander entspre
chen.
In der Sendeschaltung 507a bezeichnen 534a-1 und 534a-2 Sen
deregister, die dem Senderegister 534 des fünften Ausfüh
führungsbeispiels entsprechen, das jedoch zweigeteilt ist, wie
in der Figur dargestellt.
Beim vorliegenden Ausführungsbeispiel besteht der Fernspei
cherungsbefehl des fünften Ausführungsbeispieles nicht mehr,
wohingegen zwei Befehle betreffend einen Fernspeicherungs
vorbereitungsbefehl und einen Fernspeicherungsausführungsbe
fehl neu hinzugefügt sind. Diese zwei neuen Befehle sind
nichtprivilegierte Befehle.
Fig. 25 zeigt ein Format für den Fernspeicherungsvorberei
tungsbefehl. In Fig. 25 bezeichnet 200 einen Betriebskode
für diesen Befehl; ein erster Operand 201 ist ein Wert für
den Pfad. Ein in einem Feld 202 gespeicherter Wert wird
nicht verwendet.
Fig. 26 zeigt ein Format für den Fernspeicherungsausfüh
rungsbefehl. In Fig. 26 bezeichnet 204 einen Betriebskode
für diesen Befehl; ein erster Operand 205 ist die virtuelle
Adresse innerhalb des virtuellen Raums, der dem anderen Pro
zeß zum Speichern zu sendender Daten entspricht. Ein dritter
Operand 6 ist eine virtuelle Adresse der zu sendenden Da
ten, wie sie im virtuellen Raum vorhanden sind, der dem Pro
zeß entspricht, der diesen Befehl ausführt.
Die Funktion des Parallelprozessors gemäß diesem Ausfüh
rungsbeispiel wird nun erläutert. Die Funktion ist dieselbe
wie diejenige beim fünften Ausführungsbeispiel mit der Aus
nahme, daß die Abläufe für den gegenüber dem fünften Ausfüh
rungsbeispiel nicht mehr vorhandenen Fernspeicherungsbefehl
durch die zwei zusätzlichen Befehle, also den Fernspeiche
rungsvorbereitungsbefehl und den Fernspeicherungsausfüh
rungsbefehl ausgeführt werden. Daher werden die Abläufe ge
mäß diesen zwei Befehlen unter Bezugnahme auf die Fig. 24
und 27 beschrieben.
Es wird zunächst der Ablauf für den Fernspeicherungsvorbe
reitungsbefehl beschrieben. Dieser Befehl wird wie folgt
ausgeführt.
Zunächst liest der Nutzerprozeß den Befehl aus dem Haupt
speicher 505 abhängig vom Feld 511-2 des PSW 511 in der Aus
führungssteuerschaltung 510 und speichert den Befehl im Be
fehlsregister 512a. Da dieser Befehl ein nichtprivilegierter
Befehl ist, erzeugt die Privilegbefehlsausführungsentschei
dungsschaltung 522 kein Ausgangssignal. Der Befehlsdekoder
513 dekodiert den im Feld OP des Befehlsregisters 512a ge
speicherten Betriebskode und erzeugt ein Ausgangssignal auf
der Leitung L3, wenn klar ist, daß der gelesene Befehl der
Fernspeichervorbereitungsbefehl ist. Dann wird die folgende
Serie von Abläufen ausgeführt.
Der Prozessor addiert mit Hilfe des Addierers 516 den Wert
des im ersten Operanden (201 in Fig. 25) gespeicherten Pfa
des zu dem im Pfadtabellenbasisregister 514 gespeicherten
Wert, um eine Bereichsadresse zu erhalten, die dem Pfad in
der Pfadtabelle 530 entspricht, und erzeugt ein Ausgangssig
nal für die Leseschaltung 520. Nachdem diese das Signal über
die Leitung L3 erhalten hat, greift sie durch die vom Addie
rer 516 ausgegebene Eintragungsadresse auf den Hauptspeicher
505 zu und erzeugt auf der Leitung L4 ein Ausgangssignal,
wenn der Wert des Feldes V des Eintrages 1 ist. (In diesem
Fall ist der Speicherzugriff ein Zugriff auf den Betriebs
systembereich 529. Da jedoch ein Signal über die Leitung L3
in die Betriebssystembereichfreigabeschaltung 528 eingegeben
wird, kann die Leseschaltung 520 auch dann eine Lesevorgang
ausführen, wenn sie nicht im privilegierten Zustand ist).
Über die Leitung L4 wird ein Signal ausgegeben, wenn der
Wert des Feldes V der Eintragung 1 ist.
Der Prozessor vergleicht weiterhin den im ersten Operanden
gespeicherten Wert für den Pfad mit dem Inhalt des Pfadta
bellenlängenregisters 515, was durch den Komparator 517 er
folgt. Wenn der Wert für den Pfad größer ist als der Inhalt
des Pfadtabellenlängenregisters 515, was durch den Vergleich
festgestellt wird, erzeugt der Prozessor ein Ausgangssignal
auf der Leitung L12.
Die Zugriffungültigentscheidungsschaltung 523 entscheidet,
ob der Wert für den durch diesen Befehl zugeordneten Pfad
eine gültige Datenübertragung kennzeichnet oder nicht, was
auf Grundlage der Signale auf den Leitungen L3, L4 und L12
erfolgt, und sie erzeugt ein Ausgangssignal für die Ausfüh
rungssteuerschaltung 5, wenn sich herausstellt, daß der
Wert für den Pfad ungültig ist. Der Ungültigkeitsfall liegt
vor, wenn ein Ausgangssignal auf mindestens einer der Lei
tungen L14 und L12 nach dem Ausführen des Befehls auftrat.
Mit den vorstehenden Ausführungen ist die Beschreibung für
die erste Überprüfung abgeschlossen. Wenn ein Signal infolge
der ersten Überprüfung von der Zugriffungültigentscheidungs
schaltung 523 von der Ausführungssteuerschaltung 510 erhal
ten wird, sperrt diese die Ausführung dieses Befehls und er
zeugt einen Interrupt für den Prozessor 501a.
Der Prozessor überprüft den Zustand der Sendesteuerschaltung
526 auf Grundlage des Signals auf der Leitung L3.
Wenn als Ergebnis der zweiten Überprüfung klar ist, daß die
in den Senderegistern 534a-1 und 534a-2 durch den zuvor aus
geführten Fernspeicherungsausführungsbefehl gesetzten Werte
noch nicht völlig an das Netzwerk 509 übertragen wurden,
setzt der Prozessor das Bedingungskoderegister 519 über die
Leitung L13 auf den Bedingungskode 1 und beendet die Ausfüh
rung des Befehls. Der Prozessor führt die folgenden Abläufe
aus, wenn die in den Senderegistern 534a-1 und 534a-2 ge
setzten Werte, wie sie zuvor durch den Fernspeicherungsaus
führungsbefehl ausgeführt wurden, alle an das Netzwerk 509
übertragen wurden.
Zunächst greift, wie bei der ersten Überprüfung, die Lese
schaltung 520 mit Hilfe der Eintragungsadresse, wie sie
durch den Addierer 516 ausgegeben wird, auf den Hauptspei
cher 505 zu und gibt die Inhalte der Felder CL und PTO des
Eintrags an die Leitung L5 aus. Das Senderegister 534a-1
setzt den an die Leitung L5 ausgegebenen Wert im Feld CL und
den Wert im Feld PTO auf Grundlage des Signals auf der Lei
tung L3.
Durch die vorstehenden Erläuterungen ist der Ablauf für den
Fernspeicherungsvorbereitungsbefehl beschrieben.
Nun wird der Ablauf für den Fernspeicherungsausführungsbe
fehl erklärt. Dieser Befehl wird wie folgt abgearbeitet.
Der Nutzerprozeß liest zunächst den Befehl aus dem Haupt
speicher 505 gemäß dem Feld 511-2 des PSW 511 in der Ausfüh
rungssteuerschaltung 510 und speichert den Befehl im Be
fehlsregister 512a. Da dieser Befehl ein nichtprivilegierter
Befehl ist, erzeugt die Privilegbefehlausführungsentschei
dungsschaltung 512 kein Ausgangssignal. Der Befehlsdekoder
513 dekodiert den im Feld OP des Befehlsregisters 512a ge
speicherten Betriebskode und startet die folgende Serie von
Abläufen nach dem Erzeugen eines Ausgangssignals auf einer
Leitung L99, wenn klar ist, daß der ausgelesene Befehl der
Fernspeicherungsausführungsbefehl ist.
Anschließend wird die im ersten Operanden (205 in Fig. 26)
gespeicherte virtuelle Adresse direkt im Feld VA des Sende
registers 534a-2 auf Grundlage des Signals auf der Leitung
L99 gesetzt.
Die Adreßübersetzungsschaltung 518 übersetzt die im zweiten
Operanden (206 in Fig. 26) gespeicherte virtuelle Adresse in
eine reelle Adresse und erzeugt ein Ausgangssignal für die
Leseschaltung 521. Diese greift auf den Hauptspeicher 505
mit der reellen Adresse auf Grundlage des Signals auf der
Leitung L99 zu und gibt die zu sendenden Daten an das Daten
feld des Senderegisters 534a-2 aus. Dieses setzt die zu sen
denden Daten im Datenfeld auf Grundlage des Signals auf der
Leitung L99.
Wenn das Setzen der Senderegister 534a-1 und 534a-2, wie
vorstehend beschrieben, abgeschlossen ist, setzt die Sende
schaltung den Bedingungskode 0 über die Leitung L13 im Be
dingungskoderegister 519 und beendet die Ausführung des Be
fehls. Die Sendesteuerschaltung 526, die das Signal von der
Leitung L99 empfangen hat, beginnt mit dem Senden der Inhal
te der Senderegister 534a-1 und 534a-2 an das Netzwerk 509.
Damit wird der Ablauf für den Fernspeicherungsausführungsbe
fehl abgeschlossen.
Wie es aus der obigen Erklärung hervorgeht, ist es durch
Ausführen des Fernspeicherungsvorbereitungsbefehls zum Set
zen des Wertes des Senderegisters 534a-1 mit anschließendem
Ausführen des Fernspeicherungsausführungsbefehls möglich,
einen Effekt zu erzielen, der mit dem übereinstimmt, wie er
erzielt wird, wenn der Fernspeicherungsbefehl beim fünften
Ausführungsbeispiel ausgeführt wird. Dementsprechend ist der
Betrieb des Prozessors zum Empfangen von Daten genau der
gleiche wie im Fall des fünften Ausführungsbeispiels.
Damit ist die Erläuterung des sechsten Ausführungsbeispiels
der Erfindung abgeschlossen.
Beim vorliegenden Ausführungsbeispiel wird der Fernspeiche
rungsvorbereitungsbefehl dann, wenn im selben Prozeß Daten
wiederholt zu senden sind, nur einmal ausgeführt, und der
Fernspeicherungsausführungsbefehl wird entsprechend der er
forderlichen Anzahl ausgeführt. Demgegenüber wird beim fünf
ten Ausführungsbeispiel der Fernspeicherungsbefehl wieder
holt ausgeführt. Da der Fernspeicherungsbefehl des fünften
Ausführungsbeispiels durch den Fernspeicherungsausführungs
befehl ersetzt ist, für den die Abarbeitung erheblich einfa
cher ist, besteht die Wirkung, daß der Overhead, wie er zum
Übertragen von Daten erforderlich ist, weiter verringert
werden kann.
Das siebte Ausführungsbeispiel ist eine Modifizierung des
fünften Ausführungsbeispiels, das jedoch mit einfacherem
Aufbau realisiert werden kann, wenn eine Einschränkung beim
Verfahren hingenommen wird, wie es beim fünften Ausführungs
beispiel ausgeführt wird.
Eine Einschränkung, wie sie zum fünften Ausführungsbeispiel
hinzugefügt wird, um das siebte Ausführungsbeispiel zu er
halten, wird nun erläutert.
Beim fünften Ausführungsbeispiel kann eine virtuelle Seite
im virtuellen Raume des Datenempfangsprozesses, welche Seite
durch den Fernspeicherungsbefehl zu übertragen ist, durch
das Betriebssystem seitenmäßig ausgegeben werden. Beim vor
liegenden Ausführungsbeispiel wird jedoch die Einschränkung
hinzugefügt, daß die genannte durch den Fernspeicherungsbe
fehl zu sendende virtuelle Seite im virtuellen Raum des Da
tenemfangsprozesses dem reellen Speicher ohne Ausnahme zuge
ordnet ist.
Der Ablauf, gemäß dem eine virtuelle Seite dem reellen Spei
cher ohne Ausnahme zugeordnet ist und bei dem eine seiten
weise Ausgabe nicht zulässig ist, ist ein Ablauf mit soge
nannter Seitenfixierung. Dies kann unter Verwendung herkömm
licher Technik einfach realisiert werden.
Der Aufbau eines Parallelprozesses gemäß diesem Ausführungs
beispiel kann dadurch realisiert werden, daß ein Teil der
Elemente des Aufbaus des fünften Ausführungsbeispiels wegge
lassen wird. Fig. 28 zeigt den Aufbau des Parallelprozessors
gemäß dem vorliegenden Ausführungsbeispiel. Diesem Aufbau
fehlen die Adreßerzeugungsschaltung 537, die Schreibschal
tung 538, der Empfangsabfangpuffer 553, der Datenspeicherbe
reich 554 des Empfangsabfangpuffers 553 und die an diese
Elemente angeschlossenen Leitungen gegenüber dem Parallel
prozessor von Fig. 17.
Die Funktion des Parallelprozessors gemäß diesem Ausfüh
rungsbeispiel ist fast dieselbe wie diejenige des Parallel
prozessors des fünften Ausführungsbeispiels. Daher werden
nur Unterschiede erläutert.
Ein erster Unterschied liegt beim Initialisieren des Prozes
ses zum Empfangen von Daten vor, wie sie durch den Fernspei
cherbefehl zu übertragen sind. Gemäß dem vorliegenden Aus
führungsbeispiel wird beim Ausführen der Abläufe des Be
triebssystems zum Erzeugen eines virtuellen Raums zum Erzeu
gen eines Prozesses ein reeller Speicherbereich gesichert,
dessen Kapazität mit derjenigen der virtuellen Seite über
einstimmt, die für den Kodebereich und den Datenbereich des
Prozesses flach dem Erzeugen des Raums erforderlich ist, und
dieser reelle Speicherbereich wird dem virtuellen Speicher
bereich völlig zugeordnet, wobei ein Seitenfixierungsprozeß
für die ganzen virtuellen Seiten ausgeführt wird.
Ein zweiter Unterschied besteht beim Empfangsablauf im Pro
zeß zum Empfangen von Daten, wie sie durch einen Fernspei
cherbefehl übertragen werden. Wie vorstehend beschrieben,
ist der virtuellen Seite des Prozesses ohne Ausnahme ein
reeller Speicher zugeordnet, so daß die Verarbeitung der
Adreßübersetzungsmöglichkeitsuntersuchung 160 von Fig. 23,
die die Funktion des fünften Ausführungsbeispiels verarbei
tet, nicht erforderlich ist. Auch ist eine Reihe von Abläu
fen ab der Adreßerzeugung 170 nicht erforderlich. Dement
sprechend ist es im Prozeß zum Empfangen von Daten, die
durch die Datenübertragung 156 von Fig. 23 übertragen wer
den, nur erforderlich, die Adreßübersetzung 161 und dann die
Datenspeicherung 162 vorzunehmen.
Damit ist die Beschreibung des siebten Ausführungsbeispiels
der Erfindung im wesentlichen abgeschlossen.
Bei diesem siebten Ausführungsbeispiel ist der Empfangsab
fangspuffer nicht erforderlich, wodurch der reelle Speicher
bereich und die Verwaltung für den Empfangsabfangspuffer
nicht erforderlich sind. Daher besteht die Wirkung, daß der
Overhead im Prozessor, der Daten empfängt, verringert werden
kann.
Das achte Ausführungsbeispiel der Erfindung ist eine Modifi
zierung des siebten Ausführungsbeispiels, jedoch mit vielen
gemeinsamen Punkten. Daher werden nur Unterschiede erläu
tert. Fig. 29 zeigt den Aufbau des Parallelprozessors gemäß
dem achten Ausführungsbeispiel. In Fig. 29 sind die Struktu
ren von Elementen, die dieselben Bezugszeichen tragen wie
Elemente in Fig. 17 dieselben wie diejenigen der Elemente im
fünften Ausführungsbeispiel.
In Fig. 29 bezeichnen Bezugszeichen 501c, 502c, 503c und
504c Prozessoren mit jeweils derselben Struktur. 505 und 506
bezeichnen Speicher. 507c und 508c bezeichnen eine Sende
schaltung bzw. eine Empfangsschaltung. 509 bezeichnet ein
Netzwerk.
Im Prozessor 501c bezeichnet 999 eine Adreßübersetzungs
schaltung, bei der es sich um eine für dieses Ausführungs
beispiel neu eingeführte Anordnung handelt. Andere Aufbau
elemente des Prozessors 501c sind solche, wie im Prozessor
501 von Fig. 17 vorhanden, wobei dieselben Aufbauelemente
dieselben Bezugszeichen tragen.
Im Hauptspeicher 5 bezeichnet 530c eine Pfadtabelle. Jeder
Eintrag in der Pfadtabelle 530c verfügt über ein Feld V und
ein Feld CL. 530c bezeichnet eine Tabelle, die der Tabelle
530 im fünften Ausführungsbeispiel nach Entfernen des Feldes
PTO entspricht.
In der Sendeschaltung 507c bezeichnet 534c ein Senderegi
ster, das über drei Felder für Werte von CL, RA und Daten
verfügt.
In der Empfangsschaltung 508c bezeichnet 535c ein Empfangs
register.
Das vorliegende Ausführungsbeispiel ist eine Modifizierung
des siebten Ausführungsbeispiels dahingehend, daß der Adreß
übersetzungsablauf in bezug auf den virtuellen Raum, in den
Daten durch den Fernspeicherbefehl einzuschreiben sind,
durch den Prozessor auf der Sendeseite ausgeführt wird. Der
Unterschied zwischen dem achten und dem siebten Ausführungs
beispiel besteht lediglich in der Funktion des Befehls
"openpath", der einem Systemaufruf im siebten Ausführungs
beispiel entspricht, und im Ablauf des Fernspeicherbefehls.
Daher werden diese Abläufe erläutert. Der Ablauf "openpath"
im siebten Ausführungsbeispiel ist derselbe wie beim fünften
Ausführungsbeispiel.
Zunächst wird der Ablauf "openpath" erläutert. Die Spezifi
kation für "openpath" ist dieselbe wie beim siebten Ausfüh
rungsbeispiel. Dieser Systemaufruf wird auf folgende Weise
ausgeführt.
Zunächst fragt ein Cluster beim Betriebssystem des Clusters
mit dem Prozeß, der zum selben Job gehört wie der Prozeß,
der den Systemaufruf ausgeführt hat, an, ob der Prozeß einen
vorgegebenen Namen hat. Das Betriebssystem desjenigen Clu
sters, in dem sich ein Prozeß mit dem vorgegebenen Namen be
findet, gibt die Nummer des Clusters und eine Information
aus, um die reelle Adresse aus der virtuellen Adresse im
virtuellen Raum zu gewinnen, die eindeutig dem angezeigten
Prozeß entspricht; die Eingabe erfolgt an den anfragenden
Cluster. In anderen Fällen zeigt der angefragte Cluster dem
anfragenden Cluster an, daß kein Prozeß mit dem angegebenen
Namen vorhanden ist.
Wenn kein Prozeß mit dem angegebenen Namen als Ergebnis der
vorstehenden Abfrage gefunden wurde, gibt der Systemaufruf
einen speziellen Wert an den Nutzerprozeß ab, der anzeigt,
daß kein Prozeß mit dem angegebenen Namen gefunden wurde.
Wenn ein Cluster gefunden wurde, in dem der Prozeß mit dem
angegebenen Namen vorhanden ist, wird ein Eintrag mit dem
Wert 1 im Feld V wahlweise aus der Pfadtabelle 30 ausgele
sen, die dem Nutzerprozeß zugeordnet ist, die den Systemauf
ruf ausgeführt hat. Dann wird der Wert 0 in dieses Feld V
eingeschrieben, und die Nummer des Clusters, in dem der
festgestellte Prozeß existiert, wird in das Feld CL einge
schrieben. Darüber hinaus wird Information zum Erhalten der
reellen Adresse aus der virtuellen Adresse im virtuellen
Raum, der eindeutig dem zugeordneten Prozeß entspricht, ge
setzt, und es wird die Eintragungsnummer der Pfadtabelle in
der Adreßübersetzungsschaltung 999 gesetzt, und die Eintra
gungsnummer wird an den Nutzerprozeß übergeben. Anders ge
sagt wird die Eintragungsnummer der Pfadtabelle 530c der
Wert für den Pfad.
Infolgedessen kann die Adreßübersetzungsschaltung 999 die
reelle Adresse auf Grundlage des Wertes für den Pfad und der
virtuellen Adresse des virtuellen Raums, der dem Pfadwert
entspricht, erhalten. Die Adreßübersetzungsschaltung 999 kann
mit herkömmlicher Technik strukturiert sein.
Es wird nun die Abarbeitung des Fernspeicherungsbefehls er
klärt.
Zunächst wird der Befehl gemäß dem Feld 511-2 des PSW 511 in
der Ausführungssteuerschaltung 510 aus dem Hauptspeicher 505
gelesen, und der Befehl wird im Befehlsregister 512 gespei
chert. Dieser Befehl ist ein nichtprivilegierter Befehl
weswegen die Privilegbefehlsausführungsentscheidungsschaltung
522 kein Ausgangssignal erzeugt. Der Befehlsdekoder 513 de
kodiert den Betriebskode, wie er im Feld OP des Befehlsregi
sters 512 gespeichert ist. Wenn sich herausstellt, daß der
gelesene Befehl der Fernspeicherbefehl ist, wird ein Signal
auf die Leitung L3 ausgegeben, und es wird die folgende Se
rie von Abläufen gestartet.
Der Wert für den Pfad, wie er im ersten Operanden gespei
chert wird, und der Wert, wie er im Pfadtabellenbasisregi
ster 514 gespeichert ist, werden durch den Addierer 516 zu
sammengezählt, um die Eintragungsadresse zu erhalten, die
dem Pfad in der Pfadtabelle 530c entspricht. Das Ergebnis
der Eingabeadresse wird an die Leseschaltung 520 ausgegeben.
Diese greift auf den Hauptspeicher 505 auf Grundlage der
Eintragungsadresse zu, wie sie von dem Addierer 516 ausge
geben wird, nachdem sie ein Signal über die Leitung L3 em
pfangen hat, und sie erzeugt ein Signal auf der Leitung L4,
wenn der Wert im Feld V des Eintrags 1 ist.
Dann wird der Wert für den Pfad, wie er im ersten Operanden
gespeichert ist, durch den Vergleicher 517 mit dem Inhalt
des Pfadtabellenlängenregisters 515 verglichen. Wenn der
Wert für den Pfad größer ist als der Inhalt des Pfadtabel
lenlängenregisters 515, was durch den Vergleich festgestellt
wird, wird ein Signal auf der Leitung L12 ausgegeben.
Auf Grundlage der Signale auf den Leitungen L3, L4 und L12
entscheidet die Zugriffungültigentscheidungsschaltung 523,
ob der durch diesen Befehl für den Pfad angegebene Wert für
Datenübertragung gültig ist oder nicht. Wenn der Wert ungül
tig ist, erzeugt die Entscheidungsschaltung 523 ein Aus
gangssignal für die Ausführungssteuerschaltung 520. Der Un
gültigkeitsfall liegt dann vor, wenn ein Signal mindestens
auf einer der Leitungen L4 und L12 als Ergebnis der Ausfüh
rung des Befehls ausgegeben wurde.
Vorstehendes betrifft die erste Überprüfung. Nachdem die
Ausführungssteuerschaltung 510 das Signal von der Zugriff
ungültigentscheidungsschaltung 523 als Ergebnis der ersten
Überprüfung erhalten hat, unterdrückt sie die Ausführung
dieses Befehls und erzeugt einen Interrupt im Prozessor 501.
Auf Grundlage des Signals auf der Leitung L3 wird der Zu
stand der Sendesteuerschaltung 526 überprüft.
Wenn sich als Ergebnis der zweiten Überprüfung herausge
stellt hat, daß der im Senderegister 534 durch den zuvor
ausgeführten Fernspeicherbefehl gesetzte Wert nicht völlig
an das Netzwerk 509 übertragen wurde, wird der Bedingungs
kode im Bedingungskoderegister 519 über die Leitung L13 auf
den Wert 1 gesetzt, wodurch die Ausführung dieses Befehls
beendigt wird. Wenn der durch den zuvor ausgeführten Fern
speicherbefehl im Senderegister 534 gesetzte Wert völlig an
das Netzwerk 509 übertragen wurde, findet der folgende Ab
lauf statt.
Zunächst greift die Leseschaltung 520 in derselben Weise wie
im Fall der ersten Überprüfung auf den Hauptspeicher 505 auf
Grundlage der Eintragungsadresse zu, wie sie vom Addierer
516 ausgegeben wird, und gibt den Inhalt des Feldes CL die
ses Eintrags an die Leitung L5 aus. Das Senderegister 534c
setzt den über die Leitung L5 ausgegebenen Wert im Feld CL
auf Grundlage des Signals auf der Leitung L3.
Anschließend werden der Wert für den im ersten Operanden ge
speicherten Pfad und die virtuelle Adresse, wie sie im drit
ten Operanden gespeichert ist, in die Adreßübersetzungs
schaltung 999 eingegeben. Diese gibt die reelle Adresse für
den Empfangsort der Datenübertragung aus. Das Senderegister
534c setzt den von der Adreßübersetzungsschaltung ausgegebe
nen Wert im Feld RA auf Grundlage des Signals auf der Lei
tung L3.
Anschließend übersetzt die Datenübersetzungsschaltung 518
die virtuelle Adresse, wie sie im zweiten Operanden gespei
chert ist, in die reelle Adresse und gibt die konvertierte
reelle Adresse an die Leseschaltung 521 aus. Diese greift
mit der reellen Adresse auf Grundlage des Signals auf der
Leitung L3 auf den Hauptspeicher 505 zu und gibt die zu sen
denden Daten an das Datenfeld des Senderegisters 534c aus.
Dieses setzt die zu sendenden Daten im Datenfeld auf Grund
lage des Signals auf der Leitung L3.
Wenn das Setzen des Senderegisters 534c wie vorstehend ab
geschlossen ist, wird über die Leitung L13 der Bedingungs
kode 0 im Bedingungskoderegister 519 gesetzt, wodurch der
Ablauf für diesen Befehl beendet wird. Die Sendesteuerschal
tung 526, die das Signal auf der Leitung L3 erhalten hat,
beginnt mit dem Senden des Inhalts des Senderegisters 534c
an das Netzwerk 509.
Ob das Übertragen an das Netzwerk erfolgreich war oder
nicht, kann mit Hilfe eines Verzweigungsbefehls überprüft
werden, abhängig vom Wert des Bedingungskodes. Wenn es aus
dem Wert des Bedingungskodes ersichtlich ist, daß die Über
tragung an das Netzwerk nicht erfolgreich war, wird der Be
fehl erneut ausgeführt.
Das Netzwerk 509 überträgt eine Nachricht an die Empfangs
schaltung des in der Nachricht angegebenen Clusters, z. B.
an die Empfangsschaltung 508c. Infolgedessen werden der Wert
für das Feld RA und das Datenfeld des Senderegisters 534c im
Feld RA bzw. im Datenfeld des Empfangsregisters 535c durch
die Empfangssteuerschaltung 537 gesetzt.
Dann wird der folgende Ablauf ausgeführt.
Die Schreibschaltung 539 gibt den Inhalt des Feldes RA des
Empfangsregisters 535c an die Leitung L14 aus und gibt den
Inhalt des Datenfeldes des Empfangsregisters 535c an die
Leitung L15 aus und schreibt dann den Inhalt des Datenfeldes
des Registers 535c in den Datenspeicherbereich 552 des vir
tuellen Speichers 551, wodurch der Ablauf beendet wird.
Die Datenübertragung wird wie vorstehend beschrieben abge
schlossen.
Gemäß dem vorstehenden Ausführungsbeispiel wird der Ablauf
in der Empfangsschaltung des Clusters, in dem ein Datenem
pfangsprozeß abläuft, vereinfacht. Daher wird der Betrieb
des Lesens von Daten und des Speicherns von Daten im Haupt
speicher im Vergleich zum Ablauf beim siebten Ausführungs
beispiel schneller, wenn Datenübertragungen von vielen Pro
zessen auf ein Cluster konzentriert sind. Im Ergebnis kann
der Kommunikationsoverhead weiter verringert werden.
Das neunte Ausführungsbeispiel betrifft den Fall, daß ein
Prozessor auf eine externe Einrichtung, z. B. eine Ein/Aus
gabe-Einrichtung für Daten zugreift.
Wenn ein Prozessor gemäß dem Stand der Technik Zugriff auf
eine externe Dateneinrichtung anfordert, bereitet das Be
triebssystem zunächst einen Speicherbereich zum Einschreiben
der Daten vor und schützt diesen Speicherbereich davor, daß
er seitenweise ausgegeben wird. Zu diesem Zweck ist ein Ver
fahren vorhanden, gemäß dem der Speicherbereich z. B. im re
ellen Speicher gesichert wird oder bei dem der Speicherbe
reich im virtuellen Speicherbereich für die Seitenfixierung
gesichert wird. Dann wird ein Befehl einschließlich der
Adresse an die externe Einrichtung ausgegeben.
Wenn die externe Einrichtung, die den Befehl erhalten hat,
die in den Speicher einzuschreibenden Daten vorbereitet hat,
schreibt sie die Daten in den oben angegebenen Bereich, der
nicht seitenweise ausgegeben wurde.
Gemäß der vorstehend angegebenen bekannten Technik kann der
für die externe Einrichtung vorbereitete Speicherbereich
während der Ansprechzeit der externen Einrichtung nicht zum
Ausführen des Programms des Prozessors verwendet werden,
wenn die Betriebsgeschwindigkeit der externen Einrichtung
niedriger ist als diejenige des Prozessors.
Um dieses Problem zu lösen, gibt das vorliegende Ausfüh
rungsbeispiel ein Verfahren an, bei dem kein Problem auf
tritt, wenn der Speicherbereich, in den die externe Einrich
tung Daten einzuschreiben hat, seitenweise ausgegeben wurde.
Um dieses Problem zu lösen, kann ein Empfangsabfangpuffer
verwendet werden, wie er in Zusammenhang mit dem fünften
Ausführungsbeispiel der Erfindung beschrieben wurde. Genauer
gesagt, werden die Empfangsschaltung 508 und der Empfangs
abfangpuffer 553, wie im fünften Ausführungsbeispiel darge
stellt, zwischen die externe Einrichtung und den Prozessor
geschaltet.
Wenn der Prozessor auf eine externe Einrichtung zum Schrei
ben von Daten zugreift, wird der Bereich zum Schreiben der
Daten im normalen virtuellen Speicherbereich sichergestellt,
und die virtuelle Adresse dieses Bereichs und ein PTO-Befehl
(Page Table Origin), der dem virtuellen Raum mit diesem Be
reich entspricht, werden an die externe Einrichtung übertra
gen. Wenn diese den Ablauf zum Lesen, z. B. der Plattenein
heit, gestartet hat und zu schreibende Daten vorbereitet
hat, überträgt die externe Einrichtung die PTO, die virtuel
le Adresse und die Daten an die Empfangsschaltung, die an
den Prozessor angeschlossen ist, der die Daten angefordert
hat. Dann entscheidet die Empfangsschaltung in derselben
Weise wie beim fünften Ausführungsbeispiel, ob der reelle
Speicherbereich, der dem virtuellen Speicherbereich ent
spricht, in den die Daten einzuschreiben sind, durch die
Adreßübersetzungsschaltung eine Zuordnung erfahren hat oder
nicht. Wenn ein reeller Speicherbereich zugeordnet wurde,
werden die Daten in diesen Bereich eingeschrieben. Wenn da
gegen ein reeller Speicherbereich wegen des Auslesens einer
Seite nicht zugeordnet wurde, wird ein Bereich zugeordnet,
der als Empfangsabfangspuffer verwendet werden kann, was auf
dieselbe Weise erfolgt wie durch die Adreßerzeugungsschal
tung 537 in der Empfangsschaltung 508, und die PTO, die vir
tuelle Adresse und die Daten werden in diesen Bereich einge
schrieben. Dann erzeugt die Empfangsschaltung einen Inter
rupt im Prozessor. Im Ergebnis liest der Prozessor den durch
die PTO seitenweise ausgegebenen Bereich seitenweise ein
(page-in), wie auch die im Empfangsabfangpuffer gespeicherte
Adresse, und er schreibt dann die Daten in diesen Bereich
ein.
Gemäß diesem Ausführungsbeispiel kann der Bereich, in den
die externe Einrichtung Daten einschreiben kann, als Bereich
für normales Seitenlesen gesetzt werden. Dementsprechend be
setzt die externe Einrichtung selbst dann keinen Speicherbe
reich, der für diese externe Einrichtung während ihrer An
sprechzeit vorgegeben ist, wenn die Betriebsgeschwindigkeit
der externen Einrichtung langsamer ist als die Betriebsge
schwindigkeit des Prozessors, so daß der Speicherbereich für
die Ausführung des Programms durch den Prozessor verwendet
werden kann.
Gemäß der vorliegenden Erfindung ist es zum Ausführen von
Datenübertragungen zwischen Nutzerprozessen erforderlich,
die Übertragung zwischen den Betriebssystemen der Cluster zu
initialisieren, wenn die Nutzerprozesse zu starten sind.
Wenn jedoch tatsächlich Datenübertragung zwischen Nutzerpro
zessen stattfindet, wenn Daten vom virtuellen Raum des Nut
zerprozesses in einem besonderen Cluster in den virtuellen
Raum des Nutzerprozesses in einem anderen Raum übertragen
werden, können die Daten direkt übertragen werden, ohne daß
sie in den Pufferbereich des Betriebssystems kopiert werden.
Dementsprechend ist es möglich, Datenübertragung mit einem
kleinen Overhead auszuführen, ohne daß nicht erforderliche
Änderungen im virtuellen Raum des Nutzerprozesses erforder
lich sind, die nicht in Zusammenhang mit der Datenübertra
gung stehen.
Claims (8)
1. Intraprozessorkommunikationsverfahren in einem Paral
lelprozessorsystem mit mehreren Clustern, von denen jeder
mindestens einen Prozessor (1) und einen von diesem minde
stens einen Prozessor zu nutzenden Hauptspeicher (2) auf
weist, und mit einem Netzwerk (4) zum Verbinden der mehreren
Cluster, wobei mindestens ein Prozeß mit mindestens einem
zugeordneten virtuellen Raum innerhalb jedes der Cluster
ausgeführt wird, unter Steuerung durch ein Betriebssystem,
das jedem der Cluster zugeordnet ist, welches Verfahren
durch folgende Schritte gekennzeichnet ist:
- - Sicherstellen eines im Hauptspeicher residenten reellen Kommunikationsbereichs (13) innerhalb jedes Clusters für je den dem Cluster zugeordneten Prozeß, welcher reelle Kommunikationsbereich in einen virtuellen Kommunikations bereich (11) innerhalb des virtuellen Raums abgebildet wird, der jedem dieser Prozesse zugeordnet ist; und
- - Senden zu übertragender Daten von einem reellen Kommunika tionsbereich (13), der einem Übertragungsursprungsprozeß zu geordnet ist, wie er einem der Cluster zugeordnet ist, an einen reellen Kommunikationsbereich (13), wie er einem Über tragungsempfangsprozeß zugeordnet ist, der einem anderen der Cluster zugeordnet ist.
2. Intraprozessorkommunikationsverfahren in einem Paral
lelprozessorsystem mit mehreren Clustern, von denen jeder
mindestens einen Prozessor (1) und einen von diesem minde
stens einen Prozessor zu nutzenden Hauptspeicher (2) auf
weist, und mit einem Netzwerk (4) zum Verbinden der mehreren
Cluster, wobei mindestens ein Prozeß mit mindestens einem
zugeordneten virtuellen Raum innerhalb jedes der Cluster
ausgeführt wird, unter Steuerung durch ein Betriebssystem,
das jedem der Cluster zugeordnet ist, welches Verfahren
durch folgende Schritte gekennzeichnet ist:
- - Sicherstellen eines im Hauptspeicher residenten reellen Kommunikationsbereichs (13) innerhalb jedes Clusters für je den dem Cluster zugeordneten Prozeß, welcher reelle Kommunikationsbereich in einen virtuellen Kommunikations bereich (11) innerhalb des virtuellen Raums abgebildet wird, der jedem dieser Prozesse zugeordnet ist;
- - Bestimmen innerhalb eines der Cluster (eines Sendeur sprungsclusters), dem ein Prozeß (ein Übertragungsursprungs prozeß) zugeordnet ist, der das Übertragen von Daten anfor dert, von Ortsinformation, die sich auf eine Datenspeicher position innerhalb eines reellen Kommunikationsbereichs be zieht, der einem Prozeß (einem Übertragungsempfangsprozeß) zugeordnet ist, wie er einem anderen der Cluster (einem Übertragungsempfangscluster) zugeordnet ist, auf eine Über tragungsanforderung hin, wie sie durch den Übertragungsur sprungsprozeß ausgegeben wird;
- - Senden, vom Übertragungsursprungscluster an das Übertra gungsempfangscluster, der bestimmten Ortsinformation zusam men mit Übertragungsdaten, die durch den Übertragungsur sprungsprozeß festgelegt wurden, und die in einem reellen Kommunikationsbereich bestehen, wie er dem Übertragungsur sprungsprozeß zugeordnet ist; und
- - Einschreiben der zu übertragenden Daten in eine Position, wie sie durch die Positionsinformation im reellen Kommunika tionsbereich bestimmt wird, der dem Übertragungsempfangspro zeß zugeordnet ist, ohne daß hierzu das Betriebssystem be nutzt wird, das den Übertragungsempfangsprozeß steuert (Fig. 1).
3. Intraprozessorkommunikationsverfahren in einem Paral
lelprozessorsystem mit mehreren Clustern, von denen jedes
mindestens einen Prozessor (501, 502), der unabhängig arbei
ten kann und einen Hauptspeicher (5) aufweist, der von der
Prozessoranordnung mit dem mindestens einen Prozessor ge
meinsam genutzt wird, und mit einem Netzwerk (509) zum Ver
binden der mehreren Cluster, mit mindestens einem virtuellen
Raum, der jedem der mehreren Cluster zugeordnet ist, und mit
mindestens einem Prozeß, der unter Nutzung des virtuellen
Raums unter Steuerung durch ein Betriebssystem ausgeführt
wird, welches Verfahren durch folgende Schritte gekennzeich
net ist:
- - Lesen von Daten, die von einem Prozeß (einem Übertragungs ursprungsprozeß), der in einem der Cluster (einem Übertra gungsursprungscluster) ausgeführt wird, die an einen anderen Prozeß (einen Übertragungsempfangsprozeß) zu übertragen sind, der einem anderen der Cluster (einem Übertragungsem pfangscluster) zugeordnet ist, aus einer Position innerhalb eines Hauptspeichers des Übertragungsursprungsclusters, die einer Position für Sendedaten innerhalb eines virtuellen Raums zugeordnet ist, wie er vom Übertragungsursprungsprozeß verwendet wird, ohne daß hierbei ein Betriebssystem verwen det wird, das den Übertragungsursprungsprozeß steuert;
- - Senden der gelesenen Daten und der relevanten Information an den Übertragungsempfangsprozeß vom Übertragungsursprungs cluster an das Übertragungsempfangscluster;
- - Bestimmen einer Empfangsdatenspeicherposition innerhalb des Übertragungsempfangsclusters, nach dem Empfangen der Da ten, innerhalb eines Hauptspeichers des Übertragungsem pfangsclusters, die einer Position zugeordnet wurde, die für empfangene Daten innerhalb eines virtuellen Raums geschaffen wurde, wie er vom Übertragungsempfangsprozeß verwendet wird, der aufgrund der relevanten Information bestimmt wird; und
- - Einschreiben der übertragenen Daten in die bestimmte Em pfangsdatenspeicherposition, ohne daß hierzu ein Betriebssy stem verwendet wird, das den Übertragungsempfangsprozeß steuert (Fig. 17).
4. Intraprozessorkommunikationsverfahren in einem Paral
lelprozessorsystem mit mehreren Clustern, von denen jedes
mindestens einen Prozessor (501, 502), der unabhängig arbei
ten kann und einen Hauptspeicher (505) aufweist, der von der
Prozessoranordnung mit dem mindestens einen Prozessor ge
meinsam genutzt wird, und mit einem Netzwerk (509) zum Ver
binden der mehreren Cluster, mit mindestens einem virtuellen
Raum, der jedem der mehreren Cluster zugeordnet ist, und mit
mindestens einem Prozeß, der unter Nutzung des virtuellen
Raums unter Steuerung durch ein Betriebssystem ausgeführt
wird, welches Verfahren durch folgende Schritte gekennzeich
net ist:
- - Lesen von Daten, die von einem Prozeß (einem Übertragungs ursprungsprozeß), der in einem der Cluster (einem Übertra gungsursprungscluster) ausgeführt wird, die an einen anderen Prozeß (einen Übertragungsempfangsprozeß) zu übertragen sind, der einem anderen der Cluster (einem Übertragungsem pfangscluster) zugeordnet ist, aus einer Position innerhalb eines Hauptspeichers des Übertragungsursprungsclusters, die einer Position für Sendedaten innerhalb eines virtuellen Raums zugeordnet ist, wie er vom Übertragungsursprungsprozeß verwendet wird, ohne daß hierbei ein Betriebssystem verwen det wird, das den Übertragungsursprungsprozeß steuert;
- - Senden der gelesenen Daten und der relevanten Information an den Übertragungsempfangsprozeß vom Übertragungsursprungs cluster an das Übertragungsempfangscluster, ohne daß hierzu das Betriebssystem des Übertragungsursprungsclusters verwen det wird (Fig. 17).
5. Parallelprozessorsystem mit:
- - mehreren Clustern, von denen jeder mindestens einen Pro zessor (1) und einen Hauptspeicher (2) aufweist, der von dem mindestens einen Prozessor (1) zu benutzen ist; und
- - ein Netzwerk (4) zum Verbinden der mehreren Cluster;
wobei mindestens ein Prozeß mit mindestens einem zugeord
neten virtuellen Raum in jedem der Cluster unter Steuerung
durch ein Betriebssystem ausgeführt wird,
dadurch gekennzeichnet, daß jeder der Cluster folgendes auf
weist:
- - einen reellen Kommunikationsbereich (13), der an einer vorgegebenen Position innerhalb eines virtuellen Raums ange ordnet ist, wie er von jedem Prozeß verwendet wird und für jeden Prozeß vorhanden ist, der jedem der Cluster zugeordnet ist, und in einem Hauptspeicher innerhalb jedes Clusters vorhanden ist, wobei der reelle Kommunikationsbereich in einen virtuellen Kommunikationsbereich (11) mit vorgegebener Größe abgebildet wird und unter einer vorgegebenen Position innerhalb eines von jedem Prozeß verwendeten virtuellen Be reichs angeordnet ist;
- - eine Einrichtung (110) zum Lesen erster Übertragungsdaten, die durch einen ersten Übertragungsursprungsprozeß festge legt werden, der von jedem der Cluster ausgeführt wird, aus einem ersten Kommunikationsbereich, der für den ersten Über tragungsursprungsprozeß vorhanden ist;
- - eine Einrichtung (28) zum Senden der gelesenen ersten Übertragungsdaten an einen ersten Übertragungsempfangsclu ster, der vom ersten Übertragungsursprungsprozeß über das Netzwerk angesprochen wird; und
- - eine Einrichtung (42, 120) zum Empfangen zweiter Übertra gungsdaten, die von einem zweiten Übertragungsursprungspro zeß gesendet wurden, der durch einen anderen Cluster ausge führt wird, und zum Einschreiben der empfangenen zweiten Übertragungsdaten in einen zweiten reellen Kommunikationsbe reich, der dem zweiten Übertragungsempfangsprozeß zugeordnet ist, wie er durch jeden der Cluster ausgeführt wird (Fig. 1).
6. Parallelprozessorsystem mit
- - mehreren Clustern, von denen jeder mindestens einen Pro zessor (501, 502) und einen Hauptspeicher (505) aufweist, der von diesem mindestens einen Prozessor zu nutzen ist;
- - und einem Netzwerk (509) zum Verbinden der mehreren Clu ster;
dadurch gekennzeichnet, daß jeder Cluster folgendes auf
weist:
- - eine Übersetzungseinrichtung (530) die zugeordnet zu jedem ersten Prozeß vorhanden ist, wie er von jedem Cluster ausge führt wird, und die auf einen Datenübertragungsbefehl an spricht, wie er von jedem ersten Prozeß ausgegeben wird, um einen ersten Prozeßidentifizierkode zu übersetzen, wie er durch den Befehl vorgegeben wird, um innerhalb des Systems einen zweiten Prozeß zu identifizieren, bei dem es sich um einen Übertragungsempfangsort für Übertragungsdaten handelt, in einen Satz eines Clusteridentifizierkodes, der einem an deren Cluster zugeordnet ist, in dem der zweite Prozeß exi stiert, und einen Innerhalbclusterprozeßidentifizierkode, der dem zweiten Prozeß zugeordnet ist, um den zweiten Prozeß im zweiten Cluster zu identifizieren; und
- - eine Einrichtung (507), die auf den Datenübertragungsbe fehl zum Übertragen des Clusteridentifizierkodes und des In nerhalbclusterprozeßidentifizierkodes an das Netzwerk an spricht, wie sie von der Übersetzungseinrichtung erhalten werden, zusammen mit den Übertragungsdaten (Fig. 17).
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP05646991A JP3169624B2 (ja) | 1991-03-20 | 1991-03-20 | プロセッサ間通信方法およびそのための並列プロセッサ |
JP03-056469 | 1991-03-20 | ||
JP03-241094 | 1991-09-20 | ||
JP24109491A JP3375649B2 (ja) | 1991-09-20 | 1991-09-20 | 並列計算機 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4208924A1 true DE4208924A1 (de) | 1992-09-24 |
DE4208924B4 DE4208924B4 (de) | 2007-01-11 |
Family
ID=26397419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4208924A Expired - Fee Related DE4208924B4 (de) | 1991-03-20 | 1992-03-19 | Verfahren zur Kommunikation zwischen Prozessoren und Parallelverarbeitungscomputer hierfür |
Country Status (2)
Country | Link |
---|---|
US (1) | US5386566A (de) |
DE (1) | DE4208924B4 (de) |
Families Citing this family (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537623A (en) * | 1993-03-01 | 1996-07-16 | International Business Machines Corporation | Multiple group address recognition |
JP3315779B2 (ja) * | 1993-11-16 | 2002-08-19 | 富士通株式会社 | ディスク装置間のファイル転送装置およびファイル転送方法 |
JPH07262152A (ja) * | 1994-03-24 | 1995-10-13 | Hitachi Ltd | コンピュータシステム |
JP3322754B2 (ja) * | 1994-05-17 | 2002-09-09 | 富士通株式会社 | 並列計算機 |
JP2793517B2 (ja) * | 1995-03-22 | 1998-09-03 | 甲府日本電気株式会社 | データ転送制御装置 |
US5978894A (en) * | 1995-11-27 | 1999-11-02 | Hitachi, Ltd. | Method of interprocessor data transfer using a network, virtual addresses and paging, a buffer, flags, data transfer status information and user accessible storage areas in main memory |
US5963731A (en) * | 1995-12-25 | 1999-10-05 | Hitachi, Ltd. | Method of assisting execution of plural simulation programs for coupled simulation |
US5745781A (en) * | 1995-12-26 | 1998-04-28 | International Business Machines Corporation | Memoryless communications adapter including queueing and matching primitives for scalable distributed parallel computer systems |
US5938746A (en) * | 1996-02-29 | 1999-08-17 | Sanyo Electric Co., Ltd. | System for prioritizing slave input register to receive data transmission via bi-directional data line from master |
US6131141A (en) * | 1996-11-15 | 2000-10-10 | Intelligent Computer Solutions, Inc. | Method of and portable apparatus for determining and utilizing timing parameters for direct duplication of hard disk drives |
US6209041B1 (en) * | 1997-04-04 | 2001-03-27 | Microsoft Corporation | Method and computer program product for reducing inter-buffer data transfers between separate processing components |
US6826763B1 (en) * | 1998-12-11 | 2004-11-30 | Microsoft Corporation | Accelerating a distributed component architecture over a network using a direct marshaling |
JP3376956B2 (ja) * | 1999-05-14 | 2003-02-17 | 日本電気株式会社 | プロセッサ間通信装置 |
US6952741B1 (en) * | 1999-06-30 | 2005-10-04 | Computer Sciences Corporation | System and method for synchronizing copies of data in a computer system |
US6446086B1 (en) | 1999-06-30 | 2002-09-03 | Computer Sciences Corporation | System and method for logging transaction records in a computer system |
US7340426B1 (en) | 1999-07-30 | 2008-03-04 | Computer Sciences Corporation | Event-triggered transaction processing for electronic data interchange |
US6961708B1 (en) | 1999-08-27 | 2005-11-01 | Computer Sciences Corporation | External interface for requesting data from remote systems in a generic fashion |
US6970844B1 (en) | 1999-08-27 | 2005-11-29 | Computer Sciences Corporation | Flow designer for establishing and maintaining assignment and strategy process maps |
JP2001101145A (ja) * | 1999-09-28 | 2001-04-13 | Fujitsu Ltd | 分散メモリ型並列計算機におけるデータ転送方式 |
US7359863B1 (en) | 1999-09-30 | 2008-04-15 | Computer Sciences Corporation | Condition component framework for reinsurance |
US7693731B1 (en) | 1999-09-30 | 2010-04-06 | Computer Sciences Corporation | Business process framework for reinsurance |
US7693844B1 (en) | 1999-10-29 | 2010-04-06 | Computer Sciences Corporation | Configuring processing relationships among entities of an organization |
US6925468B1 (en) | 1999-10-29 | 2005-08-02 | Computer Sciences Corporation | Configuring systems for generating business transaction reports using processing relationships among entities of an organization |
US7363264B1 (en) | 1999-10-29 | 2008-04-22 | Computer Sciences Corporation | Processing business transactions using dynamic database packageset switching |
US7526487B1 (en) | 1999-10-29 | 2009-04-28 | Computer Sciences Corporation | Business transaction processing systems and methods |
US7546304B1 (en) | 1999-10-29 | 2009-06-09 | Computer Sciences Corporation | Configuring keys for use in processing business data |
US7356541B1 (en) | 1999-10-29 | 2008-04-08 | Computer Sciences Corporation | Processing business data using user-configured keys |
US7571171B1 (en) | 1999-10-29 | 2009-08-04 | Computer Sciences Corporation | Smart trigger for use in processing business transactions |
US7353196B1 (en) | 1999-10-29 | 2008-04-01 | Computer Sciences Corporation | Configuring dynamic database packageset switching for use in processing business transactions |
US7571107B1 (en) | 2000-06-23 | 2009-08-04 | Computer Sciences Corporation | System and method for externalization of rules for assessing damages |
US7343307B1 (en) | 2000-06-23 | 2008-03-11 | Computer Sciences Corporation | Dynamic help method and system for an insurance claims processing system |
US7418400B1 (en) | 2000-06-23 | 2008-08-26 | Computer Sciences Corporation | Internet-enabled system and method for assessing damages |
US7430514B1 (en) | 2000-06-23 | 2008-09-30 | Computer Sciences Corporation | System and method for processing insurance claims using a table of contents |
US7430515B1 (en) | 2000-06-23 | 2008-09-30 | Computer Sciences Corporation | System and method for externalization of formulas for assessing damages |
US7398219B1 (en) | 2000-06-23 | 2008-07-08 | Computer Sciences Corporation | System and method for displaying messages using a messages table |
US7095426B1 (en) | 2000-06-23 | 2006-08-22 | Computer Sciences Corporation | Graphical user interface with a hide/show feature for a reference system in an insurance claims processing system |
US7779089B2 (en) * | 2000-09-15 | 2010-08-17 | Invensys Systems, Inc. | Method and system for remote configuration of process data access servers |
US8069062B2 (en) * | 2000-10-02 | 2011-11-29 | Computer Sciences Corporation | Computerized method and system of determining inconsistencies in witness statements relating to an accident |
US7963899B2 (en) * | 2001-07-13 | 2011-06-21 | The Proctor & Gamble Company | Continuous in-line pleating apparatus and process |
JP4681225B2 (ja) * | 2001-10-17 | 2011-05-11 | ベプテック インコーポレイテッド | オペレーティングシステムにわたる通信の方法 |
US7815124B2 (en) * | 2002-04-09 | 2010-10-19 | L-1 Secure Credentialing, Inc. | Image processing techniques for printing identification cards and documents |
US7694887B2 (en) * | 2001-12-24 | 2010-04-13 | L-1 Secure Credentialing, Inc. | Optically variable personalized indicia for identification documents |
EP1459239B1 (de) * | 2001-12-24 | 2012-04-04 | L-1 Secure Credentialing, Inc. | Verdeckte variableninformationen auf id-dokumenten und verfahren zu ihrer herstellung |
WO2003055638A1 (en) | 2001-12-24 | 2003-07-10 | Digimarc Id Systems, Llc | Laser etched security features for identification documents and methods of making same |
US7824029B2 (en) * | 2002-05-10 | 2010-11-02 | L-1 Secure Credentialing, Inc. | Identification card printer-assembler for over the counter card issuing |
US7672860B2 (en) * | 2002-09-09 | 2010-03-02 | Computer Sciences Corporation | Computerized method and system for determining the contribution of defenses to premises liability for an accident |
US20040054557A1 (en) * | 2002-09-09 | 2004-03-18 | Stefan Wahlbin | Computerized method and system for estimating premises liability for an accident |
US7702528B2 (en) * | 2002-09-09 | 2010-04-20 | Computer Sciences Corporation | Computerized method and system for determining breach of duty in premises liability for an accident |
US20040054558A1 (en) * | 2002-09-09 | 2004-03-18 | Stefan Wahlbin | Computerized method and system for determining claimant status in premises liability for an accident |
US20040054556A1 (en) * | 2002-09-09 | 2004-03-18 | Stephan Wahlbin | Computerized method and system for determining causation in premises liability for an accident |
US7124211B2 (en) * | 2002-10-23 | 2006-10-17 | Src Computers, Inc. | System and method for explicit communication of messages between processes running on different nodes in a clustered multiprocessor system |
US20040088199A1 (en) * | 2002-10-31 | 2004-05-06 | Childress Allen B. | Method of forming a business rule |
US7689442B2 (en) * | 2002-10-31 | 2010-03-30 | Computer Science Corporation | Method of generating a graphical display of a business rule with a translation |
US20040088195A1 (en) * | 2002-10-31 | 2004-05-06 | Childress Allen B. | Method of modifying a business rule |
US7451148B2 (en) * | 2002-10-31 | 2008-11-11 | Computer Sciences Corporation | Method of modifying a business rule while tracking the modifications |
US7676387B2 (en) * | 2002-10-31 | 2010-03-09 | Computer Sciences Corporation | Graphical display of business rules |
US20040085357A1 (en) * | 2002-10-31 | 2004-05-06 | Childress Allen B. | Method of generating a graphical display of a business rule and associated business rule elements |
AU2003298731A1 (en) | 2002-11-26 | 2004-06-18 | Digimarc Id Systems | Systems and methods for managing and detecting fraud in image databases used with identification documents |
US7725334B2 (en) * | 2002-11-27 | 2010-05-25 | Computer Sciences Corporation | Computerized method and system for estimating liability for an accident using dynamic generation of questions |
US20040102984A1 (en) * | 2002-11-27 | 2004-05-27 | Stefan Wahlbin | Computerized method and system for estimating liability using recorded vehicle data |
US7809586B2 (en) * | 2002-11-27 | 2010-10-05 | Computer Sciences Corporation | Computerized method and system for estimating an effect on liability using a comparison of the actual speed of a vehicle in an accident and time and distance traveled by the vehicles in a merging vehicle accident |
US7818187B2 (en) * | 2002-11-27 | 2010-10-19 | Computer Sciences Corporation | Computerized method and system for estimating liability |
US7805321B2 (en) * | 2002-11-27 | 2010-09-28 | Computer Sciences Corporation | Computerized method and system for estimating liability for an accident from an investigation of the accident |
US7792690B2 (en) * | 2002-11-27 | 2010-09-07 | Computer Sciences Corporation | Computerized method and system for estimating an effect on liability of the speed of vehicles in an accident and time and distance traveled by the vehicles |
US7702529B2 (en) * | 2002-11-27 | 2010-04-20 | Computer Sciences Corporation | Computerized method and system for estimating an effect on liability using claim data accessed from claim reporting software |
US7660725B2 (en) * | 2002-11-27 | 2010-02-09 | Computer Sciences Corporation | Computerized method and system for estimating an effect on liability based on the stopping distance of vehicles |
US7895063B2 (en) * | 2002-11-27 | 2011-02-22 | Computer Sciences Corporation | Computerized method and system for creating pre-configured claim reports including liability in an accident estimated using a computer system |
US20040103005A1 (en) * | 2002-11-27 | 2004-05-27 | Stefan Wahlbin | Computerized method and system for estimating monetary damages due to injuries in an accident from liability estimated using a computer system |
CA2522551C (en) | 2003-04-16 | 2009-12-22 | Digimarc Corporation | Three dimensional data storage |
US20040215494A1 (en) * | 2003-04-24 | 2004-10-28 | Wahlbin Stefan L. | Method and system for determining monetary amounts in an insurance processing system |
US7895064B2 (en) * | 2003-09-02 | 2011-02-22 | Computer Sciences Corporation | Graphical input display in an insurance processing system |
US20050060205A1 (en) * | 2003-09-02 | 2005-03-17 | Woods Randall K. | Systems and methods for a graphical input display in an insurance processing system |
US20050108063A1 (en) * | 2003-11-05 | 2005-05-19 | Madill Robert P.Jr. | Systems and methods for assessing the potential for fraud in business transactions |
US20050192850A1 (en) * | 2004-03-01 | 2005-09-01 | Lorenz Scott K. | Systems and methods for using data structure language in web services |
US20060059021A1 (en) * | 2004-09-15 | 2006-03-16 | Jim Yulman | Independent adjuster advisor |
US7685319B2 (en) * | 2004-09-28 | 2010-03-23 | Cray Canada Corporation | Low latency communication via memory windows |
US7182415B2 (en) * | 2005-01-07 | 2007-02-27 | Takahiro Yamada | Bookcase and storage unit |
JP2007208594A (ja) * | 2006-02-01 | 2007-08-16 | Seiko Epson Corp | 画像処理装置、画像処理方法及び画像処理プログラム |
US8000986B2 (en) | 2007-06-04 | 2011-08-16 | Computer Sciences Corporation | Claims processing hierarchy for designee |
US8010390B2 (en) * | 2007-06-04 | 2011-08-30 | Computer Sciences Corporation | Claims processing of information requirements |
US8010389B2 (en) * | 2007-06-04 | 2011-08-30 | Computer Sciences Corporation | Multiple policy claims processing |
US8010391B2 (en) | 2007-06-29 | 2011-08-30 | Computer Sciences Corporation | Claims processing hierarchy for insured |
US8244558B2 (en) * | 2008-01-18 | 2012-08-14 | Computer Sciences Corporation | Determining recommended settlement amounts by adjusting values derived from matching similar claims |
JP5132339B2 (ja) * | 2008-01-31 | 2013-01-30 | キヤノン株式会社 | 情報処理装置及びその制御方法、及びコンピュータプログラム |
US8782525B2 (en) * | 2011-07-28 | 2014-07-15 | National Insturments Corporation | Displaying physical signal routing in a diagram of a system |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0326164B1 (de) * | 1988-01-29 | 1997-07-16 | Hitachi, Ltd. | Parallelrechner bestehend aus Prozessorelementen mit einem lokalen Speicher und einem verbesserten Datentransfermechanismus |
US4956771A (en) * | 1988-05-24 | 1990-09-11 | Prime Computer, Inc. | Method for inter-processor data transfer |
WO1990005338A1 (en) * | 1988-11-02 | 1990-05-17 | Hitachi, Ltd. | Virtual computer system having extended memory |
US5121487A (en) * | 1989-02-21 | 1992-06-09 | Sun Microsystems, Inc. | High speed bus with virtual memory data transfer capability using virtual address/data lines |
-
1992
- 1992-03-18 US US07/853,427 patent/US5386566A/en not_active Expired - Lifetime
- 1992-03-19 DE DE4208924A patent/DE4208924B4/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5386566A (en) | 1995-01-31 |
DE4208924B4 (de) | 2007-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4208924A1 (de) | Verfahren zur kommunikation zwischen prozessoren und parallelverarbeitungscomputer hierfuer | |
DE3114961C2 (de) | ||
DE3852928T2 (de) | Datenprozessor mit A/D-Umsetzer, um mehrere analoge Eingabekanäle in Digitaldaten umzusetzen. | |
DE69223303T2 (de) | Verfahren und Gerät für die dynamische Zuweisung von unadressierten Unterbrechungen | |
DE69229473T2 (de) | Verfahren und vorrichtung zum puffern von daten in nachrichtennetzwerkstationen | |
DE3689226T2 (de) | Multiprozessorsystem mit multihierarchischen Ebenen. | |
DE69132195T2 (de) | System für verteilte Mehrfachrechnerkommunikation | |
DE69424114T2 (de) | Nachrichtenübertragungssystem für Multiprozessorsystem mit verteiltem gemeinsamen Speicher und dazu gehöriges Nachrichtenübertragungsverfahren | |
DE69730276T2 (de) | Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes | |
DE3127349C2 (de) | ||
DE69022716T2 (de) | Mehrrechnersystem mit verteilten gemeinsamen Betriebsmitteln und dynamischer und selektiver Vervielfältigung globaler Daten und Verfahren dafür. | |
DE3689990T2 (de) | Flexible Datenübertragung für nachrichtenorientierte Protokolle. | |
DE69701078T2 (de) | Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedener Prozessoren | |
DE69836778T2 (de) | Vorrichtung und Verfahren zur Fernpufferspeicherzuordnung und Verwaltung für Nachrichtenübertragung zwischen Netzknoten | |
DE3751399T2 (de) | Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen. | |
DE69433293T2 (de) | Netzwerkübertragungsverfahren für Systeme mit virtuellem Speicher | |
DE69331024T2 (de) | Verfahren und Vorrichtungen zur Bildung von Protokollen | |
DE69024078T2 (de) | Mehrprozessoranordnung mit Vervielfältigung von globalen Daten und mit zwei Stufen von Adressübersetzungseinheiten | |
DE69131840T2 (de) | Verfahren zur Vervielfältigung eines geteilten Speichers | |
DE602004012492T2 (de) | DMA-Steuerung mit Busbesetzungszeit-Beschränkung sowie DMA-Parametersätze für mehrere logische Prozessoren | |
DE2243956A1 (de) | Speicherprogrammierte datenverarbeitungsanlage | |
DE69708933T2 (de) | Adressenuebersetzung in rechnerbusbrueckegeraeten | |
EP0006164B1 (de) | Multiprozessorsystem mit gemeinsam benutzbaren Speichern | |
DE3741850A1 (de) | Ausfuehrungseinheit fuer einen i/o-prozessor | |
DE69620070T2 (de) | Vielfachknoten-Datenverarbeitungssystem und Verfahren zur Übertragung von Nachrichten in diesem Vielfachknoten-Datenverarbeitungssystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8125 | Change of the main classification |
Ipc: G06F 15/163 |
|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |