(57)【要約】【課題】ループ処理実行中におけるループ外の命令に対する無駄な命令フェッチを抑制する。【解決手段】情報処理装置１は、命令フェッチ部１１、命令バッファ１２、命令実行部１３、及び命令フェッチ制御部１８を有する。命令フェッチ部１１は、命令メモリ１０に対してフェッチアドレスを供給する。命令バッファ１２は、フェッチアドレスで指定されるアドレスから読み出された命令を格納する。命令実行部１３は、命令バッファ１２から供給される命令をデコードして実行する。そして、命令フェッチ制御部１８は、命令実行部１３がループ処理を実行している間において、フェッチアドレスが第１のアドレスＬＮＦＡ以降である場合に、命令フェッチ部１１による命令メモリ１０へのフェッチアドレスの供給を停止させる。ここで、ＬＮＦＡは、ループ処理に含まれる終端命令のアドレスより後のアドレスである。【選択図】図１
2010015298.tif 000002
【特許請求の範囲】
【請求項１】
命令メモリに対してフェッチアドレスを供給する命令フェッチ部と、
前記フェッチアドレスで指定されるアドレスから読み出された命令を格納する命令バッファと、
前記命令バッファから供給される命令をデコードして実行する命令実行部と、
前記命令実行部がループ命令をデコードしたことに応じて前記ループ命令に基づくループ処理が実行されている間において、前記フェッチアドレスが前記ループ処理に含まれる終端命令のアドレスより後の第１のアドレス以降である場合に、前記命令フェッチ部による前記命令メモリへの前記フェッチアドレスの供給を停止させる命令フェッチ制御部と、
を備える情報処理装置。
【請求項２】
前記第１のアドレスは、前記終端命令をフェッチするための前記命令メモリへのアクセスによって前記命令メモリから読み出される、前記終端命令を含むデータブロックの最終アドレス以降である、請求項１に記載の情報処理装置。
【請求項３】
前記命令メモリと前記情報処理装置との間のバス幅と前記終端命令のアドレスに基づいて、前記前記第１のアドレスを算出するアドレス計算回路をさらに備える、請求項１又は２に記載の情報処理装置。
【請求項４】
前記第１のアドレスを決定するアドレス決定回路をさらに備え、
前記アドレス決定回路は、前記ループ命令に基づく少なくとも１回のループが実行された際に前記メモリから読み出された前記データブロックの前記最終アドレスを取得し、前記第１のアドレスを前記最終アドレス以降に決定する、請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記命令フェッチ部は、前記フェッチアドレスが格納されるアドレスレジスタを備え、
前記命令フェッチ制御部は、前記アドレスレジスタの値と前記第１のアドレスとの比較結果に基づいて、前記フェッチアドレスの供給を停止させる、請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記ループ処理の実行回数に応じてインクリメント又はデクリメントされるループカウンタをさらに備え、
前記命令アクセス制御回路は、前記ループカウンタの値に基づいて、前記フェッチアドレスの供給停止制御の終了を判定する、請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記命令実行部によってデコードされた命令が前記ループ命令である場合に、前記ループ処理の実行を制御するループ処理制御部をさらに備え、
前記命令アクセス制御回路は、前記ループ処理制御部による前記ループ処理の終了判定に応じて、前記フェッチアドレスの供給停止制御を終了する、請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項８】
前記命令アクセス制御回路は、前記ループ処理の最終回に含まれる命令が前記命令実行部にて実行されている間に、前記フェッチアドレスの供給停止制御を終了する、請求項６又は７に記載の情報処理装置。
【請求項９】
情報処理装置における命令フェッチの制御方法であって、
ループ命令がデコードされたことに応じて前記ループ命令に基づくループ処理が実行されている間において、命令フェッチの対象命令のアドレスであるフェッチアドレスが前記ループ処理に含まれる終端命令のアドレスより後の第１のアドレス以降であるか否かを判定し、
前記フェッチアドレスが前記第１のアドレス以降である場合に、命令メモリへの前記フェッチアドレスの供給を停止させる、
命令フェッチの制御方法。
【請求項１０】
前記第１のアドレスは、前記終端命令をフェッチするための前記命令メモリへのアクセスによって、前記命令メモリから読み出される前記終端命令を含むデータブロックの最終アドレス以降である、請求項９に記載の方法。
【請求項１１】
前記命令メモリと前記情報処理装置との間のバス幅と前記終端命令のアドレスに基づいて、前記前記第１のアドレスを算出する、請求項９又は１０に記載の方法。
【請求項１２】
前記ループ命令に基づく少なくとも１回のループが実行された際に前記メモリから読み出された前記データブロックの前記最終アドレスを取得し、前記第１のアドレスを前記最終アドレス以降に決定する、請求項９乃至１１のいずれか１項に記載の方法。
【請求項１３】
前記ループ処理の最終回に含まれる命令が実行されている間に、前記フェッチアドレスの供給停止制御を終了する、請求項９乃至１２のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサ、ＤＳＰ（Digital Signal Processor）等の情報処理装置に関し、特に、情報処理装置による命令フェッチの制御技術に関する。
【背景技術】
【０００２】
情報処理装置は、命令メモリ（例えば命令キャッシュ、ＲＯＭ）から命令をフェッチする命令フェッチ部と、フェッチされた命令をデコードして実行する命令実行部を有する。また、命令実行部に対して滞りなく命令を供給するために、命令フェッチ部と命令実行部との間に命令バッファを配置した構成が一般的である。このような構成を有する情報処理装置では、命令フェッチ部は、命令実行部における命令デコード以降のパイプライン処理とは独立に命令のフェッチを順次行ない、命令メモリから取得した命令を命令バッファに格納する。この命令デコード以降の処理とは独立に行なわれる先行的な命令フェッチ動作は、命令プリフェッチと呼ばれる。
【０００３】
より具体的に述べると、命令フェッチ部は、フェッチ対象命令のアドレスを格納するレジスタであるフェッチポインタを有しており、フェッチポインタの値を命令メモリに供給する。命令フェッチ部は、命令メモリからのデータ読み出し単位、言い換えると命令メモリと情報処理装置との間のバス幅に応じて、フェッチポインタの値を順次更新しながら命令フェッチを行なう。また、命令フェッチ部は、割り込みの発生、例外の発生、分岐命令のデコード等を契機としてフェッチポインタの値を分岐先アドレスに不連続に変更するための機構を有する。
【特許文献１】特開２００７−２０７１４５号公報
【特許文献２】特開２００４−３０１３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述した従来の情報処理装置は、ループ命令に基づくループ処理を実行する場合に、各ループの度に無駄な命令フェッチ動作が発生するという問題がある。ループ処理では、ループ内の先頭命令から終端命令までが所定の回数だけ繰り返し実行される。ループ処理の実行中にループ終端命令がデコードされると、次回のループを開始するために、ループ先頭命令のアドレスによってフェッチポインタが更新される。さらに、命令バッファ内に既に格納されているループ終端命令以降の命令が無効化される。命令フェッチはキャッシュメモリへのアクセス処理であるため、無駄な命令フェッチは消費電力の増加の原因となる。
【０００５】
ところで、特許文献１は、パイプライン構造を有する情報処理装置において、デコードフェーズにてループ命令がデコードされた場合に、実行フェーズにおけるループ命令の実行が完了するまで後続命令に対するパイプライン処理を停止する技術を開示している。当該技術は、ループ終端アドレスが確定されてループ終了判定が可能となるよりも前に、ループ終端命令の後ろに続くループ外の命令が実行されることを防止できる。しかしながら、特許文献１は、ループ処理を繰り返す過程において、命令フェッチ部による無駄な命令フェッチを防止するための技術については開示していない。このため、特許文献１に開示された情報処理装置では、ループ終端命令がデコードされるまでの間、ループ外の後続命令を取得するための無駄な命令フェッチが発生してしまう。
【課題を解決するための手段】
【０００６】
本発明の第１の態様にかかる情報処理装置は、命令フェッチ部、命令バッファ、命令実行部、及び命令フェッチ制御部を有する。前記命令フェッチ部は、命令メモリに対してフェッチアドレスを供給する。前記命令バッファは、前記フェッチアドレスで指定されるアドレスから読み出された命令を格納する。前記命令実行部は、前記命令バッファから供給される命令をデコードして実行する。そして、前記命令フェッチ制御部は、前記命令実行部がループ処理を実行している間において、前記フェッチアドレスが第１のアドレス以降である場合に、前記命令フェッチ部による前記命令メモリへの前記フェッチアドレスの供給を停止させる。ここで、ループ処理とは、前記命令実行部がループ命令をデコードしたことに応じて所定回数だけ繰り返し実行される処理である。また、第１のアドレスとは、前記ループ処理に含まれる終端命令のアドレスより後のアドレスである。
【０００７】
このような構成により、前記第１の態様にかかる情報処理装置は、ループ終端命令がデコードされているか否かに関わらず、フェッチアドレスと第１のアドレスとの比較によって、ループ外の後続命令のフェッチを停止することができる。
【発明の効果】
【０００８】
本発明により、ループ処理実行中におけるループ外の命令に対する無駄な命令フェッチを抑制することが可能な情報処理装置を提供できる。
【発明を実施するための最良の形態】
【０００９】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００１０】
＜発明の実施の形態１＞
本実施の形態にかかる情報処理装置１の構成を図１に示す。図１において、命令メモリ１０は、命令群を含むプログラムが記憶されたメモリである。命令メモリ１０は、例えば、命令キャッシュ、ＲＯＭ（Read Only Memory）又はこれらの組合せである。
【００１１】
命令フェッチ部１１は、命令メモリ１０から命令フェッチを行なう。フェッチされた命令は、命令バッファ１２に格納される。命令バッファ１２は、命令メモリ１０からフェッチされた命令を格納する一時記憶領域である。命令メモリ１０と命令フェッチ部１１及び命令バッファ１２との間は、フェッチアドレスが転送されるアドレスバス（不図示）と命令メモリから読み出された命令データが転送されるデータバス（不図示）により接続されている。命令フェッチ部１１は、フェッチポインタ１１１に保持されたフェッチアドレスをアドレスバスに出力する。これに応じて命令メモリ１０から読み出された命令データは、命令バッファ１２に格納される。
【００１２】
命令実行部１３は、命令をデコードして実行する。図１の例では、命令実行部１３は、命令デコード部１３１、プログラムカウンタ１３２、レジスタファイル１３３、演算回路１３４、及びデータメモリアクセス回路１３５を有する。
【００１３】
命令デコード部１３１は、命令バッファ１２から取得した命令をデコードする。また、命令デコード部１３１は、レジスタファイル１３３から命令オペランドをフェッチする。さらに、命令デコード部１３１は、デコードされた命令がループ命令であった場合に、後述するループ処理制御部１６と協調して、ループ命令に基づくループ処理の実行を制御する。
【００１４】
なお、特許文献１に示されているように、命令デコード部１３１でループ命令がデコードされた場合、後続命令に対するパイプライン処理をループ命令の実行完了まで停止させてもよい。また、パイプライン処理を停止させずに、ループ命令の遅延スロットにＮＯＰ命令を必要数だけ配置してもよい。
【００１５】
プログラムカウンタ１３２は、命令デコード部１３１にてデコードが開始された命令、つまりデコードステージにて処理中の命令アドレスを指し示すカウンタである。命令が逐次実行されている場合には、プログラムカウンタ１３２の値は命令長に相当する値ずつ更新されるが、割り込み発生時や分岐命令が存在する場合には分岐先のアドレスによって不連続に更新される。
【００１６】
レジスタファイル１３３は、複数のレジスタを含む。レジスタファイル１３３は、例えば、後述する演算回路１３４の入出力データの格納場所、データメモリアクセス回路１３５によるアドレス演算のためのベースアドレス又はインデックスアドレス等の格納場所として使用される。また、レジスタファイル１３３は、実行中のプログラム状態の格納場所として使用される。
【００１７】
演算回路１３４は、命令デコード部１３１による命令デコード結果に応じた演算、例えば算術演算及び論理演算を実行する。
【００１８】
データメモリアクセス回路１３５は、データメモリ１４からレジスタファイル１３３へのデータロード、データメモリ１４へのデータストアを行なう。
【００１９】
続いて、以下では、ループ処理の実行を制御するための構成要素につて説明する。ＬＳＡ（Loop Start Address）レジスタ１５１は、ループ処理に含まれる先頭命令のアドレス（以下、ＬＳＡと呼ぶ）を保持するレジスタである。ＬＥＡ（Loop End Address）レジスタ１５２は、ループ処理に含まれる終端命令のアドレス（以下、ＬＥＡと呼ぶ）を保持するレジスタである。ＬＣ（Loop Counter）レジスタ１５３は、残りループ回数を保持するレジスタである。ＬＣレジスタ１５３の値は、１ループ終了の度にデクリメントされる。なお、ＬＣレジスタ１５３を順次インクリメントし、所定数に到達したことによってループ終了を判定することも可能である。
【００２０】
ループ処理の制御に必要なＬＳＡ、ＬＥＡ及びＬＣの値は、例えば、ループ命令のオペランドによって指定される。また、図示しない計算回路が、オペランドに含まれる情報（例えば、ループ命令アドレスからのオフセット値）に基づいてＬＳＡ及びＬＥＡを計算してもよい。また、ＬＳＡは、ループ命令に引き続いて後続命令をデコードした結果に基づいて決定してもよい。例えば、ループ命令の後に位置する命令のうち、ＮＯＰ（No Operation）命令を除く最初の命令のアドレスをＬＳＡとすればよい。
【００２１】
ループ処理制御部１６は、ループ命令に基づくループ処理の実行を制御する。より具体的に述べると、ループ処理制御部１６は、プログラムカウンタ１３２に保持されたＰＣ値とＬＥＡとの比較、次ループ実行のためのプログラムカウンタ１３２の更新、ＬＣレジスタ１５３のデクリメント、及び、ＬＣレジスタ１５３の値に基づくループ終了判定を行なう。図１に示す比較器１６１は、ＰＣ値とＬＥＡとを比較する回路である。また、比較器１６２は、ＬＣレジスタ１５３の値をループ終了判定のための所定値（例えばゼロ）と比較する回路である。
【００２２】
続いて、ループ処理実行中の命令フェッチの停止制御を行うための構成要素であるＬＮＦＡ計算回路１７１、ＬＮＦＡレジスタ１７２、及び命令フェッチ制御部１８について説明する。
【００２３】
ＬＮＦＡ計算回路１７１は、ループ終端命令アドレスＬＥＡに基づいて、ＬＮＦＡ（Loop Next Fetch Address）を計算する。ここで、ＬＮＦＡとは、ループ外の後続命令のアドレスであって、命令フェッチ制御部１８による命令フェッチの停止制御に使用されるアドレスである。ＬＮＦＡレジスタ１７２は、ＬＮＦＡ計算回路１７１によって計算されたＬＮＦＡを格納するレジスタである。
【００２４】
例えば、ＬＮＦＡ計算回路１７１は、命令メモリ１０と命令バッファ１２との間のデータバス幅を用いて、命令メモリ１０から読み出されるループ終端命令を含むデータブロックの最終アドレスを計算すればよい。そして、ＬＮＦＡ計算回路１７１は、当該最終アドレス又はこれ以降のアドレスをＬＮＦＡとすればよい。このようにＬＮＦＡを計算する理由は、スーパースカラ構成や、ＶＬＩＷ（Very Long Instruction Word）アーキテクチャが採用されている場合には、命令メモリ１０のライン幅及びデータバス幅が命令長の数倍とされ、命令メモリ１０から複数の命令が同時にフェッチされるためである。言い換えると、ループ外の後続命令であっても、ループ終端命令と同時にフェッチされる場合があるためである。
【００２５】
命令フェッチ制御部１８は、ＬＮＦＡレジスタ１７２に保持されているフェッチアドレスとフェッチポインタ１１１の値とを比較し、フェッチアドレスがＬＮＦＡ以上となる場合に、命令フェッチ部１１による命令メモリ１０へのフェッチアドレスの供給を停止させる。
【００２６】
なお、命令フェッチ制御部１８は、命令実行部１３がループ命令に基づくループ処理を実行している間に限り、命令フェッチの停止制御を行なう。ループ処理中であるか否かの判定には、ループ処理制御部１６によるループ終了判定を利用すればよい。例えば、命令フェッチ制御部１８は、比較器１６２の比較結果を利用すればよい。
【００２７】
続いて以下では、本実施の形態にかかる情報処理装置１による命令フェッチ停止制御の具体的な効果を簡単なプログラム例を用いて説明する。図２は、ループ命令を含むプログラム例である。ニーモニック"LOOP 16"で表される図２の１行目の命令は、ループ命令である。図２の例では、ループ命令の第１オペランドは、ループ回数を示す。
【００２８】
図２の２行目は、１行目のループ命令の遅延スロットに配置されたＮＯＰ命令である。
【００２９】
図２の４〜６行目の命令（ＩＮＳＴ１〜３）は、ループ内の命令である。つまり、ＩＮＳＴ１がループ先頭命令であり、ＩＮＳＴ３がループ終端命令である。
【００３０】
図２の３〜５行目の命令（ＩＮＳＴ４〜６）は、ループ外の命令である。
【００３１】
次に、情報処理装置１と従来の情報処理装置との命令フェッチ動作の違いについて、図３Ａ及びＢのパイプライン図を用いて説明する。図３Ａは、情報処理装置１が図２に示したプログラム例を実行すると仮定した場合のパイプライン図である。一方、図３Ｂは、特許文献１に開示された従来の情報処理装置が図２に示したプログラム例を実行すると仮定した場合のパイプライン図である。図３Ａ及びＢは、９ステージのパイプラインを示している。具体的に述べると、ＩＦ１〜ＩＦ３の３ステージは、命令フェッチステージである。ＩＦ１〜ＩＦ３ステージでは、フェッチアドレスに対応する物理アドレスの生成、フェッチアドレス（物理アドレス）の命令メモリ１０への転送、命令メモリ１０から命令バッファ１２への命令読み出し等が行なわれる。
【００３２】
ＤＥ１及びＤＥ２は、命令デコードステージである。ＤＥ１及びＤＥ２ステージでは、命令デコード部１３１による命令デコードが行なわれる。
【００３３】
ＡＣは、レジスタアクセスステージであり、命令デコード部１３１によるレジスタファイル１３３のリードが行なわれる。
【００３４】
ＥＸ１〜ＥＸ３の３ステージは、実行ステージである。ＥＸ１〜ＥＸ３ステージでは、演算回路１３４による演算実行及びレジスタファイル１３３へのライトバックが行なわれる。また、実行命令がロード命令またはストア命令である場合、データメモリアクセス回路１３５によるデータメモリ１４のアクセスが行なわれる。
【００３５】
図３Ａ及びＢの例では、Ｃ６サイクルにおいてループ終端命令（ＩＮＳＴ３）がデコードされる。したがって、分岐予測等の追加機構を設けない場合、早くてもＣ６サイクル、通常は図３Ａ及びＢに示すようにＣ７サイクルにおいて、次ループのためのループ先頭命令（ＩＮＳＴ１）のフェッチが行なわれる。
【００３６】
特許文献１に開示されているような従来の情報処理装置は、Ｃ６サイクルの時点で既にループ外の命令ＩＮＳＴ４〜６の命令フェッチが行なわれている（図３Ｂに斜線で示すステージ）。しかしながら、ループ処理の途中では、ループ終端命令ＩＮＳＴ３の次にループ先頭命令ＩＮＳＴ１に分岐する。したがって、命令ＩＮＳＴ４〜６のフェッチは無駄な動作である。
【００３７】
これに対して、本実施の形態にかかる情報処理装置１では、命令フェッチ制御部１８がループ外の命令ＩＮＳＴ４〜６のフェッチを停止させる。したがって、図３Ａに示すように、ループ外の命令ＩＮＳＴ４〜６のフェッチ動作は発生しない。
【００３８】
上述したように、本実施の形態にかかる情報処理装置１は、ループ処理が実行されている間、ＬＮＦＡ以降に対する命令フェッチを停止させるため、ループ外の後続命令に対する無駄な命令フェッチを抑制できる。
【００３９】
また、情報処理装置１は、フェッチポインタ１１１に保持されたフェッチアドレスとＬＮＦＡの比較結果に基づいて命令フェッチの停止制御を行うため、ループ終端命令のデコード結果を待つことなく、命令フェッチを速やかに停止可能である。
【００４０】
また、情報処理装置１は、命令メモリ１０と命令バッファ１２との間のデータバス幅を用いて、命令メモリ１０から読み出されるループ終端命令を含むデータブロックの最終アドレスを計算し、この計算結果を用いてＬＮＦＡを決定する。このため、命令フェッチ部１１によるループ処理命令の正常なフェッチを阻害することがない。
【００４１】
ところで、命令フェッチ制御部１８は、命令実行部１３がループ命令に基づくループ処理を実行している間に限り、命令フェッチの停止制御を行なうと説明した。しかしながら、命令フェッチ制御部１８が命令フェッチの停止制御を開始するタイミングは、初回ループ処理の開始と一致していなくてもよい。なぜなら、命令フェッチの停止制御を開始可能なタイミングは、ＬＥＡ及びＬＮＦＡの決定タイミングに依存するため、命令フェッチの停止制御は、必ずしも第１ループから実行しなくてもよい。
【００４２】
また、命令フェッチ制御部１８が命令フェッチの停止制御の終了タイミングは、最終ループの終了と一致していなくてもよい。例えば、命令フェッチの停止制御の終了タイミングは、最終ループより１ループ前としてもよい。最終ループの終了後にはループ終端命令に引き続いてループ外命令を実行する必要がある。したがって、最終ループのためのループ終端命令の命令フェッチに続いてループ外命令の命令フェッチを速やかに行なうことによって、パイプラインストールの発生を回避できる。
【００４３】
＜発明の実施の形態２＞
上述した情報処理装置１は、ループ終端アドレスＬＥＡを用いてＬＮＦＡを計算する構成について説明した。発明の実施の形態１で述べたＬＮＦＡ計算回路１７１は、ＬＮＦＡを正確に計算することが困難な場合がある。例えば、命令が可変長であるときや、命令メモリ１０内の命令格納がワード境界及びライン境界に対して非整列である場合等は、ＬＮＦＡを計算によって予測的に決定することが困難である。この場合、ＬＮＦＡ計算回路１７１は、ＬＮＦＡを十分に余裕のある大きな値とすることで、ループ終端命令の正常なフェッチに対する妨害を避けることができる。しかしながら、いくつかのループ外命令の無駄なフェッチを許容しなければならない。これに対して、本実施の形態にかかる情報処理装置２は、ループ処理の実行結果を観測し、これに基づいてＬＮＦＡを決定する。以下では、情報処理装置１と情報処理装置２の差分であるＬＮＦＡの決定動作について詳しく説明する。
【００４４】
情報処理装置２の構成を図４に示す。図４において、ＬＮＦＡ決定回路２７１は、ループ命令に基づく少なくとも１回のループが実行された際に、命令メモリ１０から読み出されたループ終端命令を含むデータブロックの最終アドレスを取得する。そして、ＬＮＦＡ決定回路２７１は、ＬＮＦＡを当該最終アドレス以降に決定する。決定したＬＮＦＡは命令フェッチ制御部１８に供給される。いち早くＬＮＦＡを決定するためには、ＬＮＦＡ決定回路２７１は、第１ループの実行結果に応じてＬＮＦＡを決定すればよい。
【００４５】
図５は、ＬＮＦＡ決定回路２７１の動作例を示すフローチャートである。ステップＳ１１では、ＬＮＦＡ決定回路２７１が、命令デコード部１３１からループ終端命令アドレスＬＥＡを取得する。ステップＳ１２では、命令フェッチ部１１による第１ループでのＬＥＡの命令フェッチを観測する。ステップＳ１３では、ループ終端命令を含むデータブロックの最終アドレスを命令フェッチ部１１から取得する。ステップＳ１４では、ステップＳ１３で取得された最終アドレス以降のアドレスをＬＮＦＡに決定する。最後に、ステップＳ１５では、決定したＬＮＦＡをＬＮＦＡレジスタ１７２に格納する。
【００４６】
上述したように、本実施の形態にかかる情報処理装置２は、少なくとも１回のループ処理が実行される際のループ終端命令のフェッチ動作を観測してＬＮＦＡを決定する。よって、情報処理装置２は、実測に基づく正確なＬＮＦＡを用いて命令フェッチ停止制御を行うことができる。このため、ＬＮＦＡを計算によって予測的に決定することが困難な場合にも、ループ外の命令の無駄なフェッチを効率よく抑制できる。
【００４７】
＜その他の実施の形態＞
上述した情報処理装置２は、ＬＮＦＡの決定が遅れるため、少なくとも１回のループに対しては、命令フェッチ停止制御を実行できない。これを改善するため、上述した情報処理装置１が有するＬＮＦＡ計算回路１７１を情報処理装置２に追加してもよい。このような構成によって、例えば、第１ループでは、ＬＮＦＡ計算回路１７１によって計算されたＬＮＦＡを用いて命令フェッチ停止制御を実行できる。また、第２ループ以降では、ＬＮＦＡ決定回路２７１により決定されたＬＮＦＡを用いて命令フェッチ停止制御を実行できる。
【００４８】
また、ループ処理の過程でループ先頭に戻る際のループ先頭命令のフェッチを速やかに行なうために、上述した情報処理装置１及び２に、公知の分岐予測機構や、特開２００５−２８４８１４公報に開示されているループ先頭命令の供給機構などを追加してもよい。
【００４９】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００５０】
【図１】発明の実施の形態１にかかる情報処理装置のブロック図である。
【図２】ループ命令を含むプログラム例を示す図である。
【図３Ａ】図１の情報処理装置による、ループ処理に関する命令群のパイプライン処理を示す図である。
【図３Ｂ】従来の情報処理装置による、ループ処理に関する命令群のパイプライン処理を示す比較図である。
【図４】発明の実施の形態２にかかる情報処理装置のブロック図である。
【図５】発明の実施の形態２にかかる情報処理装置におけるＬＮＦＡ決定手順を示すフローチャートである。
【符号の説明】
【００５１】
１、２  情報処理装置
１０  命令メモリ
１１  命令フェッチ部
１１１  フェッチポインタ
１２  命令バッファ
１３  命令実行部
１３１  命令デコード部
１３２  プログラムカウンタ
１３３  レジスタファイル
１３４  演算回路
１３５  データメモリアクセス回路
１４  データメモリ
１５１  ＬＳＡレジスタ
１５２  ＬＥＡレジスタ
１５３  ＬＣレジスタ
１６  ループ処理制御部
１６１、１６２  比較器
１７１  ＬＮＦＡ計算回路
１７２  ＬＮＦＡレジスタ
１８  命令フェッチ制御部
１８１  比較器
２７１  ＬＮＦＡ決定回路
【図１】
2010015298.tif 000003
【図２】
2010015298.tif 000004
【図３Ａ】
2010015298.tif 000005
【図３Ｂ】
2010015298.tif 000006
【図４】
2010015298.tif 000007
【図５】
2010015298.tif 000008