(57)【特許請求の範囲】
【請求項１】
命令コードをマイクロコードに展開して実行する方式のプロセッサを備えた中央処理装置を、主記憶とシステムバスを介して接続したキャッシュシステムにおいて、
キャッシュメモリ、前記プロセッサ及び主記憶のインターフェース機能をもち、前記キャッシュメモリへの書き込みと併せてキャッシュデータをキャッシュデータ待避部に待避させるキャッシュ制御回路をキャッシュメモリに備え、
前記プロセッサでマイクロコードの実行中に障害を検出した場合、あらかじめ待避しておいた前記マイクロコードに先行するマイクロコードによって更新された、前記プロセッサからの書き込み要求により書き込む対象になったアドレスに対する前記書き込み要求による書き込み用データを、キャッシュメモリに書き戻すことにより、前記マイクロコードのシーケンスを実行し始める直前の状態に復旧する前記キャッシュデータ待避部を前記キャッシュメモリに対応させて前記中央処理装置内に備えたことを特徴とするキャッシュシステム。
【請求項２】
前記キャッシュデータ待避部が、
前記書き込み用データの待避動作および前記キャッシュメモリへの書き戻しを制御するキャッシュデータ待避制御回路と、
前記書き込み用データを格納する待避データ格納手段を備えたことを特徴とする請求項１に記載のキャッシュシステム。
【請求項３】
書き込みアドレスが前記キャッシュデータ待避部に格納されているかを判定し、結果を信号として前記キャッシュデータ待避制御回路に送信するアドレス比較器を備えたことを特徴とする請求項２に記載のキャッシュシステム。
【請求項４】
書き込みアドレスが前記キャッシュデータ待避部に格納されているかを判定し、結果を信号として前記キャッシュデータ待避制御回路に送信するアドレス比較器と、
前記書き込みアドレスを格納するアドレスレジスタと、
前記アドレス比較器で前記書き込みアドレスが前記キャッシュデータ待避部に格納されていないと判定された場合に、前記書き込みアドレスを格納する書き込みアドレス格納手段を備えたことを特徴とする請求項２に記載のキャッシュシステム。
【請求項５】
前記待避データ格納手段を待避データアレイで構成し、前記書き込みアドレス格納手段を書き込みアドレスアレイで構成したことを特徴とする請求項４に記載のキャッシュシステム。
【請求項６】
前記待避データ格納手段および前記書き込みアドレス格納手段を、それぞれ単一のレジスタで構成したことを特徴とする請求項４に記載のキャッシュシステム。
【請求項７】
命令コードをマイクロコードに展開して実行する方式のプロセッサを備えた中央処理装置を、主記憶とシステムバスを介して接続したキャッシュシステムのキャッシュ制御方法において、
キャッシュメモリ、前記プロセッサ及び前記主記憶のインターフェース機能をもち、前記キャッシュメモリに備えられたキャッシュ制御回路が、キャッシュへの書き込みと併せてキャッシュデータをキャッシュデータ待避部に待避させ、
前記プロセッサでマイクロコードの実行中に障害を検出した場合、あらかじめ待避しておいた前記マイクロコードに先行するマイクロコードによって更新された、前記プロセッサからの書き込み要求により書き込む対象になったアドレスに対する前記書き込み要求による書き込み用データを、キャッシュメモリに書き戻すことにより、前記マイクロコードのシーケンスを実行し始める直前の状態に復旧することを特徴とするキャッシュシステムのキャッシュ制御方法。
【請求項８】
キャッシュデータ待避制御回路により前記書き込み用データの待避動作および前記キャッシュメモリへの書き戻しを制御するステップと、
待避データ格納手段に前記書き込み用データを格納するステップを備えたことを特徴とする請求項７に記載のキャッシュシステムのキャッシュ制御方法。
【請求項９】
アドレス比較器により書き込みアドレスが前記キャッシュデータ待避部に格納されているかを判定し、結果を信号として前記キャッシュデータ待避制御回路に送信するステップを備えたことを特徴とする請求項８に記載のキャッシュシステムのキャッシュ制御方法。
【請求項１０】
アドレスレジスタに、書き込みアドレスを格納するステップと、
前記アドレス比較器で前記書き込みアドレスが前記キャッシュデータ待避部に格納されていないと判定された場合に、前記書き込みアドレスを書き込みアドレス格納手段に格納するステップを備えたことを特徴とする請求項９に記載のキャッシュシステムのキャッシュ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、障害回復機能を備えたキャッシュシステムに関し、特に、命令コードをマイクロコードに展開して実行するプロセッサにおいて、マイクロコード実行中に障害を検出した場合、命令リトライを可能とするキャッシュシステムに関する。
【０００２】
【従来の技術】
従来、プロセッサの可用性を向上させるための手段の一つとして、プロセッサの動作中に障害を検出した場合に命令コードの実行を一旦中断し、障害を検出した命令コードを再実行することによって間欠障害によるシステムダウンを回避する手法が採用されてきた。
【０００３】
一方で、昨今の高性能なＣＩＳＣ（Complex Instruction Set Computer）方式のマイクロプロセッサに見られるように、メモリまたはキャッシュからフェッチしてきた命令コードをプロセッサ内部で一つ以上の単純なマイクロコードに分解し、パイプラインを高速動作させることによって性能向上を図る方式が一般化している。
【０００４】
このようなマイクロコード方式のプロセッサでは、一つの命令コードを展開してできたマイクロコードのシーケンスを実行中に障害を検出した場合、命令リトライのためにはマイクロコードのシーケンスを遡ってシーケンスの先頭から再実行する必要があるが、このためにはソフトウェアから認識できるレジスタやメモリの内容が、障害発生時点までのマイクロコードのシーケンスの実行によって更新されていない（破壊されていない）ことが必須条件となる。
【０００５】
【発明が解決しようとする課題】
しかしながら、上述した従来のマイクロコード方式のプロセッサでは、通常よく利用される命令コードに関して、展開されたマイクロコードの実行中にメモリやレジスタの内容を更新しながら複雑な処理を実現するものがあるため、これらの命令の実行中に障害が検出された場合にリトライ成功率が低いという問題点があった。
【０００６】
本発明の目的は、上記従来の課題を解決するため、命令コードをマイクロコードに展開して実行するプロセッサにおいて、マイクロコード実行中に障害を検出した場合、当該マイクロコードに先行するマイクロコードにより実行されたデータ内容をキャッシュメモリに書き戻す事により、命令リトライ成功率の向上を実現するキャッシュシステムとそのキャッシュ制御方法を提供することである。
【０００７】
【課題を解決するための手段】
上記目的を達成するため本発明は、命令コードをマイクロコードに展開して実行する方式のプロセッサを備えた中央処理装置を、主記憶とシステムバスを介して接続したキャッシュシステムにおいて、キャッシュメモリ、前記プロセッサ及び主記憶のインターフェース機能をもち、前記キャッシュメモリへの書き込みと併せてキャッシュデータをキャッシュデータ待避部に待避させるキャッシュ制御回路をキャッシュメモリに備え、前記プロセッサでマイクロコードの実行中に障害を検出した場合、あらかじめ待避しておいた前記マイクロコードに先行するマイクロコードによって更新された、前記プロセッサからの書き込み要求により書き込む対象になったアドレスに対する前記書き込み要求による書き込み用データを、キャッシュメモリに書き戻すことにより、前記マイクロコードのシーケンスを実行し始める直前の状態に復旧する前記キャッシュデータ待避部を前記キャッシュメモリに対応させて前記中央処理装置内に備えたことを特徴とする。
【０００８】
請求項２の本発明のキャッシュシステムは、前記キャッシュデータ待避部が、前記書き込み用データの待避動作および前記キャッシュメモリへの書き戻しを制御するキャッシュデータ待避制御回路と、前記書き込み用データを格納する待避データ格納手段を備えたことを特徴とする。
【０００９】
請求項３の本発明のキャッシュシステムは、書き込みアドレスが前記キャッシュデータ待避部に格納されているかを判定し、結果を信号として前記キャッシュデータ待避制御回路に送信するアドレス比較器を備えたことを特徴とする。
【００１０】
請求項４の本発明のキャッシュシステムは、書き込みアドレスが前記キャッシュデータ待避部に格納されているかを判定し、結果を信号として前記キャッシュデータ待避制御回路に送信するアドレス比較器と、前記書き込みアドレスを格納するアドレスレジスタと、前記アドレス比較器で前記書き込みアドレスが前記キャッシュデータ待避部に格納されていないと判定された場合に、前記書き込みアドレスを格納する書き込みアドレス格納手段を備えたことを特徴とする。
【００１１】
請求項５の本発明のキャッシュシステムは、前記待避データ格納手段を待避データアレイで構成し、前記書き込みアドレス格納手段を書き込みアドレスアレイで構成したことを特徴とする。
【００１２】
請求項６の本発明のキャッシュシステムは、前記待避データ格納手段および前記書き込みアドレス格納手段を、それぞれ単一のレジスタで構成したことを特徴とする。
【００１３】
請求項７の本発明のキャッシュ制御方法は、命令コードをマイクロコードに展開して実行する方式のプロセッサを備えた中央処理装置を、主記憶とシステムバスを介して接続したキャッシュシステムのキャッシュ制御方法において、キャッシュメモリ、前記プロセッサ及び前記主記憶のインターフェース機能をもち、前記キャッシュメモリに備えられたキャッシュ制御回路が、キャッシュへの書き込みと併せてキャッシュデータをキャッシュデータ待避部に待避させ、前記プロセッサでマイクロコードの実行中に障害を検出した場合、あらかじめ待避しておいた前記マイクロコードに先行するマイクロコードによって更新された、前記プロセッサからの書き込み要求により書き込む対象になったアドレスに対する前記書き込み要求による書き込み用データを、キャッシュメモリに書き戻すことにより、前記マイクロコードのシーケンスを実行し始める直前の状態に復旧することを特徴とする。
【００１４】
請求項８の本発明のキャッシュ制御方法は、キャッシュデータ待避制御回路により前記書き込み用データの待避動作および前記キャッシュメモリへの書き戻しを制御するステップと、待避データ格納手段に前記書き込み用データを格納するステップを備えたことを特徴とする。
【００１５】
請求項９の本発明のキャッシュ制御方法は、アドレス比較器により書き込みアドレスが前記キャッシュデータ待避部に格納されているかを判定し、結果を信号として前記キャッシュデータ待避制御回路に送信するステップを備えたことを特徴とする。
【００１６】
請求項１０の本発明のキャッシュ制御方法は、アドレスレジスタに、書き込みアドレスを格納するステップと、前記アドレス比較器で前記書き込みアドレスが前記キャッシュデータ待避部に格納されていないと判定された場合に、前記書き込みアドレスを書き込みアドレス格納手段に格納するステップを備えたことを特徴とする。
【００１７】
【発明の実施の形態】
以下、本発明の第１の実施の形態について、図面を参照して詳細に説明する。
【００１８】
図１は本発明の第１の実施の形態によるキャッシュシステムの構成を示すブロック図である。
【００１９】
本発明の第１の実施の形態によるキャッシュシステムは、中央処理装置１０と主記憶２０、およびそれらを接続するシステムバス３０から構成される。図１では、システムバス３０に中央処理装置１０を４式接続しているが（１０−１〜１０−４）、システムバス３０に接続される中央処理装置１０の数は任意である（１０−ｍ：ｍは自然数）。同様に、図１ではシステムバス３０に主記憶２０を１式接続しているが（２０−１）、システムバス３０に接続される主記憶２０の数は任意である（２０−ｎ：ｎは自然数）。
【００２０】
中央処理装置１０は、ストアイン方式のキャッシュメモリ１１とキャッシュデータ待避部１２、および命令コードをマイクロコードに展開して実行する方式のプロセッサ１３から構成される。プロセッサ１３とキャッシュデータ待避部１２は共にキャッシュメモリ１１に接続されており、キャッシュメモリ１１はさらにシステムバス３０に接続されている。
【００２１】
図２は本発明の第１の実施の形態によるキャッシュメモリ１１とキャッシュデータ待避部１２の構成を示す図である。
【００２２】
キャッシュメモリ１１は、アドレスアレイ１１１とデータアレイ１１２、およびキャッシュ制御回路１１３から構成される。
【００２３】
アドレスアレイ１１１は複数のエントリから構成されるメモリであり、各々のエントリにキャッシュ索引時に参照されるアドレスの一部（アドレスキー）と、該当エントリの補助情報としてデータが有効である事をしめすバリッドビット、およびストアインキャッシュのデータの状態を表す状態ビットが格納される。
【００２４】
データアレイ１１２はアドレスアレイ１１１と同様に複数のエントリから構成されるメモリであり、各々のエントリにデータを格納する。
【００２５】
キャッシュ制御回路１１３はキャッシュメモリ１１の動作を制御する論理回路であり、アドレスアレイ１１１とデータアレイ１１２における索引およびデータ登録の制御機能のほか、システムバス３０とプロセッサ１３、およびキャッシュデータ待避部１２とのインターフェース機能をもつ。
【００２６】
キャッシュデータ待避部１２は、アドレスレジスタ１２１、書き込みアドレスアレイ１２２、アドレス比較器１２３、キャッシュデータ待避制御回路１２４および待避データアレイ１２５から構成される。
【００２７】
アドレスレジスタ１２１は、キャッシュへの書き込み動作時にキャッシュ制御回路１１３から送出される書き込みアドレスとキャッシュの状態ビットの情報を格納するレジスタである。アドレスレジスタ１２１に格納された書き込みアドレスと状態ビットは、書き込みアドレスアレイ１２２とアドレス比較器１２３へ出力される。
【００２８】
書き込みアドレスアレイ１２２は、複数のエントリから構成されるメモリであって、キャッシュデータ待避制御回路１２４の制御によりアドレスレジスタ１２１から出力される書き込みアドレスと状態ビットの情報を格納する。
【００２９】
アドレス比較器１２３は、アドレスレジスタ１２１に格納される書き込みアドレスと書き込みアドレスアレイ１２２の各エントリに格納されるアドレスを比較する比較回路である。それらを比較した結果は、一致・不一致を表す信号として、キャッシュデータ待避制御回路１２４へ通知される。
【００３０】
キャッシュデータ待避制御回路１２４は、キャッシュデータ待避部１２の動作を制御する制御回路である。特に図示したリトライ不可フラグ１２４１は、キャッシュデータ待避部１２により待避されたキャッシュデータを元に、プロセッサ１３の障害発生時に命令リトライを実行することが不可能であることを示すフラグである。
【００３１】
待避データアレイ１２５は、書き込みアドレスアレイ１２２と同様に複数エントリから構成されるメモリであって、データアレイ１１２から取り出したデータを格納するとともに、取り出したデータをキャッシュ制御回路１１３へ送出する。
【００３２】
次に、図２を参照しながら本発明の第１の実施の形態によるキャッシュシステムの動作について説明する。
【００３３】
まず、プロセッサ１３からチェックポイント信号２００を受信した場合のキャッシュデータ待避制御回路１２４の動作について説明する。
【００３４】
チェックポイント信号２００は、プロセッサ１３が一つの命令コードから展開したマイクロコードの最終命令の実行が完了した時に送出される信号である。プロセッサ１３の中で一つの命令コードは１個以上のマイクロコードからなるシーケンスに展開され、実行される。図３はその一例としてプロセッサ１３が取り込んだ命令コード（ＭＯＶ）が１０個のマイクロコードに展開されていることを説明する図である。
【００３５】
ここで、命令コードＭＯＶは、メモリ上のアドレスＸから長さＬ１ワードの文字列をアドレスＹから始まる領域にコピーする命令である。展開されたマイクロコードを参照すると、マイクロ命令lodはレジスタ間もしくはメモリとレジスタ間のロード命令、stoはレジスタからメモリへの書き込み命令、addはレジスタ間の加算命令、subはレジスタ間の除算命令、braは分岐命令、endfは一連のマイクロコードの終了を示し後続の命令コードのフェッチを指示する命令を表す。
【００３６】
まずＸ、Ｙ、Ｌ１がワークレジスタｗ０、ｗ１、ｗ２にそれぞれコピーされ（ステップ３０１、３０２、３０３）、続いてワークレジスタｗ４を介して１ワードコピーを行い（ステップ３０４、３０５）、ワークレジスタに格納されたアドレスとカウンタを更新して（ステップ３０６、３０７、３０８）、コピーが終了するまでループを実行する（ステップ３０９）事が分かる。最後に付与されたendf（ステップ３１０）は、実際のインプリメントでは高速化のためマイクロコードシーケンスの最終命令にビット情報として付与するなどして特に終わりを表す命令として定義しない場合もあるが、ここでは説明をしやすくするために特に設けたものである。
【００３７】
図４は、本発明の第１の実施の形態において、プロセッサ１３からチェックポイント信号２００を受信した場合のキャッシュデータ待避制御回路１２４の動作について説明するフローチャートである。キャッシュデータ待避制御回路１２４はチェックポイント信号２００を受信すると（ステップ４０１）、書き込みアドレスアレイ１２２に登録されている全てのエントリをリセットすると共に、リトライ不可フラグ１２４１をリセットする（ステップ４０２）。
【００３８】
次に、プロセッサ１３からのキャッシュ読み出しの動作について図５を参照して詳細に説明する。図５は、本発明の第１の実施の形態において、プロセッサ１３からのキャッシュ読み出しの動作について説明するフローチャートである。
【００３９】
プロセッサ１３からキャッシュ読み出し要求が送出されると、その要求信号２０１は読み出しアドレスと共にキャッシュ制御回路１１３に入力される（ステップ５０１）。続いて、キャッシュ制御回路１１３からアドレスアレイ１１１およびデータアレイ１１２へ読み出しアドレスの一部分からなる索引アドレスを供給することにより、アドレスアレイ１１１からはアドレスキー、データアレイ１１２からはデータを取り出し、キャッシュヒットしているかを判定する（ステップ５０２）。
【００４０】
ここでキャッシュヒットしていれば、データアレイ１１２から取り出したデータをプロセッサ１３へ送出して（ステップ５０３）、読み出し動作は完了する。
【００４１】
一方、キャッシュミスしていた場合、キャッシュ制御回路１１３はリプレースすべきエントリを決定し（ステップ５０４）、そのエントリの状態ビットの値を参照してダーティ状態であればメモリへ掃き出しを行う。その後、キャッシュ制御回路１１３はシステムバス３０を経由して主記憶２０から当該アドレスのデータの読み出しを行い（ステップ５０５）、アドレスアレイ１１１へアドレスキー、バリッドビット、状態ビットを、データアレイ１１２へデータを登録する（ステップ５０６）。この時状態ビットはクリーン状態で登録される。そして、プロセッサ１３へデータを送出することで（ステップ５０３）、読み出し動作が完了する。
【００４２】
読み出し動作の場合は、キャッシュデータ待避部１２の動作は行われない。
【００４３】
次に、プロセッサ１３からのキャッシュ書き込みの動作について図６、図７を参照して詳細に説明する。図６は、本発明の第１の実施の形態において、プロセッサ１３からのキャッシュ書き込みの動作時のキャッシュメモリ１１の動作について説明するフローチャート、図７は、本発明の第１の実施の形態において、プロセッサ１３からのキャッシュ書き込みの動作時のキャッシュデータ待避部１２の動作について説明するフローチャートである。
【００４４】
プロセッサ１３からキャッシュ書き込み要求が送出されると、その要求信号２０２は書き込みアドレス、書き込みデータと共にキャッシュ制御回路１１３に入力される（ステップ６０１）。続いて、キャッシュ制御回路１１３はデータアレイ１１２からデータを取り出すとともに、アドレスアレイ１１１を索引し、当該アドレスのデータがキャッシュにヒットしたかどうかを判定する（ステップ６０２）。
【００４５】
キャッシュヒットの場合、キャッシュ制御回路１１３は、上記索引時に取り出したデータに書き込みデータを上書きして、キャッシュへ登録することで書き込み動作が完了する（ステップ６０３）。また、書き込み前の読み出しで当該エントリの状態ビットがクリーン状態だった場合は、ダーティ状態に更新される。
【００４６】
キャッシュミスの場合、キャッシュ制御回路１１３はリプレースすべきエントリを決定し（ステップ６０４）、そのエントリの状態ビットの値を参照してダーティ状態であればメモリへ掃き出しを行う。その後、システムバス３０を経由して主記憶２０から当該アドレスのデータの読み出しを行い（ステップ６０５）、読み出したデータにプロセッサ１３からの書き込みデータを上書きしてキャッシュへ登録することで、書き込み動作が完了する（ステップ６０６）。この時、キャッシュの当該エントリの状態ビットはダーティ状態で登録される。
【００４７】
また、プロセッサ１３からの書き込み時、キャッシュデータ待避部１２は以下の動作を行う。
【００４８】
まず、アドレスアレイ１１１及びデータアレイ１１２に書き込みデータを上書きする際（図６のステップ６０３、６０６）に、書き込みアドレスと書き込み前の読み出しで取り出した状態ビットの値を、キャッシュ制御回路１１３からアドレスレジスタ１２１に格納するとともに、書き込み前の読み出しでキャッシュヒットした場合はデータアレイ１１２から取り出したデータを、キャッシュミスした場合はシステムバス３０経由で主記憶２０から取得したデータをキャッシュ制御回路１１３から取得し、待避データアレイ１２５へ格納する（ステップ７０１）。続いて、アドレス比較器１２３において、アドレスレジスタ１２１に格納された書き込みアドレスと同じエントリが書き込みアドレスアレイ１２２に登録されているかを判定する（ステップ７０２）。
【００４９】
書き込みアドレスアレイ１２２に、アドレスレジスタ１２１に格納された書き込みアドレスと同じアドレスのエントリが登録されていた場合、キャッシュデータ待避部１２の動作はここで終了する。
【００５０】
書き込みアドレスアレイ１２２に、アドレスレジスタ１２１に格納された書き込みアドレスと同じアドレスのエントリが登録されていなかった場合、キャッシュデータ待避制御回路１２４の制御により、アドレスレジスタ１２１に格納された書き込みアドレスおよび状態ビットが書き込みアドレスアレイ１２２に格納される（ステップ７０３）。
【００５１】
次に、システムバス３０を経由して、他のキャッシュメモリからキャッシュ無効化要求を受信した場合のキャッシュシステムの動作について、図８を参照して詳細に説明する。図８は、本発明の第１の実施の形態において、システムバス３０を経由して、他のキャッシュメモリからキャッシュ無効化要求を受信した場合のキャッシュシステムの動作について説明するフローチャートである。
【００５２】
まず、キャッシュ制御回路１１３は、無効化を要求されたアドレスでアドレスアレイ１１１を索引し（ステップ８０１）、キャッシュにヒットしたかどうかを判定する。ヒットしていた場合、アドレスアレイ１１１の当該エントリのバリッドビットをリセットし、当該エントリのデータを無効化する（ステップ８０２）。
【００５３】
また、キャッシュのヒットもしくはミスに関わらず、キャッシュ制御回路１１３からアドレスレジスタ１２１へ無効化を要求されたアドレスが送出されるとともに、待避データ無効化信号２０３がキャッシュデータ待避制御回路１２４へ送出される（ステップ８０３）。
【００５４】
待避データ無効化信号２０３を受信したキャッシュデータ待避制御回路１２４は、アドレス比較器１２３の出力により無効化を要求されたアドレスのエントリが書き込みアドレスアレイ１２２へ登録されているかどうかを判定し（ステップ８０４）、当該アドレスのエントリが登録されていたならばリトライ不可フラグ１２４１をセットし（ステップ８０５）、プロセッサ１３で現在実行中のマイクロコードシーケンスで障害を検出した場合に命令リトライの実行が不可能であることを表示する。
【００５５】
次に、プロセッサ１３でマイクロコード実行中に障害を検出した場合のキャッシュシステムの動作について図９を参照して詳細に説明する。
図９は、本発明の第１の実施の形態において、プロセッサ１３でマイクロコード実行中に障害を検出した場合のキャッシュシステムの動作について説明するフローチャートである。
【００５６】
プロセッサ１３でマイクロコード実行中に障害を検出した場合、プロセッサ１３は障害検出信号２０４で障害を検出したことをキャッシュ制御回路１１３およびキャッシュデータ待避制御回路１２４へ通知する（ステップ９０１）。
【００５７】
キャッシュデータ待避制御回路１２４は、障害検出信号２０４を受け取ると、まず最初にリトライ不可フラグ１２４１を参照し、フラグがリセットされていることを確認する（ステップ９０２）。
【００５８】
フラグがセットされていた場合、プロセッサ１３で動作中のマイクロコードのシーケンスはリトライ不可能であるので、キャッシュデータ待避部１２はその時点で動作を停止することにより、キャッシュメモリ１１およびプロセッサ１３の動作も停止する（ステップ９０６）。
【００５９】
フラグがリセットされていた場合、キャッシュデータ待避制御回路１２４は書き込みアドレスアレイ１２２の各エントリを順に参照し、登録されたアドレス、状態ビットを取り出してキャッシュ制御回路１１３へ送出するとともに、待避データアレイ１２５から登録されたデータを取りだしてキャッシュ制御回路１１３へ送出する（ステップ９０３）。
【００６０】
キャッシュ制御回路１１３では、送られてきたアドレスをもとにアドレスアレイ１１１およびデータアレイ１１２にアドレスキーと状態ビット、データを登録すべきエントリを決定し（ステップ９０４）、上書きすることによってプロセッサ１３が障害を検出したマイクロコードのシーケンスを実行し始める直前の状態に復旧する（ステップ９０５）。
【００６１】
次に、本発明の第２の実施の形態について、図面を参照して詳細に説明する。なお、キャッシュシステム全体の構成については、図１に示した第１の実施の形態と同様であるので説明を省略する。
【００６２】
図１０は、本発明の第２の実施の形態によるキャッシュメモリ１１とキャッシュデータ待避部１２の構成を示す図である。
【００６３】
本発明の第２の実施の形態は、第１の実施の形態の書き込みアドレスアレイ１２２および待避データアレイ１２５を、それぞれ書き込みアドレスレジスタ１２６および待避データレジスタ１２７で置き換えて構成している。なお、キャッシュメモリ１１およびキャッシュデータ待避部１２全体の動作については、第１の実施の形態と同様であるので説明を省略する。
【００６４】
図１０に示すように、複数エントリから構成されるメモリである書き込みアドレスアレイ１２２および待避データアレイ１２５を、それぞれ単一のレジスタで置き換えたことにより、キャッシュデータ待避部１２に追加するハードウェア量を極力少なくすることができるが、一つの命令コードを展開したマイクロコードのシーケンス中で二つ以上の書き込み動作が生じた場合、本実施の形態では命令リトライによる救済ができなくなるという問題もある。
【００６５】
しかしながら、マイクロコードのシーケンス中で一つしか書き込み命令を使わない命令については、第１の実施の形態と同様に命令リトライによる救済が可能であり、障害検出時の救済率と投資するハードウェア量のトレードオフという観点から本実施の形態は十分に実用的であると言える。
【００６６】
以上、好ましい実施の形態及び実施例を挙げて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。
【００６７】
【発明の効果】
以上説明したように、本発明のキャッシュシステムにより、命令コードをマイクロコードに展開して実行する形式のプロセッサにおいて、マイクロコード実行中に障害を検出した場合に命令コード単位でのリトライが可能になる。
【００６８】
その理由は、マイクロコードのシーケンス中での書き込みによりキャッシュの状態が変化した後でも、待避データアレイに待避されたデータをキャッシュメモリに書き戻す事によってマイクロコードのシーケンス実行前の状態にキャッシュの状態を戻す事が可能だからである。
【００６９】
また、書き込みアドレスアレイおよび待避データアレイを、それぞれ単一のレジスタである書き込みアドレスレジスタおよび待避データレジスタに置き換えることにより、キャッシュデータ待避部に追加するハードウェア量を最小限に抑えることができる。
【図面の簡単な説明】
【図１】  本発明の実施の形態によるキャッシュシステムの構成を示すブロック図である。
【図２】  本発明の第１の実施の形態によるキャッシュメモリとキャッシュデータ待避部の構成を示す図である。
【図３】  本発明の第１の実施の形態によるプロセッサが命令コードをマイクロコードに展開する一例を説明する図である。
【図４】  本発明の第１の実施の形態において、プロセッサからチェックポイント信号を受信した場合のキャッシュデータ待避制御回路の動作について説明するフローチャートである。
【図５】  本発明の第１の実施の形態において、プロセッサからのキャッシュ読み出しの動作時のキャッシュメモリの動作について説明するフローチャートである。
【図６】  本発明の第１の実施の形態において、プロセッサからのキャッシュ書き込みの動作時のキャッシュメモリの動作について説明するフローチャートである。
【図７】  本発明の第１の実施の形態において、プロセッサからのキャッシュ書き込みの動作時のキャッシュデータ待避部の動作について説明するフローチャートである。
【図８】  本発明の第１の実施の形態において、システムバスを経由して、他のキャッシュメモリからキャッシュ無効化要求を受信した場合のキャッシュシステムの動作について説明するフローチャートである。
【図９】  本発明の第１の実施の形態において、プロセッサでマイクロコード実行中に障害を検出した場合のキャッシュシステムの動作について説明するフローチャートである。
【図１０】  本発明の第２の実施の形態によるキャッシュメモリとキャッシュデータ待避部の構成を示す図である。
【符号の説明】
１０  中央処理装置
１１  キャッシュメモリ
１２  キャシュデータ待避部
１３  プロセッサ
２０  主記憶
３０  システムバス
１１１  アドレスアレイ
１１２  データアレイ
１１３  キャッシュ制御回路
１２１  アドレスレジスタ
１２２  書き込みアドレスアレイ
１２３  アドレス比較器
１２４  キャッシュデータ待避制御回路
１２５  待避データアレイ
１２６  書き込みアドレスレジスタ
１２７  待避データレジスタ
２００  チェックポイント信号
２０１  キャッシュ読み出し要求信号
２０２  キャッシュ書き込み要求信号
２０３  待避データ無効化信号
２０４  障害検出信号
１２４１  リトライ不可フラグ
【図１】
0003804823.tif 000002
【図２】
0003804823.tif 000003
【図３】
0003804823.tif 000004
【図４】
0003804823.tif 000005
【図５】
0003804823.tif 000006
【図６】
0003804823.tif 000007
【図７】
0003804823.tif 000008
【図８】
0003804823.tif 000009
【図９】
0003804823.tif 000010
【図１０】
0003804823.tif 000011