(57)【要約】【課題】  キャッシュミスヒットによる処理効率の低下と併せてデータハザードによる処理効率の低下を防ぐことが可能なパイプラインプロセッサを提供する。【解決手段】  複数の命令を各々多段階の動作ステージに区切って実行するパイプラインプロセッサ３に対し、動作ステージのうちの命令を取り込むフェッチステージにおいて命令が格納される命令フェッチレジスタ１１９及び命令フェッチレジスタ制御部１０９を設け、フェッチステージにおいて命令を取り込むことができないキャッシュミスヒットを命令フェッチレジスタ制御部１０９が検出する。また、ミスヒットが検出された場合、命令フェッチレジスタ制御部１０９は、命令フェッチレジスタ１１９を継続して動作させる。【選択図】  図１
2006127080.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令を各々多段階の動作工程に区切って実行するパイプラインプロセッサであって、
前記動作工程のうちの命令を取り込む取込動作工程において命令を取り込む命令取込手段と、
前記取込動作工程において、前記命令取込手段が命令を取り込むことができないミスヒットを検出するミスヒット検出手段と、
前記ミスヒット検出手段によってミスヒットが検出された場合にも前記命令取込手段を継続して動作させる動作継続手段と、
を備えることを特徴とするパイプラインプロセッサ。
【請求項２】
前記動作継続手段は、
前記ミスヒット検出手段によってミスヒットが検出された場合、前記命令取込手段に対して命令を取り込まないよう指示することによって前記命令取込手段を動作させることを特徴とする請求項１に記載のパイプラインプロセッサ。
【請求項３】
前記動作継続手段は、前記命令取込手段に対してＮＯＰ信号を供給することによって前記命令取込手段に命令を取り込まないよう指示することを特徴とする請求項２に記載のパイプラインプロセッサ。
【請求項４】
前記動作工程間で発生するハザードを検出するハザード検出手段をさらに備え、
前記動作継続手段は、前記ミスヒット検出手段がミスヒットを検出し、かつ前記ハザード検出手段がハザードを検出していない場合に前記命令取込手段に対してＮＯＰ信号を供給することを特徴とする請求項３に記載のパイプラインプロセッサ。
【請求項５】
複数の命令を、命令を取り込む取込動作工程、取り込まれた命令をデコードするデコード動作工程を含む多段階の動作工程に区切って実行するパイプラインプロセッサであって、
前記取込動作工程において命令を取り込む命令取込手段と、
前記命令取込手段によって取り込まれた命令を、前記デコード動作工程においてデコードする命令デコード手段と、
前記命令取込手段が命令を取り込むことができないミスヒットを検出するミスヒット検出手段と、
前記デコード動作工程におけるハザードの発生によりインターロックがかかったことを検出するインターロック検出手段と、
前記ミスヒット検出手段によってミスヒットが発生したことが検出され、かつ、前記インターロック検出手段によってインターロックがかかったことが検出された場合、前記デコード手段の動作をインターロックが解消するまで停止させながら、前記デコード動作工程以外の動作工程の少なくとも一部を継続して動作させる他動作継続手段と、
を備えることを特徴とするパイプラインプロセッサ。
【請求項６】
前記他動作継続手段は、前記ミスヒット検出手段によってミスヒットが発生したことが検出され、かつ同時またはミスヒット発生の直前に前記インターロック検出手段によってインターロックがかかったことが検出された場合、インターロックが解消するまで前記デコード手段の動作を停止させながら、前記デコード動作工程以外の動作工程の少なくとも一部を継続して動作させることを特徴とする請求項５記載のパイプラインプロセッサ。
【請求項７】
複数の命令を各々多段階の動作工程に区切って実行するパイプラインプロセッサであって、
前記動作工程のうちの命令を取り込む取込動作工程において、命令を取り込む命令取込手段と、
前記命令取込手段によって取り込まれた命令を格納する複数の命令格納手段と、
前記命令格納手段に格納された命令を取り出してデコードする命令デコード手段と、を備え、
前記ハザード検出手段によってハザードが検出され、インターロックがかかっている間は、前記命令格納手段の各々が前記命令取込手段によって取り込まれた命令を順次格納し、インターロックが解消後は、前記命令デコード手段が、前記命令格納手段の各々に格納されている命令を順次デコードすることを特徴とするパイプラインプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプラインプロセッサに関する。
【背景技術】
【０００２】
現在、複数の命令を並行に実行する、いわゆるパイプライン方式で演算処理をするパイプラインプロセッサがある。パイプラインプロセッサは、複数の命令の各々をフェッチ、デコードといったステージの単位で実行する。このようなパイプラインプロセッサには、多くのデータを記憶可能な外部メモリの他、データの記憶容量は小さいものの、より高速にアクセスできるキャッシュメモリを備えたものがある。
【０００３】
キャッシュメモリを備えたパイプラインプロセッサでは、外部メモリから命令の実行に必要なデータを外部メモリからキャッシュメモリに読み込む。そして、プロセッサがキャッシュメモリにアクセスしてデータを取り出して演算を実行することにより、より高速に演算の処理を実行することができる。
このようなパイプラインプロセッサでは、パイプラインプロセッサがキャッシュメモリのうち必要な情報が書き込まれていない領域にアクセスするというエラーが発生し得る。このようなエラーは、一般的にキャッシュのミスヒット（本明細書ではキャッシュミスヒットまたは単にミスヒットとも記す）と呼ばれている。
【０００４】
キャッシュミスヒットが発生した場合、外部メモリから情報が読み出されるまでパイプラインプロセッサ全体の動作が停止する。このため、キャッシュミスヒットの発生は、パイプラインプロセッサの稼動を妨げ、処理効率を低下させる一因であるといえる。キャッシュミスヒット発生によるパイプラインプロセッサの処理効率低下を防ぐ従来例としては、例えば、特許文献１、特許文献２に記載されたものがある。
【０００５】
特許文献１に記載された従来例は、レジスタファイルの他にシャドウレジスタファイルを設ける。シャドウレジスタファイルには、オペランドフェッチにおいてキャッシュミスヒットが発生したとき、ミスヒットしたアドレス等の情報が記憶される。そして、次にキャッシュミスヒットが発生したとき、記憶されているアドレスを用いて将来データアクセスすべきアドレスを予測するものである。
【０００６】
また、特許文献２に記載された発明は、予め第１プログラムカウンタと第２プログラムカウンタとを設けておく。そして、正常動作時は第１プログラムカウンタのアドレスで示される命令データをＣＰＵに供給する。また、キャッシュミスヒットが起こったときには第２プログラムカウンタのアドレスで示される命令データをＣＰＵに供給することによってキャッシュミスヒット発生時のＣＰＵ動作停止を防いでいる。
【特許文献１】特開平６−５１９８２号公報
【特許文献２】特開２００４−３８６００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
キャッシュミスヒットは、プロセッサで使用されるオペランドに係るデータ（オペランドデータ）の他、プロセッサの命令（オペコード）に係る命令データをプロセッサがフェッチする場合にも発生する。しかし、上記した従来技術をはじめ、従来技術の多くがオペランドデータのキャッシュミスヒットによるプロセッサ停止を回避するためになされたものである。この理由の一つとして、オペランドデータが命令データよりもキャッシュミスヒットの発生率が高いことが考えられる。
【０００８】
しかしながら、命令データのキャッシュミスヒットは、オペランドデータに比べて低いとはいえプログラムやシステムによっては比較的頻繁に発生する。また、命令のキャッシュミスヒットが発生すると、外部メモリから命令が読み出されるまでパイプラインプロセッサを停止させる必要が生じる。したがって、命令データのキャッシュミスヒットは、オペランドデータのキャッシュミスヒットと同様にパイプラインプロセッサの処理効率を低下させる。
【０００９】
ところで、パイプラインプロセッサで処理される複数の命令は、先に処理が開始された命令（例えば命令１とする）で得られた演算結果を後に処理が開始された命令（例えば命令２とする）の演算で利用することがある。
このような命令１、命令２において、命令２が命令１の演算結果を利用するタイミングで命令１の演算結果の書込みが完了していない場合、データハザードが発生する。データハザードが発生すると、パイプラインプロセッサは、インターロックをかけて処理を停止する。したがって、データハザードの発生に伴うインターロックの停止は、キャッシュミスヒットと同様にパイプラインプロセッサの処理効率を低下させる一因である。
【００１０】
このようなデータハザードは、従来のパイプラインプロセッサにおいて、キャッシュミスヒットの発生と共にパイプラインプロセッサの処理効率を低下させる一因である。
本発明は、上記した点に鑑みてなされたものであり、キャッシュミスヒットによる処理効率の低下と併せてデータハザードによる処理効率の低下を防ぐことが可能なパイプラインプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１１】
以上の課題を解決するため、本発明のパイプラインプロセッサは、複数の命令を各々多段階の動作工程に区切って実行するパイプラインプロセッサであって、前記動作工程のうちの命令を取り込む取込動作工程において命令を取り込む命令取込手段と、前記取込動作工程において、前記命令取込手段が命令を取り込むことができないミスヒットを検出するミスヒット検出手段と、前記ミスヒット検出手段によってミスヒットが検出された場合にも前記命令取込手段を継続して動作させる動作継続手段と、を備えることを特徴とする。
【００１２】
このような発明によれば、複数の命令を各々多段階の動作工程に区切って実行するパイプラインプロセッサにおいて、取込動作工程において命令取込手段が命令を取り込む。また、この取込動作工程においてミスヒット検出手段がミスヒットを検出し、ミスヒットが検出された場合にも命令取込手段を動作させることができる。
このため、ミスヒットが発生した場合にも命令取込手段の停止によってパイプライン方式で行われている他の命令の処理が停止することがなく、ミスヒットを起こした命令に先行して他の命令の処理が進行する。したがって、本来後にデータハザードを生じるプログラムのデータハザード発生を防ぎ、より円滑で効率のよいパイプライン処理が実行できるパイプラインプロセッサを提供することができる。
【００１３】
また、本発明のパイプラインプロセッサは、前記動作継続手段が、前記ミスヒット検出手段によってミスヒットが検出された場合、前記命令取込手段に対して命令を取り込まないよう指示することによって前記命令取込手段を動作させることを特徴とする。
このような発明によれば、命令取込手段は、ミスヒットが検出された時にパイプラインプロセッサに入力される無効な命令を取り込むことなく、動作を継続できる。このため、命令取込手段の停止によってパイプライン方式で行われている他の命令の処理が停止することがなく、ミスヒットを起こした命令に先行して他の命令の処理が進行する。したがって、本来後にデータハザードを生じるプログラムのデータハザード発生を防ぎ、より円滑で効率のよいパイプライン処理が実行できるパイプラインプロセッサを提供することができる。
【００１４】
また、本発明のパイプラインプロセッサは、前記動作継続手段が、前記命令取込手段に対してＮＯＰ信号を供給することによって前記命令取込手段に命令を取り込まないよう指示することを特徴とする。
このような発明によれば、比較的簡易に命令取込手段が動作を停止することを回避することができる。
【００１５】
また、本発明のパイプラインプロセッサは、前記動作工程間で発生するハザードを検出するハザード検出手段をさらに備え、前記動作継続手段は、前記ミスヒット検出手段がミスヒットを検出し、かつ前記ハザード検出手段がハザードを検出していない場合に前記命令取込手段に対してＮＯＰ信号を供給することを特徴とする。
このような発明によれば、ミスヒットが発生していてハザードが発生してないタイミングの場合にＮＯＰ信号を命令取込手段に対して供給することができる。このため、適切なタイミングで効率よくＮＯＰ信号が供給されるため、本来後にデータハザードを生じるプログラムのデータハザード発生を防ぐことができ、いっそう処理効率の高いパイプラインプロセッサを提供することができる。
【００１６】
また、本発明のパイプラインプロセッサは、複数の命令を、命令を取り込む取込動作工程、取り込まれた命令をデコードするデコード動作工程を含む多段階の動作工程に区切って実行するパイプラインプロセッサであって、前記取込動作工程において命令を取り込む命令取込手段と、前記命令取込手段によって取り込まれた命令を、前記デコード動作工程においてデコードする命令デコード手段と、前記命令取込手段が命令を取り込むことができないミスヒットを検出するミスヒット検出手段と、前記デコード動作工程におけるハザードの発生によりインターロックがかかったことを検出するインターロック検出手段と、前記ミスヒット検出手段によってミスヒットが発生したことが検出され、かつ、前記インターロック検出手段によってインターロックがかかったことが検出された場合、前記デコード手段の動作をインターロックが解消するまで停止させながら、前記デコード動作工程以外の動作工程の少なくとも一部を継続して動作させる他動作継続手段と、を備えることを特徴とする。
【００１７】
このような発明によれば、多段階の動作工程のうちの取込動作工程において命令を取り込む。また、命令取込手段が命令を取り込むことができなかったミスヒットを検出すると共にデコード動作工程におけるハザードの発生によりインターロックがかかったことを検出する。そして、ミスヒットが発生したことが検出され、かつ、インターロックがかかったことが検出された場合、デコード手段の動作をインターロックが解消するまで停止させながらデコード動作工程以外の動作工程の少なくとも一部を継続して動作させることができる。
【００１８】
このような発明によれば、インターロックとミスヒットが共に発生している状態におけるデコードステージの進行停止中に、他の動作工程を継続して実行でき、他の命令の動作に影響を与えない。このため、ミスヒットに対応してミスヒットを発生した命令の取り込みを停止させている間にハザードにも対応でき、総合的なパイプラインプロセッサの停止時間をミスヒットとインターロックとに別個に対応するよりも短縮することができる。したがって、より円滑で効率のよいパイプライン処理が実行できるパイプラインプロセッサを提供することができる。
【００１９】
また、本発明は、前記他動作継続手段が、前記ミスヒット検出手段によってミスヒットが発生したことが検出され、かつ同時またはミスヒット発生の直前に前記インターロック検出手段によってインターロックがかかったことが検出された場合、インターロックが解消するまで前記デコード手段の動作を停止させながら、前記デコード動作工程以外の動作工程の少なくとも一部を継続して動作させることを特徴とする。
【００２０】
このような発明によれば、デコード手段の動作を停止させながらデコード動作工程以外の動作工程の少なくとも一部を継続して動作させる処理を最適なタイミングで実行させることができる。このため、より円滑で効率のよいパイプライン処理が実行できるパイプラインプロセッサを提供することができる。
また、本発明のパイプラインプロセッサは、複数の命令を各々多段階の動作工程に区切って実行するパイプラインプロセッサであって、前記動作工程のうちの命令を取り込む取込動作工程において、命令を取り込む命令取込手段と、前記命令取込手段によって取り込まれた命令を格納する複数の命令格納手段と、前記命令格納手段に格納された命令を取り出してデコードする命令デコード手段と、を備え、前記ハザード検出手段によってハザードが検出され、インターロックがかかっている間は、前記命令格納手段の各々が前記命令取込手段によって取り込まれた命令を順次格納し、インターロックが解消後は、前記命令デコード手段が、前記命令格納手段の各々に格納されている命令を順次デコードすることを特徴とする。
【００２１】
このような発明によれば、ハザード検出手段によってハザードが検出され、インターロックがかかっている間は、命令取込手段によって取り込まれた命令を複数の命令格納手段に順次格納し、インターロックが解消後は、命令格納手段の各々に格納されている命令を順次デコードする。インターロック解消後においても、新たな命令の取り込みを継続するため、命令格納手段には次々と新たな命令が取り込まれ、命令格納手段に命令が存在している状態で処理が進む。この命令格納手段に命令が存在している状態において、ミスヒットが発生した場合、格納されている命令を使って継続して動作することができる。このため、例えば動作継続手段によるＮＯＰ信号の供給がいらない、あるいはＮＯＰ信号の供給回数を抑えることができ、より円滑で効率のよいパイプライン処理が実行できるパイプラインプロセッサを提供することができる。
【発明を実施するための最良の形態】
【００２２】
以下、図を参照して本発明に係るパイプラインプロセッサの実施形態１及び実施形態２を説明する。
（実施形態１）
図１は、本発明の実施形態１におけるパイプラインプロセッサのブロック図である。図示した構成は、パイプラインプロセッサに与えられる命令が格納された外部メモリ１、外部メモリ１に格納されている命令のキャッシュに使用される命令キャッシュ２と、パイプラインプロセッサ３とからなる。
【００２３】
パイプラインプロセッサ３は、複数の命令を各々多段階の動作工程に区切って実行する。実施形態１では、命令キャッシュ２から複数の命令を取り出して各命令を実行する。なお、実施形態１では、各命令を実行するための多段階の動作工程とは、命令キャッシュから命令を取り込むフェッチステージ、フェッチされた命令をデコードするデコードステージ、命令を実行する実行ステージ、実行ステージで得られた結果をレジスタに書き込むライトバックステージの４つの動作ステージをいうものとする。
【００２４】
このような複数の動作ステージに命令を区切って実行するため、パイプラインプロセッサ３は、フェッチステージで命令を取り込む命令フェッチレジスタ１１９及びそれを制御する命令フェッチレジスタ制御部１０９、デコードステージを処理するための命令デコード部１１１、実行ステージを実行（演算）するための実行部１１３、実行部１１３による演算で得られた演算結果が書き込まれるレジスタファイル１１５を備えている。また、命令フェッチレジスタ制御部１０９は、命令フェッチレジスタ１１９とともに予備レジスタ１２１を内蔵している。さらに、命令キャッシュ２に対して命令読み出しの要求を行うために命令フェッチ要求制御部１０５を備えている。命令フェッチ要求制御部１０５は、命令キャッシュ２に対して命令の読み出し要求信号（図中ではＰＢＵＳ＿ＲＤ＿ＥＮと記す）と、読み出しアドレス信号（図中ではＰＢＵＳ＿ＡＤＲＳと記す）を出力する。この読み出し要求と読み出しアドレスは、フェッチステージの前のサイクルで出力されている。
【００２５】
以上の構成において、フェッチステージで命令キャッシュ２からの命令を命令フェッチレジスタ制御部１０９により命令フェッチレジスタ１１９へ取り込む。この際、命令フェッチ要求制御部１０５により、命令キャッシュ２の命令がキャッシュされていない領域に読み出し要求がされていた場合、すぐに命令の取り込みができない。このことを、一般にキャッシュミスヒットという。
【００２６】
命令フェッチレジスタ制御部１０９は、キャッシュミスヒットが検出され、後述するインターロックが検出されていない場合、命令フェッチレジスタ１１９に対してＮＯＰ（no-operation instruction）信号を供給するものである。ＮＯＰとは、何の処理も行わないことを指示する命令である。
このため、命令フェッチレジスタ１１９は、ミスヒットによって命令が取り込めない場合に、命令フェッチレジスタ制御部１０９からのＮＯＰ信号を取り込むため、停止することがなく、継続して動作し続けることができる。なお、継続して動作するとは、今回の動作タイミング（クロックサイクル）で命令が取り出せない場合にも正常にフェッチが完了したのと同じように動作することをいう。キャッシュミスヒットが発生した場合にも命令フェッチレジスタ１１９が継続して動作した場合、デコード、演算実行といった以降の動作ステージも継続して行われる。
【００２７】
このような動作によれば、キャッシュミスヒットが発生した命令が他の命令に影響することがなく、他の命令はキャッシュミスヒットが発生しなかった場合と同様に完了する。
また、実施形態１のパイプラインプロセッサは、データハザード等を検出するための検出部１０７を備えている。検出部１０７は、命令フェッチ要求制御部１０５及び命令フェッチレジスタ制御部１０９にインターロック信号（図中ではＩＮＴＥＲＬＯＣＫと記す）を出力する構成である。インターロック信号は、検出部１０７によるハザード検出の有無によって異なる値を持つ信号である。
【００２８】
さらに、実施形態１のパイプラインプロセッサは、命令デコード部１１１において分岐命令がデコードされた時に分岐先アドレスを計算するための分岐アドレス計算部１０３を備える。また、命令フェッチ要求制御部１０５から出力される命令読み出しアドレス信号の元になるプログラムカウンタ１０１を備えている。プログラムカウンタ１０１は通常はサイクルごとにインクリメントされるが、分岐命令がデコードされた時は、分岐アドレス計算部１０３から出力される分岐先アドレスに更新される。なお、命令フェッチ要求制御部１０５から出力される命令の読み出し要求信号がディスエイブルになったときは、プログラムカウンタ１０１が更新されないように制御する。ちなみに、実施形態１の命令フェッチ要求制御部１０５から出力される命令の読み出し要求信号は、キャッシュミスヒットまたはインターロックが発生したサイクルでディスエイブルになるように制御される。
【００２９】
以上述べた構成は、基本的に次のように動作する。すなわち、図１に示した命令キャッシュ２は、命令データと共にミスヒット信号（図中ではＰＢＵＳ＿ＷＡＩＴと記す）を命令フェッチレジスタ制御部１０９に出力する。ミスヒット信号は、キャッシュミスヒットの発生の有無によって値が切り換えられる信号であって、命令フェッチレジスタ制御部１０９は、ミスヒット信号の値によってキャッシュミスヒットの発生を検出する。
【００３０】
また、ハザードが発生した場合、検出部１０７は、インターロック信号の値を切り換えてインターロックがかかったことを命令フェッチレジスタ制御部１０９に通知する。
実施形態１では、ミスヒット信号、インターロック信号をいずれも１または０の値をとるデジタル信号とする。そして、インターロック信号についてはインターロックがかかっていない状態の値を０、インターロックがかかった状態の値を１とする。また、ミスヒット信号については、キャッシュミスヒットが発生していない状態の値を０、キャッシュミスヒットが発生した状態の値を１とする。
【００３１】
インターロック信号及びミスヒット信号をこのように設定することにより、実施形態１の命令フェッチレジスタ制御部１０９は、インターロック信号及びミスヒット信号の値の組合せによる４種類の状態を認識できる。
なお、４種類の状態とは、キャッシュミスヒット、インターロックのいずれも発生していない状態、キャッシュミスヒット、インターロックのいずれもが発生している状態、キャッシュミスヒットのみが発生している状態、インターロックのみが発生している状態の合計４つである。
【００３２】
次に、上記したパイプラインプロセッサの動作を、キャッシュミスヒットのみ発生（インターロック発生なし）の場合と、キャッシュミスヒットとインターロックが同時に起こった場合と、に分けて説明する。なお、実施形態１では、いずれの説明においても実施形態１のパイプラインプロセッサの動作説明に先立って従来の構成の動作を示し、実施形態１と対比するものとする。
【００３３】
１、キャッシュミスヒットのみ発生（インターロック発生なし）の場合
先ず、キャッシュミスヒットのみ発生（インターロック発生なし）の場合のパイプラインプロセッサの動作について以下に説明する。この説明は、パイプラインプロセッサが以下に示すプログラム１を実行したものとして行う。
プログラム１
（ＩＮＳＴ１）
（ＩＮＳＴ２）
（ＩＮＳＴ３）  ＡＤＤ％ＳＲ２，％ＳＲ０，％ＳＲ１
（ＩＮＳＴ４）  ＡＤＤ％ＳＲ４，％ＳＲ２，％ＳＲ３
（ＩＮＳＴ５）
（ＩＮＳＴ６）
上記したプログラム１において、ＩＮＳＴ（INSTruction）１〜ＩＮＳＴ６は各々命令コードを示している。ＩＮＳＴ３、ＩＮＳＴ４は、いずれもＡＤＤ命令の命令コードである。ＩＮＳＴ３は、ＳＲ０（レジスタ０）から取り出した値とＳＲ１から取り出した値とを加算してＳＲ２に書き込むよう命令するものである。また、ＩＮＳＴ４は、ＩＮＳＴ３のＡＤＤ命令によって算出されてＳＲ２に書き込まれた値と、ＳＲ３から取り出した値とを加算してＳＲ４に書き込むよう命令するものである。なお、ＩＮＳＴ１、ＩＮＳＴ２及びＩＮＳＴ５、ＩＮＳＴ６は任意のプログラムであってよい。
【００３４】
このようなプログラム１は、ＩＮＳＴ３による演算結果の書き込みが完了した後でないとＩＮＳＴ４が命令をデコードすることができない。つまり、ＩＮＳＴ４はＩＮＳＴ３のライトバックステージ完了後でないとデコードステージを実行することができないことになる。
図２及び図３は、上記したプログラムを実行する場合のタイミングチャートであって、図２のタイミングチャートが従来のパイプラインプロセッサのものである。図３は、実施形態１のパイプラインプロセッサで上記したプログラムを実行した場合のタイミングチャートである。なお、タイミングチャートでは、フェッチステージをＦ、デコードステージをＤ、実行ステージをＥ、ライトバックステージをＷＢで示している。また、キャッシュミスヒット信号をＰＢＵＳ＿ＷＡＩＴ、インターロック信号をＩＮＴＥＲＬＯＣＫと示している。
【００３５】
図２、図３に示した例では、いずれもＩＮＳＴ４がクロックサイクル４でミスヒットを発生する。このとき、従来の構成では、フェッチが完了するクロックサイクル６までＩＮＳＴ１、ＩＮＳＴ２、ＩＮＳＴ３の動作ステージが次の動作ステージに移ることがない（停止する）。
また、クロックサイクル６以降正常に動作を開始した後、従来の構成では、クロックサイクル７にＩＮＳＴ３とＩＮＳＴ４との間でデータハザードが発生する。このため、ＩＮＳＴ４は、ＩＮＳＴ３のライトバックステージが行われるクロックサイクル８以降にデコードステージを実行することが可能になる。図２に示した例では、クロックサイクル９にデコードステージが実行され、引き続き実行ステージ、ライトバックステージが実行されてクロックサイクル１１にＩＮＳＴ４が完了する。
【００３６】
一方、実施形態１のパイプラインプロセッサにおいても、ＩＮＳＴ４がクロックサイクル４でミスヒットを発生する。この時、命令フェッチレジスタ制御部１０９には、キャッシュミスヒットが発生していることを示すミスヒット信号のアクティブ状態が入力される。このミスヒット信号のアクティブ状態が入力され、インターロック信号のディスエイブル状態が入力された場合、命令フェッチレジスタ制御部１０９は、ＮＯＰ信号を生成して命令フェッチレジスタ１１９に格納させる。
【００３７】
ＮＯＰ信号の格納は、例えば、次のようにして実行される。すなわち、命令フェッチレジスタ制御部１０９は、予めＮＯＰ信号を記憶している記憶装置を備える。命令フェッチレジスタ制御部１０９は、ミスヒット信号によってキャッシュミスヒットを検出し、かつ、インターロックが発生していない時、命令フェッチレジスタ１１９に対し、この記憶装置からＮＯＰ信号を出力させ、命令フェッチレジスタ１１９はこのＮＯＰ信号を格納する。
【００３８】
図３では、命令フェッチレジスタ１１９に、命令を取り込めないクロックサイクル４及びクロックサイクル５において、命令フェッチレジスタ制御部１０９によるＮＯＰ信号が格納される。命令フェッチレジスタ制御部１０９によるＮＯＰ信号の格納ステージを、ハードフェッチステージと定義し、図中に「ハードＦ」として示す。
以上述べたように、実施形態１のパイプラインプロセッサは、クロックサイクル４及びクロックサイクル５において、ハードフェッチステージを実行する。このため、パイプラインはどのステージも停止することなく動作を続ける。よって、ＩＮＳＴ１，ＩＮＳＴ２、ＩＮＳＴ３においても各動作ステージが停止することなく順次実行され、ＩＮＳＴ３におけるライトバックステージが従来の構成よりも早いタイミングで完了する。
【００３９】
図３に示した例では、クロックサイクル７でＩＮＳＴ4のデコードステージが行われる時にはＩＮＳＴ３の演算結果の書込みが完了している。よって、ＩＮＳＴ４がクロックサイクル７でＩＮＳＴ３の演算結果を用いることができ、インターロックによってパイプラインプロセッサが停止することがない。このような実施形態１のパイプラインプロセッサは、本来起こるハザードを、キャッシュミスヒットが発生した場合には防ぐことができ、パイプライン処理の効率を上げることができる。
【００４０】
２、キャッシュミスヒットとインターロックが同時に起こった場合
次に、キャッシュミスヒットとインターロックとが同じタイミングで起こった場合のパイプラインプロセッサの動作について以下に説明する。この説明は、パイプラインプロセッサが以下に示すプログラム２を実行したものとして行う。
プログラム２
（ＩＮＳＴ１）
（ＩＮＳＴ２）  ＡＤＤ％ＳＲ２，％ＳＲ０，％ＳＲ１
（ＩＮＳＴ３）  ＡＤＤ％ＳＲ４，％ＳＲ２，％ＳＲ３
（ＩＮＳＴ４）
（ＩＮＳＴ５）
（ＩＮＳＴ６）
上記したプログラム２は、ＩＮＳＴ２による演算結果の書き込みが完了した後でないとＩＮＳＴ３が命令をデコードすることができない。つまり、ＩＮＳＴ３はＩＮＳＴ２のライトバックステージ完了後でないとデコードステージを実行することができないことになる。
【００４１】
キャッシュミスヒットとインターロックとが同じタイミングで起こった場合、図１に示したパイプラインプロセッサは、検出部１０７が、デコードステージにおけるハザードの発生によりインターロックがかかることを検出するインターロック検出手段として機能する。
また、命令フェッチレジスタ制御部１０９は、ミスヒットが発生したことが検出され、かつ、インターロックがかかったことが検出された場合、命令デコード部１１１の動作をインターロックが解消するまで停止させながら、デコードステージ以外の動作ステージの少なくとも一部を継続して動作させる他動作継続手段として機能する。
【００４２】
また、実施形態１でいうミスヒットが発生したことが検出され、かつ、インターロックがかかったことが検出された場合とは、ミスヒットが発生したことが検出され、かつ同時またはミスヒット発生の直前にインターロックがかかったことが検出された場合をいう。実施形態１では、ミスヒットが発生したことが検出され、かつ同時にインターロックがかかったことが検出されたものとして以降の説明を行う。なお、実施形態１でいうミスヒットが発生したことが検出され、かつ同時にインターロックがかかったとは、ミスヒットの検出信号とインターロックの検出信号とが同一サイクル内でアクティブになったことを指すものとする。
【００４３】
図４及び図５は、キャッシュミスヒットとインターロックとが同じタイミングで起こった場合のパイプラインプロセッサの動作を説明するためのタイミングチャートであって、図４のタイミングチャートが従来のパイプラインプロセッサのものである。図５は、実施形態１のパイプラインプロセッサでキャッシュミスヒットとインターロックとが同じタイミングで起こった状態に対処した場合のタイミングチャートである。
【００４４】
図示するように、図４のタイミングチャートでは、クロックサイクル４でインターロックとミスヒットとが同時に起こっている。このような場合、従来のパイプラインプロセッサでは、先ず、ミスヒットの発生に対処してＩＮＳＴ１、ＩＮＳＴ２、ＩＮＳＴ３の動作ステージを停止する。ミスヒットが解消後、インターロックの原因となるハザードに対処してクロックサイクル６、クロックサイクル７においてＩＮＳＴ２のライトバックステージが完了するまで、ＩＮＳＴ３のデコードステージが停止する。
【００４５】
一方、実施形態１のパイプラインプロセッサでは、クロックサイクル４でインターロックとＩＮＳＴ４のキャッシュミスヒットを発生した場合、ＩＮＳＴ３のデコードステージは停止させて、ライトバックステージにあるＩＮＳＴ１、実行ステージにあるＩＮＳＴ２は継続して実行させる。クロックサイクル５も同様に動作する。このように、実行ステージ、ライトバックステージを継続して動作させることにより、インターロックに対処すると伴に、ＩＮＳＴ４のミスヒットに対処していることになる。
【００４６】
これは、従来のようなキャッシュミスヒット中に全ての動作ステージが停止してしまうことにより、キャッシュミスヒットの解消後に、インターロックの解消を行う動作に比べて停止サイクルが短くなるため、パイプライン処理の効率が向上する。
また、上記した動作は、図１に示した構成において、命令フェッチレジスタ制御部１０９がキャッシュミスヒットとインターロックの発生とを同時に検出したとき、命令デコード部１１１の動作のみを停止させる。すなわち、命令フェッチレジスタ１１９の格納内容を更新させないように動作させて、実行部１１３等を継続して動作させることによって実現することができる。
【００４７】
図６は、以上述べた、キャッシュミスヒットのみ発生（インターロック発生なし）の場合、および、キャッシュミスヒットとインターロックが同時に起こった場合、を含む実施形態１におけるキャッシュミスヒット信号（図中ではＰＢＵＳ＿ＷＡＩＴと記す）とインターロック信号（図中ではＩＮＴＥＲＬＯＣＫと記す）の状態に応じた命令フェッチレジスタ１１９の格納内容の遷移を示した表である。表中の1がアクティブ、０がディスエイブルを意味する。図中の丸付き数字はパイプラインプロセッサの状態に対して付されたものであり、丸１はキャッシュミスヒット、インターロックのいずれも発生していない状態を示す。丸２は、インターロックのみが発生している状態を示す。また、丸３は、キャッシュミスヒットのみが発生した状態を、丸４はキャッシュミスヒット、インターロックが共に発生した状態を示している。
【００４８】
状態丸１では、キャッシュミスヒット、インターロック共に発生していないため、命令フェッチレジスタ１１９の内容は取り込まれた命令（フェッチされた命令）に、置き換えられる。
また、状態丸３は、先の説明で述べたキャッシュミスヒットのみ発生（インターロック発生なし）の場合に対応する。このとき、実施形態１のパイプラインプロセッサは、命令フェッチレジスタ制御部１０９が命令フェッチレジスタ１１９にＮＯＰ命令を格納させる。このため、パイプラインプロセッサはキャッシュミスヒットが起こっていないかのように動作し、停止することがない。これにより、従来、キャッシュミスヒットによる停止の後、本来であれば発生するインターロックを防ぐことができる。
【００４９】
さらに、状態丸４は、先の説明で述べたキャッシュミスヒットとインターロックが同時に起こった場合に対応する。この場合、インターロックが起こっているためデコードステージを停止する必要がある。よって、命令フェッチレジスタ１１９は次サイクルでも現在格納されている命令を保持する。この際、従来であればキャッシュミスヒットも同時に起こっている為、実行ステージ、ライトバックステージにある命令も停止させていた。本発明では、実行ステージ、ライトバックステージにある命令は停止をさせないため性能が向上している。
【００５０】
状態丸２は、インターロックのみがかかったパイプラインプロセッサの状態を示している。この場合、インターロックが起こっているためデコードステージを停止する必要がある。よって、命令フェッチレジスタ１１９は次サイクルでも現在格納されている命令を保持する。このとき、新たに取り込まれた命令がある場合は、別レジスタに保持しておく必要がある。新たに取り込まれた命令とは、例えば、後述する実施形態１のタイミングチャートである図９のサイクル４で取り込まれたＩＮＳＴ４の命令をいう。図１に示した予備レジスタ１２１は、このような命令を格納しておくために設けられている。
【００５１】
実施形態１ではインターロック信号が１（アクティブ）になると共に命令フェッチ要求制御部１０５から出力される命令読み出し要求信号がディスエイブルになるため、これ以上の命令は取り込まれない。このため、実施形態１の予備レジスタ１２１は一つでよい。
以上述べた実施形態１のパイプラインプロセッサは、キャッシュミスヒットのみ発生（インターロック発生なし）の場合、命令フェッチレジスタ１１９を停止させることがない。このため、パイプライン処理は継続され、実行ステージ、ライトバックステージの処理が進む。これにより、実施形態１は、本来発生するハザードを防ぎ、インターロックによるパイプラインプロセッサの停止を回避することができる。
【００５２】
また、実施形態１のパイプラインプロセッサは、キャッシュミスヒットとインターロックが同時に起こった場合、デコードステージだけを停止させて他の動作ステージを動作させる。このような処理により、実施形態１は、キャッシュミスヒットの発生によるペナルティ（処理停滞）とハザードによるペナルティとに同時に対処することができる。このような対処は、キャッシュミスヒットのペナルティにインターロックのペナルティを隠蔽できていると考えることができる。
【００５３】
また、本発明の実施形態１は、以上述べた構成に限定されるものではない。すなわち、実施形態１では、命令のキャッシュミスヒットとハザードによるインターロックとが同時に起こった場合についてのみ説明した。しかし、実施形態１におけるパイプラインプロセッサのキャッシュミスヒットとインターロックとが同時に起こった場合の動作は、キャッシュミスヒットの直前にインターロックが発生した場合にもキャッシュミスヒットのペナルティとインターロックのペナルティとに同時に対処し、パイプラインプロセッサの処理を効率化することができる。
（実施形態２）
次に、本発明の実施形態２を説明する。図７は、本発明の実施形態２におけるパイプラインプロセッサのブロック図である。なお、図７に示した構成のうち、実施形態１のパイプラインプロセッサで述べたのと同様の構成については同様の符号を付し、説明を一部略すものとする。
【００５４】
図７に示したパイプラインプロセッサは、図１に示したパイプラインプロセッサと同様に、命令を、フェッチステージ、デコードステージ、実行ステージ、ライトバックステージに区切って実行する。このため、実施形態２のパイプラインプロセッサも、命令フェッチレジスタ制御部７０９、命令デコード部１１１、実行部１１３、レジスタファイル１１５を備えている。
【００５５】
また、図７に示したパイプラインプロセッサは、データハザード等を検出するための検出部１０７、命令フェッチ要求制御部１０５を備える。
実施形態２の命令フェッチレジスタ制御部７０９は、命令フェッチレジスタ１１９を備える点で実施形態１の命令フェッチレジスタ制御部と同様であるものの、さらに複数の命令格納手段である命令バッファ０、命令バッファ１…命令バッファＮを備える点で実施形態１と相違する。実施形態２では、命令バッファ０、命令バッファ１…命令バッファＮを命令バッファ群７１９と記す。
【００５６】
通常動作時、このような実施形態２のパイプラインプロセッサは、実施形態１と同様に、命令フェッチレジスタ制御部７０９の制御によって命令フェッチレジスタ１１９が命令キャッシュ２からの命令を取り込む。フェッチされた命令は、命令デコード部１１１でデコードされた後、実行部１１３で実行（演算）され、ライトバックステージにおいてレジスタファイル１１５に結果を書き込む。
【００５７】
ただし、実施形態２のパイプラインプロセッサは、検出部１０７によってハザードが検出され、インターロックがかかっている間も命令の取り込みを継続し、命令バッファ群７１９に含まれる命令バッファに取り込まれた命令を順次格納する。また、インターロックが解消された後、各々の命令バッファに格納されている命令をシフトさせながら命令フェッチレジスタ１１９に移し、処理を行う。
【００５８】
インターロックの間も、命令の取り出しを継続するために、実施形態１とは違い、実施形態２の命令フェッチ要求制御部１０５は、インターロックがアクティブ中においても、命令読み出し要求信号（図中ではＰＢＵＳ＿ＲＤ＿ＥＮと記す）をアクティブにし続ける。
次に、上記したパイプラインプロセッサの動作について説明する。実施形態２では、パイプラインプロセッサが実施形態１で示したプログラム２を実行するものとする。なお、実施形態２においても、実施形態２のパイプラインプロセッサの動作説明に先立って従来の構成の動作を示し、実施形態２と対比するものとする。
【００５９】
図８及び図９、図１０は、上記したプログラムを実行する場合のタイミングチャートであって、図８のタイミングチャートが従来のパイプラインプロセッサのものである。図９及び図１０はそれぞれ実施形態１、実施形態２のパイプラインプロセッサで上記したプログラムを実行した場合のタイミングチャートである。
図８、図９、図１０に示した例では、いずれもＩＮＳＴ３がクロックサイクル４でハザードを発生し、ＩＮＳＴ２のライトバックステージが完了するまでインターロックがかかる。また、その後、ＩＮＳＴ８でキャッシュミスヒットが発生している。
【００６０】
図９は、先に説明した実施形態１を適用した状態を示したタイミングチャートである。この場合、図に示すように、ミスヒットの発生時に命令フェッチレジスタ１１９にＮＯＰを格納させることによってパイプライン処理を継続して動作させている。このため、図８に示す従来の動作では、クロックサイクル１４でＩＮＳＴ８がＩＮＳＴ６またはＩＮＳＴ７の演算結果を用いる場合はインターロックが発生するが、実施形態１の図９ではパイプライン処理が継続して動作したため、クロックサイクル１４ではＩＮＳＴ６及びＩＮＳＴ７のライトバックステージが完了しているため、インターロックが発生することがない。よって、従来のパイプラインプロセッサに比べ、実施形態１のパイプラインプロセッサは処理効率が高いといえる。
【００６１】
図１０は、実施形態２のパイプラインプロセッサで同じプログラム２を実行した場合のタイミングチャートである。実施形態２のパイプラインプロセッサは、図１０に示したように、インターロックがかかった場合にも命令データの取り込みを継続する。すなわち、実施形態２のパイプラインプロセッサは、インターロックが発生すると、クロックサイクル４で命令バッファ０（図中Ｂ０と記す）へＩＮＳＴ４の命令を取り込む。また、クロックサイクル５では命令バッファ１（図中Ｂ１と記す）へＩＮＳＴ５の命令を取り込む。
【００６２】
インターロックの解除後、上記した処理で命令バッファに取り込まれている命令が取り込み順序にしたがって処理される。また、図１０に示した例では、インターロックの解除後のクロックサイクル６において、命令バッファ０（図中Ｂ０と記す）内にあるＩＮＳＴ４の命令が、命令フェッチレジスタ１１９に格納される。このとき、命令バッファ１内にあるＩＮＳＴ５の命令を、命令バッファ０に移しておく。また、このとき、命令キャッシュ２から取り出されたＩＮＳＴ６は、命令バッファ１に格納される。
【００６３】
クロックサイクル７では、同様に、命令バッファ０内にあるＩＮＳＴ５の命令が、命令フェッチレジスタ１１９に移される。また、命令バッファ１内にあるＩＮＳＴ６の命令は、命令バッファ０に移される。命令キャッシュ２から取り出されたＩＮＳＴ８は、命令バッファ１に格納される。
以上のように、各命令は、命令バッファ群７１９の各命令バッファに順次取り込まれ、命令フェッチレジスタ１１９に移された時点で各命令の実行が開始される。
【００６４】
実施形態１の状態を示した図９では、クロックサイクル１０でＩＮＳＴ８のキャッシュミスヒットが発生するが、実施形態２の状態を示した図１０の場合には、上記で説明したようにインターロック中に命令の取り込みを継続したために、２サイクル早いクロックサイクル８でＩＮＳＴ８のキャッシュミスヒットが発生する。つまり、実施形態２の図１０の方が、2サイクル分処理が早く進んでいる、すなわち、パイプライン処理の処理効率が向上している。
【００６５】
また、図９と図１０は次のように対比する事もできる。キャッシュミスヒット中の３サイクルにおいて、図９は３つのＮＯＰを取り込むのに対し、図１０はあらかじめ命令バッファ０と命令バッファ１に命令が取り込まれている為にＮＯＰの取り込みは１つでよい。すなわち、図１０は、キャッシュミスヒットが１サイクルしか起こっていないかのようにパイプラインが動作している。よって、パイプライン処理の処理効率が向上している。
【００６６】
また、命令バッファ内に命令が存在する状態で、ブランチ命令、ジャンプ命令などの分岐命令がデコードされたとき、命令バッファ内にある命令は分岐しない場合の命令が取り込まれている為、そのまま実行するとプログラムが正しく動作しない。そのため、実施形態２のパイプラインプロセッサは、分岐命令がデコードされたときは、命令バッファに格納されている命令を廃棄するように動作する。なお、ここでいう命令の廃棄とは、命令バッファ内に命令が格納されていないのと同じ状態にすることを意味する。
【００６７】
実施形態２のパイプラインプロセッサは、このような動作によってプログラムが破綻することを防ぐことができる。また、このような動作は、例外処理などによってプログラムが分岐する場合も同様に行われる。
図１１は、実施形態２のパイプラインプロセッサが分岐命令をデコードした場合の動作を説明するためのタイミングチャートである。図１１では、ＩＮＳＴ７の命令が分岐命令であり、クロックサイクル１０でデコードされる。実施形態２では、分岐命令がデコードされたクロックサイクル１０において、クロックサイクル１１で命令バッファ０（図中Ｂ０と記す）、命令バッファ１（図中Ｂ１と記す）が無効になるように制御する。これによって命令バッファに格納されている分岐しない場合の命令を廃棄する。命令の廃棄により、クロックサイクル１１では、分岐先の命令が命令フェッチレジスタ１１９に格納される。これらの動作を実現するために、分岐が発生するかどうかを示す制御信号が命令デコード部１１１から命令フェッチレジスタ制御部７０９へ出力される。
【００６８】
図１２は、以上述べた実施形態２におけるキャッシュミスヒット信号（図中ではＰＢＵＳ＿ＷＡＩＴと記す）とインターロック信号（図中ではＩＮＴＥＲＬＯＣＫと記す）および命令バッファ０の有効フラグ（図中ではＢ（０）＿ｆと記す）に応じた命令フェッチレジスタ１１９の格納内容の遷移を示した表である。
表中の1がアクティブ、０がディスエイブルを意味し、Ｘは、Ｄｏｎ’ｔ  Ｃａｒｅを意味している。また、命令バッファ０の有効フラグＢ（０）＿ｆは、命令バッファ０に命令が格納されていれば有効、格納されていなければ無効として示す。また、命令バッファ０に格納されている内容をＢ（０）として示す。表中に示した表中の丸付き数字はパイプラインプロセッサの状態に対して付されたものである。
【００６９】
丸１及び丸２はキャッシュミスヒット、インターロックのいずれも発生していない状態を示す。この時、命令バッファ０が無効、すなわち、命令バッファ０に命令が取り込まれていない場合（丸１の場合）は、命令キャッシュ２からの命令を命令フェッチレジスタ１１９に格納する。命令バッファ０が有効、すなわち、命令バッファ０に命令が取り込まれている場合（丸２の場合）は、命令バッファ０に取り込まれている命令を命令フェッチレジスタ１１９に格納する（移動する）。
【００７０】
丸３はインターロックのみ発生している状態を示す。この時、デコードステージが停止する、すなわち、命令フェッチレジスタ１１９は格納している命令を次サイクルも保持する。
丸４及び丸５はキャッシュミスヒットのみ発生している状態を示す。この時、命令バッファ０が無効の場合（丸４の場合）は、命令フェッチレジスタ制御部７０９は命令フェッチレジスタ１１９にＮＯＰを格納させる。命令バッファ０が有効の場合（丸５の場合）は、命令バッファ０に取り込まれている命令を命令フェッチレジスタ１１９に格納する（移動する）。
【００７１】
丸６はキャッシュミスヒット、インターロックの両方とも発生している状態を示す。インターロックが発生しているため、デコードステージが停止する。すなわち、命令フェッチレジスタ１１９は格納している命令を次サイクルも保持する。
図１３は、上述した実施形態２における命令バッファ群７１９の各々の命令バッファに格納されている内容の遷移をまとめて示した表である。なお、各命令バッファは１ビットの有効フラグを持っていて、ｉ番目命令バッファの有効フラグをＢ（ｉ）＿ｆとし、各命令バッファに格納されている内容をＢ（ｉ）として表中に示す。ただし、ｉ＝０であるときのＢ（ｉ−１）＿ｆは、命令フェッチレジスタ１１９を意味し、常に有効である。また、ここでいう有効フラグの有効とは、命令バッファに命令があることを示し、無効とは、命令がないことを示す。
【００７２】
図１３に示すように、ｉ番目命令バッファの有効フラグＢ（ｉ）＿ｆと格納内容Ｂ（ｉ）の遷移は、分岐の発生を示す信号、キャッシュミスヒット信号（図中ではＰＢＵＳ＿ＷＡＩＴと記す）、インターロック信号（図中ではＩＮＴＥＲＬＯＣＫと記す）、Ｂ（ｉ）＿ｆ、Ｂ（ｉ＋１）＿ｆ、Ｂ（ｉ―１）＿ｆによって決まる。
図１２に示したように命令フェッチレジスタ１１９を制御し、図１３に示したように命令バッファ群７１９の各々の命令バッファを制御することにより、実施形態２のパイプラインプロセッサは、図１０および図１１に示したタイミングチャートのように動作でき、プログラムの分岐が存在する場合でも破綻することなく動作し、処理効率の高いパイプライン処理を実現できる。
【００７３】
以上述べた本実施形態の実施形態２は、フェッチされた命令を格納できる命令バッファを複数備えている。そして、デコードステージでインターロックが発生した場合にはフェッチステージで命令をフェッチしては命令バッファに順次格納するので、インターロックの発生時に命令バッファに命令を取り込んでおくことができる。
また、インターロックの解除後は、命令バッファに格納された命令を順次命令フェッチレジスタにシフトしてデコードする。同時にフェッチされた命令を空いた命令バッファに取り込んでおく。そして、キャッシュミスヒットの発生時にはＮＯＰ信号の供給等の対処に優先して命令バッファに格納されている命令を使って動作ステージの停止を防ぐことができる。
【００７４】
このような実施形態２のパイプラインプロセッサは、実施形態１よりもＮＯＰ信号の供給等の実行回数が少なくてすみ、パイプラインプロセッサの処理をより効率化することができる。
【図面の簡単な説明】
【００７５】
【図１】本発明の実施形態１のパイプラインプロセッサのブロック図である。
【図２】実施形態１のパイプラインプロセッサと比較するために示した従来のパイプラインプロセッサのタイミングチャートである。
【図３】実施形態１のパイプラインプロセッサのタイミングチャートである。
【図４】実施形態１のパイプラインプロセッサと比較するために示した従来のパイプラインプロセッサにおけるインターロックとミスヒットとが同時に起こった状態を示すタイミングチャートである。
【図５】実施形態１のパイプラインプロセッサでインターロックとミスヒットとが同時に起こった状態を示すタイミングチャートである。
【図６】本発明の実施形態１における命令フェッチレジスタの遷移を示した表である。
【図７】本発明の実施形態２のパイプラインプロセッサのブロック図である。
【図８】従来のパイプラインプロセッサでプログラム２を実行した場合のタイミングチャートである。
【図９】実施形態１のパイプラインプロセッサでプログラム２を実行した場合のタイミングチャートである。
【図１０】実施形態２のパイプラインプロセッサでプログラム２を実行した場合のタイミングチャートである
【図１１】実施形態２のパイプラインプロセッサが分岐命令をデコードした場合の動作を説明するためのタイミングチャートである。
【図１２】本発明の実施形態２における命令フェッチレジスタの遷移を示した表である。
【図１３】本発明の実施形態２における命令バッファ群の各々の命令バッファに格納されている内容の遷移をまとめて示した表である。
【符号の説明】
【００７６】
１  外部メモリ、２  命令キャッシュ、３  パイプラインプロセッサ、１０１  プログラムカウンタ、１０３  分岐アドレス計算部、１０５  命令フェッチ要求制御部、１０７  検出部、１０９，７０９  命令フェッチレジスタ制御部、１１１  命令デコード部、１１３  実行部、１１５  レジスタファイル、１１９  命令フェッチレジスタ、１２１  予備レジスタ、７１９  命令バッファ群
【図１】
2006127080.tif 000003
【図２】
2006127080.tif 000004
【図３】
2006127080.tif 000005
【図４】
2006127080.tif 000006
【図５】
2006127080.tif 000007
【図６】
2006127080.tif 000008
【図７】
2006127080.tif 000009
【図８】
2006127080.tif 000010
【図９】
2006127080.tif 000011
【図１０】
2006127080.tif 000012
【図１１】
2006127080.tif 000013
【図１２】
2006127080.tif 000014
【図１３】
2006127080.tif 000015