(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023172012
(43)【公開日】2023-12-06
(54)【発明の名称】演算制御装置
(51)【国際特許分類】
G06F 9/48 20060101AFI20231129BHJP
G06F 9/50 20060101ALI20231129BHJP
【FI】
G06F9/48 300Z
G06F9/50 150E
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2022083548
(22)【出願日】2022-05-23
(71)【出願人】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】110002941
【氏名又は名称】弁理士法人ぱるも特許事務所
(72)【発明者】
【氏名】綿貫 卓生
(72)【発明者】
【氏名】海野 洋
(57)【要約】
【課題】マルチコアプロセッサを搭載した演算制御装置において、並列演算を実行する場合の前処理、同期処理に費やされる時間を短縮し、効率的な並列処理が可能となる演算制御装置を得ることを目的とする。
【解決手段】演算制御装置は、複数のコアを有するプロセッサ、プロセッサが処理すべき入力情報を受信する入力情報処理部、および、入力情報に基づいて実行するタスクのうち、複数のコアに対してタスクの一部である複数のサブタスクを割り当てて並列処理が可能かどうか判断し、並列処理が可能な場合はサブタスクの実行のための入力パラメータが揃うよりも前に複数のコアにサブタスクの実行準備を完了させ、サブタスクの実行のための入力パラメータが揃った後に複数のコアにサブタスクの並列処理を開始させるタスク処理制御部、を備えたものである。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数のコアを有するプロセッサ、
前記プロセッサが処理すべき入力情報を受信する入力情報処理部、および、
前記入力情報に基づいて実行するタスクのうち、前記複数のコアに対して前記タスクの一部である複数のサブタスクを割り当てて並列処理が可能かどうか判断し、並列処理が可能な場合は前記サブタスクの実行のための入力パラメータが揃うよりも前に前記複数のコアに前記サブタスクの実行準備を完了させ、前記サブタスクの実行のための前記入力パラメータが揃った後に前記複数のコアに前記サブタスクの並列処理を開始させるタスク処理制御部、を備えた演算制御装置。
【請求項2】
前記タスク処理制御部は、前記サブタスクのための前記入力パラメータが揃った後に前記複数のコアに同時に前記サブタスクの並列処理を開始させる請求項1に記載の演算制御装置。
【請求項3】
前記タスク処理制御部は、前記並列処理の開始を指示する並列処理開始要求を受取った際に前記複数のコアに同時に前記サブタスクの並列処理を開始させる請求項1に記載の演算制御装置。
【請求項4】
前記タスク処理制御部は、前記サブタスクのための前記入力パラメータが揃い次第前記複数のコアに同時に前記サブタスクの並列処理を開始させる請求項1に記載の演算制御装置。
【請求項5】
前記タスク処理制御部は、前記サブタスクごとに実行のための入力パラメータが揃った順に前記複数のコアに並列処理を開始させる請求項1に記載の演算制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、演算制御装置に関するものである。
【背景技術】
【0002】
近年、自動車分野、産業機器分野において、高度な演算処理が要求されつつある。例えば、自動車の自動運転システムでは、大量の情報をリアルタイムに処理することが求められている。また、創薬、遺伝子解析、ビッグデータ処理といった様々な分野において、大量の情報の高速処理が必要となっている。
【0003】
大量の情報を高速で処理するためにマルチコアプロセッサが導入されている。コアとは、情報を処理するハードウェアブロックを指す。複数のコアによって、独立した並列演算が可能となり、大量の情報を処理することができる。2個のコアを有するデュアルコアプロセッサ、4個のコアを有するクワッドコアプロセッサ、6個のコアを有するヘキサコアプロセッサ、8個のコアを有するオクタコアプロセッサなどが存在する。必要な情報処理量に応じて、CPUのコア数を増やしていくことで対処が可能となる。
【0004】
これらのマルチコアプロセッサを搭載した電子制御装置(ECU(Electronic Control Unit))を利用して、様々な応用が実行されている。高度な情報処理においては、状況に応じて並列処理を利用できる場合と、できない場合とがある。プロセッサの負荷状態と情報処理の優先度に応じて、リアルタイムに並列処理の利用の可否を判断しながら情報処理を実行することが求められる。このように、予め定めた情報処理の割り当てではなく、リアルタイムに情報処理の分担を決定して行くことを、動的スケジューリングと称する。動的スケジューリングを実行して、情報の処理能力を向上させつつ、制御における処理時間の変動を抑制する技術が提案されている(例えば特許文献1)。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1には、情報処理の作業単位であるサブタスクについて、並列処理が可能であるかどうか判断する処理が記載されている。対象のサブタスクの並列処理が可能な場合に複数のコアに対してコアごとにサブタスクを割り当てて実行させる技術が開示されている。
【0007】
しかしながら、特許文献1の技術では、順番に実行するタスクに対し、並列処理を実施する対象のタスクの前のタスクを実行し終わった後、対象のタスクが並列処理可能かどうかの判断を実施している。そして、判断の実施の後、並列処理が可能な場合は並列処理の実行に必要な前処理を開始している。前処理の終了後、複数のコアに対象タスクを分散してサブタスクとして割り当て、並列に実行させる。各コアに分散したサブタスクの処理がすべて終了した後、分散処理の後処理を実行する。後処理が終了した後、当該タスクの次のタスクの実行を開始している。さらに、特許文献1ではコア上でのタスク切替、タスク分割に伴うオーバーヘッド(準備処理時間)を考慮していない。よって各コアの起動、サブタスクのソフトウェアの読み込みの時間などを計算していない。
【0008】
すなわち、並列処理の開始前に準備処理を含めた前処理が必要であり、同期処理も必要なので、各コアに待ち時間が発生する。よって、準備処理を含めた前処理に要する時間と各コアでの並列処理の同期をとる時間によって、対象となるサブタスクの実行時間の短縮が制限されることとなる。
【0009】
本願はかかる課題を解決するためになされたものである。マルチコアプロセッサを搭載した演算制御装置において、並列演算を実行する場合の準備処理を含めた前処理、同期処理に費やされる時間を短縮し、効率的な並列処理が可能となる演算制御装置を得ることを目的とする。
【課題を解決するための手段】
【0010】
本願に係る演算制御装置は、
複数のコアを有するプロセッサ、
プロセッサが処理すべき入力情報を受信する入力情報処理部、および、
入力情報に基づいて実行するタスクのうち、複数のコアに対してタスクの一部である複数のサブタスクを割り当てて並列処理が可能かどうか判断し、並列処理が可能な場合はサブタスクの実行のための入力パラメータが揃うよりも前に複数のコアにサブタスクの実行準備を完了させ、サブタスクの実行のための入力パラメータが揃った後に複数のコアにサブタスクの並列処理を開始させるタスク処理制御部、を備えたものである。
【発明の効果】
【0011】
本願に係る演算制御装置では、並列処理が可能な場合はサブタスクの実行のための入力パラメータが揃うよりも前に複数のコアにサブタスクの実行準備を完了させ、サブタスクの実行のための入力パラメータが揃った後に複数のコアにサブタスクの並列処理を開始させることができる。そのため、並列演算を実行する場合の準備処理を含めた前処理、同期処理に費やされる時間を短縮し、効率的な並列処理が可能となる演算制御装置を得ることが可能となる。
【図面の簡単な説明】
【0012】
【
図1】実施の形態1に係る演算制御装置の機能ブロック図である。
【
図2】実施の形態1に係る演算制御装置のハードウェア構成図である。
【
図3】実施の形態1に係る演算制御装置の機能とタスクの関係を示す図である。
【
図4】実施の形態1に係る演算制御装置のタスクの繋がりを示す図である。
【
図5】比較例に係る演算制御装置の第一処理部の処理を示すフローチャートである。
【
図6】実施の形態1に係る演算制御装置の第二処理部の処理を示すフローチャートである。
【
図7】比較例に係る演算制御装置のタスク処理を示すタイムチャートである。
【
図8】実施の形態1に係る演算制御装置の第一処理部の処理を示すフローチャートである。
【
図9】実施の形態1に係る演算制御装置のタスク処理を示すタイムチャートである。
【
図10】実施の形態2に係る演算制御装置の機能ブロック図である。
【
図11】実施の形態2に係る演算制御装置のハードウェア構成図である。
【
図12】実施の形態2に係る演算制御装置のタスクの繋がりを示す図である。
【
図13】実施の形態2に係る演算制御装置のタスク処理を示すタイムチャートである。
【
図14】実施の形態3に係る演算制御装置の機能ブロック図である。
【
図15】実施の形態3に係る演算制御装置のタスク処理を示すタイムチャートである。
【発明を実施するための形態】
【0013】
以下、本願の実施の形態に係る演算制御装置について、図面を参照して説明する。
【0014】
1.実施の形態1
<演算制御装置の機能ブロック>
図1は、実施の形態1に係る演算制御装置1の機能ブロック図である。演算制御装置1は、マルチ演算処理部101、タスク処理制御部102、入力情報処理部103および、出力情報処理部104を有している。
【0015】
演算制御装置1は、入力情報処理部103によって必要な情報を受信し、マルチ演算処理部101で処理をし、出力情報処理部104によって出力する。タスク処理制御部102は、入力情報処理部103が受信した入力情報を処理するために、プログラムを読み出してタスクごとの処理を第一処理部1011と第二処理部1012のどちらで実行するか判断し、タスクを第一処理部1011と第二処理部1012に割り当てて実行を指示する。
【0016】
タスクとは、コンピュータ処理における作業の単位を示す。タスクをより細かく切りわけてサブタスクとして示すこともある。複数のタスクが組み合わされてプログラムを構成する。プログラムはある一貫性のある状態から、別の一貫性のある状態にデータを変更する。このデータ変更をトランザクションと呼ぶこともある。
【0017】
タスク処理制御部102は、タスクまたはサブタスクが並列処理が可能かどうか判断する。並列処理が可能と判断した場合、これらを第一処理部1011と第二処理部1012に割り当てる。そして、各々のタスクまたはサブタスクが実行に必要とする入力パラメータが揃うより前に、第一処理部1011と第二処理部1012にサブタスクの実行準備を完了させる。第一処理部1011と第二処理部1012の実行準備が完了した後に、同時に第一処理部1011と第二処理部1012に並列処理を開始させる。
【0018】
<演算制御装置のハードウェア構成>
図2は、実施の形態1に係る演算制御装置1のハードウェア構成図である。演算制御装置1の各機能は、演算制御装置1が備えた処理回路により実現される。具体的には、演算制御装置1は、
図2に示すように、処理回路として、CPU(Central Processing Unit)などの演算処理装置90(プロセッサとも称する)、演算処理装置90とデータのやり取りする記憶装置91、演算処理装置90に外部の信号を入力する入力回路92、演算処理装置90から外部に信号を出力する出力回路93などのインターフェースを備えている。
【0019】
演算処理装置90として、ASIC(Application Specific Integrated Circuit)、IC(Integrated Circuit)、DSP(Digital Signal Processor)、FPGA(Field Programmable Gate Array)、各種の論理回路、及び各種の信号処理回路などが備えられてもよい。また、演算処理装置90として、同じ種類のものまたは異なる種類のものが複数備えられ、各処理が分担して実行されてもよい。
図2では、演算処理装置90はマルチコアプロセッサであって、コア901、コア902を備えている状態が記載されている。
【0020】
演算制御装置1には、記憶装置91として、演算処理装置90からデータを読み出し及び書き込みが可能に構成されたRAM(Random Access Memory)、演算処理装置90からデータを読み出し可能に構成されたROM(Read Only Memory)などが備えられている。記憶装置91は、演算処理装置90に内蔵されていてもよい。入力回路92は、入力信号、センサ、スイッチが接続され、これら入力信号、センサ、スイッチの信号を演算処理装置90に入力するA/D変換器などを備えている。出力回路93は、スイッチング素子をオンオフ駆動するゲート駆動回路などの電気負荷が接続され、これら電気負荷に演算処理装置90から制御信号を出力する駆動回路などを備えている。
【0021】
演算制御装置1が備える各機能は、演算処理装置90が、ROMなどの記憶装置91に記憶されたソフトウェア(プログラム)を実行し、記憶装置91、入力回路92、及び出力回路93などの演算制御装置1の他のハードウェアと協働することにより実現される。なお、演算制御装置1が用いる閾値、判定値などの設定データは、ソフトウェア(プログラム)の一部として、ROMなどの記憶装置91に記憶されている。演算制御装置1の有する各機能は、それぞれソフトウェアのモジュールで構成されるものであってもよいが、ソフトウェアとハードウェアの組み合わせによって構成されるものであってもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記録装置、ICカード、SDカード、 DVD等の記録媒体に格納することができる。
【0022】
<演算御装置の動作>
図2の演算処理装置90は、コア901、コア902を備えるデュアルコアプロセッサである。コアは、情報を処理するハードウェアブロックであり、演算処理装置90はコア901、コア902によって独立した並列演算が可能であり大量の情報を処理することができる。
【0023】
コア901、コア902は同等の性能を持つ代替え可能なハードウェアブロックであってもよい。また、メインコア、サブコアとして機能し、メインコアはサブコアよりも高性能であってもよい。
図1で説明した演算制御装置1の機能ブロックについて、以下では、タスク処理制御部102と、第一処理部1011の機能はコア901によってサポートされ、第二処理部1012の機能はコア902によってサポートされることとして説明する。
【0024】
タスク処理制御部102は、与えられたプログラムのタスクごとの演算要素(タスクの依存関係、優先度、演算順序、実行周期など)に基づき、現在の演算処理装置90が置かれた環境に基づいてタスクの並列処理が可能かどうか判断する。並列処理可能な場合は、タスクまたはサブタスクをマルチ演算処理部101の第一処理部1011と第二処理部1012に割り当てる。
【0025】
入力情報処理部103は、演算制御装置1の外部から入力データを受信し、タスク処理制御部102に通知する。タスク処理制御部102は、外部からの入力データと、当該入力データを処理したタスクの出力から、これから実行するタスクの入力パラメータが揃ったかどうか判断する。
【0026】
<タスク間の依存関係>
図3は、実施の形態1に係る演算制御装置1の機能とタスクの関係を示す図である。演算制御装置1に対して、例えば、機能F1、機能F2、機能F3が、プログラムP1を構成する場合について説明する。プログラムP1は、ソフトウェアコンポーネントとしてC言語などのソースコードにて記載されて演算制御装置1に与えられる。
【0027】
図3の場合、ソースコードに基づいて、機能F1、F2、F3に対して、演算M1、M2、M3が実施される。演算M1、M2、M3に対してタスクおよびサブタスクが、C1、C2-1、C2-2、C3として定義されている。タスク数の欄は、機能ごとに結び付けられているタスクおよびサブタスクの最小分割個数を示す。
【0028】
図4は、実施の形態1に係る演算制御装置1のタスクの繋がりを示す図である。機能F1、F2、F3で定義されるプログラムP1は、
図4に示すように、タスクC1を実行した結果が、サブタスクC2-1、サブタスクC2-2の入力パラメータとなる。そして、サブタスクC2-1、サブタスクC2-2の実行結果が、タスクC3の入力パラメータとなる。よって、C1とC2-1、C2-2の間に依存関係が存在し、C2-1、C2-2とC3の間に依存関係が存在する。サブタスクC2-1とサブタスクC2-2は、タスクC1の実行が完了した後において実行が可能であり、タスクC3はサブタスクC2-1とサブタスクC2-2の実行が完了した後において実行が可能であることが、ソースコードに基づき解読される。
【0029】
図5は、比較例に係る演算制御装置1の第一処理部1011の処理を示すフローチャートである。
図6は、実施の形態1に係る演算制御装置1の第二処理部1012の処理を示すフローチャートである。
図7は、比較例に係る演算制御装置1のタスク処理を示すタイムチャートである。ここで、比較例に係る演算制御装置1は、実施の形態1に係る演算制御装置1と同一の構成で、ソフトウェアのみ異なるものとする。よって、各部の符号は同一とする。また、第二処理部1012の処理を示すフローチャートは、比較例の場合も実施の形態1の場合も同一であり
図6に示す流れとなる。
【0030】
マルチ演算処理部101の第一処理部1011と第二処理部1012にて、2つのサブタスクが並列に実行される。第一処理部1011では、タスクC1、サブタスクC2-1、タスクC3、が実行される。第二処理部1012ではサブタスクC2-2が実行される。
【0031】
<比較例の第一処理部のフローチャート>
図5では、機能F1、F2、F3で示すプログラムP1の処理が第一処理部1011にて実行される。処理が開始され、ステップS101で、タスクC1の実行準備がされる。実行準備には、タスク実行のためのソフトウェアの読み出し、メモリの初期設定などが含まれる。これらによって、タスクC1実行のためのオーバーヘッド(準備処理時間)が発生する。
【0032】
ステップS102では、タスクC1が実行される。タスクC1実行が完了した後、ステップS103では、タスク処理制御部102によって、次のタスクであるサブタスクC2-1、C2-2の並列処理の可否判断処理が行われる。現在時点での、コア901、コア902の負荷と、実施すべきタスクの優先順位などから並列処理の可否判断が実行される。ここでは、並列処理が可能と判断された場合について説明する。並列処理不可の場合についての説明は省略する。
【0033】
ステップS104では、サブタスクC2-2を第二処理部1012で実行させるために第二処理部1012の起動とサブタスクC2-2の実行準備の指示を行う。第二処理部1012をサポートするコア902についてメモリを初期化し、サブタスクC2-2のソフトウェアの読み出しとメモリの初期設定などを行い、実行のための準備を整える。予め定めたスケジュールに基づく情報処理の割り当てではなく、リアルタイムに情報処理の分担を決定する動的スケジューリングを行う。そのため、コア902にサポートされた第二処理部1012は、ソフトウェアが指定されるごとに起動と実行準備を必要とする。これらによって、サブタスクC2-2実行のためのオーバーヘッド(準備処理時間)が発生する。
【0034】
ステップS105では、サブタスクC2-1を実行するための準備を行う。このステップは、サブタスクC2-1実行のためのオーバーヘッド(準備処理時間)の発生につながる。しかし、第一処理部は、タスクC1、C2-1、C3を実行する予定が確定しているのでソフトウェアの読み出しをタスクC1の実行前に既に実施済である。また、メモリの初期値は、タスクC1の実行完了によって設定済みであって準備のための処理を省略できる。
【0035】
ステップS106では、第二処理部1012の実行準備が完了したかどうか判定する。実行準備が完了していない場合(判定はNO)は、ステップS106を繰り返して待機する。実行準備が完了している場合(判定はYES)は、ステップS107へ進む。
【0036】
ステップS107では、サブタスクC2-2の入力情報を第二処理部1012へ送信し、サブタスクC2-2の実行を指示する。サブタスクC2-2の実行指示(並列処理開始要求)は、サブタスクC2-2の入力情報の送信をもって実行指示とすることとしてもよい。そしてステップS108でサブタスクC2-1を実行する。第一処理部でのサブタスクC2-1の実行と、第二処理部でのサブタスクC2-2の実行はほぼ同時に開始される。よって、サブタスクC2-1、サブタスクC2-2は同期して実行されることになりタイミングが明確となる。
【0037】
ステップS109では、サブタスクC2-2が実行終了して、実行結果が受信されたかどうか判定する。実行結果が受信されなかった場合(判定はNO)は、ステップS109を繰り返し待機する。実行結果が受信された場合(判定はYES)は、ステップS110に進む。
【0038】
ステップS110では、タスクC3の実行の準備をする。このステップは、タスクC3実行のためのオーバーヘッド(準備処理時間)の発生につながる。しかし、第一処理部は、タスクC1、C2-1、C3を実行する予定が確定しているのでソフトウェアの読み出しをタスクC1の実行前に既に実施済である。また、メモリの初期値は、サブタスクC2-2の実行完了とサブタスクC2-2の実行結果の取得によって設定済みであって準備のための処理を省略できる。
【0039】
ステップS111では、タスクC3を実行する。タスクC3の実行を終了すると、処理を終了する。
【0040】
<第二処理部のフローチャート>
図6では、機能F2の一部であるサブタスクC2-2で示す処理が第二処理部1012にて実行される。処理が開始され、ステップS201で、第一処理部1011から第二処理部1012の起動およびサブタスクの実行準備の指示があるかどうか判定する。指示が無ければ(判定はNO)ステップS201を繰り返し、指示があるまで待機する。指示がある場合(判定はYES)ステップS202へ進む。
【0041】
ステップS202では、コア902でサポートされた第二処理部1012の起動がされ、メモリの初期化処理などがなされる。そして、指定されたサブタスクの実行準備が行われる。ここでは、第一処理部からサブタスクC2-2の実行準備が指示される。サブタスクC2-2のソフトウェアの読み出し、メモリの初期設定などが行われる。これらによって、サブタスクC2-2実行のためのオーバーヘッド(準備処理時間)が発生する。
【0042】
ステップS203では、第二処理部1012から第一処理部1011へ、準備完了通知が送信される。ステップS204では、サブタスクの入力情報と実行指示(並列処理開始要求)を第一処理部1011から受信したかどうか判定される。入力情報と実行指示が無い場合(判定はNO)は、ステップS204を繰り返し待機する。入力情報と実行指示がある場合(判定はYES)は、ステップS205へ進む。ここでは、第一処理部1011からサブタスクC2-2の入力情報と実行指示を受信する。サブタスクC2-2の実行指示は、サブタスクC2-2の入力情報の受信をこれに代えることとしてもよい。
【0043】
ステップS205では、指定されたサブタスクを実行する。ここでは、サブタスクC2-2を実行する。実行終了後、ステップS206では、サブタスクの実行結果を第一処理部1011へ送信する。その後処理を終了する。
【0044】
図5、
図6のフローチャートで説明した第一処理部1011と第二処理部1012の処理の実行を
図7のタイムチャートに示す。第二処理部1012の起動・準備の時間が第一処理部1011の待機時間となってプログラムP1の開始から終了までの時間を延長する要素となっている。
【0045】
<実施の形態1の第一処理部のフローチャート>
図8は、実施の形態1に係る演算制御装置1の第一処理部1011の処理を示すフローチャートである。
図8のフローチャートは、比較例に係る
図5ステップS102の処理の位置を、ステップS101の後の位置から、ステップS104の後の位置へ移動させた点のみが異なる。
【0046】
ステップS102にて実行しているタスクC1の実行の前に、ステップS103、ステップS104の処理を先行させた点に比較例との差異が存在する。ステップS103を前置したことによって、サブタスクC2-1、C2-2の並列処理の可否を先に判断する。そして、並列処理可能な場合のステップS104の第二処理部1012の起動とサブタスクC2-2の実行準備指示を先に出すことができる。
【0047】
これによって、時間遅れ要素となる第二処理部1012の起動とサブタスクC2-2の実行準備を先行させることができる。サブタスクC2-2実行のためのオーバーヘッド(準備処理時間)が先行して発生する。その結果、第一処理部1011におけるタスクC1の実行期間中に第二処理部1012の起動とサブタスクC2-2の実行準備を完了することができる。
【0048】
図9は、実施の形態1に係る演算制御装置1のタスク処理を示すタイムチャートである。第二処理部1012の起動とサブタスクC2-2の実行準備を先行させることによって、第一処理部1011のタスクC1実行中にこれらの処理を実施することができる。これによって、プログラムP1開始からプログラムP1終了までの時間が短縮されている。
【0049】
以上のように、実施の形態1に係る演算制御装置1では、並列処理が可能な場合はサブタスクの実行のための入力情報(入力パラメータ)が揃うよりも前に複数のコア901、902にサブタスクの実行準備を完了させ、サブタスクの実行のための入力情報が揃った後に複数のコア901、902にサブタスクの並列処理を開始させることができる。そのため、並列演算を実行する場合の準備処理を含めた前処理、同期処理に費やされる時間を短縮し、効率的な並列処理が可能となる演算制御装置1を得ることが可能となる。
【0050】
2.実施の形態2
<演算制御装置の構成>
図10は、実施の形態2に係る演算制御装置1aの機能ブロック図である。
図11は、実施の形態2に係る演算制御装置1aのハードウェア構成図である。実施の形態1に係る演算制御装置1では、演算処理装置90が2個のコア901、コア902を持つデュアルコアプロセッサであったのに比べ、
図11に示す演算制御装置1aの演算処理装置90aは、コアを8個有するオクタコアプロセッサである。そして、これに対応して、
図10の演算制御装置1aの機能ブロック図では、マルチ演算処理部101aに第一処理部1011、第二処理部1012、第三処理部1013、第四処理部1014、第五処理部1015、第六処理部1016、第七処理部1017、第八処理部1018の8個の処理部を設けている。これらの8個の処理部の機能は、
図11に示したコア901、コア902、コア903、コア904、コア905、コア906、コア907、コア908の8個のコアによってサポートされる。また、タスク処理制御部102aの機能もコア901によってサポートされていることとする。
【0051】
コア901からコア904までは高速演算のできる高速コア、コア905からコア908までは低速演算のための低速コアである。実施の形態2として、以下ではコア901からコア904の4個のコアを用いて、並列処理を実施する例について説明する。
【0052】
図12は、実施の形態2に係る演算制御装置1aのタスクの繋がりを示す図である。実施の形態2では、プログラムP2は、タスクC1、サブタスクC2-1、C2-2、C2-3、C2-4、およびC3から構成される。
図12に示すように、タスクC1を実行した結果が、サブタスクC2-1、C2-2、C2-3、およびC2-4の入力パラメータとなる。そして、サブタスクC2-1、C2-2、C2-3、およびC2-4の実行結果が、タスクC3の入力パラメータとなる。よって、C1とC2-1、C2-2、C2-3、およびC2-4の間に依存関係が存在し、C2-1、C2-2、C2-3、およびC2-4とC3の間に依存関係が存在する。サブタスクC2-1、C2-2、C2-3、およびC2-4は、タスクC1の実行が完了した後において実行が可能であり、タスクC3はサブタスクC2-1、C2-2、C2-3、およびC2-4の実行が完了した後において実行が可能であることが、ソースコードに基づき解読される。
【0053】
図13は、実施の形態2に係る演算制御装置1aのタスク処理を示すタイムチャートである。第一処理部1011、第二処理部1012、第三処理部1013、第四処理部1014で実行するソフトウェアのフローチャートは、実施の形態1に係る
図8の第一処理部の処理を示すフローチャートと、
図6の第二処理部の処理を示すフローチャートに準ずるので説明を省略する。
【0054】
図13に示すように、第二処理部1012、第三処理部1013、第四処理部1014の起動とサブタスクC2-2、C2-3、およびC2-4の実行準備を先行させる。これによって、サブタスクC2-2、C2-3、およびC2-4の実行のためのオーバーヘッド(準備処理時間)の発生を先行させることができる。そして、第一処理部1011のタスクC1実行中にこれらの処理を実施することができる。
【0055】
そのため、タスクC1の実行完了によってサブタスクC2-1、C2-2、C2-3、およびC2-4の入力パラメータが得られた時点で、入力情報を第一処理部1011から第二処理部1012、第三処理部1013、および第四処理部1014へ送信する。そして、実行指示(並列処理開始要求)により同時にサブタスクC2-1、C2-2、C2-3、およびC2-4を実行開始することができる。よって、サブタスクC2-1、C2-2、C2-3、およびC2-4を同期して実行することになりタイミングが明確となる。入力情報の送信をもって実行指示に代えることとしてもよい。なお、
図13では、サブタスクC2-1の実行準備は、第一処理部のタスクC1の実行準備時にソフトウェアを読み出し済みであり、サブタスクC2-1のための入力情報はタスクC1の実行完了によって設定済みであるので処理を省略することができる。
【0056】
よって、プログラムP2開始からプログラムP2終了までの時間が短縮されている。実施の形態2に係る演算制御装置1aでは、並列処理が可能な場合はサブタスクの実行のための入力情報(入力パラメータ)が揃うよりも前に複数のコア901から904にサブタスクの実行準備を完了させ、サブタスクの実行のための入力情報が揃った後に複数のコア901から904にサブタスクの並列処理を開始させることができる。そのため、並列演算を実行する場合の準備処理を含めた前処理、同期処理に費やされる時間を短縮し、効率的な並列処理が可能となる演算制御装置1aを得ることが可能となる。
【0057】
図10、11ではコアが8個の場合のマルチコアプロセッサである演算処理装置90aについて例示したが、コアの数はこれに限るものではない。また、コアの種類を高速コアと低速コアの二種類の場合を例示した。コアの性能の段階は二段階には限られず、三段階以上であってもよいし、全てのコアが同一の性能を有していてもよい。
【0058】
3.実施の形態3
図14は、実施の形態3に係る演算制御装置1bの機能ブロック図である。実施の形態3に係る演算制御装置1bは、実施の形態2に係る演算制御装置1aのソフトウェアの変更のみによって実現できるので、タスク処理制御部102bを除いたこれ以外の符号は実施の形態2に係る演算制御装置1aと同一とする。
【0059】
図15は、実施の形態3に係る演算制御装置1bのタスク処理を示すタイムチャートである。実施の形態3では、演算制御装置1bが実行するプログラムP2は、実施の形態2と同様に
図12に示されるタスクC1、サブタスクC2-1、C2-2、C2-3、C2-4、およびC3から構成される。実施の形態3に係る演算制御装置1bでは、第二処理部1012、第三処理部1013、第四処理部1014の起動とサブタスクC2-2、C2-3、およびC2-4の実行準備を先行させる。これによって、サブタスクC2-2、C2-3、およびC2-4の実行のためのオーバーヘッド(準備処理時間)の発生を先行させることができる。そのため、第一処理部1011のタスクC1実行中にこれらの処理を実施することができる。この部分は実施の形態2に係る
図13と同様である。
【0060】
実施の形態3では、これに加えて、第一処理部1011においてタスクC1の実行中にサブタスクC2-2、C2-3、およびC2-4のそれぞれが必要とする入力情報(入力パラメータ)が揃った時点で、各入力情報と実行指示を第二処理部1012、第三処理部1013、第四処理部1014へ伝達する。それによって、サブタスクC2-2、C2-3、およびC2-4の実行が迅速に進められることとなる。これによって、サブタスクC2-2、C2-3、およびC2-4の実行終了時刻を早めることができ、全体としてプログラムP2の開始からプログラムP2の終了までの期間を短縮することができる。なお、入力情報の送信をもって実行指示に代えることとしてもよい。
【0061】
ここで、第一処理部1011はタスクC1の実行完了後でないと、次のサブタスクC2-1の実行を開始することができない。よって、タスク処理制御部102bがサブタスクC2-1、C2-2、C2-3、C2-4の割り当てを決定するときに、タスクC1の実行中に入力パラメータが揃うのが最も遅くなるサブタスクを第一処理部1011で実行することとすればよい。
【0062】
以上のように、実施の形態3に係る演算制御装置1bによれば、並列処理が可能な場合はサブタスクの実行のための入力パラメータが揃うよりも前に前記複数のコアに前記サブタスクの実行準備を完了させる。そして、サブタスクごとに実行のための入力情報が揃った順に前記複数のコアに並列処理を開始させる。これによって、並列演算を実行する場合の準備処理を含めた前処理、同期処理に費やされる時間を短縮し、効率的な並列処理が可能となる演算制御装置を得ることが可能となる。
【0063】
本願は、様々な例示的な実施の形態及び実施例が記載されているが、1つ、または複数の実施の形態に記載された様々な特徴、態様、及び機能は特定の実施の形態の適用に限られるのではなく、単独で、または様々な組み合わせで実施の形態に適用可能である。従って、例示されていない無数の変形例が、本願明細書に開示される技術の範囲内において想定される。例えば、少なくとも1つの構成要素を変形する場合、追加する場合または省略する場合、さらには、少なくとも1つの構成要素を抽出し、他の実施の形態の構成要素と組み合わせる場合が含まれるものとする。
【符号の説明】
【0064】
1 演算制御装置、90 演算処理装置、101 マルチ演算処理部、102 タスク処理制御部、103 入力情報処理部、901、902、903、904、905、906、907、908 コア