(57)【要約】【課題】低コストな構成によって、制御対象の要求する演算処理の内容に柔軟に対応可能な、汎用性の高い制御システムを提供すること。【解決手段】所定の制御対象に対する制御がそれぞれに割り当てられ、割り当てられた制御のための演算処理を行う複数のプロセッサと、一以上のＳＩＭＤ（Single  Instruction/Multiple  Data）演算手段と、を有する制御システムであって、前記複数のプロセッサのいずれかが実行する特定の演算処理を、前記複数のプロセッサ及び前記ＳＩＭＤ演算手段に分散させて割り当てる分散処理制御手段を備え、前記複数のプロセッサは、前記分散処理制御手段により割り当てられた演算処理を、自己に割り当てられている制御のための演算処理よりも優先して実行することを特徴とする、制御システム。【選択図】図１
2011232993.tif 000002
【特許請求の範囲】
【請求項１】
所定の制御対象に対する制御がそれぞれに割り当てられ、割り当てられた制御のための演算処理を行う複数のプロセッサと、一以上のＳＩＭＤ（Single  Instruction/Multiple  Data）演算手段と、を有する制御システムであって、
前記複数のプロセッサのいずれかが実行する特定の演算処理を、前記複数のプロセッサ及び前記ＳＩＭＤ演算手段に分散させて割り当てる分散処理制御手段を備え、
前記複数のプロセッサは、前記分散処理制御手段により割り当てられた演算処理を、自己に割り当てられている制御のための演算処理よりも優先して実行することを特徴とする、制御システム。
【請求項２】
前記特定の演算処理は、ＳＩＭＤ演算である、請求項１に記載の制御システム。
【請求項３】
請求項１又は２に記載の制御システムであって、
前記分散処理制御手段により演算処理が割り当てられた複数のプロセッサは、該分散処理制御手段により割り当てられた演算処理以外の従来から実行していた処理については、該分散処理制御手段により割り当てられた演算処理と並行して実行することを特徴とする、制御システム。
【請求項４】
請求項１ないし３のいずれか１項に記載の制御システムであって、
前記ＳＩＭＤ演算手段は、所定単位のＳＩＭＤ演算手段であり、
プログラムメモリに格納された該制御システムの実行命令のうち、ＳＩＭＤ演算を行うための実行命令は、前記所定単位のＳＩＭＤ演算に相当する単位に分解されていることを特徴とする、制御システム。
【請求項５】
請求項１ないし４のいずれか１項に記載の制御システムであって、
前記分散処理制御手段は、前記複数のプロセッサに割り当てられている制御に優先度を設定しており、優先度の高い制御のための特定の演算処理を、該制御に比して優先度の低い制御が割り当てられているプロセッサ、及び前記ＳＩＭＤ演算手段に割り当てる手段である、制御システム。
【請求項６】
請求項１ないし５のいずれか１項に記載の制御システムであって、
前記分散処理制御手段は、前記分散割り当てされる特定の演算処理が含まれる制御を実行しているプロセッサに、最も処理時間を多く要するように演算処理を割り当てる手段である、制御システム。
【請求項７】
車両に搭載される請求項１ないし６のいずれか１項に記載の制御システムであって、
前記複数のプロセッサに割り当てられた制御は、車載機器制御である、制御システム。
【請求項８】
請求項７に記載の制御システムであって、
前記分散処理制御手段は、車載センサにより取得される車両状態値の変化率が所定値を超える場合に、前記特定の演算処理の分散割り当てを実行する手段である、
制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサによって演算処理が行われる制御システムに関し、特に、共用演算手段としてＳＩＭＤ演算手段を備える制御システムに関する。
【背景技術】
【０００２】
従来、車載制御システム等の分野において、複数のプロセッサによって演算処理を行うものが普及している。プロセッサによる演算処理は、プロセッサ内部のＡＬＵ（Arithmetic  Logic  Unit；演算器）によって行われる場合もあり、演算処理のみを行う共有演算器（外部演算器）によって行われる場合もある。
【０００３】
共有演算器としては、通常の逐次型演算器（スカラ型演算器とも称される）の他、一命令で複数のデータに対して複数データに演算を行うことが可能なＳＩＭＤ（Single  Instruction/Multiple  Data）演算器が用いられ得る。ＳＩＭＤ演算器と逐次型演算器のように、異なるアーキテクチャの演算器を備えることによって、処理の効率化を図ることができる。
【０００４】
これに関連し、ＳＩＭＤ型演算処理手段と、逐次型演算処理手段とを有する画像処理装置についての発明が開示されている（例えば、特許文献１参照）。この装置では、ＦＩＲフィルターのようにＳＩＭＤ型演算処理手段で演算可能なＳＩＭＤ向きアルゴリズムと、ＩＩＲフィルターのように逐次型演算処理手段で演算可能な逐次型向きアルゴリズムとを区別して制御している。そして、これらの演算処理手段が直列に接続された構成例や、並列に接続された構成例が挙げられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−０９２９４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の特許文献１に記載の装置は、搭載される車両その他の制御対象の、品質の高低に対応可能な汎用性を有していない。
【０００７】
この種の制御システムが搭載される車両その他の制御対象の要求する演算処理の内容は、制御対象の品質によって様々である。例えば、８気筒のエンジンを搭載する車両と４気筒のエンジンを搭載する車両では、必要な演算処理の内容や量、段数等が異なるものとなる。８気筒のエンジンを制御する制御システムを、そのまま（ソフトウエア変更のみで）４気筒のエンジンを制御する制御システムとして搭載するのは可能であるが、この場合、プロセッサの数やＳＩＭＤ演算器の機能が過剰となり、無駄なコストが発生するおそれがある。
【０００８】
特許文献１に記載の装置は、このような無駄なコストを削減可能な汎用性を装置に持たせるための工夫がなされていない。従って、装置自身、並びに装置が搭載された制御対象のコストや重量を増加させる場合がある。
【０００９】
本発明はこのような課題を解決するためのものであり、低コストな構成によって、制御対象の要求する演算処理の内容に柔軟に対応可能な、汎用性の高い制御システムを提供することを、主たる目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するための本発明の一態様は、
所定の制御対象に対する制御がそれぞれに割り当てられ、割り当てられた制御のための演算処理を行う複数のプロセッサと、一以上のＳＩＭＤ（Single  Instruction/Multiple  Data）演算手段と、を有する制御システムであって、
前記複数のプロセッサのいずれかが実行する特定の演算処理を、前記複数のプロセッサ及び前記ＳＩＭＤ演算手段に分散させて割り当てる分散処理制御手段を備え、
前記複数のプロセッサは、前記分散処理制御手段により割り当てられた演算処理を、自己に割り当てられている制御のための演算処理よりも優先して実行することを特徴とする、制御システムである。
【００１１】
この本発明の一態様によれば、複数のプロセッサのいずれかが実行する特定の演算処理を、複数のプロセッサ及びＳＩＭＤ演算手段に分散させて割り当てる分散処理制御手段を備えるため、特定の演算処理を効率的に行うことができる。また、分散処理を行うことによって、各ＣＰＵやＳＩＭＤ演算手段の性能を過剰に高いものにする必要がなくなるため、コストや重量の増大を抑制することができる。従って、低コストな構成によって、制御対象の要求する演算処理の内容に柔軟に対応可能な、汎用性の高い制御システムを提供することができる。
【００１２】
本発明の一態様において、
前記特定の演算処理は、例えばＳＩＭＤ演算である。
【００１３】
また、本発明の一態様において、
前記分散処理制御手段により演算処理が割り当てられた複数のプロセッサは、該分散処理制御手段により割り当てられた演算処理以外の従来から実行していた処理については、該分散処理制御手段により割り当てられた演算処理と並行して実行することを特徴とするものとすると、好適である。
【００１４】
こうすれば、分散割り当てされた演算処理によって、割り当てられた側のプロセッサの処理が遅延する不都合を抑制することができる。
【００１５】
また、本発明の一態様において、
前記ＳＩＭＤ演算手段は、所定単位のＳＩＭＤ演算手段であり、
プログラムメモリに格納された該制御システムの実行命令のうち、ＳＩＭＤ演算を行うための実行命令は、前記所定単位のＳＩＭＤ演算に相当する単位に分解されていることを特徴とするものとしてもよい。
【００１６】
また、本発明の一態様において、
前記分散処理制御手段は、前記複数のプロセッサに割り当てられている制御に優先度を設定しており、優先度の高い制御のための特定の演算処理を、該制御に比して優先度の低い制御が割り当てられているプロセッサ、及び前記ＳＩＭＤ演算手段に割り当てる手段であるものとすると、好適である。
【００１７】
こうすれば、制御の緊急性の高いものに対しては分散処理によって高速処理を実現し、制御の緊急性の低いものに対しては分散処理を行わないことにより他の制御への干渉を防止することができる。
【００１８】
また、本発明の一態様において、
前記分散処理制御手段は、前記分散割り当てされる特定の演算処理が含まれる制御を実行しているプロセッサに、最も処理時間を多く要するように演算処理を割り当てる手段であるものとすると、好適である。
【００１９】
こうすれば、分散割り当てされた演算の結果が、他のプロセッサやＳＩＭＤ演算手段によってレジスタやデータ用メモリ等に書き込まれる前に、当該プロセッサの次の命令が実行されることによる不都合を回避することができる。
【００２０】
また、車両に搭載される本発明の一態様において、
前記複数のプロセッサに割り当てられた制御は、車載機器制御であるものとしてもよい。
【００２１】
この場合、
前記分散処理制御手段は、車載センサにより取得される車両状態値の変化率が所定値を超える場合に、前記特定の演算処理の分散割り当てを実行する手段であるものとすると、好適である。
【００２２】
こうすれば、制御の緊急性の高い場合に限定して高速処理を実現し、他の場合には分散処理を行わないことにより他の制御への干渉を防止することができる。
【発明の効果】
【００２３】
本発明によれば、低コストな構成によって、制御対象の要求する演算処理の内容に柔軟に対応可能な、汎用性の高い制御システムを提供することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の一実施例に係る制御システム１のシステム構成例である。
【図２】各ＣＰＵ３０の機能構成の概略を示す図である
【図３】高次の行列演算が、２×２の行列演算に分解可能であることを示す図である。
【図４】８×８の行列演算を表す命令を、２×２の行列演算を表す命令に分解する様子を示す図である。
【図５】ソースコードから、命令用メモリ１０に格納される命令にコンパイルする際の処理の流れを示すフローチャートである。
【図６】ソースコードから、命令用メモリ１０に格納される命令にコンパイルする際の処理の流れを示すフローチャートの他の例である。
【図７】各ＣＰＵ及び共用ＳＩＭＤ・ＡＬＵ４０に、演算対象となるデータが割り当てられた様子を示す図である。
【図８】車載センサとしてクランク角センサを備える場合の制御システム１のシステム構成例である。
【図９】センサ出力値とその変化率の時間的変化を示す図である。
【図１０】演算スケジュール制御装置５０により実行される特徴的な処理の流れを示すフローチャートである。
【図１１】各ＣＰＵ、及び共用ＳＩＭＤ・ＡＬＵによって実行される処理の流れを模式的に示した図である。
【図１２】制御システム１と同種の制御システムを、ハイエンドモデル（高性能モデル）、及びローエンドモデル（廉価版モデル）として別々に開発した結果を示す図である。
【発明を実施するための形態】
【００２５】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【００２６】
以下、図面を参照し、本発明の一実施例に係る制御システムについて説明する。本発明の制御システムは、複数のプロセッサ、及び共用演算手段としてのＳＩＭＤ演算器によって演算処理を行うものであり、例えば車両に搭載されて種々の車載機器制御を行う制御システムに、好適に適用される。
【００２７】
車載機器制御の例としては、例えばエンジン制御、ブレーキ制御、パワーステアリング等を制御するステアリング制御、ドアロック等を制御するボデー制御、ＶＳＣ（Vehicle  Stability  Control）やＶＤＩＭ（Vehicle  Dynamics  Integrated  Management）等の車両安定化制御、ＡＣＣ（Adaptive  Cruise  Control）等の運転支援制御、ナビゲーション制御等の情報系制御が挙げられる。
【００２８】
近年では、こうした各種の車載機器制御を統合して多機能の制御システムを構成することが行われている。本発明の制御システムは、特に、このような多機能の制御システムに好適に適用されるものであり、処理の効率化を実現すると共に、要求される機能の多様化に対する汎用性を有している。
【００２９】
［構成］
図１は、本発明の一実施例に係る制御システム１のシステム構成例である。制御システム１は、主要な構成として、命令用メモリ１０と、命令側バス２０と、複数のＣＰＵ（Central  Processing  Unit；ＣＰＵコア、又はプロセッサコアと称してもよい）３０＃１、３０＃２、…、３０＃ｎと、共用ＳＩＭＤ・ＡＬＵ（ＳＩＭＤ演算器）４０と、演算スケジュール制御装置５０と、データ側バス６０と、データ用メモリ７０と、を備えており、いわゆるマルチコア・プロセッサとして構成される。なお、ＣＰＵの個数に特段の制限はなく、２個以上であれば如何なる個数であっても構わない。また、各プロセッサが専用バス等を備えるマルチプロセッサ装置として構成されても構わない。
【００３０】
以下、本実施例の制御システム１は、車両に搭載された制御システムであるものとする。制御システム１のデータ側バス６０には、車載センサ９０＃１、９０＃２、…、９０＃ｎのセンサ出力値を監視し、その変化率を算出する変化率算出回路８０が接続されている。
【００３１】
命令用メモリ１０は、例えばＲＯＭ（Read  Only  Memory）やＥＥＰＲＯＭ（Electrically  Erasable  and  Programmable  Read  Only  Memory）であり、各ＣＰＵにより実行される複数の命令が格納されている。
【００３２】
本発明において、各ＣＰＵは、それぞれ所定の制御対象に対する制御が割り当てられている。以下、簡易な例として、ＣＰＵ３０＃１はエンジン制御を実行し、ＣＰＵ３０＃２はナビゲーション制御等の情報系制御を実行しており、ＣＰＵの数は２個であるものとする。
【００３３】
各ＣＰＵは、それぞれプログラムカウンタを有しており、ＣＰＵ命令に応じて、プログラムカウンタのカウンタ値をインクリメント又はジャンプさせると共に、命令用メモリ１０に出力する。すなわち、命令用メモリ１０に格納された命令は、命令側バス２０を介して各ＣＰＵにフェッチされる。命令用メモリ１０は、各ＣＰＵから入力されたカウンタ値の示すアドレスに格納された命令を、当該ＣＰＵに出力する。
【００３４】
ＣＰＵ３０＃１、３０＃２、…、３０＃ｎは、逐次型演算器として構成されるＡＬＵ３２＃１、３２＃２、…、３２＃ｎを備える。
【００３５】
また、ＣＰＵ３０＃１、３０＃２、…、３０＃ｎは、演算スケジュール制御装置５０によりディスパッチされた演算処理を格納するためのレジスタ領域として、ＤＩＳ・ＩＮＳＴ（Dispatch  Instruction）３４＃１、３４＃２、…、３４＃ｎを備える。各ＣＰＵは、演算スケジュール制御装置５０によりディスパッチされた演算処理を、自己が担当するタスクを実行するための演算処理よりも優先して実行する。
【００３６】
図２は、各ＣＰＵ３０の機能構成の概略を示す図である（ここでは、ＣＰＵの識別子である「＃ｎ」を省略する）。ＣＰＵ３０は、命令側バス２０を介してフェッチした命令を、命令バッファ３５に格納する。命令バッファ３５は、例えばＦＩＦＯ（First  In,  First  Out）であり、格納された命令を逐次、命令デコーダ３６に出力する。命令デコーダ３６は、入力された命令を復号（デコード）し、命令キュー３７に格納する。命令発行部３８は、命令キュー３７に格納された命令、又はＤＩＳ・ＩＮＳＴ３４に書き込まれた命令を、ＡＬＵ３２やＬＳＵ（Load  Store  Unit）３９に出力する。ＡＬＵ３４は、入力された命令を実行すると共に、命令が指定するレジスタやデータ用メモリ７０内の所定領域に、演算結果を格納する。
【００３７】
なお、命令発行部３８は、ＤＩＳ・ＩＮＳＴ３４に書き込まれた命令をＡＬＵ３２に出力するが、この場合、命令キュー３７に格納されたロード・ストア命令については、ＤＩＳ・ＩＮＳＴ３４に書き込まれた命令とのＡＬＵ同時使用依存性が存在しないため、ＤＩＳ・ＩＮＳＴ３４に書き込まれた命令と同時に発行することが可能である。すなわち、演算スケジュール制御装置５０により演算処理が割り当てられたＣＰＵ３０は、割り当てられた演算処理以外の従来から実行していた処理（ロード・ストア処理）を、割り当てられた演算処理と並行して同時実行することができる。但し、演算スケジュール制御装置５０により割り当てられた演算処理を元々実行していたＣＰＵ３０は、係る並行・同時実行を行わないものとしてもよい。
【００３８】
共用ＳＩＭＤ・ＡＬＵ４０は、例えば、２×２の行列演算を行うことが可能な演算器である。本実施例の制御システム１は、より高次の行列演算を行うことが求められているが、命令用メモリ１０に格納された命令は、高次の行列演算が、２×２の行列演算に分解されている。
【００３９】
［行列演算の分解］
図３は、高次の行列演算が、２×２の行列演算に分解可能であることを示す図である。図中、Ａ2×2は２×２の行列演算を示し、Ａ4×4は４×４の行列演算を示し、Ａ8×8は８×８の行列演算を示している。
【００４０】
また、図４は、８×８の行列演算を表す命令（コンパイルされ、命令用メモリ１０に格納された状態である）を、２×２の行列演算を表す命令に分解する様子を示す図である。図中、上段と下段の右側に示す領域は、演算対象となるデータが格納されるデータ用メモリ７０上の記憶領域を模式的に示したものである。図示するように、８×８の行列演算では、演算対象となるデータに対して一括して演算が行われるが、２×２の行列演算では、演算対象となるデータが記憶された領域を水平方向及び垂直方向に走査することにより演算対象を取得し、逐次演算が行われる。
【００４１】
図５は、ソースコードから、命令用メモリ１０に格納される命令にコンパイルする際の処理の流れを示すフローチャートである。
【００４２】
コンパイルを行うコンパイラは、まず、ｎ×ｎマトリクスの演算式を取得する（Ｓ１００）。
【００４３】
そして、マトリクス演算数ｎが２以下であるか、２を超えるかを判定する（Ｓ１０２）。
【００４４】
マトリクス演算数ｎが２以下である場合は、単にｎ×ｎマトリクスの演算式をコンパイルして出力する（Ｓ１０４）。
【００４５】
一方、マトリクス演算数ｎが２を超える場合は、ｎ×ｎマトリクスの演算式を２×２マトリクスの演算式に分解し、分解した演算式をコンパイルして出力する（Ｓ１０６）。
【００４６】
また、図５に示したフローチャートは、図６のように、プロファイル情報を付加する態様に変形してもよい。図６は、ソースコードから、命令用メモリ１０に格納される命令にコンパイルする際の処理の流れを示すフローチャートの他の例である。
【００４７】
コンパイルを行うコンパイラは、まず、ｎ×ｎマトリクスの演算式を取得する（Ｓ２００）。
【００４８】
そして、マトリクス演算数ｎが２以下であるか、２を超えるかを判定する（Ｓ２０２）。
【００４９】
マトリクス演算数ｎが２以下である場合は、単にｎ×ｎマトリクスの演算式をコンパイルして出力する（Ｓ２０４）。
【００５０】
一方、マトリクス演算数ｎが２を超える場合は、ｎ×ｎマトリクスの演算式を２×２マトリクスの演算式に分解し、分解した演算式をコンパイルすると共に、プロファイル情報を付加して出力する（Ｓ２０６）。
【００５１】
ここで、プロファイル情報とは、例えば、フィードバック回数、四則演算や論理演算の回数等である。プロファイル情報は、マトリクス演算毎に付与されてもよいし、幾つかのマトリクス演算の集合に対して付与されてもよい。
【００５２】
［分散割り当て制御］
演算スケジュール制御装置５０は、各ＣＰＵに割り当てられた制御について優先度を設定している。優先度は、ＰｒｉＲｅｇ（Priority  Resister）５２＃１、ＰｒｉＲｅｇ５２＃２、…、５２＃ｎによって規定されている。例えば、レジスタ値が１であれば最も優先度が低く、５であれば最も優先度が高いことを意味する。本実施例では、例えばＣＰＵ３０＃１のエンジン制御に優先度５が設定されており、ＣＰＵ３０＃２の情報系制御に優先度３が設定されている。
【００５３】
また、演算スケジュール制御装置５０は、各ＣＰＵが有する命令キュー３７を監視しており、いずれかのＣＰＵ実行するＳＩＭＤ演算を、各ＣＰＵ及び共用ＳＩＭＤ・ＡＬＵ４０に分散させて割り当てる。具体的には、分散割り当てさせるＳＩＭＤ演算を、当該ＣＰＵが有する命令キュー３７から取り出し、分解した後に、各ＣＰＵのＤＩＳ・ＩＮＳＴ３４に書き込む。前述したように、各ＣＰＵは、演算スケジュール制御装置５０によりディスパッチされた演算処理を、自己が担当するタスクを実行するための演算処理よりも優先して実行する。
【００５４】
図７は、各ＣＰＵ及び共用ＳＩＭＤ・ＡＬＵ４０に、演算対象となるデータが割り当てられた様子を示す図である。
【００５５】
但し、演算スケジュール制御装置５０は、全てのＣＰＵの行うＳＩＭＤ演算について、各ＣＰＵ及び共用ＳＩＭＤ・ＡＬＵ４０への分散割り当てを行うものとする必要はなく、以下のように分散割り当てを行う場面を制限してもよい。
【００５６】
（１）演算スケジュール制御装置５０は、「優先度の高い制御を行っているＣＰＵから優先度の低いＣＰＵへの割り当てのみ行う」ものとしてよい。すなわち、本実施例では、優先度の高いエンジン制御を行っているＣＰＵ３０＃１の実行するＳＩＭＤ演算は、各ＣＰＵ及び共用ＳＩＭＤ・ＡＬＵ４０に分散割り当てされるが、優先度の低い情報系制御を行っているＣＰＵ３０＃２の実行するＳＩＭＤ演算は、各ＣＰＵ及び共用ＳＩＭＤ・ＡＬＵ４０に分散割り当てされないものとしてよい。
【００５７】
こうすれば、制御の緊急性の高いものに対しては分散処理によって高速処理を実現し、制御の緊急性の低いものに対しては分散処理を行わないことにより他の制御への干渉を防止することができる。なお、ＣＰＵ３０＃２の実行するＳＩＭＤ演算を共用ＳＩＭＤ・ＡＬＵ４０にのみ割り当てる、或いはＣＰＵ３０＃２と共用ＳＩＭＤ・ＡＬＵ４０によって分散処理するのは構わない。この条件（１）を設けない場合、各ＰｒｉＲｅｇは必須の構成でない。
【００５８】
（２）また、演算スケジュール制御装置５０は、「制御の過渡期に限定して分散割り当てを行う」ものとしてもよい。制御の過渡期とは、例えば制御対象の状態を示すセンサ出力値の変化率（より厳密には、その絶対値）が所定値以上である期間と定義できる。
【００５９】
図８は、車載センサとしてクランク角センサを備える場合の制御システム１のシステム構成例である。この例では、クランク角センサの出力値の変化率が所定値以上である場合にのみ、分散割り当てを行う。
【００６０】
変化率算出回路８０は、係る制限を課すための構成であり、各車載センサの出力値を周期的にサンプリングし、該当するＣＰＵにその変化率（微分値）を出力する。車載センサの出力値の変化率αは次式（１）によって求められる。式中、Ｄ（ｔ）は、時刻ｔにおけるセンサ出力値であり、ｔ＊はサンプリング周期である。また、図９は、センサ出力値とその変化率の時間的変化を示す図である。図中、折れ線を構成する各直線の傾きが、センサ出力値の変化率に相当する。
【００６１】
α＝｛Ｄ（ｔ）−Ｄ（ｔ−ｔ＊）｝／ｔ＊  …（１）。
【００６２】
こうすれば、制御の緊急性の高い場合に限定して高速処理を実現し、他の場合には分散処理を行わないことにより他の制御への干渉を防止することができる。
【００６３】
図１０は、演算スケジュール制御装置５０により実行される特徴的な処理の流れを示すフローチャートである。本フローは、例えばＣＰＵクロックの１クロック毎、或いは数クロック毎に、繰り返し実行される。
【００６４】
まず、各ＣＰＵの命令キュー３７に、ＳＩＭＤ演算命令が格納されているか否かを判定する（Ｓ３００）。いずれのＣＰＵの命令キュー３７にもＳＩＭＤ演算命令が格納されていない場合は、本フローの１ルーチンを終了する。
【００６５】
いずれかのＣＰＵの命令キュー３７にＳＩＭＤ演算命令が格納されている場合は、優先度が高いＣＰＵ３０＃１により実行されるＳＩＭＤ演算であるか否かを判定する（Ｓ３０２）。
【００６６】
優先度が低いＣＰＵ３０＃２により実行されるＳＩＭＤ演算である場合は、分散割り当てを行わない。この場合、当該優先度が低いＣＰＵ３０＃２が、自己が実行するＳＩＭＤ演算の一部又は全部を共用ＳＩＭＤ・ＡＬＵ４０に処理させるように制御する。
【００６７】
優先度が高いＣＰＵ３０＃１により実行されるＳＩＭＤ演算である場合は、制御対象に対する制御が過渡期であるか否かを判定する（Ｓ３０４）。制御対象に対する制御が過渡期でない場合は、分散割り当てを行わない。この場合、当該優先度が高いＣＰＵ３０＃１が、自己が実行するＳＩＭＤ演算の一部又は全部を共用ＳＩＭＤ・ＡＬＵ４０に処理させるように制御する。
【００６８】
一方、制御対象に対する制御が過渡期である場合は、分散割り当てを行う（Ｓ３０６）。この場合、演算スケジュール制御装置５０は、各ＣＰＵのＤＩＳ・ＩＮＳＴにディスパッチ割り当てを行うと共に、演算制御の一部を共用ＳＩＭＤ・ＡＬＵ４０に実行させるように共用ＳＩＭＤ・ＡＬＵ４０を制御する。
【００６９】
なお、演算スケジュール制御装置５０は、分散割り当てされるＳＩＭＤ演算を、元々実行する筈であったＣＰＵ（以下、３０＃１とする）に対し、最も処理時間を多く要するように演算処理を割り当てると好適である。
【００７０】
こうすれば、分散割り当てされた演算の結果が、他のＣＰＵや共用ＳＩＭＤ・ＡＬＵ４０によってレジスタやデータ用メモリ７０に書き込まれる前に、当該ＣＰＵ３０＃１が次の命令を実行することで生じる不都合を回避することができる。
【００７１】
以下、これについて説明する。この種の制御装置において、各ＣＰＵが実行する演算処理には、一定の依存性（順序性）が存在する。すなわち、先の命令による演算処理結果を用いて、後の命令による演算処理や制御指示等が行われる処理の流れが多くの場面で存在する。従って、仮にＣＰＵ３０＃１が分散割り当てされた処理を他のＣＰＵや共用ＳＩＭＤ・ＡＬＵ４０よりも先に終了した場合、他のＣＰＵや共用ＳＩＭＤ・ＡＬＵ４０を待ってから次の命令を実行する必要が生じる。
【００７２】
この「待ち」状態を意図的に制御しようとすると、他のＣＰＵや共用ＳＩＭＤ・ＡＬＵ４０による書き込みをポーリングやソフトウエア割り込み等によって検知するためのソフトウエア等が必要となるため、コスト増や処理効率の低下を招く可能性がある。
【００７３】
この点、本実施例の制御システム１では、元々ＳＩＭＤ演算を実行する筈であったＣＰＵ３０＃１に、最も処理時間を多く要する演算処理を割り当てるため、他のＣＰＵや共用ＳＩＭＤ・ＡＬＵ４０による演算処理の終了を待つための機構を省略することができ、簡易な構成とすることができる。
【００７４】
図１１は、各ＣＰＵ、及び共用ＳＩＭＤ・ＡＬＵによって実行される処理の流れを模式的に示した図である。図示するように、ＣＰＵ３０＃１は原則としてエンジン制御のための演算処理を行い、ＣＰＵ３０＃２は原則として情報系制御のための演算処理を行っている。そして、クランク角センサの出力値の変化率が所定値以上となったときに、各ＣＰＵ、及び共用ＳＩＭＤ・ＡＬＵによってエンジン制御のためのＳＩＭＤ演算が分散割り当てされる。この結果、効率的な処理を実現することができる。
【００７５】
また、図１２は、制御システム１と同種の制御システムを、ハイエンドモデル（高性能モデル）、及びローエンドモデル（廉価版モデル）として別々に開発した結果を示す図である。
【００７６】
図示するように、ハイエンドモデルにおいては、共用ＳＩＭＤ・ＡＬＵとして大規模なものを備えており、これを廉価版の機器に搭載した場合、過剰な性能を備えることになり、コスト増や重量の増加を招いてしまう。一方、ローエンドモデルをそのまま高品質な機器に搭載した場合、要求される性能に到達しない場合が生じる。
【００７７】
これに対し、本実施例の本実施例制御システム１では、２×２の行列演算を行う比較的小規模な共用ＳＩＭＤ・ＡＬＵ４０を備えるため、システムのコスト増や重量の増加を抑制することができる。
【００７８】
また、必要に応じてＣＰＵの実行するＳＩＭＤ演算を、他のＣＰＵや共用ＳＩＭＤ・ＡＬＵ４０に分散割り当てするため、効率的な処理を実現することができる。更に、相対的にコストや重量を低減することができる。
【００７９】
以上説明した本実施例の制御システム１によれば、低コストな構成によって、制御対象の要求する演算処理の内容に柔軟に対応するが可能な、汎用性の高い制御システムを構成することができる。
【００８０】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【００８１】
例えば、実施例では、各ＣＰＵが実行するＳＩＭＤ演算のみを分散割り当てするものとしたが、分散処理によって効率的に実行可能な他の演算を抽出して、分散割り当てするものとしてもよい。
【００８２】
また、優先度が異なる３以上のＣＰＵが存在する場合、例えばＣＰＵ３０＃１、３０＃２、３０＃３の優先度がそれぞれ５、３、１である場合、ＣＰＵ３０＃２が実行すべきＳＩＭＤ演算は、ＣＰＵ３０＃２、３０＃３、及び共用ＳＩＭＤ・ＡＬＵ４０に分散割り当てされるものとしてよい。このように、優先度が「より低い」ＣＰＵに対しては、ＳＩＭＤ演算を割り当てるものとしてよい。
【００８３】
この場合、図１０のフローにおけるＳ３０２の判定は、「優先度がより低いＣＰＵが存在するか否かを判定する」と置換される。そして、Ｓ３０６の処理は、「優先度に応じて分散割り当てを行う」と置換される。
【００８４】
また、分散割り当てを行う場面を、（１）優先度の高い制御を行っているＣＰＵから優先度の低いＣＰＵへの割り当てのみ行う、（２）制御の過渡期に限定して分散割り当てを行う、と制限することについて言及したが、（１）の制限のみ課すものとしてもよいし、こうした制限を課さないものとしてもよい。係る制御によっても、全体の処理時間の削減を実現することができる。
【符号の説明】
【００８５】
１  制御システム
１０  命令用メモリ
２０  命令側バス
３０＃１、３０＃２、…３０＃ｎ  ＣＰＵ
３２＃１、３２＃２、…３２＃ｎ  ＡＬＵ
３４＃１、３４＃２、…３４＃ｎ  ＤＩＳ・ＩＮＳＴ
３５  命令バッファ
３６  命令デコーダ
３７  命令キュー
３８  命令発行部
３９  ＬＳＵ
４０  共用ＳＩＭＤ・ＡＬＵ
５０  演算スケジュール制御装置
６０  データ側バス
７０  データ用メモリ
８０  変化率算出回路
９０＃１、９０＃２、…、９０＃３  車載センサ
【図１】
2011232993.tif 000003
【図２】
2011232993.tif 000004
【図３】
2011232993.tif 000005
【図４】
2011232993.tif 000006
【図５】
2011232993.tif 000007
【図６】
2011232993.tif 000008
【図７】
2011232993.tif 000009
【図８】
2011232993.tif 000010
【図９】
2011232993.tif 000011
【図１０】
2011232993.tif 000012
【図１１】
2011232993.tif 000013
【図１２】
2011232993.tif 000014