DE3741953A1 - Multiprozessorsystem und verfahren zur arbeitslastverteilung bei einem solchen - Google Patents
Multiprozessorsystem und verfahren zur arbeitslastverteilung bei einem solchenInfo
- Publication number
- DE3741953A1 DE3741953A1 DE19873741953 DE3741953A DE3741953A1 DE 3741953 A1 DE3741953 A1 DE 3741953A1 DE 19873741953 DE19873741953 DE 19873741953 DE 3741953 A DE3741953 A DE 3741953A DE 3741953 A1 DE3741953 A1 DE 3741953A1
- Authority
- DE
- Germany
- Prior art keywords
- processor
- information
- processors
- work
- multiprocessor system
- 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.)
- Ceased
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/313—Logic programming, e.g. PROLOG programming language
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Multi Processors (AREA)
Description
Die Erfindung bezieht sich auf ein Multiprozessorsystem und ein Verfahren
zur Arbeitslastverteilung bei einem solchen, insbesondere bezieht sich
die Erfindung auf ein Multiprozessorsystem, das eine Vielzahl von Prozessoren
und ein Netzwerk aufweist. Die Erfindung bezieht sich ferner insbesondere
auf ein Verfahren zur Arbeitslastverteilung in einem Multiprozessorsystem,
bei dem eine vorgegebene Arbeitsaufgabe in eine Vielzahl
von Arbeitssegmenten unterteilt wird und jedes Arbeitssegment dynamisch
einem vorgegebenen Prozessor während des Betriebs des Multiprozessorsystems
zugeteilt wird.
Multiprozessorsysteme nach dem Stand der Technik weisen eine Vielzahl
von Prozessoren und ein Verbindungsnetzwerk auf. Wenn eine bestimmte
in einer logischen Programmiersprache (beispielsweise Prolog) geschriebene
Arbeitsaufgabe parallel in einem konventionellen Multiprozessorsystem
durchgeführt wird, wird die vorgeschriebene Arbeitsaufgabe (oder das
Ursprungsziel) in eine Vielzahl von Arbeitssegmenten aufgeteilt, die den
einzelnen Prozessoren in einer einleitenden Arbeitslastverteilungsstufe
zugeordnet werden. Im einzelnen wird daher ein erstes Anfangsarbeitssegment
einem ersten Prozessor zugeordnet, in dem Daten erhalten werden,
die das Bearbeitungsergebnis des ersten Anfangsarbeitssegmentes
darstellen. Diese Daten müssen an einen zweiten Prozessor weitergeleitet
werden, der ein zweites Anfangsarbeitssegment unter Verwendung der
Daten durchführt. Das bedeutet, daß die Daten des ersten Verarbeitungsergebnisses
in dem momentan arbeitenden Prozessor an den nächsten
Prozessor übergeben werden müssen, der in diesem Zustand untätig ist,
und der die Bearbeitung des Anfangsarbeitssegmentes unter Verwendung
der oben genannten Daten starten wird. Wie oben beschrieben, werden
die Anfangsarbeitssegmente sequentiell den Prozessoren der Reihe nach
zugeordnet. Bei einem konventionellen Multiprozessorsystem ist daher
eine lange Arbeitszeit erforderlich, bevor die vorgegebene Arbeitsaufgabe
in diesem parallel bearbeitet wird. In dem Zeitpunkt, wenn die Anfangsaufgabe
einem Prozessor zugeteilt wird, sind die anderen
Prozessoren des Multiprozessorsystems untätig. Ein einziger Prozessor
muß die vorgegebene Anfangsaufgabe in mehrere Anfangsarbeitssegmente
aufteilen, die den anderen Prozessoren zugeordnet werden. Darüber
hinaus muß in einem konventionellen Multiprozessorsystem ein Netzwerk
vorgesehen sein, um eine Information über die vorgegebene zu
verteilende Anfangsarbeitsaufgabe zu übertragen. Aus diesem Grund kann
ein konventionelles Multiprozessorsystem die Arbeitsaufgabenverteilung
der Anfangsaufgabe nicht mit hoher Geschwindigkeit durchführen. Es ist
zwar möglich eine Leistungsverbesserung infolge des Paralleleffektes bei
der Abkürzung von Verarbeitungszeiten zu erreichen (im folgenden wird
hierzu von "Paralleleffekt" gesprochen), wenn eine vorgegebene Aufgabe
parallel in konventionellen Multiprozessorsystem bearbeitet wird.
Wegen des oben erläuterten Grundes kann jedoch in konventionellen
Multiprozessorsystemen der Paralleleffekt nicht (jedenfalls nicht
zufriedenstellend) ausgenutzt werden. Darüber hinaus muß der oben genannte
Prozessor, der mit der Anfangsarbeitsaufgabe beaufschlagt wird,
einen gewissen Teil der darin enthaltenen Information an die anderen Prozessoren
weitergeben, so daß die zu übertragende Informationsmenge vergrößert
wird. Ein weiteres Problem, das sich bei konventionellen Multiprozessorsystemen
stellt, liegt darin, daß eine gesteigerte Datenübertragungsfähigkeit
mit Hochgeschwindigkeit zur Übertragung von großen
Datenmengen für das Netzwerksystem erforderlich ist.
Nachfolgend werden die oben genannten Probleme im Detail erläutert,
unter Berücksichtigung des Umstandes, daß ein Programm in einer logischen
Programmiersprache (beispielsweise Prolog) in dem konventionellen
Multiprozessorsystem verarbeitet wird. Bei einem Prozeß zur sequentiellen
Durchführung des Prolog-Programms (in Fig. 2 dargestellt), wird
eine bestimmte Priorität vorgegeben, (d. h. zuerst Suchen in der Tiefe), so
daß die Zweige eines Entscheidungsbaumes des Prolog-Programmes von
oben nach unten und von links nach rechts abgesucht werden. Wenn das
System nicht den richtigen (oder gewünschten) Zweig während der Recherche
herausfindet, läuft das System zu dem vorausgegangenen Knoten zurück
und durchsucht alle an diesen angeschlossenen Zweige, um den
richtigen Zweig herauszufinden.
Bei einem anderen Verfahren zur Durchführung eines Prologprogrammes
in Parallelverarbeitung, suchen eine Vielzahl von Prozessoren einen bestimmten
Abschnitt oder alle Abschnitte eines Entscheidungsbaumes ab,
um die richtigen Zweige in einer Suche herauszufinden, bei der mit Priorität
in die Breite gesucht wird. Ein solcher Prozeß wird eine ODER-Parallel-
Verarbeitung genannt, bei der alle Zweige des Entscheidungsbaumes
in mehrere Abschnitte (im folgenden "ODER-Prozesse" genannt) unterteilt
werden, wobei zu jedem Abschnitt eine gewisse Anzahl von Zweigen
gehört und alle "ODER-Prozesse" jeweils den untätigen Prozessoren
zugeordnet werden, wenn das System mit der Anfangsaufgabe
beaufschlagt wird. In diesem Fall muß eine zur Durchführung eines jeden
ODER-Prozesses notwendige Information an den jeweiligen untätigen
Prozessor geliefert werden.
Wie vorstehend beschrieben, muß ein einziger Prozessor, der mit der Anfangsaufgabe
beaufschlagt wird, diese in mehrere Anfangsarbeitssegmente
unterteilen, die den anderen untätigen Prozessoren in der Anfangsarbeitsverteilstufe
zugeordnet werden. Aus diesem Grund kann ein konventionelles
System die Anfangsaufgabenverteilung nicht mit hoher Geschwindigkeit
durchführen.
Wenn inzwischen die Aufgabenverteilung zwischen dem ersten und
zweiten Prozessor des Multiprozessorsystems durchgeführt ist, ist es
wünschenswert, daß der erste und der zweite Prozessor unabhängig mit
den entsprechenden Prozessoren fortfahren können, ohne daß
Arbeitsrahmendaten von dem ersten Prozessor an den zweiten Prozessor
übertragen werden.
Um die oben erwähnte Arbeitsaufgabenverteilung bei einem konventionellen
Multiprozessorsystem zu erreichen, muß ein für den zweiten
Prozessor notwendiger bestimmter Arbeitsrahmen aus den Arbeitsrahmen
ausgewählt werden, die bei der Durchführung bestimmter Prozesse in
dem ersten Prozessor erhalten werden, bevor die Arbeitsaufgabenverteilung
in dem ersten Prozessor ausgeführt wird, und der auf diese Weise
vorgegebene Arbeitsrahmen muß an den zweiten Prozessor übertragen
werden.
In anderen Worten, der oben erwähnte Arbeitsrahmen ist identisch mit
den Informationen, die bei der Durchführung vorgegebener Prozesse, mit
Ausnahme des Aufgabenverteilungsprozesses, in dem ersten Prozessor
erhalten werden. Ein solcher vorgegebener Arbeitsrahmen ist für den
zweiten Prozessor notwendig, wenn ein gewisser Teil der in dem ersten
Prozessor durchzuführenden Arbeitsaufgabe dem zweiten Prozessor
zugeteilt und von diesem durchgeführt wird. Zusätzlich muß der für den
Arbeitsrahmen repräsentative Informationsumfang in dem Maße
vergrößert werden, in dem das System die vorgegebene Aufgabe
abarbeitet. Aus diesem Grund muß eine große Informationsmenge an die
anderen Prozessoren übertragen werden, wenn die Arbeitsverteilung
durchgeführt wird, nachdem ein langer Prozeß in jedem Prozessor läuft.
Wie vorstehend beschrieben, muß der erste Prozessor die Durchführung
des ursprünglichen Prozesses stoppen, um den für die Arbeitsverteilung
erforderlichen Arbeitsrahmen aus den Arbeitsrahmen auszuwählen (in
einer Arbeitslasterzeugungsstufe). Sodann muß der auf diese Weise
bestimmte Arbeitsrahmen, der eine große Informationsmenge umfaßt, an
den zweiten Prozessor übertragen werden. Dann muß der zweite Prozessor
die übertragene Information speichern (in einer Aufgabenspeicherstufe),
so daß die eigentliche Verarbeitung dieser Information stattfinden
kann. Im einzelnen muß eine Datenkonvertierung stattfinden, um die
Information mittels des Netzwerksystems zu übertragen. In der vorliegenden
Beschreibung wird der Begriff Datenkonvertierung so verstanden,
daß er die Aufgabenerzeugung und Aufgabenspeicherung umfaßt.
Wie in Fig. 1 veranschaulicht geht mit der oben erwähnten Arbeitsaufgabenverteilung
in einem konventionellen Multiprozessorsystem zwangsläufig
eine Organisationszeit einher. Der erste Prozessor in Fig. 1 kann
eine erste Organisationszeit nicht vermeiden. Gleichermaßen ist eine
Organisationszeit für den zweiten Prozessor unvermeidbar.
Infolge der mit der Aufgabenverteilung verbundenen Organisationszeit
(oder insbesondere infolge des Anhaltens des Prozesses in dem ersten
Prozessor), kann jeder Prozessor nicht seine volle Leistungsfähigkeit in
jeder Zeiteinheit einbringen. Darüber hinaus muß die Arbeitsaufgabenverteilung
zwischen den Prozessoren an willkürlichen und asynchronen Zeitpunkten
durchgeführt werden. Konventionelle Multiprozessoren können daher
nicht (jedenfalls nicht vollumfänglich) den oben erläuterten Paralleleffekt
herbeiführen. Dieser Paralleleffekt kann aus der Gesamtleistungsfähigkeit
beurteilt werden, die sich aus folgender Formel ergibt: (Gesamtleistungsfähigkeit)
= (Leistungsfähigkeit eines jeden Prozessors) × (Zahl
der Prozessoren, die parallel zur Verarbeitung einer bestimmten Aufgabe
betrieben werden). Ein konventionelles System benötigt daher ein teueres
Netzwerksystem, das große Informationsmengen zu willkürlichen und
asynchronen Taktzeiten überträgt. Für die Übertragung der großen Datenmengen,
muß das Netzwerksystem für eine lange Zeit belegt werden, so
daß es schwierig ist, die Arbeitsaufgabenverteilung zwischen den einzelnen
Prozessoren ordnungsgemäß durchzuführen. Ein Nachteil der konventionellen
Systeme liegt folglich auch darin, daß keine befriedigende, also
eine ungleichmäßige Arbeitsverteilung stattfindet.
Gemessen an der kürzlich erzielten Verbesserung der Verarbeitungsgeschwindigkeit
eines Prozessors, ist die Verbesserung für die Datenübertragungsgeschwindigkeit
eines Netzwerksystems innerhalb eines Multiprozessorsystems
ziemlich klein. Die Kommunikationszeit des Netzwerksystems
wird daher leicht größer als die Verarbeitungszeit des Prozessors. Hieraus
ergibt sich, daß das oben erwähnte Problem sehr ernsthaft ist. Je
größer die Zahl der Prozessoren eines Multiprozessorsystems ist, umso bedeutsamer
ist die Datenkommunikationszeit.
Im folgenden wird das oben erwähnte Problem konkret in Verbindung mit
Fig. 2 erläutert, für den Fall, daß ein Prolog-Programm parallel in
einem Multiprozessorsystem ausgeführt wird.
Wenn der erste Prozessor die Arbeitsverteilung auf den zweiten Prozessor
in der oben beschriebenen "ODER-Parallel-Verarbeitung" vornimmt,
teilt der erste Prozessor einen "ODER-Prozeß" von allen Zweigen des
Entscheidungsbaumes ab und der abgeteilte ODER-Prozeß wird dem
zweiten Prozessor zugeteilt.
In diesem Fall können Transferdaten (Daten, die von dem ersten Prozessor
an den zweiten Prozessor übertragen werden) in erste und zweite
Transferdaten unterteilt werden. Die ersten Transferdaten stellen die
Information des abgeteilten ODER-Prozesses dar. Die zweiten Transferdaten
stellen die Information des abgeteilten ODER-Prozesses und eine
weitere Information dar, die erforderlich ist, um den abgeteilten
ODER-Prozeß durchzuführen.
Der erste Prozessor muß die oben erwähnten Übertragungsdaten an den
zweiten Prozessor übertragen, wenn der erste und der zweite Prozessor
unabhängig voneinander entsprechende Arbeitsprozesse nach der Aufgabenverteilung
durchführen. Dies ist erforderlich, weil der zweite Prozessor
sich auf den Arbeitsrahmen des ersten Prozessor beziehen muß, wenn der
erste Prozessor die ersten Übertragungsdaten anstelle der zweiten Übertragungsdaten
an den zweiten Prozessor überträgt.
Die zweiten Übertragungsdaten müssen jedoch Daten enthalten, die repräsentativ
für die große Informationsmenge des Arbeitsrahmens des ersten
Prozessors sind, die erforderlich ist, um den abgeteilten ODER-Prozeß
durchzuführen. Dieser Arbeitsrahmen bei der Prolog-Durchführung
schließt "Bindungsinformation" ein, die für eine Verbindungsbeziehung
zwischen Variablen und Werten repräsentativ ist, und "Steuerinformation"
für die Steuerung des Rückwärtssuchlaufs des Prolog-Programms
beispielsweise.
Der oben erwähnte Arbeitsrahmen wird durch den ersten Prozessor vor
dem Durchführen der Arbeitsaufgabenverteilung erzeugt. Der zweite
Prozessor benötigt diesen Arbeitsrahmen zur Durchführung des
abgeteilten ODER-Prozesses, nachdem die Arbeitsaufgabenverteilung
durchgeführt ist. Wenn der zweite Prozessor unabhängig eine Lösung
(oder ein Prozeßergebnis) der Ursprungsaufgabe infolge der Durchführung
eines abgeteilten ODER-Prozesses erzielt, kann es sein, daß der zweite
Prozessor die ganze Bindungsinformation benötigt, die durch den ersten
Prozessor erzeugt wird, und zwar zwischen einem Zeitpunkt, an dem die
Beaufschlagung mit der Ursprungsaufgabe erfolgt und einem Zeitpunkt,
an dem der erste Prozessor mit der Arbeitsaufgabenverteilung beginnt.
Zusätzlich muß der Umfang dieser Bindungsinformation nahezu
proportional zu der Verarbeitungszeit vergrößert werden. Aus diesem
Grund muß der erste Prozessor eine große Informationsmenge, die
repräsentativ für seinen Arbeitsrahmen ist, an den zweiten Prozessor
übertragen, wenn der erste Prozessor die Arbeitsverteilung auf den
zweiten Prozessor durchführt, nachdem eine lange Verarbeitungszeit
verstrichen ist. Da der erste Prozessor den ODER-Prozeß abteilen und
eine große Datenmenge des Arbeitsrahmens dafür zu jeder Zeit
übertragen muß, wenn der erste Prozessor die Arbeitzuweisung auf den
zweiten Prozessor durchführt, muß die Durchführung des Ursprungsprozesses
des ersten Prozessors intermittierend gestoppt werden. Da andererseits
der zweite Prozessor den Arbeitsrahmen des ersten Prozessors zu
jedem Zeitpunkt erhält, wenn die Arbeitsverteilung durchgeführt wird,
muß die Verarbeitung des Ursprungsprozesses des zweiten Prozessors
gestoppt werden, um die großen Datenmengen des Arbeitsrahmens des
ersten Prozessors aufnehmen und die so übertragenen Informationen
speichern zu können.
Infolge dessen kann jeder Prozessor nicht seine volle Leistungsfähigkeit
entfalten. Zusätzlich ist die Arbeitsverteilung zwischen den Prozessoren
zu willkürlichen und asynchronen Zeitpunkten erforderlich. Aus diesen
Gründen weisen Multiprozessorsysteme der bekannten Art den Nachteil
auf, daß es nicht möglich ist, in vollem Umfange den oben beschriebenen
Paralleleffekt zu erreichen.
Des weiteren erfordert ein konventionelles System ein teueres Netzwerksystem,
um große Datenmengen zu willkürlichen und asynchronen Zeittakten
zu übertragen. In diesem Fall ist das Netzwerksystem für eine lange
Zeit blockiert, um die großen Datenmengen zu übertragen. Es wird daher
nahezu unmöglich, die Aufgabenverteilung zwischen den einzelnen
Prozessoren durchzuführen. Infolge dessen findet eine ungleichmäßige
Aufgabenverteilung statt, wie oben beschrieben.
Das oben beschriebene Problem wird besonders ernst in einer neulich entwickelten,
sequentiellen Entscheidungsmaschine (oder Prolog-Maschine),
die sequentiell selbst die Entscheidung mit hoher Geschwindigkeit durchführen
kann. Wenn das Multiprozessorsystem tausend solcher Maschinen
(d. h. Prozessoren) steuert, und zwar weitgehend parallel, entsteht das Problem,
daß die Verbesserung hinsichtlich der Datenübertragungsgeschwindigkeit
des Netzwerkes kleiner ist als die Verbesserung hinsichtlich der
Verarbeitungsgeschwindigkeit einer jeden Maschine, wie vorstehend
erwähnt. Mit zunehmender Zahl der Prozessoren innerhalb des Multiprozessorsystems
wird die oben erwähnte Wirkung beachtlich.
Die sequentielle Entscheidungsmaschine mit einer Kapazität von einem
MLIPS (=1 Mill. logischer Entscheidungen pro Sekunde=Mega Logical Inference
Per Second) erzeugt den Arbeitsrahmen mit einem Informationsgehalt
von etwa 5 MW (=5 Megawörter) (im Falle von 40 Bit/pro Wort).
Beispielsweise eine serielle Schnittstelle von 10 MBPS (=zehn Mega Bit
pro Sekunde) ist zwischen zwei gegenseitig benachbarten Prozessoren als
Netzwerksystem erforderlich, das alle der tausend sequentiellen Entscheidungsmaschinen
verbindet, die in dem Multiprozessorsystem vorgesehen
sind. In diesem Fall ist es möglich Daten von 0,25 MW (10 MBPS
dividiert durch 40 Bit/Wort) pro Sekunde zu übertragen, die für den Arbeitsrahmen
zwischen zwei gegenseitig benachbarten Prozessoren respräsentativ
sind.
In diesem Fall ist das Verhältnis der Zeit für die Entscheidungsdurchführung
zu der Übertragungszeit des Netzwerksystems etwa ½₀, wobei der
Wert 20 sich aus der Division 5 MW durch 0,25 MW ergibt. Aufgrund der
Aufgabenverteilung (oder aufgrund der Übertragung der großen Informationsmengen
im Besonderen), muß die sequentielle Entscheidungsmaschine
(d. h. der Prozessor) mit der Durchführung des ursprünglichen Entscheidungsprozesses
für eine lange Zeit aussetzen. Aus diesem Grunde verringert
sich die scheinbare Leistungsfähigkeit der sequentiellen Entscheidungsmaschine.
Da die aktiven Prozessoren und das Netzwerksystem mit der Übertragung
der Arbeitsrahmeninformation für eine lange Zeit blockiert sind, ist es unmöglich,
die erforderliche Arbeitsverteilung durchzuführen, so daß die
Verfügbarkeit des Prozessors und somit der Parallelverarbeitungsprozeß
des Multiprozessorsystems geringer ist.
Es ist daher eine Hauptaufgabe der Erfindung ein Verfahren zur Arbeitsaufgabenverteilung
in einem Multiprozessorsystem zu schaffen, bei dem
ein großer Paralleleffekt erzielt wird, und bei dem die gleichmäßige
Verteilung der Anfangsaufgabe mit hoher Geschwindigkeit durchgeführt
wird, wenn das Programm in einer logischen Programmiersprache parallel
in dem Multiprozessorsystem ausgeführt wird.
Der Erfindung liegt des weiteren die Aufgabe zugrunde, ein Verfahren
zur Aufgabenlastverteilung in einem Multiprozessorsystem zu schaffen,
bei der die zwischen den Prozessoren auszutauschende Informationsmenge
erheblich reduziert ist, so daß die Arbeitslastverteilung mit großer Geschwindigkeit
und ohne intermittierendes Unterbrechen der Durchführung
des eigentlichen Prozesses eines jeden Prozessors ausgeführt werden
kann, so daß ein großer Paralleleffekt erhältlich ist, selbst dann, wenn
das Multiprozessorsystem mit einem relativ preiswerten Netzwerksystem
ausgestattet ist.
Ein erster Aspekt der Erfindung besteht darin, daß ein Multiprozessorsystem
zur Verfügung gestellt wird, in dem eine vorgegebene Arbeitsaufgabe
in einer bestimmten Programmiersprache verarbeitet wird, welcher
Multiprozessor
eine Vielzahl von Prozessoren und ein die Prozessoren verbindendes
Netzwerk aufweist,
wobei jeder Prozessor folgendes aufweist:
- a) erste Mittel zur Speicherung einer Systeminformation, die Symbole des Multiprozessorsystems darstellt und
- b) zweite Mittel für die automatische und dynamische Auswahl eines spezifischen Anfangsarbeitssegmentes aus der vorgegebenen Arbeitsaufgabe unter Verwendung der Systeminformation, ohne Informationsübertragung zwischen den Prozessoren, wobei eine Gleichverteilung der Arbeitsbelastung in dem Multiprozessorsystem erreicht wird.
Gemäß einem zweiten Aspekt der Erfindung wird ein Multiprozessorsystem
zur Verarbeitung einer vorgegebenen Arbeitsaufgabe in einer vorgegebenen
Programmiersprache bereitgestellt, das
eine Vielzahl von Prozessoren und ein die Prozessoren verbindendes
Netzwerksystem aufweist,
wobei jeder Prozessor folgendes aufweist:
- a) erste Mittel zur Erzeugung einer Geschichtinformation, deren Umfang geringer ist als der Information, die für den gesamten Arbeitsrahmen eines Quellenprozessors respräsentativ ist, während ein bestimmtes, jedem Prozessor zugewiesenes Arbeitssegment, abgearbeitet wird,
- b) zweite Mittel zum Übertragen der Geschichtsinformation an einen Zielprozessor während das Multiprozessorsystem betrieben wird,
- c) dritte Mittel zur Erzeugung des Arbeitsrahmens des Quellenprozessors mithilfe der Geschichtsinformation, die von einem Quellenprozessor übertragen wird und
- d) vierte Mittel zur Durchführung des speziellen Arbeitssegmentes unter Verwendung des reproduzierenden Arbeitsrahmens des Quellenprozessors, wobei eine Aufgabenlastverteilung in dem Multiprozessorsystem erzielt wird.
Gemäß einem dritten Aspekt der Erfindung wird ein Verfahren zur Aufgabengleichverteilung
in einem Multiprozessorsystem geschaffen, das eine
Vielzahl von Prozessoren und ein die Prozessoren verbindendes Netzwerk
aufweist,
wobei eine vorgegebene Arbeitsaufgabe in einer bestimmten
Programmiersprache geschrieben ist,
eine Systeminformtion, die repräsentativ für Symbole des Multiprozessorsystems
ist, gespeichert wird, ein spezifisches Anfangsarbeitssegment
für jeden Prozessor aus der vorgegebenen Arbeitsaufgabe unter
Verwendung der Systeminformation ohne Datenübertragung zwischen den
Prozessoren automatisch und dynamisch ausgewählt wird, und daß das
spezfische Anfangsarbeitssegment in jedem Prozessor unabhängig
abgearbeitet wird, wobei eine Gleichverteilung der Anfangsaufgabe in
dem Multiprozessorsystem erreicht wird.
Gemäß einem vierten Aspekt der Erfindung wird ein Verfahren zur Arbeitslastverteilung
in einem Multiprozessorsystem geschaffen, das eine
Vielzahl von Prozessoren und ein die Prozessoren verbindendes Netzwerk
aufweist,
wobei die Arbeitsaufgabe in einer vorgegebenen Programmiersprache
geschrieben ist,
eine Geschichtsinformation in einem ersten Prozessor erzeugt wird, deren Umfang kleiner als der Umfang der Arbeitsrahmeninformation des ersten Prozessors ist, während der erste Prozessor ein an ihn übermitteltes spezifisches Arbeitssegment abarbeitet,
die Geschichtsinformation vom ersten Prozessor auf einen zweiten Prozessor während des Betriebs des Multiprozessorsystems übertragen wird,
der Arbeitsrahmen des ersten Prozessors im zweiten Prozessor unter Verwendung der Geschichtsinformation reproduziert wird, die von dem ersten Prozessor dynamisch übertragen wird und
ein spezifisches Arbeitssegment des zweiten Prozessors in diesem unter Verwendung des reproduzierten Arbeitsrahmens des ersten Prozessors abgearbeitet wird, wobei eine Arbeitslastverteilung zwischen dem ersten und zweiten Prozessor erzielt und ein partielles Arbeitssegment des ersten Prozessors an den zweiten Prozessor abgegeben wird.
eine Geschichtsinformation in einem ersten Prozessor erzeugt wird, deren Umfang kleiner als der Umfang der Arbeitsrahmeninformation des ersten Prozessors ist, während der erste Prozessor ein an ihn übermitteltes spezifisches Arbeitssegment abarbeitet,
die Geschichtsinformation vom ersten Prozessor auf einen zweiten Prozessor während des Betriebs des Multiprozessorsystems übertragen wird,
der Arbeitsrahmen des ersten Prozessors im zweiten Prozessor unter Verwendung der Geschichtsinformation reproduziert wird, die von dem ersten Prozessor dynamisch übertragen wird und
ein spezifisches Arbeitssegment des zweiten Prozessors in diesem unter Verwendung des reproduzierten Arbeitsrahmens des ersten Prozessors abgearbeitet wird, wobei eine Arbeitslastverteilung zwischen dem ersten und zweiten Prozessor erzielt und ein partielles Arbeitssegment des ersten Prozessors an den zweiten Prozessor abgegeben wird.
Gemäß einem fünften Aspekt der Erfindung wird ein Verfahren zur
Arbeitslastverteilung in einem Multiprozessorsystem geschaffen, das eine
Vielzahl von Prozessoren und ein die Prozessoren verbindendes Netzwerk
aufweist, wobei das Multiprozessorsystem mit einem in einer bestimmten
Programmiersprache geschriebenen Programm beaufschlagt ist, wobei
ferner
eine Systeminformation, die für Symbole des Multiprozessorsystems
repräsentativ ist, gespeichert wird,
eine spezifisches Anfangsarbeitssegment für jeden Prozessor aus der vorgegebenen Arbeitsaufgabe unter Verwendung der Systeminformation ohne Informationsübertragung zwischen den Prozessoren automatisch und dynamisch ausgewählt wird,
ein spezifisches Anfangsarbeitssegment in jedem Prozessor unabhängig abgearbeitet wird, wobei eine Anfangsaufgabenverteilung in dem Multiprozessorsystem erhalten wird,
eine Geschichtsinformation in einem ersten Prozessor erzeugt wird, deren Umfang geringer als der Umfang der Information des gesamten Arbeitsrahmens des ersten Prozessors ist, während der erste Prozessor ein spezifisches ihm zugewiesenes Arbeitssegment abarbeitet,
die Geschichtsinformation von dem ersten Prozessor zu dem zweiten Prozessor während des Betriebs des Multiprozessorsystems übertragen wird,
der Arbeitsrahmen des ersten Prozessors in dem zweiten Prozessor unter Verwendung der von dem ersten Prozessor dynamisch übertragenen Geschichtsinformation reproduziert wird und
ein spezifisches Arbeitssegment des zweiten Prozessors in diesem unter Verwendung des reproduzierten Arbeitsrahmens des ersten Prozessors abgearbeitet wird, wobei eine Arbeitslastgleichverteilung zwischen dem ersten und zweiten Prozessor erzielt wird und ein partielles Arbeitssegment des ersten Prozessors an den zweiten Prozessor abgegeben wird.
eine spezifisches Anfangsarbeitssegment für jeden Prozessor aus der vorgegebenen Arbeitsaufgabe unter Verwendung der Systeminformation ohne Informationsübertragung zwischen den Prozessoren automatisch und dynamisch ausgewählt wird,
ein spezifisches Anfangsarbeitssegment in jedem Prozessor unabhängig abgearbeitet wird, wobei eine Anfangsaufgabenverteilung in dem Multiprozessorsystem erhalten wird,
eine Geschichtsinformation in einem ersten Prozessor erzeugt wird, deren Umfang geringer als der Umfang der Information des gesamten Arbeitsrahmens des ersten Prozessors ist, während der erste Prozessor ein spezifisches ihm zugewiesenes Arbeitssegment abarbeitet,
die Geschichtsinformation von dem ersten Prozessor zu dem zweiten Prozessor während des Betriebs des Multiprozessorsystems übertragen wird,
der Arbeitsrahmen des ersten Prozessors in dem zweiten Prozessor unter Verwendung der von dem ersten Prozessor dynamisch übertragenen Geschichtsinformation reproduziert wird und
ein spezifisches Arbeitssegment des zweiten Prozessors in diesem unter Verwendung des reproduzierten Arbeitsrahmens des ersten Prozessors abgearbeitet wird, wobei eine Arbeitslastgleichverteilung zwischen dem ersten und zweiten Prozessor erzielt wird und ein partielles Arbeitssegment des ersten Prozessors an den zweiten Prozessor abgegeben wird.
Weitere Aufgaben und Vorteile der Erfindung werden aus der nachfolgenden
Beschreibung unter Bezugnahme auf die Zeichnungen ersichtlich, in
denen vorteilhafte Ausführungsformen der Erfindung gezeigt sind.
In den Zeichnungen zeigt
Fig. 1 Zeitdiagramme zur Erläuterung der unvermeidlichen
Organisationszeit, die bei der Arbeitslastverteilung
in einem konventionellen Multiprozessorsystem
auftritt;
Fig. 2 ein Beispiel eines Entscheidungsbaumes zur Darstellung
einer Lösung des Prolog-Programms;
Fig. 3 ein Blockschaltbild einer Ausführungsform des gesamten
Aufbaus eines Multiprozessorsystems gemäß der
Erfindung;
Fig. 4 ein Blockschaltbild einer ersten Ausführungsform
des Prozessors, der in dem Multiprozessorsystem
gemäß der Erfindung enthalten ist;
Fig. 5 und 6 Entscheidungsbäume zur Erläuterung der Anfangslastverteilung
der Anfangsaufgabe, wie sie in dem
Multiprozessorsystem gemäß der Erfindung durchgeführt
wird;
Fig. 7 und 8 jeweils Blockschaltbilder einer zweiten Ausführungsform
des Prozessors innerhalb des Multiprozessorsystems
gemäß der Erfindung;
Fig. 9 einen Partialentscheidungsbaum der logischen Programmiersprache
zur Erläuterung des Herstellungsvorganges der Geschichtsinformation (repräsentiert
durch Daten aus drei oder fünf Wörtern), die in den ersten Prozessor übertragen
werden muß;
Fig. 10 einen Partialentscheidungsbaum zur Erläuterung
eines Reproduktionsprozesses zum Reproduzieren
des erforderlichen Arbeitsrahmens unter
Verwendung der übertragenen Geschichtsinformation
(repräsentiert durch Daten aus drei Wörtern)
in dem zweiten Prozessor;
Fig. 11 einen Partialentscheidungsraum zur Erläuterung
eines Reproduktionsvorganges zum Reproduzieren
eines Arbeitsrahmens unter Verwendung
der übertragenen Geschichtsinformation (repräsentiert
durch Daten aus fünf Wörtern) in dem
zweiten Prozessor.
Fig. 12 einen Partialentscheidungsbaum zur Erläuterung
eines Reproduktionsvorganges des zweiten Prozessors
zum Reproduzieren des Arbeitsrahmens unter
Verwendung der übertragenen Geschichtsinformation,
die aus Daten von (1+2n) Wörtern bestehen,
im Ansprechen auf "n" Taktsignale zur Durchführung
der Arbeitsverteilung in dem ersten Prozessor.
In den Zeichnungen bezeichnen gleiche Bezugszeichen gleiche oder entsprechende
Teile in allen Darstellungen. Fig. 3 zeigt ein Blockschaltbild
des gesamten Aufbaus eines Multiprozessorsystems 1 gemäß der Erfindung.
Das Multiprozessorsystem 1 (strichliert umrandet) weist ein Netzwerksystem
(gepunktet) und eine Vielzahl von Prozessoren PR 0 bis PRn
auf (wobei n eine ganze Zahl ist). Diese Prozessoren PR 0 bis PRn sind
gegenseitig durch das Netzwerksystem verbunden.
Nachfolgend wird der Aufbau einer ersten Ausführungsform eines Prozessors
PRi im Zusammenhang mit Fig. 4 beschrieben (i bezeichnet eine
ganze Zahl zwischen 1 und n). Jeder Prozessor PRi der Fig. 4 weist folgendes
auf: ein Register Rpi zur Speicherung von Daten, die repräsentativ
für einen Prozessoridentifikator pi sind, ein Register Rpn zur Speicherung
der Daten, die repräsentativ für eine Zahl pn von Prozessoren sind
(im folgenden als belegbare Prozessoren bezeichnet), die der Anfangsverteilung
der Eingangslast unterworfen werden, einen Zähler Cpc zum
Zählen der Zahl pc der Zweige an jedem Knoten (d. h. bei jedem Prozeß
zum Suchen des gewünschten Zweiges bei der Aufgabenverteilung),
einen Markierungsabschnitt F zur Speicherung eines Markierungssignals,
das Informationen darüber liefert, ob die Anfangslastverteilung
durchgeführt ist oder nicht, einen Verarbeitungsabschnitt 11 zur Durchführung
von Operationen und Groß-Klein-Entscheidungen, die später
beschrieben werden, einen Programmspeicher 12 zur Speicherung von
auszuführenden Programmen in einer logischen Programmiersprache und
einen Arbeitsspeicher 13 zur Speicherung der Arbeitsrahmendaten, die
zur Durchführung der Programme benötigt werden.
Nachfolgend wird ein Strategieverfahren zur Durchführung des ODER-Prozesses
in jedem Prozessor PRi in Verbindung mit Fig. 5 erläutert. Fig.
5 zeigt ein Strategieverfahren zur Durchführung der Anfangsaufgabenverteilung
in einem Fall, in dem die Anzahl der anfänglich zu beaufschlagenden
Prozessoren gleich zwölf ist. In Fig. 5 kennzeichnet jedes Zeichen
p 0 bis p 11 jeden Identifikator pi der zwölf Prozessoren. Eine Zahl id, die
die Entscheidungstiefe oder Entscheidungsstufe der logischen Programmiersprache
angibt, nimmt Werte "0", "1", "2", . . . an, je nach dem je
tiefer die Entscheidungsstufe liegt. Die Zahl id hat den Wert "0" bei der
Anfangslaststufe. Eine Zahl m (m kennzeichnet eine ganze Zahl) von
Zweigen bm, die an einen gemeinsamen Knoten angeschlossen sind,
ändert sich von "0", "1", . . . ausgehend von dem am weitesten links
liegenden Zweig.
(I) Durch das Multiprozessorsystem werden zunächst die Register rpi und
rpn, der Zähler Cpc und der Markierungsabschnitt F in ihre Anfangsbedingungen
versetzt.
(II) Zweitens werden die belegbaren Prozessoren gleichmäßig den Zweigen
des Entscheidungsbaumes zugeordnet, der von einem Anfangszielpunkt
ausgeht. Beispielsweise werden fünf Prozessoren mit den Indentifikatoren
p 0, p 1, p 3 und p 4 jeweils dynamisch den fünf Zweigen b 0, b 1, b 2, b 3
und b 4, die an dem gemeinsamen Knoten (d. h. dem Ausgangszielpunkt)
angeschlossen sind, zugeordnet, ausgehend von dem am weitesten links
liegenden Zweig. In gleicher Weise werden sieben weitere Prozessoren
mit den Identifikatoren p 5 bis p 11 den fünf Zweigen b 0 bis b 4 zugeordnet.
Hieraus folgt, daß drei Prozessoren mit den Identifikatoren p 0, p 5
und p 10 dem Zweig b 0 zugeordnet sind. Die drei Prozessoren mit den
Identifikatoren p 1, p 6 und p 11 sind dem Zweig b 1 zugeordnet, in ähnlicher
Weise sind die beiden Prozessoren mit den Identifikatoren p 4 und
p 9 dem Zweig b 4 zugeordnet.
Wie oben beschrieben werden mehrere Prozessoren jedem der Zweige b 0
bis b 4 zugeordnet. Die einem Zweig angeordneten Prozessoren
kennzeichnen die belegbaren Prozessoren in der nächsten Stufe.
(III) Als nächstes führt das System die Anfangslastverteilung in Richtung
der Entscheidungstiefe durch. Ähnlich wie in der oben erwähnten Prozedur
(II) werden die einem Zweig zugeordneten Prozessoren den nächsten Zweigen
zugeordnet, die an den ersten Zweig angeschlossen sind. Wenn ein
Prozessor jedem der nächsten Zweige zugeordnet ist, ist die Anfangslastverteilung
abgeschlossen. Wenn die Anzahl pn der belegbaren Prozessoren
kleiner als die Zahl der zuzuordnenden Zweige ist, verbleibt ein Zweig,
der dem dem letzten Prozessor zugeordneten Zweig am nächsten liegt,
ebenfalls für den letzten Prozessor (d. h. der rechte Zweig ist für den
letzten Prozessor reserviert). Zweige in der Nähe der Zweige, die jeweils
durch die anderen Prozessoren zugeordnet sind, verbleiben nicht (d. h. die
rechten Zweige werden für die anderen Prozessoren abgeschnitten).
Zum Beispiel werden die Prozessoren mit den Identifikatoren p 0, p 5 und
p 10 jeweils den Zweigen b 0, b 1 und b 2 in der Entscheidungsstufe id = 1
zugeordnet und der Zweig b3 wird dem Prozessor mit dem Identifikatoren
p 10 vorbehalten. In ähnlicher Weise werden die anderen Zweige entsprechenden
Prozessoren, wie in Fig. 5 gezeigt, zugeordnet.
Das obige ist eine Diagrammerklärung der Anfangslastverteilung der ursprünglichen
Aufgabe. Nachfolgend wird die Anfangslastverteilung im allgemeinen
beschrieben.
(1) Das System legt die Anfangswerte für die Register Rpi und Rpn, den
Zähler Cpc und den Markierungsabschnitt F wie unten beschrieben fest.
(a) Der Identifikator pi eines jeden Prozessors wird in dem Register Rpi
gespeichert.
(b) Die Zahl pn der belegbaren Prozessoren wird in dem Register Rpn gespeichert.
(c) Die Markierung "EIN", die anzeigt, daß der Prozessor initialisiert ist,
wird in dem Markierungsabschnitt F gesetzt.
(2) Die Entscheidungsstufe id ist gleich "k", welcher Wert sich sequentiell
ändert von 0, 1 . . .
(a) Wenn die Zahl pn der belegbaren Prozessoren kleiner als 1 ist, erfolgt
die Anfangslastverteilung in einer Folge der nachfolgenden Schritt (i) bis
(v).
(i) Der Zähler Cpc zählt die gegenwärtige Zahl pc der Zweige. In Fig. 5
ist der Zählwert des Zählers Cpc gleich "5".
(ii) Der Wert des Identifikators pi, der in dem Register Rpi gespeichert
ist, wird durch den Zählwert des Zählers Cpc dividiert, so daß ein Quotient
"a" und ein Rest "b" erhalten wird. Auf der Grundlage von Quotient
und Rest, werden die Prozessoren den entsprechenden Zweigen
zugeordnet.
Im Falle des Prozessors mit dem Identifikator pi, der gleich "8" wie in Fig. 5
gezeigt, ist, wird der Wert "8" durch den Wert "5" dividiert, so daß
der Quotient "1" und ein Rest von "3" erhalten wird (d. h. a=1, b=3).
Das bedeutet, daß der Prozessor dem Zweig b3 als zweiter Prozessor
zugeordnet wird.
Der oben genannte Wert "a" wird in dem Register Rpi als neuer Identifikator
pi gespeichert.
(iii) Als nächstes wählt das System einen Zweig aus, der dem Rest "b"
entspricht. Wenn der Rest "b" kleiner als der Wert "pn-1" ist, wird ein
Zweig rechts eines solchen Zweiges abgeschnitten. Jedoch wenn der
Rest "b" nicht kleiner als der Wert "pn-1" ist, wird ein Zweig rechts
eines solchen Zweiges bewahrt.
Beispielsweise können die Prozessoren p0, p5 und p10 den vier Zweigen
b 0 bis b 3 auf der linken Seite der Entscheidungsstufe id=1 zugeordnet
werden. In diesem Fall ist die Zahl pn der beaufschlagbaren Prozessoren
gleich drei, so daß der Wert von (pn-1) gleich zwei ist. Folglich werden
die Zweige rechts von den Zweigen b 0 und b 1 abgeschnitten und die Prozessoren
p 0 und p 5 werden jeweils den Zweigen b 0 und b 1 zugeordnet. Dagegen
wird der Zweig b 3 rechts von dem Zweig b 2 nicht abgeschnitten,
sondern beibehalten und der Prozessor p 10 wird beiden Zweigen b 2 und
b 3 zugeordnet.
(iv) Die Zahl pn, die in dem Register Rpn gespeichert ist, wird durch den
Zählwert des Zählers Cpc dividiert, so daß ein Quotient "c" und ein Rest
"d" erhalten wird. Bei dem in Fig. 5 gezeigten Zielpunkt wird die Zahl
zwölf durch die Zahl fünf dividiert, so daß ein Quotient "c" = "2" und ein
Rest "d" = "2" erhalten wird. Wenn das System den Rest "b" mit dem
Rest "d" vergleicht und feststellt, daß der Rest "b" kleiner als der Rest
"d" ist, wird ein Wert (c + 1) in dem Register Rpn gespeichert. Wenn
andererseits der Rest "b" gleich oder größer als der Rest "d" ist, wird
der Wert "c" in dem Register Rpn gespeichert.
In dem oben erwähnten Fall werden drei Prozessoren (d. h., c+1) jedem
der Zweige b0 und b1 zugeordnet. Zusätzlich zwei Prozessoren (d. h., c)
werden jeweils den Zweigen b2, b3 und b4 zugeordnet.
Wie oben beschrieben werden "c" (d. h., zwei) Prozessoren jedem der Zweige
(d. h., den Zweigen b2 bis b4) rechts von dem Zweig (d. h., dem Zweig
b1) zugeordnet, dem der letzte Prozessor (d. h., der Prozessor p11 zugeordnet
worden ist. Andererseits werden (c + 1) (d. h., drei) Prozessoren jeweils
den linken Zweigen (d. h. den Zweigen b0 und b1) zugeordnet.
(v) Danach werden Prozesse ähnlich den unter (i) bis (iv) unter (2) beschriebenen
Prozessoren wiederholt für den Fall der Entscheidungsstufe id = m + 1
auf der Basis der neu eingegebenen Identifikatoren pi und einer
neu bestimmten Zahl pn von beaufschlagbaren Prozessoren durchgeführt.
An einer Stelle links in dem Entscheidungsbaum der Fig. 5 bei der Entscheidungsstufe
id = 1, ist die oben erwähnte Anfangsaufgabenverteilung
mit der Zahl pn = 3 und durch Variation der Identifikatoren pi auf die
Werte 0, 1 und 2 durchgeführt.
(b) Wenn die Zahl pn der beaufschlagbaren Prozessoren gleich eins oder
kleiner gleich eins ist, wird die Anfangsaufgabenverteilung wie folgt
durchgeführt.
Dadurch daß die Markierung in dem Markierungsabschnitt F auf "AUS" gesetzt
wird, wird die Anfangslastverteilung abgeschlossen. Auf diese Weise
wird die Anfangslastverteilung wie in Fig. 5 gezeigt, durchgeführt.
Die nachfolgende Tabelle (nächste Seite) zeigt, wie die in den Registern
eines jeden Prozessors gespeicherten Werte sich ändern, für den Fall, daß
die Anfangsaufgabe in eine Vielzahl von ODER-Prozessoren auf der Grundlage
der Strategieprozeduren der Spalte (a) unterteilt wird, und zwar in
einem Beispiel für vier Prozessoren gemäß Fig. 6. Der Inhalt der
folgenden Tabelle ist auf der Basis des unter Spalte (a) beschriebenen
Verfahrens leicht verständlich, weswegen von einer weiteren Beschreibung
abgesehen wird.
In der Tabelle zeigt eine Reihe für den Rest "b", wie der Suchzweig in
jeder Entscheidungsstufe id auszuwählen ist. Insbesondere zeigt dieser
Tabellenteil, ob der rechte Zweig abgeschnitten oder beibehalten wird.
Die Reihen von "Rpi'" und "Rpn'" und die Reihen von "Rpi" und "Rpn"
haben jeweils denselben Inhalt zwischen den Spalten von id = 0 und id = 1
und zwischen den Spalten von id = 1 und id = 2 ebenso. Wie oben
beschrieben wählen die Prozessoren in dem System gleichzeitig und
unabhängig voneinander die ODER-Prozesse unter Verwendung der
Identifikatoren pi eines jeden Prozessors und der Zahl pn der belegbaren
Prozessoren aus. Es ist folglich möglich, die Anfangsaufgabenverteilung
mit großer Geschwindigkeit und ohne Informationsübertragung zwischen
den Prozessoren durchzuführen. Des weiteren kann das System die zu
übertragende Informationsmenge reduzieren, weil jeder Prozessor
innerhalb des Systems einen Teil der Information erzeugt, die von einem
anderen Prozessor übertragen worden ist, der mit der Anfangsaufgabe in
einem konventionellen System beaufschlagt worden ist. Die Prozessoren
p0 und p2 in Fig. 6 führen dieselbe Aufgabe des Zweiges b0 parallel
durch. Die beiden Prozessoren p0 und p2 erzeugen folglich den gleichen
Arbeitsrahmen, so daß es unnötig ist, die Information zwischen den
Prozessoren p0 und p2 auszutauschen. Wie erwähnt ist es möglich, die
Informationsmenge, die bei der Anfangsverteilung vorhanden ist, und
die zwischen den Prozessoren übertragen werden muß, zu verringern.
Die Anfangslastverteilung zielt darauf ab, die Anfangsaufgaben allen Prozessoren
zuzuteilen. Das erste Ausführungsbeispiel bezieht sich nicht auf
die Lastverteilung nach der Anfangslastverteilung, weswegen von einer
Beschreibung dieses Aspekts abgesehen wird.
Wie erwähnt, ist es möglich, die folgenden Wirkungen (Vorteile) (i) bis
(iii) bei dem ersten Ausführungsbeispiel zu erreichen.
(i) Es ist nicht notwendig, die Information zwischen den Prozessoren zu
übertragen, wenn die Anfangsarbeitssegmente dynamisch allen Prozessoren
zugeordnet werden, nachdem das System mit der Anfangsaufgabe
beaufschlagt worden ist. Aus diesem Grund ist es nicht erforderlich, die
Anfangslastverteilung auf einen einzigen Prozessor zu konzentrieren und
es ist möglich, die Verteilung der Anfangslast mit hoher Geschwindigkeit
durchzuführen.
(ii) Der spezifische ODER-Prozeß wird jedem Prozessor zugeordnet und
die Prozessoren, die den gleichen partiellen ODER-Prozeß parallel
durchführen, erzeugen dieselbe Partialinformation. Aus diesem Grunde ist
es nicht notwendig, die Partialinformation zwischen den Prozessoren während
der Durchführung der Anfangslastverteilung auszutauschen. Infolgedessen
ist es bei dem ersten Ausführungsbeispiel möglich, die Informationsmenge
zu reduzieren.
Infolgedessen ist es auch möglich, die Kommunikationskapazität (die Übertragungsgeschwindigkeit
und die Übertragungsleistung) des Netzwerkes
des Multiprozessorsystems geringer zu machen als bei konventionellen
Netzwerken. Infolgedessen kann der Umfang und der Preis der Netzwerksysteme
reduziert werden und es ist gleichwohl möglich, den Paralleleffekt
nahezu gleich wie bei konventionellen Systemen zu erreichen. Mit
anderen Worten, wenn ein konventionelles Netzwerksystem für das Multiprozessorsystem
eingesetzt wird, kann der Paralleleffekt des Multiprozessorsystems
gemäß der Erfindung beträchtlich gesteigert werden.
(iii) Es kann erwartet werden, daß jeder Prozessor eine große Leistungsfähigkeit
realisiert, kurz nachdem das Multiprozessorsystem mit der Anfangsaufgabe
beaufschlagt worden ist. Zusätzlich kann das System die
zwischen den Prozessoren übertragenen Informationsmengen reduzieren,
weswegen das Multiprozessorsystem insgesamt einen großen Paralleleffekt
erzielt.
Im folgenden wird der Aufbau einer zweiten Ausführungsform eines Prozessors
PRi im Zusammenhang mit Fig. 7 beschrieben. Diese zweite
Ausführungsform des Prozessors PRi besteht im wesentlichen aus einer
zentralen Rechnereinheit (CPU) 21, einem Speicher 22, einem
Informationserzeugungsabschnitt 23 und einem zweiten Informationserzeugungsabschnitt
24. Der erste Informationserzeugungsabschnitt 23
erzeugt eine Geschichtsinformation, die notwendig zur Reproduzierung
des Arbeitsrahmens ist, und diese Geschichtsinformation wird während
des Durchführens der Lastverteilung übertragen. Der zweite Informationserzeugungsabschnitt
24 erzeugt den notwendigen Arbeitsrahmen auf der
Grundlage der Geschichtsinformation, die während der Durchführung der
Aufgabenverteilung dorthin übertragen worden ist.
Fig. 8 ist ein Blockschaltbild zur Erläuterung der Funktion der oben erwähnten
zweiten Ausführungsform des Prozessors PRi, der in Fig. 7 gezeigt
ist. Fig. 8 ist ein Blockschaltbild zur Erläuterung der Funktion des
Prozessors PRi, der eine vorgegebene in einer logischen Programmiersprache,
d. h. Prolog, geschriebene Aufgabe abarbeitet. Diejenigen in
Fig. 8 gezeigten Teile, die denen in Fig. 4 entsprechen, sind mit denselben
Bezugszeichen bezeichnet, weswegen eine detaillierte Beschreibung
unterlassen werden kann.
In Fig. 8 weisen der erste und zweite Informationserzeugungsabschnitt
23 und 24 (strichpunktiert umrandet) das Register Rpi zur Speicherung
des Identifikators pi eines jeden Prozessors PRi, ein Register Ridb zur
Speicherung der Entscheidungsstufe idb der Lastverteilung, ein Register
Rblp zur Speicherung eines Identifiaktors blp des dem Prozessor PRi zugeordneten
ODER-Prozesses, einen Lastverteilungsgeschichtespeicher 25
zur Speicherung eines Paares von Daten über die Entscheidungsstufe idb
und zur Speicherung des Identifikators blp, von denen beide von den Zeitpunkten
der Durchführung der Lastverteilung abhängen, und einen Verarbeitungsabschnitt
26 zur Durchführung von einfachen Operationen unter
Verwendung der in den oben genannten Registern Rpi, Ridb, Rblp und der
in dem Speicher 25 gespeicherten Daten auf. Zusätzlich enthält der Prozessor
den Zähler Cpc zur Zählung der Anzahl pc der Suchzweige bei jedem
Knoten, das Register Rpn zur Speicherung der Anzahl pn der
angeschlossenen belegbaren Prozessoren und den Markierungsabschnitt F
zur Information darüber, ob die Anfangslastverteilung durchgeführt oder
der Arbeitsrahmen erzeugt ist.
Des weiteren speichert der Programmspeicher 12 die in einer logischen
Programmiersprache geschriebenen Programme und der Arbeitsspeicher
13 wird zur Speicherung des Arbeitsrahmens während der Programmdurchführung
verwendet. Der Lastverteilungsgeschichtespeicher 25 kann in dem
Arbeitsspeicher 13 eingeschlossen sein.
Nachfolgend wird die Betriebsweise des zweiten Ausführungsbeispieles erläutert.
Zuerst wird anhand von Fig. 9 ein Fall beschrieben, bei dem der erste
Prozessor die Lastzuweisung zu dem zweiten Prozessor durchführt. Im
einzelnen zeigt Fig. 9 einen Entscheidungsbaum zur Erläuterung von Beispielen
einer Prozedur zur Erzeugung der Geschichtsinformation, die wesentlich
für die Erzeugung des Arbeitsrahmens ist, und einer weiteren
Prozedur zur Erzeugung des Arbeitsrahmens, (was nach Durchführung der
Lastverteilung erforderlich ist) unter Verwendung der übertragenen Geschichtsinformationen. Der erste Prozessor ist durch das Bezugszeichen
PR 1 und der zweite Prozessor ist durch das Bezugszeichen PR 2 gekennzeichnet.
Wie in Fig. 9 gezeigt, führt der erste Prozessor PR 1 die Lastverteilung
an zwei Zeitpunkten bei den Entscheidungsstufen "3" und "7" durch. In Fig.
9 sind die bereits abgearbeiteten Zweige in dünnen Linien gezeichnet,
während diejenigen Zweige, die gerade abgearbeitet werden, in fetten
Linien eingezeichnet sind. Die nichtabgearbeiteten Zweige sind strichliert
gezeichnet. Die hier beschriebene Lastverteilung unterteilt die Zweige
(oder ODER-Prozesse), die nicht abgearbeitet sind, die aber ziemlich
nahe an dem für die Anfangsaufgabe repräsentativen Knoten liegen.
Nach dem Stande der Technik überträgt der erste Prozessor PR 1 die gesamte
Information über den Arbeitsrahmen an den zweiten Prozessor
PR 2. Diese Arbeitsrahmen werden in den Zweigen, die abgearbeitet
werden und die fett eingezeichnet sind erzeugt, bevor die Lastverteilung
durchgeführt wird (d. h. vor den nicht abgearbeiteten Zweigen, die
strichliiert eingezeichnet worden sind). Danach arbeitet der zweite
Prozessor PR 2 die nichtabgearbeiteten Zweige ab.
Dagegen überträgt der erste Prozessor PR 1 die Geschichtsinformation,
die wesentlich für das Reproduzieren des Arbeitsrahmens ist, an den
zweiten Prozessor PR 2 in dem zweiten Ausführungsbeispiel. In diesem
Fall bestehen die Datenwörter der Geschichtsinformation aus drei
Wörtern bei einer ersten Lastverteilung, aus fünf Wörtern bei einer
zweiten Lastverteilung und aus (1+2n) Wörtern in einer n-ten
Lastverteilung. Dann reproduziert der zweite Prozessor PR 2 die
Arbeitsrahmen, die in den momentan bearbeiteten Zweigen (fett
gezeichnet) des ersten Prozessors PR 1 erzeugt werden, mithilfe der
übertragenen Geschichtsinformation.
Zuerst führt jeder Prozessor PRi die Anfangslastverteilung durch, wie im
Zusammenhang mit dem ersten Ausführungsbeispiel beschrieben. Diese Anfangslastverteilung
erfolgt unter Benutzung der Register Rpi und Rpn,
des Zählers Cpc, des Markierungsabschnittes F und des Operationsabschnitts
26. Im wesentlichen wird die Anfangslastverteilung durch wiederholtes
Durchführen einer Prozedur erreicht, bei der jeder Zweig (oder
ODER-Prozeß) gleichermaßen jedem Prozessor zugeteilt wird.
Nachdem die Anfangslastverteilung erzielt ist, werden die Zweige mit
einer vorgegebenen Priorität abgebucht (d. h. Absuchen mit Priorität in
die Tiefe), so daß die Zweige von oben nach unten und von links nach
rechts entsprechend der vorgegebenen Suchpriorität in Richtung der Tiefe
(fortschreitende Entscheidungsstufe) in dem ersten Prozessor PR 1 abgesucht
werden. Wenn der richtige Zweig nicht ermittelt werden kann,
schreitet der erste Prozessor PR 1 zurück zu dem vorausgehenden Knoten
und beginnt erneut mit der Suche nach dem richtigen Zweig. Bei den Entscheidungsstufen
"3" und "7" wird ein partielles Arbeitssegment des
ersten Prozessors PR 1 an die anderen Prozessoren abgeteilt.
Bei der ersten Lastverteilung überträgt der erste Prozessor PR 1 die Geschichtsinformation mit einem Datenformat von drei Wörtern, die (a) den
Identifikator pi des ersten Prozessors PR 1, (b) die Entscheidungsstufe idb
(1)=3 der Lastverteilung und (c) den Identifikator blp(1) des
ODER-Prozesses repräsentieren, welche Dateninformation abgetrennt und
einem anderen Prozessor vermittelt wird.
Der oben erwähnte Identifikator pi (a) muß bei der Anfangslastverteilung
variiert werden. Als Wert des Identifikators pi verwendet jedoch der
erste Prozessor PR 1 den Identifikator pi, der ihm ursprünglich bei der
ersten Anfangslastverteilung gegeben wurde. Wenn inzwischen ein Zweig
bep(1) in der Entscheidungsstufe "3" ausgewählt ist, speichern die entsprechenden
Register einen Zeiger blp(1), der den noch nicht abgearbeiteten
ODER-Prozeß und die Entscheidungstiefe idb(1) kennzeichnet. Der
Zeiger blp(1) hat die Bedeutung der Adresse des Programmspeichers 12
oder die Information über die Nummer des Zweiges. Auf diese Weise können
(b) die Entscheidungstiefe idb und (c) der Identifikator blp des
ODER-Prozesses erhalten werden.
Als Lastverteilungsgeschichte speichert der Speicher 25 die Information
über die Entscheidungstiefe idb(1)=3 und den ausgewählten Zweig
bep(1).
Bei der zweiten Lastverteilung überträgt der Prozessor PR 1 die Geschichtsinformation
in einem Datenformat mit fünf Wörtern, die (a) den
Identifikator pi des ersten Prozessors PR 1, (b) die Entscheidungstiefe
idb(1)=3, die in dem Speicher 25 bei der ersten Lastverteilung gespeichert
wird, (c) den ausgewählten Zweig bep(1), der in dem Speicher
25 bei der ersten Lastverteilung gespeichert wird, (d) eine neue Entscheidungstiefe
idb(2)=7 der zweiten Lastverteilung und (e) einen Identifikator
idb(2) des ODER-Prozesses repräsentieren, der der zweiten Lastverteilung
unterworfen wird.
Wenn der Zweig bep(2) bei der Entscheidungsstufe "7" gewählt wird,
speichern die entsprechenden Register einen Zeiger blp(2) für den noch
nicht abgearbeiteten ODER-Prozeß und die Entscheidungstiefe idb(2)=7.
Auf diese Weise werden die oben genannte (d) Entscheidungstiefe idb(2)=7
und (e) der Identifikator idb(2) erhalten.
Ähnlich wie bei der ersten Lastverteilung speichert der Speicher 25 die
Entscheidungstiefe idb(2) und den ausgewählten Zweig bep(2) in der vorliegenden
Stufe als "Geschichte" der zweiten Lastverteilung. Diese "Geschichten"
der ersten und zweiten Lastverteilung sind identisch mit
einem Teil der Geschichtsinformation, die von dem ersten Prozessor PR 1
bei einer nächsten Lastverteilung übertragen wird.
Die Arbeitsrahmen des ersten Prozessors PR 1 sind für den zweiten Prozessor
PR 2 notwendig, nachdem die Lastverteilung durchgeführt ist.
Diese Arbeitsrahmen werden reproduziert mithilfe der Geschichtsinformation,
die von dem ersten Prozessor PR 1 an den zweiten Prozessor PR 2
übertragen wird.
Nachfolgend wird das oben erwähnte Verfahren zum Reproduzieren der
Arbeitsrahmen des ersten Prozessors PR 1 in dem zweiten Prozessor PR 2
beschrieben.
Die von dem ersten Prozessor PR 1 an den zweiten Prozessor PR 2 übertragene
Geschichtsinformation enthält die folgenden Informationselemente.
- (a) Identifikator pi eines jeden Prozessors.
- (b) Entscheidungstiefe idb der Lastverteilung.
- (c) Identifikator blp des ODER-Prozesses, der dem zweiten Prozessor PR 2 zugeteilt wird.
Der Umfang der beiden oben genannten Informationselemente (b) und (c)
wird bei jeder Durchführung der Lastverteilung größer.
Der zweite Prozessor PR 2 speichert die übertragene Geschichtsinformation
einschließlich der oben erwähnten Informationselemente (a) bis (c).
Der zweite Prozessor PR 2 führt den ihm aufgegebenen Prozeß nach dem
folgenden Algorithmus durch. Die Entscheidungsstufe wird in dieser
Verfahrensstufe in dem zweiten Prozessor PR 2 in der nachfolgenden
Beschreibung gleich idc sein.
Das Verfahren zum Reproduzieren der Arbeitsrahmen des ersten Prozessors
PR 1 in dem zweiten Prozessor PR 2 wird in der Entscheidungsstufe
idc wie nachfolgend beschrieben durchgeführt.
Der Identifikator pi des Prozessors wird in das Register Rpi eingeschrieben;
Die Zahl pn der beaufschlagbaren Prozessoren wird in das Register Rpn
eingeschrieben;
Der Zähler Cpc wird auf "0" gesetzt.
Die Markierung "EIN", die anzeigt, daß die Anfangslastverteilung durchgeführt
oder der Arbeitsrahmen reproduziert wird, wird in den Markierungsabschnitt
F eingeschrieben.
Der Speicher 25 speichert sowohl die Entscheidungsstufe idb der Lastverteilung
als auch den Identifikator blp des ODER-Prozessors, der dem zweiten
Prozessors PR 2 zugeteilt ist.
Die Register Ridb und Rblp speichern das Hauptwort der in dem Speicher
25 gespeicherten Daten in einer Folge der Entscheidungsstufen, beginnend
mit einer Entscheidungsstufe einer niederen Ordnung, fortschreitend zu
der Entscheidungsstufe höherer Ordnung (fortschreitend in die Tiefe).
Wie in Fig. 10 und den folgenden Fig. gezeigt, wird die Anfangslastverteilung
mithilfe des Identifikators pi des ersten Prozessors PR 1
durchgeführt. Im einzelnen führt der zweite Prozessor PR 2 kontinuierlich
die Anfangslastverteilung durch, wie dies im Zusammenhang mit der Anfangslastverteilung
des ersten Prozessors PR 1 gemäß Fig. 9 beschrieben
worden ist, bis die Anfangslastverteilung abgeschlossen ist.
(i) In dem Fall, in dem die Entscheidungsstufe idc kleiner als der Wert
des Registers Ridb ist, wird der am weitest rechts liegende Zweig zur Abarbeitung
bei jeder Entscheidungsstufe ausgewählt. Danach wird die nächste
Entscheidungsstufe idc = idc + 1 gesetzt und der oben erwähnte Prozeß
wird wiederholt bei dieser nächsten Entscheidungsstufe durchgeführt.
(ii) Für den Fall, daß die Entscheidungstufe idc gleich dem Wert des Registers
Ridb ist, wird wie folgt verfahren:
Wenn das letzte Wort aus dem Speicher 25 ausgelesen wird, wird der
Zweig, der dem Wert des Registers Rblp entspricht, abgearbeitet und der
davon rechts liegende Zweig wird beibehalten. Danach wird der Wert
"AUS" in den Markierungsabschnitt F eingeschrieben, so daß der
Reproduktionsvorgang für den Arbeitsrahmen beendet wird (das bedeutet
das Beenden der Lastverteilung).
Wenn das aus dem Speicher 25 ausgelesene Wort nicht das letzte Wort
ist, wird nur der dem Wert des Registers Rblp entsprechende Zweig
abgearbeitet und der rechts von diesem Zweig liegende Zweig wird
abgeschnitten. Die nächsten Wortdaten, die aus dem Speicher 25
ausgelesen werden, werden in den Registern Ridb und Rbld gespeichert
und die nächste Entscheidungsstufe idc = idc + 1 wird gesetzt, so daß
wiederholt der oben unter (i) beschriebene Prozeß durchgeführt wird.
Gemäß den oben erwähnten Prozeduren wird ein spezifischer Arbeitsrahmen
des ersten Prozessors PR 1 in dem zweiten Prozessor PR 2
reproduziert, bevor der erste PR 1 die Lastverteilung durchführt. Der
zweite Prozessor PR 2 kann einen solchen spezifischen Arbeitsrahmen auf
der Grundlage der Geschichtsinformation reproduzieren, die von dem
ersten Prozessor PR 1 übertragen worden ist. Ein solcher spezifischer
Arbeitsrahmen ist wesentlich für den zweiten Prozessor PR 2, nachdem
der erste Prozessor PR 1 die Lastverteilung durchführt.
Bei dem in Fig. 10 erläuterten Verfahren reproduziert der zweite Prozessor
PR 2 den Arbeitsrahmen des ersten Prozessors PR 1 (der erzeugt
wird, bevor der erste Prozessor PR 1 die Lastverteilung durchführt) mithilfe
der Geschichtsinformation von drei Wörtern, die an den zweiten Prozessor
PR 2 anfangs übertragen werden. Dieser Arbeitsrahmen ist durch
Linien in Fettdruck vor dem Knotenpunkt der Entscheidungstiefe 3 angedeutet.
Demnach führt der zweite Prozessor PR 2 verschiedene Prozesse
nach der Lastverteilung durch. Diese Prozesse sind strichliniert hinter dem
Knotenpunkt der Entscheidungstiefe "3" angedeutet.
Gemäß Fig. 10 wird die Anfangslastverteilung mithilfe des Identifikators
pi des ersten Prozessors PR 1 zuerst durchgeführt. Danach wird der am
weitesten rechts liegende Zweig ausgewählt und abgearbeitet bis die Entscheidungsstufe
bei idb(1)=3 angekommen ist, wo die Lastverteilung
durchgeführt wird. Letztlich wählt der zweite Prozessor PR 2 den Zweig
zur Verarbeitung aus, der durch den Identifikator blp(1) des zugeteilten
ODER-Prozesses repräsentiert ist, der dem zweiten Prozessor PR 2 bei
der Entscheidungsstufe "3" zugeteilt wird.
Im oben genannten Fall wird der Identifikator blp(1) des zugeteilten
ODER-Prozesses durch das letzte Wort der in dem Speicher 25
gespeicherten Daten angezeigt. Folglich wird der Zweig rechts von dem
oben genannten Zweig, der dem letzten Wort des Speichers 25 entspricht,
beibehalten oder gespeichert, weil dieser rechte Zweig wahrscheinlich
abgearbeitet wird.
Gemäß den oben genannten Verfahren wird die Lastverteilung zwischen
dem ersten Prozessor PR 1 und dem zweiten Prozessor PR 1 vollständig
bei der Entscheidungsstufe "3" lediglich unter Übertragung von drei
Datenwörtern durchgeführt.
Bei den in Fig. 11 gezeigten Verfahren reproduziert der zweite Prozessor
PR 2 den Arbeitsrahmen des ersten Prozessors PR 1 (der erzeugt wird,
bevor der erste Prozessor PR 1 die Lastverteilung durchführt) mithilfe der
Geschichtsinformation aus fünf Wörtern, die zuerst an den zweiten Prozessor
PR 2 übertragen werden. Dieser Arbeitsrahmen ist in Fettlinien vor
dem Entscheidungsknoten der Entscheidungsstufe "7" gezeigt. Danach
führt der zweite Prozessor PR 2 verschiedene Prozesse nach der
Lastverteilung durch. Diese verschiedenen Prozesse sind durch
strichlierte Linien nach dem Knoten der Entscheidungsstufe "7"
gezeichnet.
Gemäß Fig. 11 wird die Anfangslastverteilung unter Verwendung des
Identifikators pi des ersten Prozessors PR 1 zuerst durchgeführt. Danach
wird der am weitesten rechts liegende Zweig ausgewählt und
abgearbeitet, bis die Entscheidungsstufe bei der Stufe idb(1)=3
angelangt ist, welches Datum in dem Speicher 25 gespeichert wird. Bei
dieser Entscheidungsstufe "3" wird nur der Zweig bep(1), der in dem
Speicher 25 gespeichert ist, ausgewählt und abgearbeitet. In diesem Fall
entspricht der Zweig bep(1) nicht dem letzten in dem Speicher 25
gespeicherten Wort, infolgedessen wird der Zweig rechts von diesem
Zweig bep(1) abgeschnitten. Danach wählt der Prozessor PR 2 den am
weitesten rechts liegenden Zweig bei jeder Entscheidungsstufe zur
Verarbeitung aus bis die Entscheidungsstufe idb(2)=7 erreicht ist, wo die
Lastverteilung durchgeführt wird. Letztlich wählt der zweite Prozessor
PR 2 zur Abarbeitung den Zweig aus, der durch den Identifikator blp(2)
des abgeteilten ODER-Prozesses repräsentiert wird, der der
Lastverteilung bei der Entscheidungsstufe "7" unterworfen wird. Dieser
Zweig entspricht dem letzten in dem Speicher 25 gespeicherten Wort,
weswegen der Zweig rechts von diesem Zweig nicht abgeschnitten,
sondern beibehalten wird.
Gemäß dem in Fig. 11 erläuterten Verfahren, führt der erste Prozessor
PR 1 die Lastzuweisung auf den zweiten Prozessor PR 2 bei der Entscheidungstiefe
"7" lediglich dadurch aus, daß die Geschichtsinformation bestehend
aus fünf Wörtern übertragen wird.
Bei den allgemeinen in Fig. 12 erläuterten Prozeduren reproduziert der
zweite Prozessor PR 2 den Arbeitsrahmen des ersten Prozessors PR 1 (der
erzeugt wird, bevor der erste Prozessor PR 1 die Lastverteilung durchführt)
mithilfe der Geschichtsinformation aus (1+2n) Wörtern, die zuerst
an den zweiten Prozessor PR 2 übertragen werden. Danach führt der
zweite Prozessor PR 2 verschiedene Prozesse nach der Lastverteilung
durch.
Ähnlich zu den in den Fig. 10 und 11 gezeichneten Prozeduren, führt
der zweite Prozessor die Anfangslastverteilung mithilfe des Identifikators
pi des ersten Prozessors PR 1 durch.
Wenn danach die Entscheidungstiefe bei der Stufe "20" angelangt ist, wo
die Lastverteilung durchgeführt wird, wählt der zweite Prozessor zur Abarbeitung
die Zweige b 2 und b 1 bei den Entscheidungsstufen "7" und "15"
aus, deren Daten in dem Speicher 25, beispielsweise, gespeichert werden.
Da diese Zweige b 2 und b 1 nicht dem letzten in dem Speicher 25 gespeicherten
Wort entsprechen, werden die Zweige rechts von diesen Zweigen
b 1 und b 2 geschnitten. Bei den anderen Entscheidungsstufen als den Stufen
"7" und "15", die kleiner als die Entscheidungsstufe "20" sind, wird
der am weitesten rechts liegende Zweig auf jeder Entscheidungsstufe
ausgewählt und abgearbeitet.
Letztlich wählt der Prozessor PR 2 den Zweig b 3 des abgeteilten
ODER-Prozesses auf der Entscheidungsstufe "20", wo die Lastverteilung
stattfindet, zur Abarbeitung aus. Dieser Zweig entspricht dem letzten in
dem Speicher 25 gespeicherten Wort, so daß der Zweig rechts von diesem
nicht geschnitten, sondern beibehalten wird.
Nach den oben beschriebenen Prozeduren kann der erste Prozessor PR 1
die Lastverteilung auf den zweiten Prozessor PR 2 vollständig durchführen
und zwar in einer beliebigen Entscheidungsstufe, wozu nur die Geschichtsinformation
übertragen werden muß, deren Umfang der Zahl entspricht,
wie oft der erste Prozessor PR 1 die Lastverteilung in der Vergangenheit
durchgeführt hat. Bei dem zweiten Ausführungsbeispiel reproduziert der
zweite Prozessor PR 2 den Arbeitsrahmen (der zwischen der Anfangsaufgabe
und der vorliegenden Entscheidungsstufe erhalten wird) des ersten Prozessors
PR 1 unter Verwendung der an ihn übertragenen Geschichtsinformation.
Der zweite Prozessor PR 2 kann jedoch davon einen
partiellen Arbeitsrahmen wiederbenutzen, so daß durch Vergleich der
übertragenen Geschichtinformation mit der in dem zweiten Prozessor
PR 2 gespeicherten Information ein partieller Arbeitsrahmen des ersten
Prozessors PR 1 reproduziert wird. Diese in dem zweiten Prozessor PR 2
gespeicherte Information ist identisch zu den vorausgegangenen
Identifikatoren pi und den Dateninhalten, die in dem Speicher 25
gespeichert sind.
Wie im Zusammenhang mit dem zweiten Ausführungsbeispiel beschrieben,
überträgt der erste Prozessor PR 1 in dem Multiprozessorsystem das die
logische Programmiersprache durchführt (Prolog), die Geschichtsinformation
aus (1+2n) Wörtern mit verhältnismäßig kleinem Umfang an den
zweiten Prozessor PR 2, jedesmal dann, wenn der erste Prozessor PR 1 die
Lastverteilung durchführt. Der Umfang dieser Geschichtsinformation entspricht
der Anzahl "n" der Durchführungen der Lastverteilung in dem
ersten Prozessor PR 1. Unter Verwendung der übertragenen Geschichtsinformation
reproduziert der zweite Prozessor PR 2 den Arbeitsrahmen,
der wesentlich für den zweiten Prozessor PR 2 ist, nachdem der erste
Prozessor PR 1 die Lastverteilung durchführt. Danach führt der zweite
Prozessor PR 2 seinen Arbeitsprozeß nach der Lastverteilung unter
Verwendung der reproduzierten Arbeitrahmens aus. Bei dem zweiten
Ausführungsbeispiel können im Vergleich zum Stand der Technik folgende
Vorteile (1) bis (4) erreicht werden.
(1) Es ist nicht erforderlich, den eigentlichen Arbeitsprozeß eines jeden
Prozessors bei der Lastverteilung intermittierend zu unterbrechen.
Folglich ist es möglich, die Lastverteilung mit großer Geschwindigkeit
durchzuführen, wobei nur eine vergleichsweise kleine Datenmenge zwischen
den Prozessoren ausgetauscht werden muß.
(2) Besonders wirksam ist der Vorteil der zweiten Ausführungsform, wenn
die logische Programmiersprache (Prolog) auf den Multiprozessor angewandt
wird. Konventionelle Multiprozessorsysteme weisen den Nachteil
auf, daß infolge von Organisationsarbeiten, die durch die Aufgabenerzeugung
verursacht werden, der Austausch von großen Datenmengen des
Arbeitsrahmens, der Aufgabenspeicherung und dgl. erforderlich ist. Erfindungsgemäß
ist es folglich möglich, eine Parallel-Prolog-Datenverarbeitungsmaschine
des Multiprozessortyps zu schaffen, die eine hohe Verarbeitungsgeschwindigkeit
und Übertragungsgeschwindigkeit aufweist und
die sich durch einen großen Paralleleffekt auszeichnet.
(3) Statt der Übertragung des Arbeitsrahmens, der einen vergleichsweise
großen Informationsumfang aufweist, der proportional zu der Anzahl der
Durchführungen des Entscheidungsprozesses ist, wird bei dem zweiten
Ausführungsbeispiel die Geschichtsinformation, von vergleichsweise
kleinem Umfang entsprechend der Anzahl "n" der Durchführungen der
Lastverteilung übertragen (beispielsweise besteht die
Geschichtsinformation aus (1+2n) Wörtern, wenn Prolog auf das zweite
Ausführungsbeispiel angewandt wird). So wird die Lastverteilung des
zweiten Ausführungsbeispieles vervollständigt. Es ist folglich möglich, die
Kommunikationsmenge der Informationsübertragung bei der
Lastverteilung zu reduzieren. In anderen Worten, die Zeiten für die
Durchführung der Lastverteilungen können reduziert werden, so daß sie
wesentlich kleiner als die Zeiten für die Durchführung des
Entscheidungsprozesses sind.
Im Vergleich zu einem konventionellen Multiprozessor kann das Netzwerk
des Multiprozessors gemäß dem zweiten Ausführungsbeispiel nach der Erfindung
eine wesentlich kleinere Kommunikationskapazität aufweisen.
Beim zweiten Ausführungsbeispiel kann folglich der Paralleleffekt ähnlich
wie bei konventionellen Multiprozessoren erreicht werden, selbst dann,
wenn ein Netzwerk verwendet wird, das einen vergleichsweise geringen
Preis und kleinen Umfang aufweist. Anders ausgedrückt, es kann ein
Multiprozessor realisiert werden, der einen größeren Paralleleffekt als
ein konventioneller Multiprozessor aufweist, wenn bei dem zweiten Ausführungsbeispiel
ein Netzwerk eingesetzt wird, das ähnlich einem solchen
bei einem konventionellen Multiprozessorsystem ist.
(4) Das zweite Ausführungsbeispiel wird dadurch realisiert, daß zusätzlich
verschiedene Register und Speicher an die bereits existierende sequentielle
Entscheidungsmaschine (oder die bestehende Prologmaschine) angeschlossen
werden, und daß die Prologmaschinen mit einem einfachen
Netzwerk verknüpft werden. Nach den oben beschriebenen Prozeduren erzeugt
das zweite Ausführungsbeispiel die Geschichtsinformation, die bei
der Lastverteilung übertragen werden muß, und reproduziert den wesentlichen
Arbeitsrahmen unter Verwendung der übertragenen Geschichtsinformation,
wobei die zweite Ausführungsform die Lastverteilung mit
hoher Geschwindigkeit durchführen kann. Zusätzlich ist es möglich, eine
Parallel-Prolog-Datenverarbeitungsmaschine vom Multiprozessortyp mit
hoher Arbeitsgeschwindigkeit und großem Paralleleffekt zu realisieren.
Wie in den oben geschilderten Vorteilen (1) bis (4) angegeben, kann die
zweite Ausführungsform die Organisationsarbeit vermeiden, die bei der
konventionellen Lastverteilung wie in Fig. 1 gezeigt, unumgänglich ist.
Probleme wie sie bei konventionellen Systemen auftreten, können mit der
zweiten erfindungsgemäßen Ausführungsform vermieden werden.
Die Erfindung ist nicht durch ein Verfahren der Auswahl und Erzeugung
der für die Reproduzierung des Arbeitsrahmens erforderlichen Geschichtsinformation
beschränkt, auch nicht durch ein Verfahren zur Erzeugung
des Arbeitsrahmens unter Verwendung der Geschichtsinformationen.
Gemäß der Erfindung wird nicht detailliert die innere Struktur eines Prozessors
festgelegt, auch die Gestaltung des Netzwerksystems, das
die Prozessoren verbindet, und auch nicht ein Verfahren zur Erkennung
von untätigen Prozessoren. Es ist folglich möglich einen Datenbus, ein gitterartiges
Netzwerk oder ein Netzwerk mit einem Mehrstufendurchlauf
wie das vorliegende Netzwerk zu verwenden. Zusätzlich ist es möglich,
ein Netzwerksystem zu verwenden, das mit einer Information über die Arbeitsbedingung
(tätig oder untätig) eines jeden Prozessors beaufschlagt
wird. Des weiteren ist es möglich, extern eine Schaltung vorzusehen, die
die oben genannte Bedingung für jeden Prozessor organisiert.
Die Erfindung kann auch in anderen Formen ohne Abweichung von ihrem
Geist oder wesentlichen Charakter durchgeführt werden. Beispielsweise
ist die auf den Multiprozessor anzuwendende Programmiersprache nicht
auf die logische Programmiersprache beschränkt, vielmehr ist es möglich,
allgemeine Programmiersprachen auf den Multiprozessor anzuwenden. Die
hier beschriebenen bevorzugten Ausführungsformen sind daher nur illustrativ
und nicht beschränkend und der Umfang der Erfindung wird durch die
Ansprüche festgelegt. Alle Variationen, die innerhalb der Bedeutung der
Ansprüche liegen, werden als zur Erfindung gehörig betrachtet.
Claims (17)
1. Multiprozessorsystem zur Verarbeitung einer gegebenen, in einer bestimmten
Programmiersprache abgefaßten Arbeitsaufgabe, mit einer Vielzahl
von Prozessoren (PRi) und einem die Prozessoren verbindenden Netzwerk,
dadurch gekennzeichnet, daß jeder Prozessor folgendes aufweist:
- a) erste Mittel zur Speicherung einer Systeminformation (pi, pn), die Zeichen des Multiprozessorsystems repräsentiert und
- b) zweite Mittel zur automatischen und dynamischen Auswahl eines spezifischen Anfangsarbeitssegments der gegebenen Arbeitsaufgabe unter Verwendung der Systeminformation ohne Übertragung von Information zwischen den Prozessoren (PRi), wobei eine Anfangslastgleichverteilung in dem Multiprozessorsystem erzielt wird.
2. Multiprozessorsystem zur Verarbeitung einer gegebenen, in einer
bestimmten Programmiersprache abgefaßten Arbeitsaufgabe, mit einer
Vielzahl von Prozessoren (PRi) und einem die Prozessoren verbindenden
Netzwerk, dadurch gekennzeichnet, daß jeder Prozessor (PRi) folgendes
aufweist:
- a) erste Mittel zur Erzeugung einer Geschichtsinformation, deren Umfang geringer als der Umfang der Information über den gesamten Arbeitsrahmen eines Quellenprozessors ist, während ein spezifisches einem jedem Prozessor zugeteiltes Arbeitssegment abgearbeitet wird,
- b) zweite Mittel zum Übertragen der Gesichtsinformation an einen Zielprozessor, während des Betriebs des Multiprozessorsystems,
- c) dritte Mittel zum Reproduzieren des Arbeitsrahmens des Quellenprozessors unter Verwendung der von dem Quellenprozessor übertragenen Geschichtsinformation und
- d) vierte Mittel zum Abarbeiten des spezifischen Arbeitssegments unter Verwendung des reproduzierten Arbeitsrahmens des Quellenprozessors, wobei in dem Multiprozessorsystem eine Arbeitslastgleichverteilung erzielt wird.
3. Multiprozessorsystem nach Anspruch 1 oder 2, dadurch gekennzeichnet,
daß die bestimmte Programmiersprache eine logische
Programmiersprache ist.
4. Multiprozessorsystem nach Anspruch 1, dadurch gekennzeichnet,
daß die Systeminformation folgendes einschließt:
- a) eine erste Information über einen Identifikator (pi) eines jeden Prozessors (PRi) und
- b) eine zweite Information über die Zahl (pn) der belegbaren Prozessoren, die der Anfangsarbeitslastgleichverteilung unterzogen werden.
5. Multiprozessorsystem nach Anspruch 2, dadurch gekennzeichnet,
daß die Geschichtsinformation folgendes enthält:
- a) eine dritte Information über die Entscheidungsstufe (idb) des Quellenprozessors und
- b) eine vierte Information über einen Identifikator eines partiellen Arbeitssegmentes des Quellenprozessors, das dynamisch dem Zielprozessor zugeordnet wird, wobei ein Datenpaar der dritten Information und der vierten Information jedesmal erzeugt wird, wenn das partielle Arbeitssegment des Quellenprozessors dem Zielprozessor zugeteilt wird.
6. Verfahren zur Arbeitslastverteilung in einem Multiprozessorsystem,
das eine Vielzahl von Prozessoren und ein die Prozessoren
verbindendes Netzwerksystem aufweist, dadurch gekennzeichnet, daß eine
in einer bestimmten Programmiersprache geschriebene Arbeitsaufgabe
dem System aufgegeben wird,
daß eine Systeminformation, repräsentativ für Zeichen des Multiprozessors, gespeichert wird,
daß ein spezifisches Anfangsarbeitssegment für jeden Prozessor aus der gegebenen Arbeitsaufgabe unter Verwendung der Systeminformation ohne Übertragung von Informationen zwischen den Prozessoren automatisch und dynamisch ausgewählt wird, und
daß das spezifische Anfangsarbeitssegment in jedem Prozessor unabhängig abgearbeitet wird, wobei eine Anfangsarbeitslastgleichverteilung im dem Multiprozessorsystem erzielt wird.
daß eine Systeminformation, repräsentativ für Zeichen des Multiprozessors, gespeichert wird,
daß ein spezifisches Anfangsarbeitssegment für jeden Prozessor aus der gegebenen Arbeitsaufgabe unter Verwendung der Systeminformation ohne Übertragung von Informationen zwischen den Prozessoren automatisch und dynamisch ausgewählt wird, und
daß das spezifische Anfangsarbeitssegment in jedem Prozessor unabhängig abgearbeitet wird, wobei eine Anfangsarbeitslastgleichverteilung im dem Multiprozessorsystem erzielt wird.
7. Verfahren zur Arbeitslastverteilung in einem Multiprozessorsystem
mit einer Vielzahl von Prozessoren und einem die Prozessoren
verbindenden Netzwerk, dadurch gekennzeichnet, daß eine in einer
bestimmten Programmiersprache abgefaßte Arbeitsaufgabe dem System
aufgegeben wird,
daß eine Geschichtsinformation in dem ersten Prozessor erzeugt wird, deren Umfang kleiner als der Umfang der Information über den gesamten Arbeitsrahmen des ersten Prozessors ist, während der erste Prozessor ein ihm zugeteiltes spezifisches Arbeitssegment abarbeitet,
daß die Geschichtsinformation von dem ersten Prozessor an einen zweiten Prozessor während des Betriebs des Multiprozessorsystems übertragen wird,
daß der Arbeitsrahmen des ersten Prozessors in dem zweiten Prozessor unter Verwendung der von dem ersten Prozessor dynamisch übertragenen Geschichtsinformation reproduziert wird und,
daß ein spezifisches Arbeitssegment des zweiten Prozessors in diesem unter Verwendung des reproduzierten Arbeitsrahmens des ersten Prozessors abgearbeitet wird, wobei eine Lastgleichverteilung zwischen dem ersten und zweiten Prozessor erzielt und ein partielles Arbeitssegment des ersten Prozessors dem zweiten Prozessor zugeteilt wird.
daß eine Geschichtsinformation in dem ersten Prozessor erzeugt wird, deren Umfang kleiner als der Umfang der Information über den gesamten Arbeitsrahmen des ersten Prozessors ist, während der erste Prozessor ein ihm zugeteiltes spezifisches Arbeitssegment abarbeitet,
daß die Geschichtsinformation von dem ersten Prozessor an einen zweiten Prozessor während des Betriebs des Multiprozessorsystems übertragen wird,
daß der Arbeitsrahmen des ersten Prozessors in dem zweiten Prozessor unter Verwendung der von dem ersten Prozessor dynamisch übertragenen Geschichtsinformation reproduziert wird und,
daß ein spezifisches Arbeitssegment des zweiten Prozessors in diesem unter Verwendung des reproduzierten Arbeitsrahmens des ersten Prozessors abgearbeitet wird, wobei eine Lastgleichverteilung zwischen dem ersten und zweiten Prozessor erzielt und ein partielles Arbeitssegment des ersten Prozessors dem zweiten Prozessor zugeteilt wird.
8. Verfahren zur Arbeitslastverteilung in einem Multiprozessorsystem
mit einer Vielzahl von Prozessoren und einem die Prozessoren
verbindenden Netzwerk, dadurch gekennzeichnet, daß eine in einer
bestimmten Programmiersprache abgefaßte Arbeitsaufgabe dem System
aufgegeben wird,
daß eine Systeminformation, die repräsentativ für Zeichen des Multiprozessorsystems ist, gespeichert wird,
daß ein spezifisches Anfangsarbeitssegment für jeden Prozessor der gegebenen Arbeitsaufgabe unter Verwendung der Systeminformation ohne Informationsübertragung zwischen den Prozessoren automatisch und dynamisch ausgewählt wird,
daß das spezifische Anfangsarbeitssegment in jedem Prozessor unabhängig, abgearbeitet wird, wobei eine Anfangslastgleichverteilung in dem Multiprozessorsystem erzielt wird,
daß eine Geschichtsinformation in einem ersten Prozessor erzeugt wird, deren Umfang kleiner als der Umfang einer Information über den gesamten Arbeitsrahmen des ersten Prozessors ist, während der erste Prozessor ein an ihn zugeteiltes spezifisches Arbeitssegment abarbeitet,
daß die Geschichtsinformation von dem ersten Prozessor an einen zweiten Prozessor während des Betriebs des Multiprozessorsystems übertragen wird,
daß der Arbeitsrahmen des ersten Prozessors in dem zweiten Prozessor reproduziert wird unter Verwendung der Geschichtsinformation, die von dem ersten Prozessor dynamisch übertragen wird und
daß ein spezifisches Arbeitssegment des zweiten Prozessors in diesem unter Verwendung des reproduzierten Arbeitsrahmens des ersten Prozessors abgearbeitet wird, wobei eine Lastgleichverteilung zwischen dem ersten und zweiten Prozessor erzielt wird und ein partielles Arbeitssegment des ersten Prozessors dem zweiten Prozessor zugeteilt wird.
daß eine Systeminformation, die repräsentativ für Zeichen des Multiprozessorsystems ist, gespeichert wird,
daß ein spezifisches Anfangsarbeitssegment für jeden Prozessor der gegebenen Arbeitsaufgabe unter Verwendung der Systeminformation ohne Informationsübertragung zwischen den Prozessoren automatisch und dynamisch ausgewählt wird,
daß das spezifische Anfangsarbeitssegment in jedem Prozessor unabhängig, abgearbeitet wird, wobei eine Anfangslastgleichverteilung in dem Multiprozessorsystem erzielt wird,
daß eine Geschichtsinformation in einem ersten Prozessor erzeugt wird, deren Umfang kleiner als der Umfang einer Information über den gesamten Arbeitsrahmen des ersten Prozessors ist, während der erste Prozessor ein an ihn zugeteiltes spezifisches Arbeitssegment abarbeitet,
daß die Geschichtsinformation von dem ersten Prozessor an einen zweiten Prozessor während des Betriebs des Multiprozessorsystems übertragen wird,
daß der Arbeitsrahmen des ersten Prozessors in dem zweiten Prozessor reproduziert wird unter Verwendung der Geschichtsinformation, die von dem ersten Prozessor dynamisch übertragen wird und
daß ein spezifisches Arbeitssegment des zweiten Prozessors in diesem unter Verwendung des reproduzierten Arbeitsrahmens des ersten Prozessors abgearbeitet wird, wobei eine Lastgleichverteilung zwischen dem ersten und zweiten Prozessor erzielt wird und ein partielles Arbeitssegment des ersten Prozessors dem zweiten Prozessor zugeteilt wird.
9. Verfahren nach Anspruch 6, 7 oder 8, dadurch gekennzeichnet,
daß die bestimmte Programmiersprache eine logische Programmiersprache
ist.
10. Verfahren nach Anspruch 6 oder 9, dadurch gekennzeichnet, daß
die Systeminformation folgendes umfaßt:
- a) eine erste Information über einen Identifikator (pi) eines jeden Prozessors und
- b) eine zweite Information über die Zahl (pn) von belegbaren Prozessoren, die der Anfangslastverteilung unterworfen werden.
11. Verfahren nach Anspruch 7 oder 9, dadurch gekennzeichnet, daß
die Geschichtsinformation folgendes umfaßt:
- a) eine dritte Information (id) über die Entscheidungsstufe des ersten Prozessors und
- b) eine vierte Information über einen Identifikator eines partiellen Arbeitssegments des ersten Prozessors, das dynamisch dem zweiten Prozessor zugeordnet wird, wobei ein Datenpaar der dritten und der vierten Information zu jedem Zeitpunkt erzeugt wird, wenn das partielle Arbeitssegment des ersten Prozessors dem zweiten Prozessor zugeteilt wird.
12. Verfahren nach Anspruch 8 oder 9, dadurch gekennzeichnet, daß
die Systeminformation folgendes umfaßt:
- a) eine erste Information über einen Identifikator (pi) für jeden Prozessor und
- b) eine zweite Information über die Anzahl (pn) der belegbaren Prozessoren, die der Anfangslastverteilung unterworden werden;
und daß die Geschichtsinformation folgendes umfaßt:
- a) die erste Information über den Identifikator für jeden Prozessor,
- b) eine dritte Information über die Entscheidungsstufe des ersten Prozessors und
- c) eine vierte Information über einen Identifikator eines partiellen Arbeitssegments des ersten Prozessors, das dynamisch dem zweiten Prozessor zugeordnet ist, wobei ein Datenpaar der dritten und vierten Information zu jedem Zeitpunkt erzeugt wird, an dem das partielle Arbeitssegment des ersten Prozessors dem zweiten Prozessor zugeteilt wird.
13. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß jeder
Prozessor folgendes aufweist:
- a) ein erstes Register zur Speicherung der ersten Information,
- b) ein zweites Register zur Speicherung der zweiten Information
und
- c) Verarbeitungsmittel zur Durchführung einer bestimmten Operation unter Verwendung der ersten und zweiten Informationen.
14. Verfahren nach Anspruch 11, dadurch gekennzeichnet, daß jeder
Prozessor folgendes aufweist:
- a) ein drittes Register zur Speicherung der dritten Information,
- b) ein viertes Register zur Speicherung der vierten Information,
- c) Speichermittel zur Speicherung der dritten und vierten Information und
- d) Verarbeitungsmittel zur Durchführung einer bestimmten Operation unter Verwendung der dritten und vierten Information.
15. Verfahren nach Anspruch 12, dadurch gekennzeichnet, daß jeder
Prozessor folgendes aufweist:
- a) ein erstes Register zur Speicherung der ersten Information,
- b) ein zweites Register zur Speicherung der zweiten Information,
- c) ein drittes Register zur Speicherung der dritten Information,
- d) ein viertes Register zur Speicherung der vierten Information,
- e) Speichermittel zur Speicherung der dritten und vierten Information und
- f) Verarbeitungsmittel zur Durchführung einer bestimmten Operation unter Verwendung der ersten und der vierten Information.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP61303412A JPH0743650B2 (ja) | 1986-12-19 | 1986-12-19 | マルチプロセッサ情報処理装置および該装置における負荷分散方法 |
JP12733887A JP2587830B2 (ja) | 1987-05-25 | 1987-05-25 | マイクロプロセッサ情報処理装置および該装置における分散処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE3741953A1 true DE3741953A1 (de) | 1988-06-30 |
Family
ID=26463316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19873741953 Ceased DE3741953A1 (de) | 1986-12-19 | 1987-12-10 | Multiprozessorsystem und verfahren zur arbeitslastverteilung bei einem solchen |
Country Status (4)
Country | Link |
---|---|
US (1) | US5053950A (de) |
DE (1) | DE3741953A1 (de) |
FR (1) | FR2608807B1 (de) |
GB (1) | GB2199966B (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4132764A1 (de) * | 1991-10-02 | 1993-04-15 | Johann Rost | Verfahren und anordnung zur zuordnung von prozessen eines prozesssystems zu den rechnern eines rechnernetzwerks |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0293836A (ja) * | 1988-09-30 | 1990-04-04 | Toshiba Corp | 分散型データベース管理装置 |
US5155858A (en) * | 1988-10-27 | 1992-10-13 | At&T Bell Laboratories | Twin-threshold load-sharing system with each processor in a multiprocessor ring adjusting its own assigned task list based on workload threshold |
US5155851A (en) * | 1989-05-15 | 1992-10-13 | Bell Communications Research, Inc. | Routing an incoming data stream to parallel processing stations |
US5471622A (en) * | 1989-10-04 | 1995-11-28 | Paralogic, Inc. | Run-time system having nodes for identifying parallel tasks in a logic program and searching for available nodes to execute the parallel tasks |
US5239649A (en) * | 1989-10-30 | 1993-08-24 | International Business Machines Corporation | Channel path load balancing, through selection of storage volumes to be processed, for long running applications |
US5287509A (en) * | 1989-11-07 | 1994-02-15 | Nec Corporation | Multitasking system for in-procedure loops |
US5379438A (en) * | 1990-12-14 | 1995-01-03 | Xerox Corporation | Transferring a processing unit's data between substrates in a parallel processor |
IL99923A0 (en) * | 1991-10-31 | 1992-08-18 | Ibm Israel | Method of operating a computer in a network |
FR2692058B1 (fr) * | 1992-06-09 | 1994-07-29 | Bull Sa | Systeme de traitement transactionnel entre un serveur informatique et une pluralite de stations de travail. |
JP3408850B2 (ja) | 1992-12-09 | 2003-05-19 | 三菱電機株式会社 | クライアント・サーバシステムおよびその制御方法、並びにクライアント機装置 |
US5634125A (en) * | 1993-09-02 | 1997-05-27 | International Business Machines Corporation | Selecting buckets for redistributing data between nodes in a parallel database in the quiescent mode |
US5437032A (en) * | 1993-11-04 | 1995-07-25 | International Business Machines Corporation | Task scheduler for a miltiprocessor system |
US5630129A (en) * | 1993-12-01 | 1997-05-13 | Sandia Corporation | Dynamic load balancing of applications |
EP0668564A1 (de) * | 1994-02-22 | 1995-08-23 | International Business Machines Corporation | Betriebsmittelmessung in einem Komplex mit mehreren Betriebssystemen |
DE4439060A1 (de) * | 1994-11-02 | 1996-05-09 | Teves Gmbh Alfred | Mikroprozessoranordnung für ein Fahrzeug-Regelungssystem |
US5715457A (en) * | 1995-10-06 | 1998-02-03 | Matsushita Electtic Industrial | Multiprocessor system for determining assignment of task in view of access time to storage resource |
GB2309558A (en) * | 1996-01-26 | 1997-07-30 | Ibm | Load balancing across the processors of a server computer |
US6192388B1 (en) * | 1996-06-20 | 2001-02-20 | Avid Technology, Inc. | Detecting available computers to participate in computationally complex distributed processing problem |
US5872972A (en) * | 1996-07-05 | 1999-02-16 | Ncr Corporation | Method for load balancing a per processor affinity scheduler wherein processes are strictly affinitized to processors and the migration of a process from an affinitized processor to another available processor is limited |
US6345041B1 (en) * | 1996-10-24 | 2002-02-05 | Hewlett-Packard Company | Method and apparatus for automatic load-balancing on multisegment devices |
US6405282B1 (en) * | 1997-10-06 | 2002-06-11 | Emc Corporation | Method for analyzine disk seek times in a disk array storage device |
US6202080B1 (en) * | 1997-12-11 | 2001-03-13 | Nortel Networks Limited | Apparatus and method for computer job workload distribution |
US6748413B1 (en) | 1999-11-15 | 2004-06-08 | International Business Machines Corporation | Method and apparatus for load balancing of parallel servers in a network environment |
US6748414B1 (en) * | 1999-11-15 | 2004-06-08 | International Business Machines Corporation | Method and apparatus for the load balancing of non-identical servers in a network environment |
US6859927B2 (en) | 1999-12-21 | 2005-02-22 | Lockheed Martin Corporation | Apparatus and method for controlling allocation of resources and task execution |
US20030236813A1 (en) * | 2002-06-24 | 2003-12-25 | Abjanic John B. | Method and apparatus for off-load processing of a message stream |
TW577237B (en) * | 2002-11-18 | 2004-02-21 | Inst Information Industry | Load balance system and method of wireless LAN |
US7614055B2 (en) * | 2004-06-14 | 2009-11-03 | Alcatel-Lucent Usa Inc. | Selecting a processor to run an executable of a distributed software application upon startup of the distributed software application |
JP4126707B2 (ja) * | 2006-07-28 | 2008-07-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報システムの状態を解析する技術 |
TWI342498B (en) * | 2007-01-12 | 2011-05-21 | Asustek Comp Inc | Multi-processor system and performance enhancement method thereof |
US9723070B2 (en) * | 2008-01-31 | 2017-08-01 | International Business Machines Corporation | System to improve cluster machine processing and associated methods |
US8817614B1 (en) * | 2010-09-16 | 2014-08-26 | Vasona Networks Inc. | Policy enforcer having load balancing capabilities |
EP3255287B1 (de) | 2016-06-10 | 2024-03-20 | Claverham Limited | Anpassungssystem für einen hydraulikaktuator |
US20230041718A1 (en) * | 2021-08-09 | 2023-02-09 | Kenneth Raymond Perry | Automated code generation based on pseudo-code |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0010570B1 (de) * | 1978-10-30 | 1983-11-02 | International Business Machines Corporation | Verfahren und Einrichtung zur selbstadaptiven Zuordnung der Arbeitslast einer Datenverarbeitungsanlage |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3348210A (en) * | 1964-12-07 | 1967-10-17 | Bell Telephone Labor Inc | Digital computer employing plural processors |
US3496551A (en) * | 1967-07-13 | 1970-02-17 | Ibm | Task selection in a multi-processor computing system |
US3593300A (en) * | 1967-11-13 | 1971-07-13 | Ibm | Arrangement for automatically selecting units for task executions in data processing systems |
DE2028345C3 (de) * | 1970-06-09 | 1981-04-09 | Siemens Ag, 1000 Berlin Und 8000 Muenchen | Verfahren zur Verteilung von Ablaufanforderungen in einer programmgesteuerten Datenvermittlungsanlage |
US4099235A (en) * | 1972-02-08 | 1978-07-04 | Siemens Aktiengesellschaft | Method of operating a data processing system |
US4073005A (en) * | 1974-01-21 | 1978-02-07 | Control Data Corporation | Multi-processor computer system |
US4130865A (en) * | 1974-06-05 | 1978-12-19 | Bolt Beranek And Newman Inc. | Multiprocessor computer apparatus employing distributed communications paths and a passive task register |
US4318173A (en) * | 1980-02-05 | 1982-03-02 | The Bendix Corporation | Scheduler for a multiple computer system |
US4403286A (en) * | 1981-03-06 | 1983-09-06 | International Business Machines Corporation | Balancing data-processing work loads |
US4633387A (en) * | 1983-02-25 | 1986-12-30 | International Business Machines Corporation | Load balancing in a multiunit system |
JPS61253572A (ja) * | 1985-05-02 | 1986-11-11 | Hitachi Ltd | 疎結合マルチプロセツサ・システムの負荷配分方式 |
AU588389B2 (en) * | 1985-11-14 | 1989-09-14 | Data General Corporation | Multiprocessor data processing system |
-
1987
- 1987-12-10 DE DE19873741953 patent/DE3741953A1/de not_active Ceased
- 1987-12-17 GB GB8729409A patent/GB2199966B/en not_active Expired - Lifetime
- 1987-12-18 FR FR8718115A patent/FR2608807B1/fr not_active Expired - Lifetime
-
1990
- 1990-05-11 US US07/522,504 patent/US5053950A/en not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0010570B1 (de) * | 1978-10-30 | 1983-11-02 | International Business Machines Corporation | Verfahren und Einrichtung zur selbstadaptiven Zuordnung der Arbeitslast einer Datenverarbeitungsanlage |
Non-Patent Citations (6)
Title |
---|
GAJSKI, Daniel und PEIR, Jih-Kwon, Essential Issues in Multiprocessor Systems, In: IEEE Computer, Juni 1985, S. 9-27 * |
HUANG, Kai, Multiprocessor Supervomputers for Scientific/Engineering Applications, In: IEEE Computer, Juni 1985, S. 57-73 * |
MOKHOFF, Nicolas, PARALLELISM MAKES STRONG BID FOR NEXT GENERATION COMPUTERS, In: Computer Design, September 1984, S. 104-131 * |
TANAKA, Hidehiko, A Parallel Inference Machine, In: IEEE Computer, Mai 1986, S. 48-54 * |
TRELEAVEN, Philip, Future Computers: Logic, Data Flow, ..., Control Flow?, In: IEEE Computer, März 1984, S. 47-57 * |
TUOMENOKSA, David Lee und SIEGEL, Howard Jay, Task Preloading Schemes for Reconfigurable Parallel Processing Systems, In: IEEE Trans. Comput., Vol. C-33, Nr. 10, Oktober 1984, S. 895-905 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4132764A1 (de) * | 1991-10-02 | 1993-04-15 | Johann Rost | Verfahren und anordnung zur zuordnung von prozessen eines prozesssystems zu den rechnern eines rechnernetzwerks |
Also Published As
Publication number | Publication date |
---|---|
GB2199966B (en) | 1991-08-07 |
FR2608807A1 (fr) | 1988-06-24 |
GB8729409D0 (en) | 1988-02-03 |
GB2199966A (en) | 1988-07-20 |
FR2608807B1 (fr) | 1994-07-08 |
US5053950A (en) | 1991-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3741953A1 (de) | Multiprozessorsystem und verfahren zur arbeitslastverteilung bei einem solchen | |
DE3506749C2 (de) | ||
DE69322538T2 (de) | Methode und Prozessor zur Bearbeitung eines Programmes in Parallelbearbeitung | |
DE3338345C2 (de) | ||
DE3751540T2 (de) | Verfahren und Vorrichtung zur Datenverarbeitung. | |
DE2912287C3 (de) | Datenverarbeitungsanlage | |
DE2302074A1 (de) | Speicherschutzanordnung in einem multiprozessorsystem | |
DE2354521A1 (de) | Verfahren und einrichtung zum gleichzeitigen zugriff zu verschiedenen speichermoduln | |
DE2556661A1 (de) | Steuerschaltung mit adressenerweiterung | |
DE19822776A1 (de) | Datenverarbeitungsvorrichtung | |
DE2758830A1 (de) | Rechenvorrichtung | |
DE2454613C2 (de) | Kanaleinheit für die Steuerung der Datenübertragung auf einer Vielzahl von Kanälen zwischen den peripheren Einrichtungen und dem Hauptspeicher einer digitalen Datenverarbeitungsanlage | |
DE3338329C2 (de) | ||
DE2218839A1 (de) | Verfahren und einrichtung zur zuteilung von speicheradressen zu datenelementen | |
DE2047062A1 (de) | Verfahren und Einrichtung zur Messung der Effektivität einer Daten Verarbeitungsanlage mit virtueller Adre»»ici uiig | |
DE2054941C2 (de) | Anordnung zur Auswahl von Datensätzen | |
DE2632277A1 (de) | Mikroprogrammierbarer computer fuer eine numerische steuervorrichtung | |
EP0009625A2 (de) | Datentransferschalter mit assoziativer Adressauswahl in einem virtuellen Speicher | |
DE2847737C2 (de) | Schaltung zur Umsetzung virtueller Adressen in eine reelle Adresse von größerer Länge | |
DE3435816A1 (de) | Vorrichtung zur numerischen signalverarbeitung | |
DE1499286B2 (de) | Datenbearbeitungsanlage | |
DE69815656T2 (de) | Rechnersystem mit einem mehrfach Sprungbefehlzeiger und -Verfahren | |
DE2419522A1 (de) | Verfahren und anordnung zur unterteilung eines oder mehrerer nicht benutzter bereiche eines mit einem rechner verbundenen speichers | |
DE3123379C2 (de) | ||
DE69519939T2 (de) | System und verfahren zur datenverarbeitung und damit ausgestattetes kommunikationssystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8128 | New person/name/address of the agent |
Representative=s name: KEHL & ETTMAYR, PATENTANWAELTE, 81679 MUENCHEN |
|
R002 | Refusal decision in examination/registration proceedings | ||
R003 | Refusal decision now final |
Effective date: 20140218 |