(57)【要約】【課題】スレッドの実行タイミングに影響を与えることなく消費電力の低減が可能なマルチスレッド実行装置及びマルチスレッド実行方法を提供すること。【解決手段】複数のアプリケーションのそれぞれを静的に割り当てられた実行時間及び実行タイミングで実行するマルチスレッド実行装置１００であって、車両状態を監視する車両状態監視手段２１と、車両状態と停止させる停止対象アプリケーションを対応づけて登録したテーブル２２と、車両状態監視手段が前記停止対象アプリケーションを検出した場合、停止対象アプリケーションのみを実行対象のアプリケーションから間引くアプリ停止手段２４と、を有することを特徴とする。【選択図】図１
2011003099.tif 000002
【特許請求の範囲】
【請求項１】
複数のアプリケーションのそれぞれを静的に割り当てられた実行時間及び実行タイミングで実行するマルチスレッド実行装置であって、
前記車両状態を監視する車両状態監視手段と、
前記車両状態と、停止させる停止対象アプリケーションを対応づけて登録したテーブルと、
前記車両状態監視手段が前記停止対象アプリケーションに対応づけられた車両状態を検出した場合、前記停止対象アプリケーションのみを実行対象のアプリケーションから間引くアプリ停止手段と、
を有することを特徴とするマルチスレッド実行装置。
【請求項２】
前記アプリ停止手段は、前記停止対象アプリケーション以外のアプリケーションの前記実行タイミングを変更することなく、実行対象のアプリケーションから間引く、
ことを特徴とする請求項１記載のマルチスレッド実行装置。
【請求項３】
予め、アプリケーション毎に、前記実行時間が動作クロックの消費数により定められており、
前記アプリ停止手段は、前記動作クロックを監視して、前記停止対象アプリケーションが命令フェッチされるタイミングで、命令フェッチ回路に供給される動作クロックを停止する、
ことを特徴とする請求項２記載のマルチスレッド実行装置。
【請求項４】
各アプリケーションのアドレスが記憶される複数のプログラムカウンタを有し、
前記アプリ停止手段は、前記停止対象アプリケーションのアドレスを格納したプログラムカウンタに供給される動作クロックを停止する、
ことを特徴とする請求項３記載のマルチスレッド実行装置。
【請求項５】
前記アプリ停止手段は、前記動作クロックを監視して、
前記停止対象アプリケーションがパイプラインの各ステージに移行するタイミングで、各ステージ毎に、各ステージの回路に供給される動作クロックを停止する、
ことを特徴とする請求項３記載のマルチスレッド実行装置。
【請求項６】
前記テーブルには、車両の走行開始を示す前記車両状態に対応づけて、車両のドアのアンロックを制御するドア用アプリが登録されており、
前記アプリ停止手段が車両の走行開始を検出した場合、前記ドア用アプリを実行対象のアプリケーションから間引く、
ことを特徴とする請求項１記載のマルチスレッド実行装置。
【請求項７】
前記テーブルには、車両が後退することを示す前記車両状態に対応づけて、車両の後退時の軌跡を表示装置に表示するバックガイド用アプリが登録されており、
前記アプリ停止手段が車両の走行開始を検出した場合、前記バックガイド用アプリを実行対象のアプリケーションから間引く、
ことを特徴とする請求項１記載のマルチスレッド実行装置。
【請求項８】
前記停止対象アプリケーションは、当該マルチスレッド実行装置が監視するマイコンの監視用アプリケーションである、
ことを特徴とする請求項１記載のマルチスレッド実行装置。
【請求項９】
前記テーブルには、前記停止対象アプリケーションを停止した場合に再開させる前記車両状態が登録されており、
前記車両状態監視手段が前記停止対象アプリケーションを再開させる前記車両状態を検出した場合、前記アプリ停止手段は、前記停止対象アプリケーションを実行対象のアプリケーションから間引くことを中止する、
ことを特徴とする請求項１記載のマルチスレッド実行装置。
【請求項１０】
複数のアプリケーションのそれぞれを静的に割り当てられた実行時間及び実行タイミングで実行する、電子制御ユニットのマルチスレッド実行方法であって、
車両状態監視手段が車両状態を監視するステップと、
前記車両状態と停止させる停止対象アプリケーションを対応づけて登録したテーブルに基づき、前記車両状態監視手段が前記停止対象アプリケーションに対応づけられた車両状態を検出した場合、
アプリ停止手段が、前記停止対象アプリケーションのみを実行対象のアプリケーションから間引くステップと、
を有することを特徴とするマルチスレッド実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のアプリケーションを割り当てられた実行時間及び実行タイミングで実行するマルチスレッド実行装置等に関し、特に、アプリケーションを選択的に停止できるマルチスレッド実行装置及びマルチスレッド実行方法に関する。
【背景技術】
【０００２】
車載システムの高度化に伴い１台の車両に搭載されるＥＣＵの数が増大していたが、消費電力、配線、搭載スペース等の低減のため、複数のＥＣＵをいくつかのＥＣＵ（統合ＥＣＵ）に集約する要望が高まっている。集約した場合、統合ＥＣＵには複数のアプリケーションが割り当てられ、統合ＥＣＵのマイコンが各アプリケーションをスレッドに分割して実行するという実行形態が予想される。
【０００３】
各スレッドは、ＣＰＵ等のリソースを時分割に割り当てられ、所定時間毎に切り替えて実行されることが多いが、各スレッドの割り当て時間は、車両への搭載前に静的に決められており、そのスレッドの実行が不要でも車両の走行中などに動的に中断することができなかった。このため、統合ＥＣＵに集約する前であればＥＣＵ自体の起動を停止できたのと比べて、統合ＥＣＵに集約しても期待される消費電力の低減効果が得られないおそれがある。
【０００４】
ここで、マイコンが搭載するＣＰＵの各回路は動作クロックにより同期を取って動作するため、一般に動作クロックが大きい方が消費電力も大きいとされる。このため、省電力の点からは動作クロックを低減することが考えられる（例えば、特許文献１参照）。しかし、クロック周波数を低下させると処理性能を保つ必要のあるスレッドの処理結果が所望のタイミングで得られなくおそれがある。この点について、動作クロックを低下させた場合でも所定のスレッドを一定周期でスケジュールするプロセッサシステムが考えられている（例えば、特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００７−５３５７２１号公報
【特許文献２】特開２００７−０５８３３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献２記載のプロセッサシステムのように、所定のスレッドのスケジューリングだけを変更すると、そのスレッドの実行タイミングがずれることになる。すなわち、複数のスレッドがプロセス間通信を行うようなマルチコアやマルチＯＳを搭載した車載システムでは、スレッド間の実行タイミングが合わないことになり所望の結果が得られないおそれがあるという問題がある。情報処理系の車載システムでは、待ち時間を長くするなどで対応することも可能だが、制御系の車載システムでは制御対象の挙動に大きな影響が生じることがある。
【０００７】
本発明は、上記課題に鑑み、スレッドの実行タイミングに影響を与えることなく消費電力の低減が可能なマルチスレッド実行装置及びマルチスレッド実行方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題に鑑み、本発明は、複数のアプリケーションのそれぞれを静的に割り当てられた実行時間及び実行タイミングで実行するマルチスレッド実行装置であって、車両状態を監視する車両状態監視手段と、車両状態と停止させる停止対象アプリケーションを対応づけて登録したテーブルと、車両状態監視手段が前記停止対象アプリケーションを検出した場合、停止対象アプリケーションのみを実行対象のアプリケーションから間引くアプリ停止手段と、を有することを特徴とする。
【発明の効果】
【０００９】
スレッドの実行タイミングに影響を与えることなく消費電力の低減が可能なマルチスレッド実行装置及びマルチスレッド実行方法を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】マルチスレッド実行装置によるスレッドの実行を説明するための図である。
【図２】マルチスレッド実行装置の概略構成図の一例である。
【図３】マイコンにおいてクロックとスレッドの対応を説明する図の一例である。
【図４】図３に示した命令の実行態様において、所定のスレッドの実行に対して動作クロックの提供を停止するマイコンの機能ブロック図を模式的に説明する図の一例である。
【図５】アプリテーブルを模式的に説明する図の一例である。
【図６】スレッドの停止と消費電力の関係を模式的に説明する図の一例である。
【図７】統合ＥＣＵがスレッドを停止／再開する手順を示すフローチャート図の一例である。
【図８】マルチスレッド実行装置の概略構成図の変形例である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について、図面を参照しながら説明する。
【００１２】
図１はマルチスレッド実行装置１００によるスレッドの実行を説明するための図である。図１では、静的な割り当てに従い、４つのスレッドが実行されている。スレッド１〜４と１つのクロックがそれぞれ対応しており、この割り当てでは、各スレッドのリソースの占有時間は互いに等しいことになる。なお、１スレッドと１クロックの対応は、静的にリソースの割り当て時間が決定されている場合の一例であり、１スレッドに複数クロックが割り当てられていてもよく、各スレッドに割り当てられるクロック数が異なっていてもよい。また、リソースとは、命令を実行するための一連の回路をいい、例えばパイプラインの各ステージを実現する回路である。
【００１３】
スレッド１〜４は、例えば車両の停止中に必要なスレッドである。また、スレッド１、２，４は車両の走行中も必要なスレッドであるのに対し、スレッド３は車両の走行中には不要である。不要なスレッドとは、所定の車両状態においてスレッドの処理結果を利用する可能性がないか又は極めて小さいスレッドをいう。
【００１４】
車両の状態とスレッドにこのような関係がある場合、本実施形態のマルチスレッド実行装置１００は、車両が走行したことを検出して、スレッド３のみを停止させる。具体的には、スレッド３を実行するための回路に供給される動作クロックのみ停止（ディスエーブル）させる。こうすることで、スレッド３は実行順が来ても実行されず、スレッド３に対応した１クロックが経過し、次の１クロックでスレッド４が実行される。したがって、不要なスレッド３を実行するための動作クロックを供給しないことで消費電力を低減でき、かつ、他のスレッド１、２、４の実行スケジュールを保つことで、スレッド間の整合性を保つことができる。
【００１５】
図２は、マルチスレッド実行装置１００の概略構成図の一例を示す。車載ＬＡＮ１１には、車両状態監視ＥＣＵ（Electronic  Control  Unit）１２、統合ＥＣＵ１３、ＥＣＵ１及びＥＣＵ２が接続されている。車載ＬＡＮ１１は、例えばＣＡＮ（Controller  Area  Network）であるが、車両状態監視ＥＣＵ及び統合ＥＣＵの通信手段を提供できればよく、ＦｌｅｘＲａｙ等、どのようなプロトコルでもよい。
【００１６】
車両状態監視ＥＣＵ１２は、例えばソフト的に実装された車両状態判定部２１を有し、車両状態を監視して統合ＥＣＵ１３に通知するＥＣＵである。車両状態監視ＥＣＵ１２は、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＣＡＮ通信部、及び、入出力インターフェイスを備えたマイコンを有する。車両状態判定部２１は、車両状態が変化したことを検出すると変化した後の車両状態を、統合ＥＣＵ１３に通知する。統合ＥＣＵ１３は、車両状態を常に監視するのでなく、変化した後の車両状態に応じてスレッドの停止／再開を開始すればよいことになり、統合ＥＣＵ１２の負荷を低減できる。なお、車両状態監視ＥＣＵ１２が有する車両状態判定部２１を統合ＥＣＵ１３に搭載してもよい。
【００１７】
統合ＥＣＵ１３は、マイコン２０、リセット回路や異常監視回路等を搭載した不図示の統合ＩＣ等を有する。マイコン２０は、ＣＰＵ、ＲＡＭ、ＲＯＭ（例えば、後述のメモリ３１）、ＣＡＮ通信部、及び、入出力インターフェイス等を備える。統合ＥＣＵ１３の構成についてはさらに後述する。
【００１８】
統合ＥＣＵ１３は、それまで個別に搭載されていたＥＣＵを集約したＥＣＵという意味で「統合」と称したが、本実施例のスレッドの停止／再開は、統合ＥＣＵ１３が、複数のＥＣＵを統合したものか否かに関わらず適用できる。統合ＥＣＵ１３は、車両に例えば２〜４個程度、搭載されることが想定されており、具体的には、例えば、ボディ系、パワトレ系、ブレーキ系、マルチメディア系、がある。ボディ系の統合ＥＣＵ１３は、ドアの開閉（オートロック／アンロック）、インテリジェントパーキングアシスト、バッグガイドモニタ、ワイパ制御、ライト制御、パワーシート制御等のボディ系に関係する機能を制御する。また、パワトレ系の統合ＥＣＵ１３は、エンジンやトランスミッション等の走行に関係する機能を制御する。また、ブレーキ系の統合ＥＣＵ１３は、ＥＳＣ（Electronic  Stability  Control)、ＡＢＳ（Antilock  Brake  System）、ＴＲＣ（Traction  Control  System）、駐車ブレーキ等、車両の制動に関係する機能を制御する。また、マルチメディア系の統合ＥＣＵ１３は、ナビゲーション、ＴＶやＤＶＤ、カメラが撮影した映像、ラジオ・ＴＶ・ＤＶＤ等の音声、携帯電話網や無線ＬＡＮを介した通信等、各種の情報処理に関係する機能を制御する。統合ＥＣＵ１３にはアクチュエータ１及びアクチュエータ２が接続されており、統合ＥＣＵ１３は、直接、これらを制御することができる。
【００１９】
統合ＥＣＵ１３は、豊富なリソースを有し各種の処理や制御を実行できるが、処理や制御によっては専用のＥＣＵ１又はＥＣＵ２に演算を依頼する方が効率的な場合がある。すなわち、統合ＥＣＵ１３を搭載することで、集約前の全てのＥＣＵの搭載を取りやめる必要はない。図２では、ＥＣＵ１及びＥＣＵ２が、統合ＥＣＵ１３の管理下で演算の実行や不図示のアクチュエータを制御するＥＣＵである。例えば、統合ＥＣＵ１３がボディ系のＥＣＵである場合、ＥＣＵ１又はＥＣＵ２は、電子キーの認証が成立したか否かを判定する照合ＥＣＵ、又は、例えばバックガイドモニタの映像処理を実行するカメラＥＣＵである。本実施形態の統合ＥＣＵ１３は、車両状態に応じてＥＣＵ１又はＥＣＵ２を監視するスレッドを停止させることができる。すなわち、図２の点線内の機器が、統合ＥＣＵ１３が有するアプリケーションの制御対象となる。
【００２０】
統合ＥＣＵ１３は、車両状態に対応づけて停止させるスレッド及び再開させるスレッドを登録したアプリテーブル２２、アプリテーブル２２を参照してスレッドを開始すべきか否かを判定するスレッド開始／停止判定部２３、フラグを参照して動作クロックの提供をスレッド毎に停止／再開するクロック遮断部２４、を有する。
【００２１】
なお、本実施形態では、アプリケーションとスレッドをほぼ同義に使用する。主に、アプリケーションは、開発者やユーザから見た機能単位で、スレッドはマイコン２０から見た機能単位である。同じスレッドに対するリソースの割り当ては固定（スレッドとクロックの対応が決まっている）である。すなわち、それぞれのスレッド１〜４を独立に実行できるが、実行順や実行タイミングが定められている。
【００２２】
なお、アプリケーションは複数のスレッドにより構成されていてもよく、スレッド１が関係した別のスレッド１‘を呼び出してもよい。また、スレッドを、命令バッファやバスなどのハードウェア資源として定義した場合も、スレッドとアプリケーションの対応を固定にすることで、アプリケーションとスレッドを同義に扱うことができる。
【００２３】
図３は、本実施形態のマイコン２０においてクロックとスレッドの対応を説明する図である。命令実行ユニット３４は、ＩＦ（Instruction  Fetch）３５、ＩＤ（Instraction  Dispatcher）３６、ＥＸ（EXcute）３７、ＷＢ（Write  Back）３８及び各種のレジスタ等を有する。ＩＦ３５は命令フェッチ部、ＩＤ３６は命令解読部、ＥＸ３７は命令実行部、ＷＢ３８は書き戻し部である。ＥＥＰＲＯＭ等を実体とするメモリ３１には、スレッド１〜４のアプリケーションプログラムが記憶されている。スレッド１〜４のアプリケーションプログラムを構成するコードがそれぞれ命令１〜４に対応する。
【００２４】
また、ＣＬＫ３２は動作クロックを命令実行ユニット３４の各回路に供給している。命令実行ユニット３４は、複数のＰＣ１〜ＰＣ４を有する。本実施形態のように１クロック毎に時分割してスレッド１〜４を実行する場合、命令実行ユニット３４は、１クロック毎にＰＣが示すアドレスの命令を、メモリ３１から命令バス３３を介してフェッチする。命令実行ユニット３４にとって、どのＰＣがどのスレッドのアドレスを指定しているかは既知である。
【００２５】
本実施形態では、各スレッドにリソースが割り当てられる時間が予め定められている。スレッドの数だけスレッドキューを設けておき、ＯＳの一部に又はハード的に実装されるスレッドスケジューラは、動作クロックを監視しながら、各スレッドに予め割り当てられた時間（クロック数）だけスレッドを命令実行ユニットに割り当てる。したがって、各スレッドは実行時間の比率を保ちながら順番に実行される。なお、例えばスレッドスケジューラがプリエンプティブにスレッドを強制終了することもできる。
【００２６】
命令実行ユニット３４は、命令フェッチ、命令解読、実行、及び、レジスタへのライトバックをそれぞれ１クロックで完了させ、さらに、パイプラインを実装しているので、１クロックで１つの命令（スレッド）を実行することができる。ここで、ＩＦ３５は、１クロック毎に、参照するＰＣを順番に切り替えることで、各スレッド１〜４の命令１〜４を順番にフェッチする。
【００２７】
一方、ＰＣ１〜ＰＣ４は、スレッドの数（すなわち４つ）のクロックが入力される毎に、レジスタに格納したアドレスを所定の増大分だけ大きくする（分岐命令が来ない場合）。命令実行ユニット３４は、各ＰＣがアドレスを増大させるタイミング、ＩＦ３５が命令フェッチするために参照するＰＣ等が、スレッドの数と動作クロックに基づき同期されるように設計されている。
【００２８】
図４は、図３に示した命令の実行態様において、所定のスレッドの実行に対して動作クロックの提供を停止するマイコン２０の機能ブロック図を模式的に説明する図の一例である。図４において図３と同一部には同一の符号を付しその説明は省略する。図４では、ＰＣ１〜ＰＣ４とＣＬＫ３２に間にクロック遮断部２４を有する。このクロック遮断部２４にもＣＬＫ３２から動作クロックが供給されている。
【００２９】
また、クロック遮断部２４は、フラグＦ１〜Ｆ４を一体に有する。クロック遮断部２４は、フラグＦ１がオンになるとＰＣ１へ供給される動作クロックを遮断し、フラグＦ２がオンになるとＰＣ２へ供給される動作クロックを遮断し、フラグＦ３がオンになるとＰＣ３へ供給される動作クロックを遮断し、フラグＦ４がオンになるとＰＣ４へ供給される動作クロックを遮断する。すなわち、１クロック単位で所望の動作クロックのみを選択的に
ＰＣ１〜４に供給することができる。
【００３０】
また、ＣＬＫ３２からＩＦ３５、ＩＤ３６、ＥＸ３７，及びＷＢ３８に動作クロックを供給するクロック供給線にはＳＷ１〜ＳＷ４が設けられている。クロック遮断部２４は、オンになったフラグ１〜４に応じて、所定の動作クロック対し少なくともＳＷ１をオフにする。こうすることで、ＩＦ３５への動作クロックも遮断することができる。例えば、フラグＦ３がオンの場合、クロック遮断部２４はクロック３のタイミングでＳＷ１をオフにする。スレッド３の命令３がフェッチされないので、消費電力を低減することができる。
【００３１】
また、図示するように、クロック遮断部２４は、ＩＤ３６、ＥＸ３７及びＷＢ３８に対しても動作クロックを遮断することができる。すなわち、クロック毎に、ＳＷ２、ＳＷ３、ＳＷ４をオフにすることで、パイプラインの空のステージに対する動作クロックを順番にオフにすることができる。
【００３２】
スレッド開始／停止判定部２３は、このフラグＦ１〜Ｆ４を操作するアプリケーションプログラムである。スレッド開始／停止判定部２３は、マイコン２０の別のＣＰＵ又は不図示のリソースによりアプリケーションプログラムが実行されることで実現される。また、スレッド１〜４を定期的に中断し、スレッド１〜４を実行していたリソースでアプリケーションプログラムを実行してもよい。したがって、スレッド開始／停止判定部２３がスレッド１〜４の実行速度に影響することはない。
【００３３】
スレッド開始／停止判定部２３は、車両状態判定部２１が通知した車両状態情報に基づき、アプリテーブル２２を参照し、フラグＦ１〜Ｆ４をオンからオフに、又は、オフからオンに操作する。
【００３４】
図５はアプリテーブル２２を模式的に説明する図の一例を示す。アプリテーブル２２には、スレッド又はＥＣＵに対応づけて、停止条件及び再開条件が登録されている。スレッド３が例えばドアの開閉を制御するアプリケーションの場合、スレッド３は車両が走行を開始した後不要となる。スレッド３は、例えば統合ＥＣＵ１３と通信可能な電子キーの認証が成立した場合に、ドアのアンロックを許可する。そして、運転者が運転席のドアを開扉すると、スレッド３は、運転席の電子キーを通信により検出し、エンジンやメインシステム（ハイブリッド車や電気自動車の場合）の起動を許可する。運転者がスタートボタンを押下するとイグニッションがオンされ又はメインシステムが起動する。
【００３５】
また、スレッド３は、車両が停止した後も次のような処理を行う。スレッド３は、イグニッションがオフの状態で、全ドアが閉扉、かつ、ドアの車外にあるドアロックボタンがオンされたことを検出すると、そのドアの周辺の電子キーを検出する。そして、車外の電子キーの認証が成立すると、スレッド３はドアロックする。
【００３６】
したがって、スレッド３は、車両が走行を開始すると不要となり、車両を駐車する際に再度、必要となる。このため、アプリテーブル２２には、スレッド３の停止条件として「車速＞１０ｋｍ／ｈ」が、再開条件として「車速＜５ｋｍ／ｈ  かつ  シフトポジション＝Ｐ  かつ  ＰＫＢ装置がオン」であることが登録されている。この停止条件により、車両の走行中、命令実行ユニット３４はスレッド３を実行しないので、消費電力を低減できる。
【００３７】
また、スレッド３がバッグガイドモニタの場合、スレッド３は所定のスイッチにより起動され、後方を撮影するカメラが撮影を開始する。スレッド３は、操舵角、ヨーレート及び車速に基づいて、車両に生じている旋回半径を推定し、更に、旋回半径に基づいて車両の外側後輪が移動すると予想される軌跡を演算する。そして、この軌跡を撮影された画像に重畳して、モニタに表示する。したがって、運転者は現在の操舵角、ヨーレート及び車速による車両の進行方向を視覚的に確認できる。また、スレッド３は、実際の舵角でなく最大の操舵角、ヨーレート及び車速に基づいて、車両に生じ得る最小の旋回半径を推定し、この第２の軌跡を演算す画像に重畳して表示する。運転者は、この２つの軌跡を参考に、操舵角を大きくすればよいのか否か判断し、大きくした場合、所望の駐車スペースに入れるか否かを判断することができる。
【００３８】
バッグガイドモニタの場合、駐車が完了すればスレッド３の実行は必要ないと考えられ、再度、駐車する際に必要となる。このため、アプリテーブル２２には、スレッド３の停止条件として「シフトポジション＝Ｐ  かつ  ＰＫＢ装置がオン」が、再開条件として「所定のスイッチがオン」であることが登録されることになる。この停止条件により、車両が駐車を完了すると、命令実行ユニット３４はスレッド３を実行しないので、消費電力を低減できる。
【００３９】
また、アプリテーブル２２には、スレッドだけでなくスレッドＡ（ＥＣＵ１用アプリ）やスレッドＢ（ＥＣＵ２用アプリ）の停止条件と再開条件が登録されているので、スレッド３のように具体的な演算や制御を実行するスレッドだけでなく、演算や制御を実行するＥＣＵを管理するスレッドを停止／再開することができる。スレッド３と共に、スレッドＡ又はＢが停止されることもある。
【００４０】
図４に戻り、車両状態判定部２１は監視すべき車両情報に基づき、車両状態が変化したことを検出すると変化した後の車両状態をスレッド開始／停止判定部２３に通知する。監視すべき車両情報は、アプリテーブル２２に登録された停止条件及び再開条件の成立を判定するための情報である。車両情報判定部２１は、車載ＬＡＮ１１上を送信されるＣＡＮデータを監視し、それが予め定められた車両情報であることを検出すると、ＣＡＮデータを受信する。車両情報判定部２１には、受信すべきフレームデータのＩＤ番号が登録されている。例えば、車速情報を受信した車両情報判定部２１は、車速が所定値以上に変化したこと、車速が所定値以下に変化したこと、を検出すると車速情報をスレッド開始／停止判定部２３に送信する。また、車両情報判定部２１は、シフトポジション情報を受信して、シフトポジションが変化したことを検出すると、シフトポジション情報をスレッド開始／停止判定部２３に送信する。また、車両情報判定部２１は、ＰＫＢ装置スイッチ情報を受信して、ＰＫＢ装置がオフからオンに、又は、オンからオフに変化したことを検出すると、ＰＫＢ装置スイッチ情報をスレッド開始／停止判定部２３に送信する。こうすることで、スレッド開始／停止判定部２３は、車両状態情報に応じてアプリテーブル２２を参照し、停止又は再開するスレッドがあるか否かを判定できる。
【００４１】
スレッド開始／停止判定部２３は、停止又は再開するスレッドがあると判定すると、フラグＦ1〜Ｆ４を操作する。スレッド開始／停止判定部２３が、フラグＦ１〜４を操作するためには、スレッド１〜４とフラグＦ１〜Ｆ４の対応関係を知っている必要がある。この対応関係は、言い換えればスレッド１〜４とクロックの対応関係であるが、後者の対応関係は静的に定められているのでスレッド開始／停止判定部２３にとって既知である。すなわち、スレッド開始／停止判定部２３は、スレッド１〜４に対応したフラグＦ１〜Ｆ４を予め定めておくことができる。スレッド開始／停止判定部２３が、フラグＦ１〜Ｆ４の操作の前に、例えばＯＳにＰＣ１〜４とフラグＦ１〜Ｆ４の対応関係を問い合わせてもよい。
【００４２】
スレッド開始／停止判定部２３は、停止するスレッドがあると判定すると、対応するフラグ（例えばフラグＦ３）をオンに操作する。クロック遮断部２４は、フラグＦ３に対応づけられたＰＣ３に供給される動作クロックを遮断する。また、スレッド開始／停止判定部２３は、再開するスレッドがあると判定すると、対応するフラグ（例えばフラグＦ３）をオフに操作する。クロック遮断部２４は、フラグＦ３に対応づけられたＰＣ３に供給される動作クロックを再開する。
【００４３】
図６は、スレッドの停止と消費電力の関係を模式的に説明する図の一例である。図６（ａ）はスレッドが停止されていない場合の消費電力を、図６（ｂ）はスレッド３が停止された場合の消費電力を、それぞれ示す。スレッド３が停止されていない場合、命令実行ユニット３４がスレッド１〜３を実行する毎にほぼ一定の電力が消費される。これに対し、スレッド３が停止されると、命令実行ユニット３４がスレッド３を実行する期間（１クロックに対応する期間）の消費電力を低下させることができる。
【００４４】
図６（ｃ）は消費電力の低減を説明する図である。スレッド３の実行の際、ＩＦ３５に動作クロックが供給されなかったので、スレッド３の命令はフェッチされない。このため、スレッド３の命令は、以降のステージ「ＩＤ、ＥＸ、ＷＢ」においても実行されないので、図６（ｂ）に示したように消費電力を低減することができる。
【００４５】
どの程度、消費電力を削減できるかは、マイコン２０が有するＣＰＵの設計にもよる。図４に示したように、スレッド３の各ステージに対応した回路に動作クロックの供給の有無を制御するＳＷ１〜４を有する場合、スレッド３の全てのステージで消費電力を削減できる。すなわち、クロック３でＳＷ１＝オフ、クロック４でＳＷ２＝オフ、クロック５でＳＷ３＝オフ、クロック６でＳＷ４＝オフ、とする。この場合、停止したスレッド数／全スレッド数に相当する消費電力（図６では停止したスレッド数が１、全スレッド数が４なので、２５％の消費電力の削減が期待できる。）。実際には、命令実行ユニット３４に動作クロックが提供されているので、スレッド３を実行する期間の消費電力はゼロにならず、消費電力の削減効果は若干低下する。
【００４６】
また、例えば、スレッド３の各ステージ毎に、動作クロックの供給を制御することが困難でも、スレッド３では各ステージ「ＩＦ、ＩＤ、ＥＸ、ＷＢ」が不要なので、消費電力の大幅な削減を期待できる。例えば、ＮＯＰ命令は他の命令と比べて消費電力を低減できることが知られているが、命令フェッチしないだけでもＮＯＰ命令実行時の同等以上の消費電力削減効果を期待できる。
【００４７】
なお、スレッド４が、クロック３からでなくクロック４からステージの遷移を開始していることから、スレッド１、２、４の実行タイミング（スケジュール）に整合性を保ったまま、スレッド３を停止していることが確認できる。
【００４８】
図７は、統合ＥＣＵ１３がスレッドを停止／再開する手順を示すフローチャート図の一例である。図７のフローチャート図は、統合ＥＣＵ１３が起動すると繰り返し実行される。
【００４９】
車両状態判定部２１は、車両状態情報に基づき車両状態が変化したか否かを監視する（Ｓ１０）。車両状態が変化しなければ（Ｓ１０のＮｏ）、スレッドの停止又は再開は不要なので、図7の処理を終了する。
【００５０】
車両状態が変化した場合（Ｓ１０のＹｅｓ）、停止又は再開するスレッドがある可能性があるので、車両状態判定部２１が、車両状態情報を統合ＥＣＵ１３に送信する（Ｓ２０）。
【００５１】
スレッド開始／停止判定部２３は、車両状態情報に基づきアプリテーブル２２を参照し、停止可能なスレッドがあるか否かを判定する（Ｓ３０）。停止可能なスレッドがある場合（Ｓ３０のＹｅｓ）、スレッド開始／停止判定部２３は停止すべきスレッドを停止する（Ｓ４０）。具体的には、フラグＦ１〜Ｆ４をオンにする。これにより、クロック遮断部２４がフラグに対応したスレッドへの動作クロックの供給を遮断する。
【００５２】
ついで、スレッド開始／停止判定部２３は、車両状態情報に基づきアプリテーブル２２を参照し、再開可能なスレッドがあるか否かを判定する（Ｓ５０）。再開可能なスレッドがある場合（Ｓ５０のＹｅｓ）、スレッド開始／停止判定部２３は再開できるスレッドを再開する（Ｓ６０）。具体的には、フラグＦ１〜Ｆ４をオフにする。これにより、クロック遮断部２４がフラグに対応したＰＣ等への動作クロックの供給を再開する。
【００５３】
以上説明したように、本実施形態の統合ＥＣＵ１３は、車両状態に応じて動的にスレッドを停止できるので消費電力を低減できる。また、停止したスレッドがあっても、他のスレッド１、２、４の実行スケジュールを変えないので、スレッド間の整合性を保つことができる。このため、特に制御系のマルチスレッド実行装置１００では制御対象の挙動に影響が生じさせることなく消費電力の低減が可能となる。
【００５４】
〔変形例〕
好適な変形例を説明する。図８は、マルチスレッド実行装置１００の概略構成図の変形例である。図８において図２と同一部には同一の符号を付しその説明は省略する。図８では、車両状態監視ＥＣＵ１２がアプリテーブル２２とスレッド開始／停止判定部２３を有し、統合ＥＣＵ１３はクロック遮断部２４のみを有する。統合ＥＣＵ１３はスレッドの停止又は再開を最低１クロック毎に制御するため、統合ＥＣＵ１３がハード的に実装していることが好ましい。一方、アプリテーブル２２とスレッド開始／停止判定部２３は、クロックと同期するほどの時間的な制限がないので、他のＥＣＵ（車両状態監視ＥＣＵ１２以外）が有していてもよい。
【００５５】
図８のような構成の場合、スレッド開始／停止判定部２３は、フラグＦ１〜Ｆ４を指定して、オン又はオフにすることを要求する信号を統合ＥＣＵ１３に送信する。統合ＥＣＵ１３は受信した信号に基づきフラグをオン又はオフに操作する。以降の処理は、図２と同様である。
【００５６】
図８のような構成であれば、統合ＥＣＵ１３の処理負荷を低減して、統合ＥＣＵ１３の本来の処理にリソースを集中させやすくできる。
【符号の説明】
【００５７】
１１    車載ＬＡＮ
１２    車両状態監視ＥＣＵ
１３    統合ＥＣＵ
２０    マイコン
２２    アプリテーブル
２３    スレッド開始／停止判定部
２４    クロック遮断部
３１    メモリ
３２    ＣＬＫ
【図１】
2011003099.tif 000003
【図２】
2011003099.tif 000004
【図３】
2011003099.tif 000005
【図４】
2011003099.tif 000006
【図５】
2011003099.tif 000007
【図６】
2011003099.tif 000008
【図７】
2011003099.tif 000009
【図８】
2011003099.tif 000010