(57)【特許請求の範囲】
【請求項１】
プロセッサに対応して設けられるコピーバック型のキャッシュと、主メモリ上に於ける更新前データとそのアドレスとの組を格納するバッファとを備えた計算機システムに於いて、前記キャッシュに対応して、該当するキャッシュのクリーンな状態を保持するキャッシュデータ保持手段を設け、前記キャッシュデータ保持手段のデータをもとに前記バッファを用いて前記主メモリの状態を復元する制御手段とを具備してなることを特徴とする計算機システム。
【請求項２】
プロセッサに対応して設けられるコピーバック型のキャッシュと、主メモリ上に於ける更新前データとそのアドレスとの組を格納するバッファとを備えた計算機システムに於いて、前記キャッシュのクリーンな状態を保持するｎウェイセットアソシエィティブキャッシュ型のキャッシュデータ保持手段を設け、前記キャッシュデータ保持手段のデータをもとに前記バッファを用いて前記主メモリの状態を復元する制御手段とを具備してなることを特徴とする計算機システム。
【請求項３】
キャッシュデータ保持手段及び当該保持データにより主メモリの状態を復元する制御手段が拡張用のボードにより提供され又は標準装備される請求項１又は２記載の計算機システム。
【請求項４】
プロセッサに対応して設けられ、前記プロセッサからのアクセス要求に応じて各種のトランザクションを発行するデータ一貫性保持機能を有する少なくとも一つのコピーバック型のキャッシュと、前記プロセッサの処理に必要なデータを保持する主メモリと、前記主メモリに対するアクセスを制御するメモリ制御手段と、前記少なくとも一つのキャッシュと前記メモリアクセス制御手段とが接続されるバスとを備えた計算機システムに於いて、
前記主メモリに於ける更新前データとそのアドレスとの組を格納するバッファと、
前記キャッシュに対応して設けられ、前記キャッシュからのリード要求に対する主メモリからの応答データを格納するビフォアイメージキャッシュと、
前記バスに接続され前記キャッシュからの各種トランザクションをスヌープする手段と、
前記キャッシュのリード要求に対するメモリからの応答データをスヌープし、前記ビフォアイメージキャッシュに格納する手段と、
前記キャッシュがライト要求を発行したとき前記主メモリが更新される前のデータを前記バッファメモリへ格納するために前記ビフォアイメージキャッシュから該当キャッシュラインデータを読み出す手段をもつビフォアイメージキャッシュ制御手段と、
前記ビフォアイメージキャッシュから読み出されたデータ及び対応するアドレスを前記バッファに格納するバッファアクセス制御手段と
を具備してなることを特徴とする計算機システムのメモリ状態復元装置。
【請求項５】
ビフォアイメージキャッシュの状態を管理するために、少なくとも１ビットのモディファイドビットを備えたビフォアイメージキャッシュであって、
ビフォアイメージキャッシュの制御手段は、主メモリあるいは他のプロセッサからの対応するキャッシュラインからデータを読み出すトランザクションであるとき、当該トランザクションにより示されるビフォアイメージキャッシュの該当キャッシュラインのモディファイドビットをモディファイドでない状態にする手段と、
キャッシュから発行されるトランザクションが他のプロセッサの対応するキャッシュラインの無効化を指示するトランザクションであるとき、当該トランザクションにより示されるビフォアイメージキャッシュの該当キャッシュラインのモディファイドビットをモディファイド状態にする手段と、
キャッシュから発行されたリード要求により、ビフォアイメージキャッシュのモディファイドラインが置換されるとき、前記主メモリが更新される前のデータをバッファへ格納するために、ビフォアイメージキャッシュから置換されるキャッシュラインを読み出す手段と
を具備してなることを特徴とする請求項４記載のメモリ状態復元装置。
【請求項６】
キャッシュから発行されるリード要求に於いて、キャッシュ内のモディファイドラインが置換されることを示すモディファイドライン置換信号を備え、ビフォアイメージキャッシュ制御手段は、モディファイドライン置換信号が有効であるとき、主メモリが更新される前のデータをバッファへ格納するために、ビフォアイメージキャッシュから該当キャッシュラインを読み出す手段を備えたことを特徴とする請求項４記載のメモリ状態復元装置。
【請求項７】
ビフォアイメージキャッシュ制御手段は、キャッシュから無効化要求が発行されたとき、主メモリが更新される前のデータをバッファへ格納するために当該トランザクションにより示されるビフォアイメージキャッシュから該当するキャッシュラインデータを読み出す手段を具備してなることを特徴とする請求項４記載のメモリ状態復元装置。
【請求項８】
ｎウェイセットアソシエィティブキャッシュ型のビフォアイメージキャッシュを有し、当該ビフォアイメージキャッシュの制御手段は、キャッシュから発行されるリード要求のアドレスがビフォアイメージキャッシュ内にあるか否かを判定するためのタグ比較手段を備え、プロセッサのリード要求がビフォアイメージキャッシュにミスしたとき、主メモリが更新される前のデータをバッファへ格納するためにビフォアイメージキャッシュの該当するセット中の全てのラインを読み出す手段と、前記ビフォアイメージキャッシュの該当するセット中のラインから置換するラインを選択し、前記リード要求に対する応答データを選択したキャッシュラインへ格納する手段とを具備してなることを特徴とする請求項５記載のメモリ状態復元装置。
【請求項９】
ビフォアイメージキャッシュ制御手段は、キャッシュのリード要求がビフォアイメージキャッシュにミスし、ビフォアイメージキャッシュのセット中にモディファイドラインがあるとき、主メモリが更新される前のデータをバッファへ格納するために、
モディファイドライン全てを読み出す手段と、
リード要求がビフォアイメージキャッシュにミスし、ビフォアイメージキャッシュの該当するセット中にモディファイドラインがないとき、ビフォアイメージキャッシュの該当するセット中のラインから置換するラインを選択し、主メモリが更新される前のデータをバッファへ格納するために、選択したラインを読み出す手段と
を具備してなることを特徴とする請求項８記載のメモリ状態復元装置。
【請求項１０】
ｎウェイセットアソシエィティブキャッシュ型のビフォアイメージキャッシュを有し、当該ビフォアイメージキャッシュの制御手段は、キャッシュから発行されるリード要求のアドレスがビフォアイメージキャッシュ内にあるか否かを判定するためのタグ比較手段を備え、プロセッサのリード要求がビフォアイメージキャッシュにミスしたとき、主メモリが更新される前のデータをバッファへ格納するために、ビフォアイメージキャッシュの該当するセット中の全てのラインを読み出す手段と、ビフォアイメージキャッシュの該当するセット中のラインから置換するラインを選択し、リード要求に対する応答データを選択したキャッシュラインへ格納する手段と
を具備してなることを特徴とする請求項６記載のメモリ状態復元装置。
【請求項１１】
ビフォアイメージキャッシュの制御手段は、アドレスとデータを格納するための一時バッファを備え、
キャッシュからリード要求が発行されたときに、モディファイドライン置換信号が無効であるとき、ビフォアイメージキャッシュから置換するラインを選択し、主メモリが更新される前のデータをバッファへ格納するために該当するキャッシュラインを読み出す手段と、
モディファイドライン置換信号が有効であるとき、リード要求に対する応答データとアドレスを一時バッファに記録する手段と、
モディファイドラインが置換されることによって発行されるライト要求がビフォアイメージキャッシュにヒットしたとき、主メモリが更新される前のデータをバッファへ格納するために、ビフォアイメージキャッシュから該当するキャッシュラインを読み出す手段と、
ライト要求がビフォアイメージキャッシュにミスしたとき、該当するセット中のラインから置換するラインを選択し、主メモリが更新される前のデータをバッファへ格納するために該当するキャッシュラインを読み出す手段と、
一時バッファに記録したアドレスとデータを該当するキャッシュラインへ格納する手段と
を具備してなることを特徴とする請求項１０記載のメモリ状態復元装置。
【請求項１２】
バッファメモリは、主メモリ内に設けられる請求項６記載のメモリ状態復元装置。
【請求項１３】
バッファアクセス制御手段は、プロセッサの内部状態とキャッシュ内のモディファイド状態にあるデータとを所定の時間間隔で主メモリに保存するチェックポイント実行手段を含む請求項６記載のメモリ状態復元装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コピーバック型のキャッシュを備えた計算機システムに適用されるメモリ状態復元装置に関する。
【０００２】
【従来の技術】
通常の計算機では、プログラムを実行して処理が一旦進んでしまうと、それ以前の状態に戻って処理を再開するという機能手段をもたない。
これに対して、ソフトウェアデバッギング、フォールトトレラントシステム、バックトラッキング等の各種応用技術に於いては、プログラムを実行し、処理が進んだ後に、それ以前の状態に戻って処理を再開するための機能を実現するために、メモリの内容を以前の状態に戻し、その時点から処理を継続するための機能（メモリ状態回復機能）が必要とされる。
【０００３】
ここで、上記ソフトウェアデバッギングは、プログラムの実行中に何らかのエラーが発生した場合に、以前の状態に遡ることにより、エラーの原因を解析することができる。また、上記フォールトトレラントシステムは、システムの動作中に何らかの故障により処理が続行できなくなった場合に、以前の状態に戻って、そこから処理を再開することにより、システムを停止させることなく動作を継続することができる。このようなフォールトトレラント技術は、例えばPhilip A Bernstein, "Sequoia:  A Fault-Tolerant Tightly Coupled Multiprocessor for Transaction Processing,"  IEEE Computer, Vol.21, No.2, 1988  に開示されている。また、上記バックトラッキングは、論理型のプログラミング言語に於いて、実行状態のバックトラッキングが基本的な操作であり、メモリの内容が以前の状態に戻る機能を用いることによりバックトラッキングを実現することができる。
【０００４】
上記したような「メモリ状態回復機能」を実現する方法として、考えられている技術の一つに“バックワード手法”がある。
このような技術は、例えばRok Sosic, "History Cache:  Hardware Support for Reverse Ex-ecution," Computer Architecture News, Vol.22, No.5, 1994  に開示されている。
【０００５】
又、本発明の出願人は、コピーバック型のキャッシュを用いたコンピュータシステムに於いて、メモリ状態回復機能を実現する処理のオーバヘッドを低減し、システムを効率化するために以下に示す技術を開発した。
【０００６】
この方式によるシステムの一構成例を図１３に示す。
この構成例では、Ｎ個のプロセッサ７４〜７５、各プロセッサ７４〜７５に対応するＮ個のキャッシュ７７〜７８が設けられている。キャッシュ７７〜７８は、メモリ制御部２０、及びビフォアイメージバッファ制御部８１と、バス７６を介して接続されている。
【０００７】
ビフォアイメージバッファ制御部８１は、バスインタフェース制御部８１１、状態保存制御部８１２、バストランザクション応答制御部８１３、バッファアクセス制御部８１４、及びバストランザクション発行制御部８１５を有している。
【０００８】
バスインタフェース制御部８１１は、バス７６と直接接続され、バス７６の制御を行なう。バスインタフェース制御部８１１は、常時、バス７６を監視しており、バス７６に発行されたトランザクションに応じて動作する。
【０００９】
状態保存制御部８１２は、主メモリ７２の状態を保存するために必要な各種機能を制御する。バストランザクション応答制御部８１３は、バス７６に発行されたトランザクションに対して応答を返す機能を制御する。
【００１０】
バッファアクセス制御部８１４は、ビフォアイメージバッファ７３と接続されビフォアイメージバッファに対するアクセスを制御する。バストランザクション発行制御部８１５は、主メモリ７２の状態を保存するために必要なバストランザクションを発行する機能を制御する。
【００１１】
キャッシュ７７〜７８は、コピーバック型のキャッシュであり、以下に説明する方式に従って、データ一貫性保持のためのプロトコルを実現する。
キャッシュ７７〜７８は、キャッシュラインデータを保持するデータメモリと、データメモリに格納された各キャッシュラインデータを管理する情報を保持するためのタグメモリから構成される。
【００１２】
このタグメモリのエントリの一例を図１４に示す。
タグメモリには、対応するキャッシュラインデータのキャッシュラインアドレス（ＡＤＤＲ）を示すアドレスタグと、キャッシュラインデータの状態を示す３ビットのデータが格納される。
【００１３】
キャッシュラインデータの状態は、バリッド（Ｖ：Ｖａｌｉｄ）、モディファイド（Ｍ：Ｍｏｄｉｆｉｅｄ）、シェアード（Ｓ：Ｓｈａｒｅｄ）の３ビットの値の組合せにより管理される。
【００１４】
尚、バリッド（Ｖ）は、対応するキャッシュラインデータが有効（“１”）であることを示す。モディファイド（Ｍ）は、キャッシュ上で更新された状態にあることを示す。シェアード（Ｓ）は、他のプロセッサのキャッシュ上にも同じキャッシュラインデータが保持されていることを示す。
【００１５】
これら３ビットの値の組合せにより、図１５に示すように、キャッシュラインデータは４つの状態をとる。
コピーバックキャッシュに関連した、バストランザクションは、“Ｒｅａｄ−Ｌｉｎｅ”、“Ｗｒｉｔｅ−Ｌｉｎｅ”、“Ｉｎｖａｌｉｄａｔｅ”を含む。
【００１６】
“Ｒｅａｄ−Ｌｉｎｅ”（キャッシュラインデータのリード）は、プロセッサからのあるアドレスのキャッシュラインに対するリードアクセスに対して、該当する有効なキャッシュラインデータがキャッシュに存在せずキャッシュミスした場合に発行される。
【００１７】
尚、キャッシュミスは、アクセスの対象とするキャッシュラインデータを示すアドレスがタグメモリに格納されていない、及びアドレスは格納されているがバリッドビット（Ｖ）が無効（“０”）を示す場合である。これに対し、キャッシュヒットは、対象とするキャッシュラインデータのアドレスがタグメモリに格納され、バリッドビット（Ｖ）が有効（“１”）を示す場合である。
【００１８】
“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”（キャッシュラインデータのリード、及び他のキャッシュに格納されたデータ無効化）は、プロセッサからのライトアクセスに対して、キャッシュミスした場合に発行される。
【００１９】
“Ｗｒｉｔｅ−Ｌｉｎｅ”（キャッシュラインデータのライト）は、プロセッサからの指示により明示的にキャッシュラインデータを主メモリ７２に書き出す場合、キャッシュラインデータを置換する必要が生じて更新データが主メモリ７２に書き出される場合、及び他のプロセッサからの要求に応じて更新データを主メモリ７２に書き出す場合に発行される。
【００２０】
“Ｉｎｖａｌｉｄａｔｅ”（他のキャッシュに格納されたデータ無効化）は、プロセッサからのライトアクセスに対して、キャッシュに当該ラインが存在したが、クリーンシェアードであった場合に発行される。このトランザクション自身はアドレスの転送のみであり、データ転送を伴わない。
【００２１】
尚、以上に示したトランザクション以外にもサポートされることが多いが、以下の記述に直接関係しないので、上記以外の説明は省略する。
バス７６は、シェアード応答信号線（shared）、モディファイド応答信号線  （modified）、バスコマンド信号線（command ）、及びアドレス／データ信号線（address/data）を含む。一般には、この他にアービトレーションを行なうための信号線などを含むが、以下の記述に直接関係しないので、ここではその説明を省略する。
【００２２】
シェアード応答信号線（shared）は、他のプロセッサ／キャッシュにより発行されたトランザクションに対して、トランザクションが対象としているキャッシュラインデータを保持している、即ち共有していることを通知するために用いられる。
【００２３】
モディファイド応答信号線（modified）は、他のプロセッサ／キャッシュにより発行されたトランザクションに対して、トランザクションが対象としているキャッシュラインデータを更新された状態で保持していることを通知するために用いられる。この信号がアサートされたときは、そのトランザクションはアボートされる。この後、トランザクションをアボートしたスレーブは、バスを獲得した後、更新キャッシュラインデータをメモリに書き出す。一方、最初のトランザクションを発行したマスタは、再びバスを獲得した後、同じトランザクションを再発行する。
【００２４】
尚、これら２つの信号線（shared），（modified）が同時にアサートされたときにも同様にそのトランザクションはアボートされる。
バスコマンド信号線（command ）は、前述したバストランザクションの種類を示す他に、トランザクションに関する各種情報を送るために用いられる。
【００２５】
アドレス／データ信号線（address/data）は、バストランザクションが対象とするキャッシュラインデータのアドレスおよびデータを送るため信号線である。図１３に於いては一つに纏めて示しているが、共通の信号線を時分割で使う方式や、アドレス／データ各々に独立した信号線を設ける方式等も存在し、それらのいずれの構成であってもよい。
【００２６】
次に、マルチプロセッサシステムの動作、即ち、前述したバストランザクションを用いてキャッシュ間のデータ一貫性保持プロトコルがどのように実現されているかについて説明する。
【００２７】
ここでは、トランザクションを発行してアクセスを起動する側のプロセッサ及びキャッシュ（マスタプロセッサ）、あるプロセッサ／キャッシュが発行したトランザクションに対して動作する他のプロセッサ及びキャッシュ（スレーブプロセッサ）、及びメモリ制御部８０のそれぞれの動作について説明する。
【００２８】
ａ．マスタプロセッサの動作について
先ず、トランザクションを発行してアクセスを起動するマスタプロセッサの動作と、発行されたトランザクションに対応するキャッシュの状態遷移について説明する。尚、ここではマスタプロセッサが、プロセッサ７４（キャッシュ７７）であるとして説明する。
【００２９】
リードアクセス（キャッシュヒット）：プロセッサ７４がリードアクセス要求した結果、キャッシュ７７においてキャッシュヒットした場合、キャッシュ７７から該当するデータが読み出される。プロセッサ７４（キャッシュ７７）は、バス７６にトランザクションを発行しない。このとき、キャッシュラインの状態は変わらない。
【００３０】
リードアクセス（キャッシュミス）：プロセッサ７４がリードアクセス要求した結果、キャッシュ７７においてキャッシュミスした場合、プロセッサ７４（キャッシュ７７）は、バス７６に“Ｒｅａｄ−Ｌｉｎｅ”トランザクションを発行する。
【００３１】
これに対して、モディファイド応答信号線（modified）を介してモディファイド応答信号がアサートされたならば、他のキャッシュのうち一つがそのラインの更新データを保持していることになる。キャッシュ７７は、この後、モディファイド応答信号をアサートしたキャッシュから主メモリ７２に書き出されたキャッシュラインデータを読み込み、データメモリに格納する。キャッシュラインの状態は“クリーン・シェアード”とする。
【００３２】
一方、モディファイド応答信号がアサートされず、シェアード応答信号線（shared）を介してシェアード応答信号がアサートされたならば、他のキャッシュがそのラインをクリーンな状態で保持していることになる。
【００３３】
キャッシュ７７は、キャッシュラインの状態を“クリーン・シェアード”とするとともに、主メモリ７２より読み出されたデータを取り込んで、データメモリに格納する。
【００３４】
また、モディファイド応答信号とシェアード応答信号のいずれもアサートされない場合には、いずれのキャッシュにも、対象とするキャッシュラインがを保持されていないことになる。
【００３５】
キャッシュ７７は、キャッシュラインの状態を“クリーン・エクスクルーシブ”とする。この場合も、キャッシュ７７は、主メモリ７２より読み出されたデータを取り込み、データメモリに格納する。
【００３６】
いずれの場合も、キャッシュ７７はバス７６から取り込んだキャッシュラインデータのうち、必要とされるデータをプロセッサ７４に返す。
ライト（キャッシュヒット／モディファイド）：プロセッサ７４がライトアクセス要求した結果、キャッシュ７７に於いてキャッシュヒットし、対応するキャッシュラインデータがモディファイドの状態の場合、該当するキャッシュラインにデータが書き込まれる。プロセッサ７４（キャッシュ７７）は、バス７６にトランザクションを発行しない。このとき、キャッシュラインの状態は変わらない。
【００３７】
ライト（キャッシュヒット／クリーンエクスクルーシブ）：プロセッサ７４がライトアクセス要求した結果、キャッシュ７７に於いてキャッシュヒットし、対応するキャッシュラインデータがクリーンエクスクルーシブの状態の場合、該当するキャッシュラインにデータが書き込まれる。プロセッサ７４（キャッシュ７７）は、バス７６にトランザクションを発行しない。キャッシュ７７は、該当するキャッシュラインの状態を“モディファイド”に変更する。
【００３８】
但し、後述するように、この方式ではクリーンエクスクルーシブ状態を避けるように制御されるので、この条件は実際には存在しないことになる。
ライト（キャッシュヒット／クリーンシェアード）：プロセッサ７４がライトアクセス要求した結果、キャッシュ７７に於いてキャッシュヒットし、対応するキャッシュラインデータがクリーンシェアードの状態の場合、プロセッサ７４  （キャッシュ７７）は、バス７６に“Ｉｎｖａｌｉ−ｄａｔｅ”トランザクションを発行する。キャッシュ７７は、該当するキャッシュラインの状態を“モディファイド”にして、データを書き込む。
【００３９】
ライト（キャッシュミス）：プロセッサ７４がライトアクセス要求した結果、キャッシュ７７に於いてキャッシュミスした場合、バス７６に“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”トランザクションを発行する。
【００４０】
これに対して、モディファイド応答信号がアサートされたならば、他のキャッシュのうち一つがそのラインの更新データを保持していることになる。キャッシュ７７は、この後、モディファイド応答信号をアサートしたキャッシュから主メモリ７２に書き出されたキャッシュラインデータを読み込み、データメモリに格納する。
【００４１】
一方、モディファイド応答信号がアサートされなければ、キャッシュ７７は、主メモリ７２より読み出されたデータを取り込み、データメモリに格納する。
いずれの場合も、該当するキャッシュラインの状態を“モディファイド”とし、データを書き込む。
【００４２】
ｂ．スレーブプロセッサの動作について
次に、あるプロセッサ/ キャッシュが発行したトランザクションに対する他のプロセッサとそれに対応するキャッシュ（スレーブプロセッサ）の動作、及び状態遷移について説明する。
【００４３】
尚、ここではマスタプロセッサがプロセッサ７４（キャッシュ７７）、スレーブプロセッサがプロセッサ７５（キャッシュ７８）であるとし、マスタプロセッサから発行されるトランザクション毎に説明する。
【００４４】
“Ｒｅａｄ−Ｌｉｎｅ”トランザクション：キャッシュ７８は、トランザクションが対象とするキャッシュラインデータを“モディファイド”の状態で保持している場合、モディファイド応答信号線（modified）を介しモディファイド応答信号をアサートして、更新データを保持していることを通知する。この後、キャッシュ７８は、“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクションを発行して更新データを主メモリ７２に書き出す。キャッシュ７８は、該当するキャッシュラインの状態を“クリーンシェアード”とする。
【００４５】
また、キャッシュ７８は、トランザクションが対象とするキャッシュラインデータを“クリーンエクスクルーシブ”又は“クリーンシェアード”の状態で保持している場合、シェアード応答信号線（shared）を介しシェアード応答信号をアサートして、クリーンデータを保持していることを通知する。いずれの場合も、キャッシュ７８は、該当するキャッシュラインの状態を“クリーンシェアード”とする。尚、キャッシュ７８は、対応する有効なキャッシュラインデータを保持していない場合には何もしない。
【００４６】
“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”トランザクション：キャッシュ７８は、トランザクションが対象とするキャッシュラインデータを“モディファイド”の状態で保持している場合、モディファイド応答信号線（modified）を介してモディファイド応答信号をアサートし、更新データを保持していることを通知する。この後、キャッシュ７８は、“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクションを発行して更新データを主メモリ７２に書き出す。キャッシュ７８は、該当するキャッシュラインの状態を“インバリッド”とする。
【００４７】
また、キャッシュ７８は、トランザクションが対象とするキャッシュラインデータを“クリーンエクスクルーシブ”又は“クリーンシェアード”の状態で保持している場合、該当するキャッシュラインの状態を“インバリッド”とする。
【００４８】
尚、キャッシュ７８は、対応する有効なキャッシュラインデータを保持していない場合には何もしない。
“Ｉｎｖａｌｉｄａｔｅ”トランザクション：キャッシュ７８は、トランザクションが対象とするキャッシュラインデータを“クリーンエクスクルーシブ”または“クリーンシェアード”の状態で保持している場合、該当するキャッシュラインの状態を“インバリッド”とする。
【００４９】
また、キャッシュ７８は、対応する有効なキャッシュラインデータを保持していない場合には何もしない。尚、この場合、対応するラインを“モディファイド”の状態で保持していることはあり得ない。
【００５０】
”Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクション：キャッシュ７８は何もしない。
ｃ．メモリ制御部の動作について
次に、各バストランザクションに対するメモリ制御部８０の動作を説明する。
【００５１】
“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクション：バス７６に発行された“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクションをスヌープすると、キャッシュから書き出されるキャッシュラインデータを取り込み、主メモリ７２の該当するアドレスに書き込む。
【００５２】
“Ｉｎｖａｌｉｄａｔｅ”：何もしない。
“Ｒｅａｄ−Ｌｉｎｅ”、“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”：メモリ制御部２０は、これら２つのトランザクションに対しては、同一の動作をする。
【００５３】
これらのトランザクションに対してモディファイド応答信号がアサートされた場合は何もしない。これは、アサートしたスレーブプロセッサのキャッシュが既に更新データを保持していることを示している。この場合、これらのトランザクションに引続き、このキャッシュから“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクションが発行され、更新データが書き出される。
【００５４】
一方、モディファイド応答信号がアサートされない場合は、アクセス対象となっているキャッシュラインのアドレスで示されるメモリロケーションからキャッシュラインデータを読み出し、バス７６に出力する。
【００５５】
ビフォアイメージバッファ制御部の動作について
次に、各バストランザクションに対するビフォアイメージバッファ制御部８１の動作を説明する。
【００５６】
以下、バス７６に発行されるトランザクション毎に説明する。
“Ｒｅａｄ−Ｌｉｎｅ”トランザクション：バスインタフェース制御部８１１がバス７６に発行された“Ｒｅａｄ−Ｌｉｎｅ”トランザクションをスヌープすると、状態保存制御部８１２は、バストランザクション応答制御部８１３を起動する。バストランザクション応答制御部８１３は、バスインタフェース制御部８１１を介してシェアード応答信号をシェアード応答信号線（shared）にアサートする。
【００５７】
これによって、マスタプロセッサのキャッシュの現在対象としているキャッシュラインの状態を“クリーンエクスクルーシブ”ではなく、“クリーンシェアード”の状態にすることができる。そして、この後、当該キャッシュラインに対してライトアクセスが発生した場合に、更新前のデータを保存することを可能としている。
【００５８】
尚、プロセッサ及びキャッシュの機能として、“クリーンエクスクルーシブ”状態を避ける方法がある場合には、ビフォアイメージバッファ制御部８１がシェアード応答信号をアサートする必要はない。
【００５９】
“Ｉｎｖａｌｉｄａｔｅ”トランザクション：バスインタフェース制御部８１１がバス７６に発行された“Ｉｎ−ｖａｌｉｄａｔｅ”トランザクションをスヌープすると、状態保存制御部８１２は、バストランザクション応答制御部８１３を起動する。
【００６０】
バストランザクション応答制御部８１３は、バスインタフェース制御部８１１を介してシェアード応答信号とモディファイド応答信号を、シェアード応答信号線（shared）、及びモディファイド応答信号線（modified）にアサートする。
【００６１】
これによって、“Ｉｎｖａｌ−ｉｄａｔｅ”トランザクションはアボートされたことになり、この後、マスタプロセッサは、再びバスを獲得した後、同じトランザクションを再発行する。
【００６２】
バストランザクション応答制御部８１３は、下記の処理が完了するまで、再発行された“Ｉｎ−ｖａｌｉｄａｔｅ”トランザクションに対して、シェアード応答信号およびモディファイド応答信号をアサートし、アボートし続ける。
【００６３】
状態保存制御部８１２は、バストランザクション発行制御部８１５を起動する。バストランザクション発行制御部８１５は、更新前のキャッシュラインデータを得るため、バスインタフェース制御部８１１を介して得た無効対象となっているキャッシュラインのアドレスで示されるメモリロケーションに対する“Ｒｅａｄ−Ｌｉｎｅ”トランザクションを発行する。
【００６４】
更に、状態保存制御部８１２は、バッファアクセス制御部８１４を起動し、メモリ制御部８０が主メモリ７２から読み出しバス７６に出力したキャッシュラインデータを、バスインタフェース制御部８１１からバッファアクセス制御部８１４に転送して、アドレス値と共にビフォアイメージバッファ７３に書き込ませる。
【００６５】
この処理が終了すると、バストランザクション応答制御部８１３は、再発行された“Ｉｎｖａｌｉ−ｄａｔｅ”トランザクションに対するアボートを中止する。
【００６６】
また、状態保存制御部８１２は、上記処理を実施したキャッシュブロックのアドレスを記憶し、この後、再び同じアドレスに対する“Ｉｎｖａｌｉｄａｔｅ”トランザクションが発行された場合には無視する。
【００６７】
“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”トランザクション：当該トランザクションの発行に伴って、モディファイド応答信号がアサートされた場合は、アサートしたキャッシュが既に更新データを保持していることを示しており、そのプロセッサが最新のチェックポイント以降にライトアクセスを実行していることが分かる。このため、その時点で以前のデータがビフォアイメージバッファ７３に格納されていることになり、改めてこのアドレスのデータをビフォアイメージバッファに格納する必要はない。従って、状態保存制御部８１２は何もしない。
【００６８】
一方、“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”トランザクションの発行に伴って、モディファイド応答信号がアサートされない場合は、バッファアクセス制御部８１４を起動し、メモリ制御部８０が主メモリ７２から読み出しバス７６に出力したキャッシュラインデータを、バスインタフェース制御部８１１からバッファアクセス制御部８１４に転送して、アドレス値と共にビフォアイメージバッファ７３に書き込ませる。この場合、“Ｒｅａｄ−Ｌｉｎｅ”を発行する必要はない。
【００６９】
“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクション：何もしない。
チェックポイント処理について
次に、前述のようにして動作するマルチプロセッサシステムにおけるチェックポイント処理について説明する。
【００７０】
チェックポイント時には、プロセッサ７４〜７５の内部状態（即ち内部レジスタ等）を主メモリ７２に書き出すとともに、各キャッシュ７７〜７８の“モディファイド”状態にある全てのキャッシュラインのデータを主メモリ７２に書き戻す。尚、実際には、プロセッサ内部状態の主メモリ７２への書き出しもキャッシュを介して行なわれるので、バストランザクション上、特別な配慮は不要である。
【００７１】
キャッシュ７７〜７８は、主メモリ７２に書き戻したキャッシュラインの状態を“クリーンシェアード”または“インバリッド”にする。主メモリへのラインデータの書き戻しは“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクションを用いて行なわれるため、このときにビフォアイメージバッファへのデータ保存が発生することはない。
【００７２】
以上に述べた方式によると、チェックポイント時には、コピーバックキャッシュに保持されていた更新データを主メモリに書き出すだけでよく、この時点で更新前データを保存する必要がなくなるため、チェックポイントのオーバヘッドを小さくすることができる。
【００７３】
また、メモリ制御部を改造せずに、容易にメモリ状態回復機能を提供することができる。
ところが、上記した方式では、バス７６に“Ｉｎｖａｌｉｄａｔｅ”トランザクションが発行されたとき、更新前のキャッシュラインデータを得るために、前記“Ｉｎｖａｌｉｄａｔｅ”トランザクションをアボートし、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションを発行しなければならない。
【００７４】
また、このために発行した“Ｒｅａｄ−Ｌｉｎｅ”トランザクションが完了するまで、前記“Ｉｎｖａｌｉｄａｔｅ”トランザクションをアボートし続けなければならない。即ち、バス７６に通常の処理とは無関係のトランザクションが発行されるため、オーバヘッドになっていた。
【００７５】
【発明が解決しようとする課題】
上記したように、コピーバック型のキャッシュを用いたコンピュータシステムに於ける従来のメモリ状態回復機能を実現する方式は、バス７６に“Ｉｎｖａｌｉｄａｔｅ”トランザクションが発行されたとき、更新前のキャッシュラインデータを得るために、“Ｉｎｖａｌｉｄａｔｅ”トランザクションをアボートし、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションを発行しなければならず、又、発行した“Ｒｅａｄ−Ｌｉｎｅ”トランザクションが完了するまで、“Ｉｎｖａｌｉｄａｔｅ”トランザクションをアボートし続けなければならないため、バス７６に通常の処理とは無関係のトランザクションが発行され、オーバヘッドになるという問題があった。
【００７６】
このように従来では、メモリ状態回復機能を実現しようとしたとき、バスに通常の処理とは無関係の余分なトランザクションを発行しなければならず、従ってオーバヘッドになるという問題があった。
【００７７】
本発明は上記実情に鑑みなされたもので、バスに通常の処理とは無関係の余分なトランザクションを発行することなく、メモリ状態を回復できる計算機システム及びメモリ状態復元装置を提供することを目的とする。
【００７８】
【課題を解決するための手段】
本発明は、プロセッサに対応して設けられるコピーバック型のキャッシュと、主メモリ上に於ける更新前データとそのアドレスとの組を格納するバッファとを備えた計算機システムに於いて、前記キャッシュに対応して、該当するキャッシュのクリーンな状態を保持するキャッシュデータ保持手段を設け、前記キャッシュデータ保持手段のデータをもとに前記バッファを用いて前記主メモリの状態を復元する制御手段とを具備して、バスに通常の処理とは関係のない余分なトランザクションを発行することなくメモリ状態を回復できるようにしたことを特徴とする。
【００７９】
又、本発明は、プロセッサに対応して設けられるコピーバック型のキャッシュと、主メモリ上に於ける更新前データとそのアドレスとの組を格納するバッファとを備えた計算機システムに於いて、前記キャッシュのクリーンな状態を保持するｎウェイセットアソシエィティブキャッシュ型のキャッシュデータ保持手段を設け、前記キャッシュデータ保持手段のデータをもとに前記バッファを用いて前記主メモリの状態を復元する制御手段とを具備して、キャッシュとキャッシュデータ保持手段（ビフォアイメージキャッシュ）とを対応付けた構成を採らずに、バスに通常の処理とは関係のない余分なトランザクションを発行することなくメモリ状態を回復できるようにしたことを特徴とする。
【００８０】
又、上記計算機システムに於いて、キャッシュデータ保持手段及び当該保持データにより主メモリの状態を復元する制御手段が拡張用のボードにより提供され又は標準装備されることを特徴とする。
【００８１】
又、本発明は、プロセッサに対応して設けられ、前記プロセッサからのアクセス要求に応じて各種のトランザクションを発行するデータ一貫性保持機能を有する少なくとも一つのコピーバック型のキャッシュと、前記プロセッサの処理に必要なデータを保持する主メモリと、前記主メモリに対するアクセスを制御するメモリ制御手段と、前記少なくとも一つのキャッシュと前記メモリアクセス制御手段とが接続されるバスとを備えた計算機システムのメモリ状態復元装置に於いて、前記主メモリに於ける更新前データとそのアドレスとの組を格納するバッファと、前記キャッシュに対応して設けられ、前記キャッシュからのリード要求に対する主メモリからの応答データを格納するビフォアイメージキャッシュと、前記バスに接続され前記キャッシュからの各種トランザクションをスヌープする手段と、前記キャッシュのリード要求に対するメモリからの応答データをスヌープし、前記ビフォアイメージキャッシュに格納する手段と、前記キャッシュがライト要求を発行したとき前記主メモリが更新される前のデータを前記バッファメモリへ格納するために前記ビフォアイメージキャッシュから該当キャッシュラインデータを読み出す手段をもつビフォアイメージキャッシュ制御手段と、前記ビフォアイメージキャッシュから読み出されたデータ及び対応するアドレスを前記バッファに格納するバッファアクセス制御手段とを具備して、メモリ制御手段その他には手を加えず、バスに主メモリから更新前のデータを読み出すためのリード要求を発行しなくても、付加ハードウェアによりメモリ状態復元機能が実現できるようにしたことを特徴とする。
【００８２】
又、上記メモリ状態復元装置に於いて、ビフォアイメージキャッシュの状態を管理するために、少なくとも１ビットのモディファイドビットを備えたビフォアイメージキャッシュであって、ビフォアイメージキャッシュの制御手段は、主メモリあるいは他のプロセッサからの対応するキャッシュラインからデータを読み出すトランザクションであるとき、当該トランザクションにより示されるビフォアイメージキャッシュの該当キャッシュラインのモディファイドビットをモディファイドでない状態にする手段と、キャッシュから発行されるトランザクションが他のプロセッサの対応するキャッシュラインの無効化を指示するトランザクションであるとき、当該トランザクションにより示されるビフォアイメージキャッシュの該当キャッシュラインのモディファイドビットをモディファイド状態にする手段と、キャッシュから発行されたリード要求により、ビフォアイメージキャッシュのモディファイドラインが置換されるとき、前記主メモリが更新される前のデータをバッファへ格納するために、ビフォアイメージキャッシュから置換されるキャッシュラインを読み出す手段とを具備してなることを特徴とする。
【００８３】
又、上記メモリ状態復元装置に於いて、キャッシュから発行されるリード要求に於いて、キャッシュ内のモディファイドラインが置換されることを示すモディファイドライン置換信号を備え、ビフォアイメージキャッシュ制御手段は、モディファイドライン置換信号が有効であるとき、主メモリが更新される前のデータをバッファへ格納するために、ビフォアイメージキャッシュから該当キャッシュラインを読み出す手段を備えたことを特徴とする。
【００８４】
又、上記メモリ状態復元装置に於いて、ビフォアイメージキャッシュ制御手段は、キャッシュから無効化要求が発行されたとき、主メモリが更新される前のデータをバッファへ格納するために当該トランザクションにより示されるビフォアイメージキャッシュから該当するキャッシュラインデータを読み出す手段を具備してなることを特徴とする。
【００８５】
又、本発明は、プロセッサに対応して設けられ、前記プロセッサからのアクセス要求に応じて各種のトランザクションを発行するデータ一貫性保持機能を有する少なくとも一つのコピーバック型のキャッシュと、前記プロセッサの処理に必要なデータを保持する主メモリと、前記主メモリに対するアクセスを制御するメモリ制御手段と、前記少なくとも一つのキャッシュと前記メモリアクセス制御手段とが接続されるバスとを備えた計算機システムのメモリ状態復元装置に於いて、
ｎウェイセットアソシエィティブキャッシュ型のビフォアイメージキャッシュを設け、当該ビフォアイメージキャッシュの制御手段に、キャッシュから発行されるリード要求のアドレスがビフォアイメージキャッシュ内にあるか否かを判定するためのタグ比較手段を設けて、プロセッサのリード要求がビフォアイメージキャッシュにミスしたとき、主メモリが更新される前のデータをバッファへ格納するためにビフォアイメージキャッシュの該当するセット中の全てのラインを読み出す手段と、前記ビフォアイメージキャッシュの該当するセット中のラインから置換するラインを選択し、前記リード要求に対する応答データを選択したキャッシュラインへ格納する手段とを具備して、プロセッサに接続されたキャッシュとビフォアイメージキャッシュとの構成を異ならせて、バスに主メモリから更新前のデータを読み出すためのリード要求を発行しなくてもメモリ状態復元機能が実現できることを特徴とする。
【００８６】
又、上記ｎウェイセットアソシエィティブキャッシュ型のビフォアイメージキャッシュを設けてなるメモリ状態復元装置に於いて、ビフォアイメージキャッシュの制御手段に、キャッシュのリード要求がビフォアイメージキャッシュにミスし、ビフォアイメージキャッシュのセット中にモディファイドラインがあるとき、主メモリが更新される前のデータをバッファへ格納するために、モディファイドライン全てを読み出す手段と、リード要求がビフォアイメージキャッシュにミスし、ビフォアイメージキャッシュの該当するセット中にモディファイドラインがないとき、ビフォアイメージキャッシュの該当するセット中のラインから置換するラインを選択し、主メモリが更新される前のデータをバッファへ格納するために、選択したラインを読み出す手段とを具備してなることを特徴とする。
【００８７】
又、上記ｎウェイセットアソシエィティブキャッシュ型のビフォアイメージキャッシュを有してなるメモリ状態復元装置に於いて、ビフォアイメージキャッシュの制御手段に、キャッシュから発行されるリード要求のアドレスがビフォアイメージキャッシュ内にあるか否かを判定するためのタグ比較手段を備え、プロセッサのリード要求がビフォアイメージキャッシュにミスしたとき、主メモリが更新される前のデータをバッファへ格納するために、ビフォアイメージキャッシュの該当するセット中の全てのラインを読み出す手段と、ビフォアイメージキャッシュの該当するセット中のラインから置換するラインを選択し、リード要求に対する応答データを選択したキャッシュラインへ格納する手段とを具備してなることを特徴とする。
【００８８】
【発明の実施の形態】
以下図面を参照して本発明の実施形態を説明する。
第１実施形態
先ず、図１乃至図５を参照して本発明の第１実施形態を説明する。
【００８９】
図１は本発明の第１実施形態に係るメモリ状態回復機能を有するコンピュータシステムの構成を示すブロック図である。
図１に示す第１実施形態のコンピュータシステムに於いては、Ｎ個のプロセッサ１４〜１５と、各プロセッサに対応するＮ個のキャッシュ１７〜１８が設けられている。
【００９０】
キャッシュ１７〜１８は、メモリ制御部２０、及びビフォアイメージバッファ制御部２１と、バス１６を介して接続されている。
ビフォアイメージバッファ制御部２１は、バスインタフェース制御部２１１、状態保存制御部２１２、バッファアクセス制御部２１４、及びキャッシュ制御部２１５を有している。
【００９１】
バスインタフェース制御部２１１は、バス１６と直接接続され、バスの制御を行なう。バスインタフェース制御部２１１は、常時、バス１６を監視しており、バス１６に発行されたトランザクションに応じて動作する。
【００９２】
状態保存制御部２１２は、主メモリ１２の状態を保存するために必要な各種機能を制御する。バッファアクセス制御部２１４は、ビフォアイメージバッファ１３と接続されビフォアイメージバッファに対するアクセスを制御する。
【００９３】
キャッシュ制御部２１５は、後述するビフォアイメージキャッシュ３０〜３１と接続され、ビフォアイメージキャッシュ３０〜３１に対するアクセスを制御する。
【００９４】
キャッシュ１７〜１８は、コピーバック型のキャッシュであり、上述した従来技術で説明した方式に従って、データ一貫性保持のためのプロトコルを実現する。
【００９５】
キャッシュ１７〜１８は、上述した従来技術と同様の構成をもち、キャッシュラインデータを保持するデータメモリと、データメモリに格納された各キャッシュラインデータを管理する情報を保持するためのタグメモリから構成される。
【００９６】
又、タグメモリも上述した従来技術と同様の構成をもち、従来技術と同様の方式により状態を管理する。
ビフォアイメージキャッシュ３０〜３１は、それぞれ、各プロセッサに接続されたキャッシュ１７〜１８と同様の構成をもち、キャッシュ１７〜１８のリードデータのコピーを格納するためのデータメモリと、データメモリに格納された各キャッシュラインデータを管理するためのタグメモリから構成される。
【００９７】
タグメモリの構成は、キャッシュ１７〜１８と同じでもよいが、この実施形態では状態管理が不要である。
コピーバックキャッシュに関連したバストランザクションは、従来技術と同様であり、次のようなものを含む。
【００９８】
“Ｒｅａｄ−Ｌｉｎｅ”（キャッシュラインデータのリード）。
“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”（キャッシュラインデータのリード、及び他のキャッシュに格納されたデータ無効化）。
【００９９】
“Ｗｒｉｔｅ−Ｌｉｎｅ”（キャッシュラインデータのライト）。
“Ｉｎｖａｌｉｄａｔｅ”（他のキャッシュに格納されたデータ無効化）。
これらの各機能は、従来技術と同様である。
【０１００】
バス１６は、シェアード応答信号線（shared）１６１、モディファイド応答信号線（modified）１６２、バスコマンド信号線（command ）１６３、プロセッサＩＤ信号線（ID）１６５、及びアドレス／データ信号線（address/data）１６４を含む。一般には、この他にアービトレーションを行なうための信号線などを含むが、本発明の主旨には直接関係しないので、その説明を省略する。
【０１０１】
プロセッサＩＤ信号線（ID）１６５は、トランザクションを発行したプロセッサを識別するために、それぞれのプロセッサに割り振られた識別番号である。プロセッサＩＤ信号線（ID）１６５により、トランザクションを発行したプロセッサ（キャッシュ）に対応するビフォアイメージキャッシュを決定する。
【０１０２】
その他の機能は、上述した従来技術と同様である。
マスタプロセッサ及びスレーブプロセッサの動作について
マスタプロセッサおよびスレーブプロセッサの動作は上述した従来技術と同様である。
【０１０３】
メモリ制御部の動作について
メモリ制御部２０の動作は上述した従来技術と同様である。
ビフォアイメージバッファ制御部の動作について
次に、“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクションが発行されたときに、バックアップを作成するときの、各バストランザクションに対するビフォアイメージバッファ制御部２１の動作を説明する。図２乃至図５はそれぞれ上記第１実施形態の動作説明図である。
【０１０４】
尚、ここでは、マスタプロセッサをプロセッサ１４（キャッシュ１７）、当該プロセッサ１４（キャッシュ１７）に対応するビフォアイメージキャッシュをビフォアイメージキャッシュ３０、スレーブプロセッサをプロセッサ１５（キャッシュ１８）、当該プロセッサ１５（キャッシュ１８）に対応するビフォアイメージキャッシュをビフォアイメージキャッシュ３１として動作を説明する。
【０１０５】
又、キャッシュ１７でキャッシュミスしたことにより発行されるリード要求  （“Ｒｅａｄ−Ｌｉｎｅ”，”Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”）よりも、キャッシュミスにより“モディファイド”ラインを主メモリ１２に書き戻すために発行される“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクションが常に先に発行される。
【０１０６】
“Ｒｅａｄ−Ｌｉｎｅ”トランザクション：バスインタフェース制御部２１１がバス１６に発行された“Ｒｅａｄ−Ｌｉｎｅ”トランザクションをスヌープすると、状態保存制御部２１２とキャッシュ制御部２１５を起動する。
【０１０７】
状態保存制御部２１２は、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対して、メモリ制御部２０が主メモリ１２から読み出しバス１６へ出力したデータを取り込む。
【０１０８】
キャッシュ制御部２１５は、プロセッサＩＤ信号線１６５で示されるプロセッサ１４（キャッシュ１７）に対応したビフォアイメージキャッシュ３０の該当キャッシュラインへ、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対する応答データを格納する（図２（１−ａ），図５（１−ｄ）参照）。
【０１０９】
“Ｉｎｖａｌｉｄａｔｅ”トランザクション：何もしない（図３（１−ｂ）参照）。
“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”トランザクション：“Ｒｅａｄ−Ｌｉｎｅ”トランザクションと同じ動作をする。
【０１１０】
“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクション：バスインタフェース制御部２１１がバス１６に発行された“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクションをスヌープすると、キャッシュ制御部２１５を起動する。
【０１１１】
キャッシュ制御部２１５は、プロセッサＩＤ信号線（ID）１６５で示されるプロセッサ１４（キャッシュ１７）に対応するビフォアイメージキャッシュ３０の該当キャッシュラインを読み出し、状態保存制御部２１２を起動する。
【０１１２】
状態保存制御部２１２は、バッファアクセス制御部２１４を起動し、ビフォアイメージキャッシュ３０から読み出したキャッシュラインデータをバッファアクセス制御部２１４に転送して、アドレス値とともにビフォアイメージバッファ１３に書き込ませる（図４（１−ｃ）参照）。
【０１１３】
このように、コピーバック型のキャッシュに於いて、プロセッサがストアを行なうとき、必ずキャッシュラインをリードしてから、キャッシュを更新するので、ビフォアイメージキャッシュ内には更新前のデータが記録されている。
【０１１４】
このため、メモリが更新されるときに（“Ｗｒｉｔｅ−Ｌｉｎｅ”が発行された）、更新されるキャッシュラインデータをビフォアイメージバッファ１３に保存することができる。
【０１１５】
チェックポイント処理について
チェックポイント処理は上述した従来技術と同様の処理を行ない、更に次の処理を行なう。
【０１１６】
キャッシュ１４〜１５のキャッシュラインを全て無効化する。
又は、メモリに書き出したキャッシュラインデータをビフォアイメージキャッシュに格納する。
【０１１７】
このとき、ビフォアイメージキャッシュに書き込む前に、そのキャッシュラインのデータをビフォアイメージキャッシュから読み出し、ビフォアイメージバッファ１３に格納する。この動作は通常のバックアップをとる動作と同様である。
【０１１８】
上記したような第１実施形態の機能により、メモリ制御手段その他には手を加えず、バスに主メモリから更新前のデータを読み出すためのリード要求を発行しなくても、付加ハードウェアによりメモリ状態復元機能が実現できる。
【０１１９】
第２実施形態
次に、図６乃至図１０を参照して本発明の第２実施形態を説明する。
図６は本発明の第２実施形態に係るメモリ状態回復機能を有するコンピュータシステムの構成を示すブロック図である。
【０１２０】
この第２実施形態では“Ｒｅａｄ−Ｌｉｎｅ”トランザクションが発行されたときに、バックアップを作成するためのビフォアイメージバッファ制御部２１の動作に特徴をもつ。
【０１２１】
この第２実施形態の構成は次の点を除いて上記第１実施形態と同様である。
ビフォアイメージバッファ制御部２１は、バス１６に発行されたトランザクションに対して応答を返す機能を制御するためのバストランザクション応答制御部２１３を備える。
【０１２２】
ビフォアイメージキャッシュ３０〜３１は、“モディファイド”状態を管理するために、モディファイド（Ｍ）ビットを備える。
ビフォアイメージキャッシュ３０〜３１の状態を管理するためのモディファイド（Ｍ）ビットは、モディファイドビット（Ｍ）が（“１”）のとき、そのラインが“モディファイド”であることを示す。（“０”）のとき、“モディファイドでない”つまり、“クリーン・シェアード”、“クリーン・エクスクルーシブ”、又は“インバリッド”であることを示す。
【０１２３】
チェックポイント時は、ビフォアイメージキャッシュ３０〜３１の状態を全て“モディファイでない”にする。
次に、各バストランザクションに対するビフォアイメージバッファ制御部２１の動作を説明する。
【０１２４】
図７乃至図１０はそれぞれ上記第２実施形態の動作説明図である。
“Ｒｅａｄ−Ｌｉｎｅ”トランザクション：バスインタフェース制御部２１１がバス１６に発行された“Ｒｅａｄ−Ｌｉｎｅ”トランザクションをスヌープすると、状態保存制御部２１２とキャッシュ制御部２１５を起動する。
【０１２５】
状態保存制御部２１２は、バストランザクション応答制御部２１３を起動する。バストランザクション応答制御部２１３は、バスインタフェース制御部２１１を介してシェアード応答信号をシェアード応答信号線１６１にアサートする。
【０１２６】
これによって、マスタプロセッサ１４（キャッシュ１７）が現在対象としているキャッシュラインの状態を“クリーンエクスクルーシブ”ではなく、“クリーンシェアード”の状態にすることができる。
【０１２７】
そして、この後、当該キャッシュラインが置換されるときに、更新前のデータを保存することを可能としている。
また、状態保存制御部２１２は、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対して、メモリ制御部２０が主メモリ１２から読み出しバス１６へ出力したデータを取り込む。
【０１２８】
尚、プロセッサ及びキャッシュの機能として、“クリーンエクスクルーシブ”状態を避ける方法がある場合には、ビフォアイメージバッファ制御部２１がシェアード応答信号をアサートする必要はない。
【０１２９】
キャッシュ制御部２１５は、プロセッサＩＤ信号線１６５で示されるプロセッサ１４（キャッシュ１７）に対応したビフォアイメージキャッシュ３０から該当するタグメモリを読み出す。
【０１３０】
ビフォアイメージキャッシュ３０から読み出したラインが“モディファイドでない”ときであって、モディファイド応答信号線１６２がアサートされないとき、キャッシュ制御部２１５は、プロセッサ１４（キャッシュ１７）に対応するビフォアイメージキャッシュ３０の該当キャッシュラインへ“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対する応答データを格納する（図７参照）。
【０１３１】
ビフォアイメージキャッシュ３０から読み出したラインが“モディファイドでない”ときであって、モディファイド応答信号線１６２がアサートされたとき、キャッシュ制御部２１５は、モディファイド応答信号線１６２をアサートしたプロセッサ１５（キャッシュ１８）に対応するビフォアイメージキャッシュ３１から該当キャッシュラインを読み出し、そのラインを“モディファイドでない”とする。
【０１３２】
そして、状態保存制御部２１２は、バッファアクセス制御部２１４を起動し、ビフォアイメージキャッシュ３１から読み出したキャッシュラインデータをバッファアクセス制御部２１４に転送して、アドレス値とともにビフォアイメージバッファ１３に書き込ませる。
【０１３３】
ビフォアイメージキャッシュ３０から読み出したラインが“モディファイド”のとき、キャッシュ制御部２１５は、プロセッサ１４（キャッシュ１７）に対応するビフォアイメージキャッシュ３０から該当キャッシュラインデータを読み出す。
【０１３４】
そして、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対する応答データをプロセッサ１４（キャッシュ１７）に対応するビフォアイメージキャッシュ３０の該当キャッシュラインへ書き込む。
【０１３５】
状態保存制御部２１２は、バッファアクセス制御部２１４を起動し、ビフォアイメージキャッシュ３０から読み出したキャッシュラインデータをバッファアクセス制御部２１４に転送して、アドレス値とともにビフォアイメージバッファ１３に書き込ませる（図９参照）。
【０１３６】
ビフォアイメージキャッシュ３０の該当キャッシュラインの状態を“モディファイドでない”とする。
“Ｉｎｖａｌｉｄａｔｅ”トランザクション：バスインタフェース制御部２１１がバス１６に発行された“Ｉｎ−ｖａｌｉｄａｔｅ”トランザクションをスヌープすると、キャッシュ制御部２１５は、プロセッサＩＤ信号線（ID）１６５で示されるプロセッサ１４（キャッシュ１７）に対応するビフォアイメージキャッシュ３０の該当キャッシュラインの状態を“モディファイド”とする（図８参照）。
【０１３７】
“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”トランザクション：ビフォアイメージキャッシュ３０の状態を“モディファイド”とすることを除いて、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションと同様である。
【０１３８】
但し、モディファイド応答信号１６２がアサートされた場合、プロセッサ１５（キャッシュ１８）に対応するビフォアイメージキャッシュ３１の該当キャッシュラインの更新前データをビフォアイメージバッファ１３に格納するので、ビフォアイメージキャッシュ３０の該当キャッシュラインが置き換えられるときには、バックアップを作成する必要はない。このため、ビフォアイメージキャッシュ３０の該当ラインの状態を“モディファイド”にする必要はない。
【０１３９】
“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクション：何もしない（図１０参照）。
第３実施形態
この第３実施形態は、上記第２実施形態に於いて、リード要求（“Ｒｅａｄ−Ｌｉｎｅ”，“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”）が発行されたときに、前記リード要求により“モディファイド”ラインが置き換えられることを示すモディファイドライン置換信号が出力される場合の動作に特徴をもつ。尚、この第３実施形態では、ビフォアイメージキャッシュ３０〜３１の状態を管理するためのモディファイド（Ｍ）ビットは不要である。又、バストランザクション応答制御部は必要ない。つまり、キャッシュの状態が“クリーン・エクスクルーシブ”の状態を持つことがある。
【０１４０】
“Ｒｅａｄ−Ｌｉｎｅ”トランザクション：バスインタフェース制御部２１１がバス１６に発行された“Ｒｅａｄ−Ｌｉｎｅ”トランザクションをスヌープすると、キャッシュ制御部２１５を起動する。
【０１４１】
また、状態保存制御部２１２は、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対して、メモリ制御部２０が主メモリ１２から読み出しバス１６へ出力したデータを取り込む。
【０１４２】
“Ｒｅａｄ−Ｌｉｎｅ”トランザクションにより“モディファイド”ラインが置き換えられるとき、モディファイドライン置換信号がアサートされる。
このとき、キャッシュ制御部２１５は、プロセッサＩＤ信号線（ID）１６５で示されるプロセッサ１４（キャッシュ１７）に対応したビフォアイメージキャッシュ３０から該当キャッシュラインデータを読み出し、状態保存制御部２１２に渡す。
【０１４３】
そして、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対する応答データを、プロセッサ１４（キャッシュ１７）に対応するビフォアイメージキャッシュ３０へ書き込む。
【０１４４】
状態保存制御部２１２は、バッファアクセス制御部２１４を起動し、ビフォアイメージキャッシュ３０から読み出したキャッシュラインデータをバッファアクセス制御部２１４に転送して、アドレス値とともにビフォアイメージバッファ１３に書き込ませる。
【０１４５】
モディファイドライン置換信号がアサートされず、モディファイド応答信号線１６２がアサートされたとき、キャッシュ制御部２１５は、モディファイド応答信号線１６２をアサートしたプロセッサ１５（キャッシュ１８）に対応するビフォアイメージキャッシュ３１から該当キャッシュラインを読み出す。
【０１４６】
そして、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対する応答データを、プロセッサ１４（キャッシュ１７）に対応するビフォアイメージキャッシュ３０へ書き込む。
【０１４７】
状態保存制御部２１２が、バッファアクセス制御部２１４を起動し、ビフォアイメージキャッシュ３１から読み出したキャッシュラインデータをバッファアクセス制御部２１４に転送して、アドレス値と共にビフォアイメージバッファ１３に書き込ませる。
【０１４８】
モディファイドライン置換信号がアサートされず、モディファイド応答信号線１６２もアサートされないとき、キャッシュ制御部２１５は、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対する応答データを、プロセッサ１４（キャッシュ１７）に対応するビフォアイメージキャッシュ３０へ書き込む。
【０１４９】
“Ｉｎｖａｌｉｄａｔｅ”トランザクション：何もしない。
“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”トランザクション：“Ｒｅａｄ−Ｌｉｎｅ”トランザクションと同様の動作を行なう。
【０１５０】
“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクション：何もしない。
第４実施形態
この第４実施形態は、上記第２、第３実施形態に於いて、リード要求時（“Ｒｅａｄ−Ｌｉｎｅ”，“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”）にバックアップを作成する方法を示したが、無効化要求（“Ｉｎｖａｌｉｄａｔｅ”）が発行されたときにバックアップを作成する動作に特徴をもつ。
【０１５１】
この第４実施形態に於ける構成は、上記した第２実施形態と同様である。但し、ビフォアイメージキャッシュ３０〜３１の状態管理のためのモディファイド（Ｍ）ビットはない。
【０１５２】
“Ｒｅａｄ−Ｌｉｎｅ”トランザクション：バスインタフェース制御部２１１がバス１６に発行された“Ｒｅａｄ−Ｌｉｎｅ”トランザクションをスヌープすると、状態保存制御部２１２とキャッシュ制御部２１５を起動する。
【０１５３】
状態保存制御部２１２は、バストランザクション応答制御部２１３を起動する。
バストランザクション応答制御部２１３は、バスインタフェース制御部２１１を介してシェアード応答信号をシェアード応答信号線（shared）１６１にアサートする。
【０１５４】
マスタプロセッサ１４（キャッシュ１７）が現在対象としているキャッシュラインの状態を“クリーンエクスクルーシブ”ではなく、“クリーンシェアード”の状態にすることができる。
【０１５５】
そして、この後、当該キャッシュラインに対してライトアクセスが発生した場合に、更新前のデータを保存することを可能としている。
また、状態保存制御部２１２は、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対して、メモリ制御部２０が主メモリ１２から読み出しバス１６へ出力したデータを取り込む。
【０１５６】
尚、プロセッサ及びキャッシュの機能として、“クリーンエクスクルーシブ”状態を避ける方法がある場合には、ビフォアイメージバッファ制御部２１がシェアード応答信号をアサートする必要はない。
【０１５７】
キャッシュ制御部２１５は、プロセッサＩＤ信号線（ID）１６５で示されるプロセッサ１４（キャッシュ１７）に対応するビフォアイメージキャッシュ３０の該当ラインへ、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対する応答データを書き込む。
【０１５８】
“Ｉｎｖａｌｉｄａｔｅ”トランザクション：バスインタフェース制御部２１１がバス１６に発行された“Ｉｎ−ｖａｌｉｄａｔｅ”トランザクションをスヌープすると、プロセッサＩＤ信号線１６５で示されるプロセッサ１４（キャッシュ１７）に対応するビフォアイメージキャッシュ３０の該当ラインを読み出し、状態保存制御部２１２へ渡す。
【０１５９】
状態保存制御部２１２は、バッファアクセス制御部２１４を起動し、ビフォアイメージキャッシュ３０から読み出したキャッシュラインデータをバッファアクセス制御部２１４に転送して、アドレス値とともにビフォアイメージバッファ１３に書き込ませる。
【０１６０】
“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”トランザクション：バスインタフェース制御部２１１がバス１６に発行された“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”トランザクションをスヌープすると、状態保存制御部２１２とキャッシュ制御部２１５を起動する。
【０１６１】
状態保存制御部２１２は、“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”トランザクションに対して、メモリ制御部２０が主メモリ１２から読み出しバスへ出力したデータを取り込む。
【０１６２】
モディファイド応答信号線１６２がアサートされない場合、キャッシュ制御部２１５は、プロセッサＩＤ信号線（ID）１６５で示されるプロセッサ１４（キャッシュ１７）に対応したビフォアイメージキャッシュ３０の該当ラインを読み出し、状態保存制御部２１２へ渡す。
【０１６３】
そして、ビフォアイメージキャッシュ３０の該当ラインへ、“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”トランザクションに対する応答データを書き込む。
【０１６４】
状態保存制御部２１２は、バッファアクセス制御部２１４を起動し、ビフォアイメージキャッシュ３０から読み出したキャッシュラインデータをバッファアクセス制御部２１４に転送して、アドレス値とともにビフォアイメージバッファ１３に書き込ませる。
【０１６５】
モディファイド応答信号１６２がアサートされた場合、キャッシュ制御部２１５は、プロセッサＩＤ信号線（ID）１６５で示されるプロセッサ１４（キャッシュ１７）に対応するビフォアイメージキャッシュ３０の該当ラインへ、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対する応答データを書き込む。
【０１６６】
このとき、該当キャッシュラインは既に更新されており、更新前のデータは、ビフォアイメージバッファ１３に格納されている。従って、状態保存制御部２１２は何もしない。
【０１６７】
“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクション：何もしない。
第５実施形態
この第５実施形態は、ビフォアイメージキャッシュが、プロセッサに接続されたキャッシュと構成を異にすることを特徴とする。
【０１６８】
図１１は本発明の第５実施形態に係るメモリ状態回復機能を有するコンピュータシステムの構成を示すブロック図である。
この第５実施形態に於ける構成は、次の点を除いて上述した第２実施形態と同様である。
【０１６９】
ａ．プロセッサＩＤ信号がない。つまり、どのプロセッサが発行したトランザクションか識別することができない。
ｂ．ビフォアイメージキャッシュ３０が一つのｎウェイ・セット・アソシエィティブ・キャッシュ型（ｎ≧１）で構成されている。
【０１７０】
次に、ビフォアイメージバッファ制御部２１の動作をそれぞれのトランザクション毎に説明する。
“Ｒｅａｄ−Ｌｉｎｅ”トランザクション：バスインタフェース制御部２１１がバス１６に発行された“Ｒｅａｄ−Ｌｉｎｅ”トランザクションをスヌープすると、状態保存制御部２１２とキャッシュ制御部２１５を起動する。
【０１７１】
状態保存制御部２１２は、バストランザクション応答制御部２１３を起動する。
バストランザクション応答制御部２１３は、バスインタフェース制御部２１１を介してシェアード応答信号をシェアード応答信号線（shared）１６１にアサートする。
【０１７２】
マスタプロセッサ１４（キャッシュ１７）が現在対象としているキャッシュラインの状態を“クリーンエクスクルーシブ”ではなく、“クリーンシェアード”の状態にすることができる。
【０１７３】
そして、この後、当該キャッシュラインが置換されるときに、更新前のデータを保存することを可能としている。
また、状態保存制御部２１２は、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対して、メモリ制御部２０が主メモリ１２から読み出しバス１６へ出力したデータを取り込む。
【０１７４】
尚、プロセッサおよびキャッシュの機能として、“クリーンエクスクルーシブ”状態を避ける方法がある場合には、ビフォアイメージバッファ制御部２１がシェアード応答信号をアサートする必要はない。
【０１７５】
キャッシュ制御部２１５は、ビフォアイメージキャッシュ３０からタグメモリを読み出す。
ビフォアイメージキャッシュ３０にヒットしたとき、何もしない。
【０１７６】
ビフォアイメージキャッシュ３０にミスし、モディファイド応答信号１６２がアサートされた場合、そのラインは既にバックアップされているので何もしない。
【０１７７】
ビフォアイメージキャッシュ３０にミスし、モディファイド応答信号線（modified）１６２がアサートされない場合で、ビフォアイメージキャッシュ３０の該当セット内に一つ以上の“モディファイド”ラインがあるとき、キャッシュ制御部２１５は、ビフォアイメージキャッシュ３０から全ての“モディファイド”ラインのデータを読み出し、状態保存制御部２１２に渡す。
【０１７８】
そして、キャッシュ制御部２１５は、セット内の“モディファイド”ラインの中から置換するラインを選択し、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションの応答データを書き込む。セット内の全ての“モディファイド”ラインの状態を“モディファイドでない”にする。
【０１７９】
状態保存制御部２１２は、バッファアクセス制御部２１４によって、前記“モディファイド”ラインのデータをビフォアイメージバッファ１３へ書き込ませる。
【０１８０】
ビフォアイメージキャッシュ３０にミスし、モディファイド応答信号線（modified）１６２がアサートされない場合で、ビフォアイメージキャッシュ３０のセット内に“モディファイド”ラインが一つもないとき、
キャッシュ制御部２１５は、セット内から置換するキャッシュラインを選択し、データを読み出し、状態保存制御部２１２に渡す。そして、前記キャッシュラインへ“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対する応答データを書き込む。
【０１８１】
状態保存制御部２１２は、バッファアクセス制御部２１４によって、前記キャッシュラインデータをビフォアイメージバッファ１３へ書き込ませる。
ビフォアイメージキャッシュ３０の該当キャッシュラインの状態を“モディファイドでない”とする。
【０１８２】
“Ｉｎｖａｌｉｄａｔｅ”トランザクション：バスインタフェース制御部２１１がバス１６に発行された“Ｉｎ−ｖａｌｉｄａｔｅ”トランザクションをスヌープすると、キャッシュ制御部２１５を起動する。
【０１８３】
キャッシュ制御部２１５は、ビフォアイメージキャッシュ３０からタグメモリを読み出す。
ビフォアイメージキャッシュ３０にヒットした場合、そのキャッシュラインの状態を“モディファイド”にする。
【０１８４】
ビフォアイメージキャッシュ３０にミスした場合、そのラインは既にビフォアイメージバッファ１３に格納されている。従って何もしない。
“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”トランザクション：ビフォアイメージキャッシュの状態を“モディファイド”にすることを除いて、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションと同様である。
【０１８５】
“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクション：何もしない。
このように第５実施形態に於いては、プロセッサに接続されたキャッシュとビフォアイメージキャッシュの構成が異なることを可能とする。
【０１８６】
第６実施形態
図１２は本発明の第６実施形態に係るメモリ状態回復機能を有するコンピュータシステムの構成を示すブロック図である。
【０１８７】
この図１２に示す第６実施形態では、ビフォアイメージキャッシュ３０〜３１が、キャッシュ１７〜１８と構成が異なる場合の他の実施形態を示している。
この第６実施形態に於ける構成は、次の点を除いて上述した第３実施形態と同様である。
【０１８８】
ａ．プロセッサＩＤ信号がない。つまり、どのプロセッサが発行したトランザクションか識別することができない。
ｂ．ビフォアイメージキャッシュ３０が一つのｎウェイ・セット・アソシエィティブ・キャッシュ型（ｎ≧１）で構成されている。
【０１８９】
ｃ．リード要求（“Ｒｅａｄ−Ｌｉｎｅ”，“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”）に対する主メモリ１２からの応答データとアドレスを記録するための一時バッファ２１６を持つ。
【０１９０】
次に、ビフォアイメージバッファ制御部２１の動作をそれぞれのトランザクション毎に説明する。
“Ｒｅａｄ−Ｌｉｎｅ”トランザクション：バスインタフェース制御部２１１がバス１６に発行された“Ｒｅａｄ−Ｌｉｎｅ”トランザクションをスヌープすると、キャッシュ制御部２１５を起動する。
【０１９１】
また、状態保存制御部２１２は、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対して、メモリ制御部２０が主メモリ１２から読み出しバスへ出力したデータを取り込む。
【０１９２】
リード要求により“モディファイド”ラインが置き換えられるとき、モディファイドライン置換信号線（replace ）１６７がアサートされる。
このとき、状態保存制御部２１２は、“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対する応答データをアドレスとともに一時バッファ２１６に記録する。
【０１９３】
モディファイドライン置換信号線（replace ）１６７がアサートされておらず、ビフォアイメージキャッシュ３０にヒットした場合は何もしない。
モディファイドライン置換信号がアサートされておらず、ビフォアイメージキャッシュ３０ミスし、モディファイド応答信号線（modified）１６２がアサートされた場合、そのラインは、すでにバックアップされているので何もしない。
【０１９４】
モディファイドライン置換信号線（replace ）１６７がアサートされておらず、ビフォアイメージキャッシュ３０にミスし、モディファイド応答信号線（modified）１６２がアサートされない場合、キャッシュ制御部２１５は、セット内から置換するキャッシュラインを選択し、データを読み出し、状態保存制御部２１２に渡す。そして、前記キャッシュラインへ“Ｒｅａｄ−Ｌｉｎｅ”トランザクションに対する応答データを書き込む。
【０１９５】
状態保存制御部２１２は、バッファアクセス制御部２１４によって、前記キャッシュラインデータをビフォアイメージバッファ１３へ書き込ませる。
“Ｉｎｖａｌｉｄａｔｅ”トランザクション：何もしない。
【０１９６】
“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”トランザクション：“Ｒｅａｄ−Ｌｉｎｅ”トランザクションと同様の動作を行なう。
“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクション：バスインタフェース制御部２１１がバス１６に発行された“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクションをスヌープすると、キャッシュ制御部２１５を起動する。
【０１９７】
キャッシュ制御部２１５は、ビフォアイメージキャッシュ３０からタグメモリを読み出す。
“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクションがビフォアイメージキャッシュ３０にヒットした場合、キャッシュ制御部２１５は、ヒットしたキャッシュラインデータを読み出し、状態保存制御部２１２へデータを渡す。
【０１９８】
そして、一時バッファ２１６に記録されているアドレスとデータを前記キャッシュラインへ書き込む。
状態保存制御部２１２は、キャッシュ制御部２１５によって読み出されたキャッシュラインデータをバッファアクセス制御部２１４によって、ビフォアイメージバッファ１３へ書き込ませる。
【０１９９】
“Ｗｒｉｔｅ−Ｌｉｎｅ”トランザクションがビフォアイメージキャッシュ３０にミスした場合、キャッシュ制御部２１５は、セット内から置換するラインを選択する。
【０２００】
選択したキャッシュラインのデータを読み出し、状態保存制御部２１２へ渡す。
そして、一時バッファ２１６に記録されているアドレスとデータを前記キャッシュラインへ書き込む。
【０２０１】
状態保存制御部２１２は、キャッシュ制御部２１５によって読み出されたキャッシュラインデータをバッファアクセス制御部２１４によって、ビフォアイメージバッファ１３へ書き込ませる。
【０２０２】
このように第６実施形態に於いては、プロセッサに接続されたキャッシュとビフォアイメージキャッシュの構成が異なることを可能とする。
その他の実施形態
上述した第１、第３、第６実施形態に於いては、プロセッサに接続されたキャッシュの状態が“クリーンエクスクルーシブ”になることを許す。又、第２、第４、第５実施形態に於いては従来例と同様に、キャッシュが“クリーンエクスクルーシブ”の状態にならないよう制御する必要がある。但し、ビフォアイメージキャッシュで、“クリーンエクスクルーシブ”と“クリーンシェアード”の状態を管理し、“クリーンエクスクルーシブ”を“モディファイド”と同様に扱うことによって、バストランザクション応答制御部が不要となり、プロセッサに接続されたキャッシュが“クリーンエクスクルーシブ”の状態になることを許す。
【０２０３】
第５、第６実施形態では、ビフォアイメージキャッシュが、プロセッサに接続されたキャッシュと構成が異なる場合、又は、プロセッサに接続されたキャッシュがｎウェイ・セット・アソシエィティブ・キャッシュ型で、置換されたラインが分からないときや、どのプロセッサが発行した要求か分からないときなどの理由により、ビフォアイメージキャッシュがプロセッサに接続されたキャッシュの状態を正確に追従できない場合に対応することができる。
【０２０４】
又、従来方式と同様に、ビフォアイメージバッファを主メモリの一部を利用して実施することも可能である。この際は独立したバッファメモリを設けることなく安価に実現できる。
【０２０５】
又、前記実施形態に於いては、複数のプロセッサ１４〜１５を持つマルチプロセッサシステムを例に説明したが、キャッシュが同様の機能を持っていれば、単一プロセッサから成るコンピュータシステムに対しても適用することが可能である。又、キャッシュが単一でなく、階層構造をとる場合にも同様に適用可能である。
【０２０６】
このようにして、ビフォアイメージバッファ制御部は、あるキャッシュ又はプロセッサがバス１６にリード要求（“Ｒｅａｄ−Ｌｉｎｅ”，“Ｒｅａｄ−Ｌｉｎｅ−ｗｉｔｈ−Ｉｎｖａｌｉｄａｔｅ”）を発行したときに、そのリードデータをビフォアイメージキャッシュに格納し、そのラインがライトまたは、置換されるときに、ビフォアイメージキャッシュに保持された更新前のキャッシュラインデータをビフォアイメージバッファに保存する。
【０２０７】
即ち、既存のコンピュータシステムのバス、プロセッサ、キャッシュ、メモリ制御部には何ら手を加えずに、バスにビフォアイメージバッファ制御部を付加することにより、メモリ状態回復機能を実現することが可能となる。
【０２０８】
又、主メモリを更新する前のデータを読み出すために、バスへトランザクションを発行する必要がない。
尚、本発明は、上記実施形態に限定されるものではなく、本発明の要旨の範囲で種々の変形実施が可能である。
【０２０９】
【発明の効果】
以上詳記したように本発明によれば、バスに通常の処理とは無関係の余分なトランザクションを発行することなく、メモリ状態を回復できる計算機システム及びメモリ状態復元装置が提供できる。
【０２１０】
又、メモリ制御手段その他には手を加えず、バスに主メモリから更新前のデータを読み出すためのリード要求を発行しなくても、付加ハードウェアによりメモリ状態復元機能が実現できる。更に、このメモリ状態復元機能をプロセッサに接続されたキャッシュとビフォアイメージキャッシュとを異なる構成にて実現できる。
又、ビフォアイメージバッファを主メモリ内に設けることによって独立したバッファメモリを設けることなく安価に実現できる。
【図面の簡単な説明】
【図１】本発明の第１実施形態に係るメモリ状態回復機能を有するコンピュータシステムの構成を示すブロック図。
【図２】上記第１実施形態の動作説明図。
【図３】上記第１実施形態の動作説明図。
【図４】上記第１実施形態の動作説明図。
【図５】上記第１実施形態の動作説明図。
【図６】本発明の第２実施形態に係るメモリ状態回復機能を有するコンピュータシステムの構成を示すブロック図。
【図７】上記第２実施形態の動作説明図。
【図８】上記第２実施形態の動作説明図。
【図９】上記第２実施形態の動作説明図。
【図１０】上記第２実施形態の動作説明図。
【図１１】本発明の第５実施形態に係るメモリ状態回復機能を有するコンピュータシステムの構成を示すブロック図。
【図１２】本発明の第６実施形態に係るメモリ状態回復機能を有するコンピュータシステムの構成を示すブロック図。
【図１３】本発明で対象とするシステムの既存構成を示すブロック図。
【図１４】タグメモリのエントリの一例を示す図。
【図１５】上記タグメモリに於けるバリッド（Ｖ）、モディファイド（Ｍ）、シェアード（Ｓ）の組合せによるキャッシュラインの状態を示す図。
【符号の説明】
１２…主メモリ、
１３…ビフォアイメージバッファ、
１４〜１５…Ｎ個のプロセッサ、
１７〜１８…キャッシュ、
２０…メモリ制御部、
２１…ビフォアイメージバッファ制御部、
３０〜３１…ビフォアイメージキャッシュ、
１６１…シェアード応答信号線（shared）、
１６２…モディファイド応答信号線（modified）、
１６３…バスコマンド信号線（command ）、
１６４…アドレス／データ信号線（address/data）。
１６５…プロセッサＩＤ信号線（ID）、
１６７…モディファイドライン置換信号線（replace ）、
２１１…バスインタフェース制御部、
２１２…状態保存制御部、
２１４…バッファアクセス制御部、
２１５…キャッシュ制御部、
２１６…一時バッファ。
【図１】
0003833760.tif 000002
【図２】
0003833760.tif 000003
【図３】
0003833760.tif 000004
【図４】
0003833760.tif 000005
【図５】
0003833760.tif 000006
【図６】
0003833760.tif 000007
【図７】
0003833760.tif 000008
【図８】
0003833760.tif 000009
【図９】
0003833760.tif 000010
【図１０】
0003833760.tif 000011
【図１１】
0003833760.tif 000012
【図１２】
0003833760.tif 000013
【図１３】
0003833760.tif 000014
【図１４】
0003833760.tif 000015
【図１５】
0003833760.tif 000016