(57)【特許請求の範囲】
【請求項１】
プロセッサと、
メインメモリと、
データ更新方式がライトバック方式であるキャッシュメモリとを有する情報処理装置であって、
前記メインメモリは、キャッシュミスのときにおいて、前記プロセッサからのメモリリクエストに応じたリプライデータを出力する際に、該リプライデータに訂正不能なエラーがあるか否かを検出すると共に、該検出の結果を示すエラー情報と、該検出が行われた場所である前記メインメモリを示す場所情報とを前記リプライデータに付加する第１の情報付加部を備え、
前記キャッシュメモリは、
キャッシュミスのときにおいて、前記プロセッサに出力されたリプライデータでブロックロードをする際に、該リプライデータに付加された各情報を記憶する付加情報記憶部と、
キャッシュヒットのときにおいて、前記プロセッサからのメモリリクエストに応じたリプライデータを出力する際に、前記付加情報記憶部に記憶された、該リプライデータに対応する情報がエラーがあることを示す場合に、該リプライデータについて前記付加情報記憶部に記憶された各情報を前記リプライデータに付加する一方、前記付加情報記憶部に記憶された、該リプライデータに対応する情報がエラーが無いことを示す場合に、該リプライデータに訂正不能なエラーがあるか否かを検出すると共に、該検出の結果を示すエラー情報と、該検出が行われた場所である前記キャッシュメモリを示す場所情報とを前記リプライデータに付加する第２の情報付加部とを備え、
前記第２の情報付加部は、
キャッシュヒット時において前記リプライデータに対して訂正不能なエラーの有無の検出を行った結果、訂正不能なエラーが検出されたときに、さらに、、該リプライデータに対応するブロックのステータス情報を前記リプライデータに付加し、
前記プロセッサは、
キャッシュヒット時に前記キャッシュメモリからのリプライデータに付加された情報が「エラーがある」かつ「発生場所がキャッシュメモリである」を示す際に、
前記ステータス情報が「ダーティ」であるときに、ＯＳ（オペレーティングシステム）に障害通知を行い、
前記ステータス情報が「クリーン」であるときに、前記キャッシュメモリにおける当該ブロックを無効化すると共に、前記メモリリクエストを出した際に中断した命令処理を再開することを特徴とする情報処理装置。
【請求項２】
前記キャッシュメモリは複数あり、
これらの複数のキャッシュメモリは、レベルが互いに異なることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記プロセッサからのメモリリクエストに応じて出力されたリプライデータを転送する経路上の少なくとも１箇所に第３の情報付加部が設けられており、
該第３の情報付加部は、
転送されるリプライデータに付加された情報がエラーがあることを示す場合に、該リプライデータとそれに付加された前記情報とをそのまま転送し、
転送されるリプライデータに付加された情報がエラーが無いことを示す場合に、前記リプライデータに訂正不能なエラーがあるか否かを検出すると共に、該検出の結果を示すエラー情報と、該検出が行われた場所である前記箇所を示す場所情報とを前記リプライデータに付加することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記第３の情報付加部が設けられた箇所に対応する経路部分と切換え使用可能な冗長経路がさらに設けられており、
前記プロセッサは、受信したリプライデータに付加された情報が、前記第３の情報付加部が設けられた箇所に前記エラーが検出されたことを示す場合に、前記冗長経路が使用されるように制御を行うことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
プロセッサと、メインメモリと、キャッシュメモリとを有する情報処理装置におけるエラー訂正支援方法であって、
キャッシュミスのときにおいて、前記プロセッサからのメモリリクエストに応じて前記メインメモリからリプライデータを出力する際に、該リプライデータに訂正不能なエラーがあるか否かを検出すると共に、該検出の結果を示すエラー情報と、該検出が行われた場所である前記メインメモリを示す場所情報とを前記リプライデータに付加し、
キャッシュミスのときにおいて、前記キャッシュメモリが前記プロセッサに出力されたリプライデータでブロックロードをする際に、該リプライデータに付加された各情報を記憶しておき、
キャッシュヒットのときにおいて、前記プロセッサからのメモリリクエストに応じて前記キャッシュメモリからリプライデータを出力する際に、ブロックロード時に記憶しておいた、該リプライデータに対応する情報がエラーがあることを示す場合に、ブロックロード時に記憶しておいた、該リプライデータに対応する各情報を前記リプライデータに付加する一方、ブロックロード時に記憶しておいた、該リプライデータに対応する情報がエラーが無いことを示す場合に、該リプライデータに訂正不能なエラーがあるか否かを検出すると共に、該検出の結果を示すエラー情報と、該検出が行われた場所である前記キャッシュメモリを示す場所情報と、該リプライデータに対応するブロックのステータス情報とを前記リプライデータに付加し、
キャッシュヒット時に前記キャッシュメモリからのリプライデータに付加された情報が「エラーがある」かつ「発生場所がキャッシュメモリである」を示す際に、前記プロセッサが、前記ステータス情報が「ダーティ」であるときに、ＯＳ（オペレーティングシステム）に障害通知を行い、前記ステータス情報が「クリーン」であるときに、前記キャッシュメモリにおける当該ブロックを無効化すると共に、前記メモリリクエストを出した際に中断した命令処理を再開することを特徴とするエラー訂正支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理技術、具体的には、キャッシュメモリを備えるシステムにおいて、メモリリクエストのリプライデータに訂正不能なエラーが生じた場合の対処技術に関する。
【背景技術】
【０００２】
キャッシュメモリを備えるシステムにおいて、プロセッサがメモリデータの読出要求（以下「メモリリクエスト」という）を出すと、該キャッシュメモリに当該データがある場合すなわちキャッシュヒットの場合には、該キャッシュメモリからリプライデータがプロセッサに転送される。一方、該キャッシュメモリに当該データが無い場合すなわちキャッシュミスの場合には、該キャッシュメモリより下位レベルのメモリ（メインメモリまたは下位レベルのキャッシュメモリ）からリプライデータがプロセッサに転送され、同時に、キャッシュメモリは、ブロックロードを行う。ブロックロードは、具体的には、キャッシュメモリが、該リプライデータが含まれるブロックを自身の空ブロックや、最も長く使用されていないデータを記憶したブロックに格納する処理である。なお、キャッシュメモリのライン入替えを伴うブロックロードは、リフィル（Ｒｅｆｉｌｌ）とも呼ばれる。
【０００３】
リプライデータに訂正不能なエラーが発生した場合に、通常、該プロセッサは、メモリリクエストを再発行などによってリトライする。リトライが所定回数に達してもリプライデータに訂正不能なエラーがある場合には、該プロセッサが処理を続けることができず、システムの稼働効率が低下してしまうという問題がある。
【０００４】
また、マルチプロセッサシステムでは、１つのプロセッサのメモリリクエストに対するリプライデータに訂正不能なエラーが生じた場合の対処として、該プロセッサを「プロセッサチェック」状態にしてシステムから切り離す手法が知られている。この場合、該プロセッサの処理を引き継いだ別のプロセッサが、処理を続けるためにメモリリクエストを出すが、上記訂正不能なエラーの原因が「プロセッサチェック」状態にされたプロセッサではないときに、リプライデータに訂正不能なエラーが発生する状態が続くため、処理を引き継いだプロセッサもまた「プロセッサチェック」状態にされシステムから切り離される。このようなことが繰り返され、最後には、全てのプロセッサがシステムから切り離され、システムダウンになり、システムの稼働効率が低下してしまう恐れがある。
【０００５】
リプライデータにエラーが生じた場合に関連するキャッシュメモリの制御方法について、種々の視点からの技術が提案されている。ここで例を説明する。なお、以下の説明において、「キャッシュメモリ」と「キャッシュ」を同じ意味で用いる。
【０００６】
特許文献１に開示された技術は、メインメモリからキャッシュメモリに転送されるデータ単位が、キャッシュメモリからプロセッサに転送されるデータ単位より大きいことに着目したものである。この技術は、ブロックロード時にリプライデータがキャッシュメモリに到着するまでの間を利用してキャッシュディレクトリを更新し、リプライデータにエラーが発生し、かつ、該データがプロセッサから要求されているものではない場合に、該エラーをキャッシュメモリに記憶しておき、該エラーの記憶中にメモリリクエストが発生すると、メインメモリから直接に読み出す。そして、プロセッサにおけるソフトウェア命令の処理が終了すると、キャッシュメモリは、記憶したエラーをプロセッサに報告し、プロセッサは、該報告を受信すると、キャッシュメモリにおける上記エラーの記憶を解除する。
【０００７】
特許文献１には、この技術によれば、リプライデータに誤りがあると、プロセッサが、ソフトウェア命令の処理終了までキャッシュメモリをバイパスするため、ブロックロードが終了すると直ぐにプロセッサのメモリリクエストの受付が可能になり、リプライデータにエラーが発生する確率が低ければメモリリクエストの間隔を短縮できると記載されている。
【０００８】
また、特許文献２に開示された技術は、２次キャッシュ（Ｌ２キャッシュ）に、該２次キャッシュに存在するダーティデータをバックアップするバッファを設ける。該文献には、こうすることにより、リプライデータとなるダーティデータが訂正不能であった２ビットエラーである場合であっても、システムダウンせずに２ビットエラーを訂正して処理を継続できると記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開昭６０−１４４８４７号公報
【特許文献２】特開２００３−２０３０１０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１の手法は、エラーが生じたリプライデータがプロセッサにより使用されないものである場合に限定されており、エラーが生じたリプライデータがプロセッサにより使用されるものである場合に対処できない。
【００１１】
また、特許文献２の手法は、２次キャッシュに存在するダーティデータをバックアップするバッファを設ける必要があり、回路規模が大きくなってしまうという問題がある。
【００１２】
本発明は、上記事情を鑑みてなされたものであり、リプライデータに訂正不能なエラーが生じたことに起因するシステムの稼働率の低下問題を改善すると共に、回路規模の膨大化を回避する技術を提供する。
【課題を解決するための手段】
【００１３】
本発明の１つの態様は、プロセッサと、メインメモリと、キャッシュメモリとを有する情報処理装置におけるエラー訂正支援方法である。
【００１４】
このエラー訂正支援方法は、キャッシュミスのときにおいて、プロセッサからのメモリリクエストに応じてメインメモリからリプライデータを出力する際に、該リプライデータに訂正不能なエラーがあるか否かを検出すると共に、該検出の結果を示すエラー情報と、該検出が行われた場所であるメインメモリを示す場所情報とを前記リプライデータに付加する。
【００１５】
また、キャッシュミスのときにおいて、キャッシュメモリがプロセッサに出力されたリプライデータでブロックロードをする際に、該リプライデータに付加された各情報を記憶しておく。
【００１６】
キャッシュヒットのときにおいて、プロセッサからのメモリリクエストに応じてキャッシュメモリからリプライデータを出力する際に、ブロックロード時に記憶しておいた、該リプライデータに対応する情報がエラーがあることを示す場合に、ブロックロード時に記憶しておいた、該リプライデータに対応する各情報をリプライデータに付加する一方、ブロックロード時に記憶しておいた、該リプライデータに対応する情報がエラーが無いことを示す場合に、該リプライデータに訂正不能なエラーがあるか否かを検出すると共に、該検出の結果を示すエラー情報と、該検出が行われた場所であるキャッシュメモリを示す場所情報とをリプライデータに付加する。
【００１７】
なお、上記態様のエラー訂正支援方法を実施する情報処理装置や、該情報処理装置を含むシステムや、該方法をコンピュータに実行せしめるプログラム、該プログラムを記録した記録媒体なども、本発明の態様としては有効である。
【発明の効果】
【００１８】
本発明にかかる技術によれば、キャッシュメモリを備えるシステムにおいて、プロセッサからのメモリリクエストに応じて出力されたリプライデータに訂正不能なエラーが生じたことに起因するシステムの稼働率の低下問題を改善すると共に、回路規模の膨大化を回避することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の原理を説明するために用いる情報処理装置を示す図である。
【図２】図１に示す情報処理装置におけるプロセッサによるメモリリードを示すフローチャートである。
【図３】図１に示す情報処理装置におけるメインメモリユニットがメモリリクエストを受信した際の処理を示すフローチャートの例である。
【図４】図１に示す情報処理装置におけるキャッシュメモリユニットがメモリリクエストを受信した際の処理を示すフローチャートの例である。
【図５】図４におけるステップＳ１８０のブロックロード処理の例を示すフローチャートである。
【図６】図１に示す情報処理装置におけるメインメモリから出力されたリプライデータに付加されている情報の例を示す図である。
【図７】図１に示す情報処理装置におけるキャッシュメモリから出力されたリプライデータに付加されている情報の例を示す図である。
【図８】図１に示す情報処理装置におけるメインメモリから出力されたリプライデータに付加されている情報の別の例を示す図である。
【図９】図１に示す情報処理装置におけるキャッシュメモリから出力されたリプライデータに付加されている情報の別の例を示す図である。
【図１０】図２におけるステップＳ１１０の「リプライデータ受信後処理」の例を示すフローチャートである。
【図１１】キャッシュメモリのデータ更新方式がライトバックである場合における、メインメモリから出力されたリプライデータに付加されている情報の例を示す図である。
【図１２】キャッシュメモリのデータ更新方式がライトバックである場合における、キャッシュメモリから出力されたリプライデータに付加されている情報の例を示す図である。
【図１３】キャッシュメモリのデータ更新方式がライトバックである場合における、メインメモリから出力されたリプライデータに付加されている情報の別の例を示す図である。
【図１４】キャッシュメモリのデータ更新方式がライトバックである場合における、キャッシュメモリから出力されたリプライデータに付加されている情報の別の例を示す図である。
【図１５】キャッシュメモリのデータ更新方式がライトバックである場合における、図２におけるステップＳ１１０の「リプライデータ受信後処理」の例を示すフローチャートである。
【図１６】本発明の原理を説明するために用いる他の情報処理装置を示す図である。
【図１７】図１６に示す情報処理装置におけるリプライデータに含まれる付加情報の例を示す図である。
【図１８】図１６に示す情報処理装置におけるプロセッサがリプライデータを受信した後の処理の例を示すフローチャートである。
【図１９】本発明の実施の形態にかかるマルチプロセッサシステムを示す図である。
【図２０】図１９に示すマルチプロセッサシステムにおける各機能ブロック間のデータの受渡しを詳細に示す図である。
【図２１】図１９に示すマルチプロセッサシステムにおけるプロセッサによるメモリリード処理を示すフローチャートである。
【図２２】図１９に示すマルチプロセッサシステムにおけるリプライデータに含まれる付加情報の例を示す図である。
【図２３】図２１におけるステップＳ３１０の「リプライデータ受信後処理」の例を示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下、図面を参照して、本発明の実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００２１】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００２２】
本発明の具体的な実施の形態を説明する前に、まず、本発明にかかる技術の原理を説明する。なお、以下の説明において、特別な説明が無い限り、「エラー」は、「訂正不能なエラー」を意味する。
【００２３】
図１は、本発明にかかる技術の原理を説明するための情報処理装置１００を示す。該情報処理装置１００は、プロセッサ１１０と、キャッシュメモリユニット１３０と、メインメモリユニット１６０を有し、プロセッサ１１０は、第１のバス１２０を介してキャッシュメモリユニット１３０と接続されており、第２のバス１５０を介してメインメモリユニット１６０と接続されている。また、キャッシュメモリユニット１３０とメインメモリユニット１６０は、第２のバス１５０を介して接続されている。
【００２４】
プロセッサ１１０は、ソフトウェア命令（以下ＳＷ命令という）を実行するＳＷ命令実行部１１２と、回復処理部１１４と、メモリリクエスト制御部１１６を備える。
【００２５】
キャッシュメモリユニット１３０は、キャッシュコントローラとして機能し、プロセッサ１１０からのメモリリクエスト（以下ＲＳＴという）を受け付けるＲＳＴ受付部１３２と、キャッシュメモリ１３４と、付加情報記憶部１３６と、第２の情報付加部１３８と、ＲＤ出力部１４０を備える。なお、この例の情報処理装置１００において、キャッシュメモリがキャッシュメモリ１３４のみであるため、キャッシュメモリ１３４は、１次キャッシュメモリ（Ｌ１キャッシュメモリ）となる。
【００２６】
メインメモリユニット１６０は、プロセッサ１１０からのメモリリクエストを受け付けるＲＳＴ受付部１６２と、メインメモリ１６４と、第１の情報付加部１６６と、ＲＤ出力部１６８を備える。
【００２７】
図２は、プロセッサ１１０がメモリリードに際しての動作の流れを示すフローチャートである。プロセッサ１１０において、ＳＷ命令実行部１１２は、ＳＷ命令を実行している中で、メモリデータをリードする必要があるときに、メモリリクエスト制御部１１６にリクエスト要求ＲＳＴＲを出力する。これに伴って、ＳＷ命令実行部１１２は、ＳＷ命令の実行を一時中断する。メモリリクエスト制御部１１６は、ＳＷ命令実行部１１２からのリクエスト要求ＲＳＴＲに応じて、キャッシュメモリ１３４へ発行するメモリリクエストＲＳＴを第１のバス１２０に出力する（Ｓ１００）。キャッシュヒットした場合（Ｓ１０２：Ｙｅｓ）、メモリリクエストＲＳＴに応じてキャッシュメモリユニット１３０からリプライデータＲＤ３が第１のバス１２０を介してプロセッサ１１０に転送され、プロセッサ１１０は、リプライデータ受信後の処理を行う（Ｓ１１０）。
【００２８】
一方、ステップＳ１０２において、キャッシュミスした場合（Ｓ１０２：Ｎｏ）、メモリリクエスト制御部１１６は、メインメモリ１６４へ発行するメモリリクエストＲＳＴを第２のバス１５０に出力する（Ｓ１０４）。このメモリリクエストＲＳＴに応じてメインメモリユニット１６０からリプライデータＲＤ１が第２のバス１５０を介してプロセッサ１１０に転送され、プロセッサ１１０は、リプライデータ受信後の処理を行う（Ｓ１１０）。
【００２９】
なお、この場合、メインメモリユニット１６０からプロセッサ１１０へ転送されるリプライデータＲＤ１は、キャッシュメモリユニット１３０にも転送され、キャッシュメモリユニット１３０は、このリプライデータＲＤ１でブロックロードを行う。
【００３０】
プロセッサ１１０によるステップＳ１１０の「リプライデータ受信後処理」の詳細、及びキャッシュメモリユニット１３０によるブロックロードの詳細は、後述する。
【００３１】
図３は、キャッシュミスの場合（図２のステップＳ１０２：Ｎｏ）に、メインメモリユニット１６０がプロセッサ１１０からメモリリクエストＲＳＴを受信した際の動作の流れを示すフローチャートである。
【００３２】
キャッシュミス時に、メインメモリユニット１６０のＲＳＴ受付部１６２は、第２のバス１５０を介して、プロセッサ１１０のメモリリクエスト制御部１１６からのメモリリクエストＲＳＴを受け付ける（Ｓ１５０）。
【００３３】
ＲＳＴ受付部１６２は、このメモリリクエストＲＳＴに含まれるリクエストアドレスＡＤＲをメインメモリ１６４とＲＤ出力部１６８に出力し、メインメモリ１６４は、リクエストアドレスＡＤＲに該当するデータをリプライデータＲＤ０としてＲＤ出力部１６８と第１の情報付加部１６６に出力する。
【００３４】
第１の情報付加部１６６は、リプライデータＲＤ０に対して訂正不能なエラーの有無の検出を行うと共に、該検出の結果を示すエラー情報と、該検出が行われた場所（ここではメインメモリユニット１６０）を示す場所情報とを付加情報ＡＤＩ０としてＲＤ出力部１６８に出力する（Ｓ１５４）。
【００３５】
ＲＤ出力部１６８は、ＲＳＴ受付部１６２からのリクエストアドレスＡＤＲと、メインメモリ１６４からのリプライデータＲＤ０と、第１の情報付加部１６６からの付加情報ＡＤＩ０とをリプライデータＲＤ１として第２のバス１５０に出力する（Ｓ１５６）。
【００３６】
すなわち、キャッシュミス時にメインメモリユニット１６０から出力されるリプライデータＲＤ１には、メインメモリ１６４からの、リプライデータの本体となるリプライデータＲＤ０と、第１の情報付加部１６６からの付加情報ＡＤＩ０とが含まれている。
【００３７】
前述したように、このリプライデータＲＤ１は、第２のバス１５０を介してプロセッサ１１０とキャッシュメモリユニット１３０に転送される。
【００３８】
図４は、キャッシュメモリユニット１３０がプロセッサ１１０からメモリリクエストＲＳＴを受信した際の動作の流れを示すフローチャートである。
【００３９】
キャッシュメモリユニット１３０のＲＳＴ受付部１３２は、第１のバス１２０を介してプロセッサ１１０のメモリリクエスト制御部１１６からのメモリリクエストＲＳＴを受け付ける（Ｓ１６０）と、該メモリリクエストＲＳＴに含まれるリクエストアドレスＡＤＲをキャッシュメモリ１３４とＲＤ出力部１４０に出力する。
【００４０】
キャッシュメモリ１３４は、リクエストアドレスＡＤＲに該当するデータが無い場合すなわちキャッシュミスの場合（Ｓ１６２：Ｎｏ）、リプライデータの出力をせずに、後にメインメモリユニット１６０から出力されるリプライデータＲＤ１でブロックロードを行う（Ｓ１８０）。図５を参照して、ステップＳ１８０におけるブロックロード処理（リフィルを含む）を説明する。
【００４１】
図５に示すように、キャッシュメモリ１３４のキャッシュミス時に、キャッシュメモリ１３４の代わりにメインメモリユニット１６０から第２のバス１５０にリプライデータＲＤ１が出力されると、キャッシュメモリユニット１３０におけるキャッシュメモリ１３４は、該リプライデータＲＤ１の本体（リプライデータＲＤ０）を該当するブロックに格納し（Ｓ１８２）、付加情報記憶部１３６は、リプライデータＲＤ１に含まれる付加情報（付加情報ＡＤＩ０）を、リプライデータＲＤ０が格納されたブロックとを対応付けて格納する（Ｓ１８４）。
【００４２】
すなわち、キャッシュメモリ１３４のキャッシュミス時に行われるブロックロードによりキャッシュメモリ１３４に格納されたデータについて、該データに対応する付加情報ＡＤＩ０が付加情報記憶部１３６に記憶される。
【００４３】
なお、プロセッサ１１０によりキャッシュメモリ１３４のデータ更新（Ｐｕｒｇｉｎｇ）が行われた際に、データ更新がなされるブロックに対応する付加情報ＡＤＩ０が格納されている場合に、付加情報記憶部１３６は、該付加情報ＡＤＩ０をクリアする。
【００４４】
図４に戻ってキャッシュヒットの場合について説明する。
ステップＳ１６２において、キャッシュヒットした場合に（Ｓ１６２：Ｙｅｓ）、キャッシュメモリ１３４は、ＲＳＴ受付部１３２からのリクエストアドレスＡＤＲに該当するデータをリプライデータＲＤ２としてＲＤ出力部１４０と第２の情報付加部１３８に出力する。
【００４５】
第２の情報付加部１３８は、キャッシュメモリ１３４が出力したリプライデータＲＤ２に対して付加する情報（付加情報ＡＤＩ１）をＲＤ出力部１４０に供する。具体的には、第２の情報付加部１３８は、まず、キャッシュメモリ１３４が出力したリプライデータＲＤ２について、付加情報記憶部１３６に付加情報ＡＤＩ０が記憶されているか否かを確認する（Ｓ１６４）。リプライデータＲＤ２に対応する付加情報ＡＤＩ０が付加情報記憶部１３６に記憶されていれば（Ｓ１６４：Ｙｅｓ）、第２の情報付加部１３８は、さらに、該付加情報ＡＤＩ０に含まれるエラー情報が「エラーがある」と「エラーが無い」のいずれを示しているかを確認する（Ｓ１６６）。確認の結果、付加情報ＡＤＩ０に含まれるエラー情報が「エラーがある」を示す場合に、第２の情報付加部１３８は、付加情報ＡＤＩ０をそのまま付加情報ＡＤＩ１としてＲＤ出力部１４０に出力する（Ｓ１６６：Ｙｅｓ）。
【００４６】
一方、リプライデータＲＤ２に対応する付加情報ＡＤＩ０が付加情報記憶部１３６に無い場合（Ｓ１６４：Ｎｏ）と、リプライデータＲＤ２に対応する付加情報ＡＤＩ０に含まれるエラー情報が「エラーが無い」を示す場合（Ｓ１６６：Ｎｏ）において、第２の情報付加部１３８は、リプライデータＲＤ２に対して訂正不能なエラーの有無の検出を行うと共に、該検出の結果を示すエラー情報と、該検出が行われた場所（ここではキャッシュメモリユニット１３０）を示す場所情報とを付加情報ＡＤＩ１としてＲＤ出力部１４０に出力する（Ｓ１７０、Ｓ１７２）。
【００４７】
ＲＤ出力部１４０は、ＲＳＴ受付部１３２からのリクエストアドレスＡＤＲと、キャッシュメモリ１３４からのリプライデータＲＤ２と、第２の情報付加部１３８からの付加情報ＡＤＩ１とをリプライデータＲＤ３として第１のバス１２０に出力する（Ｓ１７８）。
【００４８】
すなわち、キャッシュヒット時にキャッシュメモリユニット１３０から出力されるリプライデータＲＤ３には、キャッシュメモリ１３４からの、リプライデータの本体となるリプライデータＲＤ２と、第２の情報付加部１３８からの付加情報ＡＤＩ１が含まれている。この付加情報ＡＤＩ１は、付加情報ＡＤＩ０と同一である場合がある。
【００４９】
ここで、付加情報ＡＤＩ０と付加情報ＡＤＩ１のフォーマットを説明する。
図６と図７は、上位の１ビットがエラー情報を示し、下位の１ビットで場所情報を示す２ビットで構成される付加情報ＡＤＩ０と付加情報ＡＤＩ１の例を夫々示す。
【００５０】
図６に示すように、付加情報ＡＤＩ０は、上位のエラー情報ビットと下位の場所情報ビットを有し、下位ビットがメインメモリ１６４を示す「０」である。上位ビットが「１」であり、すなわち付加情報ＡＤＩ０が「１０」であることは、「メインメモリ１６４においてエラーが検出された」を示し、上位ビットが「０」であり、すなわち付加情報ＡＤＩ０が「００」であることは、「メインメモリ１６４においてエラーが検出されていない」を示す。
【００５１】
また、図７に示すように、付加情報ＡＤＩ１も、２ビットで構成され、「００」、「１０」、「０１」、「１１」は、夫々、「メインメモリ１６４においてエラーが検出されていない」、「メインメモリ１６４においてエラーが検出された」、「キャッシュメモリ１３４においてエラーが検出されていない」、「キャッシュメモリ１３４においてエラーが検出された」を示す。
【００５２】
なお、プロセッサ１１０にとって、エラーがある場合の回復処理のために、エラーがある場合にどこでエラーが検出されたかがの情報が必要である一方、エラーが無い場合には、エラー検出がどこで行われたことを知る必要が無い。そのため、例えば、図８と図９のようなフォーマットの付加情報ＡＤＩ０と付加情報ＡＤＩ１を用いてもよい。
【００５３】
図８と図９に示す例では、上位ビットによりエラーの有無を示し、下位ビットは、エラーがある場合すなわち上位ビットが「１」である場合においてのみ有効である。
【００５４】
例えば、図８に示すように、「００」である付加情報ＡＤＩ０は、エラーが無いことを示し、「１０」である付加情報ＡＤＩ０は、「メインメモリ１６４においてエラーが検出された」を示す。
【００５５】
同様に、図９に示すように、「００」である付加情報ＡＤＩ１は、エラーが無いことを示し、「１０」である付加情報ＡＤＩ１は、「メインメモリ１６４においてエラーが検出された」を示し、「１１」である付加情報ＡＤＩ１は、「キャッシュメモリ１３４においてエラーが検出された」を示す。
【００５６】
勿論、エラーがある場合における該エラーの検出場所が分かれば、付加情報ＡＤＩ０とＡＤＩ１のフォーマットは、上述した例に限ることがない。
【００５７】
以上の説明から分かるように、キャッシュミスのときに、メインメモリユニット１６０からリプライデータＲＤ１がプロセッサ１１０に転送され、キャッシュヒットのときに、キャッシュメモリユニット１３０からリプライデータＲＤ３がプロセッサ１１０に転送される。
【００５８】
リプライデータＲＤ１には、該リプライデータＲＤ１に含まれるリプライデータＲＤ０がメインメモリユニット１６０においてエラーが検出された否かを示す付加情報ＡＤＩ０が付加されている。リプライデータＲＤ３には、該リプライデータＲＤ３に含まれるリプライデータＲＤ０におけるエラーの有無、及び、エラーがある場合には、該エラーがメインメモリユニット１６０とキャッシュメモリユニット１３０のいずれにおいて検出されたかを示す付加情報ＡＤＩ１が付加されている。
【００５９】
従って、プロセッサ１１０は、リプライデータＲＤ１またはリプライデータＲＤ３を受信した際に、該データに含まれる付加情報から、該データに含まれるデータ本体にエラーの有無を知ることができると共に、上記エラーがある場合には該エラーがどこで生じたかを知ることができるため、エラーが生じた場所に応じた回復処理を行うことができる。
【００６０】
図１０は、図２におけるステップＳ１１０の処理、つまり、プロセッサ１１０がリプライデータ（ＲＤ１またはＲＤ３）を受信した際の処理の例を示すフローチャートである。
【００６１】
リプライデータ（キャッシュミス時におけるメインメモリユニット１６０からのリプライデータＲＤ１、またはキャッシュヒット時におけるキャッシュメモリユニット１３０からのリプライデータＲＤ３）を受信すると、メモリリクエスト制御部１１６は、該リプライデータを回復処理部１１４に出力する。分かりやすいように、メモリリクエスト制御部１１６から回復処理部１１４に出力されるリプライデータを「ＲＤ４」で表記する。該リプライデータＲＤ４は、リプライデータＲＤ１とリプライデータＲＤ３のいずれか一方である。
【００６２】
回復処理部１１４は、メモリリクエスト制御部１１６からのリプライデータＲＤ４に含まれる付加情報（付加情報ＡＤＩ０または付加情報ＡＤＩ１）を参照し、エラーの有無を確認する（Ｓ１１２）。
【００６３】
リプライデータＲＤ４に含まれる付加情報が、エラーが検出されていないことを示す場合に（Ｓ１１２：Ｎｏ）、回復処理部１１４は、メモリリクエスト制御部１１６にリプライデータＲＤ４をそのまま返送する（Ｓ１１４）。
【００６４】
メモリリクエスト制御部１１６は、回復処理部１１４から返送されたリプライデータＲＤ４をＳＷ命令実行部１１２に出力し、ＳＷ命令実行部１１２は、メモリリクエストＲＳＴを出した際に中断していたＳＷ命令処理を再開し、リプライデータＲＤ４に含まれるデータ本体（リプライデータＲＤ０またはリプライデータＲＤ２）を用いた処理を実行する（Ｓ１１６）。
【００６５】
なお、この場合、メモリリクエスト制御部１１６は、回復処理部１１４から返送されたリプライデータＲＤ４から付加情報を取り除き、リプライデータＲＤ４に含まれるリクエストアドレスＡＤＲと、データ本体（リプライデータＲＤ０またはリプライデータＲＤ２）とをＳＷ命令実行部１１２に出力するようにしてもよい。
【００６６】
一方、ステップＳ１１２において、リプライデータＲＤ４に含まれる付加情報が、メインメモリユニット１６０とキャッシュメモリユニット１３０のいずれかにおいて訂正不能なエラーが検出されたことを示す場合に（Ｓ１１２：Ｙｅｓ）、回復処理部１１４は、ＳＷ命令実行部１１２に割込要求ＩＲを出力し、中断していたＳＷ命令処理に、ステップＳ１２２からの回復処理を割り込ませる（Ｓ１２０、Ｓ１２２〜）。なお、ＳＷ命令実行部１１２は、回復処理部１１４からの命令を実行することにより回復処理を実現するが、説明が冗長にならないように、以下の説明において、ＳＷ命令実行部１１２が回復処理を行うように説明を進める。
【００６７】
ＳＷ命令実行部１１２は、回復処理をするのに当たって、まず、リプライデータＲＤ４に含まれる付加情報が、キャッシュメモリユニット１３０から出力される際にエラーが検出されたことを示すか否かを確認する（Ｓ１２２）。
【００６８】
リプライデータＲＤ４が、キャッシュヒット時にキャッシュメモリユニット１３０から出力されるリプライデータＲＤ３であり、かつ、該リプライデータＲＤ３に含まれるデータ本体（リプライデータＲＤ２）がキャッシュメモリ１３４から出力される際に訂正不能なエラーが検出された場合においてのみ、ステップＳ１２２の確認結果が「Ｙｅｓ」となる。この場合、ＳＷ命令実行部１１２は、キャッシュメモリ１３４においてリプライデータＲＤ２に対応するブロックを無効化する（Ｓ１２４）と共に、中断していたＳＷ命令処理を再開する（Ｓ１１６）。
【００６９】
この場合、キャッシュメモリ１３４の当該ブロックが無効にされたため、ＳＷ命令実行部１１２によりＳＷ命令処理を再開すると、キャッシュミスとなり、プロセッサ１１０のメモリリクエスト制御部１１６からメインメモリ１６４に対してメモリリクエストＲＳＴが発行される。そのため、キャッシュメモリ１３４に格納された、エラーのあるリプライデータＲＤ２が使用されず、メインメモリ１６４から正しいデータを取り出すことが可能となる。
【００７０】
一方、リプライデータＲＤ４がキャッシュミス時にメインメモリユニット１６０から出力されるリプライデータＲＤ１であり、かつ、該リプライデータＲＤ１がメインメモリ１６４から出力される際にエラーが検出された場合、または、リプライデータＲＤ４がキャッシュヒット時にキャッシュメモリ１３４から出力されるリプライデータＲＤ２であり、かつ、該リプライデータＲＤ２のブロックロード時にメインメモリユニット１６０においてエラーが検出された場合、ステップＳ１２２の確認結果が「Ｎｏ」となる。この場合、中断していたＳＷ命令処理を再開してメインメモリ１６４にメモリリクエストＲＳＴを出しても正しいデータを取り出すことができず、回復できない可能性が高い。
【００７１】
そのため、この場合（Ｓ１２２：Ｎｏ）において、ＳＷ命令実行部１１２は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）に障害通知を行い、ＯＳに回復処理を委ねる（Ｓ１２６）。こうすることにより、ＯＳは、例えば、メインメモリ１６４の当該ページを無効化するなどにより、回復できる可能性がある。
【００７２】
このように、本発明にかかる技術によれば、メモリリクエストＲＳＴに応じてプロセッサに返送されたリプライデータには、エラーの有無を示すエラー情報と、エラーがある場合には該エラーがメインメモリとキャッシュメモリのいずれで検出されたかを示す場所情報が付加されているので、プロセッサは、エラーがある場合に場所情報に基づいて、エラーが生じた場所に応じた回復処理を行うことができる。その結果、システムの効率を図ることができる。
【００７３】
また、付加情報のデータ量は、例えば図６〜図９に示すように２ビットしかなく、キャッシュメモリにおいて付加情報を格納する記憶部の必要容量も小さいため、回路規模の膨大化を防ぐことができる。
【００７４】
本願発明者は、さらに、鋭意研究模索し、キャッシュメモリのデータ更新方式がライトバックである場合に、キャッシュメモリにおいてエラーが検出された場合にリプライデータに付加する情報の中に、ブロックのステータス情報を含める技術を想到した。
【００７５】
これに関連して、まず、キャッシュメモリのデータ更新（Ｐｕｒｇｉｎｇ）の方式を説明する。
【００７６】
キャッシュメモリのデータ更新について、ライトスルー方式とライトバック方式が知られている。
【００７７】
ライトスルー方式のキャッシュメモリの場合、プロセッサが該キャッシュメモリに書き込みをしたデータが、該キャッシュメモリにストアされると共に、下位レベルのメモリ（メインメモリまたは下位レベルのキャッシュメモリ）にも書き戻される。
【００７８】
ライトバック方式のキャッシュメモリの場合、プロセッサが該キャッシュメモリに書き込みをしたデータが、該キャッシュメモリにストアされるものの、条件が整わない限り、下位レベルのメモリに書き戻されない。なお、下位レベルへの書き戻しの条件は、システムによって種々ある。
【００７９】
キャッシュメモリに格納されているデータが、下位レベルのメモリに書き戻されている場合、該データを格納するブロックのステータスは「クリーン」と呼ばれる。一方、キャッシュメモリに格納されているデータが、下位レベルのメモリに書き戻されていない場合、該データを格納するブロックのステータスは「ダーティ」と呼ばれる。
【００８０】
図１に示す情報処理装置１００におけるキャッシュメモリ１３４がライトスルー方式のキャッシュメモリである場合について、図１０のフローチャートが示す処理を考える。
【００８１】
この場合、キャッシュメモリ１３４に対してプロセッサ１１０が書き込みを行うと、書き込まれたデータがメインメモリ１６４にも書き戻される。そのため、キャッシュヒットした場合にキャッシュメモリ１３４から出力されたリプライデータＲＤ２にエラーがあれば、メインメモリ１６４における、リプライデータＲＤ２に対応するデータもエラーとなっているはずである。
【００８２】
ところで、リプライデータＲＤ２におけるエラーがキャッシュメモリ１３４の当該ブロックの物理的障害などによるものである場合には、キャッシュメモリ１３４におけるリプライデータＲＤ２に訂正不能なエラーが検出されたとしても、メインメモリ１６４における、リプライデータＲＤ２に対応するデータが正しい可能性もある。
【００８３】
従って、リプライデータＲＤ２がブロックロードによりキャッシュメモリ１３４に格納された後にプロセッサ１１０によりデータ更新（Ｐｕｒｇｉｎｇ）がなされたものである場合においても、ステップＳ１２２の確認結果が「Ｙｅｓ」になった際に、当該ブロックを無効にすることにより、メインメモリ１６４から正しいデータを取り出せる可能性がある。
【００８４】
キャッシュメモリ１３４がライトバック方式のものである場合には、キャッシュメモリ１３４に対してプロセッサ１１０が書き込みを行うと、書き込まれたデータが必ずしもメインメモリ１６４にも書き戻されるとは限らないが、ステータスが「ダーティ」であるブロックからのリプライデータＲＤ２にエラーが検出された場合（図１０におけるステップＳ１２０：Ｙｅｓ）、ＳＷ命令実行部１１２が当該ブロックを無効にするために例えばインバリッド指示をすると、該ブロックのデータは下位レベルのメモリ（ここではキャッシュメモリ１３４）に書き戻されてしまう。そのため、ＳＷ命令処理を再開してキャッシュメモリ１３４に対してメモリリードを行っても、回復できる可能性がほぼ無い。
【００８５】
本願発明者は、上述した考察に基づき、ライトバック方式のキャッシュメモリにおいてリプライデータのエラーが検出された場合に、該リプライデータの付加情報に、「ダーティ」か「クリーン」かのステータス情報を加える技術を確立した。図１に示す情報処理装置１００におけるキャッシュメモリ１３４がライトバック方式のものであるとして説明する。
【００８６】
この場合においても、キャッシュメモリユニット１３０の第２の情報付加部１３８は、キャッシュヒット時にキャッシュメモリ１３４から出力されたリプライデータＲＤ２について、付加情報記憶部１３６にそれに対応する付加情報ＡＤＩ０が無い、または付加情報ＡＤＩ０が「エラーが無い」を示す場合に、リプライデータＲＤ２に対してエラー検出を行う。但し、エラーが検出された場合には、付加情報ＡＤＩ１に、リプライデータＲＤ２のブロックのステータスを示す情報を加える。
【００８７】
図１１と図１２は、キャッシュメモリ１３４がライトバック方式のものである場合における、付加情報ＡＤＩ０と付加情報ＡＤＩ１の例を示す。
【００８８】
図示のように、付加情報ＡＤＩ０と付加情報ＡＤＩ１は、エラー情報を示すビットと、場所情報を示すビットとに加え、さらに、ステータスを示す上位ビットを含む。該上位ビットは、エラー情報ビットと場所情報ビットが「１１」である場合においてのみ有効である。
【００８９】
例えば、図１１に示すように、付加情報ＡＤＩ０は、下位の２ビットが「００」である場合には「メインメモリ１６４においてエラーが検出されていない」を示し、下位の２ビットが「１０」である場合には、「メインメモリ１６４においてエラーが検出された」を示す。付加情報ＡＤＩ０の上位の１ビットは、無効ビットである。
【００９０】
また、図１２に示すように、付加情報ＡＤＩ１は、下位の２ビットが「００」である場合には「メインメモリ１６４においてエラーが検出されていない」を示し、下位の２ビットが「１０」である場合には、「メインメモリ１６４においてエラーが検出された」を示す。下位の２ビットが「００」または「１０」である場合には、付加情報ＡＤＩ１も、上位の１ビットが無効ビットである。
【００９１】
また、付加情報ＡＤＩ１は、下位の２ビットが「０１」である場合には「「キャッシュメモリ１３４においてエラーが検出されていない」を示す。この場合において、付加情報ＡＤＩ１の上位の１ビットが無効ビットである。
【００９２】
下位の２ビットが「１１」であり、すなわちキャッシュメモリ１３４においてエラーが検出された場合には、付加情報ＡＤＩ１の上位の１ビットが有効ビットとなる。「０１１」である付加情報ＡＤＩ１は、「キャッシュメモリ１３４においてエラーが検出され、当該ブロックがクリーンである」を示し、「１１１」である付加情報ＡＤＩ１は、「キャッシュメモリ１３４においてエラーが検出され、当該ブロックがダーティである」を示す。
【００９３】
図１３と図１４は、キャッシュメモリ１３４がライトバック方式のものである場合における、付加情報ＡＤＩ０と付加情報ＡＤＩ１の別の例を示す。
【００９４】
図１３と図１４に示す例においても、付加情報ＡＤＩ０と付加情報ＡＤＩ１は、３ビットを有し、上位からの順で各ビットが「ステータス」、「エラー情報」、」場所情報」を夫々示す。また、場所情報を示す下位ビットは、エラー情報を示すビットが「１」である場合においてのみ有効であり、ステータス情報を示す上位ビットは、下位の２ビットが「１１」である場合においてのみ有効である。
【００９５】
例えば、「０００」である付加情報ＡＤＩ０と付加情報ＡＤＩ１は、エラーが無いことを示す。この場合、場所情報とステータスを示すビットが無効ビットである。
【００９６】
また、「０１０」である付加情報ＡＤＩ０と付加情報ＡＤＩ１は、「メインメモリ１６４においてエラーが検出された」を示す。この場合、ステータスを示すビットが無効ビットである。
【００９７】
また、図１４に示すように、「０１１」である付加情報ＡＤＩ１は、「キャッシュメモリ１３４においてエラーが検出され、当該ブロックがクリーンである」を示し、「１１１」である付加情報ＡＤＩ１は、「キャッシュメモリ１３４においてエラーが検出され、当該ブロックがダーティである」を示す。
【００９８】
勿論、エラーがある場合における該エラーの検出場所が分かり、かつ、該エラーがキャッシュメモリにおいて検出された場合に当該ブロックのステータスが分かれば、付加情報ＡＤＩ０とＡＤＩ１は、図１１〜図１４に示す例に限ることがない。
【００９９】
プロセッサ１１０による、上述した付加情報ＡＤＩ０と付加情報ＡＤＩ１が含まれるリプライデータを受信した後の処理について、図１５のフローチャートを参照して説明する。なお、この処理は、図２におけるステップＳ１１０の処理である。
【０１００】
図１５において、図１０におけるステップと同様の処理については、同様のステップ番号を付与している。図１５と図１０を比較すると分かるように、図１５は、ステップＳ１２２とステップＳ１２４との間にステップＳ１３０が追加されている。
【０１０１】
すなわち、リプライデータＲＤ４が、キャッシュヒット時にキャッシュメモリユニット１３０から出力されるリプライデータＲＤ３であり、かつ、該リプライデータＲＤ３に含まれるデータ本体（リプライデータＲＤ２）がキャッシュメモリ１３４から出力される際に訂正不能なエラーが検出された場合（Ｓ１２２：Ｙｅｓ）、ＳＷ命令実行部１１２は、リプライデータＲＤ４に含まれる付加情報（ここでは付加情報ＡＤＩ１となる）に基づいて、当該ブロックのステータスが「ダーティ」と「クリーン」のいずれかを確認する（Ｓ１３０）。
【０１０２】
該ブロックのステータスが「ダーティ」である場合（Ｓ１３０：Ｙｅｓ）、ＳＷ命令実行部１１２は、ステップＳ１２６の処理を行い、すなわち、ＯＳに障害通知を行い、ＯＳに回復処理を委ねる。
【０１０３】
一方、該ブロックのステータスが「クリーン」である場合には（Ｓ１３０：Ｎｏ）、ＳＷ命令実行部１１２は、当該ブロックを無効化し、中断していたＳＷ命令処理を再開する（Ｓ１２４、Ｓ１１６）。
【０１０４】
前述したように、キャッシュヒット時にキャッシュメモリ１３４からのリプライデータＲＤ２からエラーが検出された場合、該データのブロックのステータスが「ダーティ」であると、該ブロックを無効にしてメインメモリ１６４に対してメモリリードをしても、正しいデータを得る可能性がほぼ無い。そのため、この場合において、直ちにＯＳに障害通知をし、ＯＳによりメインメモリ１６４の当該ページを無効化するなどを行ったほうが、キャッシュメモリ１３４の当該ブロックを無効化してメインメモリ１６４に対してメモリリードを行う場合より、迅速な回復が可能である。その結果、システムの効率をより高めることができる。
【０１０５】
情報処理装置１００において、リプライデータに対してエラー情報などを付加する情報付加部（第２の情報付加部１３８、第１の情報付加部１６６）は、キャッシュメモリユニット１３０とメインメモリユニット１６０にのみ設けられているが、これら以外に、リプライデータが転送する経路上の少なくとも１箇所にさらに情報付加部を設けてもよい。キャッシュメモリとメインメモリに対して設けられた情報付加部と区別するために、経路上に設けられた情報付加部を、第３の情報付加部という。
【０１０６】
第３の情報付加部は、転送されるリプライデータに付加された情報が「エラーがある」を示す場合に、該リプライデータとそれに付加された情報とをそのまま転送する。
【０１０７】
一方、転送されるリプライデータに付加された情報が「エラーが無い」を示す場合に、第３の情報付加部は、リプライデータに訂正不能なエラーがあるか否かを検出すると共に、該検出の結果を示すエラー情報と、該検出が行われた場所である前記箇所を示す場所情報とをリプライデータに付加して転送する。
【０１０８】
こうすることにより、プロセッサ１１０が受信したリプライデータにあるエラーは、メインメモリ、キャッシュメモリ、転送経路（例えばバス）のいずれによるものかを判断することができ、より適切に回復処理を行うことができる。
【０１０９】
さらに、この場合、転送経路と切り換えて使用可能な転送経路を設け、片方の転送経路によるエラーが生じた場合に、他方の転送経路に切り換えるように回復処理を行うようにすれば、より効率的な回復が可能になる。
【０１１０】
これらのことに関連して、図１６に示す情報処理装置２００を用いて説明する。情報処理装置２００に対して、図１に示す情報処理装置１００と同様のものについては同様の符号を付与すると共に、詳細な説明を省略する。
【０１１１】
情報処理装置２００は、プロセッサ２１０、キャッシュメモリユニット２３０、メインメモリユニット２６０を有し、プロセッサ２１０は、第１のバス１２０を介してキャッシュメモリユニット２３０と接続されており、第２のバス２５２または第２のバス２５４を介してメインメモリユニット２６０と接続されている。また、キャッシュメモリユニット２３０とメインメモリユニット２６０は、第２のバス２５２または第２のバス２５４を介して接続されている。
【０１１２】
プロセッサ２１０は、ＳＷ命令実行部１１２、メモリリクエスト制御部２１２、回復処理部２１４、第３の情報付加部２１６、切換部２１８を備える。
【０１１３】
キャッシュメモリユニット２３０は、ＲＳＴ受付部１３２、キャッシュメモリ１３４、付加情報記憶部１３６、第２の情報付加部１３８、ＲＤ出力部１４０、切換部２３２、第３の情報付加部２３４を備える。
【０１１４】
メインメモリユニット２６０は、ＲＳＴ受付部１６２、メインメモリ１６４、第１の情報付加部１６６、ＲＤ出力部１６８、切換部２６２を備える。
【０１１５】
情報処理装置２００について、情報処理装置１００と異なる点を重点的に説明する。
【０１１６】
第２のバス２５２と第２のバス２５４は、選択的に使用され、それらの切換えは、プロセッサ２１０からの後述する切換制御信号ＣＴＲにより制御される。ここで、第２のバス２５２が使用されていると仮定して説明を進める。
【０１１７】
メインメモリユニット２６０は、切換部２６２を備え、ＲＤ出力部１６８がリプライデータＲＤ１を切換部２６２に出力する点を除き、図１に示す情報処理装置１００におけるメインメモリユニット１６０と同様である。
【０１１８】
切換部２６２は、第２のバス２５２と第２のバス２５４の両方に接続されており、プロセッサ２１０から切換制御信号ＣＴＲを受信するまで、現在使用中のバス（ここでは第２のバス２５２）からメモリリクエストＲＳＴを取り込んでＲＳＴ受付部１６２に出力すると共に、ＲＤ出力部１６８からのリプライデータＲＤ１を第２のバス２５２に出力する。
【０１１９】
切換制御信号ＣＴＲを受信した場合、切換部２６２は、バスの切換えを行い、ここでは、使用するバスを第２のバス２５２から第２のバス２５４に切り換え、第２のバス２５４からメモリリクエストＲＳＴを取り込んでＲＳＴ受付部１６２に出力すると共に、ＲＤ出力部１６８からのリプライデータＲＤ１を第２のバス２５４に出力する。
【０１２０】
キャッシュメモリユニット２３０は、切換部２３２と第３の情報付加部２３４を備え、メインメモリユニット２６０からのリプライデータＲＤ１が切換部２３２を介してキャッシュメモリ１３４にブロックロードされ、付加情報記憶部１３６には第３の情報付加部２３４により付加した付加情報ＡＤＩ２が出力される点を除き、図１に示す情報処理装置１００におけるキャッシュメモリユニット１３０と同様である。
【０１２１】
切換部２３２は、第２のバス２５２と第２のバス２５４の両方に接続されており、プロセッサ２１０から切換制御信号ＣＴＲを受信するまで、現在使用中のバス（ここでは第２のバス２５２）からリプライデータＲＤ１を取り込んでキャッシュメモリ１３４と第３の情報付加部２３４に出力する。
【０１２２】
切換制御信号ＣＴＲを受信した場合、切換部２３２は、バスの切換えを行い、ここでは、使用するバスを第２のバス２５２から第２のバス２５４に切り換え、第２のバス２５４からリプライデータＲＤ１を取り込んでキャッシュメモリ１３４と第３の情報付加部２３４に出力する。
【０１２３】
第３の情報付加部２３４は、切換部２３２からのリプライデータＲＤ１に含まれる付加情報ＡＤＩ０が「エラーがある」を示す場合に、付加情報ＡＤＩ０をそのまま付加情報ＡＤＩ２として付加情報記憶部１３６に出力する。一方、リプライデータＲＤ１に含まれる付加情報ＡＤＩ０が「エラーが無い」を示す場合に、リプライデータＲＤ１に含まれるデータ本体（リプライデータＲＤ０）にエラーがあるか否かの検出を行い、検出の結果を示すエラー情報と、該検出が行われた場所を示す場所情報とを付加情報ＡＤＩ２として付加情報記憶部１３６に出力する。なお、ここでの場所情報は、第２のバス２５２と第２のバス２５４のうちの使用中のバスを示すものとなる。
【０１２４】
第２の情報付加部１３８は、情報処理装置１００のときに説明したように、キャッシュメモリ１３４が出力したリプライデータＲＤ２に対応する付加情報（ここでは付加情報ＡＤＩ２）が付加情報記憶部１３６に記憶されていない場合、または、付加情報記憶部１３６に記憶されているが「エラーが無い」を示す場合に、リプライデータＲＤ２にエラーがあるか否かの検出を行うと共に、検出の結果を示すエラー情報と、該検出が行われた場所（キャッシュメモリ１３４）を示す場所情報とを付加情報ＡＤＩ１としてＲＤ出力部１４０に出力する。一方、付加情報記憶部１３６に記憶されている付加情報ＡＤＩ２が「エラーがある」を示す場合には、第２の情報付加部１３８は、付加情報ＡＤＩ２をそのまま付加情報ＡＤＩ１としてＲＤ出力部１４０に出力する。
【０１２５】
すなわち、情報処理装置２００において、第２の情報付加部１３８がＲＤ出力部１４０に出力する付加情報ＡＤＩ１は、付加情報ＡＤＩ２と同様である場合がある。また、付加情報ＡＤＩ２は、付加情報ＡＤＩ０と同様である場合がある。
【０１２６】
プロセッサ２１０は、第３の情報付加部２１６と切換部２１８を備える点と、回復処理部２１４がＳＷ命令実行部１１２に行わせる回復処理が、図１に示す情報処理装置１００におけるプロセッサ１１０の回復処理部１１４がＳＷ命令実行部１１２に行わせる回復処理とが異なる点と、メモリリクエスト制御部２１２が切換制御信号ＣＴＲを出力可能である点とを除き、プロセッサ１１０と同様である。
【０１２７】
プロセッサ２１０において、メモリリクエスト制御部２１２は、メインメモリ１６４へ出すメモリリクエストＲＳＴを切換部２１８に出力する。
【０１２８】
切換部２１８は、第２のバス２５２と第２のバス２５４の両方に接続されており、メモリリクエスト制御部２１２から切換制御信号ＣＴＲを受信するまで、現在使用中のバス（ここでは第２のバス２５２）にメモリリクエストＲＳＴを出力すると共に、該バスからリプライデータＲＤ１を取り込んで第３の情報付加部２１６に出力する。
【０１２９】
メモリリクエスト制御部２１２から切換制御信号ＣＴＲを受信した場合、切換部２１８は、バスの切換えを行い、ここでは、使用するバスを第２のバス２５２から第２のバス２５４に切り換え、第２のバス２５４にメモリリクエストＲＳＴを出力すると共に、該バスからリプライデータＲＤ１を取り込んで第３の情報付加部２１６に出力する。
【０１３０】
第３の情報付加部２１６は、キャッシュヒット時にキャッシュメモリユニット２３０からリプライデータＲＤ３が入力され、キャッシュミス時に切換部２１８からリプライデータＲＤ１が入力される。第３の情報付加部２１６は、入力されたリプライデータに含まれるデータ本体（リプライデータＲＤ０またはリプライデータＲＤ２）に対して付加情報ＡＤＩ３を付加してメモリリクエスト制御部２１２に出力する。第３の情報付加部２１６からメモリリクエスト制御部２１２に出力されるデータを、リプライデータＲＤ５と表記する。
【０１３１】
具体的には、第３の情報付加部２１６は、リプライデータＲＤ３またはリプライデータＲＤ１に含まれる付加情報（ＡＤＩ０またはＡＤＩ１）が「エラーがある」を示す場合に、該付加情報をそのまま付加情報ＡＤＩ３として付加する。一方、リプライデータＲＤ３またはリプライデータＲＤ１に含まれる付加情報が「エラーが無い」を示す場合に、該リプライデータに含まれるデータ本体（リプライデータＲＤ０またはリプライデータＲＤ２）にエラーがあるか否かの検出を行い、検出の結果を示すエラー情報と、該検出が行われた場所を示す場所情報とを付加情報ＡＤＩ３として付加する。
【０１３２】
なお、ここで、エラーが検出された場合に、場所情報は、第２のバス２５２と第２のバス２５４のうちの使用中のバスと、第１のバス１２０とのいずれであるかを示す必要がある。そのため、エラーが検出された場合に、第３の情報付加部２１６は、切換部２１８からのリプライデータＲＤ１に含まれるデータ本体に対しては、第２のバス２５２と第２のバス２５４のうちの使用中のバスを示す情報を場所情報として付加し、キャッシュメモリユニット２３０からのリプライデータＲＤ３に含まれるデータ本体に対しては、第１のバス１２０を示す情報を場所情報として付加する。
【０１３３】
このように、情報処理装置２００において、メモリリクエスト制御部２１２に返送されるリプライデータ（リプライデータＲＤ５）には、エラーがあるか否かを示すエラー情報と、エラーがある場合に該エラーがどこで検出されたかを示す場所情報とが含まれている。また、場所情報は、メインメモリ１６４、キャッシュメモリ１３４、第２のバス２５２と第２のバス２５４のうちの使用中のバス、第１のバス１２０のいずれか１つを示す。
【０１３４】
図１７は、情報処理装置２００において、リプライデータに含まれる付加情報（付加情報ＡＤＩ０、付加情報ＡＤＩ１、付加情報ＡＤＩ２、付加情報ＡＤＩ３）のフォーマットの一例を示す。なお、これは、キャッシュメモリ１３４のデータ更新方式がライトバックである場合の例であり、この例において、エラーがキャッシュメモリユニット２３０において検出された場合に、当該リプライデータに対応するブロックのステータス情報も付加情報に含まれる。
【０１３５】
図示のように、情報処理装置２００において、付加情報は、４ビットを有し、上位の１ビットは、ステータスを示すビットであり、下位の３ビットは、エラー情報と場所情報を示すビットである。なお、上位の１ビットは、キャッシュメモリ１３４においてエラーが検出された場合（付加情報の下位３ビットが「０１１」である場合）においてのみ有効である。勿論、付加情報のフォーマットは、図１７に示す例に限られることがない。
【０１３６】
付加情報「００００」は、エラーが無いことを示す。
メインメモリユニット２６０から出力されるリプライデータＲＤ１に含まれる付加情報ＡＤＩ０は、「００００」と「０００１」のいずれか一方であり、「０００１」は、メインメモリ１６４からのリプライデータＲＤ０にエラーが検出されたことを示す。
【０１３７】
第３の情報付加部２３４が出力する付加情報ＡＤＩ２は、「００００」、「０００１」、「００１０」のいずれか一方である。「００１０」は、第２のバス２５２と第２のバス２５４のうちの使用中のバスにおいてエラーが検出されたことを示す。
【０１３８】
付加情報ＡＤＩ１は、「００００」、「０００１」、「００１０」、「００１１」、「１０１１」のいずれか一方である。「００１１」は、キャッシュメモリ１３４からのリプライデータＲＤ２においてエラーが検出され、かつリプライデータＲＤ２に対応するブロックのステータスが「クリーン」であることを示す。一方、「１０１１」は、キャッシュメモリ１３４からのリプライデータＲＤ２においてエラーが検出され、かつリプライデータＲＤ２に対応するブロックのステータスが「ダーティ」であることを示す。
【０１３９】
付加情報ＡＤＩ３は、上述した付加情報ＡＤＩ０、ＡＤＩ１、ＡＤＩ２のとりうる各値以外に、「０１００」になる可能性がある。「０１００」である付加情報ＡＤＩ３は、第１のバス１２０においてエラーが検出されたことを示す。
【０１４０】
ここで、プロセッサ２１０における第３の情報付加部２１６が、キャッシュメモリユニット２３０またはメインメモリユニット２６０からのリプライデータ（ＲＤ１またはＲＤ３）を受信してメモリリクエスト制御部２１２にリプライデータＲＤ５を出力した後の処理を説明する。この処理は、図１５が示す、情報処理装置１００のプロセッサ１１０がリプライデータを受信した際の処理（ステップＳ１１０の処理）に対応し、比較しやすいように、該処理を、図２におけるステップＳ１１０の処理として説明する。
【０１４１】
図１７は、第３の情報付加部２１６がリプライデータＲＤ３をメモリリクエスト制御部２１２に出力した後にプロセッサ２１０にて行われる処理の一例を示すフローチャートである。
【０１４２】
メモリリクエスト制御部２１２は、第３の情報付加部２１６からリプライデータＲＤ５を受信すると、該リプライデータＲＤ５を回復処理部２１４に出力する。回復処理部２１４は、メモリリクエスト制御部２１２からのリプライデータＲＤ５に含まれる付加情報ＡＤＩ３を参照して、エラーの有無を確認する（Ｓ２１０）。
【０１４３】
付加情報ＡＤＩ３が「エラーが無い」を示す場合、すなわち付加情報ＡＤＩ３が「００００」である場合（Ｓ２１０：Ｎｏ）に、回復処理部２１４は、メモリリクエスト制御部２１２にリプライデータＲＤ５をそのまま返送する（Ｓ２１４）。
【０１４４】
メモリリクエスト制御部２１２は、回復処理部２１４から返送されたリプライデータＲＤ５をＳＷ命令実行部１１２に出力し、ＳＷ命令実行部１１２は、メモリリクエストＲＳＴを出力した際に中断していたＳＷ命令処理を再開し、リプライデータＲＤ５に含まれるデータ本体（リプライデータＲＤ０またはリプライデータＲＤ２）を用いて処理を実行する（Ｓ２１６）。
【０１４５】
一方、ステップ２１０において、リプライデータＲＤ５に含まれる付加情報ＡＤＩ３が「エラーが有る」を示す場合、すなわち付加情報ＡＤＩ３が「００００」以外である場合（Ｓ２１２：Ｙｅｓ）に、回復処理部２１４は、ＳＷ命令実行部１１２に割込要求ＩＲを出力し、中断していたＳＷ命令処理に、ステップＳ２２２からの回復処理を割り込ませる（Ｓ２２０、Ｓ２２２〜）。
【０１４６】
ＳＷ命令実行部１１２は、回復処理部２１４からの命令を実行することにより回復処理を行う。具体的には、ＳＷ命令実行部１１２は、まず、付加情報ＡＤＩ３が「第１のバス１２０においてエラーが検出された」を示す場合、すなわち付加情報ＡＤＩ３が「０１００」である場合（Ｓ２２２：Ｙｅｓ）、中断していたＳＷ命令処理を再開する（Ｓ２１６）。これにより、プロセッサ２１０がメモリリードをリトライする。
【０１４７】
付加情報ＡＤＩ３が「第２のバス２５２と第２のバス２５４のうちの使用中のバスにおいてエラーが検出された」を示す場合、すなわち付加情報ＡＤＩ３が「００１０」である場合（Ｓ２２２：Ｎｏ、Ｓ２２４：Ｙｅｓ）、ＳＷ命令実行部１１２は、メモリリクエスト制御部２１２に切換制御信号ＣＴＲを発行させる（Ｓ２２６）。これにより、切換制御信号ＣＴＲがプロセッサ２１０における切換部２１８、キャッシュメモリユニット２３０における切換部２３２、メインメモリユニット２６０における切換部２６２に出力され、これらの切換部は、第２のバス２５２と第２のバス２５４のうちの使用中の一方のバスを他方に切り換える。
【０１４８】
そして、ＳＷ命令実行部１１２は、中断していたＳＷ命令処理を再開し、メモリリードをリトライする（Ｓ２１６）。エラーの原因となるバスは、別のバスに切り替わったので、リトライしたメモリリードにより、メインメモリ１６４から正しいデータを取得することができる。
【０１４９】
付加情報ＡＤＩ３が「キャッシュメモリ１３４においてエラーが検出された」を示す場合、すなわち付加情報ＡＤＩ３の下位３ビットが「０１１」である場合（Ｓ２２２：Ｎｏ、Ｓ２２４：Ｎｏ、Ｓ２３０：Ｙｅｓ）に、ＳＷ命令実行部１１２は、さらに付加情報ＡＤＩ３の上位１ビットが示すステータス情報を確認する（Ｓ２３４）。
【０１５０】
ステータス情報が「クリーン」を示す場合、すなわち付加情報ＡＤＩ３の上位１ビットが「０」である場合、ＳＷ命令実行部１１２は、当該ブロックを無効化すると共に、中断していたＳＷ命令処理を再開する（Ｓ２３４：Ｎｏ、Ｓ２３６、Ｓ２１６）。
【０１５１】
一方、ステータス情報が「ダーティ」を示す場合、すなわち付加情報ＡＤＩ３の上位１ビットが「１」である場合、ＳＷ命令実行部１１２は、ＯＳに障害通知を行い、ＯＳに回復処理を委ねる（Ｓ２３４：Ｙｅｓ、Ｓ２４０）。
【０１５２】
また、付加情報ＡＤＩ３が「メインメモリ１６４においてエラーが検出された」を示す場合、すなわち付加情報ＡＤＩ３が「０００１」である場合に、ＳＷ命令実行部１１２は、ＯＳに障害通知を行い、ＯＳに回復処理を委ねる（Ｓ２３０：Ｎｏ、Ｓ２４０）。
【０１５３】
このように、情報処理装置２００は、メインメモリユニット１６０とキャッシュメモリユニット２３０に夫々設けられた第１の情報付加部１６６と第２の情報付加部１３８以外に、第２のバス２５２と第２のバス２５４上を転送されるリプライデータに対してエラーの検出と情報の付加を行う第３の情報付加部２３４と第３の情報付加部２１６を備える。そのため、メインメモリ１６４とキャッシュメモリ１３４の索引障害以外に、バスの障害も検出することができ、より適切な回復処理が可能になる。
【０１５４】
また、選択的に使用される第２のバス２５２と第２のバス２５４を設け、エラー情報に応じて切り換えるようにしているので、第２のバスの障害から迅速に回復することができる。
【０１５５】
なお、分かりやすいように、情報処理装置２００に対して、メインメモリ１６４がリプライデータを出力するバス（第２のバス）を冗長に設けているが、キャッシュメモリ１３４がリプライデータを出力するバス（第１のバス１２０）に対しても代替可能な別のバスを設けるようにしてもよい。
【０１５６】
以上の説明を踏まえて、本発明の具体的な実施の形態を説明する。
図１９は、本発明の実施の形態にかかるマルチプロセッサシステム３００を示す。マルチプロセッサシステム３００は、複数（図示の例では３つ）のプロセッサユニット３０２と、２次キャッシュメモリユニット３５０と、メインメモリユニット３７０を備える。各プロセッサユニット３０２は、１次キャッシュメモリユニット３３０が内蔵されており、バス３４０を介して２次キャッシュメモリユニット３５０と接続され、２次キャッシュメモリユニット３５０を介してメインメモリユニット３７０と接続されている。２次キャッシュメモリユニット３５０は、バス３６０を介してメインメモリユニット３７０と接続されている。
【０１５７】
１次キャッシュメモリユニット３３０に備えられるキャッシュメモリ（図示しない１次キャッシュメモリ）のデータ更新方式は、ライトスルーである。２次キャッシュメモリユニット３５０に備えられるキャッシュメモリ（図示しない２次キャッシュメモリ）は、データ更新方式がライトバックであり、キャッシュ・コヒーレンシのプロトコルとしてはライン・インバリデート方式が用いられている。
【０１５８】
図２０は、マルチプロセッサシステム３００におけるプロセッサユニット３０２、及びマルチプロセッサシステム３００の各機能ブロック間のデータの受渡しを詳細に示す図である。分かりやすいように、プロセッサユニット３０２について、１つのみを示すと共に、プロセッサユニット３０２から出すメモリリクエストについては省略する。
【０１５９】
図示のように、プロセッサユニット３０２は、プロセッサ３１０と１次キャッシュメモリユニット３３０を備え、プロセッサ３１０は、ＳＷ命令実行部３１２、回復処理部３１４、メモリリクエスト制御部３１６、第３の情報付加部３２０を有する。
【０１６０】
図２１は、プロセッサ３０２がメモリリードに際しての動作の流れを示すフローチャートである。プロセッサユニット３０２のＳＷ命令実行部３１２は、ＳＷ命令を実行している中で、メモリデータをリードする必要があるときに、メモリリクエスト制御部３１６にリクエスト要求ＲＳＴＲを出力する。これに伴って、ＳＷ命令実行部３１２は、ＳＷ命令の実行を一時中断する。メモリリクエスト制御部３１６は、ＳＷ命令実行部３１２からのリクエスト要求ＲＳＴＲに応じて、メモリリクエストを１次キャッシュメモリユニット３３０に出力する（Ｓ３００）。キャッシュヒットした場合（Ｓ３０２：Ｙｅｓ）、メモリリクエストに応じて１次キャッシュメモリユニット３３０からリプライデータＲＤ１６がプロセッサ３１０に出力され、プロセッサ３１０は、リプライデータ受信後の処理を行う（Ｓ３１０）。
【０１６１】
一方、ステップＳ３０２において、１次キャッシュメモリでキャッシュミスした場合（Ｓ３０２：Ｎｏ）、メモリリクエスト制御部３１６は、２次キャッシュメモリへ発行するメモリリクエストをバス３４０に出力する（Ｓ３０４）。
【０１６２】
２次キャッシュメモリでキャッシュヒットした場合（Ｓ３０６：Ｙｅｓ）、メモリリクエストに応じて２次キャッシュメモリユニット３５０からリプライデータＲＤ１３がバス３４０を介してプロセッサ３１０に転送され、プロセッサ３１０は、リプライデータ受信後の処理を行う（Ｓ３１０）。
【０１６３】
なお、この場合、２次キャッシュメモリユニット３５０からプロセッサ３１０へ転送されるリプライデータＲＤ１３は、１次キャッシュメモリユニット３３０にも転送され、１次キャッシュメモリユニット３３０は、このリプライデータＲＤ１３ブロックロードを行う。
【０１６４】
一方、ステップＳ３０６において、２次キャッシュメモリでキャッシュミスした場合（Ｓ３０６：Ｎｏ）、メモリリクエスト制御部３１６は、メインメモリへ発行するメモリリクエストをバス３６０に出力する（Ｓ３０８）。このメモリリクエストに応じてメインメモリユニット３７０からリプライデータＲＤ１１がバス３６０を介してプロセッサ３１０に転送され、プロセッサ３１０は、リプライデータ受信後の処理を行う（Ｓ３１０）。
【０１６５】
なお、この場合、メインメモリユニット３７０からプロセッサ３１０へ転送されるリプライデータＲＤ１１は、２次キャッシュメモリユニット３５０にも転送され、２次キャッシュメモリユニット３５０は、このリプライデータＲＤ１１でブロックロードを行う。
【０１６６】
本実施の形態のマルチプロセッサシステム３００において、メインメモリユニット３７０は、図１に示す情報処理装置１００におけるメインメモリユニット１６０と同様に動作する。具体的には、メインメモリユニット３７０は、メモリリクエストに応じてプロセッサ３１０に転送するリプライデータの本体（リプライデータＲＤ１０という）を出力する際に、エラーの検出を行うと共に、検出の結果を示すエラー情報と、場所情報とからなる付加情報ＡＤＩ１１を付加する。
【０１６７】
２次キャッシュメモリユニット３５０は、キャッシュミス時に、リプライデータＲＤ１１でブロックロードする際に、リプライデータＲＤ１１に含まれるデータ本体（リプライデータＲＤ１０）を図示しない２次キャッシュメモリの該当するブロックに格納すると共に、リプライデータＲＤ１１に含まれる付加情報ＡＤＩ１０が「エラーがある」と「エラーが無い」のいずれを示すかを確認する。
【０１６８】
付加情報ＡＤＩ１０が「エラーがある」を示す場合に、２次キャッシュメモリユニット３５０は、該付加情報ＡＤＩ１０をそのまま記憶しておく。一方、付加情報付加情報ＡＤＩ１０が「エラーが無い」を示す場合に、２次キャッシュメモリユニット３５０は、該リプライデータＲＤ１０に対してエラーの有無の検出を行うと共に、検出の結果を示すエラー情報と場所情報とからなる付加情報を記憶しておく。この場合、記憶された付加情報は、「バス３６０にてエラーが検出された否か」を示すことになる。
【０１６９】
キャッシュヒット時に、２次キャッシュメモリユニット３５０は、図示しない２次キャッシュメモリからリプライデータ（リプライデータＲＤ１２という）を出力する際に、該リプライデータＲＤ１２に対応する付加情報が記憶されており、かつ、該付加情報が「メインメモリにおいてエラーが検出された」または「バス３６０においてエラーが検出された」を示す場合に、記憶していた付加情報をそのまま付加情報ＡＤＩ１１として付加する。一方、付加情報が無い、または、付加情報が「エラーが無い」を示す場合には、２次キャッシュメモリユニット３５０は、リプライデータＲＤ１２に対してエラーの有無の検出を行うと共に、検出の結果を示すエラー情報と、場所情報と、当該ブロックのステータス情報とを付加情報ＡＤＩ１１として付加する。
【０１７０】
１次キャッシュメモリユニット３３０は、データ更新方式がライトスルーであるため、キャッシュヒット時にリプライデータ１５を出力する際にエラーが検出された場合に、ステータス情報を付加しない点を除き、２次キャッシュメモリユニット３５０と同様である。
【０１７１】
１次キャッシュメモリのキャッシュミス時に２次キャッシュメモリユニット３５０からプロセッサ３１０に出力されたリプライデータＲＤ１３、または１次キャッシュメモリと２次キャッシュメモリが共にキャッシュミス時にメインメモリユニット３７０からプロセッサ３１０に出力されたリプライデータＲＤ１１は、まず、プロセッサ３１０の第３の情報付加部３２０に入力される。
【０１７２】
第３の情報付加部３２０は、入力されたリプライデータに含まれる付加情報が「エラーがある」を示す場合に、該付加情報をそのまま付加情報ＡＤＩ１２としてデータ本体に付加してメモリリクエスト制御部３１６に出力する。なお、データ本体は、リプライデータＲＤ１０とリプライデータＲＤ１２のいずれか一方である。
【０１７３】
一方、入力されたリプライデータに含まれる付加情報が「エラーが無い」を示す場合に、第３の情報付加部３２０は、該リプライデータに含まれるデータ本体に対してエラーの有無の検出を行い、検出の結果を示すエラー情報と、場所情報とを付加情報ＡＤＩ１２としてデータ本体に付加してメモリリクエスト制御部３１６に出力する。この場合の付加情報ＡＤＩ１２は、「バス３４０にてエラーが検出された否か」または「２次キャッシュメモリユニット３５０にてエラーが検出されたか否か」を示すことになる。
【０１７４】
図３は、キャッシュミスの場合（図２のステップＳ１０２：Ｎｏ）に、メインメモリユニット１６０がプロセッサ１１０からメモリリクエストＲＳＴを受信した際の動作の流れを示すフローチャートである。
【０１７５】
ここで、本実施の形態のマルチプロセッサシステム３００において使用される付加情報のフォーマットを説明する。付加情報（ＡＤＩ１０、ＡＤＩ１１、ＡＤＩ１２、ＡＤＩ１３）は、「エラーが検出されたか否か」と、エラーが検出された場合には、「メインメモリ、２次キャッシュメモリ、１次キャッシュメモリ、バス３６０、バス３４０のいずれで検出されたか」と、２次キャッシュメモリで検出された場合には、「当該ブロックのステータスがダーティであるかクリーンであるか」とを示す。図２２は、それらのフォーマットの例を示す。
【０１７６】
図２２に示す例では、付加情報は、５ビットを有し、上位の１ビット目がステータスを示すビットであり、上位の２ビット目がエラー情報を示すビットであり、下位の３ビットが場所情報を示すビットである。なお、上位の１ビットは、２次キャッシュメモリにおいてエラーが検出された場合（付加情報の下位４ビットが「１０１０」である場合）においてのみ有効である。勿論、付加情報のフォーマットは、図２２に示す例に限られることがない。
【０１７７】
具体的には、付加情報「０００００」は、エラーが無いことを示す。
付加情報「０１０００」は、１次キャッシュメモリ索引でエラーが検出されたことを示す。
付加情報「０１００１」は、バス３４０でエラーが検出されたことを示す。
付加情報「０１０１０」は、２次キャッシュメモリでエラーが検出され、当該ブロックのステータスが「クリーン」であることを示す。
付加情報「１１０１０」は、２次キャッシュメモリでエラーが検出され、当該ブロックのステータスが「ダーティ」であることを示す。
付加情報「０１０１１」は、バス３６０でエラーが検出されたことを示す。
付加情報「０１１００」は、メインメモリでエラーが検出されたことを示す。
【０１７８】
プロセッサ３１０が受信するリプライデータには、データ本体以外に、上述したいずれかの付加情報が含まれており、プロセッサ３１０は、付加情報に基づいて、図２１におけるステップＳ３１０の「リプライデータ受信後処理」を行う。これについて、図２３のフローチャートを参照して説明する。
【０１７９】
メモリリクエスト制御部３１６は、第３の情報付加部３２０からリプライデータＲＤ１４、または１次キャッシュメモリユニット３３０からリプライデータＲＤ１６を受信すると、当該リプライデータを回復処理部３１４に出力する。回復処理部３１４は、メモリリクエスト制御部３１６からのリプライデータ（リプライデータＲＤ１７）に含まれる付加情報（付加情報ＡＤＩ１２または付加情報ＡＤＩ１３）を参照して、エラーの有無を確認する（Ｓ３１２）。
【０１８０】
付加情報が「エラーが無い」を示す場合、すなわち付加情報が「０００００」である場合（Ｓ３１２：Ｎｏ）に、回復処理部３１４は、後述するリトライ回数ｎを「０」にリセットすると共に、メモリリクエスト制御部３１６にリプライデータＲＤ１７をそのまま返送する（Ｓ３１４、Ｓ３１６）。なお、回復処理部３１４には、図示しない、リトライ回数ｎを格納するレジスタが設けられている。
【０１８１】
メモリリクエスト制御部３１６は、回復処理部３１４から返送されたリプライデータＲＤ１７をＳＷ命令実行部３１２に出力し、ＳＷ命令実行部３１２は、メモリリクエストを出力した際に中断していたＳＷ命令処理を再開し、リプライデータＲＤ１７に含まれるデータ本体を用いて処理を実行する（Ｓ３１８）。
【０１８２】
一方、ステップ３１２において、リプライデータＲＤ１７に含まれる付加情報が「エラーが有る」を示す場合、すなわち付加情報の上位２ビット目が「１」である場合（Ｓ３１２：Ｙｅｓ）に、回復処理部３１４は、ＳＷ命令実行部３１２に割込要求ＩＲを出力し、中断していたＳＷ命令処理に、ステップＳ３３０からの回復処理を割り込ませる（Ｓ３２０、Ｓ３３０〜）。
【０１８３】
回復処理に当たり、回復処理部３１４は、まず、リトライ回数ｎが所定の閾値に達したか否かを確認する（Ｓ３３０）。この閾値は、予め設定された１以上の整数である。
【０１８４】
本実施の形態において、プロセッサ３１０は、受信したリプライデータにエラーがあるときに、該エラーがソフトウェアエラーであることに備え、どこでエラーが生じたかを確認する前に、メモリリクエストを再発行してメモリリードをリトライする。リトライ回数ｎは、このリトライの回数の上限値である。
【０１８５】
図２３に示すように、回復処理部３１４は、リトライ回数ｎが閾値より小さいときに、ｎを１つインクリメントし（Ｓ３３０：Ｎｏ、Ｓ３３２）、ＳＷ命令実行部３１２にＳＷ命令処理を再開させる（Ｓ３３４）。これにより、ＳＷ命令実行部３１２からリクエスト要求ＲＳＴＲが再度出力され、メモリリクエスト制御部３１６からメモリリクエストが再度発行される。
【０１８６】
リトライの回数がリトライ回数ｎに達してもリプライデータにエラーがある場合に（Ｓ３３０：Ｙｅｓ）、ＳＷ命令実行部３１２は、リプライデータＲＤ１７に含まれる付加情報を参照して、エラーがどこで検出されたかを確認する。付加情報が「バス３４０でエラーが検出された」を示す場合（すなわち付加情報が「０１００１」である場合）（Ｓ３４０：Ｙｅｓ）、または、付加情報が「バス３６０でエラーが検出された」を示す場合（すなわち付加情報が「０１０１１」である場合）（Ｓ３４０：Ｎｏ、Ｓ３４２：Ｙｅｓ）、ＳＷ命令実行部３１２は、リトライをしても回復できる可能性が少ないので、ＳＷ命令実行部３１２は、ＯＳに障害通知を行い、ＯＳに回復処理を委ねる（Ｓ３７０）。これにより、ＯＳによる回復処理が行われる（Ｓ３８０）。
【０１８７】
付加情報が「１次キャッシュ索引でエラーが検出された」を示す場合（すなわち付加情報が「０１０００」である場合）（Ｓ３４０：Ｎｏ、Ｓ３４２：Ｎｏ、Ｓ３５０：Ｙｅｓ）、ＳＷ命令実行部３１２は、１次キャッシュメモリユニット３３０に備えられた１次キャッシュメモリの当該ブロックを無効化した上で、中断していたＳＷ命令処理を再開する（Ｓ３５２、Ｓ３３４）。
【０１８８】
１次キャッシュメモリのデータ更新方式がライトスルーであるため、１次キャッシュメモリの当該ブロックを無効化するだけでキャッシュのコヒーレンシを維持できる。また、１次キャッシュメモリの当該ブロックを無効化してＳＷ命令処理を再開することにより、１次キャッシュメモリでキャッシュミスとなり、２次キャッシュメモリユニット３５０に備えられる２次キャッシュメモリに対してメモリリクエストが出され、２次キャッシュメモリから正しいデータを取り出すことができる。
【０１８９】
リプライデータＲＤ１７に含まれる付加情報が「２次キャッシュメモリ索引でエラーが検出され、当該ブロックのステータスがクリーンである」を示す場合（すなわち付加情報が「０１０１０」である場合）（Ｓ３４０：Ｎｏ、Ｓ３４２：Ｎｏ、Ｓ３５０：Ｎｏ、Ｓ３６０：Ｙｅｓ、Ｓ３６２：Ｎｏ）、ＳＷ命令実行部３１２は、２次キャッシュメモリに対してインバリッド指示を発行して当該ブロックを無効化した上で、中断していたＳＷ命令処理を再開する（Ｓ３６４、Ｓ３３４）。
【０１９０】
２次キャッシュメモリのデータ更新方式がライトバックであるため、当該ブロックのステータスが「クリーン」である場合には、該ブロックのデータと、下位レベルのメモリ（ここではメインメモリ）との対応するデータとが一致する。また、１次キャッシュメモリのデータ更新方式がライトスルーであるため、２次キャッシュメモリの当該ブロックを無効すると、１次キャッシュメモリの対応するブロックも無効化される。そのため、２次キャッシュメモリの当該ブロックを無効化してＳＷ命令処理を再開すると、１次キャッシュメモリと２次キャッシュメモリのいずれもキャッシュミスとなるため、メインメモリにメモリリクエストが発行され、メインメモリから正しいデータを読み出すことが可能である。
【０１９１】
リプライデータＲＤ１７に含まれる付加情報が「２次キャッシュメモリ索引でエラーが検出され、当該ブロックのステータスがダーティである」を示す場合（すなわち付加情報が「１１０１０」である場合）（Ｓ３４０：Ｎｏ、Ｓ３４２：Ｎｏ、Ｓ３５０：Ｎｏ、Ｓ３６０：Ｙｅｓ、Ｓ３６２：Ｙｅｓ）、ＳＷ命令実行部３１２が２次キャッシュメモリにインバリッド指示を発行して当該ブロックを無効にすると、当該ブロックのデータは、２次キャッシュメモリから追い出されるが、メインメモリに書き戻されてしまう。この場合、エラーのあるデータはメインメモリに反映されてしまうため、ＳＷ命令処理を再開しても回復することができなくなってしまう。
【０１９２】
そのため、リプライデータＲＤ１７に含まれる付加情報が「２次キャッシュメモリ索引でエラーが検出され、当該ブロックのステータスがダーティである」を示す場合（Ｓ３４０：Ｎｏ、Ｓ３４２：Ｎｏ、Ｓ３５０：Ｎｏ、Ｓ３６０：Ｙｅｓ、Ｓ３６２：Ｙｅｓ）、ＳＷ命令実行部３１２は、ＯＳに障害通知を行い、ＯＳに回復処理を委ねる（Ｓ３７０、Ｓ３８０）。
【０１９３】
この場合、ＯＳに処理を委ねることで、ジョブのアボート処理やロールバック処理などにより、メインメモリの当該ページを無効化することができ、プロセッサユニット３０２を「プロセッサチェック」状態にせずに回復できる可能性がある。
【０１９４】
本実施の形態のマルチプロセッサシステム３００は、情報処理装置１００と情報処理装置２００を用いて説明した技術を、２次キャッシュメモリを備えたマルチプロセッサシステムに適用したものであり、これらの技術による効果を得ることができる。
【０１９５】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述実施の形態に対して、さまざまな変更、増減、組合せを加えてもよい。これらの変更、増減、組合せが加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
【０１９６】
例えば、マルチプロセッサシステム３００において、リプライデータの転送経路（バス３４０またはバス３６０）に対して冗長経路を設け、該転送経路上にエラーが検出された場合に、リプライデータの転送経路を冗長経路に切り換えるようにしてもよい。
【０１９７】
また、本発明にかかる技術は、２次キャッシュメモリまでを備えたシステムに限らず、３次以上のキャッシュメモリを備えるシステムにも適用することができる。レベルの異なるキャッシュメモリの数が多いほど、本発明にかかる技術による効果をより大きく発揮することができる。
【０１９８】
また、リプライデータに含まれる付加情報に応じて行う回復処理も、上述した各回復処理の例に限られることがない。
【符号の説明】
【０１９９】
１００  情報処理装置  １１０  プロセッサ
１１２  ＳＷ命令実行部  １１４  回復処理部
１１６  メモリリクエスト制御部  １２０  第１のバス
１３０  キャッシュメモリユニット  １３２  ＲＳＴ受付部
１３４  キャッシュメモリ  １３６  付加情報記憶部
１３８  第２の情報付加部  １４０  ＲＤ出力部
１５０  第２のバス  １６０  メインメモリユニット
１６２  ＲＳＴ受付部  １６４  メインメモリ
１６６  第１の情報付加部  １６８  ＲＤ出力部
２００  情報処理装置  ２１０  プロセッサ
２１２  メモリリクエスト制御部  ２１４  回復処理部
２１６  第３の情報付加部  ２１８  切換部
２３０  キャッシュメモリユニット  ２３２  切換部
２３４  第３の情報付加部  ２５２  第２のバス
２５４  第２のバス  ２６０  メインメモリユニット
２６２  切換部  ３００  マルチプロセッサシステム
３０２  プロセッサユニット  ３１０  プロセッサ
３１２  ＳＷ命令実行部  ３１４  回復処理部
３１６  メモリリクエスト制御部  ３２０  第３の情報付加部
３３０  １次キャッシュメモリユニット  ３４０  バス
３５０  ２次キャッシュメモリユニット  ３６０  バス
３７０  メインメモリユニット
【図１】
0005376681.tif 000002
【図２】
0005376681.tif 000003
【図３】
0005376681.tif 000004
【図４】
0005376681.tif 000005
【図５】
0005376681.tif 000006
【図６】
0005376681.tif 000007
【図７】
0005376681.tif 000008
【図８】
0005376681.tif 000009
【図９】
0005376681.tif 000010
【図１０】
0005376681.tif 000011
【図１１】
0005376681.tif 000012
【図１２】
0005376681.tif 000013
【図１３】
0005376681.tif 000014
【図１４】
0005376681.tif 000015
【図１５】
0005376681.tif 000016
【図１６】
0005376681.tif 000017
【図１７】
0005376681.tif 000018
【図１８】
0005376681.tif 000019
【図１９】
0005376681.tif 000020
【図２０】
0005376681.tif 000021
【図２１】
0005376681.tif 000022
【図２２】
0005376681.tif 000023
【図２３】
0005376681.tif 000024