(57)【要約】拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインＣＣ−ＮＵＭＡシステムのプロトコルシミュレーションモデルが提供される。キャッシュコヒーレンスが単一のコンピュータドメインで維持され、同時に複数のコンピュータドメイン間で維持されることをシステムのキーノードにおけるプロトコルテーブル調査と状態変換の実行メカニズムが保証する。そしてドメイン内およびドメイン間の送信の正確性と安定性が保証される。プロトコル入口変換のカバレッジ率の評価による信頼できる検証方法が提供される。最適化されたトランザクション生成器のプッシュモデルをロードすることによってトランザクションが処理され、動作終了後にカバレッジ率の指標が取得される。更に、マルチプロセサ・多階層コヒーレンスドメイン検証システムモデルを構成して関連するシミュレーションによる検証を実行し、その方法の妥当性と有効性が確認される。
2015531929.tif 000002
【特許請求の範囲】
【請求項１】
拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのシミュレーション検証およびテスト方法であって、
カバレッジ率による検証戦略を使うことによって、疑似ランダムベースのシミュレーション検証システムおよびカバレッジ率によるテストドライバ自動発生器で形成されるシミュレーション検証システムを構成するために、多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造と、拡張可能なトポロジー構造と、ノードシミュレーションモデルと、プロトコルテーブル調査および状態変換実行方法と、プロトコルテーブルの実行プロセスと、トランザクション生成器と、テスト評価方法と、カバレッジ率向上方法とを備え、
コヒーレンス空間を拡張して大規模ＣＣ−ＮＵＭＡマルチプロセサシステムを実現するために、ノードコントローラＮＣが必要であり、当該ノードコントローラが全体のキャッシュコヒーレンスの維持とシステム規模の拡大の２つの機能を持ち、まず、各ノードコントローラは１個から４個のプロセサに接続されてノードと第１レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスが当該プロセサと当該ノードコントローラによって共同で維持され、次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模ＣＣ−ＮＵＭＡシステムを形成し、ノード間における第２レベルのキャシュコヒーレンスがノードコントローラによって維持され、当該方法で構成される大規模ＣＣ−ＮＵＭＡシステムは拡張されてプロセサ直接接続キャッシュコヒーレンスプロトコルに基づく多階層プロトコルを確立し、全体のコヒーレンスを維持し、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのＣＣ−ＮＵＭＡシステムプロトコルシミュレーションモデルを構成するために、多数のコヒーレンシドメインの間でドメイン内およびドメイン間の送信の精度と安定性を保証するようにシステムのキーノードにおいてプロトコルテーブル調査および状態変換実行メカニズムが構成されることが必要であり、更に信頼できるプロトコル入口変換カバレッジ率評価による検証方法が提供され、最適化されたトランザクション生成器のプッシュモデルをロードすることによってトランザクションを処理し、操作の終了後にカバレッジ率の指標を取得し、ランダムトランザクション促進メカニズムに比べて検証効率が改善され、１つのマルチプロセサ検証システムモデルを構成して関連のあるシミュレーション検証を実行することを通して当該方法の妥当性と有効性が更に確認され、
１）多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造において、
拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインモデルのシステムシミュレータと当該システムシミュレータと並列に実行されるモデル検証システムとがＳｙｓｔｅｍＣ言語を使って設計され、当該モデル検証システムが疑似ランダムトランザクション生成器を構成することによってテストされ、当該モデル検証システムの正確さが全体検査器を使って判断され、当該モデル検証システムは、バス機能モデルと、プロトコルリファレンスモデルと、ノードコントローラシミュレータと、ネットワークシミュレータと、全体検査器と、プロトコル入口調査メカニズムとを含み、
（１）バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のＡＰＩインタフェースを提供して外部のモジュールとメッセージの交換を提供し、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中のシミュレーションを行い、システムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供し、
（２）プロトコルリファレンスモデルは、バス機能モデルと固く統合され、シミュレーションシステムにおいてシステム状態とメッセージの流れをリアルタイムに検査し、シミュレーションの間にプロトコルから逸脱するシステムの動作を発見するために使用され、
（３）ノードコントローラシミュレータは、バス機能モデルのＡＰＩインタフェースを通して接続され、ノードコントローラＮＣのキャッシュコヒーレンスプロトコルをシミュレーションで実現し、プロセサの直接接続キャッシュコヒーレンスプロトコルのメッセージを使うことによってプロセサと通信し、当該キャッシュコヒーレンスプロトコルのメッセージを用いてネットワークシミュレータを通して様々なＮＣシミュレータの間で通信し、
（４）ネットワークシミュレータは、順序の保護のない簡単な全交換のネットワークをシミュレーションし、当該ネットワークを使うことによって拡張型キャッシュコヒーレンスプロトコルのメッセージ通信を実行し、
（５）全体検査器は、システム全体の上で作動し、バス機能モデルのＡＰＩを通してデータ全体のキャッシュ・コヒーレンスを検査し、
（６）ランダム/フォーステストドライバの自動発生器は、バス機能モデルのＡＰＩインタフェースを通して接続され、シミュレーションの途中でランダム/フォースアクセストランザクションを連続的に発生し、バス機能モデルのＡＰＩインタフェースを通してバス機能モデルのキャッシュにアクセストランザクションを送信し、
２）拡張可能なトポロジー構造において、
ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェースＮＩを使って送信され、各ドメインは２個のＣＰＵを含み、各ＣＰＵは１個のメモリに接続され、４つのクランプベースの拡張可能な基本トポロジー構造を構成し、当該基本トポロジー構造は各クランプドメインが４つのノードを有するマルチノード・マルチプロセサのトポロジー構造であり。コヒーレンス空間、非コヒーレンス空間、およびＩ／Ｏ空間のアドレスは分割され、システムの規模に応じて設定され、当該ＮＣは全てのリモートアドレス空間に代理としてアクセスし、システムアドレスのマッピング法によって、各クランプのＮＣノードのアドレスエリアは他のＮＣノードのアドレスエリアと重ならず、当該ＮＣに入力されたパケットのアドレスエリアが当該クランプ内に位置しなければ、必ずクランプ間の変換操作が必要であり、
３）ノードシミュレーションモデルにおいて、
ＮＣは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信し、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装し、ノードシミュレータが１つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
４）プロトコルテーブルシミュレータと入口条件調査器を含むプロトコルテーブルの調査と状態変換の実行において、
プロトコルテーブルシミュレータはシステムシミュレータの中心部として働き、多階層キャッシュコヒーレンスプロトコルモデルの通常の動作に極めて重要であり、プロトコルテーブルは検証された目標であり、検証プロセス全体の間に修正可能であり、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータがセットされる必要があり、当該シミュレータは入口条件調査器と状態変換実行器の２つの部分を含み、ノードシミュレータが１つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
入口条件調査器はドメイン間のコヒーレンスを実行するための重要なモジュールであり、ノードコントローラによって受信されたコヒーレンスパケットはプロトコルテーブルに従って前記２つのモジュールによって変換され、入口条件調査器はパケットを受信して入口条件調査器の状態に従ってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信し、入口条件調査器はプロトコルテーブルの複数のエントリを記録し、イベント状態を記録するための構造はＴｒｋ／Ｒｄｔ／Ｗｒｔ／Ｏｒｂ／Ｄｉｒを含み、状態構造の記憶と調査を実現し、
システム状態レジスタのコーディング方法において、各状態レジスタの値の桁は固定であり、全ての状態レジスタを対応する２進数に変換して最大の桁を左側に補完し、補完された全２進数を1列に並べて対応するコーディング値を求め、プロトコルテーブルで与えられる値が不確定であれば、コーディングの間不確定の値を全ての値に広げ、コーディング後に全ての値は同じ入口に向き、各メッセージのコンフィグレーションファイルにおいて、入口の条件値に従ってソートが実行され、各条件は一つの入口に対応し、
入口条件調査器は階層的な設計を採用し、第１レベルは受信したメッセージを調べ、当該部分は戦略設計モードを使って設計され、各メッセージに対してメッセージ処理クラスを実装し、パブリックメッセージ処理クラスを継承し、ノースブリッジシミュレータがメッセージを受信すると、ハッシュルックアップテーブルモードにおけるマッチング方法を使ってメッセージのマッチングを実行し、速やかに対応する入口を見い出し、
５）プロトコルテーブルの実行プロセスにおいて、
プロトコルテーブルにおいて実行される全ての可能な状態の変換はレジスタ値の書き込みとメッセージの送信という２つのタイプを含み、レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝え、メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、当該コードが対応するメッセージ送信関数の関数ポインタと結び付けられ、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有し、
実際のシミュレータの実行の間、入口条件調査器が対応する入口を調べるとき、コントロール権が状態変換実行器に渡され、状態変換実行器は、予めコンフィギュレーションファイルから読み取られる操作リストに従って、仕事のために対応するレジスタ書き込み関数とメッセージ送信関数とをそれぞれにコールし、
６）トランザクション生成器において、
トランザクション生成器の仕事はランダムなテストであり、当該ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスであり、当該ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストし、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成され、プロトコルの検証はランダムな組み合わせを通して達成され、
７）テスト評価方法とカバレッジ率向上方法において、
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行され、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析され、目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行し、目標のカバレッジ率を達成した場合は、検証の仕事は終了し、カバレッジ率による検証方法の中心的な技術はカバー率測定と報告とテストドライバの自動生成を含み、
選択されたカバレッジ率によるシミュレーション検証方法によって、シミュレーションの検証プロセスモデルが構成され、当該シミュレーションの検証プロセスモデルでは、検証の間、テストは複数のシミュレーション期間によって形成され、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、当該アクセストランザクションをシステムのシミュレータに投入し、当該システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行し、生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了し、各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進み、
シミュレーションの検証の間、明らかに各期間はカバーされる複数のプロトコルテーブルのエントリを持ち、前のシミュレーション期間でカバーされたプロトコルテーブルのエントリを除いて、新たにカバーされたプロトコルテーブルのエントリがプロトコルテーブルのカバレッジエントリに加えられ、i番目の期間に加えられるプロトコルテーブルはＫｉであり、ｉ番目の期間のカバレッジ率の増加率はＫｉ／Ｎ（Ｎはプロトコルテーブルの全エントリ数である。）であると設定され、ｔ番目の期間によってカバーされるプロトコルテーブルの集合は｛Ｋｉ｝であり、Ｔ期間後のカバレッジ率はＣａｒｔ｛ＫＴ＝Ｋ１∪Ｋ２……ＫＴ｝／Ｎであると設定され、
一つのシミュレーション期間を考察して、もしテストドライバが完全にランダムに生成された場合は、プロトコルテーブルの中の全てのエントリに対して任意の期間にカバーされる確率は等しく、各プロトコルテーブルエントリに対して、一つのシミュレーション期間は単一のベルヌーイ試行とみなされ、もし当該期間内のシミュレータの出力が当該プロトコルテーブルエントリをカバーすれば、試行は成功であるとみなされ、さもなければ試行は失敗であるとみなされ、
小さな確率のデッドロックイベントを解決するために設計されるプロトコルテーブルにはかなり多数のプロトコルテーブルのエントリがあり、すなわちプロトコルテーブル内の様々なエントリは異なる発生確率を持ち、シミュレーション期間の数が増加するとき、各期間に新たにカバーされるプロトコルテーブルのエントリの数は連続的に減少しなければならず、長期の稼働の間、有効なテストドライバの発生は速やかに減少し、０に向かわなければならず、
カバレッジ率によるテストドライバ自動発生器に対して、以上の分析により、純粋なランダムテストドライバ発生器を使うと、必然的に高効率の検証を行うことができないことが分かり、テストの効率を改善するために、毎回生成されるテストドライバは方向性がある必要があり、カバーされていないプロトコルテーブルのエントリをより大きな確率でシミュレータがカバーし、これはカバレッジ率による検証方法に対する不可避の必要条件であり、従って、カバレッジ率の変化に従ってカバレッジ率によるテストドライバ自動発生器によってテストドライバの発生を調節するための２つの方法が次の通り記述され、
（１）目的のプロトコルを検証することの複雑性および順序の保護のないネットワークによって生じるアクセストランザクションの実現プロセスの多様性のために、特定の入力テストドライバと出力カバレッジ目標との間の関係を分析することは不可能であり、この条件において、テストドライバ分類器を導入することが考慮され、当該分類器は入力テストドライバと出力カバレッジ率の間の確率の関係を提供することができ、当該分類器は、ランダムに生成されるテストドライバをフィルタリングし、新しいカバレッジ目標を生成する大きな確率を持っており、シミュレーション中に実行される有効なドライバとして働くテストドライバを選択するために使われ、無効なテストドライバは放棄され、
（２）プロトコルテーブルが分析され、プロトコルテーブルの中の多数のプロトコルテーブルエントリが類似のエントリを持ち、特に小さな確率のイベントのために設計された多くのプロトコルテーブルエントリを含み、従って関連する分析の方法に基づいてテストドライバの生成にオフセットの考えが導入され、各期間のシミュレーションが終了した後に、当該期間のテストドライバにオフセット措置を施し、前の期間で生じたシミュレーションの検証結果と類似するプロトコルテーブルエントリを速やかにカバーするために、オフセットされたテストドライバをもう一度稼働中のシミュレータに送る、
ことを特徴とする拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのシミュレーション検証およびテスト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータアーキテクチャ分野に関し、特に、マルチプロセサコンピュータシステムのキャッシュコヒーレンス、マルチノード・マルチプロセサコンピュータシステム、キャッシュコヒーレント不均等メモリアクセス（ＣＣ−ＮＵＭＡ：Ｃａｃｈｅ  Ｃｏｈｅｒｅｎｔ  Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）アーキテクチャ、キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンシドメインとモデルのテスト・検証方法、および拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンシドメインのシミュレーション検証およびテスト方法に関する。
【背景技術】
【０００２】
現在、マルチプロセサの接続方法はバス接続からポイントツーポイント接続に変わっており、また、メモリはプロセサの外部ブリッジチップに接続される代わりに直接プロセサに接続される。メモリ接続方法の変化のために、システム内のメモリ配置がまた変わっている。それはマルチプロセサシステムにおけるメモリアクセスの非均一性を引き起こす。従って、現在のマルチプロセサシステムは大部分不均等メモリアクセス（ＮＵＭＡ：Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）アーキテクチャシステムを採用する。
【０００３】
ＮＵＭＡシステムでは、マルチキャッシュユニットが分散して配置される。従って、マルチキャッシュの間でコヒーレンスの問題を解決するように、ＮＵＭＡシステムは設計される。キャッシュコヒーレンスの問題を解決する方法は、ＣＣ−ＮＵＭＡシステムの中心的な問題である。従って、それに応じてキャッシュコヒーレンスプロトコルに対する検証作業は、ＣＣ−ＮＵＭＡシステムの検証作業の重要な部分である。商業的に利用できるマイクロプロセサを使ってスーパーコンピュータを作ることが一般的となった衝撃の下で、商業的に利用できるマルチコアマイクロプロセサを使ってＣＣ−ＮＵＭＡシステムを作ることは避けられない傾向になる。多数のプロセサの並列処理をサポートするために、現在の商業的に利用できるほとんど全てのハイエンドマイクロプロセサは基本的にマルチパス直接接続への拡張をサポートする。プロセサが組み込みのメモリコントローラを使用し、アクセス空間全部が一様にアドレスされる場合、多数の直接に接続されたプロセサが小さなＣＣ−ＮＵＭＡシステムを形成することができる。けれども、プロセサの直接接続インタフェースの数は制限されているので、プロセサを直接に接続することのみで大規模システムを作ることは困難である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
コヒーレンシドメイン空間を拡張し、大規模ＣＣ−ＮＵＭＡマルチプロセサシステムを実現するために、ノードコントローラ（ＮＣ）が必要とされる。ここに開示されるノードコントローラは全体のキャッシュコヒーレンスの維持とシステム規模の拡大の２つの機能を持つ。まず、各ノードコントローラは１個から４個のプロセサに接続されてノードと第１レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスはプロセサとノードコントローラによって共同で維持される。次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模ＣＣ−ＮＵＭＡシステムを形成する。ノード間における第２レベルのキャシュコヒーレンスはノードコントローラによって維持される。この方法で構成される大規模ＣＣ−ＮＵＭＡシステムは拡張されてプロセサ直接接続キャッシュコヒーレンスプロトコルに基づく多階層プロトコルを確立し、全体のコヒーレンスを維持するために必要である。拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンシドメインのＣＣ−ＮＵＭＡシステムプロトコルはいつでも比較的複雑であり、また、シミュレーションテストがとても重要である。従って、また、プロトコルのためのシミュレーション検証作業が重要な作業になる。
【０００５】
上述した通り、直接に接続されたプロセサによって構成されるマルチプロセサシステムは制限された規模を持つ。大規模なＣＣ−ＮＵＭＡマルチプロセサシステムを実現するために、図１に示すように、ノードコントローラが必要である。ノードコントローラはシステム規模の拡大および全体のキャッシュコヒーレンスの維持の機能を持つ。まず、各ノードコントローラは１個から４個のプロセサに接続されてノードと第１レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスはプロセサとノードコントローラによって共同で維持される。また、ノードコントローラはドメイン内で少なくとも１つのプロセサＩＤを占有し、それでドメイン内のプロセサの数とノードコントローラの数の合計は、そのドメイン内でプロセサによってサポート可能なプロセサＩＤの数を超えることはできない。次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模ＣＣ−ＮＵＭＡシステムを形成する。ノード間における第２レベルのキャシュコヒーレンスはノードコントローラによって維持される。そして、あるノード内のプロセサがノードとキャッシュコヒーレンシドメインを超えて他のノード内のプロセサのメモリにアクセスするとき、全体のキャッシュコヒーレンスはノードコントローラによって維持される。
【０００６】
その結果、関連のあるモデル、すなわち、ＣＣ−ＮＵＭＡバス機能モデルが設計される。そのモデルは、キャッシュ、プロセサの記憶装置、およびプロセサ間の相互接続ネットワークをシミュレーションし、カスタマイズシステムのトポロジー構造をサポートし、アクセス動作のトランザクションレベルのシミュレーションをサポートし、プロセサの直接接続キャッシュコヒーレンスプロトコルをシミュレーションし、リアルタイムの動作、様々なアクセストランザクションの状態、システム内のキャッシュと記憶装置を提供する。更にまた、ノードコントローラのシミュレーションモデルが設計される。そのモデルは、バス機能モデルのＡＰＩインタフェースを使うことによって、ノードコントローラによって保持される多階層キャッシュコヒーレンスプロトコルをシミュレーションし、プロセサのキャッシュコヒーレンスプロトコルメッセージを使うことによってプロセサと通信し、拡張型キャッシュコヒーレンスプロトコルメッセージを使い、従ってドメインの多階層のコヒーレンスプロトコル変換を実装することによってノードコントローラのネットワークを通して様々なノードコントローラの間で通信する。
【０００７】
機能検証を実行するためにシミュレーション検証方法を使うことの中心的なアイデアは、設計者の意図をシミュレータで観測される実際の動作と比較して２つのコヒーレンスを決定することである。設計者によって予期されるようにシミュレーション中で設計が稼働し、設計の必要条件を達成するとき、その設計は検証されたとみなされる。検証の間に、シミュレーション結果のカバレッジ率は生成されたテストドライバに対して解析され、システムの機能記述から得られる情報と組み合わせて、更なる検証のためのテストドライバの生成アルゴリズムまたはテストドライバの生成制約が改善され、次に生成されるテストドライバはシミュレーションシステムにもっと高いカバレッジ率を達成させることができる。
【０００８】
キャッシュコヒーレンスプロトコルは、共有データアクセスコヒーレンスの実装と共有メモリプログラミングインターフェースの提供のために使われる処理メカニズムである。キャッシュコヒーレンスプロトコルは、システムの正しさを直接決定するのみでなく、またシステムの規模と性能に重要な役割を果たし、分散された共有メモリを持ったマルチプロセサ・マルチコアシステムを実装するために極めて重要である。システム規模の速やかな拡大、ネットワーク遅延の不確定性およびメモリコヒーレンスモデルの多様性のような様々な要因がキャッシュコヒーレンスプロトコルを極めて複雑化させ、プロトコルの状態空間は指数関数的に増加し、または爆発さえする。産業界ではキャッシュコヒーレンスプロトコルの検証方法について、主に形式的検証とソフトウェアシミュレーションによる検証のような多くの議論がある。固有の状態空間の爆発の問題のために、現在、完全に形式的検証は複雑な多階層プロトコルの検証作業に適用することはできない。ソフトウェアシミュレーションによる検証は人為的に制約モデルを書き、制約された疑似ランダムなテストを実行して、改善された効率で特定の目標を検証することができ、実用的で実現可能な方法である。ソフトウェアシミュレーション方法に基づく本発明は、まず、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンス記述方法でシミュレーションモデルの構成を記述して、ソフトウェアシミュレーションによる検証方法を提供し、多状態空間において多階層ドメインキャッシュコヒーレンスプロトコルを効果的に検証する。１つのマルチプロセサの検証システムモデルを作成し、関連するシミュレーションによる検証を実行することを通して、本方法の妥当性と有効性が更に確認される。
【０００９】
プロセサによってサポート可能なドメイン内プロセサＩＤには制限があり、それでマルチプロセサシステムによって必要とされるノードコントローラの数は大き過ぎ、大きなノード間相互接続規模と複雑なトポロジー構造に帰着する。拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルを構成し、ノードコントローラを使うことによってローカルプロトコルテーブルの変換メカニズムを調べ、多階層コヒーレントドメインパケットを変換することは、大規模メモリ共有マルチプロセサシステムを著しく拡大し、効果的にシステムの性能を改善し、システムのトポロジーの複雑さを削減することができる。
【００１０】
本発明の目的は、ＣＣ−ＮＵＭＡシステムの多階層キャッシュコヒーレンスプロトコルに適した拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルの変換の正確なテストと検証の方法を提供することである。
【課題を解決するための手段】
【００１１】
ここに開示される実施形態は、以下の技術的な解決策を通して実現されることができ、カバレッジ率による検証戦略を使うことによって、疑似ランダムベースのシミュレーション検証システムおよびカバレッジ率によるテストドライバ自動発生器で形成されるシミュレーション検証システムを構成するために、多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造と、拡張可能なトポロジー構造と、ノードシミュレーションモデルと、プロトコルテーブル調査および状態変換実行方法と、プロトコルテーブルの実行プロセスと、トランザクション生成器と、テスト評価方法と、カバレッジ率向上方法とを備え、
コヒーレンス空間を拡張して大規模ＣＣ−ＮＵＭＡマルチプロセサシステムを実現するために、ノードコントローラＮＣが必要であり、当該ノードコントローラが全体のキャッシュコヒーレンスの維持とシステム規模の拡大の２つの機能を持ち、まず各ノードコントローラは１個から４個のプロセサに接続されてノードと第１レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスが当該プロセサと当該ノードコントローラによって共同で維持され、次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模ＣＣ−ＮＵＭＡシステムを形成し、ノード間における第２レベルのキャシュコヒーレンスがノードコントローラによって維持され、当該方法で構成される大規模ＣＣ−ＮＵＭＡシステムは拡張されてプロセサ直接接続キャッシュコヒーレンスプロトコルに基づく多階層プロトコルを確立し、全体のコヒーレンスを維持し、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのＣＣ−ＮＵＭＡシステムプロトコルシミュレーションモデルを構成するために、多数のコヒーレンシドメインの間でドメイン内およびドメイン間の送信の精度と安定性を保証するようにシステムのキーノードにおいてプロトコルテーブル調査および状態変換実行メカニズムが構成されることが必要であり、更に信頼できるプロトコル入口変換カバレッジ率評価による検証方法が提供され、最適化されたトランザクション生成器のプッシュモデルをロードすることによってトランザクションを処理し、操作の終了後にカバレッジ率の指標を取得し、ランダムトランザクション促進メカニズムに比べて検証効率が改善され、１つのマルチプロセサ検証システムモデルを構成して関連のあるシミュレーション検証を実行することを通して当該方法の妥当性と有効性が更に確認され、
１）多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造において、
拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインモデルのシステムシミュレータと当該システムシミュレータと並列に実行されるモデル検証システムとがＳｙｓｔｅｍＣ言語を使って設計され、当該モデル検証システムが疑似ランダムトランザクション生成器を構成することによってテストされ、当該モデル検証システムの正確さが全体検査器を使って判断され、当該モデル検証システムは、バス機能モデルと、プロトコルリファレンスモデルと、ノードコントローラシミュレータと、ネットワークシミュレータと、全体検査器と、プロトコル入口調査メカニズムとを含み、
（１）バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のＡＰＩインタフェースを提供して外部のモジュールとメッセージの交換を提供し、シミュレーションを行い、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中にシステムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供し、
（２）プロトコルリファレンスモデルは、バス機能モデルと固く統合され、シミュレーションシステムにおいてシステム状態とメッセージの流れをリアルタイムに検査し、シミュレーションの間にプロトコルから逸脱するシステムの動作を発見するために使用され、
（３）ノードコントローラシミュレータは、バス機能モデルのＡＰＩインタフェースを通して接続され、ノードコントローラＮＣのキャッシュコヒーレンスプロトコルをシミュレーションで実現し、プロセサの直接接続キャッシュコヒーレンスプロトコルのメッセージを使うことによってプロセサと通信し、当該キャッシュコヒーレンスプロトコルのメッセージを用いてネットワークシミュレータを通して様々なＮＣシミュレータの間で通信し、
（４）ネットワークシミュレータは、順序の保護のない簡単な全交換のネットワークをシミュレーションし、当該ネットワークを使うことによって拡張型キャッシュコヒーレンスプロトコルのメッセージ通信を実行し、
（５）全体検査器は、システム全体の上で作動し、バス機能モデルのＡＰＩを通してデータ全体のキャッシュコヒーレンスを検査し、
（６）ランダム/フォーステストドライバの自動発生器は、バス機能モデルのＡＰＩインタフェースを通して接続され、シミュレーションの途中でランダム/フォースアクセストランザクションを連続的に発生し、バス機能モデルのＡＰＩインタフェースを通してバス機能モデルのキャッシュにアクセストランザクションを送信し、
２）拡張可能なトポロジー構造において、
ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェースＮＩを使って送信され、各ドメインは２個のＣＰＵを含み、各ＣＰＵは１個のメモリに接続され、４つのクランプベースの拡張可能な基本トポロジー構造を構成し、当該基本トポロジー構造は各クランプドメインが４つのノードを有するマルチノード・マルチプロセサのトポロジー構造であり。コヒーレンス空間、非コヒーレンス空間、およびＩ／Ｏ空間のアドレスは分割され、システムの規模に応じて設定され、当該ＮＣは全てのリモートアドレス空間に代理としてアクセスし、システムアドレスのマッピング法によって、各クランプのＮＣノードのアドレスエリアは他のＮＣノードのアドレスエリアと重ならず、当該ＮＣに入力されたパケットのアドレスエリアが当該クランプ内に位置しなければ、必ずクランプ間の変換操作が必要であり、
３）ノードシミュレーションモデルにおいて、
ＮＣは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信し、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装し、ノードシミュレータが１つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
４）プロトコルテーブルシミュレータと入口条件調査器を含むプロトコルテーブルの調査と状態変換の実行において、
プロトコルテーブルシミュレータはシステムシミュレータの中心部として働き、多階層キャッシュコヒーレンスプロトコルモデルの通常の動作に極めて重要であり、プロトコルテーブルは検証された目標であり、検証プロセス全体の間に修正可能であり、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータがセットされる必要があり、当該シミュレータは入口条件調査器と状態変換実行器の２つの部分を含み、ノードシミュレータが１つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
入口条件調査器はドメイン間のコヒーレンスを実行するための重要なモジュールであり、ノードコントローラによって受信されたコヒーレンスパケットはプロトコルテーブルに従って前記２つのモジュールによって変換され、入口条件調査器はパケットを受信して入口条件調査器の状態に従ってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信し、入口条件調査器はプロトコルテーブルの複数のエントリを記録し、イベント状態を記録するための構造はＴｒｋ（パケット記録メモリモジュール）／Ｒｄｔ（リードパケットメモリモジュール）／Ｗｒｔ（ライトパケットメモリモジュール）／Ｏｒｂ（送信パケットメモリモジュール）／Ｄｉｒ（ディレクトリメモリモジュール）を含み、
システム状態レジスタのコーディング方法において、各状態レジスタの値の桁は固定であり、全ての状態レジスタを対応する２進数に変換して最大の桁を左側に補完し、補完された全２進数を1列に並べて対応するコーディング値を求め、プロトコルテーブルで与えられる値が不確定であれば、コーディングの間不確定の値を全ての値に広げ、コーディング後に全ての値は同じ入口に向き、各メッセージのコンフィグレーションファイルにおいて、入口の条件値に従ってソートが実行され、各条件は一つの入口に対応し、
入口条件調査器は階層的な設計を採用し、第１レベルは受信したメッセージを調べ、当該部分は戦略設計モードを使って設計され、各メッセージに対してメッセージ処理クラスを実装し、パブリックメッセージ処理クラスを継承し、ノースブリッジシミュレータがメッセージを受信すると、ハッシュルックアップテーブルモードにおけるマッチング方法を使ってメッセージのマッチングを実行し、速やかに対応する入口を見い出し、
５）プロトコルテーブルの実行プロセスにおいて、
プロトコルテーブルにおいて実行される全ての可能な状態の変換はレジスタ値の書き込みとメッセージの送信という２つのタイプを含み、レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝え、メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、当該コードが対応するメッセージ送信関数の関数ポインタと結び付けられ、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有し、
実際のシミュレータの実行の間、入口条件調査器が対応する入口を調べるとき、コントロール権が状態変換実行器に渡され、状態変換実行器は、予めコンフィギュレーションファイルから読み取られる操作リストに従って、作業のために対応するレジスタ書き込み関数とメッセージ送信関数とをそれぞれにコールし、
６）トランザクション生成器において、
トランザクション生成器の仕事はランダムなテストであり、当該ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスであり、当該ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストし、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成され、プロトコルの検証はランダムな組み合わせを通して達成され、
７）テスト評価方法とカバレッジ率向上方法において、
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行され、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析され、目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行し、目標のカバレッジ率を達成した場合は、検証の仕事は終了し、カバレッジ率による検証方法の中心的な技術はカバー率測定と報告とテストドライバの自動生成を含み、
選択されたカバレッジ率によるシミュレーション検証方法によって、シミュレーションの検証プロセスモデルが構成され、当該シミュレーションの検証プロセスモデルでは、検証の間、テストは複数のシミュレーション期間によって形成され、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、当該アクセストランザクションをシステムのシミュレータに投入し、当該システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行し、生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了し、各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進み、
シミュレーションの検証の間、明らかに各期間はカバーされる複数のプロトコルテーブルのエントリを持ち、前のシミュレーション期間でカバーされたプロトコルテーブルのエントリを除いて、新たにカバーされたプロトコルテーブルのエントリがプロトコルテーブルのカバレッジエントリに加えられ、i番目の期間に加えられるプロトコルテーブルはＫｉであり、ｉ番目の期間のカバレッジ率の増加率はＫｉ／Ｎ（Ｎはプロトコルテーブルの全エントリ数である。）であると設定され、ｔ番目の期間によってカバーされるプロトコルテーブルの集合は｛Ｋｉ｝であり、Ｔ期間後のカバレッジ率はＣａｒｔ｛ＫＴ＝Ｋ１∪Ｋ２……ＫＴ｝／Ｎであると設定され、
一つのシミュレーション期間を考察して、もしテストドライバが完全にランダムに生成された場合は、プロトコルテーブルの中の全てのエントリに対して任意の期間にカバーされる確率は等しく、各プロトコルテーブルエントリに対して、一つのシミュレーション期間は単一のベルヌーイ試行とみなされ、もし当該期間内のシミュレータの出力が当該プロトコルテーブルエントリをカバーすれば、試行は成功であるとみなされ、さもなければ試行は失敗であるとみなされ、
小さな確率のデッドロックイベントを解決するために設計されるプロトコルテーブルにはかなり多数のプロトコルテーブルのエントリがあり、すなわちプロトコルテーブル内の様々なエントリは異なる発生確率を持ち、シミュレーション期間の数が増加するとき、各期間に新たにカバーされるプロトコルテーブルのエントリの数は連続的に減少しなければならず、長期の稼働の間、有効なテストドライバの発生は速やかに減少し、０に向かわなければならず、
カバレッジ率によるテストドライバ自動発生器に対して、以上の分析により、純粋なランダムテストドライバ発生器を使うと、必然的に高効率の検証を行うことができないことが分かり、テストの効率を改善するために、毎回生成されるテストドライバは方向性がある必要があり、カバーされていないプロトコルテーブルのエントリをより大きな確率でシミュレータがカバーし、これはカバレッジ率による検証方法に対する不可避の必要条件であり、従って、カバレッジ率の変化に従ってカバレッジ率によるテストドライバ自動発生器によってテストドライバの発生を調節するための２つの方法が次の通り記述され、
（１）目的のプロトコルを検証することの複雑性および順序の保護のないネットワークによって生じるアクセストランザクションの実現プロセスの多様性のために、特定の入力テストドライバと出力カバレッジ目標との間の関係を分析することは不可能であり、この条件において、テストドライバ分類器を導入することが考慮され、当該分類器は入力テストドライバと出力カバレッジ率の間の確率の関係を提供することができ、当該分類器は、ランダムに生成されるテストドライバをフィルタリングし、新しいカバレッジ目標を生成する大きな確率を持っており、シミュレーション中に実行される有効なドライバとして働くテストドライバを選択するために使われ、無効なテストドライバは放棄され、
（２）プロトコルテーブルが分析され、プロトコルテーブルの中の多数のプロトコルテーブルエントリが類似のエントリを持ち、特に小さな確率のイベントのために設計された多くのプロトコルテーブルエントリを含み、従って関連する分析の方法に基づいてテストドライバの生成にオフセットの考えが導入され、各期間のシミュレーションが終了した後に、当該期間のテストドライバにオフセット措置を施し、前の期間で生じたシミュレーションの検証結果と類似するプロトコルテーブルエントリを速やかにカバーするために、オフセットされたテストドライバをもう一度稼働中のシミュレータに送る。
【００１２】
ここに開示される実施形態は、次の極めて有益な効果を有する。一般的に、国際的にキャッシュ・コヒーレンスに関わる複雑なコンピュータシステムの検証は検証システムの規模選択とプロトコル設計の検証の極端に高い困難さという問題を持つ。ここに開示される実施形態は、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルの変換の正確性に関するテスト検証モデルを構成する。プロセサによってサポート可能なドメイン内プロセサＩＤの数には制限があり、それでマルチプロセサシステムによって必要とされるノードコントローラの数は大き過ぎ、大きなノード間相互接続規模と複雑なトポロジー構造に帰着する。拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルを構成し、ノードコントローラを使うことによってローカルプロトコルテーブルの変換メカニズムを調べ、多階層コヒーレントドメインパケットを変換することは、大規模メモリ共有マルチプロセサシステムを著しく拡大し、効果的にシステムの性能を改善し、システムのトポロジーの複雑さを削減することができる。ＣＣ−ＮＵＭＡシステムの多階層キャッシュコヒーレンスプロトコルに向けて、完全な検証方法が設計され、実現される。その方法はカバレッジ率による検証戦略を使用する。そして、検証システムは、疑似ランダムベースのシミュレーション検証システムとカバレッジ率によるテストドライバ自動発生器で形成される。
【００１３】
ここに開示される実施形態は主に次の長所を持つ。
１．シミュレーションのモデルリング方法は、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムのプロトコル設計の検証を実現し、極めて低い資金コストと人員コストを費やして短時間で大規模コンピュータシステムのキープロトコルの検証を実現する。
２．大規模コンピュータシステムのキープロトコルの反例を迅速に発見することができ、モデリングの記録の完全性のために故障追跡を実行することができ、従ってキープロトコルの修正をガイドすることができる。
３．標準的なモデルが構成され、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムの相互接続チップの構成をガイドする。コンピュータシステムの検証カバレッジ率とそのキーチップセットを保証し、著しくプロジェクトデザインの検証コストを節約し、従って開発サイクルを保証する。
【図面の簡単な説明】
【００１４】
【図１】ノードコントローラを有する多階層コヒーレンシドメインシステムのトポロジー構造図である。
【図２】コヒーレンスプロトコルモデルシミュレーションテスト構造の概略図である。
【図３】マルチノード・マルチプロセサシステムの相互接続ネットワークの基本構造の概略図である。
【図４】マルチノード・マルチプロセサシステムのトポロジー構造の概略図である。
【図５】ノードシミュレーションモデルのキー構造図である。
【図６】シミュレータの実行プロセスを示す図である。
【図７】トランザクション生成器の実行プロセスを示す図である。
【図８】カバレッジ率による２重ループ検証法のフローチャートである。
【図９】多階層コヒーレンスドメインのシミュレーションと検証のグラフである。
【発明を実施するための形態】
【００１５】
以下に、添付図面を参照しながらここに開示される方法を更に詳細に説明する。
【００１６】
１）多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造
このシステムは、ＳｙｓｔｅｍＣ言語を使うことによりフルシステムシミュレータを設計して実装し、並列シミュレーション方法を実現する。ＳｙｓｔｅｍＣ環境において疑似ランダムソフトウェアシミュレーション検証システムを構成することによってモデルを検証する。その構造を図２に示す。
【００１７】
検証システムは主に以下の部分を含む：
（１）バス機能モデル：バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のＡＰＩインタフェースを提供して外部のモジュールとメッセージの交換を可能とし、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中のシミュレーションを行い、システムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供する。
【００１８】
（２）Ｒｅｆｅｒｅｎｃｅ  Ｍｏｄｅｌ（プロトコルリファレンスモデル）：リファレンスモデルは、バス機能モデルと固く統合され、シミュレーションシステムにおいてシステム状態とメッセージの流れをリアルタイムに検査し、シミュレーションの間にプロトコルから逸脱するシステムの動作を発見するために使用される。
【００１９】
（３）Ｎｏｄｅ  Ｃｏｎｔｒｏｌｌｅｒ（ノードコントローラシミュレータ）：ノードコントローラは、バス機能モデルのＡＰＩインタフェースを通して接続され、ノードコントローラ（ＮＣ）のキャッシュコヒーレンスプロトコルをシミュレーションで実現する。ノードコントローラは、プロセサの直接接続キャッシュコヒーレンスプロトコルのメッセージを使うことによってプロセサと通信し、そのキャッシュコヒーレンスプロトコルのメッセージを用いてネットワークシミュレータを通して様々なＮＣシミュレータの間で通信する。
【００２０】
（４）Ｎｅｔｗｏｒｋ  Ｓｉｍｕｌａｔｏｒ（ネットワークシミュレータ）：ネットワークシミュレータは、順序の保護のない簡単な全交換のネットワークをシミュレーションし、そのネットワークを使うことによって拡張型キャッシュコヒーレンスプロトコルのメッセージ通信を実行する。
【００２１】
（５）Ｇｌｏｂａｌ  Ｃｈｅｃｋｅｒ（全体検査器）：全体検査器は、システム全体の上で作動し、バス機能モデルのＡＰＩを通してデータ全体のキャッシュ・コヒーレンスを検査する。
【００２２】
（６）Ｒａｎｄｏｍ／Ｆｏｒｃｅ  Ｔｅｓｔ  Ｓｔｉｍｕｌａｔｉｏｎ  Ｇｅｎｅｒａｔｏｒ（ランダム/フォーステストドライバ自動発生器）：ランダム/フォーステストドライバ発生器は、バス機能モデルのＡＰＩインタフェースを通して接続され、シミュレーションの途中でランダム/フォースアクセストランザクションを連続的に発生し、バス機能モデルのＡＰＩインタフェースを通してバス機能モデルのキャッシュにアクセストランザクションを送信する。
【００２３】
２）拡張可能なトポロジー構造
このデザインにおいて、マルチノード・マルチプロセサシステムの相互接続ネットワークの基本構造を図３に示す。ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェース（ＮＩ）を通して送信される。各ドメインは２個のＣＰＵ（図３でＰとして示される）を含み、各ＣＰＵは１個のメモリ（ＭＥＭ）記憶空間に接続される。４つのクランプ（Ｃｌｕｍｐ）ベースの拡張可能な基本トポロジー構造が構成される。各クランプドメインが４つのノードを有するマルチノード・マルチプロセサのトポロジー構造を図１に示す。コヒーレンス空間、非コヒーレンス空間、およびＩ／Ｏ空間のアドレスは分割され、システムの規模に応じて設定される。ＮＣは全てのリモートアドレス空間に代理としてアクセスする。システムアドレスのマッピング法によって、図４に示すように、各クランプのＮＣノードのアドレスエリアは他のＮＣノードのアドレスエリアと重ならない。従って、もしＮＣに入力されたパケットのアドレスエリアがこのクランプ内に位置しなければ、必ずクランプ間の変換操作が必要である。
【００２４】
３）ノードシミュレーションモデル
ＮＣは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信する。ＮＣは、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装する。ノードシミュレータが１つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見する。そして、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行する。対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了する。例えば、図５は、ノードシミュレーションモデルのキー構造を示す。
【００２５】
４）プロトコルテーブル入口調査
プロトコルエンジンは、ドメイン間のコヒーレンスを実行するための重要なモジュールである。ノードコントローラによって受信されたコヒーレンスパケットは、そのプロトコルテーブルに従って２つのモジュールによって変換される。プロトコルエンジンモジュールはパケットを受信して自身の状態によってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信する。プロトコルエンジンはプロトコルテーブルの複数のエントリを記録する。そして、イベント状態を記録するための構造は、Ｔｒｋ（パケット記録メモリモジュール）／Ｒｄｔ（リードパケットメモリモジュール）／Ｗｒｔ（ライトパケットメモリモジュール）／Ｏｒｂ（送信パケットメモリモジュール）／Ｄｉｒ（ディレクトリメモリモジュール）を含み、状態構造の記憶と調査を実現する。
【００２６】
例えば、プロトコルテーブルは次のテーブルで示されるものである。
【００２７】
【表１】
2015531929.tif 000003
【００２８】
まず、システム状態レジスタのコーディング方法を定義する：各状態レジスタの値の桁は固定であり、全ての状態レジスタを対応する２進数に変換して最大の桁を左側に補完する。そして、補完された全２進数を1列に並べて対応するコーディング値を求める。プロトコルテーブルで与えられる値が不確定であれば、コーディングの間不確定の値を全ての値に広げ、コーディング後に全ての値は同じ入口に向く。各メッセージのコンフィグレーションファイルにおいて、入口の条件値に従ってソートが実行され、各条件は一つの入口に対応する。
【００２９】
調査器は階層的な設計を採用する。第１レベルは受信したメッセージを調べ、この部分は戦略設計モードを使って設計され、各メッセージに対してメッセージ処理クラスを実装し、パブリックメッセージ処理クラスを継承する。ノースブリッジシミュレータがメッセージを受信すると、ハッシュルックアップテーブルモードにおけるマッチング方法を使ってメッセージのマッチングを実行し、速やかに対応する入口を見い出す。
【００３０】
５）プロトコルテーブルの実行プロセス
プロトコルテーブルを実行するプロトコルエンジンのプロセスが図６のシミュレータ実行プロセスによって示される。各ブロックは一つのプロトコルテーブルの変換が達成されることを示す。点線内のブロックは１つの対応するプロトコルテーブルを実行する。プロトコルテーブルにおいて実行されることができる全ての可能な状態の変換は、２つのタイプ（レジスタ値の書き込みとメッセージの送信）を含む。レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝える；メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、コードが対応するメッセージ送信関数の関数ポインタと結び付けられる。従って、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有する。
【００３１】
実際のシミュレータの実行の間、入口条件調査器が対応する入口を調べるとき、コントロール権が状態変換実行器に渡され、状態変換実行器は、予めコンフィギュレーションファイルから読み取られる操作リストに従って、仕事のために対応するレジスタ書き込み関数とメッセージ送信関数とをそれぞれにコールする。
【００３２】
６）トランザクション生成器
トランザクション生成器の仕事はランダムなテストである。ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスである。ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストする。図７のトランザクション生成器の実行プロセスに示すように、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成される。プロトコルの検証はランダムな組み合わせを通して達成される。
【００３３】
７）テスト評価方法とカバレッジ率向上方法
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行される。そして、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析される。目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行する。目標のカバレッジ率を達成した場合は、検証の仕事は終了する。カバレッジ率による検証方法の中心的な技術はカバー率測定と報告とテストドライバの自動生成を含む。
【００３４】
図８は、カバレッジ率による２重ループ検証法のフローチャートである。
選択されたカバレッジ率によるシミュレーション検証方法によって、以下のようなシミュレーションの検証プロセスモデルが構成される。検証の間、テストは複数のシミュレーション期間によって形成される。そして、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、そのアクセストランザクションをシステムのシミュレータに投入する。システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行する。生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了する。各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進む。
【００３５】
シミュレーションの検証の間、明らかに各期間はカバーされる複数のプロトコルテーブルのエントリを持ち、前のシミュレーション期間でカバーされたプロトコルテーブルのエントリを除いて、新たにカバーされたプロトコルテーブルのエントリがプロトコルテーブルのカバレッジエントリに加えられる。i番目の期間に加えられるプロトコルテーブルはＫｉであり、ｉ番目の期間のカバレッジ率の増加率はＫｉ／Ｎ（Ｎはプロトコルテーブルの全エントリ数である。）であると設定される。ｔ番目の期間によってカバーされるプロトコルテーブルの集合は｛Ｋｉ｝であり、Ｔ期間後のカバレッジ率はＣａｒｔ｛ＫＴ＝Ｋ１∪Ｋ２……ＫＴ｝／Ｎであると設定される。
【００３６】
小さな確率のデッドロックイベントを解決するために設計されるプロトコルテーブルにはかなり多数のプロトコルテーブルのエントリがある。すなわちプロトコルテーブル内の様々なエントリは異なる発生確率を持つ。シミュレーション期間の数が増加するとき、各期間に新たにカバーされるプロトコルテーブルのエントリの数は連続的に減少しなければならず、長期の稼働の間、有効なテストドライバの発生は速やかに減少し、０に向かわなければならない。
【００３７】
以上の分析により、純粋なランダムテストドライバ発生器を使うと、必然的に高効率の検証を行うことができないことが分かる。テストの効率を改善するために、毎回生成されるテストドライバは方向性がある必要があり、それでカバーされていないプロトコルテーブルのエントリをより大きな確率でシミュレータがカバーする。そして、これはカバレッジ率による検証方法に対する不可避の必要条件である。従って、カバレッジ率の変化に従ってテストドライバの発生を調節するための２つの方法が次の通り記述される。
【００３８】
１．目的のプロトコルを検証することの複雑性および順序の保護のないネットワークによって生じるアクセストランザクションの実現プロセスの多様性のために、特定の入力テストドライバと出力カバレッジ目標との間の関係を分析することは不可能である。この条件において、テストドライバ分類器を導入することが考慮され、その分類器は入力テストドライバと出力カバレッジ率の間の確率の関係を提供することができる。その分類器は、ランダムに生成されるテストドライバをフィルタリングし、新しいカバレッジ目標を生成する大きな確率を持っており、シミュレーション中に実行される有効なドライバとして働くテストドライバを選択するために使われる。そして、無効なテストドライバは放棄される。
【００３９】
２．プロトコルテーブルが分析される。そして、プロトコルテーブルの中の多数のプロトコルテーブルエントリが類似のエントリを持ち、特に小さな確率のイベントのために設計された多くのプロトコルテーブルエントリを含む。そこで関連する分析の方法に基づいてテストドライバの生成にオフセットの考えが導入される。各期間のシミュレーションが終了した後に、この期間のテストドライバにオフセット措置を施し、前の期間で生じたシミュレーションの検証結果と類似するプロトコルテーブルエントリを速やかにカバーするために、オフセットされたテストドライバをもう一度稼働中のシミュレータに送る。
【００４０】
ここで開示される実施形態は、複雑なハイエンドコンピュータシステムの設計分野に応用され、大規模ハイエンドコンピュータシステムの設計検証およびそのキー・チップセットの設計検証、さらにそのシステムＯＳと応用ソフトウェアの設計と開発において極めて高い応用価値がある。
【００４１】
ここで開示される実施形態は、８６３テーマクラウドデータセンターのキーサポート技術の研究において使われた。モデルを構成した後に単一トランザクションのシミュレーションタイムを測定した。シミュレータでは、あるシミュレーションタイムを設定し、シミュレーションクロックが進む間に費やした時間をテストした。同時に、図９に示すように、プロセサＩｎｔｅｌ  Ｅ７５４０ＸＭ２×４、主メモリ４Ｇ×１６、プラットフォームＣｅｎｔＯＳ４．８を有するＩｎｓｐｕｒ浪潮ＮＦ８５２０サーバーにおいて、実際の実行時間を得た。実際のテスト結果は、ソフトウェアシミュレーションの方法に基づくこのテストで提供される複数階層コヒーレンスプロトコルの検証モデルは、許容できるシミュレーション処理時間の下でマルチ状態空間にあるキャッシュコヒーレンスプロトコルを検証できることを示す。
【００４２】
大規模ＣＣ−ＮＵＭＡマルチプロセサシステムコンピュータの開発の間に、ここに開示される実施形態の内容は、プロジェクトシステムのアーキテクチャ設計、システムの相互接続設計、およびプロトコル処理のキーチップのプロトコル設計などのいろいろな面で設計の実現可能性を保証する。特にシステムのマルチキーチップセット設計のためにキーとなり、信頼できる比較モデルを提供し、より小さい設計規模とより低い投資コストを持つマルチパスコンピュータシステム設計の成功を保証し、極めて重要な開発と応用価値を備える。
【００４３】
海外市場の技術の状況分析および応用の必要性
システム規模の速やかな拡張、ネットワーク遅延の不確定性およびメモリコヒーレンスモデルの多様性のような様々な要因がキャッシュコヒーレンスプロトコルを極めて複雑化させ、プロトコルの状態空間は指数関数的に増加し、または爆発さえする。産業界ではキャッシュコヒーレンスプロトコルの検証方法について、主に形式的検証とソフトウェアシミュレーションによる検証のような多くの議論がある。固有の状態空間の爆発の問題のために、現在、完全に形式的検証は複雑なマルチレベルプロトコルの検証に適用することはできない。ソフトウェアシミュレーションによる検証は人為的に制約モデルを書き、制約された疑似ランダムなテストを実行して、改善された効率で特定の目標を検証することができ、実用的で実現可能な方法である。実際のコンピュータシステムの構造をシミュレーションして検証評価システムと検証評価プラットフォームを実現すれば、相対的に短い時間と極めて低い資金コストと人員コストを費やして大規模コンピュータシステムのキープロトコルを検証することができる。モデリングの間に、処理メカニズムの全状態を記録でき、大規模コンピュータシステムのキープロトコルの反例を発見したとき、故障を容易に追跡することができる。モデリングは標準のモデルを実装し、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムの相互接続チップの構成をガイドする。モデリングの規模は自由で制御可能であり、技術の条件は成熟している。実装の間、製造・開発コストを容易に制御でき、過度に長い開発周期を避けることができる。
【００４４】
利益（経済的利益と社会的利益）
極めて複雑な構造を持つハイエンドのフォールトトレラントなコンピュータシステムに関して、ここに開示される実施形態の設計のキー技術は、システム構造の設計、キーチップセットの設計などを含む。小規模のプロトタイプ検証システムが小規模のハードウェアによって実現され、システム設計のキー技術がプログラマブルＦＰＧＡチップによって実現され、開発の周期を短縮したり、設計検証のコストを削減したり、プロジェクト開発の成功を保証する。例えば、複雑なプロトコルとロジックを持ったキーチップセットの設計の間、そのチップをテープアウトする費用は一回に千万元に迫り、テープアウトの期間も数ヶ月必要である。そして、高い検証カバレッジ率を持つプロトタイプ検証システムは、チップのテープアウトの成功を保証し、そのプロジェクトの時間のオーバヘッドとコストのオーバヘッドを大いに省く。更にまた、その検証はシステム構造の設計、放熱設計、パワー消費分へのレファレンスを与え、プロジェクトの開発リスクを著しく低下させる。従って、ここに開示される実施形態は高い経済的利益と社会的利益を有する。
【００４５】
本発明では、本発明の明細書に開示された技術的特徴を除いて、他の技術は当業者によく知られている。
【図１】
2015531929.tif 000004
【図２】
2015531929.tif 000005
【図３】
2015531929.tif 000006
【図４】
2015531929.tif 000007
【図５】
2015531929.tif 000008
【図６】
2015531929.tif 000009
【図７】
2015531929.tif 000010
【図８】
2015531929.tif 000011
【図９】
2015531929.tif 000012
【手続補正書】
【提出日】平成27年2月20日(2015.2.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのシミュレーション検証およびテスト方法であって、
カバレッジ率による検証戦略を使うことによって、疑似ランダムベースのシミュレーション検証システムおよびカバレッジ率によるテストドライバ自動発生器で形成されるシミュレーション検証システムを構成するために、多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造と、拡張可能なトポロジー構造と、ノードシミュレーションモデルと、プロトコルテーブル調査および状態変換実行方法と、プロトコルテーブルの実行プロセスと、トランザクション生成器と、テスト評価方法と、カバレッジ率向上方法とを備え、
コヒーレンス空間を拡張して大規模ＣＣ−ＮＵＭＡマルチプロセサシステムを実現するために、ノードコントローラＮＣが必要であり、当該ノードコントローラが全体のキャッシュコヒーレンスの維持とシステム規模の拡大の２つの機能を持ち、まず、各ノードコントローラは１個から４個のプロセサに接続されてノードと第１レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスが当該プロセサと当該ノードコントローラによって共同で維持され、次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模ＣＣ−ＮＵＭＡシステムを形成し、ノード間における第２レベルのキャシュコヒーレンスがノードコントローラによって維持され、当該方法で構成される大規模ＣＣ−ＮＵＭＡシステムは拡張されてプロセサ直接接続キャッシュコヒーレンスプロトコルに基づく多階層プロトコルを確立し、全体のコヒーレンスを維持し、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのＣＣ−ＮＵＭＡシステムプロトコルシミュレーションモデルを構成するために、多数のコヒーレンシドメインの間でドメイン内およびドメイン間の送信の精度と安定性を保証するようにシステムのキーノードにおいてプロトコルテーブル調査および状態変換実行メカニズムが構成されることが必要であり、更に信頼できるプロトコル入口変換カバレッジ率評価による検証方法が提供され、最適化されたトランザクション生成器のプッシュモデルをロードすることによってトランザクションを処理し、操作の終了後にカバレッジ率の指標を取得し、ランダムトランザクション促進メカニズムに比べて検証効率が改善され、１つのマルチプロセサ検証システムモデルを構成して関連のあるシミュレーション検証を実行することを通して当該方法の妥当性と有効性が更に確認され、
１）多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造において、
拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインモデルのシステムシミュレータと当該システムシミュレータと並列に実行されるモデル検証システムとがＳｙｓｔｅｍＣ言語を使って設計され、当該モデル検証システムが疑似ランダムトランザクション生成器を構成することによってテストされ、当該モデル検証システムの正確さが全体検査器を使って判断され、当該モデル検証システムは、バス機能モデルと、プロトコルリファレンスモデルと、ノードコントローラシミュレータと、ネットワークシミュレータと、全体検査器と、プロトコル入口調査メカニズムとを含み、
（１）バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のＡＰＩインタフェースを提供して外部のモジュールとメッセージの交換を提供し、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中のシミュレーションを行い、システムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供し、
（２）プロトコルリファレンスモデルは、バス機能モデルと固く統合され、シミュレーションシステムにおいてシステム状態とメッセージの流れをリアルタイムに検査し、シミュレーションの間にプロトコルから逸脱するシステムの動作を発見するために使用され、
（３）ノードコントローラシミュレータは、バス機能モデルのＡＰＩインタフェースを通して接続され、ノードコントローラＮＣのキャッシュコヒーレンスプロトコルをシミュレーションで実現し、プロセサの直接接続キャッシュコヒーレンスプロトコルのメッセージを使うことによってプロセサと通信し、当該キャッシュコヒーレンスプロトコルのメッセージを用いてネットワークシミュレータを通して様々なＮＣシミュレータの間で通信し、
（４）ネットワークシミュレータは、順序の保護のない簡単な全交換のネットワークをシミュレーションし、当該ネットワークを使うことによって拡張型キャッシュコヒーレンスプロトコルのメッセージ通信を実行し、
（５）全体検査器は、システム全体の上で作動し、バス機能モデルのＡＰＩを通してデータ全体のキャッシュ・コヒーレンスを検査し、
（６）ランダム/フォーステストドライバの自動発生器は、バス機能モデルのＡＰＩインタフェースを通して接続され、シミュレーションの途中でランダム/フォースアクセストランザクションを連続的に発生し、バス機能モデルのＡＰＩインタフェースを通してバス機能モデルのキャッシュにアクセストランザクションを送信し、
２）拡張可能なトポロジー構造において、
ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェースＮＩを使って送信され、各ドメインは２個のＣＰＵを含み、各ＣＰＵは１個のメモリに接続され、４つのクランプベースの拡張可能な基本トポロジー構造を構成し、当該基本トポロジー構造は各クランプドメインが４つのノードを有するマルチノード・マルチプロセサのトポロジー構造であり。コヒーレンス空間、非コヒーレンス空間、およびＩ／Ｏ空間のアドレスは分割され、システムの規模に応じて設定され、当該ＮＣは全てのリモートアドレス空間に代理としてアクセスし、システムアドレスのマッピング法によって、各クランプのＮＣノードのアドレスエリアは他のＮＣノードのアドレスエリアと重ならず、当該ＮＣに入力されたパケットのアドレスエリアが当該クランプ内に位置しなければ、必ずクランプ間の変換操作が必要であり、
３）ノードシミュレーションモデルにおいて、
ＮＣは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信し、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装し、ノードシミュレータが１つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
４）プロトコルテーブルシミュレータと入口条件調査器を含むプロトコルテーブルの調査と状態変換の実行において、
プロトコルテーブルシミュレータはシステムシミュレータの中心部として働き、多階層キャッシュコヒーレンスプロトコルモデルの通常の動作に極めて重要であり、プロトコルテーブルは検証された目標であり、検証プロセス全体の間に修正可能であり、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータがセットされる必要があり、当該シミュレータは入口条件調査器と状態変換実行器の２つの部分を含み、ノードシミュレータが１つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
入口条件調査器はドメイン間のコヒーレンスを実行するための重要なモジュールであり、ノードコントローラによって受信されたコヒーレンスパケットはプロトコルテーブルに従って前記２つのモジュールによって変換され、入口条件調査器はパケットを受信して入口条件調査器の状態に従ってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信し、入口条件調査器はプロトコルテーブルの複数のエントリを記録し、イベント状態を記録するための構造はＴｒｋ／Ｒｄｔ／Ｗｒｔ／Ｏｒｂ／Ｄｉｒを含み、状態構造の記憶と調査を実現し、
システム状態レジスタのコーディング方法において、各状態レジスタの値の桁は固定であり、全ての状態レジスタを対応する２進数に変換して最大の桁を左側に補完し、補完された全２進数を1列に並べて対応するコーディング値を求め、プロトコルテーブルで与えられる値が不確定であれば、コーディングの間不確定の値を全ての値に広げ、コーディング後に全ての値は同じ入口に向き、各メッセージのコンフィグレーションファイルにおいて、入口の条件値に従ってソートが実行され、各条件は一つの入口に対応し、
入口条件調査器は階層的な設計を採用し、第１レベルは受信したメッセージを調べ、当該部分は戦略設計モードを使って設計され、各メッセージに対してメッセージ処理クラスを実装し、パブリックメッセージ処理クラスを継承し、ノースブリッジシミュレータがメッセージを受信すると、ハッシュルックアップテーブルモードにおけるマッチング方法を使ってメッセージのマッチングを実行し、速やかに対応する入口を見い出し、
５）プロトコルテーブルの実行プロセスにおいて、
プロトコルテーブルにおいて実行される全ての可能な状態の変換はレジスタ値の書き込みとメッセージの送信という２つのタイプを含み、レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝え、メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、当該コードが対応するメッセージ送信関数の関数ポインタと結び付けられ、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有し、
実際のシミュレータの実行の間、入口条件調査器が対応する入口を調べるとき、コントロール権が状態変換実行器に渡され、状態変換実行器は、予めコンフィギュレーションファイルから読み取られる操作リストに従って、仕事のために対応するレジスタ書き込み関数とメッセージ送信関数とをそれぞれにコールし、
６）トランザクション生成器において、
トランザクション生成器の仕事はランダムなテストであり、当該ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスであり、当該ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストし、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成され、プロトコルの検証はランダムな組み合わせを通して達成され、
７）テスト評価方法とカバレッジ率向上方法において、
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行され、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析され、目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行し、目標のカバレッジ率を達成した場合は、検証の仕事は終了し、カバレッジ率による検証方法の中心的な技術はカバレッジ率測定と報告とテストドライバの自動生成を含み、
選択されたカバレッジ率によるシミュレーション検証方法によって、シミュレーションの検証プロセスモデルが構成され、当該シミュレーションの検証プロセスモデルでは、検証の間、テストは複数のシミュレーション期間によって形成され、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、当該アクセストランザクションをシステムのシミュレータに投入し、当該システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行し、生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了し、各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進み、
シミュレーションの検証の間、明らかに各期間はカバーされる複数のプロトコルテーブルのエントリを持ち、前のシミュレーション期間でカバーされたプロトコルテーブルのエントリを除いて、新たにカバーされたプロトコルテーブルのエントリがプロトコルテーブルのカバレッジエントリに加えられ、i番目の期間に加えられるプロトコルテーブルはＫｉであり、ｉ番目の期間のカバレッジ率の増加率はＫｉ／Ｎ（Ｎはプロトコルテーブルの全エントリ数である。）であると設定され、ｔ番目の期間によってカバーされるプロトコルテーブルの集合は｛Ｋｉ｝であり、Ｔ期間後のカバレッジ率はＣａｒｔ｛ＫＴ＝Ｋ１∪Ｋ２……ＫＴ｝／Ｎであると設定され、
一つのシミュレーション期間を考察して、もしテストドライバが完全にランダムに生成された場合は、プロトコルテーブルの中の全てのエントリに対して任意の期間にカバーされる確率は等しく、各プロトコルテーブルエントリに対して、一つのシミュレーション期間は単一のベルヌーイ試行とみなされ、もし当該期間内のシミュレータの出力が当該プロトコルテーブルエントリをカバーすれば、試行は成功であるとみなされ、さもなければ試行は失敗であるとみなされ、
小さな確率のデッドロックイベントを解決するために設計されるプロトコルテーブルにはかなり多数のプロトコルテーブルのエントリがあり、すなわちプロトコルテーブル内の様々なエントリは異なる発生確率を持ち、シミュレーション期間の数が増加するとき、各期間に新たにカバーされるプロトコルテーブルのエントリの数は連続的に減少しなければならず、長期の稼働の間、有効なテストドライバの発生は速やかに減少し、０に向かわなければならず、
カバレッジ率によるテストドライバ自動発生器に対して、以上の分析により、純粋なランダムテストドライバ発生器を使うと、必然的に高効率の検証を行うことができないことが分かり、テストの効率を改善するために、毎回生成されるテストドライバは方向性がある必要があり、カバーされていないプロトコルテーブルのエントリをより大きな確率でシミュレータがカバーし、これはカバレッジ率による検証方法に対する不可避の必要条件であり、従って、カバレッジ率の変化に従ってカバレッジ率によるテストドライバ自動発生器によってテストドライバの発生を調節するための２つの方法が次の通り記述され、
（１）目的のプロトコルを検証することの複雑性および順序の保護のないネットワークによって生じるアクセストランザクションの実現プロセスの多様性のために、特定の入力テストドライバと出力カバレッジ目標との間の関係を分析することは不可能であり、この条件において、テストドライバ分類器を導入することが考慮され、当該分類器は入力テストドライバと出力カバレッジ率の間の確率の関係を提供することができ、当該分類器は、ランダムに生成されるテストドライバをフィルタリングし、新しいカバレッジ目標を生成する大きな確率を持っており、シミュレーション中に実行される有効なドライバとして働くテストドライバを選択するために使われ、無効なテストドライバは放棄され、
（２）プロトコルテーブルが分析され、プロトコルテーブルの中の多数のプロトコルテーブルエントリが類似のエントリを持ち、特に小さな確率のイベントのために設計された多くのプロトコルテーブルエントリを含み、従って関連する分析の方法に基づいてテストドライバの生成にオフセットの考えが導入され、各期間のシミュレーションが終了した後に、当該期間のテストドライバにオフセット措置を施し、前の期間で生じたシミュレーションの検証結果と類似するプロトコルテーブルエントリを速やかにカバーするために、オフセットされたテストドライバをもう一度稼働中のシミュレータに送る、
ことを特徴とする拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのシミュレーション検証およびテスト方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータアーキテクチャ分野に関し、特に、マルチプロセサコンピュータシステムのキャッシュコヒーレンス、マルチノード・マルチプロセサコンピュータシステム、キャッシュコヒーレント不均等メモリアクセス（ＣＣ−ＮＵＭＡ：Ｃａｃｈｅ  Ｃｏｈｅｒｅｎｔ  Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）アーキテクチャ、キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンシドメインとモデルのテスト・検証方法、および拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンシドメインのシミュレーション検証およびテスト方法に関する。
【背景技術】
【０００２】
現在、マルチプロセサの接続方法はバス接続からポイントツーポイント接続に変わっており、また、メモリはプロセサの外部ブリッジチップに接続される代わりに直接プロセサに接続される。メモリ接続方法の変化のために、システム内のメモリ配置がまた変わっている。それはマルチプロセサシステムにおけるメモリアクセスの非均一性を引き起こす。従って、現在のマルチプロセサシステムは大部分不均等メモリアクセス（ＮＵＭＡ：Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）アーキテクチャシステムを採用する。
【０００３】
ＮＵＭＡシステムでは、マルチキャッシュユニットが分散して配置される。従って、マルチキャッシュの間でコヒーレンスの問題を解決するように、ＮＵＭＡシステムは設計される。キャッシュコヒーレンスの問題を解決する方法は、ＣＣ−ＮＵＭＡシステムの中心的な問題である。従って、それに応じてキャッシュコヒーレンスプロトコルに対する検証作業は、ＣＣ−ＮＵＭＡシステムの検証作業の重要な部分である。商業的に利用できるマイクロプロセサを使ってスーパーコンピュータを作ることが一般的となった衝撃の下で、商業的に利用できるマルチコアマイクロプロセサを使ってＣＣ−ＮＵＭＡシステムを作ることは避けられない傾向になる。多数のプロセサの並列処理をサポートするために、現在の商業的に利用できるほとんど全てのハイエンドマイクロプロセサは基本的にマルチパス直接接続への拡張をサポートする。プロセサが組み込みのメモリコントローラを使用し、アクセス空間全部が一様にアドレスされる場合、多数の直接に接続されたプロセサが小さなＣＣ−ＮＵＭＡシステムを形成することができる。けれども、プロセサの直接接続インタフェースの数は制限されているので、プロセサを直接に接続することのみで大規模システムを作ることは困難である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
コヒーレンシドメイン空間を拡張し、大規模ＣＣ−ＮＵＭＡマルチプロセサシステムを実現するために、ノードコントローラ（ＮＣ）が必要とされる。ここに開示されるノードコントローラは全体のキャッシュコヒーレンスの維持とシステム規模の拡大の２つの機能を持つ。まず、各ノードコントローラは１個から４個のプロセサに接続されてノードと第１レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスはプロセサとノードコントローラによって共同で維持される。次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模ＣＣ−ＮＵＭＡシステムを形成する。ノード間における第２レベルのキャシュコヒーレンスはノードコントローラによって維持される。この方法で構成される大規模ＣＣ−ＮＵＭＡシステムは拡張されてプロセサ直接接続キャッシュコヒーレンスプロトコルに基づく多階層プロトコルを確立し、全体のコヒーレンスを維持するために必要である。拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンシドメインのＣＣ−ＮＵＭＡシステムプロトコルはいつでも比較的複雑であり、また、シミュレーションテストがとても重要である。従って、また、プロトコルのためのシミュレーション検証作業が重要な作業になる。
【０００５】
上述した通り、直接に接続されたプロセサによって構成されるマルチプロセサシステムは制限された規模を持つ。大規模なＣＣ−ＮＵＭＡマルチプロセサシステムを実現するために、図１に示すように、ノードコントローラが必要である。ノードコントローラはシステム規模の拡大および全体のキャッシュコヒーレンスの維持の機能を持つ。まず、各ノードコントローラは１個から４個のプロセサに接続されてノードと第１レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスはプロセサとノードコントローラによって共同で維持される。また、ノードコントローラはドメイン内で少なくとも１つのプロセサＩＤを占有し、それでドメイン内のプロセサの数とノードコントローラの数の合計は、そのドメイン内でプロセサによってサポート可能なプロセサＩＤの数を超えることはできない。次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模ＣＣ−ＮＵＭＡシステムを形成する。ノード間における第２レベルのキャシュコヒーレンスはノードコントローラによって維持される。そして、あるノード内のプロセサがノードとキャッシュコヒーレンシドメインを超えて他のノード内のプロセサのメモリにアクセスするとき、全体のキャッシュコヒーレンスはノードコントローラによって維持される。
【０００６】
その結果、関連のあるモデル、すなわち、ＣＣ−ＮＵＭＡバス機能モデルが設計される。そのモデルは、キャッシュ、プロセサの記憶装置、およびプロセサ間の相互接続ネットワークをシミュレーションし、カスタマイズシステムのトポロジー構造をサポートし、アクセス動作のトランザクションレベルのシミュレーションをサポートし、プロセサの直接接続キャッシュコヒーレンスプロトコルをシミュレーションし、リアルタイムの動作、様々なアクセストランザクションの状態、システム内のキャッシュと記憶装置を提供する。更にまた、ノードコントローラのシミュレーションモデルが設計される。そのモデルは、バス機能モデルのＡＰＩインタフェースを使うことによって、ノードコントローラによって保持される多階層キャッシュコヒーレンスプロトコルをシミュレーションし、プロセサのキャッシュコヒーレンスプロトコルメッセージを使うことによってプロセサと通信し、拡張型キャッシュコヒーレンスプロトコルメッセージを使い、従ってドメインの多階層のコヒーレンスプロトコル変換を実装することによってノードコントローラのネットワークを通して様々なノードコントローラの間で通信する。
【０００７】
機能検証を実行するためにシミュレーション検証方法を使うことの中心的なアイデアは、設計者の意図をシミュレータで観測される実際の動作と比較して２つのコヒーレンスを決定することである。設計者によって予期されるようにシミュレーション中で設計が稼働し、設計の必要条件を達成するとき、その設計は検証されたとみなされる。検証の間に、シミュレーション結果のカバレッジ率は生成されたテストドライバに対して解析され、システムの機能記述から得られる情報と組み合わせて、更なる検証のためのテストドライバの生成アルゴリズムまたはテストドライバの生成制約が改善され、次に生成されるテストドライバはシミュレーションシステムにもっと高いカバレッジ率を達成させることができる。
【０００８】
キャッシュコヒーレンスプロトコルは、共有データアクセスコヒーレンスの実装と共有メモリプログラミングインターフェースの提供のために使われる処理メカニズムである。キャッシュコヒーレンスプロトコルは、システムの正しさを直接決定するのみでなく、またシステムの規模と性能に重要な役割を果たし、分散された共有メモリを持ったマルチプロセサ・マルチコアシステムを実装するために極めて重要である。システム規模の速やかな拡大、ネットワーク遅延の不確定性およびメモリコヒーレンスモデルの多様性のような様々な要因がキャッシュコヒーレンスプロトコルを極めて複雑化させ、プロトコルの状態空間は指数関数的に増加し、または爆発さえする。産業界ではキャッシュコヒーレンスプロトコルの検証方法について、主に形式的検証とソフトウェアシミュレーションによる検証のような多くの議論がある。固有の状態空間の爆発の問題のために、現在、完全に形式的検証は複雑な多階層プロトコルの検証作業に適用することはできない。ソフトウェアシミュレーションによる検証は人為的に制約モデルを書き、制約された疑似ランダムなテストを実行して、改善された効率で特定の目標を検証することができ、実用的で実現可能な方法である。ソフトウェアシミュレーション方法に基づく本発明は、まず、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンス記述方法でシミュレーションモデルの構成を記述して、ソフトウェアシミュレーションによる検証方法を提供し、多状態空間において多階層ドメインキャッシュコヒーレンスプロトコルを効果的に検証する。１つのマルチプロセサの検証システムモデルを作成し、関連するシミュレーションによる検証を実行することを通して、本方法の妥当性と有効性が更に確認される。
【０００９】
プロセサによってサポート可能なドメイン内プロセサＩＤには制限があり、それでマルチプロセサシステムによって必要とされるノードコントローラの数は大き過ぎ、大きなノード間相互接続規模と複雑なトポロジー構造に帰着する。拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルを構成し、ノードコントローラを使うことによってローカルプロトコルテーブルの変換メカニズムを調べ、多階層コヒーレントドメインパケットを変換することは、大規模メモリ共有マルチプロセサシステムを著しく拡大し、効果的にシステムの性能を改善し、システムのトポロジーの複雑さを削減することができる。
【００１０】
本発明の目的は、ＣＣ−ＮＵＭＡシステムの多階層キャッシュコヒーレンスプロトコルに適した拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルの変換の正確なテストと検証の方法を提供することである。
【課題を解決するための手段】
【００１１】
ここに開示される実施形態は、以下の技術的な解決策を通して実現されることができ、カバレッジ率による検証戦略を使うことによって、疑似ランダムベースのシミュレーション検証システムおよびカバレッジ率によるテストドライバ自動発生器で形成されるシミュレーション検証システムを構成するために、多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造と、拡張可能なトポロジー構造と、ノードシミュレーションモデルと、プロトコルテーブル調査および状態変換実行方法と、プロトコルテーブルの実行プロセスと、トランザクション生成器と、テスト評価方法と、カバレッジ率向上方法とを備え、
コヒーレンス空間を拡張して大規模ＣＣ−ＮＵＭＡマルチプロセサシステムを実現するために、ノードコントローラＮＣが必要であり、当該ノードコントローラが全体のキャッシュコヒーレンスの維持とシステム規模の拡大の２つの機能を持ち、まず各ノードコントローラは１個から４個のプロセサに接続されてノードと第１レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスが当該プロセサと当該ノードコントローラによって共同で維持され、次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模ＣＣ−ＮＵＭＡシステムを形成し、ノード間における第２レベルのキャシュコヒーレンスがノードコントローラによって維持され、当該方法で構成される大規模ＣＣ−ＮＵＭＡシステムは拡張されてプロセサ直接接続キャッシュコヒーレンスプロトコルに基づく多階層プロトコルを確立し、全体のコヒーレンスを維持し、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのＣＣ−ＮＵＭＡシステムプロトコルシミュレーションモデルを構成するために、多数のコヒーレンシドメインの間でドメイン内およびドメイン間の送信の精度と安定性を保証するようにシステムのキーノードにおいてプロトコルテーブル調査および状態変換実行メカニズムが構成されることが必要であり、更に信頼できるプロトコル入口変換カバレッジ率評価による検証方法が提供され、最適化されたトランザクション生成器のプッシュモデルをロードすることによってトランザクションを処理し、操作の終了後にカバレッジ率の指標を取得し、ランダムトランザクション促進メカニズムに比べて検証効率が改善され、１つのマルチプロセサ検証システムモデルを構成して関連のあるシミュレーション検証を実行することを通して当該方法の妥当性と有効性が更に確認され、
１）多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造において、
拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインモデルのシステムシミュレータと当該システムシミュレータと並列に実行されるモデル検証システムとがＳｙｓｔｅｍＣ言語を使って設計され、当該モデル検証システムが疑似ランダムトランザクション生成器を構成することによってテストされ、当該モデル検証システムの正確さが全体検査器を使って判断され、当該モデル検証システムは、バス機能モデルと、プロトコルリファレンスモデルと、ノードコントローラシミュレータと、ネットワークシミュレータと、全体検査器と、プロトコル入口調査メカニズムとを含み、
（１）バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のＡＰＩインタフェースを提供して外部のモジュールとメッセージの交換を提供し、シミュレーションを行い、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中にシステムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供し、
（２）プロトコルリファレンスモデルは、バス機能モデルと固く統合され、シミュレーションシステムにおいてシステム状態とメッセージの流れをリアルタイムに検査し、シミュレーションの間にプロトコルから逸脱するシステムの動作を発見するために使用され、
（３）ノードコントローラシミュレータは、バス機能モデルのＡＰＩインタフェースを通して接続され、ノードコントローラＮＣのキャッシュコヒーレンスプロトコルをシミュレーションで実現し、プロセサの直接接続キャッシュコヒーレンスプロトコルのメッセージを使うことによってプロセサと通信し、当該キャッシュコヒーレンスプロトコルのメッセージを用いてネットワークシミュレータを通して様々なＮＣシミュレータの間で通信し、
（４）ネットワークシミュレータは、順序の保護のない簡単な全交換のネットワークをシミュレーションし、当該ネットワークを使うことによって拡張型キャッシュコヒーレンスプロトコルのメッセージ通信を実行し、
（５）全体検査器は、システム全体の上で作動し、バス機能モデルのＡＰＩを通してデータ全体のキャッシュコヒーレンスを検査し、
（６）ランダム/フォーステストドライバの自動発生器は、バス機能モデルのＡＰＩインタフェースを通して接続され、シミュレーションの途中でランダム/フォースアクセストランザクションを連続的に発生し、バス機能モデルのＡＰＩインタフェースを通してバス機能モデルのキャッシュにアクセストランザクションを送信し、
２）拡張可能なトポロジー構造において、
ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェースＮＩを使って送信され、各ドメインは２個のＣＰＵを含み、各ＣＰＵは１個のメモリに接続され、４つのクランプベースの拡張可能な基本トポロジー構造を構成し、当該基本トポロジー構造は各クランプドメインが４つのノードを有するマルチノード・マルチプロセサのトポロジー構造であり。コヒーレンス空間、非コヒーレンス空間、およびＩ／Ｏ空間のアドレスは分割され、システムの規模に応じて設定され、当該ＮＣは全てのリモートアドレス空間に代理としてアクセスし、システムアドレスのマッピング法によって、各クランプのＮＣノードのアドレスエリアは他のＮＣノードのアドレスエリアと重ならず、当該ＮＣに入力されたパケットのアドレスエリアが当該クランプ内に位置しなければ、必ずクランプ間の変換操作が必要であり、
３）ノードシミュレーションモデルにおいて、
ＮＣは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信し、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装し、ノードシミュレータが１つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
４）プロトコルテーブルシミュレータと入口条件調査器を含むプロトコルテーブルの調査と状態変換の実行において、
プロトコルテーブルシミュレータはシステムシミュレータの中心部として働き、多階層キャッシュコヒーレンスプロトコルモデルの通常の動作に極めて重要であり、プロトコルテーブルは検証された目標であり、検証プロセス全体の間に修正可能であり、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータがセットされる必要があり、当該シミュレータは入口条件調査器と状態変換実行器の２つの部分を含み、ノードシミュレータが１つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
入口条件調査器はドメイン間のコヒーレンスを実行するための重要なモジュールであり、ノードコントローラによって受信されたコヒーレンスパケットはプロトコルテーブルに従って前記２つのモジュールによって変換され、入口条件調査器はパケットを受信して入口条件調査器の状態に従ってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信し、入口条件調査器はプロトコルテーブルの複数のエントリを記録し、イベント状態を記録するための構造はＴｒｋ（パケット記録メモリモジュール）／Ｒｄｔ（リードパケットメモリモジュール）／Ｗｒｔ（ライトパケットメモリモジュール）／Ｏｒｂ（送信パケットメモリモジュール）／Ｄｉｒ（ディレクトリメモリモジュール）を含み、
システム状態レジスタのコーディング方法において、各状態レジスタの値の桁は固定であり、全ての状態レジスタを対応する２進数に変換して最大の桁を左側に補完し、補完された全２進数を1列に並べて対応するコーディング値を求め、プロトコルテーブルで与えられる値が不確定であれば、コーディングの間不確定の値を全ての値に広げ、コーディング後に全ての値は同じ入口に向き、各メッセージのコンフィグレーションファイルにおいて、入口の条件値に従ってソートが実行され、各条件は一つの入口に対応し、
入口条件調査器は階層的な設計を採用し、第１レベルは受信したメッセージを調べ、当該部分は戦略設計モードを使って設計され、各メッセージに対してメッセージ処理クラスを実装し、パブリックメッセージ処理クラスを継承し、ノースブリッジシミュレータがメッセージを受信すると、ハッシュルックアップテーブルモードにおけるマッチング方法を使ってメッセージのマッチングを実行し、速やかに対応する入口を見い出し、
５）プロトコルテーブルの実行プロセスにおいて、
プロトコルテーブルにおいて実行される全ての可能な状態の変換はレジスタ値の書き込みとメッセージの送信という２つのタイプを含み、レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝え、メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、当該コードが対応するメッセージ送信関数の関数ポインタと結び付けられ、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有し、
実際のシミュレータの実行の間、入口条件調査器が対応する入口を調べるとき、コントロール権が状態変換実行器に渡され、状態変換実行器は、予めコンフィギュレーションファイルから読み取られる操作リストに従って、作業のために対応するレジスタ書き込み関数とメッセージ送信関数とをそれぞれにコールし、
６）トランザクション生成器において、
トランザクション生成器の仕事はランダムなテストであり、当該ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスであり、当該ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストし、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成され、プロトコルの検証はランダムな組み合わせを通して達成され、
７）テスト評価方法とカバレッジ率向上方法において、
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行され、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析され、目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行し、目標のカバレッジ率を達成した場合は、検証の仕事は終了し、カバレッジ率による検証方法の中心的な技術はカバレッジ率測定と報告とテストドライバの自動生成を含み、
選択されたカバレッジ率によるシミュレーション検証方法によって、シミュレーションの検証プロセスモデルが構成され、当該シミュレーションの検証プロセスモデルでは、検証の間、テストは複数のシミュレーション期間によって形成され、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、当該アクセストランザクションをシステムのシミュレータに投入し、当該システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行し、生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了し、各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進み、
シミュレーションの検証の間、明らかに各期間はカバーされる複数のプロトコルテーブルのエントリを持ち、前のシミュレーション期間でカバーされたプロトコルテーブルのエントリを除いて、新たにカバーされたプロトコルテーブルのエントリがプロトコルテーブルのカバレッジエントリに加えられ、i番目の期間に加えられるプロトコルテーブルはＫｉであり、ｉ番目の期間のカバレッジ率の増加率はＫｉ／Ｎ（Ｎはプロトコルテーブルの全エントリ数である。）であると設定され、ｔ番目の期間によってカバーされるプロトコルテーブルの集合は｛Ｋｉ｝であり、Ｔ期間後のカバレッジ率はＣａｒｔ｛ＫＴ＝Ｋ１∪Ｋ２……ＫＴ｝／Ｎであると設定され、
一つのシミュレーション期間を考察して、もしテストドライバが完全にランダムに生成された場合は、プロトコルテーブルの中の全てのエントリに対して任意の期間にカバーされる確率は等しく、各プロトコルテーブルエントリに対して、一つのシミュレーション期間は単一のベルヌーイ試行とみなされ、もし当該期間内のシミュレータの出力が当該プロトコルテーブルエントリをカバーすれば、試行は成功であるとみなされ、さもなければ試行は失敗であるとみなされ、
小さな確率のデッドロックイベントを解決するために設計されるプロトコルテーブルにはかなり多数のプロトコルテーブルのエントリがあり、すなわちプロトコルテーブル内の様々なエントリは異なる発生確率を持ち、シミュレーション期間の数が増加するとき、各期間に新たにカバーされるプロトコルテーブルのエントリの数は連続的に減少しなければならず、長期の稼働の間、有効なテストドライバの発生は速やかに減少し、０に向かわなければならず、
カバレッジ率によるテストドライバ自動発生器に対して、以上の分析により、純粋なランダムテストドライバ発生器を使うと、必然的に高効率の検証を行うことができないことが分かり、テストの効率を改善するために、毎回生成されるテストドライバは方向性がある必要があり、カバーされていないプロトコルテーブルのエントリをより大きな確率でシミュレータがカバーし、これはカバレッジ率による検証方法に対する不可避の必要条件であり、従って、カバレッジ率の変化に従ってカバレッジ率によるテストドライバ自動発生器によってテストドライバの発生を調節するための２つの方法が次の通り記述され、
（１）目的のプロトコルを検証することの複雑性および順序の保護のないネットワークによって生じるアクセストランザクションの実現プロセスの多様性のために、特定の入力テストドライバと出力カバレッジ目標との間の関係を分析することは不可能であり、この条件において、テストドライバ分類器を導入することが考慮され、当該分類器は入力テストドライバと出力カバレッジ率の間の確率の関係を提供することができ、当該分類器は、ランダムに生成されるテストドライバをフィルタリングし、新しいカバレッジ目標を生成する大きな確率を持っており、シミュレーション中に実行される有効なドライバとして働くテストドライバを選択するために使われ、無効なテストドライバは放棄され、
（２）プロトコルテーブルが分析され、プロトコルテーブルの中の多数のプロトコルテーブルエントリが類似のエントリを持ち、特に小さな確率のイベントのために設計された多くのプロトコルテーブルエントリを含み、従って関連する分析の方法に基づいてテストドライバの生成にオフセットの考えが導入され、各期間のシミュレーションが終了した後に、当該期間のテストドライバにオフセット措置を施し、前の期間で生じたシミュレーションの検証結果と類似するプロトコルテーブルエントリを速やかにカバーするために、オフセットされたテストドライバをもう一度稼働中のシミュレータに送る。
【発明の効果】
【００１２】
ここに開示される実施形態は、次の極めて有益な効果を有する。一般的に、国際的にキャッシュ・コヒーレンスに関わる複雑なコンピュータシステムの検証は検証システムの規模選択とプロトコル設計の検証の極端に高い困難さという問題を持つ。ここに開示される実施形態は、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルの変換の正確性に関するテスト検証モデルを構成する。プロセサによってサポート可能なドメイン内プロセサＩＤの数には制限があり、それでマルチプロセサシステムによって必要とされるノードコントローラの数は大き過ぎ、大きなノード間相互接続規模と複雑なトポロジー構造に帰着する。拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルを構成し、ノードコントローラを使うことによってローカルプロトコルテーブルの変換メカニズムを調べ、多階層コヒーレントドメインパケットを変換することは、大規模メモリ共有マルチプロセサシステムを著しく拡大し、効果的にシステムの性能を改善し、システムのトポロジーの複雑さを削減することができる。ＣＣ−ＮＵＭＡシステムの多階層キャッシュコヒーレンスプロトコルに向けて、完全な検証方法が設計され、実現される。その方法はカバレッジ率による検証戦略を使用する。そして、検証システムは、疑似ランダムベースのシミュレーション検証システムとカバレッジ率によるテストドライバ自動発生器で形成される。
【００１３】
ここに開示される実施形態は主に次の長所を持つ。
１．シミュレーションのモデルリング方法は、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムのプロトコル設計の検証を実現し、極めて低い資金コストと人員コストを費やして短時間で大規模コンピュータシステムのキープロトコルの検証を実現する。
２．大規模コンピュータシステムのキープロトコルの反例を迅速に発見することができ、モデリングの記録の完全性のために故障追跡を実行することができ、従ってキープロトコルの修正をガイドすることができる。
３．標準的なモデルが構成され、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムの相互接続チップの構成をガイドする。コンピュータシステムの検証カバレッジ率とそのキーチップセットを保証し、著しくプロジェクトデザインの検証コストを節約し、従って開発サイクルを保証する。
【図面の簡単な説明】
【００１４】
【図１】ノードコントローラを有する多階層コヒーレンシドメインシステムのトポロジー構造図である。
【図２】コヒーレンスプロトコルモデルシミュレーションテスト構造の概略図である。
【図３】マルチノード・マルチプロセサシステムの相互接続ネットワークの基本構造の概略図である。
【図４】マルチノード・マルチプロセサシステムのトポロジー構造の概略図である。
【図５】ノードシミュレーションモデルのキー構造図である。
【図６】シミュレータの実行プロセスを示す図である。
【図７】トランザクション生成器の実行プロセスを示す図である。
【図８】カバレッジ率による２重ループ検証法のフローチャートである。
【図９】多階層コヒーレンスドメインのシミュレーションと検証のグラフである。
【発明を実施するための形態】
【００１５】
以下に、添付図面を参照しながらここに開示される方法を更に詳細に説明する。
【００１６】
１）多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造
このシステムは、ＳｙｓｔｅｍＣ言語を使うことによりフルシステムシミュレータを設計して実装し、並列シミュレーション方法を実現する。ＳｙｓｔｅｍＣ環境において疑似ランダムソフトウェアシミュレーション検証システムを構成することによってモデルを検証する。その構造を図２に示す。
【００１７】
検証システムは主に以下の部分を含む：
（１）バス機能モデル：バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のＡＰＩインタフェースを提供して外部のモジュールとメッセージの交換を可能とし、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中のシミュレーションを行い、システムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供する。
【００１８】
（２）Ｒｅｆｅｒｅｎｃｅ  Ｍｏｄｅｌ（プロトコルリファレンスモデル）：リファレンスモデルは、バス機能モデルと固く統合され、シミュレーションシステムにおいてシステム状態とメッセージの流れをリアルタイムに検査し、シミュレーションの間にプロトコルから逸脱するシステムの動作を発見するために使用される。
【００１９】
（３）Ｎｏｄｅ  Ｃｏｎｔｒｏｌｌｅｒ（ノードコントローラシミュレータ）：ノードコントローラは、バス機能モデルのＡＰＩインタフェースを通して接続され、ノードコントローラ（ＮＣ）のキャッシュコヒーレンスプロトコルをシミュレーションで実現する。ノードコントローラは、プロセサの直接接続キャッシュコヒーレンスプロトコルのメッセージを使うことによってプロセサと通信し、そのキャッシュコヒーレンスプロトコルのメッセージを用いてネットワークシミュレータを通して様々なＮＣシミュレータの間で通信する。
【００２０】
（４）Ｎｅｔｗｏｒｋ  Ｓｉｍｕｌａｔｏｒ（ネットワークシミュレータ）：ネットワークシミュレータは、順序の保護のない簡単な全交換のネットワークをシミュレーションし、そのネットワークを使うことによって拡張型キャッシュコヒーレンスプロトコルのメッセージ通信を実行する。
【００２１】
（５）Ｇｌｏｂａｌ  Ｃｈｅｃｋｅｒ（全体検査器）：全体検査器は、システム全体の上で作動し、バス機能モデルのＡＰＩを通してデータ全体のキャッシュ・コヒーレンスを検査する。
【００２２】
（６）Ｒａｎｄｏｍ／Ｆｏｒｃｅ  Ｔｅｓｔ  Ｓｔｉｍｕｌａｔｉｏｎ  Ｇｅｎｅｒａｔｏｒ（ランダム/フォーステストドライバ自動発生器）：ランダム/フォーステストドライバ発生器は、バス機能モデルのＡＰＩインタフェースを通して接続され、シミュレーションの途中でランダム/フォースアクセストランザクションを連続的に発生し、バス機能モデルのＡＰＩインタフェースを通してバス機能モデルのキャッシュにアクセストランザクションを送信する。
【００２３】
２）拡張可能なトポロジー構造
このデザインにおいて、マルチノード・マルチプロセサシステムの相互接続ネットワークの基本構造を図３に示す。ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェース（ＮＩ）を通して送信される。各ドメインは２個のＣＰＵ（図３でＰとして示される）を含み、各ＣＰＵは１個のメモリ（ＭＥＭ）記憶空間に接続される。４つのクランプ（Ｃｌｕｍｐ）ベースの拡張可能な基本トポロジー構造が構成される。各クランプドメインが４つのノードを有するマルチノード・マルチプロセサのトポロジー構造を図１に示す。コヒーレンス空間、非コヒーレンス空間、およびＩ／Ｏ空間のアドレスは分割され、システムの規模に応じて設定される。ＮＣは全てのリモートアドレス空間に代理としてアクセスする。システムアドレスのマッピング法によって、図４に示すように、各クランプのＮＣノードのアドレスエリアは他のＮＣノードのアドレスエリアと重ならない。従って、もしＮＣに入力されたパケットのアドレスエリアがこのクランプ内に位置しなければ、必ずクランプ間の変換操作が必要である。
【００２４】
３）ノードシミュレーションモデル
ＮＣは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信する。ＮＣは、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装する。ノードシミュレータが１つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見する。そして、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行する。対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了する。例えば、図５は、ノードシミュレーションモデルのキー構造を示す。
【００２５】
４）プロトコルテーブル入口調査
プロトコルエンジンは、ドメイン間のコヒーレンスを実行するための重要なモジュールである。ノードコントローラによって受信されたコヒーレンスパケットは、そのプロトコルテーブルに従って２つのモジュールによって変換される。プロトコルエンジンモジュールはパケットを受信して自身の状態によってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信する。プロトコルエンジンはプロトコルテーブルの複数のエントリを記録する。そして、イベント状態を記録するための構造は、Ｔｒｋ（パケット記録メモリモジュール）／Ｒｄｔ（リードパケットメモリモジュール）／Ｗｒｔ（ライトパケットメモリモジュール）／Ｏｒｂ（送信パケットメモリモジュール）／Ｄｉｒ（ディレクトリメモリモジュール）を含み、状態構造の記憶と調査を実現する。
【００２６】
例えば、プロトコルテーブルは次のテーブルで示されるものである。
【００２７】
【表１】
2015531929.tif 000013
【００２８】
まず、システム状態レジスタのコーディング方法を定義する：各状態レジスタの値の桁は固定であり、全ての状態レジスタを対応する２進数に変換して最大の桁を左側に補完する。そして、補完された全２進数を1列に並べて対応するコーディング値を求める。プロトコルテーブルで与えられる値が不確定であれば、コーディングの間不確定の値を全ての値に広げ、コーディング後に全ての値は同じ入口に向く。各メッセージのコンフィグレーションファイルにおいて、入口の条件値に従ってソートが実行され、各条件は一つの入口に対応する。
【００２９】
調査器は階層的な設計を採用する。第１レベルは受信したメッセージを調べ、この部分は戦略設計モードを使って設計され、各メッセージに対してメッセージ処理クラスを実装し、パブリックメッセージ処理クラスを継承する。ノースブリッジシミュレータがメッセージを受信すると、ハッシュルックアップテーブルモードにおけるマッチング方法を使ってメッセージのマッチングを実行し、速やかに対応する入口を見い出す。
【００３０】
５）プロトコルテーブルの実行プロセス
プロトコルテーブルを実行するプロトコルエンジンのプロセスが図６のシミュレータ実行プロセスによって示される。各ブロックは一つのプロトコルテーブルの変換が達成されることを示す。点線内のブロックは１つの対応するプロトコルテーブルを実行する。プロトコルテーブルにおいて実行されることができる全ての可能な状態の変換は、２つのタイプ（レジスタ値の書き込みとメッセージの送信）を含む。レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝える；メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、コードが対応するメッセージ送信関数の関数ポインタと結び付けられる。従って、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有する。
【００３１】
実際のシミュレータの実行の間、入口条件調査器が対応する入口を調べるとき、コントロール権が状態変換実行器に渡され、状態変換実行器は、予めコンフィギュレーションファイルから読み取られる操作リストに従って、仕事のために対応するレジスタ書き込み関数とメッセージ送信関数とをそれぞれにコールする。
【００３２】
６）トランザクション生成器
トランザクション生成器の仕事はランダムなテストである。ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスである。ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストする。図７のトランザクション生成器の実行プロセスに示すように、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成される。プロトコルの検証はランダムな組み合わせを通して達成される。
【００３３】
７）テスト評価方法とカバレッジ率向上方法
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行される。そして、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析される。目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行する。目標のカバレッジ率を達成した場合は、検証の仕事は終了する。カバレッジ率による検証方法の中心的な技術はカバレッジ率測定と報告とテストドライバの自動生成を含む。
【００３４】
図８は、カバレッジ率による２重ループ検証法のフローチャートである。
選択されたカバレッジ率によるシミュレーション検証方法によって、以下のようなシミュレーションの検証プロセスモデルが構成される。検証の間、テストは複数のシミュレーション期間によって形成される。そして、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、そのアクセストランザクションをシステムのシミュレータに投入する。システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行する。生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了する。各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進む。
【００３５】
シミュレーションの検証の間、明らかに各期間はカバーされる複数のプロトコルテーブルのエントリを持ち、前のシミュレーション期間でカバーされたプロトコルテーブルのエントリを除いて、新たにカバーされたプロトコルテーブルのエントリがプロトコルテーブルのカバレッジエントリに加えられる。i番目の期間に加えられるプロトコルテーブルはＫｉであり、ｉ番目の期間のカバレッジ率の増加率はＫｉ／Ｎ（Ｎはプロトコルテーブルの全エントリ数である。）であると設定される。ｔ番目の期間によってカバーされるプロトコルテーブルの集合は｛Ｋｉ｝であり、Ｔ期間後のカバレッジ率はＣａｒｔ｛ＫＴ＝Ｋ１∪Ｋ２……ＫＴ｝／Ｎであると設定される。
【００３６】
小さな確率のデッドロックイベントを解決するために設計されるプロトコルテーブルにはかなり多数のプロトコルテーブルのエントリがある。すなわちプロトコルテーブル内の様々なエントリは異なる発生確率を持つ。シミュレーション期間の数が増加するとき、各期間に新たにカバーされるプロトコルテーブルのエントリの数は連続的に減少しなければならず、長期の稼働の間、有効なテストドライバの発生は速やかに減少し、０に向かわなければならない。
【００３７】
以上の分析により、純粋なランダムテストドライバ発生器を使うと、必然的に高効率の検証を行うことができないことが分かる。テストの効率を改善するために、毎回生成されるテストドライバは方向性がある必要があり、それでカバーされていないプロトコルテーブルのエントリをより大きな確率でシミュレータがカバーする。そして、これはカバレッジ率による検証方法に対する不可避の必要条件である。従って、カバレッジ率の変化に従ってテストドライバの発生を調節するための２つの方法が次の通り記述される。
【００３８】
１．目的のプロトコルを検証することの複雑性および順序の保護のないネットワークによって生じるアクセストランザクションの実現プロセスの多様性のために、特定の入力テストドライバと出力カバレッジ目標との間の関係を分析することは不可能である。この条件において、テストドライバ分類器を導入することが考慮され、その分類器は入力テストドライバと出力カバレッジ率の間の確率の関係を提供することができる。その分類器は、ランダムに生成されるテストドライバをフィルタリングし、新しいカバレッジ目標を生成する大きな確率を持っており、シミュレーション中に実行される有効なドライバとして働くテストドライバを選択するために使われる。そして、無効なテストドライバは放棄される。
【００３９】
２．プロトコルテーブルが分析される。そして、プロトコルテーブルの中の多数のプロトコルテーブルエントリが類似のエントリを持ち、特に小さな確率のイベントのために設計された多くのプロトコルテーブルエントリを含む。そこで関連する分析の方法に基づいてテストドライバの生成にオフセットの考えが導入される。各期間のシミュレーションが終了した後に、この期間のテストドライバにオフセット措置を施し、前の期間で生じたシミュレーションの検証結果と類似するプロトコルテーブルエントリを速やかにカバーするために、オフセットされたテストドライバをもう一度稼働中のシミュレータに送る。
【００４０】
ここで開示される実施形態は、複雑なハイエンドコンピュータシステムの設計分野に応用され、大規模ハイエンドコンピュータシステムの設計検証およびそのキー・チップセットの設計検証、さらにそのシステムＯＳと応用ソフトウェアの設計と開発において極めて高い応用価値がある。
【００４１】
ここで開示される実施形態は、８６３テーマクラウドデータセンターのキーサポート技術の研究において使われた。モデルを構成した後に単一トランザクションのシミュレーションタイムを測定した。シミュレータでは、あるシミュレーションタイムを設定し、シミュレーションクロックが進む間に費やした時間をテストした。同時に、図９に示すように、プロセサＩｎｔｅｌ  Ｅ７５４０ＸＭ２×４、主メモリ４Ｇ×１６、プラットフォームＣｅｎｔＯＳ４．８を有するＩｎｓｐｕｒ浪潮ＮＦ８５２０サーバーにおいて、実際の実行時間を得た。実際のテスト結果は、ソフトウェアシミュレーションの方法に基づくこのテストで提供される複数階層コヒーレンスプロトコルの検証モデルは、許容できるシミュレーション処理時間の下でマルチ状態空間にあるキャッシュコヒーレンスプロトコルを検証できることを示す。
【００４２】
大規模ＣＣ−ＮＵＭＡマルチプロセサシステムコンピュータの開発の間に、ここに開示される実施形態の内容は、プロジェクトシステムのアーキテクチャ設計、システムの相互接続設計、およびプロトコル処理のキーチップのプロトコル設計などのいろいろな面で設計の実現可能性を保証する。特にシステムのマルチキーチップセット設計のためにキーとなり、信頼できる比較モデルを提供し、より小さい設計規模とより低い投資コストを持つマルチパスコンピュータシステム設計の成功を保証し、極めて重要な開発と応用価値を備える。
【００４３】
海外市場の技術の状況分析および応用の必要性
システム規模の速やかな拡張、ネットワーク遅延の不確定性およびメモリコヒーレンスモデルの多様性のような様々な要因がキャッシュコヒーレンスプロトコルを極めて複雑化させ、プロトコルの状態空間は指数関数的に増加し、または爆発さえする。産業界ではキャッシュコヒーレンスプロトコルの検証方法について、主に形式的検証とソフトウェアシミュレーションによる検証のような多くの議論がある。固有の状態空間の爆発の問題のために、現在、完全に形式的検証は複雑なマルチレベルプロトコルの検証に適用することはできない。ソフトウェアシミュレーションによる検証は人為的に制約モデルを書き、制約された疑似ランダムなテストを実行して、改善された効率で特定の目標を検証することができ、実用的で実現可能な方法である。実際のコンピュータシステムの構造をシミュレーションして検証評価システムと検証評価プラットフォームを実現すれば、相対的に短い時間と極めて低い資金コストと人員コストを費やして大規模コンピュータシステムのキープロトコルを検証することができる。モデリングの間に、処理メカニズムの全状態を記録でき、大規模コンピュータシステムのキープロトコルの反例を発見したとき、故障を容易に追跡することができる。モデリングは標準のモデルを実装し、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムの相互接続チップの構成をガイドする。モデリングの規模は自由で制御可能であり、技術の条件は成熟している。実装の間、製造・開発コストを容易に制御でき、過度に長い開発周期を避けることができる。
【００４４】
利益（経済的利益と社会的利益）
極めて複雑な構造を持つハイエンドのフォールトトレラントなコンピュータシステムに関して、ここに開示される実施形態の設計のキー技術は、システム構造の設計、キーチップセットの設計などを含む。小規模のプロトタイプ検証システムが小規模のハードウェアによって実現され、システム設計のキー技術がプログラマブルＦＰＧＡチップによって実現され、開発の周期を短縮したり、設計検証のコストを削減したり、プロジェクト開発の成功を保証する。例えば、複雑なプロトコルとロジックを持ったキーチップセットの設計の間、そのチップをテープアウトする費用は一回に千万元に迫り、テープアウトの期間も数ヶ月必要である。そして、高い検証カバレッジ率を持つプロトタイプ検証システムは、チップのテープアウトの成功を保証し、そのプロジェクトの時間のオーバヘッドとコストのオーバヘッドを大いに省く。更にまた、その検証はシステム構造の設計、放熱設計、パワー消費分へのレファレンスを与え、プロジェクトの開発リスクを著しく低下させる。従って、ここに開示される実施形態は高い経済的利益と社会的利益を有する。
【００４５】
本発明では、本発明の明細書に開示された技術的特徴を除いて、他の技術は当業者によく知られている。
【国際調査報告】
2015531929.tif 000014
2015531929.tif 000015
2015531929.tif 000016
2015531929.tif 000017