(57)【要約】【課題】演算時間を最小化するようにＳＩＭＤ型演算処理手段と逐次型演算処理手段とに処理データを配分するプロセッサ、電子制御ユニット及び負荷分散方法を提供すること。【解決手段】互いに並列に演算を実行可能なＳＩＭＤ型演算装置１６及び演算装置１４を１つの集積回路に搭載したプロセッサ１００であって、所定の命令の演算時間が最小になるように、前記命令に伴う演算をＳＩＭＤ型演算装置１６と前記演算装置１４に配分するスケジュール制御装置１１、を有することを特徴とする。【選択図】図２
2011233085.tif 000002
【特許請求の範囲】
【請求項１】
互いに並列に演算を実行可能なＳＩＭＤ型演算装置及び演算装置を１つの集積回路に搭載したプロセッサであって、
所定の命令の演算時間が最小になるように、前記命令に伴う演算を前記ＳＩＭＤ型演算装置と前記演算装置に配分するスケジュール制御装置、
を有することを特徴とするプロセッサ。
【請求項２】
前記スケジュール制御装置は、演算に使われるプロセッサ内部の動作クロックを単位に前記演算時間をカウントする、ことを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記スケジュール制御装置は、前記命令の演算対象となるデータ量、メモリからレジスタへのロードレイテンシ、演算レイテンシ、又は、レジスタからメモリへのライトレイテンシ、の少なくとも1つ以上をパラメータに、前記演算時間をカウントする、
ことを特徴とする請求項１又は２記載のプロセッサ。
【請求項４】
前記命令は前記ＳＩＭＤ型演算装置に特有のＳＩＭＤ演算命令である、
ことを特徴とする請求項１〜３いずれか１項記載のプロセッサ。
【請求項５】
前記スケジュール制御装置は、前記演算装置の使用状態に基づき、前記演算を前記演算装置に配分するか否かを決定する、
ことを特徴とする請求項１〜４いずれか１項記載のプロセッサ。
【請求項６】
前記スケジュール制御装置は、前記演算装置が使用中の場合又は使用予定が検出された場合、前記演算を全て前記ＳＩＭＤ型演算装置にて実行させる、
ことを特徴とする請求項５項記載のプロセッサ。
【請求項７】
前記スケジュール制御装置は、前記命令の種類を特定し、前記種類と前記演算の配分量に応じて、前記ＳＩＭＤ型演算装置及び前記演算装置ぞれぞれのレイテンシを見積もり、
当該プロセッサ全体の前記レイテンシが最小になるように前記演算を前記ＳＩＭＤ型演算装置及び前記演算装置に配分する、
ことを特徴とする請求項１〜６いずれか1項記載のプロセッサ。
【請求項８】
前記スケジュール制御装置は、前記ＳＩＭＤ型演算装置及び前記演算装置毎に、予め、前記種類と前記演算の配分量に対応づけて記憶されている、前記ロードレイテンシ、前記演算レイテンシ及び前記ライトレイテンシの合計を参照して前記レイテンシを見積もる、
ことを特徴とする請求項７記載のプロセッサ。
【請求項９】
前記スケジュール制御装置は、
前記ＳＩＭＤ型演算装置に特有のＳＩＭＤ演算命令を前記演算装置に配分する際、
前記ＳＩＭＤ型演算命令を前記演算装置の命令に変換する、
ことを特徴とする請求項１〜８いずれか1項記載のプロセッサ。
【請求項１０】
前記演算装置は、少なくとも逐次演算を行うＡＬＵを有する、ことを特徴とする請求項１〜９いずれか1項記載のプロセッサ。
【請求項１１】
前記演算装置は、浮動小数点演算を実行するＦＰＵ又はロード・ストア命令を実行するＬＳＵを有する、
ことを特徴とする請求項１０記載のプロセッサ。
【請求項１２】
前記スケジュール制御装置は、
センサのセンサ信号の変化率を算出する変化率算出手段から前記変化率を取得し、該変化率が閾値を超えた場合に、前記演算をＳＩＭＤ型演算装置と前記演算装置に配分する、
ことを特徴とする請求項１〜１１いずれか１項記載のプロセッサ。
【請求項１３】
請求項１〜１２いずれか１項記載のプロセッサと、
命令又はデータを記憶するメモリと、
を有することを特徴とする電子制御ユニット。
【請求項１４】
互いに並列に演算を実行可能なＳＩＭＤ型演算装置及び演算装置を１つの集積回路に搭載したプロセッサの負荷分散方法であって、
所定の命令の演算時間が最小になるように、前記命令に伴う演算をＳＩＭＤ型演算装置と前記演算装置に配分する、
ことを特徴とする負荷分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算装置を備えたプロセッサ等に関し、特に、演算を各演算装置に配分可能なプロセッサ、電子制御ユニット及び負荷分散方法に関する。
【背景技術】
【０００２】
車両の特徴の１つとしてグレード間の仕様差が大きいことが挙げられる。例えば、エンジンの気筒数、排気量、出力、サスペンションの種類、運転支援のための画像処理の種類、エアバッグの数等は、車両のグレードによって異なることが少なくない。これら種々の車載装置はマイコンを備えたＥＣＵ（電子制御ユニット）により電子制御されるようになっているが、車両によって仕様差があることは、マイコンに必要な演算能力も異なることを意味する。すなわち、エンジンの気筒毎に制御量を決定する演算であれば、気筒の数だけ演算が必要になるので、マイコンに要求される演算能力も気筒数によって変わってくる。画像処理についても同様に、撮影した画像に施す画像処理の種類が多くなればマイコンに要求される演算能力も高くなる。
【０００３】
従来、マイコンの演算能力を効率的に利用する技術が考えられている（例えば、特許文献１参照。）。特許文献１には、ＳＩＭＤ型演算処理手段と、逐次型演算処理手段とを有し、画像処理アルゴリズムに応じて異なるアーキテクチャによる演算処理手段をＳＩＭＤ演算処理手段と逐次型演算処理手段とで使い分ける画像処理装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−０９２９４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の画像処理装置は、複数のＳＩＭＤ型演算処理手段と逐次型演算処理手段とを組み合わせて演算時間の短縮を図るものであり、ＳＩＭＤ型演算処理手段が１つしか搭載できないようなマイコンでは効果的に作用しない。換言すれば、画像処理の種類と演算処理手段の関係が固定であり、ＳＩＭＤ型演算処理手段に適した画像処理を、逐次型演算処理手段にて演算することは考えられていない。このため、演算時間の短縮には限界があるという問題がある。
【０００６】
ところで、車両のような製品のグレード分けに対応するため、複数のグレードに車両を区分して必要な演算能力を線引きし、グレードに応じた複数のマイコンを設計することが考えられる。
【０００７】
図１は、車両を３つのグレードに区分した場合に、各グレードに対応するマイコンの概略構成図を示す。説明のため、ハイエンドの車両では８気筒のエンジンであるとし、ミドルクラスの車両では６気筒のエンジンであるとし、ローエンドの車両では４気筒のエンジンであるとする。各気筒の制御に必要な演算は同じなので、このような複数の同じ演算を効率的に実行するにはデータの並列処理が可能なＳＩＭＤ（Single  Instruction  stream  Multiple  Data  stream）演算装置が有効である。このため、ハイエンド用の車両のマイコンでは８×８の行列演算が可能なＳＩＭＤ
ＡＬＵ及びＳＩＭＤレジスタが、ミドルクラス用の車両のマイコンでは６×６の行列演算が可能なＳＩＭＤ
ＡＬＵ及びＳＩＭＤレジスタが、ローエンド用の車両のマイコンでは４×４の行列演算が可能なＳＩＭＤ
ＡＬＵ及びＳＩＭＤレジスタが、それぞれ搭載されている。
【０００８】
しかしながら、図１のようにグレード毎に最適な構成を採用すると、グレードの数だけマイコンの開発が必要になり、また、多品種少量生産になるため、コスト高となる。
【０００９】
マイコンの開発費を抑制し、少品種大量生産にするため、最大性能のマイコンを全グレードの車両に搭載することが考えられる。しかし、ローエンドの車両にハイエンドの車両用のマイコンを搭載すると、演算のための回路があっても全く使われない、いわゆる回路の付け捨てが発生してしまう。例えば、図１のローエンドの車両にハイエンドのマイコンを搭載すると、８×８のＳＩＭＤ
ＡＬＵ及びＳＩＭＤレジスタの半分はほとんど使用されない可能性がある。
【００１０】
本発明は、上記課題に鑑み、異なるグレートの車両に搭載可能であって、少品種大量生産に適したプロセッサ、電子制御ユニット及び負荷分散方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題に鑑み、本発明は、互いに並列に演算を実行可能なＳＩＭＤ型演算装置及び演算装置を１つの集積回路に搭載したプロセッサであって、所定の命令の演算時間が最小になるように、前記命令に伴う演算をＳＩＭＤ型演算装置と前記演算装置に配分するスケジュール制御装置、を有することを特徴とする。
【発明の効果】
【００１２】
異なるグレートの車両に搭載可能であって、少品種大量生産に適したプロセッサ、電子制御ユニット及び負荷分散方法を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】車両を３つのグレードに区分した場合の３つのグレードのマイコンの概略構成図を示す。
【図２】本実施形態のＣＰＵの概略を説明する図の一例である。
【図３】ＣＰＵを搭載したマイコンの構成図の一例である。
【図４】ＳＩＭＤ演算命令を説明する図の一例である。
【図５】ＡＬＵ及びＳＩＭＤ ＡＬＵのレイテンシの算出パラメータを説明する図の一例である。
【図６】ＡＬＵによるレイテンシの合計を説明する図の一例である。
【図７】ＳＩＭＤ  ＡＬＵによるレイテンシの合計を説明する図の一例である。
【図８】変化率の算出を説明する図の一例である。
【図９】ＡＬＵの使用状況の判定を説明する図の一例である。
【図１０】演算スケジュール制御装置の動作手順の一例を示すフローチャート図である。
【図１１】ＳＩＭＤ  ＡＬＵとＡＬＵのレイテンシの比較を説明する図の一例である。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態について図面を参照しながら説明する。
【００１５】
〔本実施形態のＣＰＵ１００の概略〕
図２は、本実施形態のＣＰＵ１００の概略を説明する図の一例である。図示するＣＰＵ１００は、４Byte×４のＳＩＭＤレジスタ１５、ＳＩＭＤ  ＡＬＵ１６、ＡＬＵ１９及び演算スケジュール制御装置１１を有することを特徴とする。
【００１６】
同じ演算を複数のデータに施すＳＩＭＤ演算命令は、ＳＩＭＤ  ＡＬＵ１６により実行した方がＡＬＵ１９で実行するよりも早いので、ＳＩＭＤ演算命令は優先的にＳＩＭＤ
ＡＬＵ１６に割り振られる。ＡＬＵ１９は、ＳＩＭＤ演算命令に特化されたアーキテクチャではないが、ＳＩＭＤ  ＡＬＵ１６と同じ演算を逐次的に実行することができる。
【００１７】
そこで、演算スケジュール制御装置１１は、ＡＬＵ１９が演算を行っていない場合、ＳＩＭＤ演算命令をＡＬＵ１９に割り当てることで、１つのＳＩＭＤ演算命令の演算時間を最小化することを図る。より具体的には、演算スケジュール制御装置１１は、ＡＬＵ１９に、１つのＳＩＭＤ演算命令のうちどのくらいの命令（データ）を割り当てれば、ＳＩＭＤ  ＡＬＵ１６とＡＬＵ１９による１つのＳＩＭＤ演算命令の演算時間（レイテンシ）が最小になるかを見積もり、演算時間が最小になるようにＡＬＵ１９に割り当てるデータを決定する。
【００１８】
こうすることで、ＳＩＭＤ演算命令の一部をＡＬＵ１９が実行することができるようになるため、ＳＩＭＤ  ＡＬＵ１６の演算能力を、ハイエンドの車両の仕様に十分な演算能力となるように設計する必要がなくなる。また、ローエンドの車両では、ＳＩＭＤ
ＡＬＵ１６の全回路がＳＩＭＤ演算命令に使われるので、回路の付け捨てが発生することがない。
【００１９】
したがって、１つのモデルのＣＰＵ１００を幅広いグレードの車両に搭載することができるようになるので少品種大量生産が可能となり、ＣＰＵ１００のコストダウンが容易になる。
【００２０】
〔マイコン２００〕
図３は、図２のＣＰＵ１００を搭載したマイコン２００の構成図の一例を示す。マイコン２００は、命令用メモリ２１、ＣＰＵ１００、データ用メモリ２２、及び、変化率算出回路２３を有する。ＣＰＵ１００と命令用メモリ２１は命令側バス２４を介して接続されており、ＣＰＵ１００とデータ用メモリ２２はデータ側バス２５を介して接続されている。
【００２１】
まず、ＣＰＵ１００の一般的な構成について説明する。ＣＰＵ１００は、命令デコーダ１２、レジスタファイル１３及び演算装置１４を有する。演算装置１４は、ＦＰＵ（Floating  Point  number  processing  Unit）１７、ＬＳＵ（Load  Store  Unit）１８、及び、ＡＬＵ（Arithmetic  and  Logic  Unit）１９を有する。ＣＰＵ１００は、例えば1チップに集積されている。図示するように、１つのＣＰＵ１００が、ＡＬＵ１９とＳＩＭＤ
ＡＬＵ１６を有する構成であることが特徴の1つである。
【００２２】
命令用メモリ２１は、例えば、フラッシュメモリなどのＥＥＰＲＯＭを実体とする不揮発メモリである。命令用メモリ２１には、車載装置の制御用のプログラム、演算マップ、及び、ＯＳ（必ずしも必須ではない）等が記憶されている。
【００２３】
命令デコーダ１２は、不図示のＰＣ（Ｐｒｏｇｒａｍ  Ｃｏｕｎｔｅｒ）に記憶されたアドレスをアドレスバスに出力し、命令用メモリ２１に記憶された命令コード（例えば、全長３２bitの長さのオペコードとオペランド）を読み出す。そして、命令デコーダ１２は、読み出した命令コードのオペコードに基づき命令を解読して演算の種類を特定すると共に、オペランドから１つ以上のソースオペランドやデスティネーションオペランドを解読する。なお、オペコードの位置は先頭bitを基準にｎbitからｍbitのように仕様として定められている。デコード結果（演算の種類、ソースオペランド、デスティネーションオペランド）は、レジスタファイル１３に記憶される。
【００２４】
後述する演算スケジュールの制御のため、ＣＰＵ１００は、複数の命令コードを予め読み出す機能を有することが好ましい。本実施形態では、レジスタファイル１３が命令キューとして利用され、レジスタファイル１３に時系列にいくつかのデコード結果が記憶されるものとする。
【００２５】
レジスタファイル１３は、命令デコーダ１２のデコード結果、演算器の演算結果（ＡＬＵ又はＦＰＵの四則演算の結果、ＬＳＵ１８が読み出したデータ）、を一時的に記憶する複数のレジスタの集合である。
【００２６】
レジスタファイル１３には演算装置１４及びＳＩＭＤレジスタ１５が接続されている。ＡＬＵ１９は、オペコードの解読結果に応じて、四則演算や論理演算を行ったり、レジスタファイル１３のレジスタ操作を行ったりする。ＡＬＵ１９は演算結果をレジスタファイル１３にライトバックする。また、ＦＰＵ１７は、数を、数値と小数点の位置（指数）で表すことで実数の四則演算を高速に行う演算装置である。
【００２７】
ＬＳＵ１８は、演算の種類がロード命令又はストア命令の場合の専用の演算装置である。ロード命令は、ソースオペランドが指示するアドレスに基づき、データ側バス２５を介してデータ用メモリ２２からデータを読み出す。読み出したデータは、デスティネーションオペランドが指示するレジスタに格納する。同様に、ＬＳＵ１８はストア命令の場合、レジスタファイル１３のソースオペランドが指示するレジスタの内容を、デスティネーションオペランドが指示するデータ用メモリ２２のアドレスに記憶する。
【００２８】
データ用メモリ２２は、例えば、ＲＡＭ又はＲＯＭであり、さらにデータ側バス２５に設けられたバスブリッジを介して周辺機器（各種のＩ／Ｏ、通信回路等）と接続されている（メモリマップドＩ／Ｏ）。変化率算出回路２３は、センサ（センサ１〜Ｎ）２６のセンサ信号からセンサ信号の変化率を算出する。具体的な算出方法は後述する。ＲＡＭには、演算装置１４による演算結果や、センサ２６が検出したセンサ信号、変化率算出回路２３が算出した変化率、ＳＩＭＤ
ＡＬＵ１６が演算した演算結果等が記憶される。
【００２９】
続いて、特徴部の１つであるＳＩＭＤレジスタ１５、ＳＩＭＤ ＡＬＵ１６、及び、関係する変化率算出回路２３について説明する。ＳＩＭＤレジスタ１５は、ＳＩＭＤ演算に利用されるレジスタであり、並列度に応じた容量を備える。本実施形態では、ＳＩＭＤレジスタ１５は４×４の行列演算を１度に実行できるように設計されているものとする。したがって、行列の１つの要素のバイト数を４Byteとすれば、ＳＩＭＤレジスタ１５は１６Byteの容量を有する。ＳＩＭＤレジスタ１５は、ソースレジスタとディスティネーションで１つなので、ＳＩＭＤレジスタＡ（ソースレジスタ）とＳＩＭＤレジスタＢ（ディスティネーションレジスタ）のそれぞれが１６Byteの容量を有する。
【００３０】
ＳＩＭＤ ＡＬＵ１６は、ＳＩＭＤ演算命令に応じて、配列 (ベクトルデータ) や行列等、並列された複数のデータに対し並列して演算を実行する。ＳＩＭＤ
ＡＬＵ１６が可能な演算は行列の四則演算であるが、具体的に可能な演算の種類はＳＩＭＤ
ＡＬＵ１６の実装に依存する。マイコン２００で実行可能なＳＩＭＤ演算命令もＳＩＭＤ
ＡＬＵ１６の実装に依存している。
【００３１】
一般的な演算手順の流れでは、命令デコーダ１２がデコードしてレジスタファイル１３に格納されたデコード結果が、演算装置１４により実行される命令であれば、その命令はＦＰＵ１７、ＬＳＵ１８又はＡＬＵ１９のいずれかにより実行される。デコード結果が、ＳＩＭＤ演算命令の場合、ＳＩＭＤ
ＡＬＵ１６がＳＩＭＤ演算命令を実行する。したがって、原則的には、ＳＩＭＤ演算命令がＡＬＵ１９により実行されることはなかった。
【００３２】
本実施形態では、演算スケジュール制御装置１１が、ＳＩＭＤ演算命令を検出すると、ＡＬＵ１９が演算に使われているか否かを判定して、１つのＳＩＭＤ演算命令をＡＬＵ１９とＳＩＭＤ
ＡＬＵ１６に配分する。配分することで負荷分散される。そして、配分の際、ＳＩＭＤ
ＡＬＵ１６とＡＬＵ１９による１つのＳＩＭＤ演算命令の演算時間（例えば、レイテンシ）が最小になるように、配分することが特徴の１つである。
【００３３】
また、変化率算出回路２３は、センサ１〜Ｎの一定期間のセンサ信号に基づき、センサ信号の変化率を算出し、センサ毎に記憶していく回路である。変化率の絶対値が大きいことは、車両が過渡状態であると見なせるので、イベント発生やＣＰＵ１００への割り込みが生じる可能性が高いと考えられる。このような状況では、マイコン２００の処理負荷が増大する傾向になるので、演算スケジュール制御装置１１は、ＳＩＭＤ演算命令をＡＬＵ１９とＳＩＭＤ
ＡＬＵ１６に配分する。
【００３４】
センサ１〜Ｎは、車両の状態を検出する各種のセンサである。センサ１〜Ｎは、例えば、クランク角センサ、アクセル開度センサ、ブレーキペダルセンサ、車速センサ等である。なお、センサ１〜Ｎは、ＳＩＭＤ
ＡＬＵ１６の演算に直接必要な、センサ信号を検出するセンサである必要はない。すなわち、センサ１〜Ｎが、ＦＰＵ１７、ＬＳＵ１８又はＡＬＵ１９が演算するセンサ信号を検出するセンサであっても、ＣＰＵ１００の処理負荷を増大させるという意味では同じなので、ＣＰＵ１００の処理負荷に間接的に影響しうるセンサ２６は、変化率算出回路２３が変化率を算出する対象となる。したがって、図示するセンサ１〜Ｎ以外に、他のマイコン（ＥＣＵ）２００に接続されたセンサ２６が対象となる場合もある。
【００３５】
なお、変化率の絶対値が所定位置以上の場合にのみ、ＳＩＭＤ ＡＬＵ１６とＡＬＵ１９とにＳＩＭＤ演算命令の演算を配分する必然性は少ないので、変化率の絶対値が所定位置未満の場合に配分してもよい。しかし、変化率の絶対値を監視することで、処理負荷が大きくなる前に処理負荷が大きくなることを予測できるので、変化率の絶対値が所定位置以上の場合にＳＩＭＤ演算命令の演算を配分することは有効である。
【００３６】
以上のようなマイコン２００は、車両の電子制御ユニット（ＥＣＵ）に搭載される。車両には、エンジンＥＣＵ、ブレーキＥＣＵ、ボディＥＣＵ、ナビ用ＥＣＵ等、種々のＥＣＵが搭載されているが、本実施形態のマイコン２００は車両の過渡状態に負荷分散するので、特に制御系のＥＣＵに有効である。もちろん、ナビＥＣＵのように情報処理系のＥＣＵに搭載してもよい。
【００３７】
〔ＳＩＭＤ演算命令について〕
図４（ａ）はＳＩＭＤ演算命令の演算対象となるデータの一例を示す図である。「sighed  int  vec_in_a[４][４]_attribute_((aligned(16)))」は、行列型（ベクトル型）のデータを定義している。「sighed」は符号付きを、「int」はデータ型を、「vec_in_a」は変数名を、「[４][４]」は配列の大きさを、「attribute_((aligned(16)))」はメモリの先頭アドレスが１６Byteの倍数になるよう位置あわせ（アライメント）すること、をそれぞれ意味する。位置あわせすることで、行列の１行の４要素が必ず、先頭アドレスから３２Byteに格納されることが保証される。したがって、ＣＰＵ１００にとって各要素のアドレスも既知となる。
【００３８】
上記定義に続いて、｛１〜１６｝までの数値が記述されているが、これらが行列の各要素｛ａ11〜ａ16｝となる。行列Ｂ（vec_in_b）を定義する記述についても同様である。ＳＩＭＤ演算命令のデータは、並列度が４であれば４×４の行列のデータ、並列度が６であれば６×６の行列のデータ等、並列度に応じて最適化されている。
【００３９】
図４(ｂ)はＳＩＭＤ演算命令の一例を示す図である。「simd_add(*vec_in_a,
*vec_in_b, *vec_out)」は、ＳＩＭＤ演算命令のうち加算命令である。したがって、このＳＩＭＤ演算命令は、ポインタ変数「vec_in_a」が示すアドレスの行列Ａの各要素とポインタ変数「vec_in_b」が示すアドレスの行列Ｂの各要素を加算し、ポインタ変数「vec_out」が示すアドレスに記憶する命令である。実際にはコンパイルされたオブジェクトコードになっている。
【００４０】
なお、車両においてＳＩＭＤ演算命令が利用されるのは、同じ演算で複数の制御対象物の制御量を決定できる場合である。例えば、気筒毎の燃料噴射量、燃料噴射のタイミングの決定、イグナイタの点火タイミングの決定、エアーフロー量の決定、４輪毎のサスペンションの硬さの決定、インホイールモータの駆動トルクの決定、前方画像を使用した白線認識・信号機認識や顔画像を使用した居眠り検知等の画像処理、エアバッグの展開判定等である。
【００４１】
〔レイテンシの算出〕
レイテンシについて説明する。なお、実際にはレイテンシはＳＩＭＤ演算命令毎に予め演算されており、ＳＩＭＤ演算命令に伴う演算の配分の際に演算スケジュール制御装置１１が算出する必要はない。また、レイテンシは、演算スケジュール制御装置１１が演算時間を見積もるための指標なので、レイテンシの他、スループット、実時間等を指標としてもよい。
【００４２】
図５は、ＡＬＵ１９及びＳＩＭＤ ＡＬＵ１６のレイテンシの算出パラメータを説明する図の一例である。ＡＬＵ１９及びＳＩＭＤ ＡＬＵ１６のレイテンシは、次の４つの因子に影響される。このうち、「行列のサイズ」はデータ量を意味するので残りの３つのレイテンシに直接影響を与える。
・行列のサイズ
・ＲＡＭとレジスタ間のロードレイテンシ
・演算レイテンシ
・ライトレイテンシ
＜ＡＬＵ１９のレイテンシ＞
まず、ＡＬＵ１９のレイテンシを説明する。ＬＳＵ１８がＲＡＭ３０からデータを読み出すためのロードレイテンシは１サイクル（クロック）である。なお、ロードレイテンシは、ＣＰＵ１００内蔵のＲＡＭ３０か外付けのＲＡＭ３０かによって同じマイコン２００でも変わりうる。ＬＳＵ１８は１サイクルでは４Byteのデータを伝送できるが、本実施形態ではＡＬＵ１９とＦＰＵ１７が並列に演算できるよう少なくとも複数のロード命令を並列に実行できるものとする。このような演算方法は、ＣＰＵ１００の実行手順をステージ毎に分けるパイプライン制御において、同じステージを複数設けたスーパスカラと呼ばれることがある。
【００４３】
よって、ＬＳＵ１８は１サイクルで並列的に少なくとも２つの要素をロードすることができる。ロードされる２つの要素は、例えばａ11と対応するｂ11のように、Ａ行列とＢ行列のそれぞれの要素である。
【００４４】
演算レイテンシは、ＡＬＵ１９において演算毎に決まっている。本実施形態では、４Byteの加算が１サイクル、４Byteの減算が１サイクル、４Byteの積算が４サイクル、４Byteの除算が６サイクルとする。なお、本実施形態の積算や除算は、行列の積算や除算ではなく、各要素の積算や除算を意味する。
【００４５】
ＬＳＵ１８がＲＡＭ３０にデータを格納するためのライトレイテンシは１サイクルである。ライトレイテンシも、ＣＰＵ１００内蔵のＲＡＭ３０か外付けのＲＡＭ３０かによって同じマイコン２００でも変わりうる。加算の場合にライトされる要素は、例えば「ｃ11＝ａ11＋ｂ11」のように、Ａ行列とＢ行列の要素を加算して得られる和の行列Ｃの１つの要素Ｃ11である。
【００４６】
図６は、ＡＬＵ１９によるレイテンシの合計を説明する図の一例である。図６では、実際にはコンパイルされた、３つの命令「ＬＯＡＤ、ＬＯＡＤ、ＡＤＤ」がパイプラインの各ステージで実行される手順を時系列に示す（右に行くほど時間が経過している）。なお、図では３つの命令を１組に、８組の命令が実行されている。
【００４７】
１つめのＬＯＡＤ(ａ11）はＲＡＭ３０からａ11をロードする命令を、２つめのＬＯＡＤ（ｂ11）はＲＡＭ３０からｂ11をロードする命令を、それぞれ意味する。ＡＤＤはａ11とｂ11の加算命令を、それぞれ意味する。説明のため、ＣＰＵ１００の１ステージを１サイクルとする。上記のとおり、ＣＰＵ１００は並列的に２つの命令を実行可能なので、２つのＬＯＡＤ命令が並列して実行されている。
【００４８】
図６から明らかなように、３つの命令１組のレイテンシは厳密には５サイクルである。しかし、本実施形態では、デコードまでのステージは、演算スケジュール制御装置１１がＳＩＭＤ演算命令を検出した時点で完了しているので、各命令のデコードのステージまでのレイテンシは考慮しなくてよい。したがって、行列の要素の１つの加算命令の場合、レイテンシは３である。なお、このレイテンシはあくまで一例であって、ＣＰＵ１００の設計に応じて異なる場合がある。
【００４９】
ところで、ＳＩＭＤ演算命令は、ＳＩＭＤ ＡＬＵ１６やＳＩＭＤレジスタ１５の並列度以下のデータ数では、１度に演算結果が得られる。すなわち、本実施形態のように並列度が４の場合、ＳＩＭＤ
ＡＬＵ１６が行列の４個の要素を加算しても、３つの要素を加算してもレイテンシは同じである。このため、ＳＩＭＤ
ＡＬＵ１６とＡＬＵ１９にＳＩＭＤ演算命令の演算を配分する場合は、行列の４つの要素を１塊（以下、「ブロック」という）の配分単位とする。
【００５０】
例えば、４×４行列では要素を４つのブロックに区分できるので、３つのブロックをＳＩＭＤ ＡＬＵ１６で演算した場合、ＡＬＵ１９に配分すべき要素はちょうど１ブロックとなる。なお、ブロックを配分することは、付随する演算もＡＬＵ１６に割り当てることになるので、ブロックの配分とＳＩＭＤ演算命令の演算の配分は同義である。
【００５１】
図６ではＳＩＭＤ ＡＬＵ１６の並列度を考慮して、２ブロック（ａ11〜ａ22とｂ11〜ｂ22、ａ13〜ａ24とｂ13〜ｂ24）をＡＬＵ１９で実行した場合のレイテンシを算出している。図示するように、パイプライン制御の利点を生かして、１つの要素の加算に３サイクルかかったのに対し、残りの３つの要素の加算には３サイクルしかかかっていない。以上から、１ブロックを加算する際のレイテンシは「６」となり、２ブロックを加算する際のレイテンシは「１０」となっている。同様に、ＡＬＵ１９が、３ブロックを加算する際のレイテンシは「１４」、ＡＬＵ１９が４ブロックを加算する際のレイテンシは「１８」である。
【００５２】
減算については加算と同じレイテンシである。積算の場合、例えば、「ＬＯＡＤ、ＬＯＡＤ、ＭＵＬ」の３命令で１つの要素の積算が演算され、除算の場合「ＬＯＡＤ、ＬＯＡＤ、ＤＩＶ」の４命令で１つの要素の除算が演算される。したがって、積算については実行ステージをＭＵＬの４サイクルと、除算については実行ステージをＤＩＶの６サイクルと、それぞれ置き換えれば演算の種類毎のレイテンシを算出することができる。
・加算、減算    １ブロック：６サイクル
２ブロック：１０サイクル
３ブロック：１４サイクル
４ブロック：１８サイクル
・積算        ：１ブロック：９サイクル
２ブロック：１３サイクル
３ブロック：１７サイクル
４ブロック：２１サイクル
・除算        ：１ブロック：１１サイクル
２ブロック：１５サイクル
３ブロック：１９サイクル
４ブロック：２３サイクル
このようなレイテンシのデータが、例えば演算の種類毎かつブロック単位で、演算スケジュール制御装置１１がアクセス可能なＣＰＵ１００のレジスタに登録されている。
【００５３】
＜ＳＩＭＤ ＡＬＵのレイテンシ＞
図５に戻り、ＳＩＭＤ ＡＬＵ１６のレイテンシを説明する。ＳＩＭＤ
ＡＬＵ１６がＲＡＭ３０からデータを読み出すためのロードレイテンシは１サイクル（クロック）である。なお、ロードレイテンシは、ＣＰＵ１００内蔵のＲＡＭ３０か外付けのＲＡＭ３０かによって同じマイコン２００でも変わりうる。ＲＡＭ３０からＳＩＭＤレジスタ１５へのロードは、１サイクルで４Byte×４のデータを伝送できる。これは、ＣＰＵ１００がＳＩＭＤ
ＡＬＵ１６の並列度に応じて設計されているためである。並列度が６であれば、ＳＩＭＤ
ＡＬＵ１６は１サイクルで４Byte×６のデータをロードできる。したがって、ＳＩＭＤレジスタ１５には、１サイクルで、「ａ11、ａ12、ａ21，ａ22」「ｂ11、ｂ12、ｂ21，ｂ22」がそれぞれロードされる。
【００５４】
演算のレイテンシは、ＳＩＭＤ ＡＬＵ１６において演算毎に決まっている。本実施形態では、４Byte×４の加算が１サイクル、４Byte×４の減算が１サイクル、４Byte×４の積算が４サイクル、４Byte×４の除算が６サイクルとする。
【００５５】
また、ＳＩＭＤ ＡＬＵ１６がＲＡＭ３０にデータを格納するためのライトレイテンシは１サイクル（クロック）である。すなわち、４Byte×４のデータを１サイクルでライトできる。ライトレイテンシも、ＣＰＵ１００内蔵のＲＡＭ３０か外付けのＲＡＭ３０かによって同じマイコン２００でも変わりうる。ＳＩＭＤ
ＡＬＵ１６がＲＡＭ３０に１サイクルでライトする値は、例えば「ｃ11＝ａ11＋ｂ11、ｃ12＝ａ12＋ｂ12、ｃ21＝ａ21＋ｂ21、ｃ22＝ａ22＋ｂ22」である。
【００５６】
図７は、ＳＩＭＤ ＡＬＵ１６によるレイテンシの合計を説明する図の一例である。ＳＩＭＤ
ＡＬＵ１６の演算ではパイプライン制御を考慮しない場合を説明する。これは、単にＣＰＵ１００がＳＩＭＤ演算命令にパイプライン制御を実装していない場合を想定しただけであるので、ＳＩＭＤ
ＡＬＵ１６の演算においてもパイプライン制御を考慮してもよい。
【００５７】
図７では、実際にはコンパイルされた、１つの命令「SIMD_ADD」がパイプラインの各ステージで実行される手順を時系列に示す（右に行くほど時間が経過している）。
「R→Sreg」はＲＡＭ３０からＳＩＭＤレジスタ１５へのロードを、「SIMD  ALU」はＳＩＭＤ ＡＬＵ１６による演算を、「Sreg→R」はＳＩＭＤレジスタ１５からＲＡＭ３０へのライトを、意味する。図示するように、ＳＩＭＤ
ＡＬＵ１６は、１サイクルで行列ＡとＢの４つの要素をロードし、次の１サイクルで加算し、次の１サイクルでＲＡＭ３０に格納（ライト）している。ＡＬＵ１９の場合と同様に、デコードまでのステージは、演算スケジュール制御装置１１がＳＩＭＤ演算命令を検出した時点で完了しているので、デコードのステージまでのレイテンシは考慮しなくてよい。したがって、行列の４つの要素（１ブロック）の加算の場合、レイテンシは３である。なお、このレイテンシはあくまで一例であって、ＣＰＵ１００の設計に応じて異なる場合がある。
【００５８】
以降は、同じレイテンシで３つのブロックが順番に実行されている。２つめのブロックは６サイクルで、３つめのブロックは９サイクルで、４つめのブロックは１２サイクルで、ライトが完了する。以上から、ＳＩＭＤ
ＡＬＵ１６において、１ブロックを加算する際のレイテンシは「３」、２ブロックでは「６」、３ブロックでは「９」、４ブロックでは「１２」となる。
【００５９】
減算については加算と同じレイテンシである。積算の場合、例えば、「ＳＩＭＤ  ＡＬＵ」のステージが「４」に、除算の場合「６」になる。したがって、ＳＩＭＤ
ＡＬＵ１６によるレイテンシは以下のようになる
・加算、減算    １ブロック：３サイクル
２ブロック：６サイクル
３ブロック：９サイクル
４ブロック：１２サイクル
・積算          １ブロック：６サイクル（１＋４＋１）
２ブロック：１２サイクル（×２）
３ブロック：１８サイクル（×３）
４ブロック：２４サイクル（×４）
・除算          １ブロック：８サイクル（１＋６＋１）
２ブロック：１６サイクル（×２）
３ブロック：２４サイクル（×３）
４ブロック：３２サイクル（×４）
これらのレイテンシは、演算スケジュール制御装置１１がアクセス可能なＣＰＵ１００のレジスタに登録されている。
【００６０】
〔変化率について〕
図８は、変化率の算出を説明する図の一例である。図８の右側のグラフは、変化率算出回路２３が検出するクランク角センサ２７のセンサ値を時系列に示す。クランク角センサ２７は、クランクシャフトの回転角度を検知するセンサであり、インジェクションの点火時期や燃料の噴射タイミングの制御、エンジンの回転速度を算出するため等に用いられる。したがって、クランク角が急激に変化する状況は、車両が過渡状態と判定してよい。
【００６１】
図８では、クランク角が増加する過程と減少する過程が図示されているが、いずれの場合も変化率が大きければ、車両が過渡状態となりうるので、変化率は正又は負のいずれでもよい。
【００６２】
変化率算出回路２３は、所定のサイクル時間毎に、クランク角センサ２７が検出したクランク角Ｄ（ｔ）を取得し、直前のクランク角Ｄ（ｔ−１）との差から微分値Ｔを算出する。
変化率＝微分値Ｔ＝｜Ｄ（ｔ−１）− Ｄ（ｔ）｜  …（１）
最も簡単には、式（１）の微分値Ｔを変化率とすることができる。また、変化率を安定化させるため、次式のように、複数の微分値Ｔの移動平均を変化率としてもよい。なお、式（２）のＮは、平均の母数であり、３〜１０個程度である。
【００６３】
【数１】
2011233085.tif 000003
また、センサ２６が複数ある場合、変化率算出回路２３はセンサ２６毎に変化率を算出する。変化率算出回路２３は、式（１）又は（２）から算出した変化率をＲＡＭ３０に記憶するか、又は、演算スケジュール制御装置１１に通知する。
【００６４】
また、図示する変化率は一例であって、例えば、アクセルペダルのオン／オフを「１」「０」の信号とみなして「１」から「０」又は「０」から「１」の変化を所定の変化率とみなしてもよい。
【００６５】
なお、センサ２６が複数あるため変化率算出回路２３が複数の変化率を算出する場合、演算スケジュール制御装置１１は、各変化率に重み付けして最終的な変化率を算出する。次式ではａ〜ｃが重み係数であり、予めセンサ２６毎に予め決まっている。
変化率＝ａ・変化率１＋ｂ・変化率２＋ｃ・変化率３
演算スケジュール制御装置１１は、変化率が閾値以上か否かに基づき、車両が過渡状態か否かを判定する。過渡状態か否かは、変化率算出回路２３が判定してもよい。この場合、変化率算出回路２３は、過渡状態であると判定した場合に所定の制御線をＨｉｇｈにすることで演算スケジュール制御装置１１に通知する。
【００６６】
〔ＳＩＭＤ演算命令、ＡＬＵ１９の使用状況〕
命令デコーダ１２がデコードしたデコード結果はレジスタファイル１３に記憶されるので、演算スケジュール制御装置１１は、例えば、新しいデコード結果がレジスタファイル１３に記憶される毎に、命令がＳＩＭＤ演算命令か否かを判定する。命令デコーダ１２がデコード結果に基づきＳＩＭＤ演算命令がデコードされたことを演算スケジュール制御装置１１に通知してもよい。
【００６７】
そして、演算スケジュール制御装置１１は、時系列にレジスタファイル１３に記憶されたいくつかデコード結果を参照して、ＡＬＵ１９の使用状況を検出する。
図９は、ＡＬＵ１９の使用状況の判定を説明する図の一例である。レジスタファイル１３には例えばＦＩＦＯ形式でデコード結果が記憶され、実行される順番に命令が記憶されている。図９では、ＳＩＭＤ演算命令が検出された時点で、ＳＩＭＤ演算命令よりも先に実行されるＡＬＵ演算命令がまだレジスタファイル１３に残っている。このような場合、ＡＬＵ１９のレイテンシによっては、ＳＩＭＤ演算命令の実行を開始する際にＡＬＵ１９が使用状態となる。このため、演算スケジュール制御装置１１は、ＳＩＭＤ演算命令よりも前の所定数（例えば、1〜数命令）の命令内にＡＬＵ演算命令が検出されると、ＡＬＵ１９は使用状態であると判定する。
【００６８】
また、ＳＩＭＤ演算命令をＡＬＵ１９に配分した場合、最低でも６サイクル経過するので、ＳＩＭＤ演算命令の後のＡＬＵ演算命令も、ＡＬＵ１９が使用状態か否かを判定するための検出対象となる。このため、演算スケジュール制御装置１１は、ＳＩＭＤ演算命令よりも後の所定数（例えば、１〜数命令）の命令内にＡＬＵ演算命令が検出されると、ＡＬＵ１９は使用状態である判定する。
【００６９】
演算スケジュール制御装置１１は、ＡＬＵ１９が使用状態であると判定するとＳＩＭＤ演算命令をＡＬＵ１９に配分せず、使用状態でないと判定すると配分する。
【００７０】
なお、レジスタファイル１３のＳＩＭＤ演算命令の前後にＡＬＵ演算命令が記憶されていても、ＦＰＵ１７にて実行できるＡＬＵ演算命令であれば、ＡＬＵ１９が使用状態であると判定せず、ＡＬＵ１９にＳＩＭＤ演算命令の演算を配分することもできる。
【００７１】
〔動作手順〕
図１０は、演算スケジュール制御装置１１の動作手順の一例を示すフローチャート図である。図１０の手順は、例えば、マイコン２００が起動するとスタートする。
【００７２】
演算スケジュール制御装置１１は、例えば命令デコーダ１２が命令をデコードする毎に、レジスタファイル１３を監視してＳＩＭＤ演算命令か否かを判定する（Ｓ１０）。ＳＩＭＤ演算命令でない場合（Ｓ１０のＮｏ）、図１０の処理は終了する。
【００７３】
ＳＩＭＤ演算命令が検出された場合（Ｓ１０のＹｅｓ）、演算スケジュール制御装置１１はエンジンに代表される車両の状態が過渡状態か否かを、変化率算出回路２３が算出した変化率に基づき判定する（Ｓ２０）。本実施形態では、過渡状態でない場合（Ｓ２０のＮｏ）、演算スケジュール制御装置１１はＳＩＭＤ
ＡＬＵ１６のみでＳＩＭＤ演算命令を実行する（Ｓ８０）。こうすることで、ＡＬＵ１９の演算がＳＩＭＤ演算命令で遅延することを防止できる。また、ＡＬＵ１９に十分な処理能力がある場合、車両が過渡状態でも、ＡＬＵ１９にＳＩＭＤ演算命令の演算を配分してもよい。
【００７４】
過渡状態である場合（Ｓ２０のＹｅｓ）、処理負荷が増大することが予測されるので、演算スケジュール制御装置１１はＡＬＵ１９の使用状態を検出する（Ｓ３０）。演算スケジュール制御装置１１は、レジスタファイル１３を参照して、ＡＬＵ１９にＳＩＭＤ演算命令の演算を配分してよいかどうか、すなわちＡＬＵ１９が使用状態か否かを判定する。
【００７５】
そして、ＡＬＵ１９が使用状態の場合（Ｓ４０のＮｏ）、ＡＬＵ１９にＳＩＭＤ演算命令の演算を配分すべきでないので、演算スケジュール制御装置１１はＳＩＭＤ
ＡＬＵ１６のみでＳＩＭＤ演算命令を実行する（Ｓ８０）。
【００７６】
そして、ＡＬＵ１９が使用状態でない場合（Ｓ４０のＮｏ）、ＡＬＵ１９にＳＩＭＤ演算命令の演算を配分することができるので、演算スケジュール制御装置１１はＳＩＭＤ
ＡＬＵ１６とＡＬＵ１９のそれぞれのレイテンシを算出する（Ｓ５０）。演算スケジュール制御装置１１は、不図示のレジスタに記憶された、四則演算毎のレイテンシを参照して、今回のＳＩＭＤ演算命令の演算時間が最小になる、ＡＬＵ１９に配分するブロック数を決定する。
【００７７】
図１１は、ＳＩＭＤ ＡＬＵ１６とＡＬＵ１９のレイテンシの比較を説明する図の一例である。上方のマスから説明すると「行列処理分散のイメージ」は何ブロックをＡＬＵ１９に配分したかを示し、「実行シーケンス」はＳＩＭＤ
ＡＬＵ１６とＡＬＵ１９それぞれの演算内容を示し、「ＡＬＵ側の演算」はパイプライン制御した場合のレイテンシを説明する図であり、「レイテンシ」はＳＩＭＤ
ＡＬＵ１６とＡＬＵ１９それぞれのレイテンシを示す。
【００７８】
なお、「ＡＬＵ側の演算」は、縦方向の３マスで１つの要素の加算を意味している。例えば、１〜３のサイクルでａ11とｂ11の加算、２〜４のサイクルでａ12とｂ12の加算、３〜５のサイクルでａ21とｂ21の加算、４〜６のサイクルでａ22とｂ22の加算、をそれぞれ実行している。
「行列処理分散のイメージ」に示すように、図１１の左の１列は「全てのブロックをＳＩＭＤ ＡＬＵ１６で実行した場合」を、図１１の中央の1列は点線の「１ブロックをＡＬＵ１９で実行した場合」を、図１１の右の１列は点線の「２つのブロックをＡＬＵ１９で実行した場合」を、それぞれ示す。なお、丸数字はブロックの番号である。
【００７９】
・全てＳＩＭＤ  ＡＬＵを利用（図１１の左の1列）
全てのブロックをＳＩＭＤ ＡＬＵ１６で実行した場合の加算命令のレイテンシは１２である。この場合、ＡＬＵ１９のレイテンシは考慮しなくてよい。
【００８０】
・1ブロックをＡＬＵ１９が実行した場合（図１１の中央の1列）
３つのブロックをＳＩＭＤ ＡＬＵ１６が実行した場合の加算命令のレイテンシは９である。また、１つのブロックをＡＬＵ１９が実行した場合の加算命令のレイテンシは６である。レイテンシが６であることは図６で説明したとおりであるが、図１１の「ＡＬＵ側の演算」においても１ブロックの加算命令のレイテンシは６になっている。
【００８１】
・２ブロックをＡＬＵ１９が実行した場合（図１１の右の1列）
２つのブロックをＳＩＭＤ ＡＬＵ１６が実行した場合の加算命令のレイテンシは６である。また、２つのブロックをＡＬＵ１９が実行した場合の加算命令のレイテンシは１０である。
【００８２】
図１１の最下のマスには「各配分のレイテンシ」が示されている。１つのＳＩＭＤ演算命令の演算時間は、ＳＩＭＤ
ＡＬＵ１６とＡＬＵ１９のレイテンシのうち長い方である。よって、「全てＳＩＭＤ  ＡＬＵを利用」の場合のレイテンシは１２、「1ブロックをＡＬＵが実行した場合」のレイテンシは９、「２ブロックをＡＬＵが実行した場合」のレイテンシは１０、である。
【００８３】
したがって、演算スケジュール制御装置１１は、「1ブロックをＡＬＵが実行した場合」に演算時間が最小になると判定する。
【００８４】
図１０に戻り、演算スケジュール制御装置１１は、レイテンシの算出結果に基づき、ＡＬＵ１９にＳＩＭＤ演算命令の演算を配分するか否かを判定する（Ｓ６０）。図１１では、1ブロックをＡＬＵ１９に配分することでＳＩＭＤ演算命令の演算時間が短くなったので、演算スケジュール制御装置１１はＡＬＵ１９にＳＩＭＤ演算命令の演算を配分すると判定する。ＡＬＵ１９にＳＩＭＤ演算命令の演算を配分する必要がない場合（Ｓ６０Ｎｏ）、演算スケジュール制御装置１１はＳＩＭＤ
ＡＬＵ１６のみでＳＩＭＤ演算命令を実行する（Ｓ８０）。
【００８５】
ＡＬＵ１９に演算を配分する場合（Ｓ７０Ｎｏ）、演算スケジュール制御装置１１は、演算時間が最小になるように1ブロックの演算をＡＬＵ１９に配分する（Ｓ７０）。これにより、ＡＬＵ１９とＳＩＭＤ
ＡＬＵ１６が１つの行列の演算を時間的に並列に処理できる。
【００８６】
具体的には、演算スケジュール制御装置１１は、ＳＩＭＤ演算命令からＡＬＵ１９の命令を生成しレジスタファイル１３に登録する。加算命令であれば、1ブロック分となる４組の「ＬＯＡＤ、ＬＯＡＤ、ＡＤＤ」を演算スケジュール制御装置１１は生成する。ＬＯＡＤ命令ではＲＡＭ３０の行列の要素のアドレスが必要になるが、各行列の要素のアドレスはポインタ変数「vec_in_a」「vec_in_b」が示す先頭のアドレスから、要素番号に応じて決まっている。また、演算結果を格納するアドレスも、ポインタ変数「vec_out」が示す先頭のアドレスを基準に要素番号に応じて決まっている。
【００８７】
演算スケジュール制御装置１１は、ＬＯＡＤ命令とＡＤＤ命令のオペランド（アドレス）を決定して、レジスタファイル１３に登録する。ＡＬＵ１９は使用状況でないのでレジスタファイル１３にはこれらの命令を登録する空きスペースもある。こうすることで、ＡＬＵ１９とＳＩＭＤ
ＡＬＵ１６が並列にＳＩＭＤ演算命令を実行できる。演算スケジュール制御装置１１は以上の処理を繰り返す。
【００８８】
本実施形態のＣＰＵ１００は、演算時間が最小になるように、ＳＩＭＤ ＡＬＵ１６とＡＬＵ１９に負荷分散することで（１つのＳＩＭＤ演算命令をＡＬＵ１９に配分することで）、ＳＩＭＤ
ＡＬＵ１６の演算能力をハイエンドの車両の仕様に合わせたり、ローエンド車両で回路の付け捨てが発生することを抑制できる。
【符号の説明】
【００８９】
１１      演算スケジュール制御装置
１２      命令デコーダ
１３      レジスタファイル
１４      演算装置
１５      ＳＩＭＤレジスタ
１６      ＳＩＭＤ  ＡＬＵ
２１      命令用メモリ
２２      データ用メモリ
２３      変化率算出回路
２６      センサ
【図１】
2011233085.tif 000004
【図２】
2011233085.tif 000005
【図３】
2011233085.tif 000006
【図４】
2011233085.tif 000007
【図５】
2011233085.tif 000008
【図６】
2011233085.tif 000009
【図７】
2011233085.tif 000010
【図８】
2011233085.tif 000011
【図９】
2011233085.tif 000012
【図１０】
2011233085.tif 000013
【図１１】
2011233085.tif 000014