(57)【要約】【課題】複数の処理の配置状況に応じて、複数種類の同期機構のいずれかを用いて同期を行う又は同期機構を使用しないことを切り替えることができる制御装置を提供する。【解決手段】動作状況管理部３２は、コア１２１〜１２４への複数のタスクの配置状況を検出する。複数種類の同期機構３５（３５−１〜３５−ｍ）は、複数のタスクの間の同期をとる。同期機構選択ルール５０は、コア１２１〜１２４への複数のタスクの配置状況と、同期機構３５を使用する第１処理又は同期機構３５を使用しない第２処理を示す識別子と、を対応づけて記憶する。実行部４０は、動作状況管理部３２によって検出された複数のタスクの配置状況に対応する識別子が示す第１処理又は第２処理を実行する。【選択図】図３
2018106472.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記複数のプロセッサへの複数の処理の配置状況を検出する検出部と、
前記複数の処理の間の同期をとる複数種類の同期機構と、
前記配置状況と、前記同期機構を使用する第１処理又は前記同期機構を使用しない第２処理を示す識別子と、を対応づけて記憶するメモリと、
前記検出部によって検出された前記配置状況に対応する前記識別子が示す前記第１処理又は前記第２処理を実行する実行部と、
を備えることを特徴とする制御装置。
【請求項２】
請求項１に記載の制御装置であって、
前記検出部は、
前記制御装置の消費電力を示す制御モードを検出し、
前記メモリは、
前記制御モードと、前記配置状況と、を対応づけて記憶し、
前記制御装置は、
前記検出部によって検出される前記制御モードに対応する前記配置状況に基づいて、前記複数の処理を前記複数のプロセッサへ配置する動作単位制御部を備える
ことを特徴とする制御装置。
【請求項３】
請求項２に記載の制御装置であって、
前記動作単位制御部は、
前記検出部によって検出される前記制御モードが前記制御装置の最小の消費電力を示す場合、前記複数の処理を前記複数のプロセッサのうちの１つに配置し、
前記実行部は、
前記複数の処理が前記複数のプロセッサのうちの１つのみに配置される場合、前記第２処理を実行する
ことを特徴とする制御装置。
【請求項４】
請求項３に記載の制御装置であって、
前記実行部は、
前記第２処理として、前記複数の処理を１つに統合し、統合された１つの処理を実行する
ことを特徴とする制御装置。
【請求項５】
請求項２に記載の制御装置であって、
前記検出部は、
前記制御装置にインストールされるオペレーションシステムが対称型であるか又は非対称型であるかを示すＯＳモードを検出し、
前記メモリは、
前記ＯＳモード及び前記配置状況の組合せと、前記識別子とを対応づけて記憶し、
前記実行部は、
前記検出部によって検出された前記ＯＳモード及び前記配置状況の組合せに対応する前記識別子が示す前記第１処理又は前記第２処理を実行する
ことを特徴とする制御装置。
【請求項６】
請求項２に記載の制御装置であって、
第１バッファと第２バッファを備え、
前記実行部は、
前記第２処理を実行する場合、第１期間において、前記複数の処理の書き込みに前記第１バッファを用い、前記複数の処理の読み込みに前記第２バッファを用い、前記第１期間の後の第２期間において、前記複数の処理の書き込みに前記第２バッファを用い、前記複数の処理の読み込みに前記第１バッファを用いる
ことを特徴とする制御装置。
【請求項７】
請求項２に記載の制御装置であって、
前記動作単位制御部は、
前記検出部によって検出される前記制御モードが示す前記制御装置の消費電力が小さくなるにつれて、前記複数の処理の数を減らす
ことを特徴とする制御装置。
【請求項８】
請求項７に記載の制御装置であって、
前記動作単位制御部は、
前記検出部によって検出される前記制御モードが示す前記制御装置の消費電力が小さくなるにつれて、使用するプロセッサの数を減らす
ことを特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置に関する。
【背景技術】
【０００２】
車載制御装置などの電子制御装置には、マルチプロセッサが採用されている。また１つのプロセッサに複数のプロセッサコア（以下「コア」）を持つマルチコア構成が取られている。ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の制御により並行動作する処理（プロセス、タスク、スレッドなど）や、プロセッサコア間で並列動作する処理の間では、同期が必要とされる場合がある。同期のために掛かる処理のオーバーヘッドは小さい方が好ましい。
【０００３】
ＯＳの種類には、ＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉｐｒｏｃｅｓｉｎｇ）とＡＭＰ（Ａｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉｐｒｏｃｅｓｓｉｎｇ）とがある。ＳＭＰでは、１つのＯＳが複数のプロセッサコアを扱い、実行状態に移される処理は空いているコアで実行される。つまり処理を実行するコアは動的に選択される。これに対しＡＭＰでは、処理が実行されるコアは事前に決定されており、静的に選択される。ＳＭＰ  ＯＳはコア間で処理負荷の平準化を図ることができ、ＡＭＰ  ＯＳはリアルタイム性が確保しやすい、などの特徴がそれぞれある。
【０００４】
一方、マルチコアプロセッサを用いたシステムでは、稼働するコアを動的に変更する場合がある。例えば消費電力低減のために、実行する処理が少ない制御モードでは、いくつかのコアを休止し、残りのコアだけで動作を継続する。この場合、ＡＭＰ  ＯＳでは、コアへの処理の再配置が生じる。
【０００５】
コアへの処理配置が変わるときのように、処理の動作状況に変化があるときには、同期が必要な処理について、適切な同期機構を選択し直す余地が生じる。
【０００６】
特許文献１では、スレッドの状態や属性に応じて、同期機構を選択している。具体的には、スレッド間で通信などを行い密接に連携して動作するスレッドは「密結合スレッドグループ」に属し、バッファを用いてデータ交換するスレッドは「疎結合スレッドグループ」に属すとして、密結合スレッドグループのスレッドはハードウェアなどによる高速な同期機構を、疎結合スレッドグループのスレッドはＯＳのサービスなどによる低速な同期機構を使う、としている。
【０００７】
特許文献２では、スレッドの動作数とスレッドが動作しているコアの数に応じて、バリア同期の方式を選択する方法を開示している。スレッド数≦コア数のときには、ビジーウェイト方式のバリア同期を、またスレッド数＞コア数のときには、サスペンド・リジューム方式のバリア同期を選択する。ビジーウェイト方式の長所は待ち時間が小さいことであるが、プロセッサ負荷が発生し、並列動作している他スレッドの動作を妨げる恐れのある点が短所である。これに対し、スレッド数≦コア数のときにはコアごとに動作するスレッド数は1つ以下であり、ビジーウェイトを行っても他スレッドの動作を妨げることがないので、ビジーウェイト方式の短所の影響を受けずに用いることができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開2005-100264号公報
【特許文献２】特開2016-062388号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１では、ＯＳはＳＭＰであり、スレッドが実行されるプロセッサコアは動的に選択される想定となっている。このため、同期が必要なスレッドのプロセッサコアへの配置状況は時点により異なる。このような動作条件では、スレッドが動作するコアによらずに同期を実現できる機構を利用する必要がある。これに対しＡＭＰ  ＯＳのように、処理の動作するコアが静的に決定されている場合、その情報を利用すれば、処理の動作状況によっては、オーバーヘッドがより小さい同期機構を利用できる可能性がある。
【００１０】
特許文献２は、スレッドの動作数とスレッドが動作しているコアの数に応じて適切な同期方式を選択することができるが、対象となる同期機構がバリア同期に限定されている。スレッド（またはプロセスやタスク）やコアの動作状況に応じて選択する同期機構の対象をバリア同期以外にも広げれば、処理性能や消費電力などの点で改善を期待できる。しかしこの場合、同期機構の選択方法を明らかにしなければならない。
【００１１】
本発明の目的は、複数の処理の配置状況に応じて、複数種類の同期機構のいずれかを用いて同期を行う又は同期機構を使用しないことを切り替えることができる制御装置を提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明は、複数のプロセッサと、前記複数のプロセッサへの複数の処理の配置状況を検出する検出部と、前記複数の処理の間の同期をとる複数種類の同期機構と、前記配置状況と、前記同期機構を使用する第１処理又は前記同期機構を使用しない第２処理を示す識別子と、を対応づけて記憶するメモリと、前記検出部によって検出された前記配置状況に対応する前記識別子が示す前記第１処理又は前記第２処理を実行する実行部と、を備える。
【発明の効果】
【００１３】
本発明によれば、複数の処理の配置状況に応じて、複数種類の同期機構のいずれかを用いて同期を行う又は同期機構を使用しないことを切り替えることができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態によるコントローラを含むシステムのハードウェア構成を示す図である。
【図２】タスクの構成を示す図である。
【図３】本発明の第１の実施形態によるコントローラの機能構成を示す図である。
【図４】同期機構選択部の処理フローを示す図である。
【図５Ａ】同期機構選択ルールの構成を示す図である。
【図５Ｂ】処理ルーチン選択ルールの構成を示す図である。
【図６】タスクのコアへの配置（通常モード）を示す図である。
【図７】タスクの動作（通常モード）を示す図である。
【図８】タスクのコアへの配置（低消費電力１モード）を示す図である。
【図９】タスクの動作（低消費電力１モード）を示す図である。
【図１０】タスクのコアへの配置（低消費電力２モード）を示す図である。
【図１１】タスクの動作（低消費電力２モード）を示す図である。
【図１２】本発明の第２の実施形態によるコントローラに含まれるデータ授受部及びデータアクセス制御部の動作を説明するための図である。
【発明を実施するための形態】
【００１５】
以下、図面を用いて、本発明の第１〜第２の実施形態によるコントローラ（制御装置）の構成及び動作について説明する。なお、各図において、同一符号は同一部分を示す。
【００１６】
（第１の実施形態）
図１は本発明を適用した制御システムのハードウェア構成例を示している。コントローラ１０１はセンサ１０２、アクチュエータ１０３と接続しており、センサ１０２から得られる情報を入力として、アクチュエータ１０３に制御信号を出力している。センサ１０２の例としてホール素子、アクチュエータ１０３の例としてブラシレスＤＣモータがある。センサ１０２やアクチュエータ１０３はそれぞれ複数あってもよい。
【００１７】
コントローラ１０１内において、センサ１０２は入力回路１１１と、アクチュエータ１０３は出力回路１１２に接続され、さらに入力回路１１１と出力回路１１２はマイクロコンピュータ１１０の入出力回路１３０（ＩＯ）と接続されている。マイクロコンピュータ１１０には４つのプロセッサコア１２１〜１２４（複数のプロセッサ）、ＲＡＭ１４０（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ１５０（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、不揮発メモリ１６０（ＮＶＲＡＭ）を備え、入出力回路１３０も含めて、これらの回路はバスで接続されている。またコントローラ１０１は電源回路１１３を有する。
【００１８】
以下では、図１のシステムにおけるソフトウェア構成例を説明する。コア１２１〜１２４（ＰＣ１〜ＰＣ４）にはそれぞれＡＭＰ  ＯＳが配置されている。ＯＳのタスクは初期状態として、タスクＡ〜Ｅの５つが用意されている。タスクＡ〜Ｃが制御に直接関係し、タスクＤ，Ｅは制御に直接関係しない診断などの処理である。これらのタスクはＯＳにより周期的に実行されている。また、タスクＡ〜ＥにはそれぞれタスクＩＤとして１６進数表現で０ｘ１０〜０ｘ１４が付与されている。
【００１９】
図２はタスクＡ〜Ｃの構成を示している。タスクＡはサブタスクａ１（関数で構成される）とａ２を、タスクＢはサブタスクｂを、タスクＣはサブタスクｃを実行する。制御の処理の流れは、サブタスクａ１、ｂ、ｃがセンサ１０２から信号を取得して入力とし、入力に対して中間データｄ１、ｄ２、ｄ３をそれぞれ生成し、その後でサブタスクａ２が中間データｄ１〜ｄ３を入力として、制御信号を計算し、その信号をアクチュエータ１０３に出力する。
【００２０】
図３は本発明を適用した制御システムの機能構成、および機能間の信号やデータの流れを示している。各機能はソフトウェアプログラムにより実現される。これらソフトウェアプログラムはマイクロコンピュータ１１０にて、ＲＯＭ１５０に格納され、ＲＡＭ１４０を一時記憶として利用し、コア１２１〜１２４上で動作し、データの記録・読出しを不揮発メモリ１６０に対して行う。
【００２１】
動作単位制御部３１は、ＯＳのタスクとして実行する処理を規定し、各タスクを実行するコアを選択して、タスクを配置する。動作状況管理部３２は、動作単位制御部３１からタスクのコアへの配置情報（タスク配置情報P_task）を取得する。また、動作状況管理部３２は、各コアの動作情報O_coreや各タスクの動作情報O_taskをマイクロコンピュータ１１０やＯＳから取得する。
【００２２】
換言すれば、動作状況管理部３２（検出部）は、コア１２１〜１２４（複数のプロセッサ）への複数のタスク（処理）の配置状況を検出する。
【００２３】
同期機構利用部３３（３３−１〜３３−ｎ）は、各タスクにおいて同期が必要な点に配置されており、同期を取る複数の同期機構利用部３３には共通のＩＤ（以下「同期ＩＤ」）が付与されている。同期機構利用部３３は同期ＩＤ（ID_sync）とタスクＩＤ（ID_task）をパラメータ値として、同期機構選択部３４を呼び出す。
【００２４】
同期機構選択部３４は、動作状況管理部３２から各タスクのコアへの配置情報（タスク配置情報P_task：どのコアに配置されているか、または配置されていないか）、および各タスクの動作情報O_task（例えばＯＳが示す動作モードとして、動作中、待機中、実行待ち、実行可能のいずれか）を取得する。各コアの動作情報O_core（例えば動作中、休止中のいずれか）を、タスクの動作情報O_taskとは別に取得してもよい。以降では動作状況管理部３２から取得されるこれらの情報をまとめて「タスク配置動作情報」と呼ぶ。同期機構選択部３４は同期機構利用部３３からの呼び出しを受けて、タスク配置動作情報をもとに、同期ＩＤ（ID_sync）に対応して適切な同期機構を同期機構３５（３５−１〜３５−ｍ）から選択し、実行する。この選択には、後述の「同期機構選択ルール」や「処理ルーチン選択ルール」を用いる。
【００２５】
換言すれば、複数種類の同期機構３５（３５−１〜３５−ｍ）は、複数のタスク（処理）の間の同期をとる。実行部４０は、動作状況管理部３２（検出部）によって取得（検出）された複数のタスク（処理）の配置状況に対応する識別子が示す第１処理又は第２処理を実行する。ここで、識別子は、同期機構３５を使用する第１処理又は同期機構３５を使用しない第２処理を示す。識別子の詳細については、図５Ａを用いて、後述する。
【００２６】
なお、実行部４０は、コア１２１〜１２４の少なくとも１つが所定のプログラムを実行することにより実現される。本実施形態では、実行部４０は、同期機構利用部３３、同期機構選択部３４、データ授受部３６、データアクセス制御部３７から構成されるが、後述する「同期機構選択ルール」や「処理ルーチン選択ルール」に応じて、その構成要素を削除、変更してもよい。
【００２７】
図２のタスクＡ〜Ｃには同期機構利用部３３−１〜３３−３が配置されており、３３−１がサブタスクａ１の最後に、３３−２がｂの最後に、３３−３がｃの最後に配置されている。また同期機構利用部３１−１〜３１−３には、共通の同期ＩＤとして１６進数表現で０ｘ０１が付与されている。
【００２８】
データ授受部３６（３６−１〜３６−ｋ）は、同期を取るタスクに配置されている。データ授受部３６はデータアクセス制御部３７に対し、データのＩＤを指定してデータの読み書きを行う。データアクセス制御部３７はＲＡＭ１４０上に設けられたデータバッファに対してデータの読み書きを行う。その際、データアクセス制御部３７は、動作状況管理部３２からのタスク配置動作情報に基づき、読み書き位置の制御を行う。データ授受部３６がデータアクセス制御部３７を介してデータの読み書きを行うことで、同期を取るタスク間でのデータの受け渡しがなされる。
【００２９】
図４は同期機構選択部３４が同期機構利用部３３の呼び出しに応じて実行する処理のフローである。処理を開始後、ステップ４１にて、タスク配置動作情報を取得する。次にステップ４２にて、タスク配置動作情報から、同期機構選択ルールに基づき、利用する同期機構３５の種類を選択する。詳細については、図５Ａを用いて、後述する。
【００３０】
次にステップ４３にて、同期機構利用部３３の同期ＩＤから、ステップ４２で選択された同期機構３５の種類に対応した同期オブジェクトを選択する。また、選択された同期機構３５の種類から、処理ルーチン選択ルールに基づき、同期オブジェクトを利用する処理ルーチンも選択する。同期機構３５の種類によっては、タスクＩＤごとに同期オブジェクトの利用方法が異なる。その場合には、同期ＩＤおよびタスクＩＤに対応する処理ルーチンも選択する。同期オブジェクトと処理ルーチンとを合わせて、同期機構３５である。詳細については、詳細については、図５Ｂを用いて、後述する。
【００３１】
次にステップ４４にて、ステップ４３で選択した同期機構３５の同期オブジェクトと、処理ルーチンを用いて同期処理を実行する。以上で処理を終了する。
【００３２】
図５Ａの同期機構選択ルール５０は、同期機構選択ルールの例を表形式で示したものである。同期機構選択ルール５０の各行が１つのルールに対応している。列の項目には「制御モード」「コア１」「コア２」「同期機構」がある。「制御モード」はシステムの制御モードである。ここでは、制御モードがタスク配置動作情報と関連している、つまり制御モードに対してタスクのコアへの配置や、タスクの動作有無が静的に決定されている。
【００３３】
換言すれば、動作状況管理部３２（検出部）は、コントローラ１０１（制御装置）の消費電力（通常、低消費電力１、低消費電力２）を示す制御モードを検出する。同期機構選択ルール５０は、制御モードと、配置状況と、を対応づけて記憶する。動作単位制御部３１は、動作状況管理部３２によって検出される制御モードに対応する配置状況に基づいて、複数のタスク（処理）をコア１２１〜１２４（複数のプロセッサ）へ配置する。これにより、制御モードに応じて、複数のタスクが静的にコア１２１〜１２４へ配置される。
【００３４】
なお、同期機構選択ルール５０は、例えば、ＲＯＭ１５０、不揮発メモリ１６０等のメモリに記憶される。動作状況管理部３２（検出部）は、上位システムに現在の制御モードを問い合わせてもよいし、上位システム等によって所定のメモリに記憶された現在の制御モードを読み出してもよい。
【００３５】
「コア１」「コア２」は各コアで動作しているタスク、「同期機構」は選択される同期機構の種類を示す値が入る。制御モードや同期機構などの項目の値は、図５Ａでは「通常」といった名称が入っているが、実際のプログラムではＩＤが入る。
【００３６】
換言すれば、同期機構選択ルール５０は、コア１２１〜１２４（複数のプロセッサ）への複数のタスク（処理）の配置状況と、同期機構３５を使用する第１処理又は同期機構３５を使用しない第２処理を示す識別子と、を対応づけて記憶する。
【００３７】
同期機構選択ルール５０には、制御モードが「通常」「低消費電力１」「低消費電力２」の３つのモードに対応するルールが定義されている。同期機構選択部３４は、タスク配置動作情報から同期機構の選択を行う。または、動作状況管理部３２から現在の制御モードを取得し、制御モードに合致する同期機構を選択してもよい。以下の説明は、タスク配置動作情報から選択することを前提とする。
【００３８】
同期機構選択ルール５０にて、１行目は制御モードが「通常」であり、「コア１」の列には「タスクＡ，Ｂ」，「コア２」の列には「タスクＣ」と記されている。「コア１」はプロセッサコア１２１、「コア２」はコア１２２のことである。つまり、コア１２１でタスクＡとタスクＢが動作し、コア１２２でタスクＣが動作している状況を示す。このようなタスクのコアへの配置およびタスクの動作時には、同期機構としてバリア同期が選択される設定となっている。
【００３９】
同様に、２行目は制御モードが「低消費電力１」であり、コア１ではタスクＡが、コア２ではタスクＣが動作する状況を示しており、同期機構としてはスピンロックが選択される設定となっている。また、３行目は制御モードが「低消費電力２」であり、コア１でタスクＡとタスクＣが動作する状況を示しており、同期機構としてはＯＳのイベントが選択される設定となっている。
【００４０】
なお、動作単位制御部３１は、同期機構選択ルール５０に従い、動作状況管理部３２（検出部）によって検出される制御モード（通常、低消費電力１、低消費電力２）が示すコントローラ１０１（制御装置）の消費電力が小さくなるにつれて、複数の処理の数を減らす。また、動作単位制御部３１は、動作状況管理部３２によって検出される制御モードが示すコントローラ１０１の消費電力が小さくなるにつれて、使用するコア（プロセッサ）の数を減らす。ここで、制御モードが、「通常」、「低消費電力１」、「低消費電力２」の場合の電力値を、それぞれ、Ｐｎ、Ｐ1、Ｐ２とすると、Ｐｎ＞Ｐ１＞Ｐ２の関係が成立する。
【００４１】
上記では、「コア１」「コア２」が特定のプロセッサコア（例えば、プロセッサコア１２１、１２２）を意味することを前提としているが、特定のコアでないことを前提としてもよい。この前提では、例えば、プロセッサコア１２２でタスクＡとタスクＢが動作し、プロセッサコア１２４でタスクＣが動作している場合も、同期機構選択ルール５０の１行目の状況に合致する。つまり、２つのコアが動作しており、一方のコアでタスクＡ、Ｂが動作し、他方のコアでタスクＣが動作していればＮｏ．１のルールが適用される。
【００４２】
また上記では、「タスクＡ」のように特定のタスクを意味する値を同期機構選択ルールに記載しているが、特定のタスクでない値としてもよい。例えば、同期機構選択ルール５０の１行目に置いて、「コア１」に「タスク１，２」、「コア２」に「タスク３」と記載されているとする。タスク１〜３は、それぞれ異なるタスクであることを意味している。この場合、プロセッサコア１２１にてタスクＡとタスクＢが動作し、コア１２２にてタスクＣが動作している状況は、１行目に合致する。つまり、２つのコアが動作しており、一方のコアで異なる２つのタスクが動作し、他方のコアで別の１つのタスクが動作していればＮｏ．１のルールが適用される。
【００４３】
以上に、コアを特定のものとする場合と非特定のものとする場合、およびタスクを特定のものとする場合と非特定のものとする場合とを説明した。コアとタスクの両方を特定のものとする場合は、同期機構選択ルールは同期しないタスクも記載することで、タスクのコアへの割り当てを定義する設定情報と共用化することができる。一方、タスクやコアを非特定のものとすると、タスクのコア割り当てやタスクの動作状況をパターン化することになり、１つのルールで対応する状況の数が増える。このため、ルール数の縮小（すなわちルールのデータサイズの縮小）や、ルールの再利用性向上を実現することができる。
【００４４】
上記では、同期機構選択ルールは複数の同期ＩＤで共通とする前提で説明したが、同期ＩＤごとに切り替えてもよい。後者の実現方法の１つは、ルールテーブルに同期ＩＤの列を追加するものである。
【００４５】
図５Ｂの処理ルーチン選択ルール５１は、処理ルーチン選択ルールの例を表形式で示したものである。処理ルーチン選択ルール５１の各行が１つのルールに対応している。列の項目には「同期ＩＤ」「タスクＩＤ」「同期機構」「処理ルーチン」がある。「同期機構」の値は、同期機構選択ルール５０における「同期機構」に記された値が入る。「処理ルーチン」は、同期オブジェクトを利用する処理に付与されたＩＤが入る。
【００４６】
処理ルーチン選択ルール５１は、１行目から５行目まで全て、同期ＩＤが０ｘ０１についてのルールである。１行目は、タスクＩＤを問わず、同期機構の種類がバリア同期であれば、処理ルーチンのＩＤはＲ１であることを示している。２行目は、タスクＩＤが０ｘ１０すなわちタスクＡであり、同期機構の種類がスピンロックであれば、処理ルーチンのＩＤはＲ２であることを示している。３行目以降も同様である。
【００４７】
以下では、システムが制御モードを変更し、それに伴いタスクのコアへの配置も変更すると共に、選択される同期機構が同期機構選択ルール５０に沿って変更されていく様子を説明する。制御モードはシステムの初期化の後、「通常」から開始するとする。各同期機構の仕組みは公知であるため、本実施形態では同期機構内部の処理の説明を省略する。
【００４８】
（制御モードが通常のときの動作）
最初に、システムの制御モードが「通常」のときの動作を説明する。図６は、制御モードが「通常」のときの、タスクのコアへの配置例を示している。コア１２１にタスクＡとタスクＢが、コア１２２にタスクＣとタスクＥが、コア１２３にタスクＤが配置されている。タスクの優先度はＡがＢより、ＣがＥより高く設定されている。これらのタスク配置や優先度設定は、動作単位制御部３１が行う。
【００４９】
このタスク配置にて、タスクＡ〜Ｃが動作するとき、同期機構選択部３４は同期機構３５としてバリア同期を選択する。同期機構選択部３４に選択され、同期ＩＤが０ｘ０１に対応したバリア同期のオブジェクトは、同期数が３に設定されている。図６の場合には、サスペンド・リジューム方式が選択されるべきである。同期機構選択ルール５０にて、バリア同期がビジーウェイト方式かサスペンド・リジューム方式かを指定してもよいし、予めサスペンド・リジューム方式に固定してもよい。
【００５０】
図７は、制御モードが「通常」のときの、タスク動作のタイムチャート例を示している。タスクＡが起動して動作状態となり、サブタスクａ１を実行し、時刻ｔ１にサブタスクａ１は同期機構利用部３３−１から同期機構選択部３４を呼び出し、待ち状態に入る。これにより、同じコアで動作するタスクＢがＯＳの優先度制御により動作状態となり、サブタスクｂが実行される。時刻ｔ２に、サブタスクｂは同期機構利用部３３−２から同期機構選択部３４を呼び出し、待ち状態に入る。一方、タスクＣはタスクＡと並行に起動・動作して、サブタスクｃを実行する。時刻ｔ２より前に、サブタスクｃは同期機構利用部３３−３から同期機構選択部３４を呼び出し、待ち状態に入る。時刻ｔ２には同期が成立し、タスクＡが再開されてサブタスクａ２が実行される。この例では、同期機構３５の処理ルーチンは、どのタスクでも同じであり、処理ルーチン選択ルール５１におけるＩＤはＲ１である。
【００５１】
（制御モードが低消費電力１のときの動作）
次に、システムが制御モードを「通常」から「低消費電力１」に変更したときのシステムの動作を説明する。図８は、制御モードが「低消費電力１」のときの、タスクのコアへの配置例を示している。コア１２１にタスクＡとタスクＤが、コア１２２にタスクＣとタスクＥが配置されている。タスクＢは配置されておらず、動作しない。サブタスクａ２は、データｄ１とｄ３を利用し、ｄ２は利用しない。タスクの優先度は、ＡがＤより、ＣがＥより高く設定されている。コア１２３とコア１２４は休止する。
【００５２】
制御モードが変更されたときに、動作単位制御部３１がこのタスクのコアへの再配置を行う。動作状況管理部３２はタスク再配置を検出し、同期機構選択部３４に通知する。同期機構選択部３４は、同期機構３５を初期化する。
【００５３】
上記のタスク配置にて、タスクＡとタスクＣが動作するとき、同期機構選択部３４は同期機構３５としてスピンロックを選択する。正確には、スピンロックと処理完了フラグを一緒にしたものである。サブタスクｃに処理完了フラグが用意されている。同期機構選択部３４はタスクＩＤをパラメータ値として呼出しされるので、タスクＡから呼び出された時には、サブタスクｃの処理完了フラグが有効になるまでフラグを読み続け、有効になったらタスクの処理に復帰して、サブタスクａ２を実行する。タスクＣから呼び出された時には、サブタスクｃの完了フラグを有効にする。スピンロックはこれら処理完了フラグへの排他的アクセスに利用される。この例では、同期機構３５の処理ルーチンは、タスクＡとタスクＣとで異なり、処理ルーチン選択ルール５１におけるＩＤはそれぞれ、Ｒ２とＲ３である。
【００５４】
図９は、制御モードが「低消費電力１」のときの、タスク動作のタイムチャート例を示している。タスクＡが起動して動作状態となり、サブタスクａ１を実行する。時刻ｔ３にサブタスクａ１は同期機構利用部３３−１から同期機構選択部３４を呼び出し、サブタスクｃの動作完了を確認し続ける。一方、タスクＣはタスクＡと並行に起動・動作して、サブタスクｃを実行する。時刻ｔ４に、サブタスクｃは同期機構利用部３３−３から同期機構選択部３４を呼び出し、処理完了フラグ（動作完了フラグ）を有効にする。時刻ｔ４にタスクＡが再開されてサブタスクａ２が実行される。
【００５５】
上記のようなスピンロックの利用により、例えばタスクＡとタスクＣが、コア１２１とコア１２２へのネットワーク通信などによる共通の通知をもとに、毎周期に同時に実行開始され、サブタスクａ１とｃとがほぼ同時に処理完了すると期待される場合には、同期のための待ち時間を短くすることができる。バリア同期は一般的にオーバーヘッドが大きいが、そのオーバーヘッドの軽減を図ることができる。
【００５６】
（制御モードが低消費電力２のときの動作）
次に、システムが制御モードを「低消費電力１」から「低消費電力２」に変更したときのシステムの動作を説明する。図１０は、制御モードが「低消費電力２」の、タスクのコアへの配置例を示している。コア１２１にタスクＡとタスクＣが配置されている。タスクＢ，Ｄ，Ｅは配置されておらず、動作しない。サブタスクａ２は、データｄ１とｄ３を利用し、ｄ２は利用しない。タスクの優先度は、ＡがＣより高く設定されている。コア１２２〜１２４は休止する。
【００５７】
換言すれば、動作単位制御部３１は、動作状況管理部３２（検出部）によって検出される制御モードがコントローラ１０１（制御装置）の最小の消費電力（低消費電力２）を示す場合、複数のタスク（処理）をコア１２１〜１２４（複数のプロセッサ）のうちの１つに配置する。これにより、コントローラ１０１の消費電力を抑制することができる。
【００５８】
図１１は、制御モードが「低消費電力２」のときの、タスク動作のタイムチャート例を示している。タスクＡが起動して動作状態となり、サブタスクａ１を実行する。時刻ｔ５にサブタスクａ１は同期機構利用部３３−１から同期機構選択部３４を呼び出し、同期ＩＤ０ｘ０１に対応したイベントの待機状態に入る。これにより、タスクＣがＯＳの優先度制御により開始され、サブタスクｃを実行する。時刻ｔ６に、サブタスクｃは同期機構利用部３３−３から同期機構選択部３４を呼び出し、同期機構選択部３４は同期ＩＤ０ｘ０１に対応したイベントを発行して、処理を終了する。これによりタスクＡが再開され、サブタスクａ２が実行される。この例では、同期機構３５の処理ルーチンは、タスクＡとタスクＣとで異なり、処理ルーチン選択ルール５１におけるＩＤはそれぞれ、Ｒ４とＲ５である。
【００５９】
ＯＳのイベントを用いた同期は、バリア同期と比較して処理が軽量であり、ビジーウェイトするスピンロックのように、プロセッサコアの処理能力を占有しない。
【００６０】
制御モードが「低消費電力２」のときの別の実施形態として、動作単位制御部３１がタスクＡとタスクＣを統合し、サブタスクａ１、ｃ、ａ２の順で処理を実行する新しいタスクＦを作成して実行する方法がある。この場合、同期処理が不要になるので、同期機構選択ルール５０の３行目における同期機構は「なし」となる。同期機構がなしの場合、同期機構選択部３４は何も行わない。これにより、同期処理のオーバーヘッドをなくすことができる。
【００６１】
換言すれば、実行部４０は、複数のタスク（処理）がコア１２１〜１２４（複数のプロセッサ）のうちの１つのみに配置される場合、同期機構３５を使用しない第２処理を実行する。詳細には、実行部４０は、第２処理として、複数のタスク（処理）を１つに統合し、統合された１つのタスク（処理）を実行する。
【００６２】
以上のように、タスクのコアへの配置や、タスクの動作状況をもとに、適切な同期機構を選択可能とすることにより、同期処理に掛かるオーバーヘッドを小さくする、または無くすことができ、消費電力低減や、応答時間の改善（待ち時間の短縮）を実現することができる。
【００６３】
消費電力や応答時間は、例えば電源回路１１３から各コアへの電源線にて計測する。消費電力は、タスクが同期の成立待ちであり、他のタスクが動作中でないときに、極小値を取る。同期処理のオーバーヘッドの縮小は、この極小値の低減や、極小値を取る時間幅の短縮となって観測される。
【００６４】
上記ではタスクがコアに再配置される場合を説明したが、一部のタスクが休止するだけで、タスクの再配置はなしにシステムが動作を継続する場合もありうる。その場合には、利用されている同期機構の条件だけを変更する。例えば図６のタスク配置にて、タスクＢが休止したとき、動作状況管理部３２がタスクＢの休止を検出し、同期機構選択部３４に通知する。同期機構選択部は、同期ＩＤ０ｘ０１に対応するバリア同期のオブジェクトについて、同期数を３から２に変更する。ただし、タスクＢが休止するのは、バリア同期による待ち状態に入る前とする。
【００６５】
以上説明したように、本実施形態によれば、複数の処理の配置状況に応じて、複数種類の同期機構のいずれかを用いて同期を行う又は同期機構を使用しないことを切り替えることができる。
【００６６】
（変形例）
上記ではＯＳがＡＭＰであることを前提としたが、以下ではＯＳがＳＭＰとＡＭＰとでモード切り替えをできるものであると想定する。動作状況管理部３２がＯＳのモード情報（ＡＭＰ／ＳＭＰ）を同期機構選択部３４に提供し、同期機構選択部３４がそのモード情報に応じて、利用する同期機構選択ルールを切り替える。この場合、図５Ａの同期機構選択ルール５０は、ＯＳがＡＭＰで動作するときに利用される。
【００６７】
換言すれば、動作状況管理部３２（検出部）は、コントローラ１０１（制御装置）にインストールされるオペレーションシステムが対称型（ＳＭＰ）であるか又は非対称型（ＡＭＰ）であるかを示すＯＳモードを検出する。同期機構選択ルール５０は、ＯＳモード及び配置状況の組合せと、識別子とを対応づけて記憶する。実行部４０は、動作状況管理部３２によって検出されたＯＳモード及び配置状況の組合せに対応する識別子が示す第１処理又は第２処理を実行する。これにより、ＯＳモード及び配置状況に応じて、複数種類の同期機構のいずれかを用いて同期を行う又は同期機構を使用しないことを切り替えることができる。
【００６８】
ＯＳがＳＭＰのときは、例えば同期機構選択ルール５０の２行目にて、同期機構をスピンロックではなくＯＳのリソースにする。ＯＳのリソースの使われ方は、図８と図９で説明したスピンロックと同様である。ＯＳのリソースを利用する場合、ビジーウェイトすることなしに、容易な手順で同期を取ることができる。このように、ＯＳのモード情報（ＡＭＰ／ＳＭＰ）を利用することで、より適切な同期機構を選択することができる。
【００６９】
以上では、時間経過と共に動作するタスクが減少する場合の例を説明した。制御モードが「低消費電力２」から「通常」に戻る場合には、動作するタスクは増加する。この場合の同期機構の選択方法は、上記と同じで問題ない。
【００７０】
一方で、動的機能配置と呼ばれるタスクの配置の仕方がある。これは、システムの稼働中に制御ネットワーク上で、コントローラおよびそのプロセッサコアにタスクを追加するものである。動的機能配置が実行される場合には、同期機構選択ルールも同時に更新すればよい。その際、同期機構選択ルールを、制御ネットワークからコントローラ１０１に配信してもよい。
【００７１】
（第２の実施形態）
以下では、図１２を用いて、データ授受部３６、データアクセス制御部３７の動作例を説明する。タスク配置は当初、図６の制御モードが「通常」の状況とする。
【００７２】
サブタスクａ１にはデータ授受部３６−１が配置されており、データアクセス制御部３７を介して、データバッファ１２０にデータｄ１を書き込む。同様に、サブタスクｂにはデータ授受部３６−２が、サブタスクｃにはデータ授受部３６−３が配置されており、データバッファ１２０にそれぞれデータｄ２、データｄ３を書き込む。サブタスクａ２にはデータ授受部３６−４が配置されており、データアクセス制御部３７を介して、データバッファ１２０からデータｄ１〜ｄ３を読み込む。
【００７３】
データバッファ１２０は、バッファｘとバッファｙの２面構成となっており、それぞれにデータｄ１、ｄ２、ｄ３の領域が確保されている。しかし制御モードが「通常」のときには、バッファｘのみが用いられる。サブタスクａ１が書き込むデータｄ１とサブタスクａ２が読み込むデータｄ１は、ＲＡＭ１４０上で同じ位置に存在する。データｄ２、ｄ３も読み込みと書き込みが同じ位置である。
【００７４】
データアクセス制御部３７は、動作状況管理部３２から（タスク配置と関連付いた）現在の制御モードを受け取り、「通常」である場合には、データの読み込みにも書き込みにも、バッファｘを用いる。またデータアクセス制御部３７は、データ授受部３６から指定されるデータＩＤから、事前に決められたデータ配置情報を検索して、バッファｘ内のデータの位置を求める。
【００７５】
今、制御モードが「通常」から「低消費電力１」に切り替わったとする。さらに、同期機構選択ルール５０の２行目の同期機構に「なし」が指定されているとする。タスクＡとタスクＣとは同期が取られない。データｄ３のサブタスクｃによる更新からサブタスクａ２による取得までには遅延が生じうる。この遅延の最大値は周期タスクの実行周期で決まるが、遅延の最大値は設計上の許容範囲に収まっているとする。
【００７６】
データアクセス制御部３７は制御モードが「低消費電力１」の場合には、書き込みと読み込みでバッファｘとバッファｙを使い分ける。最初に、書き込みにバッファｘを、読み込みにバッファｙを利用する。データアクセス制御部３７は、例えば、サブタスクｃによるデータｄ３の書き込みが完了した時点で、バッファを切り替える。つまり、書き込みにバッファｙを、読み込みにバッファｘを用いるように変更する。このようにバッファ２面を用いることで、読み書きするタスク同士の同期を取っていなくても、同じ領域に同時に読み書きすることを回避できる。
【００７７】
換言すれば、コントローラ１０１（制御装置）は、バッファｘ（第１バッファ）とバッファｙ（第２バッファ）を備える。実行部４０は、同期機構３５を使用しない第２処理を実行する場合、第１期間において、複数のタスク（処理）の書き込みにバッファｘを用い、複数のタスク（処理）の読み込みにバッファｙを用い、第１期間の後の第２期間において、複数のタスクの書き込みにバッファｙを用い、複数のタスクの読み込みにバッファｘを用いる。
【００７８】
以上のように、データアクセス制御部３７はタスク配置と動作に応じて、バッファの読み書き位置を変更する。同期機構の有無もタスク配置と動作に応じて選択されるので、データアクセス制御部３７は、同期機構の有無に応じてバッファの読み書き位置を制御しているともいえる。これにより、タスク間の同期機構をなくしても、データの排他制御を実現できる。なおデータアクセス制御部３７は再入可能とするか、同期機構を用いて排他的な実行を行う必要がある。
【００７９】
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上述した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００８０】
上記実施形態では、マイクロコンピュータ１１０（コントローラ１０１）は、マルチコアプロセッサを備えるが、マルチプロセッサを備えていてもよい。
【００８１】
また、上記の各構成、機能等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサ（マイクロコンピュータ）がそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD（Solid State Drive）等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【００８２】
なお、本発明の実施形態は、以下の態様であってもよい。
【００８３】
（１）複数のプロセッサと、前記複数のプロセッサに対する複数の処理の配置状況を管理する配置状況管理手段と、前記複数の処理間の同期状態を前記配置状況に基づいて設定する同期状態設定手段と、を備える制御装置。
【００８４】
（２）（１）の制御装置は、処理の構成や処理のプロセッサへの配置を決定する動作単位制御手段を備え、前記動作単位制御手段は、前記同期状態設定手段が同期状態をなしとする場合に、もとは並列または並行に実行される複数の処理を統合して、直列に実行される処理に構成することを特徴とする、制御装置。
【００８５】
（３）（１）において、前記同期状態設定手段は、オペレーションシステムの動作モードも同期状態の設定に利用することを特徴とする、制御装置。
【００８６】
（４）（１）の制御装置は、前記配置状況に基づいてデータの読み書き位置を制御するデータアクセス制御手段を備えることを特徴とする、制御装置。
【００８７】
上記（１）〜（４）によれば、コアへの処理配置が変わるとき、可能であれば同期機構をオーバーヘッドがより小さいにものに変える、あるいは同期機構の利用を無くすことにより、処理性能の向上や消費電力の低減を実現する。また同期機構のオーバーヘッドが小さくなる、または無くなると、プロセッサの処理能力に余裕が出て、1つのコアにより多くの処理を配置しやすくなり、コア縮退時に稼働させるコア数を減らしやすくなり、消費電力の低減をさらに図ることができる。
【符号の説明】
【００８８】
３１…動作単位制御部
３２…動作状況管理部
３３…同期機構利用部
３４…同期機構選択部
３５…同期機構
３６…データ授受部
３７…データアクセス制御部
４０…実行部
５０…同期機構選択ルール
５１…処理ルーチン選択ルール
１０１…コントローラ
１０２…センサ
１０３…アクチュエータ
１１０…マイクロコンピュータ
１１１…入力回路
１１２…出力回路
１１３…電源回路
１２０…データバッファ
１２１〜１２４…プロセッサコア
１３０…入出力回路
１４０…ＲＡＭ
１５０…ＲＯＭ
１６０…不揮発メモリ
【図１】
2018106472.tif 000003
【図２】
2018106472.tif 000004
【図３】
2018106472.tif 000005
【図４】
2018106472.tif 000006
【図５Ａ】
2018106472.tif 000007
【図５Ｂ】
2018106472.tif 000008
【図６】
2018106472.tif 000009
【図７】
2018106472.tif 000010
【図８】
2018106472.tif 000011
【図９】
2018106472.tif 000012
【図１０】
2018106472.tif 000013
【図１１】
2018106472.tif 000014
【図１２】
2018106472.tif 000015