(57)【特許請求の範囲】
【請求項１】
情報処理装置であって、
複数の命令を並列に発行するよう構成された割り当てステージ、デコードステージ、実行ステージ、およびライトバックステージを含む複数のパイプラインステージを備えるパイプラインと、
前記パイプラインステージのうち複数のステージによって第１時刻において生成されたプロセッサ内部のハードウェアの制御状態を、前記第１時刻に前記パイプラインによって処理されている命令に対応するプログラムカウンタ値と関連付けて、前記第１時刻に前記パイプラインによって処理されているプリディケートにより条件実行可能な命令に応答して、シナリオテーブルに記録する情報記録手段と、
前記シナリオテーブルに記録されたプロセッサ内部のハードウェアの制御状態を、前記シナリオテーブルに記録されたプログラムカウンタ値に対応する命令を処理する前記パイプラインの同期情報に応答して、前記パイプラインステージに供給する情報再生手段とを備え、
前記プリディケートにより条件実行可能な命令の処理は、前記デコードステージによる前記プリディケートにより条件実行可能な命令の処理に続いて、
前記シナリオテーブルに記録されたプロセッサ内部のハードウェアの制御状態を用いて、該命令の投機的実行を行い、
前記プリディケート値が条件を満たすか否かに応答して、前記命令の実行結果を有効とするか無効とするかを制御し、
前記プリディケートにより条件実行可能な命令は、非分岐命令であり、
前記情報記録手段による記録は、条件を満たさない前記プリディケート値に応答しディセーブルされる、情報処理装置。
【請求項２】
前記シナリオテーブルに記録された前記プロセッサ内部のハードウェアの制御状態は、
前記情報処理装置における発行命令数、
前記情報処理装置におけるデータハザード検出を示す制御信号、
前記情報処理装置におけるデータフォワーディング経路を示す制御信号、及び
前記情報処理装置におけるクロックゲーティング指示信号
のうち少なくとも１つを含む請求項１に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、基本となる状態要素（例えばプログラムカウンタやカウンタやシーケンサのステート値等）と、この変更に応じて逐次処理を進める、単一または複数構成からなるマイクロプロセッサ（マイクロコンピュータやマイクロコントローラやディジタル・シグナル・プロセッサを含む）やシーケンサ、静的構成及び動的再構成可能論理等の情報処理装置における、状態制御装置及び状態制御方法に関するものである。本明細書では主にプロセッサを例として取り扱うが、本発明は上記情報処理装置一般に適用可能である。
【背景技術】
【０００２】
従来、ソフトウェア処理をハードウェアで実現するために、マイクロプロセッサなどの情報処理装置が一般に利用されている。ソフトウェア生産性を高めるため、従来のカスタムハードウェア指向から現在は、ソフトウェア処理をハードウェアにマッピングし実行させる、複数構成を含むマイクロプロセッサやシーケンサや高位合成による静的及び動的再構成可能論理等を中心としたハードウェア形態へと移行しているが、本質的にはソフトウェア駆動が主流である。
【０００３】
近年、音声、オーディオ、動画等のマルチメディア処理に代表されるように、ソフトウェア処理要求の増大に応じて、ハードウェアは、回路規模の増加や動作周波数の増加の一途を辿っている。回路規模や動作周波数の増加は、消費電力の増加や、パイプラインステージ増による各種処理ペナルティの増加を招いている。
【０００４】
従来は消費電力削減のため、ハードウェアの各実行サイクルにおいて命令内容やステート情報をデコードし、クロックゲーティングや回路動作停止制御を実現している。
【０００５】
また毎サイクルの命令デコードを抑制するために、例えば特許第１９５９８７１号公報に示されるように、処理頻度の高い繰り返し（ループ）箇所を特定し、該当ループ処理中に動作不要な回路箇所をループ単位で停止させる制御が一般に行われている。
【０００６】
他方、パイプラインステージ増による処理ペナルティを抑制するために、命令の明示的な指定によるメモリ・データのプリロードが行なわれている。
【０００７】
さらに、条件分岐命令のように条件実行を伴う分岐命令においても、分岐先命令の投機的フェッチやプリフェッチを行ない、ペナルティの隠蔽を一般的に行なってる。
【特許文献１】特許第１９５９８７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来の命令やステートのデコードによる消費電力削減方法では、デコード回路自身による電力の消費や、デコード論理の挿入が回路高速化の妨げとなる課題がある。特にパイプライン前段ステージは低電力回路に与える事ができる論理段数の制約が厳しいため、電力制御の実現が速度上困難となる。
【０００９】
上記課題を防ぐために、例えば前記特許第１９５９８７１号公報のようにループ単位を電力制御の対象として扱い、毎サイクルのデコードやデコード速度の問題を解決する方法がある。これは、高い頻度で処理が行なわれるループを対象とするという意味では良い方法である。
【００１０】
しかしこのループ全体を制御対象とする方法では、現在の情報処理装置では充分な低電力化が行なえない。それは、ループ全体を制御対象とする場合、ループの中に性能上重要な命令を含むと効果的な低電力制御が行えず、また、複雑なループを制御対象とする事ができない為である。
【００１１】
近年のマルチメディア処理に代表される現実的なアプリケーションでは、次の例の様に充分な停止制御が行なえない。例えば、ループ処理単位の中に、対象とする特定の命令が存在しない場合に、該当の命令デコーダや関連ブロックを停止させる事が考えられる。
【００１２】
しかしながら、性能向上を目的とする情報処理装置において、ループ処理単位内で一度も使用されない命令は元々必要性の乏しい命令であり、回路規模上は支配的ではなく停止による電力削減効果は小さい。反面、データメモリアクセスや積和演算命令等の様に、高頻度で使用される命令を停止させる事が可能なケースは高い頻度では現れない。
【００１３】
図４２（ａ）には、ループ処理に関するアセンブラプログラム例を示す。この例では、ＬＯＯＰ命令により、次命令よりＬ＿ＥＮＤラベルの箇所の命令までの範囲を、繰り返して実行する。
【００１４】
図４２（ａ）に示すようにメモリアクセス（ＬＤ命令）は５サイクル中２サイクルのみ実行され、残りの３サイクルは不要である。同様に積和演算（ＭＡＣ）は５サイクル中４サイクルは不要であるが、いずれの場合も、ループ内に一度でも現れると一括制御対象とすることができない。
【００１５】
このように、現実的にループ単位で停止可能で効果的であるのは、命令メモリアクセス程度であり、他に効果的に抑制できる対象は少ない。
【００１６】
他にも命令を並列実行可能な情報処理装置において、ループ中の最大命令発行数に併せて不要な命令発行制御をループ単位で停止させる方法も考えられる。この場合も同様に、性能向上を目的とする情報処理装置においては、ループ中に最大に近い命令発行を行なうサイクルが必ず存在する。従って、その他のサイクルの命令発行数が少ないとしても最大発行サイクルに制約されるため、ループ全体を対象とする制御は、現実的なアプリケーションにおいて有効には作用しない。
【００１７】
例えば図４２（ｂ）の場合、ほとんどのサイクルの並列度は１であるが、最大並列度が２であるため、命令発行数をループ単位で最大数として制御することは効果が無い。
【００１８】
なお、ループ単位の制御方式については、命令セット及び命令制御上の課題も存在する。
【００１９】
一般的にディジタル・シグナル・プロセッサ（以下DSP）においては、特定の命令列を繰り返し実行するためのループ専用命令が存在する（図４２（ａ）の例としてはLOOP命令に相当する。）。
【００２０】
しかしながら、RISCプロセッサに代表される現在主流のプロセッサでは、一般にループ専用命令が存在せず、分岐命令によりループ構造を形成する（図４２（ｃ）にプログラム例を示す。）。
【００２１】
この場合、現在、ループ単位を処理中であるか否かの判定が困難であるため、ループ内であることを識別し低電力制御を実施することができない。
【００２２】
また、ループ内に条件分岐命令のように、処理フローを変更する命令が存在する場合も、ループ制御が困難となる。分岐命令成立時に状態制御の抑制が必要となるため、一般には分岐命令がループ単位内に存在する場合は、低電力制御の実施が困難である。
【００２３】
しかしながら図４３（ａ）及び図４３（ｂ）に示すように、ループ内に分岐命令が存在するケースは特別ではない。
【００２４】
このように、単純なループ単位の制御では、マルチメディアアプリケーションを始めとする多くの場合に停止制御が有効に実施できない。
【００２５】
さらに、単純なループ構造ではない、例えば分岐を多用する可変長符号デコード向けアプリケーションのように、制御フローの変更を多用するが個々の命令自身は平均的に高い頻度で実行されるソフト構造に対しても、ループ単位の制御方式では充分に停止制御が行なえない。
【００２６】
他方、動作速度の劣化に対して従来は、プリデコードキャッシュのように、パイプラインステージの前段において、命令コードを予めデコードし格納する方式が考えられている。
【００２７】
しかしながらこの方式では、命令単体の情報デコード速度を早めるだけであり、データ・ハザード検出の様に命令間の連続性に依存した制御は行なえない。
【００２８】
さらにこの方式では、各プログラムカウンタ即ち命令アドレスの値に対応した命令デコード情報を取り出せるだけであり、自身のプログラムカウンタ値が与えられる以前に情報を供給できる訳では無い。
【００２９】
従ってプリデコードキャッシュ方式においても、パイプラインステージ前段の動作速度の劣化に対する本質的な対応策とはならない。
【００３０】
当然ながらプリデコード方式は、相当の回路規模の投資が必要なため、低電力化や回路規模削減に悪影響を与えるのは言うまでも無い。
【００３１】
処理ペナルティに関しては、ソフトウェア開発者がメモリアクセスデータを事前に取得するプリフェッチ命令を明示的に記述する方法が知られている。
【００３２】
しかしながら、この方式では性能向上の為に要するソフトウェア開発者の負担が高く、また、明示的な命令挿入自体による性能劣化も無視できない。
【００３３】
近年のコンパイラ技術により、静的にプリフェッチ命令をスケジューリングし配置する方式も存在するが、複雑な分岐構造も含め、必ずしもアセンブリプログラム開発者と同様の性能は得られない。
【００３４】
また、分岐命令のペナルティ抑制についても、条件分岐の条件成立の有無に関わらず分岐先命令を投機的にフェッチする方法がある。さらにペナルティを抑制するために、分岐先命令群を分岐ターゲットバッファと呼ばれるバッファに予め格納し、随時取り出す方法も存在する。
【００３５】
いずれの方法も、相当の回路規模の投資が必要なため、低電力化や回路規模削減に悪影響を与える。
【００３６】
この様に、動作周波数増加によるパイプラインステージの増加は、各種処理ペナルティを増大させる。これは、情報処理装置の拡張アクセラレータの駆動や、動的再構成論理の状態変更なども含めて、ソフトウェア処理方式のハードウェアにおける共通の課題である。
【００３７】
本発明は、上記従来の問題点を解決するもので、ソフトウェア生産性を高めながら、かつ大幅な回路増加や動作速度の劣化を招くことなく、情報処理装置の状態を変更し、消費電力削減や処理能力向上を実現する状態制御装置を提供する。
【課題を解決するための手段】
【００３８】
上記の課題を解決するために本発明の状態制御装置は、情報処理装置の内部状態を制御するための状態制御装置であって、前記情報処理装置における一意的に決定される第１の状態情報である同期情報と、前記第１の状態情報と同期した前記情報処理装置の１つの第２の状態情報群あるいは同一または異なる複数のサイクルに係る複数の第２の状態情報群とを少なくとも１組書き換え可能に記録するシナリオテーブルと、前記第１の状態情報と前記第２の状態情報群とを関連づけ、必要に応じて同期調整を伴い、場合により前記第２の状態情報群を情報修正し、シナリオテーブルに記録する情報記録手段と、任意の条件一致時および任意のサイクルにおいて、前記情報記録手段に対し、前記シナリオテーブルへの記録の開始及び完了を選択的に指示する記録制御手段と、前記情報処理装置における第１の状態情報と同期し、前記シナリオテーブルに記録した第１の状態情報に関連づけられた第２の状態情報群を同一サイクルまたは１サイクル以上先行した予測的な供給を実現する情報再生手段と、任意の条件一致時および任意のサイクルにおいて、前記情報再生手段による情報供給の開始及び完了を選択的に指示する再生制御手段と、前記情報再生手段から供給される状態情報群に基づき、前記情報処理装置における該当サイクルの情報処理結果を必ずしも必要とせずに、前記情報処理装置内部に対する制御を行うことができる状態変更制御手段とを備えることを特徴とする。
【００３９】
これにより、それぞれの処理サイクルに本質的に必要な情報を、必ずしも該当サイクルの演算・デコード等の情報処理を必要とせずに、未来を予測し次々と状態を同期的かつ選択的、連続的に変更を可能にし、それぞれのサイクルに、本質的に必要な箇所のみを有効化する、或いは、本質的に必要な情報・状態を事前に準備する事を次々と行なう。
【００４０】
特に情報処理装置のうちプロセッサ型については、静的命令スケジューリング可能な単一命令発行プロセッサやVLIW型プロセッサのみならず、スーパースカラプロセッサにおいても、命令列に対して、命令実行形態は多くの場合に一意に決定される事を利用するものである。
【００４１】
例えばこの方式では、完全な状態デコード及び論理演算は必要ではなく、必ず停止できる状態のみを記憶させたり、予め取得する情報を不要であれば破棄する事もできる。従って、少ない回路規模で効果的に実現する事ができる。
【００４２】
本方式は、マルチメディア処理や大規模演算などにおける、いわゆるホットスポットと呼ばれるような、局所的に高い負荷となる箇所に特に有効である。
【００４３】
例えば、これらのホットスポットは数サイクルから数１０サイクルの範囲を局所的に高頻度に実行する事が多いため、数組のシーン情報の記録・再生でも、現実的に大きな効果を得る事ができる。
【００４４】
上記状態制御装置において、所定の記録再生状態から外れる場合には、前記記録制御装置へ記録無効化指示、または供給制御装置へ供給無効化指示、を行ない、記録及び供給を適切に停止または無効化する、無効化制御手段をさらに備えることが好ましい。
【００４５】
つまり、例外やメモリアクセスミスや演算結果依存等の特別な場合は、動作を無効化する。
【００４６】
前記記録制御手段及び再生制御手段は、情報処理装置の１回または任意の設定回数の、任意の内部状態検出を基に、記録及び再生の開始或いは完了を行なうことが好ましい。
【００４７】
前記記録制御手段及び再生制御手段によって検出される内部状態には、前記情報処理装置における処理フロー変更が含まれていることが好ましい。
【００４８】
前記情報処理装置はマイクロプロセッサを含み、前記記録制御手段及び再生制御手段によって検出される内部状態には、前記マイクロプロセッサにおけるプログラムカウンタの不連続な変更が含まれていることが好ましい。
【００４９】
前記情報処理装置はマイクロプロセッサを含み、前記記録制御手段及び再生制御手段によって検出される内部状態には、前記マイクロプロセッサにおけるプログラムカウンタの任意の値あるいは任意の範囲内との比較が含まれていることが好ましい。
【００５０】
前記情報処理装置はマイクロプロセッサを含み、前記記録制御手段及び再生制御手段によって検出される内部状態には、前記マイクロプロセッサにおける、プログラム識別番号や特権レベル値等のソフトウェア状態との比較が含まれていることが好ましい。
【００５１】
前記情報処理装置はマイクロプロセッサを含み、前記記録制御手段及び再生制御手段によって検出される内部状態には、前記マイクロプロセッサにおける、繰り返し命令実行区間中における繰り返し状態との比較が含まれていることが好ましい。
【００５２】
前記情報処理装置はマイクロプロセッサを含み、前記記録制御手段及び再生制御手段によって検出される内部状態には、前記マイクロプロセッサにおける、内部状態遷移を指示する専用命令が含まれていることが好ましい。
【００５３】
前記情報処理装置はマイクロプロセッサを含み、前記記録制御手段及び再生制御手段によって検出される内部状態には、前記マイクロプロセッサにおける、命令の繰り返し箇所に現れる可能性が高い命令の指定が含まれていることが好ましい。
【００５４】
前記情報処理装置はマイクロプロセッサを含み、前記記録制御手段及び再生制御手段によって検出される内部状態には、前記マイクロプロセッサにおける、割り込み等のイベント発生が含まれていることが好ましい。
【００５５】
前記情報処理装置はマイクロプロセッサを含み、前記記録制御手段及び再生制御手段によって検出される内部状態には、前記マイクロプロセッサにおける、所定のタイミングの指定が含まれていることが好ましい。
【００５６】
前記状態制御装置において、任意の設定命令実行後に、条件判定開始待ちを行なうことが好ましい。
【００５７】
前記記録制御手段及び再生制御手段によって検出される内部状態には、前記情報処理装置におけるステートマシンのステート値が含まれていることが好ましい。
【００５８】
前記記録制御手段及び再生制御手段によって検出される内部状態には、前記情報処理装置におけるカウンタのカウント値が含まれていることが好ましい。
【００５９】
前記情報処理装置は並列プロセッサを含み、前記記録制御手段及び再生制御手段によって検出される内部状態には、前記並列プロセッサにおける、複数のプロセッサの動作状態が含まれていることが好ましい。
【００６０】
前記状態制御装置において、検出する対象の判定条件を書き換え可能とすることが好ましい。
【００６１】
前記情報処理装置はマイクロプロセッサを含み、前記記録制御手段及び再生制御手段によって検出される内部状態には、前記マイクロプロセッサにおけるプログラムカウンタが任意の範囲外である場合の再生の完了が含まれていることが好ましい。
【００６２】
前記記録制御手段及び再生制御手段によって検出される内部状態には、同期情報との比較結果が不一致である状態が任意回数あるいは任意の間隔で生じた場合における再生の完了が含まれていることが好ましい。
【００６３】
前記記録制御手段及び再生制御手段によって検出される内部状態には、割り込みや例外が生じた場合における記録または再生の完了が含まれていることが好ましい。
【００６４】
前記状態制御装置において、不正な再生状態による制御状態が発生した場合に、例外発生を行なうことが好ましい。
【００６５】
前記情報処理装置はマイクロプロセッサを含み、前記シナリオテーブルが記録、あるいは、前記状態変更制御手段が制御する対象には、前記マイクロプロセッサの命令発行数が含まれていることが好ましい。
【００６６】
前記情報処理装置はマイクロプロセッサを含み、前記シナリオテーブルが記録、あるいは、前記状態変更制御手段が制御する対象には、前記マイクロプロセッサの命令発行組合せ情報が含まれていることが好ましい。
【００６７】
前記情報処理装置はマイクロプロセッサを含み、前記シナリオテーブルが記録、あるいは、前記状態変更制御手段が制御する対象には、前記マイクロプロセッサの命令発行依存関係が含まれていることが好ましい。
【００６８】
前記情報処理装置はマイクロプロセッサを含み、前記シナリオテーブルが記録、あるいは、前記状態変更制御手段が制御する対象には、前記マイクロプロセッサの命令デコード状態が含まれていることが好ましい。
【００６９】
前記情報処理装置はマイクロプロセッサを含み、前記シナリオテーブルが記録、あるいは、前記状態変更制御手段が制御する対象には、前記マイクロプロセッサのレジスタアクセス状態が含まれていることが好ましい。
【００７０】
前記情報処理装置はマイクロプロセッサを含み、前記シナリオテーブルが記録、あるいは、前記状態変更制御手段が制御する対象には、前記マイクロプロセッサのハザード検出状態が含まれていることが好ましい。
【００７１】
前記情報処理装置はマイクロプロセッサを含み、前記シナリオテーブルが記録、あるいは、前記状態変更制御手段が制御する対象には、前記マイクロプロセッサのデータフォワーディング検出状態が含まれていることが好ましい。
【００７２】
前記情報処理装置はマイクロプロセッサを含み、前記シナリオテーブルが記録、あるいは、前記状態変更制御手段が制御する対象には、前記マイクロプロセッサのデータ経路選択状態が含まれていることが好ましい。
【００７３】
前記情報処理装置はマイクロプロセッサを含み、前記シナリオテーブルが記録、あるいは、前記状態変更制御手段が制御する対象には、前記マイクロプロセッサの機能停止情報が含まれていることが好ましい。
【００７４】
前記情報処理装置はマイクロプロセッサを含み、前記シナリオテーブルが記録、あるいは、前記状態変更制御手段が制御する対象には、前記マイクロプロセッサのクロック停止情報が含まれていることが好ましい。
【００７５】
前記情報処理装置はマイクロプロセッサを含み、前記シナリオテーブルが記録、あるいは、前記状態変更制御手段が制御する対象には、前記マイクロプロセッサの条件実行状態が含まれていることが好ましい。
【００７６】
前記情報処理装置はマイクロプロセッサを含み、前記シナリオテーブルが記録、あるいは、前記状態変更制御手段が制御する対象には、前記マイクロプロセッサの分岐命令発行状態が含まれていることが好ましい。
【００７７】
前記情報処理装置はマイクロプロセッサを含み、前記シナリオテーブルが記録、あるいは、前記状態変更制御手段が制御する対象には、前記マイクロプロセッサのメモリアクセス状態が含まれていることが好ましい。
【００７８】
前記情報処理装置は動的再構成可能論理を含み、前記シナリオテーブルが記録、あるいは、前記状態変更制御手段が制御する対象には、前記動的再構成可能論理の内部構成状態が含まれていることが好ましい。
【００７９】
前記状態制御装置において、前記シナリオテーブルは、エントリ毎に無効化情報を保持できることが好ましい。
【００８０】
前記状態制御装置において、前記シナリオテーブルは、エントリ毎に条件情報を保持できることが好ましい。
【００８１】
前記状態制御装置において、前記シナリオテーブルは、エントリ毎に同期情報の種別として属性情報を保持できることが好ましい。
【００８２】
前記状態制御装置において、前記シナリオテーブルは、同期情報として、プログラムカウンタ値を保持することが好ましい。
【００８３】
前記状態制御装置において、前記シナリオテーブルは、同期情報として、カウンタ値を保持することが好ましい。
【００８４】
前記状態制御装置において、前記シナリオテーブルは、同期情報として、ステートマシンにおけるステート値を保持することが好ましい。
【００８５】
前記状態制御装置において、前記シナリオテーブルは、同期情報として、前記情報処理装置におけるイベント値を保持することが好ましい。
【００８６】
前記状態制御装置において、前記シナリオテーブルは、各エントリの同期情報を、属性情報の内容により、プログラムカウントの全ビット値、もしくは、一部ビットをそれぞれ記録することが好ましい。
【００８７】
前記状態制御装置において、前記シナリオテーブルは、各エントリの同期情報を、属性情報の内容により、プログラムカウント値、あるいはサイクル時刻情報としてそれぞれ使用することが好ましい。
【００８８】
前記状態制御装置において、前記シナリオテーブルは、各エントリの同期情報を、属性情報の内容により、プログラムカウント値、あるいは状態変更発生情報としてそれぞれ使用することが好ましい。
【００８９】
前記状態制御装置において、前記シナリオテーブルへの記録の実施可否を、命令の種別により選択することが好ましい。
【００９０】
前記状態制御装置において、前記シナリオテーブルへの記録の実施可否を、条件命令実行の条件状態により選択することが好ましい。
【００９１】
前記状態制御装置において、前記シナリオテーブルへの記録の実施可否を、プログラム識別番号や特権レベル値等のソフトウェア状態により選択することが好ましい。
【００９２】
前記状態制御装置において、前記シナリオテーブルへの記録の実施可否を、例外発生状態により選択することが好ましい。
【００９３】
前記状態制御装置において、前記シナリオテーブルへの記録について、現在有効な状態にあるエントリへの再修正記録を行なえることが好ましい。
【００９４】
前記状態制御装置において、前記シナリオテーブルへの記録について、全てあるいは複数のエントリを一括して無効化することが好ましい。
【００９５】
前記状態制御装置において、記録再生に関する実施可否指定情報により、記録または再生を個別あるいは併せて、動作停止可能とすることが好ましい。
【００９６】
前記状態制御装置において、プログラム識別番号や特権レベル値等のソフトウェア状態のそれぞれに対する個別の実施可否指定情報により、記録または再生を個別あるいは併せて、動作停止可能とすることが好ましい。
【００９７】
前記状態制御装置において、前記シナリオテーブルへ記録する情報の組合せを任意に変更可能であることが好ましい。
【００９８】
前記状態制御装置において、前記シナリオテーブルへ記録する情報を元に、該当ソフトウェア箇所の特徴を抽出可能とすることが好ましい。
【００９９】
前記状態制御装置において、同期情報と、メモリアクセス情報を関連づけ、情報供給を可能とすることが好ましい。
【０１００】
本発明による状態制御方法は、情報処理装置の内部状態を制御するための方法であって、前記情報処理装置における一意的に決定される第１の状態情報である同期情報と、前記第１の状態情報と同期した前記情報処理装置の１つの第２の状態情報群あるいは同一または異なる複数のサイクルに係る複数の第２の状態情報群とを少なくとも１組書き換え可能に記録したシナリオテーブルを準備するステップ（ａ）と、前記第１の状態情報と前記第２の状態情報群とを関連づけ、必要に応じて同期調整を伴い、場合により前記第２の状態情報群を情報修正し、前記シナリオテーブルに記録するステップ（ｂ）と、任意の条件一致時および任意のサイクルにおいて、前記シナリオテーブルへの記録の開始及び完了を選択的に指示するステップ（ｃ）と、前記情報処理装置における第１の状態情報と同期し、前記シナリオテーブルに記録した第１の状態情報に関連づけられた第２の状態情報群を同一サイクルまたは１サイクル以上先行した予測的な供給を実現するステップ（ｄ）と、任意の条件一致時および任意のサイクルにおいて、前記ステップ（ｄ）による情報供給の開始及び完了を選択的に指示するステップ（ｅ）と、前記ステップ（ｄ）により供給される状態情報群に基づき、前記情報処理装置における該当サイクルの情報処理結果を必ずしも必要とせずに、前記情報処理装置内部に対する制御を行うステップ（ｆ）とを備えることを特徴とする。
【０１０１】
本発明による状態制御方法は、任意の同期情報に関連した、任意のサイクルの内部状態を記録するステップ（ａ）と、選択的に取りだし、かつ、先行的に供給可能とするステップ（ｂ）と、条件外の場合には、記録あるいは供給をキャンセルするステップ（ｃ）とを備えることを特徴とする。
【０１０２】
本発明による命令変換方法は、上記の状態制御装置に対する、コンパイラ等の命令変換方法であって、前記状態制御装置に対する状態変更の実施命令の挿入を行なうか否かを、命令変換装置へのオプション指定により選択可能とすることを特徴とする。
【０１０３】
本発明による命令変換方法は、上記の状態制御装置に対する、コンパイラ等の命令変換方法であって、前記状態制御装置に対する状態変更の実施命令の挿入を行なうか否かを、ソースプログラム中における、指示分により選択可能とすることを特徴とする。
【発明の効果】
【０１０４】
以上のように本発明によれば、ソフトウェア生産性を高めながら、かつ大幅な回路増加や動作速度の劣化を招く事無く、情報処理装置の状態を変更し、消費電力削減や処理能力向上を実現することが出来る。
【０１０５】
また、必要となるハードウェア操作を、固有の情報取得前かつ情報取得無しに開始する事が可能となり、また大規模な論理活性化を招く事無く、必要最小限の動作部位による、本質的なハードウェア駆動が可能となり、処理性能向上及び消費電力の削減を実現できる。
【０１０６】
さらに、本方式は、ハードウェアの基本構成に依存せず広範囲に適用可能であるため、ハードウェアに対して実装追加及び取り外しが容易で、かつソフトウェア互換性を保ち、かつソフトウェア生産性を高めながら、より安全に消費電力の削減及び処理性能の向上を容易に実現できる。
【発明を実施するための最良の形態】
【０１０７】
以下、本発明の実施の形態を図面を参照して詳しく説明する。なお、図面において同一または相当する部分には同一の参照符号を付してその説明は繰り返さない。
【０１０８】
以下の実施形態では、情報処理装置として特にマイクロプロセッサへの本発明の適用例について説明する。
【０１０９】
（第１の実施形態）
図１は本発明の第１の実施形態に係るマイクロプロセッサの状態制御装置の構成を示すブロック図である。
【０１１０】
シナリオ制御部ＺＡ１０１はマイクロプロセッサＺＡ１２０に接続され、マイクロプロセッサＺＡ１２０に対する状態制御を行なう。当然ながら、シナリオ制御部ＺＡ１０１は、マイクロプロセッサＺＡ１２０内に設ける構成も可能である。シナリオ制御部ＺＡ１０１は、シナリオテーブルＺＡ１０２と、情報記録装置ＺＡ１０３と、記録制御装置ＺＡ１０４と、情報再生装置ＺＡ１０５と、再生制御装置ＺＡ１０６とを備えている。
【０１１１】
マイクロプロセッサＺＡ１２０は状態変更制御装置ＺＡ１０７を含んでいる。なお、状態変更制御装置ＺＡ１０７は、シナリオ制御部ＺＡ１０１内に設けることも可能である。
【０１１２】
シナリオテーブルＺＡ１０２は、マイクロプロセッサＺＡ１２０における第１の状態情報（例えばプログラムカウンタ値）である同期情報ＺＡ１１０と、同期情報ＺＡ１１０と同期した、該当マイクロプロセッサＺＡ１２０の同一または異なる複数のサイクルに係る複数の第２の状態情報群ＺＡ１１１を、これを１組または、複数組書き換え可能に記憶する装置である（以下の説明では、関連づけられた１組の情報をシーン情報と呼ぶ。）。
【０１１３】
なお、以下の実施例では、同期情報ＺＡ１１０としてプログラムカウンタ値を用いる場合について説明するが、本発明は同期情報としてプログラムカウンタ値以外の、たとえばステート値やカウンタ値等を扱うことができる。
【０１１４】
情報記録装置ＺＡ１０３は、前記第１の状態情報と第２の状態情報群を関連づけたシーン情報として、必要に応じてサイクルタイミング調整を伴い、場合により第２の状態情報群を情報修正し、シナリオテーブルに記録する装置である。
【０１１５】
記録制御装置ＺＡ１０４は、決定的あるいは設定変更可能な任意の条件一致時および任意のサイクルにおいて、情報記録装置ＺＡ１０３に対し、シナリオテーブルＺＡ１０２への記録の開始および完了を選択的に指示する。
【０１１６】
情報再生装置ＺＡ１０５は、マイクロプロセッサＺＡ１２０における同期情報ＺＡ１１０と同期し、シナリオテーブルＺＡ１０２に記録した、同期情報ＺＡ１１０に関連づけられた第２の状態情報群ＺＡ１１１を元に、マイクロプロセッサＺＡ１２０に対して、同一サイクルまたは１サイクル以上先行し、予測的な制御情報ＺＡ１１２の供給を実現可能とする装置である。
【０１１７】
再生制御装置ＺＡ１０６は、決定的あるいは設定変更可能な任意の条件一致時および任意のサイクルにおいて、情報再生装置ＺＡ１０５による制御情報ＺＡ１１２の供給（本明細書ではこの供給を再生と表現する）の開始および完了を選択的に指示する装置である。
【０１１８】
状態変更制御手段ＺＡ１０７は、情報再生装置ＺＡ１０５から供給される制御情報ＺＡ１１２に基づき、マイクロプロセッサＺＡ１２０における該当サイクルの情報処理結果を必ずしも必要とせずに、マイクロプロセッサＺＡ１２０内部に対する制御を行う装置である。なお、状態変更制御手段ＺＡ１０７は、必ずしもマイクロプロセッサＺＡ１２０内において、局所的なブロック構成として配置する必要はない。状態変更制御手段ＺＡ１０７は、様々なデコーダや制御回路と一体化構成として、分散的に配置する構成が一般的である。
【０１１９】
図２は、図１に示したマイクロプロセッサＺＡ１２０とシナリオ制御部ＺＡ１０１による情報記録に間する動作概念を示す図である。
【０１２０】
図２において、上部のタイミングチャートは、マイクロプロセッサＺＡ１２０の同期情報ＺＡ１１０や状態情報ＺＡ１１１の時系列的な変化を表している。
【０１２１】
例えば時刻ＺＡ２０１において、マイクロプロセッサＺＡ１２０の同期情報ＺＡ１１０はＮ番目の命令に応じたプログラムカウンタ値を示し、状態情報ＺＡ１１１の例である状態情報１（ここでは命令発行数）はＮ番目の命令に応じた状態であり、状態情報２（ここではハザード有無）および状態情報３（ここではメモリアクセス有無）はそれぞれＮ−１番目の命令、Ｎ−２番目の命令に応じた状態である。
【０１２２】
シナリオ制御部ＺＡ１０１内の情報記録装置ＺＡ１０３は、マイクロプロセッサＺＡ１２０内の時刻ＺＡ２０１における、同期情報ＺＡ１１０と状態情報ＺＡ１１１を取得し、ステージタイミングの調整や情報有効化等の加工を場合により行なったシーン情報ＺＡ２１０として、シナリオテーブルＺＡ１０２に記録する。
【０１２３】
シナリオ制御部ＺＡ１０１は、マイクロプロセッサＺＡ１２０の内部情報である同期情報ＺＡ１１０をキー情報とし、これに対応したシーン情報ＺＡ２１０を検索し、対応するシーン情報に記録された制御情報ＺＡ１１２を、場合により出力許可やタイミング調整を行なった上で、マイクロプロセッサが必要とする以前にマイクロプロセッサＺＡ１２０に供給可能とする。
【０１２４】
この様に予め記録したシーン情報ＺＡ２１０を、マイクロプロセッサＺＡ１２０の同期情報ＺＡ１１０の状態に応じて、時々刻々とかつ場合により先行的に、マイクロプロセッサＺＡ１２０に供給することで、マイクロプロセッサＺＡ１２０の処理を必ずしも必要とせずにマイクロプロセッサ内部の状態変更を実現可能とし、結果として消費電力削減や処理性能向上を実現できる。
【０１２５】
なお本発明では図３に示すように、シーン情報として取得する、マイクロプロセッサＺＡ１２０の同期情報ＺＡ１１０および状態情報ＺＡ１１１は、必ずしも同一時刻の内容である必要は無い。図３の例では、状態情報ＺＡ１１１のうち、状態情報２および状態情報３は、それぞれ１サイクル後、及び２サイクル後の状態を取得し、タイミング調整を行なった上で、シーン情報として供給することも可能である。
【０１２６】
次に図４の構成図を用いて、本発明の第1の実施形態の状態制御装置を備えたマイクロプロセッサＺＡ１２０において、シナリオ制御部ＺＡ１０１により、マイクロプロセッサＺＡ１２０の状態制御を行う動作概念について説明する。
【０１２７】
シナリオ制御部ＺＡ１０１は、マイクロプロセッサＺＡ１２０から出力される同期情報ＺＡ１１０に対応した制御情報ＺＡ１１２を出力する。図４の例では、制御情報ＺＡ１１２として、起動情報ＺＡ４０１、停止情報ＺＡ４０２、選択情報ＺＡ４０３、停止情報ＺＡ４０４を出力している。
【０１２８】
例えば起動情報ＺＡ４０１は、マイクロプロセッサＺＡ１２０における機能回路群ＺＡ４１０に対して制御指示を行なう。図４の例においては、マイクロプロセッサＺＡ１２０の同期情報ＺＡ１１０がシナリオテーブルＺＡ１０２の同期情報３に応じた状態のときにのみ、起動情報ＺＡ４０１が有効となる。これにより機能回路群ＺＡ４１０は、マイクロプロセッサＺＡ１２０の同期情報ＺＡ１１０が同期情報３に応じた状態の時にのみ、起動情報ＺＡ４０１により特別な動作を行なうことができる。従って、マイクロプロセッサＺＡ１２０の命令処理内容等の内部状態のデコードを必ずしも必要とせず、かつ、対象とする命令処理等が始まる以前のサイクルに、機能回路群ＺＡ４１０に対して起動制御を実施することができる。これを用いて、後述のように、先行的なデータ取得等を実現することができる。
【０１２９】
他方、停止情報ＺＡ４０２では、高い頻度での動作が必要とされない機能回路群ＺＡ４１１に対して、回路活性化抑制指示を行なう。本例では、同期情報ＺＡ１１０が同期情報２以外の場合には、停止情報ＺＡ４０２が有効となっている。従って、同期情報２以外の場合には、停止情報ＺＡ４０２を用いて、機能回路群ＺＡ４１１の活性化を定常的に抑制することができ、消費電力の削減を実現できる。
【０１３０】
同様に、選択情報ＺＡ４０３は、マイクロプロセッサＺＡ１２０のマルチプレクサＺＡ４１２に対して選択情報を供給する。例えばＺＡ４１２は４入力セレクタであるが、セレクタ出力が必要でないサイクルには、セレクタ出力を活性化させない入力を常に選択し、消費電力の削減を図ることができる。図中の例では、マイクロプロセッサＺＡ１２０の同期情報ＺＡ１１０が、シナリオテーブルＺＡ１０２の同期情報３、同期情報４、同期情報５に相当する状態においては、入力の変化が少ない“１１”の経路を選択することで、消費電力の削減を実現する。
【０１３１】
同様に、停止情報ＺＡ４０４は、フリップフロップ（以下ＦＦ）ＺＡ４１３の書き込み許可信号を供給する。例えば回路実装的には、それぞれのＦＦに供給するクロックへのクロックゲーティング指示信号である。図中の例では、マイクロプロセッサＺＡ１２０の同期情報ＺＡ１１０が、シナリオテーブルＺＡ１０２の同期情報１、同期情報５に相当する場合は、ＦＦＺＡ４１３に対するクロックゲーティング制御を行ない、ＦＦへのデータ書き込みを抑制し、消費電力の削減を実現する。
【０１３２】
以上、図４を用いて、マイクロプロセッサＺＡ１２０の詳細回路に対する制御例を示したが、制御内容は各種論理回路の起動、停止、選択情報のみに依らないことは当然である。
【０１３３】
次に、図５から図７を用いて、シナリオテーブルＺＡ１０２の論理的な構成例について説明する。
【０１３４】
図５は、シナリオテーブルＺＡ１０２の一般的な構成である。
【０１３５】
シナリオテーブルＺＡ１０２は、同期情報ＺＡ１１０と制御情報ＺＡ１１２からなるシーン情報ＺＡ２１０を１つ以上記録する形で構成される。
【０１３６】
図６は、シナリオテーブルＺＡ１０２に含まれる同期情報ＺＡ１１０および制御情報ＺＡ１１２について、それぞれの記録情報を一般化した構成例である。
【０１３７】
各同期情報（図５の同期情報ｉ（ｉ＝１，２，…）に相当する。）には、同期情報を一般化して格納するトリガ情報（trigger）フィールドと、同期情報の同期化方法を格納する属性（attribute）フィールドと、格納しているシーン情報自体が有効なデータであるか否かを示す有効（valid）フィールドとが含まれている。なお、属性フィールドと、有効フィールドは、実施構成によっては省略することができる。
【０１３８】
各制御情報（図５の制御情報ｉ（ｉ＝１，２，…）に相当する。）には、状態情報ＺＡ１１１を場合により加工して格納する制御情報（information）フィールドと、情報の種別を示す条件（condition）フィールドとが含まれている。なお、条件フィールドは、実施構成によっては省略することができる。条件フィールドを、格納情報の供給リスク情報（riskyビット）として格納する例については後述する。
【０１３９】
図７は、シナリオテーブルＺＡ１０２の、具体的な一実施例である。
【０１４０】
この例では、同期情報はトリガ情報フィールドと有効情報フィールドから構成され、制御情報は制御情報フィールドからのみ構成される。この例ではトリガ情報として、マイクロプロセッサのプログラムカウンタ（ＰＣ）値を採用している。また、制御情報フィールドは、マイクロプロセッサの命令発行数（命令発行数）、ハザード有無情報（ハザード情報）、データメモリアクセス有無情報（メモリ使用）から構成している。本テーブル構成による動作例は後述する。
【０１４１】
なお、以上で説明したシナリオテーブルＺＡ１０２の例は、あくまで論理構成の例であるため、ハードウェア構成上は図のような構成を取る必要は無い。具体的なハードウェア構成上の例については後述する。
【０１４２】
次に、図８から図１０のタイミング図を用いて、マイクロプロセッサＺＡ１２０から得られる同期情報ＺＡ１１０と、シナリオ制御部ＺＡ１０１による制御情報とのタイミング関係について説明する。
【０１４３】
図８は、同期情報ＺＡ１１０に応じた制御情報ＺＡ１１２が同一のサイクルにおいて出力される例である。
【０１４４】
図８の例では、該当サイクルにおけるマイクロプロセッサＺＡ１２０の同期情報ＺＡ１１０を用いて、シナリオ制御部ＺＡ１０１が該当サイクルにおいて、制御情報ＺＡ１１２をマイクロプロセッサＺＡ１２０へ供給する構成例である。
【０１４５】
本例では、マイクロプロセッサＺＡ１２０からの状態情報ＺＡ１１１をシナリオ制御部ＺＡ１０１に記録する際、及びシナリオ制御部ＺＡ１０１からマイクロプロセッサＺＡ１２０に制御情報ＺＡ１１２を供給する際に、それぞれマイクロプロセッサＺＡ１２０のパイプラインステージ間のタイミング調整を行なうためのＦＦが不要となり、回路構成上コンパクトになる。
【０１４６】
しかしながら該当サイクルにおける情報供給では、マイクロプロセッサＺＡ１２０の動作速度の劣化を招く可能性が大きい。
【０１４７】
また、動作速度上問題が無い場合においても、該当サイクルの情報伝播による制御情報出力では、シナリオ制御部出力が、該当サイクル内で信号不確定な微小な時間帯が発生する。この信号不確定な状態は、例えばＣＭＯＳトランジスタによる回路構成においては、充放電が繰り返される状態であり、即ち電力消費の増加に繋がり低電力化の観点からは好ましくないといえる。
【０１４８】
図９は、同期情報ＺＡ１１０に応じた制御情報ＺＡ１１２を、同期情報ＺＡ１１０に対して１サイクル以上遅れて出力する例である。
【０１４９】
図８の方法と比較すると図９の例では、情報記録及び供給の際に、ステージタイミング調整用のパイプラインＦＦが必要となるが、信号を高速に供給可能なため動作速度の劣化を招かず、かつ信号変化を最悪でも各サイクルに１度にとどめることができ、消費電力の観点からも有利である。
【０１５０】
しかしながらこのタイミング構成方式では、、マイクロプロセッサＺＡ１２０の同期情報ＺＡ１１０の取得サイクルより１サイクル以上後段のサイクルへの情報供給のみ可能である。例えば同期情報生成自身等のように、同期情報の生成と同タイミングのマイクロプロセッサＺＡ１２０の機能を制御することはできない。
【０１５１】
図１０は、同期情報ＺＡ１１０に応じた制御情報ＺＡ１１２を、先行的に出力する例である。
【０１５２】
本例により図９の構成に対し、パイプライン前段を含む制御を可能とするものである。本例では、同期情報ＺＺ１１０と制御情報ＺＡ１１２をタイミング調整して予め記録する。例えば、図１０の例では、同期情報ＺＡ１１０が、Ｎ−１の状態を示す際に、Ｎの情報を記録するものである。これにより、例えば、同期情報ＺＡ１１０として、プログラムカウンタが本来必要とする値になる前に、該当プログラムカウンタで必要とする情報を先行的に供給することができる。したがって、パイプライン前段の速度クリティカルなステージに対する制御や、対象とする命令実行より遥か以前に、対象とする命令で必要な状態を準備することができ、処理性能の向上や消費電力の削減に有効である。
【０１５３】
次に、図１１に、シナリオ制御部ＺＡ１０１からの制御情報ＺＡ１１２の供給と、マイクロプロセッサＺＡ１２０における詳細動作タイミング例を示す。
【０１５４】
図１１（１）は、マイクロプロセッサＺＡ１２０における命令実行タイミングを示している。図１１（２）は、シナリオ制御部ＺＡ１０１が、図８に相当するタイミングで情報を記録及び再生する場合を示している。同様に、図１１（３）は、シナリオ制御部ＺＡ１０１が、図１０に相当するタイミングで情報を記録及び再生する場合を示している。
【０１５５】
図１１（１）の場合、時刻ｔ４において、マイクロプロセッサＺＡ１０１からの同期情報に応じて、シナリオ制御部ＺＡ１０１から、分岐系の停止指示制御信号が出力される。同様に、時刻ｔ５においても分岐系の停止指示制御信号が出力される。
【０１５６】
この構成によると、マイクロプロセッサＺＡ１０１からの同期情報が、シナリオ制御部を経由してさらに分岐系機能群に到達するまでの信号の論理遅延および伝播遅延により、各時刻サイクルの微小な先頭時間帯において、信号の不定区間が形成される。この区間は、先に触れたように、信号の遷移による充放電が繰り返し発生する可能性があるため、消費電力上不利である。
【０１５７】
図１１（２）の場合、先行的に時刻ｔ３において、マイクロプロセッサＺＡ１０１からの同期情報に応じて、シナリオテーブルＺＡ１０２の情報が、情報再生装置ＺＡ１０５において、タイミング調整用のフリップフロップで遅延および安定化された後、マイクロプロセッサＺＡ１０１に供給される。
【０１５８】
この構成においても信号遅延による遷移は発生するが、本質的に信号値の遷移が発生する場合のみであり、たとえば、時刻ｔ４とｔ５の境界部においては、図１１（１）の場合とは異なり、信号遷移による無駄な電力消費は発生しない。
【０１５９】
この様にシナリオ制御装置ＺＡ１０２内の情報記録装置ＺＡ１０３および情報再生装置ＺＡ１０５におけるフリップフロップは、単なるタイミング調整のみではなく、電力削減に対して入念に準備された極めて重要な効果を持つものである。
【０１６０】
なお、この図１１（２）の先行的情報供給を可能にするのが、本発明による効果である。
【０１６１】
次に、本発明の状態制御装置によるシナリオ制御部ＺＡ１０１による、シーン情報の記録と再生に関する重要な動作概念について説明する。
【０１６２】
図１２は、先に述べたように、マイクロプロセッサＺＡ１２０における、シーン情報ＺＡ２１０を、パイプラインステージ間のタイミング調整を行ない、記録及び再生するものである。この調整により、先行的な情報供給や、安定した信号情報供給、高速な信号情報供給を実現する事ができる。さらに、後述するように、ループの先頭及び末尾に関するラップアラウンド的な情報の記録及び再生を実現する事ができる。また、後述するriskyビットのように、条件的な再生制御動作を実現可能とする。
【０１６３】
図１３は、シナリオ制御装置ＺＡ１０１において、シーン情報ＺＡ２１０の記録を無効化する機構である。この無効化手段により、シーン情報ＺＡ２１０の安全な記録及び再生を実現し、情報処理装置の誤動作を容易に抑制することができる。さらに選択的な記録手段により、少ない記録可能シーンにおいても、効果的な情報記録を実現できる。
【０１６４】
図１４は、シナリオ制御装置ＺＡ１０１において、シーン情報ＺＡ２１０の再生を、投機的、条件的に行なうことを実現するものである。この条件実行機能により、より安全にシーン情報ＺＡ２１０の再生を行なうことができる。また、記録および再生の適用対象を広げることができるため、より高性能化を図ることができる。
【０１６５】
図１５は、シナリオ制御装置ＺＡ１０１において、既に記録済みのシーン情報ＺＡ２１０に対して、情報を再修正して記録すること（バックアノテーション）を実現するものである。これにより、既に記録済みのエントリに対して、性能向上のための情報をフィードバックし、効果的に再生を行なうことができる。また、バックアノテーションにより、不要なシーン情報ＺＡ２１０を無効化することで、安全な動作の保証、及び、シナリオテーブル容量の有効活用を実現することができる。当然ながら、全シーン情報を破棄するフラッシュ動作も、このバックアノテーション機能により実現することができる。
【０１６６】
図１６は、シナリオ制御装置ＺＡ１０１において、既に記録済みのシーン情報ＺＡ２１０を元に、情報を代表させる集約を行なうものである。これにより、シナリオテーブル容量の有効活用を実現することができるため、制御対象をより広く、多くすることができる。。
【０１６７】
次に、本発明の状態制御装置によるシナリオ制御部ＺＡ１０１と、マイクロプロセッサＺＡ１２０の情報供給及び制御方式による適用構成例について説明する。
【０１６８】
図１７は、本実施例で想定するマイクロプロセッサＺＡ１２０のパイプラインステージと、シナリオ制御部ＺＡ１０１の概略構成である。
【０１６９】
図１８は、本発明の状態制御装置による、シナリオ制御部ＺＡ１０１と、マイクロプロセッサＺＡ１２０の情報供給及び制御方式に関連する俯瞰構成例である。
【０１７０】
当然ながら図１７及び図１８のパイプライン構成は、本発明の一実施例の説明のためのもので、本発明の適用範囲は図１７の構成に限らない。
【０１７１】
マイクロプロセッサＺＡ１２０から供給される同期情報ＺＡ１１０は、シナリオ制御装置ＺＡ１０１に供給される。
【０１７２】
シナリオ制御部ＺＡ１０１では、シナリオテーブルＺＡ１０２が、供給された同期情報ＺＡ１１０に応じたシーン情報ＺＡ２１０を検索する。
【０１７３】
図中には明示しない再生制御装置ＺＡ１０６の制御により、供給された同期情報に該当するシーン情報ＺＡ２１０から、マイクロプロセッサＺＡ１２０を制御するための制御情報ＺＡ１１２を、情報再生装置ＺＡ１０５が、適切なパイプライン遅延と許可状態反映等の情報補正を行ない、マイクロプロセッサＺＡ１２０への状態制御情報として供給する。
【０１７４】
シナリオ制御部ＺＡ１０１から供給された制御情報ＺＡ１１２は、マイクロプロセッサの各パイプラインステージの機能回路群へ供給される。各機能群は、先に図４で例示したように、供給された制御情報ＺＡ１１２をもとに、各種起動や停止、選択制御等の状態変更を実施し、消費電力の削減や、処理性能の向上動作等を駆動する。
【０１７５】
次に、図１９及び図２０を併用して、本状態制御方法により、マイクロプロセッサＺＡ１２０の命令発行を制御する例について説明する。
【０１７６】
図１９（１）は、マイクロプロセッサＺＡ１２０における、ＩＤステージの命令発行パターンを示している。例えば時刻ｔ１においては、０番目の命令発行パイプラインであるｉｓｓｕｅ＃０においてＳＵＢ命令が割り当てられ、同様にｉｓｓｕｅ＃１に対してはＭＡＣ命令、ｉｓｓｕｅ＃２に対してはＬＤ命令が割り当てられている。なお、それぞれ割り当てられた命令は、ＤＣステージにて命令デコードが行なわれる。
【０１７７】
図１９（２）は、各時刻における命令発行パターンをビットの並びで表現したものである。この各時刻の命令発行パターン情報を、シナリオ制御部ＺＡ１０１のシナリオテーブルに記録する。
【０１７８】
図２０は、図１９のマイクロプロセッサＺＡ１２０について、命令発行及びデコード部に関して、シナリオ制御部と併せて示している。
【０１７９】
命令割り当て部ＺＣ２２１は、供給された命令群から、命令発行パターンに関する情報をデコードし、さらに命令群を適切に並べ、４系統の命令レジスタＺＣ２３１へ命令発行すべき命令として供給する。
【０１８０】
命令レジスタＺＣ２３１は、ＤＣステージの先頭で、発行すべき命令を受け取り、命令デコーダＺＤ３０１にてデコード動作を行なう。
【０１８１】
本発明では、命令割り当て部ＺＣ２２１は、供給された命令群について、命令発行パターンに関する情報をデコードすること無く、シナリオ制御部ＺＡ１０１からの制御情報ＺＡ１１２により、命令選択及び供給を行うことができる。
【０１８２】
同様に命令レジスタＺＣ２３１は、命令発行パターンに関する情報をデコードすること無く、シナリオ制御部ＺＡ１０１からのＦＦの更新情報により、レジスタへの書き込みを抑制することができる。
【０１８３】
このようにして、命令割り当て部ＺＣ２２１および命令レジスタＺＣ２３１の信号活性化を抑制することができるため、消費電力の削減を実現できる。
【０１８４】
特にＩＤステージは、パイプラインの前段側であり、取得した命令群に対して即時情報デコードが必要なため動作速度が求められる上、高速化対策のため一般に消費電力が増加する。
【０１８５】
本発明により、命令発行パターンや命令発行に関する依存関係を予め取得し、再生制御することにより、動作速度の劣化を招くこと無く、消費電力の削減が可能である。
【０１８６】
他の制御対象としては、命令のデコードやプリデコード機能がある。図１８には、プリデコード回路としてＺＣ２２２を図示している。
【０１８７】
図１８では命令デコーダの例として、分岐制御部ＺＣ２３３及び、メモリ制御部ＺＣ２３４を例示している。
【０１８８】
分岐制御部ＺＣ２３３は、シナリオ制御部ＺＡ１０１からの制御情報に基づき、状態制御を実施する。
【０１８９】
例えばシナリオ制御部ＺＡ１０１からの制御情報が、分岐制御部ＺＣ２３３の停止指示を意味する場合、分岐制御部ＺＣ２３３は、停止指示に基づき回路動作を抑制する。
【０１９０】
シナリオ制御部ＺＡ１０１においては、デコード結果のデコードパターンを保持する構成もありえるが、必ずしもそうである必要はない。
【０１９１】
例えば、高い頻度で発生しない制御状態に対しては、対象とする制御状態のデコード自体が不要であることを記録するだけでも、効率的な状態制御が行なえる。即ち、小規模な回路実装により、効果的に消費電力の削減が行なえる。
【０１９２】
また、停止情報については、必ずしも、全ての条件を満たす停止情報を生成する必要はない。高頻度な条件のみをシナリオ制御部に記録するだけでも効果が高い。
【０１９３】
例えば、全条件のうち２割程度を対象とするだけで、発生頻度的に８割程度に対応する事ができる場合、対投資効果上、必ずしも１０割の条件による論理生成は必要ではない。
【０１９４】
このように、他の全ての回路機能に対しても同等であるが、該当サイクルの完全な制御情報を必ずしもシナリオ制御部ＺＡ１０１に記録する必要は無い。
【０１９５】
さらに、命令単独のデコードのみではなく、命令間の連鎖性に関連する制御も、シナリオ制御部ＺＡ１０１による制御対象とすることが有効である。
【０１９６】
図１８では、データ依存ハザード検出制御部ＺＣ２３５や、データフォワーディング制御部ＺＣ２３６を例示している。
【０１９７】
各サイクルのフォワーディングパターンや、ハザード発生パターンを記録することも可能であるが、該当状況の発生頻度が低ければ、先のデコーダの例と同様に、フォワーディングやハザードが発生しないこと自身を、シーン情報としてシナリオ制御部ＺＡ１０１に記録することが効果的である。
【０１９８】
この場合、シナリオ制御部ＺＡ１０１からの停止制御により、殆どのサイクルにおいて、ハザード制御部ＺＣ２３５やフォワーディング制御部ＺＣ２３６の回路動作を抑制することができる。
【０１９９】
さらに、ハザード検出やフォワーディング制御が必要な場合には、シナリオ制御部ＺＡ１０１のシーン情報に基づき、停止制御が無効となるため、ハザード制御部ＺＣ２３５やフォワーディングＺＣ制御部２３６により、正しい制御動作を実施することができる。
【０２００】
図２１は、本発明の第1の実施形態の状態制御装置を備えたマイクロプロセッサに係り、分岐制御及び、データメモリアクセスに関するアドレス計算に対する、状態制御の実施例である。
【０２０１】
図２２は、本発明の第1の実施形態の状態制御装置を備えたマイクロプロセッサに係り、データハザード制御及び、データフォワーディング制御に対する、状態制御の実施例である。
【０２０２】
図２３は、本発明の第1の実施形態の状態制御装置を備えたマイクロプロセッサに係り、データフォワーディングのデータ流制御に対する、状態制御の実施例である。
【０２０３】
図２４は、本発明の第1の実施形態の状態制御装置を備えたマイクロプロセッサに係り、データメモリアクセスに対する、状態制御の実施例である。
【０２０４】
図２５Ａは、本発明の第1の実施形態の状態制御装置を備えたマイクロプロセッサに係り、デフォルト・経路選択に対する、状態制御の実施例である。
【０２０５】
図２５Ｂは、本発明の第1の実施形態の状態制御装置を備えたマイクロプロセッサに係り、演算処理局所化のための、状態制御の実施例である。
【０２０６】
次に、図２６から図２８を用いて、シナリオテーブルＺＡ１０２の、別途論理的な構成例について説明する。
【０２０７】
図２６は、先に図６に示した一般化したシナリオテーブルＺＡ１０２において、同期情報列として、基本となる同期情報を格納するトリガ情報フィールド（ＰＣ値）と、同期情報の同期可方法を格納する属性フィールド（属性）と、格納しているシーン情報が有効であるかを示す有効フィールド（ｖ／−）から構成されており、本例はトリガ情報フィールドと属性フィールドに特徴がある。
【０２０８】
基本的に本構成では同期情報としてプログラムカウンタ値（ＰＣ値）を想定するが、先に触れたいずれの同期情報でも同等の構成が可能である。
【０２０９】
属性フィールドは、トリガフィールドで保有する値が、同期情報即ちここではプログラムカウンタの値の全てを記録（ｆｕｌｌ）しているか、一部を記録（ｓｕｂ）しているかを識別する。
【０２１０】
図２６の例では、プログラムカウンタ値“８００００００”に相当する同期情報は、“８０００００００”として全情報を確認し、属性フィールドの値を“ｆｕｌｌ”属性とする。
【０２１１】
一方、“８００００００１”番地に相当する同期情報は、“０００１”として下位の一部情報として記録し、属性フィールドの値を“ｓｕｂ”属性として記録する。
【０２１２】
この例では例えば、起点として同期情報を比較するのは、属性フィールドが“ｆｕｌｌ”指定のシーン情報のみとして、シナリオ制御部ＺＡ１０１を構成する。
【０２１３】
例では、“８００００００”、“８０００１０００”、“９０００００００”の３シーンが同期比較対象となる。
【０２１４】
“ｆｕｌｌ”情報の一致後は、“ｆｕｌｌ”属性により比較一致したシーン情報と、これに関連する“ｓｕｂ”属性をもつ、シーン情報のみを、同期比較対象とする。
【０２１５】
従って、“８００００００”の同期一致後は、プログラムカウンタの下位ビットが“０００１”、“０００２”、“０００４”の場合のみ、比較対象とできるため、回路規模の削減や消費電力の削減を図ることができる。
【０２１６】
なお、本方法では、プログラムカウンタの一部情報のみを比較するため、上位ビットが異なる場合にも誤って一致判定する可能性がある。これを防ぐためには、例えば、分岐発生を検出することで、プログラムカウンタの値が想定外の範囲へ飛ばない場合にのみ、再生制御を実施することで、安価に状態制御装置を構成可能である。
【０２１７】
図２７は、同様に属性フィールドに特徴を持つ構成である。
【０２１８】
本例では、属性フィールドは、同期情報であるプログラムカウンタの全一致判定を行なうことを示す“ａｄｒｓ”属性と、“ａｄｒｓ”属性をもつシーン情報が同期一致後の同期化方法として、サイクル単位での比較継続を示す“ｔｉｍｅ”属性から構成される。
【０２１９】
この例においても図２６の場合と同様、起点となる同期情報の比較は、“ａｄｒｓ”属性をもつシーン情報に対して実施する。同期一致後は、一致したシーン情報の以降の“ｔｉｍｅ”属性をもつシーン情報を、各時刻サイクルにおいて、再生制御に使用する。
【０２２０】
なお、前記シナリオテーブル構成例と同様論理的な構成であり、物理的にこの構成である必要は無い。本論理構成を実現するハードウェアの構成例については、図３２を用いて後述する。
【０２２１】
なお、この“ｔｉｍｅ”属性手法の別応用例としては、各サイクル毎に次のシーン情報を再生するのではなく、特定のイベント発生毎に、次のシーン情報を再生する方法が考えられる。
【０２２２】
いずれにしても、小規模なハードウェアを用いて、シナリオテーブルを構成できる安価な方法である。
【０２２３】
図２８は、先に図６に示した一般化したシナリオテーブルＺＡ１０２において、制御情報は制御情報フィールドと、情報の種別を示す条件フィールドにより構成されることを特徴としている。本例では、条件フィールドとして、条件分岐に関するリスク情報（分岐リスク）を格納する使用例である。本論理構成を実現した状態制御方法の動作については、後述する。
【０２２４】
図２９，３０を用いて、マイクロプロセッサＺＡ１２０とシナリオ制御部ＺＡ１０１の、ハードウェア内部状態の遷移と、記録及び再生情報の内容及びタイミングについて説明する。
【０２２５】
図２９は、この説明例における命令プログラムであり、ＬＤ命令からＢＲ命令の命令列が繰り返される。なお本例では、ループ構造は条件分岐命令（ＢＲ）を用いて構成しており、また、ループ内部にも条件分岐を含む。
【０２２６】
図３０（ａ）は、命令プログラム（図２９）が、マイクロプロセッサＺＡ１２０において、時系列的に実行される際の各時刻サイクルにおける、パイプラインステージの動作タイミング例を示す。例えば、１０００番地のアドレスのＬＤ命令は、時刻ｔ２においては、パイプラインステージとしてＤＣの処理内容を実行中である。他方時刻面からは例えば、時刻ｔ３において、ＩＤステージつまり命令割当て中であるのは、１００３番地のＳＵＢ命令である。
【０２２７】
図３０（ｂ）は、マイクロプロセッサＺＡ１２０における、資源の内部状態を示している。例えば資源Ｒ１の列は、マイクロプロセッサＺＡ１２０のＩＤステージにおける、命令割当て状態を表している。例えば時刻ｔ２において、ＩＤステージのｉｓｓｕｅ＃０においてＬＤ命令の命令割当てが、ｉｓｓｕｅ＃１においては、ＡＤＤ命令の割当てが行われている。
【０２２８】
同様に、Ｒ３はＩＤステージにおけるプログラムカウンタの状態、Ｒ４はＩＤステージにおける命令発行数、Ｒ５はＤＣステージにおけるデータハザード発生状態、Ｒ６はＤＣステージにおけるメモリアクセス発生有無状態、Ｒ７はＤＣステージにおける分岐命令発生有無状態を表している。
【０２２９】
例えば命令発行数Ｒ４は、時刻ｔ２において、２命令発行状態を示している。このサイクルでは、ＬＤ命令とＡＤＤ命令の発行処理が行われている。
【０２３０】
メモリアクセス制御である資源Ｒ６の観点からは、メモリアクセスに関する処理が発生するサイクルは、ｔ２とｔ３のみである。
【０２３１】
同様に、分岐制御を行う資源Ｒ７においては、分岐処理が発生する可能性があるのは、ｔ７とｔ１となる。
【０２３２】
この例ではループ中においてデータハザードは発生しない。従って、本発明の状態制御装置を用いれば、ループ中に関しては、データハザード検出に関する制御回路を全て停止することができる。
【０２３３】
同様に、ＤＣステージのメモリアクセス制御が必要であるのは、時刻ｔ２及びｔ３のみである。その他の時刻は、定常的にメモリアクセスを停止し、さらに、メモリアクセス制御に関するデコードや制御論理自体の停止も、本状態制御装置により可能となる。
【０２３４】
図３０（ｃ）は、シナリオテーブルＺＡ１０２の記録内容を示している。Ｓ０からＳ８は、シナリオテーブルＺＡ１０２のそれぞれの組のシーン記録装置の内容を示している。
【０２３５】
例えば、シーン記録装置Ｓ０は、同期情報（Sync）としては“０”を、情報１（Info1）フィールドとしては命令発行数を示す“２”を記録している。
【０２３６】
ここで、本例では、同期情報であるプログラムカウンタの値（PC)を１サイクル遅延させる同期調整を記録制御装置ＺＡ１０３で行ったうえで、１サイクル後のマイクロプロセッサＺＡ１０２の情報と関連付けて記録している。
【０２３７】
この例では、シーンＳ５のみ、有効（valid）情報フィールドの値が、シーン情報が無効である事を示す“０”を記録している。
【０２３８】
この例は説明のために、繰り返し部分内においてループ末尾ではない条件付き実行命令が現れると、制御不具合回避用にシーン情報を無効化する実装例であるが、必ずしも分岐命令の無効化は必要ではない。
【０２３９】
なおシーンＳ８に着目すると、同期情報であるプログラムカウンタの値“９”に対応する情報として、次回のループ先頭情報を取得し記録していることが分かる。
【０２４０】
このように、ループ中においても、情報記録装置ＺＡ１０３により同期調整を行った上で、シナリオテーブルＺＡ１０２にラップアラウンド的に記録することで、ループ内部を途切れること無く、状態記録及び再生制御することができる。
【０２４１】
また本例では、シナリオテーブルＺＡ１０２の制御情報は、条件フィールドをも有する構成とする。この例では条件フィールドをリスク的（risky）情報フィールドとして使用する。リスク的情報の作用については後述する。
【０２４２】
図３０（ｄ）は、シナリオテーブルＺＡ１０２の各シーン情報の再生タイミングを示している。
【０２４３】
例えば時刻ｔ１において、マイクロプロセッサＺＡ１２０の同期情報（Sync）ＺＡ１１０が“０”を示すと、シナリオテーブルＺＡ１０２は、ＩＤステージの命令発行数情報（Info1）として“２”を出力する。
【０２４４】
出力された命令発行数情報値“２”は、情報再生装置ＺＡ１０５により、１サイクル遅延した上で、時刻ｔ２の先頭タイミングで即供給可能となる。
【０２４５】
先の情報記録装置ＺＡ１０３において、同期情報であるプログラムカウンタの値を遅延調整したことにより、図３０（ｂ）おける命令発行情報の様に、本来であれば同期情報であるプログラムカウンタが“１”になる時刻ｔ２で始めて得られる命令発行情報“２”を、事前のサイクルで得ることを可能とする。
【０２４６】
次にループ末尾に関する再生制御について説明する。
【０２４７】
この例ではループ末尾の命令が条件判定を伴う分岐命令である。従って、条件成立時には、ループ末尾の次命令はループ先頭のＬＤ命令になるが、条件不成立時にはループ後のＭＯＶ及びＡＤＤ命令を実行する。
【０２４８】
この条件不成立時に、シナリオテーブルＺＡ１０２の情報フィールド１に記録された、命令発行情報値“１”を使用すると、動作的に不整合が生じる。本来は、ＭＯＶとＡＤＤの２命令発行であるため、命令発行情報値は“２”でなければならない。
【０２４９】
この動作不整合を回避するのが、条件フィールドの使用例である。本例では、条件フィールドであるrisky情報は、ループ末尾のシーンＳ９においてのみ“１”となっている。
【０２５０】
本例においてマイクロプロセッサは、シナリオ制御部ＺＡ１０１から供給されるriskyビット情報が“１”である場合には、マイクロプロセッサの条件判定結果に基づき、シナリオ制御部ＺＡ１０１からの制御情報ＺＡ１１２を使用しない。
【０２５１】
従って本方式により、分岐条件が成立するループ中はとぎれなく状態制御を行い、ループ最終回後にループの次命令を処理する際には、シナリオ制御部ＺＡ１０１による制御を抑制し、安全に回路動作を行う事ができる。
【０２５２】
なお、条件フィールド方式を用いても回復できない例外的事象が発生する可能性がある場合は、再実行可能な割り込み・例外要求を発生させ、安全な動作条件下で再度実行させる構成を取ることも可能である。
【０２５３】
次に、図３１から図３２を用いて、シナリオ制御部ＺＡ１０１の、ハードウェア詳細構成実施例について説明する。
【０２５４】
図３１は、図１のシナリオ制御部ＺＡ１０１を詳細化した一実施例である。シナリオテーブルＺＡ１０２の論理的な構造は、図７に示した構造と同等である。以下、シナリオ制御部ＺＡ１０１の構成と動作の例について説明する。
【０２５５】
マイクロプロセッサＺＡ１２０から出力される、同期情報ＺＡ１１０と、状態情報ＺＡ２１０は、情報記録装置ＺＡ１０３に入力される。
【０２５６】
情報記録装置ＺＡ１０３は、同期情報ＺＡ１１０と状態情報ＺＡ２１０の情報内容に応じて、記録タイミング調整部ＺＦ１０３１にて、ステージに関するタイミング調整後、シナリオテーブルＺＡ１０２に加工された同期情報ＺＦ１１００、状態情報ＺＦ１１１０として、シナリオテーブルＺＡ１０２に対して出力される。なお、本例では示さないが、情報記録装置ＺＡ１０３は、タイミング調整以外に、後の情報再生供給が容易となるように、エンコードやデコード等の論理操作による情報加工をしても当然良い。
【０２５７】
シナリオテーブルＺＡ１０２は、複数組のシーン記憶装置ＺＦ１０２０を保有する。本例においては、１つのシーン記憶装置ＺＦ１０２０は、加工された同期情報ＺＦ１１００を記録する同期情報記憶装置ＺＦ１０２１と、加工された状態情報ＺＦ１１１０を記録する状態情報記憶装置ＺＦ１０２２〜ＺＦ１０２４と、それぞれのシーンの記録が有効であるかを示す情報を保持する有効情報記憶装置ＺＦ１０２５とにより構成される。本例では説明簡単化のため、同期情報と状態情報の組から構成されるシーン情報ＺＡ２１０を４組記憶できる実施例として構成している。即ち、マイクロプロセッサＺＡ１２０の４つの状態（シーン）を記憶し、制御することができる。
【０２５８】
情報記録装置ＺＡ１０３から出力される情報を、４組のシーン記憶装置ＺＦ１０２０のうち、いずれに記録するかは、本実施例では、ラウンドロビン型ポインタ制御部ＺＦ１０２６により制御される。ポインタ制御部ＺＦ１０２６は、４組のシーン記憶装置ＺＦ１０２０を順次記録対象として指し示す。なお、図中には図示していないが、記録要求と有効情報を用いた制御を行なう。また、本例ではシナリオテーブルＺＡ１０２に対する指示を行なっているが、構成により、情報記録装置ＺＡ１０３経由で、シナリオテーブルＺＡ１０２への指示を行なってももちろん良い。さらにポインタ制御部ＺＦ１０２６では簡単化のため、同期情報の重複記録が生じる構成となっている。当然ながら、一般的なキャッシュシステムのタグメモリ構成のように、同期情報についてもより詳細な記録制御を行なっても良いが、ここでは装置の簡易な実現のために、プライオリティエンコーダ構成により出力選択を行う（図３１では明示しない。）。
【０２５９】
次に、記録のタイミングであるが、記録制御装置ＺＡ１０４にて生成する記録要求信号ＺＦ１０４０により、シナリオテーブルＺＡ１０２に対する記録要求が発生次第、ポインタ制御部ＺＦ１０２６が指し示す、シーン記録装置ＺＦ１０２０への書き込みを行なう。なお、図中では説明簡単化のため、記録要求信号ＺＦ１０４０のタイミング調整用ＦＦは省略している。
【０２６０】
記録制御装置ＺＡ１０４では、記録要求信号ＺＦ１０４０を、記録条件判定部ＺＦ１０４１と、記録許可信号ＺＦ１０４２により生成する。記録許可信号ＺＦ１０４２は、例えば、マイクロプロセッサＺＡ１２０に設けられた制御レジスタから供給される信号であっても良い。当然ながら構成次第では省略可能である。
【０２６１】
記録条件判定部ＺＦ１０４１は後述するが、各種条件より、マイクロプロセッサＺＡ１２０の実行中における、該当サイクルが記録対象を満たしたかを判定し、条件を満たしていれば、条件成立信号ＺＦ１０４３を供給する。
【０２６２】
次に、シーン情報ＺＡ２１０の記録における有効化情報の記録について説明する。
【０２６３】
本例では、記録要求信号ＺＦ１０４０を元に、シーン記録装置ＺＦ１０２０が保有する情報が有効であるかを示す有効情報を、有効情報記憶装置ＺＦ１０２５へ記録する。有効情報の生成は、有効情報生成装置ＺＦ１０３２にて生成を行なう。本例では、記録制御装置ＺＡ１０４から出力される無効化要求信号ＺＦ１０４３が無効状態を示していなければ、記録要求信号ＺＦ１０４０の状態値を有効情報記憶装置ＺＦ１０２５へ出力する（冗長構成）。
【０２６４】
無効化要求信号ＺＦ１０４３により、有効情報記憶装置ＺＦ１０２５をシーン単位で記録制御を行なうことができるが、図中には示さないが、シナリオテーブルＺＡ１０２内の複数、あるいはすべての有効情報記憶装置ＺＦ１０２５の内容を無効化する制御も必要である（制御は単純であるため、図示しない。）。これは少なくともリセット時にすべてのシーン情報の無効化が必要なためである。
【０２６５】
さらに、マイクロプロセッサＺＡ１２０の動作状態に、例外的な状況が発生し、シナリオテーブルＺＡ１０２の内容に矛盾が生じた場合の破棄や、記録内容が再生に利用されない事が自明となった場合に、複数あるいはすべての有効情報を無効化（フラッシュ）することで、矛盾なくかつ効率よくシナリオ制御部による状態制御を行なうことができる。
【０２６６】
次に、情報再生時の動作について説明する。
【０２６７】
シナリオテーブルＺＡ１０２内の４組の同期情報比較装置ＺＦ１７２０は、マイクロプロセッサＺＡ１２０からの同期情報ＺＡ１１０と、４つの同期情報記憶装置ＺＦ１０２１からの同期情報とをそれぞれ比較し、比較信号ＺＦ１７２１を出力する。
【０２６８】
一方、信号ＺＦ１７２１を選択信号として、４つの状態情報記憶装置ＺＦ１０２２のうち、比較結果が一致した同期情報に相当する状態情報記憶装置からの出力をマルチプレクサＺＦ１７２２〜ＺＦ１７２４がそれぞれが選択し、これを加工前の制御信号群ＺＦ１１２０として、情報再生装置ＺＡ１０５へ出力する。
【０２６９】
同じく、４つの有効情報記憶装置ＺＦ１０２５からも、比較結果が一致した同期情報に相当する有効識別信号を、マルチプレクサＺＦ１７２５が選択し、これを選択後の有効信号ＺＦ１１２１として、情報再生装置ＺＡ１０５へ出力する。
【０２７０】
情報再生装置ＺＡ１０５は、シナリオテーブルＺＡ１０２から出力された加工前の制御信号群ＺＦ１１２０に対し、同じくシナリオテーブルＺＡ１０２から出力された加工前の制御信号群ＺＦ１１２０と、再生制御装置ＺＡ１０６からの再生要求信号ＺＦ１０６０とを用いて、有効性論理処理（ここではＡＮＤ演算）を行ない、得られた結果を、さらに任意のタイミング調整を行なった上で、制御信号ＺＡ１１２として、マイクロプロセッサＺＡ１２０へ出力する。
【０２７１】
再生制御装置ＺＡ１０６では、再生要求信号ＺＦ１０６０を、再生条件判定部ＺＦ１０６１と、再生許可信号ＺＦ１０６２により生成する。再生許可信号ＺＦ１０６２は、記録許可信号ＺＦ１０４２と同様に、例えば、マイクロプロセッサＺＡ１２０に設けられた制御レジスタから供給される信号であっても良い。当然ながら構成次第では省略可能である。再生条件判定部ＺＦ１０６１は、各種条件より、マイクロプロセッサＺＡ１２０の実行中における、該当サイクルが再生対象を満たしたかを判定し、条件を満たしていれば、条件成立信号を生成する。
【０２７２】
図３２は、図１のシナリオ制御部ＺＡ１０１を詳細化した別の一実施例である。シナリオテーブルＺＡ１０２の論理的な構造は、図２７に示した構造と同等である。但し、“ａｄｒｓ”属性に相当するシーン数は１つ、“ｔｉｍｅ”属性に相当するシーン数が３つのみの場合である。
【０２７３】
本構成では比較的小規模なハードウェアにより、実際のソフトウェア処理においても効果的な状態制御装置を構成することができる。
【０２７４】
本構成例では、シナリオテーブルＺＡ１０２内において、同期情報を個別に記録保持しないため、図３１の個別の同期情報記憶装置ＺＦ１０２１および同期情報比較装置ＺＦ１７２０が必要ではないため、ハードウェアを小規模に実現でき、かつ消費電力も少ない。
【０２７５】
シナリオテーブルＺＡ１０２内の同期情報記憶装置ＺＦ２０２１が、同期情報を代表して記録する。この同期情報記憶装置ＺＦ２０２１は、記録動作に関して、図３３の保持用プログラムカウンタＺＧ１１１に相当するものである。
【０２７６】
同様に、記録条件判定部ＺＦ２０４１は、図３３における状態比較部ＺＧ１２０と状態計数部ＺＧ１３０の条件判定機能を有するものである。従ってこの構成により、同期情報記憶装置ＺＦ２０２１の値が記録許可条件を満たすと、以降のサイクルにおいて、状態情報記憶装置ＺＦ１０２２〜ＺＦ１０２４及び、有効情報記憶装置ＺＦ１０２５へのシーン情報の記録を行なう。なお図中には明示していないが、本構成では、記録用ポインタ制御部ＺＦ２０２２が、ポインタの１周を検出した場合に、記録動作を完了する。
【０２７７】
再生動作についても同様に、同期情報記憶装置ＺＦ２０２１を元に、再生制御装置ＺＡ１０６において、再生許可判定が成立した後、再生用ポインタ制御部ＺＦ２０２３が順次、再生用のシーン情報を選択し、情報再生装置へ制御情報ＺＡ１１２を供給する。
【０２７８】
以上の構成により、小規模なハードウェア構成によるシナリオテーブルを構成する事ができる。
【０２７９】
以上、シナリオ制御部の構成例について示したが、本発明はこの実施例に限るものではない。例えば、シナリオテーブルについて、無効なシーンを検索し選択的に記録する方法や、全てのシーンの記録済みを検出して状態遷移する方法等、容易に拡張や応用を類推することができる。
【０２８０】
続いて、本発明の状態制御装置における状態情報の記録及び再生動作に関して、選択的な動作制御について図を用いて説明する。
【０２８１】
本発明を適用した状態制御装置について、最も容易な実施例では状態情報の記録及び再生制御を、各サイクルにて常に実施する構成が考えられる。つまり単純な例では、マイクロプロセッサＺＡ１２０に対してリセットが解除された後、常に、状態情報の記録及び再生動作を行なうものである。
【０２８２】
しかしながら、この方式では、繰り返し出現頻度が少ない命令列においても常に記録が行なわれてしまい、最悪の場合は常に記録が行なわれるが、再生には全く使用されず破棄され続ける状態が続くこととなる。これは消費電力を逆に増加させているだけであり、低消費電力化の観点からは好ましくない。
【０２８３】
また常時記録方式では、重要なシーン情報が記録装置からあふれ、次々と追い出される可能性が高いため、所定の目標を達成するためには、多数のシーン情報を記録可能な、大きな回路規模の記憶装置が必要となり、コストや消費電力の増加を招いてしまう。
【０２８４】
従って、消費電力の観点からは、記録回数を減らし、記録された状態を可能な限り多く再生使用することが望ましい。
【０２８５】
そこでシナリオ制御装置による記録や再生動作を、特定のプログラム箇所に対して、選択的に実施することが必要である。
【０２８６】
第一の手法は、図３４（ａ）に示すように、マイクロプロセッサの制御レジスタ（図の例ではＰＣＲ）に対して、記録や再生を許可する許可情報を設定することである。先の図３１における、記録許可信号ＺＦ１０４２や、再生許可信号ＺＦ１０６２は、このレジスタからの信号を利用する一例である。
【０２８７】
但しこの方法では、制御レジスタの設定をソフトウェア開発者が行なう必要があるため、ソフトウェア開発者の負担が大きく、また、開発されたソフトウェアが、マイクロプロセッサの実装形態に依存した、汎用性のないものとなってしまう欠点がある。仮にコンパイラ等により、制御レジスタへの設定が自動で行なえ、ソフトウェア開発者の負担を抑制できたとしても、やはり性能劣化に関する問題が生じる。繰り返し頻度の高いプログラム箇所に対して制御レジスタへの設定命令を挿入すると、その実行に不要な命令サイクルを必要とするため、処理性能を低下させてしまうためである。繰り返し頻度の高いプログラム箇所のはるか前ステップで制御レジスタへの設定命令を実行する方法も考えられるが、これでは先の記憶装置が溢れる課題を解決できない。繰り返し頻度の高いプログラム箇所に対して、適切に記録及び再生動作の開始及び完了を指示する方法が必要である。
【０２８８】
図３４（ｂ）は、記憶装置が溢れる課題に対するもので、特定の命令実行（図の例ではＳＥＴ＿ＲＥＣＯＲＤ命令）により、記録及び再生動作を適用するプログラム領域をサイクル単位で指定するものである。
【０２８９】
本例では、ＳＥＴ＿ＲＥＣＯＲＤ命令から１０サイクル間のプロセッサ状態を、本発明による状態変更装置による状態制御対象とするものである。当然ながら本方法からは、該当命令により、記録及び再生を開始するサイクル数をも指定する方法も同様に類推できる。例えば、５サイクル後に記録を開始し、さらに１５サイクル後までを記録可能区間として扱う等である。回路的には、単純なカウンタを中心として容易に実装が可能である。
【０２９０】
図３４（ｃ）は別の方法であり、記録及び再生を開始する同期情報状態（ここではプログラムカウンタの値）を指定するものである。
【０２９１】
図の例では、ＳＥＴ＿ＳＴＡＲＴ＿ＰＣ命令により、記録及び再生を開始するプログラムカウンタの値を指定する。図３４（ｂ）の方法とは異なり、設定命令開始から開始までを絶対サイクル数で厳密に指示する必要がないため、サイクルのずれに対して安全であり、かつ、ソフトウェア上も変更に対する耐性があり保守性を高めらることができる。また本方法は、設定命令の実行を、例えば、多重ループのはるか外側にて設定することが可能であるため、処理性能劣化の抑制にも有効である。なお当然ながら、記録及び再生の完了を、同様の方法で指定可能であることは容易に類推できる。
【０２９２】
図３４（ｄ）はさらに別の方法であり、設定命令（図の例ではＳＥＴ＿ＣＯＯＬ＿ＳＴＲＥＡＭ命令）の後、特定の条件成立時に、記録及び再生を始めるものである。
【０２９３】
図の例では特定の条件成立として、「プログラムカウンタのロード動作の検出」を一実施例として例示している。この例では、ＳＥＴ＿ＣＯＯＬ＿ＳＴＲＥＡＭ命令実行後、始めてのプログラムカウンタのロード動作は、「ＢＲ  ｎｅｇ，Ｌ＿ＩＮＮＥＲ」命令の実行により生じる。従って、Ｌ＿ＩＮＮＥＲラベルの命令箇所、つまりループの先頭を自動的に見つけ出す事ができる。これは極めて実効的かつ安価な、高負荷箇所の検出方法である。つまり、この方法によれば、複雑な分岐構造が無い多くの一般的なソフトウェアにおいて、最内ループを自動的に見つけることができるのである。ソフトウェア生産上も、図３４（ｃ）の方法と異なり、間接的も含め記録及び再生の開始または完了箇所を直接指定する必要のない、より汎用的な設定方法である。
【０２９４】
なお、図３５（ａ）には、図３４（ｄ）のＳＥＴ＿ＣＯＯＬ＿ＳＴＲＥＡＭ命令に相当する操作を、専用命令ではなく、汎用的な一般命令で行なう一実施例を示している。例えば、アドレスマッピングされた制御レジスタへの書き込み動作を起点として、ＳＥＴ＿ＣＯＯＬ＿ＳＴＲＥＡＭ命令の同等の動作を行なえる。図３４（ａ）〜（ｄ）のいずれの方法においても可能であることは容易に類推できる。
【０２９５】
図３５（ｂ）は、記録及び再生を開始および完了するかの判定イベントとして特定の命令発生を対象とする実施例である。例えば、分岐命令やループ専用命令自身や、高負荷箇所で現れる可能性の高い命令を対象とすることで効果的な遷移判定を行なうことができる。例えば図３５（ｂ）は、固定小数点積和命令（ＦＭＡＣ）の出現を判定条件として、記録及び再生を開始する。例えばこのような固定小数点積和命令は、信号処理等の高速演算箇所で現れる可能性が高いため、この命令が実行されれば、高負荷箇所であると判断することは、合理的である。
【０２９６】
次に、図３４（ａ）〜図３５（ｂ）で示した、ソフトウェアによる設定情報の記述を簡易化する方法について説明する。
【０２９７】
図３５（ｃ）は、コンパイラのコンパイルオプションにより、状態変更に関する許可制御の実施可否を指定する例である。図では、ソースファイル“ｋｅｒｎｅｌ．ｃｐｐ”に対して、状態変更に関する設定命令の挿入を実施する例である。コンパイラは、このオプション（ここでは-CS_ON）を指定された場合には、例えば、図３４（ａ）で示した状態変更を実施する設定命令を挿入する。これによりソフトウェア開発者は、ソースプログラムを変更することなく、コンパイルモジュール単位での状態制御の実施可否を選択することができ、ソフトウェアの生産性および汎用性を高めることができる。当然ながら、コンパイル時のオプションにレベルをつけることで、実施する状態変更制御のレベルを選択可能とすることもできる。
【０２９８】
図３５（ｄ）は、ソースプログラムへの指示文により、状態変更に関する許可制御の実施可否を指示する例である。この方法により、必ずしもアセンブラレベルのソフトウェアを直接記述すること無く、Ｃ言語等の高級言語の開発レベルにおいて、制御実施箇所を適切に指示することができる。図の例では、Ｃ言語のプラグマ指定により、ｆｏｒループを対象として、本発明による状態制御を実施する。コンパイラは、指定されたソフトウェア箇所に対して、性能劣化を最小限とする状態変更に関する許可制御の設定命令を挿入する。例えばループ構造を解析することで、図３４（ｄ）で示したように、対象とするループ箇所より以前のステップに対し設定命令を挿入し、処理性能の劣化を抑制することができる。
【０２９９】
次に図３３を用いて、ソフトウェアによる設定命令の先行実行無しに、記録及び再生動作を開始または完了させる方法を説明する。図３３は、自動的に高負荷状態を検出し、検出後自動発火して、記録及び再生動作を開始する最も効果的な方法例である。この方法によれば、ソフトウェア開発者の負担を最小にし、かつ安価、つまり消費電力を少なく、回路動作速度への影響を最小限に、かつ回路規模を小さく、所定の目標を実現できる。なお、以下の説明では、条件検出する対象として、プログラムカウンタ値を一実施例として取り扱っている。当然ながら、プログラムカウンタ以外の各種イベントや条件を対象とする構成が可能である。
【０３００】
まず、マイクロプロセッサＺＡ１２０における、プログラムカウンタＺＧ１０１は、プログラムカウンタを不連続に更新するためのＰＣロード信号ＺＧ１０２がアサートされた場合に、新たなプログラムカウンタ値ＺＧ１０３を読み込む動作を行なう。なお、プログラムの進行方向に向けた通常のインクリメント動作も図示しないが存在する。
【０３０１】
状態保持部ＺＧ１１０は、前回にＰＣロード信号ＺＧ１０２がアサートされた時のプログラムカウンタ値を、保持用プログラムカウンタＺＧ１１１に記録保持する。
【０３０２】
次に、新たにＰＣロード信号ＺＧ１０２がアサートされると、状態比較部ＺＧ１２０の状態比較器ＺＧ１２１が、プログラムカウンタＺＧ１０１の値と、保持用プログラムカウンタＺＧ１１１の値を比較し、カウンタ一致信号ＺＧ１２２をアサートする。
【０３０３】
さらに、比較操作を許可する比較許可信号ＺＧ１２３と、ＰＣロード信号ＺＧ１０２と、カウンタ一致信号ＺＧ１２２の論理和を、状態一致信号ＺＧ１２４として出力する。
【０３０４】
従って状態一致信号ＺＧ１２４は、比較許可条件化において、ＰＣロード発生時に、前回ＰＣと一致した場合に、アサートされる信号である。
【０３０５】
なお比較許可信号ＺＧ１２３は省略可能であり、一実施例としてマイクロプロセッサＺＡ１２０における制御レジスタのビット情報で構成しても良い。
【０３０６】
次に、状態係数部ＺＧ１３０内のカウンタＺＧ１３２は、状態一致信号ＺＧ１２４のアサートにより、カウンタＺＧ１３２の値をインクリメントする。
【０３０７】
計数比較器ＺＧ１３４は、カウンタＺＧ１３２と計数条件指定レジスタＺＧ１３３の値を比較し、一致していれば計数許可信号ＺＧ１３５との論理和を、条件成立信号ＺＧ１３６として出力する。
【０３０８】
当然ながら構成方法により、計数比較の変わりに、初期設定可能なダウンカウンタにより実現しても構わない。
【０３０９】
以上の様に本例では同一ＰＣのロードが指定回数繰り返されると、条件成立信号ＺＧ１３６がアサートされる。この条件成立信号ＺＧ１３６を、例えば図３１の記録条件判定部ＺＦ１０４１の出力信号とする事で、任意の指定回数のＰＣロード条件成立時にのみ、記録及び再生動作を実施することができる。
【０３１０】
この方法は、ソフトウェアの高頻度な繰り返し箇所である高負荷箇所を検出するのに、非常に有効である。
【０３１１】
例えば、ループ回数が１０回以上の分岐制御構造を、制御対象とすることができる。
【０３１２】
また、例えばループの１週めを素通りさせ、２周目を記録することを制御できる。これは、プリディケート機能などの条件実行機能による、ソフトウェアパイプライン構造のプロローグ除去記述に対しても、回路動作的に有効な情報を記録することができる。
【０３１３】
なお、図３４（ｄ）は汎用手法であるため、図３３と組み合わせることは可能である。
【０３１４】
図３４（ｄ）により、プログラムカウンタを用い、記録動作及び再生動作の開始及び完了方法について説明したが、プログラムカウンタ以外の内部状態を使用することもできる。
【０３１５】
他にも、マイクロプロセッサＺＡ１２０において実行されるソフトウェアを識別するプログラムＩＤや、特権レベルの変更とその値を起点として、記録動作及び再生動作の開始及び完了判定を行なっても良い。
【０３１６】
これにより、例えば特定のプログラムＩＤのみを、本発明による状態制御対象とすることができ、性能上及びソフトウェア設計の安全上の両面から有効である。
【０３１７】
また、ループ構造を形成する専用のループ命令を有するマイクロプロセッサであれば、ループの周回値を直接遷移対象としても良い。
【０３１８】
他にも、データメモリへのアクセスアドレスや、アクセス間隔を判定対象とし、動作状態の遷移条件とすることも可能である。
【０３１９】
別の実施例では、特定のイベント検出を判定対象としても良い。例えば、ＤＭＡ完了割り込みがＮ回成立したことを動作状態の遷移条件としても良い。これらより、プログラムが高負荷箇所に突入したことを予測することも可能である。
【０３２０】
さらに以下では、マイクロプロセッサ以外への適用についても説明する。。
【０３２１】
例えば、高位合成手法に限らないが、ソフトウェア処理をハードウェア構造に静的に割り当てハードウェア化する方式や、ソフトウェアマッピング情報により動的再構成可能なハードウェアでソフトウェア処理を実施する方法がある。いずれの方法も、従来のマイクロプロセッサがソフトウェア実行の流れを制御するために使用した基本要素であるプログラムカウンタに相当する状態資源は存在する。例えば、シーケンサにおけるステート値や単純なカウンタである。ハードウェアの制御状態は、このステート値やカウンタにより、内部状態がほぼ一意的に決定され時々刻々と実行制御されるため、シナリオ制御装置の同期情報として、ステート値やカウンタの値を用いることができる。
【０３２２】
制御対象とする回路構造は、マイクロプロセッサ以外のいずれの方式においても、マイクロプロセッサと同様に適用制御することができる。
【０３２３】
さらに本発明の適用範囲は、単一のマイクロプロセッサには留まらない。
【０３２４】
例えば、複数のプロセッサからなる、並列プロセッサ構成についても適用可能である。例えば、複数のプロセッサのＰＣ値やプログラムＩＤや動作モード等を同期情報とし、その状態における有効な内部状態を記録し、再び同期状態が発生すれば情報再生することが可能である。例えば、結果として外部メモリアクセスが少なかったプログラムＩＤの組合わせを記録し、以降の条件一致時にメモリ制御部を停止させ停電力化することもできる。
【０３２５】
なお、いずれの判定条件も書き換え可能にすることで、ソフトウェア中の様々な箇所に適応することができる。一般に、同一のプログラム内においても、ソフトウェア箇所毎に、繰り返し等の高負荷箇所の特性は、１種類ではないため書き換え可能にして制御することは、性能向上において有効である。書き換え可能対象とする条件は上述の各種条件であり、例えば、図３３の例では、計数条件指定レジスタＺＧ１３３である。他にも、図３５（ｂ）の例であれば、判定対象とする命令の種類である。
【０３２６】
このようにソフトウェア処理の箇所、種類に応じて遷移条件を設定することで、より高い頻度で本発明による状態制御を実施することができる。
【０３２７】
先に説明したプログラムカウンタ値による動作状態の遷移手法は、記録動作及び再生動作のいずれの開始及び完了にも適用可能である。
【０３２８】
なお、特に再生動作の完了方法として検出する方法としては、同期情報ＺＡ１１０が、予め設定したプログラムカウンタの範囲外の値になっていることを検出対象とする方法がある。これにより、例えば、プログラムカウンタのロードを起点としてプログラムカウンタの値は、所定の区間の範囲外であることを検出して再生動作を抑制することができる。この方法により、シナリオ制御部ＺＡ１０１が再生制御対象とする対象ループが実行されなくなったことを検出し、再生動作を抑制し例えば消費電力の削減を図ることができる。
【０３２９】
さらに別の方法として、再生動作時における、同期情報ＺＡ１１０と、シナリオテーブルＺＡ１０２の同期情報との比較が一致しない状態である再生同期ミスを検出した回数、または同期ミスの間隔を再生完了条件とする方法がある。これにより例えば、連続的にＮ回の再生同期ミスが発生した場合に、再生動作を抑制することができる。
【０３３０】
例えば、シナリオ制御部ＺＡ１０１が制御対象として想定するソフトウェアプログラムにおいて、ループ内の１周あたりのサイクルが１０サイクルである場合、かつ、シナリオ制御部ＺＡ１０１のシーン記録数が１０シーンである場合について説明する。
【０３３１】
この場合、連続的に１０回の再生同期ミスを検出した場合は、ほぼ高い可能性で既にループの処理が完了し、ループ箇所とは別のソフトウェア箇所を実行していると言える。従って例えばこの場合には、連続的に１０回の再生同期ミスを検出し、再生動作を抑制すれば、効果的に消費電力の削減を行なえる。
【０３３２】
次に、図３６を用いて、マイクロプロセッサＺＡ１２０からの状態信号ＺＡ１１１をシナリオ制御部ＺＡ１０１へ記録する構成のうち、サイクル単位における選択的な記録方法について説明する。
【０３３３】
以下まず、条件実行命令に関する説明を行なう。
【０３３４】
一般にマイクロプロセッサでは、条件実行命令やプリディケートと呼ばれる条件指定付きの命令実行機能が存在する。特に、近年のパイプライン段数の増加によるペナルティ増加や、命令実行並列度の高いプロセッサでは、条件実行機能が重要である。図３７（ＺＲ６）に、プリディケート方式による命令の条件実行化例について示す。図では、“ｃ０”が成立している場合のみ、ＳＵＢ命令やＣＭＰ命令が有効となる。
【０３３５】
図３６（ａ）は、マイクロプロセッサＺＡ１２０における、条件実行命令に関する制御を行なう構成図である。
【０３３６】
ＺＦ３０１は、該当命令実行における条件成立を判定する条件判定手段である。
【０３３７】
ＺＦ３０２は、該当命令の内容を解読し制御信号を生成するデコーダである。
【０３３８】
この構成では、各機能群を制御する制御信号ＺＦ３１２は、条件判定手段ＺＦ３０１により生成された条件判定信号ＺＦ３１１と、デコーダＺＦ３０２において命令ＺＦ３１０のデコードと関連制御信号により生成した、条件反映前制御信号ＺＦ３１３の論理演算（ここではＡＮＤ演算）により生成している。
【０３３９】
この場合、マイクロプロセッサＺＡ１２０からシナリオ制御部ＺＡ１０１に対しては、同期情報ＺＡ１１０に対応する状態情報ＺＡ１１１として、条件反映後の制御信号ＺＦ３１２ではなく、条件反映前の制御信号であるＺＦ３１３を出力する必要がある。
【０３４０】
これは、シナリオ制御部ＺＡ１０１への情報記録時に、マイクロプロセッサＺＡ１２０における命令実行時の条件判定が偽である場合、この情報を記録してしまうと、以降の再生時に制御信号が常に無効であるとして動作するため、不具合動作を誘発する。例えば具体的には、ループの１周目でのみ条件判定で無効化されるメモリアクセス命令に対して考えると、ループの１周目の単純なメモリアクセス制御信号ＺＦ３１２を記録してしまうと、これに基づくシナリオ制御部ＺＡ１０１のメモリアクセス制御への再生制御により、ループの２周目以降では常にメモリアクセスが無いとして停止制御をおこなってしまうためである。
【０３４１】
次に図３６（ｂ）は、マイクロプロセッサＺＡ１２０における、条件実行命令に関する制御を行なう別の構成図である。
【０３４２】
この構成では、先の図３６（ａ）の場合と異なり、条件判定手段ＺＦ３０１とデコーダＺＦ３０２を直列に配置するため、条件判定前の制御信号ＺＦ３１３に相当する信号が得られない。しかしながら、条件判定後の制御信号ＺＦ３１２を、シナリオ制御部ＺＡ１０１へ供給する状態信号ＺＡ１１１として使用すると、先に述べた誤動作の問題が生じる。そこでこの構成における誤動作を回避する一手段として、無効化信号により補正する。
【０３４３】
図に示すように、制御信号ＺＦ３１２は誤った情報となる可能性があるため、マイクロプロセッサＺＡ１２０から出力する状態信号ＺＡ１１１に危険性が生じることを無効化することを、無効化信号ＺＦ３１４をアサートしシナリオ制御部ＺＡ１２０に供給することで、この課題に対処する。
【０３４４】
この無効化信号ＺＦ３１４を、例えば図ＺＦ１の例であれば、無効化要求信号ＺＦ１０４３に接続することで、該当するシーン情報を無効化し、誤って再生制御に使用される事を防ぐ事ができる。
【０３４５】
本発明の主旨からは、図３６（ａ）の構成を取れることが望ましいが、特に近年の論理合成を用いた回路設計手法では図３６（ａ）の構造が必ずしも最適化され得られるとは限らない。従って、該当サイクルにおいて積極的な停止等の状態制御を実現できなくなるが、回路の安全動作のためには、図３６（ｂ）の構成も依然有効である。
【０３４６】
なお、分岐命令等のフロー制御命令に関する扱いについては、先に説明したシナリオテーブルの条件フィールドの機能を用いる事が有効である。
【０３４７】
この無効化信号ＺＦ３１４は、条件判定以外の場合においても有効である。
【０３４８】
例えばマイクロプロセッサにおいて、まれに生じる例外的状態、たとえば命令フェッチ動作において、所定の命令パケットが揃わない時に発生する命令アライメントミス等が生じた場合にも、この無効化信号をアサートする事で、該当サイクルのプロセッサ状態を定常的なシーン状態ではないとして記録を抑制する事ができる。
【０３４９】
さらに、無効化信号ＺＦ３１４は、命令やプロセッサ状態によりアサートしても良い。
【０３５０】
例えば、記録する価値、優先度が低い状態が発生しているサイクルでは、無効化信号をアサートし、シナリオテーブルＺＡ１０２への記録を抑制し、シナリオテーブＺＡ１０２ル容量の有効活用、及び制御動作の抑制を図る事が出来る。
【０３５１】
例としては、命令の種別として、単純な転送（ＭＯＶ）命令時は無効化信号ＺＦ３１４により記録を抑制し、稼動範囲の大きいメモリアクセス命令や積和演算命令を優先的に記録する。
【０３５２】
他にも、命令発行数が最大の場合の発行数記録は効率が悪いため、この場合に記録を抑制する例等が実現できる。
【０３５３】
さらに別の方法としては、マイクロプロセッサＺＡ１２０の別の内部状態を判定して無効化制御を行なう事も有効である。
【０３５４】
たとえばマイクロプロセッサＺＡ１２０の内部状態として、それぞれのマイクロプロセッサＺＡ１２０において実行されるそれぞれのソフトウェアプログラムに割り当てられるプログラムＩＤを元に条件的制御を行なっても良い。
【０３５５】
近年のマイクロプロセッサは、複数のソフトウェアプログラムを時々刻々と切り替えながら実行する事ができる。
【０３５６】
プログラムＩＤを元に、無効化制御を行なう事で、例えば時分割で短い単位で並行的に実行されるプログラム群に対して、特定のプログラムＩＤを持つプログラムのみを、選択的に本発明による状態制御の対象とする事ができる。
【０３５７】
なおシナリオ制御部ＺＡ１０１は、無効化信号ＺＦ３１４ではなく、複数のサイクルに渡る状態を、シナリオ制御部ＺＡ１０１内で判定し、無効化要求信号ＺＦ１０４３を生成しても良い。
【０３５８】
例えば本発明の状態制御装置を、低電力制御に使用する場合であるが、低電力制御はサイクル的に連続して行なえる事が最も望ましい。
【０３５９】
しかしながら、低電力制御が１サイクルおきに発生する場合は、停止制御を行なったとしても、回路の活性化が毎サイクル発生する事となる。
【０３６０】
その場合にも低電力制御を行なう事で、電力上の効果はあるが、このケースを検出し、低電力制御を抑制する事も可能である。
【０３６１】
具体的な方法としては、３サイクルにまたがる状態観測を行ない、低電力抑制が「可能、不可能、可能」の状態が発生した場合は、先頭サイクルのシーン情報の、有効情報をネゲートする。
【０３６２】
この様に、本発明では、過去に記録したシーン情報へ、バックアノテーション（後方反映）する事も可能であり実効的に有効である。
【０３６３】
次に、図３８のフローチャートを用いて、本実施例におけるシナリオ制御部ＺＡ１０１について、特に記録制御装置ＺＡ１０４の動作手順について説明する。
【０３６４】
条件判定ＺＨ１０２において、起点となる条件が発生することを判定する。図３３の例では、プログラムカウンタのロード発生に相当する。
【０３６５】
条件判定ＺＨ１０３では、前回記録した起点条件と一致するかを判定する。例えば、前回のプログラムカウンタと一致しているかを比較し、一致しなければ、処理ＺＨ１０４において、現在のプログラムカウンタを次回比較用として記録する。
【０３６６】
条件判定ＺＨ１０５では、起点成立が、固定回数あるいは任意に設定可能な回数発生したかを比較する。
【０３６７】
なお、ＺＨ１０２、ＺＨ１０３、ＺＨ１０４、ＺＨ１０５は、常時記録を行なう方式や、明示的に記録開始を指示する方式では、実施構成により省略可能である。
【０３６８】
条件判定ＺＨ１０７では、特定の記録完了条件を満たしたかを判定する。例えば明示的な記録個数の指定等である。
【０３６９】
さらに、シナリオテーブルＺＡ１０２の容量が全て記録された状態かを、条件判定ＺＨ１０８において判定し、記録状態を完了する。例えば、シナリオテーブルＺＡ１０２の記録可能シーン数が４である場合でも、対象となる繰り返しソフトウェア箇所が６サイクルであれば、６サイクル中４サイクルは制御を適用し、制御無しの場合と比べると性能向上が可能である。必ずしもループ構造などの繰り返し部の全てを記録を、再生の前提条件にする必要は無い。また、例えば割り込み発生や例外的条件発生等により、記録状態を継続する事が無駄であるかを判定し、判定が成立すれば、実施例の構成方法に応じて記録内容の全てを破棄する（ＺＨ１０９）。
【０３７０】
条件判定ＺＨ１１０では、現在のマイクロプロセッサＺＡ１２０の状態を記録すべきかを判定比較する。例えば、状態の再生しても価値が無い場合や、再生に危険性がある場合等には該当サイクルを記録対象から除外する。
【０３７１】
条件判定ＺＨ１１１では、起点イベントが発生したかを判定する。例えば本例では、プログラムカウンタの再ロードが生じたかを判定する。
【０３７２】
起点イベントが発生した場合は、さらに条件判定ＺＨ１１２において、今回発生イベントが起点条件と同じであるかを判定する。
【０３７３】
起点イベントと同じである場合は、ループの繰り返しを１周したことに相当するため、記録動作を完了し再生動作へ遷移する。
【０３７４】
なお、起点イベントが起点条件と同一でなくても、直ちに記録動作を完了させる必要は無い。例えば、起点イベントがプログラムカウンタのロードである場合、分岐命令による起点イベント発生であれば、必ずしもループ構造の外側への分岐発生とは限らないためである。
【０３７５】
ループの外側への分岐であった場合、記録内容が再生に使用されない可能性は高くなるが、動作的に不具合を生じるものではない。動作的に不具合を生じる可能性のある例外的動作は、分岐判定ＺＨ１０９にて述べた通りある。
【０３７６】
なお、本例では、起点イベントの分岐条件と同一条件でない分岐は、ループ内部への分岐である可能性が高い。何故ならば、条件判定ＺＨ１０５までにおいて、ループ外部への飛び出しが無かった事が保証されているからである。
【０３７７】
たとえば繰り返し構造の中に、条件的分岐を含むことも可能となる。
【０３７８】
本例では、記録状態と再生状態を分離し、記録完了後に再生状態への遷移を想定しているが、当然ながら記録と再生を同時に実施する方法も構成できる。
【０３７９】
なお、条件判定ＺＨ１０４の起点条件保存を複数の条件を保存可能とし、条件判定ＺＨ１０３にて複数の条件との比較を行なえば、より複雑な制御構造についても、本状態制御装置による状態制御対象とする事ができる。
【０３８０】
例えばループ中にループ内への分岐が多用される場合や、単純なループ構造ではないが分岐の多用により制御変更が入り乱れ、結果としてある命令箇所が頻度高く実行される場合をも対象とできる。
【０３８１】
（第２の実施形態）
図３９は本発明の第２の実施形態に係るマイクロプロセッサにおける状態制御装置の構成による実施例の図である。
【０３８２】
シナリオ制御部ＺＡ１０１の構成は、第１の実施例で説明した内容と同等である。
【０３８３】
第１の実施例では、情報処理装置の状態変更の適用として、消費電力の削減を主に説明したが、ここでは処理性能の向上策を中心に説明する。
【０３８４】
図３９は、本発明のシナリオ制御部ＺＡ１０１を用いて、マイクロプロセッサＺＡ１２０を制御する構成例である。
【０３８５】
マイクロプロセッサＺＡ１２０は、命令レジスタＺＪ１０１からの命令ＺＪ１０２を、メモリアクセスに関する制御部ＺＪ１０３が解読し、制御信号ＺＪ１０４により、データメモリＺＪ１０５へのロードまたはストアアクセスを行なう。
【０３８６】
ここでシナリオ制御部ＺＡ１０１は、マイクロプロセッサＺＡ１２０からの同期情報ＺＡ１１０の内容に応じて、制御信号ＺＡ１１２を出力する。なお、同期情報ＺＡ１１０はここではプログラムカウンタ値とする。
【０３８７】
制御信号ＺＡ１１２は、状態変更制御手段ＺＡ１０７を構成するプリロード制御装置ＺＪ１０６に供給される。
【０３８８】
プリロード制御装置ＺＪ１０６は、制御信号ＺＡ１１２の内容に従い、メモリ制御部ＺＪ１０３に対し、プリロード要求ＺＪ１０７を出力する。
【０３８９】
メモリ制御部ＺＪ１０３は、プリロード要求ＺＪ１０７を受け付け次第、データメモリＺＪ１０５へのデータのロード動作に関する実行制御を実施する。
【０３９０】
図４０は本発明の第２の実施形態に係るマイクロプロセッサにおける状態制御装置の動作を示すタイミング図である。
【０３９１】
図４０（１）は、各命令別の実行タイミングを表している。例えば本例では、Ｎ番目の命令であるＬＤ命令が開始されるのは、時刻ｔ２であり、メモリアクセスが行なわれるのは、時刻ｔ５である事を示す。
【０３９２】
図４０（２）は、シナリオ制御部における同期情報と再生用制御情報の動作タイミング例である。例では、ＬＤ命令に関する指示をＮ−２の同期情報に関連づけ、シーン情報として記録している。従って、マイクロプロセッサＺＡ１２０の同期状態ＺＡ１１０が、Ｎ−２の状態になった時刻ｔ１において、制御情報ＺＡ１１２として、ＬＤ命令に関する情報を出力する。
【０３９３】
図４０（３）は、マイクロプロセッサＺＡ１２０における制御状態のタイミング図を示している。シナリオ制御部ＺＡ１０１から、時刻ｔ１に出力されたＬＤ命令に関する制御信号は、時刻ｔ１においてプリロード制御部ＺＪ１０６で受け取られる。メモリ制御部ＺＪ１０３は、プリロード制御部ＺＪ１０６からのプリロード要求により、時刻ｔ２からメモリアクセスを開始し、本例では、時刻ｔ４にメモリアクセスが完了する。たとえばこの事前のメモリアクセス機構を用いて、データキャッシュメモリを先行的に充填することができる。この例では、本来のＬＤ命令によるメモリアクセスが始まる時刻ｔ５より、３サイクル前の時刻ｔ２において先行的にメモリアクセスを開始することができる。さらに、時刻ｔ５では、該当ＬＤ命令によるメモリアクセスが実行されるが、この時点でデータの先行充填が完了しているため、ＬＤ命令による充填ミスペナルティは発生せず、性能が劣化しない。当然ながら、アクセスするアドレス増分を別途あらかじめ計算しておくことも可能であるため、より早いサイクルにメモリアクセス要求を行い、性能向上させることも容易である。
【０３９４】
以上のように本発明の状態変更方法を用いることで、情報処理装置における、先行的な状態変更制御が可能となり、処理性能向上を実現することができる。
【０３９５】
図４１は、本発明の第２の実施形態に係るマイクロプロセッサにおける状態制御装置の構成による別の実施例の図である。
【０３９６】
図４１において、分岐制御部ＺＪ３０５は、分岐プリフェッチ制御部ＺＪ３０６からのプリフェッチ要求ＺＪ３０７により、先行的に分岐先命令のプリフェッチを実施することができる。分岐プリフェッチ制御部ＺＪ３０６は、図４０と同様に、シナリオ制御部ＺＡ１０１からの制御情報ＺＡ１１２を元にした制御が実施される。
【０３９７】
本例においても、該当する分岐命令の実行以前に、分岐先命令を取得完了することができ、小規模なハードウェアを用いても、ソフトウェア生産性を落とすことなく、処理性能を向上することができる。
【０３９８】
以上、第２の実施形態において、データメモリアクセスと分岐先命令フェッチに関する先行動作について説明した。しかしながら、本内容が、上記例以外にも適用できるのは明らかである。
【０３９９】
本発明は、情報処理装置一般的に、時々刻々と先行的かつ選択的な情報供給を行ない、状態変更を行ない性能向上を実現するものである。
【０４００】
従って、プロセッサ自体の状態変更や、動的再構成論理の状態変更や、周辺拡張エンジンの駆動などが、類推可能である。
【図面の簡単な説明】
【０４０１】
【図１】本発明の第１の実施形態に係るマイクロプロセッサの状態制御装置の構成を示すブロック図である。
【図２】図１に示したマイクロプロセッサとシナリオ制御部による情報記録に間する動作概念を示す図である。
【図３】図１に示したマイクロプロセッサとシナリオ制御部による動作を説明するためのタイミング図である。
【図４】本発明の第1の実施形態の状態制御装置を備えたマイクロプロセッサにおいて、シナリオ制御部によりマイクロプロセッサの状態制御を行う動作概念について説明するための図である。
【図５】シナリオテーブルの論理的な構成例を示す図である。
【図６】シナリオテーブルの論理的な構成例を示す図である。
【図７】シナリオテーブルの論理的な構成例を示す図である。
【図８】マイクロプロセッサから得られる同期情報とシナリオ制御部による制御情報とのタイミング関係について説明するための図である。
【図９】マイクロプロセッサから得られる同期情報とシナリオ制御部による制御情報とのタイミング関係について説明するための図である。
【図１０】マイクロプロセッサから得られる同期情報とシナリオ制御部による制御情報とのタイミング関係について説明するための図である。
【図１１】シナリオ制御部からの制御情報の供給と、マイクロプロセッサにおける詳細動作タイミングの例を示す図である。
【図１２】マイクロプロセッサにおける、シーン情報を、パイプラインステージ間のタイミング調整を行ない、記録及び再生する動作のタイミング図である。
【図１３】シナリオ制御装置において、シーン情報の記録を無効化する機構を示す図である。
【図１４】シナリオ制御装置において、シーン情報の再生を、投機的、条件的に行なうことを実現するタイミング図である。
【図１５】シナリオ制御装置において、既に記録済みのシーン情報に対して、情報を再修正して記録すること（バックアノテーション）を実現するタイミング図である。
【図１６】シナリオ制御装置において、既に記録済みのシーン情報を元に、情報を代表させる集約を行なうタイミング図である。
【図１７】第１の実施形態で想定するマイクロプロセッサのパイプラインステージと、シナリオ制御部の概略構成を示す図である。
【図１８】本発明の状態制御装置による、シナリオ制御部と、マイクロプロセッサの情報供給及び制御方式に関連する俯瞰構成例を示す図である。
【図１９】マイクロプロセッサにおけるＩＤステージの命令発行パターンおよび各時刻における命令発行パターンを示す図である。
【図２０】図１９のマイクロプロセッサについて、命令発行及びデコード部に関して、シナリオ制御部と併せて示した図である。
【図２１】第1の実施形態の状態制御装置を備えたマイクロプロセッサに係り、分岐制御及び、データメモリアクセスに関するアドレス計算に対する、状態制御の例を示す図である。
【図２２】第1の実施形態の状態制御装置を備えたマイクロプロセッサに係り、データハザード制御及び、データフォワーディング制御に対する、状態制御の例を示す図である。
【図２３】第1の実施形態の状態制御装置を備えたマイクロプロセッサに係り、データフォワーディングのデータ流制御に対する、状態制御の例を示す図である。
【図２４】第1の実施形態の状態制御装置を備えたマイクロプロセッサに係り、データメモリアクセスに対する、状態制御の例を示す図である。
【図２５Ａ】第1の実施形態の状態制御装置を備えたマイクロプロセッサに係り、デフォルト・経路選択に対する、状態制御の例を示す図である。
【図２５Ｂ】第1の実施形態の状態制御装置を備えたマイクロプロセッサに係り、演算処理局所化のための、状態制御の例を示す図である。
【図２６】シナリオテーブルの論理的な構成例を示す図である。
【図２７】シナリオテーブルの論理的な構成例を示す図である。
【図２８】シナリオテーブルの論理的な構成例を示す図である。
【図２９】マイクロプロセッサとシナリオ制御部の、ハードウェア内部状態の遷移と、記録及び再生情報の内容及びタイミングについて説明する例における命令プログラムを示す図である。
【図３０】図２９に示した命令プログラムがマイクロプロセッサにおいて時系列的に実行される際の各時刻サイクルにおける動作タイミング例を示す図である。
【図３１】図１のシナリオ制御部を詳細化した一例を示す図である。
【図３２】図１のシナリオ制御部を詳細化した別の一例を示す図である。
【図３３】自動的に高負荷状態を検出し、検出後自動発火して、記録及び再生動作を開始する最も効果的な方法例を示す。
【図３４】シナリオ制御装置による記録や再生動作を、特定のプログラム箇所に対して、選択的に実施する手法を説明するための図である。
【図３５】（ａ）は、図３４（ｄ）のＳＥＴ＿ＣＯＯＬ＿ＳＴＲＥＡＭ命令に相当する操作を、専用命令ではなく、汎用的な一般命令で行なう一例を示す。（ｂ）は、記録及び再生を開始および完了するかの判定イベントとして特定の命令発生を対象とする例を示す。（ｃ）は、コンパイラのコンパイルオプションにより、状態変更に関する許可制御の実施可否を指定する例を示す。（ｄ）は、ソースプログラムへの指示文により、状態変更に関する許可制御の実施可否を指示する例を示す。
【図３６】（ａ）は、マイクロプロセッサにおける、条件実行命令に関する制御を行なう構成図である。（ｂ）は、マイクロプロセッサにおける、条件実行命令に関する制御を行なう別の構成図である。
【図３７】プリディケート方式による命令の条件実行化例を示す図である。
【図３８】第１の実施形態におけるシナリオ制御部について、特に記録制御装置の動作手順を説明するためのフローチャートである。
【図３９】本発明の第２の実施形態に係るマイクロプロセッサにおける状態制御装置の構成例を示す図である。
【図４０】第２の実施形態に係るマイクロプロセッサにおける状態制御装置の動作を示すタイミング図である。
【図４１】第２の実施形態に係るマイクロプロセッサにおける状態制御装置の構成による別の例を示す図である。
【図４２】ループ処理に関するアセンブラプログラム例を示す。
【図４３】ループ処理に関するアセンブラプログラム例を示す。
【符号の説明】
【０４０２】
ＺＡ１０１  シナリオ制御装置
ＺＡ１０２  シナリオテーブル
ＺＡ１０３  情報記録装置
ＺＡ１０４  記録制御装置
ＺＡ１０５  情報再生装置
ＺＡ１０６  再生制御装置
ＺＡ１０７  状態変更制御手段
ＺＡ１１０  同期情報
ＺＡ１１１  状態情報
ＺＡ１１２  制御情報
ＺＡ１２０  マイクロプロセッサ
ＺＡ２１０  シーン情報
【図１】
0004784912.tif 000002
【図２】
0004784912.tif 000003
【図３】
0004784912.tif 000004
【図４】
0004784912.tif 000005
【図５】
0004784912.tif 000006
【図６】
0004784912.tif 000007
【図７】
0004784912.tif 000008
【図８】
0004784912.tif 000009
【図９】
0004784912.tif 000010
【図１０】
0004784912.tif 000011
【図１１】
0004784912.tif 000012
【図１２】
0004784912.tif 000013
【図１３】
0004784912.tif 000014
【図１４】
0004784912.tif 000015
【図１５】
0004784912.tif 000016
【図１６】
0004784912.tif 000017
【図１７】
0004784912.tif 000018
【図１８】
0004784912.tif 000019
【図１９】
0004784912.tif 000020
【図２０】
0004784912.tif 000021
【図２１】
0004784912.tif 000022
【図２２】
0004784912.tif 000023
【図２３】
0004784912.tif 000024
【図２４】
0004784912.tif 000025
【図２５Ａ】
0004784912.tif 000026
【図２５Ｂ】
0004784912.tif 000027
【図２６】
0004784912.tif 000028
【図２７】
0004784912.tif 000029
【図２８】
0004784912.tif 000030
【図２９】
0004784912.tif 000031
【図３０】
0004784912.tif 000032
【図３１】
0004784912.tif 000033
【図３２】
0004784912.tif 000034
【図３３】
0004784912.tif 000035
【図３４】
0004784912.tif 000036
【図３５】
0004784912.tif 000037
【図３６】
0004784912.tif 000038
【図３７】
0004784912.tif 000039
【図３８】
0004784912.tif 000040
【図３９】
0004784912.tif 000041
【図４０】
0004784912.tif 000042
【図４１】
0004784912.tif 000043
【図４２】
0004784912.tif 000044
【図４３】
0004784912.tif 000045