DE112019006890T5 - Informationsverarbeitungsvorrichtung, Computer, Computersystem, Informationsverarbeitungsverfahren und Informationsverarbeitungsprogramm - Google Patents

Informationsverarbeitungsvorrichtung, Computer, Computersystem, Informationsverarbeitungsverfahren und Informationsverarbeitungsprogramm Download PDF

Info

Publication number
DE112019006890T5
DE112019006890T5 DE112019006890.3T DE112019006890T DE112019006890T5 DE 112019006890 T5 DE112019006890 T5 DE 112019006890T5 DE 112019006890 T DE112019006890 T DE 112019006890T DE 112019006890 T5 DE112019006890 T5 DE 112019006890T5
Authority
DE
Germany
Prior art keywords
execution
computer
scheme
program
block candidates
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.)
Withdrawn
Application number
DE112019006890.3T
Other languages
English (en)
Inventor
Osamu Toyama
Shigeru Hashimoto
Yohei TSUKAMOTO
Naoki Ito
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of DE112019006890T5 publication Critical patent/DE112019006890T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0421Multiprocessor system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/22Pc multi processor system
    • G05B2219/2208Each processor controls a different function of the machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Eine erste Unterteilungseinheit (501) unterteilt ein Programm in eine Vielzahl von Block-Kandidaten, während einem Teil von Prozessen erlaubt wird, in zwei oder mehr Block-Kandidaten zu koexistieren. Eine Block-Kandidaten-Bestimmungseinheit (502) bestimmt, ob oder ob nicht der Teil der Prozesse in den zwei oder mehr Block-Kandidaten unter der Vielzahl von Block-Kandidaten koexistiert. Eine Schema-Auswahleinheit (503) vergleicht, wenn der Teil der Prozesse in den zwei oder mehr Block-Kandidaten koexistiert, eine Ausführungszeit in einem parallelen Ausführungsschema mit einer Ausführungszeit in einem geteilten Ausführungsschema, und wählt ein Schema mit kürzerer Ausführungszeit zwischen dem parallelen Ausführungsschema und dem geteilten Ausführungsschema aus, wobei das parallele Ausführungsschema zwei oder mehr Computer veranlasst, einen Koexistenzprozess, der der Teil der Prozesse ist, der in den zwei oder mehr Block-Kandidaten koexistiert, parallel auszuführen, und das geteilte Ausführungsschema einen Computer veranlasst, den Koexistenzprozess auszuführen, und den anderen Computer veranlasst, ein Ausführungsergebnis zu teilen. Eine zweite Unterteilungseinheit (504) unterteilt das Programm in eine Vielzahl von Blöcken auf Grundlage der Vielzahl von Block-Kandidaten und des ausgewählten Schemas.

Description

  • Gebiet der Technik
  • Die vorliegende Erfindung bezieht sich auf eine Technik zum Unterteilen eines Programms.
  • Stand der Technik
  • Bei der Entwicklung eines eingebetteten Systems mit einem Mikrocontroller oder einer LSI (Large-Scale Integration) stößt die Verbesserung der Ausführungsgeschwindigkeit durch Erhöhung der Taktfrequenz in der Hardware an ihre Grenzen. Aus diesem Grund hat man begonnen, ein Multi-Kern-Schema zu nutzen, bei dem die Ausführungsgeschwindigkeit durch die parallele Ausführung einer Vielzahl von Computern erhöht wird.
  • Eine ähnliche Tendenz gibt es auch in der Fabrikautomatisierung, und ein in Patentliteratur 1 beschriebenes Verfahren und ein in Patentliteratur 2 beschriebenes Verfahren sind entwickelt worden.
  • Die Patentliteratur 1 beschreibt ein Verfahren zur Verkürzung der Ausführungszeit eines Programms durch Verteilung und Ausführung eines Ablaufprogramms über eine Vielzahl von Computern (PLC: Programmable Logic Controller, dt. SPS: Speicherprogrammierbare Steuerung) und Verringerung der Verarbeitungslast jedes Computers.
  • Des Weiteren wird in der Patentliteratur 2 ein Verfahren beschrieben, bei dem eine Vielzahl von SPS über einen geteilten Speicher und einen Bus miteinander verbunden sind und eine SPS mit einer freien Kapazität in Bezug auf eine Steuergröße die Steuerung für eine SPS ohne freie Kapazität in Bezug auf die Steuergröße übernimmt, wodurch die Steuerungseffizienz eines gesamten Steuerungssystems verbessert wird.
  • Liste der Anführungen
  • Patentliteratur
    • Patentliteratur 1: WO2017/141332 -Schrift
    • Patentliteratur 1: JP2010-079355A
  • Kurzfassung der Erfindung
  • Technische Aufgabe
  • Sowohl bei dem in Patentliteratur 1 als auch bei dem in Patentliteratur 2 beschriebenen Verfahren ist es notwendig, Informationen zwischen Computern über den geteilten Speicher oder den Bus auszutauschen, um kooperativen Betrieb zwischen den Computern durchzuführen. Da jedoch der Zugriff auf den geteilten Speicher und den Bus im Allgemeinen über eine Schnittstelle außerhalb des Computers erfolgt, ist eine Zugriffsverzögerung groß.
  • Darüber hinaus ist ein von jedem Computer gesteuertes Steuerungssubjekt auch durch Beschränkungen wie Eingabe und Ausgabe des Computers begrenzt.
  • Selbst wenn das Programm auf die Vielzahl von Computern verteilt ist und die Programme durch die Vielzahl von Computern in Kooperation miteinander ausgeführt werden, entsteht aufgrund der Zugriffsverzögerung für die Informationsteilung und der mit der Eingabe und Ausgabe verbundenen Beschränkungen ein großer Overhead. Eine solche Erhöhung des Overheads behindert Beschleunigung durch Verteilung des Programms und kooperative Ausführung zwischen der Vielzahl von Computern, Verteilung der Verarbeitungslast und eine Verbesserung der Steuerungseffizienz.
  • Die vorliegende Erfindung basiert auf Überlegungen zu den oben genannten Punkten und hat die Hauptaufgabe, effiziente Unterteilung eines Programms mit geringem Overhead zu realisieren.
  • Technische Lösung
  • Eine Informationsverarbeitungsvorrichtung gemäß der vorliegenden Erfindung umfasst:
    • eine erste Unterteilungseinheit, um ein Programm in eine Vielzahl von Block-Kandidaten zu unterteilen, während einem Teil von Prozessen in dem Programm erlaubt ist, in zwei oder mehr Block-Kandidaten zu koexistieren;
    • eine Block-Kandidaten-Bestimmungseinheit, um zu bestimmen, ob oder ob nicht der Teil der Prozesse in dem Programm in den zwei oder mehr Block-Kandidaten unter der Vielzahl von Block-Kandidaten koexistiert;
    • eine Schema-Auswahleinheit, um, wenn der Teil der Prozesse in dem Programm in den zwei oder mehr Block-Kandidaten koexistiert, eine Ausführungszeit, die benötigt wird, wenn das Programm in einem parallelen Ausführungsschema ausgeführt ist, mit einer Ausführungszeit, die benötigt wird,
    • wenn das Programm in einem geteilten Ausführungsschema ausgeführt ist, zu vergleichen, und ein Schema mit kürzerer Ausführungszeit zwischen dem parallelen Ausführungsschema und dem geteilten Ausführungsschema auszuwählen, wobei das parallele Ausführungsschema zwei oder mehr Computer,
    • die die gleiche Anzahl haben wie die zwei oder mehr Block-Kandidaten, veranlasst, einen Koexistenzprozess, der der Teil der Prozesse ist, der in den zwei oder mehr Block-Kandidaten koexistiert, parallel auszuführen, wobei das geteilte Ausführungsschema einen Computer unter den zwei oder mehr Computern veranlasst, den Koexistenzprozess auszuführen und den anderen Computer unter den zwei oder mehr Computern veranlasst, ein Ausführungsergebnis des einen Computers zu teilen; und
    • eine zweite Unterteilungseinheit, um das Programm in eine Vielzahl von Blöcken auf Grundlage der Vielzahl von Block-Kandidaten und des durch die Schema-Auswahleinheit ausgewählten Schemas zu unterteilen.
  • Vorteilhafte Wirkungen der Erfindung
  • In der vorliegenden Erfindung wird ein Schema mit kürzerer Ausführungszeit zwischen einem parallelen Ausführungsschema und einem geteilten Ausführungsschema ausgewählt. Daher ist es gemäß der vorliegenden Erfindung möglich, effiziente Unterteilung eines Programms mit einem geringen Overhead zu realisieren.
  • Figurenliste
    • 1 ist ein Diagramm zur Darstellung eines Konfigurationsbeispiels eines Steuerungssystems (eines Computers) gemäß einer ersten Ausführungsform;
    • 2 ist ein Diagramm zur Darstellung eines Konfigurationsbeispiels eines Steuerungssystems (drei Computer) gemäß der ersten Ausführungsform;
    • 3 ist ein Diagramm, das ein Beispiel für eine funktionale Konfiguration von Computern gemäß der ersten Ausführungsform darstellt;
    • 4 ist ein Diagramm, das eine Programmcode-Zuweisungsvorrichtung gemäß der ersten Ausführungsform darstellt;
    • 5 ist ein Diagramm, das ein Beispiel für eine Hardware-Konfiguration der Programmcode-Zuweisungsvorrichtung gemäß der ersten Ausführungsform darstellt;
    • 6 ist ein Diagramm, das ein Beispiel für eine funktionale Konfiguration der Programmcode-Zuweisungsvorrichtung gemäß der ersten Ausführungsform darstellt;
    • 7 ist ein Flussdiagramm, das eine Übersicht einer Betriebsweise der Programmcode-Zuweisungsvorrichtung gemäß der ersten Ausführungsform darstellt;
    • 8 ist ein Diagramm, das ein Beispiel für Programmausführungsreihenfolge-Informationen gemäß der ersten Ausführungsform darstellt;
    • 9 ist ein Diagramm, das ein Beispiel für Programmcode-Unterteilung-Kandidaten gemäß der ersten Ausführungsform darstellt;
    • 10 ist ein Diagramm, das ein Unterteilungsbeispiel eines Programmcodes gemäß der ersten Ausführungsform darstellt;
    • 11 ist ein Diagramm, das ein Beispiel für Programmcode-Unterteilung-Kandidaten gemäß der ersten Ausführungsform darstellt;
    • 12 ist ein Diagramm, das ein Unterteilungsbeispiel des Programmcodes gemäß der ersten Ausführungsform darstellt;
    • 13 ist ein Diagramm, das Beispiele für feste Ausführungsabschnitte und dynamische Ausführungsabschnitte von Programmcodes gemäß der ersten Ausführungsform darstellt;
    • 14 ist ein Flussdiagramm, das ein Betriebsbeispiel der Programmcode-Zuweisungsvorrichtung gemäß der ersten Ausführungsform darstellt;
    • 15 ist ein Flussdiagramm, das ein Betriebsbeispiel der Programmcode-Zuweisungsvorrichtung gemäß der ersten Ausführungsform darstellt;
    • 16 ist ein Flussdiagramm, das ein Betriebsbeispiel der Programmcode-Zuweisungsvorrichtung gemäß der ersten Ausführungsform darstellt;
    • 17 ist ein Flussdiagramm, das ein Betriebsbeispiel der Programmcode-Zuweisungsvorrichtung gemäß der ersten Ausführungsform darstellt; und
    • 18 ist ein Flussdiagramm zur Darstellung eines Betriebsbeispiels des Computers gemäß der ersten Ausführungsform.
  • Beschreibung der Ausführungsformen
  • Im Folgenden werden Ausführungsformen der vorliegenden Erfindung unter Bezugnahme auf die Zeichnungen beschrieben. In der folgenden Beschreibung der Ausführungsformen und in den Zeichnungen geben Teile mit den gleichen Bezugszeichen gleiche oder entsprechende Teile an.
  • Im Folgenden wird ein Programmcode auch einfach als ein Programm bezeichnet.
  • Erste Ausführungsform.
  • *** Voraussetzung ***
  • Zunächst wird ein Steuerungssystem beschrieben, das eine Voraussetzung für die vorliegende Ausführungsform ist.
  • 1 zeigt ein Beispiel für die Konfiguration des Steuerungssystems unter Verwendung eines Computers.
  • In 1 führt ein Computer 100 einen Programmcode 102 zur Steuerung einer Steuerungssubjekteinrichtung (A) 300, einer Steuerungssubjekteinrichtung (B) 301 und einer Steuerungssubjekteinrichtung (C) 302 aus. Der Computer 100 steuert die Steuerungssubjekteinrichtung (A) 300, die Steuerungssubjekteinrichtung (B) 301 und die Steuerungssubjekteinrichtung (C) 302 durch Ausführen des Programmcodes 102.
  • Der Computer 100 ist über einen geteilten Bus 200 mit der Steuersubjektvorrichtung (A) 300, der Steuersubjektvorrichtung (B) 301 und der Steuersubjektvorrichtung (C) 302 verbunden.
  • Der Computer 100 verfügt über einen Programmspeicher 101. Der Programmspeicher 101 speichert den Programmcode 102.
  • Der Computer 100 liest über den geteilten Bus 200 einen Betriebszustand von jeder von der Steuerungssubjekteinrichtung (A) 300, der Steuerungssubjekteinrichtung (B) 301 und der Steuerungssubjekteinrichtung (C) 302. Ferner erzeugt der Computer 100 ein Steuersignal für jede von der Steuerungssubjekteinrichtung (A) 300, der Steuerungssubjekteinrichtung (B) 301 und der Steuerungssubjekteinrichtung (C) 302 unter Verwendung des Betriebszustands von jeder von der Steuerungssubjekteinrichtung (A) 300, der Steuerungssubjekteinrichtung (B) 301 und der Steuerungssubjekteinrichtung (C) 302. Des Weiteren schreibt der Computer 100 über den geteilten Bus 200 das Steuersignal für jede von der Steuerungssubjekteinrichtung (A) 300, der Steuerungssubjekteinrichtung (B) 301 und der Steuerungssubjekteinrichtung (C) 302 in jede von der Steuerungssubjekteinrichtung (A) 300, der Steuerungssubjekteinrichtung (B) 301 und der Steuerungssubjekteinrichtung (C) 302. Auf diese Weise steuert der Computer 100 jede von der Steuerungssubjekteinrichtung (A) 300, der Steuerungssubjekteinrichtung (B) 301 und der Steuerungssubjekteinrichtung (C) 302.
  • Als nächstes wird ein Steuerungssystem unter Verwendung von einer Vielzahl von Computern beschrieben.
  • 2 zeigt ein Beispiel für die Konfiguration des Steuerungssystems unter Verwendung von drei Computern.
  • In 2 sind drei Computer (Computer (A) 110, Computer (B) 120 und Computer (C) 130) mit dem geteilten Bus 200 verbunden.
  • Der Programmcode 102 in 1 ist unterteilt in einen Programmcode (A) 112, einen Programmcode (B) 122 und einen Programmcode (C) 132. Anschließend wird der Programmcode (A) 112 in einem Programmspeicher 111 des Computers (A) 110 abgelegt. Außerdem wird der Programmcode (B) 122 in einem Programmspeicher 121 des Computers (B) 120 abgelegt. Außerdem wird der Programmcode (C) 132 in einem Programmspeicher 131 des Computers (C) 130 abgelegt.
  • Der Computer (A) 110 steuert die Steuerungssubjekteinrichtung (A) 300, die Steuerungssubjekteinrichtung (B) 301 und die Steuerungssubjekteinrichtung (C) 302 über den geteilten Bus 200 durch Ausführen des Programmcodes (A) 112. Der Computer (B) 120 steuert die Steuerungssubjekteinrichtung (A) 300, die Steuerungssubjekteinrichtung (B) 301 und die Steuerungssubjekteinrichtung (C) 302 über den geteilten Bus 200 durch Ausführen des Programmcodes (B) 122. Der Computer (C) 130 steuert die Steuerungssubjekteinrichtung (A) 300, die Steuerungssubjekteinrichtung (B) 301 und die Steuerungssubjekteinrichtung (C) 302 über den geteilten Bus 200 durch Ausführen des Programmcodes (C) 132.
  • Wenn es notwendig ist, Daten zwischen dem Computer (A) 110, dem Computer (B) 120 und dem Computer (C) 130 zu teilen, um das Steuersignal zu erzeugen, werden die Daten zwischen dem Computer (A) 110, dem Computer (B) 120 und dem Computer (C) 130 unter Verwendung eines geteilten Speichers 201 geteilt.
  • Im Allgemeinen gibt es im Computer einen Arbeitsbereich (Arbeitsspeicher) zur Speicherung eines Zwischenergebnisses der Berechnung und dergleichen, die für die Ausführung des Programmcodes erforderlich sind. Der Arbeitsbereich besteht aus einem Cache-Speicher oder einem Hochgeschwindigkeits-SRAM (Static Random Access Memory), so dass Hochgeschwindigkeitszugriff möglich ist.
  • Da der Zugriff auf den in 2 dargestellten geteilten Speicher 201 über den geteilten Bus 200 erfolgt, ist die Zugriffsgeschwindigkeit dagegen sehr langsam. Daher hat die Datenteilung zwischen den Computern, die den geteilten Speicher 201 nutzen, einen Leistungsnachteil. Um die Leistung gegenüber der Zeit vor der Unterteilung des Programmcodes zu verbessern, ist es daher notwendig, Möglichkeiten des Zugriffs auf den geteilten Speicher 201 durch den Computer (A) 110, den Computer (B) 120 und den Computer (C) 130, die den Programmcode nach der Unterteilung ausführen, zu verringern.
  • Außerdem wird in einem Steuerungssystem, in dem eine SPS als der Computer genutzt wird, der gleiche Programmcode in einem Zyklus, der als eine Abtastzeit bezeichnet wird, wiederholt ausgeführt. Je kürzer die Abtastzeit ist, desto detailliertere Steuerungsanweisungen können an die Steuerungssubjekteinrichtung gegeben werden. Je kürzer also die Abtastzeit ist, desto höher ist die Leistungsfähigkeit des Steuerungssystems.
  • Wenn die Steuerungssubjekteinrichtungen unter Verwendung der Vielzahl von Computern gesteuert werden, wird die Abtastzeit auf eine Ausführungszeit eines Computers mit der langsamsten Berechnung eingestellt. Daher ist bei der Steuerung der Steuerungssubjekteinrichtung unter Verwendung der Vielzahl von Computern notwendig, darauf zu achten, dass die Ausführungszeit des Programmcodes nach der Unterteilung in jedem Computer unter den Computern gleich ist.
  • *** Beschreibung der Konfiguration ***
  • 3 stellt ein Beispiel für eine Konfiguration des Steuerungssystems gemäß der vorliegenden Ausführungsform dar. In 3 wird zum Zwecke der Veranschaulichung angenommen, dass das Steuerungssystem gemäß der vorliegenden Ausführungsform aus zwei Computern gebildet ist, nämlich dem Computer (A) 110 und dem Computer (B) 120. Ferner wird angenommen, dass der Programmcode 102 in den Programmcode (A) 112 und den Programmcode (B) 122 unterteilt ist. Ferner wird davon ausgegangen, dass die Steuerungssubjekteinrichtung (A) 300 und die Steuerungssubjekteinrichtung (B) 301 als die Steuerungssubjekteinrichtungen vorhanden sind.
  • Es sei angemerkt, dass das in 3 dargestellte Steuerungssystem ein Beispiel für ein Computersystem ist.
  • Der Computer (A) 110 enthält den Programmspeicher 111, einen Prozessor 115, eine Anweisungsausführungssteuerungseinheit Anweisungsausführungssteuerungseinheit 116 und Anweisungsausführungssteuerungsinformationen 117.
  • Der Computer (A) 120 enthält den Programmspeicher 121, einen Prozessor 125, eine Anweisungsausführungssteuerungseinheit 126 und Anweisungsausführungssteuerungsinformationen 127.
  • Der Programmspeicher 111 speichert den Programmcode (A) 112. Der Programmspeicher 121 speichert ferner den Programmcode (B) 122.
  • Der Programmcode (A) 112 ist aus einem festen Ausführungsabschnitt 113 und einem dynamischen Ausführungsabschnitt 114 gebildet.
  • Der feste Ausführungsabschnitt 113 ist ein Abschnitt, der ausschließlich von dem Computer (A) 110 ausgeführt wird. Das heißt, der feste Ausführungsabschnitt 113 wird nur von dem Computer (A) 110 ausgeführt.
  • Der Programmcode (B) 122 ist ebenfalls aus einem festen Ausführungsabschnitt 123 und einem dynamischen Ausführungsabschnitt 124 gebildet. Der feste Ausführungsabschnitt 123 wird ausschließlich von dem Computer (B) 120 ausgeführt. Das heißt, der feste Ausführungsabschnitt 123 wird nur von dem Computer (B) 120 ausgeführt.
  • Der dynamische Ausführungsabschnitt 114 und der dynamische Ausführungsabschnitt 124 sind der gleiche Prozess. Die Ausführungsmuster des dynamischen Ausführungsabschnitts 114 und des dynamischen Ausführungsabschnitts 124 variieren je nach den Bedingungen. Genauer gesagt kann je nach Erfolg oder Misserfolg der Bedingungen kann (1) der dynamische Ausführungsabschnitt 114 ausschließlich von dem Computer (A) 110 ausgeführt werden, (2) der dynamische Ausführungsabschnitt 114 kann von dem Computer (A) 110 ausgeführt werden und der dynamische Ausführungsabschnitt 124 kann von dem Computer (B) 120 ausgeführt werden, und (3) nur der dynamische Ausführungsabschnitt 124 kann von dem Computer (B) 120 ausgeführt werden. Welcher von dem dynamischen Ausführungsabschnitt 114 und dem dynamische Ausführungsabschnitt 124 ausgeführt wird, wird gemäß der Anweisungsausführungssteuerungseinheit 116 und der Anweisungsausführungssteuerungsinformation 117 gesteuert.
  • Die Anweisungsausführungssteuerungsinformationen 117 definieren eine Bedingung für die Ausführung des dynamischen Ausführungsabschnitts 114 durch den Computer (A) 110 und die Ausführung des dynamischen Ausführungsabschnitts 124 durch den Computer (B) 120 als eine Ausführungsbedingung. Darüber hinaus geben die Anweisungsausführungssteuerungsinformationen 117 an, welcher Teil des dynamischen Ausführungsabschnitts 114 von dem Computer (A) 110 ausgeführt wird, wenn die Ausführungsbedingung erfüllt ist.
  • In ähnlicher Weise definieren die Anweisungsausführungssteuerungsinformationen 127 die Ausführungsbedingung und geben an, welcher Abschnitt des dynamischen Ausführungsabschnitts 124 durch den Computer (A) 120 ausgeführt wird, wenn die Ausführungsbedingung erfüllt ist.
  • Der Prozess (dynamischer Ausführungsabschnitt 114 und dynamischer Ausführungsabschnitt 124), der zwischen dem Computer (A) 110 und dem Computer (B) 120 aufgeteilt und durch diese ausgeführt wird, wird auch als ein aufgeteilte-Ausführung-Prozess bezeichnet.
  • Bei der Ausführungsbedingung handelt es sich beispielsweise um eine Bedingung, die sich auf einen Zustand der Steuerungssubjekteinrichtung (A) 300 oder einen Zustand der Steuerungssubjekteinrichtung (B) 301 bezieht, oder um eine Bedingung, die sich auf eine bedingte Verzweigung wie eine IF-Anweisung oder eine CASE-Anweisung bezieht.
  • Die Anweisungsausführungssteuerungsinformationen 117 und die Anweisungsausführungssteuerungsinformationen 127 werden so generiert, dass eine Anweisungsmenge (Verarbeitungsmenge), die durch jeden Computer ausgeführt wird, für jede Ausführungsbedingung gleich wird, indem der Programmcode 102 im Voraus analysiert wird.
  • Jede der Anweisungsausführungssteuerungsinformationen 117 und der Anweisungsausführungssteuerungsinformationen 127 ist gleichbedeutend mit Ausführungsbedingungsinformationen.
  • Die Anweisungsausführungssteuerungseinheit 116 führt den Programmcode (A) 112 aus.
  • Genauer gesagt führt die Anweisungsausführungssteuerungseinheit 116 den festen Ausführungsabschnitt 113 aus, der ein dem Computer (A) 110 ausschließlich zugeordneter Prozess ist. Ferner bestimmt die Anweisungsausführungssteuerungseinheit 116 unter Bezugnahme auf die Anweisungsausführungssteuerungsinformationen 117, ob oder ob nicht die Ausführungsbedingung erfüllt. Wenn die Ausführungsbedingung erfüllt ist, führt die Anweisungsausführungssteuerungseinheit 116 den aufgeteilte-Ausführung-Prozess mit einer Aufteilung mit dem Computer (B) 120 aus. Die Anweisungsausführungssteuerungseinheit 116 ist gleichbedeutend mit einer Bedingungsbestimmungseinheit und einer Prozessausführungseinheit.
  • Konkret handelt es sich bei der Anweisungsausführungssteuerungseinheit 116 um ein Programm, das durch den Prozessor 115 ausgeführt wird.
  • In ähnlicher Weise führt die Anweisungsausführungssteuerungseinheit 126 den Programmcode (B) 122 aus.
  • Genauer gesagt führt die Anweisungsausführungssteuerungseinheit 126 den festen Ausführungsabschnitt 123 aus, der ein dem Computer (B) 120 eindeutig zugeordneter Prozess ist. Ferner bestimmt die Anweisungsausführungssteuerungseinheit 126 unter Bezugnahme auf die Anweisungsausführungssteuerungsinformationen 127, ob oder ob nicht die Ausführungsbedingung erfüllt ist. Dann, falls die Ausführungsbedingung erfüllt ist, führt die Anweisungsausführungssteuerungseinheit 126 den aufgeteilte-Ausführung-Prozess mit einer Aufteilung mit dem Computer (A) 110 aus. Die Anweisungsausführungssteuerungseinheit 126 ist auch gleichbedeutend mit der Bedingungsbestimmungseinheit und der Prozessausführungseinheit.
  • Bei der Anweisungsausführungssteuerungseinheit 126 handelt es sich ebenfalls um ein Programm, das durch den Prozessor 125 ausgeführt wird.
  • Als Nächstes wird eine Programmcode-Zuweisungsvorrichtung 500 beschrieben. Die Programmcode-Zuweisungsvorrichtung 500 unterteilt den Programmcode 102 in den Programmcode (A) 112 und den Programmcode (B) 122 und erzeugt außerdem die Anweisungsausführungssteuerungsinformationen 117 und die Anweisungsausführungssteuerungsinformationen 127.
  • 4 zeigt die Programmcode-Zuweisungsvorrichtung 500. Die Programmcode-Zuweisungsvorrichtung 500 ist ein Computer.
  • Außerdem ist die Programmcode-Zuweisungsvorrichtung 500 ein Beispiel für eine Informationsverarbeitungsvorrichtung. Darüber hinaus ist der durch die Programmcode-Zuweisungsvorrichtung 500 durchgeführte Betrieb gleichbedeutend mit einem Informationsverarbeitungsverfahren und einem Informationsverarbeitungsprogramm.
  • Die Programmcode-Zuweisungsvorrichtung 500 unterteilt den Programmcode 102 in den Programmcode (A) 112 und den Programmcode (B) 122 unter Bezugnahme auf den Programmcode 102, Computerinformationen 401 und geteilte-Speicher-Zugriffsfähigkeit-Informationen 402. Ferner erzeugt die Programmcode-Zuweisungsvorrichtung 500 die Anweisungsausführungssteuerungseinheit 116 und die Anweisungsausführungssteuerungsinformationen 117.
  • Die Computerinformationen 401 geben die Anzahl der im Steuerungssystem enthaltenen Computer an. Im Folgenden wird davon ausgegangen, dass die Computerinformationen 401 angeben, dass das Steuerungssystem zwei Computer enthält, nämlich den Computer (A) 110 und den Computer (B) 120, wie in 3 dargestellt. Die Computerinformationen 401 geben außerdem die Leistungsfähigkeit des Computers (A) 110 und die Leistungsfähigkeit des Computers (B) 120 an.
  • Die geteilter-Speicher-Zugriffsfähigkeit-Informationen 402 geben Zugriffsfähigkeit (Zugriffsverzögerung) an, wenn der Computer (A) 110 und der Computer (B) 120 auf den geteilten Speicher 201 zugreifen.
  • 5 zeigt ein Beispiel für eine Hardwarekonfiguration der Programmcode-Zuweisungsvorrichtung 500.
  • Die Programmcode-Zuweisungsvorrichtung 500 umfasst einen Prozessor 901, eine Hauptspeichereinrichtung 902, eine Hilfsspeichereinrichtung 903 und eine Kommunikationseinrichtung 904 als Teile von Hardware.
  • Der Prozessor 901 ist eine IC (Integrated Circuit = integrierte Schaltung), die Verarbeitung durchführt.
  • Der Prozessor 901 ist eine CPU (Central Processing Unit = zentrale Verarbeitungseinheit), ein DSP (Digital Signal Processor = Digitaler Signalprozessor) oder dergleichen.
  • Die Hauptspeichereinrichtung 902 ist ein RAM (Radom Access Memory = Speicher mit wahlfreiem Zugriff).
  • Die Hilfsspeichereinrichtung 903 ist ein ROM (Read Only Memory = Nur-LeseSpeicher), ein Flash-Speicher, ein HDD (Hard Disc Drive = Festplattenlaufwerk) oder dergleichen.
  • Die Kommunikationseinrichtung 904 ist eine elektronische Schaltung, die einen Datenkommunikationsprozess ausführt.
  • Die Kommunikationseinrichtung 904 ist beispielsweise ein Kommunikations-Chip oder eine NIC (Network Interface Card = Netzwerkschnittstellenkarte).
  • Die Hilfsspeichereinrichtung 903 speichert Programme, die Funktionen einer ersten Unterteilungseinheit 501, einer Block-Kandidaten-Bestimmungseinheit 502, einer Schema-Auswahleinheit 503 und einer zweiten Unterteilungseinheit 504 realisieren, die später beschrieben werden.
  • Diese Programme werden von der Hilfsspeichereinrichtung 903 in die Hauptspeichereinrichtung 902 geladen. Dann führt der Prozessor 901 diese Programme aus und betreibt die erste Unterteilungseinheit 501, die Block-Kandidaten-Bestimmungseinheit 502, die Schema-Auswahleinheit 503 und die zweite Unterteilungseinheit 504.
  • 5 zeigt schematisch einen Zustand, in dem der Prozessor 901 die Programme ausführt, die die Funktionen der ersten Unterteilungseinheit 501, der Block-Kandidaten-Bestimmungseinheit 502, der Schema-Auswahleinheit 503 und der zweiten Unterteilungseinheit 504 realisieren.
  • Ein OS (Operating System = Betriebssystem) ist ebenfalls in der Hilfsspeichereinrichtung 903 gespeichert.
  • Dann wird zumindest ein Teil des OS durch den Prozessor 901 ausgeführt.
  • Während der Ausführung zumindest des Teils des OS führt der Prozessor 901 die Programme aus, die die Funktionen der ersten Unterteilungseinheit 501, der Block-Kandidaten-Bestimmungseinheit 502, der Schema-Auswahleinheit 503 und der zweiten Unterteilungseinheit 504 realisieren.
  • Durch den Prozessor 901, der das OS ausführt, werden Aufgabenverwaltung, Speicherverwaltung, Dateiverwaltung, Kommunikationssteuerung und dergleichen durchgeführt.
  • Ferner wird zumindest eines von Informationen, Daten, einem Signalwert und einem variablen Wert, angebend ein Verarbeitungsergebnis der ersten Unterteilungseinheit 501, der Block-Kandidaten-Bestimmungseinheit 502, der Schema-Auswahleinheit 503 und der zweiten Unterteilungseinheit 504, in zumindest einer von der Hauptspeichereinrichtung 902, der Hilfsspeichereinrichtung 903 und einem Register und einem Cache-Speicher in dem Prozessor 901 gespeichert.
  • Die Programme, die die Funktionen der ersten Unterteilungseinheit 501, der Block-Kandidaten-Bestimmungseinheit 502, der Schema-Auswahleinheit 503 und der zweiten Unterteilungseinheit 504 realisieren, können in einem tragbaren Aufzeichnungsmedium wie einer Magnetplatte, einer flexiblen Platte, einer optischen Platte, einer Compact Disk, einer Blu-ray (eingetragenes Warenzeichen) Platte, einer DVD oder dergleichen gespeichert sein. Dann kann das tragbare Aufzeichnungsmedium, auf dem die Programme gespeichert sind, die die Funktionen der ersten Unterteilungseinheit 501, der Block-Kandidaten-Bestimmungseinheit 502, der Schema-Auswahleinheit 503 und der zweiten Unterteilungseinheit 504 realisieren, kommerziell vertrieben sein.
  • Ferner kann „Einheit“ der ersten Unterteilungseinheit 501, der Block-Kandidaten-Bestimmungseinheit 502, der Schema-Auswahleinheit 503 und der zweiten Unterteilungseinheit 504 als „Schaltung“ oder „Schritt“ oder „Vorgang“ oder „Prozess“ gelesen werden.
  • Außerdem kann die Programmcode-Zuweisungsvorrichtung 500 durch eine Verarbeitungsschaltung realisiert sein. Die Verarbeitungsschaltung ist beispielsweise eine Logik-IC (Integrated Circuit = integrierte Schaltung), eine GA (Gate Array = Gatteranordnung), eine ASIC (Application Specific Integrated Circuit = anwendungsspezifische integrierte Schaltung) oder eine FPGA (Field-Programmable Gate Array = im Feld programmierbare Gatteranordnung).
  • In diesem Fall ist jede von der ersten Unterteilungseinheit 501, der Block-Kandidaten-Bestimmungseinheit 502, der Schema-Auswahleinheit 503 und der zweiten Unterteilungseinheit 504 als Teil der Verarbeitungsschaltung realisiert.
  • Es sei angemerkt, dass in der vorliegenden Beschreibung ein übergeordnetes Konzept des Prozessors und der Verarbeitungsschaltung als „Verarbeitungsschaltkreis“ bezeichnet ist.
  • Das heißt, sowohl der Prozessor als auch die Verarbeitungsschaltung sind ein konkretes Beispiel für den „Verarbeitungsschaltkreis“.
  • 6 zeigt ein Beispiel für eine funktionale Konfiguration der Programmcode-Zuweisungsvorrichtung 500.
  • Die erste Unterteilungseinheit 501 unterteilt den Programmcode 102 in eine Vielzahl von Block-Kandidaten, während einem Teil von Prozessen in dem Programmcode 102 erlaubt wird, in zwei oder mehr Block-Kandidaten zu koexistieren.
  • Es sei angemerkt, dass ein durch die erste Unterteilungseinheit 501 durchgeführter Prozess mit einem ersten Unterteilungsprozess gleichbedeutend ist.
  • Die Block-Kandidaten-Bestimmungseinheit 502 bestimmt, ob oder ob nicht der Teil der Prozesse in dem Programmcode 102 in den zwei oder mehr Block-Kandidaten unter der Vielzahl von Block-Kandidaten koexistiert. Der Teil der Prozesse in dem Programmcode 102, der in den zwei oder mehr Block-Kandidaten koexistiert, wird als ein Koexistenzprozess bezeichnet.
  • Außerdem bestimmt die Block-Kandidaten-Bestimmungseinheit 502, ob oder ob nicht der Programmcode 102 einen Last-Variationsprozess enthält, der ein Prozess ist, dessen Ausführungszeit in Abhängigkeit von einer Bedingung variiert. Konkret handelt es sich bei dem Last-Variationsprozess um einen Prozess (aufgeteilte-Ausführung-Prozess), der in dem dynamischen Ausführungsabschnitt 114 beschrieben ist.
  • Es sei angemerkt, dass ein Prozess, der durch die Block-Kandidaten-Bestimmungseinheit 502 durchgeführt wird, gleichbedeutend ist mit einem Block-Kandidaten-Bestimmungsprozess.
  • Die Schema-Auswahleinheit 503 wählt ein paralleles Ausführungsschema oder ein geteiltes Ausführungsschema aus, wenn der Teil der Prozesse in dem Programmcode 102 in den zwei oder mehr Block-Kandidaten koexistiert.
  • Das parallele Ausführungsschema ist ein Schema, das zwei oder mehr Computer, die die gleiche Anzahl wie die zwei oder mehr Block-Kandidaten haben, veranlasst, den Koexistenzprozess, der der Teil der Prozesse in dem Programmcode 102 ist, der in den zwei oder mehr Block-Kandidaten koexistiert, parallel auszuführen.
  • Das geteilte Ausführungsschema ist ein Schema, das einen Computer unter den zwei oder mehr Computern veranlasst, den Koexistenzprozess auszuführen, und den anderen Computer unter den zwei oder mehr Computer veranlasst, ein Ausführungsergebnis des einen Computers zu teilen.
  • Ferner wählt die Schema-Auswahleinheit 503 eines von einem parallelen Ausführungsschema oder dem aufgeteilten Ausführungsschema aus, wenn der Last-Variationsprozess in dem Programmcode 102 enthalten ist.
  • Das einzelne Ausführungsschema ist ein Schema, das den einen Computer unter der Vielzahl von Computern veranlasst, den Last-Variationsprozess auszuführen.
  • Das aufgeteilte Ausführungsschema ist ein Schema, das die Vielzahl von Computern veranlasst, den Last-Variationsprozess mit einer Aufteilung unter der Vielzahl von Computern auszuführen.
  • Ein Prozess, der durch die Schema-Auswahleinheit 503 durchgeführt wird, ist gleichbedeutend mit einem Schema-Auswahlprozess.
  • Die zweite Unterteilungseinheit 504 unterteilt den Programmcode 102 in eine Vielzahl von Blöcken auf Grundlage der Vielzahl von Block-Kandidaten und des Schemas, das durch die Schema-Auswahleinheit 503 ausgewählt wurde. Dann gibt die zweite Unterteilungseinheit 504 jeden durch die Teilung erhaltenen Block als Programmcode (A) 112 und den Programmcode (B) 122 aus.
  • Ferner erzeugt die zweite Unterteilungseinheit 504 die Anweisungsausführungssteuerungseinheit 116 und die Anweisungsausführungssteuerungsinformationen 117 und gibt die erzeugte Anweisungsausführungssteuerungseinheit 116 und die Anweisungsausführungssteuerungsinformationen 117 aus.
  • *** Beschreibung der Betriebsweise ***
  • 7 ist ein Flussdiagramm, das eine Übersicht eines Betriebs der Programmcode-Zuweisungsvorrichtung 500 darstellt.
  • Die Übersicht über die Betriebsweise der Programmcode-Zuweisungsvorrichtung 500 wird anhand von 7 beschrieben.
  • In Schritt S51 unterteilt die erste Unterteilungseinheit 501 den Programmcode 102 in die Vielzahl von Block-Kandidaten.
  • Durch Bezugnehmen auf die Computerinformationen 401 erkennt die erste Unterteilungseinheit 501, dass der Computer (A) 110 und der Computer (B) 120 in dem Steuerungssystem gemäß der vorliegenden Ausführungsform vorhanden sind. Aus diesem Grund unterteilt die erste Unterteilungseinheit 501 in der vorliegenden Ausführungsform den Programmcode 102 in zwei Block-Kandidaten.
  • Zudem analysiert die erste Unterteilungseinheit 501 den Programmcode 102 und spezifiziert eine Vielzahl von Prozessen, die den Programmcode 102 bilden. Ferner spezifiziert die erste Unterteilungseinheit 501 eine Ausführungsreihenfolge der Prozesse, die den Programmcode 102 bilden. Dann unterteilt die erste Unterteilungseinheit 501 den Programmcode 102 auf Grundlage der Ausführungsreihenfolge in die zwei Block-Kandidaten. Es sei angemerkt, dass, wenn eine Vielzahl von Mustern vorhanden sind, von denen jedes den Programmcode 102 in die zwei Block-Kandidaten aufteilt, wählt die erste Unterteilungseinheit 501 ein Muster mit der kürzesten Ausführungszeit des Programmcodes 102 aus der Vielzahl von Mustern aus. Dann teilt die erste Unterteilungseinheit 501 den Programmcode 102 gemäß dem ausgewählten Muster in die zwei Block-Kandidaten auf.
  • Es sei angemerkt, dass die erste Unterteilungseinheit 501 den Programmcode 102 nicht tatsächlich in die zwei Block-Kandidaten aufteilen muss, sondern dass es ausreicht, wenn der Programmcode 102 in die zwei Block-Kandidaten logisch aufgeteilt wird.
  • Als nächstes bestimmt die Block-Kandidaten-Bestimmungseinheit 502 in Schritt S52, ob oder ob nicht der Koexistenzprozess in dem Programmcode 102 enthalten ist. Ferner bestimmt die Block-Kandidaten-Bestimmungseinheit 502, ob oder ob nicht der Last-Variationsprozess in dem Programmcode 102 vorhanden ist.
  • Als nächstes wählt die Schema-Auswahleinheit 503 in Schritt S53 das Schema aus.
  • Wenn in Schritt S52 bestimmt wird, dass der Koexistenzprozess in dem Programmcode 102 vorhanden ist, wählt die Schema-Auswahleinheit 503 eines von dem parallelen Ausführungsschema und dem geteilten Ausführungsschema als ein Unterteilungsschema des Programmcodes 102 aus. Genauer gesagt, vergleicht die Schema-Auswahleinheit 503 eine Ausführungszeit, die benötigt wird, wenn der Programmcode 102 in dem parallelen Ausführungsschema ausgeführt wird, mit einer Ausführungszeit, die benötigt wird, wenn der Programmcode 102 in dem geteilten Ausführungsschema ausgeführt wird. Dann wählt die Schema-Auswahleinheit 503 ein Schema mit kürzerer Ausführungszeit zwischen dem parallelen Ausführungsschema und dem geteilten Ausführungsschema aus.
  • Wenn in Schritt S52 bestimmt wird, dass der Last-Variationsprozess in dem Programmcode 102 vorhanden ist, wählt die Schema-Auswahleinheit 503 eines von dem einzelnen Ausführungsschema und dem geteilten Ausführungsschema als das Unterteilungsschema des Programmcodes 102 aus. Genauer gesagt vergleicht die Schema-Auswahleinheit 503 für jede Bedingung eine Ausführungszeit, die benötigt wird, wenn der Programmcode 102 in dem einzigen Ausführungsschema ausgeführt wird, mit der Ausführungszeit, die benötigt wird, wenn der Programmcode 102 in dem aufgeteilten Ausführungsschema ausgeführt wird. Dann wählt die Schema-Auswahleinheit 503 für jede Bedingung ein Schema mit kürzerer Ausführungszeit zwischen dem einzelnem Ausführungsschema und dem aufgeteilten Ausführungsschema aus.
  • Als nächstes unterteilt die zweite Unterteilungseinheit 504 den Programmcode 102 in Schritt S54 in die zwei Blöcke auf.
  • Genauer gesagt, wenn das parallele Ausführungsschema durch die Schema-Auswahleinheit 503 in Schritt S53 ausgewählt wird, unterteilt die zweite Unterteilungseinheit 504 den Programmcode 102 in die zwei Blöcke auf Grundlage der zwei Block-Kandidaten, so dass der Koexistenzprozess durch den Computer (A) 110 und den Computer (B) 120 parallel ausgeführt wird.
  • Wenn das geteilte Ausführungsschema durch die Schema-Auswahleinheit 503 in Schritt S53 ausgewählt wird, unterteilt die zweite Unterteilungseinheit 504 den Programmcode 102 in die zwei Blöcke auf Grundlage der zwei Block-Kandidaten, so dass der Koexistenzprozess nur durch den Computer (A) 110 oder den Computer (B) 120 ausgeführt wird.
  • Wenn das einzelne Ausführungsschema durch die Schema-Auswahleinheit 503 in Schritt S53 ausgewählt wird, unterteilt die zweite Unterteilungseinheit 504 den Programmcode 102 in die zwei Blöcke auf Grundlage der zwei Block-Kandidaten, so dass der Last-Variationsprozess nur durch den Computer (A) 110 oder den Computer (B) 120 ausgeführt wird.
  • Wenn das aufgeteilte Ausführungsschema durch die Schema-Auswahleinheit 503 in Schritt S53 ausgewählt wird, unterteilt die zweite Unterteilungseinheit 504 den Programmcode 102 in die zwei Blöcke auf Grundlage der zwei Block-Kandidaten, so dass der Last-Variationsprozess zwischen dem Computer (A) 110 und dem Computer (B) 120 aufgeteilt und durch diese ausgeführt wird. Ferner erzeugt die zweite Unterteilungseinheit 504 die Anweisungsausführungssteuerungsinformationen 117 und die Anweisungsausführungssteuerungsinformationen 127.
  • Dann gibt die zweite Unterteilungseinheit 504 die zwei Blöcke als den Programmcode (A) 112 und den Programmcode (B) 122 aus und gibt auch die Anweisungsausführungssteuerungsinformationen 117 und die Anweisungsausführungssteuerungsinformationen 127 aus.
  • 8 zeigt ein Beispiel für Programmausführungsreihenfolge-Informationen 403 gemäß der vorliegenden Ausführungsform. In den Programmausführungsreihenfolge-Informationen 403 werden die in dem Programmcode 102 enthaltenen Prozesse und die Ausführungsreihenfolge der Prozesse in einem Datenflussgraphen-(DFG)-Format angegeben. Die erste Unterteilungseinheit 501 kann eine in 8 dargestellte Konfiguration durch Analysieren des Programmcodes 102 erkennen.
  • Die erste Unterteilungseinheit 501 kann den Programmcode 102 in die zwei Block-Kandidaten logisch unterteilen, indem die in 8 dargestellte Konfiguration in zwei Abschnitte unterteilt wird.
  • In 8 stellen „A“ bis „R“ die Prozesse dar, die zur Erzeugung der Steuersignale für die Steuerungssubjekteinrichtung (A) 300 und die Steuerungssubjekteinrichtung (B) 3012 erforderlich sind.
  • Die erste Unterteilungseinheit 501 unterteilt die Anweisungsmenge (Verarbeitungsmenge) jedes Prozesses in dem Programmcode 102 durch die in den Computerinformationen 401 angegebene Verarbeitungsfähigkeit des Computers (A) 110 und die Verarbeitungsfähigkeit des Computers (B) 120. Auf diese Weise kann die erste Unterteilungseinheit 501 die Ausführungszeit jedes Prozesses durch den Computer (A) 110 und die Ausführungszeit jedes Prozesses durch den Computer (B) 120 erhalten. Es sei angemerkt, dass hier zur Vereinfachung der Beschreibungen davon ausgegangen wird, dass die Ausführungszeit aller Prozesse auf dem Computer (A) 110 und dem Computer (B) 120 gleich ist und einheitlich 1T beträgt.
  • Ein Betriebsbeispiel der ersten Unterteilungseinheit 501 wird unter Bezugnahme auf 8 und 14 beschrieben.
  • 14 ist ein Flussdiagramm, das Einzelheiten des in 4 dargestellten Schritts S51 illustriert.
  • In Schritt S511 analysiert die erste Unterteilungseinheit 501 den Programmcode 102 und extrahiert die in dem Programmcode 102 enthaltenen Prozesse. Außerdem spezifiziert die erste Unterteilungseinheit 501 die Ausführungsreihenfolge der Prozesse.
  • Als ein Ergebnis von Schritt S511 werden die in 8 beispielhaft dargestellten Programmausführungsreihenfolge-Informationen 403 erhalten.
  • Als Nächstes spezifiziert die erste Unterteilungseinheit 501 in Schritt S512 den in 8 dargestellten Prozess, der zur Erzeugung von Ausgabe 0 bis Ausgabe 3 notwendig ist. In einem Beispiel in 8 sind die für die Erzeugung der Ausgabe 0 erforderlichen Prozesse (A, B, E, F, I, J, N). Weitere Prozesse, die für die Erzeugung der Ausgabe 1 erforderlich sind, sind (B, C, D, F, G, H, K, O). Die für die Erzeugung der Ausgabe 2 erforderlichen Prozesse sind (D, H, L, P). Außerdem sind Prozesse, die für die Erzeugung der Ausgabe 3 erforderlich sind, (D, H, M, R).
  • Als ein Ergebnis von Schritt S512 werden Ausgabe-Beziehung-Prozess-Information 404 erhalten.
  • Die Ausgabe-Beziehung-Prozess-Informationen 404 geben eine Gruppe aus der Ausgabe und den Prozessen an, die für die Erzeugung der Ausgabe erforderlich sind.
  • Als nächstes unterteilt in Schritt S513 die erste Unterteilungseinheit 501 den Programmcode 102 in die Block-Kandidaten.
  • In der vorliegenden Ausführungsform unterteilt die erste Unterteilungseinheit 501 den Programmcode 102 in die zwei Block-Kandidaten.
  • Das heißt, die erste Unterteilungseinheit 501 weist die für die Erzeugung der Ausgabe 0 erforderlichen Prozesse einem von dem Computer (A) 110 und dem Computer (B) 120 zu. Außerdem weist die erste Unterteilungseinheit 501 die für die Erzeugung der Ausgabe 1 erforderlichen Prozesse einem von dem Computer (A) 110 und dem Computer (B) 120 zu. Außerdem weist die erste Unterteilungseinheit 501 die für die Erzeugung der Ausgabe 2 erforderlichen Prozesse einem von dem Computer (A) 110 und dem Computer (B) 120 zu. Außerdem weist die erste Unterteilungseinheit 501 die für die Erzeugung der Ausgabe 3 erforderlichen Prozesse einem von dem Computer (A) 110 und dem Computer (B) 120 zu.
  • Zudem, wenn wie in Schritt S514 beschrieben, eine Vielzahl von Mustern vorhanden sind, von denen jedes den Programmcode 102 in die Block-Kandidaten unterteilt, wählt die erste Unterteilungseinheit 501 ein Muster mit der kürzesten Ausführungszeit (Abtastzeit) des Programmcodes 102 aus der Vielzahl von Mustern aus.
  • Die erste Unterteilungseinheit 501 kann die Ausführungszeit (Abtastzeit) jedes Prozesses in dem Programmcode 102 durch Bezugnehmen auf die Computerinformationen 401 erhalten. Es sei angemerkt, dass in der vorliegenden Ausführungsform, wie oben beschrieben, zur Vereinfachung der Beschreibungen angenommen wird, dass die Ausführungszeit jedes Prozesses einheitlich 1T beträgt.
  • Wenn das Muster mit der kürzesten Ausführungszeit (Abtastzeit) gefunden ist, erzeugt die erste Unterteilungseinheit 501 Block-Kandidateninformationen 405, die die Block-Kandidaten in dem Muster angeben. Dann gibt die erste Unterteilungseinheit 501 die Block-Kandidateninformation 405 an die Block-Kandidaten-Bestimmungseinheit 502 aus.
  • Es sei angemerkt, dass die erste Unterteilungseinheit 501 ein Muster auswählen kann, dessen Ausführungszeit (Abtastzeit) gleich oder kürzer als ein Schwellenwert ist, anstatt das Muster mit der kürzesten Ausführungszeit (Abtastzeit) auszuwählen.
  • In dem Beispiel in 8 gibt es 2 ^ 4 = 16 Kombinationen für die Zuweisung von Prozessen (4 Muster), die für die Erzeugung der Ausgabe 0 bis zur Ausgabe 3 erforderlich sind, an den Computer (A) 110 und den Computer (B) 120.
  • In 9 ist das Muster mit der kürzesten Ausführungszeit unter den 16 Mustern dargestellt. 9 zeigt also ein Beispiel für die Block-Kandidateninformationen 405.
  • In einem Beispiel in 9 führt der Computer (A) 110 Prozesse (A, B, E, F, I, J, N und D, H, M, R) aus. Außerdem führt der Computer (B) 120 die Prozesse (B, C, D, F, G, H, K, L, O, P) aus.
  • In dem Beispiel in 9 beträgt die Ausführungszeit des Computers (A) 110 11T. Andererseits beträgt die Ausführungszeit des Computers (B) 120 10T. Die Abtastzeit wird auf eine längere Zeit zwischen der Ausführungszeit des Computers (A) 110 und der Ausführungszeit des Computers (B) 120 eingestellt. Aus diesem Grund beträgt im Beispiel in 9 die Ausführungszeit (= Abtastzeit) des gesamten Programmcodes 102 11T.
  • Als nächstes werden Betriebsbeispiele der Block-Kandidaten-Bestimmungseinheit 502 und der Schema-Auswahleinheit 503 unter Bezugnahme auf die 15 und 16 beschrieben.
  • 15 und 16 sind Flussdiagramme, die Einzelheiten der in 4 dargestellten Schritte S52 und S53 veranschaulichen. Die Schritte S52X sind die Einzelheiten von Schritt S52. Die Schritte S53X sind die Einzelheiten von Schritt S53.
  • Wenn die Block-Kandidaten-Bestimmungseinheit 502 die Block-Kandidaten-Informationen 405 erwirbt, analysiert die Block-Kandidaten-Bestimmungseinheit 502 die Block-Kandidaten-Informationen 405 und prüft in Schritt S521, Vorhandensein oder Nicht-Vorhandensein des Koexistenzprozesses.
  • Wenn der Koexistenzprozess vorhanden ist (JA in Schritt S522), geht der Prozess weiter zu Schritt S530. Es sei angemerkt, dass in diesem Fall die Block-Kandidaten-Bestimmungseinheit 502 die Schema-Auswahleinheit 503 über den Koexistenzprozess benachrichtigt.
  • Wenn hingegen der Koexistenzprozess nicht vorhanden ist (NEIN in Schritt S522), wird der Prozess mit Schritt S523 in 16 fortgesetzt.
  • In Schritt S530 berechnet die Schema-Auswahleinheit 503 die Ausführungszeit für jedes Schema.
  • Das heißt, die Schema-Auswahleinheit 503 berechnet die Ausführungszeit des parallelen Ausführungsschemas und die Ausführungszeit des geteilten Ausführungsschemas.
  • In Schritt S531 bestimmt die Schema-Auswahleinheit 503 dann, ob oder ob nicht die Ausführungszeit des parallelen Ausführungsschemas länger ist als die Ausführungszeit des geteilten Ausführungsschemas.
  • Wenn die Ausführungszeit des parallelen Ausführungsschemas länger ist als die Ausführungszeit des geteilten Ausführungsschemas (JA in Schritt S531), das heißt, wenn die Ausführungszeit des geteilten Ausführungsschemas gleich oder kürzer ist als die Ausführungszeit des parallelen Ausführungsschemas, wählt die Schema-Auswahleinheit 503 in Schritt S532 das geteilte Ausführungsschema aus.
  • Wenn andererseits die Ausführungszeit des parallelen Ausführungsschemas gleich oder kürzer ist als die Ausführungszeit des geteilten Ausführungsschemas (NEIN in Schritt S531), setzt die Schema-Auswahleinheit 503 in Schritt S533 ein Häkchen bei dem Koexistenzprozess, auf den sich gerade konzentriert wird. Der Koexistenzprozess mit gesetztem Häkchen unterliegt nicht dem Folgeschritt S521.
  • In Schritt S534 aktualisiert die Schema-Auswahleinheit 503 die Block-Kandidateninformationen 405 gemäß dem geteilten Ausführungsschema.
  • Ein Prozess von Schritt S521 und Prozesse nach Schritt S521 werden wiederholt, bis ein Prozess von Schritt S530 und Prozesse nach Schritt S530 für alle Koexistenzprozesse durchgeführt werden.
  • In dem Beispiel in 9 koexistieren der Prozess (B), der Prozess (F), der Prozess (D) und der Prozess (H) in dem Block-Kandidaten des Computers (A) 110 und dem Block-Kandidaten des Computers (B) 120 und sind die Koexistenzprozesse.
  • Ein Ergebnis des Prozesses (B) wird in dem Prozess (F) und dem Prozess (E) (ausgeführt durch den Computer (A) 110) genutzt.
  • Ein Ergebnis des Prozesses (F) wird in dem Prozess (J) (ausgeführt durch den Computer (A) 110) und in dem Prozess (K) (ausgeführt durch den Computer (B) 120) genutzt.
  • Ein Ergebnis des Prozesses (D) wird in dem Prozess (H) genutzt.
  • Außerdem wird ein Ergebnis des Prozesses (H) in dem Prozess (M) (ausgeführt durch den Computer (A) 110) sowie in dem Prozess (K) und in dem Prozess (L) (beide ausgeführt durch den Computer (B) 120) genutzt.
  • Da das Ergebnis des Prozesses (B) in dem Prozess (F) genutzt wird, ist es wünschenswert, dass der Prozess (B) und der Prozess (F) durch den gleichen Computer extrahiert werden.
  • Hier wird zum Beispiel als das geteilte Ausführungsschema angenommen, dass der Prozess (B) und der Prozess (F) nur durch den Computer (B) 120 ausgeführt werden und der Computer (A) 110 das Ergebnis des Prozesses (F) teilt. In diesem Fall muss der Computer (A) 110 die Prozesse, die 2T benötigen, nicht ausführen. Daher kann die Ausführungszeit des Computers (A) 110 kürzer als 11T werden.
  • Wie oben beschrieben, muss das Teilen der Informationen zwischen den Computern jedoch über den geteilten Speicher 201 erfolgen. Die Verwendung des geteilten Speichers 201 verursacht einen Overhead. Daher ist es notwendig, den Overhead diesbezüglich zu berücksichtigen, ob oder ob nicht der Prozess (B) und der Prozess (F) dem Computer (B) 120 zugewiesen sind.
  • In der vorliegenden Ausführungsform ist der Overhead eine Zugriffszeit von dem Computer (A) 110 und dem Computer (B) 120 auf den geteilten Speicher 201. Die Zugriffszeit auf den geteilten Speicher 201 hängt von der Menge der zu teilenden Daten ab. Es wird angenommen, dass der Overhead eine Funktion (O (x)) einer Datenmenge x eines Prozesses X ist. Das heißt, dass der Overhead, der beim Teilen des Ergebnisses des Prozesses (F) unter Verwendung des geteilten Speichers 201 entsteht, O (f) ist.
  • Je nachdem, ob oder ob nicht eine Längere zwischen der Zeit, die für die Prozesse (A, E, I, J, N und D, H, M, R und O (f)) des Computers (A) 110 benötigt wird und der Zeit, die für die Prozesse (B, C, D, F, G, H, K, L, O, P) des Computers (B) 120 benötigt wird, länger ist als die Abtastzeit (11T), wenn die Teilung nicht berücksichtigt wird (wenn der geteilte Speicher 201 nicht genutzt wird), ist es möglich, zu bestimmen, ob oder ob nicht der Prozess (B) und der Prozess (F) nur durch den Computer (B) 120 ausgeführt werden. Das heißt, wenn die Längere zwischen der Zeit, die für die Prozesse (A, E, I, J, N und D, H, M, R und O (f)) des Computers (A) 110 benötigt wird, und der Zeit, die für die Prozesse (B, C, D, F, G, H, K, L, O, P) des Computers (B) 120 benötigt wird, kürzer ist als die Abtastzeit (11T), wenn die Teilung nicht berücksichtigt wird (wenn der geteilte Speicher 201 nicht genutzt wird), kann die Abtastzeit verkürzt werden. Daher ist es in diesem Fall wünschenswert, dass nur der Computer (B) 120 den Prozess (B) und den Prozess (F) (geteiltes Ausführungsschema) ausführt. Falls die Längere zwischen der Zeit, die für die Prozesse (A, E, I, J, N und D, H, M, R und O (f)) des Computers (A) 110 benötigt wird, und der Zeit, die für die Prozesse (B, C, D, F, G, H, K, L, O, P) des Computers (B) 120 benötigt wird, gleich oder länger ist als die Abtastzeit (11T), wenn die Teilung nicht berücksichtigt wird (wenn der geteilte Speicher 201 nicht genutzt wird), ändert sich die Abtastzeit nicht oder die Abtastzeit erhöht sich. Daher ist es wünschenswert, dass sowohl der Computer (A) 110 als auch der Computer (B) 120 den Prozess (B) und den Prozess (F) ausführt (paralleles Ausführungsschema).
  • Um die Beschreibungen zu vereinfachen, wird hier angenommen, dass O (f) = 1T ist.
  • Wenn der Prozess (B) und der Prozess (F) nur durch den Computer (B) 120 ausgeführt werden und das Ausführungsergebnis des Prozesses (F) unter Verwendung des geteilten Speichers 201 geteilt wird, beträgt die für die Ausführung aller Prozesse des Computers (A) 110 erforderliche Zeit 10T. Daher ist die Ausführungszeit des Computers (A) 110, wenn der Computer (A) 110 den Prozess (B) und den Prozess (F) nicht ausführt, kürzer als die Abtast-Zeit (11T), wenn der Computer (A) 110 den Prozess (B) und den Prozess (F) ausführt. In diesem Fall kann bestimmt werden, dass es besser ist, den Prozess (B) und den Prozess (F) nur durch den Computer (B) 120 auszuführen.
  • In ähnlicher Weise werden auch der Prozess (D) und der Prozess (H) betrachtet.
  • Wenn nur der Computer (A) 110 den Prozess (D) und den Prozess (H) ausführt, beträgt die Ausführungszeit des Computers (A) 110 10T und die Ausführungszeit des Computers (B) 120 beträgt 9T.
  • Wenn nur der Computer (B) 120 den Prozess (D) und den Prozess (H) ausführt, beträgt die Ausführungszeit des Computers (A) 110 9T und die Ausführungszeit des Computers (B) 120 beträgt 10T. Da die längere Ausführungszeit in beiden Fällen 10T beträgt, sind auch beide Abtastzeiten 10T. Daher kann entweder ein Fall gewählt werden, in dem nur der Computer (A) 110 den Prozess (D) und den Prozess (H) ausführt, oder ein Fall, in dem nur der Computer (B) 120 den Prozess (D) und den Prozess (H) ausführt.
  • 10 zeigt als ein Beispiel ein Beispiel für Block-Kandidaten, die eingesetzt werden, wenn der Prozess (B) und der Prozess (F) nur durch den Computer (B) 120 ausgeführt werden und der Prozess (D) und der Prozess (H) nur durch den Computer (A) 110 ausgeführt werden.
  • Als Nächstes wird ein Prozess aus Schritt S523 und Prozesse nach Schritt S523 in 16 beschrieben.
  • In Schritt S523 prüft die Block-Kandidaten-Bestimmungseinheit 502 unter Bezugnahme auf die Block-Kandidaten-Informationen 405, Vorhandensein oder Nicht-Vorhandensein des Last-Variationsprozesses.
  • Falls es den Last-Variationsprozess gibt (JA in Schritt S524), fährt der Prozess mit Schritt S535 fort. Es sei angemerkt, dass in diesem Fall die Block-Kandidaten-Bestimmungseinheit 502 die Schema-Auswahleinheit 503 über den Last-Variationsprozess benachrichtigt.
  • Falls andererseits der Last-Variationsprozess nicht vorhanden ist (NEIN in Schritt S524), geht der Prozess zu Schritt S541 in 17 über.
  • In Schritt S535 berechnet die Schema-Auswahleinheit 503 die Ausführungszeit für jedes Schema.
  • Das heißt, die Schema-Auswahleinheit 503 berechnet die Ausführungszeit des einzelnen Ausführungsschemas und die Ausführungszeit des aufgeteilten Ausführungsschemas.
  • Dann, in Schritt S536, bestimmt die Schema-Auswahleinheit 503, ob oder ob nicht die Ausführungszeit des einzelnen Ausführungsschemas länger ist als die Ausführungszeit des aufgeteilten Ausführungsschemas.
  • Wenn die Ausführungszeit des einzelnen Ausführungsschemas länger ist als die Ausführungszeit des aufgeteilten Ausführungsschemas (JA in Schritt S536), das heißt, wenn die Ausführungszeit des aufgeteilten Ausführungsschemas gleich oder kürzer ist als die Ausführungszeit des einzelnen Ausführungsschemas, wählt die Schema-Auswahleinheit 503 in Schritt S537 das aufgeteilte Ausführungsschema aus.
  • Wenn andererseits die Ausführungszeit des einzelnen Ausführungsschemas gleich oder kürzer ist als die Ausführungszeit des aufgeteilten Ausführungsschemas (NEIN in Schritt S536), setzt die Schema-Auswahleinheit 503 in Schritt S538 ein Häkchen bei dem Last-Variationsprozess, auf den sich gerade konzentriert wird. Der Last-Variationsprozess mit dem gesetzten Häkchen unterliegt nicht dem Folgeschritt S523.
  • In Schritt S539 aktualisiert die Schema-Auswahleinheit 503 die Block-Kandidateninformationen 405 gemäß dem aufgeteilten Ausführungsschema.
  • In diesem Fall teilt die Schema-Auswahleinheit 503 der zweiten Unterteilungseinheit 504 mit, dass das aufgeteilte Ausführungsschema ausgewählt ist, und benachrichtigt die zweite Unterteilungseinheit 504 über den Last-Variationsprozess, für den das aufgeteilte Ausführungsschema ausgewählt ist.
  • Der Prozess von Schritt S523 und die Prozesse nach Schritt S523 werden wiederholt, bis der Prozess von Schritt S535 und die Prozesse nach Schritt S535 für alle Last-Variationsprozesse durchgeführt sind.
  • 11 zeigt ein Beispiel für den Programmcode 102, in dem der Last-Variationsprozess vorhanden ist.
  • In 11 ist der Prozess (H) der Last-Variationsprozess.
  • In einem Beispiel in 11 wird davon ausgegangen, dass sich die Bearbeitungsmenge des Prozesses (H) in Abhängigkeit von dem Ergebnis des Prozesses (D) ändert. Konkreter ausgedrückt, wenn das Ergebnis des Prozesses (D) ein Kriterium α erfüllt, das heißt, wenn eine Bedingung erfüllt ist, dass das Ergebnis des Prozesses (D) das Kriterium α erfüllt, wird angenommen, dass sich die Ausführungszeit des Prozesses (H) auf 2T ändert. Wenn hingegen das Ergebnis des Prozesses (D) das Kriterium α nicht erfüllt, das heißt, wenn die Bedingung, dass das Ergebnis des Prozesses (D) das Kriterium α erfüllt, nicht erfüllt ist, wird angenommen, dass die Ausführungszeit des Prozesses (H) immer noch 1T beträgt.
  • In einem solchen Fall bestimmt die Schema-Auswahleinheit 503, ob der Prozess (H) zwischen dem Computer (A) 110 und dem Computer (B) 120 aufgeteilt ist (Auswahl des aufgeteilten Ausführungsschemas), oder ob der Prozess (H) durch den Computer (A) 110 allein ausgeführt wird (Auswahl des einzelnen Ausführungsschemas).
  • Die Ausführungszeit des Computers (A) 110 und die Ausführungszeit des Computers (B) 120, wenn der Prozess (H) nur durch den Computer (A) 110 ausgeführt wird (einzelnes Ausführungsschema), sind wie folgt.
    • (1) Wenn das Ergebnis des Prozesses (D) das Kriterium α erfüllt Ausführungszeit des Computers (A) 110 = Prozesse (A, E, I, J, N, O (f)) + Prozesse (D, 2*H, M, R) = 6T + 5T = 11T Ausführungszeit des Computers (B) 120 = Prozesse (B, C, F, G, K, L, O, P + O (h)) = 9T
    • (2) Wenn das Ergebnis des Prozesses (D) das Kriterium α nicht erfüllt Ausführungszeit des Computers (A) 110 = Prozesse (A, E, I, J, N, O (f)) + Prozesse (D, H, M, R) = 6T + 4T = 10T Ausführungszeit des Computers (B) 120 = Prozesse (B, C, F, G, K, L, O, P + O (h)) = 9T
  • In einem Fall, in dem der Prozess (H) dem Computer (A) 110 und dem Computer (B) 120 zugewiesen ist, in dem das Ergebnis des Prozesses (D) das Kriterium α erfüllt und in dem der Computer (A) 110 und der Computer (B) 120 den Prozess (H) jeweils für 1T ausführen (aufgeteiltes Ausführungsschema), wenn die Ausführungszeit zunimmt, sind die Ausführungszeit des Computers (A) 110 und die Ausführungszeit des Computers (B) 120 wie folgt.
    • (1) Wenn das Ergebnis des Prozesses (D) das Kriterium α erfüllt Ausführungszeit des Computers (A) 110 == Prozesse (A, E, I, J, N, O (f)) + Prozesse (D, H, M, R) = 6T + 4T = 10T Ausführungszeit des Computers (B) 120 = Prozesse (B, C, F, G, K, L, O, P + H) = 9T
    • (2) Wenn das Ergebnis des Prozesses (D) das Kriterium α nicht erfüllt Ausführungszeit des Computers (A) 110 = Prozesse (A, E, I, J, N, O (f)) + Prozesse (D, H, M, R) = 6T + 4T = 10T Ausführungszeit des Computers (B) 120 = Prozesse (B, C, F, G, K, L, O, P + H) = 9T
  • Im obigen Beispiel ist die Ausführungszeit (10T) des Computers (A) 110 im aufgeteilten Ausführungsschema, die benötigt wird, wenn das Ergebnis des Prozesses (D) das Kriterium α erfüllt, kürzer als die Ausführungszeit (11T) des Computers (A) 110 in dem einzelnem Ausführungsschema, die benötigt wird, wenn das Ergebnis des Prozesses (D) das Kriterium α erfüllt. Da im obigen Beispiel die Abtastzeit verkürzt werden kann, wenn das aufgeteilte Ausführungsschema ausgewählt wird, wählt die Schema-Auswahleinheit 503 das aufgeteilte Ausführungsschema aus.
  • Ein Beispiel für die Block-Kandidateninformation 405, die bei der Auswahl des aufgeteilten Ausführungsschemas zu nutzen ist, ist in 12 dargestellt.
  • Als Nächstes werden ein Prozess aus Schritt S541 und Prozesse nach Schritt S541 in 17 beschrieben.
  • In 17 sind Einzelheiten des Schritts S54 in 4 dargestellt.
  • In Schritt S541 unterteilt die zweite Unterteilungseinheit 504 den Programmcode 102 in Blöcke gemäß der Block-Kandidateninformation 405.
  • Im nächsten Schritt S542 bestimmt die zweite Unterteilungseinheit 504, ob oder ob nicht das aufgeteilte Ausführungsschema durch die Schema-Auswahleinheit 503 ausgewählt wurde.
  • Wenn das aufgeteilte Ausführungsschema nicht ausgewählt ist (NEIN in Schritt S542), gibt die zweite Unterteilungseinheit 504 in Schritt S543 den Programmcode (A) 112 und den Programmcode (B) 122 aus, die durch die Teilung erhalten wurden.
  • Andererseits, wenn das aufgeteilte Ausführungsschema ausgewählt ist (JA in Schritt S542), erzeugt die zweite Unterteilungseinheit 504 die Anweisungsausführungssteuerungsinformationen 117 und die Anweisungsausführungssteuerungsinformationen 127 in Schritt S545.
  • In einem in 12 dargestellten Beispiel erzeugt die zweite Unterteilungseinheit 504 die Anweisungsausführungssteuerungsinformationen 117 und die Anweisungsausführungssteuerungsinformationen 127, die beide anzeigen, dass der Prozess (H) zwischen dem Computer (A) 110 und dem Computer (B) 120 aufgeteilt wird, wenn die Bedingung, dass das Ergebnis des Prozesses (D) das Kriterium α erfüllt, erfüllt ist.
  • Zum Beispiel beschreiben die Anweisungsausführungssteuerungsinformationen 117 den Prozess (H) als einen dynamischen Ausführungsabschnitt. Darüber hinaus beschreiben die Anweisungsausführungssteuerungsinformationen 117 die Bedingung, dass das Ergebnis des Prozesses (D) das Kriterium α erfüllt, als Ausführungsbedingung. Ferner beschreiben die Anweisungsausführungssteuerungsinformationen 117 die Ausführung eines ersten Halbabschnitts des Prozesses (H) durch den Computer (A) 110 als Operation, die durchzuführen ist, wenn die Ausführungsbedingung erfüllt ist. Darüber hinaus beschreiben die Anweisungsausführungssteuerungsinformationen 117 die Ausführung des gesamten Prozesses (H) durch den Computer (A) 110 als Operation, die durchzuführen ist, wenn die Ausführungsbedingung nicht erfüllt ist.
  • Zum Beispiel beschreiben die Anweisungsausführungssteuerungsinformationen 127 den Prozess (H) als den dynamischen Ausführungsabschnitt. Darüber hinaus beschreiben die Anweisungsausführungssteuerungsinformationen 127 die Bedingung, dass das Ergebnis des Prozesses (D) das Kriterium α erfüllt, als Ausführungsbedingung. Des Weiteren beschreiben die Anweisungsausführungssteuerungsinformationen 127 die Ausführung eines letzten Halbabschnitts des Prozesses (H) durch den Computer (B) 120 als Operation, die durchzuführen ist, wenn die Ausführungsbedingung erfüllt ist. Darüber hinaus beschreiben die Anweisungsausführungssteuerungsinformationen 127 Nicht-Vorhandensein einer Ausführung des Prozesses (H), als Operation, die durchzuführen ist, wenn die Ausführungsbedingung nicht erfüllt ist.
  • Dann gibt die zweite Unterteilungseinheit 504 in Schritt S545 den Programmcode (A) 112, den Programmcode (B) 122, die Anweisungsausführungssteuerinformationen 117 und die Anweisungsausführungssteuerinformationen 127 aus.
  • 13 zeigt ein Beispiel, in dem ein Zuweisungsergebnis des Programmcodes in 12 in dem festen Ausführungsabschnitt 113, dem dynamischen Ausführungsabschnitt 114, dem festen Ausführungsabschnitt 123 und dem dynamischen Ausführungsabschnitt 124 in 3 beschrieben ist.
  • Das heißt, die Prozesse (A, E, I, J, N, D, M, R) werden in dem festen Ausführungsabschnitt 113 beschrieben, und der Prozess (H) ist in dem dynamischen Ausführungsabschnitt 114 beschrieben. Andererseits werden die Prozesse (B, C, F, G, K, L, O, P) in dem festen Ausführungsabschnitt 123 beschrieben, und der Prozess (H) wird in dem dynamischen Ausführungsabschnitt 124 beschrieben.
  • Als nächstes wird ein Betriebsbeispiel des Computers (A) 110 und des Computers (B) 120 unter Bezugnahme auf 18 beschrieben.
  • Im Folgenden wird das Betriebsbeispiel als der Betrieb des Computers (A) 110 beschrieben, die folgenden Beschreibungen gelten aber auch für den Computer (B) 120.
  • Zunächst legt die Anweisungsausführungssteuerungseinheit 116 in Schritt S61 einen als nächstes auszuführenden Prozess fest. Insbesondere legt die Anweisungsausführungssteuerungseinheit 116 den als nächstes auszuführenden Prozess auf Grundlage eines in einem Programmzähler angegebenen Wertes fest.
  • Als Nächstes bestimmt die Anweisungsausführungssteuerungseinheit 116 in Schritt S62, ob es sich oder ob es sich nicht bei dem als Nächstes auszuführenden Prozess um den festen Ausführungsabschnitt 113 handelt.
  • Konkret bestimmt die Anweisungsausführungssteuerungseinheit 116, ob oder ob nicht der als nächstes auszuführende Prozess mit dem Prozess zusammenpasst, der in den Anweisungsausführungssteuerungsinformationen 117 als der dynamische Ausführungsabschnitt beschrieben ist. Wenn der als nächstes auszuführende Prozess nicht mit dem Prozess zusammenpasst, der in den Anweisungsausführungssteuerungsinformationen 117 als der dynamische Ausführungsabschnitt beschrieben ist, bestimmt die Anweisungsausführungssteuerungseinheit 116, dass der als nächstes auszuführende Prozess der feste Ausführungsabschnitt 113 ist.
  • Wenn es sich bei dem als nächstes auszuführenden Prozess um den festen Ausführungsabschnitt 113 handelt (JA in Schritt S62), geht der Prozess zu Schritt S63 über.
  • Handelt es sich bei dem als nächstes auszuführenden Prozess hingegen nicht um den festen Ausführungsabschnitt 113 (NEIN in Schritt S62), geht der Prozess zu Schritt S64 über.
  • In Schritt S63 führt die Anweisungsausführungssteuerungseinheit 116 den nächsten Prozess aus, der der feste Ausführungsabschnitt 113 ist.
  • In Schritt S64 bezieht sich die Anweisungsausführungssteuerungseinheit 116 auf die Ausführungsbedingung in den Anweisungsausführungssteuerungsinformationen 117.
  • In Schritt S65 bestimmt die Anweisungsausführungssteuereinheit 116 dann, ob oder ob nicht die Ausführungsbedingung erfüllt ist.
  • Wenn die Ausführungsbedingung erfüllt ist (JA in Schritt S65), fährt der Prozess mit Schritt S66 fort.
  • Wenn hingegen die Ausführungsbedingung nicht erfüllt ist (NEIN in Schritt S65), geht der Prozess zu Schritt S67 über.
  • In Schritt S66 führt die Anweisungsausführungssteuerungseinheit 116 die Operation aus, die anwendbar ist, wenn die Ausführungsbedingung erfüllt ist. Im obigen Beispiel führt die Anweisungsausführungssteuerungseinheit 116 den ersten Halbabschnitt des Prozesses (H) aus.
  • In Schritt S67 führt die Anweisungsausführungssteuerungseinheit 116 die Operation aus, die anwendbar ist, wenn die Ausführungsbedingung nicht erfüllt ist. Im obigen Beispiel führt die Anweisungsausführungssteuerungseinheit 116 einen gesamten Prozess (H) aus.
  • *** Beschreibung der Wirkung der Ausführungsform ***
  • Wie oben beschrieben, wird in der vorliegenden Ausführungsform, wenn der Koexistenzprozess vorhanden ist, das Schema mit kürzerer Ausführungszeit zwischen dem parallelen Ausführungsschema und dem geteilten Ausführungsschema ausgewählt. Ferner wird in der vorliegenden Ausführungsform, wenn der Last-Variationsprozess vorhanden ist, das Schema mit kürzerer Ausführungszeit zwischen dem einzelnen Ausführungsschema und dem aufgeteilten Ausführungsschema ausgewählt.
  • Daher ist es gemäß der vorliegenden Ausführungsform möglich, effiziente Aufteilung eines Programms mit einem geringen Overhead zu realisieren.
  • Außerdem führt in der vorliegenden Ausführungsform jeder Computer den wie oben beschrieben aufgeteilten Programmcode aus. Daher ist es möglich, eine Steuerungssubjekteinrichtung mit dem geringem Overhead effizient zu steuern.
  • Bezugszeichenliste
  • 100
    Computer,
    101
    Programmspeicher,
    102
    Programmcode,
    110
    Computer (A),
    111
    Programmspeicher,
    112
    Programmcode (A),
    113
    fester Ausführungsabschnitt,
    114
    dynamischer Ausführungsabschnitt,
    115
    Prozessor,
    116
    Anweisungsausführungssteuerungseinheit,
    117
    Anweisungsausführungssteuerungsinformationen,
    120
    Computer (B),
    121
    Programmspeicher,
    122
    Programmcode (B),
    123
    fester Ausführungsabschnitt,
    124
    dynamischer Ausführungsabschnitt,
    125
    Prozessor,
    126
    Anweisungsausführungssteuerungseinheit,
    127
    Anweisungsausführungssteuerungsinformationen,
    130
    Computer (C),
    131
    Programmspeicher,
    132
    Programmcode (C),
    200
    geteilter Bus,
    201
    geteilter Speicher,
    300
    Steuerungssubjekteinrichtung (A),
    301
    Steuerungssubjekteinrichtung (B),
    302
    Steuerungssubjekteinrichtung (C),
    401
    Computerinformationen,
    402
    geteilter-Speicher-Zugriffsfähigkeitsinformationen,
    403
    Programmausführungsreihenfolge-Informationen,
    404
    Ausgabe-Beziehung-Prozess-Informationen,
    405
    Block-Kandidaten-Informationen,
    500
    Programmcode-Zuweisungsvorrichtung,
    501
    erste Unterteilungseinheit,
    502
    Block-Kandidaten-Bestimmungseinheit,
    503
    Schema-Auswahleinheit,
    504
    zweite Unterteilungseinheit,
    901
    Prozessor,
    902
    Hauptspeichereinrichtung,
    903
    Hilfsspeichereinrichtung,
    904
    Kommunikationseinrichtung.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • WO 2017/141332 [0005]
    • JP 2010079355 A [0005]

Claims (10)

  1. Informationsverarbeitungsvorrichtung, umfassend: eine erste Unterteilungseinheit, um ein Programm in eine Vielzahl von Block-Kandidaten zu unterteilen, während einem Teil von Prozessen in dem Programm erlaubt wird, in zwei oder mehr Block-Kandidaten zu koexistieren; eine Block-Kandidaten-Bestimmungseinheit, um zu bestimmen, ob oder ob nicht der Teil der Prozesse in dem Programm in den zwei oder mehr Block-Kandidaten unter der Vielzahl von Block-Kandidaten koexistiert; eine Schema-Auswahleinheit, um, wenn der Teil der Prozesse in dem Programm in den zwei oder mehr Block-Kandidaten koexistiert, eine Ausführungszeit, die benötigt wird, wenn das Programm in einem parallelen Ausführungsschema ausgeführt wird, mit einer Ausführungszeit, die benötigt wird, wenn das Programm in einem geteilten Ausführungsschema ausgeführt wird, zu vergleichen, und ein Schema mit einer kürzeren Ausführungszeit zwischen dem parallelen Ausführungsschema und dem geteilten Ausführungsschema auszuwählen, wobei das parallele Ausführungsschema zwei oder mehr Computer, die die gleiche Anzahl wie die zwei oder mehr Block-Kandidaten haben, veranlasst, einen Koexistenzprozess, der der Teil der Prozesse in dem Programm ist, der in den zwei oder mehr Block-Kandidaten koexistiert, parallel auszuführen, wobei das geteilte Ausführungsschema einen Computer unter den zwei oder mehr Computern veranlasst, den Koexistenzprozess auszuführen und den anderen Computer unter den zwei oder mehr Computern veranlasst, ein Ausführungsergebnis des einen Computers zu teilen; und eine zweite Unterteilungseinheit, um das Programm in eine Vielzahl von Blöcken auf Grundlage der Vielzahl von Block-Kandidaten und des durch die Schema-Auswahleinheit ausgewählten Schemas zu unterteilen.
  2. Informationsverarbeitungsvorrichtung nach Anspruch 1, wobei, wenn das parallele Ausführungsschema durch die Schema-Auswahleinheit ausgewählt ist, die zweite Unterteilungseinheit das Programm in eine Vielzahl von Blöcken auf Grundlage der Vielzahl von Block-Kandidaten unterteilt, so dass der Koexistenzprozess durch die zwei oder mehr Computer parallel ausgeführt wird, und wobei, wenn das geteilte Ausführungsschema durch die Schema-Auswahleinheit ausgewählt ist, die zweite Unterteilungseinheit das Programm in eine Vielzahl von Blöcken auf Grundlage der Vielzahl von Block-Kandidaten unterteilt, so dass der Koexistenzprozess nur durch den einen Computer ausgeführt wird.
  3. Informationsverarbeitungsvorrichtung nach Anspruch 1, wobei die Block-Kandidaten-Bestimmungseinheit bestimmt, ob oder ob nicht das Programm einen Last-Variationsprozess enthält, der ein Prozess ist, dessen Ausführungszeit in Abhängigkeit von einer Bedingung variiert, und wobei, wenn das Programm den Last-Variationsprozess enthält, die Schema-Auswahleinheit eines auswählt von einem einzelnen Ausführungsschema, das einen Computer unter einer Vielzahl von Computern veranlasst, den Last-Variationsprozess auszuführen, und einem aufgeteilten Ausführungsschema, das den Last-Variationsprozess unter der Vielzahl von Computern aufteilt und die Vielzahl von Computern veranlasst, den Last-Variationsprozess auszuführen.
  4. Informationsverarbeitungsvorrichtung nach Anspruch 3, wobei die Schema-Auswahleinheit für jede Bedingung eine Ausführungszeit, die benötigt wird, wenn das Programm in dem einzelnen Ausführungsschema ausgeführt wird, mit einer Ausführungszeit, die benötigt wird, wenn das Programm in dem aufgeteilten Ausführungsschema ausgeführt wird, vergleicht, und für jede Bedingung ein Schema mit kürzerer Ausführungszeit zwischen dem einzelnen Ausführungsschema und dem aufgeteilten Ausführungsschema auswählt.
  5. Informationsverarbeitungsvorrichtung nach Anspruch 4, wobei, wenn das einzelne Ausführungsschema durch die Schema-Auswahleinheit für alle Bedingungen ausgewählt ist, die zweite Unterteilungseinheit das Programm in eine Vielzahl von Blöcken auf Grundlage der Vielzahl von Block-Kandidaten aufteilt, so dass der Last-Variationsprozess nur durch den einen Computer ausgeführt wird, und wobei, wenn das aufgeteilte Ausführungsschema durch die Schema-Auswahleinheit für eine der Bedingungen ausgewählt ist, die zweite Unterteilungseinheit das Programm in eine Vielzahl von Blöcken auf Grundlage der Vielzahl von Block-Kandidaten aufteilt, so dass der Last-Variationsprozess unter der Vielzahl von Computern aufgeteilt wird und durch die Vielzahl von Computern ausgeführt wird, und Ausführungsbedingungsinformationen erzeugt, die als eine Ausführungsbedingung eine Bedingung für den Last-Variationsprozess definieren, der unter der Vielzahl von Computern aufzuteilen ist und durch die Vielzahl von Computern auszuführen ist.
  6. Informationsverarbeitungsvorrichtung nach Anspruch 1, wobei, wenn eine Vielzahl von Mustern vorhanden ist, von denen jedes das Programm in die Vielzahl von Block-Kandidaten unterteilt, die erste Unterteilungseinheit ein Muster mit der kürzesten Ausführungszeit des Programms unter der Vielzahl von Mustern auswählt und das Programm in die Vielzahl von Block-Kandidaten gemäß dem ausgewählten Muster unterteilt.
  7. Computer, der in einem Computersystem enthalten ist, umfassend: eine Bedingungsbestimmungseinheit, um sich auf Ausführungsbedingungsinformationen zu beziehen, die als eine Ausführungsbedingung eine Bedingung zum Ausführen eines aufgeteilten Ausführungsprozesses, der unter dem Computer und dem anderen Computer, der in dem Computersystem enthalten ist, aufgeteilt ist und durch den Computer und den anderen Computer ausgeführt wird, definiert, und zu bestimmen, ob oder ob nicht die Ausführungsbedingung erfüllt ist; und eine Prozessausführungseinheit, um einen Prozess auszuführen, der einzig dem Computer zugewiesen ist, und wenn durch die Bedingungsbestimmungseinheit bestimmt ist, dass die Ausführungsbedingung erfüllt ist, außerdem den aufgeteilten Ausführungsprozess mit einer Aufteilung mit dem anderen Computer auszuführen.
  8. Computersystem, umfassend eine Vielzahl von Computern, wobei jeder Computer einen Prozess ausführt, der jedem Computer ausschließlich zugewiesen ist, sich auf Ausführungsbedingungsinformationen bezieht, die als eine Ausführungsbedingung eine Bedingung zum Ausführen eines aufgeteilten Ausführungsprozesses definieren , der unter dem Computer und dem anderen Computer, der in dem Computersystem enthalten ist, aufgeteilt ist und durch den Computer und den anderen Computer ausgeführt wird, und bestimmt, ob oder ob nicht die Ausführungsbedingung erfüllt ist, und den aufgeteilten Ausführungsprozess mit einer Aufteilung mit dem anderen Computer ausführt, wenn die Ausführungsbedingung erfüllt ist.
  9. Informationsverarbeitungsverfahren, umfassend: Aufteilen, durch einen Computer, eines Programms in eine Vielzahl von Block-Kandidaten, während einem Teil von Prozessen in dem Programm erlaubt wird, in zwei oder mehr Block-Kandidaten zu koexistieren; Bestimmen, ob oder ob nicht der Teil der Prozesse in dem Programm in den zwei oder mehr Block-Kandidaten unter der Vielzahl von Block-Kandidaten koexistiert; Vergleichen, durch den Computer, wenn der Teil der Prozesse in dem Programm in den zwei oder mehr Block-Kandidaten koexistiert, einer Ausführungszeit, die benötigt wird, wenn das Programm in einem parallelen Ausführungsschema ausgeführt wird, mit einer Ausführungszeit, die benötigt wird, wenn das Programm in einem geteilten Ausführungsschema ausgeführt wird, und Auswählen eines Schemas mit kürzerer Ausführungszeit zwischen dem parallelen Ausführungsschema und dem geteilten Ausführungsschema, wobei das parallele Ausführungsschema zwei oder mehr Computer, die die gleiche Anzahl wie die zwei oder mehr Block-Kandidaten haben, veranlasst, einen Koexistenzprozess, der der Teil der Prozesse in dem Programm ist, der in den zwei oder mehr Block-Kandidaten koexistiert, parallel auszuführen, wobei das geteilte Ausführungsschema einen Computer unter den zwei oder mehr Computern veranlasst, den Koexistenzprozess auszuführen und den anderen Computer unter den zwei oder mehr Computern veranlasst, ein Ausführungsergebnis des einen Computers zu teilen; und Unterteilen, durch den Computer, des Programms in eine Vielzahl von Blöcken auf Grundlage der Vielzahl von Block-Kandidaten und des ausgewählten Schemas.
  10. Informationsverarbeitungsprogramm, das einen Computer veranlasst, auszuführen: einen ersten Unterteilungsprozess des logischen Unterteilens eines Programms in eine Vielzahl von Block-Kandidaten, während einem Teil von Prozessen in dem Programm erlaubt wird, in zwei oder mehr Block-Kandidaten zu koexistieren; einen Block-Kandidaten-Bestimmungsprozess des Bestimmens, ob oder ob nicht der Teil der Prozesse in dem Programm in den zwei oder mehr Block-Kandidaten unter der Vielzahl von Block-Kandidaten koexistiert; einen Schema-Auswahlprozess des Vergleichens, wenn der Teil der Prozesse in dem Programm in den zwei oder mehr Block-Kandidaten koexistiert, einer Ausführungszeit, die benötigt wird, wenn das Programm in einem parallelen Ausführungsschema ausgeführt wird, mit einer Ausführungszeit, die benötigt wird, wenn das Programm in einem geteilten Ausführungsschema ausgeführt wird, und Auswählen eines Schemas mit kürzerer Ausführungszeit zwischen dem parallelen Ausführungsschema und dem geteilten Ausführungsschema, wobei das parallele Ausführungsschema zwei oder mehr Computer, die die gleiche Anzahl wie die zwei oder mehr Block-Kandidaten haben, veranlasst, einen Koexistenzprozess, der der Teil der Prozesse in dem Programm ist, der in den zwei oder mehr Block-Kandidaten koexistiert, parallel auszuführen, wobei das geteilte Ausführungsschema einen Computer unter den zwei oder mehr Computern veranlasst, den Koexistenzprozess auszuführen, und den anderen Computer unter den zwei oder mehr Computern veranlasst, ein Ausführungsergebnis des einen Computers zu teilen; und einen zweiten Teilungsprozess des Unterteilens des Programms in eine Vielzahl von Blöcken auf Grundlage der Vielzahl von Block-Kandidaten und des durch den Schema-Auswahlprozess ausgewählten Schemas.
DE112019006890.3T 2019-03-22 2019-03-22 Informationsverarbeitungsvorrichtung, Computer, Computersystem, Informationsverarbeitungsverfahren und Informationsverarbeitungsprogramm Withdrawn DE112019006890T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/012217 WO2020194402A1 (ja) 2019-03-22 2019-03-22 情報処理装置、計算機、計算機システム、情報処理方法及び情報処理プログラム

Publications (1)

Publication Number Publication Date
DE112019006890T5 true DE112019006890T5 (de) 2021-11-18

Family

ID=72610694

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019006890.3T Withdrawn DE112019006890T5 (de) 2019-03-22 2019-03-22 Informationsverarbeitungsvorrichtung, Computer, Computersystem, Informationsverarbeitungsverfahren und Informationsverarbeitungsprogramm

Country Status (7)

Country Link
US (1) US20210357266A1 (de)
JP (1) JP6929485B2 (de)
KR (1) KR20210119528A (de)
CN (1) CN113614696A (de)
DE (1) DE112019006890T5 (de)
TW (1) TW202036271A (de)
WO (1) WO2020194402A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7091986B2 (ja) * 2018-10-05 2022-06-28 オムロン株式会社 制御システム、制御方法、および開発支援プログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010079355A (ja) 2008-09-24 2010-04-08 Koyo Electronics Ind Co Ltd 複数plc間の協調制御システム
WO2017141332A1 (ja) 2016-02-15 2017-08-24 三菱電機株式会社 負荷分散装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3660376B2 (ja) * 1994-08-08 2005-06-15 株式会社日立製作所 分散処理システムおよび分散処理システムにおける負荷分散方法
JP5036523B2 (ja) * 2007-12-21 2012-09-26 三菱電機株式会社 プログラム並列化装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010079355A (ja) 2008-09-24 2010-04-08 Koyo Electronics Ind Co Ltd 複数plc間の協調制御システム
WO2017141332A1 (ja) 2016-02-15 2017-08-24 三菱電機株式会社 負荷分散装置

Also Published As

Publication number Publication date
CN113614696A (zh) 2021-11-05
KR20210119528A (ko) 2021-10-05
WO2020194402A1 (ja) 2020-10-01
TW202036271A (zh) 2020-10-01
US20210357266A1 (en) 2021-11-18
JP6929485B2 (ja) 2021-09-01
JPWO2020194402A1 (ja) 2021-09-13

Similar Documents

Publication Publication Date Title
DE102018115131A1 (de) Reaktives leistungsmanagement für nichtflüchtige speicher-controller
DE102016014152A1 (de) Numerische Steuervorrichtung
DE102020115968A1 (de) Systeme und verfahren für multi-bit-speicher mit eingebetteter logik
DE3132225A1 (de) Einrichtung fuer eine schnelle hadamard-transformation
DE1197650B (de) Parallel-Addierer
DE112019005584T5 (de) Arithmetiksteuervorrichtung
DE102021127244A1 (de) Künstliche Intelligenz Optimierungsplattform
DE112019006890T5 (de) Informationsverarbeitungsvorrichtung, Computer, Computersystem, Informationsverarbeitungsverfahren und Informationsverarbeitungsprogramm
DE3852196T2 (de) Gruppenbezogenes Adressierungssystem.
DE2458286A1 (de) Datenverarbeitungssystem zum verschieben von datenfeldern mit verschiedenen strukturen
DE102016204970A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung
DE2364865A1 (de) Erweitertes speicheradressenbildungssystem eines digitalen rechnersystems
DE2403669A1 (de) Spezialcomputer
DE2500201C2 (de) Programmgesteuerte Anordnung zur Durchführung von Operationen an den Zeichen einer Zeichenfolge
DE112020007693T5 (de) Parameteranpassungsvorrichtung und parameteranpassungsverfahren
DE112019006739B4 (de) Informationsverarbeitungsvorrichtung, informationsverarbeitungsverfahren und informationsverarbeitungsprogramm
EP3001318A1 (de) Bestimmung von Signalen für Readback aus FPGA
EP4055473B1 (de) Verfahren zum aktualisieren eines steuerprogramms eines automatisierungssystems mit datenmigration eines programmzustands des steuerprogramms
DE112021001257T5 (de) Informationsverarbeitungsvorrichtung
DE102017209285A1 (de) Parallelization method, parallelization tool, and in-vehicle device
DE1801725C3 (de) Digitaler Fourier-Analysator
DE2419837A1 (de) Verfahren zur adressierung eines mikroprogramms in datenverarbeitungseinrichtungen
WO2021149202A1 (ja) 情報処理装置、情報処理方法、及び、記録媒体
DE2812982A1 (de) Mikrobefehls-speicheranordnung fuer eine datenverarbeitungsanlage
DE112020007705T5 (de) Datenverarbeitungseinrichtung, datenverarbeitungsverfahren und datenverarbeitungsprogramm

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee