JPWO2020194402A1 - 情報処理装置、情報処理方法及び情報処理プログラム - Google Patents

情報処理装置、情報処理方法及び情報処理プログラム Download PDF

Info

Publication number
JPWO2020194402A1
JPWO2020194402A1 JP2021508384A JP2021508384A JPWO2020194402A1 JP WO2020194402 A1 JPWO2020194402 A1 JP WO2020194402A1 JP 2021508384 A JP2021508384 A JP 2021508384A JP 2021508384 A JP2021508384 A JP 2021508384A JP WO2020194402 A1 JPWO2020194402 A1 JP WO2020194402A1
Authority
JP
Japan
Prior art keywords
execution
computer
program
processing
executed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2021508384A
Other languages
English (en)
Other versions
JP6929485B2 (ja
Inventor
治 遠山
治 遠山
橋本 茂
茂 橋本
洋平 塚本
洋平 塚本
直輝 伊藤
直輝 伊藤
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
Application granted granted Critical
Publication of JP6929485B2 publication Critical patent/JP6929485B2/ja
Publication of JPWO2020194402A1 publication Critical patent/JPWO2020194402A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

第1の分割部(501)は、プログラムを、一部の処理が2つ以上のブロック候補に併存することを許容して、複数のブロック候補に分割する。ブロック候補判定部(502)は、一部の処理が複数のブロック候補のうちの2つ以上のブロック候補に併存するか否かを判定する。方式選択部(503)は、一部の処理が2つ以上のブロック候補に併存する場合に、2つ以上のブロック候補に併存する一部の処理である併存処理を2つ以上の計算機に並列に実行させる並列実行方式による実行時間と、併存処理を1つの計算機に実行させて実行結果を他の計算機に共有させる共有実行方式による実行時間とを比較し、並列実行方式と共有実行方式とのうち、実行時間がより短い方式を選択する。第2の分割部(504)は、複数のブロック候補と選択された方式とに基づき、プログラムを複数のブロックに分割する。

Description

本発明は、プログラムを分割する技術に関する。
マイクロコントローラ又はLSI(Large−Scale Integration)を使用した組み込みシステムの開発において、ハードウェアでのクロック周波数の向上による実行速度の改善は限界に近づきつつある。このため、複数の計算機を並列実行することで実行速度を上げるマルチコア方式が用いられるようになってきている。
ファクトリーオートメーションに於いても同様の傾向があり、特許文献1に記載の方法及び特許文献2に記載の方法が考案されている。
特許文献1では、複数の計算機(PLC:Programmable Logic Controller)にシーケンスプログラムを分散させて実行し、各計算機の処理負荷を下げることによりプログラムの実行時間を短縮する方法が記載されている。
また、特許文献2では、複数のPLCを共有メモリ及びバスで相互接続し、制御量に余力があるPLCが、制御量に余裕が無いPLCに代わって制御を行うことで制御システム全体として制御効率を向上させる方法が記載されている。
国際公開第2017/141332号パンフレット 特開2010−079355号公報
特許文献1に記載の方法及び特許文献2に記載の方法のいずれも、計算機間で協調動作をするために、共有メモリ又はバスを介して、計算機間で情報を共有する必要がある。しかしながら、共有メモリ及びバスは一般には、計算機の外部インタフェースを経由することになるため、アクセス遅延が大きい。
また、各計算機が制御する制御対象も、計算機の入出力などの制約により制限される。
このようなことから、プログラムを複数の計算機で分散させ、複数の計算機に協調してプログラムを実行させても、情報共有のためのアクセス遅延及び入出力の制約により、オーバーヘッドが大きくなる。このようなオーバーヘッドの増大により、プログラムの分散及び複数の計算機での協調実行による高速化、処理負荷の分散及び制御効率の向上が阻害されてしまう。
本発明は、上記に鑑みたものであり、オーバーヘッドの少ない効率的なプログラムの分割を実現することを主な目的とする。
本発明に係る情報処理装置は、
プログラムを、前記プログラムの一部の処理が2つ以上のブロック候補に併存することを許容して、複数のブロック候補に分割する第1の分割部と、
前記プログラムの一部の処理が前記複数のブロック候補のうちの2つ以上のブロック候補に併存するか否かを判定するブロック候補判定部と、
前記プログラムの一部の処理が2つ以上のブロック候補に併存する場合に、2つ以上のブロック候補に併存する前記プログラムの一部の処理である併存処理を前記2つ以上のブロック候補と同数の2つ以上の計算機に並列に実行させる並列実行方式により前記プログラムを実行する場合の実行時間と、前記併存処理を前記2つ以上の計算機のうちの1つの計算機に実行させて前記1つの計算機の実行結果を前記2つ以上の計算機のうちの他の計算機に共有させる共有実行方式により前記プログラムを実行する場合の実行時間とを比較し、前記並列実行方式と前記共有実行方式とのうち、実行時間がより短い方式を選択する方式選択部と、
前記複数のブロック候補と前記方式選択部により選択された方式とに基づき、前記プログラムを複数のブロックに分割する第2の分割部とを有する。
本発明では、並列実行方式と共有実行方式とのうち、実行時間がより短い方式が選択される。このため、本発明によれば、オーバーヘッドの少ない効率的なプログラムの分割を実現することができる。
実施の形態1に係る制御システム(1台の計算機)の構成例を示す図。 実施の形態1に係る制御システム(3台の計算機)の構成例を示す図。 実施の形態1に係る計算機の機能構成例を示す図。 実施の形態1に係るプログラムコード割り当て装置を示す図。 実施の形態1に係るプログラムコード割り当て装置のハードウェア構成例を示す図。 実施の形態1に係るプログラムコード割り当て装置の機能構成例を示す図。 実施の形態1に係るプログラムコード割り当て装置の動作の概要を示すフローチャート。 実施の形態1に係るプログラム実行順序情報の例を示す図。 実施の形態1に係るプログラムコードの分割候補の例を示す図。 実施の形態1に係るプログラムコードの分割例を示す図。 実施の形態1に係るプログラムコードの分割候補の例を示す図。 実施の形態1に係るプログラムコードの分割例を示す図。 実施の形態1に係るプログラムコードの固定実行部分及び動的実行部分の例を示す図。 実施の形態1に係るプログラムコード割り当て装置の動作例を示すフローチャート。 実施の形態1に係るプログラムコード割り当て装置の動作例を示すフローチャート。 実施の形態1に係るプログラムコード割り当て装置の動作例を示すフローチャート。 実施の形態1に係るプログラムコード割り当て装置の動作例を示すフローチャート。 実施の形態1に係る計算機の動作例を示すフローチャート。
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
また、以下では、プログラムコードを単にプログラムともいう。
実施の形態1.
***前提***
先ず、本実施の形態の前提となる制御システムを説明する。
図1は、1台の計算機を用いる制御システムの構成例を示す。
図1において、計算機100は、制御対象機器(A)300、制御対象機器(B)301及び制御対象機器(C)302を制御するためのプログラムコード102を実行する。計算機100はプログラムコード102を実行することで制御対象機器(A)300、制御対象機器(B)301及び制御対象機器(C)302を制御する。
計算機100は、共有バス200を介して制御対象機器(A)300、制御対象機器(B)301及び制御対象機器(C)302と接続されている。
計算機100は、プログラムメモリ101を有する。プログラムメモリ101は、プログラムコード102を格納する。
計算機100は、共有バス200を介して、制御対象機器(A)300、制御対象機器(B)301及び制御対象機器(C)302の各々の動作状態を読み取る。また、計算機100は、制御対象機器(A)300、制御対象機器(B)301及び制御対象機器(C)302の各々の動作状態を用いて、制御対象機器(A)300、制御対象機器(B)301及び制御対象機器(C)302の各々への制御信号を生成する。また、計算機100は、制御対象機器(A)300、制御対象機器(B)301及び制御対象機器(C)302の各々への制御信号を共有バス200を介して制御対象機器(A)300、制御対象機器(B)301及び制御対象機器(C)302の各々に書き込む。これにより、計算機100は、制御対象機器(A)300、制御対象機器(B)301及び制御対象機器(C)302の各々を制御する。
次に、複数台の計算機を用いる制御システムを説明する。
図2は、3台の計算機を用いる制御システムの構成例を示す。
図2では、3台の計算機(計算機(A)110、計算機(B)120及び計算機(C)130)が共有バス200に接続されている。
図1のプログラムコード102は、プログラムコード(A)112、プログラムコード(B)122及びプログラムコード(C)132に分割されている。そして、プログラムコード(A)112が計算機(A)110のプログラムメモリ111に配置される。また、プログラムコード(B)122が計算機(B)120のプログラムメモリ121に配置される。更に、プログラムコード(C)132が計算機(C)130のプログラムメモリ131に配置される。
計算機(A)110はプログラムコード(A)112を実行して共有バス200を介して制御対象機器(A)300、制御対象機器(B)301及び制御対象機器(C)302を制御する。計算機(B)120はプログラムコード(B)122を実行して共有バス200を介して制御対象機器(A)300、制御対象機器(B)301及び制御対象機器(C)302を制御する。計算機(C)130はプログラムコード(C)132を実行して共有バス200を介して制御対象機器(A)300、制御対象機器(B)301及び制御対象機器(C)302を制御する。
制御信号を生成するために計算機(A)110、計算機(B)120及び計算機(C)130の間でデータを共有する必要がある場合は、共有メモリ201を用いて計算機(A)110、計算機(B)120及び計算機(C)130の間でデータを共有する。
一般的に、計算機内にはプログラムコードを実行するために必要な中間計算結果などを記憶しておくためのワーク領域(ワークメモリ)がある。当該ワーク領域は、キャッシュメモリ又は高速なSRAM(Static Random Access Memory)で構成され、高速アクセスができるようになっている。
一方、図2で示す共有メモリ201は、共有バス200を介してアクセスされるため、非常にアクセス速度が遅い。従って、共有メモリ201を用いた計算機間でのデータ共有は性能的な短所がある。そのため、プログラムコードの分割前よりも性能をよくするためには、分割後のプログラムコードを実行する計算機(A)110、計算機(B)120及び計算機(C)130が共有メモリ201にアクセスする機会が少なくするよう考慮する必要がある。
また、計算機としてPLCが用いられる制御システムでは、スキャンタイムと呼ばれる周期で、繰り返し同じプログラムコードが実行される。スキャンタイムが短いほど、制御対象機器に対して、きめ細かい制御指示が行える。このため、スキャンタイムが短いほど、制御システムとしては高性能である。
複数の計算機を用いて制御対象機器の制御を行う場合、スキャンタイムは最も計算が遅い計算機の実行時間に拘束される。従って、複数の計算機を用いて制御対象機器の制御を行う場合には、各計算機における分割後のプログラムコードの実行時間が計算機間で同等になるように考慮する必要がある。
***構成の説明***
図3は、本実施の形態に係る制御システムの構成例を示す。図3では、作図上の理由から、本実施の形態に係る制御システムは、計算機(A)110と計算機(B)120の2台の計算機で構成されるものとする。また、プログラムコード102は、プログラムコード(A)112とプログラムコード(B)122に分割されているものとする。また、制御対象機器としては、制御対象機器(A)300と制御対象機器(B)301が存在するものとする。
なお、図3に示す制御システムは計算機システムの例である。
計算機(A)110には、プログラムメモリ111とプロセッサ115と命令実行制御部命令実行制御部116と命令実行制御情報117が含まれる。
計算機(B)120には、プログラムメモリ121とプロセッサ125と命令実行制御部126と命令実行制御情報127が含まれる。
プログラムメモリ111は、プログラムコード(A)112を記憶する。また、プログラムメモリ121は、プログラムコード(B)122を記憶する。
プログラムコード(A)112は、固定実行部分113と動的実行部分114で構成される。
固定実行部分113は、計算機(A)110で固定的に実行される部分である。つまり、固定実行部分113は、計算機(A)110のみで実行される。
プログラムコード(B)122も固定実行部分123と動的実行部分124で構成される。固定実行部分123は計算機(B)120で固定的に実行される。つまり、固定実行部分123は計算機(B)120のみで実行される。
動的実行部分114及び動的実行部分124は、同じ処理である。動的実行部分114及び動的実行部分124は、条件により実行態様が変動する。より具体的には、条件の成否により、(1)動的実行部分114が計算機(A)110のみで実行される場合、(2)動的実行部分114が計算機(A)110で実行され、動的実行部分124が計算機(B)120で実行される場合、(3)動的実行部分124のみが計算機(B)120で実行される場合が生じ得る。命令実行制御部116及び命令実行制御情報117に従って、動的実行部分114及び動的実行部分124のいずれが実行されるかが制御される。
命令実行制御情報117には、動的実行部分114が計算機(A)110で実行され、動的実行部分124が計算機(B)120で実行されるための条件が実行条件として定義される。また、命令実行制御情報117には、実行条件が成立した場合に、動的実行部分114のどの部分を計算機(A)110が実行するかが示される。
同様に、命令実行制御情報127には、実行条件が定義され、実行条件が成立した場合に、動的実行部分124のどの部分を計算機(B)120が実行するかが示される。
計算機(A)110と計算機(B)120とで分担して実行する処理(動的実行部分114と動的実行部分124)を分担実行処理ともいう。
実行条件は、例えば、制御対象機器(A)300の状態又は制御対象機器(B)301の状態に関する条件、IF文、CASE文等の条件分岐に関する条件である。
命令実行制御情報117及び命令実行制御情報127は、実行条件ごとに、各計算機で実行する命令量(処理量)が均等となるように事前にプログラムコード102を解析して生成される。
命令実行制御情報117及び命令実行制御情報127は、各々、実行条件情報に相当する。
命令実行制御部116は、プログラムコード(A)112を実行する。
より具体的には、命令実行制御部116は、計算機(A)110に固有に割り当てられた処理である固定実行部分113を実行する。また、命令実行制御部116は、命令実行制御情報117を参照し、実行条件が成立しているか否かを判定する。そして、実行条件が成立している場合に、命令実行制御部116は、分担実行処理を計算機(B)120と分担して実行する。命令実行制御部116は、条件判定部及び処理実行部に相当する。
命令実行制御部116は、具体的には、プロセッサ115で実行されるプログラムである。
同様に、命令実行制御部126は、プログラムコード(B)122を実行する。
より具体的には、命令実行制御部126は、計算機(B)120に固有に割り当てられた処理である固定実行部分123を実行する。また、命令実行制御部126は、命令実行制御情報127を参照し、実行条件が成立しているか否かを判定する。そして、実行条件が成立している場合に、命令実行制御部126は、分担実行処理を計算機(A)110と分担して実行する。命令実行制御部126も、条件判定部及び処理実行部に相当する。
命令実行制御部126も、具体的には、プロセッサ125で実行されるプログラムである。
次に、プログラムコード割り当て装置500を説明する。プログラムコード割り当て装置500は、プログラムコード102をプログラムコード(A)112とプログラムコード(B)122に分割し、また、命令実行制御情報117及び命令実行制御情報127を生成する。
図4は、プログラムコード割り当て装置500を示す。プログラムコード割り当て装置500はコンピュータである。
また、プログラムコード割り当て装置500は、情報処理装置の例である。更に、プログラムコード割り当て装置500で行われる動作は、情報処理方法及び情報処理プログラムに相当する。
プログラムコード割り当て装置500は、プログラムコード102、計算機情報401及び共有メモリアクセス性能情報402を参照して、プログラムコード102をプログラムコード(A)112とプログラムコード(B)122に分割する。また、プログラムコード割り当て装置500は、命令実行制御部116及び命令実行制御情報117を生成する。
計算機情報401には、制御システムに含まれる計算機の数が示される。以下では、計算機情報401には、図3に示すように制御システムには計算機(A)110と計算機(B)120の2台の計算機が含まれる旨が示されているものとする。また、計算機情報401には、計算機(A)110の性能と計算機(B)120の性能とが示される。
共有メモリアクセス性能情報402には、計算機(A)110及び計算機(B)120が共有メモリ201にアクセスする際のアクセス性能(アクセス遅延)が示される。
図5は、プログラムコード割り当て装置500のハードウェア構成例を示す。
プログラムコード割り当て装置500は、ハードウェアとして、プロセッサ901、主記憶装置902、補助記憶装置903及び通信装置904を備える。
プロセッサ901は、プロセッシングを行うIC(Integrated Circuit)である。
プロセッサ901は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等である。
主記憶装置902は、RAM(Random Access Memory)である。
補助記憶装置903は、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)等である。
通信装置904は、データの通信処理を実行する電子回路である。
通信装置904は、例えば、通信チップ又はNIC(Network Interface Card)である。
補助記憶装置903には、後述する第1の分割部501、ブロック候補判定部502、方式選択部503及び第2の分割部504の機能を実現するプログラムが記憶されている。
これらプログラムは、補助記憶装置903から主記憶装置902にロードされる。そして、プロセッサ901がこれらプログラムを実行して、第1の分割部501、ブロック候補判定部502、方式選択部503及び第2の分割部504の動作を行う。
図5では、プロセッサ901が第1の分割部501、ブロック候補判定部502、方式選択部503及び第2の分割部504の機能を実現するプログラムを実行している状態を模式的に表している。
補助記憶装置903には、OS(Operating System)も記憶されている。
そして、OSの少なくとも一部がプロセッサ901により実行される。
プロセッサ901はOSの少なくとも一部を実行しながら、第1の分割部501、ブロック候補判定部502、方式選択部503及び第2の分割部504の機能を実現するプログラムを実行する。
プロセッサ901がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、第1の分割部501、ブロック候補判定部502、方式選択部503及び第2の分割部504の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、主記憶装置902、補助記憶装置903、プロセッサ901内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、第1の分割部501、ブロック候補判定部502、方式選択部503及び第2の分割部504の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、第1の分割部501、ブロック候補判定部502、方式選択部503及び第2の分割部504の機能を実現するプログラムが格納された可搬記録媒体を商業的に流通させてもよい。
また、第1の分割部501、ブロック候補判定部502、方式選択部503及び第2の分割部504の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、プログラムコード割り当て装置500は、処理回路により実現されてもよい。処理回路は、例えば、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)である。
この場合は、第1の分割部501、ブロック候補判定部502、方式選択部503及び第2の分割部504は、それぞれ処理回路の一部として実現される。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
図6は、プログラムコード割り当て装置500の機能構成例を示す。
第1の分割部501は、プログラムコード102の一部の処理が2つ以上のブロック候補に併存することを許容して、プログラムコード102を複数のブロック候補に分割する。
なお、第1の分割部501により行われる処理は、第1の分割処理に相当する。
ブロック候補判定部502は、プログラムコード102の一部の処理が複数のブロック候補のうちの2つ以上のブロック候補に併存するか否かを判定する。2つ以上のブロック候補に併存するプログラムコード102の一部の処理を併存処理という。
また、ブロック候補判定部502は、条件により実行時間が変動する処理である負荷変動処理がプログラムコード102に含まれているか否かを判定する。負荷変動処理は、具体的には、動的実行部分114に記述される処理(分担実行処理)である。
なお、ブロック候補判定部502により行われる処理は、ブロック候補判定処理に相当する。
方式選択部503は、プログラムコード102の一部の処理が2つ以上のブロック候補に併存する場合に、並列実行方式と共有実行方式のいずれかを選択する。
並列実行方式は、2つ以上のブロック候補に併存するプログラムコード102の一部の処理である併存処理を2つ以上のブロック候補と同数の2つ以上の計算機に並列に実行させる方式である。
共有実行方式は、併存処理を2つ以上の計算機のうちの1つの計算機に実行させて1つの計算機の実行結果を2つ以上の計算機のうちの他の計算機に共有させる方式である。
また、方式選択部503は、プログラムコード102に負荷変動処理が含まれている場合に、単独実行方式と分担実行方式のいずれかを選択する。
単独実行方式は、負荷変動処理を複数の計算機のうちの1つの計算機に実行させる方式である。
分担実行方式は、負荷変動処理を複数の計算機に分担して実行させる方式である。
方式選択部503により行われる処理は、方式選択処理に相当する。
第2の分割部504は、複数のブロック候補と方式選択部503により選択された方式とに基づき、プログラムコード102を複数のブロックに分割する。そして、第2の分割部504は、分割により得られた各ブロックをプログラムコード(A)112及びプログラムコード(B)122として出力する。
また、第2の分割部504は、命令実行制御部116及び命令実行制御情報117を生成し、生成した命令実行制御部116及び命令実行制御情報117を出力する。
***動作の説明***
図7は、プログラムコード割り当て装置500の動作の概要を示すフローチャートである。
図7を参照して、プログラムコード割り当て装置500の動作の概要を説明する。
ステップS51において、第1の分割部501がプログラムコード102を複数のブロック候補に分割する。
第1の分割部501は、計算機情報401を参照することで、本実施の形態に係る制御システムには、計算機(A)110と計算機(B)120が存在することを認識する。このため、本実施の形態では、第1の分割部501は、プログラムコード102を2つのブロック候補に分割する。
また、第1の分割部501は、プログラムコード102を解析し、プログラムコード102を構成する複数の処理を特定する。また、第1の分割部501は、プログラムコード102を構成する処理の実行順序を特定する。そして、第1の分割部501は、実行順序に基づき、プログラムコード102を2つのブロック候補に分割する。なお、プログラムコード102を2つのブロック候補に分割するパターンが複数存在する場合は、第1の分割部501は、複数のパターンのうち、プログラムコード102の実行時間が最も短いパターンを選択する。そして、第1の分割部501は、選択したパターンでプログラムコード102を2つのブロック候補に分割する。
なお、第1の分割部501は、実際にプログラムコード102を2つのブロック候補に分割する必要はなく、プログラムコード102を論理的に2つのブロック候補に分割すればよい。
次に、ステップS52において、ブロック候補判定部502が、プログラムコード102に併存処理が存在するか否かを判定する。また、ブロック候補判定部502は、プログラムコード102に負荷変動処理が存在するか否かを判定する。
次に、ステップS53において、方式選択部503が方式を選択する。
ステップS52においてプログラムコード102に併存処理が存在すると判定された場合に、方式選択部503は、プログラムコード102の分割方式として、並列実行方式及び共有実行方式のうちいずれかを選択する。より具体的には、方式選択部503は、並列実行方式によりプログラムコード102を実行する場合の実行時間と、共有実行方式によりプログラムコード102を実行する場合の実行時間とを比較する。そして、方式選択部503は、並列実行方式と共有実行方式とのうち、実行時間がより短い方式を選択する。
また、ステップS52においてプログラムコード102に負荷変動処理が存在すると判定された場合に、方式選択部503は、プログラムコード102の分割方式として、単独実行方式及び分担実行方式のうちのいずれかを選択する。より具体的には、方式選択部503は、条件ごとに、単独実行方式によりプログラムコード102を実行する場合の実行時間と、分担実行方式によりプログラムコード102を実行する場合の実行時間とを比較する。そして、方式選択部503は、条件ごとに、単独実行方式と分担実行方式とのうち、実行時間がより短い方式を選択する。
次に、ステップS54において、第2の分割部504がプログラムコード102を2つのブロックに分割する。
より具体的には、ステップS53において方式選択部503により並列実行方式が選択された場合は、第2の分割部504は、2つのブロック候補に基づき、併存処理が計算機(A)110と計算機(B)120で並列に実行されるようにプログラムコード102を2つのブロックに分割する。
ステップS53において方式選択部503により共有実行方式が選択された場合は、第2の分割部504は、2つのブロック候補に基づき、併存処理が計算機(A)110又は計算機(B)120のみで実行されるようにプログラムコード102を2つのブロックに分割する。
また、ステップS53において方式選択部503により単独実行方式が選択された場合は、第2の分割部504は、は、2つのブロック候補に基づき、負荷変動処理が計算機(A)110又は計算機(B)120のみで実行されるようにプログラムコード102を2つのブロックに分割する。
また、ステップS53において方式選択部503により分担実行方式が選択された場合は、第2の分割部504は、2つのブロック候補に基づき、負荷変動処理が計算機(A)110と計算機(B)120で分担して実行されるようにプログラムコード102を2つのブロックに分割する。また、第2の分割部504は、命令実行制御情報117と命令実行制御情報127を生成する。
そして、第2の分割部504は、2つのブロックをプログラムコード(A)112とプログラムコード(B)122として出力し、また、命令実行制御情報117と命令実行制御情報127を出力する。
図8は、本実施の形態に係るプログラム実行順序情報403の例を示す。プログラム実行順序情報403では、プログラムコード102に含まれる処理と、処理の実行順序がデータフローグラフ(DFG)形式で示される。第1の分割部501は、プログラムコード102を解析することで、図8に示す構成を認識することができる。
第1の分割部501は、図8に示す構成を2つの部分に分割することで、プログラムコード102を論理的に2つのブロック候補に分割することができる。
図8では、「A」から「R」は、制御対象機器(A)300及び制御対象機器(B)3012への制御信号を生成するために必要な処理を表している。
第1の分割部501は、プログラムコード102の各処理の命令量(処理量)を、計算機情報401に示される計算機(A)110の処理性能及び計算機(B)120の処理性能の各々で除算することで、計算機(A)110の各処理の実行時間及び計算機(B)120の各処理の実行時間を得ることができる。なお、ここでは、説明の簡明のために、全ての処理の実行時間は計算機(A)110と計算機(B)120で共通し、一律に1Tであるものとする。
図8及び図14を参照して、第1の分割部501の動作例を説明する。
図14は、図4に示すステップS51の詳細を示すフローチャートである。
ステップS511において、第1の分割部501は、プログラムコード102を解析し、プログラムコード102に含まれる処理を抽出する。また、第1の分割部501は、処理の実行順序を特定する。
ステップS511の結果、図8に例示するプログラム実行順序情報403が得られる。
次に、ステップS512において、第1の分割部501は、図8に示す出力0から出力3の生成に必要な処理を特定する。図8の例では、出力0の生成に必要な処理は(A、B、E、F、I、J、N)である。また、出力1の生成に必要な処理は(B、C、D、F、G、H、K、O)である。また、出力2の生成に必要な処理は(D、H、L、P)である。また、出力3の生成に必要な処理は(D、H、M、R)である。
ステップS512の結果、出力関係処理情報404が得られる。
出力関係処理情報404には、出力と、出力の生成に必要な処理との組が示される。
次に、ステップS513において、第1の分割部501は、プログラムコード102をブロック候補に分割する。
本実施の形態では、第1の分割部501は、プログラムコード102を2つのブロック候補に分割する。
つまり、第1の分割部501は、出力0の生成に必要な処理を、計算機(A)110及び計算機(B)120のどちらかに割り当てる。また、第1の分割部501は、出力1の生成に必要な処理を、計算機(A)110及び計算機(B)120のどちらかに割り当てる。また、第1の分割部501は、出力2の生成に必要な処理を、計算機(A)110及び計算機(B)120のどちらかに割り当てる。また、第1の分割部501は、出力3の生成に必要な処理を、計算機(A)110及び計算機(B)120のどちらかに割り当てる。
また、ステップS514に示すように、プログラムコード102をブロック候補に分割するパターンが複数存在する場合は、第1の分割部501は、複数のパターンのうち、プログラムコード102の実行時間(スキャンタイム)が最小のパターンを選択する。
第1の分割部501は、計算機情報401を参照することで、プログラムコード102の各処理の実行時間(スキャンタイム)を得ることができる。なお、本実施の形態では、前述のように、説明の簡明化のため、各処理の実行時間は一律に1Tと仮定している。
実行時間(スキャンタイム)が最小のパターンが判明した場合に、第1の分割部501は、当該パターンでのブロック候補が示されるブロック候補情報405を生成する。そして、第1の分割部501は、ブロック候補情報405をブロック候補判定部502に出力する。
なお、第1の分割部501は、実行時間(スキャンタイム)が最も短いパターンを選択することに代えて、実行時間(スキャンタイム)が閾値以下になるパターンを選択するようにしてもよい。
図8の例では、出力0から出力3を生成するために必要な処理(4通り)を計算機(A)110及び計算機(B)120に割り当てる組み合わせは、2^4=16通りある。
図9は、16通りのパターンのうち実行時間が最小になるパターンを示す。つまり、図9は、ブロック候補情報405の例を示す。
図9の例では、計算機(A)110が処理(A、B、E、F、I、J、NとD、H、M、R)を実行する。また、計算機(B)120が、処理(B、C、D、F、G、H、K、L、O、P)を実行する。
図9の例では、計算機(A)110の実行時間は11Tである。一方、計算機(B)120の実行時間は10Tである。スキャンタイムは計算機(A)110の実行時間と計算機(B)120の実行時間のうち大きい方に拘束される。このため、図9の例では、プログラムコード102の全体の実行時間(=スキャンタイム)は11Tである。
次に、図15及び図16を参照して、ブロック候補判定部502及び方式選択部503の動作例を説明する。
図15及び図16は、図4に示すステップS52及びステップS53の詳細を示すフローチャートである。ステップS52XがステップS52の詳細である。ステップS53XがステップS53の詳細である。
ブロック候補判定部502は、ブロック候補情報405を取得すると、ブロック候補情報405を解析し、ステップS521にて、併存処理の有無を確認する。
併存処理が存在する場合(ステップS522でYES)は、処理がステップS530に進む。なお、この場合は、ブロック候補判定部502は方式選択部503に併存処理を通知する。
一方、併存処理が存在しない場合(ステップS522でNO)は、処理が図16のステップS523に進む。
ステップS530では、方式選択部503が方式ごとに実行時間を算出する。
つまり、方式選択部503は、並列実行方式の実行時間と共有実行方式の実行時間を算出する。
そして、方式選択部503は、ステップS531において、並列実行方式の実行時間が共有実行方式の実行時間よりも大きいか否かを判定する。
並列実行方式の実行時間が共有実行方式の実行時間よりも大きい場合(ステップS531でYES)、すなわち共有実行方式の実行時間が並列実行方式の実行時間以下である場合に、ステップS532において、方式選択部503は共有実行方式を選択する。
一方、並列実行方式の実行時間が共有実行方式の実行時間以下である場合(ステップS531でNO)は、方式選択部503は、ステップS533において、現在着目している併存処理に確認済みマークをつける。確認済みマークがつけられた併存処理は後のステップS521の対象にならない。
ステップS534では、方式選択部503は、ブロック候補情報405を共有実行方式に合せて更新する。
全ての併存処理についてステップS530以降の処理が行われるまで、ステップS521以降の処理が繰り返される。
図9の例では、処理(B)と処理(F)と処理(D)と処理(H)は、計算機(A)110のブロック候補と計算機(B)120のブロック候補に併存しており、併存処理にあたる。
処理(B)の結果は、処理(F)と処理(E)(計算機(A)110で実行)で用いられる。
処理(F)の結果は、処理(J)(計算機(A)110で実行)と処理(K)(計算機(B)120で実行)で用いられる。
処理(D)の結果は、処理(H)で用いられる。
また、処理(H)の結果は、処理(M)(計算機(A)110で実行)と処理(K)と処理(L)(ともに計算機(B)120で実行)で用いられる。
処理(B)の結果は処理(F)で用いられるため、処理(B)と処理(F)は同じ計算機で実行させることが望ましい。
ここで、共有実行方式として、例えば、処理(B)と処理(F)を計算機(B)120のみで実行し、計算機(A)110は処理(F)の結果を共有することを想定する。この場合は、計算機(A)110では2T分の処理を実行しなくてよくなる。このため、計算機(A)110の実行時間は11Tよりも短くできる可能性がある。
ただし、前述したように、計算機間での情報の共有は共有メモリ201を介する必要がある。共有メモリ201を用いる場合は、オーバーヘッドが発生する。従って、処理(B)と処理(F)を計算機(B)120に割り当てるか否かについては、このオーバーヘッドを考慮する必要がある。
実施の形態では、このオーバーヘッドは、計算機(A)110及び計算機(B)120の共有メモリ201へのアクセス時間である。共有メモリ201へのアクセス時間は、共有するデータの量に依存する。このオーバーヘッドを処理Xのデータ量xの関数(O(x))とする。つまり、処理(F)の結果を共有メモリ201を用いて共有する場合のオーバーヘッドは、O(f)である。
計算機(A)110の処理(A、E、I、J、NとD、H、M、RとO(f))に要する時間と、計算機(B)120の処理(B、C、D、F、G、H、K、L、O、P)に要する時間とのうちの大きい方が、共有を考慮しない場合(共有メモリ201を用いない場合)のスキャンタイム(11T)よりも大きいか否かにより、処理(B)と処理(F)を計算機(B)120のみで実行させるか否かを判定することができる。つまり、計算機(A)110の処理(A、E、I、J、NとD、H、M、RとO(f))に要する時間と、計算機(B)120の処理(B、C、D、F、G、H、K、L、O、P)に要する時間とのうちの大きい方が、共有を考慮しない場合(共有メモリ201を用いない場合)のスキャンタイム(11T)よりも小さければ、スキャンタイムが短縮できる。従って、この場合は、計算機(B)120のみが処理(B)と処理(F)を実行すること(共有実行方式)が望ましい。計算機(A)110の処理(A、E、I、J、NとD、H、M、RとO(f))に要する時間と、計算機(B)120の処理(B、C、D、F、G、H、K、L、O、P)に要する時間とのうちの大きい方が、共有を考慮しない場合(共有メモリ201を用いない場合)のスキャンタイム(11T)以上であれば、スキャンタイムが変化しない又はスキャンタイムが増大するため、計算機(A)110及び計算機(B)120の各々が処理(B)と処理(F)を実行すること(並列実行方式)が望ましい。
説明を簡明化するために、ここでは、O(f)=1Tとする。
計算機(B)120のみで処理(B)と処理(F)を実行し、処理(F)の実行結果を共有メモリ201を用いて共有する場合は、計算機(A)110の全ての処理の実行に要する時間は10Tとなる。このため、計算機(A)110が処理(B)と処理(F)を実行しない場合の計算機(A)110の実行時間は、計算機(A)110が処理(B)と処理(F)を実行する場合のスキャンタイム(11T)よりも小さくなる。この場合は、計算機(B)120のみで処理(B)と処理(F)を実行する方がよいと判定できる。
同様に、処理(D)と処理(H)についても考慮する。
計算機(A)110のみが処理(D)と処理(H)を実行する場合の計算機(A)110の実行時間は10Tであり、計算機(B)120の実行時間は9Tである。
計算機(B)120のみが処理(D)と処理(H)を実行する場合の計算機(A)110の実行時間は9Tであり、計算機(B)120の実行時間は10Tである、どちらのケースも大きな実行時間は10Tであるため、スキャンタイムはともに10Tである。このため、計算機(A)110のみが処理(D)と処理(H)を実行する場合及び計算機(B)120のみが処理(D)と処理(H)を実行する場合のどちらを選択してもよい。
図10は、一例として、処理(B)と処理(F)は計算機(B)120のみで実行し、処理(D)と処理(H)は計算機(A)110のみで実行する場合の、ブロック候補の例を示す。
次に、図16のステップS523以降の処理を説明する。
ステップS523では、ブロック候補判定部502は、ブロック候補情報405を参照して、負荷変動処理の有無を確認する。
負荷変動処理がある場合(ステップS524でYES)は、処理がステップS535に進む。なお、この場合は、ブロック候補判定部502は方式選択部503に負荷変動処理を通知する。
一方、負荷変動処理が存在しない場合(ステップS524でNO)は、処理が図17のステップS541に進む。
ステップS535では、方式選択部503が方式ごとに実行時間を算出する。
つまり、方式選択部503は、単独実行方式の実行時間と分担実行方式の実行時間を算出する。
そして、方式選択部503は、ステップS536において、単独実行方式の実行時間が分担実行方式の実行時間よりも大きいか否かを判定する。
単独実行方式の実行時間が分担実行方式の実行時間よりも大きい場合(ステップS536でYES)、すなわち分担実行方式の実行時間が単独実行方式の実行時間以下である場合に、ステップS537において、方式選択部503は分担実行方式を選択する。
一方、単独実行方式の実行時間が分担実行方式の実行時間以下である場合(ステップS536でNO)は、方式選択部503は、ステップS538において、現在着目している負荷変動処理に確認済みマークをつける。確認済みマークがつけられた負荷変動処理は後のステップS523の対象にならない。
ステップS539では、方式選択部503は、ブロック候補情報405を分担実行方式に合せて更新する。
また、この場合は、方式選択部503は第2の分割部504に分担実行方式を選択したことと、分担実行方式を選択した負荷変動処理を通知する。
全ての負荷変動処理についてステップS535以降の処理が行われるまで、ステップS523以降の処理が繰り返される。
図11は、負荷変動処理が存在するプログラムコード102の例を示す。
図11では、処理(H)が負荷変動処理である。
図11の例では、処理(D)の結果により処理(H)の処理量が変化するものとする。具体的には、処理(D)の結果が基準αに合致する場合、つまり、処理(D)の結果が基準αに合致するという条件が成立する場合には、処理(H)の実行時間が2Tになるものとする。一方、処理(D)の結果が基準αに合致しない場合、つまり、処理(D)の結果が基準αに合致するという条件が成立しない場合には、処理(H)の実行時間は1Tのままであるものとする。
このような場合に、方式選択部503は、処理(H)を計算機(A)110と計算機(B)120で分担させるか(分担実行方式を選択するか)、計算機(A)110が単独で処理(H)を実行するか(単独実行方式を選択するか)を判定する。
処理(H)を計算機(A)110のみで実行させる場合(単独実行方式)の計算機(A)110の実行時間と計算機(B)120の実行時間は、以下の通りである。
(1)処理(D)の結果が基準αに合致する場合
計算機(A)110の実行時間
=処理(A、E、I、J、N、O(f))+処理(D、2*H、M、R)=6T+5T
=11T
計算機(B)120の実行時間
=処理(B、C、F、G、K、L、O、P+O(h))=9T
(2)処理(D)の結果が基準αに合致しない場合
計算機(A)110の実行時間
=処理(A、E、I、J、N、O(f))+処理(D、H、M、R)=6T+4T
=10T
計算機(B)120の実行時間
=処理(B、C、F、G、K、L、O、P+O(h))=9T
次に、処理(H)を計算機(A)110と計算機(B)120に割り当て、処理(D)の結果が基準αに合致し、実行時間が増大する場合には計算機(A)110と計算機(B)120に処理(H)を1Tずつ分担させる場合(分担実行方式)の計算機(A)110の実行時間と計算機(B)120の実行時間は、以下の通りである。
(1)処理(D)の結果が基準αに合致する場合
計算機(A)110の実行時間
==処理(A、E、I、J、N、O(f))+処理(D、H、M、R)=6T+4T
=10T
計算機(B)120の実行時間
=処理(B、C、F、G、K、L、O、P+H)=9T
(2)処理(D)の結果が基準αに合致しない場合
計算機(A)110の実行時間
=処理(A、E、I、J、N、O(f))+処理(D、H、M、R)=6T+4T
=10T
計算機(B)120の実行時間
=処理(B、C、F、G、K、L、O、P+H)=9T
以上の例では、処理(D)の結果が基準αに合致する場合の分担実行方式の計算機(A)110の実行時間(10T)が、処理(D)の結果が基準αに合致する場合の単独実行方式の計算機(A)110の実行時間(11T)よりも短い。このため、以上の例では、分担実行方式を選択すればスキャンタイムを短縮できるため、方式選択部503は、分担実行方式を選択する。
分担実行方式を選択した場合のブロック候補情報405の例を図12に示す。
次に、図17のステップS541以降の処理を説明する。
図17は、図4のステップS54の詳細を示す。
ステップS541において、第2の分割部504はブロック候補情報405に従って、プログラムコード102をブロックに分割する。
次に、ステップS542において、第2の分割部504は方式選択部503により分担実行方式が選択されているか否かを判定する。
分担実行方式が選択されていない場合(ステップS542でNO)は、第2の分割部504は、ステップS543において、分割により得られたプログラムコード(A)112とプログラムコード(B)122を出力する。
一方、分担実行方式が選択されている場合(ステップS542でYES)は、第2の分割部504は、ステップS545において、命令実行制御情報117及び命令実行制御情報127を生成する。
図12に示す例では、第2の分割部504は、処理(D)の結果が基準αに合致するという条件が成立する場合に処理(H)を計算機(A)110と計算機(B)120で分担する旨の命令実行制御情報117と命令実行制御情報127を生成する。
命令実行制御情報117には、例えば、動的実行部分として処理(H)が記述され、実行条件として、処理(D)の結果が基準αに合致するという条件が記述される。また、命令実行制御情報117には、実行条件が成立した場合の動作として、処理(H)の前半部分を計算機(A)110が実行することが記述され、実行条件が不成立の場合の動作として、処理(H)の全てを実行することが記述される。
命令実行制御情報127には、例えば、動的実行部分として処理(H)が記述され、実行条件として、処理(D)の結果が基準αに合致するという条件が記述される。また、命令実行制御情報127には、実行条件が成立した場合の動作として、処理(H)の後半部分を計算機(B)120が実行することが記述され、実行条件が不成立の場合の動作として処理(H)を実行しないことが記述される。
そして、第2の分割部504は、ステップS545において、プログラムコード(A)112とプログラムコード(B)122と、命令実行制御情報117と命令実行制御情報127とを出力する。
図13は、図12のプログラムコードの割り当て結果を、図3の固定実行部分113、動的実行部分114、固定実行部分123及び動的実行部分124に記述した例を示す。
つまり、固定実行部分113には、処理(A,E,I,J,N,D,M,R)が記述され、動的実行部分114には処理(H)が記述される。一方、固定実行部分123には、処理(B,C,F,G,K,L,O,P)が記述され、動的実行部分124には処理(H)が記述される。
次に、図18を参照して、計算機(A)110及び計算機(B)120の動作例を説明する。
以下では、計算機(A)110の動作として説明するが、以下の説明は計算機(B)120にも適用される。
先ず、ステップS61において、命令実行制御部116が次に実行する処理を特定する。具体的には、命令実行制御部116はプログラムカウンタに示される値により次に実行する処理を特定する。
次に、ステップS62において、命令実行制御部116は、次に実行する処理が固定実行部分113であるかを判定する。
具体的には、命令実行制御部116は、次に実行する処理が命令実行制御情報117に動的実行部分として記述されている処理と一致するか否かを判定する。次に実行する実行する処理が命令実行制御情報117に動的実行部分として記述されている処理と一致しない場合には、命令実行制御部116は、次に実行する処理が固定実行部分113であると判定する。
次に実行する処理が固定実行部分113である場合(ステップS62でYES)は、処理がステップS63に進む。
一方、次に実行する処理が固定実行部分113でない場合(ステップS62でNO)は、処理がステップS64に進む。
ステップS63では、命令実行制御部116は、固定実行部分113である次の処理を実行する。
ステップS64では、命令実行制御部116は、命令実行制御情報117の実行条件を参照する。
そして、ステップS65において、命令実行制御部116は、実行条件が成立しているか否かを判定する。
実行条件が成立している場合(ステップS65でYES)は、処理がステップS66に進む。
一方、実行条件が成立していない場合(ステップS65でNO)は、処理がステップS67に進む。
ステップS66では、命令実行制御部116は、実行条件が成立した場合の動作を行う。前述の例では、命令実行制御部116は、処理(H)の前半部分を実行する。
ステップS67では、命令実行制御部116は、実行条件が不成立の場合の動作を行う。前述の例では、命令実行制御部116は処理(H)の全体を実行する。
***実施の形態の効果の説明***
以上のように、本実施の形態では、併存処理が存在する場合に、並列実行方式と共有実行方式とのうち、実行時間がより短い方式が選択される。また、本実施の形態では、負荷変動処理が存在する場合に、単独実行方式と分担実行方式とのうち、実行時間がより短い方式が選択される。
このため、本実施の形態によれば、オーバーヘッドの少ない効率的なプログラムの分割を実現することができる。
また、本実施の形態では、以上のように分割されたプログラムコードを各計算機が実行する。このため、少ないオーバーヘッドで効率的に制御対象機器を制御することができる。
100 計算機、101 プログラムメモリ、102 プログラムコード、110 計算機(A)、111 プログラムメモリ、112 プログラムコード(A)、113 固定実行部分、114 動的実行部分、115 プロセッサ、116 命令実行制御部、117 命令実行制御情報、120 計算機(B)、121 プログラムメモリ、122 プログラムコード(B)、123 固定実行部分、124 動的実行部分、125 プロセッサ、126 命令実行制御部、127 命令実行制御情報、130 計算機(C)、131 プログラムメモリ、132 プログラムコード(C)、200 共有バス、201 共有メモリ、300 制御対象機器(A)、301 制御対象機器(B)、302 制御対象機器(C)、401 計算機情報、402 共有メモリアクセス性能情報、403 プログラム実行順序情報、404 出力関係処理情報、405 ブロック候補情報、500 プログラムコード割り当て装置、501 第1の分割部、502 ブロック候補判定部、503 方式選択部、504 第2の分割部、901 プロセッサ、902 主記憶装置、903 補助記憶装置、904 通信装置。
計算機(A)110には、プログラムメモリ111とプロセッサ115と命令実行制御部116と命令実行制御情報117が含まれる。
計算機(B)120には、プログラムメモリ121とプロセッサ125と命令実行制御部126と命令実行制御情報127が含まれる。
図8では、「A」から「R」は、制御対象機器(A)300及び制御対象機器(B)301への制御信号を生成するために必要な処理を表している。
第1の分割部501は、プログラムコード102の各処理の命令量(処理量)を、計算機情報401に示される計算機(A)110の処理性能及び計算機(B)120の処理性能の各々で除算することで、計算機(A)110の各処理の実行時間及び計算機(B)120の各処理の実行時間を得ることができる。なお、ここでは、説明の簡明のために、全ての処理の実行時間は計算機(A)110と計算機(B)120で共通し、一律に1Tであるものとする。
次に、処理(H)を計算機(A)110と計算機(B)120に割り当て、処理(D)の結果が基準αに合致し、実行時間が増大する場合には計算機(A)110と計算機(B)120に処理(H)を1Tずつ分担させる場合(分担実行方式)の計算機(A)110の実行時間と計算機(B)120の実行時間は、以下の通りである。
(1)処理(D)の結果が基準αに合致する場合
計算機(A)110の実行時間
処理(A、E、I、J、N、O(f))+処理(D、H、M、R)=6T+4T
=10T
計算機(B)120の実行時間
=処理(B、C、F、G、K、L、O、P+H)=9T
(2)処理(D)の結果が基準αに合致しない場合
計算機(A)110の実行時間
=処理(A、E、I、J、N、O(f))+処理(D、H、M、R)=6T+4T
=10T
計算機(B)120の実行時間
=処理(B、C、F、G、K、L、O、P+H)=9T
次に、ステップS62において、命令実行制御部116は、次に実行する処理が固定実行部分113であるかを判定する。
具体的には、命令実行制御部116は、次に実行する処理が命令実行制御情報117に動的実行部分として記述されている処理と一致するか否かを判定する。次に実行する処理が命令実行制御情報117に動的実行部分として記述されている処理と一致しない場合には、命令実行制御部116は、次に実行する処理が固定実行部分113であると判定する。

Claims (10)

  1. プログラムを、前記プログラムの一部の処理が2つ以上のブロック候補に併存することを許容して、複数のブロック候補に分割する第1の分割部と、
    前記プログラムの一部の処理が前記複数のブロック候補のうちの2つ以上のブロック候補に併存するか否かを判定するブロック候補判定部と、
    前記プログラムの一部の処理が2つ以上のブロック候補に併存する場合に、2つ以上のブロック候補に併存する前記プログラムの一部の処理である併存処理を前記2つ以上のブロック候補と同数の2つ以上の計算機に並列に実行させる並列実行方式により前記プログラムを実行する場合の実行時間と、前記併存処理を前記2つ以上の計算機のうちの1つの計算機に実行させて前記1つの計算機の実行結果を前記2つ以上の計算機のうちの他の計算機に共有させる共有実行方式により前記プログラムを実行する場合の実行時間とを比較し、前記並列実行方式と前記共有実行方式とのうち、実行時間がより短い方式を選択する方式選択部と、
    前記複数のブロック候補と前記方式選択部により選択された方式とに基づき、前記プログラムを複数のブロックに分割する第2の分割部とを有する情報処理装置。
  2. 前記第2の分割部は、
    前記方式選択部により前記並列実行方式が選択された場合は、前記複数のブロック候補に基づき、前記併存処理が前記2つ以上の計算機で並列に実行されるように前記プログラムを複数のブロックに分割し、
    前記方式選択部により前記共有実行方式が選択された場合は、前記複数のブロック候補に基づき、前記併存処理が前記1つの計算機のみで実行されるように前記プログラムを複数のブロックに分割する請求項1に記載の情報処理装置。
  3. 前記ブロック候補判定部は、
    条件により実行時間が変動する処理である負荷変動処理が前記プログラムに含まれているか否かを判定し、
    前記方式選択部は、
    前記プログラムに前記負荷変動処理が含まれている場合に、前記負荷変動処理を複数の計算機のうちの1つの計算機に実行させる単独実行方式と、前記負荷変動処理を前記複数の計算機に分担して実行させる分担実行方式とのうちのいずれかを選択する請求項1に記載の情報処理装置。
  4. 前記方式選択部は、
    条件ごとに、前記単独実行方式により前記プログラムを実行する場合の実行時間と、前記分担実行方式により前記プログラムを実行する場合の実行時間とを比較し、
    条件ごとに、前記単独実行方式と前記分担実行方式とのうち、実行時間がより短い方式を選択する請求項3に記載の情報処理装置。
  5. 前記第2の分割部は、
    前記方式選択部により全ての条件で前記単独実行方式が選択された場合は、前記複数のブロック候補に基づき、前記負荷変動処理が前記1つの計算機のみで実行されるように前記プログラムを複数のブロックに分割し、
    前記方式選択部によりいずれかの条件で前記分担実行方式が選択された場合は、前記複数のブロック候補に基づき、前記負荷変動処理が前記複数の計算機で分担して実行されるように前記プログラムを複数のブロックに分割し、前記負荷変動処理が前記複数の計算機で分担して実行されるための条件が実行条件として定義される実行条件情報を生成する請求項4に記載の情報処理装置。
  6. 前記第1の分割部は、
    前記プログラムを前記複数のブロック候補に分割するパターンが複数存在する場合に、複数のパターンのうち、前記プログラムの実行時間が最も短いパターンを選択し、選択したパターンで前記プログラムを前記複数のブロック候補に分割する請求項1に記載の情報処理装置。
  7. 計算機システムに含まれる計算機であって、
    前記計算機システムに含まれる他の計算機と分担して実行する分担実行処理を実行するための条件が実行条件として定義される実行条件情報を参照し、前記実行条件が成立しているか否かを判定する条件判定部と、
    前記計算機に固有に割り当てられた処理を実行するとともに、前記条件判定部により前記実行条件が成立していると判定された場合に、前記分担実行処理を前記他の計算機と分担して実行する処理実行部とを有する計算機。
  8. 複数の計算機が含まれる計算機システムであって、
    各計算機は、
    各計算機に固有に割り当てられた処理を実行し、
    前記計算機システムに含まれる他の計算機と分担して実行する分担実行処理を実行するための条件が実行条件として定義される実行条件情報を参照し、前記実行条件が成立しているか否かを判定し、
    前記実行条件が成立している場合に、前記分担実行処理を他の計算機と分担して実行する計算機システム。
  9. コンピュータが、プログラムを、前記プログラムの一部の処理が2つ以上のブロック候補に併存することを許容して、複数のブロック候補に分割し、
    前記プログラムの一部の処理が前記複数のブロック候補のうちの2つ以上のブロック候補に併存するか否かを判定し、
    前記プログラムの一部の処理が2つ以上のブロック候補に併存する場合に、前記コンピュータが、2つ以上のブロック候補に併存する前記プログラムの一部の処理である併存処理を前記2つ以上のブロック候補と同数の2つ以上の計算機に並列に実行させる並列実行方式により前記プログラムを実行する場合の実行時間と、前記併存処理を前記2つ以上の計算機のうちの1つの計算機に実行させて前記1つの計算機の実行結果を前記2つ以上の計算機のうちの他の計算機に共有させる共有実行方式により前記プログラムを実行する場合の実行時間とを比較し、前記並列実行方式と前記共有実行方式とのうち、実行時間がより短い方式を選択し、
    前記コンピュータが、前記複数のブロック候補と選択された方式とに基づき、前記プログラムを複数のブロックに分割する情報処理方法。
  10. プログラムを、前記プログラムの一部の処理が2つ以上のブロック候補に併存することを許容して、論理的に複数のブロック候補に分割する第1の分割処理と、
    前記プログラムの一部の処理が前記複数のブロック候補のうちの2つ以上のブロック候補に併存するか否かを判定するブロック候補判定処理と、
    前記プログラムの一部の処理が2つ以上のブロック候補に併存する場合に、2つ以上のブロック候補に併存する前記プログラムの一部の処理である併存処理を前記2つ以上のブロック候補と同数の2つ以上の計算機に並列に実行させる並列実行方式により前記プログラムを実行する場合の実行時間と、前記併存処理を前記2つ以上の計算機のうちの1つの計算機に実行させて前記1つの計算機の実行結果を前記2つ以上の計算機のうちの他の計算機に共有させる共有実行方式により前記プログラムを実行する場合の実行時間とを比較し、前記並列実行方式と前記共有実行方式とのうち、実行時間がより短い方式を選択するする方式選択処理と、
    前記複数のブロック候補と前記方式選択処理により選択された方式とに基づき、前記プログラムを複数のブロックに分割する第2の分割処理とをコンピュータに実行させる情報処理プログラム。
JP2021508384A 2019-03-22 2019-03-22 情報処理装置、情報処理方法及び情報処理プログラム Active JP6929485B2 (ja)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP6929485B2 JP6929485B2 (ja) 2021-09-01
JPWO2020194402A1 true JPWO2020194402A1 (ja) 2021-09-13

Family

ID=72610694

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021508384A Active JP6929485B2 (ja) 2019-03-22 2019-03-22 情報処理装置、情報処理方法及び情報処理プログラム

Country Status (7)

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

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
JPH0855091A (ja) * 1994-08-08 1996-02-27 Hitachi Ltd 分散処理システムおよび分散処理システムにおける負荷分散方法
JP2009151645A (ja) * 2007-12-21 2009-07-09 Mitsubishi Electric Corp 並列処理装置及びプログラム並列化装置

Family Cites Families (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間の協調制御システム
US20180095441A1 (en) 2016-02-15 2018-04-05 Mitsubishi Electric Corporation Load distribution device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0855091A (ja) * 1994-08-08 1996-02-27 Hitachi Ltd 分散処理システムおよび分散処理システムにおける負荷分散方法
JP2009151645A (ja) * 2007-12-21 2009-07-09 Mitsubishi Electric Corp 並列処理装置及びプログラム並列化装置

Also Published As

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

Similar Documents

Publication Publication Date Title
US10514748B2 (en) Reactive power management for non-volatile memory controllers
US11436400B2 (en) Optimization method for graph processing based on heterogeneous FPGA data streams
JP4889357B2 (ja) 試験装置、プログラムおよび試験方法
US10445131B2 (en) Core prioritization for heterogeneous on-chip networks
US11150899B2 (en) Selecting a precision level for executing a workload in an electronic device
WO2001090887A1 (fr) Procede de traitement de programme permettant un traitement haute vitesse au moyen d'un materiel a reconfiguration dynamique et programme permettant d'executer ce procede de traitement
JP6929485B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP2016212580A (ja) 半導体記憶装置、半導体記憶装置の制御方法および制御プログラム
JP2005173648A (ja) 高位合成方法及び高位合成装置
US10223260B2 (en) Compiler-generated memory mapping hints
CN102567462A (zh) 异类文件优化
JP7529022B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP7367365B2 (ja) タスク実行管理装置、タスク実行管理方法、および、タスク実行管理プログラム
KR102034660B1 (ko) 이종 시스템의 가속기 제어 방법 및 이를 수행하기 위한 이종 시스템
JP6580288B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP2019200793A (ja) 半導体システム及びその動作方法
Koch et al. Modeling and synthesis of hardware-software morphing
US20240193424A1 (en) Computer-readable recording medium storing distributed learning program, distributed learning method, and distributed learning device
US20240361940A1 (en) Storage system and storage system control method
US20240329849A1 (en) Memory access method and memory access control device
US20240281042A1 (en) Thermal control system on chip
JP6968318B1 (ja) データ処理装置、データ処理方法及びデータ処理プログラム
US20230105184A1 (en) Information processing system, information processing method, and recording medium
KR20210127339A (ko) 리프레시 주기가 다른 다수의 영역을 구비한 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
JP6317603B2 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210414

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210414

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20210414

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210621

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210713

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210810

R150 Certificate of patent or registration of utility model

Ref document number: 6929485

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150