DE69029956T2 - Vorrichtung zur Parallelisierung von Programmen - Google Patents

Vorrichtung zur Parallelisierung von Programmen

Info

Publication number
DE69029956T2
DE69029956T2 DE69029956T DE69029956T DE69029956T2 DE 69029956 T2 DE69029956 T2 DE 69029956T2 DE 69029956 T DE69029956 T DE 69029956T DE 69029956 T DE69029956 T DE 69029956T DE 69029956 T2 DE69029956 T2 DE 69029956T2
Authority
DE
Germany
Prior art keywords
task
tasks
processors
processing
inter
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.)
Expired - Fee Related
Application number
DE69029956T
Other languages
English (en)
Other versions
DE69029956D1 (de
Inventor
Masatsugu Kametani
Kazuhiro Umekita
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of DE69029956D1 publication Critical patent/DE69029956D1/de
Application granted granted Critical
Publication of DE69029956T2 publication Critical patent/DE69029956T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf eine Vorrichtung zur Parallelisierung von Programmen zum Erzeugen, aus einem auszuführenden Quellprogramm, eines Objektprogrammes, welches für parallele Verarbeitung durch ein Multi-Prozessor-System geeignet ist, welches eine Mehrzahl von Prozessoren, einen Kommunikationsmechanismus zur Durchführung von Inter- Prozessor-Kommunikation und einen Synchronisationsmechanismus zur Ermöglichung, daß die Verarbeitung zwischen den Prozessoren durch Koordination-(Warten)-Verarbeitung weiterschreitet, aufweist.
  • Im Fall, daß Parallelverarbeitung in einem Multi-Prozessor-System durchzuführen ist, lief eine derartige Task-Planung darauf hinaus, daß ein Programm in Einheiten geteilt wird, jede von einer großen Größe, wie z.B. Aufträge, Schlitten (sleds) oder ähnliches, wobei es erforderlich für die Task-Planung ist, zuvor durch Flag-Überprüfung oder durch Token-(Berechtigungszeichen)-Steuerverfahren zu bestätigen, daß alle Inter-Task-Relationen befriedigt sind.
  • Eine für diese Art von Verarbeitungssystem relevante Technik ist z.B. in JP-A-63- 184 841 offenbart.
  • Die Programm-Parallelisierungstechnik des Standes der Technik ist nachteilig insofern, daß, da das Programm in Einheiten oder Segmente von großer Größe zum Einteilen von Parallelverarbeitung geteilt wird, es schwierig oder gar unmöglich ist, den Parallelismus abzuleiten, welchen das Programm inherent aufweist, was es schwierig oder unmöglich macht, die Parallelverarbeitung in effektiver Weise zu realisieren.
  • Da die Inter-Task-Sequenzrelation durch die Flag-Überprüfung oder die Token-Steuerung gesteuert oder verwaltet wird, wird des weiteren auch viel Zeit benötigt zum Erzeugen der Parallelisierungsplanung, was ein weiteres Problem verursacht.
  • Der Artikel "Self-timing programs and the quantum scheduler", veröffentlicht in "Communication of the ICM", Vol 31, Nr. 6, Juni 1988, Seiten 696- 702, NY, US, bezieht sich auf eine Vorrichtung zur Parallelisierung von Programmen unter Verwendung eines intern erzeugten Programmtaktes in Verbindung mit einem Quantum-Planer, der selbst-zeitsteuernde Programme erzeugt, welche bei der Herstellung von deterministischen Computersystemen verwendet werden.
  • Es ist daher ein Ziel der vorliegenden Erfindung, eine Vorrichtung zur Parallelisierung von Programmen zur Erzeugung von Objektprogrammen bei hoher Geschwindigkeit zu schaffen, entsprechend verschiedenartigen Quellprogrammen, universell unabhängig von Prozessortypen, die in einem Multi- Prozessor-System enthalten sind, welches einen Kommunikationsmechanismus zur Durchführung von Kommunikation zwischen den beteiligten Prozessoren und einen Synchronisationsmechanismus aufweist, um zu ermöglichen, daß die Verarbeitung zwischen den Prozessoren voranschreitet durch Koordinationsverarbeitung, wie z.B. Warteverarbeitung, derart, daß die Objektprogramme parallel mit hoher Effizienz in dem Multi-Prozessor-System verarbeitet werden können.
  • Ein weiteres Ziel der vorliegenden Erfindung ist es, eine Vorrichtung zur Parallelisierung von Programmen zu schaffen, welche fähig ist, das Ergebnis von Task-Planung zu erhalten, welches den mit der Synchronisationsverarbeitung des Multi-Prozessor-Systems einhergehenden Aufwand vermindert.
  • Es ist ein noch weiteres Ziel der vorliegenden Erfindung, eine Vorrichtung zur Parallelisierung von Programmen zu schaffen, welche geeignet ist, auszuführende Objektprogramme jeweils den einzelnen Prozessoren des Multi- Prozessor-Systems zuzuweisen, während der mit der Synchronisationsverarbeitung durch das Multi-Prozessor-System einhergehende Aufwand reduziert wird.
  • Ein weiteres Ziel der vorliegenden Erfindung ist es, eine Vorrichtung zur Parallelisierung von Programmen zu schaffen, welche geeignet ist, die auszuführenden Objektcodes den einzelnen Prozessoren des Multi-Prozessor- Systems zuzuweisen, derart, daß die Zeit, die zur Ausführung in dem Multi- Prozessor-System benötigt wird, wesentlich minimiert werden kann, wobei der der Parallelverarbeitung in dem Multi-Prozessor-System zuweisbare Aufwand berücksichtigt wird.
  • Es ist ein noch weiteres Ziel der vorliegenden Erfindung, eine Vorrichtung zur Parallelisierung von Programmen zu schaffen, welche eine hohe Universalität aufweist, so daß sie mit einer großen Vielfalt von Prozessoren kompatibel ist.
  • Ein weiteres Ziel der vorliegenden Erfindung ist es schließlich, eine Vorrichtung zur Parallelisierung von Programmen zu schaffen, welche geeignet ist, die Inter-Task-Relationen leicht herauszufinden, ohne die Struktur des Originalprogramms zu ändern, um hierdurch die Planung von Tasks mit hoher Geschwindigkeit zu realisieren.
  • Diese Ziele werden mittels einer durch die Ansprüche definierten Vorrichtung erreicht.
  • Mit der Struktur oder mit dem Autbau der Programm-Parallelisierungsvorrichtung gemäß der vorliegenden Erfindung ist es möglich, mit hoher Geschwindigkeit von einem auszuführenden Quellprogramm ein Objektprogramm zu erzeugen, welches parallel verarbeitet werden kann durch eine Mehrzahl von Prozessoren, welche einen Multi-Prozessor bilden, welcher einen Kommunikationsmechanismus zur Ermöglichung von Inter-Prozessor- Kommunikation und einen Synchronisationsmechanismus zum Ermöglichen, daß die Verarbeitungen parallel zwischen den Prozessoren voranschreiten durch Koordination, aufweist. Somit kann das Objektprogramm, welches für Parallelverarbeitung in dem Multi-Prozessor-System bei hoher Effizienz geeignet ist, mit hoher Geschwindigkeit entsprechend verschiedenartigen Quellprogrammen, universell unabhängig von den Prozessortypen erzeugt werden.
  • Mit den Merkmalen der vorliegenden Erfindung wird eine Task-Planung ermöglicht, welche den mit der Synchronisationsverarbeitung durch das Multi-Prozessor-System einhergehenden Aufwand verringert.
  • Gemäß der vorliegenden Erfindung wird vorgeschlagen, daß die Task-Planungsmittel mit einer Funktion zum Verbinden der Tasks in einem Task gemäß der Task-Verbindungs-lnformation versehen ist.
  • Somit ist es bei der Programm-Parallelisierungsvorrichtung der vorliegenden Erfindung möglich, die auszuführenden Objektprogramme den einzelnen Prozessoren des Multi-Prozessor-Systems zuzuweisen, während der mit der Synchronisationsverarbeitung des Multi-Prozessor-Systems einhergehende Aufwand verringert wird.
  • Die Task-Teilungsmittel sind mit einer Funktion zum Verbinden der Tasks versehen, um hierdurch einen neuen Task gemäß der Task-Verbindungs- Information zu erzeugen, welche durch die Task-Planungsmittel erzeugt wird.
  • Durch diesen Autbau ist es möglich, die auszuführenden Objektcodes den einzelnen Prozessoren des Multi-Prozessor-Systems zuzuweisen, derart, daß die für die Ausführung in dem Multi-Prozessor-System benötigte Zeit substantiell minimiert werden kann, während der der Parallelverarbeitung in dem Multi-Prozessor-System zuweisbare Aufwand berücksichtigt wird.
  • Gemäß einem weiteren Gesichtspunkt der vorliegenden Erfindung wird vorgeschlagen, daß ein Vor-Compiler geschaffen wird zum Übersetzen des Quellprogrammes in ein Vor-Objektprogramm, welches virtuelle Maschinencodes aufweist, die individuelle Befehle für verschiedenartige Prozessoren in allgemeinen Ausdrücken enthält.
  • Aufgrund dieses Merkmals kann sich die Programm-Parallelisierungsvorrichtung gemäß der Erfindung einer hohen Universalität erfreuen und ist mit einer großen Manigfaltigkeit von Prozessoren kompatibel.
  • Gemäß einem weiteren Gesichtspunkt der Erfindung wird vorgeschlagen, daß die virtuellen Maschinencodes verwendet werden, welche die Daten einstellen können, welche in der Funktionsform in Eins-zu-Eins-Korrespondenz ausgedrückt werden.
  • Somit ist es gemäß dem gerade erwähnten obigen Merkmal möglich, die Inter-Task-Relation leicht herauszufinden, ohne daß das Originalprogramm verändert werden muß, wodurch die Task-Planung mit hoher Geschwindigkeit in weiterer vorteilhafter Weise erreicht werden kann.
  • KURZE BESCKRE[BUNG DER ZEICIINUNGEN
  • Fig. 1 ist ein Blockdiagramm, welches schematisch einen allgemeinen Aufbau einer Programm-Parallelisierungsvorrichtung gemäß einer ersten beispielhaften Ausführungsform der Erfindung zeigt;
  • Fig. 2 ist eine Ansicht zur Verdeutlichung eines Beispiels eines Ausdrucks in einer Funktionsform;
  • Fig. 3 ist eine Ansicht, welche ein Beispiel einer Task-Registrierungs- Tabelle zeigt, die in der Programm-Parallelisierungsvorrichtung verwendet wird;
  • Fig. 4 ist eine Ansicht, welche ein Beispiel einer virtuellen Maschinencode-/Realen-Maschinencode-Mischtabelle zeigt;
  • Fig. 5 ist ein Flußdiagramm ist zur Verdeutlichung einer Inter-Task-Sequenz-Relation;
  • Fig. 6 ist eine Ansicht zur Verdeutlichung eines Beispiels einer Task-Relations-Tabelle;
  • Fig. 7 ist ein Diagramm, welches ein Beispiel eines Task-Relations-Graphen zeigt;
  • Fig. 8 ist ein Diagramm, welches ein Beispiel der Anfangspositionen von Tasks in einem Parallelisierungsplan zeigt;
  • Fig. 9 ist eine Ansicht, welche ein Beispiel einer Stufendatei zeigt;
  • Fig. 10 ist ein Diagramm, welches ein Beispiel des Parallelisierungsplans zeigt, bei welchem simultane Synchronisation verwendet wird;
  • Fig. 11 ist ein Diagramm, welches ein Beispiel des Parallelisierungsplans zeigt, bei welchem Verbund-Synchronisation verwendet wird;
  • Fig. 12 und 13 sind jeweils Ansichten zur Verdeutlichung von Beispielen von Task- Bewegung, welche die Zahlen von zu verwendenden Prozessoren verringern kann;
  • Fig. 14 und 15 sind Diagramme, welche jeweils weitere Beispiele des Task-Relations-Graphen zeigen;
  • Fig. 16 und 17 sind Diagramme, welche jeweils Beispiele des Parallelisierungsplans zeigen, bei welchem simultane Synchronisation verwendet wird;
  • Fig. 18 ist ein Diagramm zur beispielhaften Verdeutlichung der Bedingungen für Task-Verbindung;
  • Fig. 19 ist eine Ansicht, welche ein Beispiel einer Prozessor-Datei zeigt;
  • Fig. 20 ist ein Flußdiagramm zur Verdeutlichung eines Beispiel-Algorithmus für die Task-Verbindung;
  • Fig. 21 ist eine Ansicht, welche ein Beispiel einer Task-Verbindungs-Datei zeigt;
  • Fig. 22 ist eine Tabelle, welche ein Beispiel einer Stufen-Datei zeigt;
  • Fig. 23, 24 und 25 sind Ansichten, welche jeweils weitere Beispiele der Prozessor- Datei zeigen;
  • Fig. 26 ist ein schematisches Blockdiagramm, welches einen allgemeinen Aufbau der Programm-Parallelisierungsvorrichtung gemäß einer zweiten Ausführungsform der Erfindung zeigt;
  • Fig. 27 ist ein Diagramm, welches eine dritte Ausführungsform der vorliegenden Erfindung zeigt;
  • Fig. 28 ist ein Blockdiagramm, welches einen allgemeinen Aufbau der Programm-Parallelisierungsvorrichtung gemäß einer vierten Ausführungsform der Erfindung zeigt; und
  • Fig. 29 ist ein Schemadiagramm ist, welches den Aufbau eines Prozessors (77-82), der in einer Zielmaschine enthalten ist.
  • Im folgenden wird die vorliegende Erfindung im Detail beschrieben werden, in Verbindung mit bevorzugten oder beispielhaften Ausführungsformen davon unter Bezugnahme auf die beigefügten Figuren.
  • Erste Ausführungsform:
  • Figur 1 ist ein Blockdiagramm, welches schematisch einen allgemeinen Aufbau einer Programm-Parallelisierungsvorrichtung gemäß einer ersten beispielhaften Ausführungsform der Erfindung zeigt. Bezug nehmend auf die Figur, besteht die Programm-Parallelisierungsvorrichtung, allgemein durch Bezugszeichen 10 bezeichnet, aus Vor-Compilierungsmittel 2, Nukleus-System-Routinen 3, Task-Teilungs- oder Segmentierungsmittel 4, Planungsmittel 5 und Parallelcompilierungsmittel 6.
  • Ein Parallelverarbeitungssystem (Multi-Prozessor-System) 9, auch als die Zielmaschine bezeichnet, ist ausgelegt, Objektcode und Sequenzen auszuführen, welche nun fähig sind, parallel verarbeitet zu werden. Das Multi- Prozessor-System 10 weist eine Mehrzahl von Prozessoren auf, einen Inter- Prozessor-Synchronisationsmechanismus oder Mittel zur Ermöglichung, daß die Parallelverarbeitungen parallel zwischen den einzelnen Prozessoren voranschreiten zu können, ohne Verwirrung oder Widerspruch in der Inter- Task-Sequenzrelation mit sich zu bringen, durch Prüfung der Enden der Tasks, wie sie ausgeführt sind, und einen Kommunikationsmechanismus oder Mittel zum positiven Absichern von Datentransaktionen oder -transfers zwischen den einzelnen Prozessoren.
  • Als ein Beispiel für den Inter-Prozessor-Synchronisationsmechanismus kann eine Inter-Prozessor-Synchronisationsvorrichtung, offenbart in JP-A-63-45670 (japanische Patentanmeldung, Offenlegungsnummer 45670/1988) verwendet werden. Andererseits kann der Kommunikationsmechanismus verwirklicht werden z.B. durch Verwendung eines geteilten Speichers, welcher den Zugriff hierauf von gegebenen Prozessoren wahlfrei bei hoher Geschwindigkeit und mit hoher Effizienz erlaubt.
  • Der oben erwähnte geteilte Speicheraufbau kann durch Steuern eines Bussystems realisiert werden, welches die einzelnen Prozessoren mit dem geteilten Speicher verbindet, mit Hilfe einer Hochgeschwindigkeits-/Hochleistungs-Signalsteuerungs-Schaltung, wie sie in JP-A-62-154057 oder JP-A-63-47866 zum Beispiel offenbart ist.
  • Eine typische Struktur der Zielmaschine 9 ist in Fig. 28 gezeigt. Im Fall der gegenwärtigen (ersten) Ausführungsform der Erfindung ist die Anordnung derart geschaffen, daß die durch eine Mehrzahl von Prozessoren der Zielmaschine 9 gemeinsam benutzten Daten in den gemeinsamen Speichern gespeichert werden, während die nur durch einen bestimmten der Prozessoren benutzten Daten in einem lokalen Speicher oder Register dieses einen bestimmten Prozessors plaziert werden.
  • Um zu ermöglichen, ein Quellprogramm 1 parallel durch das Multi-Prozessor-System oder die Zielmaschine 9 zu verarbeiten; arbeitet die Programm- Parallelisierungsvorrichtung 10 gemäß dieser Ausführungsform in der im folgenden beschriebenen Weise.
  • Das Vor-Compilierungsmittel 2 übersetzt ein auszuführendes Quellprogramm 1 in virtuelle Maschinencodes, vorgeschrieben durch die Nukleus-Systemroutine 3, wobei die Codes anschließend dem Task-Teilungsmittel 4 zugeführt werden. Mit der Wendung "virtueller Maschinencode" ist ein Maschinencode gemeint, welcher in allgemeinen Ausdrücken einen Prozessorbefehl ausdrückt und welcher die für die Parallelisierung notwendigen Bedingungen erfüllen kann. Genauer gesagt, wird zum Erfüllen der für die Parallelisierung notwendigen Bedingungen im Falle dieser Ausführungsform ein derartiger virtueller Maschinencode verwendet, der die Fähigkeit des Übersetzens der Daten, ausgedrückt in der Form von Funktionen in Eins-zu-Eins-Korrespondenz, aufweist. Als Verfahren zum Übersetzen eines Programms in virtuelle Maschinencodes existiert das als Beispiel unten erwähnte Verfahren. Eine Tabelle, welche Korrespondenzen zwischen Anweisungen, die ein Quellprogramm beschreiben, und den Nukleus-System-Routinen wird vorbereitet. Diese Tabelle wird irn folgenden als die SN-Tabelle bezeichnet. Das Vor- Compilierungsmittel 2 übersetzt das Quellprogramm 1 in die virtuellen Maschinencodes mit Hilfe der SN-Tabelle und den Nukleus-System-Routinen.
  • Die SN-Tabelle kann z.B. in die Vor-Compilierungsmittel 2 integriert sein. Die Nukleus-Systern-Routinen werden durch die virtuellen Maschinencodes gebildet zum Durchführen jeweils gegebener Verarbeitungen. Ein Satz solcher Nukleus-System-Routinen wird als Nukleus-Sprache bezeichnet.
  • In dieser Weise übersetzt das Vor-Compilierungsmittel 2 das Quellprogramm 1 in die virtuellen Maschinencodes, die dann zu dem Task-Teilungsmittel 4 gesendet werden.
  • Bei dem Task-Teilungsmittel 4 wird jeder von den virtuellen Maschinencodes, die von dem Vor-Compilierungsmittel 2 zugeführt werden, segmentiert oder separiert zu Einheiten, die als Tasks bezeichnet werden. Das Task- Teilungsmittel erzeugt weiter die Daten oder Information betreffend die Verarbeitungszeit, die erforderlich ist für das Verarbeiten des Tasks und die sequentiellen (vorangehenden/nachfolgenden) Relationen zwischen den Tasks, d.h. die Inter-Task-Sequenz-Relationen, welche wie folgt definiert werden können. Es sei angenommen, daß die Ausführung eines bestimmten Tasks Q unerlässlich das Ergebnis der Ausführung eines anderen Tasks P erfordert. Dann ist es ersichtlich, daß die Ausführung des Tasks P abgeschlossen sein muß, bevor die Ausführung des Tasks Q gestartet werden kann. In diesem Falle sagt man, daß die Inter-Task-Sequenz-Relation zwischen dem Task P und dem Task Q existiert, wobei der Task P als Aufsteiger-Task für den Task Q bezeichnet wird, während der Task Q als der Absteiger-Task in bezug auf den Task P bezeichnet wird.
  • Die Inter-Task-Sequenz-Relationen können durch Pfeile angegeben werden, wie in Fig. 5 gezeigt. Das Diagramm, welches die Inter-Task-Sequenz Relation zeigt, wird im folgenden als Inter-Task-Relationsgraph bezeichnet.
  • Das Task-Teilungsmittel 4 kann die Tabelle vorbereiten, welche die Inter- Task-Sequenz-Relationen (Task-Relationstabelle) angibt, wie z.B. in Fig. 6 gezeigt, auf einer Fall-für-Fall-Basis wie folgt.
  • (1) Im Falle, daß ein Quellprogramm 1 in der Form einer Funktion beschrieben ist:
  • Da der von dem Vor-Compilierungsmittel 2 ausgegebene virtuelle Maschinencode in der Form einer Funktion ist, bildet der Task A, der die unbedingt erforderlichen Daten für die Ausführung jedes der Tasks T ausgibt, den Aufsteiger-Task für den letzteren. Dementsprechend kann auf der Basis dieser Relation die Inter-Task-Relationstabelle erzeugt werden.
  • (2) Im Falle, daß das Quellprogramm 1 in einer Nicht-Funktions-Form beschrieben ist:
  • a) Wenn Programm-Umschreiben auf dem Quellprogramm-Niveau nicht durchgeführt wird, kann eine Tabelle, welche Korrespondenzen zwischen den Anweisungen des Quellprogramms 1 und den Funktionsformen hierfür angibt, für die Vor-Compilierungsmittel 2 vorgesehen sein, wobei der Tabelleninhalt und die vor-compilierten virtuellen Maschinencodes an die Task-Teilungsmittel 4 gesendet werden. Somit können die Inter-Task-Relationstabelle, welche den Aufsteiger-Task A und den Absteiger-Task T angibt, welche für die Ausführung hierfür die aus der Ausführung des Tasks A resultierenden Daten benötigen, durch Zusammenwirken des Vor-Compilierungsmittels 2 und des Task-Teilungsmittels 4 erzeugt werden.
  • b) Wenn dagegen eine Programmumschreibung auf dem Quellprogrammlevel durchgeführt wird, wird das Quellprogramm in eine Funktionsform übersetzt, auf der Stufe des Task-Moduls, welches als eine minimale Einheit, wie unten beschrieben, betrachtet werden kann, so daß dieser Fall auf den o.g. Fall (1) zurückgeführt werden kann.
  • i) Im Falle, daß das Quellprogramm nur die Speichervariablen nutzt (ohne Registervariablen zu benutzen), entspricht dies einem Quellprogramm, welches nur durch die Speicheroperationen gebildet wird, ohne eine Registeroperation zu machen. Wenn der geteilte Speicher als der oben erwähnte Speicher gewählt wird, kann auf Daten in dem gemeinsamen Speicher durch jeden gegebenen der Prozessoren zugegriffen werden. Als Verfahren zum Übersetzen des Quellprogramms in die Funktionsform kann ein Verfahren erwähnt werden, gemäß welchem verschiedene Variablen und Konstanten nicht durch den selben Namen identifiziert werden. Ein Beispiel dieses Verfahrens ist in Fig. 2 gezeigt. Bezug nehmend auf die Figur, bedeutet "a = b + c", daß "(b + c) ausgeführt wird, woraufhin a durch das Ergebnis der Ausführung ersetzt wird". Als ein Algorithmus für die Übersetzung in die Funktionsform in dieser Weise kann ein Übersetzungsalgorithmus erwähnt werden, wie er unten beschrieben wird.
  • Wenn ein Zeichen (oder eine Zeichenkette), die einen Namen der selben Variable oder Konstante in der Beschreibung auf der linken Seite des Gleichzeitszeichens m mal (m ≥ 2 ) erscheint, wird die linke Seite des i-ten Ausdrucks (wobei 2 ≤ i ≤ m) in ein Zeichen (oder eine Zeichenkette) Ni übersetzt, das sich von dem Zeichen (oder der Zeichenkette) N&sub1;, das den Namen der Variablen oder Konstanten des ersten Auftretens bezeichnet, unterscheidet, woraufhin in den Ausdrücken, welche den nächsten (i + 1) bis einschließlich demjenigen Ausdruck davon, in welchem das selbe Zeichen oder die selbe Zeichenkette Ni auf der linken Seite des Gleichheitszeichens auftaucht, die selbe Zeichenkette auf den rechten Seiten durch die selbe Zeichenkette Ni umgeschrieben wird. Durch Wiederholen der obigen Prozedur für jedes i, gegeben durch 2 ≤ i ≤ m wird das Quellprogramm in die Funktionsform transformiert, welche somit ähnlich dem o.g. Fall (1) verarbeitet werden kann.
  • ii) Im Falle, daß das Quellprogramm Registervariablen benutzt, wird entweder das unten erwähnte Verfahren (A) oder (B) angewandt.
  • A) Alle Registeroperationen werden in Speicheroperationen übersetzt, welche somit auf den zuvor genannten Fall (2)-b)-i) zurückgeführt werden können.
  • B) Es wird ein Modul als die minimale Einheit eines Tasks erstellt, welches von einem Speicher geladen und in einem Speicher gespeichert werden kann. Hierzu wird das Quellprogramm geteilt oder segmentiert, so daß es zu den Modulen kompatibel wird. Wenn die einfache Teilung des Quellprogramms ungenügend ist, können Speicherladebefehl und Speicherspeicherungsbefehl hinzugefügt und eingefügt werden. Somit kann dieser Fall auf den zuvor genannten Fall (2)-b)-i) zurückgeführt werden.
  • Als Task-Segmentierungs- oder Teilungsverfahren, welches in Verbindung mit dem Task-Teilungsmittel 4 eingesetzt werden kann, sei als Beispiel das im folgenden beschriebene Verfahren genannt.
  • Das Quellprogramm 1 wird in die virtuellen Maschinencodes durch das Vor- Compilierungsmittel 2 übersetzt. Das Task-Teilungsmittel 4 übersetzt die virtuellen Maschinencodes, die bis zu den einzelnen virtuellen Maschinencode-Einheiten entwickelt sind, in Tasks, derart, daß ein virtueller Maschinencode einen Task bildet oder einem einzelnen Task entspricht, wobei die Inhalte der Tasks (d.h. die in den Tasks enthaltenen virtuellen Maschinencodes) in einer Task-Registrierungstabelle registriert werden, welche die Task- Identifikationsnummern (No.), die in den einzelnen Tasks enthaltenen virtuellen Maschinencodes und die Taskverarbeitungszeiten enthält, wie es in Fig. 3 gezeigt ist. Durch Konsultieren einer Virtuellen-Maschinencode-Realen-Maschinencode-Mischtabelle, gezeigt in Fig. 4, und durch Bezugnahme auf die Spalte des realen Prozessors der Zielmaschine, die zu verwenden ist, wird anschließend die für die Ausführung des betreffenden Tasks durch diesen Prozessor benötigte Verarbeitungszeit als die Task-Verarbeitungszeit in der Task-Registrierungstabelle in der als "Task-Verarbeitungszeit" bezeichneten Spalte registriert. Die Virtueller-Maschinencode-Realer-Maschinencode-Mischtabelle gibt die Maschinencodes der realen Prozessoren an, die den virtuellen Maschinencodes entsprechen, und die jeweiligen Verarbeitungszeiten auf einer Virtuellen-Maschinencode-Basis für jeden der realen Prozessoren. In der in Fig. 3 gezeigten Task-Registrierungstabelle ist beispielhalber angenommen, daß der betroffene reale Prozessor Prozessor A ist.
  • Was das Verfahren des Erzeugens der Task-Relationstabelle durch die Task- Teilungsmittel 4 anbelangt, wurde die Beschreibung bereits gegeben. Figur 6 zeigt eine Task-Relationstabelle für eine Gruppe von Tasks, welche den in Fig. 7 gezeigten Relationsgraphen haben.
  • Mit Bezug auf Fig. 7 stellen Nummern, jeweils in einem Kreis 11 gezeigt, die Task-Identifikationsnummern dar, und Nummern, die jeweils dem Kreis 11 beigefügt sind, stellen die Häufigkeiten für die Verarbeitungen der betreffenden Tasks dar, und Pfeile 13 geben die Inter-Task-Sequenz-Relationen, die oben definiert wurden, wieder. In Fig. 6 sind die Inter-Task-Relationen durch Angabe des/der Aufsteiger-Task(s) für jeden der Tasks gezeigt. Es ist jedoch klar, daß die Task-Relationstabelle auch durch Angabe des/der Absteiger-Task(s) für jeden der Tasks realisiert werden kann. Alternativ können Aufsteiger-Tasks und Absteiger-Tasks beide in der Task-Relationstabelle registriert werden.
  • Wie nun aus Obigem ersichtlich ist, segmentiert oder teilt das Task-Teilungsmittel 4 eine Gruppe von den virtuellen Maschinencodes, welche von dem Vor-Compilierungsmittel 2 ausgegeben wird, um hierdurch die Task- Registrierungstabelle zu erzeugen, welche die Inhalte der einzelnen Tasks und die Verarbeitungszeiten, die für die Ausführung derselben verwendet wird, jeweils angibt, ebenso wie die Task-Relationstabelle, welche die Inter- Task-Sequenz-Relationen angibt, wobei Information der Task-Verarbeitungszeit und diejenige der Inter-Task-Sequenz-Relation dem Task-Planungsmittel 5 von dem Task-Teilungsmittel 4 zugeführt werden kann.
  • Gemäß dem in dieser Ausführungsform der Erfindung angewandten Task- Teilungsverfahren enthält ein Task einen virtuellen Maschinencode. Jedoch ist die Erfindung keinesfalls auf ein derartiges Task-Teilungsverfahren beschränkt. Beispielsweise können ein oder mehrere Anweisungen vor der Vor- Compilierung einen Task enthalten, bei welchem der virtuelle Maschinencode oder Codes, die sich aus der Vor-Compilierung oder Übersetzung der Anweisung(en) ergeben, als ein Task in der Task-Registrierungstabelle registriert werden oder alternativ kann ein Task eine Mehrzahl von Maschinencodes enthalten. In diesen Fällen können die Verarbeitungszeit für jeden Task, ebenso wie die Inter-Task-Sequenz-Relation gleichermaßen durch die zuvor beschriebenen Verfahren erzeugt werden.
  • Das Task-Planungsmittel 5 dient zum Planen der Gruppen von Tasks, die dort zugeführt werden, während die Inter-Task-Sequenz-Relationen beibehalten werden, um hierdurch die Tasks zu parallelisieren, derart, daß die gesamte für die Ausführung aller Tasks benötigte Zeit sich einer minimalen oder kürzesten Verarbeitungszeit (d.h. der entlang des kritischen Pfads aufgeführten Verarbeitungszeit) in der Parallelverarbeitung nähern, welche in der Zielmaschine 9 unter den für den Task, die Task-Verarbeitungszeit und die Inter-Task-Sequenz-Relation gegebenen Bedingungen durchgeführt wird.
  • Zur Realisierung eines derartigen Task-Planungsmittels kann z.B. der im folgenden beschriebene Algorithmus verwendet werden.
  • Als erstes sind die Tasks zunächst so positioniert, daß sie so schnell wie möglich verarbeitet werden können (d.h. unmittelbar, wenn die Bedingungen, welche die Task-Verarbeitung erlauben, erfüllt worden sind), während die Inter-Task-Sequenz-Relation wie gegeben berücksichtigt wird. Figur 8 ist ein Diagramm, welches das Ergebnis der ursprünglichen Positionierung der Tasks zeigt, welche die in Fig. 7 gezeigte Inter-Task-Sequenz-Relation und die Task-Verarbeitungszeiten haben. In Fig. 8 stellt jedes der Rechtecke 200 einen Task dar, und Linien 201 bedeuten synchronisierte Verarbeitung. Mit der Wendung "synchronisierte Verarbeitung" soll eine derartige Warte- oder Koordinationsverarbeitung gemeint sein, die im Verlaufe der Parallelverarbeitung durchgeführt wird, in welcher die durch die einzelnen Prozessoren verarbeiteten Tasks zum Warten auf die n:.chste Verarbeitung gezwungen werden, bis die parallel durch die Prozessoren simultan ausgeführten Tasks alle abgeschlossen worden sind, und bei welchen die Prozessoren erst nachdem die Vollendung aller Task-Verarbeitungen, die durch alle an der Parallelverarbeitung teilnehmenden Prozessoren durchgeführt werden, bestätigt worden ist, zu der nächsten Verarbeitung vorrücken. Zur Vereinfachung der Beschreibung wird auf jede der synchronisierten Verarbeitung als die Stufe Bezug genommen, bei welcher die zuvor ausgeführte Stufe als die Stufe eines hohen Ranges bezeichnet wird, während die nachfolgend ausgeführte Stufe als die Stufe eines niedrigen Ranges bezeichnet wird.
  • Gemäß dieser Ausführungsform der Erfindung werden den oben definierten Stufen Stufenidentifikationszahlen sequentiell auf der Zeitbasis beigefügt, wie etwa Stufe 1, Stufe 2, Stufe 3, ..., Stufe n, wie in Fig. 8 gezeigt, wobei die Stufe 1 diejenige mit dem höchsten Rang und die Stufe n diejenige mit dem niedrigsten Rang ist. Somit sind die Tasks, die auf dem selben Rang sind, der Parallelverarbeitung zugänglich.
  • Wenn ein Aufsteiger-Task A für einen auf der Stufe n aufzuführenden Task B existiert, dann muß der Aufsteiger-Task A selbstverständlich auf einer höheren Stufe als die Stufe n liegen.
  • Die anfängliche Plazierung kann aus einem Algorithmus heraus realisiert werden, der im folgenden beschrieben wird.
  • Zunächst wird der anfängliche Wert der Stufenzahl i auf 1 (Eins) gesetzt, woraufhin der (die) Task(s) mit dem Task 0 als Aufsteiger-Task in einer Stufendatei, gezeigt in Fig. 9, auf der Stufe i (= 1) registriert werden. Nach Plazieren oder Positionieren des Tasks und dessen Registrierung werden die Tasks sequentiell in einer derartigen Ordnung angeordnet, daß der Task mit der längsten Verarbeitungszeit an der am weitesten links gelegenen Position in jeder beliebigen Zeile angeordnet ist.
  • Als nächstes wird für andere Tasks als die auf den Stufen 1 bis i registrierten das Vorhandensein der Aufsteiger-Tasks für diese überprüft. Wenn diese Aufsteiger-Tasks alle auf den Stufen 1 bis i sind, werden sie auf der Stufe (i + 1) registriert. Anschließend wird die Stufennummer i zu (i + 1) erhöht, worauf dann die Registrierung der nachfolgenden Stufe gemäß dem Algorithmus folgt. Wenn keine Tasks existieren, die nicht auf den Stufen registriert sind (d.h., wenn alle Tasks in der Task-Registrierungstabelle registriert worden sind), dann kommt der Algorithmus oder die Prozedur zu einem Ende.
  • Oben wurde ein Beispiel des Algorithmus für die anfängliche Task-Plazierung beschrieben. Da das Ergebnis der anfänglichen Task-Plazierung nicht notwendigerweise die gesamte Verarbeitungszeit zu einem möglichen Minimum reduziert, wird eine weitere Reduzierung der gesamten oder ganzen Verarbeitungszeit angestrebt. Hierfür kann der im folgenden erwähnte Algorithmus beispielsweise verwendet werden.
  • Die Stufen, bei welchen die Tasks anfänglich plaziert werden, werden als die erste Stufe (des höchsten Ranges) bis zur n-ten Stufe (des niedrigsten Ranges) definiert, wobei die für die Verarbeitung des am weitesten links gelegenen Tasks Ti1, von solchen, die zu einem gegebenen i der Stufen (d.h. dem maximalen Task auf der Stufe i) gehören, durch ST1 repräsentiert mit der Verarbeitungszeit für den zweiten Task Ti2 von links als ST2 bezeichnet. Des weiteren wird die für die Verarbeitung des größten Tasks Ti1 benötigte Zeit, gehörend zu der Stufe j eines niedrigeren Ranges als die Stufe i durch DT1 bezeichnet.
  • An der ersten Stelle wird durch Setzen von i gleich (n - 1) überprüft, ob der am weitesten links plazierte Task Ti1 von solchen, die zu den Stufen gehören, auf irgendeine der Stufen bewegt werden kann, welche von niedrigerem Rang als die Stufe (i + 1) und inklusive der Stufe n sind, während die Bedingung für die Inter-Task-Sequenz-Relation erfüllt wird. Es sei nun angenommen, daß der Task Ti1 ohne Störung der Inter-Task-Sequenz-Relation bewegt werden kann. In diesem Fall wird die Zielstufe, auf welche der Task Ti1 zu bewegen ist, durch j bezeichnet, wobei E, gegeben durch die unten aufgeführten Ausdrücke ausgewertet wird.
  • E = DT1 - ST2, wenn ST1 > DT1,
  • E = ST1 - ST2, wenn ST1 ≤ DT1 ist.
  • Im Fall E ≥ 0, wird entschieden, daß der Task Ti1 von der Stufe i wegbewegt werden kann, woraufhin der Task T&sub1; auf die Stufe j bewegt wird, bei welcher E maximal ist. Wenn andererseits entschieden wird, daß der Task Ti1 nicht bewegt werden kann, dann rückt die Prozedur zu einer Verarbeitung vor, welche durchgeführt wird, wenn der am weitesten links liegende Task der Stufe i nicht auf die Stufe j bewegt werden kann, wie später beschrieben werden wird. Im Falle, daß eine Mehrzahl von Stufen j existiert, bei welchen E maximal wird, wird der Task Ti1 dann auf die Stufe des niedrigst möglichen Ranges bewegt, und eine ähnliche Vorgehensweise wird für den Task durchgeführt, welcher die am weitesten links gelegene Position auf der Stufe i als Ergebnis der oben erwähnten Bewegung annimmt. Wenn der am weitesten links plazierte Task auf der Stufe nicht mehr auf die Stufe j bewegt werden kann, werden die verbleibenden Tasks der Stufe i in der Reihenfolge, beginnend von dem Task, der die größte Verarbeitungszeit erfordert, auf die niedrigstmöglichen Stufen bewegt, soweit die Inter-Task-Sequenz-Relation dies erlaubt unter der Bedingung, daß die Gesamtverarbeitungszeit hierdurch nicht erhöht wird. Wenn die Bewegung unzulässig ist, dann wird der Task auf der anfänglichen Stufe belassen.
  • Wenn die Entscheidung hinsichtlich der Bewegbarkeit für alle Tasks abgeschlossen ist, dann wird i auf (n - 2) gesetzt, woraufhin die oben beschriebene Prozedur wiederholt wird, gefolgt durch ähnliche Prozeduren sequentiell durch Setzen von i, jeweils auf (n - 3), (n - 4), ..., 1 (Eins).
  • Durch die oben beschriebene Vorgehensweise oder Prozedur können alle Tasks auf niedrigstmögliche Stufen bewegt werden, während die Inter-Task- Sequenz-Relation beibehalten wird unter der Bedingung, daß die Gesamtverarbeitungszeit verkürzt werden oder zumindest unverändlich bleiben kann gegenüber derjenigen, die in der anfänglichen Plazierung der Tasks benötigt wurde. Diese Prozedur wird als Abwärtsschiebe-Algorithmus bezeichnet.
  • Anschließend werden alle Tasks auf die Stufen mit höchstmöglichen Rängen bewegt unter der Bedingung, daß die Inter-Task-Sequenz-Relation beibehalten werden kann und daß die Gesamtverarbeitungszeit verkürzt werden oder zumindest unverändlich bleiben kann, verglichen mit dem Ergebnis der Planung, die durch den ersten Abwärtsschiebe-Algorithmus durchgeführt wurde. Diese Prozedur wird als Aufwärtsschiebe-Algorithmus bezeichnet. Da der Aufwärtsschiebe-Algorithmus von dem Abwärtsschiebe-Algorithmus nur in bezug auf die Richtung, in der die Tasks bewegt werden, abweicht, kann der erstere durch den dem Abwärtsschiebe-Algorithmus ähnlichen Algorithmus realisiert werden, wobei die Task-Schieberichtung in die Aufwärts- Richtung geändert wird. Durch Ausführen des Abwärtsschiebe-Algorithmus, abwechselnd mit dem Aufwärtsschiebe-Algorithmus kann die Gesamtverarbeitungszeit sich progressiv der Verarbeitungszeit für den kritischen Pfad nähern. Durch Abschließen der Ausführung des Aufwärtsschiebe-Algorithmus und des Abwärtsschiebe-Algorithmus zu der Zeit, wenn die Gesamtverarbeitungszeit nicht mehr weiter durch entweder den Aufwärts- oder Abwärtsschiebe-Algorithmus verkürzt werden kann, kann eine quasi-optimale Task- Planung erzielt werden, welche die ganze Verarbeitungszeit minimieren kann, während die für die Tasks, die Inter-Task-Sequenz-Relation und die Task- Verarbeitungszeit gegebenen Bedingungen erfüllt sind.
  • Figur 10 ist ein Diagramm, welches das Ergebnis der durch die Bewegung des Tasks von den in Fig. 8 gezeigten Task-Positionen gemäß den oben erwähnten Algorithmen realisierte Planung zeigt. Wie aus Fig. 10 gesehen werden kann, kann die ganze Verarbeitungszeit verkürzt werden im Vergleich mit der in Fig. 8 gezeigten ursprünglichen Planung.
  • Die o.g. Planung wird unter den Bedingungen durchgeführt, daß alle Prozessoren simultan synchronisiert sind, und wird somit als die simultan synchronisierte Planung bezeichnet.
  • Andererseits kann eine derartige Anordnung auch vorgenommen werden, bei welcher Verbünde jeweils durch mehrere der Prozessoren gebildet werden, wobei die relevanten Tasks auf einer Verbundsbasis verarbeitet werden, wobei die Prozessoren innerhalb des Verbunds synchronisiert sind (Intra- Verbunds-Synchronisation), während Synchronisation zwischen den Verbünden hergestellt wird, wie die Gelegenheit dies erfordert, was als Inter-Verbunds- Synchronisation bezeichnet wird. Des weiteren wird das Planungsschema, welches die Verbunds-Synchronisation verwendet, als verbundssynchrone Planung bezeichnet.
  • Figur 11 ist ein Diagramm, welches das Ergebnis der Planung zeigt, die durch Verwendung der Verbunds-Synchronisation für das Ergebnis der auf der simultan synchronisierten Planung basierenden Planung zeigt. In Fig. 11 bilden die Prozessoren Nr.0 und Nr.1 einen Verbund A und die Prozessoren Nr.2 und Nr.3 einen Verbund B, wobei während einer Zeitspanne von einem Zeitpunkt t&sub0; bis t&sub1; der Verbund A mit den Tasks 2, 5 und 1 befaßt ist und der Verbund B mit den Tasks 3, 4, 6, 7, 8 und 9 befaßt ist, und die Intra-Verbunds-Synchronisation ist für die Verbünde A und B getrennt hergestellt, wie jeweils durch Linien 14 und 15 (Intra-Verbunds-Synchronisationen 14 und 15) angedeutet ist. Die Planung zur Ermöglichung, daß die Gesamtverarbeitungszeit der kritischen Pfad-Verarbeitungszeit so nahe wie möglich kommt, durch Verwendung des Verbunds-Synchronisationsschemas in dieser Weise wird als die verbunds-synchronisations-basierte Planung bezeichnet. Wie es aus dem Vergleich der Fig. 10 und 11 hervorgeht, kann die verbunds-synchronisations-basierte Planung die Gesamtverarbeitungszeit weiter reduzieren im Vergleich mit der simultan synchronisierten Planung. Zum Ausführen der verbunds-synchronisations-basierten Planung kann der im folgenden erwähnten Algorithmus nach der anfänglichen Task-Planung verwendet werden. Nebenbei kann die anfängliche Task-Planung gemäß der oben erwähnten simultan synchronisierten Planung vorgenommen werden. In der folgenden Beschreibung wird angenommen, daß die Tasks auf allen Stufen 1 bis n vorhanden sind als Ergebnis der anfänglichen Task-Planung.
  • Zuerst wird das Ergebnis der anfänglichen Planung sequentiell von der hohen Stufe bis zu der niedrigen Stufe geprüft, um zuerst zu entscheiden, ob der kritische Pfad durch den Task mit der längsten Verarbeitungszeit auf einer Stufe i verläuft. Wenn bestimmt ist, daß der kritische Pfad durch den Task, der die längste Verarbeitungszeit auf einer gegebenen Stufe benötigt verläuft, dann wird die nächste Stufe in ähnlicher Weise überprüft. Wenn nicht, dann werden die Stufe i und die Stufe (i + 1) provisorisch miteinander verbunden, woraufhin solche Tasks, welche der verbundenen Stufe angehören und welche die Inter-Task-Sequenz-Relation zueinander tragen, gesammelt werden, um hierdurch einen Verbund zu bilden, wobei für jeden der Verbünde die Task-Planung durchgeführt wird gemäß dem zuvor beschriebenen simultan synchronisierten Planungs-Algorithmus. Nach der Planung wird derjenige Task, welcher die längste Verarbeitungszeit in jedem Team benötigt, mit der Verarbeitungszeit dieses Tasks vor Bildung des Verbunds verglichen. Wenn der Vergleich zeigt, daß die Verarbeitungszeit weiter reduziert ist, dann wird dieser Verbund registriert, worauffim erforderliche Zahlen der Prozessoren Nr. 0, 1, 2 usw. den Verbünden sequentiell zugewiesen werden, beginnend von dem zuerst registrierten Verbund. Sofern die Verarbeitungszeit nicht verringert wird, wird auf eine im folgenden beschriebene Verarbeitung U zurückgegriffen. Wenn die Verarbeitungszeit verbessert wird, wird die oben beschriebene Prozedur wiederholt für einen Verbund, der von neuem durch Sammeln derjenigen Tasks gebildet wird, welche zu den drei simultan synchronisierten Stufen i, i + 1 und i + 2 gehören und durch die Inter-Task-Sequenz-Relation miteinander verbunden sind, ohne Rücksicht auf die bereits registrierten Verbünde. Wenn die Verarbeitungszeit reduziert wird, wird die nächste Stufe hinzugefügt, um einen neuen Verbund zu bilden und die ähnliche Prozedur zur Überprüfung wird wiederholt. Wenn die Verarbeitungszeit nicht mehr weiter verkürzt werden kann, dann rückt die Prozedur zu der Verarbeitung U vor, wobei der in der oben erwähnten Weise gebildete Verbund um die Stufen höheren Ranges sequentiell erweitert wird, um die Verbünde zum Verringern der Gesamtverarbeitungszeit neu zu bilden.
  • Zu der Zeit, wenn die Gesamtverarbeitungszeit nicht mehr weiter reduziert werden kann, wird erneut eine Entscheidung für die tiefste Stufe des neu gebildeten Verbunds getroffen, ob der kritische Pfad durch denjenigen Task, der die längste Verarbeitungszeit erfordert, verläuft, woraufhin die oben beschriebene Prozedur in Abhängigkeit des Ergebnisses der Entscheidung wiederholt wird.
  • Die vor dem Start der verbunds-synchronisations-basierten Planung durchzuführende anfängliche Planung kann gem;ß dem folgenden beschriebenen Verfahren durchgeführt werden.
  • Zunächst wird die simultan synchronsierte Planung durchgeführt. Es sei angenommen, daß als das Ergebnis dieser simultan synchronisierten Planung die Tasks auf allen Stufen 1 bis n vorhanden sind. In diesem Falle wird der anfängliche Wert der Stufen-Zahl i auf 1 (Eins) gesetzt, woraufhin die Stufen i und (i + 1) provisorisch miteinander verbunden werden. Durch Sammeln solcher Tasks, welche zu den verbundenen Stufen gehören, die die Inter-Task-Sequenz-Relation miteinander tragen, wird ein Task-Verbund gebildet, woraufhin die Planung für jeden Verbund gemäß dem zuvor beschriebenen Algorithmus zur simultan synchronisierten Planung durchgeführt. Die durch die Tasks in jedem Verbund nach der oben erwähnten Planung benötigten Verarbeitungszeiten werden mit denjenigen vor der Planung verglichen. Wenn der Vergleich zeigt, daß die Verarbeitungszeit reduziert werden kann, wird der entsprechende Verbund registriert. Hiernach werden die erforderlichen Zahlen der Prozessoren Nr. 0, 1, 2 usw. sequentiell den Verbünden in der Reihenfolge zugewiesen, beginnend von dem ersten registrierten Verbund. Wenn nicht irgendeine Verbesserung in der Verarbeitungszeit nach der oben erwähnten Planung gesehen werden kann, dann wird die Stufenzahl i um eins erhöht (d.h. i = i + 1) und die oben erwähnte Prozedur wird wiederholt. Wenn andererseits die Verarbeitungszeit verbessert wird, werden diejenigen Tasks, welche zu den drei simultan synchronisierten Stufen i, i + 1 und i + 2 gehören, welche die Inter-Task-Sequenz-Relation zueinander tragen, zusammengefaßt, um einen neuen Verbund zu bilden, ohne Rücksicht auf die bereits registrierten Verbünde, woraufhin die oben beschriebene Prozedur wiederholt wird, wenn die Verarbeitungszeit somit reduziert werden kann, dann wird die nächste Stufe hinzugefügt, um den Verbund neu zu bilden, woraufhin die ähnliche Überprüfungsprozedur durchgeführt wird. Wenn die Verarbeitungszeit nicht mehr weiter reduziert werden kann, wird der zu diesem Zeitpunkt existierende Verbund schließlich registriert. Anschließend wird für die folgende Stufe j die Stufenzahl i gleich j gesetzt, woraufhin der oben erwähnte Algorithmus wiederholt angewandt wird. Nach Vollendung der Überprüfung bis zur Stufe n kommt die anfängliche Planung zu einem Ende.
  • Wie nun aus Obigem erkennbar ist, kann das Task-Planungsmittel 5, welches die auf der Simultansynchronisation oder Verbundssynchronisationsplanung basierten Algorithmen ausführt, die Gesamtverarbeitungszeit minimieren, um hierdurch die letztere Annäherung an die Verarbeitungszeit, entlang dem kritischen Pfad aufgetragen, zu erreichen unter den Bedingungen, die für den Task, die Task-Verarbeitungszeit und die Inter-Task-Sequenz-Relation gegeben sind, wie von dem Task-Teilungsmittel 4 zugeführt. Als das Ergebnis dieser Planung erzeugt werden eine Stufen-Datei, welche die zu den einzelnen Stufen gehörenden Tasks angibt, eine Prozessor-Datei, welche die durch die einzelnen Prozessoren zu verarbeitenden Tasks angibt, und die Arten von Synchronisationen in der Reihenfolge der auszuführenden Verarbeitungen und eine gemeinsame variable Datei, die die Namen der gemeinsamen Variablen und deren Adressen angibt. Figur 22 zeigt eine Stufen- Datei, die dem Ergebnis der mit Bezug auf Fig. 10 gezeigten Planung entspricht. Weiter zeigt Fig. 19 die entsprechende Prozessor-Datei, in welcher das Bezugssymbol S&sub0; simultane Synchronisationsanweisung oder - befehle oder ähnliches darstellt. Es sollte erwähnt werden, daß, wenn andere Synchronisationsanweisungen oder -befehle, wie z.B. ein Verbunds-Synchronisationsbefehl und ähliches eingefügt werden, eine Prozessor-Datei, ähnlich der in Fig. 19 gezeigten, erzeugt werden kann.
  • Figur 25 zeigt als Beispiel eine Prozessor-Datei, welche dem Ergebnis der auf der in Fig. 11 gezeigten Verbunds-Synchronisation basiert. In Fig. 25 stellt Bezugszeichen S&sub0; einen simultanen Synchronisationsbefehl dar, S&sub1; stellt einen Intra-Verbunds-Synchronisationsbefehl für einen Verbund mit den Prozessoren Nr. 0 und 1 dar und S&sub2; stellt einen lntra-Verbunds-Synchronisationsbefehl für einen Verbund mit den Prozessoren Nr. 2 und 3 dar.
  • Nach der oben erwähnten Planung kann das Task-Planungsmittel 5 den einem bestimmten Prozessor auf einer gegebenen Stufe zugewiesenen Task auf eine Stufe bewegen, auf welcher ein Prozessor existiert, dem kein Task zugewiesen ist, so daß die Anzahl der zu verwendenden Prozessoren auf ein mögliches Minimum herabgesetzt werden kann, während die Gesamtverarbeitungszeit vor der Erhöhung bewahrt wird unter den zulässigen Bedingungen von dem Standpunkt der Inter-Task-Sequenz-Relation, um hierdurch den Task derjenigen Stufe zuzuweisen, auf welcher der Prozessor vorhanden ist, dem die Stufe nicht zugewiesen ist. Beispielsweise kann ein Task T, zugewiesen einer Stufe (n + 1), auf welcher der Prozessor Nr. 4 vorhanden ist, auf die Stufe 3 bewegt werden, auf welcher der Prozessor Nr. 3 existiert, wie in Fig. 12 gezeigt ist, um hierdurch die Zahl der zu verwendenden Prozessoren zu verringern, ohne die Gesamtverarbeitungszeit zu erhöhen.
  • Des weiteren kann ein Task, der einem bestimmten Prozessor zugewiesen ist, mit einem Task verbunden werden, der einem anderen Prozessor zugewiesen ist, um hierdurch die Anzahl der zu verwendenden Prozessoren zu verringern, während die Inter-Task-Sequenz-Relation beibehalten wird, solange die Gesamtverarbeitungszeit nicht erhöht wird.
  • Mit Bezug auf Fig. 13 kann beispielsweise ein Task T, der der Stufe (n + 1) des Prozessors Nr.4 zugewiesen ist, mit dem Task P verbunden werden, der der Stufe n des Prozessors Nr. 3 zugewiesen ist, während ein Task S, der der Stufe (n + 1) des Prozessors Nr. 5 zugewiesen ist, mit einem Task Q verbunden werden kann, der der Stufe (n + 1) des Prozessors Nr. 5 zugewiesen ist. Die oben erwähnten Task-Verbindungen sind nur dann möglich, wenn die Inter-Task-Sequenz- Relation derartige Bewegungen der Tasks T und S gestattet.
  • In dem oben erwähnten Fall kann die Anzahl der zu verwendenden Prozessoren von fünf auf drei verringert werden. Bei diesem Typ von Task-Planungsmittel 5 kann der Task-Plan bei einer hohen Geschwindigkeit erzeugt werden, was dem oben erwähnten Multi-Prozessor-System erlaubt, die Parallelverarbeitung mit einer hohen Effizienz durchzuführen. Das Task- Planungsmittel 5 kann des weiteren mit einer Task-Verbindungsinformations- Erzeugungsfunktion, wie unten beschrieben, versehen sein.
  • Mit Bezug auf Fig. 14 können, wenn eine Gruppe von Tasks inklusive Tasks (mit Task-Namen oder -Bezeichnungen, dargestellt durch Symbole in Kreisen) die Task-Verarbeitungszeiten (angegeben durch Nummern, die den Kreisen beigefügt sind) und die Inter-Task-Sequenz-Relation (angegeben durch Task-Verbindungspfeile) durch das oben beschriebene Task-Planungsmittel 5 geplant werden, Ergebnisse wie in Fig. 16 gezeigt, erreicht werden. Mit Bezug auf die Figur stellt TPTi die längste der Verarbeitungszeiten für die zu der Stufe i gehörenden Tasks dar, und TCTi stellt die dar, die in die Parallelverarbeitung für die Stufen i (wie z.B. das Übermaß, bezogen auf die Synchronisation, Kommunikation u.a.) involviert ist. Unter der Annahme nun, daß das in Fig. 16 gezeigte Ergebnis der Planung auszuführen ist, ist die Gesamtverarbeitungszeit T&sub1; gegeben durch
  • worin n die Anzahl der Stufen darstellt. Um dementsprechend die Gesamtverarbeitungszeit T&sub1; auf ein Minimum unter gegebenen Bedingungen für die Tasks, die Task-Verarbeitungszeiten und die Inter-Task-Sequenz-Relation zu verkürzen, müssen
  • und
  • minimiert werden. Da jedoch der Algorithmus zum Minimieren von
  • bereits ausgeführt worden
  • ist (wie in Verbindung mit dem Planungs-Algorithmus beschrieben), ist es lediglich notwendig,
  • zu minimieren. Hierzu kann entweder TCTi
  • oder die Anzahl der Stufen verringert werden. Genauer gesagt, wurde für die Zielmaschine 9 der Algorithmus zum Minimieren von
  • bereits ausgeführt (in Verbindung mit dem Planungs-Algorithmus). Dementsprechend ist es notwendig,
  • zu minimieren. Dies kann erreicht
  • werden durch Verringern jedes
  • oder der Anzahl der Stufen oder Synchronisationen. In der Zielmaschine 9 ist die Verarbeitung zur Synchronisation in Iiardware realisiert, wobei TCTi minimiert ist. Somit wird unter Verwendung eines Verfahrens zum Verringern der Stufenzahl n,
  • minimiert, um kleinstmöglich zu sein. In der Zielmaschine 9 kann, da TCTi wegen des mit der Synchronisation verbundenen Übermaßes substantiell ist,
  • die Minimierung von
  • erreicht werden durch Verringern der
  • Anzahl n von Synchronisationen. Dementsprechend werden solche der Tasks zusammengebunden, welche auf zwei oder mehr Stufen existieren, von denen Verbindung nicht zu einer Vergrößerung von
  • führt, um die
  • Anzahl von Synchronisationen und somit
  • zu verringern, um dadurch die Gesamtverarbeitungszeit zu verkürzen. Sei nun ein Programm- Parallelisierungs-Verarbeitungs-Wirkungsgrad η definiert als Verhältnis der Netto-Task-Verarbeitungszeit
  • zu der Verarbeitungszeit mit dem
  • Parallelverarbeitungsübermaß
  • nämlich
  • Es ist somit offensichtlich, daß die oben beschriebene Prozedur zu einer Verbesserung des Parallel-Verarbeitungs-Wirkungsgrades beiträgt. Zum Beispiel werden als Ergebnis der in Fig. 16 gezeigten Planung die Stufen 1 und 2 verbunden, wobei die Tasks 1a und 1b in einen Task 1 verbunden werden, während die Tasks 2a und 2b in einen Task 2 verbunden werden. Anschließend werden die Stufen 3, 4 und 5 verbunden, wobei die Tasks 4a, 4b und 4c in einen Task 4 verbunden werden, während die Tasks 3a und 3b in einen Task 3 verbunden werden. Als ein Ergebnis hiervon können die neu erzeugten Tasks 1 bis 4 in einer derartigen Weise geplant werden, wie in Fig. 17 gezeigt ist. Folglich kann, wenn die Verarbeitung gemaß dem in Fig. 17 gezeigten Plan ausgeführt wird, die Gesamtverarbeitungszeit T&sub2; durch ΔT verkürzt werden, verglichen mit der in Fig. 16 gezeigten Verarbeitungszeit T&sub1;, was zu einem Vorteil führt. Es sei erwähnt, daß die oben erwähnte Task-Verbindung nicht nur den Task-Inhalt und die Task-Verarbeitungszeit verändert, sondern auch die Inter-Task-Sequenz-Relation. Wenn die in Fig. 17 gezeigten Task-Verbindungen durchgeführt werden, wird die in Fig. 14 gezeigte Inter-Task-Sequenz-Relation zu einer in Fig. 14 gezeigten Relation verändert. In dieser Weise kann das Task-Planungsmittel 5 eine Task-Verbindungsinformation für die Tasks erzeugen, was die Gesamtverarbeitungszeit verringern kann, wenn sie verbunden sind. Es versteht sich natürlich von selbst, daß das Task-Planungsmittel 5 auch so gestaltet sein kann, daß es nur die Planung durchführt, ohne die Task-Verbindungsinformation zu erzeugen. Figur 18 ist ein Diagramm zur beispielhaften Beschreibung von Bedingungen für die Inter-Task-Relationen und die Task-Verarbeitungszeiten, welche es ermöglichen, daß die Gesamtverarbeitungszeit durch Anwendung des Task-Verbindungsschemas verkürzt wird. Mit Bezug auf Fig. 18 und unter der Annahme, daß die Stufen i (i + 1) zu verbinden sind, kann ersehen werden, daß nur ein Absteiger-Task Bj auf der Stufe (i + 1) für einen gegeben Task Aj existiert, der zu der Stufe i gehört, während der Aufsteiger-Task auf der Stufe i für den Absteiger-Task Bj nur der Task Aj ist. Dementsprechend kann die Verbindung der Tasks Aj und Bj den Ausdruck
  • verkleinern, ohne
  • zu vergrößern. Somit wird entschieden, daß der Task Aj mit dem Task Bj verbunden werden kann. Figur 20 ist ein Flußdiagramm zum Beschreiben eines Algorithmus zum Entscheiden hinsichtlich der Möglichkeit der Task-Verbindung, wie oben erwähnt. Mit Bezug auf Fig. 20 wird derjenige Zustand, in welchem die Task-Planung durch das Task-Planungsmittel 5 abgeschlossen worden ist, durch "START" bezeichnet. Da die Verbunds-Synchronisation als die simultane Synchronisation, durchgeführt intern in dem Verbund, angesehen werden kann, kann dieser Task-Verbindungsalgorithmus entweder auf die Planung, die nur auf der simultanen Synchronisation basiert, oder auf die Verbunds-Synchronisation angewandt werden. Weiter ist in Fig. 20 mit dem Begriff "Verbinden eines Tasks A mit Task B" die Erzeugung einer Task- Verbindungs-Datei (d.h. eine Datei, welche Task-Verbindungsinformation enthält), gemeint, wie z.B. die in Fig. 21 gezeigte. Genauer zeigt Fig. 21 eine durch Anwendung des oben erwähnten Algorithmus auf das in Fig. 16 gezeigte Ergebnis der Planung erzeugte Task-Verbindungs-Datei. Außerdem wird eine Prozessor-Datei, welche dem in Fig. 16 gezeigten Plan entspricht, auch durch das Task-Planungsmittel 5, wie in Fig. 24 gezeigt, erzeugt. In dieser Figur stellt Symbol S&sub0; einen simultanen Synchronisationsbefehl dar. Wenn die in Fig. 21 gezeigte Task-Verbindungs-Datei durch das Task- Verbindungsmittel 5 erzeugt wird, werden die zwischen die verbundenen Tasks eingefügten Synchronisationsbefehle in der in Fig. 24 gezeigten Prozessor-Datei entfernt durch Bezugnahme auf die Task-Verbindungs-Datei. Figur 23 zeigt eine somit erhaltene Prozessor-Datei. Es sei jedoch angemerkt, daß, wenn das Task-Verbindungsmittel 5 die Task-Verbindungsinformation nicht erzeugt, die Synchronisationsinformation nicht entfernt wird. In Fig. 23 bedeutet S&sub0; die simultane Synchronisation. Wenn die Tasks gemäß der in Fig. 23 gezeigten Prozessor-Datei ausgeführt werden, sind die Ergebnisse sodann solche wie in Fig. 17 gezeigt, von der ersehen werden kann, daß die Verarbeitungszeit um ΔT verkürzt wird im Vergleich mit der Verarbeitungszeit vor der Task-Verbindung.
  • Wie aus der obigen Beschreibung hervorgeht, erhält das Task-Planungsmittel 5 als Eingaben hierzu Information von den Tasks, der Task-Verarbeitungszeit und der Inter-Task-Relations-Information, um das Ergebnis der Task-Planung (Log-Datei), Information über die durch die einzelnen Prozessoren auszuführenden Tasks und die Synchronisation (Prozessor-Datei) und zusätzlich die gemeinsame variable Tabelle zu erzeugen. Des weiteren kann das Task- Planungsmittel 5 die Task-Verbindungsinformation (Task-Verbindungsdatei) erzeugen.
  • Von diesem wird die Prozessor-Datei und die gemeinsame variable Tabelle dem Parallel-Compilierungsmittel 6 zugeführt, welches seinerseits auf die Task-Registrierungstabelle Bezug nimmt zum Übersetzen der Task-Synchronisationsanweisung in den virtuellen Maschinencode und zusätzlich zum Übersetzen der virtuellen Maschinencodes in die realen Maschinencodes mit Hilfe der Virtuellen-Maschinencode-Realen-Maschinencode-Übersetzungstabelle.
  • Als ein Ergebnis hiervon wird eine Datei (Objektprogramm) erzeugt, in welcher die durch jeden Prozessor auszuführenden realen Maschinencodes in Reihenfolge der Ausführung angeordnet sind. Diese Datei oder dieses Objektprogramm wird der Zielmaschine 9 zugeführt, welche dann die Parallelverarbeitung gemäß dem dort zugeführten Objektprogramm durchführt.
  • Mit der Programm-Parallelisierungsvorrichtung gemaß dieser (ersten) Ausführungsform der Erfindung können viele in dem Quellprogramm enthaltene Teile, welche für die Parallelverarbeitung geeignet sind, parallelisiert werden mittels der Teilung des Quellprogramms in kleinere Einheiten oder Tasks, wobei die Tasks derart parallelisiert werden, daß die Gesamtverarbeitungszeit, welche die Parallelverarbeitung des Quellprogramms durch die Zielmaschine mit sich bringt, die minimale Verarbeitungszeit, welche unter den gegebenen Bedingungen für die Tasks, die Task-Verarbeitungszeiten und die Inter-Task-Sequenz-Relationen realisierbar ist, annähernd erreichen kann, können die Objektcodes ebenso wie die Sequenz, fähig, parallel verarbeitet zu werden mit einer hohen Verarbeitungseffizienz mit großem Vorteil erreicht werden. Wegen der Verwendung des Planungsalgorithmus, der das Konzept der Stufe in dem Planungsmittel 5 anwendet, kann vorteilhafterweise auch die Planung bei einer extrem hohen Geschwindigkeit ausgeführt werden. Es sei weiter angemerkt, daß in dem Fall der Programm-Parallelisierungsvorrichtung gemäß dieser Ausführungsform das Vor-Compilierungsmittel, das Task-Segmentierungsmittel 4 und das Task-Planungsmittel 5 15 ausgelegt sind, um die virtuellen Maschinencodes unabhängig von den Typen der Prozessoren des Multi-Prozessor-Systems zu handhaben. Lediglich das Parallel-Compilierungsmittel 6 muß in Abhängigkeit der realen Maschinencodes modifiziert werden. Somit kann die Programm-Parallelisierungsvorrichtung 10 gemäß dieser Ausführungsform der vorliegenden Erfindung mit dem Wechsel oder der Modifizierung der Prozessoren in der Zielmaschine leicht fertig werden, was eine weitere vorteilhafte Wirkung mit sich bringt.
  • Zweite Ausführungsform
  • Figur 26 ist ein schematisches Blockdiagramm, welches eine allgemeine Anordnung der Programm-Parallelisierungsvorrichtung gemäß einer zweiten Ausführungsform der Erfindung zeigt. Wie aus dieser Figur hervorgeht, weist die Programm-Parallelisierungsvorrichtung 30 gemäß dieser Ausführungsform ein Vor-Compilierungsmittel 23, eine Nukleus-Systemroutine 24, ein Task-Teilungsmittel 25 und ein Task-Planungsmittel 27 auf.
  • Eine Ziel maschine 31 zur Ausführung der Programm- Parallelisierungsvorrichtung 30 kann der oben in Verbindung mit der ersten Ausführungsform der Erfindung beschriebenen Zielmaschine 9 ähnlich sein.
  • Die Programm-Parallelisierungsvorrichtung 30 gemäß dieser Ausführungsform ist im wesentlichen die gleiche wie die der ersten Ausführungsform, soweit das Vor-Compilieren eines Quellprogramms 22 und die Übersetzung in virtuelle Maschinencodes betroffen sind. Das Task-Teilungsmittel 25 teilt eine Gruppe von virtuellen Maschinencodes in einzelne Tasks auf, wobei jeder einem virtuellen Maschinencode entspricht, um hierdurch eine Task-Registrierungstabelle und eine Task-Relationstabelle zu erzeugen durch ein Verfahren, welches demjenigen ähnlich ist, das in Verbindung mit der ersten Ausführungsform weiter oben beschrieben wurde, und führt Information über die Tasks, die Task-Verarbeitungszeiten und die Inter-Task-Relationen dem Task- Planungsmittel 26 zu, welches seinerseits die Tasks auf der Basis der Information über den Task, die Task-Verarbeitungszeiten und die Inter-Task- Relation, zugeführt von dem Task-Teilungsmittel 25, parallelisiert unter Beibehaltung der Inter-Task-Sequenz-Relation, derart, daß sich die aus der Parallelverarbeitung der gegebenen Tasks durch die Zielmaschine 21 mit einer Mehrzahl von Prozessoren ergebende Gesamtzeit der minimalen Verarbeitungszeit (Verarbeitungszeit, aufgetragen entlang dem kritischen Pfad) annähern kann, welche unter den gegebenen Bedingungen von Tasks, Task- Verarbeitungszeit und der Inter-Task-Sequenz-Relation realisiert werden kann, wie in dem Fall der ersten Ausführungsform.
  • Da das Task-Planungsmittel 26 ein Verfahren ähnlich demjenigen der ersten Ausführungsform anwendet, sind die Tabellen und Ansichten, welche durch dieses Mittel 26 erzeugt und ausgegeben werden, ähnlich denjenigen der ersten Ausführungsform.
  • Genauer gesagt, gibt das Task-Planungsmittel 26 Task-Verbindungsinformation (d.h. eine Task-Verbindungsdatei) aus.
  • Die Task-Verbindungsinformation wird dem Task-Teilungsmittel 25 zugeführt, welches die Tasks auf der Basis der Task-Verbindungsinformation von neuem erzeugt. Mit anderen Worten ausgedrückt, werden solche Tasks, die als zusammen zu verbinden in der Task-Verbindungsdatei gekennzeichnet sind, zu einem Task verbunden. Zum Verbinden der Tasks GT&sub1; bis Tn in dieser Reihenfolge zu einem Task NT, werden Prozeduren oder Behandlungen (1) und (2) wie unten erwähnt durchgeführt.
  • 1) In der Task-Registrierungstabelle werden die Task-Inhalte (virtuelle Maschinencodes) des Tasks NT als OP&sub1;, OP&sub2;, ..., OPn (wobei OPi ein virtueller Maschinencode des Task Ti ist) registriert, während die Task- Verarbeitungszeit TPT (NT) des Task NT registriert wird als
  • wobei TPT (Ti) die für die Verarbeitung des Task Ti erforderliche Zeit darstellt.
  • 2) In der Inter-Task-Relations-Tabelle:
  • i) Im Falle, daß die Inter-Task-Relation durch Aufsteiger-Tasks gekennzeichnet ist, werden diejenigen von AT(T&sub1;), AT(T&sub2;), ..., AT(Tn) mit Ausnahme von T&sub1;, T&sub2;, ..., Tn in der Inter-Task-Relations-Tabelle als die Aufsteiger-Tasks des Task NT registriert (beachte, daß AT(Ti) den Aufsteiger-Task des Task Ti darstellt).
  • ii) Im Falle, daß die Inter-Task-Relation durch die Absteiger-Tasks gekennzeichnet ist, werden diejenigen der DT(T&sub1;), DT(T&sub2;), ..., DT(Tn) mit Ausnahme von T&sub1;, T&sub2;, ..., Tn in der Inter-Task-Relations-Tabelle als die Absteiger-Tasks des Task NT registriert. (Beachte, daß DT(Ti) den Absteiger-Task des Task Ti darstellt.
  • iii) Im Falle, daß die Inter-Task-Relation sowohl durch die Aufsteiger- Tasks als auch durch die Absteiger-Tasks gekennzeichnet ist, werden diejenigen der AT(T&sub1;), AT(T&sub2;), ..., AT(Tn) mit Ausnahme von T&sub1;, T&sub2;, ..., Tn in der Inter-Task-Relations-Tabelle als die Aufsteiger-Tasks des Task NT registriert, während diejenigen von DT(T&sub1;), DT(T&sub2;), ..., DT(Tn) mit Ausnahme von T&sub1;, T&sub2;, ..., Tn in der Inter-Task-Relations-Tabelle als die Absteiger-Tasks des Task NT registriert.
  • Durch Modifizieren der Task-Registrierungs-Tabelle und der Inter-Task- Relations-Tabelle in der oben beschriebenen Weise werden die Tasks von neuem erzeugt, woraufhin die Task-Verarbeitungszeitinformation und die Inter-Task-Relationsinformation an das Task-Planungsmittel 26 gesendet werden, um gemäß einem Algorithmus geplant zu werden, der dem zuvor beschriebenen ähnlich ist, derart, daß sich die Gesamtverarbeitungszeit der Kritischen-Pfad-Verarbeitungszeit so nahe wie möglich nähern kann.
  • Die Task-Planung, die Task-Verbindung und die Task-Neuerzeugung werden in der oben beschriebenen Weise wiederholt. Zu dem Zeitpunkt, wenn die Gesamtverarbeitungszeit inklusive des Parallelverarbeitungs-Zusatzaufwandes nicht mehr verkürzt werden kann, wird die oben erwähnte Wiederholung beendet, woraufhin die Prozessor-Datei und die gemeinsame variable Tabelle, erzeugt durch das Task-Planungsmittel 26, zu diesem Zeitpunkt dem Parallel- Compilierungsmittel 27 zugeführt werden. Nachfolgende Operationen einschließlich derjenigen des Parallel-Compilierungsmittels 27 sind ähnlich zu denjenigen der ersten Ausführungsform
  • Im folgenden werden vorteilhafte Wirkungen, die durch die Programm- Parallelisierungsvorrichtung gemaß dieser (zweiten) Ausführungsform hervorgebracht werden, erwähnt.
  • Im allgemeinen, wenn ein Quellprogramm in eine Mehrzahl von Tasks geteilt oder segmentiert wird, welche dann eingeteilt werden, um die parallele Verarbeitung davon zu ermöglichen, so daß die Gesamtverarbeitungszeit auf ein mögliches Minimum reduziert werden kann, ist es vorzuziehen, das Quellprogramm in Tasks von einer kleinstmöglichen Größe zu segmentieren, um hierdurch die Zahl der für die Parallelverarbeitung geeigneten Tasks zu erhöhen, vorausgesetzt, daß der Zusatzaufwand (wie z.B. Synchronisations-Zusatzaufwand u.a.), welchen die Parallelverarbeitung mit sich bringt, Null ist. Da jedoch in dem tatsächlichen Parallelverarbeitungssystem Zusatzaufwand in der Parallelverarbeitung unvermeidbar ist, wird Segmentierung des Quellprogramms in Tasks von übermäßig kleiner Größe die Anzahl von Operationen wie z.B. Synchronisations-Verarbeitungen, Kommunikationen u.a., welche Ursachen für wachsenden Zusatzaufwand in der Parallelverarbeitung verursachen, erhöhen, was dazu führt, daß die Gesamtverarbeitungszeit einschließlich des Parallelverarbeitungs-Zusatzaufwands erhöht wird, anstatt reduziert zu werden. Durch Verwendung der Programm-Parallelisierungsvorrichtung gemäß dieser Ausführungsform der Erfindung, bei welcher die Tasks in minimale Einheiten, welche für die Parallelisierung eingeteilt werden, zerlegt werden, kann jedoch zunächst das optimale Ergebnis des Planens erreicht werden unter der Annahme, daß der Parallelverarbeitungs- Zusatzaufwand Null ist. Sodann wird die Gestalt oder Größe (Verarbeitungszeit) jedes Task erhöht durch Verbinden und Neuerzeugen des Task, soweit die Gesamtverarbeitungszeit hierdurch nicht vergrößert wird unter der Annahme, daß der Parallelverarbeitungs-Aufwand Null ist, worauf dann die Wiederholung des Planens für die Parallelisierung folgt. Wegen dieses Merkmals kann die Gesamtverarbeitungszeit einschließlich des Zusatzaufwandes in der Parallelverarbeitung vorteilhafterweise signifikant verringert werden.
  • Des weiteren muß in der Programm-Parallelisierungsvorrichtung gemäß dieser Ausführungsform nur das Parallel-Compilierungsmittel 27 gemäß den realen Maschinencodes modifiziert werden. Folglich kann die Programm-Parallelisierungsvorrichtung 30 gemäß der zweiten Ausführungsform der Erfindung leicht mit Wechseln der Prozessoren in der Zielmaschine 31 fertig werden.
  • Dritte Ausführungsform
  • Figur 27 ist ein Diagramm, welches eine dritte Ausführungsform der vorliegenden Erfindung zeigt. Die Programm-Parallelisierungsvorrichtung 219 gemäß dieser Ausführungsform weist einen steuer-orientierten Sprach-Compiler 202, eine Nukleus-Systemroutine (Nukleus-Sprache) 206, einen Task- Teiler 207, einen Task-Planer 208 sowie einen Parallel-Compiler 213 auf und kann des weiteren, sofern es die Gelegenheit erfordert, einen operationsorientierten Sprach-Compiler A203, einen weiteren operations-orientierten Sprach-Compiler B204 sowie einen AI-orientierten Sprach-Compiler 205 aufweisen. Daneben kann weiterhin ein serieller Compiler 212 vorgesehen sein. Als der parallele Compiler 213 muß zumindest ein vollständiger paralleler Compiler oder ein Vektor-Compiler 215 oder Verteilt-Funktions- Compiler 216 vorgesehen sein.
  • Eine Zielmaschine 217 zum Ausführen der Programm-Parallelisierung durch die Programm-Parallelisierungsvorrichtung 219 gemäß dieser Ausführungsform kann der Zielmaschine 9 der ersten Ausführungsform ähnlich sein. Die Zielmaschine 217 kann mit Hilfe eines System-Monitors 218 und eines Host- Monitors 211 überwacht werden. Der Task-Planer 208 ist durch Verwendung einer Planungssprache 209, orientiert zur Prozeßverwaltung und BASIC- Sprache 210 geschrieben. Ein in einer steuerungsorientierten Sprache geschriebenes Quellprogramm wird in virtuelle Maschinencodes durch den steuer-orientierten Sprach-Compiler 202 übersetzt gemäß einem virtuellen Maschinencode, vorgeschrieben durch die Nukleus-Systemroutine (Nukleus- Sprache) 206. In ähnlicher Weise wird ein in einer operations-orientierten Sprache A beschriebenes Quellprogramm entsprechend durch den operationsorientierten Sprach-Compiler A203 übersetzt, ein in einer operations-orientierten Sprache B geschriebenes Quellprogramm wird durch den operationsorientierten Sprach-Compiler B204 übersetzt und ein in einer AI-orientierten Sprache geschriebenes Quellprogramm wird durch den AI-orientierten Sprach- Compiler 205 in die virtuellen Maschinencodes gemäß Vorschriften der Nukleus-Systemroutine (Nukleus-Sprache) 206 jeweils übersetzt, wenn ein Pfad 220 von dem Task-Planer 208 zu dem Task-Teiler 207 nicht vorhanden ist, arbeitet der letztere ähnlich dem zuvor in Verbindung mit der ersten Ausführungsform beschriebenen Teilungsmittel (4), während der Task-Planer 208 ähnlich dem Task-Planungsmittel 5 der ersten Ausführungsform arbeitet. Wenn weiterhin der Parallel-Compiler 213 den vollständigen Parallelisierungs- Compiler 214 aufweist und wenn die letzte Funktion gewählt wird, arbeitet der parallele Compiler 213 ähnlich dem Parallel-Compilierungsmittel 6 der ersten Ausführungsform.
  • Die Objektcodes und die Sequenz, die nun für die Parallelverarbeitung mit einer hohen Effizienz durch die oben beschriebenen Prozeduren und Verarbeitungen geeignet sind, werden von dem parallelen Compiler 213 an die Zielmaschine 217 gesendet, wo die Parallelverarbeitung ausgeführt wird.
  • Wenn der parallele Compiler 213 den Vektor-Compiler 215 aufweist und wenn die Funktion des letzteren ausgewählt wird, werden die Prozessor-Datei und die gemeinsame variable Tabelle, zugeführt von dem Task-Planer 208 zu dem parallelen Compiler 213 in vektorisierte reale Maschinencodes und Sequenz durch den parallelen Compiler 213 übersetzt, so daß die Zielmaschine 217 entsprechend die Vektorverarbeitung durchführen kann.
  • Wenn der parallele Compiler 213 den Verteilten-Funktions-Compiler 216 aufweist und wenn diese Funktion gewählt wird, übersetzt der parallele Compiler 213 die Prozessor-Datei und die gemeinsame variable Tabelle, gesendet von dem Task-Planer 208, in reale Maschinencodes und Sequenz, so daß die Verteilte-Funktions-Verarbeitung durch die Zielmaschine 217 durchgeführt werden kann. Die sich aus der obigen Übersetzung ergebenden realen Maschinencodes und Sequenz werden der Zielmaschine 217 zugeführt, welche dann entsprechend die Verteilte-Funktions-Verarbeitung durchführt.
  • Wenn die Zielmaschine serielle Verarbeitung durchführen soll, erzeugt der serielle Compiler 212 reale Maschinencodes und Sequenz, orientiert für serielle Verarbeitung auf der Basis der von dem Task-Planer 208 für die serielle Verarbeitung ausgegebenen Prozessor-Datei. Die erzeugten Codes und die Sequenz werden dann an die Zielmaschine gesendet.
  • Es sei erwähnt, daß, wenn die serielle Verarbeitung oder die Verteilte- Funktions-Verarbeitung durchgeführt wird, die Task-Information und die Inter-Task-Relations-Information an den seriellen Compiler 212 und den parallelen Compiler 213 gesendet werden können von dem Task-Teiler 207 ohne den Eingriff des Task-Planers 208.
  • Wenn andererseits der Pfad 220 von dem Task-Planer 208 zu dem Task- Teiler 207 existiert, kann der letztere ähnlich dem Task-Teilungsrnittel 25 der zweiten Ausführungsform der Erfindung arbeiten, während der Task- Planer 208 ähnlich dem Task-Teilungsrnittel 26 der zweiten Ausführungsform arbeitet. Andere Operationen sind im wesentlichen die gleichen wie oben beschrieben unter der Annahme, daß der Pfad 220 nicht vorhanden ist.
  • Die Programm-Parallelisierungsvorrichtung gemaß dieser Ausführungsform erfreut sich den im folgenden genannten Vorteilen zusätzlich zu denjenigen der ersten und zweiten Ausführungsformen.
  • Die Programm-Parallelisierungsvorrichtung kann mit einer Mehrzahl von Sprachen fertig werden, wie z.B. die steuer-orientierte Sprache, operationsorientierte Sprachen A und B und die AI-orientierte Sprache, ebenso wie die serielle Verarbeitung, durchgeführt durch die Zielmaschine. Daneben erlaubt es die Programm-Parallelisierungsvorrichtung gemäß dieser Ausführungsform der Zielmaschine, Vektorverarbeitung und Verteilte-Funktions-Verarbeitung durchzuführen.
  • Vierte Ausführungsform
  • Figur 28 ist ein Blockdiagramm, welches eine allgemeine Anordnung der Programm-Parallelisierungsvorrichtung gemaß einer vierten Ausführungsform der Erfindung zeigt. Diese Programm-Parallelisierungsvorrichtung 70 weist eine Informationsverarbeitungseinheit 111 und einen Speicher auf und ist mit einer Zielmaschine, allgemein durch 73 bezeichnet, durch eine Schnittstelle 71 verbunden.
  • Programme, die den Algorithmus beschreiben, welcher in der Programm- Parallelisierungsvorrichtung, wie zuvor in Verbindung mit den ersten bis dritten Ausführungsformen der Erfindung verwendet wird, sind in der Speicherungsvorrichtung oder dem Speicher 112, der in der Programm-Parallelisierungsvorrichtung 70 enthalten ist, gespeichert. Die Objektcodes und die Sequenz, die für die Parallelverarbeitung durch die Zielmaschine 73 als das Ergebnis der Ausführung des Algorithmus durch die Informationsverarbeitungseinheit 111 geeignet gemacht worden sind, werden an die Zieimaschine 73 durch eine Schnittstelle 71 und einen extern erweiterten Kanal 97 gesendet. In dem Fall dieser Ausführungsform wird angenommen, daß die Zielmaschine 73 durch eine Parallel-Verarbeitungsvorrichtung, offenbart in JP-A-63-101957 gebildet ist.
  • Durch Verwendung des extern erweiterten Kanals 97 kann die Programm- Parallelisierungsvorrichtung 70 direkt auf gemeinsame Speicher 106 bis 108 zugreifen, was wiederum bedeutet, daß die Objektcodes, ebenso wie die Sequenz (Objektprogramm), erzeugt durch die Programm-Parallelisierung, zu den gemeinsamen Speichern 106 bis 108 gesendet werden kann, wobei die Prozessoren 77 bis 82 Verarbeitungen parallel ausführen können, entsprechend unter der Steuerung jeweils von Parallelverarbeitungsmechanismen 87 bis 92. Kommunikation zwischen den Prozessoren 77 bis 82 ist realisiert durch Verwendung der gemeinsamen Speicher 106 bis 108, welche jeweils mit den Prozessoren 77 bis 82 durch einen Bus verbunden sind, worauf Signalsteuerungsschaltungen 93 bis 96 wahlfreien Zugriff bei hoher Geschwindigkeit mit hoher Effizienz haben können, wie oben in Verbindung mit der ersten Ausführungsform beschrieben ist. Selbst wenn die Anzahl der in der Zielmaschine 73 beinhalteten Prozessoren sich von dieser in Fig. 28 gezeigten Ausführungsform unterscheidet, können ähnliche Operationen und Wirkungen gewährleistet werden. Jeder der Prozessoren 77 bis 82 weist eine CPU (zentrale Verarbeitungseinheit) 250, einen lokalen CPU-Speicher 251 und einen Puffer 252, wie in Fig. 29 gezeigt, auf.
  • Dementsprechend kann die durch die einzelnen Prozessoren auszuführenden Objektcodes und Sequenzen in den lokalen CPU-Speichern der Prozessoren anstelle der gemeinsame Speicher 106 und 107 gespeichert werden. Es sei weiter angemerkt, daß durch Verwendung extern erweiterter Kanäle 84 bis 86 die durch die Programm-Parallelisierungsvorrichtung 709 gemäß dieser Ausführungsform erzeugten Objektcodes und die Sequenz der Zielmaschine 73 zugeführt werden können.
  • Die Programm-Parallelisierungsvorrichtung 70 gemäß dieser Ausführungsform kann realisiert werden durch Verwendung z.B. eines Personalcomputers, einem Arbeitsplatzrechner oder ähnlichem, einzeln oder in Mehrzahl. Des weiteren können ein einzelner oder mehrere der in der Zielmaschine enthaltenen Prozessoren als die Programm-Parallelisierungsvorrichtung 70 verwendet werden.
  • Die Programm-Parallelisierungsvorrichtung gemäß dieser (vierten) Ausführungsform der Erfindung schafft den Vorteil, daß Objektcodes und Sequenz, die es der Zielmaschine 73 ermöglichen, die Parallelverarbeitung mit hoher Effizienz durchzuführen, erhalten werden können, zusätzlich zu denjenigen der ersten bis dritten Ausführungsform.

Claims (7)

1. Vorrichtung zur Parallelisierung von Programmen zum Erzeugen, aus einem Quellprogramm, von Objektprogrammen, die parallel durch eine Mehrzahl von Prozessoren (77 - 82) in einem Multi-Prozessor-System (9) ausführbar sind, mit Kommunikationseinrichtungen zum Ermöglichen von Kommunikation zwischen den Prozessoren und Synchronisationsmittel zum Ermöglichen von Zeitgabeneinstellung für Parallelverarbeitung zwischen den Prozessoren,
gekenzeichnet dadurch, daß
sie aufweist:
Task-Teilungsmittel (4, 25, 207, 111) zum Teilen des auszuführenden Quellprogramms (1) in Tasks und zum hierdurch Erzeugen von Inter- Task-Relationsinformation, welche Relationen zwischen den Tasks repräsentiert, und Task-Verarbeitungs-Zeitinformation, welche die Verarbeitungszeit für die Tasks repräsentiert, wobei die Inter-Task-Relationsinformation durch Prüfen von Operand-Daten erzeugt wird, welche in dem Quellprogramm enthalten sind, zum hierdurch Bestimmen derjenigen Tasks, deren Ausführung beeinflußt wird durch Daten, die aus der Ausführung der gegebenen Tasks oder derjenigen gegebenen Tasks, deren Ausführung die Ausführung dieser Tasks beeinflußt, resultieren, und wobei die Task-Verarbeitungszeit-Information durch Aufsummieren der Verarbeitungszeit von Maschinenbefehlen in den jeweiligen Tasks erzeugt wird;
Task-Planungsmittel (5, 26, 208, 111), reagierend auf die Task-Verarbeitungszeit-Information und die Inter-Task-Relationsinformation, welche beide von den Task-Teilungsmitteln (4, 25, 207, 111) ausgegeben werden, zum Erzeugen von Gruppen von Tasks, welche jeweils durch die Prozessoren (77 - 82) auszuführen sind, ebenso wie Verarbeitungsabfolge-Information hierfür, derart, daß die Tasks, die geeignet sind, parallel ausgeführt zu werden, in dem Multi-Prozessor-System (9) jeweils getrennt durch die verschiedenen Prozessoren (77 - 82) ausgeführt werden, ohne Widerspruch hervorzurufen in der Inter-Tasks-Ablaufbeziehung und Erzeugung von Synchronisationsinformation, welche Zeitpunkte repräsentiert, in welchen die Synchronisationsmittel die Zeitgabeneinstellung für Parallelverarbeitung durchführen sollten;
wobei die Task-Planungsmittel (26) versehen sind mit einer Funktion zum Erzeugen von Task-Verbindungsinformation, wobei die Task-Verbindungsinformation den Task-Teilungsmitteln (4, 25, 207, 111) zugeführt wird zum Zusammenbinden solcher Tasks, die indiziert sind, um in der Inter-Task-Relationsinformation zusammengebunden zu werden in einen Task und die somit, wenn sie zusammengebunden werden, die Anzahl von Malen, wie oft die Koordinations-(warte-)Verarbeitung durch die Synchronisationsmittel durchzuführen ist, und somit die für das Ausführen der Parallelverarbeitung in dem Multi-Prozessor-System (9) geforderte Zeit verringern; und wobei die Task-Planungsmittel (26) mit einer Funktion zum Verbinden der Tasks in Übereinstimmung mit der Task-Verbindungsinformation versehen sind; und
Parallel-Kompilierungsmittel (6, 27, 213, 111; 112) mit einer Funktion des Übersetzens der Gruppen von Tasks ebenso wie der Verarbeitungsabfolge der Tasks in jeder der Gruppen in jeweilige Objektprogramme, die durch die jeweiligen Prozessoren (77 - 82) in dem Multi-Prozessor-System (9) auszuführen sind, und Zuweisen der Objektprogramme den jeweiligen Prozessoren (77 - 82).
2. Vorrichtung zum Parallelisieren von Programmen gemäß Anspruch 1, weiter aufweisend Vor-Kompilierungsmittel (2, 23, 202, 203; 204; 205) zum Übersetzen des Quellprogramms (1) in ein Vor-Objektprogramm unter Einschluß von virtuellen Maschinen-Codes, die individuelle Befehle für verschiedenartige Prozessoren in allgemeinen Ausdrücken ausdrücken.
3. Vorrichtung zum Parallelisieren von Programmen gemaß Anspruch 1, weiter aufweisend Vor-Kompilierungsmittel (2, 23, 202, 203; 204; 205) zum Übersetzen des Quellprogramms (1) in ein Vor-Objektprogramm unter Einschluß von virtuellen Maschinen-Codes, die individuelle Befehle für verschiedenartige Prozessoren in allgemeinen Ausdrücken ausdrücken.
4. Vorrichtung zum Parellelisieren von Programmen gemäß Anspruch 1, weiter aufweisend Vor-Kompilierungsmittel (2, 23, 202, 203; 204; 205) zum Übersetzen des Quellprogramms (1) in ein Vor-Objektprogramm unter Einschluß von virtuellen Maschinen-Codes, die individuelle Befehle für verschiedenartige Prozessoren in allgemeinen Ausdrücken ausdrücken.
5. Vorrichtung zum Parallelisieren von Programmen gemäß Anspruch 2, weiter aufweisend virtuelle Maschinen-Codes, welche in eine Eins-zueins-Korrespondenz in Daten, ausgedrückt in Form von entsprechenden Funktionen, übersetzt werden können.
6. Vorrichtung zum Parallelisieren von Programmen gemäß Anspruch 3, weiter aufweisend virtuelle Maschinen-Codes, welche in eine Eins-zueins-Korrespondenz in Daten, ausgedrückt in Form von entsprechenden Funktionen, übersetzt werden können.
7. Vorrichtung zum Parallelisieren von Programmen gemäß Anspruch 4, weiter aufweisend virtuelle Maschinen-Codes, welche in eine Eins-zueins-Korrespondenz von Daten, ausgedrückt in Form von entsprechenden Funktionen, übersetzt werden können.
DE69029956T 1989-04-28 1990-04-26 Vorrichtung zur Parallelisierung von Programmen Expired - Fee Related DE69029956T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10765489 1989-04-28

Publications (2)

Publication Number Publication Date
DE69029956D1 DE69029956D1 (de) 1997-03-27
DE69029956T2 true DE69029956T2 (de) 1997-09-18

Family

ID=14464663

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69029956T Expired - Fee Related DE69029956T2 (de) 1989-04-28 1990-04-26 Vorrichtung zur Parallelisierung von Programmen

Country Status (4)

Country Link
US (1) US5452461A (de)
EP (1) EP0400328B1 (de)
JP (1) JP3039953B2 (de)
DE (1) DE69029956T2 (de)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2921190B2 (ja) * 1991-07-25 1999-07-19 日本電気株式会社 並列実行方式
GB9305263D0 (en) * 1993-03-15 1993-05-05 Univ Westminster Parrallel computation
EP0635784B1 (de) * 1993-07-23 1999-08-25 Siemens Aktiengesellschaft Multiprozessorsystem
CA2131406C (en) * 1993-09-21 2002-11-12 David D'souza Preemptive multi-tasking with cooperative groups of tasks
US6948172B1 (en) 1993-09-21 2005-09-20 Microsoft Corporation Preemptive multi-tasking with cooperative groups of tasks
JP3190773B2 (ja) * 1993-09-30 2001-07-23 日本電気株式会社 言語処理プログラムのコンパイル処理方法
SG73378A1 (en) * 1993-10-05 2000-06-20 Seiko Epson Corp Apparatus and method for generating a program for parallel processing
JPH0887341A (ja) * 1994-09-16 1996-04-02 Fujitsu Ltd 自動縮退立ち上げ機能を有したコンピュータシステム
US6009454A (en) * 1994-09-30 1999-12-28 Allen-Bradley Company, Llc Multi-tasking operation system for industrial controller
JP3444671B2 (ja) * 1994-11-08 2003-09-08 富士通株式会社 並列コード変換処理方法とそのシステム
US6199093B1 (en) * 1995-07-21 2001-03-06 Nec Corporation Processor allocating method/apparatus in multiprocessor system, and medium for storing processor allocating program
US6487580B1 (en) * 1995-09-25 2002-11-26 International Business Machines Corporation Method and system for managing concurrently executable computer processes
US5774728A (en) * 1995-12-27 1998-06-30 International Business Machines Corporation Method and system for compiling sections of a computer program for multiple execution environments
JP3610681B2 (ja) * 1996-06-28 2005-01-19 株式会社日立製作所 生産計画方法及び生産計画システム
US6230303B1 (en) 1997-02-24 2001-05-08 Lucent Technologies Inc. Proximity-based cluster allocation for hardware-software co-synthesis of heterogeneous distributed embedded systems
US6117180A (en) * 1997-02-24 2000-09-12 Lucent Technologies Inc. Hardware-software co-synthesis of heterogeneous distributed embedded systems for low overhead fault tolerance
US6178542B1 (en) 1997-02-24 2001-01-23 Lucent Technologies Inc. Hardware-software co-synthesis of embedded system architectures using quality of architecture metrics
US6110220A (en) * 1997-02-24 2000-08-29 Lucent Technologies Inc. Concurrent hardware-software co-synthesis of hard real-time aperiodic and periodic specifications of embedded system architectures
US6112023A (en) * 1997-02-24 2000-08-29 Lucent Technologies Inc. Scheduling-based hardware-software co-synthesis of heterogeneous distributed embedded systems
US6289488B1 (en) 1997-02-24 2001-09-11 Lucent Technologies Inc. Hardware-software co-synthesis of hierarchical heterogeneous distributed embedded systems
JP3675623B2 (ja) * 1997-10-31 2005-07-27 株式会社東芝 プログラム開発支援装置及び方法並びにプログラム開発支援用ソフトウェアを記録した記録媒体
US6075935A (en) * 1997-12-01 2000-06-13 Improv Systems, Inc. Method of generating application specific integrated circuits using a programmable hardware architecture
US6097886A (en) * 1998-02-17 2000-08-01 Lucent Technologies Inc. Cluster-based hardware-software co-synthesis of heterogeneous distributed embedded systems
US6086628A (en) * 1998-02-17 2000-07-11 Lucent Technologies Inc. Power-related hardware-software co-synthesis of heterogeneous distributed embedded systems
US6324639B1 (en) * 1998-03-30 2001-11-27 Matsushita Electric Industrial Co., Ltd. Instruction converting apparatus using parallel execution code
JPH11296381A (ja) * 1998-04-08 1999-10-29 Matsushita Electric Ind Co Ltd 仮想マシン及びコンパイラ
WO2000002107A2 (de) * 1998-07-03 2000-01-13 Siemens Aktiengesellschaft Verfahren und anordnung zum entwurf einer steuerung für einen gesamtprozess
US6363472B1 (en) * 1998-09-03 2002-03-26 Telefonaktiebolaget L M Ericsson (Publ) Method and system for minimizing effect of replacing programming languages in telephony systems
US6415384B1 (en) 1998-10-30 2002-07-02 Lucent Technologies Inc. Hardware/software co-synthesis of dynamically reconfigurable embedded systems
US6550059B1 (en) * 1999-10-04 2003-04-15 Advanced Micro Devices, Inc. Method for generating optimized vector instructions from high level programming languages
US6539542B1 (en) * 1999-10-20 2003-03-25 Verizon Corporate Services Group Inc. System and method for automatically optimizing heterogenous multiprocessor software performance
US6708331B1 (en) * 2000-05-03 2004-03-16 Leon Schwartz Method for automatic parallelization of software
JP2002116917A (ja) * 2000-10-05 2002-04-19 Fujitsu Ltd オブジェクト指向型プログラミング言語によるソース・プログラムをコンパイルするコンパイラ
JP3810631B2 (ja) * 2000-11-28 2006-08-16 富士通株式会社 情報処理プログラムを記録した記録媒体
US6684395B2 (en) * 2000-12-28 2004-01-27 Intel Corporation Multiple image dynamic bind and load procedure for a multi-processor
US7069556B2 (en) * 2001-09-27 2006-06-27 Intel Corporation Method and apparatus for implementing a parallel construct comprised of a single task
KR100439245B1 (ko) * 2001-10-20 2004-07-05 신기황 콘크리트 구조물용 신축이음장치
US7159211B2 (en) * 2002-08-29 2007-01-02 Indian Institute Of Information Technology Method for executing a sequential program in parallel with automatic fault tolerance
US7103881B2 (en) * 2002-12-10 2006-09-05 Intel Corporation Virtual machine to provide compiled code to processing elements embodied on a processor device
JP2006520034A (ja) * 2003-02-20 2006-08-31 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 一連のコンピュータ命令の変換
EP1652072A4 (de) * 2003-07-11 2008-12-31 Computer Ass Think Inc Verfahren und vorrichtung zur parallelen aktionsverarbeitung
US20050193378A1 (en) * 2004-03-01 2005-09-01 Breault Richard E. System and method for building an executable program with a low probability of failure on demand
FR2873830B1 (fr) * 2004-07-30 2008-02-22 Commissariat Energie Atomique Procede d'ordonnancement de traitement de taches et dispositif pour mettre en oeuvre le procede
US8230426B2 (en) * 2004-10-06 2012-07-24 Digipede Technologies, Llc Multicore distributed processing system using selection of available workunits based on the comparison of concurrency attributes with the parallel processing characteristics
US20060179436A1 (en) * 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Methods and apparatus for providing a task change application programming interface
US8271993B2 (en) * 2005-03-04 2012-09-18 Hewlett-Packard Development Company, L.P. Method and apparatus for facilitating pipeline throughput
CN1316359C (zh) * 2005-06-09 2007-05-16 上海交通大学 用户指导的程序半自动并行化方法
JP5119590B2 (ja) * 2005-11-10 2013-01-16 富士通セミコンダクター株式会社 マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置
WO2007104158A1 (en) 2006-03-14 2007-09-20 Transgaming Technologies Inc. General purpose software parallel task engine
US20070256076A1 (en) * 2006-04-27 2007-11-01 Thompson James W System and method for separating multiple workloads processing in a single computer operating environment
US8769703B2 (en) * 2006-04-27 2014-07-01 Unisys Corporation System and method for providing a mechanism to virtualize a perpetual, unique system identity on a partitioned computer system
JP4908363B2 (ja) * 2007-09-25 2012-04-04 株式会社東芝 情報処理装置、並列処理最適化方法およびプログラム
JP5036523B2 (ja) * 2007-12-21 2012-09-26 三菱電機株式会社 プログラム並列化装置
US20090172353A1 (en) * 2007-12-28 2009-07-02 Optillel Solutions System and method for architecture-adaptable automatic parallelization of computing code
US8352711B2 (en) * 2008-01-22 2013-01-08 Microsoft Corporation Coordinating chores in a multiprocessing environment using a compiler generated exception table
US7516448B1 (en) * 2008-06-30 2009-04-07 International Business Machines Corporation Method for improving irreducible region commoning compile speed
KR101522444B1 (ko) 2008-10-24 2015-05-21 인터내셔널 비지네스 머신즈 코포레이션 소스 코드 처리 방법, 시스템, 및 프로그램
JP5245727B2 (ja) * 2008-11-04 2013-07-24 富士通株式会社 設計支援プログラム、設計支援装置、および設計支援方法
US8949786B2 (en) * 2008-12-01 2015-02-03 Kpit Technologies Limited Method and system for parallelization of sequential computer program codes
JP4629768B2 (ja) * 2008-12-03 2011-02-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化処理方法、システム、及びプログラム
US10002161B2 (en) * 2008-12-03 2018-06-19 Sap Se Multithreading and concurrency control for a rule-based transaction engine
US20100223213A1 (en) * 2009-02-27 2010-09-02 Optillel Solutions, Inc. System and method for parallelization of machine learning computing code
JP2010204979A (ja) * 2009-03-04 2010-09-16 Renesas Electronics Corp コンパイル方法及びコンパイラ
US9250973B2 (en) 2009-03-12 2016-02-02 Polycore Software, Inc. Apparatus and associated methodology of generating a multi-core communications topology
US20120005682A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Holistic task scheduling for distributed computing
EP2458501A1 (de) * 2010-11-30 2012-05-30 France Telecom Verfahren zum Betreiben einer Kommunikationsvorrichtung und zugehörige Kommunikationsvorrichtung
US9823991B2 (en) * 2010-12-06 2017-11-21 International Business Machines Corporation Concurrent workload simulation for application performance testing
WO2012093496A1 (ja) * 2011-01-07 2012-07-12 富士通株式会社 マルチタスクスケジューリング方法、およびマルチコアプロセッサシステム
RU2011117765A (ru) 2011-05-05 2012-11-10 ЭлЭсАй Корпорейшн (US) Устройство (варианты) и способ реализации двухпроходного планировщика задач линейной сложности
WO2013010159A1 (en) * 2011-07-14 2013-01-17 Siemens Corporation Reducing the scan cycle time of control applications through multi-core execution of user programs
JP5341957B2 (ja) 2011-07-20 2013-11-13 トヨタ自動車株式会社 内燃機関の制御装置
CN102929214A (zh) * 2011-08-11 2013-02-13 西门子公司 一种嵌入式多处理单元并行处理***及其运行方法
DE102013224702A1 (de) * 2013-12-03 2015-06-03 Robert Bosch Gmbh Steuergerät für ein Kraftfahrzeug
JP6435939B2 (ja) * 2015-03-18 2018-12-12 富士通株式会社 データ分類プログラム、データ分類方法およびデータ分類装置
JP6427053B2 (ja) * 2015-03-31 2018-11-21 株式会社デンソー 並列化コンパイル方法、及び並列化コンパイラ
JP6500626B2 (ja) * 2015-06-16 2019-04-17 富士通株式会社 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法
JP6464982B2 (ja) * 2015-10-07 2019-02-06 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP6428557B2 (ja) * 2015-10-09 2018-11-28 株式会社デンソー 並列化方法、並列化ツール
JP6558310B2 (ja) * 2016-06-13 2019-08-14 株式会社デンソー 並列化方法、並列化ツール
EP3704572A1 (de) 2017-11-03 2020-09-09 Coherent Logix, Inc. Programmierablauf für multiprozessorsystem
CN109359939A (zh) * 2018-09-26 2019-02-19 中国平安人寿保险股份有限公司 业务数据校验方法、装置、计算机设备和存储介质
CN111427417B (zh) * 2020-03-19 2023-08-22 珠海豹趣科技有限公司 一种时间获取方法、装置及电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3702005A (en) * 1971-05-24 1972-10-31 United Data Services Execution time analyzer
JPS6184740A (ja) * 1984-10-03 1986-04-30 Hitachi Ltd 汎用オブジエクトコ−ド生成方式
US4636948A (en) * 1985-01-30 1987-01-13 International Business Machines Corporation Method for controlling execution of application programs written in high level program language
JPH0754501B2 (ja) * 1985-12-27 1995-06-07 株式会社日立製作所 アクセス要求信号処理回路
JPH0731661B2 (ja) * 1986-10-20 1995-04-10 株式会社日立製作所 プロセツサ
JPS6345670A (ja) * 1986-08-13 1988-02-26 Hitachi Ltd プロセツサ間同期装置
JPS6347866A (ja) * 1986-08-15 1988-02-29 Hitachi Ltd 信号制御回路
US4843540A (en) * 1986-09-02 1989-06-27 The Trustees Of Columbia University In The City Of New York Parallel processing method
EP0274339B1 (de) * 1986-10-29 1997-05-02 United Technologies Corporation Ereignisgesteuertes Exekutivprogramm
JPH01108638A (ja) * 1987-10-21 1989-04-25 Hitachi Ltd 並列化コンパイル方式
JP2738692B2 (ja) * 1988-01-29 1998-04-08 株式会社日立製作所 並列化コンパイル方法
US5093916A (en) * 1988-05-20 1992-03-03 International Business Machines Corporation System for inserting constructs into compiled code, defining scoping of common blocks and dynamically binding common blocks to tasks

Also Published As

Publication number Publication date
DE69029956D1 (de) 1997-03-27
EP0400328B1 (de) 1997-02-19
EP0400328A1 (de) 1990-12-05
JP3039953B2 (ja) 2000-05-08
US5452461A (en) 1995-09-19
JPH0380337A (ja) 1991-04-05

Similar Documents

Publication Publication Date Title
DE69029956T2 (de) Vorrichtung zur Parallelisierung von Programmen
DE68921906T2 (de) Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren.
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE69030523T2 (de) Synchronisierung für Multiprozessorsystem
DE69622305T2 (de) Verfahren und Gerät für einen optimierenden Kompiler
DE69130630T2 (de) Synchrones Verfahren und Gerät für Prozessoren
DE3852997T2 (de) Rechnersystem und Verfahren für die Überwachung von nichtstationären Datenstrukturen in einem Rechnersystem.
DE69021659T2 (de) Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche.
DE69231497T2 (de) Massivparalleles rechnersystem mit eingangs-ausgangsanordnung
DE3587218T2 (de) Verfahren zur Ausführung von in einer hohen Programmiersprache geschriebenen Anwenderprogrammen.
DE69428396T2 (de) Bildverarbeitungssystem mit Fliessbandarbeitsprinzip für Einzelanwendungsumgebung
DE3784082T2 (de) Adaptive befehlsverarbeitung durch feldrechner mit prozessoridentifikation und datenabhaengigen statusregistern in jedem prozessorelement.
DE68926956T2 (de) Anordnung zur teilung eines generischen kodes für ein digitales datenverarbeitungssystem
DE69132195T2 (de) System für verteilte Mehrfachrechnerkommunikation
DE3248215C2 (de)
DE69232300T2 (de) Gerät zur Parallelverarbeitung und Verfahren zur Benutzung von Unterteilung
DE69031100T2 (de) Interprozessor-Datenabhängigkeit minimierendes Übersetzungsverfahren
DE69229244T2 (de) Multiprozessor mit effizienter Verwendung von Prozessoren mit unterschiedlichen Leistungseigenschaften
DE69522842T2 (de) Gleichzeitige Verarbeitung in parallelen und fast parallelen objektorientierten Systemen
DE69924857T2 (de) Programm-kode-umwandlung
DE68927946T2 (de) Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre
DE69514444T2 (de) Verfahren für die Ablauffolgeplanung von aufeinanderfolgenden Aufgaben mit Zeitzwangsbedingungen
DE60223990T2 (de) System zum Ausführen von Zwischenkode, Methode zum Ausführen von Zwischenkode, und Computerprogrammprodukt zum Ausführen von Zwischenkode
DE102017109239A1 (de) Computerimplementiertes verfahren, computerlesbares medium und heterogenes rechnersystem
DE3855860T2 (de) Schaltungsveränderungssystem und -verfahren, Verfahren zur Erzeugung von invertierter Logik und Logikentwurfssystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee