JP6815563B1 - データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム - Google Patents

データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム Download PDF

Info

Publication number
JP6815563B1
JP6815563B1 JP2020526344A JP2020526344A JP6815563B1 JP 6815563 B1 JP6815563 B1 JP 6815563B1 JP 2020526344 A JP2020526344 A JP 2020526344A JP 2020526344 A JP2020526344 A JP 2020526344A JP 6815563 B1 JP6815563 B1 JP 6815563B1
Authority
JP
Japan
Prior art keywords
data processing
engine
execution
new
allocated
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.)
Active
Application number
JP2020526344A
Other languages
English (en)
Other versions
JPWO2021117186A1 (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 JP6815563B1 publication Critical patent/JP6815563B1/ja
Publication of JPWO2021117186A1 publication Critical patent/JPWO2021117186A1/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • 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/5038Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/5044Allocation 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 hardware capabilities
    • 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/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications

Abstract

複数のエンジンは、各々がデータ処理を実行する。エンジン選択部(102)は、複数のエンジンのうちのいずれかのエンジンが実行エンジンとしてデータ処理を実行している際に、実行エンジンが実行しているデータ処理である実行データ処理の実行を引き継ぐ引き継ぎエンジンを、複数のエンジンから選択する。エンジン実行管理部(103)は、実行エンジンに実行データ処理の実行を停止させ、引き継ぎエンジンに実行データ処理の実行を引き継がせる。

Description

本発明は、データ処理のスケジューリングに技術に関する。
データ処理のスケジューリングに関する技術として、特許文献1に記載の技術がある。
特許文献1では、データ処理を実行する複数のエンジンの中から、データ処理をデッドライン内に完了させることができるエンジンを選択する技術が開示されている。例えば、特許文献1の技術では、演算精度は低いが処理時間の短いエンジン又は演算精度は高いが処理時間が長いエンジンが選択される。
国際公開WO2018−198823号
特許文献1の技術では、データ処理の開始時に、データ処理をデッドライン内に完了させることができるエンジンが選択される。このため、特許文献1の技術では、あるデータ処理(以下、「データ処理A」という)の実行開始後に、突発イベントにより、データ処理Aよりも優先度の高い新たなデータ処理(以下、「データ処理B」という)が発生した場合には、データ処理Aをデッドライン内に完了させることができないという事態が生じる。
つまり、データ処理Aの実行開始後に優先度の高いデータ処理Bが発生すると、データ処理Bを優先して実行するためにデータ処理Aの実行が中断される。そして、データ処理Bの完了後にデータ処理Aの実行が再開する。特許文献1では、データ処理Aに適用するエンジンはデータ処理Aの開始時に固定されており、後から変更することができない。このため、特許文献1の技術では、突発イベントが発生した場合に、データ処理Aをデッドライン内に完了させることができない。
このように、特許文献1の技術では、データ処理を実行するエンジンが固定されるため、データ処理のスケジューリングを状況の変化に応じて柔軟に行うことができないという課題がある。
この発明は、このような課題を解決することを主な目的とする。より具体的には、本発明は、データ処理のスケジューリングを状況の変化に応じて柔軟に行えるようにすることを主な目的とする。
本発明に係るデータ処理実行装置は、
各々がデータ処理を実行する複数のエンジンと、
前記複数のエンジンのうちのいずれかのエンジンが実行エンジンとしてデータ処理を実行している際に、前記実行エンジンが実行しているデータ処理である実行データ処理の実行を引き継ぐ引き継ぎエンジンを、前記複数のエンジンから選択するエンジン選択部と、
前記実行エンジンに前記実行データ処理の実行を停止させ、前記引き継ぎエンジンに前記実行データ処理の実行を引き継がせる制御部とを有する。
本発明では、実行エンジンが実行データ処理を実行していても、実行データ処理の実行を引き継ぎエンジンに引き継がせることができる。このため、本発明によれば、データ処理のスケジューリングを状況の変化に応じて柔軟に行うことができる。
実施の形態1に係るデータ処理実行装置のハードウェア構成例を示す図。 実施の形態1に係るデータ処理実行装置の機能構成例を示す図。 実施の形態1に係るエンジンと演算精度とデータ処理と優先度との関係を示す図。 実施の形態1に係るエンジンリストの例を示す図。 実施の形態1に係る実行データ処理リストの例を示す図。 実施の形態1に係る実行待ちデータ処理リストの例を示す図。 実施の形態1に係るブロック関数リストとエンジン実装コードの例を示す図。 実施の形態1に係る演算結果格納メモリの構成例を示す図。 実施の形態1に係る定常状態でのデータ処理の実行スケジュールの例を示す図。 実施の形態1に係る突発イベントが発生した場合のデータ処理の実行スケジュールの例を示す図。 実施の形態1に係る突発イベントが発生した場合のデータ処理の実行スケジュールの例を示す図。 実施の形態1に係る定常状態でのデータ処理の実行スケジュールの例を示す図。 実施の形態1に係る突発イベントが発生した場合のデータ処理の実行スケジュールの例を示す図。 実施の形態1に係るデータ処理実行装置の動作の概要を示す図。 実施の形態1に係る第1の組合せ抽出処理の範囲を示す図。 実施の形態1に係る第2の組合せ抽出処理(1回目)の範囲を示す図。 実施の形態1に係る第2の組合せ抽出処理(2回目)の範囲を示す図。 実施の形態1に係るエンジン選択部の動作例を示すフローチャート。 実施の形態1に係る第1の組合せ抽出処理の詳細を示すフローチャート。 実施の形態1に係る第2の組合せ抽出処理の詳細を示すフローチャート。 実施の形態1に係るエンジン実行管理部の動作例を示すフローチャート。 実施の形態1に係るエンジン実行管理部の動作例を示すフローチャート。 実施の形態1に係るエンジン実行管理部の動作例を示すフローチャート。 実施の形態1に係るエンジン実行部の動作例を示すフローチャート。 実施の形態1に係る時刻=0での実行データ処理リスト及び実行待ちデータ処理リストの例を示す図。 実施の形態1に係る時刻=25での実行データ処理リスト及び実行待ちデータ処理リストの例を示す図。 実施の形態1に係る時刻=150での実行データ処理リスト及び実行待ちデータ処理リストの例を示す図。 実施の形態1に係る時刻=200での実行データ処理リスト及び実行待ちデータ処理リストの例を示す図。 実施の形態1に係る時刻=350での実行データ処理リスト及び実行待ちデータ処理リストの例を示す図。 実施の形態1に係る時刻=425での実行データ処理リスト及び実行待ちデータ処理リストの例を示す図。 実施の形態1に係る時刻=775での実行データ処理リスト及び実行待ちデータ処理リストの例を示す図。 実施の形態2に係るデータ処理実行装置の機能構成例を示す図。 実施の形態2に係る変換処理のタイミング例を示す図。 実施の形態2に係る変換処理部の動作の概要を示す図。 実施の形態2に係る変換処理時間リストの例を示す図。
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
実施の形態1.
***構成の説明***
図1は、本実施の形態に係るデータ処理実行装置100のハードウェア構成例を示す。
本実施の形態に係るデータ処理実行装置100は、コンピュータである。なお、データ処理実行装置100の動作手順は、データ処理実行方法に相当する。また、データ処理実行装置100の動作を実現するプログラムは、データ処理実行プログラムに相当する。
データ処理実行装置100は、データ処理を実行する。データ処理とは、デジタル信号に算術演算及び論理演算の少なくともいずれかを行ってデジタル信号の解析、加工、分類、変換等を行うデジタル信号処理である。
データ処理実行装置100は、ハードウェアとして、処理回路900、CPU(Central Processing Unit)901、RAM902、ROM903及びハードウェアアクセラレータ904を備える。
ハードウェアアクセラレータ904には、FPGA(Field−Programmable Gate Array)905、GPU(Graphics Processing Unit)906、DSP(Digital Signal Processor)907及びASIC(Application Specific Integrated Circuit)908が含まれる。
処理回路900は、CPU、FPGA、GPU、DSP及びASICのいずれかで実現される。処理回路900は、後述するエンジンを実現するFPGA905、GPU906、DSP907及びASIC908とは役割が異なるため、これらと区別するために、これらとは別の名称を用いている。処理回路900は、CPU901、FPGA905、GPU906、DSP907及びASIC908のいずれかであってもよいし、これらとは異なるCPU、FPGA、GPU、DSP及びASICのいずれかであってもよい。処理回路900は、プロセッシングサーキトリーに該当する。
以下では、処理回路900がCPU901とは異なるCPUである例を説明する。
処理回路900は、後述するデータ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105を実行する。
データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105は、プログラムにより実現される。つまり、処理回路900が、データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105の機能を実現するプログラムを実行して、後述するデータ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105の機能が達成される。
データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105の機能を実現するプログラムは、ROM903で記憶されている。データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105の機能を実現するプログラムはRAM902にロードされて、処理回路900により実行される。
また、データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、RAM902、ROM903、処理回路900内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105の機能を実現するプログラムが格納された可搬記録媒体を流通させてもよい。
また、データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104及び通信処理部105の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
CPU901、FPGA905、GPU906、DSP907、ASIC908は、それぞれ、データ処理を実行するエンジンを実現するハードウェアリソース(以下、H/Wリソースとも表記する)である。
エンジンとは、データ処理を実行するためのハードウェアリソースとソフトウェアとが統合された概念である。
例えば、CPU901がデータ処理のためのアルゴリズムが記述されたプログラムを実行することでエンジンが実現される。
エンジンの一例として、CNN(畳み込みニューラルネットワーク)が挙げられる。
図1では、エンジンを実現するハードウェアリソースとして、CPU901、FPGA905、GPU906、DSP907、ASIC908が示される。しかし、エンジンを実現するハードウェアリソースとして、これらのうちの1つ以上が存在していればよい。つまり、エンジンを実現するハードウェアリソースはCPU901のみであってもよいし、CPU901とFPGA905、GPU906とDSP907のような組合せであってもよい。
データ処理とエンジンとの関係については後述する。
データ処理実行装置100は、センサ、表示装置、アクチュエータ等の機器とネットワークで接続されていてもよい。また、データ処理実行装置100は、データ処理実行装置100と同種のデータ処理実行装置とネットワークで接続されていてもよい。
図2は、本実施の形態に係るデータ処理実行装置100の機能構成例を示す。
本実施の形態に係るデータ処理実行装置100は、データ処理登録部101、エンジン選択部102、エンジン実行管理部103、エンジン実行部104、通信処理部105、エンジン実行管理データ120、エンジンソフトウェア130及び演算結果格納メモリ140で構成される。
エンジン実行部104は、更に、CPU実行部1041、FPGA実行部1042で構成される。
エンジン実行管理データ120は、更に、実行データ処理リスト121と実行待ちデータ処理リスト122で構成される。
エンジンソフトウェア130は、更に、ブロック関数リスト131及びエンジン実装コード132で構成される。
図2に示す機能構成の詳細を説明する前に、エンジンと演算精度(以下、単に精度ともいう)とデータ処理と優先度との関係を説明する。
図3は、エンジンと演算精度とデータ処理と優先度との関係を示す。
図3の例では、5種類のデータ処理が存在することを前提としている。各データ処理には、データ処理ID(Identifier)が設けられている。データ処理IDは、データ処理を一意に識別可能な識別子である。なお、以下では、データ処理ID:1のデータ処理をデータ処理1ともいう。他のデータ処理も同様に、データ処理2、データ処理3、データ処理4、データ処理5ともいう。
また、5種類のデータ処理には、優先度が設定されている。優先度は数値で示される。数値が大きいほど優先度が高いものとする。
本実施の形態では、図3に示すように、データ処理1のデータ処理の優先度が最も高く、データ処理5のデータ処理の優先度が最も低いものとする。
本実施の形態では、データ処理実行装置100は、高優先度のデータ処理を低優先度のデータ処理よりも優先して実行する。低優先度のデータ処理の実行中に後発的に高優先度のデータ処理が発生した場合に、低優先度のデータ処理と高優先度のデータ処理データとの間でハードウェアリソースの競合があれば、データ処理実行装置100は、低優先度のデータ処理の実行を中断して、高優先度のデータ処理を当該ハードウェアリソース上で先に実行する。
図3の1A、1B、2A・・・5Cは、それぞれエンジンを表す。
1A及び1Bは、データ処理1を実行するエンジンである。
2A、2B及び2Cは、データ処理2を実行するエンジンである。
3A、3B及び3Cは、データ処理3を実行するエンジンである。
4A及び4Bは、データ処理4を実行するエンジンである。
5A、5B及び5Cは、データ処理5を実行するエンジンである。
各エンジンのアルファベット部分が精度に対応する。「A」が最も精度が高いエンジンを表し、「C」が最も精度が低いエンジンを表す。このように、本実施の形態では、同じデータ処理を実行可能な2以上のエンジンが存在し、同じデータ処理を実行可能な2以上のエンジンは、各々、精度が異なっている。
同じデータ処理を実行する2以上のエンジンが同じハードウェアリソースで実現されるとは限らない。例えば、エンジン1AはFPGA905で実現され、エンジン1BはCPU901で実現されることがある。
また、精度と処理時間とはトレードオフの関係にある。つまり、同じデータ処理を実行する場合でも、精度の高いエンジンでは処理時間が長く、精度の低いエンジンでは処理時間が短い。このため、突発イベントにより高優先度のデータ処理が新たに発生した場合に、低優先度のデータ処理のエンジンを精度の低いエンジンに切り替えて、低優先度のデータ処理の処理時間を短縮することがある。
次に、以上を前提に、図2に示すデータ処理実行装置100の機能構成の詳細を説明する。
データ処理登録部101は、データ処理命令を受け付ける。データ処理命令とは、データ処理の実行を指示する命令である。データ処理命令には、データ処理ID、優先度及びデッドラインが含まれる。
デッドラインはデータ処理の完了期限である。
データ処理登録部101は、データ処理命令をエンジン選択部102に転送する。
エンジン選択部102は、複数のエンジンの中から、データ処理命令で指示されたデータ処理を実行させるエンジンを選択する。エンジン選択部102は、エンジンリスト110を参照して、エンジンを選択する。エンジンリスト110の詳細は後述する。
なお、エンジン選択部102により選択され、データ処理を実行しているエンジンを実行エンジンともいう。また、実行エンジンが実行しているデータ処理を実行データ処理ともいう。更に、エンジン選択部102によりエンジンが選択され、エンジンが割り当てられているが未実行のデータ処理を割当て済みデータ処理ともいう。
エンジン選択部102は、実行エンジンが実行データ処理を実行している際に、新たなデータ処理が発生した場合に、実行データ処理を引き継ぐエンジンを引き継ぎエンジンとして選択する場合がある。
より具体的には、エンジン選択部102は、実行エンジンによる実行データ処理の実行では実行データ処理、新たなデータ処理及び割当て済みデータ処理の少なくともいずれかが各々のデッドラインまでに完了しない場合に、実行データ処理、新たなデータ処理及び割当て済みデータ処理を各々のデッドラインまでに完了させることができるエンジンを、引き継ぎエンジンとして選択する。例えば、エンジン選択部102は、実行エンジンよりも演算精度が低く、実行データ処理、新たなデータ処理及び割当て済みデータ処理を各々のデッドラインまでに完了させることができるエンジンを、引き継ぎエンジンとして選択する。また、このようなエンジンが2以上ある場合は、エンジン選択部102は、最も演算精度が高いエンジンを、引き継ぎエンジンとして選択する。
エンジン選択部102は、割当て済みデータ処理に割り当てられているエンジンの他のエンジンへの切替えも検討する。このため、エンジン選択部102は、割当て済みデータ処理に割り当てられているエンジンの他のエンジンへの切替えとの組合せにより、実行データ処理、新たなデータ処理及び割当て済みデータ処理を各々の完了期限までに完了させることができるエンジンを、引き継ぎエンジンとして選択する。
また、2以上の実行データ処理がある場合は、エンジン選択部102は、2以上の実行データ処理、新たなデータ処理及び割当て済みデータ処理を各々の完了期限までに完了させることができるエンジンを、引き継ぎエンジンとして選択する。
エンジン選択部102は、実行データ処理ごとに他のエンジンへの切替えを検討する。このため、エンジン選択部102は、他の実行データ処理の他のエンジンへの切替え、割当て済みデータ処理に割り当てられているエンジンの他のエンジンへの切替えとの組合せにより、実行データ処理、新たなデータ処理、割当て済みデータ処理及び他の実行データ処理を各々の完了期限までに完了させることができるエンジンを、引き継ぎエンジンとして選択する。
また、エンジン選択部102は、実行データ処理、新たなデータ処理及び割当て済みデータ処理のうち優先度が高いデータ処理ほど演算精度が高いエンジンで実行されるように、引き継ぎエンジンを選択する。
なお、エンジン選択部102で行われる処理は、エンジン選択処理に相当する。
エンジン実行管理部103は、エンジン選択部102により選択されたエンジンを実行するハードウェアリソースに実行要求を出力する。
また、エンジン実行管理部103は、実行データ処理の中断が必要な場合は中断指令を該当するハードウェアリソースに出力する。エンジン実行管理部103は、中断指令を出力することで、実行エンジンに実行データ処理の実行を停止させる。また、実行データ処理の実行を引き継ぎエンジンに引き継がせる場合は、エンジン実行管理部103は、該当するハードウェアリソースに実行要求を出力して、引き継ぎエンジンに実行データ処理の実行を引き継がせる。
更に、中断状態にあるデータ処理の再開が可能になった際に、エンジン実行管理部103は再開要求を該当するハードウェアリソースに出力する。
また、エンジン実行管理部103は、ハードウェアリソースから、完了通知及びステップ完了通知を受信する。
エンジン実行管理部103はエンジン実行部104とともに制御部に相当する。また、エンジン実行管理部103で行われる処理は制御処理に相当する。
エンジン実行部104では、ハードウェアリソースごとに実行部が設けられている。
図2では、簡明化のために、CPU実行部1041及びFPGA実行部1042のみを示している。
CPU実行部1041はCPU901内でエンジンを実行する機能である。
また、FPGA実行部1042は、FPGA905内でエンジンを実行する機能である。
また、エンジン実行部104は、引き継ぎエンジンが選択される前は、実行データ処理を実行可能なエンジンに共通に設けられている共通プログラムコード(後述するエンジン実装コード132)を変換して実行エンジン向けの個別のプログラムコードを生成する。そして、エンジン実行部104は、生成した実行エンジン向けの個別のプログラムコードを用いて実行エンジンに実行データ処理を実行させる。
一方、引き継ぎエンジンが選択された場合は、エンジン実行部104は、共通プログラムコードを変換して引き継ぎエンジン向けの個別のプログラムコードを生成する。そして、エンジン実行部104は、生成した引き継ぎエンジン向けの個別のプログラムコードを用いて引き継ぎエンジンに実行データ処理を引き継がせる。
エンジン実行部104はエンジン実行管理部103とともに制御部に相当する。また、エンジン実行部104で行われる処理は制御処理に相当する。
通信処理部105は、エンジンによるデータ処理の結果を外部に送信する。
通信処理部105は、例えば、アクチュエータ又はデータ処理実行装置100と同等のデータ処理実行装置にデータ処理の結果を送信する。
エンジン実行管理データ120には、実行データ処理リスト121と実行待ちデータ処理リスト122とが含まれる。
実行データ処理リスト121は、実行中のデータ処理が示されるリストである。
実行待ちデータ処理リスト122は、実行待ちのデータリストが示されるリストである。
実行データ処理リスト121と実行待ちデータ処理リスト122の詳細は後述する。
エンジンソフトウェア130には、ブロック関数リスト131とエンジン実装コード132とが含まれる。
エンジン実装コード132は、各エンジンを実装するためのコード(プログラム)である。エンジン実装コード132は、複数のコードブロック(以下、単にブロックともいう)で構成される。
ブロック関数リスト131には、エンジン実装コード132のブロックごとに、各ブロックの処理を実現する関数が示される。
ブロック関数リスト131及びエンジン実装コード132の詳細は後述する。
演算結果格納メモリ140は、エンジンによる演算結果を格納する。
演算結果格納メモリ140の詳細は後述する。
図4は、エンジンリスト110の例を示す。
エンジンリスト110では、データ処理IDごとに、選択可能なエンジンのエンジンIDが示される。また、エンジンIDごとに、精度、実行ハードウェアリソース、各ステップの処理時間が示される。
精度は、0〜100の数値で表現される。数値が大きいほど精度が高い。
実行ハードウェアリソースは、エンジンの実行に必要なハードウェアリソースである。
処理時間は、各ステップの実行に要する時間である。なお、「−」は該当するステップが存在しないことを意味する。ステップとは、データ処理を構成する部分データ処理である。なお、エンジンに応じてステップの実行数が変化する。例えば、データ処理3は、エンジン3Aでは、2つのステップが実行されるが、エンジン3Bでは、3つのステップが実行される。
図5は、実行データ処理リスト121の例を示す。
実行データ処理リスト121では、実行データ処理が管理される。つまり、実行データ処理リスト121では、エンジンにより実行中のデータ処理が管理される。
図5において、ハードウェアリソースIDは、ハードウェアリソースの識別子である。
ハードウェアリソース種別は、ハードウェアリソースの種別である。なお、図5では、図2に対応させて、FPGA905とCPU901のみを示している。
データ処理IDは、ハードウェアリソースで現在実行中のデータ処理の識別子である。データ処理IDの値が0であれば、当該ハードウェアリソースではデータ処理が実行されていないことを意味する。
優先度は、現在実行中のデータ処理の優先度である。データ処理が実行されていない場合は、優先度の値は0である。
エンジンIDは、データ処理を実行しているエンジンの識別子である。データ処理が実行されていない場合は、エンジンIDの値は0である。
ステップ番号は、現在実行中のステップの識別子である。データ処理が実行されていない場合は、ステップ番号の値は0である。
ステップ開始時刻は、現在実行中のステップの実行を開始した時刻である。本実施の形態では、ステップ開始時刻はカウント値(例えば、1μ秒ごとにインクリメントされるカウント値)で示される。
デッドラインは、現在実行中のデータ処理の完了期限の時刻である。デッドラインもカウント値で示される。
切替えフラグは、現在実行中のデータ処理に対するエンジンの切替え要求がある場合にTRUEになる。切替えフラグがTRUEになると、現在実行中のステップの完了後にエンジンの切替え処理が行われる。
ステップ完了通知フラグは、ステップ完了通知が発行された場合にTRUEになる。ステップ完了通知はステップの実行が完了したことをエンジン実行管理部103に通知するメッセージである。ステップ完了通知フラグがTRUEになると、エンジンの切替え処理が行われる。
中断可否フラグは、ハードウェアリソースがステップの実行途中での中断を許容するか否かを示す。ハードウェアリソースがステップの実行途中での中断を許容する場合は中断可否フラグにTRUEが示される。FPGA905ではステップの実行途中での中断は許容されないが、CPU901ではステップの実行途中での中断は許容される。ステップの実行途中での中断は、リアルタイムOS(Operating System)等のタスクのプリエンプト機能を利用して実現される。
図6は、実行待ちデータ処理リスト122の例を示す。
実行待ちデータ処理リスト122では、実行待ちのデータ処理が管理される。
図6において、ハードウェアリソースIDは、ハードウェアリソースの識別子である。
状態は、「ステップ完了待ち」と「実行可能状態」のいずれかをとる。「ステップ完了待ち」は、他のデータ処理(図6の例ではデータ処理ID2)のステップの実行完了を待っている状態である。他のデータ処理の完了後に違うエンジンに切り替える場合の状態は「ステップ完了待ち」である。「実行可能状態」は、優先度の高い他のデータ処理の実行完了を待っている状態である。
データ処理IDは、実行待ちのデータ処理の識別子である。
優先度は、実行待ちのデータ処理の優先度である。
エンジンIDは、実行待ちのデータ処理を実行する予定のエンジンの識別子である。
ステップ番号は、実行待ちのデータ処理のステップの識別子である。つまり、ステップ番号は、実行待ちのステップの識別子である。
デッドラインは、実行待ちのステップの完了期限の時刻である。デッドラインもカウント値で示される。
ステップ残処理時間は、実行待ちのステップの残りの処理時間である。ステップの実行途中に実行が中断した場合に、実行待ちのステップの残りの処理時間を得るために用いられる。ステップ残処理時間もカウント値で示される。
切替えフラグは、実行待ちのデータ処理に対するエンジンの切替え要求がある場合にTRUEになる。切替えフラグがTRUEになると、実行待ちのステップの完了後にエンジンの切替え処理が行われる。
ステップ完了通知フラグは、ステップ完了通知が発行された場合にTRUEになる。ステップ完了通知フラグがTRUEになると、エンジンの切替え処理が行われる。
図7は、ブロック関数リスト131及びエンジン実装コード132の例を示す。
エンジン実装コード132は、エンジンを実装するためのコード(プログラム)である。エンジン実装コード132は複数のコードブロックで構成される。エンジン実装コード132は、同じデータ処理を実行する2以上のエンジン(例えば、エンジン1A及びエンジン1B)に共通に設けられているプログラムコード(共通プログラムコード)である。エンジン実行管理部103は、エンジン実装コード132をエンジンごと(例えば、エンジン1Aごと、エンジン1Bごと)の個別のプログラムコードに変換する。
ブロック関数リスト131は、エンジン実装コード132の各ブロックの処理を実現する関数のリストである。
ブロック関数リスト131において、エンジンIDは、エンジンの識別子である。
ブロック番号は、エンジン実装コード132に含まれるブロックの識別子である。
関数のアドレスは、ブロックに含まれる関数のアドレスである。
図8は、演算結果格納メモリ140の例を示す。
演算結果格納メモリ140では、データ処理ごとに演算結果を格納するための専用のメモリ領域が確保されている。
データ処理を実行するエンジンが途中で切り替わっても、切替え後のエンジンが該当するデータ処理のメモリ領域にアクセスすることで、切替え前のエンジンの演算結果を利用することができる。
***動作の説明***
以下にて、本実施の形態に係るデータ処理実行装置100の動作例を説明する。
先ず、図9〜図14を参照して、高優先度のデータ処理の発生により低優先度のデータ処理のエンジンを精度の低いエンジンに切り替える処理を説明する。
図9は、データ処理2とデータ処理3の実行スケジュールを示す。
データ処理2はエンジン2Aで実行されるものとする。また、データ処理3はエンジン3Aで実行されるものとする。
データ処理2及びデータ処理3は、それぞれのデッドラインまでに完了可能である。
なお、エンジン2A、エンジン3A及び後述のエンジン1A及びエンジン2Bは、すべてCPU901により実現されるものとする。つまり、エンジン2A、エンジン3A、エンジン1A及びエンジン2Bは並列には処理されない。
図10は、データ処理2の実行中に突発イベントにより、新たなデータ処理である、高優先度のデータ処理1が発生したことを示す。データ処理1が発生した時点でデータ処理2は実行中であるため、データ処理2は実行データ処理に相当する。また、エンジン2Aは、実行エンジンに相当する。データ処理3はエンジン3Aを割り当てられているが未実行なので割当て済みデータ処理に相当する。
データ処理2は実行途中であるが、データ処理1を優先するためにデータ処理2の実行は中断する。データ処理1はエンジン1Aで実行されるものとする。データ処理1の実行が完了するとデータ処理2の実行が再開する。ここで、データ処理1が実行されたため、データ処理2の残りをエンジン2Aで実行すると、データ処理2のデッドライン内にデータ処理2が完了しない。また、データ処理3のデッドライン内にデータ処理3も完了しない。
このため、本実施の形態に係るデータ処理実行装置100は、データ処理2及びデータ処理3の少なくともいずれかのエンジンを低精度のエンジンに切り替えて処理時間を短縮する。
図11は、データ処理2のエンジンを低精度のエンジン2Bに切替え、データ処理3のエンジンを低精度のエンジン3Bに切替えた例を示す。エンジン2Bは、実行データ処理であるデータ処理2の実行をエンジン2Aから引き継ぐエンジンであり、引き継ぎエンジンに相当する。
低精度のエンジンへ切替えたため処理時間の短縮が図られ、データ処理2及びデータ処理3はそれぞれデッドライン内に完了することになった。
図12は、エンジンを実現するハードウェアとしてCPU901とFPGA905が存在する例を示す。
以下では、エンジン1Aとエンジン2AはFPGA905で動作するものとする。また、エンジン2Bとエンジン2Cとエンジン3BはCPU901で動作するものとする。
図12では、データ処理2がFPGA905上でエンジン2Aにより実行され、データ処理3がCPU901上でエンジン3Bにより実行されている。ここで、突発イベントにより新たにデータ処理1が発生したものとする。図12の例では、データ処理2及びデータ処理3が、各々、実行データ処理に相当する。データ処理1が新たなデータ処理に相当する。また、エンジン2A及びエンジン3Bは、各々、実行エンジンに相当する。
データ処理1及びデータ処理2のデッドラインはともに時刻500である。また、データ処理3のデッドラインは時刻1025である。データ処理1をデッドラインまでに完了するためには、FPGA905で動作するエンジン1Aでデータ処理1を実行することが必要である。このため、FPGA905上でデータ処理1とデータ処理2が競合する。データ処理1の方が優先度が高いので、FPGA905上でデータ処理2の実行を継続することはできない。FPGA905上でデータ処理1の実行が完了した後にFPGA905でデータ処理2の実行を再開するとデータ処理2はデッドライン内に完了しない。
このため、データ処理実行装置100は、データ処理1を実行してもデータ処理2とデータ処理3がデッドライン内に完了可能なエンジンの組合せを探索する。
例えば、図13に示すように、データ処理実行装置100は、データ処理2をエンジン2Cに実行させ、データ処理3をエンジン3Bに実行させるとデータ処理2とデータ処理3がデッドライン内に完了するものとする。本例では、エンジン2Cが引き継ぎエンジンに相当する。
この場合に、データ処理実行装置100は、FPGA905でのデータ処理2の実行を停止させ、FPGA905でエンジン1Aにデータ処理1を実行させる。CPU901ではエンジン3Bがデータ処理3を実行しているが、データ処理2の方がデータ処理3よりも優先度が高い。このため、データ処理実行装置100はCPU901でのデータ処理3の実行を停止させ、エンジン2Cにデータ処理2の実行を引き継がせる。そして、データ処理実行装置100は、データ処理2の完了後にエンジン3Bにデータ処理3の残りを実行させる。
このようにスケジューリングすることで、図8に示すように、データ処理1、データ処理2及びデータ処理3をそれぞれのデッドライン内に完了させることができる。
図14は、図12及び図13に示すスケジューリング手順をデータ処理実行装置100の構成要素の動作と関連付けて示している。
時刻=0においてデータ処理命令が発生し、データ処理2の実行が指示されると、エンジン選択部102は、データ処理2を実行させるエンジンを選択する。ここでは、エンジン選択部102は、エンジン2Aを選択する。なお、エンジン選択部102のエンジン選択アルゴリズムの詳細は後述する。そして、エンジン選択部102は、エンジン実行管理部103にエンジン2Aによるデータ処理2の実行を要求する(実行要求を出力する)。
エンジン2AはFPGA905で動作するため、エンジン実行管理部103はFPGA実行部1042にエンジン2Aによるデータ処理2の実行を要求する(実行指令を出力する)。FPGA実行部1042は、FPGA905でエンジンを実行する機能である。
時刻=25においてデータ処理命令が発生し、データ処理3の実行が指示されると、エンジン選択部102は、データ処理3を実行させるエンジンを選択する。ここでは、エンジン選択部102は、エンジン3Bを選択する。そして、エンジン選択部102は、エンジン実行管理部103にエンジン3Bによるデータ処理3の実行を要求する(実行要求を出力する)。
エンジン3BはCPU901で動作するため、エンジン実行管理部103はCPU実行部1041にエンジン3Bによるデータ処理3の実行を要求する(実行指令を出力する)。CPU実行部1041は、CPU901でエンジンを実行する機能である。
時刻=150においてデータ処理命令が発生し、データ処理1の実行が指示されると、エンジン選択部102は、データ処理1を実行させるエンジンを選択する。ここでは、エンジン選択部102は、エンジン1Aを選択する。図12及び図13を用いて説明したように、データ処理1をFPGA905で実行すると、データ処理2がデッドライン内に完了しない。
このため、エンジン選択部102は、データ処理1を実行してもデータ処理2とデータ処理3がデッドライン内に完了可能なエンジンの組合せを探索する。
データ処理2に対して選択可能なエンジンはエンジン2Bとエンジン2Cであり、データ処理3に対して選択可能なエンジンはエンジン3Bとエンジン3Cである。
先ず、エンジン選択部102は、エンジン2Bとエンジン3Bを用いた場合にデータ処理2とデータ処理3の両方がデッドライン内に完了するか否かを判定する。ここでは、データ処理2はデッドライン内に完了するがデータ処理3は完了しないものとする。
次に、エンジン選択部102は、エンジン2Bとエンジン3Cを用いた場合にデータ処理2とデータ処理3の両方がデッドライン内に完了するか否かを判定する。ここでは、データ処理2はデッドライン内に完了するがデータ処理3は完了しないものとする。
次に、エンジン選択部102は、エンジン2Cとエンジン3Bを用いた場合にデータ処理2とデータ処理3の両方がデッドライン内に完了するか否かを判定する。ここでは、データ処理2とデータ処理3の両方がデッドライン内に完了するものとする。
このため、エンジン選択部102は、データ処理2のエンジンをエンジン2Cに切替えることを決定する。
エンジン選択部102は、エンジン実行管理部103にエンジン1Aによるデータ処理1の実行を要求する(実行要求を出力する)。更に、エンジン選択部102は、エンジン実行管理部103にデータ処理2のエンジンをエンジン2Aからエンジン2Cに切替えるよう要求する(切替え要求を出力する)。
各データ処理は複数のステップで構成される。時刻=150の時点では、FPGA905においてデータ処理2のステップ2を実行中である。FPGA905はステップが完了しないとデータ処理を停止させることができない。このため、エンジン1Aによるデータ処理1の実行はデータ処理2のステップ2の完了を待つ必要がある。
FPGA実行部1042は、データ処理2のステップ2の実行が完了した際に、エンジン実行管理部103にステップ2の完了を通知する(ステップ完了通知を出力する)。
ステップ2が完了したので、エンジン実行管理部103は、FPGA実行部1042にエンジン1Aによるデータ処理1の実行を要求する(実行指令を出力する)。
また、データ処理2をエンジン2Cで実行させるために、エンジン実行管理部103は、CPU実行部1041にエンジン3Bの実行の中断を要求する(中断指令を出力する)。なお、CPU901ではステップの完了を待たずにエンジンを停止させることができる。
更に、エンジン実行管理部103は、データ処理2をステップ3からエンジン2Cで実行するようCPU実行部1041に要求する(実行指令を出力する)。
その後、エンジン2Cでのデータ処理2が完了すると、CPU実行部1041はデータ処理2の完了をエンジン実行管理部103に通知する(完了通知を出力する)。
エンジン実行管理部103は、データ処理2が完了したので、CPU実行部1041にデータ処理3をエンジン3Bで再開するよう要求する(再開要求を出力する)。
エンジン1Aでのデータ処理1が完了すると、FPGA実行部1042はデータ処理1の完了をエンジン実行管理部103に通知する(完了通知を出力する)。
エンジン3Bでのデータ処理3が完了すると、CPU実行部1041はデータ処理3の完了をエンジン実行管理部103に通知する(完了通知を出力する)。
また、図14の(1)〜(7)の各タイミングにおける実行データ処理リストの値と実行待ちデータ処理リストの値を、図25〜図31に示す。
なお、図29の「H/WリソースID:2」の「ステップ開始時刻」には、疑似のステップ開始時刻が設定されている。つまり、現在時刻から残時間を算出できるように疑似のステップ開始時刻が設定されている(現在時刻(350)−ステップ1処理時間(200)+ステップ残処理時間(25)=175)。
次に、図15〜図17を参照して、エンジン選択部102によるエンジン選択処理の概要を説明する。
エンジン選択部102は、以下の選択基準にて、適切なエンジンの組合せを選択する。
1)新たなデータ処理と既存のデータ処理(実行データ処理及び割当て済みデータ処理)が全て、各々のデッドライン内に完了する。
2)高い優先度のデータ処理ほど高い演算精度のエンジンを割り当てる。
図15は、データ処理1、データ処理2、データ処理4及びデータ処理5にエンジンが割り当てられている状態で、データ処理3が発生したことを示す。
図15において、二重枠で囲まれているエンジンがデータ処理に割り当てられているエンジンである。すなわち、データ処理1にはエンジン1Aが割り当てられている。データ処理2はエンジン2Bが割り当てられている。データ処理4はエンジン4Bが割り当てられている。データ処理5はエンジン5Aが割り当てられている。
図15の破線で囲んでいる部分は、後述する第1の組合せ抽出処理の範囲である。なお、データ処理4が発生した際にエンジン4Aを用いてもデータ処理4がデッドライン内に完了しないことが判明しているので、エンジン4Aは第1の組合せ抽出処理の範囲に含まれない。
データ処理3が発生すると、エンジン選択部102は、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するエンジンの組合せのうち、各々の精度が最も高くなるエンジンの組合せを選択する。
具体的には、エンジン選択部102は、エンジン3A、エンジン4B及びエンジン5Aの組合せでデータ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択する。
データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、データ処理5のエンジンをエンジン5Bに切替えることで、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理5を実行するエンジンをエンジン5Bに切り替えることを決定する。
データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、データ処理5のエンジンをエンジン5Cに切替えることで、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理5を実行するエンジンをエンジン5Cに切り替えることを決定する。
データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、エンジン3B、エンジン4B及びエンジン5Aの組合せでデータ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Bを選択する。
データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、エンジン3Aの場合と同様の処理を行う。
エンジン3B、エンジン4B及びエンジン5Cの組合せでもデータ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、エンジン3C、エンジン4B及びエンジン5Aの組合せでデータ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Cを選択する。
データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、エンジン3A及びエンジン3Bの場合と同様の処理を行う。
エンジン3C、エンジン4B及びエンジン5Cの組合せでもデータ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、第2の組合せ抽出処理を行う。
図16は、エンジン選択部102による第2の組合せ抽出処理(1回目)の範囲を示す。
エンジン3C、エンジン4B及びエンジン5Cの組合せでもデータ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、データ処理2のエンジンをエンジン2Cに切替えた場合にデータ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
つまり、エンジン選択部102は、エンジン2C、エンジン3A、エンジン4A及びエンジン5Aの組合せでデータ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理2を実行するエンジンをエンジン2Cに切替え、データ処理4を実行するエンジンをエンジン4Aに切り替えることを決定する。
データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、エンジン2C、エンジン3A、エンジン4A、エンジン5Bの組合せでデータ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理2を実行するエンジンをエンジン2Cに切替え、データ処理4を実行するエンジンをエンジン4Aに切替え、データ処理5を実行するエンジンをエンジン5Bに切り替えることを決定する。
データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、エンジン2C、エンジン3A、エンジン4A、エンジン5Cの組合せでデータ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理2を実行するエンジンをエンジン2Cに切替え、データ処理4を実行するエンジンをエンジン4Aに切替え、データ処理5を実行するエンジンをエンジン5Cに切り替えることを決定する。
データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、エンジン2C、エンジン3A、エンジン4B、エンジン5Aの組合せでデータ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
以降、エンジン選択部102は、順次、以下の組合せを検討する。
エンジン2C、エンジン3A、エンジン4B、エンジン5B
エンジン2C、エンジン3A、エンジン4B、エンジン5C
エンジン2C、エンジン3B、エンジン4A、エンジン5A
エンジン2C、エンジン3B、エンジン4A、エンジン5B
エンジン2C、エンジン3B、エンジン4A、エンジン5C
エンジン2C、エンジン3B、エンジン4B、エンジン5A
エンジン2C、エンジン3B、エンジン4B、エンジン5B
エンジン2C、エンジン3B、エンジン4B、エンジン5C
エンジン2C、エンジン3C、エンジン4A、エンジン5A
エンジン2C、エンジン3C、エンジン4A、エンジン5B
エンジン2C、エンジン3C、エンジン4A、エンジン5C
エンジン2C、エンジン3C、エンジン4B、エンジン5A
エンジン2C、エンジン3C、エンジン4B、エンジン5B
エンジン2C、エンジン3C、エンジン4B、エンジン5C
エンジン2C、エンジン3C、エンジン4B、エンジン5Cの組合せでデータ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、第2の組合せ抽出処理の範囲をデータ処理1のエンジンにまで拡大する。
図17は、エンジン選択部102による第2の組合せ抽出処理(2回目)の範囲を示す。
エンジン2C、エンジン3C、エンジン4B、エンジン5Cの組合せでデータ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、データ処理1のエンジンをエンジン1Bに切替えた場合にデータ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
つまり、エンジン選択部102は、エンジン1B、エンジン2A、エンジン3A、エンジン4A及びエンジン5Aの組合せでデータ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
データ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理1を実行するエンジンをエンジン1Bに切替え、データ処理4を実行するエンジンをエンジン4Aに切り替えることを決定する。
データ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、エンジン1B、エンジン2A、エンジン3A、エンジン4A及びエンジン5Bの組合せでデータ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
データ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理1を実行するエンジンをエンジン1Bに切替え、データ処理4を実行するエンジンをエンジン4Aに切替え、データ処理5を実行するエンジンをエンジン5Bに切り替えることを決定する。
データ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、エンジン1B、エンジン2A、エンジン3A、エンジン4A、エンジン5Cの組合せでデータ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
データ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了する場合は、エンジン選択部102は、データ処理3を実行するエンジンとしてエンジン3Aを選択し、データ処理1を実行するエンジンをエンジン1Bに切替え、データ処理4を実行するエンジンをエンジン4Aに切替え、データ処理5を実行するエンジンをエンジン5Cに切り替えることを決定する。
データ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了しない場合は、エンジン選択部102は、エンジン1B、エンジン2A、エンジン3B、エンジン4A、エンジン5Aの組合せでデータ処理1、データ処理2、データ処理3、データ処理4及びデータ処理5の各々がデッドライン内に完了するか否かを判定する。
以降、エンジン選択部102は、順次、以下の組合せを検討する。
エンジン1B、エンジン2A、エンジン3A、エンジン4B、エンジン5A
エンジン1B、エンジン2A、エンジン3A、エンジン4B、エンジン5B
エンジン1B、エンジン2A、エンジン3A、エンジン4B、エンジン5C
エンジン1B、エンジン2A、エンジン3B、エンジン4A、エンジン5A
エンジン1B、エンジン2A、エンジン3B、エンジン4A、エンジン5B
エンジン1B、エンジン2A、エンジン3B、エンジン4A、エンジン5C
エンジン1B、エンジン2A、エンジン3B、エンジン4B、エンジン5A
エンジン1B、エンジン2A、エンジン3B、エンジン4B、エンジン5B
エンジン1B、エンジン2A、エンジン3B、エンジン4B、エンジン5C
エンジン1B、エンジン2A、エンジン3C、エンジン4A、エンジン5A
エンジン1B、エンジン2A、エンジン3C、エンジン4A、エンジン5B
エンジン1B、エンジン2A、エンジン3C、エンジン4A、エンジン5C
エンジン1B、エンジン2A、エンジン3C、エンジン4B、エンジン5A
エンジン1B、エンジン2A、エンジン3C、エンジン4B、エンジン5B
エンジン1B、エンジン2A、エンジン3C、エンジン4B、エンジン5C
エンジン1B、エンジン2B、エンジン3A、エンジン4A、エンジン5A
エンジン1B、エンジン2B、エンジン3A、エンジン4A、エンジン5B
エンジン1B、エンジン2B、エンジン3A、エンジン4A、エンジン5C
エンジン1B、エンジン2B、エンジン3A、エンジン4B、エンジン5A
エンジン1B、エンジン2B、エンジン3A、エンジン4B、エンジン5B
エンジン1B、エンジン2B、エンジン3A、エンジン4B、エンジン5C
エンジン1B、エンジン2B、エンジン3B、エンジン4A、エンジン5A
エンジン1B、エンジン2B、エンジン3B、エンジン4A、エンジン5B
エンジン1B、エンジン2B、エンジン3B、エンジン4A、エンジン5C
エンジン1B、エンジン2B、エンジン3B、エンジン4B、エンジン5A
エンジン1B、エンジン2B、エンジン3B、エンジン4B、エンジン5B
エンジン1B、エンジン2B、エンジン3B、エンジン4B、エンジン5C
エンジン1B、エンジン2B、エンジン3C、エンジン4A、エンジン5A
エンジン1B、エンジン2B、エンジン3C、エンジン4A、エンジン5B
エンジン1B、エンジン2B、エンジン3C、エンジン4A、エンジン5C
エンジン1B、エンジン2B、エンジン3C、エンジン4B、エンジン5A
エンジン1B、エンジン2B、エンジン3C、エンジン4B、エンジン5B
エンジン1B、エンジン2B、エンジン3C、エンジン4B、エンジン5C
エンジン1B、エンジン2C、エンジン3A、エンジン4A、エンジン5A
エンジン1B、エンジン2C、エンジン3A、エンジン4A、エンジン5B
エンジン1B、エンジン2C、エンジン3A、エンジン4A、エンジン5C
エンジン1B、エンジン2C、エンジン3A、エンジン4B、エンジン5A
エンジン1B、エンジン2C、エンジン3A、エンジン4B、エンジン5B
エンジン1B、エンジン2C、エンジン3A、エンジン4B、エンジン5C
エンジン1B、エンジン2C、エンジン3B、エンジン4A、エンジン5A
エンジン1B、エンジン2C、エンジン3B、エンジン4A、エンジン5B
エンジン1B、エンジン2C、エンジン3B、エンジン4A、エンジン5C
エンジン1B、エンジン2C、エンジン3B、エンジン4B、エンジン5A
エンジン1B、エンジン2C、エンジン3B、エンジン4B、エンジン5B
エンジン1B、エンジン2C、エンジン3B、エンジン4B、エンジン5C
エンジン1B、エンジン2C、エンジン3C、エンジン4A、エンジン5A
エンジン1B、エンジン2C、エンジン3C、エンジン4A、エンジン5B
エンジン1B、エンジン2C、エンジン3C、エンジン4A、エンジン5C
エンジン1B、エンジン2C、エンジン3C、エンジン4B、エンジン5A
エンジン1B、エンジン2C、エンジン3C、エンジン4B、エンジン5B
エンジン1B、エンジン2C、エンジン3C、エンジン4B、エンジン5C
以上の手順を経ても適切なエンジンの組合せが得られない場合は、エンジン選択部102は既定のエラー処理を行う。
次に、図18〜図20を用いて、エンジン選択部102の動作例を説明する。
図18は、エンジン選択部102の全体の動作フローを示す。
図19は、図18に示す「第1の組合せ抽出処理」(ステップS11)の詳細を示す。
図20は、図18に示す「第2の組合せ抽出処理」(ステップS14)の詳細を示す。
新たなデータ処理(例えば、図15に示すデータ処理3)が発生した際に、図18の動作フローが開始する。
ステップS11において、エンジン選択部102は、第1の組合せ抽出処理を行う。
第1の組合せ処理の詳細は、図19を参照して後述する。
次に、ステップS12において、エンジン選択部102は第1の組合せ抽出処理により組合せが抽出できたか否かを判定する。
組合せが抽出できた場合(ステップS12でYES)は、処理がステップS17に進む。
一方、組合せが抽出できていない場合(ステップS12でNO)は、エンジン選択部102は、新たなデータ処理の優先度が最も高いか否かを判定する(ステップS13)。つまり、エンジン選択部102は、新たなデータ処理の優先度が既にエンジンを割り当てられているデータ処理の優先度よりも高いか否かを判定する。
新たなデータ処理の優先度が最も高い場合(ステップS13でYES)は、第2の組合せ抽出処理ができないので、処理がステップS16に進む。
一方、新たなデータ処理の優先度が最も高い優先度ではない場合(ステップS13でNO)は、処理がステップS14に進む。
ステップS14では、エンジン選択部102は第2の組合せ抽出処理を行う。
第2の組合せ処理の詳細は、図20を参照して後述する。
次に、ステップS15において、エンジン選択部102は第2の組合せ抽出処理により組合せが抽出できたか否かを判定する。
組合せが抽出できた場合(ステップS15でYES)は、処理がステップS17に進む。
一方、組合せを抽出できなかった場合(ステップS15でNO)は、処理がステップS16に進む。
ステップS16では、エンジン選択部102は、既定のエラー処理を行う。
例えば、エンジン選択部102は、エラー処理として、エラーを報知して、データ処理実行装置100を安全に停止させる。
ステップS17では、エンジン選択部102は、実行要求を出力する。
図14に示すように、エンジン選択部102は、状況によって実行要求のみを出力することもあるし、実行要求と切替え要求とを出力することもある。
次に、図19を参照して、第1の組合せ抽出処理の詳細を説明する。
ステップS1101において、エンジン選択部102は、新たなデータ処理に対応するエンジンの中で最も精度が高いエンジンを選択する。
エンジン選択部102は、エンジンリスト110を参照して、新たなデータ処理に対応する最も精度の高いエンジンを選択する。
なお、ステップS1101で選択されたエンジンを選択エンジンという。
次に、ステップS1102において、エンジン選択部102は、選択エンジンを用いて新たなデータ処理を実行した場合に、新たなデータ処理が新たなデータ処理のデッドライン内に完了するか否かを判定する。
新たなデータ処理が新たなデータ処理のデッドライン内に完了する場合(ステップS1102でYES)は、処理がステップS1103に進む。
一方、新たなデータ処理が新たなデータ処理のデッドライン内に完了しない場合(ステップS1102でNO)は、処理がステップS1107に進む。
ステップS1103では、エンジン選択部102は、選択エンジンを組合せ抽出結果として、予め定められた記憶領域に記録する。
ステップS1104では、エンジン選択部102は、既にエンジンが割り当てられているデータ処理の中で新たなデータ処理よりも優先度の低いデータ処理があるか否かを判定する。
新たなデータ処理より優先度の低いデータ処理があれば(ステップS1104でYES)、エンジン選択部102は、ステップS1106において、次に優先度が低いデータ処理のエンジンを選択エンジンに指定する。
そして、エンジン選択部102は、次に優先度が低いデータ処理についてステップS1102以降の処理を行う。
一方、新たなデータ処理より優先度の低いデータ処理がない場合(ステップS1104でNO)は、ステップS1105において、エンジン選択部102は、適切なエンジンの組合せがあると判定する。
この結果、エンジン選択部102は、図18のステップS17において、ステップS1103で記録した抽出結果に基づき、実行要求(及び切替え要求)を出力する。
新たなデータ処理が新たなデータ処理のデッドライン内に完了しない場合(ステップS1102でNO)は、エンジン選択部102は、ステップS1107において、新たなデータ処理に選択エンジンの次に精度が低いエンジンが存在するか否かを判定する。
次に精度が低いエンジンが存在する場合(ステップS1107でYES)は、エンジン選択部102は、ステップS1108において、次に精度が低いエンジンを新たな選択エンジンに指定する。
その後、エンジン選択部102は、新たな選択エンジンを用いてステップS1102以降の処理を行う。
次に精度が低いエンジンが存在しない場合(ステップS1107でNO)は、エンジン選択部102は、ステップS1109において、現在の選択エンジンが新たなデータ処理のエンジンであるか否かを判定する。
現在の選択エンジンが新たなデータ処理のエンジンであれば(ステップS1109でYES)、エンジン選択部102は、ステップS1110において、適切なエンジンの組み合わせがないと判定する。
一方、現在の選択エンジンが新たなデータ処理のエンジンでなければ(ステップS1109でNO)、エンジン選択部102は、ステップS1111において、次に優先度の高いデータ処理の組合せ抽出結果として記録したエンジンを選択エンジンに指定し、ステップS1107以降の処理を行う。ステップS1107以降の処理では、エンジン選択部102は、次に優先度の高いデータ処理の選択エンジンの精度を下げた状態での、次に優先度の高いデータ処理以下のデータ処理がデッドライン内に完了可能とするエンジンの組合せの抽出を試みる。以上、エンジン選択部102は、前記説明したステップをSS1109でYESとなるまで繰り返すことで、高い優先度のデータ処理ほど高い演算精度のエンジンを割り当てつつ、図15で記した組合せ抽出処理の範囲においてデッドライン内に完了するエンジンの組合せを抽出する。
次に、図20を参照して、第2の組合せ抽出処理の詳細を説明する。
ステップS1301において、エンジン選択部102は、新たなデータ処理の次に優先度が高いデータ処理で実行中のエンジンを選択エンジンに指定する。
次に、ステップS1302において、エンジン選択部102は、選択エンジンの次に精度が低いエンジンが存在するか否かを判定する。
選択エンジンの次に精度が低いエンジンが存在するのであれば、処理がステップS1306に進み、選択エンジンの次に精度が低いエンジンが存在しないのであれば、処理がステップS1303に進む。
ステップS1303では、エンジン選択部102は、新たなデータ処理の優先度が最も高いか否かを判定する。
新たなデータ処理の優先度が最も高い場合は、処理がステップS1304に進む。
一方、新たなデータ処理の優先度が最も高い優先度ではない場合は、処理がステップS1305に進む。
ステップS1304では、エンジン選択部102は、適切なエンジンの組み合わせがないと判定する。
ステップS1305では、エンジン選択部102は、次に優先度の高いデータ処理の組合せ抽出結果として記録したエンジンを選択エンジンに指定し、ステップS1302以降の処理を行う。ステップS1302以降の処理では、エンジン選択部102は、次に優先度の高いデータ処理の選択エンジンの精度を下げた状態での、次に優先度の高いデータ処理以下のデータ処理がデッドライン内に完了可能とするエンジンの組合せの抽出を試みる。
なお、抽出結果の記録がない場合は、エンジン選択部102は、現在の選択エンジンを再度、選択エンジンとして指定する。
ステップS1306では、エンジン選択部102は、次に精度が低いエンジンを新たな選択エンジンに指定する。
その後、エンジン選択部102は、新たな選択エンジンを用いてステップS1307以降の処理を行う。
ステップS1307では、エンジン選択部102は、現在の選択エンジンで、新たなデータ処理がそのデッドライン内に完了可能か否かを判定する。
新たなデータ処理がそのデッドライン内に完了する場合は、処理がステップS1308に進む。一方、新たなデータ処理がそのデッドライン内に完了しない場合は、処理がステップS1302に進む。
ステップS1308では、エンジン選択部102は、選択エンジンを組合せ抽出結果として、予め定められた記憶領域に記録する。
次に、ステップS1309において、エンジン選択部102は、新たなデータ処理よりも優先度が低いデータ処理があるか否かを判定する。
新たなデータ処理よりも優先度が低いデータ処理があれば、処理がステップS1310に進む。一方。新たなデータ処理よりも優先度が低いデータ処理がない場合は、処理がステップS1311に進む。
ステップS1310では、エンジン選択部102は、次に優先度が低いデータ処理の最も精度の高いエンジンを選択エンジンに指定する。その後、エンジン選択部102は、次に優先度が低いデータ処理と新たな選択エンジンについてステップS1307以降の処理を行う。
ステップS1311では、エンジン選択部102は、適切なエンジンの組合せがあると判定する。
次に、図21〜図23を参照して、本実施の形態に係るエンジン実行管理部103の動作例を説明する。
ステップS21において、エンジン実行管理部103は、実行要求、切替え要求、ステップ完了通知及び実行完了通知のうちのいずれかの受信を待つ。
エンジン実行管理部103は、実行要求、切替え要求、ステップ完了通知及び実行完了通知のうちのいずれかを受信した場合に、実行要求、切替え要求、ステップ完了通知及び実行完了通知のいずれを受信したかを判定する。
実行要求を受信した場合は、処理がステップS23に進む。ステップ完了通知を受信した場合は、処理が図22のステップS33に進む。実行完了通知を受信した場合は、処理が図22のステップS37に進む。切替え要求を受信した場合は、処理が図23のステップS41に進む。
ステップS23では、エンジン実行管理部103は、実行要求で実行が要求されたエンジンを実現するハードウェアリソースが現在動作中か否かを判定する。
ハードウェアリソースが現在動作中であれば、処理がステップS26に進む。一方、ハードウェアリソースが現在動作中でなければ、処理がステップS24に進む。
ステップS24では、エンジン実行管理部103は、実行要求を実行データ処理リスト121に登録する。
次に、ステップS25において、エンジン実行管理部103は、エンジン実行部104に実行指令を出力する。
ステップS26では、実行要求に記載されているデータ処理の優先度が、ステップS23で動作中と判定されたハードウェアリソースで実行中のデータ処理の優先度よりも高いか否かを判定する。
実行要求に記載されているデータ処理の優先度の方が高ければ、処理がステップS27に進む。一方、実行要求に記載されているデータ処理の優先度の方が低ければ、処理がステップS32に進む。
ステップS27では、エンジン実行管理部103は、実行データ処理リスト121の該当するハードウェアリソースの中断可否フラグがTRUEであるか否かを判定する。
中断可否フラグがTRUEである場合は、処理がステップS28に進む。
一方、中断可否フラグがFALSEである場合は、処理がステップS30に進む。
ステップS28では、エンジン実行管理部103は、エンジン実行部104に中断指令を出力する。
次に、ステップS29において、エンジン実行管理部103は、中断したデータ処理、つまり、ステップS28の中断指令の対象のデータ処理を実行待ちデータ処理リスト122に登録する。
ステップS30では、エンジン実行管理部103は、実行データ処理リスト121の該当するハードウェアリソースのステップ完了通知フラグをTRUEにする。
次に、ステップS31で、エンジン実行管理部103は、実行要求に記載のデータ処理を、ステップ完了待ちで実行待ちデータ処理リスト122に登録する。
ステップS32では、エンジン実行管理部103は、実行要求に記載のデータ処理を、実行可能状態で実行待ちデータ処理リスト122に登録する。
図21のステップS22の判定の結果、ステップ完了通知を受信したと判明した場合は、エンジン実行管理部103は、図22のステップS33において、ステップが完了したデータ処理について、実行データ処理リスト121のステップ完了通知フラグをFALSEにする。
次に、ステップS34において、エンジン実行管理部103は、ステップが完了したデータ処理について実行待ちデータ処理リスト122でステップ完了待ち状態のデータ処理を実行可能状態にする。
次に、ステップのS35において、エンジン実行管理部103は、ステップが完了したデータ処理についての実行データ処理リスト121の切替えフラグがTRUEであるか否かを判定する。
切替えフラグがTRUEである場合は、処理がステップS37に進む。
切替えフラグがFALSEである場合は、処理がステップS36に進む。
ステップS36では、エンジン実行管理部103は、ステップが完了したデータ処理を実行待ちデータ処理リスト122に追加する。
ステップS37では、エンジン実行管理部103は、実行待ちデータ処理リスト122に実行可能状態のデータ処理があるか否かを判定する。
実行可能状態のデータ処理がある場合は、処理がステップS38に進む。一方、実行可能状態のデータ処理がない場合は、処理がステップS39に進む。
ステップS38では、エンジン実行管理部103は、実行待ちデータ処理リスト122の中で最も優先度が高いデータ処理を実行データ処理リスト121に登録し、また、当該データ処理を実行待ちデータ処理リスト122から削除する。
その後、処理は図21のステップS25に進む。
ステップS39では、エンジン実行管理部103は、実行データ処理リスト121を未動作に設定する。未動作とは当該ハードウェアリソースではデータ処理が実行されていないことを意味する。具体的には、エンジン実行管理部103は、段落0042で定義した通り実行データ処理リスト121のデータ処理ID等を0とする処理を行う。
その後、処理は図21のステップS21に進む。
図21のステップS22の判定の結果、切替え要求を受信したと判明した場合は、エンジン実行管理部103は、図23のステップS41において、切替え要求の対象のデータ処理は実行中であるか否かを判定する。
切替え要求の対象のデータ処理が実行中であれば、処理がステップS42に進む。
一方、切替え要求の対象のデータ処理が実行中でなければ、処理がステップS44に進む。
ステップS42では、エンジン実行管理部103は、実行データ処理リスト121において、対象のデータ処理の切替えフラグ及びステップ完了通知フラグをTRUEにする。
次に、ステップS43で、エンジン実行管理部103は、実行待ちデータ処理リスト122において切替え要求に記載されているエンジンを該当するハードウェアリストの行に登録する。
その後、処理は図21のステップS21に進む。
ステップS44では、エンジン実行管理部103は、切替え要求の対象のデータ処理がステップ実行の途中で中断している状態であるか否かを判定する。
切替え要求の対象のデータ処理がステップ実行の途中で中断している状態である場合は、処理がステップS46に進む。
一方、切替え要求の対象のデータ処理がステップ実行の途中で中断している状態ではない場合は、処理がステップS45に進む。
ステップS46では、エンジン実行管理部103は、実行データ処理リスト122において、ステップ実行の途中で中断しているデータ処理の切替えフラグ及びステップ完了通知フラグをTRUEにする。
ステップS45では、エンジン実行管理部103は、実行待ちデータ処理リスト122において、切替え要求の対象のデータ処理のエンジンを削除し、切替え要求に記載されているエンジンを登録する。
その後、処理は図21のステップS21に進む。
次に、図24を参照して、エンジン実行部104の動作例を説明する。
ステップS51において、エンジン実行部104は、実行対象のステップを実行する。
次に、ステップS51で実行していたステップが完了したら、エンジン実行部104は、ステップS52において、当該ステップがデータ処理内の最終ステップか否かを判定する。
当該ステップが最終ステップであれば、処理がステップS53に進む。
当該ステップが最終ステップでなければ、処理がステップS54に進む。
ステップS53では、エンジン実行部104は、エンジン実行管理部103に実行完了通知を出力する。
ステップS54では、エンジン実行部104は、実行データ処理リスト121において対象のデータ処理のステップ完了通知フラグがTRUEであるか否かを判定する。
ステップ完了通知フラグがTRUEである場合は、処理がステップS55に進む。
一方、ステップ完了通知フラグがFALSEである場合は、処理がステップS56に進む。
ステップS55では、エンジン実行部104は、エンジン実行管理部103にステップ完了通知を出力する。
ステップS56では、エンジン実行部104は、実行対象のステップを1つ進め、実行データ処理リスト121のステップ番号を更新する。
その後、処理はステップS51に進む。
***実施の形態の効果の説明***
以上のように、本実施の形態によれば、突発イベントにより新たなデータ処理が発生しても、新たなデータ処理及び既存のデータ処理のそれぞれをデッドライン内に完了することができる。このため、本実施の形態によれば、データ処理のスケジューリングを状況の変化に応じて柔軟に行うことができる。
実施の形態2.
本実施の形態では、主に実施の形態1との差異を説明する。
なお、以下で説明していない事項は、実施の形態1と同様である。
図32は、本実施の形態に係るデータ処理実行装置100の機能構成例を示す。
図2と比較して、図32では、変換処理部106、変換処理時間リスト150及びエンジンインタフェースリスト160が追加されている。エンジンインタフェースリスト160は、エンジンI/Fリスト160とも表記する。
他の要素は、図2に示したものと同じである。
変換処理部106は、データ処理登録部101等と同様にプログラムにより実現される。変換処理部106の機能を実現するプログラムは、データ処理登録部101等と同様に処理装置900により実行される。
変換処理部106は、エンジン間でインタフェース仕様が異なる場合に、インタフェース仕様の違いを吸収する変換処理を行う。より具体的には、実行エンジン(例えば、エンジン5A)と引き継ぎエンジン(例えば、エンジン5B)との間でインタフェース仕様が異なる場合に、変換処理部106は、インタフェース仕様の違いを吸収する変換処理を行う。
図33は、変換処理部106による変換処理のタイミングを示す。
また、図34は、変換処理部106による変換処理の例を示す。
図33では、エンジン5A、エンジン5B及びエンジン5Cがデータ処理5に含まれるステップを実行する例を示している。エンジン5Aがデータ処理5を実行する場合は、ステップ1〜4が実行される。エンジン5Bがデータ処理5を実行する場合も、ステップ1〜4が実行される。エンジン5Cがデータ処理5を実行する場合は、ステップ1及びステップ2が実行される。
また、図34に示すように、エンジン5A、エンジン5B及びエンジン5Cでは、演算に用いる変数値の数、変数の型が異なる。このようなエンジンごとの変数値の数及び変数の型は、エンジンインタフェースリスト160に定義されている。
データ処理5の全てのステップが同一のエンジンで実行される場合は、変換処理部106による変換処理は必要ない。しかし、ステップ1がエンジン5Aで実行され、ステップ2がエンジン5Bで実行されるというような、前後のステップが異なるエンジンで実行される場合は変換処理部106による変換処理が必要である。つまり、変換処理部106が、先行するステップでの演算結果を後続のステップを実行するエンジンで用いる変数値の数及び変数の型に変換する必要がある。
例えば、先行するステップがエンジン5Aで実行され、後続するステップがエンジン5Bで実行される場合を想定する。
この場合は、エンジン5Aの演算結果として、図34に示すように、演算結果格納メモリ140に、浮動小数点型のval1の4つの値が格納され、浮動小数点型のval2の4つの値が格納される。
エンジンインタフェースリスト160に示すように、エンジン5Bが用いるval1の値は4つであり、val2の値は3つであり、変数の型は32ビット固定小数点である。
エンジン実行管理部103は、エンジン5Bが実行するステップの実装関数(エンジンB向けの固有のプログラムコード)を呼び出す前に、変換処理部106を呼び出す。変換処理部106は、演算結果格納メモリ140に格納されているエンジン5Aの演算結果をエンジン5Bのインタフェース仕様に合致するように変換する。
具体的には、変換処理部106は、図34に示すように、val1とval2の型を32ビット固定小数点に変換し、また、val2の値を1つ減らす。この結果、エンジン5Bは、演算結果格納メモリ140に格納されている演算結果を用いることができる。
また、上記のように、インタフェース仕様が異なるエンジン間での切替えが生じる場合は変換処理部106による変換処理が生じるので、エンジン選択部102は、変換処理部106による変換処理に要する時間を含めて、実行データ処理がデッドライン内に完了可能かを判定する必要がある。
つまり、本実施の形態では、エンジン選択部102は、変換処理に要する時間を含めて実行データ処理、新たなデータ処理及び割当て済みデータ処理を各々のデッドラインまでに完了させることができるエンジンを、引き継ぎエンジンとして選択する。
変換処理部106の変換処理に要する時間は、変換処理時間リスト150に記載される。
図35は、変換処理時間リスト150の例を示す。各数値は、変換処理に要する時間を示す。また、各数値は、図5のステップ開始時刻と同様にカウント値で表される。
図35の例では、エンジン5Aからエンジン5Bへの切替えの場合は、変換処理部106の変換処理に要する時間は3である。
変換処理部106は、変換処理時間リスト150を参照することで、変換処理部106の変換処理に要する時間を得る。
このように、本実施の形態では、変換処理に要する時間も含めて新たなデータ処理及び既存のデータ処理のそれぞれがデッドライン内に完了するか否かを判定する。このため、本実施の形態によれば、切替え前のエンジンと切替え後のエンジンのインタフェース仕様が異なっていても、新たなデータ処理及び既存のデータ処理のそれぞれをデッドライン内に完了することができる
以上、本発明の実施の形態について説明したが、これら2つの実施の形態を組み合わせて実施しても構わない。
あるいは、これら2つの実施の形態のうち、1つを部分的に実施しても構わない。
あるいは、これら2つの実施の形態を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
100 データ処理実行装置、101 データ処理登録部、102 エンジン選択部、103 エンジン実行管理部、104 エンジン実行部、105 通信処理部、106 変換処理部、110 エンジンリスト、120 エンジン実行管理データ、121 実行データ処理リスト、122 実行待ちデータ処理リスト、130 エンジンソフトウェア、131 ブロック関数リスト、132 エンジン実装コード、140 演算結果格納メモリ、150 変換処理時間リスト、160 エンジンインタフェースリスト、900 処理回路、901 CPU、902 RAM、903 ROM、904 ハードウェアアクセラレータ、905 FPGA、906 GPU、907 DSP、908 ASIC、1041 CPU実行部、1042 FPGA実行部。

Claims (8)

  1. 各々がデータ処理を実行する、演算精度が異なる複数のエンジンと、
    前記複数のエンジンのうちのいずれかのエンジンが実行しているデータ処理である実行データ処理と未実行であるが既にエンジンが割り当てられているデータ処理である割当て済みデータ処理とが存在する状況で新たなデータ処理が発生し、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の各々に優先度が設けられている場合に、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理が各々の完了期限までに完了し、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理のうち優先度が高いデータ処理ほど演算精度が高いエンジンで実行されるように、前記複数のエンジンから、前記実行データ処理を実行させる新たなエンジンを選択し、前記割当て済みデータ処理を実行させる新たなエンジンを選択し、前記新たなデータ処理を実行させるエンジンを選択するエンジン選択部と、
    前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の各々を、前記エンジン選択部により選択されたエンジンに実行させる制御部とを有るデータ処理実行装置。
  2. 前記エンジン選択部は、
    前記実行データ処理を実行している実行エンジンによる前記実行データ処理の実行を継続していると前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理少なくともいずれかが各々の完了期限までに完了しない場合に、
    前記実行データ処理を実行させるエンジンとして前記実行エンジン以外のエンジンを選択し、前記割当て済みデータ処理を実行させるエンジンとして前記割当て済みデータ処理に割当て済みのエンジン以外のエンジンを選択する請求項1に記載のデータ処理実行装置。
  3. 前記エンジン選択部は、
    前記実行データ処理と、前記割当て済みデータ処理と、前記実行データ処理以外の実行中のデータ処理である他の実行データ処理が存在している状況で前記新たなデータ処理が発生し、前記実行データ処理、前記割当て済みデータ処理、前記他の実行データ処理及び前記新たなデータ処理の各々に優先度が設けられている場合に、前記実行データ処理、前記割当て済みデータ処理、前記他の実行データ処理及び前記新たなデータ処理各々の完了期限までに完了し、前記実行データ処理、前記割当て済みデータ処理、前記他の実行データ処理及び前記新たなデータ処理のうち優先度が高いデータ処理ほど演算精度が高いエンジンで実行されるように、前記複数のエンジンから、前記実行データ処理を実行させる新たなエンジンを選択し、前記割当て済みデータ処理を実行させる新たなエンジンを選択し、前記他の実行データ処理を実行させる新たなエンジンを選択し、前記新たなデータ処理を実行させるエンジンを選択し、
    前記制御部は、
    前記実行データ処理、前記割当て済みデータ処理、前記他の実行データ処理及び前記新たなデータ処理の各々を、前記エンジン選択部により選択されたエンジンに実行させる請求項1に記載のデータ処理実行装置。
  4. 前記制御部は、
    前記実行データ処理を実行させる前記新たなエンジンが選択される前は、前記実行データ処理を実行可能なエンジンに共通に設けられている共通プログラムコードを変換して前記新たなエンジンの選択前に前記実行データ処理を実行させる実行エンジン向けの個別のプログラムコードを生成し、生成した前記実行エンジン向けの個別のプログラムコードを用いて前記実行エンジンに前記実行データ処理を実行させ、
    前記実行データ処理を実行させる前記新たなエンジンが選択された場合は、前記共通プログラムコードを変換して前記新たなエンジン向けの個別のプログラムコードを生成し、生成した前記新たなエンジン向けの個別のプログラムコードを用いて前記新たなエンジンに前記実行データ処理を引き継がせる請求項1に記載のデータ処理実行装置。
  5. 前記データ処理実行装置は、更に、
    前記実行データ処理を実行している実行エンジンと前記新たなエンジンとの間でインタフェース仕様が異なる場合に、前記インタフェース仕様の違いを吸収する変換処理を行う変換処理部を有する請求項1に記載のデータ処理実行装置。
  6. 前記エンジン選択部は、
    記実行エンジンによる前記実行データ処理の実行を継続していると前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の少なくともいずれかが各々の完了期限までに完了しない場合に、
    前記変換処理に要する時間を含めて前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理各々の完了期限までに完了するように前記実行データ処理を実行させる新たなエンジンを選択し、前記割当て済みデータ処理を実行させる新たなエンジンを選択し、前記新たなデータ処理を実行させるエンジンを選択する請求項に記載のデータ処理実行装置。
  7. 各々がデータ処理を実行する、演算精度が異なる複数のエンジンを有するコンピュータが、前記複数のエンジンのうちのいずれかのエンジンが実行しているデータ処理である実行データ処理と未実行であるが既にエンジンが割り当てられているデータ処理である割当て済みデータ処理とが存在する状況で新たなデータ処理が発生し、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の各々に優先度が設けられている場合に、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理が各々の完了期限までに完了し、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理のうち優先度が高いデータ処理ほど演算精度が高いエンジンで実行されるように、前記複数のエンジンから、前記実行データ処理を実行させる新たなエンジンを選択し、前記割当て済みデータ処理を実行させる新たなエンジンを選択し、前記新たなデータ処理を実行させるエンジンを選択するエンジン選択処理と、
    前記コンピュータが、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の各々を、前記エンジン選択処理により選択されたエンジンに実行させる制御処理とを有るデータ処理実行方法。
  8. 各々がデータ処理を実行する、演算精度が異なる複数のエンジンを有するコンピュータに、
    前記複数のエンジンのうちのいずれかのエンジンが実行しているデータ処理である実行データ処理と未実行であるが既にエンジンが割り当てられているデータ処理である割当て済みデータ処理とが存在する状況で新たなデータ処理が発生し、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の各々に優先度が設けられている場合に、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理が各々の完了期限までに完了し、前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理のうち優先度が高いデータ処理ほど演算精度が高いエンジンで実行されるように、前記複数のエンジンから、前記実行データ処理を実行させる新たなエンジンを選択し、前記割当て済みデータ処理を実行させる新たなエンジンを選択し、前記新たなデータ処理を実行させるエンジンを選択するエンジン選択処理と、
    前記実行データ処理、前記割当て済みデータ処理及び前記新たなデータ処理の各々を、前記エンジン選択処理により選択されたエンジンに実行させる制御処理とを実行させるデータ処理実行プログラム。
JP2020526344A 2019-12-12 2019-12-12 データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム Active JP6815563B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/048681 WO2021117186A1 (ja) 2019-12-12 2019-12-12 データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム

Publications (2)

Publication Number Publication Date
JP6815563B1 true JP6815563B1 (ja) 2021-01-20
JPWO2021117186A1 JPWO2021117186A1 (ja) 2021-12-09

Family

ID=74164598

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020526344A Active JP6815563B1 (ja) 2019-12-12 2019-12-12 データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム

Country Status (7)

Country Link
US (1) US20220229696A1 (ja)
JP (1) JP6815563B1 (ja)
KR (1) KR102467126B1 (ja)
CN (1) CN114761927A (ja)
DE (1) DE112019007851T5 (ja)
TW (1) TWI787605B (ja)
WO (1) WO2021117186A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115796925B (zh) * 2023-02-08 2023-04-25 北京装库创意科技有限公司 一种基于云平台的销售数据统计方法及系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3660376B2 (ja) * 1994-08-08 2005-06-15 株式会社日立製作所 分散処理システムおよび分散処理システムにおける負荷分散方法
JPH08212084A (ja) * 1995-02-02 1996-08-20 Hitachi Ltd 情報処理装置
US8028292B2 (en) * 2004-02-20 2011-09-27 Sony Computer Entertainment Inc. Processor task migration over a network in a multi-processor system
JP4523921B2 (ja) * 2006-02-24 2010-08-11 三菱電機株式会社 計算機リソース動的制御装置
JP2009048252A (ja) * 2007-08-14 2009-03-05 Oki Electric Ind Co Ltd プログラム変換装置及びコンパイラプログラム
JP5036523B2 (ja) * 2007-12-21 2012-09-26 三菱電機株式会社 プログラム並列化装置
KR101572879B1 (ko) * 2009-04-29 2015-12-01 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
JP2010027062A (ja) * 2009-08-21 2010-02-04 Hitachi Ltd 分散制御システム
US8776066B2 (en) * 2009-11-30 2014-07-08 International Business Machines Corporation Managing task execution on accelerators
WO2012105174A1 (ja) * 2011-01-31 2012-08-09 パナソニック株式会社 プログラム生成装置、プログラム生成方法、プロセッサ装置及びマルチプロセッサシステム
US8683468B2 (en) * 2011-05-16 2014-03-25 Advanced Micro Devices, Inc. Automatic kernel migration for heterogeneous cores
US9218206B2 (en) * 2011-06-20 2015-12-22 Microsoft Technology Licensing, Llc Memory management model and interface for new applications
US8572614B2 (en) * 2011-06-30 2013-10-29 International Business Machines Corporation Processing workloads using a processor hierarchy system
US9875187B2 (en) * 2014-12-10 2018-01-23 Intel Corporation Interruption of a page miss handler
JP2018092311A (ja) * 2016-12-01 2018-06-14 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
KR102463184B1 (ko) * 2016-12-13 2022-11-03 현대자동차 주식회사 통합 원격 제어장치 및 이를 이용한 원격 제어방법이 구현된 컴퓨터로 판독 가능한 기록매체
JP6756661B2 (ja) 2017-04-28 2020-09-16 日立オートモティブシステムズ株式会社 車両電子制御装置
WO2020040599A1 (en) * 2018-08-23 2020-02-27 Samsung Electronics Co., Ltd. Electronic device and operating method thereof of processing neural network model by using plurality of processors

Also Published As

Publication number Publication date
KR102467126B1 (ko) 2022-11-14
US20220229696A1 (en) 2022-07-21
KR20220079692A (ko) 2022-06-13
JPWO2021117186A1 (ja) 2021-12-09
CN114761927A (zh) 2022-07-15
WO2021117186A1 (ja) 2021-06-17
TW202123005A (zh) 2021-06-16
TWI787605B (zh) 2022-12-21
DE112019007851T5 (de) 2022-10-27

Similar Documents

Publication Publication Date Title
JP2518998B2 (ja) 多重タスク処理オペレ―ティング・システム及びそのコンピュ―タの動作方法
TWI416413B (zh) Work processing device
JP5173714B2 (ja) マルチスレッドプロセッサ及びその割り込み処理方法
KR20050016170A (ko) 실시간 동작 수행방법 및 시스템
JP6815563B1 (ja) データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム
JP2008522277A (ja) 優先度の付けられたタスク間の効率的な切り換え
CN112579162A (zh) 异构isa平台上硬件和软件协调的对高级特征选入的方法
JP2001117786A (ja) プロセススケジューリング装置およびプロセススケジューリング方法
JP2003122586A (ja) タスク・スケジューリング装置
JP6669705B2 (ja) 数値制御装置
JP5299869B2 (ja) コンピュータマイクロジョブ
JP3840045B2 (ja) データ処理方法及びデータ処理装置
JPH05108380A (ja) データ処理システム
JP5240200B2 (ja) データ処理装置および方法
JP5056346B2 (ja) 情報処理装置、情報処理システム、仮想サーバの移動処理の制御方法、及び、プログラム
JP4962026B2 (ja) プロセス管理機能をもつユーザレベルプロセス制御装置、その方法及びそのプログラム
JP6859755B2 (ja) 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
JP3763452B2 (ja) 情報処理システム、オブジェクトの優先度管理方法、オペレーティングシステム、記録媒体
JP2004234643A (ja) プロセススケジューリング装置、プロセススケジューリング方法、プロセススケジューリングのためのプログラム、及びプロセススケジューリングのためのプログラムを記録した記録媒体
JP2006244293A (ja) タスク実行制御方法及び装置
JPH0822396A (ja) タスク実行管理装置とその方法
JP3838880B2 (ja) プロセス管理方法及びプロセス管理システム
JP2010186301A (ja) プログラム変換方法、及び装置
CN114443255A (zh) 一种线程调用方法和装置
JPH0721111A (ja) 優先順位決定システム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200512

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200512

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200512

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200821

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200901

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200929

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: 20201124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201222

R150 Certificate of patent or registration of utility model

Ref document number: 6815563

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250