(57)【要約】本発明は、複数の処理装置（PU）と、前記処理装置（PU）からのデータを格納するための共有メモリ（M）と、メモリー（M）と複数の処理装置（PU）とを結合するための相互接続手段（IM）とを有するデータ処理システムに関する。処理装置（PU）のうちの少なくとも１つはキャッシュメモリ(C)を具えている。さらに、前記複数の処理装置（PU）のうち少なくとも１つにおけるキャッシュメモリ(C)の少なくともいくつかの状態遷移をバッファに格納する遷移バッファ（STB）が設けられる。あらゆるキャッシュコヒーレンス違反をも発見するために、遷移バッファ（STB）のデータに基づいて、前記複数の処理装置（PU）のキャッシュ(C)のキャッシュコヒーレンスを監視する監視手段（MM）が設けられる。
2008517370.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムであって、
複数の処理装置の少なくとも１つがキャッシュメモリを具える、複数の処理装置と、
前記複数の処理装置からのデータを格納するための共有メモリと、
前記共有メモリと前記複数の処理装置とを結合するための相互接続手段と、
前記複数の処理装置の少なくとも１つのキャッシュメモリの状態遷移を格納するための遷移バッファと、
キャッシュコヒーレンス違反を決定するために、前記遷移バッファに格納される状態遷移に基づいて、前記複数の処理装置の前記少なくとも１つのキャッシュメモリのキャッシュコヒーレンスを監視するための監視手段と、
を具えることを特徴とするデータ処理システム。
【請求項２】
前記監視手段が、キャッシュコヒーレンス違反が決定された場合、通知信号を送出するように構成されていることを特徴とする請求項１に記載のデータ処理システム。
【請求項３】
前記監視手段が、決定されたキャッシュコヒーレンス違反を実行時に補修するように構成されていることを特徴とする請求項１に記載のデータ処理システム。
【請求項４】
請求項３に記載のデータ処理システムであって、
データ処理システムの内部レジスタでバウンダリスキャンを実行するためのバウンダリスキャン手段と、
バウンダリチェーンの不良部分を修正するためのデバッグ手段と、
をさらに具えることを特徴とするデータ処理システム。
【請求項５】
前記監視手段が、プログラム可能な処理装置にソフトウェアで実装されることを特徴とする請求項１〜３のいずれかに記載のデータ処理システム。
【請求項６】
前記遷移バッファが前記相互接続手段に配置され、前記相互接続手段が前記遷移バッファを更新することを特徴とする請求項５に記載のデータ処理システム。
【請求項７】
前記監視手段が、プログラム可能な処理装置に実装され、前記遷移バッファが、メモリマップドＩ／Ｏレジスタとして監視手段内に配置されることを特徴とする請求項１〜３のいずれかに記載のデータ処理システム。
【請求項８】
前記状態遷移が前記共有メモリにも格納され、前記監視手段が、前記遷移バッファおよび／または前記共有メモリに格納される前記状態遷移の履歴データに基づいて、キャッシュコヒーレンスプロトコル違反を検証するように構成されていることを特徴とする請求項３、５または７に記載のデータ処理システム。
【請求項９】
複数の処理装置が相互接続手段を経て共有メモリに接続され、複数の処理装置の少なくとも１つがキャッシュメモリを具えるデータ処理システム内の複数の処理装置のキャッシュコヒーレンスを監視する方法であって、
前記複数の処理装置の少なくとも１つのキャッシュメモリの状態遷移をバッファに格納するステップと、
キャッシュコヒーレンス違反を決定するために、バッファに格納された状態遷移に基づいて、前記複数の処理装置の前記少なくとも１つのキャッシュメモリのキャッシュコヒーレンスを監視するステップと、
を具えることを特徴とする監視方法。
【請求項１０】
前記少なくとも１つのキャッシュメモリのキャッシュコヒーレンスが、前記状態遷移の履歴データに基づいて監視されることを特徴とする請求項９に記載の方法。
【請求項１１】
状態遷移が、前記少なくとも１つのキャッシュメモリまたは遷移バッファに格納されることを特徴とする請求項９または１０に記載の方法。
【請求項１２】
データ処理システムであって、
複数の処理装置と、
前記複数の処理装置からのデータを格納するための共有メモリと、
前記共有メモリと前記複数の処理装置とを結合するための相互接続手段と、
前記データ処理システムの内部でバウンダリスキャンを実行するためのバウンダリスキャン手段と、
バウンダリチェーンの不良部分を実行時に修正するためのデバッグ手段と、
を具えることを特徴とするデータ処理システム。
【請求項１３】
前記複数の処理装置の少なくとも１つのキャッシュの状態遷移を格納するための遷移バッファと、
キャッシュコヒーレンス違反を決定するために、前記遷移バッファに格納された前記状態遷移に基づいて、前記複数の処理装置の前記少なくとも１つのキャッシュのキャッシュコヒーレンスを監視するための監視手段と、
をさらに具えることを特徴とする請求項１１に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理装置と、これらの処理装置からのデータを格納するための共有メモリと、その共有メモリを複数の処理装置と結合するための相互接続手段とを有するデータ処理システムに関するものである。また、本発明は、複数の処理装置のキャッシュコヒーレンスを監視する方法に関するものでもある。
【背景技術】
【０００２】
今日のシステムオンチップにおいて、複数の処理装置は、それぞれが何らかの相互接続を介してアクセスできる１つのメモリを共有する。一般的に、この種の相互接続は処理装置−メモリ相互接続であって、チップ上の単一バスまたは複合ポイント・ツー・ポイント型ネットワークとすることができる。処理装置はキャッシュメモリを有することが多い。キャッシュはハードウェア管理されるオンチップメモリであり、長いメモリレイテンシを隠蔽し、外部ＤＲＡＭの帯域幅を節約する。多数のキャッシュがＩＣ内に存在する場合、キャッシュは正しいデータを処理装置に送信するために同期しなければならない。この問題は、キャッシュコヒーレンスとして知られている。インテルのMontecito、ＩＢＭのPower 5、フィリップスのViper PNX8550、サンのMAJC等のような現代のマルチプロセッサ集積回路は、一般的に、何百万ものトランジスタを具えるので、その設計を検証するのがますます難しくなっている。再製造しないでバグの回避方法を見つけるか、あるいはハードウェアを修正しチップを迅速に再製造するために、ハードウェアのいかなる種類の論理バグもできるだけ速く発見することが望ましい。このようにして、製品化に要する時間は短縮される。
【０００３】
任意のハードウェアバグを見つける技術は、一般的にデバッグと呼ばれている。現代の複雑な集積回路は、ブレイクポイント・モジュールとして具現化できるテストおよびデバッグ機能を含む。一般的に、この種のモジュールは、特定のメモリ領域等からのロードのような特定のイベントで起動される。集積回路のクロックは、ＩＣの内部レジスタおよびメモリのいくつかを慎重に検査するために停止される。各集積回路は、集積回路の検査を実行するためのジョイント・テスト・アクション・グループJTAGインターフェイスを具える。JTAGはIEEE 1149標準規格である。
【０００４】
しかし、ブレイクポイントモジュールは、設計期間中に決定する必要がある特定の一組のイベントに対してのみ有効である。この種のブレイクポイントモジュールは、集積回路の限られた範囲のハードウェアに対するものである。ブレイクポイントモジュールは、バス上のアドレス信号を監視することができ、ブレイクポイントは、特定のアドレスがバスにアクセスされるとすぐに実行される。これらのブレイクポイントモジュールは、ＩＣ内の選択された信号の検査を可能にするハードウェアデバッグ方法である。したがって、設計時にある程度予想されるバグのみが、この種のブレイクポイントモジュールにより発見できる。その他のバグは、この種のブレイクポイントモジュールにより発見されることはない。
【０００５】
非特許文献１には、キャッシュコヒーレントマルチプロセッサのフォルトトレランスを改良する方法が開示されている。ハードウェアでキャッシュコヒーレンス動作を動的に検証することによって、製造誤り、ソフトエラーおよび設計誤りによって生じるエラーを検出できる。したがって、マルチプロセッシング環境内の種々の処理装置のキャッシュコヒーレンスの検証がハードウェアで動的に行われる。マルチプロセッサ内の各処理装置は、ハードウェアコヒーレンス検査装置と、それぞれの処理装置間で状態遷移を伝達するための追加の検証バスとを具える。しかし、この種の方法によると、追加のバスが必要になり、それぞれの処理装置の構造はより複雑になる。さらに、検証用ハードウェアは、この種の検証用ハードウェアを実装するために、追加の検証と設計労力を必要とする。
【０００６】
非特許文献２には、分散署名解析を用いた他の検証方法が開示されている。この方法では、各コヒーレント処理装置は、その状態遷移の少なくとも一部を含む署名を動的に生成する。署名は中央に集められ、プロトコル違反、すなわちインバリアントの検証が実行される。しかし、この技術は、署名の分散のための専用のインフラを必要とし、ハードウェアの追加の複雑性をもたらすことになる。
【０００７】
【非特許文献１】Cantin他、「Dynamic Verification of Cache Coherence Protocol」、Workshops on Memory Performance Issues、 ２００１年６月
【非特許文献２】Sorin他、「Dynamic Verification of End-to-End Multiprocessor Invariants」、Proceedings of the International Conference on Dependable Systems and Networks、サンフランシスコ、２００３年６月２２-２３日
【発明の開示】
【発明が解決しようとする課題】
【０００８】
それゆえ、本発明の目的は、種々の処理装置のキャッシュコヒーレンスに対する改良された監視機能を有するデータ処理システムおよび種々の処理装置のキャッシュコヒーレンスを監視する方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の目的は、請求項１に係るデータ処理システムおよび、請求項９に係る種々の処理装置のキャッシュコヒーレンスを監視する方法により解決される。
【００１０】
従って、複数の処理装置と、前記処理装置からのデータを格納するための共有メモリと、そのメモリと複数の処理装置とを結合するための相互接続手段とを有するデータ処理システムが提供される。処理装置のうちの少なくとも１つは、キャッシュメモリを具えている。さらに、前記複数の処理装置のうちの１つ以上の処理装置のキャッシュメモリの状態遷移の少なくともいくつかを格納する遷移バッファが設けられる。さらに、いかなるキャッシュコヒーレンス違反も決定するために、遷移バッファのデータに基づいて前記複数の処理装置のキャッシュのキャッシュコヒーレンスを監視する監視手段が設けられる。
【００１１】
したがって、処理装置のいずれも、処理装置のキャッシュのキャッシュコヒーレンスを検証するために、状態遷移を追跡する必要はない。それに対して、状態遷移の追跡は監視手段により実行されるため、処理装置の設計は変えないままにでき、この設計は容易に拡張することができる。
【００１２】
本発明の一態様では、監視手段は、キャッシュコヒーレンスプロトコル違反が起こった場合、この種の違反を処理できるように、信号を送出するように構成される。
【００１３】
本発明のさらに他の態様では、監視手段は、決定されたキャッシュコヒーレンス違反の元となるバグの補修を実行時に開始する。すなわち、データ処理システムを停止させ再設計をすることを不要にする。
【００１４】
本発明の他の態様では、監視手段は、前記複数の処理装置のうちの１つに、ソフトウェアモニタとして実装する。従って、監視手段は、再プログラム可能で、フレキシブルである。
【００１５】
本発明のさらに他の態様では、状態遷移バッファは相互接続手段内に配置され、この場合、相互接続手段が遷移バッファを更新する。したがって、状態遷移に関する情報が相互接続手段から得られるので、処理装置からの追加信号は必要ない。
【００１６】
本発明のさらに他の態様では、監視手段は専用の処理装置上に実装され、遷移バッファは前記専用の処理装置内にメモリマップドＩ／Ｏレジスタとして実装される。
【００１７】
本発明のさらに他の態様では、バグまたはキャッシュコヒーレンス違反の検証は、遷移バッファおよび／または共有メモリに格納される状態遷移の履歴データに基づいて実行される。遷移バッファが限られたサイズしか有さないので、キャッシュコヒーレンス違反に関する解析を長期間にわたり実行できるように、状態遷移の履歴データは共有メモリに格納することもできる。
【００１８】
また、本発明は、処理装置の少なくともいくつかがキャッシュメモリを具え、相互接続手段を介して共有メモリに接続されている、データ処理システム内の複数の処理装置のキャッシュコヒーレンスを監視する方法に関するものでもある。前記処理装置のキャッシュメモリの状態遷移はバッファに格納され、前記複数の処理装置のキャッシュメモリのキャッシュコヒーレンスは状態遷移のバッファに格納されたデータに基づいて監視される。
【００１９】
本発明は、キャッシュコヒーレンスプロトコルの正確性を監視するという考えに基づいている。処理装置の状態遷移は遷移バッファに格納される。監視手段は、バッファに格納された状態遷移を監視し、あらゆる容認できない状態遷移を発見する。この種の容認できない状態遷移が発見された場合、監視手段はエラー通知を開始するか、発見されたバグの補修を開始することができる。
【００２０】
したがって、複雑な集積回路内の機能的なハードウェアバグさえ、集積回路の製造後でも解決することができる。これは、実行時にオンザフライで行われる。したがって、本発明は、従来技術と比較すると、非常にフレキシブルで包括的メカニズムである。この種の機構により、結果としてプロトコル違反になるハードウェア・キャッシュコヒーレンス論理の任意のバグを発見し、解決することが可能となる。
【００２１】
本発明のこれらおよびその他の態様は、以下に記載されている実施形態を参照して明瞭に説明さる。
【発明を実施するための最良の形態】
【００２２】
図１は、第１の実施形態に係る、マルチプロセッサ環境の基本構成のブロック図である。図には複数の処理装置PU、相互接続手段IMおよびメモリMが示されている。さらに、監視手段MMおよび遷移バッファSTBも示されている。遷移バッファSTBは相互接続手段IMの位置に配置され、監視手段MMは相互接続手段IMに接続されている。処理装置PUのいくつかはキャッシュメモリCも具えている。この種のキャッシュメモリCはレベル１キャッシュとすることができ、ハードウェア管理オンチップメモリを構成し、長いメモリレイテンシを隠蔽し、外部ＤＲＡＭの帯域幅を節約する。多数のキャッシュがＩＣ内に存在する場合、キャッシュは正しいデータを処理装置に送信するために同期しなければならない。
【００２３】
キャッシュ状態遷移は、相互接続トランザクションから得られる。遷移バッファSTBは、処理装置PUのキャッシュの状態遷移を取り込む働きをする。キャッシュコヒーレンスプロトコルは、処理装置PUの正しい処理を確認するために実装される。監視手段MMは、キャッシュコヒーレンスプロトコルにおけるあらゆる違反を発見するために、遷移バッファSTBにアクセスして状態遷移を調べる。監視手段MMが、キャッシュコヒーレンスプロトコル違反を発見すると、このエラーを信号するか、あるいは、潜在的バグの補修を開始することができる。
【００２４】
監視手段MMは、プログラム可能な処理装置にソフトウェアモニタとして実装できる。代案として、監視手段は、専用の処理装置PUとして実装することもできる。
【００２５】
第１の実施形態に係る遷移バッファSTBは、相互接続手段の近傍に配置される。遷移バッファSTBは、処理装置PUに対する１つのライトポートと、監視手段MMに対する１つのリードポートとを有するFIFOとして実装することができる。
【００２６】
図２は、第２の実施形態に係る、マルチプロセッサ環境の基本構成のブロック図である。図には複数の処理装置PU、相互接続手段IMおよびメモリMが示されている。さらに、遷移バッファSTBを有する監視手段MMも示されている。したがって、第１実施形態と異なり、監視手段MMおよび遷移バッファSTBの両方が１台の装置内に実装される。遷移バッファSTBは、メモリマップドＩ／ＯレジスタMMIOとして実装することが好ましい。第１の実施形態のように、相互接続手段IMは、キャッシュコヒーレント処理装置の状態遷移を自動的に更新する。
【００２７】
第１あるいは第２の実施形態に従う監視手段MMは、キャッシュコヒーレンスプロトコル違反を検出するように構成される。変更状態（Modified）、共有状態（Shared）、無効状態（Invalid）を有するＭＳＩプロトコルに対しては、キャッシュコヒーレンスプロトコル違反が変更状態の多数のキャッシュ・ラインから生じ得る。また、変更されたキャッシュ・ラインが処理装置（PU）の他のキャッシュ(C)に共有状態で存在し得る。キャッシュコヒーレンスプロトコルの詳細については、John L. HennessyおよびDavid Pattersonによる「Computer Architecture」（3rd edition, Else Vier Science, 2003、 Chapter 6.3 - 6.4.）を参照されたい。したがって、遷移バッファSTBを用いて、キャッシュコヒーレント処理装置の識別番号と、変更から共有、共有から無効等のような遷移識別番号と、処理装置のアドレスとを記録または格納することができる。
【００２８】
監視手段MMは、あらゆるキャッシュコヒーレンスプロトコル違反を見つけるために、状態遷移の履歴を調べる。また、監視手段MMは、長期間のキャッシュコヒーレンス違反を検出できるように、長期間の状態遷移の履歴データを形成するために、遷移バッファSTBにだけでなく共有メモリMにも状態遷移を格納する。その後、監視手段MMは、メモリMおよび遷移バッファSTBに格納された状態遷移の全履歴を調べ、違反を検出する。
【００２９】
マルチプロセッサがキャッシュコヒーレンスプロトコルに関連する場合、上述した方法はキャッシュコヒーレントマルチプロセッサに特に有効である。プロトコルは、通常単純で、単に少数のインバリアントを有するだけである。
【００３０】
図３は、第３の実施形態に係る、マルチプロセッサ環境の基本構成のブロック図である。処理装置PU、相互接続手段IM、メモリMおよび監視手段MMに加えて、バウンダリスキャン手段BSMおよびデバッグ手段DMを設ける。
【００３１】
第１あるいは第２の実施形態に基づくものとし得る第３の実施形態においては、バグ、すなわち、監視手段MMで決定されるキャッシュコヒーレンス違反は、オンザフライで、すなわち、それらの発見直後に、補修される。ハードウェアデバッグ手段が、（おそらく監視手段MMを用いて）ハードウェアバグを発見する。次に、監視手段によるハードウェアバグの検出時に実行される補修でモニタが更新される。言い換えると、デバッグは実行時に実行される。発見されたバグの位置を決定するために、スキャンチェーンまたはバウンダリスキャンがバウンダリスキャン手段BCMにより実行される。バウンダリスキャンは、IEEE 1149.1標準規格に記載されている。一般的に、マルチプロセッサ環境を有するチップは、ジョイント・テスト・アクション・グループJTAGインターフェイスを具える。通常動作中、バウンダリセルは働かず、データがマルチプロセッシング環境内を伝播するのを可能にする。しかし、テストモード中、全入力信号は分析のために取り込まれ、全出力信号はリセットされ、ポートTAP（テストアクセスポート）コントローラおよび命令レジスタで制御されるスキャンセルの動作をテストする。次に、デバッグ手段DMを用いて、検出されたキャッシュコヒーレンス違反または検出されたバグに関連するバウンダリチェーン内の不良部分を修正する。
【００３２】
従って、複数の処理装置、共有メモリ、および複数の処理装置と共有メモリとを結合するための相互接続手段を具えるデータ処理システムに、バウンダリスキャン装置がバウンダリスキャンを実行するために設けられる。さらに、データ処理システムの論理バグを訂正するために、デバッグ手段がバウンダリスキャンの一部を修正するように設けられる。
【００３３】
この種のシステムの利点は、システムが拡張可能であることにあり、非常に多くの処理装置に対しても、使用する面積と電力は少ないことにある。追加のバスは必要なく、ソフトウェア監視のために解決策をフレキシブルに容易に変更できる。
【００３４】
遷移バッファに状態遷移を格納する代わりに、あるいは、これに加えて、状態遷移の少なくとも一部をキャッシュメモリCに格納できる。
【００３５】
上述の実施形態は処理装置に配置されるキャッシュ、すなわちレベル１キャッシュのキャッシュコヒーレンスプロトコルに関して記載してきたが、本発明の基本原則は、レベル２キャッシュまたはレベル３キャッシュにも適用可能である。また、キャッシュコヒーレンス違反を決定するために、キャッシュコヒーレンスプロトコルに含まれるキャッシュの状態遷移を格納するための遷移バッファおよび格納された状態遷移を監視するための監視手段を用いてもよい。
【００３６】
上述の実施例は例示であり、本発明を限定するものではなく、当業者は添付の特許請求の範囲の範囲を逸脱することなく多くの代替実施例を設計可能であるということに留意する必要がある。「具えている」という単語は、請求項で述べていない要素またはステップの存在を除外するものではない。単数形で述べる要素は複数の要素を除外するものではない。いくつかの手段を列挙している装置請求項において、これらの手段のいくつかは、ハードウェアの同一の要素によって具現化できる。特定の手段が相互に異なる従属請求項に引用されているが、このことは、これらの手段の組合せが有利に使用できないことを示すものではない。
【図面の簡単な説明】
【００３７】
【図１】第１の実施形態に係る、マルチプロセッサ環境の基本構成のブロック図である。
【図２】第２の実施形態に係る、マルチプロセッサ環境の基本構成のブロック図である。
【図３】第３の実施形態に係る、マルチプロセッサ環境の基本構成のブロック図である。
【図１】
2008517370.tif 000003
【図２】
2008517370.tif 000004
【図３】
2008517370.tif 000005
【国際調査報告】
2008517370.tif 000006
2008517370.tif 000007
2008517370.tif 000008