(57)【要約】【課題】簡易な処理によって、処理効率の向上を実現することが可能なマルチスレッド処理装置、及びその制御方法を提供すること。【解決手段】命令格納手段と、命令フェッチ手段と、各スレッドの命令を少なくとも１単位含む１サイクルの命令を蓄積する蓄積手段と、蓄積手段に蓄積された命令に基づいて命令実行制御を行う命令実行制御手段と、を備えるマルチスレッド処理装置であって、命令実行制御手段は、蓄積手段に蓄積された１サイクルの命令についてメモリアクセス命令が連続しているか否かを判定し、メモリアクセス命令が連続している場合は、連続するメモリアクセス命令のうち先に蓄積手段に蓄積された命令を次回のサイクルに繰り下げ、且つ、１サイクルの命令中にメモリアクセス命令が存在するスレッドについて、スレッドのメモリアクセス命令以降の命令を次回のサイクルに繰り下げるように命令実行制御を行うことを特徴とする。【選択図】図３
2011134068.tif 000002
【特許請求の範囲】
【請求項１】
複数のスレッドによって実行される命令を格納した命令格納手段と、
該命令格納手段から命令フェッチする命令フェッチ手段と、
該命令フェッチ手段によりフェッチされた命令であって、前記複数のスレッドに含まれる各スレッドの命令を少なくとも１単位含む１サイクルの命令を蓄積する蓄積手段と、
該蓄積手段に蓄積された命令に基づいて命令実行制御を行う命令実行制御手段と、
を備えるマルチスレッド処理装置であって、
前記命令実行制御手段は、
前記蓄積手段に蓄積された１サイクルの命令についてメモリアクセス命令が連続しているか否かを判定し、該メモリアクセス命令が連続している場合は、該連続するメモリアクセス命令のうち先に前記蓄積手段に蓄積された命令を次回のサイクルに繰り下げ、且つ、
前記１サイクルの命令中にメモリアクセス命令が存在するスレッドについて、該スレッドの前記メモリアクセス命令以降の前記１サイクルの命令中の命令を次回のサイクルに繰り下げるように命令実行制御を行うことを特徴とする、
マルチスレッド処理装置。
【請求項２】
前記命令実行制御手段は、前記１サイクルの命令中にメモリアクセス命令が存在するスレッドについて、該スレッドの前記メモリアクセス命令以降の前記１サイクルの命令中の命令に空白時間が存在する場合には、該１サイクルの命令中の空白時間を削除して命令実行制御を行うことを特徴とする、
請求項１に記載のマルチスレッド処理装置。
【請求項３】
複数のスレッドによって実行される命令を格納した命令格納手段と、
該命令格納手段から命令フェッチする命令フェッチ手段と、
該命令フェッチ手段によりフェッチされた命令であって、前記複数のスレッドに含まれる各スレッドの命令を少なくとも１単位含む１サイクルの命令を蓄積する蓄積手段と、
該蓄積手段に蓄積された命令を並べ替える並替制御手段と、
を備えるマルチスレッド処理装置であって、
前記並替制御手段は、同一スレッドが実行する命令の順序を変更することなく、且つ複数スレッド間でメモリアクセス命令が連続しないように、前記１サイクルの命令を並べ替えることを特徴とする、
マルチスレッド処理装置。
【請求項４】
車両に搭載され、車載機器制御のための命令を実行することを特徴とする、
請求項１ないし３のいずれか１項に記載のマルチスレッド処理装置。
【請求項５】
複数のスレッドによって実行される命令を格納した命令格納手段と、該命令格納手段から命令フェッチする命令フェッチ手段と、該命令フェッチ手段によりフェッチされた命令であって、前記複数のスレッドに含まれる各スレッドの命令を少なくとも１単位含む１サイクルの命令を蓄積する蓄積手段と、を備えるマルチスレッド処理装置の制御方法であって、
前記蓄積手段に蓄積された１サイクルの命令についてメモリアクセス命令が連続しているか否かを判定する第１判定ステップと、
該第１判定ステップにおいてメモリアクセス命令が連続していると判定された場合に、該連続するメモリアクセス命令のうち先に前記蓄積手段に蓄積された命令を次回のサイクルに繰り下げる第１繰り下げステップと、
各スレッドについて、前記１サイクルの命令中にメモリアクセス命令が存在するか否かを判定する第２判定ステップと、
該第２判定ステップにおいて前記１サイクルの命令中にメモリアクセス命令が存在すると判定されたスレッドについて、該スレッドの前記メモリアクセス命令以降の命令を次回のサイクルに繰り下げる第２繰り下げステップと、
を備えることを特徴とする、
マルチスレッド処理装置の制御方法。
【請求項６】
前記第２判定ステップにおいて前記１サイクルの命令中にメモリアクセス命令が存在すると判定されたスレッドについて、該スレッドの前記メモリアクセス命令以降の前記１サイクルの命令中の命令に空白時間が存在するか否かを判定する第３判定ステップと、
該第３判定ステップにおいて空白時間が存在すると判定された場合に、該空白時間を削除する空白時間削除ステップと、
を更に備える請求項５に記載のマルチスレッド処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のスレッドが並行して処理を実行可能なマルチスレッド処理装置、及びその制御方法に関する。
【背景技術】
【０００２】
近年、プロセッサの性能向上に伴い、複数の機能を一つのプロセッサにより実現させるための技術が研究・実用化されている。例えば、車両に搭載される車載制御装置の分野では、ある車載機器を制御する制御装置と他の車載機器を制御する制御装置（例えば変速機の制御装置とエンジンの制御装置等）を統合して、コンピュータ・ハードウエアを縮小し、コストや重量の低減を図る動きが見られる。
【０００３】
こうしたハードウエア統合の一手法として、ハードウエア・マルチスレッディングと称されるものが知られている。ハードウエア・マルチスレッディングは、命令の出所や演算結果の格納場所を異にする複数のスレッドが、命令デコーダや演算回路等のハードウエアを共有して処理を行なうものである。また、ソフトウエア・マルチスレッディングと称されるものも知られている。ソフトウエア・マルチスレッディングは、専らソフトウエア上でスレッドを区別するものである。なお、本明細書では、これらハードウエア・マルチスレッディングを行う処理装置、及びソフトウエア・マルチスレッディングを行う処理装置を、マルチスレッド処理装置と総称する。
【０００４】
この種のマルチスレッド処理装置においては、主としてプロセッサの実行クロックがメモリアクセスのクロックに比して高周波であることに起因して、複数のスレッドが連続してメモリアクセスしようとした場合に後のスレッドがＷａｉｔ状態となり、全体の処理効率が低下するという課題が存在する。こうした課題に鑑み、例えば下記の文献が開示されている。
【０００５】
特許文献１には、各実行スレッドがＦＩＦＯ内に滞在している時間の長さに基づいて、プロセッサ内の２つ以上の実行スレッドの実行優先順位が制御されるように構成された多重スレッド処理システムについて記載されている。
【０００６】
また、特許文献２には、命令パイプラインにおけるリード命令の読み込み先メモリアドレスの決定前において、命令パイプラインに投入されているスレッドの命令の種別がメモリ読み込み命令である場合に、当該読み込み命令のオペランドキャッシュミス／ヒットを予想し、予想結果に基づいてスレッドの制御をするマルチスレッドプロセッサについて記載されている。このマルチスレッドプロセッサにおけるオペランドキャッシュミス／ヒットの予想は、主として、過去複数回連続でキャッシュミスをしていた場合、そのリード命令を実行する際には再度キャッシュミスをすると考えるものとしている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００１−３５０６３８号公報
【特許文献２】特開２００８−１５５６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記特許文献１に記載のシステムでは、各実行スレッドがＦＩＦＯ内に滞在している時間を監視するための構成が必要となる。この結果、装置のサイズやコストが増大する場合がある。また、ＦＩＦＯ内に滞在している時間の長いスレッドを優先的に実行しても、各スレッドの命令を着実に実行することにはなるものの、必ずしも全体の処理効率を向上させることにはならない。そもそも、「待ち」が発生することを抑制しなければ、全体の処理効率は向上しないからである。
【０００９】
また、上記特許文献２に記載のプロセッサでは、キャッシュミスをした回数が累積しなければスレッドが優先的に実行されないため、特許文献１に記載のシステムと同様、各スレッドの命令を着実に実行することにはなるものの、全体の処理効率を向上させることができない場合がある
本発明はこのような課題を解決するためのものであり、簡易な処理によって、処理効率の向上を実現することが可能なマルチスレッド処理装置、及びその制御方法を提供することを、主たる目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するための本発明の第１の態様は、
複数のスレッドによって実行される命令を格納した命令格納手段と、
該命令格納手段から命令フェッチする命令フェッチ手段と、
該命令フェッチ手段によりフェッチされた命令であって、前記複数のスレッドに含まれる各スレッドの命令を少なくとも１単位含む１サイクルの命令を蓄積する蓄積手段と、
該蓄積手段に蓄積された命令に基づいて命令実行制御を行う命令実行制御手段と、
を備えるマルチスレッド処理装置であって、
前記命令実行制御手段は、
前記蓄積手段に蓄積された１サイクルの命令についてメモリアクセス命令が連続しているか否かを判定し、該メモリアクセス命令が連続している場合は、該連続するメモリアクセス命令のうち先に前記蓄積手段に蓄積された命令を次回のサイクルに繰り下げ、且つ、
前記１サイクルの命令中にメモリアクセス命令が存在するスレッドについて、該スレッドの前記メモリアクセス命令以降の前記１サイクルの命令中の命令を次回のサイクルに繰り下げるように命令実行制御を行うことを特徴とする、
マルチスレッド処理装置である。
【００１１】
この本発明の第１の態様によれば、蓄積手段に蓄積された１サイクルの命令についてメモリアクセス命令が連続しているか否かを判定し、メモリアクセス命令が連続している場合は、この連続するメモリアクセス命令のうち先に蓄積手段に蓄積された命令を次回のサイクルに繰り下げ、且つ、１サイクルの命令中にメモリアクセス命令が存在するスレッドについて、このスレッドのメモリアクセス命令以降の命令を次回のサイクルに繰り下げるように命令実行制御を行うため、簡易な処理によって、処理効率の向上を実現することができる。
【００１２】
本発明の第１の態様において、
前記命令実行制御手段は、前記１サイクルの命令中にメモリアクセス命令が存在するスレッドについて、該スレッドの前記メモリアクセス命令以降の前記１サイクルの命令中の命令に空白時間が存在する場合には、該１サイクルの命令中の空白時間を削除して命令実行制御を行うことを特徴とするものとしてもよい。
【００１３】
本発明の第２の態様は、
複数のスレッドによって実行される命令を格納した命令格納手段と、
該命令格納手段から命令フェッチする命令フェッチ手段と、
該命令フェッチ手段によりフェッチされた命令であって、前記複数のスレッドに含まれる各スレッドの命令を少なくとも１単位含む１サイクルの命令を蓄積する蓄積手段と、
該蓄積手段に蓄積された命令を並べ替える並替制御手段と、
を備えるマルチスレッド処理装置であって、
前記並替制御手段は、同一スレッドが実行する命令の順序を変更することなく、且つ複数スレッド間でメモリアクセス命令が連続しないように、前記１サイクルの命令を並べ替えることを特徴とする、
マルチスレッド処理装置である。
【００１４】
この本発明の第２の態様によれば、同一スレッドが実行する命令の順序を変更することなく、且つ複数スレッド間でメモリアクセス命令が連続しないように、１サイクルの命令を並べ替えるため、簡易な処理によって、処理効率の向上を実現することができる。
【００１５】
本発明の第１又は第２の態様は、
車両に搭載され、車載機器制御のための命令を実行することを特徴とするものとしてもよい。
【００１６】
本発明の第３の態様は、
複数のスレッドによって実行される命令を格納した命令格納手段と、該命令格納手段から命令フェッチする命令フェッチ手段と、該命令フェッチ手段によりフェッチされた命令であって、前記複数のスレッドに含まれる各スレッドの命令を少なくとも１単位含む１サイクルの命令を蓄積する蓄積手段と、を備えるマルチスレッド処理装置の制御方法であって、
前記蓄積手段に蓄積された１サイクルの命令についてメモリアクセス命令が連続しているか否かを判定する第１判定ステップと、
該第１判定ステップにおいてメモリアクセス命令が連続していると判定された場合に、該連続するメモリアクセス命令のうち先に前記蓄積手段に蓄積された命令を次回のサイクルに繰り下げる第１繰り下げステップと、
各スレッドについて、前記１サイクルの命令中にメモリアクセス命令が存在するか否かを判定する第２判定ステップと、
該第２判定ステップにおいて前記１サイクルの命令中にメモリアクセス命令が存在すると判定されたスレッドについて、該スレッドの前記メモリアクセス命令以降の命令を次回のサイクルに繰り下げる第２繰り下げステップと、
を備えることを特徴とする、
マルチスレッド処理装置の制御方法である。
【００１７】
この本発明の第３の態様によれば、蓄積手段に蓄積された１サイクルの命令についてメモリアクセス命令が連続しているか否かを判定する第１判定ステップと、第１判定ステップにおいてメモリアクセス命令が連続していると判定された場合に、この連続するメモリアクセス命令のうち先に蓄積手段に蓄積された命令を次回のサイクルに繰り下げる第１繰り下げステップと、各スレッドについて、１サイクルの命令中にメモリアクセス命令が存在するか否かを判定する第２判定ステップと、第２判定ステップにおいて１サイクルの命令中にメモリアクセス命令が存在すると判定されたスレッドについて、このスレッドのメモリアクセス命令以降の命令を次回のサイクルに繰り下げる第２繰り下げステップと、を備えるため、簡易な処理によって、処理効率の向上を実現することができる。
【００１８】
本発明の第３の態様は、
前記第２判定ステップにおいて前記１サイクルの命令中にメモリアクセス命令が存在すると判定されたスレッドについて、該スレッドの前記メモリアクセス命令以降の前記１サイクルの命令中の命令に空白時間が存在するか否かを判定する第３判定ステップと、
該第３判定ステップにおいて空白時間が存在すると判定された場合に、該空白時間を削除する空白時間削除ステップと、
を更に備えるものとしてもよい。
【発明の効果】
【００１９】
本発明によれば、簡易な処理によって、処理効率の向上を実現することが可能なマルチスレッド処理装置、及びその制御方法を提供することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１実施例に係るマルチスレッド処理装置１のシステム構成例である。
【図２】パイプラインコントローラ３０が保持している、各スレッドが実行すべき実行コードの順番を示す図である。
【図３】命令実行制御回路４２により実行される特徴的な処理の流れを示すフローチャートである。
【図４】図３に示したフローチャートを実行した場合に、各スレッドによって実行される実行コードの推移を示す図である。
【図５】図３に示したフローチャートを実行せず、実行キュー４０に蓄積された実行コードをそのまま実行させた場合に、各スレッドによって実行される実行コードの推移を示す図である。
【図６】本発明の第２実施例に係るマルチスレッド処理装置２のシステム構成例である。
【図７】キュー監視・並べ替え回路６０が並べ替えを行った結果、各スレッドによって実行される実行コードの推移を示す図である。
【発明を実施するための形態】
【００２１】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【００２２】
＜第１実施例＞
以下、図面を参照し、本発明の第１実施例に係るマルチスレッド処理装置１について説明する。本実施例のマルチスレッド処理装置１は、例えばハードウエア・マルチスレッディングを行うことにより並行処理を実現したものである。なお、本発明の適用上、マルチスレッド処理装置１がソフトウエア・マルチスレッディングを行うものであっても構わない。
【００２３】
図１は、本発明の第１実施例に係るマルチスレッド処理装置１のシステム構成例である。マルチスレッド処理装置１は、主要な構成として、ＦｌａｓｈＲＯＭ１０と、Ｂｕｓ制御回路２０と、命令コードフェッチ回路２２と、命令コードデコード回路２４と、パイプラインコントローラ３０と、実行キュー４０と、命令実行制御回路４２と、スレッドスケジューラ４４と、ＡＬＵ（演算回路）５０と、ＲＥＧ（レジスタ）５２と、を備える。
【００２４】
ＦｌａｓｈＲＯＭ１０には、マルチスレッド処理装置１が実行する複数の命令コードが格納されている。
【００２５】
命令コードフェッチ回路２２は、各スレッド（以下、スレッドＡ、スレッドＢ、スレッドＣとする）に対応して設定されているプログラムカウンタのアドレスをＢｕｓ制御回路２０に出力し、各スレッドが実行する命令コードを順次読み出す。Ｂｕｓ制御回路２０からは、命令コードが命令コードフェッチ回路２２に、命令コードに対応したスレッドＮｏ.（ナンバー）が命令コードデコード回路２４に、それぞれ出力される。
【００２６】
命令コードデコード回路２４は、入力された命令コードを解読し、解読結果を実行キュー４０及びパイプラインコントローラ３０に出力する。実行キュー４０は、例えば専用レジスタ上に設定されるＦＩＦＯ（First  In  First  Out）であって、命令コードの解読結果（以下、実行コードと称する）と、実行コードを実行するスレッドとが対応づけられている。図１では、スレッドＡが実行する実行コードであることを「ＴＨ＿Ａ」と表記した。スレッドＢ、Ｃについても同様である。
【００２７】
パイプラインコントローラ３０は、パイプライン制御の各ステージ（命令フェッチ、命令デコード）を動作クロックに基づき制御する。パイプラインコントローラ３０は、各スレッドが実行すべき実行コードの順番を規定したデータを保持しており、各スレッドの実行コードを少なくとも１単位含む１サイクルの命令を実行キュー４０に蓄積させるように命令コードフェッチ回路２２に指示する。なお、本実施例において、１サイクルの実行コードは６個の実行コードを含むものとした。
【００２８】
命令実行制御回路４２は、実行キュー４０に蓄積された命令に基づいてスレッドスケジューラ４４に命令実行指示を出力する。スレッドスケジューラ４４は、命令実行制御回路４２からの指示に応じてＡＬＵ５０を作動させ、その演算結果等をＲＥＧ５２に格納される。なお、ＲＥＧ５２は、各スレッドに対応して複数個用意されている。
【００２９】
図２は、パイプラインコントローラ３０が保持している、各スレッドが実行すべき実行コードの順番を示す図である。各スレッドが実行する実行コードは、「ｐｒｏｃ」、「ｌｏｏｐ」、「ｌｏａｄ」、「ｕｐｄａｔｅ」等を含み、これらのうち「ｌｏａｄ」及び「ｕｐｄａｔｅ」がメモリアクセス命令である。
【００３０】
また、図２及び後述する図４、５において、最下段の実行コードは、そのタイミングにおいていずれかのスレッドにより実行されている実行コードを示している。最下段が空白となっているということは、スレッドの処理が「Ｗａｉｔ」状態となっていることを意味しており、二重線中の数字は、スレッドの処理が「Ｗａｉｔ」状態となった回数を示している。
【００３１】
命令実行制御回路４２は、更に、各スレッドのメモリアクセスが連続することにより、スレッドの処理が「Ｗａｉｔ」状態となることを抑制するために、以下のような制御を行っている。スレッドの命令実行のクロック周波数は、メモリアクセスのクロック周波数に比して高いのが通常であるため、各スレッドのメモリアクセスが連続すると、後のスレッドのメモリアクセスが待ち状態となるこことが想定されるのである。
【００３２】
図３は、命令実行制御回路４２により実行される特徴的な処理の流れを示すフローチャートである。本フローは、命令コードデコード回路２４から実行キュー４０に実行コードが入力された度に繰り返し実行される。係るタイミングは、例えばパイプラインコントローラ３０から入力される信号によって、命令実行制御回路４２に報知される。
【００３３】
まず、命令実行制御回路４２は、実行キュー４０に蓄積された１サイクルの実行コードについて、メモリアクセス命令が連続しているか否かを判定する（Ｓ１００）。
【００３４】
命令実行制御回路４２は、メモリアクセス命令が連続していると判定した場合は、連続するメモリアクセス命令のうちいずれかの実行コードが、１サイクルの命令中に１単位の命令しか含まれないスレッドの実行コードであるか否かを判定する（Ｓ１０２）。
【００３５】
連続するメモリアクセス命令のうちいずれかの実行コードが、１サイクルの実行コード中に１単位の実行コードしか含まれないスレッドの実行コードでない場合は、連続するメモリアクセス命令のうち先に実行キュー４０に蓄積された実行コードを次回のサイクルに繰り下げるように制御する（Ｓ１０４）。具体的には、当該先のメモリアクセス命令を除いて実行コードをスレッドスケジューラ４４に出力すると共に、次回のサイクルにおいて実行コードが繰り下げられたスレッドの命令フェッチを行わないようにパイプラインコントローラ３０に指示する。繰り下げられたメモリアクセス命令は、次回のサイクルにおいて当該スレッドの最初の実行コードとして扱われる。
【００３６】
なお、連続するメモリアクセス命令のうちいずれかの実行コードが、１サイクルの命令中に１単位の命令しか含まれないスレッドの実行コードである場合は、メモリアクセス命令の繰り下げを行わない。
【００３７】
また、命令実行制御回路４２は、以下の処理を各スレッドについて実行する。まず、１サイクルの実行コード中にメモリアクセス命令が存在するか否かを判定する（Ｓ１０６）。
【００３８】
１サイクルの実行コード中にメモリアクセス命令が存在するスレッドについて、当該スレッドのメモリアクセス命令以降の実行コードが存在するか否かを判定する（Ｓ１０８）。
【００３９】
当該スレッドのメモリアクセス命令以降の実行コードが存在する場合は、メモリアクセス命令以降の実行コードを次回のサイクルに繰り下げるように制御する（Ｓ１１０）。この場合、次回のサイクルにおいて実行コードが繰り下げられたスレッドについては、当初の予定よりも１クロック分繰り下げて命令フェッチを行うようにパイプラインコントローラ３０に指示する。
【００４０】
更に、命令実行制御回路４２は、１サイクルの実行コード中にメモリアクセス命令が存在するスレッドについて、当該スレッドのメモリアクセス命令以降に空白時間が存在するか否かを判定する（Ｓ１１２）。
【００４１】
メモリアクセス命令以降に空白時間が存在する場合は、当該空白時間を削除した上でスレッドスケジューラ４４に命令実行指示を出力する（Ｓ１１４）。
【００４２】
係る制御によって、スレッドの処理が「Ｗａｉｔ」状態となる回数を減少させることができる。
【００４３】
図４は、図３に示したフローチャートを実行した場合に、各スレッドによって実行される実行コードの推移を示す図である。なお、図４及び５では、スレッド命令実行のクロック周波数は、メモリアクセスのクロック周波数の倍である（すなわち、メモリアクセスには２クロック分の実行コード処理時間を要する）ものとした。
【００４４】
図４と図２を比較すると、図４では、１サイクル目の３クロック目に存在していた「ｌｏａｄ」命令が２サイクル目の２クロック目に繰り下がっている。そして、２サイクル目では、スレッドＡの実行コードは、当該繰り下がった「ｌｏａｄ」命令のみとなっている。また、図２では、２サイクル目のスレッドＡの実行コードは３クロック分存在していたが、メモリアクセス命令以降の空白時間は削除されることになるため、２サイクル目のスレッドＡの実行コードは２クロック分となっている。この結果、スレッドの処理が「Ｗａｉｔ」状態となった回数は、３回となった。
【００４５】
図５は、図３に示したフローチャートを実行せず、実行キュー４０に蓄積された実行コードをそのまま実行させた場合に、各スレッドによって実行される実行コードの推移を示す図である。すなわち、本実施例との比較例となる構成による実行コードの推移を示したものである。本図において、スレッドの処理が「Ｗａｉｔ」状態となった回数は、５回となった。
【００４６】
これらの比較によって、本実施例のマルチスレッド処理装置１では、スレッドの処理が「Ｗａｉｔ」状態となる回数を減少させることができるのが判る。この結果、処理効率の向上を実現することができる。
【００４７】
また、係る効果を奏するための特徴的な制御は、実行キュー４０での滞在時間監視のような複雑な構成を必要とせず、図３で示したように、判定回路の組み合わせ等によって実現可能な簡易なものである。
【００４８】
以上より、本実施例のマルチスレッド処理装置１によれば、簡易な処理によって、処理効率の向上を実現することができる。
【００４９】
なお、本発明の第１実施例に係るマルチスレッド処理装置１は、車両に搭載され、種々の車載機器制御を行う制御装置に適用されると好適である。例えばナビゲーション制御装置、空調制御装置、エンジン制御装置、ブレーキ制御装置、ステアリング制御装置、車両安定化制御装置（ＶＳＣ、ＶＤＩＭ等）、車間距離制御装置、車線維持制御装置等、及びこれらが統合された制御装置が該当する。
【００５０】
この場合、パイプラインコントローラ３０が保持している実行コードの順番は、車載機器制御のための処理を規定している。マルチスレッド処理装置１が、ナビゲーション制御装置と空調制御装置が統合されたものとして機能する場合、スレッドＡがナビゲーション制御のための演算処理を実行し、スレッドＢが空調制御のための演算処理を実行するような態様で用いられ得る。
【００５１】
＜第２実施例＞
以下、図面を参照し、本発明の第２実施例に係るマルチスレッド処理装置２について説明する。本実施例のマルチスレッド処理装置１は、例えばハードウエア・マルチスレッディングを行うことにより並行処理を実現したものである。なお、本発明の適用上、マルチスレッド処理装置２がソフトウエア・マルチスレッディングを行うものであっても構わない。
【００５２】
図６は、本発明の第２実施例に係るマルチスレッド処理装置２のシステム構成例である。マルチスレッド処理装置２は、主要な構成として、ＦｌａｓｈＲＯＭ１０と、Ｂｕｓ制御回路２０と、命令コードフェッチ回路２２と、命令コードデコード回路２４と、パイプラインコントローラ３０と、実行キュー４０と、ＡＬＵ（演算回路）５０と、ＲＥＧ（レジスタ）５２と、キュー監視・並べ替え回路６０と、修正後実行キュー６２と、ＭＵＸ（マルチプレクサ）６４と、シーケンサ６６と、を備える。なお、第１実施例と共通する構成要素については同一の符号を付している。
【００５３】
ＦｌａｓｈＲＯＭ１０には、マルチスレッド処理装置１が実行する複数の命令コードが格納されている。
【００５４】
命令コードフェッチ回路２２は、各スレッド（以下、スレッドＡ、スレッドＢ、スレッドＣとする）に対応して設定されているプログラムカウンタのアドレスをＢｕｓ制御回路２０に出力し、各スレッドが実行する命令コードを順次読み出す。Ｂｕｓ制御回路２０からは、命令コードが命令コードフェッチ回路２２に、命令コードに対応したスレッドＮｏ.（ナンバー）が命令コードデコード回路２４に、それぞれ出力される。
【００５５】
命令コードデコード回路２４は、入力された命令コードを解読し、解読結果を実行キュー４０及びパイプラインコントローラ３０に出力する。実行キュー４０は、例えば専用レジスタ上に設定されるＦＩＦＯ（First  In  First  Out）であって、命令コードの解読結果（以下、実行コードと称する）と、実行コードを実行するスレッドとが対応づけられている。図６では、スレッドＡが実行する実行コードであることを「ＴＨ＿Ａ」と表記した。スレッドＢ、Ｃについても同様である。
【００５６】
パイプラインコントローラ３０は、パイプライン制御の各ステージ（命令フェッチ、命令デコード）を動作クロックに基づき制御する。パイプラインコントローラ３０は、各スレッドが実行すべき実行コードの順番を規定したデータを保持しており、各スレッドの実行コードを少なくとも１単位含む１サイクルの命令を実行キュー４０に蓄積させるように命令コードフェッチ回路２２に指示する。なお、本実施例において、１サイクルの実行コードは６個の実行コードを含むものとした。
【００５７】
キュー監視・並べ替え回路６０は、実行キュー４０に蓄積された実行コードを並べ替え、その結果を修正後実行キュー６２として保存する。修正後実行キュー６２は、例えば専用レジスタ上に設定されるデータテーブルである。キュー監視・並べ替え回路６０による並べ替えルールについては後述する。
【００５８】
そして、キュー監視・並べ替え回路６０は、上記並べ替えを行なわなかった場合は実行キュー４０に蓄積された実行コードを選択し、上記並べ替えを行った場合は修正後実行キュー６２に記憶させた実行コードを選択するようにＭＵＸ６４に所定の信号を送出する。
【００５９】
ＭＵＸ６４は、キュー監視・並べ替え回路６０から入力された信号に基づいて、実行キュー４０又は修正後実行キュー６２に記憶された実行コードを１つずつ読み出し、シーケンサ６６に出力する。
【００６０】
シーケンサ６６は、例えばカウンタ・外部信号のレジスタ・ゲートなどが組み合わされて構成され、ＭＵＸ６４から入力された実行コードに応じてＡＬＵ５０を作動させ、その演算結果等をＲＥＧ５２に格納される。なお、ＲＥＧ５２は、各スレッドに対応して複数個用意されている。
【００６１】
キュー監視・並べ替え回路６０は、以下のようなルールに基づいて実行コードの並べ替えを行う。すなわち、（１）同一スレッドが実行する命令の順序を変更することなく、且つ、（２）複数スレッド間でメモリアクセス命令が連続しないように、実行コードの並べ替えを行う。
【００６２】
係る制御によって、スレッドの処理が「Ｗａｉｔ」状態となる回数を減少させることができる。
【００６３】
図７は、キュー監視・並べ替え回路６０が並べ替えを行った結果、各スレッドによって実行される実行コードの推移を示す図である。なお、本図の基となっている、パイプラインコントローラ３０が保持している各スレッドが実行すべき実行コードの順番は、図２に示したものを援用している。
【００６４】
本実施例でも、スレッド命令実行のクロック周波数は、メモリアクセスのクロック周波数の倍である（すなわち、メモリアクセスには２クロック分の実行コード処理時間を要する）ものとした。
【００６５】
図７に示すように、キュー監視・並べ替え回路６０が並べ替えを行った結果、スレッドの処理が「Ｗａｉｔ」状態となった回数はゼロとなった。
【００６６】
図２と図７の比較によって、本実施例のマルチスレッド処理装置２では、スレッドの処理が「Ｗａｉｔ」状態となる回数を減少させることができるのが判る。この結果、処理効率の向上を実現することができる。
【００６７】
また、係る効果を奏するための特徴的な制御は、実行キュー４０での滞在時間監視のような複雑な構成を必要とせず、上記並べ替えのような簡易なものである。
【００６８】
以上より、本実施例のマルチスレッド処理装置２によれば、簡易な処理によって、処理効率の向上を実現することができる。
【００６９】
なお、本発明の第２実施例に係るマルチスレッド処理装置２は、車両に搭載され、種々の車載機器制御を行う制御装置に適用されると好適である。例えばナビゲーション制御装置、空調制御装置、エンジン制御装置、ブレーキ制御装置、ステアリング制御装置、車両安定化制御装置（ＶＳＣ、ＶＤＩＭ等）、車間距離制御装置、車線維持制御装置等、及びこれらが統合された制御装置が該当する。
【００７０】
この場合、パイプラインコントローラ３０が保持している実行コードの順番は、車載機器制御のための処理を規定している。マルチスレッド処理装置１が、ナビゲーション制御装置と空調制御装置が統合されたものとして機能する場合、スレッドＡがナビゲーション制御のための演算処理を実行し、スレッドＢが空調制御のための演算処理を実行するような態様で用いられ得る。
【００７１】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【００７２】
例えば、図３のフローチャートにおいて、Ｓ１０２の処理を省略してもよい。すなわち、Ｓ１０２において、メモリアクセス命令が連続していると判定された場合は、連続するメモリアクセス命令のうち先に実行キュー４０に蓄積された実行コードを次回のサイクルに繰り下げるように制御する。
【符号の説明】
【００７３】
１、２  マルチスレッド処理装置
１０  ＦｌａｓｈＲＯＭ
２０  Ｂｕｓ制御回路
２２  命令コードフェッチ回路
２４  命令コードデコード回路
３０  パイプラインコントローラ
４０  実行キュー
４２  命令実行制御回路
４４  スレッドスケジューラ
５０  ＡＬＵ
６０  キュー監視・並べ替え回路
６２  修正後実行キュー
６４  ＭＵＸ
６６  シーケンサ
【図１】
2011134068.tif 000003
【図２】
2011134068.tif 000004
【図３】
2011134068.tif 000005
【図４】
2011134068.tif 000006
【図５】
2011134068.tif 000007
【図６】
2011134068.tif 000008
【図７】
2011134068.tif 000009