(57)【要約】      （修正有）【課題】レジスタからの読み出しデータにおける誤り検出時に、プログラム実行動作を停止することなく、継続して実行可能である演算処理装置を提供する。【解決手段】演算処理装置は、レジスタから読み出したデータのエラーを検出し訂正する訂正制御部と、命令の実行要求に応じてキャッシュ領域又はノンキャッシュ領域にアクセスするとともに、実行要求された一の命令がノンキャッシュ領域にアクセスするロード命令であることを通知するキャッシュ制御部と、一の命令がノンキャッシュ領域にアクセスするロード命令であることがキャッシュ制御部により通知されると、一の命令をキャッシュ制御部に実行させる間、他の命令の実行を待たせることにより、ノンキャッシュ領域にアクセスするロード命令の実行中にエラーが検出されないようにする命令実行制御部とを含む。【選択図】図４
2012198803.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリを有する演算処理装置において、
レジスタから読み出したデータのエラーを検出し訂正する訂正制御部と、
命令の実行要求に応じて、前記キャッシュメモリを介してアクセスされるメモリのキャッシュ領域又は前記キャッシュメモリを介さずにアクセスされるメモリのノンキャッシュ領域にアクセスするとともに、実行要求された一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令であることを通知するキャッシュ制御部と、
前記一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令であることが前記キャッシュ制御部により通知されると、前記一の命令を前記キャッシュ制御部に実行させる間、前記訂正制御部がエラーを検出する対象である他の命令の実行を待たせる命令実行制御部と
を含むことを特徴とする演算処理装置。
【請求項２】
前記演算処理装置において、
前記キャッシュ制御部は、前記一の命令の実行要求が再実行要求ではなく最初の実行要求である場合、ノンキャッシュ領域にアクセスすることなく前記一の命令の実行を完了することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記キャッシュ制御部は、前記最初の実行要求である前記一の命令の実行を完了したとき、前記ノンキャッシュ領域へのアクセスが未実行であることを示す信号をアサートして、前記通知を行なうことを特徴とする、請求項２記載の演算処理装置。
【請求項４】
前記演算処理装置において、
前記命令実行制御部は、前記一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令であることが前記キャッシュ制御部により通知されると、前記一の命令が完了未確定の命令中の先頭になるまで待ち、前記一の命令が完了未確定の命令中の先頭になると、命令パイプラインをクリアし、前記一の命令の再フェッチから実行を再開することを特徴とする請求項３記載の演算処理装置。
【請求項５】
前記演算処理装置において、
前記命令実行制御部は、再フェッチされた前記一の命令を前記キャッシュ制御部に対して実行要求し、前記一の命令に後続する他の命令については命令発行を抑止することを特徴とする請求項４記載の演算処理装置。
【請求項６】
前記演算処理装置において、
前記キャッシュ制御部は、前記一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令であることが前記キャッシュ制御部により通知された状態において、前記命令実行制御部により前記一の命令が実行要求されると、ノンキャッシュ領域にアクセスして前記一の命令を実行することを特徴とする請求項５記載の演算処理装置。
【請求項７】
前記演算処理装置において、
前記キャッシュ制御部が前記一の命令の実行を完了すると、前記命令実行制御部は、前記一の命令に後続する前記他の命令について命令発行を開始することを特徴とする請求項６記載の演算処理装置。
【請求項８】
前記演算処理装置において、
前記キャッシュ制御部は、前記一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令である場合、検証モードであるときには、前記命令実行制御部に対して前記一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令であることを通知し、検証モードでないときには、前記命令実行制御部に対して前記一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令であることを通知せずに、ノンキャッシュ領域にアクセスして前記一の命令を実行することを特徴とする請求項１乃至７何れか一項記載の演算処理装置。
【請求項９】
実行要求された一の命令が、キャッシュメモリを介さずにアクセスされるメモリのノンキャッシュ領域にアクセスするメモリアクセス命令であることを通知し、
前記一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令であることの通知があった場合、前記一の命令を前記キャッシュ制御部に実行させる間、他の命令の実行を待たせる
各段階を含むことを特徴とする演算処理方法。
【請求項１０】
前記一の命令の実行要求が再実行要求ではなく最初の実行要求である場合、ノンキャッシュ領域にアクセスすることなく前記一の命令の実行を完了することを特徴とする請求項９記載の演算処理方法。
【請求項１１】
前記一の命令の実行要求が再実行要求ではなく最初の実行要求である場合、前記一の命令の実行を完了したとき、ノンキャッシュ領域アクセス未実行を示す信号をアサートすることにより前記通知を行なうことを特徴とする請求項１０記載の演算処理方法。
【請求項１２】
前記一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令であることが通知されると、前記一の命令が完了未確定の命令中の先頭になるまで待ち、
前記一の命令が完了未確定の命令中の先頭になると、命令パイプラインをクリアし、前記一の命令の再フェッチから実行を再開する
各段階を更に含むことを特徴とする請求項１１記載の演算処理方法。
【請求項１３】
再フェッチされた前記一の命令を実行要求し、前記一の命令に後続する前記他の命令については命令発行を抑止することにより命令実行を待たせることを特徴とする請求項１２記載の演算処理方法。
【請求項１４】
前記一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令であることが通知された状態において、前記一の命令が実行要求されると、ノンキャッシュ領域にアクセスして前記一の命令を実行する段階を更に含むことを特徴とする請求項１３記載の演算処理方法。
【請求項１５】
前記一の命令の実行を完了すると、前記一の命令に後続する前記他の命令について命令発行を開始する段階を更に含むことを特徴とする請求項１４記載の演算処理方法。
【請求項１６】
検証モードである場合、前記一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令であることを通知し、検証モードでないときには、前記一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令であることを通知せずに、ノンキャッシュ領域にアクセスして前記一の命令を実行することを特徴とする請求項９乃至１５何れか一項記載の演算処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、演算処理装置及び演算処理方法に関する。
【背景技術】
【０００２】
半導体製造技術の進歩により、ＣＰＵ（Central Processing Unit）で使用されているトランジスタの微細化及び高集積化が進み、これに伴いトランジスタの故障が多くなってきている。そのようなトランジスタの故障に対応するために、故障箇所を検出する回路を実装することにより、故障が発生した場合であっても故障を検出してＣＰＵの誤動作を防ぐことが考えられる。特に、検出した故障箇所を訂正可能であれば訂正することにより、ＣＰＵを停止することなく継続した動作が可能となる。
【０００３】
このような故障箇所の訂正の技術として、ＣＰＵの固定小数点レジスタや浮動小数点レジスタ等のレジスタファイルから演算実行のために読み出したデータにエラーがある場合に、エラー訂正回路によりエラーを訂正する技術が知られている。この技術では、エラー検出の時点でパイプラインをクリアして、エラー訂正後に再度命令の実行を行うことにより、プログラムを停止することなく、プログラム実行動作を継続することが可能となる。
【０００４】
但し、エラー検出時にノンキャッシュ領域へアクセスするロード命令等のメモリアクセス命令がノンキャッシュ領域にアクセス中であった場合には、ロード命令を再実行することなく、そのままプログラムを停止するように動作が制御される。これは、ノンキャッシュ領域へアクセスするロード命令によりアクセス先のデータ内容が変更する場合があり、ロード命令を再実行して２回目の読み出しを行なったのでは、誤ったデータを読み出す結果となるからである。例えば、ロード命令が、データの読み出しと読み出したデータの変更とを同時に行なう命令（read modify write命令）である場合がある。このような命令は、例えば同期機構の管理のためのセマフォ（semaphore）やミューテックス（mutex）の制御に用いられ、通常は、アクセス先のデータに直接読み書きしない可能性のあるキャッシュを介してのアクセスではなく、ノンキャッシュ領域アクセスとして実行される。また例えばロード命令が単純な読み出し命令であったとしても、アクセス先がＦＩＦＯ（First-In First-Out）やスタックのように読み出しにより次のエントリに移行するようなメモリである場合もある。このような場合も、アクセス先のデータに直接読み書きしない可能性のあるキャッシュを介してのアクセスではなく、ノンキャッシュ領域アクセスとして命令が実行される。
【０００５】
このように、ノンキャッシュ領域へアクセスするロード命令がノンキャッシュ領域にアクセスしている場合であっても、エラー検出時にプログラムを停止してしまうのは、好ましい制御ではない。従って、エラー検出時にプログラムを停止することなく、継続して動作を実行可能である制御が望ましい。
【０００６】
また、ＥＣＣ（Error Correction Code）回路等のエラーを訂正する回路を備えた場合には、エラーが発生したときの制御の動作検証を行う必要がある。これについては、意図的にエラーを発生させることで、エラー発生時の動作の検証を行う技術がある。しかし、動作検証を行うためには、プログラムを停止させることなく動作検証を行うことが望ましい。そこで従来は、エラーがある場合の動作検証の方式として、ノンキャッシュ領域へアクセスするロード命令が出現しないプログラムを動作検証用に特別に作成し、そのような特別なプログラムを実行することにより、動作検証を行っていた。しかしながら、このような特別なプログラムのみでしか動作検証を行うことができない場合、検証のカバレッジが低いという問題点がある。また、特別にプログラムを作成するためには、その分の時間とコストとが余計に必要になるという問題点がある。そこで、特別に作成したのではない通常動作用のプログラムを用いて、固定小数点レジスタや浮動小数点レジスタから演算を行うために読み出したデータが誤っていた場合の動作検証を実行可能であることが望ましい。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特願２００９−５１９１２１号
【特許文献２】特願２００９−５２０１３６号
【特許文献３】特開平５−２７４１７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
以上を鑑みると、レジスタからの読み出しデータにおける誤り検出時に、プログラム実行動作を停止することなく、継続して実行可能である演算処理装置及び演算処理方法が望まれる。
【課題を解決するための手段】
【０００９】
キャッシュメモリを有する演算処理装置は、レジスタから読み出したデータのエラーを検出し訂正する訂正制御部と、命令の実行要求に応じて、前記キャッシュメモリを介してアクセスされるメモリのキャッシュ領域又は前記キャッシュメモリを介さずにアクセスされるメモリのノンキャッシュ領域にアクセスするとともに、実行要求された一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令であることを通知するキャッシュ制御部と、前記一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令であることが前記キャッシュ制御部により通知されると、前記一の命令を前記キャッシュ制御部に実行させる間、前記訂正制御部がエラーを検出する対象である他の命令の実行を待たせる命令実行制御部とを含むことを特徴とする。
【００１０】
演算処理方法は、実行要求された一の命令が、キャッシュメモリを介さずにアクセスされるメモリのノンキャッシュ領域にアクセスするメモリアクセス命令であることを通知し、
前記一の命令がノンキャッシュ領域にアクセスするメモリアクセス命令であることの通知があった場合、前記一の命令を前記キャッシュ制御部に実行させる間、他の命令の実行を待たせる各段階を含むことを特徴とする。
【発明の効果】
【００１１】
本願開示の少なくとも１つの実施例によれば、ノンキャッシュ領域にアクセスするロード命令の場合には、他の命令が実行されない状態において単独で実行される。従って、ノンキャッシュ領域にアクセスするロード命令の実行時には、レジスタからの読み出しデータにおける誤り検出が発生することもない。即ち、レジスタからの読み出しデータにおける誤り検出時には、ノンキャッシュ領域にアクセスするロード命令が実行中であることはなく、プログラム実行動作を停止させずに継続して実行可能である。
【図面の簡単な説明】
【００１２】
【図１】情報処理システムの構成の一例を示す図である。
【図２】図１に示す１つのコアの構成の一例を示す図である。
【図３】エラー検出＆訂正制御部によるエラー訂正処理の流れを示す図である。
【図４】ノンキャッシュ領域にアクセスするロード命令を実行する際の制御の流れを説明するための図である。
【図５】ノンキャッシュ領域にアクセスするロード命令を実行する際の制御の流れを示すフローチャートである。
【図６】ノンキャッシュ領域にアクセスするロード命令を実行する際の動作の推移を示す図である。
【図７】命令デコーダの動作の流れを示すフローチャートである。
【図８】１次データキャッシュ制御部の動作の流れを示すフローチャートである。
【図９】命令完了制御部の動作の流れを示すフローチャートである。
【図１０】１次データキャッシュ制御部の動作の流れの変形例を示すフローチャートである。
【図１１】ノンキャッシュアクセス再実行モード指示部の回路構成の一例を示す図である。
【図１２】命令デコーダの命令発行部の構成の一例を示す図である。
【図１３】１次データキャッシュ制御部の回路構成の一例を示す図である。
【図１４】検証モードであるか否かに応じて異なる制御を実行する１次データキャッシュ制御部の構成の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１４】
図１は、情報処理システムの構成の一例を示す図である。図１に示す情報処理システムは、演算処理等を実行する処理ユニットであるＣＰＵ（Central Processing Unit）１１、メモリ装置であるＤＩＭＭ（Dual Inline Memory Module）１２、及び外部機器や他のノードとのデータ入出力のためのインターコネクト部１３を含む。ＣＰＵ１１は、複数のコア１４、共用の２次キャッシュ１５、及びＭＡＣ（Memory Access Controller）１６を含む。ＭＡＣ１６は、ＣＰＵ１１からＤＩＭＭ１２に対するデータの読み書き動作の制御を行う。
【００１５】
複数のコア１４の各々は、一次キャッシュを内蔵する。コア１４内部の命令実行制御部から見たときに、１次キャッシュをアクセス可能であるとともに、更に２次キャッシュをアクセス可能となっている。このようにキャッシュメモリを多階層化した構成により、キャッシュミスが発生した場合に、主記憶にアクセスすることによるペナルティーを軽減する。この例では、１次キャッシュと主記憶（ＤＩＭＭ１２）との間に、主記憶よりは高速にアクセスできる２次キャッシュ１５を設けている。これにより、１次キャッシュにおいてキャッシュミスが発生した場合に、主記憶にアクセスが必要になる頻度を低くして、キャッシュミス・ペナルティーを軽減することができる。
【００１６】
ＣＰＵ１１と外部機器や他のノード（ＣＰＵ）とのデータのやり取りは、インターコネクト部１３により制御される。この情報処理システム１０のＣＰＵ＆メモリボードには、１ＣＰＵのみが搭載される構成となる。ノンキャッシュ領域へアクセスするロード命令等がアクセスする領域は、例えばＭＡＣ１６内部やインターコネクト部１３に存在するレジスタ等の領域である。
【００１７】
図２は、図１に示す１つのコア１４の構成の一例を示す図である。なお図２及び以降の同様の図において、各ボックスで示される各機能ブロックと他の機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各機能ブロックは、他のブロックと物理的にある程度分離された１つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の１つの機能を示したものであってもよい。各機能ブロックは、他のブロックと論理的にある程度分離された１つのモジュールであってもよいし、或いは他のブロックと論理的に一体となったモジュール中の１つの機能を示したものであってもよい。
【００１８】
コア１４は、命令バッファ２１、命令デコーダ２２、ＲＳＡ（Reservation Station for Address generate）２３、ＲＳＥ（Reservation Station for Execute）２４、及びＲＳＦ（Reservation Station for Floating）２５を含む。コア１４は更に、ＲＳＢＲ（Reservation Station for Branch）２６、ＣＳＥ（Commit Stack Entry）２７、１次データキャッシュ制御部２８、演算器２９、演算器３０、ネクストプログラムカウンタ（ＮＥＸＴＰＣ：NEXT Program Counter）３１、及びプログラムカウンタ（ＰＣ：Program Counter）３２を含む。コア１４は更に、固定小数点リネーミングレジスタ３３、浮動小数点リネーミングレジスタ３４、固定小数点レジスタ３５、浮動小数点レジスタ３６、エラー検出＆訂正制御部３７、分岐予測機構３８、及び命令フェッチアドレス生成器３９を含む。コア１４は更に、１次命令キャッシュ４０及びパイプラインクリア制御部４１を含む。１次データキャッシュ制御部２８内には、オペランドアドレス生成器４２及び１次データキャッシュ４３が含まれる。
【００１９】
命令フェッチアドレス生成器３９は、プログラムカウンタ３２から供給された命令アドレス及び分岐予測機構３８からの情報に基づいて、命令フェッチアドレスを生成する。この際、分岐予測機構３８は、ＲＳＢＲ２６からの情報に基づき分岐予測を行う。命令フェッチアドレス生成器３９は、命令フェッチアドレスと命令フェッチリクエストとを１次命令キャッシュ４０に発行し、この命令フェッチアドレスに対応する命令をフェッチする。フェッチされた命令は、命令バッファ２１に格納される。命令バッファ２１は、プログラムの命令順通り即ちインオーダーで格納した命令を命令デコーダ２２に供給する。命令デコーダ２２は、プログラムの命令順通り即ちインオーダーで命令のデコード処理を行い、インオーダーで命令を発行する。この命令発行処理により、命令デコーダ２２は、デコードした命令の種類に従って、ＲＳＡ２３、ＲＳＥ２４、ＲＳＦ２５、又はＲＳＢＲ２６に各命令を示すエントリを作成する。
【００２０】
ＲＳＡ２３は、主記憶オペランドアドレスを生成してロード命令やストア命令を実行するために、作成されたエントリをプログラムの命令順に拘束されず即ちアウトオブオーダーで制御するリザベーションステーションである。ＲＳＡ２３による制御に基づいて、１次データキャッシュ制御部２８のオペランドアドレス生成器４２がアクセス先のアドレスを生成し、１次データキャッシュ４３の当該アドレスに対してロード命令やストア命令が実行される。ロード命令により読み出されたデータは、固定小数点リネーミングレジスタ３３又は浮動小数点リネーミングレジスタ３４の指定されたレジスタに格納される。ＲＳＥ２４は、指定されたレジスタのデータに対して指定された固定小数点演算を実行するために、作成されたエントリをアウトオブオーダーで制御するリザベーションステーションである。ＲＳＥ２４による制御に基づいて、演算器２９が、固定小数点リネーミングレジスタ３３の指定されたレジスタのデータに対して指定された固定小数点演算を実行し、固定小数点リネーミングレジスタ３３の指定されたレジスタに演算結果を格納する。ＲＳＦ２５は、指定されたレジスタのデータに対して指定された浮動小数点演算を実行するために、作成されたエントリをアウトオブオーダーで制御するリザベーションステーションである。ＲＳＦ２５による制御に基づいて、演算器３０が、浮動小数点リネーミングレジスタ３４の指定されたレジスタのデータに対して指定された浮動小数点演算を実行し、浮動小数点リネーミングレジスタ３４の指定されたレジスタに演算結果を格納する。ＲＳＢＲ２６は、分岐命令を実行するためのリザベーションステーションであり、命令の分岐先の情報をネクストプログラムカウンタ３１と分岐予測機構３８とに供給する。
【００２１】
命令デコーダ２２は更に、全てのデコードされた命令に対して、命令の完了をインオーダーで制御するＣＳＥ２７にエントリを作成する。ＲＳＡ２３、ＲＳＥ２４、ＲＳＦ２５、及びＲＳＢＲ２６の制御により命令が実行されると、実行完了した命令の識別子と共に実行完了報告が生成される。実行完了された命令については、それに対応するエントリがＣＳＥ２７からインオーダーで（即ちプログラムの命令順通りに）開放されていき、これによりインオーダーで命令の完了が確定していく。ＣＳＥ２７から開放され完了が確定する命令については、対応する資源の更新を行なう。ロード命令、固定小数点演算命令、浮動小数点演算命令等の場合には、固定小数点リネーミングレジスタ３３や浮動小数点リネーミングレジスタ３４のデータを、固定小数点レジスタ３５や浮動小数点レジスタ３６に転送し、命令実行結果をソフトウェアからアクセス可能なレジスタに反映させる。また同時に、プログラムカウンタ３２の値をネクストプログラムカウンタ３１に応じた値に更新すると共に、ネクストプログラムカウンタ３１の値を、次にフェッチする命令のアドレスを指し示すように適切な増分だけ変化させる。これによりプログラムカウンタ３２は、実行完了してＣＳＥ２７から開放された命令の次の命令のアドレスを指し示すことになる。なお分岐命令が実行完了される場合には、ネクストプログラムカウンタ３１には分岐先アドレスが格納される。
【００２２】
パイプラインクリア制御部４１は、分岐ミスが発生した場合や後述するエラーが発生した場合等、所定の条件が満たされるときに、実行した結果をキャンセルするため、コア１４が実行している命令のパイプラインをクリアする。命令フェッチアドレス生成器３９、命令バッファ２１、命令デコーダ２２、ＲＳＡ２３、ＲＳＥ２４、ＲＳＦ２５、ＲＳＢＲ２６、ＣＳＥ２７等においては、命令フェッチ、命令デコード、命令発行、命令実行、命令完了待ち等の各実行フェーズの命令が並んでいる。パイプラインクリア制御部４１による命令のパイプラインのクリアにより、これらの各実行フェーズの命令を全て削除し、各実行フェーズを全て空の状態とする。
【００２３】
エラー検出＆訂正制御部３７は、固定小数点レジスタ３５又は浮動小数点レジスタ３６から１ビットエラーが発生したデータを演算実行のために読み出したときに、１ビットエラーを検出して、当該エラーを訂正する。このエラー検出及びエラー訂正は、例えばＥＣＣ（Error Correction Code）を利用したものでよい。エラー検出＆訂正制御部３７は、制御動作の検証のために、固定小数点レジスタ３５又は浮動小数点レジスタ３６からの読み出しデータに対して故意に１ビットエラーを発生させることができる。
【００２４】
図３は、エラー検出＆訂正制御部３７によるエラー訂正処理の流れを示す図である。図３に示されるように、演算命令が発行され、演算が実行開始されると、故障のあるレジスタが保持する値を読み出したことによりエラーが発生する。これに応じて、エラー検出＆訂正制御部３７がエラー訂正処理を実行するとともに、パイプラインクリア制御部４１がパイプラインをクリアする。その後、演算命令を再フェッチして再発行することにより、演算を実行し、演算を完了する。この演算実行時には、エラー訂正処理によりエラーが訂正されているので、正しい演算結果が得られる。
【００２５】
図４は、ノンキャッシュ領域にアクセスするロード命令を実行する際の制御の流れを説明するための図である。図４において、図１と同一又は対応する要素は同一の番号で参照し、その説明は適宜省略する。図４において、命令完了制御部２７は図２のＣＳＥ２７に対応し、オペランドアドレス実行制御部２３はＲＳＡ２３に対応する。命令デコーダ２２、１次データキャッシュ制御部２８、及びパイプラインクリア制御部４１は、図２の命令デコーダ２２、１次データキャッシュ制御部２８、及びパイプラインクリア制御部４１である。ノンキャッシュアクセス再実行モード指示部５１は、１ビットのフリップフロップ及びその設定を制御する回路を含んでよく、図２には明示的に示されていないが、例えばパイプラインクリア制御部４１に付随して設けられていてよい。検証モードレジスタ５２も１ビットのフリップフロップであってよく、図２には明示的に示されていないが、例えばエラー検出＆訂正制御部３７に付随して設けられていてよい。命令デコーダ２２、オペランドアドレス実行制御部２３、命令完了制御部２７、パイプラインクリア制御部４１、及びノンキャッシュアクセス再実行モード指示部５１を纏めて、命令実行制御部５０として示してある。
【００２６】
本実施例のノンキャッシュ領域にアクセスするロード命令を実行する際の基本的な制御についてまず説明する。１次データキャッシュ制御部２８は、命令の実行要求に応じてキャッシュ領域又はノンキャッシュ領域にアクセスするとともに、実行要求された命令がノンキャッシュ領域にアクセスするロード命令であることを１次データキャッシュ制御部２８に通知する。当該命令がノンキャッシュ領域にアクセスするロード命令であることが１次データキャッシュ制御部２８により通知されると、命令実行制御部５０は、当該命令を１次データキャッシュ制御部２８に実行させる間、他の命令の実行を待たせる。これにより、ノンキャッシュ領域にアクセスするロード命令の実行中に、エラー検出＆訂正制御部３７（図２）によりエラーが検出されないようにしたり、又は、検出されたエラーを無視することができる。即ち、ノンキャッシュ領域に対するロード命令が実行される間は、他の命令が実行されないので、他の命令がレジスタを読み出すこともなく、従ってエラーが検出されることもない。
【００２７】
上記の制御を実現するために、図４に示されるように、命令実行制御部５０にノンキャッシュアクセス再実行モード指示部５１が設けられると共に、種々の信号がやり取りされる。１次データキャッシュ制御部２８は、当該命令の実行要求が再実行要求ではなく最初の実行要求である場合、ノンキャッシュ領域にアクセスすることなく当該命令の実行を完了する。これにともない、１次データキャッシュ制御部２８は、当該命令の実行完了を命令実行制御部５０の命令完了制御部２７に報告すると共に、ノンキャッシュ領域アクセス未実行を示す信号をアサートすることにより前記通知を行なう。
【００２８】
命令実行制御部５０は、ノンキャッシュ領域アクセスが未実行である旨を示す信号がアサートされると、当該命令が完了未確定の命令中の先頭になるまで待ち、当該命令が完了未確定の命令中の先頭になるとノンキャッシュアクセス再実行モード信号をアサートする。具体的には、命令完了制御部（ＣＳＥ）２７が、格納エントリ中で当該命令に対応するエントリが先頭になると、ノンキャッシュアクセス再実行モード指示部５１に対してノンキャッシュアクセスの再実行を要求する。これに応じて、ノンキャッシュアクセス再実行モード指示部５１には例えば“１”が格納され、ノンキャッシュアクセス再実行モード信号がアサートされる。また命令実行制御部５０において、命令完了制御部２７からのノンキャッシュアクセスの再実行要求に応じて、パイプラインクリア制御部４１がパイプラインをクリアし、当該命令の再フェッチから実行を再開する。具体的には、命令実行制御部５０において、命令デコーダ２２が再フェッチされた当該命令をデコードして発行し、オペランドアドレス実行制御部２３が当該命令を１次データキャッシュ制御部２８に対して実行要求する。この際、ノンキャッシュアクセス再実行モード信号がアサート状態であるので、命令デコーダ２２は、当該命令に後続する他の命令については命令発行しないことにより命令実行を待たせる。
【００２９】
１次データキャッシュ制御部２８は、ノンキャッシュアクセス再実行モード信号がアサートされている状態において命令実行制御部５０により当該命令が実行要求されると、ノンキャッシュ領域にアクセスして当該命令を実行する。１次データキャッシュ制御部２８が当該命令の実行を完了すると、命令実行制御部５０は、ノンキャッシュアクセス再実行モード信号をネゲートし、当該命令に後続する他の命令について命令発行を開始する。具体的には、命令実行制御部５０において、命令完了制御部２７から当該命令の実行完了がノンキャッシュアクセス再実行モード指示部５１に通知され、これに応答してノンキャッシュアクセス再実行モード指示部５１の出力するノンキャッシュアクセス再実行モード信号がネゲート状態となる。このノンキャッシュアクセス再実行モード信号のネゲート状態に応答して、命令デコーダ２２が、当該命令に後続する他の命令について命令発行を開始する。
【００３０】
１次データキャッシュ制御部２８は、検証モードである場合には、命令実行制御部５０に対して当該命令がノンキャッシュ領域にアクセスするロード命令であることを通知してよい。また１次データキャッシュ制御部２８は、検証モードでない場合、命令実行制御部５０に対して当該命令がノンキャッシュ領域にアクセスするロード命令であることを通知せずに、ノンキャッシュ領域にアクセスして当該命令を実行してよい。即ち、検証モードである場合のみ、前述のようにパイプラインをクリアし他の命令実行を待たせながら当該ロード命令を再実行し、検証モードでない場合には、他の命令と同様の通常の制御に従い当該ロード命令を実行してよい。なお、この検証モードであるか否かは、検証モードレジスタ５２の設定に応じた検証モード信号が示すものであってよい。このように検証モードでのみノンキャッシュ領域へアクセスするロード命令に対して特別な制御をすることにより、通常動作時においてノンキャッシュ領域へアクセスする全てのロード命令の実行が低速となるという問題を回避できる。検証モードにおいて、ノンキャッシュ領域へアクセスするロード命令に対して特別な制御を行なうことで、特別な検証用のプログラムを作成する必要もなく、効率的にエラー訂正制御動作を検証することができる。
【００３１】
図５は、ノンキャッシュ領域にアクセスするロード命令を実行する際の制御の流れを示すフローチャートである。また図６は、ノンキャッシュ領域にアクセスするロード命令を実行する際の動作の推移を示す図である。
【００３２】
図５のステップＳ１で、ロード命令をデコードする。ステップＳ２で、ステップＳ１でデコードされた命令がノンキャッシュ領域へのアクセスを行なう命令であるか否かを判定する。デコードされた命令がノンキャッシュ領域へのアクセスを行なう命令である場合、ステップＳ３で、ノンキャッシュアクセス再実行モードであるか否か（即ち当該命令に対する最初の実行要求ではなく再実行要求であるか否か）を判定する。再実行モードでない場合には、ステップＳ４で、当該ロード命令を実行することなく、当該ロード命令が、並んだ命令列の先頭になるまで待つ。即ち、ロード命令がＣＳＥ２７のエントリの先頭になるまで待つ。当該ロード命令がＣＳＥ２７の保持するプログラム／命令列の先頭になると、ステップＳ５で、ノンキャッシュアクセス再実行モードをオンにする。更にステップＳ６で、パイプラインをクリアして、当該ロード命令を再フェッチする。なおこの際、図３のプログラムカウンタ３２が示している命令アドレスから再命令フェッチを行えばよい。このときプログラムカウンタ３２は、ＣＳＥ２７のエントリの先頭の命令でありノンキャッシュ領域へアクセスする当該ロード命令を指している。図６に示されるように、パイプラインクリアを実行（Ｔ１）することにより、当該ロード命令に後続して発行されていた命令の実行がキャンセルされる。
【００３３】
図５のステップＳ７で、ノンキャッシュアクセス命令のみを再デコードして再発行する。ステップＳ８で、ステップＳ７ｄｅ再デコードされた命令がノンキャッシュ領域へのアクセスを行なう命令であるか否かを判定する。再デコードされた命令がノンキャッシュ領域へのアクセスを行なう命令である場合、ステップＳ９で、ノンキャッシュアクセス再実行モードであるか否か（即ち当該命令に対する最初の実行要求ではなく再実行要求であるか否か）を判定する。再実行モードである場合には、ステップＳ１０で、ノンキャッシュ領域へのアクセスを実行して当該ロード命令を実行する。更にステップＳ１１で、当該ロード命令の実行を完了する。図６に示されるように、ノンキャッシュアクセスを実行（Ｔ２）する間、後続の命令の発行を抑止（Ｔ３）した状態になっている。従って、ノンキャッシュ領域に対するロード命令が実行される間は、他の命令が実行されないので、他の命令がレジスタを読み出すこともなく、従ってエラーが検出されることもプログラムが停止することもない。
【００３４】
図５のステップＳ１２で、ノンキャッシュアクセス再実行モードをオフにする。即ち、図４の命令完了制御部２７がノンキャッシュアクセス再実行モード指示部５１をリセットし、ノンキャッシュアクセス再実行モード信号をネゲート状態にする。ステップＳ１３で、後続の命令のデコード及び発行を開始する。
【００３５】
図７は、命令デコーダ２２の動作の流れを示すフローチャートである。ステップＳ２１において、命令デコーダ２２は、フェッチされた命令を命令バッファ２１から受け取る。ステップＳ２２で、命令デコーダ２２は、ノンキャッシュアクセス再実行モードであるのか否かを判定する。ノンキャッシュアクセス再実行モードでないとステップＳ２２で判定された場合、ステップＳ２３に進み、命令デコーダ２２は、通常動作時と同様にフェッチされた命令を発行する。ノンキャッシュアクセス再実行モードであるとステップＳ２２で判定された場合、ステップＳ２４に進み、命令デコーダ２２は、１命令をデコードしたか否かを判定する。ノンキャッシュアクセス再実行モードにおいて未だ１命令もデコードしていないと判定した場合、ステップＳ２６で、命令デコーダ２２は１命令のみ命令デコードして命令発行する。この命令は、ノンキャッシュアクセス再実行モードにおいて最初の命令（即ちパイプラインクリア後の最初の命令）であり、ノンキャッシュ領域へアクセスするロード命令である。即ち、命令デコーダ２２は、オペランドアドレス実行制御部（ＲＳＡ）２３に対して、１つのエントリを作成して当該ロード命令を格納する。ノンキャッシュアクセス再実行モードにおいて既に１命令デコードしたとステップＳ２４で判定された場合、ステップＳ２５で、命令デコーダ２２は当該ロード命令に後続する命令を発行しない。
【００３６】
図８は、１次データキャッシュ制御部２８の動作の流れを示すフローチャートである。ステップＳ３１で、オペランドアドレス実行制御部２３からの命令実行要求がされる。ステップＳ３２で、１次データキャッシュ制御部２８は、実行要求された命令がノンキャッシュ領域へアクセスするロード命令であるかを判別する。この判別は、当該ロード命令に対してレジスタ指定等に基づき求められたオペランドアドレスが、ノンキャッシュ領域に属するか否かを判定することにより行なわれる。ステップＳ３３で、ノンキャッシュアクセス再実行モードであるか否かが判定される。ノンキャッシュアクセス再実行モードでないと判定された場合（即ち、当該ロード命令が再実行要求ではなく最初の実行要求である場合）、ステップＳ３４で、１次データキャッシュ制御部２８はノンキャッシュ領域へのアクセスを実行しない。ステップＳ３５で、１次データキャッシュ制御部２８は、ノンキャッシュ領域へのアクセスを実行せずに、命令完了制御部２７へ実行完了とノンキャッシュ領域へのアクセスの未実行とを報告する。
【００３７】
ノンキャッシュアクセス再実行モードであるとステップＳ３３で判定された場合（即ち再実行要求である場合）、ステップＳ３６で、１次データキャッシュ制御部２８はノンキャッシュ領域へのアクセスを実行する。ノンキャッシュ領域へのアクセスの実行が完了すると、ステップＳ３７で、１次データキャッシュ制御部２８は命令完了制御部２７へ実行完了を報告する。
【００３８】
図９は、命令完了制御部２７の動作の流れを示すフローチャートである。ステップＳ４１で、命令デコーダ２２からデコード及び発行された全命令に対して、デコードされた順番にＣＳＥエントリが命令完了制御部２７に作成される。ステップＳ４２で、命令完了制御部２７は、最も古いエントリから順番に完了判別を行い、プログラムの順番通りに命令を完了していく。１次データキャッシュ制御部２８から実行完了報告とノンキャッシュ領域アクセス未実行を示す信号とが送られてくると、同時に送られてくるエントリ番号に示されるエントリに、実行完了及びノンキャッシュ領域へのアクセスが未実行である旨を格納する。ステップＳ４３で、命令完了制御部２７は、完了判別したエントリに対してノンキャッシュ領域へのアクセスが未実行である旨を示す信号がオンであるか否かを判定する。ノンキャッシュ領域へのアクセスが未実行である旨を示す信号がオンである場合、当該エントリはそれより古いエントリと同時に完了することはできずに、命令完了制御部２７が有する複数のエントリのうち当該エントリが最も古いエントリになるまで待つ（ステップＳ４４のＮＯ）。当該エントリが最も古いエントリ（即ちプログラムの先頭に対応するエントリ）になると（ステップＳ４４のＹＥＳ）、ステップＳ４５で、命令完了制御部２７は、当該エントリを完了することなく、ノンキャッシュアクセス再実行モードをオンにする。更にステップＳ４６で、命令完了制御部２７は、命令パイプラインをクリアするための要求を発行し、次サイクルでパイプラインクリア制御部４１が命令パイプラインをクリアする。
【００３９】
命令パイプラインのクリア後に、当該ロード命令（ノンキャッシュ領域へアクセスするロード命令）が再フェッチされ再デコードされ、命令完了制御部２７に対応エントリが作成される。命令完了制御部２７は、当該ロード命令に対して１次データキャッシュ制御部２８から完了報告が通知されるのを待つ。１次データキャッシュ制御部２８から実行完了報告が送られてくると、同時に送られてくるエントリ番号に示されるエントリ（当該ロード命令のエントリ）に、実行完了の旨を格納する。ステップＳ４３で、命令完了制御部２７は、完了判別したエントリ（当該ロード命令のエントリ）に対してノンキャッシュ領域アクセス未実行を示す信号がオンであるか否かを判定する。ノンキャッシュ領域アクセス未実行を示す信号がオンでない場合、ステップＳ４７で、命令完了制御部２７は、当該ロード命令の命令完了を確定させるか否かを判定する。この際、命令完了の確定はプログラムにおける命令の順序通り、即ちインオーダーで行なう必要がある。命令完了を確定させる場合（ステップＳ４７のＹＥＳ）、ノンキャッシュアクセス再実行モードをオフする（ステップＳ４８）とともに、レジスタ等の資源の更新を行う（ステップＳ４９）。
【００４０】
図１０は、１次データキャッシュ制御部２８の動作の流れの変形例を示すフローチャートである。図１０において、図８と同一のステップは同一の番号で参照し、その説明は適宜省略する。図１０の動作の流れは、検証モードであるか否かを判定するステップＳ３９が設けられている点が、図８の動作の流れと異なる。検証モードがオフである場合（ステップＳ３９でＮＯの場合）、ノンキャッシュアクセス再実行モードのオン又はオフに関わらず、ステップＳ３６で、１次データキャッシュ制御部２８はノンキャッシュ領域へのアクセスを実行する。実行が完了すると、ステップＳ３７で、１次データキャッシュ制御部２８は命令完了制御部２７へ実行完了を報告する。
【００４１】
検証モードがオンである場合（ステップＳ３９でＹＥＳの場合）のみ、ステップＳ３３で、ノンキャッシュアクセス再実行モードであるか否かが判定される。そして、そのノンキャッシュアクセス再実行モードであるか否かの判定結果に従い、ノンキャッシュ領域へのアクセスの実行又は非実行が制御される。この場合の制御動作は、図８の場合と同様となる。
【００４２】
図１０に示すように、検証モードでのみノンキャッシュ領域へアクセスするロード命令に対して特別な制御をすることにより、通常動作時においてノンキャッシュ領域へアクセスする全てのロード命令の実行が低速となるという問題を回避できる。また検証モードにおいて、ノンキャッシュ領域へアクセスするロード命令に対して特別な制御を行なうことで、特別な検証用のプログラムを作成する必要もなく、効率的にエラー訂正制御動作を検証することができる。
【００４３】
図１１は、ノンキャッシュアクセス再実行モード指示部５１の回路構成の一例を示す図である。ノンキャッシュアクセス再実行モード指示部５１は、否定回路であるインバータ６０、否定論理積回路であるＮＡＮＤ回路６１、論理積回路であるＡＮＤ回路６２及び６３、論理和回路であるＯＲ回路６４、及び記憶回路であるラッチ（フリップフロップ）６５を含む。ラッチ６５には、所定サイクルの同期信号（クロック信号）が供給されており、各サイクルにおいてＯＲ回路６４の出力により格納値が更新される。
【００４４】
命令完了制御部２７の出力するノンキャッシュアクセスアクセス再実行要求信号＋ＮＯＮＣＡＣＨＥ＿ＡＣＣＥＳＳ＿ＲＥＲＵＮ＿ＲＥＱＵＥＳＴが１であり且つパイプラインクリア信号+ＰＩＰＥＬＩＮＥ＿ＣＬＥＡＲが０のときに、ラッチ６５が１に設定される。これにより、ノンキャッシュアクセス再実行モード信号+ＮＯＮＣＡＣＨＥ＿ＡＣＣＥＳＳ＿ＲＥＲＵＮ＿ＭＯＤＥがアサート状態（この例では１の状態）となる。命令完了制御部２７が出力するプログラム先頭の命令の完了を示す信号+ＴＯＱ＿ＣＳＥ＿ＥＮＤが１で且つパイプラインクリア信号+ＰＩＰＥＬＩＮＥ＿ＣＬＥＡＲ信号が０の条件が成立するまで、ラッチ６５の出力はフィードバック経路により１に維持される。即ち、ノンキャッシュアクセス再実行モード信号+ＮＯＮＣＡＣＨＥ＿ＡＣＣＥＳＳ＿ＲＥＲＵＮ＿ＭＯＤＥはアサート状態に維持されることになる。
【００４５】
図１２は、命令デコーダ２２の命令発行部の構成の一例を示す図である。命令デコーダ２２は、命令発行制御部７０、インバータ７１及び７２、ＡＮＤ回路７３乃至７７、ＯＲ回路７８、及びラッチ（フリップフロップ）７９を含む。ラッチ６５には、所定サイクルの同期信号（クロック信号）が供給されており、各サイクルにおいてＡＮＤ回路７７の出力により格納値が更新される。
【００４６】
命令発行制御部７０は、複数の命令をプログラムにおける命令の順序通り、即ちインオーダーで順次供給され、命令発行を示すそれぞれ１ビットの信号＋Ｄ０＿ＲＥＬ、＋Ｄ１＿ＲＥＬ、＋Ｄ２＿ＲＥＬを生成する。これらの信号は、対応する命令のインオーダー順に＋Ｄ０＿ＲＥＬ、＋Ｄ１＿ＲＥＬ、＋Ｄ２＿ＲＥＬであり、この順番に順次１となる。ラッチ７９は初期状態において０に設定されており、＋Ｄ０＿ＲＥＬが１になると、ＡＮＤ回路７３の出力が１になり、最初の命令発行を行ったことを示す＋Ｄ０＿ＩＳＳＵＥ信号が１になる。またノンキャッシュアクセス再実行モード信号＋ＮＯＮＣＡＣＨＥ＿ＡＣＣＥＳＳ＿ＲＥＲＵＮ＿ＭＯＤＥが１になったときに、ＡＮＤ回路７７の出力が１となり、ラッチ７９に１が設定される。このラッチ７９の出力信号と＋ＮＯＮＣＡＣＨＥ＿ＡＣＣＥＳＳ＿ＲＥＲＵＮ＿ＭＯＤＥとのＡＮＤによりラッチ７９を更新することで、+ＮＯＮＣＡＣＨＥ＿ＡＣＣＥＳＳ＿ＲＥＲＵＮ＿ＭＯＤＥが１である間、ラッチ７９の出力は１に維持される。またＡＮＤ回路７３は、ラッチ７９の出力の反転信号と＋Ｄ０＿ＲＥＬ信号をＡＮＤする。従って、ラッチ７９の出力が１である間は、命令発行を示す＋Ｄ０＿ＩＳＳＵＥ信号が１にならず、この間は命令を発行することができない。更に、＋D1＿ＲＥＬと＋Ｄ２＿ＲＥＬ信号については、＋ＮＯＮＣＡＣＨＥ＿ＡＣＣＥＳＳ＿ＲＥＲＵＮ＿ＭＯＤＥ又はラッチ７９の出力信号の何れかが１である間は、ＡＮＤ回路７５及び７６によりブロックされる。従って、この間は命令発行信号＋D1＿ＩＳＳＵＥ及び＋Ｄ２＿ＩＳＳＵＥが１になることはない。
【００４７】
これにより、ノンキャッシュアクセス再実行モード信号が１になってから、プログラムの先頭の１命令のみを発行し、後続の命令は発行しない制御が可能となる。なお図１２に示したのは、同時に３命令同時デコード可能な回路であるが、４命令以上同時デコード可能な回路でも、同様の構成で実現可能である。
【００４８】
図１３は、１次データキャッシュ制御部２８の回路構成の一例を示す図である。１次データキャッシュ制御部２８は、オペランドアドレス生成器８０、ノンキャッシュアクセス制御部８１、ＡＮＤ回路８２及び８３、１次データキャッシュ８４、実行完了選択回路８６、及びフリップフロップ８７乃至８９を含む。なお１次データキャッシュ８４が図３の１次データキャッシュ４３に対応し、オペランドアドレス生成器８０がオペランドアドレス生成器４２に対応する。
【００４９】
オペランドアドレス実行制御部（ＲＳＡ）２３からの命令実行要求に応答して、オペランドアドレス生成器８０が、実行要求された命令のオペランドアドレスを生成する。ノンキャッシュアクセス制御部８１は、命令実行要求に応答して、実行要求された命令がロード命令であるか否かを認識する。ノンキャッシュアクセス制御部８１は更に、実行要求された命令がロード命令であり且つオペランドアドレス生成器８０の生成したアドレスがノンキャッシュ領域を示す場合、ノンキャッシュアクセス信号＋ＮＯＮＣＡＣＨＥ＿ＬＯＡＤ＿ＲＥＱＵＥＳＴを出力する。このノンキャッシュアクセス信号＋ＮＯＮＣＡＣＨＥ＿ＬＯＡＤ＿ＲＥＱＵＥＳＴが１であっても、ノンキャッシュアクセス再実行モード信号＋ＮＯＮＣＡＣＨＥ＿ＡＣＣＥＳＳ＿ＲＥＲＵＮ＿ＭＯＤＥが０の場合、ＡＮＤ回路８２の出力は０となる。従ってこの場合、ノンキャッシュ領域８５に対するアクセスは実行されない。＋ＮＯＮＣＡＣＨＥ＿ＬＯＡＤ＿ＲＥＱＵＥＳＴが１で且つ＋ＮＯＮＣＡＣＨＥ＿ＡＣＣＥＳＳ＿ＲＥＲＵＮ＿ＭＯＤＥが１のとき、ＡＮＤ回路８２の出力が１となり、ノンキャッシュ領域８５に対するアクセスが実行される。
【００５０】
１次データキャッシュ８４からの実行完了信号、ノンキャッシュ領域８５からの実行完了信号、及びノンキャッシュ領域アクセス未実行を示す信号（ＡＮＤ回路８３の出力）のうちの１つが、実行完了選択回路８６により選択される。実行完了選択回路８６は、実行完了信号を選択することにより、実行完了を示す信号＋Ｌ１＿ＤＣＡＣＨＥ＿ＥＸＥＣ＿ＣＯＭＰを生成し、命令完了制御部２７に送る。また、ノンキャッシュ領域アクセス未実行を示す信号が実行完了信号として選択されたときに、ノンキャッシュ領域アクセス未実行信号＋ＮＯＴ＿ＥＸＥＣ＿ＮＯＮＣＡＣＨＥ＿ＬＯＡＤが命令完了制御部２７に送られる。
【００５１】
図１４は、検証モードであるか否かに応じて異なる制御を実行する１次データキャッシュ制御部２８の構成の一例を示す図である。図１４には、図１３の１次データキャッシュ制御部２８の構成と異なる部分及びその周辺のみが示される。図１４に示されるように、図１３のＡＮＤ回路８２及び８３の代りに、ＡＮＤ回路９０乃至９２及びＯＲ回路９３が設けられる。図１３のノンキャッシュアクセス制御部８１が生成したノンキャッシュアクセス信号＋ＮＯＮＣＡＣＨＥ＿ＬＯＡＤ＿ＲＥＱＵＥＳＴが、ＡＮＤ回路９０乃至９２の各々に印加される。検証モード信号＋ＥＲＲＯＲ＿ＩＮＪＥＣＴＩＯＮ＿ＭＯＤＥが０の場合、ノンキャッシュアクセス信号＋ＮＯＮＣＡＣＨＥ＿ＬＯＡＤ＿ＲＥＱＵＥＳＴが１になると、無条件でノンキャッシュ領域８５に対するアクセスが実行される。
【００５２】
一方、検証モード信号＋ＥＲＲＯＲ＿ＩＮＪＥＣＴＩＯＮ＿ＭＯＤＥが１のときには以下のような制御となる。即ち、＋ＮＯＮＣＡＣＨＥ＿ＬＯＡＤ＿ＲＥＱＵＥＳＴが１で且つノンキャッシュアクセス再実行モード信号＋ＮＯＮＣＡＣＨＥ＿ＡＣＣＥＳＳ＿ＲＥＲＵＮ＿ＭＯＤＥが０のときには、ノンキャッシュ領域８５に対するアクセスは実行されない。また、＋ＮＯＮＣＡＣＨＥ＿ＬＯＡＤ＿ＲＥＱＵＥＳＴが１で、＋ＮＯＮＣＡＣＨＥ＿ＡＣＣＥＳＳ＿ＲＥＲＵＮ＿ＭＯＤＥが０のときには、ノンキャッシュ領域８５に対するアクセスが実行される。実行完了信号は、図１３に示す構成と同様に、実行完了選択回路８６により生成される。またノンキャッシュ領域アクセス未実行信号は、ＡＮＤ回路９２からフリップフロップ８７を介して、図１３に示す構成と同様にして出力される。
【００５３】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【符号の説明】
【００５４】
２１  命令バッファ
２２  命令デコーダ
２３  ＲＳＡ
２４  ＲＳＥ
２５  ＲＳＦ
２６  ＲＳＢ
２７  ＣＳＥ
２８  １次データキャッシュ制御部
２９  演算器
３０  演算器
３１  ネクストプログラムカウンタ
３２  プログラムカウンタ
３３  固定小数点リネーミングレジスタ
３４  浮動小数点リネーミングレジスタ
３５  固定小数点レジスタ
３６  浮動小数点レジスタ
３７  エラー検出＆訂正制御部
３８  分岐予測機構
３９  命令フェッチアドレス生成器
４０  １次命令キャッシュ
４１  パイプラインクリア制御部
４２  オペランドアドレス生成器
４３  １次データキャッシュ
【図１】
2012198803.tif 000003
【図２】
2012198803.tif 000004
【図３】
2012198803.tif 000005
【図４】
2012198803.tif 000006
【図５】
2012198803.tif 000007
【図６】
2012198803.tif 000008
【図７】
2012198803.tif 000009
【図８】
2012198803.tif 000010
【図９】
2012198803.tif 000011
【図１０】
2012198803.tif 000012
【図１１】
2012198803.tif 000013
【図１２】
2012198803.tif 000014
【図１３】
2012198803.tif 000015
【図１４】
2012198803.tif 000016