(57)【要約】【課題】検出されたエラーに基づく診断の実施により、デグレードを迅速かつ適切に判定することが可能なキャッシュメモリを提供する。【解決手段】アドレスアレイ３３とデータアレイ３４とからなるキャッシュメモリ３０が、データアレイ３４のいずれかのエントリのウェイから読み出したデータのエラーの検出・訂正を行うエラー検出部３５と、エラー検出部３５によりエラーが検出された際に起動され、該エラーが検出されたエントリのウェイに関する診断の実施を制御するエラー診断制御部３６と、を少なくとも備え、エラー診断制御部３６による診断結果として、エラーが間欠障害によるものと判定された場合、該エラーが検出された前記エントリのウェイを継続して使用することを可能にし、また、エラーが固定障害によるものと判定された場合、該エラーが検出された前記エントリのウェイをデグレードさせて、使用不可能な状態に設定する。【選択図】        図１
2014081865.tif 000002
【特許請求の範囲】
【請求項１】
複数ウェイのセットアソシアティブ方式のアドレスアレイとデータアレイとから構成されるキャッシュメモリにおいて、
前記データアレイのいずれかのエントリのウェイから読み出したデータのエラーの検出を行い、訂正を行うエラー検出部と、
前記エラー検出部によりエラーが検出された際に起動され、該エラーが検出されたエントリのウェイに関する診断の実施を制御するエラー診断制御部と、
を少なくとも備え、
前記エラー診断制御部による診断結果として、検出されたエラーが間欠障害によるエラーと判定された場合、該エラーが検出された前記エントリのウェイを継続して使用することを可能にし、
また、検出されたエラーが固定障害によるエラーと判定された場合、該エラーが検出された前記エントリのウェイをデグレードさせて、使用不可能な状態に設定する、
ことを特徴とするキャッシュメモリ。
【請求項２】
前記エラー診断制御部による診断結果として、検出されたエラーが、訂正不可能なエラーであり、かつ、間欠障害によるエラーと判定された場合において、
該エラーが検出されたエントリのウェイのステータスが、該エントリのウェイとメモリとの双方に同じデータが保持されている状態を示していた際には、当該エントリのウェイのステータスを、当該エントリのウェイが使用されていない状態に書き換えて設定し、
また、該エラーが検出されたエントリのウェイのステータスが、該エントリのウェイにのみデータが保持されている状態を示していた際には、当該エントリのウェイのデータは不正なデータであって使用不可能なデータであることを示す障害フラグを当該エントリのウェイに設定し、
さらに、前記エラー診断制御部による診断結果として、検出されたエラーが、訂正不可能なエラーであり、かつ、固定障害によるエラーと判定された場合において、
該エラーが検出されたエントリのウェイのステータスが、該エントリのウェイとメモリとの双方に同じデータが保持されている状態を示していた際には、当該エントリのウェイのステータスを、当該エントリのウェイをデグレードさせて使用不可能な状態に書き換えて設定し、
また、該エラーが検出されたエントリのウェイのステータスが、該エントリのウェイにのみデータが保持されている状態を示していた際には、前記障害フラグを当該エントリのウェイに設定するとともに、当該エントリのウェイのステータスを、当該エントリのウェイをデグレードさせて使用不可能な状態に書き換えて設定する、
ことを特徴とする請求項１に記載のキャッシュメモリ。
【請求項３】
前記エラー診断制御部による診断結果として、検出されたエラーが、訂正可能なエラーであった場合には、エラー訂正後のデータを一時的に保持しておき、
検出された該エラーが、間欠障害によるエラーと判定された場合においては、
一時的に保持しておいた前記エラー訂正後のデータを、該エラーが検出されたエントリのウェイに書き戻し、
さらに、検出された該エラーが、固定障害によるエラーと判定された場合においては、
該エラーが検出されたエントリのウェイのステータスが、該エントリのウェイとメモリとの双方に同じデータが保持されている状態を示していた際には、当該エントリのウェイのステータスを、当該エントリのウェイをデグレードさせて使用不可能な状態に書き換えて設定し、
また、該エラーが検出されたエントリのウェイのステータスが、該エントリのウェイにのみデータが保持されている状態を示していた際には、一時的に保持しておいた前記エラー訂正後のデータを、当該エントリのウェイに対応するメモリに書き戻すとともに、当該エントリのウェイのステータスを、当該エントリのウェイをデグレードさせて使用不可能な状態に書き換えて設定する、
ことを特徴とする請求項１に記載のキャッシュメモリ。
【請求項４】
前記エラー診断制御部による診断の終了後に、診断結果として前記障害フラグが設定されているエントリのウェイへの通常処理によるアクセスがあった場合であって、
前記通常処理のアクセスが該エントリのウェイへのデータの書き込み要求であった場合においては、
該エントリのウェイのステータスが、該エントリのウェイにのみデータが保持されている状態を示していた際には、当該エントリのウェイに設定されていた前記障害フラグの設定を解除して、前記通常処理のデータを当該エントリのウェイに書き込んで、正常に処理を行った旨を示す正常リプライを出力し、
また、該エントリのウェイのステータスが、デグレードさせて使用不可能な状態を示していた際には、当該エントリのウェイに設定されていた前記障害フラグの設定を解除するとともに、当該エントリのウェイの代替となる同一エントリの別ウェイを選択して登録し、前記通常処理のデータを登録した該同一エントリの別ウェイに書き込んで、前記正常リプライを出力し、
さらに、前記通常処理のアクセスが該エントリのウェイからのデータの読み出し要求であった場合においては、
該エントリのウェイのステータスが、該エントリのウェイにのみデータが保持されている状態を示していた際には、当該エントリのウェイのステータスを、当該エントリのウェイが使用されていない状態に書き換えて設定するとともに、当該エントリのウェイに設定されていた前記障害フラグの設定を解除して、処理がエラーになった旨を示すエラーリプライを出力し、
また、該エントリのウェイのステータスが、デグレードさせて使用不可能な状態を示していた際には、当該エントリのウェイに設定されていた前記障害フラグの設定を解除して、前記エラーリプライを出力する、
ことを特徴とする請求項２または３に記載のキャッシュメモリ。
【請求項５】
前記エラー診断制御部によって、エラーが検出されたエントリのウェイに関する診断を実行中に、通常処理による該エントリのウェイへのアクセス要求があった場合、
該エントリのウェイに対する診断の実行を優先させて、診断が終了するまで、該エントリのウェイにアクセスしようとする前記通常処理を待ち合わせるように制御する、
ことを特徴とする請求項１ないし４のいずれかに記載のキャッシュメモリ。
【請求項６】
複数ウェイのセットアソシアティブ方式のアドレスアレイとデータアレイとから構成されるキャッシュメモリの障害を制御するキャッシュメモリ障害制御方法であって、
前記データアレイのいずれかのエントリのウェイから読み出したデータのエラーの検出を行い、訂正を行うエラー検出ステップと、
前記エラー検出ステップによりエラーが検出された際に起動され、該エラーが検出されたエントリのウェイに関する診断の実施を制御するエラー診断制御ステップと、
を少なくとも有し、
前記エラー診断制御ステップによる診断結果として、検出されたエラーが間欠障害によるエラーと判定された場合、該エラーが検出された前記エントリのウェイを継続して使用することを可能にし、
また、検出されたエラーが固定障害によるエラーと判定された場合、該エラーが検出された前記エントリのウェイをデグレードさせて、使用不可能な状態に設定する、
ことを特徴とするキャッシュメモリ障害制御方法。
【請求項７】
前記エラー診断制御ステップによる診断結果として、検出されたエラーが、訂正不可能なエラーであり、かつ、間欠障害によるエラーと判定された場合において、
該エラーが検出されたエントリのウェイのステータスが、該エントリのウェイとメモリとの双方に同じデータが保持されている状態を示していた際には、当該エントリのウェイのステータスを、当該エントリのウェイが使用されていない状態に書き換えて設定し、
また、該エラーが検出されたエントリのウェイのステータスが、該エントリのウェイにのみデータが保持されている状態を示していた際には、当該エントリのウェイのデータは不正なデータであって使用不可能なデータであることを示す障害フラグを当該エントリのウェイに設定し、
さらに、前記エラー診断制御ステップによる診断結果として、検出されたエラーが、訂正不可能なエラーであり、かつ、固定障害によるエラーと判定された場合において、
該エラーが検出されたエントリのウェイのステータスが、該エントリのウェイとメモリとの双方に同じデータが保持されている状態を示していた際には、当該エントリのウェイのステータスを、当該エントリのウェイをデグレードさせて使用不可能な状態に書き換えて設定し、
また、該エラーが検出されたエントリのウェイのステータスが、該エントリのウェイにのみデータが保持されている状態を示していた際には、前記障害フラグを当該エントリのウェイに設定するとともに、当該エントリのウェイのステータスを、当該エントリのウェイをデグレードさせて使用不可能な状態に書き換えて設定する、
ことを特徴とする請求項６に記載のキャッシュメモリ障害制御方法。
【請求項８】
前記エラー診断制御ステップによる診断結果として、検出されたエラーが、訂正可能なエラーであった場合には、エラー訂正後のデータを一時的に保持しておき、
検出された該エラーが、間欠障害によるエラーと判定された場合においては、
一時的に保持しておいた前記エラー訂正後のデータを、該エラーが検出されたエントリのウェイに書き戻し、
さらに、検出された該エラーが、固定障害によるエラーと判定された場合においては、
該エラーが検出されたエントリのウェイのステータスが、該エントリのウェイとメモリとの双方に同じデータが保持されている状態を示していた際には、当該エントリのウェイのステータスを、当該エントリのウェイをデグレードさせて使用不可能な状態に書き換えて設定し、
また、該エラーが検出されたエントリのウェイのステータスが、該エントリのウェイにのみデータが保持されている状態を示していた際には、一時的に保持しておいた前記エラー訂正後のデータを、当該エントリのウェイに対応するメモリに書き戻すとともに、当該エントリのウェイのステータスを、当該エントリのウェイをデグレードさせて使用不可能な状態に書き換えて設定する、
ことを特徴とする請求項６に記載のキャッシュメモリ障害制御方法。
【請求項９】
前記エラー診断制御ステップによる診断の終了後に、診断結果として前記障害フラグが設定されているエントリのウェイへの通常処理によるアクセスがあった場合であって、
前記通常処理のアクセスが該エントリのウェイへのデータの書き込み要求であった場合においては、
該エントリのウェイのステータスが、該エントリのウェイにのみデータが保持されている状態を示していた際には、当該エントリのウェイに設定されていた前記障害フラグの設定を解除して、前記通常処理のデータを当該エントリのウェイに書き込んで、正常に処理を行った旨を示す正常リプライを出力し、
また、該エントリのウェイのステータスが、デグレードさせて使用不可能な状態を示していた際には、当該エントリのウェイに設定されていた前記障害フラグの設定を解除するとともに、当該エントリのウェイの代替となる同一エントリの別ウェイを選択して登録し、前記通常処理のデータを登録した該同一エントリの別ウェイに書き込んで、前記正常リプライを出力し、
さらに、前記通常処理のアクセスが該エントリのウェイからのデータの読み出し要求であった場合においては、
該エントリのウェイのステータスが、該エントリのウェイにのみデータが保持されている状態を示していた際には、当該エントリのウェイのステータスを、当該エントリのウェイが使用されていない状態に書き換えて設定するとともに、当該エントリのウェイに設定されていた前記障害フラグの設定を解除して、処理がエラーになった旨を示すエラーリプライを出力し、
また、該エントリのウェイのステータスが、デグレードさせて使用不可能な状態を示していた際には、当該エントリのウェイに設定されていた前記障害フラグの設定を解除して、前記エラーリプライを出力する、
ことを特徴とする請求項７または８に記載のキャッシュメモリ障害制御方法。
【請求項１０】
プロセッサとメモリとの性能差を吸収するためのキャッシュメモリを少なくとも備えた情報処理システムにおいて、
前記キャッシュメモリが、請求項１ないし５のいずれかに記載のキャッシュメモリからなっている、
ことを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ、キャッシュメモリ障害制御方法および情報処理システムに関し、特に、情報処理システムに備えられたキャッシュメモリにおける障害の診断制御機能を有するキャッシュメモリ、キャッシュメモリ障害制御方法および情報処理システムに関するものであり、複数ウェイのセットアソシアティブ方式のキャッシュメモリを備えた情報処理システムにおいて好適に適用することができる。
【背景技術】
【０００２】
情報処理システムに備えられたキャッシュメモリのエラーには、ソフトエラー等による間欠障害とハードエラー等による固定障害とがある。複数ウェイのセットアソシアティブ方式のアドレスアレイとデータアレイとから構成されるキャッシュメモリの場合、キャッシュメモリの一部のウェイが使用不可能になっても、残りのウェイで、システムの運用を継続することが可能であることから、障害が発生したウェイをデグレードして使用しない状態に設定してキャッシュメモリを継続して使用することができる。
【０００３】
ただし、かくのごときデグレードは性能低下を招く恐れがある。つまり、キャッシュメモリの障害には、前述のように、ソフトエラーによる間欠障害があるので、間欠障害が発生したウェイのように、本来ならば、当該ウェイを継続して使用することが可能なキャッシュメモリに関しても、１度のエラーの検出により、当該ウェイを直ちにデグレードさせてしまうことは、性能上望ましくない。一方、固定障害が発生したにも関わらず、キャッシュメモリの使用を継続すると、固定障害のウェイへのアクセスによる制御が増えて、性能が低下したりして、信頼性の低下につながる恐れがある。
【０００４】
間欠障害によるデグレードを防ぐ先行技術としては、特許文献１の特開平０４−１２４７４７号公報「キャッシュメモリ」や特許文献２の特開平０３−２５０３４５号公報「キャッシュメモリ制御回路」に記載の技術があり、診断によりデグレードを設定する先行技術としては、特許文献３の特許第３１９９３７８号公報「集積メモリ、その管理方法および該方法から得られる情報システム」に記載の技術がある。
【０００５】
前記特許文献１に記載の技術は、間欠障害による過剰なデグレードによる性能低下を救うために、第１回目のエラーはミスヒットとして扱って、書き込み直し、第２回目に連続してエラーが発生したときに、デグレードを行うという技術であるが、第２回目のエラーに関しては、通常トランザクションが当該キャッシュメモリを読み出すまでの間は不明であり、間欠障害、固定障害のいずれが発生しているかを迅速に判定することができない。
【０００６】
前記特許文献２に記載の技術は、間欠障害による過剰なデグレードによる性能低下を救うために、エラー回数を保持して、システムとしてあらかじめ定義したエラー回数に到達した場合に、デグレードを行うという技術であるが、エラーの判定は、前記特許文献１の場合と同様、次にキャッシュメモリを読み出す通常トランザクションが発生するまで分からない。
【０００７】
前記特許文献３に記載の技術は、診断を行うことによって使用不能な部分を検出してデグレードするという技術であるが、診断がプロセッサを介して実施され、かつ、運用中のエラーに起因して実施される診断ではないため、性能の低下を招き、かつ、運用中に発生するエラーを的確に検出することができない可能性がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０４−１２４７４７号公報（第２−３頁）
【特許文献２】特開平０３−２５０３４５号公報（第２−３頁）
【特許文献３】特許第３１９９３７８号公報（第３−６頁）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
複数ウェイのセットアソシアティブ方式のキャッシュメモリを備えた情報処理システムにおいては、前述したように、キャッシュメモリのデータにエラーが検出された場合に、エラーが検出されたエントリのウェイをデグレードして運用を継続することができる。この場合、発生したエラーが間欠障害によるものであった場合には、デグレードによる不必要な性能低下を防ぐことが重要であり、また、固定障害によるエラーを確実に検出してデグレードを実施することが重要である。
【００１０】
しかしながら、前述したように、間欠障害によるデグレードを防ぐための前記特許文献１や前記特許文献２に記載のような従来の技術においては、間欠障害によるエラーか否かを判別するまでに時間がかかるという問題があり、また、固定障害を確実に検出するための前記特許文献３に記載のような従来の技術においては、診断用にプロセッサの能力を割く必要が生じること、また、実際に発生したエラーに基づく診断ではないため、有効な固定障害の検出にならない可能性があるという問題がある。
【００１１】
（本発明の目的）
本発明は、かかる事情に鑑みてなされたものであり、検出されたエラーに基づく診断の即時の実施により、デグレードを迅速かつ適切に判定することが可能なキャッシュメモリ、キャッシュメモリ障害制御方法および情報処理システムを提供することをその目的としている。
【課題を解決するための手段】
【００１２】
前述の課題を解決するため、本発明によるキャッシュメモリ、キャッシュメモリ障害制御方法および情報処理システムは、主に、次のような特徴的な構成を採用している。
【００１３】
（１）本発明によるキャッシュメモリは、複数ウェイのセットアソシアティブ方式のアドレスアレイとデータアレイとから構成されるキャッシュメモリにおいて、前記データアレイのいずれかのエントリのウェイから読み出したデータのエラーの検出を行い、訂正を行うエラー検出部と、前記エラー検出部によりエラーが検出された際に起動され、該エラーが検出されたエントリのウェイに関する診断の実施を制御するエラー診断制御部と、を少なくとも備え、前記エラー診断制御部による診断結果として、検出されたエラーが間欠障害によるエラーと判定された場合、該エラーが検出された前記エントリのウェイを継続して使用することを可能にし、また、検出されたエラーが固定障害によるエラーと判定された場合、該エラーが検出された前記エントリのウェイをデグレードさせて、使用不可能な状態に設定することを特徴とする。
【００１４】
（２）本発明によるキャッシュメモリ障害制御方法は、複数ウェイのセットアソシアティブ方式のアドレスアレイとデータアレイとから構成されるキャッシュメモリの障害を制御するキャッシュメモリ障害制御方法であって、前記データアレイのいずれかのエントリのウェイから読み出したデータのエラーの検出を行い、訂正を行うエラー検出ステップと、前記エラー検出ステップによりエラーが検出された際に起動され、該エラーが検出されたエントリのウェイに関する診断の実施を制御するエラー診断制御ステップと、を少なくとも有し、前記エラー診断制御ステップによる診断結果として、検出されたエラーが間欠障害によるエラーと判定された場合、該エラーが検出された前記エントリのウェイを継続して使用することを可能にし、また、検出されたエラーが固定障害によるエラーと判定された場合、該エラーが検出された前記エントリのウェイをデグレードさせて、使用不可能な状態に設定することを特徴とする。
【００１５】
（３）本発明による情報処理システムは、プロセッサとメモリとの性能差を吸収するためのキャッシュメモリを少なくとも備えた情報処理システムにおいて、前記キャッシュメモリが、少なくとも前記（１）に記載のキャッシュメモリからなっていることを特徴とする。
【発明の効果】
【００１６】
本発明のキャッシュメモリ、キャッシュメモリ障害制御方法および情報処理システムによれば、以下のような効果を奏することができる。
【００１７】
すなわち、キャッシュメモリのエラーが検出されたときに、エラーが発生した部位（すなわちエントリのウェイ）を直ちに診断する機能としてエラー診断制御部（またはエラー診断制御ステップ）を設けて、キャッシュメモリの障害を迅速かつ的確に判定することを可能にしているので、間欠障害時における不要なデグレードによるキャッシュメモリの性能低下を最小限に留める一方、固定障害時において固定障害発生部位が不用意に継続して使用される事態を防ぐこともでき、而して、キャッシュメモリの信頼性を保つことができる。
【図面の簡単な説明】
【００１８】
【図１】本発明による情報処理システムの内部構成の一例を示すシステム構成図である。
【図２】図１に示した情報処理システムのアドレスアレイおよびデータアレイが複数ウェイのセットアソシアティブ方式のキャッシュメモリとして構成されている場合のアドレスアレイおよびデータアレイの一構成例を説明するための説明図である。
【図３】図１、図２に示した情報処理システムの動作の一例を説明するフローチャートである。
【図４】図１、図２に示した情報処理システムの動作の図３とは異なる例を説明するフローチャートである。
【図５】図１、図２に示した情報処理システムの動作の図３、図４とは異なる例を説明するフローチャートである。
【図６】図１、図２に示した情報処理システムの動作の補足説明を行うためのフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明によるキャッシュメモリ、キャッシュメモリ障害制御方法および情報処理システムの好適な実施形態について添付図を参照して説明する。なお、以下の説明においては、本発明によるキャッシュメモリ、キャッシュメモリ障害制御方法および情報処理システムについて説明するが、場合によっては、かかるキャッシュメモリ障害制御方法をコンピュータにより実行可能なキャッシュメモリ障害制御プログラムとして実施するようにしても良いし、あるいは、キャッシュメモリ障害制御プログラムをコンピュータにより読み取り可能な記録媒体に記録するようにしても良いことは言うまでもない。
【００２０】
（本発明の特徴）
本発明の実施形態の説明に先立って、本発明の特徴についてその概要をまず説明する。本発明によるキャッシュメモリ、キャッシュメモリ障害制御方法および情報処理システムにおいて、対象とする情報処理システムは、複数ウェイのセットアソシアティブ方式のアドレスアレイとデータアレイとから構成されるキャッシュメモリを備えた情報処理システムである。
【００２１】
かくのごときキャッシュメモリの構成において、システム運用中に、キャッシュメモリのデータにエラーが発生したとき、エラーが発生したキャッシュメモリのエントリのウェイを即座に診断する機能を追加することによって、迅速に、発生したエラーが間欠障害、固定障害のいずれによるものかを切り分けて、間欠障害によるものの場合は、エラーが発生した当該エントリのウェイの継続使用を許可し、固定障害によるものの場合は、当該エントリのウェイをデグレードさせて使用不可の状態に設定することを、主要な特徴としている。而して、キャッシュメモリのエラーが発生したときの対処法として、迅速に、間欠障害、固定障害のいずれによるものかを切り分けて、必要以上のデグレードを防ぐことにより、性能低下を抑えることができ、かつ、固定障害部位の不用意な継続使用を防ぐことができ、キャッシュメモリの信頼性を保つことが可能になる。
【００２２】
（実施形態の構成例）
次に、本発明によるキャッシュメモリ障害制御回路、キャッシュメモリ障害制御方法および情報処理システムの実施形態の構成例について説明する。まず、本発明による情報処理システムの構成例について、図１のシステム構成図を用いて説明する。図１は、本発明による情報処理システムの内部構成の一例を示すシステム構成図であり、複数ウェイのセットアソシアティブ方式のアドレスアレイとデータアレイとから構成されるキャッシュメモリを備えた情報処理システムの構成例を示している。
【００２３】
図１に示す情報処理システム１１は、プロセッサ２１、メモリ２２、トランザクション制御部２５およびキャッシュメモリ３０を含んで構成される。キャッシュメモリ３０は、キャッシュ制御部３２、アドレスアレイ３３、データアレイ３４、エラー検出部３５およびエラー診断制御部３６を少なくとも含んで構成される。
【００２４】
トランザクション制御部２５は、プロセッサ２１やメモリ２２との間のトランザクションの送受信およびキャッシュ制御部３２との間のトランザクションの送受信を行う。アドレスアレイ３３およびデータアレイ３４は、複数ウェイのセットアソシアティブ方式のキャッシュメモリである。また、キャッシュ制御部３２は、アドレスアレイ３３とデータアレイ３４との制御を行う部位である。また、エラー検出部３５は、データアレイ３４から読み出したデータのエラーを検出して訂正を行う部位である。また、エラー診断制御部３６は、本発明を特徴付ける追加機能の一つとして設けた部位であり、エラー検出部３５からエラー通知を受けると、直ちに起動されて、エラーが検出された部位（すなわちエントリのウェイ）に対する診断の実行を制御し、リードの診断指示やライト＆リードの診断指示をキャッシュ制御部３２に対して行ったり、診断結果に基づいて、エラーが検出された部位のデグレード判定を行い、デグレードの設定指示をキャッシュ制御部３２に対して行ったりする部位である。
【００２５】
また、アドレスアレイ３３には、図２に後述するように、エラーが検出されたエントリのウェイが診断中であることを示す診断中フラグとエントリのウェイが不正なデータになっていることを示す障害フラグとを設けている。キャッシュ制御部３２は、アドレスアレイ３３の診断中フラグを確認して、通常トランザクションが指定しているアドレスが診断中のエントリのウェイのアドレスと一致したときは、診断の実施を優先させて、該通常トランザクションの処理を待ち合わせることにより、診断中のデータが該通常トランザクションに使われないように制御する機能を有している。また、キャッシュ制御部３２は、エラー診断制御部３６からの診断指示を受け取ると、通常トランザクションに優先して、診断指示に従ったアドレスアレイ３３やデータアレイ３４へのキャッシュアクセス制御を行う機能を有している。かくのごときエラー診断制御部３６およびキャッシュ制御部３２の機能により、エラー検出部３５によって、データアレイ３４から読み出したデータにエラーが検出されたときに、エラーが検出されたエントリのウェイへの診断を通常トランザクションに優先して割り込ませて実施させることができ、迅速に、かつ、適切に、デグレード判定を行うことができる。
【００２６】
図２は、図１に示した情報処理システム１１のアドレスアレイ３３およびデータアレイ３４が複数ウェイのセットアソシアティブ方式のキャッシュメモリとして構成されている場合のアドレスアレイ３３およびデータアレイ３４の一構成例を説明するための説明図であり、図２（Ａ）は、複数ウェイからなるアドレスアレイ３３を示し、図２（Ｂ）は、複数ウェイからなるデータアレイ３４を示している。
【００２７】
図２（Ａ）に示すように、アドレスアレイ３３は、キャッシュラインサイズごとの情報を保持する複数ウェイからなる構成であって、アドレスの一部（例えば下位側のアドレス）であるセットアドレス４２を、アドレスアレイ３３のエントリとして用いる。１つずつのエントリそれぞれは、キーアドレス４１、ステータス４３、フラグ４４によって構成される。ここで、キーアドレス４１は、アドレスのうち、セットアドレス４２を除いた残りのアドレス（例えば上位側のアドレス）である。
【００２８】
ステータス４３は、セットアドレス４２とキーアドレス４１とによって示されるアドレス（エントリのウェイ）のキャッシング状況を示している。本実施形態においては、ステータス４３は、例えば、ライトバック方式において使用されるＭＳＩ（Modified、Shared、Invalid）キャッシュプロトコルにおける３つの状態、すなわち、'Invalid'（キャッシュメモリのエントリウェイが使われていない状態）、'Shared'（キャッシュメモリのエントリウェイとメモリ２２の対応するアドレスとに同じデータが存在している状態）、'Modified'（キャッシュメモリのエントリウェイだけにデータが存在している状態）の３つの状態の他に、さらに、エントリのウェイが使用不可のデグレード状態にあることを示す'Degrade'と称する状態を追加し、合計４つの状態のいずれの状態であるかを保持する。なお、該デグレード状態は、ステータス４３とは別に、フラグとして別途１ビットを追加配置しても良いが、本実施形態においては、説明の便宜上、ステータス４３の中に追加することにしている。
【００２９】
フラグ４４は、本実施形態において追加した機能の１つであり、該当するエントリのウェイが診断中であることを示す診断中フラグ５１と、該当するエントリのウェイに登録されているアドレスのデータが不正であることを示す障害フラグ５２との２種類のフラグを有している。診断中フラグ５１は、診断中の状態にあるアドレスのデータを通常トランザクションが使わないように通常トランザクションを待ち合わせるためのものである。一方、障害フラグ５２は、同アドレスのデータが不正なデータであって、メモリ２２にもデータがないことを示すものであり、コヒーレンシ制御用のフラグである。
【００３０】
また、図２（Ｂ）に示すデータアレイ３４は、アドレスアレイ３３とはエントリとウェイとが同じ構成の１対１の関係にあり、１つずつのエントリそれぞれは、キャッシュデータ４５によって構成される。キャッシュデータ４５は、キャッシュラインサイズのデータであり、ＥＣＣ（Error  Correcting  Code）等の誤り検出訂正ビットが付随している。
【００３１】
（実施形態の動作の説明）
次に、図１、図２に示した情報処理システム１１の動作について、その一例を、図３、図４、図５のフローチャートを用いて説明する。図３は、図１、図２に示した情報処理システム１１の動作の一例を説明するフローチャートであり、プロセッサ２１からデータアレイ３４のキャッシュデータ４５を読み出したときにエラー検出部３５にて訂正不可能なエラーを検出した後の診断制御動作の一例を説明している。また、図４は、図１、図２に示した情報処理システム１１の動作の図３とは異なる例を説明するフローチャートであり、図３のフローチャートにおける診断終了後に、通常トランザクションが診断対象になっていたエントリのウェイを参照した場合の動作の一例を説明している。また、図５は、図１、図２に示した情報処理システム１１の動作の図３、図４とは異なる例を説明するフローチャートであり、図３のフローチャートにおける診断中の状態において、通常トランザクションが診断対象のエントリのウェイを参照した場合の動作の一例を説明している。
【００３２】
まず、図３のフローチャートを用いて、訂正不可能なエラーを検出して診断を実施した場合の動作の一例について説明する。プロセッサ２１からの通常トランザクションの要求によりデータアレイ３４のデータを読み出した際に、エラー検出部３５にて訂正不可能なエラーを検出すると、その旨をエラー診断制御部３６に報告する。エラー診断制御部３６は、エラー検出部３５からのエラー検出報告を受け取ると、キャッシュ制御部３２からエラー検出時のエントリとウェイとに関する情報を受け取って、診断制御を直ちに開始する。まず、エラー診断制御部３６は、キャッシュ制御部３２に対して、受け取ったエラー検出時のエントリとウェイとに関する情報（以下には、「該エントリウェイ」と省略表示する）を指定した診断開始の指示を行うと、図３のフローチャートが起動される。
【００３３】
エラーが発生して図３のフローチャートが起動されると、エラー診断制御部３６からの診断開始指示を受け取ったキャッシュ制御部３２においては、トランザクション制御部２５からのトランザクションの処理に優先して該診断開始指示に対応し、アドレスアレイ３３の該エントリウェイに診断中フラグ５１を設定する（ステップＳ１０１）。続いて、エラー診断制御部３６は、最初の診断として、該エントリウェイから再リード（再読み取り）を行ってエラーが検出されるか否かを調べるために、キャッシュ制御部３２に対して、該エントリウェイを指定したリード（読み取り）診断指示を行う（ステップＳ１０２）。
【００３４】
エラー診断制御部３６からのリード（読み取り）診断指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイの診断中フラグ５１を索引して、診断中であることを確認した後、データアレイ３４の該エントリウェイのデータをリードする（読み取る）。該リード（読み取り）動作におけるエラーの有無をエラー検出部３５にてチェックし、チェックした結果をエラー診断制御部３６に送出する。
【００３５】
エラー検出部３５からのチェック結果を受け取ったエラー診断制御部３６においては、該エントリウェイのリード（読み取り）診断結果として、エラーが検出されなかった場合は（ステップＳ１０３の「無」の場合）、該エントリウェイのリード（読み取り）時の間欠障害であると判断して、リードした（読み取った）該データも該エントリウェイもそのまま継続して使用することが可能な状態にあるものと見做し、ステップＳ１０９に移行して、キャッシュ制御部３２に対して、該エントリウェイの診断中フラグ５１の設定を解除する診断解除指示を行う。エラー診断制御部３６からの診断解除指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイの診断中フラグ５１の設定を解除する（ステップＳ１０９）。しかる後、エラー診断制御部３６は診断処理を終了する。
【００３６】
一方、最初の診断として実施した該エントリウェイのリード（読み取り）診断結果として、訂正不可能なエラー、すなわち、リードしたデータに付随しているＥＣＣ等の誤り検出訂正ビットによるデータの訂正が不可能なエラーが検出された場合は（ステップＳ１０３の「有」の場合）、該エントリウェイのリード（読み取り）時の固定障害の可能性を確認するために、ステップＳ１０４に移行して、データアレイ３４の該エントリウェイのデータのライト（書き込み）＆リード（読み取り）診断を行う（ステップＳ１０４）。ここで、ライト＆リード診断は、固定故障か否かを確実に切り分けることができるように、ＥＣＣ等の誤り検出訂正ビットも含めて全ビットが'１'値と'０'値との双方にセットされることが必要であり、最低２回のライト＆リード動作が必要になる。ここでは、第１回目は全ビットが'１'値、第２回目は全ビットが'０'値のデータを使って、２回のライト＆リード動作を実施した結果の期待値チェックによる診断を例に採って説明する。
【００３７】
エラー診断制御部３６は、まず、該エントリウェイの全ビットが'１'値のデータのライト（書き込み）診断指示をキャッシュ制御部３２に送出する。エラー診断制御部３６からの全ビットが'１'値のデータのライト（書き込み）診断指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイの診断中フラグ５１を索引して、診断中であることを確認した後、キャッシュデータ４５としてデータアレイ３４のラインデータの全ビットに'１'値を書き込み、書き込みが終了すると、その旨をエラー診断制御部３６に通知する。
【００３８】
キャッシュ制御部３２からの'１'値のライト（書き込み）動作終了通知を受け取ったエラー診断制御部３６においては、次に、ライト後のリード診断指示をキャッシュ制御部３２に対して送出する。エラー診断制御部３６からのライト後のリード診断指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイの診断中フラグ５１を索引して、診断中であることを確認した後、データアレイ３４の該エントリウェイのデータ（キャッシュデータ４５）をリードする（読み取る）。該リード（読み取り）を行ったデータのエラーの有無をエラー検出部３５にてチェックし、チェックした結果をエラー診断制御部３６に送出する。
【００３９】
なお、ライト後のリード診断の場合は、リード（読み取り）を行ったデータ内容のチェックが必要であり、ＥＣＣ等の誤り訂正回路を使用したチェックではデータ内容のチェックができない。このため、エラー検出部３５は、キャッシュ制御部３２から診断用のライト後のリード診断によるデータのチェックである旨を通知してもらい、通常のＥＣＣ等の誤り訂正回路を使用したチェックではなく、リードした（読み取った）データの全ビットが'１'値の期待値と一致しているか否かのチェックを行う。
【００４０】
エラー検出部３５からのチェック結果を受け取ったエラー診断制御部３６においては、次に、該エントリウェイの全ビットが'０'値のデータのライト（書き込み）診断指示をキャッシュ制御部３２に送出し、全ビットが'１'値のライト＆リード診断の場合と同様の制御を行って、エラー検出部３５から全ビットが'０'値のライト＆リード診断におけるチェック結果を取得する。
【００４１】
全ビットが'１'値、全ビットが'０'値の２回のライト＆リード動作のチェック結果を取得したエラー診断制御部３６においては、チェック結果が２回ともエラーがなく、ライト後にリードした（読み取った）データが、全ビットが'１'値、全ビットが'０'値のそれぞれの期待値と一致していた場合には（ステップＳ１０５の「無」の場合）、該エントリウェイのリード（読み取り）時の間欠障害であると判断して、該エントリウェイはそのまま継続して使用することが可能な状態にあるものと見做す。
【００４２】
しかし、この場合、リード動作のみのステップＳ１０３の場合とは異なり、２回のライト＆リード動作を行っているため、該エントリウェイはそのまま継続して使用することが可能な状態にあるものの、データ自体は使用することができない。そこで、エラー診断制御部３６においては、該エントリウェイは継続使用が可能であるが、データは使用不可である旨を示すデータ使用不可指示をキャッシュ制御部３２に対して送出する。
【００４３】
エラー診断制御部３６からのデータ使用不可指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイのステータス４３を調べる（ステップＳ１１０）。ステータス４３が'Shared'であった場合には（ステップＳ１１０の「Shared」の場合）、同じデータがメモリ２２に存在していて、キャッシュメモリの該エントリウェイのデータを使用することができなくても問題はないので、アドレスアレイ３３の該エントリウェイのステータス４３を、キャッシュメモリを使っていない状態である旨を示す'Invalid'に設定した後（ステップＳ１１２）、ステータス４３の設定終了の旨をエラー診断制御部３６に通知する。
【００４４】
キャッシュ制御部３２からステータス４３の設定終了の旨の通知を受け取ったエラー診断制御部３６においては、ステップＳ１０９に移行して、キャッシュ制御部３２に対して、該エントリウェイの診断中フラグ５１の設定を解除する診断解除指示を行う。エラー診断制御部３６からの診断解除指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイの診断中フラグ５１の設定を解除する（ステップＳ１０９）。しかる後、エラー診断制御部３６は診断処理を終了する。
【００４５】
一方、ステップＳ１１０において、ステータス４３が'Modified'であった場合は（ステップＳ１１０の「Modified」の場合）、該エントリウェイにしか有効なデータが存在していなかった場合であり、そのまま放置して処理を終了させることはできないので、アドレスアレイ３３の該エントリウェイには、当該データが不正なデータであり、使用不可である旨を示す障害フラグ５２を設定した後（ステップＳ１１１）、障害フラグ５２の設定終了の旨をエラー診断制御部３６に通知する。
【００４６】
キャッシュ制御部３２から障害フラグ５２の設定終了の旨の通知を受け取ったエラー診断制御部３６においては、ステップＳ１０９に移行して、キャッシュ制御部３２に対して、該エントリウェイの診断中フラグ５１の設定を解除する診断解除指示を行う。エラー診断制御部３６からの診断解除指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイの診断中フラグ５１の設定を解除する（ステップＳ１０９）。しかる後、エラー診断制御部３６は診断処理を終了する。
【００４７】
また、ステップＳ１０５にて、全ビットが'１'値、全ビットが'０'値の２回のライト＆リード動作のチェック結果を取得したエラー診断制御部３６において、チェック結果が２回のいずれかまたは双方にエラーがあり、ライト後にリードした（読み取った）データが、全ビットが'１'値、全ビットが'０'値のそれぞれの期待値のいずれかまたは双方と一致していなかった場合には（ステップＳ１０５の「有」の場合）、該エントリウェイのリード（読み取り）時の固定障害であると判断して、該エントリウェイはそのまま継続して使用することができなく、デグレードを行う必要があるものと見做す。そこで、エラー診断制御部３６においては、該エントリウェイは継続して使用することができない状態に設定するデグレードを行うために、デグレード指示をキャッシュ制御部３２に対して送出する。
【００４８】
エラー診断制御部３６からのデグレード指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイのステータス４３を調べる（ステップＳ１０６）。ステータス４３が'Shared'であった場合には（ステップＳ１０６の「Shared」の場合）、同じデータがメモリ２２に存在していて、キャッシュメモリの該エントリウェイのデータを使用することができなくても問題はないので、ステップＳ１０８に移行して、アドレスアレイ３３の該エントリウェイのステータス４３を、使用不可状態を示す'Degrade'に書き換えて設定した後（ステップＳ１０８）、ステータス４３の設定終了の旨をエラー診断制御部３６に通知する。
【００４９】
キャッシュ制御部３２からステータス４３の設定終了の旨の通知を受け取ったエラー診断制御部３６においては、ステップＳ１０９に移行して、キャッシュ制御部３２に対して、該エントリウェイの診断中フラグ５１の設定を解除する診断解除指示を行う。エラー診断制御部３６からの診断解除指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイの診断中フラグ５１の設定を解除する（ステップＳ１０９）。しかる後、エラー診断制御部３６は診断処理を終了する。
【００５０】
一方、ステップＳ１０６において、ステータス４３が'Modified'であった場合は（ステップＳ１０６の「Modified」の場合）、該エントリウェイにしか有効なデータが存在していなかった場合であり、そのまま放置して処理を終了させることはできないので、アドレスアレイ３３の該エントリウェイには、当該データが不正なデータであり、使用不可である旨を示す障害フラグ５２を設定した後（ステップＳ１０７）、障害フラグ５２の設定終了の旨をエラー診断制御部３６に通知する。
【００５１】
キャッシュ制御部３２から障害フラグ５２の設定終了の旨の通知を受け取ったエラー診断制御部３６においては、ステップＳ１０８に移行して、キャッシュ制御部３２に対して、アドレスアレイ３３の該エントリウェイのステータス４３を、使用不可状態を示す'Degrade'に書き換えるデグレード指示を行う。エラー診断制御部３６からのデグレード指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイのステータス４３を、使用不可状態を示す'Degrade'に書き換えて設定した後（ステップＳ１０８）、ステータス４３の設定終了の旨をエラー診断制御部３６に通知する。
【００５２】
キャッシュ制御部３２からステータス４３の設定終了の旨の通知を受け取ったエラー診断制御部３６においては、ステップＳ１０９に移行して、キャッシュ制御部３２に対して、該エントリウェイの診断中フラグ５１の設定を解除する診断解除指示を行う。エラー診断制御部３６からの診断解除指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイの診断中フラグ５１の設定を解除する（ステップＳ１０９）。しかる後、エラー診断制御部３６は診断処理を終了する。
【００５３】
以上の図３のフローチャートに示すように、訂正不可能なエラーが発生した場合には、発生したエラーに関する情報に基づいて、診断を直ちに実行して、間欠障害か固定障害かを判別し、間欠障害であると判定した場合、エラーが発生したエントリウェイのデータは使用することができないものの、該エントリウェイは継続して使用することができる状態に設定することにより、不要なデグレードによりキャッシュメモリの性能低下を防ぐことができる。一方、固定障害であると判定した場合には、エラーが発生したエントリウェイのステータス４３を、使用不可状態（デグレード状態）を示す'Degrade'に書き換えて、該エントリウェイを継続して使用することを禁止することにより、不用意な継続使用によるキャッシュメモリの信頼性の低下を防ぐことができる。
【００５４】
次に、図４のフローチャートを用いて、図３のフローチャートにおける診断終了後に、通常トランザクションが診断対象になっていたエントリのウェイ（以下、「該エントリウェイ」と省略表示する）を参照した場合の動作の一例について説明する。図４のフローチャートの説明に先立って、まず、診断終了後に診断対象になっていた該エントリウェイの障害フラグ５２とステータス４３との組み合わせについてさらに説明する。
【００５５】
障害フラグ５２が設定されて有効な状態になっている場合は、図３のフローチャートにおいて説明したように、ステータス４３は'Modified'かまたは'Degrade'のいずれかに設定されている。障害フラグ５２が有効な状態になっていて、ステータス４３が'Modified'に設定されている場合は、データアレイ３４に格納されているデータは使用することができないが、該エントリウェイ自体は継続して使用することが可能であることを示している。一方、障害フラグ５２が有効な状態になっていて、ステータス４３が'Degrade'に設定されている場合は、該エントリウェイ自体が使用不可能であり、かつ、格納されているデータも使用不可能であることを示している。また、診断中フラグ５１と障害フラグ５２とがいずれも設定されていなく、無効な状態になっている場合は、図３のフローチャートにおいて説明したように、ステータス４３が'Degrade'には設定されていなく、通常の処理を実施することが可能な状態にあることを示している。しかし、診断中フラグ５１と障害フラグ５２とがいずれも設定されていなく、無効な状態になっている場合であって、かつ、ステータス４３が'Degrade'に設定されている場合においては、該エントリウェイが使用不可で、かつ、該エントリウェイの登録がなく、かつ、該エントリウェイの新規登録も行うことができないことを示している。
【００５６】
図４のフローチャートにおいて、診断終了後に、通常の処理を行うプロセッサ２１からの通常トランザクションが発生すると、トランザクション制御部２５が該通常トランザクションを受け取り、キャッシュ制御部３２において、トランザクション制御部２５からの該通常トランザクションにより指定されているアドレス情報に基づいて、アドレスアレイ３３を索引する（ステップＳ２０１）。索引した結果として、アドレスアレイ３３に同一アドレスがエントリウェイとして登録されていて、かつ、診断結果として該エントリウェイの障害フラグ５２が有効な状態に設定されているか否かを確認する（ステップＳ２０２）。アドレスアレイ３３に同一アドレスがエントリウェイとして登録されていて、かつ、該エントリウェイの障害フラグ５２が無効な状態になっている場合には（ステップＳ２０２の「無」の場合）、キャッシュメモリに対する通常の処理を行い（ステップＳ２１４）、正常リプライをトランザクション制御部２５に返送して（ステップＳ２１１）、処理を終了する。
【００５７】
一方、ステップＳ２０２において、索引した結果として、アドレスアレイ３３に同一アドレスがエントリウェイとして登録されていて、かつ、該エントリウェイの障害フラグ５２が有効な状態に設定されている場合は（ステップＳ２０２の「有」の場合）、次のような制御を行う。キャッシュ制御部３２において、まず、受け取った通常トランザクションの種別を判別する（ステップＳ２０３）。通常トランザクションの種別が書き込み要求の'ライト'の場合は（ステップＳ２０３の「ライト」の場合）、通常トランザクションは該エントリウェイのデータを最新のデータに更新しようとしている場合を示しているので、該エントリウェイ内の使用不可のデータは無効になって、新しい値に書き換えられることになる。
【００５８】
したがって、キャッシュ制御部３２においては、次に、アドレスアレイ３３の該エントリウェイのステータス４３を調べる（ステップＳ２０８）。ステータス４３が'Modified'であった場合は（ステップＳ２０８の「Modified」の場合）、データアレイ３４の該エントリウェイ自体は継続して使用することができるので、アドレスアレイ３３の該エントリウェイの障害フラグ５２の設定を解除した後（ステップＳ２０９）、データアレイ３４の該エントリウェイにデータを上書きして書き込み（ステップＳ２１０）、しかる後、正常に処理を行った旨を示す正常リプライをトランザクション制御部２５に返送して、ライトトランザクション発行元のプロセッサ２１に対して正常な旨を通知させる動作を行ってから（ステップＳ２１１）、処理を終了する。
【００５９】
これに対して、ステップＳ２０８において、ステータス４３が'Degrade'であった場合は（ステップＳ２０８の「Degrade」の場合）、データアレイ３４の該エントリウェイ自体が使用不可能な状態であり、継続して使用することができないことを示しているので、該エントリウェイの代替になる同じエントリの別の使用可能なウェイを選択して使用する状態に切り替えるために、アドレスアレイ３３の該エントリウェイの障害フラグ５２の設定を解除した後、使用可能な同エントリ別ウェイに、該エントリウェイのキーアドレス４１とステータス４３とを新規に登録してから（ステップＳ２１２）、アドレスアレイ３３に該エントリウェイの代替として新規登録した同エントリ別ウェイと同じデータアレイ３４の同エントリ別ウェイにデータを書き込む処理を行い（ステップＳ２１３）、しかる後、正常リプライをトランザクション制御部２５に返送して、ライトトランザクション発行元のプロセッサ２１に対して正常な旨を通知させる動作を行ってから（ステップＳ２１１）、処理を終了する。
【００６０】
一方、ステップＳ２０３において、通常トランザクションの種別が読み出し要求の'リード'の場合は（ステップＳ２０３の「リード」の場合）、通常トランザクションは使用不可能な該エントリウェイ（アドレス）のデータを読み取ろうとしている場合を示しているので、該エントリウェイのデータを使用する通常トランザクションの一連の処理はやり直しが必要になる。このため、トランザクション制御部２５に対して、エラーリプライ等を返送して、該エントリウェイ（アドレス）のデータが壊れていて使用することができない旨を通知することにより、情報処理システム１１として、当該通常トランザクションに関する一連の処理のやり直しを実施するか、または、障害処理を実施する契機を提供する動作をキャッシュ制御部３２において実行する。
【００６１】
つまり、キャッシュ制御部３２においては、まず、アドレスアレイ３３の該エントリウェイのステータス４３を調べる（ステップＳ２０４）。ステータス４３が'Modified'であった場合は（ステップＳ２０４の「Modified」の場合）、データアレイ３４の該エントリウェイ自体は継続して使用することができるので、アドレスアレイ３３の該エントリウェイのステータス４３を'Invalid'に書き換えて設定した後（ステップＳ２０５）、アドレスアレイ３３の該エントリウェイの障害フラグ５２の設定を解除し（ステップＳ２０６）、しかる後、エラーリプライ［障害］をトランザクション制御部２５に返送して、リードトランザクション発行元のプロセッサ２１に対してエラーの旨を通知することにより、メモリ２２のデータとの一貫性を保証するためのコヒーレンシ保証制御の実施を促してから（ステップＳ２０７）、処理を終了する。
【００６２】
これに対して、ステップＳ２０４において、ステータス４３が'Degrade'であった場合は（ステップＳ２０４の「Degrade」の場合）、データアレイ３４の該エントリウェイ自体が使用不可能な状態であり、継続して使用することができないことを示しているので、アドレスアレイ３３の該エントリウェイのステータス４３を'Invalid'に書き換える処理を行う必要はなく、直ちに、アドレスアレイ３３の該エントリウェイの障害フラグ５２の設定を解除し（ステップＳ２０６）、しかる後、エラーリプライ［障害］をトランザクション制御部２５に返送して、リードトランザクション発行元のプロセッサ２１に対して処理がエラーになった旨を通知することにより、コヒーレンシ保証制御の実施を促してから（ステップＳ２０７）、処理を終了する。
【００６３】
以上の図４のフローチャートに示すように、診断処理後に、診断対象となっていたエントリのウェイ（すなわち「該エントリウェイ」）へのアクセスが通常トランザクションによって発生し、かつ、該エントリウェイのデータが不正なデータであることを示す障害フラグ５２が設定されていた場合には、通常トランザクションの種別がデータの書き込み要求の場合、該エントリウェイまたは代替となる同一エントリの別ウェイに対する正常な書き込み動作を行う。すなわち、ステータス４３が'Modified'であれば、障害フラグ５２の設定を解除するとともに、新しい値としてデータを書き込み、ステータス４３が'Degrade'であれば、障害フラグ５２の設定を解除するとともに、該エントリウェイの代替となる同一エントリの別ウェイを選択して、選択した同一エントリの別ウェイに新しい値としてデータを書き込む。一方、通常トランザクションの種別がデータの読み出し要求の場合、通常トランザクションの一連の処理を再度やり直して、コヒーレンシ保証制御を行う必要があるので、障害フラグ５２の設定を解除するとともに、通常処理がエラーになった旨のエラーリプライを出力する。
【００６４】
次に、図５のフローチャートを用いて、通常の処理を行う通常トランザクションが図３のフローチャートに示した診断中の状態にある場合に診断対象のエントリのウェイ（以下、「該エントリウェイ」と省略表示する）を参照した場合の動作の一例について説明する。
プ  
【００６５】
図５のフローチャートにおいて、プロセッサ２１からの通常トランザクションが発生すると、トランザクション制御部２５が該通常トランザクションを受け取り、キャッシュ制御部３２において、トランザクション制御部２５からの該通常トランザクションにより指定されているアドレス情報に基づいて、アドレスアレイ３３を索引する（ステップＳ２０１）。索引した結果として、アドレスアレイ３３に同一アドレスがエントリウェイとして登録されていて、かつ、該エントリウェイの診断中フラグ５１が有効な状態に設定されているか否かを確認する（ステップＳ３０２）。アドレスアレイ３３に同一アドレスがエントリウェイとして登録されていて、かつ、該エントリウェイの診断中フラグ５１が無効な状態になっている場合には（ステップＳ３０２の「無」の場合）、該エントリウェイに関する診断中の状態ではないので、キャッシュメモリに対する通常の処理を行い（ステップＳ３０４）、正常リプライをトランザクション制御部２５に返送して、処理を終了する。
【００６６】
一方、ステップＳ３０２において、索引した結果として、アドレスアレイ３３に同一アドレスがエントリウェイとして登録されていて、かつ、該エントリウェイの診断中フラグ５１が有効な状態に設定されている場合は（ステップＳ３０２の「有」の場合）、該エントリウェイに関する診断中の状態にあるので、診断処理を優先させて、診断が終了するまで該エントリウェイを通常処理に使用させないようにする。つまり、かかる場合は、該通常トランザクションの処理の待ち合わせを行わせるために、該通常トランザクションの再発行指示をトランザクション制御部２５に返送して（ステップＳ３０３）、処理を終了する。
【００６７】
以上の図４のフローチャートに示すように、診断中に、診断対象のエントリのウェイ（すなわち該エントリウェイ）へのアクセスが通常トランザクションによって発生した場合には、通常トランザクションの通常処理を、診断が終了するまで待ち合わせるように制御し、診断処理を優先して実行することにより、迅速に、間欠障害によるエラーか固定障害によるエラーかを判別することができ、適切な障害処理を行うことができる。
【００６８】
次に、補足説明として、データアレイ３４のいずれかのエントリのウェイ（以下「該エントリウェイ」と省略表示する）のキャッシュデータ４５のリード（読み取り）時に訂正可能なエラーが発生した場合に該エントリウェイの診断を実施して、該エントリウェイのデグレードを行う場合の動作の一例について、図６のフローチャートを用いて説明する。図６は、図１、図２に示した情報処理システム１１の動作の補足説明を行うためのフローチャートであり、診断の実施結果として、訂正後のリードデータを予防保守手段として用いて、キャッシュメモリやメモリ２２のデータを書き戻した後、固定障害と判定した場合には、訂正可能なエラーが発生した該エントリウェイのステータス４３を'Degrade'に設定し、エラーが発生した該エントリウェイのデグレードを行うことによって、早期の予防保守を行うことができる場合の動作についてその一例を補足説明している。
【００６９】
訂正可能なエラーが発生して図６のフローチャートが起動されると、図３のフローチャートの場合と同様、エラー診断制御部３６からの診断開始指示を受け取ったキャッシュ制御部３２においては、トランザクション制御部２５からのトランザクションの処理に優先して該診断開始指示に対応し、アドレスアレイ３３の該エントリウェイに診断中フラグ５１を設定する（ステップＳ４０１）。続いて、エラー診断制御部３６は、最初の診断として、該エントリウェイから再リード（再読み取り）を行ってエラーが検出されるか否かを調べるために、キャッシュ制御部３２に対して、該エントリウェイを指定したリード（読み取り）診断指示を行う（ステップＳ４０２）。
【００７０】
エラー診断制御部３６からのリード（読み取り）診断指示を受け取ったキャッシュ制御部３２においては、図３のフローチャートの場合と同様、アドレスアレイ３３の該エントリウェイの診断中フラグ５１を索引して、診断中であることを確認した後、データアレイ３４の該エントリウェイのデータをリードする（読み取る）。該リード（読み取り）動作におけるエラーの有無をエラー検出部３５にてチェックし、チェックした結果をエラー診断制御部３６に送出する。
【００７１】
エラー検出部３５からのチェック結果を受け取ったエラー診断制御部３６においては、図３のフローチャートの場合と同様、該エントリウェイのリード（読み取り）診断結果として、エラーが検出されなかった場合は（ステップＳ４０３の「無」の場合）、該エントリウェイのリード（読み取り）時の間欠障害であると判断して、リードした（読み取った）該データも該エントリウェイもそのまま継続して使用することが可能な状態にあるものと見做し、ステップＳ４１０に移行して、キャッシュ制御部３２に対して、該エントリウェイの診断中フラグ５１の設定を解除する診断解除指示を行う。エラー診断制御部３６からの診断解除指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイの診断中フラグ５１の設定を解除する（ステップＳ４１０）。しかる後、エラー診断制御部３６は診断処理を終了する。
【００７２】
一方、最初の診断として実施した該エントリウェイのリード（読み取り）診断結果として、リードデータの訂正が可能なエラーが検出された場合は（ステップＳ４０３の「有」の場合）、図３のフローチャートの場合とは異なり、該リードデータの訂正結果として得られた訂正後のリードデータを、別途、レジスタ等に一時的に保持する（ステップＳ４０４）。しかる後に、該エントリウェイのリード（読み取り）時の固定障害の可能性を確認するために、ステップＳ４０５に移行して、図３のフローチャートの場合と同様、データアレイ３４の該エントリウェイのデータのライト（書き込み）＆リード（読み取り）診断を行う（ステップＳ４０５）。ここで、ライト＆リード診断は、図３のフローチャートの場合と同様、固定故障か否かを確実に切り分けることができるように、例えば、ＥＣＣ等の誤り検出訂正ビットも含めて、第１回目は全ビットが'１'値、第２回目は全ビットが'０'値のデータを使った２回のライト＆リード動作を実施した結果の期待値チェックによる診断を行う。
【００７３】
全ビットが'１'値、全ビットが'０'値の２回のライト＆リード動作のチェック結果を取得したエラー診断制御部３６において、チェック結果が２回ともエラーがなく、ライト後にリードした（読み取った）データが、全ビットが'１'値、全ビットが'０'値のそれぞれの期待値と一致していた場合には（ステップＳ４０６の「無」の場合）、該エントリウェイのリード（読み取り）時の間欠障害であると判断して、該エントリウェイはそのまま継続して使用することが可能な状態にあるものと見做し、図３のフローチャートの場合とは異なり、ステップＳ４０４においてレジスタ等に一時的に保持しておいた訂正後のリードデータを、データアレイ３４の該エントリウェイに書き戻した後（ステップＳ４１１）、該エントリウェイへの書き戻し処理を終了した旨をエラー診断制御部３６に通知する。
【００７４】
キャッシュ制御部３２から該エントリウェイへの書き戻し処理を終了した旨の通知を受け取ったエラー診断制御部３６においては、ステップＳ４１０に移行して、キャッシュ制御部３２に対して、該エントリウェイの診断中フラグ５１の設定を解除する診断解除指示を行う。エラー診断制御部３６からの診断解除指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイの診断中フラグ５１の設定を解除する（ステップＳ４１０）。しかる後、エラー診断制御部３６は診断処理を終了する。
【００７５】
また、ステップＳ４０６にて、全ビットが'１'値、全ビットが'０'値の２回のライト＆リード動作のチェック結果を取得したエラー診断制御部３６において、チェック結果が２回のいずれかまたは双方にエラーがあり、ライト後にリードした（読み取った）データが、全ビットが'１'値、全ビットが'０'値のそれぞれの期待値のいずれかまたは双方と一致していなかった場合には（ステップＳ４０６の「有」の場合）、該エントリウェイのリード（読み取り）時の固定障害であると判断して、該エントリウェイはそのまま継続して使用することができなく、デグレードを行う必要があるものと見做す。そこで、エラー診断制御部３６においては、図３のフローチャートの場合と同様、該エントリウェイは継続して使用することができない状態に設定するデグレードを行うために、デグレード指示をキャッシュ制御部３２に対して送出する。
【００７６】
エラー診断制御部３６からのデグレード指示を受け取ったキャッシュ制御部３２においては、図３のフローチャートの場合と同様、アドレスアレイ３３の該エントリウェイのステータス４３を調べる（ステップＳ４０７）。ステータス４３が'Shared'であった場合には（ステップＳ４０７の「Shared」の場合）、同じデータがメモリ２２に存在していて、キャッシュメモリの該エントリウェイのデータを使用することができなくても問題はないので、ステップＳ４０９に移行して、アドレスアレイ３３の該エントリウェイのステータス４３を、使用不可状態を示す'Degrade'に書き換えて設定した後（ステップＳ４０９）、ステータス４３の設定終了の旨をエラー診断制御部３６に通知する。
【００７７】
キャッシュ制御部３２からステータス４３の設定終了の旨の通知を受け取ったエラー診断制御部３６においては、ステップＳ４１０に移行して、図３のフローチャートの場合と同様、キャッシュ制御部３２に対して、該エントリウェイの診断中フラグ５１の設定を解除する診断解除指示を行う。エラー診断制御部３６からの診断解除指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイの診断中フラグ５１の設定を解除する（ステップＳ４１０）。しかる後、エラー診断制御部３６は診断処理を終了する。
【００７８】
一方、ステップＳ４０７において、ステータス４３が'Modified'であった場合は（ステップＳ４０７の「Modified」の場合）、該エントリウェイにしか有効なデータが存在していなかった場合であり、そのまま放置して処理を終了させることはできないので、図３のフローチャートの場合と異なり、ステップＳ４０４においてレジスタ等に一時的に保持しておいた訂正後のリードデータを、該エントリウェイに対応するメモリ２２のアドレスに書き込んだ後（ステップＳ４０８）、メモリ２２への書き込み処理終了の旨をエラー診断制御部３６に通知する。
【００７９】
キャッシュ制御部３２からメモリ２２への書き込み処理終了の旨の通知を受け取ったエラー診断制御部３６においては、ステップＳ４０９に移行して、キャッシュ制御部３２に対して、アドレスアレイ３３の該エントリウェイのステータス４３を、使用不可状態を示す'Degrade'に書き換える指示を行う。エラー診断制御部３６からの書き換え指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイのステータス４３を、使用不可状態を示す'Degrade'に書き換えて設定した後（ステップＳ４０９）、ステータス４３の設定終了の旨をエラー診断制御部３６に通知する。
【００８０】
キャッシュ制御部３２からステータス４３の設定終了の旨の通知を受け取ったエラー診断制御部３６においては、ステップＳ４１０に移行して、キャッシュ制御部３２に対して、該エントリウェイの診断中フラグ５１の設定を解除する診断解除指示を行う。エラー診断制御部３６からの診断解除指示を受け取ったキャッシュ制御部３２においては、アドレスアレイ３３の該エントリウェイの診断中フラグ５１の設定を解除する（ステップＳ４１０）。しかる後、エラー診断制御部３６は診断処理を終了する。
【００８１】
以上の図６のフローチャートに示すように、訂正可能なエラーが発生した場合には、図３のフローチャートのように訂正不可能なエラーが発生した場合とは異なり、キャッシュメモリから読み取ったデータのエラーを訂正した訂正後のリードデータを取得することができるので、ライト＆リード診断の実施に先立って、図６のフローチャートのステップＳ４０４に示すように、訂正後のリードデータをレジスタ等に一時的に保持しておいて、ライト＆リード診断の実施後に、該エントリウェイが使用可能な場合には、一時的に保持しておいた訂正後のリードデータをキャッシュメモリに書き戻して、正常な状態に復帰する。一方、該エントリウェイが使用不可能で、かつ、ステータス４３が'Modified'の場合には、一時的に保持しておいた訂正後のリードデータを、該エントリウェイに対応するメモリ２２に書き込むとともに、該エントリウェイのステータス４３を使用不可状態を示す'Degrade'に設定する。而して、訂正可能なエラーが発生した場合には、早期の予防保守を行うことができる。
【００８２】
（実施形態の効果の説明）
以上に詳細に説明したように、本発明に係る実施形態においては、次のような効果が得られる。すなわち、キャッシュメモリのエラーが検出されたときに、エラーが発生した部位（すなわちエントリのウェイ）を直ちに診断する機能としてエラー診断制御部３６を設けて、キャッシュメモリの障害を迅速かつ的確に判定することを可能にしているので、間欠障害時における不要なデグレードによるキャッシュメモリの性能低下を最小限に留める一方、固定障害時において固定障害発生部位が不用意に継続して使用される事態を防ぐこともでき、而して、キャッシュメモリの信頼性を保つことができる。
【００８３】
以上、本発明の好適な実施形態の構成を説明した。しかし、かかる実施形態は、本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨を逸脱することなく、特定用途に応じて種々の変形変更が可能であることが、当業者には容易に理解できよう。
【符号の説明】
【００８４】
１１      情報処理システム
２１      プロセッサ
２２      メモリ
２５      トランザクション制御部
３０      キャッシュメモリ
３２      キャッシュ制御部
３３      アドレスアレイ
３４      データアレイ
３５      エラー検出部
３６      エラー診断制御部
４１      キーアドレス
４２      セットアドレス
４３      ステータス
４４      フラグ
４５      キャッシュデータ
５１      診断中フラグ
５２      障害フラグ
【図１】
2014081865.tif 000003
【図２】
2014081865.tif 000004
【図３】
2014081865.tif 000005
【図４】
2014081865.tif 000006
【図５】
2014081865.tif 000007
【図６】
2014081865.tif 000008