(57)【要約】【課題】キャッシュを搭載したCPUを複数備えたマルチプロセッサシステムにおいて、タグメモリのエントリに訂正不可能障害が発生した場合であっても、データのコヒーレンシを保証し、動作を継続できるようにする。【解決手段】タグ部13内のタグメモリには、各キャッシュ１５に格納されているデータの上位アドレスと、そのデータが最新データであるか否かを示すステータスとが、上記データの下位アドレスに対応するエントリに格納されている。トランザクションの下位アドレスによってタグメモリから索引されたタグ索引結果に訂正不可能障害があることが検出されると、コヒーレンシ制御部107は、各CPU11に対して、キャッシュ15に格納されているデータの内の、下位アドレスがタグ索引時に用いられた下位アドレスと一致する全てのデータを主記憶装置14に掃き出すことを指示する。【選択図】図３
2008052550.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置と、
該主記憶装置に格納されているデータの一部の写しが格納されたキャッシュメモリを搭載した複数のＣＰＵと、
前記各キャッシュメモリ内のデータの状態を管理するタグメモリを有し、該タグメモリを用いてデータのコヒーレンシを保証するメモリコントロール／コヒーレンシ制御装置とを備え、
該メモリコントロール／コヒーレンシ制御装置が、前記タグメモリから索引されたタグ索引結果に訂正不可能障害を検出した場合、前記各ＣＰＵに対して、前記訂正不可能障害が検出されたタグ索引結果に関連する可能性がある全てのデータを主記憶装置に掃き出すことを指示することを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１記載のマルチプロセッサシステムにおいて、
前記メモリコントロール／コヒーレンシ制御装置が、
前記各キャッシュメモリに格納されているデータの上位アドレスと、そのデータが最新データであるか否かを示すステータスとが、前記データの下位アドレスに対応するエントリに格納されたタグメモリと、
トランザクションの下位アドレスによって前記タグメモリから索引されたタグ索引結果に訂正不可能障害があるか否かをチェックする障害チェック回路と、
該障害チェック回路で前記タグ索引結果に訂正不可能障害があると判断された場合、前記各ＣＰＵに対して、キャッシュメモリに格納されているデータの内の、下位アドレスがタグ索引時に用いられた下位アドレスと一致する全てのデータを主記憶装置に掃き出すことを指示するコヒーレンシ制御部とを備えたことを特徴とするマルチプロセッサシステム。
【請求項３】
請求項２記載のマルチプロセッサシステムにおいて、
前記コヒーレンシ制御部が、全ての上位アドレスについて、その上位アドレスと前記タグ索引時に使用された下位アドレスとを含むスワップトランザクションを生成し、該生成したスワップトランザクションを前記各ＣＰＵに対して発行することを特徴とするマルチプロセッサシステム。
【請求項４】
請求項２記載のマルチプロセッサシステムにおいて、
前記コヒーレンシ制御部が、全ての上位アドレスについて、その上位アドレスと前記タグ索引時に使用された下位アドレスとを含むスワップトランザクションを生成し、該生成したスワップトランザクションを前記各ＣＰＵが通常処理を行っていないときに、前記各ＣＰＵに対して発行することを特徴とするマルチプロセッサシステム。
【請求項５】
請求項２記載のマルチプロセッサシステムにおいて、
サービスプロセッサを備え、前記障害チェック回路で前記タグ索引結果に訂正不可能障害があると判断された場合、前記サービスプロセッサが前記コヒーレンシ制御部の代わりに、前記各ＣＰＵに対して、キャッシュメモリに格納されているデータの内の、下位アドレスがタグ索引時に用いられた下位アドレスと一致する全てのデータを主記憶装置に掃き出すように指示することを特徴とするマルチプロセッサシステム。
【請求項６】
請求項２記載のマルチプロセッサシステムにおいて、
前記コヒーレンシ制御部が、
前記障害チェック回路で前記タグ索引結果に訂正不可能障害があると判断され、且つ前記タグメモリの内容に基づいてキャッシュメモリ上に前記トランザクションがアクセス対象にしている最新データが存在すると確定できない場合は、直ちに、前記トランザクションのフルアドレスを含むスワップトランザクションを前記各ＣＰＵに対して発行し、その後、全ての上位アドレスについて、その上位アドレスと前記トランザクションの下位アドレスとを含むスワップトランザクションを生成し、前記各ＣＰＵが通常処理を行っていないとき、前記生成したスワップトランザクションを前記各ＣＰＵに対して発行し、前記障害チェック回路で前記タグ索引結果に訂正不可能障害があると判断され、且つ前記タグメモリの内容に基づいてキャッシュメモリ上に前記トランザクションがアクセス対象にしている最新データが存在すると確定できた場合は、全ての上位アドレスについて、その上位アドレスと前記トランザクションの下位アドレスとを含むスワップトランザクションを生成し、前記各ＣＰＵが通常処理を行っていないとき、前記生成したスワップトランザクションを前記各ＣＰＵに対して発行することを特徴とするマルチプロセッサシステム。
【請求項７】
主記憶装置と、該主記憶装置に格納されているデータの一部の写しが格納されたキャッシュメモリを搭載した複数のＣＰＵとを備えたマルチプロセッサシステムにおけるデータのコヒーレンシを、前記各キャッシュメモリ内のデータの状態を管理するタグメモリを利用して保証するメモリコントロール／コヒーレンシ制御装置であって、
前記タグメモリから索引されたタグ索引結果に訂正不可能障害を検出した場合、前記各ＣＰＵに対して、前記訂正不可能障害が検出されたタグ索引結果に関連する可能性がある全てのデータを主記憶装置に掃き出すことを指示する構成を有するメモリコントロール／コヒーレンシ制御装置。
【請求項８】
請求項７記載のメモリコントロール／コヒーレンシ制御装置において、
前記各キャッシュメモリに格納されているデータの上位アドレスと、そのデータが最新データであるか否かを示すステータスとが、前記データの下位アドレスに対応するエントリに格納されたタグメモリと、
トランザクションの下位アドレスによって前記タグメモリから索引されたタグ索引結果に訂正不可能障害があるか否かをチェックする障害チェック回路と、
該障害チェック回路で前記タグ索引結果に訂正不可能障害があると判断された場合、前記各ＣＰＵに対して、キャッシュメモリに格納されているデータの内の、下位アドレスがタグ索引時に用いられた下位アドレスと一致する全てのデータを主記憶装置に掃き出すことを指示するコヒーレンシ制御部とを備えたことを特徴とするメモリコントロール／コヒーレンシ制御装置。
【請求項９】
請求項８記載のメモリコントロール／コヒーレンシ制御装置において、
前記コヒーレンシ制御部が、全ての上位アドレスについて、その上位アドレスと前記タグ索引時に使用された下位アドレスとを含むスワップトランザクションを生成し、該生成したスワップトランザクションを前記各ＣＰＵに対して発行することを特徴とするメモリコントロール／コヒーレンシ制御装置。
【請求項１０】
請求項８記載のメモリコントロール／コヒーレンシ制御装置において、
前記コヒーレンシ制御部が、全ての上位アドレスについて、その上位アドレスと前記タグ索引時に使用された下位アドレスとを含むスワップトランザクションを生成し、該生成したスワップトランザクションを前記各ＣＰＵが通常処理を行っていないときに、前記各ＣＰＵに対して発行することを特徴とするメモリコントロール／コヒーレンシ制御装置。
【請求項１１】
請求項８記載のメモリコントロール／コヒーレンシ制御装置において、
前記コヒーレンシ制御部が、
前記障害チェック回路で前記タグ索引結果に訂正不可能障害があると判断され、且つ前記タグメモリの内容に基づいてキャッシュメモリ上に前記トランザクションがアクセス対象にしている最新データが存在すると確定できない場合は、直ちに、前記トランザクションのフルアドレスを含むスワップトランザクションを前記各ＣＰＵに対して発行し、その後、全ての上位アドレスについて、その上位アドレスと前記トランザクションの下位アドレスとを含むスワップトランザクションを生成し、前記各ＣＰＵが通常処理を行っていないとき、前記生成したスワップトランザクションを前記各ＣＰＵに対して発行し、前記障害チェック回路で前記タグ索引結果に訂正不可能障害があると判断され、且つ前記タグメモリの内容に基づいてキャッシュメモリ上に前記トランザクションがアクセス対象にしている最新データが存在すると確定できた場合は、全ての上位アドレスについて、その上位アドレスと前記トランザクションの下位アドレスとを含むスワップトランザクションを生成し、前記各ＣＰＵが通常処理を行っていないとき、前記生成したスワップトランザクションを前記各ＣＰＵに対して発行することを特徴とするメモリコントロール／コヒーレンシ制御装置。
【請求項１２】
主記憶装置と、該主記憶装置に格納されているデータの一部の写しが格納されたキャッシュメモリを搭載した複数のＣＰＵとを備えたマルチプロセッサシステムにおけるデータのコヒーレンシを保証するコヒーレンシ保証方法であって、
前記各キャッシュメモリ内のデータの状態を管理するタグメモリから索引されたタグ索引結果に訂正不可能障害を検出した場合、前記各ＣＰＵに対して、前記訂正不可能障害が検出されたタグ索引結果に関連する可能性がある全てのデータを主記憶装置に掃き出すように指示することを特徴とするコヒーレンシ保証方法。
【請求項１３】
主記憶装置と、該主記憶装置に格納されているデータの一部の写しが格納されたキャッシュメモリを搭載した複数のＣＰＵとを備えたマルチプロセッサシステムにおけるデータのコヒーレンシを保証するコヒーレンシ保証方法であって、
各キャッシュメモリに格納されているデータの上位アドレスと、そのデータが最新データであるか否かを示すステータスとが前記データの下位アドレスに対応するエントリに格納されたタグメモリを、トランザクションの下位アドレスによって索引することにより得られたタグ索引結果に訂正不可能障害が検出された場合、前記各ＣＰＵに対して、キャッシュメモリに格納されているデータの内の、下位アドレスがタグ索引時に用いられた下位アドレスと一致する全てのデータを主記憶装置に掃き出すことを指示し、該指示に従って前記各ＣＰＵが該当するデータを前記主記憶装置に掃き出すことを特徴とするコヒーレンシ保証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを搭載したＣＰＵを複数備えた分散共有メモリ型マルチプロセッサシステム等のマルチプロセッサシステムに関し、特に、データのコヒーレンシを保証するために設けられているタグメモリから読み出されたタグ索引結果に訂正不可能障害がある場合であっても、システムダウンに陥らないようにすることができるタグ障害時のコヒーレンシ保証技術に関する。
【背景技術】
【０００２】
従来からキャッシュメモリが搭載されたＣＰＵを複数備えたマルチプロセッサシステムでは、データのコヒーレンシを保証するためにタグメモリが利用されている（例えば、特許文献１参照）。特許文献１では、複数のノードを備え、且つ各ノードがキャッシュメモリを搭載したＣＰＵと各ノードによって共有される主記憶装置とを備えた分散共有メモリ型系列計算機におけるデータのコヒーレンシを保証するために、各ノードにタグメモリを設けている。この特許文献１に記載されているタグメモリは、主記憶装置のブロック毎のエントリを有し、各エントリには、対応するブロックの最新データが主記憶装置上にあるのか、キャッシュメモリ上にあるのか、キャッシュメモリ上にあり且つ更新されているのかを示す状態情報と、データを保持しているＣＰＵのＩＤとが登録されている。そして、自ＣＰＵ上のキャッシュメモリに存在しないデータをアクセスする際、タグメモリを引けば、最新データが、主記憶装置上に存在するのか、他のＣＰＵ内のキャッシュメモリ上に存在するのかが分かるので、最新データをアクセスすることができ、データのコヒーレンシを保証することができる。
【０００３】
一方、キャッシュメモリのアドレスアレイに登録するデータにＥＣＣ（error correcting code）等の誤り訂正符号を付加し、アドレスアレイから読み出されたデータに障害があった場合、アドレスアレイの上記データを読み出したエントリを無効化すると共に、訂正したデータを利用して、無効化したエントリに対応するキャッシュメモリ上のデータを主記憶装置に書き戻す技術も従来から知られている（例えば、特許文献２参照）。
【０００４】
【特許文献１】特開２００２−２４１９８号公報
【特許文献２】特開平９−１４６８３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、特許文献１に記載されている従来の技術によれば、タグメモリを参照することにより、最新データの所在が分かるので、データのコヒーレンシを保証することができる。しかし、タグメモリに障害が発生し、タグ索引結果に誤りが発生した場合には、どこに最新データが存在するのか分からなくなってしまうため、データのコヒーレンシを保証することができなくなり、システムダウンとなってしまう。
【０００６】
そこで、特許文献２に記載されている従来の技術を、特許文献１に記載されている従来の技術に適用するということが考えられる。このようにすることにより、検出された障害が１ビットエラー等の訂正可能障害である場合は、訂正されたタグ索引結果を利用して動作を継続することが可能になる。しかし、検出された障害が２ビットエラー等の訂正不可能障害である場合には、最新データがどこに存在するのかが分からなくなってしまうため、システムダウンとなってしまう。
【０００７】
〔発明の目的〕
そこで、本発明の目的は、タグメモリから読み出されたタグ索引結果に訂正不可能障害がある場合であっても、動作を継続できるようにすることにある。
【課題を解決するための手段】
【０００８】
本発明にかかる第１のマルチプロセッサシステムは、
主記憶装置と、
該主記憶装置に格納されているデータの一部の写しが格納されたキャッシュメモリを搭載した複数のＣＰＵと、
前記各キャッシュメモリ内のデータの状態を管理するタグメモリを有し、該タグメモリを用いてデータのコヒーレンシを保証するメモリコントロール／コヒーレンシ制御装置とを備え、
該メモリコントロール／コヒーレンシ制御装置が、前記タグメモリから索引されたタグ索引結果に訂正不可能障害を検出した場合、前記各ＣＰＵに対して、前記訂正不可能障害が検出されたタグ索引結果に関連する可能性がある全てのデータを主記憶装置に掃き出すように指示することを特徴とする。
【０００９】
本発明にかかる第２のマルチプロセッサシステムは、第１のマルチプロセッサシステムにおいて、
前記メモリコントロール／コヒーレンシ制御装置が、
前記各キャッシュメモリに格納されているデータの上位アドレスと、そのデータが最新データであるか否かを示すステータスとが、前記データの下位アドレスに対応するエントリに格納されたタグメモリと、
トランザクションの下位アドレスによって前記タグメモリから索引されたタグ索引結果に訂正不可能障害があるか否かをチェックする障害チェック回路と、
該障害チェック回路で前記タグ索引結果に訂正不可能障害があると判断された場合、前記各ＣＰＵに対して、キャッシュメモリに格納されているデータの内の、下位アドレスがタグ索引時に用いられた下位アドレスと一致する全てのデータを主記憶装置に掃き出すことを指示するコヒーレンシ制御部とを備えたことを特徴とする。
【００１０】
本発明にかかる第３のマルチプロセッサシステムは、第２のマルチプロセッサシステムにおいて、
前記コヒーレンシ制御部が、全ての上位アドレスについて、その上位アドレスと前記タグ索引時に使用された下位アドレスとを含むスワップトランザクションを生成し、該生成したスワップトランザクションを前記各ＣＰＵに対して発行することを特徴とする。
【００１１】
本発明にかかる第４のマルチプロセッサシステムは、第２のマルチプロセッサシステムにおいて、
前記コヒーレンシ制御部が、全ての上位アドレスについて、その上位アドレスと前記タグ索引時に使用された下位アドレスとを含むスワップトランザクションを生成し、該生成したスワップトランザクションを前記各ＣＰＵが通常処理を行っていないときに、前記各ＣＰＵに対して発行することを特徴とする。
【００１２】
本発明にかかる第５のマルチプロセッサシステムは、第２のマルチプロセッサシステムにおいて、
サービスプロセッサを備え、前記障害チェック回路で前記タグ索引結果に訂正不可能障害があると判断された場合、前記サービスプロセッサが前記コヒーレンシ制御部の代わりに、前記各ＣＰＵに対して、キャッシュメモリに格納されているデータの内の、下位アドレスがタグ索引時に用いられた下位アドレスと一致する全てのデータを主記憶装置に掃き出すように指示することを特徴とする。
【００１３】
本発明にかかる第６のマルチプロセッサシステムは、第２のマルチプロセッサシステムにおいて、
前記コヒーレンシ制御部が、
前記障害チェック回路で前記タグ索引結果に訂正不可能障害があると判断され、且つ前記タグメモリの内容に基づいてキャッシュメモリ上に前記トランザクションがアクセス対象にしている最新データが存在すると確定できない場合は、直ちに、前記トランザクションのフルアドレスを含むスワップトランザクションを前記各ＣＰＵに対して発行し、その後、全ての上位アドレスについて、その上位アドレスと前記トランザクションの下位アドレスとを含むスワップトランザクションを生成し、前記各ＣＰＵが通常処理を行っていないとき、前記生成したスワップトランザクションを前記各ＣＰＵに対して発行し、前記障害チェック回路で前記タグ索引結果に訂正不可能障害があると判断され、且つ前記タグメモリの内容に基づいてキャッシュメモリ上に前記トランザクションがアクセス対象にしている最新データが存在すると確定できた場合は、全ての上位アドレスについて、その上位アドレスと前記トランザクションの下位アドレスとを含むスワップトランザクションを生成し、前記各ＣＰＵが通常処理を行っていないとき、前記生成したスワップトランザクションを前記各ＣＰＵに対して発行することを特徴とする。
【００１４】
本発明にかかる第１のメモリコントロール／コヒーレンシ制御装置は、
主記憶装置と、該主記憶装置に格納されているデータの一部の写しが格納されたキャッシュメモリを搭載した複数のＣＰＵとを備えたマルチプロセッサシステムにおけるデータのコヒーレンシを、前記各キャッシュメモリ内のデータの状態を管理するタグメモリを利用して保証するメモリコントロール／コヒーレンシ制御装置であって、
前記タグメモリから索引されたタグ索引結果に訂正不可能障害を検出した場合、前記各ＣＰＵに対して、前記訂正不可能障害が検出されたタグ索引結果に関連する可能性がある全てのデータを主記憶装置に掃き出すことを指示する構成を有する。
【００１５】
本発明にかかる第２のメモリコントロール／コヒーレンシ制御装置は、第１のメモリコントロール／コヒーレンシ制御装置において、
前記各キャッシュメモリに格納されているデータの上位アドレスと、そのデータが最新データであるか否かを示すステータスとが、前記データの下位アドレスに対応するエントリに格納されたタグメモリと、
トランザクションの下位アドレスによって前記タグメモリから索引されたタグ索引結果に訂正不可能障害があるか否かをチェックする障害チェック回路と、
該障害チェック回路で前記タグ索引結果に訂正不可能障害があると判断された場合、前記各ＣＰＵに対して、キャッシュメモリに格納されているデータの内の、下位アドレスがタグ索引時に用いられた下位アドレスと一致する全てのデータを主記憶装置に掃き出すことを指示するコヒーレンシ制御部とを備えたことを特徴とする。
【００１６】
本発明にかかる第３のメモリコントロール／コヒーレンシ制御装置は、第２のメモリコントロール／コヒーレンシ制御装置において、
前記コヒーレンシ制御部が、全ての上位アドレスについて、その上位アドレスと前記タグ索引時に使用された下位アドレスとを含むスワップトランザクションを生成し、該生成したスワップトランザクションを前記各ＣＰＵに対して発行することを特徴とする。
【００１７】
本発明にかかる第４のメモリコントロール／コヒーレンシ制御装置は、第２のメモリコントロール／コヒーレンシ制御装置において、
前記コヒーレンシ制御部が、全ての上位アドレスについて、その上位アドレスと前記タグ索引時に使用された下位アドレスとを含むスワップトランザクションを生成し、該生成したスワップトランザクションを前記各ＣＰＵが通常処理を行っていないときに、前記各ＣＰＵに対して発行することを特徴とする。
【００１８】
本発明にかかる第５のメモリコントロール／コヒーレンシ制御装置は、第２のメモリコントロール／コヒーレンシ制御装置において、
前記コヒーレンシ制御部が、
前記障害チェック回路で前記タグ索引結果に訂正不可能障害があると判断され、且つ前記タグメモリの内容に基づいてキャッシュメモリ上に前記トランザクションがアクセス対象にしている最新データが存在すると確定できない場合は、直ちに、前記トランザクションのフルアドレスを含むスワップトランザクションを前記各ＣＰＵに対して発行し、その後、全ての上位アドレスについて、その上位アドレスと前記トランザクションの下位アドレスとを含むスワップトランザクションを生成し、前記各ＣＰＵが通常処理を行っていないとき、前記生成したスワップトランザクションを前記各ＣＰＵに対して発行し、前記障害チェック回路で前記タグ索引結果に訂正不可能障害があると判断され、且つ前記タグメモリの内容に基づいてキャッシュメモリ上に前記トランザクションがアクセス対象にしている最新データが存在すると確定できた場合は、全ての上位アドレスについて、その上位アドレスと前記トランザクションの下位アドレスとを含むスワップトランザクションを生成し、前記各ＣＰＵが通常処理を行っていないとき、前記生成したスワップトランザクションを前記各ＣＰＵに対して発行することを特徴とする。
【００１９】
本発明にかかる第１のコヒーレンシ保証方法は、
主記憶装置と、該主記憶装置に格納されているデータの一部の写しが格納されたキャッシュメモリを搭載した複数のＣＰＵとを備えたマルチプロセッサシステムにおけるデータのコヒーレンシを保証するコヒーレンシ保証方法であって、
前記各キャッシュメモリ内のデータの状態を管理するタグメモリから索引されたタグ索引結果に訂正不可能障害を検出した場合、前記各ＣＰＵに対して、前記訂正不可能障害が検出されたタグ索引結果に関連する可能性がある全てのデータを主記憶装置に掃き出すように指示することを特徴とする。
【００２０】
本発明にかかる第２のコヒーレンシ保証方法は、
主記憶装置と、該主記憶装置に格納されているデータの一部の写しが格納されたキャッシュメモリを搭載した複数のＣＰＵとを備えたマルチプロセッサシステムにおけるデータのコヒーレンシを保証するコヒーレンシ保証方法であって、
各キャッシュメモリに格納されているデータの上位アドレスと、そのデータが最新データであるか否かを示すステータスとが前記データの下位アドレスに対応するエントリに格納されたタグメモリを、トランザクションの下位アドレスによって索引することにより得られたタグ索引結果に訂正不可能障害が検出された場合、前記各ＣＰＵに対して、キャッシュメモリに格納されているデータの内の、下位アドレスがタグ索引時に用いられた下位アドレスと一致する全てのデータを主記憶装置に掃き出すことを指示し、該指示に従って前記各ＣＰＵが該当するデータを前記主記憶装置に掃き出すことを特徴とする。
【００２１】
〔作用〕
メモリコントロール／コヒーレンシ制御装置は、各キャッシュメモリ内のデータの状態を管理するタグメモリから索引されたタグ索引結果に訂正不可能障害を検出した場合、各ＣＰＵに対して、訂正不可能障害が検出されたタグ索引結果に関連する可能性がある全てのデータを主記憶装置に掃き出すように指示する。より具体的には、各ＣＰＵ上のキャッシュメモリに格納されているデータの上位アドレスと、そのデータが最新データであるか否かを示すステータスとが、データの下位アドレスに対応するエントリに格納されたタグメモリを、トランザクションの下位アドレスによって索引することにより得られたタグ索引結果に訂正不可能障害が検出された場合、メモリコントロール／コヒーレンシ制御装置は、各ＣＰＵに対して、キャッシュメモリに格納されているデータの内の、下位アドレスがタグ索引時に用いられた下位アドレスと一致する全てのデータを主記憶装置に掃き出すことを指示する。この指示に従って各ＣＰＵは、自ＣＰＵ上のキャッシュメモリに格納されている該当データを主記憶装置に掃き出す。タグメモリの或るエントリに訂正不可能障害が発生すると、そのエントリによって最新データがキャッシュメモリ上であるのか否かが管理されていたデータについては、最新データがキャッシュメモリ上にあるのか主記憶装置上にあるのかが分からなくなってしまうが、上記したように、各ＣＰＵのキャッシュメモリに格納されているデータの内の、下位アドレスがタグ索引時に用いられた下位アドレスと一致する全てのデータを主記憶装置に掃き出すようにすることにより、最新データは、必ず主記憶装置上に存在することになるので、データのコヒーレンシを保証することができる。
【発明の効果】
【００２２】
本発明によれば、タグメモリから読み出されたタグ索引結果に訂正不可能障害が検出された場合であっても、データのコヒーレンシを保証することができるので、動作を継続することが可能になる。その理由は、タグメモリから索引されたタグ索引結果に訂正不可能障害を検出した場合、各ＣＰＵに対して、訂正不可能障害が検出されたタグ索引結果に関連する可能性がある全てのデータを主記憶装置に掃き出すことを指示するメモリコントロール／コヒーレンシ制御装置を備えているからである。
【発明を実施するための最良の形態】
【００２３】
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００２４】
〔第１の実施の形態の構成の説明〕
図１は本発明にかかる分散共有メモリ型マルチプロセッサシステムの第１の実施の形態の構成例を示すブロック図である。図１を参照すると、本実施の形態の分散共有メモリ型マルチプロセッサシステムは、複数のセル（ノード）１０を備え、それらは第二、第三インタフェース２１、２２を介して相互に接続されている。
【００２５】
各セル１０は、それぞれストアイン方式のキャッシュメモリ（キャッシュ）１５が搭載された複数のＣＰＵ（中央処理装置）１１と、タグ部１３を有するメモリコントロール／コヒーレンシ制御装置１２と、主記憶装置１４とを備えており、ＣＰＵ１１とメモリコントロール／コヒーレンシ制御装置１２とは第一インタフェース２０を介して相互に接続されている。各セル１０内の主記憶装置１４は、全てのセル１０からアクセス可能になっている。
【００２６】
各セル１０内のメモリコントロール／コヒーレンシ制御装置１２に設けられているタグ部１３には、そのセル１０内のキャッシュ１５に格納されているデータが最新データであるか否かを示すステータスが登録されている。
【００２７】
図２にタグ部１３の構成例を示す。同図を参照すると、タグ部１３は、タグメモリ１３１と、ＥＣＣチェック＆訂正回路１３２と、比較回路１３３とを備えている。
【００２８】
タグメモリ１３１は、データの下位アドレス毎のエントリを複数レベル有しており、各エントリには、そのエントリが使用可能であるか否かを示すエントリ使用不可フラグＦと、キャッシュ１５に格納されているデータの上位アドレスと、上記データが最新データであるか否かを示すステータスと、ＥＣＣとが登録されている。そして、アクセス対象データの下位アドレスが入力されることにより、上記下位アドレスによって選択されたエントリに格納されている情報をタグ索引結果として出力する。
【００２９】
ＥＣＣチェック＆訂正回路１３２は、タグメモリ１３１の各レベル毎に存在し、対応するレベルのタグ索引結果に対するＥＣＣチェック及び訂正を行う。より具体的には、各レベルのＥＣＣチェック＆訂正回路１３２は、それぞれタグメモリ１３１から読み出された対応するレベルのタグ索引結果に対してＥＣＣチェックを行う。そして、エラーが無い場合は、タグメモリ１３１から読み出されたタグ索引結果を出力し、訂正可能なエラーを検出した場合には、訂正後のタグ索引結果と訂正可能情報（索引時に使用されたアクセス対象データの下位アドレスと、自回路１３２のレベルとを含む）とを出力し、訂正不可能なエラーを検出した場合には、訂正不可能情報（索引時に使用されたアクセス対象データの下位アドレスと、自回路１３２のレベルとを含む）を出力する。
【００３０】
比較回路１３３は、各レベルのＥＣＣチェック＆訂正回路１３２から出力されたタグ索引結果中の上位アドレスと、タグ索引時に使用したアクセス対象データの上位アドレスとを比較し、両者が等しいタグ索引結果があれば、それを第三インタフェース２２に出力する。但し、ＥＣＣチェック＆訂正回路１３２の出力の中に訂正不可能情報が存在する場合は、訂正不可能情報も第三インタフェース２２に出力し、訂正可能情報が存在する場合は、訂正可能情報と訂正後のタグ索引結果との対も第三インタフェース２２に出力する。なお、第三インタフェース２２は、各セル１０毎に、使用するビット位置が決められており、そのビット位置に基づいてどのセル１０が出力した情報なのかを特定できるようになっている。
【００３１】
図３は、メモリコントロール／コヒーレンシ制御装置１２の構成例を示すブロック図である。同図を参照すると、メモリコントロール／コヒーレンシ制御装置１２は、第二インタフェース出力調停部１０１と、タグ部１３及びメイン制御部１０３を有するメインパイプ１０２と、タグスワップ制御部１０４と、比較回路１０５と、タグ書き戻し制御部１０６と、コヒーレンシ制御部１０７と、主記憶アクセス制御部１０８とを備えている。なお、図３において、他の図１と同一符号は、同一部分を表している。
【００３２】
第二インタフェース出力調停部１０１は、その内部にＣＰＵ１１や図示を省略した入出力装置から送られてきたトランザクション（ライト命令やリード命令などの命令）を複数個格納できるレジスタ（図示せず）を備えており、上記レジスタに格納されたトランザクションを順次第二インタフェース２１に出力する。但し、メイン制御部１０３からパス２２０を介してスワップ処理中であることを示すスワップ処理中信号が入力されている間は、現在出力中のトランザクション（レジスタの先頭部分にセットされているトランザクション）を第二インタフェース２１に出力し続ける。また、各セル１０は、第二インタフェース２１を時分割して使用しており、各セル１０内の第二インタフェース出力調停部１０１は、自セルに割り当てられたタイミングにおいてトランザクションを第二インタフェース２１に出力する。
【００３３】
第二インタフェース２１には、分散共有メモリ型マルチプロセッサシステムを構成する全てのセル１０が接続されており、各セル１０内のメインパイプ１０２は、パス２１２を介して第二インタフェース２１上のトランザクションを同時に受信する。このパス２１２を介して受信したトランザクションは、タグ部１３及びメイン制御部１０３に供給される。
【００３４】
メインパイプ１０２内のタグ部１３は、パス２１２を介してトランザクションが入力されると、前述したように、上位アドレスが一致したタグ索引結果、訂正可能情報と訂正後のタグ索引結果との対、訂正不可能情報などを第三インタフェース２２に出力する。
【００３５】
第三インタフェース２２にも、分散共有メモリ型マルチプロセッサシステムを構成する全てのセル１０が接続されており、各セル１０内のメインパイプ１０２は、パス２１４を介して第三インタフェース２２上のタグ索引結果、訂正可能情報と訂正後のタグ索引結果との対、訂正不可能情報などを同時に受信する。
【００３６】
メインパイプ１０２内のメイン制御部１０３は、パス２１４を介して第三インタフェース２２から受信した情報に基づいて、既にパス２１２を介して受け付けているトランザクションに対する処理を、次のように決定する。
【００３７】
・パス２１４を介して第三インタフェース２２から受信した情報に基づいて、自セル１０内のタグ部１３が正常であり、且つ、パス２１２を介して既に受信しているトランザクションがアクセス対象にしているデータ（最新データ）を格納しているキャッシュ１５が存在しないと判断した場合は、上記トランザクションを自セル１０内の主記憶アクセス制御部１０８に送る。これにより、主記憶アクセス制御部１０８は、上記トランザクションがアクセス対象にしているデータが、自セル１０内の主記憶装置１４に存在する場合は、上記データをアクセスする。即ち、上記トランザクションがライトトランザクションであれば、それに従ってデータを書き換え、リードトランザクションであれば、該当データを図示を省略したデータバスに出力する。
・パス２１４を介して第三インタフェース２２から受信した情報に基づいて、自セル１０内のタグ部１３が正常であり、且つ、パス２１２を介して既に受信しているトランザクションがアクセス対象にしているデータが、自セル１０内のキャッシュ１５上に存在すると判断した場合は、コヒーレンシ制御部１０７を介して、自セル１０内の各ＣＰＵ１１に、上記トランザクションを送信する。各ＣＰＵ１１は、自ＣＰＵ１１内のキャッシュ１５にアクセス対象にしているデータが存在する場合は、上記データをアクセスする。
・パス２１４を介して第三インタフェース２２から受信した情報に基づいて、自セル１０内のタグ部１３に訂正可能障害が発生していると判断した場合、即ち、第三インタフェース２２の自セル１０に割り当てられているビットを介して訂正可能情報と訂正後のタグ索引結果との対を受信した場合は、タグスワップ制御部１０４に対して上記訂正可能情報に含まれていたアクセス対象データの下位アドレス（タグ索引時に使用したトランザクションの下位アドレス）を登録する処理と、タグ書き戻し制御部１０６に対して上記訂正可能情報に含まれていた下位アドレスと障害を検出したＥＣＣチェック＆訂正回路１３２のレベルとを登録する処理と、コヒーレンシ制御部１０７に対して上記訂正可能情報に含まれていた下位アドレスと上記訂正後のタグ索引結果に含まれていた上位アドレスとを登録してスワップトランザクションの発行を指示する処理とを行う。
・パス２１４を介して第三インタフェース２２から受信した情報に基づいて、自セル１０内のタグ部１３に訂正不可能障害が発生していると判断した場合、即ち、第三インタフェース２２の自セル１０に割り当てられているビットを介して訂正不可能情報を受信した場合は、タグスワップ制御部１０４に対して上記訂正不可能情報に含まれていたアクセス対象データの下位アドレスを登録する処理と、タグ書き戻し制御部１０６に対して上記訂正不可能情報に含まれていた下位アドレスと障害を検出したＥＣＣチェック＆訂正回路１３２のレベルとを登録する処理と、コヒーレンシ制御１０７に対して訂正不可能情報に含まれていた下位アドレスを登録してスワップトランザクションの発行を指示する処理とを行う。
【００３８】
また、メイン制御部１０３は、訂正可能情報または訂正不可能情報に含まれていた下位アドレスをタグスワップ制御部１０４に登録すると、後述するスワップ処理が完了するまで、次のような処理を行う。タグスワップ制御部１０４に登録されている下位アドレスと、第二インタフェース２１に出力されたトランザクションの下位アドレスとを比較する比較回路１０５により、両者が一致することが検出され、且つ、上記トランザクションの発行元が自セル１０である場合は、パス２２０を介して第二インタフェース出力調停部１０１にスワップ処理中信号を送る。また、上記トランザクションの発行元が他のセル１０であった場合は、第三インタフェース２２を介して発行元のセル１０にトランザクションをキャンセルしたことを示すキャンセル信号を送る。これは、スワップ処理中に、下位アドレスがタグスワップ制御部１０４に登録されている下位アドレスと同一のトランザクションが発行された場合にもコヒーレンシを保証できるようにするためである。
【００３９】
コヒーレンシ制御部１０７は、メイン制御部１０３からスワップトランザクションの発行が指示されると、パス２１９を介して自セル１０内の各ＣＰＵ１１にスワップトランザクションを発行する。その際、メイン制御部１０３により、下位アドレス及び上位アドレスが登録されている場合（タグ部１３に発生した障害が訂正可能障害の場合）は、上記下位アドレスと上位アドレスとを含むスワップトランザクションを発行し、下位アドレスしか登録されていない場合（タグ部１３に発生した障害が訂正不可能障害の場合）は、全ての上位アドレスそれぞれについて、その上位アドレスと上記下位アドレスとを含むスワップトランザクションを生成し、生成した各スワップトランザクションを発行する。例えば、上位アドレスがｋビットであるとすると、２k個のスワップトランザクションを発行することになる。
【００４０】
各ＣＰＵ１１は、スワップトランザクションを受け取ると、キャッシュ１５内に該当するデータが存在するか否かを調べ、存在しない場合には、パス２１０→パス２１１→第二インタフェース２１→パス２１２の経路でメインパイプ１０２に該当するデータが存在しなかったことを示すリプライトランザクションを返す。これに対して、キャッシュ１５内に該当するデータが存在していた場合は、キャッシュ掃き出し処理を行い、キャッシュ１５に格納されていた該当するデータを主記憶装置１４に書き戻すと共に、上記した経路でメインパイプ１０２に対してキャッシュ掃き出し処理が完了したことを示すリプライトランザクションを返す。
【００４１】
これらのリプライトランザクションを契機にして、メイン制御部１０３は、タグスワップ制御部１０４に登録した下位アドレスを消去する。これにより、メインパイプ１０２上でキャンセルされていた同一アドレストランザクションはキャンセル状態から開放され通常動作に戻ることができる。また、メイン制御部１０３は、ＣＰＵ１１からのリプライトランザクションを契機にしてタグ書き戻し制御部１０６に対してエントリ使用不可フラグの生成を指示する。これにより、タグ書き戻し制御部１０６は、メイン制御部１０３によって登録されている下位アドレスとレベルとによって特定される、タグメモリ１３１の障害エントリのエントリ使用不可フラグに“１”（使用不可を示す）をセットする。これ以後のタグ索引トランザクションがタグ索引した場合に、エントリ使用不可フラグ＝“１”のレベルを参照するとそのレベルは無効であると判断し使用しない。
【００４２】
〔第１の実施の形態の動作の説明〕
次に、図１〜図５を参照して本実施の形態の動作について詳細に説明する。なお、図４は主にタグメモリ１３１に訂正可能障害が発生したときの処理例を示すフローチャート、図５は主にタグメモリ１３１に訂正不可能障害が発生したときの処理例を示すフローチャートである。
【００４３】
各セル１０内の各ＣＰＵ１１は、データアクセス時、自ＣＰＵ１１内のキャッシュ１５にアクセス対象データが存在しない場合は、アクセス対象データのアドレスを含むトランザクションを、第二インタフェース出力調停部１０１を介して第二インタフェース２１に出力する。
【００４４】
各セル１０では、第二インタフェース２１を介して上記トランザクションを受け取ると、それに含まれているアドレスの下位アドレスでタグ索引を行う（図４のステップ４−１）。これにより、タグメモリ１３１の上記下位アドレスに対応する各レベルのエントリからタグ索引結果が読み出され、ＥＣＣチェック＆訂正回路１３２において障害チェックが行われる。ＥＣＣチェック＆訂正回路１３２は、障害が無いと判断した場合は、タグ索引結果をそのまま出力し、訂正可能な障害があると判断した場合は、訂正後のタグ索引結果と訂正可能情報（下位アドレスとレベルとを含む）との対を出力し、訂正不可能な障害があると判断した場合は、訂正不可能情報（下位アドレスとレベルとを含む）を出力する。比較回路１３３は、各レベルのタグ索引結果の内の、上位アドレスがアクセス対象データの上位アドレスと一致するタグ索引結果を第三インタフェース２２に出力する。また、各レベルのＥＣＣチェック＆訂正回路１３２の出力の中に、訂正可能情報が含まれている場合は、訂正可能情報と訂正後のタグ索引結果との対も第三インタフェース２２に出力し、訂正不可能信号が含まれている場合は、それも第三インタフェース２２に出力する。
【００４５】
各セル１０内のメイン制御部１０３は、第三インタフェース２２を介して受信した情報に基づいて自セル１０内のタグ部１３に障害がないと判断した場合、通常動作を行う（ステップ４−２がＮＯ、４−３）。また、自セル１０内のタグ部１３に訂正不可能障害が発生したと判断した場合（ステップ４−２がＹＥＳ、４−４がＮＯ）は、ステップ４−１６の処理に進む。また、自セル１０内のタグ部１３に訂正可能障害が発生したと判断した場合（ステップ４−２がＹＥＳ、４−４がＹＥＳ）は、以下の処理を行う。
【００４６】
メイン制御部１０３は、訂正可能情報と訂正後のタグ索引結果を受信すると、訂正可能情報に含まれている下位アドレス（タグ索引時に使用された下位アドレス）をタグスワップ制御部１０４に登録する処理（ステップ４−５）と、訂正可能情報に含まれている下位アドレス及びレベルをタグ書き戻し制御部１０６に登録する処理（ステップ４−７）と、訂正可能情報に含まれている下位アドレスと訂正後のタグ索引結果に含まれている上位アドレスとをコヒーレンシ制御部１０７に登録してスワップトランザクションの発行を指示する処理（ステップ４−１０）とを行う。なお、ステップ４−７の処理は行わないようにしても良い。当然この場合は、ステップ４−８、４−９の処理も行わない。
【００４７】
ステップ４−５でタグスワップ制御部１０４に下位アドレスを登録した後、比較回路１０５の出力が比較一致を示すものになると、メイン制御部１０３は、第二インタフェース２１上のトランザクションの発行元が自セル１０であれば、パス２２０を介して第二インタフェース出力調停部１０１にスワップ処理中信号を出力し、発行元が他セル１０であれば、第三インタフェース２２を介して発行元のセル１０にキャンセル情報を送る（ステップ４−１４）。なお、タグ部１３は、比較回路１０５に出力が比較一致を示している間は、タグ索引を行わない。
【００４８】
一方、コヒーレンシ制御部１０７は、ステップ４−１０において、下位アドレス及び上位アドレスが登録され、スワップトランザクションの発行が指示されると、上記下位アドレス及び上記上位アドレスを含んだスワップトランザクションを自セル１０内の各ＣＰＵ１１に発行する（ステップ４−１１）。各ＣＰＵ１１は、スワップトランザクションを受け付けると、キャッシュ掃き出し処理を行い、リプライトランザクションを第二インタフェース２１に出力する（ステップ４−１２）。
【００４９】
メインパイプ１０２内のメイン制御部１０３は、キャッシュ掃き出し処理が完了した旨のリプライトランザクションを受け付けると（ステップ４−１３）、タグスワップ制御部１０４に登録している下位アドレスを削除すると共に、スワップ処理中信号の出力を停止する（ステップ４−６）。これによりメインパイプ１０２でキャンセルされていたトランザクションのキャンセル状態は解除される（ステップ４−１５）。また、メイン制御部１０３は、上記リプライトランザクションを受け付けると（ステップ４−１３）、タグ書き戻し制御部１０６に対してエントリ使用不可フラグをタグメモリ１３１の障害エントリにセットすることを指示する。これにより、タグ書き戻し制御部１０６は、タグメモリ１３１の障害エントリ（ステップ４−７で登録された下位アドレス及びレベルによって特定されるエントリ）にエントリ使用不可フラグをセットする（ステップ４−８）。このエントリ使用不可フラグが点灯しているエントリはこれ以後使われなくなる（ステップ４−９）。これによりタグの障害エントリのレベルのみ動的に縮退が完了し継続動作が可能となる。
【００５０】
次に、メイン制御部１０３が、ステップ４−４において自セル１０内のタグ部１３に訂正不可能障害が発生したと判断した場合の動作を説明する。タグ部１３に訂正不可能障害が発生した場合は、ＥＣＣチェック＆訂正回路１３２によりエラー訂正を行うことができないため、正しい上位アドレスが何であったか分からない。そこで、全ての上位アドレスそれぞれについて、その上位アドレスとタグ索引時に使用した下位アドレスとを含むスワップトランザクションを生成し、生成した各スワップトランザクションを自セル１０内の各ＣＰＵ１１に対して発行することで、上記下位アドレスを持つキャッシュ情報を全て主記憶装置１４に書き戻せるようにしている。
【００５１】
メイン制御部１０３は、第三インタフェース２２を介して受け取った訂正不可能情報により、自セル１０内のタグ部１３に訂正不可能障害が発生したと判断すると（ステップ４−４がＮＯ）、訂正不可能情報に含まれている下位アドレス（タグ索引時に使用された下位アドレス）をタグスワップ制御部１０４に登録する処理（図５のステップ５−１）と、訂正不可能情報に含まれている下位アドレス及びレベルをタグ書き戻し制御部１０６に登録する処理（ステップ５−３）と、訂正不可能情報に含まれている下位アドレスをコヒーレンシ制御部１０７に登録してスワップトランザクションの発行を指示する処理（ステップ５−６）とを行う。
【００５２】
ステップ５−１でタグスワップ制御部１０４に下位アドレスを登録した後、比較回路１０５の出力が比較一致を示すものになると、メイン制御部１０３は、第二インタフェース２１上のトランザクションの発行元が自セル１０であれば、パス２２０を介して第二インタフェース出力調停部１０１に対してスワップ処理中信号を出力し、発行元が他のセル１０であれば、第三インタフェース２２を介して発行元のセル１０にキャンセル情報を送信する（ステップ５−１０）。このような処理は、スワップ処理が完了し、タグスワップ制御部１０４に登録されている下位アドレスが消去されるまで継続される。
【００５３】
一方、コヒーレンシ制御部１０７は、ステップ５−６において、下位アドレスだけが登録され、スワップトランザクションの発行が指示されると、全ての上位アドレスそれぞれについて、その上位アドレスと上記下位アドレスとを含むスワップトランザクションを生成し、生成したスワップトランザクションを小さなアドレスから昇順に、自セル１０内の各ＣＰＵ１１に発行する（ステップ５−７）。これにより、コヒーレンシ制御部１０７がビジー状態となるため、コヒーレンシ制御部１０７を使用する後続トランザクションはキャンセルされ、ビジー状態が解消されるまで（ステータス処理が完了するまで）、待たされることになる。ＣＰＵ１１はスワップトランザクションを受け付けるとキャッシュ掃き出し処理を行い、リプライトランザクションをメイン制御部１０３に返す（ステップ５−８）。
【００５４】
メイン制御部１０３は、自セル１０内の全てのＣＰＵ１１から最も大きなアドレスについてのリプライトランザクションを受け付けると（ステップ５−９）、タグスワップ制御部１０４に登録しておいた下位アドレスを削除すると共に、スワップ処理中信号の出力を停止する（ステップ５−２）。これによりメインパイプ１０２でキャンセルされていたトランザクションのキャンセル状態は解除される（ステップ５−１１）。また、メイン制御部１０３は、全てのＣＰＵ１１から最も大きなアドレスについてのリプライトランザクションを受け付けると（ステップ５−９）、タグ書き戻し制御部１０６に対してエントリ使用不可フラグをタグメモリ１３１の障害エントリにセットすることを指示する。これにより、タグ書き戻し制御部１０６は、タグメモリ１３１の障害エントリにエントリ使用不可フラグをセットすると共に、障害エントリと同じ下位アドレスを有する各エントリ中のステータスを、最新データが主記憶装置１４上に存在することを示すものに書き換える（ステップ５−４）。このエントリ使用不可フラグが点灯しているエントリはこれ以後使われなくなる（ステップ５−５）。これによりタグの障害エントリのレベルのみ動的に縮退が完了し継続動作が可能となる。
【００５５】
〔第１の実施の形態の効果〕
本実施の形態によれば、タグメモリ１３１から読み出されたタグ索引結果に訂正不可能障害が検出された場合であっても、データのコヒーレンシを保証することができるので、動作を継続することが可能になる。その理由は、タグメモリ１３１から索引されたタグ索引結果に訂正不可能障害を検出した場合、各ＣＰＵ１１に対して、訂正不可能障害が検出されたタグ索引結果に関連する可能性がある全てのデータを主記憶装置１４に掃き出すことを指示するメモリコントロール／コヒーレンシ制御装置１２を備えているからである。
【００５６】
〔第２の実施の形態〕
次に、本発明にかかる分散共有メモリ型マルチプロセッサシステムの第２の実施の形態について説明する。本実施の形態は、タグメモリに訂正不可能障害が発生した際、コヒーレンシ制御部がビジー状態となるのを防ぐことにより、コヒーレンシ制御部を使用する後続トランザクションが待たされないようにすることを特徴とする。
【００５７】
図６は本実施の形態にかかる分散共有メモリ型マルチプロセッサシステムの構成例を示すブロック図である。本実施の形態と図１に示した第１の実施の形態との相違点は、サービスプロセッサ１１２が追加されている点、及びセル１０の代わりにセル１０ａを備えている点である。セル１０ａは、メモリコントロール／コヒーレンシ制御装置１２の代わりにメモリコントロール／コヒーレンシ制御装置１２ａを備えている点が、セル１０と相違している。
【００５８】
図７はメモリコントロール／コヒーレンシ制御装置１２ａの構成例を示すブロック図である。図３に示したメモリコントロール／コヒーレンシ制御装置１２との相違点は、キャッシュ掃き出し完了レジスタ１１１が追加されている点、タグ部１３の代わりにタグ部１３ａを備えている点、及びメイン制御部１０３の代わりにメイン制御部１０３ａを備えている点である。
【００５９】
キャッシュ掃き出し完了レジスタ１１１には、キャッシュ掃き出し処理が完了したか否かを示す掃き出し完了フラグが格納される。この掃き出し完了フラグは、キャッシュ掃き出し処理が完了したとき、サービスプロセッサ１１２によって“１”にされ、キャッシュ掃き出し処理が完了したことを表示する。
【００６０】
タグ部１３ａは、訂正不可能情報（タグ索引時の下位アドレスと、障害エントリのレベルとを含む）を第三インタフェース２２だけでなく、パス２２２を介してサービスプロセッサ１１２にも出力する点が、第１の実施の形態のタグ部１３と相違している。
【００６１】
メイン制御部１０３ａは、自セル１０ａ内の各ＣＰＵ１１におけるキャッシュ掃き出し処理が完了したことを、キャッシュ掃き出し完了レジスタ１１１に格納されている掃き出し完了フラグに基づいて認識する点（掃き出し完了フラグの値が“１”になった場合、キャッシュ掃き出し処理が完了したと認識する）、及びキャッシュ掃き出し処理の完了を認識した後、掃き出し完了フラグを“０”にする点が、第１の実施の形態のメイン制御部１０３と相違している。
【００６２】
サービスプロセッサ１１２内のファームウェア（ＦＷ）は、タグ部１３ａからパス２２２を介して訂正不可能情報を受け取ったとき、全ての上位アドレスそれぞれについて、その上位アドレスと訂正不可能情報中の下位アドレスとを含むスワップトランザクションを生成し、生成したスワップトランザクションをアドレスが小さいものから昇順に自セル１０ａ内の各ＣＰＵ１１に発行する機能を有する。なお、上記スワップトランザクションは、第一インタフェース２０とは別のパス２２３を介して各ＣＰＵ１１に送る。更に、サービスプロセッサ１１２は、各ＣＰＵ１１からのリプライトランザクションに基づいて、キャッシュ掃き出し処理が完了したと判断したとき、キャッシュ掃き出し完了レジスタ１１１中の掃き出し完了フラグを“１”にする機能も有する。
【００６３】
〔第２の実施の形態の動作〕
次に、本実施の形態の動作について説明する。なお、タグ部１３ａに障害が発生していない場合及びタグ部１３ａに訂正可能障害が発生している場合の動作は、図４のフローチャートを用いて説明した通りであるので、ここでは、タグ部１３ａに訂正不可能障害が発生した場合の動作について説明する。
【００６４】
メイン制御部１０３ａは、第三インタフェース２２を介して受信した訂正不可能情報と、そのビット位置とに基づいて、自セル１０ａ内のタグ部１３ａに訂正不可能な障害が発生したと判断すると（図４のステップ４−２がＹＥＳ、４−４がＮＯ）、図８のフローチャートに示すように、訂正不可能情報に含まれている下位アドレス（タグ索引時に使用された下位アドレス）をタグスワップ制御部１０４に登録する処理（ステップ８−１）と、訂正不可能情報に含まれている下位アドレス及びレベルをタグ書き戻し制御部１０６に登録する処理（ステップ８−３）とを行う。
【００６５】
また、サービスプロセッサ１１２のファームウェアは、タグ部１３ａからパス２２２を介して訂正不可能情報が送られてくると（ステップ８−６）、全ての上位アドレスそれぞれについて、その上位アドレスと上記訂正不可能情報中の下位アドレスとを含むスワップトランザクションを生成し、生成したスワップトランザクションを小さなアドレスから昇順に、パス２２３を介して自セル１０ａ内の各ＣＰＵ１１に発行する（ステップ８−７）。各ＣＰＵ１１は、スワップトランザクションに従ってキャッシュ掃き出し処理を行い、リプライトランザクションをパス２２３を介してサービスプロセッサ１１２に返す（ステップ８−８）。
【００６６】
ステップ８−１でタグスワップ制御部１０４に下位アドレスを登録した後、比較回路１０５の出力が比較一致を示すものになると、メイン制御部１０３ａは、第二インタフェース２１上のトランザクションの発行元が自セル１０ａであれば、パス２２０を介して第二インタフェース出力調停部１０１に対してスワップ処理中信号を出力し、発行元が他のセル１０ａであれば、第三インタフェース２２を介して発行元のセル１０ａにキャンセル情報を送信する（ステップ８−１０）。このような処理は、スワップ処理が完了し、タグスワップ制御部１０４に登録されている下位アドレスが消去されるまで継続される。
【００６７】
一方、サービスプロセッサ１１２は、自セル１０ａ内の全てのＣＰＵ１１から最も大きなアドレスについてのリプライトランザクションを受け付けると、キャッシュ掃き出し完了レジスタ１１１中の掃き出し完了フラグを“１”とし、キャッシュ掃き出し処理が完了したことを表示する（ステップ８−９）。
【００６８】
メイン制御部１０３ａは、掃き出し完了フラグが“１”となると、キャッシュ掃き出し処理が完了したと認識し、タグスワップ制御部１０４に登録しておいた下位アドレスを削除すると共に、スワップ処理中信号の出力を停止する（ステップ８−２）。これによりメインパイプ１０２でキャンセルされていたトランザクションのキャンセル状態は解除される（ステップ８−１１）。更に、ステップ８−２において、メイン制御部１０３ａは、キャッシュ掃き出し完了レジスタ１１１中の掃き出し完了フラグを“０”に変更する処理も行う。
【００６９】
また、メイン制御部１０３ａは、掃き出し完了フラグが“１”となると、タグ書き戻し制御部１０６に対してエントリ使用不可フラグをタグメモリ１３１の障害エントリにセットすることを指示する。これにより、タグ書き戻し制御部１０６は、タグメモリ１３１の障害エントリにエントリ使用不可フラグをセットすると共に、障害エントリと同じ下位アドレスを有する各エントリ中のステータスを、最新データが主記憶装置１４上に存在することを示すものに書き換える（ステップ８−４）。このエントリ使用不可フラグが点灯しているエントリはこれ以後使われなくなる（ステップ８−５）。これによりタグの障害エントリのレベルのみ動的に縮退が完了し継続動作が可能となる。
【００７０】
〔第２の実施の形態の効果〕
本実施の形態では、タグメモリ１３１に訂正不可能障害があった場合、サービスプロセッサ１１２を用いてスワップトランザクションを発行するようにしているので、第１の実施の形態のように、訂正不可能障害発生時にコヒーレンシ制御部１０７がビジー状態となることがない。このため、コヒーレンシ制御部１０７を使用する後続のトランザクションがキャンセルされることがなくなり、第１の実施の形態に比較して性能が向上する。
【００７１】
〔第３の実施の形態〕
次に、本発明にかかる分散共有メモリ型マルチプロセッサシステムの第３の実施の形態について説明する。本実施の形態は、タグメモリに訂正不可能障害が発生した場合、ＣＰＵが行っている通常処理にほとんど影響を与えることなく、タグメモリの障害エントリを動的に縮退できるようにしたことを特徴とする。
【００７２】
本実施の形態は、図１に示すような分散共有メモリ型マルチプロセッサシステムの構成要素である各セル１０（図３に示す構成を有する）において、タグ部１３に訂正不可能障害が発生した場合、図９、図１０のフローチャートに示す処理を行うことにより実現される。なお、タグ部１３に障害が発生していない場合及びタグ部１３に訂正可能障害が発生している場合の動作は、図４のフローチャートを用いて説明した通りであるので、ここでは、タグ部１３に訂正不可能障害が発生した場合の動作について説明する。
【００７３】
メイン制御部１０３は、第三インタフェース２２を介して受信した訂正不可能情報と、そのビット位置とに基づいて、自セル１０内のタグ部１３に訂正不可能な障害が発生したと判断すると（図４のステップ４−２がＹＥＳ、４−４がＮＯ）、図９のフローチャートに示すように、自セル１０、他セル１０が第三インタフェース２２に出力したタグ索引結果の中にＰヒットが存在するか否かを調べる（ステップ９−０）。即ち、ステータスが、最新データがキャッシュ上にあることを示しているタグ索引結果が存在するか否かを調べる。
【００７４】
そして、Ｐヒットがあった場合（ステップ９−０がＹＥＳ）、即ちアクセス対象データがキャッシュ１５上に存在する場合は、ステップ９−１５に進む。これに対して、Ｐヒットがなかった場合（ステップ９−０がＮＯ）、即ちアクセス対象データがキャッシュ１５上に存在すると確定できなかった場合は、タグ索引に使用したトランザクションのフルアドレスをタグスワップ制御部１０４に登録する処理（ステップ９−１）と、タグ索引時に使用した下位アドレスと障害エントリのレベルとをタグ書き戻し制御部１０６に登録する処理（ステップ９−３）と、コヒーレンシ制御部１０７に上記フルアドレスを登録してスワップトランザクションの発行を指示する処理（ステップ９−６）とを行う。
【００７５】
ステップ９−１でタグスワップ制御部１０４にフルアドレスを登録した後、比較回路１０５の出力が比較一致を示すものになると（この場合、比較回路１０５はフルアドレスが一致した場合、その出力を比較一致を示すものにする）、メイン制御部１０３は、第二インタフェース２１上のトランザクションの発行元が自セル１０であれば、パス２２０を介して第二インタフェース出力調停部１０１に対してスワップ処理中信号を出力し、発行元が他のセル１０であれば、第三インタフェース２２を介して発行元のセル１０にキャンセル情報を送信する（ステップ９−１３）。このような処理は、スワップ処理が完了し、タグスワップ制御部１０４に登録されているフルアドレスが消去されるまで継続される。
【００７６】
また、コヒーレンシ制御部１０７は、ステップ９−６においてスワップトランザクションの発行が指示されると、登録されているフルアドレスを含んだスワップトランザクションを自セル１０内の各ＣＰＵ１１に対して発行する（ステップ９−７）。各ＣＰＵ１１は、フルアドレスを含んだスワップトランザクションを受け付けると、それに従ってキャッシュ掃き出し処理を行い、リプライトランザクションをメインパイプ１０２内のメイン制御部１０３に返す（ステップ９−８）。メイン制御部１０３では、自セル１０内の何れかのＣＰＵ１１からの上記フルアドレスに対応するキャッシュ掃き出し処理が完了した旨のリプライトランザクションを受け付けると（ステップ９−９）、タグスワップ制御部１０４に登録したフルアドレスを削除すると共に、スワップ処理中信号の出力を停止する（ステップ９−２）。これによりメインパイプ１０２でキャンセルされていたトランザクションのキャンセル状態は解除される（ステップ９−１４）。ＣＰＵ１１のキャッシュ１５に最新データがあった場合は主記憶装置１４に対してデータが書き戻され、無かった場合は元々主記憶装置１４のデータが最新であったことになるので、メインパイプ１０２上でキャンセルされていたタグ索引トランザクションは主記憶装置１４にアクセスすることで最新データを得ることができる。
【００７７】
メイン制御部１０３は、ステップ９−６の処理が完了すると、タグ索引時に使用した下位アドレスをコヒーレンシ制御部１０７に登録し、第一インタフェース２０が通常処理で使用されていないタイミングで、スワップトランザクションを発行することを指示する。これにより、コヒーレンシ制御部１０７は、先ず、全ての上位アドレスについて、その上位アドレスと登録された下位アドレスとを含むスワップトランザクションを生成する。その後、コヒーレンシ制御部１０７は、第一インタフェース２０の空き状況を監視し、ＣＰＵ１１が通常処理に第一インタフェース２０を使用していないタイミングで、上記生成したスワップトランザクションを、アドレスが小さい順に自セル１０内の各ＣＰＵに対して発行する（ステップ９−１０）。
【００７８】
各ＣＰＵ１１は、スワップトランザクションを受け付けると、キャッシュ掃き出し処理を行い、リプライトランザクションをメイン制御部１０３に返す（ステップ９−１１）。メイン制御部１０３は、自セル１０内の全てのＣＰＵ１１から最も大きなアドレスについてのリプライトランザクションを受け付けると（ステップ９−１２）、タグ書き戻し制御部１０６に対してエントリ使用不可フラグをタグメモリ１３１の障害エントリにセットすることを指示する。これにより、タグ書き戻し制御部１０６は、タグメモリ１３１の障害エントリにエントリ使用不可フラグをセットすると共に、障害エントリと同じ下位アドレスを有する各エントリ中のステータスを、最新データが主記憶装置１４上に存在することを示すものに書き換える（ステップ９−４）。このエントリ使用不可フラグが点灯しているエントリはこれ以後使われなくなる（ステップ９−５）。これによりタグの障害エントリのレベルのみ動的に縮退が完了し継続動作が可能となる。
【００７９】
次に、ステップ９−０でＰヒット有りと判断された場合の動作を、図１０のフローチャートを参照して説明する。自セル１０または他セル１０のタグ索引結果の中にＰヒットがあった場合は、メイン制御部１０３はＰヒットセルのＣＰＵ１１のキャッシュ１５をアクセスするための処理を行う（ステップ１０−８）。本実施の形態ではタグ障害があっても、その故障レベルを含めてＰヒットがあった場合はＰヒット処理を優先する。そのため、メイン制御部１０３は、タグスワップ制御部１０４にタグ索引時に使用した下位アドレスを登録する処理は行わず（ステップ１０−１）、タグ書き戻し制御部１０６にタグ索引時に使用した下位アドレス及び障害の発生したレベルを登録する処理（ステップ１０−２）と、コヒーレンシ制御部１０７にタグ索引時に使用した下位アドレスを登録してスワップトランザクションの発行を指示する処理を行う。これにより、コヒーレンシ制御部１０７は、先ず、全ての上位アドレスについて、その上位アドレスと登録された下位アドレスとを含むスワップトランザクションを生成する。その後、コヒーレンシ制御部１０７は、第一インタフェース２０の空き状況を監視し、ＣＰＵ１１が通常処理に第一インタフェース２０を使用していないタイミングで、上記生成したスワップトランザクションを、アドレスが小さい順に自セル１０内の各ＣＰＵに対して発行する。
【００８０】
各ＣＰＵ１１は、スワップトランザクションを受け付けると、キャッシュ掃き出し処理を行い、リプライトランザクションをメイン制御部１０３に返す（ステップ１０−６）。メイン制御部１０３は、自セル１０内の全てのＣＰＵ１１から最も大きなアドレスについてのリプライトランザクションを受け付けると（ステップ１０−７）、タグ書き戻し制御部１０６に対してエントリ使用不可フラグをタグメモリ１３１の障害エントリにセットすることを指示する。これにより、タグ書き戻し制御部１０６は、タグメモリ１３１の障害エントリにエントリ使用不可フラグをセットすると共に、障害エントリと同じ下位アドレスを有する各エントリ中のステータスを、最新データが主記憶装置１４上に存在することを示すものに書き換える（ステップ１０−３）。このエントリ使用不可フラグが点灯しているエントリはこれ以後使われなくなる（ステップ１０−４）。これによりタグの障害エントリのレベルのみ動的に縮退が完了し継続動作が可能となる。
【００８１】
なお、第１の実施の形態において、図５のステップ５−７の代わりに、第３の実施の形態において説明した、図９のステップ９−１０の処理を行うようにしても良い。
【００８２】
〔第３の実施の形態の効果〕
本実施の形態ではタグメモリ１３１に訂正不可能障害が発生した場合、キャッシュ掃き出し処理よりもＣＰＵ１１が行う通常処理を優先して行い、キャッシュ掃き出し処理は、ＣＰＵ１１の通常処理の隙間を狙って行う。これにより処理性能をほとんど劣化させることなく、データのコヒーレンシを保証することが可能になる。
【産業上の利用可能性】
【００８３】
本発明は、分散共有メモリ型マルチプロセッサシステム等のようにキャッシュメモリを有する複数のＣＰＵを備え、データのコヒーレンシを保証することが必要になるマルチプロセッサシステムに適用することができる。
【図面の簡単な説明】
【００８４】
【図１】本発明にかかる分散共有メモリ型マルチプロセッサシステムの第１の実施の形態の構成例を示すブロック図である。
【図２】タグ部１３の構成例を示すブロック図である。
【図３】メモリコントロール／コヒーレンシ制御装置１２の構成例を示すブロック図である。
【図４】主にタグメモリ１３１に訂正可能障害が発生したときの、第１の実施の形態の処理例を示すフローチャートである。
【図５】主にタグメモリ１３１に訂正不可能障害が発生したときの、第１の実施の形態の処理例を示すフローチャートである。
【図６】本発明にかかる分散共有メモリ型マルチプロセッサシステムの第２の実施の形態の構成例を示すブロック図である。
【図７】第２の実施の形態で使用するメモリコントロール／コヒーレンシ制御装置１２ａの構成例を示すブロック図である。
【図８】主にタグメモリ１３１に訂正不可能障害が発生したときの、第２の実施の形態の処理例を示すフローチャートである。
【図９】主にタグメモリ１３１に訂正不能障害が発生し、且つＰヒットがなかったときの、第３の実施の形態の処理例を示すフローチャートである。
【図１０】主にタグメモリ１３１に訂正不可能が発生し、且つＰヒットがあったときの、第３の実施の形態の処理例を示すフローチャートである。
【符号の説明】
【００８５】
１０、１０ａ…セル
１１…ＣＰＵ
１２、１２ａ…メモリコントロール／コヒーレンシ制御装置
１０１…第二インタフェース出力調停部
１０２…メインパイプ
１０３、１０３ａ…メイン制御部
１０４…タグスワップ制御部
１０５…比較回路
１０６…タグ書き戻し制御部
１０７…コヒーレンシ制御部
１０８…主記憶アクセス制御部
１１１…キャッシュ掃き出し完了レジスタ
１１２…サービスプロセッサ
１３、１３ａ…タグ部
１３１…タグメモリ
１３２…ＥＣＣチェック＆訂正回路
１３３…比較回路
１４…主記憶装置
１５…キャッシュ（キャッシュメモリ）
２０…第一インタフェース
２１…第二インタフェース
２２…第三インタフェース
【図１】
2008052550.tif 000003
【図２】
2008052550.tif 000004
【図３】
2008052550.tif 000005
【図４】
2008052550.tif 000006
【図５】
2008052550.tif 000007
【図６】
2008052550.tif 000008
【図７】
2008052550.tif 000009
【図８】
2008052550.tif 000010
【図９】
2008052550.tif 000011
【図１０】
2008052550.tif 000012