DE3741953A1 - Multiprozessorsystem und verfahren zur arbeitslastverteilung bei einem solchen - Google Patents

Multiprozessorsystem und verfahren zur arbeitslastverteilung bei einem solchen

Info

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
Application number
DE19873741953
Other languages
English (en)
Inventor
Jiro Naganuma
Takeshi Ogura
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP61303412A external-priority patent/JPH0743650B2/ja
Priority claimed from JP12733887A external-priority patent/JP2587830B2/ja
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of DE3741953A1 publication Critical patent/DE3741953A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/313Logic 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.
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.
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
Tabelle
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.
(1) Ein Verfahren zur Erzeugung der Geschichtsinformation, die wesentlich für die Erzeugung des Arbeitsrahmens des ersten Prozessors PR 1 ist.
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.
(2) Ein Verfahren zum Reproduzieren des Arbeitsrahmens des ersten Prozessors PR 1 in dem zweiten Prozessor PR 2
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.
Übertragene Geschichtsinformation
  • (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.
Algorithmus zum Reproduzieren des Arbeitsrahmens des ersten Prozessors unter Verwendung von übertragener Geschichtsinformation
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.
(a) Initialisierung des Zählers, der Register, des Speichers und des Markierungsabschnitts (i) Initialisierung des Zählers Cpc, der Register Rpi und Rpn
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.
(ii) Initialisierung des Markierungsabschnitts F
Die Markierung "EIN", die anzeigt, daß die Anfangslastverteilung durchgeführt oder der Arbeitsrahmen reproduziert wird, wird in den Markierungsabschnitt F eingeschrieben.
(iii) Initialisierung des Speichers 25
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.
(iv) Initialisierung der Register Ridb und Rblp
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).
(b) Durchführung der Anfangslastverteilung mittels der Register Rpi, Rpn und des Zählers Cpc.
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.
(c) Verfahren zum Reproduzieren eines Arbeitsrahmens des ersten Prozessors nach der ersten Lastverteilung
(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.
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.
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.
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.
DE19873741953 1986-12-19 1987-12-10 Multiprozessorsystem und verfahren zur arbeitslastverteilung bei einem solchen Ceased DE3741953A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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