(57)【特許請求の範囲】
【請求項１】
複数ノード・データ処理システム内でキャッシュ・コヒーレンスを検証する方法であって、
前記データ処理システムをシミュレートすることによって生成された活動トレース内のトランザクション・ペアを識別するステップであって、前記トランザクション・ペアには、前記データ処理システムの第１のノードのシステム・バス上のプロセッサを起点とし、かつ第２のノードと関連するメモリ・ロケーションを参照するトランザクションを表す外部ノード・トランザクション（ＦＮＴ）と、前記第２のノードのシステム・バス上で行われるＦＮＴからもたらされるトランザクションを表すホーム・ノード・トランザクション（ＨＮＴ）とが含まれるステップと、
前記トランザクション・ペアのそれぞれをマージして対応するマージしたトランザクション（ＭＴ）を形成するステップであって、前記マージしたトランザクションは、前記ＦＮＴおよび前記ＨＮＴの属性を含むステップと、
前記トランザクション・ペアのそれぞれをそれに対応するマージしたトランザクションで置き換えることによって変更した活動トレースを作成するステップであって、前記変更した活動トレースは、コヒーレンス・チェッカによるキャッシュ・コヒーレンス検証に適するステップとを含む方法。
【請求項２】
前記ＨＮＴが、前記第１のノードを前記第２のノードに接続するスイッチをソースとする請求項１に記載の方法。
【請求項３】
前記マージしたトランザクションが、前記ＦＮＴの開始時刻およびソースを含む請求項１に記載の方法。
【請求項４】
前記マージしたトランザクションが、前記ＨＮＴの終了時刻を含む請求項１に記載の方法。
【請求項５】
前記ＦＮＴが非所有権読み取りトランザクションを含み、前記ＦＮＴによって参照されるキャッシュ・ラインが、前記第１のノード上のすべてのキャッシュ内で無効である請求項１に記載の方法。
【請求項６】
前記ＦＮＴが所有権トランザクションを含み、前記ＦＮＴによって参照されるキャッシュ・ラインが、前記第１のノード上のキャッシュによって固有に所有されていない請求項１に記載の方法。
【請求項７】
前記ＦＮＴが書き込みトランザクションを含む請求項１に記載の方法。
【請求項８】
前記ＦＮＴが、参照されるキャッシュ・ラインが前記第１のノードのすべてのキャッシュ内で無効である非所有権読み取りトランザクション、前記参照されるキャッシュ・ラインが前記第１のノード内のキャッシュによって固有に所有されていない所有権トランザクション、および書き込みトランザクションから構成される一群から選択された１つのトランザクションを含む請求項１に記載の方法。
【請求項９】
前記ＭＴの開始時刻およびソースが前記ＦＮＴの開始時刻および終了時刻に等しく、かつ前記ＭＴの終了時刻、応答、および応答時間が前記ＨＮＴの終了時刻、応答、および応答時間に等しい請求項８に記載の方法。
【請求項１０】
前記活動トレースを変更するステップが、前記第１のノードを前記第２のノードに接続するスイッチをソースとする前記活動トレース内の無効にするトランザクションを削除するステップをさらに含む請求項１に記載の方法。
【請求項１１】
複数ノード・データ処理システム内のキャッシュ・コヒーレンスを検証するためコンピュータ・システムを所定の手段として機能させる常駐するコンピュータ・プログラムであって、前記所定の手段は、
前記データ処理システムをシミュレートすることによって生成された活動トレース内のトランザクション・ペアを識別する手段であって、前記トランザクション・ペアには、前記データ処理システムの第１のノードのシステム・バス上のプロセッサを起点とし、かつ第２のノードと関連するメモリ・ロケーションを参照するトランザクションを表す外部ノード・トランザクション（ＦＮＴ）と、前記第２のノードのシステム・バス上で行われるＦＮＴからもたらされるトランザクションを表すホーム・ノード・トランザクション（ＨＮＴ）とが含まれる手段と、
前記トランザクション・ペアのそれぞれをマージして対応するマージしたトランザクション（ＭＴ）を形成する手段であって、前記マージしたトランザクションは、前記ＦＮＴおよび前記ＨＮＴの属性を含む手段と、
前記トランザクション・ペアのそれぞれをそれに対応するマージしたトランザクションで置き換えることによって変更した活動トレースを作成する手段であって、前記変更した活動トレースは、コヒーレンス・チェッカによるキャッシュ・コヒーレンス検証に適する手段と、を含むコンピュータ・プログラム。
【請求項１２】
前記ＨＮＴが、前記第１のノードを前記第２のノードに接続するスイッチをソースとする請求項１１に記載のコンピュータ・プログラム。
【請求項１３】
前記マージしたトランザクションが、前記ＦＮＴの開始時刻およびソースを含む請求項１１に記載のコンピュータ・プログラム。
【請求項１４】
前記マージしたトランザクションが、前記ＨＮＴの終了時刻を含む請求項１１に記載のコンピュータ・プログラム。
【請求項１５】
前記ＦＮＴが非所有権読み取りトランザクションを含み、前記ＦＮＴによって参照されるキャッシュ・ラインが、前記第１のノード上のすべてのキャッシュ内で無効である請求項１１に記載のコンピュータ・プログラム。
【請求項１６】
前記ＦＮＴが所有権トランザクションを含み、前記ＦＮＴによって参照されるキャッシュ・ラインが、第１のノード上のキャッシュによって固有に所有されていない請求項１１に記載のコンピュータ・プログラム。
【請求項１７】
前記ＦＮＴが書き込みトランザクションを含む請求項１１に記載のコンピュータ・プログラム。
【請求項１８】
前記ＦＮＴが、参照されるキャッシュ・ラインが前記第１のノードのすべてのキャッシュ内で無効である非所有権読み取りトランザクション、前記参照されるキャッシュ・ラインが前記第１のノード内のキャッシュによって固有に所有されていない所有権トランザクション、および書き込みトランザクションから構成される一群から選択された１つのトランザクションを含む請求項１１に記載のコンピュータ・プログラム。
【請求項１９】
前記ＭＴの開始時刻およびソースが前記ＦＮＴの開始時刻および終了時刻に等しく、かつ前記ＭＴの終了時刻、応答、および応答時間が前記ＨＮＴの終了時刻、応答、および応答時間に等しい請求項１８に記載のコンピュータ・プログラム。
【請求項２０】
前記活動トレースを変更する手段が、前記第１のノードを前記第２のノードに接続するスイッチをソースとする前記活動トレース内の無効にするトランザクションを削除する手段をさらに含む請求項１１に記載のコンピュータ・プログラム。
【請求項２１】
複数ノード・データ処理システム内のキャッシュ・コヒーレンスを検証するデータ処理システムであって、
前記データ処理システムをシミュレートすることによって生成された活動トレース内のトランザクション・ペアを識別する手段であって、前記トランザクション・ペアには、前記データ処理システムの第１のノードのシステム・バス上のプロセッサを起点とし、かつ第２のノードと関連するメモリ・ロケーションを参照するトランザクションを表す外部ノード・トランザクション（ＦＮＴ）と、前記第２のノードのシステム・バス上で行われるＦＮＴからもたらされるトランザクションを表すホーム・ノード・トランザクション（ＨＮＴ）とが含まれる手段と、
前記トランザクション・ペアのそれぞれをマージして対応するマージしたトランザクション（ＭＴ）を形成する手段であって、前記マージしたトランザクションは、前記ＦＮＴおよび前記ＨＮＴの属性を含む手段と、
前記トランザクション・ペアのそれぞれをそれに対応するマージしたトランザクションで置き換えることによって変更した活動トレースを作成する手段であって、前記変更した活動トレースは、コヒーレンス・チェッカによるキャッシュ・コヒーレンス検証に適する手段と、を含むデータ処理システム。
【請求項２２】
前記ＦＮＴが、参照されるキャッシュ・ラインが前記第１のノードのすべてのキャッシュ内で無効である非所有権読み取りトランザクション、前記参照されるキャッシュ・ラインが前記第１のノード内のキャッシュによって固有に所有されていない所有権トランザクション、および書き込みトランザクションから構成される一群から選択された１つのトランザクションを含む請求項２１に記載のデータ処理システム。
【請求項２３】
前記ＭＴの開始時刻およびソースが前記ＦＮＴの開始時刻および終了時刻に等しく、かつ前記ＭＴの終了時刻、応答、および応答時間が前記ＨＮＴの終了時刻、応答、および応答時間に等しい請求項２２に記載のデータ処理システム。
【請求項２４】
前記活動トレースを変更する手段が、第１のノードを第２のノードに接続するスイッチをソースとする前記活動トレース内の無効にするトランザクションを削除する手段をさらに含む請求項２３に記載のデータ処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に、データ処理システムの分野に関し、より詳細には、複数ノードＮＵＭＡシステムの設計検証に関する。
【０００２】
【従来の技術】
コンピュータ・サーバなどのデータ処理システムの設計において対称型マルチプロセッシング（ＳＭＰ）アーキテクチャが広く使用されている。ＳＭＰサーバは、共用バスを介して共通システム・メモリと通信する複数のプロセッサを特徴とする。共用バスの限られた帯域幅は、ＳＭＰマシン内で経済的に配置することができるプロセスの数を制約し、大幅にスケーラブルなサーバを構築するための代替技術の使用を示唆している。さらに、標準の大容量バス・ベースのＳＭＰサーバが市場に出始め、これにより、構成マシンを基本的に再設計することなしに複数の標準的なノードからより大きなシステムを構成することが経済的に魅力的になっている。
【０００３】
スケーラブルなサーバ・マシンを構成するための１つの技術は、Cache-Coherent, Non-Uniform Memory（ｃｃＮＵＭＡ）アーキテクチャである。このアーキテクチャでは、特別メモリ・コントローラおよび高速相互接続スイッチが、ノードと呼ばれるいくつかのＳＭＰベースのサーバを接続する。このアーキテクチャでのプロセッサは、その共用メモリ・バスを介してそのＳＭＰノード内のローカル・メモリにアクセスし、高速相互接続を介してその他のノード上に常駐する遠隔メモリにアクセスする。したがって、ローカル・メモリ・アクセスは、遠隔メモリ・アクセスよりも高速である。特別メモリ・コントローラは、通常、ディレクトリ構造を使用してすべてのプロセッサが整合性およびコヒーレンスのある形で共用メモリ・アクセスを得ることを確実にする。この結果、共用メモリ・アーキテクチャは、単一メモリ・バスの限界を有さず、それでも、馴染みの共用メモリ・プログラミング・モデルを維持する。
【０００４】
ＮＵＭＡシステムは、ＳＭＰシステムをビルディング・ブロックとして使用することができるが、ＮＵＭＡシステムの検証、より詳細には、ＮＵＭＡシステムのコヒーレンスの検証は、従来のＳＭＰ設計検証ツールを使用しては容易に実現されない。通常のＳＭＰ設計プロセスでは、ソフトウェア・シミュレーション・ツールを使用して提案のアーキテクチャがシミュレートされる。シミュレーション・ツールは、イベント・トレースと呼ばれるファイルを出力し、このファイルが、提案のシステムの挙動を示す。次に、このイベント・トレース・ファイルを所定の一組のシステム・チェックに照らして検査し、コヒーレンス・モデルを検証することができる。ＳＭＰシステムは、共通バス（システム・バス）を介してシステム・メモリを共用する複数のプロセッサを有する。ＳＭＰシステムでは、システム・バスが、すべてのトランザクションのための順序付けポイントを提供し（すなわち、共用バス上でトランザクションがいつ行われるかによって順序が確立される）、ＭＥＳＩなどの標準のＳＭＰコヒーレンス・プロトコルを使用してコヒーレンスが実施される。ＳＭＰシステム内のコヒーレンスを検証する既存の方法は、このＳＭＰ特性を利用する。米国特許第６０２１２６１号を参照されたい。
【０００５】
【発明が解決しようとする課題】
ＮＵＭＡシステムでは、システム全体のための単一の順序付けポイントは存在しない。代りに、各ノードが、ある範囲のアドレスと関連しており、特定のトランザクションのための順序付けポイントは、特定のトランザクションと関連するアドレスがそこにある範囲に依存する。このさらなるレベルの複雑さを考慮に入れるため、ＮＵＭＡシステムは、すべてのノードでコヒーレンスを実施する第２のコヒーレンス・プロトコル（ＮＵＭＡプロトコル）を必要とする。残念ながら、ＳＭＰシステム内のコヒーレンスを検証する既存の方法は、ＮＵＭＡプロトコルが正しく動作していることを検証せず、したがって、ＮＵＭＡシステム内のコヒーレンスを検証するのに直接に使用することができない。したがって、ＮＵＭＡシステム内でコヒーレンスを検証するための方法およびシステムを実施するのが望ましいことになる。さらに、実施する解決策が既存の検証ソフトウェアを大きく変更することを必要としなければ、さらに望ましいことになる。
【０００６】
【課題を解決するための手段】
上記に確認した課題は、その大部分が、複数ノードＮＵＭＡシステム内のキャッシュ・コヒーレンスを検証するためのシステムおよび方法によって扱われる。このシステムは、シミュレーション・ツールによって生成されたイベント・トレースを受け取るように構成されたトランザクション変更部を含む。このトランザクション変更部は、ＮＵＭＡシステム内の別のノードに伝播されるトランザクションを変更し、これにより、２つのバス・トランザクション、ホーム・ノード・トランザクション（ＨＮＴ）および外部ノード・トランザクション（ＦＮＴ）が生じるように設計されている。より具体的には、変更部は、所定の一組のマージ規則の下で、ＦＮＴとそれに対応するＨＮＴを単一のマージ・トランザクション（ＭＴ）にマージする。ＭＴは、ＦＮＴとＨＮＴの両方の特定を有する。ＦＮＴおよびＨＮＴはイベント・トレースから削除され、それらに対応するＭＴによって置き換えられて、単一のシステム・コヒーレンス・チェッカによるコヒーレンス検査に適した変更されたイベント・トレースが生成される。マージされたトランザクションは、起点トランザクション（ＦＮＴ）のイベント開始およびイベント・ソース、ならびに結果のトランザクション（ＨＮＴ）の応答、応答時間、およびイベント停止を含むことができる。変更を受けるトランザクションには、非所有権読み取り（non-ownership read）トランザクション、所有権（ownership）トランザクション、および異なるノード上にあるメモリ・アドレスを参照する書き込みトランザクションが含まれる。非所有権外部ノード読み取りトランザクションは、それに対応するキャッシュ・ラインが起点ノード上にあるすべてのキャッシュで無効な場合に変更される。外部ノード所有権トランザクションは、それに対応するキャッシュ・ラインが起点ノード上にあるキャッシュによって固有に所有されていない場合に変更される。外部ノード書き込みトランザクションは、常時、変更される。さらに、ＮＵＭＡプロトコルに関連する無効にするトランザクションが、変更されるイベント・トレースから削除される。
【０００７】
本発明のその他の目的と利点は、以下の詳細な説明を読み、添付の図面を参照したとき、明白となる。
【０００８】
本発明は、様々な変更形態および代替形態をとる可能性があるが、その特定の実施形態を図面で実施例として示し、本明細書で詳細に説明する。ただし、本明細書に提示する図面および詳細な説明は、本発明を開示する特定の実施形態に限定するものではなく、反対に、本発明は、添付の特許請求の範囲によって定義される本発明の趣旨および範囲に含まれるすべての変更形態、等価形態、および代替形態をカバーするものとする。
【０００９】
【発明の実施の形態】
次に、図面を参照すると、図１および２は、本発明を使用するコヒーレンス検証に適したデータ処理システム１００の一実施形態を示している。描いた実施形態のシステム１００は、高速スイッチ１０４を介して相互接続された一組のノード１０２−０、１０２−１、１０２−３（一般的にまたは集合としてノード１０２と呼ぶ）を含むＮＵＭＡシステムとして実施される。各ノード１０２は、通常、２つまたはそれより多くのマイクロプロセッサ２０２がその中でシステム・バス２０４に接続されている対称型マルチプロセッサ・システム（ＳＭＰ）として構成される。各マイクロプロセッサ２０２は、独自の内部Ｌ１キャッシュ２２１および二次キャッシュ、つまりＬ２キャッシュ２２２を含むことが可能である。プロセッサ２０２のメモリ管理部（ＭＭＵ）（図示せず）が、プロセッサ・キャッシュとシステム・バス２０４の間におけるデータの転送を制御する。各ノード１０２にローカルなシステム・メモリ２０６は、システム・バス２０４を介してプロセッサ２０２にアクセス可能である。したがって、システム・メモリ２０６は、ノード１０２内にあるプロセッサ２０２のそれぞれから実質的に等距離（すなわち、等しいアクセス時間）にある。
【００１０】
システム１００の各ノード１０２は、ＩＯバス２１０にシステム・バス２０４を接続し、ハードディスク・コントローラ、グラフィックス・アダプタ、高速ネットワーク・アダプタ等を含む様々なＩＯデバイス・アダプタ（図示せず）のどれにもサポートを提供するバス・ブリッジ２１２を含むことができる。ＩＯバス２１０は、例えば、ＰＣＩ周辺バス、ＩＳＡ周辺バス、ＥＩＳＡ周辺バス、およびＭＣＡ周辺バスを含む様々な業界標準の周辺バスのどれにも準拠することが可能である。ＰＣＩバスは、オレゴン州、HillsboroのPCI Special Interest Group（http://www.pcisig.org）から入手可能な「PCI Local Bus Specification Rev. 2.2」に詳述されている。
【００１１】
一実施形態では、各ノード１０２は、４つのプロセッサ２０２、１ＧＢのシステム・メモリ２０６、ならびにキーボード、マウス、ハードディスク・コントローラ、グラフィックス・アダプタ、ネットワーク・アダプタ等を含む標準の一組の周辺デバイスを含む。メッシュ・コヒーレンス部（ＭＣＵ）２０８は、システム・バス２０４とスイッチ１０４の間に接続される。ＭＣＵ２０８は、通常、ノード１０２のシステム・バス２０４をスヌープし、ディレクトリ・ベースのキャッシュ・コヒーレンス・プロトコルを使用して複数のノード１０２にわたりメモリ・コヒーレンスを拡張することを担う。この構成では、システム１００は、４ＧＢのシステム・メモリを有する１６プロセッサＳＭＰシステムとしてオペレーティング・システムおよびアプリケーション・レベル・ソフトウェアに表れるものとしている。システム・メモリは、例えば、システム・メモリ・アドレス０〜１Ｇがノード１０２−０のメモリを参照し、システム・メモリ・アドレス１Ｇ〜２Ｇがノード１０２−１のメモリを参照するなどのようにマップされている。
【００１２】
次に、図３を参照すると、従来のＳＭＰシステムのコヒーレンス検証を描いた簡単な流れ図が示されている。通常、電子デバイスまたは電子システムの表現３００（ＶＨＤＬ記述などの）は、電子設計オートメーション（ＥＤＡ）の分野で周知の技法に従って生成される。次に、デバイス表現３００の挙動が、一組のテストケースとともにシミュレーション・ツール３０２に対する入力としてそのデバイス表現を提供することによってシミュレートされ、ここで、各テストケースは所定の一連の入力状態を表す。シミュレーション・ツールは、所与の一組の入力に応答して、シミュレートされるシステムの予期される挙動を示す１つまたは複数のイベント・トレース３０３を生成する。次に、イベント・トレース３０３が、チェッカ３０４を使用して、ＳＭＰコヒーレンス規則を含む一組の所定の規則に照らして検査される。
【００１３】
図４を参照すると、シミュレーション・ツール３０２によって生成される各イベント・トレース３０３は、通常、シミュレートされるデバイスのパフォーマンスに関する情報を含む。より具体的には、各イベント・トレース３０３は、開始時刻および停止時刻（通常、ＣＰＵ周期での）を示すイベント開始フィールド４０２およびイベント停止フィールド４０４を含む情報の様々なフィールドを含むことができる。応答フィールド４０６、応答時間フィールド４０８、および動作タイプ・フィールド４１０が、シミュレーションの下での動作、動作の結果、およびシステムのパフォーマンスに関する情報を提供する。データ・フィールド４１２は、それが適切な場合、動作に関連するデータを示す。アドレス・フィールド４１４は、動作に関連するシステム・アドレスを含み、ソース・フィールド４１６は、動作の起点を示す。ノード１０２、プロセッサ２０２またはブリッジ２１２、および動作がそこを起点とするバス２０４の組み合わせとしてソースを特定することができる。
【００１４】
本発明は、従来のＳＭＰベースのコヒーレンス・チェッカを使用する検証および検査にイベント・トレースを適したものにするように、複数ノードＮＵＭＡシステムによって生成されたイベント・トレースを変更することを企図する。変更されたイベント・トレースは、すべてのノード１０２に関する活動の総体的概観を表す。単一のシステム・コヒーレンス・チェッカにより、可能性のある大域的（すなわち、ノード間）コヒーレンス違犯に関して、この総体的概観を検査することができる。好ましくは、イベント・トレースの変更は、比較的単純な規則ベースの変更を使用してなされ、そうでなければ複数ノード・システムを考慮に入れるためにＳＭＰチェッカ自体を変更するのに必要となる労力よりも、イベント・トレースを変更するのに必要とされる労力が相当に小さいものであるようになっている。
【００１５】
次に、図５を参照すると、複数ノードＮＵＭＡシステムのキャッシュ・コヒーレンスを検証するための方法およびシステム５００が描かれている。本発明のいくつかの部分は、データ処理システムのコンピュータ可読媒体上に記憶された一連のコンピュータ実行可能命令（ソフトウェア）として実装することができ、このデータ処理システムは、その媒体にアクセスすることができるプロセッサ、キーボードまたはマウスなどの入力デバイス、および表示装置などの出力デバイスを含む。コンピュータ可読媒体は、ハードディスク、フロッピ（Ｒ）ー・ディスケット、ＣＤ  ＲＯＭ、ＤＶＤ、磁気テープ、フラッシュ・メモリカード、ＲＯＭデバイス、またはＲＡＭを含むことが可能である。システム５００は、図１に描いた複数ノードＮＵＭＡシステム１００などのシステムのモデル５０１に基づいてイベント・トレースを生成するのに適したシミュレータ５０２を含むことが可能である。シミュレータ５０２は、単一ノードＳＭＰシステムのためにイベント・トレースを生成するのに適した図３に描くシミュレータ３０２と実質的に等価であることが可能である。通常、シミュレータ５０２は、システム・モデル５０１および１つまたは複数のテストケース５１０に基づいてイベント・トレースを生成する。通常、テストケース５１０は、システム表現５０１に適用される一連の入力信号を表す。シミュレートされるシステムが複数ノードＮＵＭＡシステムであるケースに関する十分な検証のカバレッジを実現するため、テストケース５１０は、好ましくは、ＮＵＭＡシステムのノード間機能を働かせる１つまたは複数のシーケンスのイベントを含む。したがって、テストケース５１０は、好ましくは、第２のノードにローカルなシステム・メモリを宛先とする第１のノードを起点とするロード命令および記憶命令を含む。さらに、ノード間のロード・トランザクションと記憶トランザクションは、好ましくは、参照されるメモリ・アドレスが、起点ノードにローカルなキャッシュ・メモリのうちどのメモリ内にもないケースを含む。
【００１６】
シミュレータ５０２は、所定のテストケース５１０に応答して、テストを受けるシステムの予期される挙動を表す一組のイベント・トレース５０３を生成する。複数ノードＮＵＭＡシステムの場合、生成されるイベント・トレースには、「ＮＵＭＡイベント」が含まれる。この開示では、ＮＵＭＡイベントは、システム１００の複数のノード１０２上でトランザクションを生成するイベントであり、より具体的には、複数のシステム・バス２０４（図２に描いた）上でトランザクションを生成するイベントである。例として、ノード１０２−１に対応するシステム・メモリ・アドレスに対するノード１０２−０（図１）を起点とするトランザクションは、トランザクションの型およびシステム１００内のキャッシュ・メモリの状態に関連する適切な状況（以下により詳細に議論する）の下で、ＮＵＭＡイベントを生成することができる。ＮＵＭＡイベントが生じたとき、シミュレートされるイベント・トレースは、少なくとも２つのトランザクションを含んでいる。本明細書で外部ノード・トランザクション（ＦＮＴ）と呼ぶ第１のトランザクションは、起点ノードと目標ノードが異なる場合、別のノード（目標ノード）にローカルなメモリ・アドレスを参照する起点ノード１０２のシステム・バス２０４上に現れるトランザクションである。ＮＵＭＡイベントが生じたとき、ＦＮＴは、スイッチ１０４を介し、その他のノード１０２のうちの１つまたは複数に伝播される。本明細書でホーム・ノード・トランザクション（ＨＮＴ）と呼ぶ第２のトランザクションは、起点トランザクション内に含まれるシステム・メモリ・アドレスにローカルな、ノード１０２のシステム・バス２０４上に現れるトランザクションである。
【００１７】
本発明の一実施形態によるシステム５００は、イベント・トレース・モディファイヤまたはトランザクション・モディファイヤ５２０を含む。トランザクション・モディファイヤ５２０は、シミュレータ５０２によって生成されたイベント・トレース５０３を受け取り、これに応答して、変更したイベント・トレース５０４を生成する。この変更されたイベント・トレース５０４は、単一ノードのＳＭＰシステムのキャッシュ・コヒーレンスを検証するのに使用される単一システム・コヒーレンス・チェッカ３０４に入力を提供するのに適している。本明細書に説明するとおりシミュレートされるイベント・トレースを変更することにより、本発明は、複数ノードＮＵＭＡシステムを対象に含むようにコヒーレンス・チェッカ３０４の有用性を拡張し、これにより、ＮＵＭＡコヒーレンスを検証するために専用プログラムを開発する相当なリソースを節約する。
【００１８】
イベント・トレース５０３の変更は、好ましくは、所定の一組の規則に従って行われる。トランザクション・モディファイヤ５２０は、一組の所定トランザクション・カテゴリのうちの１つにトランザクションが入るかどうかを判定するように構成される。選択されたカテゴリのうちの１つに入るトランザクションは、場合によっては、ＮＵＭＡシステムの大域的コヒーレンス機構を呼び出し、これにより、複数のシステム・バス上でトランザクションが生じさせる可能性がある。単一システム・コヒーレンス・チェッカ３０４は、コヒーレンスを検証するために単一の順序付けポイント（例えば、ＳＭＰシステムのシステム・バス）を利用するので、複数ノードＮＵＭＡシステム内で行われる複数のトランザクションは、コヒーレンス・チェッカのモデルには不適合である。
【００１９】
トランザクションが所定のカテゴリのうちの１つに入る場合には、そのトランザクションと関連する指定された条件が真であるかどうかをコヒーレンス検査が判定する。この条件が満たされた場合、そのトランザクションは、ＮＵＭＡトランザクションであると識別される。ＮＵＭＡトランザクションを識別すると、トランザクション・モディファイヤ５２０は、考慮されているＮＵＭＡトランザクションからもたらされた少なくとも１つの対応するトランザクションを識別する。前に示したとおり、ＮＵＭＡイベントは、起点ノード上でＦＮＴトランザクションの作成を、また目標ノード上でＨＮＴトランザクションの作成をもたらす。ＦＮＴトランザクションを識別すると、トランザクション・モディファイヤ５２０は、そのＦＮＴの対応するＨＮＴトランザクションを識別するように構成されている。トランザクション・モディファイヤ５２０がＦＮＴを識別し、それに対応するＨＮＴトランザクションを探し出したとき、ＦＮＴトランザクションとＨＮＴトランザクションの両方の特性を有する単一のマージしたトランザクション（ＭＴ）にそのトランザクション・ペアが結合、つまりマージされる。複数のトランザクションを単一のマージしたトランザクションで置き換えることにより、トランザクション・モディファイヤ５２０は、コヒーレンス・チェッカ３０４によって想定される単一順序付けポイント・モデルと整合性のある単一のトランザクションを作成する。したがって、トランザクション・モディファイヤ５０２の出力は、チェッカ３０４によるコヒーレンス検証に適している。
【００２０】
次に、図６を参照すると、本発明の一実施形態によるモディファイヤ５２０によって変更を受けるトランザクションのカテゴリを識別するテーブル６００、そのようなトランザクションがその下で変更を必要とする条件、トランザクションが指定の条件を満たす場合にとられる処置が示されている。描いた実施形態では、トランザクション・モディファイヤ５２０による変更を受ける３つのカテゴリのトランザクションと、モディファイヤ５２０による削除を受ける第４のカテゴリのトランザクションが存在する。変更を受けるこれら３つのカテゴリのトランザクションのそれぞれは、場合によっては、ＮＵＭＡシステム１００のスイッチ１０４を介して伝播する可能性があり、これにより、第２のシステム・バス上に対応するトランザクションを生成する。
【００２１】
モディファイヤ５２０による変更を受ける第１のカテゴリのトランザクションには、非所有権読み取りトランザクションが含まれる。非所有権トランザクションには、トランザクションのシステム・メモリ・アドレスに対応するキャッシュ・ラインを変更する許可をプロセッサに与えないトランザクションが含まれる。非所有権読み取りトランザクションは、スイッチ１０４を介してＮＵＭＡシステム１００の別のノード１０２に伝播することになり、これにより、トランザクションがそこから発したノードにローカルではないメモリ・アドレスをそのトランザクションが参照し（１）、かつ起点ノードのどのキャッシュ内にもそれに対応するキャッシュ・ラインの有効なコピーが存在しない（２）場合のみ、二次トランザクションを生成する。したがって、ノード１０２−１上のプロセッサが、ノード１０２−１のシステム・バス２０４上で読み取りトランザクションを生じさせる別のノードに属するメモリ・アドレスに対するロード・コマンドを発行し、かつノード１０２−１のキャッシュ内にそれに対応するキャッシュ・ラインの有効なインスタンスが全く存在しない場合、そのトランザクションは、要求されるデータをリトリーブすることができるように、適切なノードに伝播しなければならない。起点ノード（この場合、ノード１０２−１）のシステム・バス２０４上に現れるトランザクションは、それが外部ノード・システム・メモリ・アドレスを参照するため、ＦＮＴトランザクションと呼ばれる。目標ノードのシステム・バス２０４上に現れるトランザクションは、トランザクションがそこで行われるノードにそのシステム・メモリ・アドレスがローカルであるため、ＨＮＴと呼ばれる。
【００２２】
モディファイヤ５２０が非所有権読み取りトランザクションであるＦＮＴを検出したときには、そのトランザクションがそれに対応するＨＮＴをもたらすかどうかをモディファイヤが判定する。この判定は、ＦＮＴ自体の中のフィールドを検査することでモディファイヤ５２０によって行われる。より具体的には、モディファイヤ５２０は、トランザクションのイベント応答フィールド４０６（図４に描いた）を検査することにより、ＦＮＴがそのホーム・ノードへの伝播を必要としたかどうかを判定することができる。非所有権読み取りトランザクションのイベント応答フィールド４０６は、起点ノード上でキャッシュ・ラインの有効なコピーが利用可能であるかどうかを示すことになる。
【００２３】
モディファイヤ５２０は、ＦＮＴがスイッチを介してそのホーム・ノードに伝播されたことを判定した場合には、考慮されているＦＮＴに対応するＨＮＴを探し出す。所与のＦＮＴに対応するＨＮＴの識別は、両方のトランザクションのイベント・トレースのいくつかのフィールドを照合することによって成される。ＦＮＴおよびそれに対応するＨＮＴの、例えば、アドレス・フィールド４１４およびデータ・フィールド４１２は、完全に一致しなければならない。さらに、所与のＦＮＴトランザクションのデータおよびアドレスに等しいデータ・フィールドおよびアドレス・フィールドを有する複数のトランザクションが見つかった場合に、開始時刻フィールド４０２および停止時刻フィールド４０４が、追加の情報を提供する。より具体的には、ＦＮＴ（起点トランザクション）のイベント開始フィールド４０２内の値が、それに対応するＨＮＴのイベント開始フィールド４０２内の値よりも早期でなければならない。イベント・トレース内のトランザクションのフィールドを起点トランザクション内のフィールドと比較することにより、トランザクション・モディファイヤ５２０は、所与のＦＮＴに対応するＨＮＴを高い信頼性で判定することができる。同様に、起点トランザクションのイベント応答４０６を検査することにより、モディファイヤ５２０は、ＦＮＴがＮＵＭＡシステム１００の別のノード１０２に伝播しなかったとき、それを判定することができる。ＦＮＴトランザクションが別のノード１０２に伝播しないとき、モディファイヤ５２０は、ＦＮＴをそのままにして、イベント・トレース内の次のトランザクションに進む。
【００２４】
モディファイヤ５２０は、ＦＮＴに対応するＨＮＴトランザクションを識別した後、所定の規則に従ってマージしたトランザクション（ＭＴ）を生成する。一実施形態では、ＭＴトランザクションは、起点トランザクション（ＦＮＴ）からの値およびその結果のトランザクション（ＨＮＴ）からの値を含む。一実施形態では、ＭＴは、そのイベント開始４０２およびソース４１６をＦＮＴから取り、その応答時間４０８、応答４０６、およびイベント停止４０４をＨＮＴトランザクションから取る。ｏｐ型４１０、データ４１２、およびアドレス４１４を含む残りのフィールドは、ＦＮＴおよびそれに対応するＨＮＴの両方の中の同じフィールド内におけるのと等しく、これらの値がＭＴ内にコピーされる。ＦＮＴとＨＮＴをマージするこのプロセスを図７に図面として描いており、そこでは、ＭＴ７０６がＦＮＴ７０２およびそれに対応するＨＮＴ７０４から、そのＦＮＴおよびＨＮＴからの適切なフィールドをＭＴ内にコピーすることによって作成されている。ＭＴ７０６の残りのフィールドは、ＦＮＴ７０２またはＨＮＴ７０４からコピーすることができる。
【００２５】
次に、図６を参照すると、モディファイヤ５２０による変更を受ける第２のカテゴリのトランザクションには、それに対応するキャッシュ・ラインの所有権をその発行プロセッサに与えるすべてのトランザクションを含む。所有権トランザクションの例には、変更する意図で読み取る（read-with-intent-to-modify）（ＲＷＩＴＭ）トランザクションおよびＤＣＬＡＩＭトランザクションが含まれる。ＦＮＴが所有権トランザクションであり、かつそれに対応するキャッシュ・ラインが、起点ノード上のキャッシュによって固有に所有されていない場合には、そのトランザクションは、ホーム・ノードに伝播され、ＨＴＭトランザクションが生成されなければならない。モディファイヤ５２０が出会ったＦＮＴトランザクションがこれらの基準を満たす場合、非所有権読み取りトランザクションに関して前述したとおり、それに対応するＨＮＴが探し出されて変更される。
【００２６】
モディファイヤ５２０による変更を受ける第３のカテゴリのトランザクションには、書き込みトランザクションが含まれる。ＦＮＴが書き込みトランザクションである場合には、そのトランザクションは、無条件でホーム・ノードに転送され、それに対応するＨＮＴが生成されなければならない。外部アドレスを参照する書き込みトランザクションを検出すると、モディファイヤ５２０は、前述したとおり、それに対応するＨＮＴを探し出してＭＴを生成する。書き込みトランザクションがローカル・アドレス（すなわち、起点ノードのメモリ空間内のアドレス）を参照する場合、そのトランザクションは、そのままである。
【００２７】
トランザクション・モディファイヤ５２０の一実施形態は、ＣＭＦＬＵＳＨトランザクション、ＣＭＣＬＥＡＮトランザクション、およびＤＫＩＬＬトランザクションなどのすべての無効にするトランザクションを含む第４のカテゴリのトランザクションを除去するようにさらに構成される。無効にするトランザクションがシステムのＮＵＭＡプロトコルに関連している場合、そのトランザクションは、モディファイヤ５２０によって活動トレースから除去される。そうでなければ、無効にするトランザクションは、そのままである。無効にするトランザクションは、そのトランザクションがＮＵＭＡスイッチ１０４をソースとしているとき、システムのＮＵＭＡプロトコルに関連しているとされる。一般的に言って、ＮＵＭＡプロトコルに特定的に関連する無効にするトランザクションは、そのｏｐ型フィールド４１０によって識別可能であり、したがって、変更されるイベント・トレースから容易に除去することができる。
【００２８】
トランザクション・モディファイヤ５２０が、本明細書に記載するとおり、シミュレータ５０２によって生成されたイベント・トレースから適切なＦＮＴ−ＨＮＴペアを除去し、それらをそれに対応するマージしたトランザクションで置き換え、変更したイベント・トレース５０４を作成した後、その変更されたイベント・トレースは、従来の仕方でチェッカ３０４によって所定の一組のキャッシュ・コヒーレンス規則への準拠に関して検査される。
【００２９】
この開示を利用する当分野の技術者には、本発明が、コヒーレンス検査機構を大きく変更することなしに、複数ノードＮＵＭＡシステム内のコヒーレンスを検証するためのシステムおよびシステム方法を企図していることが明白となる。詳細な説明および図面で示し、説明した本発明の形態は、単に好ましい実施例として受け取られるべきものであることを理解されたい。頭記の特許請求の範囲は、開示した好ましい実施形態のすべての変更形態を包含するように広く解釈されるものとする。
【００３０】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３１】
（１）複数ノード・データ処理システム内でキャッシュ・コヒーレンスを検証する方法であって、
前記データ処理システムをシミュレートすることによって生成された活動トレース内のトランザクション・ペアを識別するステップであって、前記トランザクション・ペアには、前記データ処理システムの第１のノードのシステム・バス上のプロセッサを起点とし、かつ第２のノードと関連するメモリ・ロケーションを参照するトランザクションを表す外部ノード・トランザクション（ＦＮＴ）と、前記第２のノードのシステム・バス上で行われるＦＮＴからもたらされるトランザクションを表すホーム・ノード・トランザクション（ＨＮＴ）とが含まれるステップと、
前記トランザクション・ペアのそれぞれをマージして対応するマージしたトランザクション（ＭＴ）を形成するステップであって、前記マージしたトランザクションは、前記ＦＮＴおよび前記ＨＮＴの属性を含むステップと、
前記トランザクション・ペアのそれぞれをそれに対応するマージしたトランザクションで置き換えることによって変更した活動トレースを作成するステップであって、前記変更した活動トレースは、コヒーレンス・チェッカによるキャッシュ・コヒーレンス検証に適するステップとを含む方法。
（２）前記ＨＮＴが、前記第１のノードを前記第２のノードに接続するスイッチをソースとする上記（１）に記載の方法。
（３）前記マージしたトランザクションが、前記ＦＮＴの開始時刻およびソースを含む上記（１）に記載の方法。
（４）前記マージしたトランザクションが、前記ＨＮＴの終了時刻を含む上記（１）に記載の方法。
（５）前記ＦＮＴが非所有権読み取りトランザクションを含み、前記ＦＮＴによって参照されるキャッシュ・ラインが、前記第１のノード上のすべてのキャッシュ内で無効である上記（１）に記載の方法。
（６）前記ＦＮＴが所有権トランザクションを含み、前記ＦＮＴによって参照されるキャッシュ・ラインが、前記第１のノード上のキャッシュによって固有に所有されていない上記（１）に記載の方法。
（７）前記ＦＮＴが書き込みトランザクションを含む上記（１）に記載の方法。
（８）前記ＦＮＴが、参照されるキャッシュ・ラインが前記第１のノードのすべてのキャッシュ内で無効である非所有権読み取りトランザクション、前記参照されるキャッシュ・ラインが前記第１のノード内のキャッシュによって固有に所有されていない所有権トランザクション、および書き込みトランザクションから構成される一群から選択された１つのトランザクションを含む上記（１）に記載の方法。
（９）前記ＭＴの開始時刻およびソースが前記ＦＮＴの開始時刻および終了時刻に等しく、かつ前記ＭＴの終了時刻、応答、および応答時間が前記ＨＮＴの終了時刻、応答、および応答時間に等しい上記（８）に記載の方法。
（１０）前記活動トレースを変更するステップが、前記第１のノードを前記第２のノードに接続するスイッチをソースとする前記活動トレース内の無効にするトランザクションを削除するステップをさらに含む上記（１）に記載の方法。
（１１）複数ノード・データ処理システム内のキャッシュ・コヒーレンスを検証するためコンピュータ・システムを所定の手段として機能させる常駐するコンピュータ・プログラムであって、前記所定の手段は、
前記データ処理システムをシミュレートすることによって生成された活動トレース内のトランザクション・ペアを識別する手段であって、前記トランザクション・ペアには、前記データ処理システムの第１のノードのシステム・バス上のプロセッサを起点とし、かつ第２のノードと関連するメモリ・ロケーションを参照するトランザクションを表す外部ノード・トランザクション（ＦＮＴ）と、前記第２のノードのシステム・バス上で行われるＦＮＴからもたらされるトランザクションを表すホーム・ノード・トランザクション（ＨＮＴ）とが含まれる手段と、
前記トランザクション・ペアのそれぞれをマージして対応するマージしたトランザクション（ＭＴ）を形成する手段であって、前記マージしたトランザクションは、前記ＦＮＴおよび前記ＨＮＴの属性を含む手段と、
前記トランザクション・ペアのそれぞれをそれに対応するマージしたトランザクションで置き換えることによって変更した活動トレースを作成する手段であって、前記変更した活動トレースは、コヒーレンス・チェッカによるキャッシュ・コヒーレンス検証に適する手段と、を含むコンピュータ・プログラム。
（１２）前記ＨＮＴが、前記第１のノードを前記第２のノードに接続するスイッチをソースとする上記（１１）に記載のコンピュータ・プログラム。
（１３）前記マージしたトランザクションが、前記ＦＮＴの開始時刻およびソースを含む上記（１１）に記載のコンピュータ・プログラム。
（１４）前記マージしたトランザクションが、前記ＨＮＴの終了時刻を含む上記（１１）に記載のコンピュータ・プログラム。
（１５）前記ＦＮＴが非所有権読み取りトランザクションを含み、前記ＦＮＴによって参照されるキャッシュ・ラインが、前記第１のノード上のすべてのキャッシュ内で無効である上記（１１）に記載のコンピュータ・プログラム。
（１６）前記ＦＮＴが所有権トランザクションを含み、前記ＦＮＴによって参照されるキャッシュ・ラインが、第１のノード上のキャッシュによって固有に所有されていない上記（１１）に記載のコンピュータ・プログラム。
（１７）前記ＦＮＴが書き込みトランザクションを含む上記（１１）に記載のコンピュータ・プログラム。
（１８）前記ＦＮＴが、参照されるキャッシュ・ラインが前記第１のノードのすべてのキャッシュ内で無効である非所有権読み取りトランザクション、前記参照されるキャッシュ・ラインが前記第１のノード内のキャッシュによって固有に所有されていない所有権トランザクション、および書き込みトランザクションから構成される一群から選択された１つのトランザクションを含む上記（１１）に記載のコンピュータ・プログラム。
（１９）前記ＭＴの開始時刻およびソースが前記ＦＮＴの開始時刻および終了時刻に等しく、かつ前記ＭＴの終了時刻、応答、および応答時間が前記ＨＮＴの終了時刻、応答、および応答時間に等しい上記（１８）に記載のコンピュータ・プログラム。
（２０）前記活動トレースを変更する手段が、前記第１のノードを前記第２のノードに接続するスイッチをソースとする前記活動トレース内の無効にするトランザクションを削除する手段をさらに含む上記（１１）に記載のコンピュータ・プログラム。
（２１）複数ノード・データ処理システム内のキャッシュ・コヒーレンスを検証するデータ処理システムであって、
前記データ処理システムをシミュレートすることによって生成された活動トレース内のトランザクション・ペアを識別する手段であって、前記トランザクション・ペアには、前記データ処理システムの第１のノードのシステム・バス上のプロセッサを起点とし、かつ第２のノードと関連するメモリ・ロケーションを参照するトランザクションを表す外部ノード・トランザクション（ＦＮＴ）と、前記第２のノードのシステム・バス上で行われるＦＮＴからもたらされるトランザクションを表すホーム・ノード・トランザクション（ＨＮＴ）とが含まれる手段と、
前記トランザクション・ペアのそれぞれをマージして対応するマージしたトランザクション（ＭＴ）を形成する手段であって、前記マージしたトランザクションは、前記ＦＮＴおよび前記ＨＮＴの属性を含む手段と、
前記トランザクション・ペアのそれぞれをそれに対応するマージしたトランザクションで置き換えることによって変更した活動トレースを作成する手段であって、前記変更した活動トレースは、コヒーレンス・チェッカによるキャッシュ・コヒーレンス検証に適する手段と、を含むデータ処理システム。
（２２）前記ＦＮＴが、参照されるキャッシュ・ラインが前記第１のノードのすべてのキャッシュ内で無効である非所有権読み取りトランザクション、前記参照されるキャッシュ・ラインが前記第１のノード内のキャッシュによって固有に所有されていない所有権トランザクション、および書き込みトランザクションから構成される一群から選択された１つのトランザクションを含む上記（２１）に記載のデータ処理システム。
（２３）前記ＭＴの開始時刻およびソースが前記ＦＮＴの開始時刻および終了時刻に等しく、かつ前記ＭＴの終了時刻、応答、および応答時間が前記ＨＮＴの終了時刻、応答、および応答時間に等しい上記（２２）に記載のデータ処理システム。
（２４）前記活動トレースを変更する手段が、第１のノードを第２のノードに接続するスイッチをソースとする前記活動トレース内の無効にするトランザクションを削除する手段をさらに含む上記（２３）に記載のデータ処理システム。
【図面の簡単な説明】
【図１】ＮＵＭＡデータ処理システムの実施形態を示すブロック図である。
【図２】図１のデータ処理システムのノードの実施形態を示すブロック図である。
【図３】従来の技術による従来のＳＭＰシステムのコヒーレンスを検証する方法を示す流れ図である。
【図４】本発明で使用するのに適したイベント・トレースを示す概念図である。
【図５】図３のコヒーレンス・チェッカを使用するＮＵＭＡシステム内のコヒーレンスを検証する方法を示す流れ図である。
【図６】本発明の一実施形態によるＮＵＭＡシステム内でトランザクションをマージするための所定の規則を示すテーブルである。
【符号の説明】
１００  データ処理システム
１０２  ノード
１０２−０  ノード
１０２−１  ノード
１０２−３  ノード
１０４  スイッチ
２０２  マイクロプロセッサ
２０４  システム・バス
２０６  ローカル・メモリ
２０８  メッシュ・コヒーレンス部（ＭＣＵ）
２１０  ＩＯバス
２１２  バス・ブリッジ
２２１  キャッシュ
２２２  キャッシュ
３００  電子デバイス表現
３０２  シミュレーション・ツール
３０３  イベント・トレース
５０３  イベント・トレース
５０４  イベント・トレース
３０４  コヒーレンス・チェッカ
４０２  フィールド
４０４  フィールド
４０６  フィールド
４０８  フィールド
４１０  フィールド
４１２  フィールド
４１４  フィールド
４１６  フィールド
５００  キャッシュ・コヒーレンス検証システム
５０１  システム・モデル
５０１  システム表現
５０２  シミュレータ
５１０  テストケース
５２０  トランザクション・モディファイヤ
６００  テーブル
７０２  外部ノード・トランザクション
７０４  ホーム・ノード・トランザクション
７０６  マージしたトランザクション
【図１】
0003714620.tif 000002
【図２】
0003714620.tif 000003
【図３】
0003714620.tif 000004
【図４】
0003714620.tif 000005
【図５】
0003714620.tif 000006
【図６】
0003714620.tif 000007