このアプリケーションの一部のコンテンツは現時点では利用できません。
このような状況が続く場合は、にお問い合わせくださいフィードバック & お問い合わせ
1. (WO2018123707) 制御装置
Document

明 細 書

発明の名称 制御装置

技術分野

0001  

背景技術

0002   0003   0004   0005   0006   0007  

先行技術文献

特許文献

0008  

発明の概要

発明が解決しようとする課題

0009   0010   0011  

課題を解決するための手段

0012  

発明の効果

0013  

図面の簡単な説明

0014  

発明を実施するための形態

0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087  

符号の説明

0088  

請求の範囲

1   2   3   4   5   6   7   8  

図面

1   2   3   4   5A   5B   6   7   8   9   10   11   12  

明 細 書

発明の名称 : 制御装置

技術分野

[0001]
 本発明は、制御装置に関する。

背景技術

[0002]
 車載制御装置などの電子制御装置には、マルチプロセッサが採用されている。また1つのプロセッサに複数のプロセッサコア(以下「コア」)を持つマルチコア構成が取られている。OS(Operating System)の制御により並行動作する処理(プロセス、タスク、スレッドなど)や、プロセッサコア間で並列動作する処理の間では、同期が必要とされる場合がある。同期のために掛かる処理のオーバーヘッドは小さい方が好ましい。
[0003]
 OSの種類には、SMP(Symmetric Multiprocesing)とAMP(Asymmetric Multiprocessing)とがある。SMPでは、1つのOSが複数のプロセッサコアを扱い、実行状態に移される処理は空いているコアで実行される。つまり処理を実行するコアは動的に選択される。これに対しAMPでは、処理が実行されるコアは事前に決定されており、静的に選択される。SMP OSはコア間で処理負荷の平準化を図ることができ、AMP OSはリアルタイム性が確保しやすい、などの特徴がそれぞれある。
[0004]
 一方、マルチコアプロセッサを用いたシステムでは、稼働するコアを動的に変更する場合がある。例えば消費電力低減のために、実行する処理が少ない制御モードでは、いくつかのコアを休止し、残りのコアだけで動作を継続する。この場合、AMP OSでは、コアへの処理の再配置が生じる。
[0005]
 コアへの処理配置が変わるときのように、処理の動作状況に変化があるときには、同期が必要な処理について、適切な同期機構を選択し直す余地が生じる。
[0006]
 特許文献1では、スレッドの状態や属性に応じて、同期機構を選択している。具体的には、スレッド間で通信などを行い密接に連携して動作するスレッドは「密結合スレッドグループ」に属し、バッファを用いてデータ交換するスレッドは「疎結合スレッドグループ」に属すとして、密結合スレッドグループのスレッドはハードウェアなどによる高速な同期機構を、疎結合スレッドグループのスレッドはOSのサービスなどによる低速な同期機構を使う、としている。
[0007]
 特許文献2では、スレッドの動作数とスレッドが動作しているコアの数に応じて、バリア同期の方式を選択する方法を開示している。スレッド数≦コア数のときには、ビジーウェイト方式のバリア同期を、またスレッド数>コア数のときには、サスペンド・リジューム方式のバリア同期を選択する。ビジーウェイト方式の長所は待ち時間が小さいことであるが、プロセッサ負荷が発生し、並列動作している他スレッドの動作を妨げる恐れのある点が短所である。これに対し、スレッド数≦コア数のときにはコアごとに動作するスレッド数は1つ以下であり、ビジーウェイトを行っても他スレッドの動作を妨げることがないので、ビジーウェイト方式の短所の影響を受けずに用いることができる。

先行技術文献

特許文献

[0008]
特許文献1 : 特開2005-100264号公報
特許文献2 : 特開2016-062388号公報

発明の概要

発明が解決しようとする課題

[0009]
 特許文献1では、OSはSMPであり、スレッドが実行されるプロセッサコアは動的に選択される想定となっている。このため、同期が必要なスレッドのプロセッサコアへの配置状況は時点により異なる。このような動作条件では、スレッドが動作するコアによらずに同期を実現できる機構を利用する必要がある。これに対しAMP OSのように、処理の動作するコアが静的に決定されている場合、その情報を利用すれば、処理の動作状況によっては、オーバーヘッドがより小さい同期機構を利用できる可能性がある。
[0010]
 特許文献2は、スレッドの動作数とスレッドが動作しているコアの数に応じて適切な同期方式を選択することができるが、対象となる同期機構がバリア同期に限定されている。
スレッド(またはプロセスやタスク)やコアの動作状況に応じて選択する同期機構の対象をバリア同期以外にも広げれば、処理性能や消費電力などの点で改善を期待できる。しかしこの場合、同期機構の選択方法を明らかにしなければならない。
[0011]
 本発明の目的は、複数の処理の配置状況に応じて、複数種類の同期機構のいずれかを用いて同期を行う又は同期機構を使用しないことを切り替えることができる制御装置を提供することにある。

課題を解決するための手段

[0012]
 上記目的を達成するために、本発明は、複数のプロセッサと、前記複数のプロセッサへの複数の処理の配置状況を検出する検出部と、前記複数の処理の間の同期をとる複数種類の同期機構と、前記配置状況と、前記同期機構を使用する第1処理又は前記同期機構を使用しない第2処理を示す識別子と、を対応づけて記憶するメモリと、前記検出部によって検出された前記配置状況に対応する前記識別子が示す前記第1処理又は前記第2処理を実行する実行部と、を備える。

発明の効果

[0013]
 本発明によれば、複数の処理の配置状況に応じて、複数種類の同期機構のいずれかを用いて同期を行う又は同期機構を使用しないことを切り替えることができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。

図面の簡単な説明

[0014]
[図1] 本発明の第1の実施形態によるコントローラを含むシステムのハードウェア構成を示す図である。
[図2] タスクの構成を示す図である。
[図3] 本発明の第1の実施形態によるコントローラの機能構成を示す図である。
[図4] 同期機構選択部の処理フローを示す図である。
[図5A] 同期機構選択ルールの構成を示す図である。
[図5B] 処理ルーチン選択ルールの構成を示す図である。
[図6] タスクのコアへの配置(通常モード)を示す図である。
[図7] タスクの動作(通常モード)を示す図である。
[図8] タスクのコアへの配置(低消費電力1モード)を示す図である。
[図9] タスクの動作(低消費電力1モード)を示す図である。
[図10] タスクのコアへの配置(低消費電力2モード)を示す図である。
[図11] タスクの動作(低消費電力2モード)を示す図である。
[図12] 本発明の第2の実施形態によるコントローラに含まれるデータ授受部及びデータアクセス制御部の動作を説明するための図である。

発明を実施するための形態

[0015]
 以下、図面を用いて、本発明の第1~第2の実施形態によるコントローラ(制御装置)の構成及び動作について説明する。なお、各図において、同一符号は同一部分を示す。
[0016]
 (第1の実施形態)
図1は本発明を適用した制御システムのハードウェア構成例を示している。コントローラ101はセンサ102、アクチュエータ103と接続しており、センサ102から得られる情報を入力として、アクチュエータ103に制御信号を出力している。センサ102の例としてホール素子、アクチュエータ103の例としてブラシレスDCモータがある。
センサ102やアクチュエータ103はそれぞれ複数あってもよい。
[0017]
 コントローラ101内において、センサ102は入力回路111と、アクチュエータ103は出力回路112に接続され、さらに入力回路111と出力回路112はマイクロコンピュータ110の入出力回路130(IO)と接続されている。マイクロコンピュータ110には4つのプロセッサコア121~124(複数のプロセッサ)、RAM140(Random Access Memory)、ROM150(Read Only Memory)、不揮発メモリ160(NVRAM)を備え、入出力回路130も含めて、これらの回路はバスで接続されている。またコントローラ101は電源回路113を有する。
[0018]
 以下では、図1のシステムにおけるソフトウェア構成例を説明する。コア121~124(PC1~PC4)にはそれぞれAMP OSが配置されている。OSのタスクは初期状態として、タスクA~Eの5つが用意されている。タスクA~Cが制御に直接関係し、タスクD,Eは制御に直接関係しない診断などの処理である。これらのタスクはOSにより周期的に実行されている。また、タスクA~EにはそれぞれタスクIDとして16進数表現で0x10~0x14が付与されている。
[0019]
 図2はタスクA~Cの構成を示している。タスクAはサブタスクa1(関数で構成される)とa2を、タスクBはサブタスクbを、タスクCはサブタスクcを実行する。制御の処理の流れは、サブタスクa1、b、cがセンサ102から信号を取得して入力とし、入力に対して中間データd1、d2、d3をそれぞれ生成し、その後でサブタスクa2が中間データd1~d3を入力として、制御信号を計算し、その信号をアクチュエータ103に出力する。
[0020]
 図3は本発明を適用した制御システムの機能構成、および機能間の信号やデータの流れを示している。各機能はソフトウェアプログラムにより実現される。これらソフトウェアプログラムはマイクロコンピュータ110にて、ROM150に格納され、RAM140を一時記憶として利用し、コア121~124上で動作し、データの記録・読出しを不揮発メモリ160に対して行う。
[0021]
 動作単位制御部31は、OSのタスクとして実行する処理を規定し、各タスクを実行するコアを選択して、タスクを配置する。動作状況管理部32は、動作単位制御部31からタスクのコアへの配置情報(タスク配置情報P_task)を取得する。また、動作状況管理部32は、各コアの動作情報O_coreや各タスクの動作情報O_taskをマイクロコンピュータ110やOSから取得する。
[0022]
 換言すれば、動作状況管理部32(検出部)は、コア121~124(複数のプロセッサ)への複数のタスク(処理)の配置状況を検出する。
[0023]
 同期機構利用部33(33-1~33-n)は、各タスクにおいて同期が必要な点に配置されており、同期を取る複数の同期機構利用部33には共通のID(以下「同期ID」)が付与されている。同期機構利用部33は同期ID(ID_sync)とタスクID(ID_task)をパラメータ値として、同期機構選択部34を呼び出す。
[0024]
 同期機構選択部34は、動作状況管理部32から各タスクのコアへの配置情報(タスク配置情報P_task:どのコアに配置されているか、または配置されていないか)、および各タスクの動作情報O_task(例えばOSが示す動作モードとして、動作中、待機中、実行待ち、実行可能のいずれか)を取得する。各コアの動作情報O_core(例えば動作中、休止中のいずれか)を、タスクの動作情報O_taskとは別に取得してもよい。以降では動作状況管理部32から取得されるこれらの情報をまとめて「タスク配置動作情報」と呼ぶ。同期機構選択部34は同期機構利用部33からの呼び出しを受けて、タスク配置動作情報をもとに、同期ID(ID_sync)に対応して適切な同期機構を同期機構35(35-1~35-m)から選択し、実行する。この選択には、後述の「同期機構選択ルール」や「処理ルーチン選択ルール」を用いる。
[0025]
 換言すれば、複数種類の同期機構35(35-1~35-m)は、複数のタスク(処理)の間の同期をとる。実行部40は、動作状況管理部32(検出部)によって取得(検出)された複数のタスク(処理)の配置状況に対応する識別子が示す第1処理又は第2処理を実行する。ここで、識別子は、同期機構35を使用する第1処理又は同期機構35を使用しない第2処理を示す。識別子の詳細については、図5Aを用いて、後述する。
[0026]
 なお、実行部40は、コア121~124の少なくとも1つが所定のプログラムを実行することにより実現される。本実施形態では、実行部40は、同期機構利用部33、同期機構選択部34、データ授受部36、データアクセス制御部37から構成されるが、後述する「同期機構選択ルール」や「処理ルーチン選択ルール」に応じて、その構成要素を削除、変更してもよい。
[0027]
 図2のタスクA~Cには同期機構利用部33-1~33-3が配置されており、33-1がサブタスクa1の最後に、33-2がbの最後に、33-3がcの最後に配置されている。また同期機構利用部31-1~31-3には、共通の同期IDとして16進数表現で0x01が付与されている。
[0028]
 データ授受部36(36-1~36-k)は、同期を取るタスクに配置されている。データ授受部36はデータアクセス制御部37に対し、データのIDを指定してデータの読み書きを行う。データアクセス制御部37はRAM140上に設けられたデータバッファに対してデータの読み書きを行う。その際、データアクセス制御部37は、動作状況管理部32からのタスク配置動作情報に基づき、読み書き位置の制御を行う。データ授受部36がデータアクセス制御部37を介してデータの読み書きを行うことで、同期を取るタスク間でのデータの受け渡しがなされる。
[0029]
 図4は同期機構選択部34が同期機構利用部33の呼び出しに応じて実行する処理のフローである。処理を開始後、ステップ41にて、タスク配置動作情報を取得する。次にステップ42にて、タスク配置動作情報から、同期機構選択ルールに基づき、利用する同期機構35の種類を選択する。詳細については、図5Aを用いて、後述する。
[0030]
 次にステップ43にて、同期機構利用部33の同期IDから、ステップ42で選択された同期機構35の種類に対応した同期オブジェクトを選択する。また、選択された同期機構35の種類から、処理ルーチン選択ルールに基づき、同期オブジェクトを利用する処理ルーチンも選択する。同期機構35の種類によっては、タスクIDごとに同期オブジェクトの利用方法が異なる。その場合には、同期IDおよびタスクIDに対応する処理ルーチンも選択する。同期オブジェクトと処理ルーチンとを合わせて、同期機構35である。詳細については、詳細については、図5Bを用いて、後述する。
[0031]
 次にステップ44にて、ステップ43で選択した同期機構35の同期オブジェクトと、処理ルーチンを用いて同期処理を実行する。以上で処理を終了する。
[0032]
 図5Aの同期機構選択ルール50は、同期機構選択ルールの例を表形式で示したものである。同期機構選択ルール50の各行が1つのルールに対応している。列の項目には「制御モード」「コア1」「コア2」「同期機構」がある。「制御モード」はシステムの制御モードである。ここでは、制御モードがタスク配置動作情報と関連している、つまり制御モードに対してタスクのコアへの配置や、タスクの動作有無が静的に決定されている。
[0033]
 換言すれば、動作状況管理部32(検出部)は、コントローラ101(制御装置)の消費電力(通常、低消費電力1、低消費電力2)を示す制御モードを検出する。同期機構選択ルール50は、制御モードと、配置状況と、を対応づけて記憶する。動作単位制御部31は、動作状況管理部32によって検出される制御モードに対応する配置状況に基づいて、複数のタスク(処理)をコア121~124(複数のプロセッサ)へ配置する。これにより、制御モードに応じて、複数のタスクが静的にコア121~124へ配置される。
[0034]
 なお、同期機構選択ルール50は、例えば、ROM150、不揮発メモリ160等のメモリに記憶される。動作状況管理部32(検出部)は、上位システムに現在の制御モードを問い合わせてもよいし、上位システム等によって所定のメモリに記憶された現在の制御モードを読み出してもよい。
[0035]
 「コア1」「コア2」は各コアで動作しているタスク、「同期機構」は選択される同期機構の種類を示す値が入る。制御モードや同期機構などの項目の値は、図5Aでは「通常」といった名称が入っているが、実際のプログラムではIDが入る。
[0036]
 換言すれば、同期機構選択ルール50は、コア121~124(複数のプロセッサ)への複数のタスク(処理)の配置状況と、同期機構35を使用する第1処理又は同期機構35を使用しない第2処理を示す識別子と、を対応づけて記憶する。
[0037]
 同期機構選択ルール50には、制御モードが「通常」「低消費電力1」「低消費電力2」の3つのモードに対応するルールが定義されている。同期機構選択部34は、タスク配置動作情報から同期機構の選択を行う。または、動作状況管理部32から現在の制御モードを取得し、制御モードに合致する同期機構を選択してもよい。以下の説明は、タスク配置動作情報から選択することを前提とする。
[0038]
 同期機構選択ルール50にて、1行目は制御モードが「通常」であり、「コア1」の列には「タスクA,B」,「コア2」の列には「タスクC」と記されている。「コア1」はプロセッサコア121、「コア2」はコア122のことである。つまり、コア121でタスクAとタスクBが動作し、コア122でタスクCが動作している状況を示す。このようなタスクのコアへの配置およびタスクの動作時には、同期機構としてバリア同期が選択される設定となっている。
[0039]
 同様に、2行目は制御モードが「低消費電力1」であり、コア1ではタスクAが、コア2ではタスクCが動作する状況を示しており、同期機構としてはスピンロックが選択される設定となっている。また、3行目は制御モードが「低消費電力2」であり、コア1でタスクAとタスクCが動作する状況を示しており、同期機構としてはOSのイベントが選択される設定となっている。
[0040]
 なお、動作単位制御部31は、同期機構選択ルール50に従い、動作状況管理部32(検出部)によって検出される制御モード(通常、低消費電力1、低消費電力2)が示すコントローラ101(制御装置)の消費電力が小さくなるにつれて、複数の処理の数を減らす。また、動作単位制御部31は、動作状況管理部32によって検出される制御モードが示すコントローラ101の消費電力が小さくなるにつれて、使用するコア(プロセッサ)の数を減らす。ここで、制御モードが、「通常」、「低消費電力1」、「低消費電力2」の場合の電力値を、それぞれ、Pn、P1、P2とすると、Pn>P1>P2の関係が成立する。
[0041]
 上記では、「コア1」「コア2」が特定のプロセッサコア(例えば、プロセッサコア121、122)を意味することを前提としているが、特定のコアでないことを前提としてもよい。この前提では、例えば、プロセッサコア122でタスクAとタスクBが動作し、プロセッサコア124でタスクCが動作している場合も、同期機構選択ルール50の1行目の状況に合致する。つまり、2つのコアが動作しており、一方のコアでタスクA、Bが動作し、他方のコアでタスクCが動作していればNo.1のルールが適用される。
[0042]
 また上記では、「タスクA」のように特定のタスクを意味する値を同期機構選択ルールに記載しているが、特定のタスクでない値としてもよい。例えば、同期機構選択ルール50の1行目に置いて、「コア1」に「タスク1,2」、「コア2」に「タスク3」と記載されているとする。タスク1~3は、それぞれ異なるタスクであることを意味している。
この場合、プロセッサコア121にてタスクAとタスクBが動作し、コア122にてタスクCが動作している状況は、1行目に合致する。つまり、2つのコアが動作しており、一方のコアで異なる2つのタスクが動作し、他方のコアで別の1つのタスクが動作していればNo.1のルールが適用される。
[0043]
 以上に、コアを特定のものとする場合と非特定のものとする場合、およびタスクを特定のものとする場合と非特定のものとする場合とを説明した。コアとタスクの両方を特定のものとする場合は、同期機構選択ルールは同期しないタスクも記載することで、タスクのコアへの割り当てを定義する設定情報と共用化することができる。一方、タスクやコアを非特定のものとすると、タスクのコア割り当てやタスクの動作状況をパターン化することになり、1つのルールで対応する状況の数が増える。このため、ルール数の縮小(すなわちルールのデータサイズの縮小)や、ルールの再利用性向上を実現することができる。
[0044]
 上記では、同期機構選択ルールは複数の同期IDで共通とする前提で説明したが、同期IDごとに切り替えてもよい。後者の実現方法の1つは、ルールテーブルに同期IDの列を追加するものである。
[0045]
 図5Bの処理ルーチン選択ルール51は、処理ルーチン選択ルールの例を表形式で示したものである。処理ルーチン選択ルール51の各行が1つのルールに対応している。列の項目には「同期ID」「タスクID」「同期機構」「処理ルーチン」がある。「同期機構」の値は、同期機構選択ルール50における「同期機構」に記された値が入る。「処理ルーチン」は、同期オブジェクトを利用する処理に付与されたIDが入る。
[0046]
 処理ルーチン選択ルール51は、1行目から5行目まで全て、同期IDが0x01についてのルールである。1行目は、タスクIDを問わず、同期機構の種類がバリア同期であれば、処理ルーチンのIDはR1であることを示している。2行目は、タスクIDが0x10すなわちタスクAであり、同期機構の種類がスピンロックであれば、処理ルーチンのIDはR2であることを示している。3行目以降も同様である。
[0047]
 以下では、システムが制御モードを変更し、それに伴いタスクのコアへの配置も変更すると共に、選択される同期機構が同期機構選択ルール50に沿って変更されていく様子を説明する。制御モードはシステムの初期化の後、「通常」から開始するとする。各同期機構の仕組みは公知であるため、本実施形態では同期機構内部の処理の説明を省略する。
[0048]
 (制御モードが通常のときの動作)
最初に、システムの制御モードが「通常」のときの動作を説明する。図6は、制御モードが「通常」のときの、タスクのコアへの配置例を示している。コア121にタスクAとタスクBが、コア122にタスクCとタスクEが、コア123にタスクDが配置されている。タスクの優先度はAがBより、CがEより高く設定されている。これらのタスク配置や優先度設定は、動作単位制御部31が行う。
[0049]
 このタスク配置にて、タスクA~Cが動作するとき、同期機構選択部34は同期機構35としてバリア同期を選択する。同期機構選択部34に選択され、同期IDが0x01に対応したバリア同期のオブジェクトは、同期数が3に設定されている。図6の場合には、サスペンド・リジューム方式が選択されるべきである。同期機構選択ルール50にて、バリア同期がビジーウェイト方式かサスペンド・リジューム方式かを指定してもよいし、予めサスペンド・リジューム方式に固定してもよい。
[0050]
 図7は、制御モードが「通常」のときの、タスク動作のタイムチャート例を示している。タスクAが起動して動作状態となり、サブタスクa1を実行し、時刻t1にサブタスクa1は同期機構利用部33-1から同期機構選択部34を呼び出し、待ち状態に入る。これにより、同じコアで動作するタスクBがOSの優先度制御により動作状態となり、サブタスクbが実行される。時刻t2に、サブタスクbは同期機構利用部33-2から同期機構選択部34を呼び出し、待ち状態に入る。一方、タスクCはタスクAと並行に起動・動作して、サブタスクcを実行する。時刻t2より前に、サブタスクcは同期機構利用部33-3から同期機構選択部34を呼び出し、待ち状態に入る。時刻t2には同期が成立し、タスクAが再開されてサブタスクa2が実行される。この例では、同期機構35の処理ルーチンは、どのタスクでも同じであり、処理ルーチン選択ルール51におけるIDはR1である。
[0051]
 (制御モードが低消費電力1のときの動作)
次に、システムが制御モードを「通常」から「低消費電力1」に変更したときのシステムの動作を説明する。図8は、制御モードが「低消費電力1」のときの、タスクのコアへの配置例を示している。コア121にタスクAとタスクDが、コア122にタスクCとタスクEが配置されている。タスクBは配置されておらず、動作しない。サブタスクa2は、データd1とd3を利用し、d2は利用しない。タスクの優先度は、AがDより、CがEより高く設定されている。コア123とコア124は休止する。
[0052]
 制御モードが変更されたときに、動作単位制御部31がこのタスクのコアへの再配置を行う。動作状況管理部32はタスク再配置を検出し、同期機構選択部34に通知する。同期機構選択部34は、同期機構35を初期化する。
[0053]
 上記のタスク配置にて、タスクAとタスクCが動作するとき、同期機構選択部34は同期機構35としてスピンロックを選択する。正確には、スピンロックと処理完了フラグを一緒にしたものである。サブタスクcに処理完了フラグが用意されている。同期機構選択部34はタスクIDをパラメータ値として呼出しされるので、タスクAから呼び出された時には、サブタスクcの処理完了フラグが有効になるまでフラグを読み続け、有効になったらタスクの処理に復帰して、サブタスクa2を実行する。タスクCから呼び出された時には、サブタスクcの完了フラグを有効にする。スピンロックはこれら処理完了フラグへの排他的アクセスに利用される。この例では、同期機構35の処理ルーチンは、タスクAとタスクCとで異なり、処理ルーチン選択ルール51におけるIDはそれぞれ、R2とR3である。
[0054]
 図9は、制御モードが「低消費電力1」のときの、タスク動作のタイムチャート例を示している。タスクAが起動して動作状態となり、サブタスクa1を実行する。時刻t3にサブタスクa1は同期機構利用部33-1から同期機構選択部34を呼び出し、サブタスクcの動作完了を確認し続ける。一方、タスクCはタスクAと並行に起動・動作して、サブタスクcを実行する。時刻t4に、サブタスクcは同期機構利用部33-3から同期機構選択部34を呼び出し、処理完了フラグ(動作完了フラグ)を有効にする。時刻t4にタスクAが再開されてサブタスクa2が実行される。
[0055]
 上記のようなスピンロックの利用により、例えばタスクAとタスクCが、コア121とコア122へのネットワーク通信などによる共通の通知をもとに、毎周期に同時に実行開始され、サブタスクa1とcとがほぼ同時に処理完了すると期待される場合には、同期のための待ち時間を短くすることができる。バリア同期は一般的にオーバーヘッドが大きいが、そのオーバーヘッドの軽減を図ることができる。
[0056]
 (制御モードが低消費電力2のときの動作)
次に、システムが制御モードを「低消費電力1」から「低消費電力2」に変更したときのシステムの動作を説明する。図10は、制御モードが「低消費電力2」の、タスクのコアへの配置例を示している。コア121にタスクAとタスクCが配置されている。タスクB,D,Eは配置されておらず、動作しない。サブタスクa2は、データd1とd3を利用し、d2は利用しない。タスクの優先度は、AがCより高く設定されている。コア122~124は休止する。
[0057]
 換言すれば、動作単位制御部31は、動作状況管理部32(検出部)によって検出される制御モードがコントローラ101(制御装置)の最小の消費電力(低消費電力2)を示す場合、複数のタスク(処理)をコア121~124(複数のプロセッサ)のうちの1つに配置する。これにより、コントローラ101の消費電力を抑制することができる。
[0058]
 図11は、制御モードが「低消費電力2」のときの、タスク動作のタイムチャート例を示している。タスクAが起動して動作状態となり、サブタスクa1を実行する。時刻t5にサブタスクa1は同期機構利用部33-1から同期機構選択部34を呼び出し、同期ID0x01に対応したイベントの待機状態に入る。これにより、タスクCがOSの優先度制御により開始され、サブタスクcを実行する。時刻t6に、サブタスクcは同期機構利用部33-3から同期機構選択部34を呼び出し、同期機構選択部34は同期ID0x01に対応したイベントを発行して、処理を終了する。これによりタスクAが再開され、サブタスクa2が実行される。この例では、同期機構35の処理ルーチンは、タスクAとタスクCとで異なり、処理ルーチン選択ルール51におけるIDはそれぞれ、R4とR5である。
[0059]
 OSのイベントを用いた同期は、バリア同期と比較して処理が軽量であり、ビジーウェイトするスピンロックのように、プロセッサコアの処理能力を占有しない。
[0060]
 制御モードが「低消費電力2」のときの別の実施形態として、動作単位制御部31がタスクAとタスクCを統合し、サブタスクa1、c、a2の順で処理を実行する新しいタスクFを作成して実行する方法がある。この場合、同期処理が不要になるので、同期機構選択ルール50の3行目における同期機構は「なし」となる。同期機構がなしの場合、同期機構選択部34は何も行わない。これにより、同期処理のオーバーヘッドをなくすことができる。
[0061]
 換言すれば、実行部40は、複数のタスク(処理)がコア121~124(複数のプロセッサ)のうちの1つのみに配置される場合、同期機構35を使用しない第2処理を実行する。詳細には、実行部40は、第2処理として、複数のタスク(処理)を1つに統合し、統合された1つのタスク(処理)を実行する。
[0062]
 以上のように、タスクのコアへの配置や、タスクの動作状況をもとに、適切な同期機構を選択可能とすることにより、同期処理に掛かるオーバーヘッドを小さくする、または無くすことができ、消費電力低減や、応答時間の改善(待ち時間の短縮)を実現することができる。
[0063]
 消費電力や応答時間は、例えば電源回路113から各コアへの電源線にて計測する。消費電力は、タスクが同期の成立待ちであり、他のタスクが動作中でないときに、極小値を取る。同期処理のオーバーヘッドの縮小は、この極小値の低減や、極小値を取る時間幅の短縮となって観測される。
[0064]
 上記ではタスクがコアに再配置される場合を説明したが、一部のタスクが休止するだけで、タスクの再配置はなしにシステムが動作を継続する場合もありうる。その場合には、利用されている同期機構の条件だけを変更する。例えば図6のタスク配置にて、タスクBが休止したとき、動作状況管理部32がタスクBの休止を検出し、同期機構選択部34に通知する。同期機構選択部は、同期ID0x01に対応するバリア同期のオブジェクトについて、同期数を3から2に変更する。ただし、タスクBが休止するのは、バリア同期による待ち状態に入る前とする。
[0065]
 以上説明したように、本実施形態によれば、複数の処理の配置状況に応じて、複数種類の同期機構のいずれかを用いて同期を行う又は同期機構を使用しないことを切り替えることができる。
[0066]
 (変形例)
上記ではOSがAMPであることを前提としたが、以下ではOSがSMPとAMPとでモード切り替えをできるものであると想定する。動作状況管理部32がOSのモード情報
(AMP/SMP)を同期機構選択部34に提供し、同期機構選択部34がそのモード情報に応じて、利用する同期機構選択ルールを切り替える。この場合、図5Aの同期機構選択ルール50は、OSがAMPで動作するときに利用される。
[0067]
 換言すれば、動作状況管理部32(検出部)は、コントローラ101(制御装置)にインストールされるオペレーションシステムが対称型(SMP)であるか又は非対称型(AMP)であるかを示すOSモードを検出する。同期機構選択ルール50は、OSモード及び配置状況の組合せと、識別子とを対応づけて記憶する。実行部40は、動作状況管理部32によって検出されたOSモード及び配置状況の組合せに対応する識別子が示す第1処理又は第2処理を実行する。これにより、OSモード及び配置状況に応じて、複数種類の同期機構のいずれかを用いて同期を行う又は同期機構を使用しないことを切り替えることができる。
[0068]
 OSがSMPのときは、例えば同期機構選択ルール50の2行目にて、同期機構をスピンロックではなくOSのリソースにする。OSのリソースの使われ方は、図8と図9で説明したスピンロックと同様である。OSのリソースを利用する場合、ビジーウェイトすることなしに、容易な手順で同期を取ることができる。このように、OSのモード情報(AMP/SMP)を利用することで、より適切な同期機構を選択することができる。
[0069]
 以上では、時間経過と共に動作するタスクが減少する場合の例を説明した。制御モードが「低消費電力2」から「通常」に戻る場合には、動作するタスクは増加する。この場合の同期機構の選択方法は、上記と同じで問題ない。
[0070]
 一方で、動的機能配置と呼ばれるタスクの配置の仕方がある。これは、システムの稼働中に制御ネットワーク上で、コントローラおよびそのプロセッサコアにタスクを追加するものである。動的機能配置が実行される場合には、同期機構選択ルールも同時に更新すればよい。その際、同期機構選択ルールを、制御ネットワークからコントローラ101に配信してもよい。
[0071]
 (第2の実施形態)
以下では、図12を用いて、データ授受部36、データアクセス制御部37の動作例を説明する。タスク配置は当初、図6の制御モードが「通常」の状況とする。
[0072]
 サブタスクa1にはデータ授受部36-1が配置されており、データアクセス制御部37を介して、データバッファ120にデータd1を書き込む。同様に、サブタスクbにはデータ授受部36-2が、サブタスクcにはデータ授受部36-3が配置されており、データバッファ120にそれぞれデータd2、データd3を書き込む。サブタスクa2にはデータ授受部36-4が配置されており、データアクセス制御部37を介して、データバッファ120からデータd1~d3を読み込む。
[0073]
 データバッファ120は、バッファxとバッファyの2面構成となっており、それぞれにデータd1、d2、d3の領域が確保されている。しかし制御モードが「通常」のときには、バッファxのみが用いられる。サブタスクa1が書き込むデータd1とサブタスクa2が読み込むデータd1は、RAM140上で同じ位置に存在する。データd2、d3も読み込みと書き込みが同じ位置である。
[0074]
 データアクセス制御部37は、動作状況管理部32から(タスク配置と関連付いた)現在の制御モードを受け取り、「通常」である場合には、データの読み込みにも書き込みにも、バッファxを用いる。またデータアクセス制御部37は、データ授受部36から指定されるデータIDから、事前に決められたデータ配置情報を検索して、バッファx内のデータの位置を求める。
[0075]
 今、制御モードが「通常」から「低消費電力1」に切り替わったとする。さらに、同期機構選択ルール50の2行目の同期機構に「なし」が指定されているとする。タスクAとタスクCとは同期が取られない。データd3のサブタスクcによる更新からサブタスクa2による取得までには遅延が生じうる。この遅延の最大値は周期タスクの実行周期で決まるが、遅延の最大値は設計上の許容範囲に収まっているとする。
[0076]
 データアクセス制御部37は制御モードが「低消費電力1」の場合には、書き込みと読み込みでバッファxとバッファyを使い分ける。最初に、書き込みにバッファxを、読み込みにバッファyを利用する。データアクセス制御部37は、例えば、サブタスクcによるデータd3の書き込みが完了した時点で、バッファを切り替える。つまり、書き込みにバッファyを、読み込みにバッファxを用いるように変更する。このようにバッファ2面を用いることで、読み書きするタスク同士の同期を取っていなくても、同じ領域に同時に読み書きすることを回避できる。
[0077]
 換言すれば、コントローラ101(制御装置)は、バッファx(第1バッファ)とバッファy(第2バッファ)を備える。実行部40は、同期機構35を使用しない第2処理を実行する場合、第1期間において、複数のタスク(処理)の書き込みにバッファxを用い、複数のタスク(処理)の読み込みにバッファyを用い、第1期間の後の第2期間において、複数のタスクの書き込みにバッファyを用い、複数のタスクの読み込みにバッファxを用いる。
[0078]
 以上のように、データアクセス制御部37はタスク配置と動作に応じて、バッファの読み書き位置を変更する。同期機構の有無もタスク配置と動作に応じて選択されるので、データアクセス制御部37は、同期機構の有無に応じてバッファの読み書き位置を制御しているともいえる。これにより、タスク間の同期機構をなくしても、データの排他制御を実現できる。なおデータアクセス制御部37は再入可能とするか、同期機構を用いて排他的な実行を行う必要がある。
[0079]
 なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上述した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
[0080]
 上記実施形態では、マイクロコンピュータ110(コントローラ101)は、マルチコアプロセッサを備えるが、マルチプロセッサを備えていてもよい。
[0081]
 また、上記の各構成、機能等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサ(マイクロコンピュータ)がそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
[0082]
 なお、本発明の実施形態は、以下の態様であってもよい。
[0083]
 (1)複数のプロセッサと、前記複数のプロセッサに対する複数の処理の配置状況を管理する配置状況管理手段と、前記複数の処理間の同期状態を前記配置状況に基づいて設定する同期状態設定手段と、を備える制御装置。
[0084]
 (2)(1)の制御装置は、処理の構成や処理のプロセッサへの配置を決定する動作単位制御手段を備え、前記動作単位制御手段は、前記同期状態設定手段が同期状態をなしとする場合に、もとは並列または並行に実行される複数の処理を統合して、直列に実行される処理に構成することを特徴とする、制御装置。
[0085]
 (3)(1)において、前記同期状態設定手段は、オペレーションシステムの動作モードも同期状態の設定に利用することを特徴とする、制御装置。
[0086]
 (4)(1)の制御装置は、前記配置状況に基づいてデータの読み書き位置を制御するデータアクセス制御手段を備えることを特徴とする、制御装置。
[0087]
 上記(1)~(4)によれば、コアへの処理配置が変わるとき、可能であれば同期機構をオーバーヘッドがより小さいにものに変える、あるいは同期機構の利用を無くすことにより、処理性能の向上や消費電力の低減を実現する。また同期機構のオーバーヘッドが小さくなる、または無くなると、プロセッサの処理能力に余裕が出て、1つのコアにより多くの処理を配置しやすくなり、コア縮退時に稼働させるコア数を減らしやすくなり、消費電力の低減をさらに図ることができる。

符号の説明

[0088]
31…動作単位制御部、32…動作状況管理部、33…同期機構利用部、34…同期機構選択部、35…同期機構、36…データ授受部、37…データアクセス制御部、40…実行部、50…同期機構選択ルール、51…処理ルーチン選択ルール、101…コントローラ、102…センサ、103…アクチュエータ、110…マイクロコンピュータ、111…入力回路、112…出力回路、113…電源回路、120…データバッファ、121~124…プロセッサコア、130…入出力回路、140…RAM、150…ROM、160…不揮発メモリ

請求の範囲

[請求項1]
 複数のプロセッサと、
 前記複数のプロセッサへの複数の処理の配置状況を検出する検出部と、
 前記複数の処理の間の同期をとる複数種類の同期機構と、
 前記配置状況と、前記同期機構を使用する第1処理又は前記同期機構を使用しない第2処理を示す識別子と、を対応づけて記憶するメモリと、
 前記検出部によって検出された前記配置状況に対応する前記識別子が示す前記第1処理又は前記第2処理を実行する実行部と、
 を備えることを特徴とする制御装置。
[請求項2]
 請求項1に記載の制御装置であって、
 前記検出部は、
 前記制御装置の消費電力を示す制御モードを検出し、
 前記メモリは、
 前記制御モードと、前記配置状況と、を対応づけて記憶し、
 前記制御装置は、
 前記検出部によって検出される前記制御モードに対応する前記配置状況に基づいて、前記複数の処理を前記複数のプロセッサへ配置する動作単位制御部を備える ことを特徴とする制御装置。
[請求項3]
 請求項2に記載の制御装置であって、
 前記動作単位制御部は、
 前記検出部によって検出される前記制御モードが前記制御装置の最小の消費電力を示す場合、前記複数の処理を前記複数のプロセッサのうちの1つに配置し、
 前記実行部は、
 前記複数の処理が前記複数のプロセッサのうちの1つのみに配置される場合、前記第2処理を実行する
 ことを特徴とする制御装置。
[請求項4]
 請求項3に記載の制御装置であって、
 前記実行部は、
 前記第2処理として、前記複数の処理を1つに統合し、統合された1つの処理を実行する
 ことを特徴とする制御装置。
[請求項5]
 請求項2に記載の制御装置であって、
 前記検出部は、
 前記制御装置にインストールされるオペレーションシステムが対称型であるか又は非対称型であるかを示すOSモードを検出し、
 前記メモリは、
 前記OSモード及び前記配置状況の組合せと、前記識別子とを対応づけて記憶し、
 前記実行部は、
 前記検出部によって検出された前記OSモード及び前記配置状況の組合せに対応する前記識別子が示す前記第1処理又は前記第2処理を実行する ことを特徴とする制御装置。
[請求項6]
 請求項2に記載の制御装置であって、
 第1バッファと第2バッファを備え、
 前記実行部は、
 前記第2処理を実行する場合、第1期間において、前記複数の処理の書き込みに前記第1バッファを用い、前記複数の処理の読み込みに前記第2バッファを用い、前記第1期間の後の第2期間において、前記複数の処理の書き込みに前記第2バッファを用い、前記複数の処理の読み込みに前記第1バッファを用いる
 ことを特徴とする制御装置。
[請求項7]
 請求項2に記載の制御装置であって、
 前記動作単位制御部は、
 前記検出部によって検出される前記制御モードが示す前記制御装置の消費電力が小さくなるにつれて、前記複数の処理の数を減らす
 ことを特徴とする制御装置。
[請求項8]
 請求項7に記載の制御装置であって、
 前記動作単位制御部は、
 前記検出部によって検出される前記制御モードが示す前記制御装置の消費電力が小さくなるにつれて、使用するプロセッサの数を減らす
 ことを特徴とする制御装置。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5A]

[ 図 5B]

[ 図 6]

[ 図 7]

[ 図 8]

[ 図 9]

[ 図 10]

[ 図 11]

[ 図 12]