JP2015531929A - 拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのシミュレーション検証およびテスト方法 - Google Patents
拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのシミュレーション検証およびテスト方法 Download PDFInfo
- Publication number
- JP2015531929A JP2015531929A JP2015527784A JP2015527784A JP2015531929A JP 2015531929 A JP2015531929 A JP 2015531929A JP 2015527784 A JP2015527784 A JP 2015527784A JP 2015527784 A JP2015527784 A JP 2015527784A JP 2015531929 A JP2015531929 A JP 2015531929A
- Authority
- JP
- Japan
- Prior art keywords
- protocol
- simulation
- verification
- test
- model
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0837—Cache consistency protocols with software control, e.g. non-cacheable data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Abstract
拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインCC−NUMAシステムのプロトコルシミュレーションモデルが提供される。キャッシュコヒーレンスが単一のコンピュータドメインで維持され、同時に複数のコンピュータドメイン間で維持されることをシステムのキーノードにおけるプロトコルテーブル調査と状態変換の実行メカニズムが保証する。そしてドメイン内およびドメイン間の送信の正確性と安定性が保証される。プロトコル入口変換のカバレッジ率の評価による信頼できる検証方法が提供される。最適化されたトランザクション生成器のプッシュモデルをロードすることによってトランザクションが処理され、動作終了後にカバレッジ率の指標が取得される。更に、マルチプロセサ・多階層コヒーレンスドメイン検証システムモデルを構成して関連するシミュレーションによる検証を実行し、その方法の妥当性と有効性が確認される。
Description
本発明は、コンピュータアーキテクチャ分野に関し、特に、マルチプロセサコンピュータシステムのキャッシュコヒーレンス、マルチノード・マルチプロセサコンピュータシステム、キャッシュコヒーレント不均等メモリアクセス(CC−NUMA:Cache Coherent Non−Uniform Memory Access)アーキテクチャ、キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンシドメインとモデルのテスト・検証方法、および拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンシドメインのシミュレーション検証およびテスト方法に関する。
現在、マルチプロセサの接続方法はバス接続からポイントツーポイント接続に変わっており、また、メモリはプロセサの外部ブリッジチップに接続される代わりに直接プロセサに接続される。メモリ接続方法の変化のために、システム内のメモリ配置がまた変わっている。それはマルチプロセサシステムにおけるメモリアクセスの非均一性を引き起こす。従って、現在のマルチプロセサシステムは大部分不均等メモリアクセス(NUMA:Non−Uniform Memory Access)アーキテクチャシステムを採用する。
NUMAシステムでは、マルチキャッシュユニットが分散して配置される。従って、マルチキャッシュの間でコヒーレンスの問題を解決するように、NUMAシステムは設計される。キャッシュコヒーレンスの問題を解決する方法は、CC−NUMAシステムの中心的な問題である。従って、それに応じてキャッシュコヒーレンスプロトコルに対する検証作業は、CC−NUMAシステムの検証作業の重要な部分である。商業的に利用できるマイクロプロセサを使ってスーパーコンピュータを作ることが一般的となった衝撃の下で、商業的に利用できるマルチコアマイクロプロセサを使ってCC−NUMAシステムを作ることは避けられない傾向になる。多数のプロセサの並列処理をサポートするために、現在の商業的に利用できるほとんど全てのハイエンドマイクロプロセサは基本的にマルチパス直接接続への拡張をサポートする。プロセサが組み込みのメモリコントローラを使用し、アクセス空間全部が一様にアドレスされる場合、多数の直接に接続されたプロセサが小さなCC−NUMAシステムを形成することができる。けれども、プロセサの直接接続インタフェースの数は制限されているので、プロセサを直接に接続することのみで大規模システムを作ることは困難である。
コヒーレンシドメイン空間を拡張し、大規模CC−NUMAマルチプロセサシステムを実現するために、ノードコントローラ(NC)が必要とされる。ここに開示されるノードコントローラは全体のキャッシュコヒーレンスの維持とシステム規模の拡大の2つの機能を持つ。まず、各ノードコントローラは1個から4個のプロセサに接続されてノードと第1レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスはプロセサとノードコントローラによって共同で維持される。次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模CC−NUMAシステムを形成する。ノード間における第2レベルのキャシュコヒーレンスはノードコントローラによって維持される。この方法で構成される大規模CC−NUMAシステムは拡張されてプロセサ直接接続キャッシュコヒーレンスプロトコルに基づく多階層プロトコルを確立し、全体のコヒーレンスを維持するために必要である。拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンシドメインのCC−NUMAシステムプロトコルはいつでも比較的複雑であり、また、シミュレーションテストがとても重要である。従って、また、プロトコルのためのシミュレーション検証作業が重要な作業になる。
上述した通り、直接に接続されたプロセサによって構成されるマルチプロセサシステムは制限された規模を持つ。大規模なCC−NUMAマルチプロセサシステムを実現するために、図1に示すように、ノードコントローラが必要である。ノードコントローラはシステム規模の拡大および全体のキャッシュコヒーレンスの維持の機能を持つ。まず、各ノードコントローラは1個から4個のプロセサに接続されてノードと第1レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスはプロセサとノードコントローラによって共同で維持される。また、ノードコントローラはドメイン内で少なくとも1つのプロセサIDを占有し、それでドメイン内のプロセサの数とノードコントローラの数の合計は、そのドメイン内でプロセサによってサポート可能なプロセサIDの数を超えることはできない。次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模CC−NUMAシステムを形成する。ノード間における第2レベルのキャシュコヒーレンスはノードコントローラによって維持される。そして、あるノード内のプロセサがノードとキャッシュコヒーレンシドメインを超えて他のノード内のプロセサのメモリにアクセスするとき、全体のキャッシュコヒーレンスはノードコントローラによって維持される。
その結果、関連のあるモデル、すなわち、CC−NUMAバス機能モデルが設計される。そのモデルは、キャッシュ、プロセサの記憶装置、およびプロセサ間の相互接続ネットワークをシミュレーションし、カスタマイズシステムのトポロジー構造をサポートし、アクセス動作のトランザクションレベルのシミュレーションをサポートし、プロセサの直接接続キャッシュコヒーレンスプロトコルをシミュレーションし、リアルタイムの動作、様々なアクセストランザクションの状態、システム内のキャッシュと記憶装置を提供する。更にまた、ノードコントローラのシミュレーションモデルが設計される。そのモデルは、バス機能モデルのAPIインタフェースを使うことによって、ノードコントローラによって保持される多階層キャッシュコヒーレンスプロトコルをシミュレーションし、プロセサのキャッシュコヒーレンスプロトコルメッセージを使うことによってプロセサと通信し、拡張型キャッシュコヒーレンスプロトコルメッセージを使い、従ってドメインの多階層のコヒーレンスプロトコル変換を実装することによってノードコントローラのネットワークを通して様々なノードコントローラの間で通信する。
機能検証を実行するためにシミュレーション検証方法を使うことの中心的なアイデアは、設計者の意図をシミュレータで観測される実際の動作と比較して2つのコヒーレンスを決定することである。設計者によって予期されるようにシミュレーション中で設計が稼働し、設計の必要条件を達成するとき、その設計は検証されたとみなされる。検証の間に、シミュレーション結果のカバレッジ率は生成されたテストドライバに対して解析され、システムの機能記述から得られる情報と組み合わせて、更なる検証のためのテストドライバの生成アルゴリズムまたはテストドライバの生成制約が改善され、次に生成されるテストドライバはシミュレーションシステムにもっと高いカバレッジ率を達成させることができる。
キャッシュコヒーレンスプロトコルは、共有データアクセスコヒーレンスの実装と共有メモリプログラミングインターフェースの提供のために使われる処理メカニズムである。キャッシュコヒーレンスプロトコルは、システムの正しさを直接決定するのみでなく、またシステムの規模と性能に重要な役割を果たし、分散された共有メモリを持ったマルチプロセサ・マルチコアシステムを実装するために極めて重要である。システム規模の速やかな拡大、ネットワーク遅延の不確定性およびメモリコヒーレンスモデルの多様性のような様々な要因がキャッシュコヒーレンスプロトコルを極めて複雑化させ、プロトコルの状態空間は指数関数的に増加し、または爆発さえする。産業界ではキャッシュコヒーレンスプロトコルの検証方法について、主に形式的検証とソフトウェアシミュレーションによる検証のような多くの議論がある。固有の状態空間の爆発の問題のために、現在、完全に形式的検証は複雑な多階層プロトコルの検証作業に適用することはできない。ソフトウェアシミュレーションによる検証は人為的に制約モデルを書き、制約された疑似ランダムなテストを実行して、改善された効率で特定の目標を検証することができ、実用的で実現可能な方法である。ソフトウェアシミュレーション方法に基づく本発明は、まず、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンス記述方法でシミュレーションモデルの構成を記述して、ソフトウェアシミュレーションによる検証方法を提供し、多状態空間において多階層ドメインキャッシュコヒーレンスプロトコルを効果的に検証する。1つのマルチプロセサの検証システムモデルを作成し、関連するシミュレーションによる検証を実行することを通して、本方法の妥当性と有効性が更に確認される。
プロセサによってサポート可能なドメイン内プロセサIDには制限があり、それでマルチプロセサシステムによって必要とされるノードコントローラの数は大き過ぎ、大きなノード間相互接続規模と複雑なトポロジー構造に帰着する。拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルを構成し、ノードコントローラを使うことによってローカルプロトコルテーブルの変換メカニズムを調べ、多階層コヒーレントドメインパケットを変換することは、大規模メモリ共有マルチプロセサシステムを著しく拡大し、効果的にシステムの性能を改善し、システムのトポロジーの複雑さを削減することができる。
本発明の目的は、CC−NUMAシステムの多階層キャッシュコヒーレンスプロトコルに適した拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルの変換の正確なテストと検証の方法を提供することである。
ここに開示される実施形態は、以下の技術的な解決策を通して実現されることができ、カバレッジ率による検証戦略を使うことによって、疑似ランダムベースのシミュレーション検証システムおよびカバレッジ率によるテストドライバ自動発生器で形成されるシミュレーション検証システムを構成するために、多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造と、拡張可能なトポロジー構造と、ノードシミュレーションモデルと、プロトコルテーブル調査および状態変換実行方法と、プロトコルテーブルの実行プロセスと、トランザクション生成器と、テスト評価方法と、カバレッジ率向上方法とを備え、
コヒーレンス空間を拡張して大規模CC−NUMAマルチプロセサシステムを実現するために、ノードコントローラNCが必要であり、当該ノードコントローラが全体のキャッシュコヒーレンスの維持とシステム規模の拡大の2つの機能を持ち、まず各ノードコントローラは1個から4個のプロセサに接続されてノードと第1レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスが当該プロセサと当該ノードコントローラによって共同で維持され、次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模CC−NUMAシステムを形成し、ノード間における第2レベルのキャシュコヒーレンスがノードコントローラによって維持され、当該方法で構成される大規模CC−NUMAシステムは拡張されてプロセサ直接接続キャッシュコヒーレンスプロトコルに基づく多階層プロトコルを確立し、全体のコヒーレンスを維持し、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのCC−NUMAシステムプロトコルシミュレーションモデルを構成するために、多数のコヒーレンシドメインの間でドメイン内およびドメイン間の送信の精度と安定性を保証するようにシステムのキーノードにおいてプロトコルテーブル調査および状態変換実行メカニズムが構成されることが必要であり、更に信頼できるプロトコル入口変換カバレッジ率評価による検証方法が提供され、最適化されたトランザクション生成器のプッシュモデルをロードすることによってトランザクションを処理し、操作の終了後にカバレッジ率の指標を取得し、ランダムトランザクション促進メカニズムに比べて検証効率が改善され、1つのマルチプロセサ検証システムモデルを構成して関連のあるシミュレーション検証を実行することを通して当該方法の妥当性と有効性が更に確認され、
1)多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造において、
拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインモデルのシステムシミュレータと当該システムシミュレータと並列に実行されるモデル検証システムとがSystemC言語を使って設計され、当該モデル検証システムが疑似ランダムトランザクション生成器を構成することによってテストされ、当該モデル検証システムの正確さが全体検査器を使って判断され、当該モデル検証システムは、バス機能モデルと、プロトコルリファレンスモデルと、ノードコントローラシミュレータと、ネットワークシミュレータと、全体検査器と、プロトコル入口調査メカニズムとを含み、
(1)バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のAPIインタフェースを提供して外部のモジュールとメッセージの交換を提供し、シミュレーションを行い、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中にシステムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供し、
(2)プロトコルリファレンスモデルは、バス機能モデルと固く統合され、シミュレーションシステムにおいてシステム状態とメッセージの流れをリアルタイムに検査し、シミュレーションの間にプロトコルから逸脱するシステムの動作を発見するために使用され、
(3)ノードコントローラシミュレータは、バス機能モデルのAPIインタフェースを通して接続され、ノードコントローラNCのキャッシュコヒーレンスプロトコルをシミュレーションで実現し、プロセサの直接接続キャッシュコヒーレンスプロトコルのメッセージを使うことによってプロセサと通信し、当該キャッシュコヒーレンスプロトコルのメッセージを用いてネットワークシミュレータを通して様々なNCシミュレータの間で通信し、
(4)ネットワークシミュレータは、順序の保護のない簡単な全交換のネットワークをシミュレーションし、当該ネットワークを使うことによって拡張型キャッシュコヒーレンスプロトコルのメッセージ通信を実行し、
(5)全体検査器は、システム全体の上で作動し、バス機能モデルのAPIを通してデータ全体のキャッシュコヒーレンスを検査し、
(6)ランダム/フォーステストドライバの自動発生器は、バス機能モデルのAPIインタフェースを通して接続され、シミュレーションの途中でランダム/フォースアクセストランザクションを連続的に発生し、バス機能モデルのAPIインタフェースを通してバス機能モデルのキャッシュにアクセストランザクションを送信し、
2)拡張可能なトポロジー構造において、
ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェースNIを使って送信され、各ドメインは2個のCPUを含み、各CPUは1個のメモリに接続され、4つのクランプベースの拡張可能な基本トポロジー構造を構成し、当該基本トポロジー構造は各クランプドメインが4つのノードを有するマルチノード・マルチプロセサのトポロジー構造であり。コヒーレンス空間、非コヒーレンス空間、およびI/O空間のアドレスは分割され、システムの規模に応じて設定され、当該NCは全てのリモートアドレス空間に代理としてアクセスし、システムアドレスのマッピング法によって、各クランプのNCノードのアドレスエリアは他のNCノードのアドレスエリアと重ならず、当該NCに入力されたパケットのアドレスエリアが当該クランプ内に位置しなければ、必ずクランプ間の変換操作が必要であり、
3)ノードシミュレーションモデルにおいて、
NCは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信し、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装し、ノードシミュレータが1つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
4)プロトコルテーブルシミュレータと入口条件調査器を含むプロトコルテーブルの調査と状態変換の実行において、
プロトコルテーブルシミュレータはシステムシミュレータの中心部として働き、多階層キャッシュコヒーレンスプロトコルモデルの通常の動作に極めて重要であり、プロトコルテーブルは検証された目標であり、検証プロセス全体の間に修正可能であり、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータがセットされる必要があり、当該シミュレータは入口条件調査器と状態変換実行器の2つの部分を含み、ノードシミュレータが1つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
入口条件調査器はドメイン間のコヒーレンスを実行するための重要なモジュールであり、ノードコントローラによって受信されたコヒーレンスパケットはプロトコルテーブルに従って前記2つのモジュールによって変換され、入口条件調査器はパケットを受信して入口条件調査器の状態に従ってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信し、入口条件調査器はプロトコルテーブルの複数のエントリを記録し、イベント状態を記録するための構造はTrk(パケット記録メモリモジュール)/Rdt(リードパケットメモリモジュール)/Wrt(ライトパケットメモリモジュール)/Orb(送信パケットメモリモジュール)/Dir(ディレクトリメモリモジュール)を含み、
システム状態レジスタのコーディング方法において、各状態レジスタの値の桁は固定であり、全ての状態レジスタを対応する2進数に変換して最大の桁を左側に補完し、補完された全2進数を1列に並べて対応するコーディング値を求め、プロトコルテーブルで与えられる値が不確定であれば、コーディングの間不確定の値を全ての値に広げ、コーディング後に全ての値は同じ入口に向き、各メッセージのコンフィグレーションファイルにおいて、入口の条件値に従ってソートが実行され、各条件は一つの入口に対応し、
入口条件調査器は階層的な設計を採用し、第1レベルは受信したメッセージを調べ、当該部分は戦略設計モードを使って設計され、各メッセージに対してメッセージ処理クラスを実装し、パブリックメッセージ処理クラスを継承し、ノースブリッジシミュレータがメッセージを受信すると、ハッシュルックアップテーブルモードにおけるマッチング方法を使ってメッセージのマッチングを実行し、速やかに対応する入口を見い出し、
5)プロトコルテーブルの実行プロセスにおいて、
プロトコルテーブルにおいて実行される全ての可能な状態の変換はレジスタ値の書き込みとメッセージの送信という2つのタイプを含み、レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝え、メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、当該コードが対応するメッセージ送信関数の関数ポインタと結び付けられ、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有し、
実際のシミュレータの実行の間、入口条件調査器が対応する入口を調べるとき、コントロール権が状態変換実行器に渡され、状態変換実行器は、予めコンフィギュレーションファイルから読み取られる操作リストに従って、作業のために対応するレジスタ書き込み関数とメッセージ送信関数とをそれぞれにコールし、
6)トランザクション生成器において、
トランザクション生成器の仕事はランダムなテストであり、当該ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスであり、当該ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストし、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成され、プロトコルの検証はランダムな組み合わせを通して達成され、
7)テスト評価方法とカバレッジ率向上方法において、
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行され、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析され、目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行し、目標のカバレッジ率を達成した場合は、検証の仕事は終了し、カバレッジ率による検証方法の中心的な技術はカバー率測定と報告とテストドライバの自動生成を含み、
選択されたカバレッジ率によるシミュレーション検証方法によって、シミュレーションの検証プロセスモデルが構成され、当該シミュレーションの検証プロセスモデルでは、検証の間、テストは複数のシミュレーション期間によって形成され、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、当該アクセストランザクションをシステムのシミュレータに投入し、当該システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行し、生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了し、各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進み、
シミュレーションの検証の間、明らかに各期間はカバーされる複数のプロトコルテーブルのエントリを持ち、前のシミュレーション期間でカバーされたプロトコルテーブルのエントリを除いて、新たにカバーされたプロトコルテーブルのエントリがプロトコルテーブルのカバレッジエントリに加えられ、i番目の期間に加えられるプロトコルテーブルはKiであり、i番目の期間のカバレッジ率の増加率はKi/N(Nはプロトコルテーブルの全エントリ数である。)であると設定され、t番目の期間によってカバーされるプロトコルテーブルの集合は{Ki}であり、T期間後のカバレッジ率はCart{KT=K1∪K2……KT}/Nであると設定され、
一つのシミュレーション期間を考察して、もしテストドライバが完全にランダムに生成された場合は、プロトコルテーブルの中の全てのエントリに対して任意の期間にカバーされる確率は等しく、各プロトコルテーブルエントリに対して、一つのシミュレーション期間は単一のベルヌーイ試行とみなされ、もし当該期間内のシミュレータの出力が当該プロトコルテーブルエントリをカバーすれば、試行は成功であるとみなされ、さもなければ試行は失敗であるとみなされ、
小さな確率のデッドロックイベントを解決するために設計されるプロトコルテーブルにはかなり多数のプロトコルテーブルのエントリがあり、すなわちプロトコルテーブル内の様々なエントリは異なる発生確率を持ち、シミュレーション期間の数が増加するとき、各期間に新たにカバーされるプロトコルテーブルのエントリの数は連続的に減少しなければならず、長期の稼働の間、有効なテストドライバの発生は速やかに減少し、0に向かわなければならず、
カバレッジ率によるテストドライバ自動発生器に対して、以上の分析により、純粋なランダムテストドライバ発生器を使うと、必然的に高効率の検証を行うことができないことが分かり、テストの効率を改善するために、毎回生成されるテストドライバは方向性がある必要があり、カバーされていないプロトコルテーブルのエントリをより大きな確率でシミュレータがカバーし、これはカバレッジ率による検証方法に対する不可避の必要条件であり、従って、カバレッジ率の変化に従ってカバレッジ率によるテストドライバ自動発生器によってテストドライバの発生を調節するための2つの方法が次の通り記述され、
(1)目的のプロトコルを検証することの複雑性および順序の保護のないネットワークによって生じるアクセストランザクションの実現プロセスの多様性のために、特定の入力テストドライバと出力カバレッジ目標との間の関係を分析することは不可能であり、この条件において、テストドライバ分類器を導入することが考慮され、当該分類器は入力テストドライバと出力カバレッジ率の間の確率の関係を提供することができ、当該分類器は、ランダムに生成されるテストドライバをフィルタリングし、新しいカバレッジ目標を生成する大きな確率を持っており、シミュレーション中に実行される有効なドライバとして働くテストドライバを選択するために使われ、無効なテストドライバは放棄され、
(2)プロトコルテーブルが分析され、プロトコルテーブルの中の多数のプロトコルテーブルエントリが類似のエントリを持ち、特に小さな確率のイベントのために設計された多くのプロトコルテーブルエントリを含み、従って関連する分析の方法に基づいてテストドライバの生成にオフセットの考えが導入され、各期間のシミュレーションが終了した後に、当該期間のテストドライバにオフセット措置を施し、前の期間で生じたシミュレーションの検証結果と類似するプロトコルテーブルエントリを速やかにカバーするために、オフセットされたテストドライバをもう一度稼働中のシミュレータに送る。
コヒーレンス空間を拡張して大規模CC−NUMAマルチプロセサシステムを実現するために、ノードコントローラNCが必要であり、当該ノードコントローラが全体のキャッシュコヒーレンスの維持とシステム規模の拡大の2つの機能を持ち、まず各ノードコントローラは1個から4個のプロセサに接続されてノードと第1レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスが当該プロセサと当該ノードコントローラによって共同で維持され、次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模CC−NUMAシステムを形成し、ノード間における第2レベルのキャシュコヒーレンスがノードコントローラによって維持され、当該方法で構成される大規模CC−NUMAシステムは拡張されてプロセサ直接接続キャッシュコヒーレンスプロトコルに基づく多階層プロトコルを確立し、全体のコヒーレンスを維持し、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのCC−NUMAシステムプロトコルシミュレーションモデルを構成するために、多数のコヒーレンシドメインの間でドメイン内およびドメイン間の送信の精度と安定性を保証するようにシステムのキーノードにおいてプロトコルテーブル調査および状態変換実行メカニズムが構成されることが必要であり、更に信頼できるプロトコル入口変換カバレッジ率評価による検証方法が提供され、最適化されたトランザクション生成器のプッシュモデルをロードすることによってトランザクションを処理し、操作の終了後にカバレッジ率の指標を取得し、ランダムトランザクション促進メカニズムに比べて検証効率が改善され、1つのマルチプロセサ検証システムモデルを構成して関連のあるシミュレーション検証を実行することを通して当該方法の妥当性と有効性が更に確認され、
1)多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造において、
拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインモデルのシステムシミュレータと当該システムシミュレータと並列に実行されるモデル検証システムとがSystemC言語を使って設計され、当該モデル検証システムが疑似ランダムトランザクション生成器を構成することによってテストされ、当該モデル検証システムの正確さが全体検査器を使って判断され、当該モデル検証システムは、バス機能モデルと、プロトコルリファレンスモデルと、ノードコントローラシミュレータと、ネットワークシミュレータと、全体検査器と、プロトコル入口調査メカニズムとを含み、
(1)バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のAPIインタフェースを提供して外部のモジュールとメッセージの交換を提供し、シミュレーションを行い、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中にシステムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供し、
(2)プロトコルリファレンスモデルは、バス機能モデルと固く統合され、シミュレーションシステムにおいてシステム状態とメッセージの流れをリアルタイムに検査し、シミュレーションの間にプロトコルから逸脱するシステムの動作を発見するために使用され、
(3)ノードコントローラシミュレータは、バス機能モデルのAPIインタフェースを通して接続され、ノードコントローラNCのキャッシュコヒーレンスプロトコルをシミュレーションで実現し、プロセサの直接接続キャッシュコヒーレンスプロトコルのメッセージを使うことによってプロセサと通信し、当該キャッシュコヒーレンスプロトコルのメッセージを用いてネットワークシミュレータを通して様々なNCシミュレータの間で通信し、
(4)ネットワークシミュレータは、順序の保護のない簡単な全交換のネットワークをシミュレーションし、当該ネットワークを使うことによって拡張型キャッシュコヒーレンスプロトコルのメッセージ通信を実行し、
(5)全体検査器は、システム全体の上で作動し、バス機能モデルのAPIを通してデータ全体のキャッシュコヒーレンスを検査し、
(6)ランダム/フォーステストドライバの自動発生器は、バス機能モデルのAPIインタフェースを通して接続され、シミュレーションの途中でランダム/フォースアクセストランザクションを連続的に発生し、バス機能モデルのAPIインタフェースを通してバス機能モデルのキャッシュにアクセストランザクションを送信し、
2)拡張可能なトポロジー構造において、
ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェースNIを使って送信され、各ドメインは2個のCPUを含み、各CPUは1個のメモリに接続され、4つのクランプベースの拡張可能な基本トポロジー構造を構成し、当該基本トポロジー構造は各クランプドメインが4つのノードを有するマルチノード・マルチプロセサのトポロジー構造であり。コヒーレンス空間、非コヒーレンス空間、およびI/O空間のアドレスは分割され、システムの規模に応じて設定され、当該NCは全てのリモートアドレス空間に代理としてアクセスし、システムアドレスのマッピング法によって、各クランプのNCノードのアドレスエリアは他のNCノードのアドレスエリアと重ならず、当該NCに入力されたパケットのアドレスエリアが当該クランプ内に位置しなければ、必ずクランプ間の変換操作が必要であり、
3)ノードシミュレーションモデルにおいて、
NCは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信し、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装し、ノードシミュレータが1つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
4)プロトコルテーブルシミュレータと入口条件調査器を含むプロトコルテーブルの調査と状態変換の実行において、
プロトコルテーブルシミュレータはシステムシミュレータの中心部として働き、多階層キャッシュコヒーレンスプロトコルモデルの通常の動作に極めて重要であり、プロトコルテーブルは検証された目標であり、検証プロセス全体の間に修正可能であり、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータがセットされる必要があり、当該シミュレータは入口条件調査器と状態変換実行器の2つの部分を含み、ノードシミュレータが1つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
入口条件調査器はドメイン間のコヒーレンスを実行するための重要なモジュールであり、ノードコントローラによって受信されたコヒーレンスパケットはプロトコルテーブルに従って前記2つのモジュールによって変換され、入口条件調査器はパケットを受信して入口条件調査器の状態に従ってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信し、入口条件調査器はプロトコルテーブルの複数のエントリを記録し、イベント状態を記録するための構造はTrk(パケット記録メモリモジュール)/Rdt(リードパケットメモリモジュール)/Wrt(ライトパケットメモリモジュール)/Orb(送信パケットメモリモジュール)/Dir(ディレクトリメモリモジュール)を含み、
システム状態レジスタのコーディング方法において、各状態レジスタの値の桁は固定であり、全ての状態レジスタを対応する2進数に変換して最大の桁を左側に補完し、補完された全2進数を1列に並べて対応するコーディング値を求め、プロトコルテーブルで与えられる値が不確定であれば、コーディングの間不確定の値を全ての値に広げ、コーディング後に全ての値は同じ入口に向き、各メッセージのコンフィグレーションファイルにおいて、入口の条件値に従ってソートが実行され、各条件は一つの入口に対応し、
入口条件調査器は階層的な設計を採用し、第1レベルは受信したメッセージを調べ、当該部分は戦略設計モードを使って設計され、各メッセージに対してメッセージ処理クラスを実装し、パブリックメッセージ処理クラスを継承し、ノースブリッジシミュレータがメッセージを受信すると、ハッシュルックアップテーブルモードにおけるマッチング方法を使ってメッセージのマッチングを実行し、速やかに対応する入口を見い出し、
5)プロトコルテーブルの実行プロセスにおいて、
プロトコルテーブルにおいて実行される全ての可能な状態の変換はレジスタ値の書き込みとメッセージの送信という2つのタイプを含み、レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝え、メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、当該コードが対応するメッセージ送信関数の関数ポインタと結び付けられ、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有し、
実際のシミュレータの実行の間、入口条件調査器が対応する入口を調べるとき、コントロール権が状態変換実行器に渡され、状態変換実行器は、予めコンフィギュレーションファイルから読み取られる操作リストに従って、作業のために対応するレジスタ書き込み関数とメッセージ送信関数とをそれぞれにコールし、
6)トランザクション生成器において、
トランザクション生成器の仕事はランダムなテストであり、当該ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスであり、当該ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストし、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成され、プロトコルの検証はランダムな組み合わせを通して達成され、
7)テスト評価方法とカバレッジ率向上方法において、
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行され、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析され、目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行し、目標のカバレッジ率を達成した場合は、検証の仕事は終了し、カバレッジ率による検証方法の中心的な技術はカバー率測定と報告とテストドライバの自動生成を含み、
選択されたカバレッジ率によるシミュレーション検証方法によって、シミュレーションの検証プロセスモデルが構成され、当該シミュレーションの検証プロセスモデルでは、検証の間、テストは複数のシミュレーション期間によって形成され、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、当該アクセストランザクションをシステムのシミュレータに投入し、当該システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行し、生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了し、各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進み、
シミュレーションの検証の間、明らかに各期間はカバーされる複数のプロトコルテーブルのエントリを持ち、前のシミュレーション期間でカバーされたプロトコルテーブルのエントリを除いて、新たにカバーされたプロトコルテーブルのエントリがプロトコルテーブルのカバレッジエントリに加えられ、i番目の期間に加えられるプロトコルテーブルはKiであり、i番目の期間のカバレッジ率の増加率はKi/N(Nはプロトコルテーブルの全エントリ数である。)であると設定され、t番目の期間によってカバーされるプロトコルテーブルの集合は{Ki}であり、T期間後のカバレッジ率はCart{KT=K1∪K2……KT}/Nであると設定され、
一つのシミュレーション期間を考察して、もしテストドライバが完全にランダムに生成された場合は、プロトコルテーブルの中の全てのエントリに対して任意の期間にカバーされる確率は等しく、各プロトコルテーブルエントリに対して、一つのシミュレーション期間は単一のベルヌーイ試行とみなされ、もし当該期間内のシミュレータの出力が当該プロトコルテーブルエントリをカバーすれば、試行は成功であるとみなされ、さもなければ試行は失敗であるとみなされ、
小さな確率のデッドロックイベントを解決するために設計されるプロトコルテーブルにはかなり多数のプロトコルテーブルのエントリがあり、すなわちプロトコルテーブル内の様々なエントリは異なる発生確率を持ち、シミュレーション期間の数が増加するとき、各期間に新たにカバーされるプロトコルテーブルのエントリの数は連続的に減少しなければならず、長期の稼働の間、有効なテストドライバの発生は速やかに減少し、0に向かわなければならず、
カバレッジ率によるテストドライバ自動発生器に対して、以上の分析により、純粋なランダムテストドライバ発生器を使うと、必然的に高効率の検証を行うことができないことが分かり、テストの効率を改善するために、毎回生成されるテストドライバは方向性がある必要があり、カバーされていないプロトコルテーブルのエントリをより大きな確率でシミュレータがカバーし、これはカバレッジ率による検証方法に対する不可避の必要条件であり、従って、カバレッジ率の変化に従ってカバレッジ率によるテストドライバ自動発生器によってテストドライバの発生を調節するための2つの方法が次の通り記述され、
(1)目的のプロトコルを検証することの複雑性および順序の保護のないネットワークによって生じるアクセストランザクションの実現プロセスの多様性のために、特定の入力テストドライバと出力カバレッジ目標との間の関係を分析することは不可能であり、この条件において、テストドライバ分類器を導入することが考慮され、当該分類器は入力テストドライバと出力カバレッジ率の間の確率の関係を提供することができ、当該分類器は、ランダムに生成されるテストドライバをフィルタリングし、新しいカバレッジ目標を生成する大きな確率を持っており、シミュレーション中に実行される有効なドライバとして働くテストドライバを選択するために使われ、無効なテストドライバは放棄され、
(2)プロトコルテーブルが分析され、プロトコルテーブルの中の多数のプロトコルテーブルエントリが類似のエントリを持ち、特に小さな確率のイベントのために設計された多くのプロトコルテーブルエントリを含み、従って関連する分析の方法に基づいてテストドライバの生成にオフセットの考えが導入され、各期間のシミュレーションが終了した後に、当該期間のテストドライバにオフセット措置を施し、前の期間で生じたシミュレーションの検証結果と類似するプロトコルテーブルエントリを速やかにカバーするために、オフセットされたテストドライバをもう一度稼働中のシミュレータに送る。
ここに開示される実施形態は、次の極めて有益な効果を有する。一般的に、国際的にキャッシュ・コヒーレンスに関わる複雑なコンピュータシステムの検証は検証システムの規模選択とプロトコル設計の検証の極端に高い困難さという問題を持つ。ここに開示される実施形態は、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルの変換の正確性に関するテスト検証モデルを構成する。プロセサによってサポート可能なドメイン内プロセサIDの数には制限があり、それでマルチプロセサシステムによって必要とされるノードコントローラの数は大き過ぎ、大きなノード間相互接続規模と複雑なトポロジー構造に帰着する。拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルを構成し、ノードコントローラを使うことによってローカルプロトコルテーブルの変換メカニズムを調べ、多階層コヒーレントドメインパケットを変換することは、大規模メモリ共有マルチプロセサシステムを著しく拡大し、効果的にシステムの性能を改善し、システムのトポロジーの複雑さを削減することができる。CC−NUMAシステムの多階層キャッシュコヒーレンスプロトコルに向けて、完全な検証方法が設計され、実現される。その方法はカバレッジ率による検証戦略を使用する。そして、検証システムは、疑似ランダムベースのシミュレーション検証システムとカバレッジ率によるテストドライバ自動発生器で形成される。
ここに開示される実施形態は主に次の長所を持つ。
1.シミュレーションのモデルリング方法は、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムのプロトコル設計の検証を実現し、極めて低い資金コストと人員コストを費やして短時間で大規模コンピュータシステムのキープロトコルの検証を実現する。
2.大規模コンピュータシステムのキープロトコルの反例を迅速に発見することができ、モデリングの記録の完全性のために故障追跡を実行することができ、従ってキープロトコルの修正をガイドすることができる。
3.標準的なモデルが構成され、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムの相互接続チップの構成をガイドする。コンピュータシステムの検証カバレッジ率とそのキーチップセットを保証し、著しくプロジェクトデザインの検証コストを節約し、従って開発サイクルを保証する。
1.シミュレーションのモデルリング方法は、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムのプロトコル設計の検証を実現し、極めて低い資金コストと人員コストを費やして短時間で大規模コンピュータシステムのキープロトコルの検証を実現する。
2.大規模コンピュータシステムのキープロトコルの反例を迅速に発見することができ、モデリングの記録の完全性のために故障追跡を実行することができ、従ってキープロトコルの修正をガイドすることができる。
3.標準的なモデルが構成され、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムの相互接続チップの構成をガイドする。コンピュータシステムの検証カバレッジ率とそのキーチップセットを保証し、著しくプロジェクトデザインの検証コストを節約し、従って開発サイクルを保証する。
以下に、添付図面を参照しながらここに開示される方法を更に詳細に説明する。
1)多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造
このシステムは、SystemC言語を使うことによりフルシステムシミュレータを設計して実装し、並列シミュレーション方法を実現する。SystemC環境において疑似ランダムソフトウェアシミュレーション検証システムを構成することによってモデルを検証する。その構造を図2に示す。
このシステムは、SystemC言語を使うことによりフルシステムシミュレータを設計して実装し、並列シミュレーション方法を実現する。SystemC環境において疑似ランダムソフトウェアシミュレーション検証システムを構成することによってモデルを検証する。その構造を図2に示す。
検証システムは主に以下の部分を含む:
(1)バス機能モデル:バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のAPIインタフェースを提供して外部のモジュールとメッセージの交換を可能とし、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中のシミュレーションを行い、システムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供する。
(1)バス機能モデル:バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のAPIインタフェースを提供して外部のモジュールとメッセージの交換を可能とし、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中のシミュレーションを行い、システムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供する。
(2)Reference Model(プロトコルリファレンスモデル):リファレンスモデルは、バス機能モデルと固く統合され、シミュレーションシステムにおいてシステム状態とメッセージの流れをリアルタイムに検査し、シミュレーションの間にプロトコルから逸脱するシステムの動作を発見するために使用される。
(3)Node Controller(ノードコントローラシミュレータ):ノードコントローラは、バス機能モデルのAPIインタフェースを通して接続され、ノードコントローラ(NC)のキャッシュコヒーレンスプロトコルをシミュレーションで実現する。ノードコントローラは、プロセサの直接接続キャッシュコヒーレンスプロトコルのメッセージを使うことによってプロセサと通信し、そのキャッシュコヒーレンスプロトコルのメッセージを用いてネットワークシミュレータを通して様々なNCシミュレータの間で通信する。
(4)Network Simulator(ネットワークシミュレータ):ネットワークシミュレータは、順序の保護のない簡単な全交換のネットワークをシミュレーションし、そのネットワークを使うことによって拡張型キャッシュコヒーレンスプロトコルのメッセージ通信を実行する。
(5)Global Checker(全体検査器):全体検査器は、システム全体の上で作動し、バス機能モデルのAPIを通してデータ全体のキャッシュ・コヒーレンスを検査する。
(6)Random/Force Test Stimulation Generator(ランダム/フォーステストドライバ自動発生器):ランダム/フォーステストドライバ発生器は、バス機能モデルのAPIインタフェースを通して接続され、シミュレーションの途中でランダム/フォースアクセストランザクションを連続的に発生し、バス機能モデルのAPIインタフェースを通してバス機能モデルのキャッシュにアクセストランザクションを送信する。
2)拡張可能なトポロジー構造
このデザインにおいて、マルチノード・マルチプロセサシステムの相互接続ネットワークの基本構造を図3に示す。ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェース(NI)を通して送信される。各ドメインは2個のCPU(図3でPとして示される)を含み、各CPUは1個のメモリ(MEM)記憶空間に接続される。4つのクランプ(Clump)ベースの拡張可能な基本トポロジー構造が構成される。各クランプドメインが4つのノードを有するマルチノード・マルチプロセサのトポロジー構造を図1に示す。コヒーレンス空間、非コヒーレンス空間、およびI/O空間のアドレスは分割され、システムの規模に応じて設定される。NCは全てのリモートアドレス空間に代理としてアクセスする。システムアドレスのマッピング法によって、図4に示すように、各クランプのNCノードのアドレスエリアは他のNCノードのアドレスエリアと重ならない。従って、もしNCに入力されたパケットのアドレスエリアがこのクランプ内に位置しなければ、必ずクランプ間の変換操作が必要である。
このデザインにおいて、マルチノード・マルチプロセサシステムの相互接続ネットワークの基本構造を図3に示す。ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェース(NI)を通して送信される。各ドメインは2個のCPU(図3でPとして示される)を含み、各CPUは1個のメモリ(MEM)記憶空間に接続される。4つのクランプ(Clump)ベースの拡張可能な基本トポロジー構造が構成される。各クランプドメインが4つのノードを有するマルチノード・マルチプロセサのトポロジー構造を図1に示す。コヒーレンス空間、非コヒーレンス空間、およびI/O空間のアドレスは分割され、システムの規模に応じて設定される。NCは全てのリモートアドレス空間に代理としてアクセスする。システムアドレスのマッピング法によって、図4に示すように、各クランプのNCノードのアドレスエリアは他のNCノードのアドレスエリアと重ならない。従って、もしNCに入力されたパケットのアドレスエリアがこのクランプ内に位置しなければ、必ずクランプ間の変換操作が必要である。
3)ノードシミュレーションモデル
NCは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信する。NCは、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装する。ノードシミュレータが1つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見する。そして、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行する。対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了する。例えば、図5は、ノードシミュレーションモデルのキー構造を示す。
NCは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信する。NCは、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装する。ノードシミュレータが1つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見する。そして、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行する。対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了する。例えば、図5は、ノードシミュレーションモデルのキー構造を示す。
4)プロトコルテーブル入口調査
プロトコルエンジンは、ドメイン間のコヒーレンスを実行するための重要なモジュールである。ノードコントローラによって受信されたコヒーレンスパケットは、そのプロトコルテーブルに従って2つのモジュールによって変換される。プロトコルエンジンモジュールはパケットを受信して自身の状態によってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信する。プロトコルエンジンはプロトコルテーブルの複数のエントリを記録する。そして、イベント状態を記録するための構造は、Trk(パケット記録メモリモジュール)/Rdt(リードパケットメモリモジュール)/Wrt(ライトパケットメモリモジュール)/Orb(送信パケットメモリモジュール)/Dir(ディレクトリメモリモジュール)を含み、状態構造の記憶と調査を実現する。
プロトコルエンジンは、ドメイン間のコヒーレンスを実行するための重要なモジュールである。ノードコントローラによって受信されたコヒーレンスパケットは、そのプロトコルテーブルに従って2つのモジュールによって変換される。プロトコルエンジンモジュールはパケットを受信して自身の状態によってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信する。プロトコルエンジンはプロトコルテーブルの複数のエントリを記録する。そして、イベント状態を記録するための構造は、Trk(パケット記録メモリモジュール)/Rdt(リードパケットメモリモジュール)/Wrt(ライトパケットメモリモジュール)/Orb(送信パケットメモリモジュール)/Dir(ディレクトリメモリモジュール)を含み、状態構造の記憶と調査を実現する。
例えば、プロトコルテーブルは次のテーブルで示されるものである。
まず、システム状態レジスタのコーディング方法を定義する:各状態レジスタの値の桁は固定であり、全ての状態レジスタを対応する2進数に変換して最大の桁を左側に補完する。そして、補完された全2進数を1列に並べて対応するコーディング値を求める。プロトコルテーブルで与えられる値が不確定であれば、コーディングの間不確定の値を全ての値に広げ、コーディング後に全ての値は同じ入口に向く。各メッセージのコンフィグレーションファイルにおいて、入口の条件値に従ってソートが実行され、各条件は一つの入口に対応する。
調査器は階層的な設計を採用する。第1レベルは受信したメッセージを調べ、この部分は戦略設計モードを使って設計され、各メッセージに対してメッセージ処理クラスを実装し、パブリックメッセージ処理クラスを継承する。ノースブリッジシミュレータがメッセージを受信すると、ハッシュルックアップテーブルモードにおけるマッチング方法を使ってメッセージのマッチングを実行し、速やかに対応する入口を見い出す。
5)プロトコルテーブルの実行プロセス
プロトコルテーブルを実行するプロトコルエンジンのプロセスが図6のシミュレータ実行プロセスによって示される。各ブロックは一つのプロトコルテーブルの変換が達成されることを示す。点線内のブロックは1つの対応するプロトコルテーブルを実行する。プロトコルテーブルにおいて実行されることができる全ての可能な状態の変換は、2つのタイプ(レジスタ値の書き込みとメッセージの送信)を含む。レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝える;メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、コードが対応するメッセージ送信関数の関数ポインタと結び付けられる。従って、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有する。
プロトコルテーブルを実行するプロトコルエンジンのプロセスが図6のシミュレータ実行プロセスによって示される。各ブロックは一つのプロトコルテーブルの変換が達成されることを示す。点線内のブロックは1つの対応するプロトコルテーブルを実行する。プロトコルテーブルにおいて実行されることができる全ての可能な状態の変換は、2つのタイプ(レジスタ値の書き込みとメッセージの送信)を含む。レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝える;メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、コードが対応するメッセージ送信関数の関数ポインタと結び付けられる。従って、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有する。
実際のシミュレータの実行の間、入口条件調査器が対応する入口を調べるとき、コントロール権が状態変換実行器に渡され、状態変換実行器は、予めコンフィギュレーションファイルから読み取られる操作リストに従って、仕事のために対応するレジスタ書き込み関数とメッセージ送信関数とをそれぞれにコールする。
6)トランザクション生成器
トランザクション生成器の仕事はランダムなテストである。ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスである。ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストする。図7のトランザクション生成器の実行プロセスに示すように、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成される。プロトコルの検証はランダムな組み合わせを通して達成される。
トランザクション生成器の仕事はランダムなテストである。ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスである。ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストする。図7のトランザクション生成器の実行プロセスに示すように、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成される。プロトコルの検証はランダムな組み合わせを通して達成される。
7)テスト評価方法とカバレッジ率向上方法
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行される。そして、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析される。目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行する。目標のカバレッジ率を達成した場合は、検証の仕事は終了する。カバレッジ率による検証方法の中心的な技術はカバー率測定と報告とテストドライバの自動生成を含む。
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行される。そして、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析される。目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行する。目標のカバレッジ率を達成した場合は、検証の仕事は終了する。カバレッジ率による検証方法の中心的な技術はカバー率測定と報告とテストドライバの自動生成を含む。
図8は、カバレッジ率による2重ループ検証法のフローチャートである。
選択されたカバレッジ率によるシミュレーション検証方法によって、以下のようなシミュレーションの検証プロセスモデルが構成される。検証の間、テストは複数のシミュレーション期間によって形成される。そして、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、そのアクセストランザクションをシステムのシミュレータに投入する。システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行する。生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了する。各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進む。
選択されたカバレッジ率によるシミュレーション検証方法によって、以下のようなシミュレーションの検証プロセスモデルが構成される。検証の間、テストは複数のシミュレーション期間によって形成される。そして、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、そのアクセストランザクションをシステムのシミュレータに投入する。システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行する。生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了する。各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進む。
シミュレーションの検証の間、明らかに各期間はカバーされる複数のプロトコルテーブルのエントリを持ち、前のシミュレーション期間でカバーされたプロトコルテーブルのエントリを除いて、新たにカバーされたプロトコルテーブルのエントリがプロトコルテーブルのカバレッジエントリに加えられる。i番目の期間に加えられるプロトコルテーブルはKiであり、i番目の期間のカバレッジ率の増加率はKi/N(Nはプロトコルテーブルの全エントリ数である。)であると設定される。t番目の期間によってカバーされるプロトコルテーブルの集合は{Ki}であり、T期間後のカバレッジ率はCart{KT=K1∪K2……KT}/Nであると設定される。
小さな確率のデッドロックイベントを解決するために設計されるプロトコルテーブルにはかなり多数のプロトコルテーブルのエントリがある。すなわちプロトコルテーブル内の様々なエントリは異なる発生確率を持つ。シミュレーション期間の数が増加するとき、各期間に新たにカバーされるプロトコルテーブルのエントリの数は連続的に減少しなければならず、長期の稼働の間、有効なテストドライバの発生は速やかに減少し、0に向かわなければならない。
以上の分析により、純粋なランダムテストドライバ発生器を使うと、必然的に高効率の検証を行うことができないことが分かる。テストの効率を改善するために、毎回生成されるテストドライバは方向性がある必要があり、それでカバーされていないプロトコルテーブルのエントリをより大きな確率でシミュレータがカバーする。そして、これはカバレッジ率による検証方法に対する不可避の必要条件である。従って、カバレッジ率の変化に従ってテストドライバの発生を調節するための2つの方法が次の通り記述される。
1.目的のプロトコルを検証することの複雑性および順序の保護のないネットワークによって生じるアクセストランザクションの実現プロセスの多様性のために、特定の入力テストドライバと出力カバレッジ目標との間の関係を分析することは不可能である。この条件において、テストドライバ分類器を導入することが考慮され、その分類器は入力テストドライバと出力カバレッジ率の間の確率の関係を提供することができる。その分類器は、ランダムに生成されるテストドライバをフィルタリングし、新しいカバレッジ目標を生成する大きな確率を持っており、シミュレーション中に実行される有効なドライバとして働くテストドライバを選択するために使われる。そして、無効なテストドライバは放棄される。
2.プロトコルテーブルが分析される。そして、プロトコルテーブルの中の多数のプロトコルテーブルエントリが類似のエントリを持ち、特に小さな確率のイベントのために設計された多くのプロトコルテーブルエントリを含む。そこで関連する分析の方法に基づいてテストドライバの生成にオフセットの考えが導入される。各期間のシミュレーションが終了した後に、この期間のテストドライバにオフセット措置を施し、前の期間で生じたシミュレーションの検証結果と類似するプロトコルテーブルエントリを速やかにカバーするために、オフセットされたテストドライバをもう一度稼働中のシミュレータに送る。
ここで開示される実施形態は、複雑なハイエンドコンピュータシステムの設計分野に応用され、大規模ハイエンドコンピュータシステムの設計検証およびそのキー・チップセットの設計検証、さらにそのシステムOSと応用ソフトウェアの設計と開発において極めて高い応用価値がある。
ここで開示される実施形態は、863テーマクラウドデータセンターのキーサポート技術の研究において使われた。モデルを構成した後に単一トランザクションのシミュレーションタイムを測定した。シミュレータでは、あるシミュレーションタイムを設定し、シミュレーションクロックが進む間に費やした時間をテストした。同時に、図9に示すように、プロセサIntel E7540XM2×4、主メモリ4G×16、プラットフォームCentOS4.8を有するInspur浪潮NF8520サーバーにおいて、実際の実行時間を得た。実際のテスト結果は、ソフトウェアシミュレーションの方法に基づくこのテストで提供される複数階層コヒーレンスプロトコルの検証モデルは、許容できるシミュレーション処理時間の下でマルチ状態空間にあるキャッシュコヒーレンスプロトコルを検証できることを示す。
大規模CC−NUMAマルチプロセサシステムコンピュータの開発の間に、ここに開示される実施形態の内容は、プロジェクトシステムのアーキテクチャ設計、システムの相互接続設計、およびプロトコル処理のキーチップのプロトコル設計などのいろいろな面で設計の実現可能性を保証する。特にシステムのマルチキーチップセット設計のためにキーとなり、信頼できる比較モデルを提供し、より小さい設計規模とより低い投資コストを持つマルチパスコンピュータシステム設計の成功を保証し、極めて重要な開発と応用価値を備える。
海外市場の技術の状況分析および応用の必要性
システム規模の速やかな拡張、ネットワーク遅延の不確定性およびメモリコヒーレンスモデルの多様性のような様々な要因がキャッシュコヒーレンスプロトコルを極めて複雑化させ、プロトコルの状態空間は指数関数的に増加し、または爆発さえする。産業界ではキャッシュコヒーレンスプロトコルの検証方法について、主に形式的検証とソフトウェアシミュレーションによる検証のような多くの議論がある。固有の状態空間の爆発の問題のために、現在、完全に形式的検証は複雑なマルチレベルプロトコルの検証に適用することはできない。ソフトウェアシミュレーションによる検証は人為的に制約モデルを書き、制約された疑似ランダムなテストを実行して、改善された効率で特定の目標を検証することができ、実用的で実現可能な方法である。実際のコンピュータシステムの構造をシミュレーションして検証評価システムと検証評価プラットフォームを実現すれば、相対的に短い時間と極めて低い資金コストと人員コストを費やして大規模コンピュータシステムのキープロトコルを検証することができる。モデリングの間に、処理メカニズムの全状態を記録でき、大規模コンピュータシステムのキープロトコルの反例を発見したとき、故障を容易に追跡することができる。モデリングは標準のモデルを実装し、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムの相互接続チップの構成をガイドする。モデリングの規模は自由で制御可能であり、技術の条件は成熟している。実装の間、製造・開発コストを容易に制御でき、過度に長い開発周期を避けることができる。
システム規模の速やかな拡張、ネットワーク遅延の不確定性およびメモリコヒーレンスモデルの多様性のような様々な要因がキャッシュコヒーレンスプロトコルを極めて複雑化させ、プロトコルの状態空間は指数関数的に増加し、または爆発さえする。産業界ではキャッシュコヒーレンスプロトコルの検証方法について、主に形式的検証とソフトウェアシミュレーションによる検証のような多くの議論がある。固有の状態空間の爆発の問題のために、現在、完全に形式的検証は複雑なマルチレベルプロトコルの検証に適用することはできない。ソフトウェアシミュレーションによる検証は人為的に制約モデルを書き、制約された疑似ランダムなテストを実行して、改善された効率で特定の目標を検証することができ、実用的で実現可能な方法である。実際のコンピュータシステムの構造をシミュレーションして検証評価システムと検証評価プラットフォームを実現すれば、相対的に短い時間と極めて低い資金コストと人員コストを費やして大規模コンピュータシステムのキープロトコルを検証することができる。モデリングの間に、処理メカニズムの全状態を記録でき、大規模コンピュータシステムのキープロトコルの反例を発見したとき、故障を容易に追跡することができる。モデリングは標準のモデルを実装し、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムの相互接続チップの構成をガイドする。モデリングの規模は自由で制御可能であり、技術の条件は成熟している。実装の間、製造・開発コストを容易に制御でき、過度に長い開発周期を避けることができる。
利益(経済的利益と社会的利益)
極めて複雑な構造を持つハイエンドのフォールトトレラントなコンピュータシステムに関して、ここに開示される実施形態の設計のキー技術は、システム構造の設計、キーチップセットの設計などを含む。小規模のプロトタイプ検証システムが小規模のハードウェアによって実現され、システム設計のキー技術がプログラマブルFPGAチップによって実現され、開発の周期を短縮したり、設計検証のコストを削減したり、プロジェクト開発の成功を保証する。例えば、複雑なプロトコルとロジックを持ったキーチップセットの設計の間、そのチップをテープアウトする費用は一回に千万元に迫り、テープアウトの期間も数ヶ月必要である。そして、高い検証カバレッジ率を持つプロトタイプ検証システムは、チップのテープアウトの成功を保証し、そのプロジェクトの時間のオーバヘッドとコストのオーバヘッドを大いに省く。更にまた、その検証はシステム構造の設計、放熱設計、パワー消費分へのレファレンスを与え、プロジェクトの開発リスクを著しく低下させる。従って、ここに開示される実施形態は高い経済的利益と社会的利益を有する。
極めて複雑な構造を持つハイエンドのフォールトトレラントなコンピュータシステムに関して、ここに開示される実施形態の設計のキー技術は、システム構造の設計、キーチップセットの設計などを含む。小規模のプロトタイプ検証システムが小規模のハードウェアによって実現され、システム設計のキー技術がプログラマブルFPGAチップによって実現され、開発の周期を短縮したり、設計検証のコストを削減したり、プロジェクト開発の成功を保証する。例えば、複雑なプロトコルとロジックを持ったキーチップセットの設計の間、そのチップをテープアウトする費用は一回に千万元に迫り、テープアウトの期間も数ヶ月必要である。そして、高い検証カバレッジ率を持つプロトタイプ検証システムは、チップのテープアウトの成功を保証し、そのプロジェクトの時間のオーバヘッドとコストのオーバヘッドを大いに省く。更にまた、その検証はシステム構造の設計、放熱設計、パワー消費分へのレファレンスを与え、プロジェクトの開発リスクを著しく低下させる。従って、ここに開示される実施形態は高い経済的利益と社会的利益を有する。
本発明では、本発明の明細書に開示された技術的特徴を除いて、他の技術は当業者によく知られている。
本発明は、コンピュータアーキテクチャ分野に関し、特に、マルチプロセサコンピュータシステムのキャッシュコヒーレンス、マルチノード・マルチプロセサコンピュータシステム、キャッシュコヒーレント不均等メモリアクセス(CC−NUMA:Cache Coherent Non−Uniform Memory Access)アーキテクチャ、キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンシドメインとモデルのテスト・検証方法、および拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンシドメインのシミュレーション検証およびテスト方法に関する。
現在、マルチプロセサの接続方法はバス接続からポイントツーポイント接続に変わっており、また、メモリはプロセサの外部ブリッジチップに接続される代わりに直接プロセサに接続される。メモリ接続方法の変化のために、システム内のメモリ配置がまた変わっている。それはマルチプロセサシステムにおけるメモリアクセスの非均一性を引き起こす。従って、現在のマルチプロセサシステムは大部分不均等メモリアクセス(NUMA:Non−Uniform Memory Access)アーキテクチャシステムを採用する。
NUMAシステムでは、マルチキャッシュユニットが分散して配置される。従って、マルチキャッシュの間でコヒーレンスの問題を解決するように、NUMAシステムは設計される。キャッシュコヒーレンスの問題を解決する方法は、CC−NUMAシステムの中心的な問題である。従って、それに応じてキャッシュコヒーレンスプロトコルに対する検証作業は、CC−NUMAシステムの検証作業の重要な部分である。商業的に利用できるマイクロプロセサを使ってスーパーコンピュータを作ることが一般的となった衝撃の下で、商業的に利用できるマルチコアマイクロプロセサを使ってCC−NUMAシステムを作ることは避けられない傾向になる。多数のプロセサの並列処理をサポートするために、現在の商業的に利用できるほとんど全てのハイエンドマイクロプロセサは基本的にマルチパス直接接続への拡張をサポートする。プロセサが組み込みのメモリコントローラを使用し、アクセス空間全部が一様にアドレスされる場合、多数の直接に接続されたプロセサが小さなCC−NUMAシステムを形成することができる。けれども、プロセサの直接接続インタフェースの数は制限されているので、プロセサを直接に接続することのみで大規模システムを作ることは困難である。
コヒーレンシドメイン空間を拡張し、大規模CC−NUMAマルチプロセサシステムを実現するために、ノードコントローラ(NC)が必要とされる。ここに開示されるノードコントローラは全体のキャッシュコヒーレンスの維持とシステム規模の拡大の2つの機能を持つ。まず、各ノードコントローラは1個から4個のプロセサに接続されてノードと第1レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスはプロセサとノードコントローラによって共同で維持される。次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模CC−NUMAシステムを形成する。ノード間における第2レベルのキャシュコヒーレンスはノードコントローラによって維持される。この方法で構成される大規模CC−NUMAシステムは拡張されてプロセサ直接接続キャッシュコヒーレンスプロトコルに基づく多階層プロトコルを確立し、全体のコヒーレンスを維持するために必要である。拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンシドメインのCC−NUMAシステムプロトコルはいつでも比較的複雑であり、また、シミュレーションテストがとても重要である。従って、また、プロトコルのためのシミュレーション検証作業が重要な作業になる。
上述した通り、直接に接続されたプロセサによって構成されるマルチプロセサシステムは制限された規模を持つ。大規模なCC−NUMAマルチプロセサシステムを実現するために、図1に示すように、ノードコントローラが必要である。ノードコントローラはシステム規模の拡大および全体のキャッシュコヒーレンスの維持の機能を持つ。まず、各ノードコントローラは1個から4個のプロセサに接続されてノードと第1レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスはプロセサとノードコントローラによって共同で維持される。また、ノードコントローラはドメイン内で少なくとも1つのプロセサIDを占有し、それでドメイン内のプロセサの数とノードコントローラの数の合計は、そのドメイン内でプロセサによってサポート可能なプロセサIDの数を超えることはできない。次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模CC−NUMAシステムを形成する。ノード間における第2レベルのキャシュコヒーレンスはノードコントローラによって維持される。そして、あるノード内のプロセサがノードとキャッシュコヒーレンシドメインを超えて他のノード内のプロセサのメモリにアクセスするとき、全体のキャッシュコヒーレンスはノードコントローラによって維持される。
その結果、関連のあるモデル、すなわち、CC−NUMAバス機能モデルが設計される。そのモデルは、キャッシュ、プロセサの記憶装置、およびプロセサ間の相互接続ネットワークをシミュレーションし、カスタマイズシステムのトポロジー構造をサポートし、アクセス動作のトランザクションレベルのシミュレーションをサポートし、プロセサの直接接続キャッシュコヒーレンスプロトコルをシミュレーションし、リアルタイムの動作、様々なアクセストランザクションの状態、システム内のキャッシュと記憶装置を提供する。更にまた、ノードコントローラのシミュレーションモデルが設計される。そのモデルは、バス機能モデルのAPIインタフェースを使うことによって、ノードコントローラによって保持される多階層キャッシュコヒーレンスプロトコルをシミュレーションし、プロセサのキャッシュコヒーレンスプロトコルメッセージを使うことによってプロセサと通信し、拡張型キャッシュコヒーレンスプロトコルメッセージを使い、従ってドメインの多階層のコヒーレンスプロトコル変換を実装することによってノードコントローラのネットワークを通して様々なノードコントローラの間で通信する。
機能検証を実行するためにシミュレーション検証方法を使うことの中心的なアイデアは、設計者の意図をシミュレータで観測される実際の動作と比較して2つのコヒーレンスを決定することである。設計者によって予期されるようにシミュレーション中で設計が稼働し、設計の必要条件を達成するとき、その設計は検証されたとみなされる。検証の間に、シミュレーション結果のカバレッジ率は生成されたテストドライバに対して解析され、システムの機能記述から得られる情報と組み合わせて、更なる検証のためのテストドライバの生成アルゴリズムまたはテストドライバの生成制約が改善され、次に生成されるテストドライバはシミュレーションシステムにもっと高いカバレッジ率を達成させることができる。
キャッシュコヒーレンスプロトコルは、共有データアクセスコヒーレンスの実装と共有メモリプログラミングインターフェースの提供のために使われる処理メカニズムである。キャッシュコヒーレンスプロトコルは、システムの正しさを直接決定するのみでなく、またシステムの規模と性能に重要な役割を果たし、分散された共有メモリを持ったマルチプロセサ・マルチコアシステムを実装するために極めて重要である。システム規模の速やかな拡大、ネットワーク遅延の不確定性およびメモリコヒーレンスモデルの多様性のような様々な要因がキャッシュコヒーレンスプロトコルを極めて複雑化させ、プロトコルの状態空間は指数関数的に増加し、または爆発さえする。産業界ではキャッシュコヒーレンスプロトコルの検証方法について、主に形式的検証とソフトウェアシミュレーションによる検証のような多くの議論がある。固有の状態空間の爆発の問題のために、現在、完全に形式的検証は複雑な多階層プロトコルの検証作業に適用することはできない。ソフトウェアシミュレーションによる検証は人為的に制約モデルを書き、制約された疑似ランダムなテストを実行して、改善された効率で特定の目標を検証することができ、実用的で実現可能な方法である。ソフトウェアシミュレーション方法に基づく本発明は、まず、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンス記述方法でシミュレーションモデルの構成を記述して、ソフトウェアシミュレーションによる検証方法を提供し、多状態空間において多階層ドメインキャッシュコヒーレンスプロトコルを効果的に検証する。1つのマルチプロセサの検証システムモデルを作成し、関連するシミュレーションによる検証を実行することを通して、本方法の妥当性と有効性が更に確認される。
プロセサによってサポート可能なドメイン内プロセサIDには制限があり、それでマルチプロセサシステムによって必要とされるノードコントローラの数は大き過ぎ、大きなノード間相互接続規模と複雑なトポロジー構造に帰着する。拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルを構成し、ノードコントローラを使うことによってローカルプロトコルテーブルの変換メカニズムを調べ、多階層コヒーレントドメインパケットを変換することは、大規模メモリ共有マルチプロセサシステムを著しく拡大し、効果的にシステムの性能を改善し、システムのトポロジーの複雑さを削減することができる。
本発明の目的は、CC−NUMAシステムの多階層キャッシュコヒーレンスプロトコルに適した拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルの変換の正確なテストと検証の方法を提供することである。
ここに開示される実施形態は、以下の技術的な解決策を通して実現されることができ、カバレッジ率による検証戦略を使うことによって、疑似ランダムベースのシミュレーション検証システムおよびカバレッジ率によるテストドライバ自動発生器で形成されるシミュレーション検証システムを構成するために、多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造と、拡張可能なトポロジー構造と、ノードシミュレーションモデルと、プロトコルテーブル調査および状態変換実行方法と、プロトコルテーブルの実行プロセスと、トランザクション生成器と、テスト評価方法と、カバレッジ率向上方法とを備え、
コヒーレンス空間を拡張して大規模CC−NUMAマルチプロセサシステムを実現するために、ノードコントローラNCが必要であり、当該ノードコントローラが全体のキャッシュコヒーレンスの維持とシステム規模の拡大の2つの機能を持ち、まず各ノードコントローラは1個から4個のプロセサに接続されてノードと第1レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスが当該プロセサと当該ノードコントローラによって共同で維持され、次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模CC−NUMAシステムを形成し、ノード間における第2レベルのキャシュコヒーレンスがノードコントローラによって維持され、当該方法で構成される大規模CC−NUMAシステムは拡張されてプロセサ直接接続キャッシュコヒーレンスプロトコルに基づく多階層プロトコルを確立し、全体のコヒーレンスを維持し、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのCC−NUMAシステムプロトコルシミュレーションモデルを構成するために、多数のコヒーレンシドメインの間でドメイン内およびドメイン間の送信の精度と安定性を保証するようにシステムのキーノードにおいてプロトコルテーブル調査および状態変換実行メカニズムが構成されることが必要であり、更に信頼できるプロトコル入口変換カバレッジ率評価による検証方法が提供され、最適化されたトランザクション生成器のプッシュモデルをロードすることによってトランザクションを処理し、操作の終了後にカバレッジ率の指標を取得し、ランダムトランザクション促進メカニズムに比べて検証効率が改善され、1つのマルチプロセサ検証システムモデルを構成して関連のあるシミュレーション検証を実行することを通して当該方法の妥当性と有効性が更に確認され、
1)多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造において、
拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインモデルのシステムシミュレータと当該システムシミュレータと並列に実行されるモデル検証システムとがSystemC言語を使って設計され、当該モデル検証システムが疑似ランダムトランザクション生成器を構成することによってテストされ、当該モデル検証システムの正確さが全体検査器を使って判断され、当該モデル検証システムは、バス機能モデルと、プロトコルリファレンスモデルと、ノードコントローラシミュレータと、ネットワークシミュレータと、全体検査器と、プロトコル入口調査メカニズムとを含み、
(1)バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のAPIインタフェースを提供して外部のモジュールとメッセージの交換を提供し、シミュレーションを行い、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中にシステムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供し、
(2)プロトコルリファレンスモデルは、バス機能モデルと固く統合され、シミュレーションシステムにおいてシステム状態とメッセージの流れをリアルタイムに検査し、シミュレーションの間にプロトコルから逸脱するシステムの動作を発見するために使用され、
(3)ノードコントローラシミュレータは、バス機能モデルのAPIインタフェースを通して接続され、ノードコントローラNCのキャッシュコヒーレンスプロトコルをシミュレーションで実現し、プロセサの直接接続キャッシュコヒーレンスプロトコルのメッセージを使うことによってプロセサと通信し、当該キャッシュコヒーレンスプロトコルのメッセージを用いてネットワークシミュレータを通して様々なNCシミュレータの間で通信し、
(4)ネットワークシミュレータは、順序の保護のない簡単な全交換のネットワークをシミュレーションし、当該ネットワークを使うことによって拡張型キャッシュコヒーレンスプロトコルのメッセージ通信を実行し、
(5)全体検査器は、システム全体の上で作動し、バス機能モデルのAPIを通してデータ全体のキャッシュコヒーレンスを検査し、
(6)ランダム/フォーステストドライバの自動発生器は、バス機能モデルのAPIインタフェースを通して接続され、シミュレーションの途中でランダム/フォースアクセストランザクションを連続的に発生し、バス機能モデルのAPIインタフェースを通してバス機能モデルのキャッシュにアクセストランザクションを送信し、
2)拡張可能なトポロジー構造において、
ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェースNIを使って送信され、各ドメインは2個のCPUを含み、各CPUは1個のメモリに接続され、4つのクランプベースの拡張可能な基本トポロジー構造を構成し、当該基本トポロジー構造は各クランプドメインが4つのノードを有するマルチノード・マルチプロセサのトポロジー構造であり。コヒーレンス空間、非コヒーレンス空間、およびI/O空間のアドレスは分割され、システムの規模に応じて設定され、当該NCは全てのリモートアドレス空間に代理としてアクセスし、システムアドレスのマッピング法によって、各クランプのNCノードのアドレスエリアは他のNCノードのアドレスエリアと重ならず、当該NCに入力されたパケットのアドレスエリアが当該クランプ内に位置しなければ、必ずクランプ間の変換操作が必要であり、
3)ノードシミュレーションモデルにおいて、
NCは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信し、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装し、ノードシミュレータが1つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
4)プロトコルテーブルシミュレータと入口条件調査器を含むプロトコルテーブルの調査と状態変換の実行において、
プロトコルテーブルシミュレータはシステムシミュレータの中心部として働き、多階層キャッシュコヒーレンスプロトコルモデルの通常の動作に極めて重要であり、プロトコルテーブルは検証された目標であり、検証プロセス全体の間に修正可能であり、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータがセットされる必要があり、当該シミュレータは入口条件調査器と状態変換実行器の2つの部分を含み、ノードシミュレータが1つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
入口条件調査器はドメイン間のコヒーレンスを実行するための重要なモジュールであり、ノードコントローラによって受信されたコヒーレンスパケットはプロトコルテーブルに従って前記2つのモジュールによって変換され、入口条件調査器はパケットを受信して入口条件調査器の状態に従ってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信し、入口条件調査器はプロトコルテーブルの複数のエントリを記録し、イベント状態を記録するための構造はTrk(パケット記録メモリモジュール)/Rdt(リードパケットメモリモジュール)/Wrt(ライトパケットメモリモジュール)/Orb(送信パケットメモリモジュール)/Dir(ディレクトリメモリモジュール)を含み、
システム状態レジスタのコーディング方法において、各状態レジスタの値の桁は固定であり、全ての状態レジスタを対応する2進数に変換して最大の桁を左側に補完し、補完された全2進数を1列に並べて対応するコーディング値を求め、プロトコルテーブルで与えられる値が不確定であれば、コーディングの間不確定の値を全ての値に広げ、コーディング後に全ての値は同じ入口に向き、各メッセージのコンフィグレーションファイルにおいて、入口の条件値に従ってソートが実行され、各条件は一つの入口に対応し、
入口条件調査器は階層的な設計を採用し、第1レベルは受信したメッセージを調べ、当該部分は戦略設計モードを使って設計され、各メッセージに対してメッセージ処理クラスを実装し、パブリックメッセージ処理クラスを継承し、ノースブリッジシミュレータがメッセージを受信すると、ハッシュルックアップテーブルモードにおけるマッチング方法を使ってメッセージのマッチングを実行し、速やかに対応する入口を見い出し、
5)プロトコルテーブルの実行プロセスにおいて、
プロトコルテーブルにおいて実行される全ての可能な状態の変換はレジスタ値の書き込みとメッセージの送信という2つのタイプを含み、レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝え、メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、当該コードが対応するメッセージ送信関数の関数ポインタと結び付けられ、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有し、
実際のシミュレータの実行の間、入口条件調査器が対応する入口を調べるとき、コントロール権が状態変換実行器に渡され、状態変換実行器は、予めコンフィギュレーションファイルから読み取られる操作リストに従って、作業のために対応するレジスタ書き込み関数とメッセージ送信関数とをそれぞれにコールし、
6)トランザクション生成器において、
トランザクション生成器の仕事はランダムなテストであり、当該ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスであり、当該ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストし、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成され、プロトコルの検証はランダムな組み合わせを通して達成され、
7)テスト評価方法とカバレッジ率向上方法において、
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行され、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析され、目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行し、目標のカバレッジ率を達成した場合は、検証の仕事は終了し、カバレッジ率による検証方法の中心的な技術はカバレッジ率測定と報告とテストドライバの自動生成を含み、
選択されたカバレッジ率によるシミュレーション検証方法によって、シミュレーションの検証プロセスモデルが構成され、当該シミュレーションの検証プロセスモデルでは、検証の間、テストは複数のシミュレーション期間によって形成され、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、当該アクセストランザクションをシステムのシミュレータに投入し、当該システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行し、生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了し、各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進み、
シミュレーションの検証の間、明らかに各期間はカバーされる複数のプロトコルテーブルのエントリを持ち、前のシミュレーション期間でカバーされたプロトコルテーブルのエントリを除いて、新たにカバーされたプロトコルテーブルのエントリがプロトコルテーブルのカバレッジエントリに加えられ、i番目の期間に加えられるプロトコルテーブルはKiであり、i番目の期間のカバレッジ率の増加率はKi/N(Nはプロトコルテーブルの全エントリ数である。)であると設定され、t番目の期間によってカバーされるプロトコルテーブルの集合は{Ki}であり、T期間後のカバレッジ率はCart{KT=K1∪K2……KT}/Nであると設定され、
一つのシミュレーション期間を考察して、もしテストドライバが完全にランダムに生成された場合は、プロトコルテーブルの中の全てのエントリに対して任意の期間にカバーされる確率は等しく、各プロトコルテーブルエントリに対して、一つのシミュレーション期間は単一のベルヌーイ試行とみなされ、もし当該期間内のシミュレータの出力が当該プロトコルテーブルエントリをカバーすれば、試行は成功であるとみなされ、さもなければ試行は失敗であるとみなされ、
小さな確率のデッドロックイベントを解決するために設計されるプロトコルテーブルにはかなり多数のプロトコルテーブルのエントリがあり、すなわちプロトコルテーブル内の様々なエントリは異なる発生確率を持ち、シミュレーション期間の数が増加するとき、各期間に新たにカバーされるプロトコルテーブルのエントリの数は連続的に減少しなければならず、長期の稼働の間、有効なテストドライバの発生は速やかに減少し、0に向かわなければならず、
カバレッジ率によるテストドライバ自動発生器に対して、以上の分析により、純粋なランダムテストドライバ発生器を使うと、必然的に高効率の検証を行うことができないことが分かり、テストの効率を改善するために、毎回生成されるテストドライバは方向性がある必要があり、カバーされていないプロトコルテーブルのエントリをより大きな確率でシミュレータがカバーし、これはカバレッジ率による検証方法に対する不可避の必要条件であり、従って、カバレッジ率の変化に従ってカバレッジ率によるテストドライバ自動発生器によってテストドライバの発生を調節するための2つの方法が次の通り記述され、
(1)目的のプロトコルを検証することの複雑性および順序の保護のないネットワークによって生じるアクセストランザクションの実現プロセスの多様性のために、特定の入力テストドライバと出力カバレッジ目標との間の関係を分析することは不可能であり、この条件において、テストドライバ分類器を導入することが考慮され、当該分類器は入力テストドライバと出力カバレッジ率の間の確率の関係を提供することができ、当該分類器は、ランダムに生成されるテストドライバをフィルタリングし、新しいカバレッジ目標を生成する大きな確率を持っており、シミュレーション中に実行される有効なドライバとして働くテストドライバを選択するために使われ、無効なテストドライバは放棄され、
(2)プロトコルテーブルが分析され、プロトコルテーブルの中の多数のプロトコルテーブルエントリが類似のエントリを持ち、特に小さな確率のイベントのために設計された多くのプロトコルテーブルエントリを含み、従って関連する分析の方法に基づいてテストドライバの生成にオフセットの考えが導入され、各期間のシミュレーションが終了した後に、当該期間のテストドライバにオフセット措置を施し、前の期間で生じたシミュレーションの検証結果と類似するプロトコルテーブルエントリを速やかにカバーするために、オフセットされたテストドライバをもう一度稼働中のシミュレータに送る。
コヒーレンス空間を拡張して大規模CC−NUMAマルチプロセサシステムを実現するために、ノードコントローラNCが必要であり、当該ノードコントローラが全体のキャッシュコヒーレンスの維持とシステム規模の拡大の2つの機能を持ち、まず各ノードコントローラは1個から4個のプロセサに接続されてノードと第1レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスが当該プロセサと当該ノードコントローラによって共同で維持され、次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模CC−NUMAシステムを形成し、ノード間における第2レベルのキャシュコヒーレンスがノードコントローラによって維持され、当該方法で構成される大規模CC−NUMAシステムは拡張されてプロセサ直接接続キャッシュコヒーレンスプロトコルに基づく多階層プロトコルを確立し、全体のコヒーレンスを維持し、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのCC−NUMAシステムプロトコルシミュレーションモデルを構成するために、多数のコヒーレンシドメインの間でドメイン内およびドメイン間の送信の精度と安定性を保証するようにシステムのキーノードにおいてプロトコルテーブル調査および状態変換実行メカニズムが構成されることが必要であり、更に信頼できるプロトコル入口変換カバレッジ率評価による検証方法が提供され、最適化されたトランザクション生成器のプッシュモデルをロードすることによってトランザクションを処理し、操作の終了後にカバレッジ率の指標を取得し、ランダムトランザクション促進メカニズムに比べて検証効率が改善され、1つのマルチプロセサ検証システムモデルを構成して関連のあるシミュレーション検証を実行することを通して当該方法の妥当性と有効性が更に確認され、
1)多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造において、
拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインモデルのシステムシミュレータと当該システムシミュレータと並列に実行されるモデル検証システムとがSystemC言語を使って設計され、当該モデル検証システムが疑似ランダムトランザクション生成器を構成することによってテストされ、当該モデル検証システムの正確さが全体検査器を使って判断され、当該モデル検証システムは、バス機能モデルと、プロトコルリファレンスモデルと、ノードコントローラシミュレータと、ネットワークシミュレータと、全体検査器と、プロトコル入口調査メカニズムとを含み、
(1)バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のAPIインタフェースを提供して外部のモジュールとメッセージの交換を提供し、シミュレーションを行い、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中にシステムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供し、
(2)プロトコルリファレンスモデルは、バス機能モデルと固く統合され、シミュレーションシステムにおいてシステム状態とメッセージの流れをリアルタイムに検査し、シミュレーションの間にプロトコルから逸脱するシステムの動作を発見するために使用され、
(3)ノードコントローラシミュレータは、バス機能モデルのAPIインタフェースを通して接続され、ノードコントローラNCのキャッシュコヒーレンスプロトコルをシミュレーションで実現し、プロセサの直接接続キャッシュコヒーレンスプロトコルのメッセージを使うことによってプロセサと通信し、当該キャッシュコヒーレンスプロトコルのメッセージを用いてネットワークシミュレータを通して様々なNCシミュレータの間で通信し、
(4)ネットワークシミュレータは、順序の保護のない簡単な全交換のネットワークをシミュレーションし、当該ネットワークを使うことによって拡張型キャッシュコヒーレンスプロトコルのメッセージ通信を実行し、
(5)全体検査器は、システム全体の上で作動し、バス機能モデルのAPIを通してデータ全体のキャッシュコヒーレンスを検査し、
(6)ランダム/フォーステストドライバの自動発生器は、バス機能モデルのAPIインタフェースを通して接続され、シミュレーションの途中でランダム/フォースアクセストランザクションを連続的に発生し、バス機能モデルのAPIインタフェースを通してバス機能モデルのキャッシュにアクセストランザクションを送信し、
2)拡張可能なトポロジー構造において、
ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェースNIを使って送信され、各ドメインは2個のCPUを含み、各CPUは1個のメモリに接続され、4つのクランプベースの拡張可能な基本トポロジー構造を構成し、当該基本トポロジー構造は各クランプドメインが4つのノードを有するマルチノード・マルチプロセサのトポロジー構造であり。コヒーレンス空間、非コヒーレンス空間、およびI/O空間のアドレスは分割され、システムの規模に応じて設定され、当該NCは全てのリモートアドレス空間に代理としてアクセスし、システムアドレスのマッピング法によって、各クランプのNCノードのアドレスエリアは他のNCノードのアドレスエリアと重ならず、当該NCに入力されたパケットのアドレスエリアが当該クランプ内に位置しなければ、必ずクランプ間の変換操作が必要であり、
3)ノードシミュレーションモデルにおいて、
NCは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信し、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装し、ノードシミュレータが1つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
4)プロトコルテーブルシミュレータと入口条件調査器を含むプロトコルテーブルの調査と状態変換の実行において、
プロトコルテーブルシミュレータはシステムシミュレータの中心部として働き、多階層キャッシュコヒーレンスプロトコルモデルの通常の動作に極めて重要であり、プロトコルテーブルは検証された目標であり、検証プロセス全体の間に修正可能であり、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータがセットされる必要があり、当該シミュレータは入口条件調査器と状態変換実行器の2つの部分を含み、ノードシミュレータが1つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
入口条件調査器はドメイン間のコヒーレンスを実行するための重要なモジュールであり、ノードコントローラによって受信されたコヒーレンスパケットはプロトコルテーブルに従って前記2つのモジュールによって変換され、入口条件調査器はパケットを受信して入口条件調査器の状態に従ってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信し、入口条件調査器はプロトコルテーブルの複数のエントリを記録し、イベント状態を記録するための構造はTrk(パケット記録メモリモジュール)/Rdt(リードパケットメモリモジュール)/Wrt(ライトパケットメモリモジュール)/Orb(送信パケットメモリモジュール)/Dir(ディレクトリメモリモジュール)を含み、
システム状態レジスタのコーディング方法において、各状態レジスタの値の桁は固定であり、全ての状態レジスタを対応する2進数に変換して最大の桁を左側に補完し、補完された全2進数を1列に並べて対応するコーディング値を求め、プロトコルテーブルで与えられる値が不確定であれば、コーディングの間不確定の値を全ての値に広げ、コーディング後に全ての値は同じ入口に向き、各メッセージのコンフィグレーションファイルにおいて、入口の条件値に従ってソートが実行され、各条件は一つの入口に対応し、
入口条件調査器は階層的な設計を採用し、第1レベルは受信したメッセージを調べ、当該部分は戦略設計モードを使って設計され、各メッセージに対してメッセージ処理クラスを実装し、パブリックメッセージ処理クラスを継承し、ノースブリッジシミュレータがメッセージを受信すると、ハッシュルックアップテーブルモードにおけるマッチング方法を使ってメッセージのマッチングを実行し、速やかに対応する入口を見い出し、
5)プロトコルテーブルの実行プロセスにおいて、
プロトコルテーブルにおいて実行される全ての可能な状態の変換はレジスタ値の書き込みとメッセージの送信という2つのタイプを含み、レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝え、メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、当該コードが対応するメッセージ送信関数の関数ポインタと結び付けられ、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有し、
実際のシミュレータの実行の間、入口条件調査器が対応する入口を調べるとき、コントロール権が状態変換実行器に渡され、状態変換実行器は、予めコンフィギュレーションファイルから読み取られる操作リストに従って、作業のために対応するレジスタ書き込み関数とメッセージ送信関数とをそれぞれにコールし、
6)トランザクション生成器において、
トランザクション生成器の仕事はランダムなテストであり、当該ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスであり、当該ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストし、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成され、プロトコルの検証はランダムな組み合わせを通して達成され、
7)テスト評価方法とカバレッジ率向上方法において、
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行され、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析され、目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行し、目標のカバレッジ率を達成した場合は、検証の仕事は終了し、カバレッジ率による検証方法の中心的な技術はカバレッジ率測定と報告とテストドライバの自動生成を含み、
選択されたカバレッジ率によるシミュレーション検証方法によって、シミュレーションの検証プロセスモデルが構成され、当該シミュレーションの検証プロセスモデルでは、検証の間、テストは複数のシミュレーション期間によって形成され、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、当該アクセストランザクションをシステムのシミュレータに投入し、当該システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行し、生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了し、各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進み、
シミュレーションの検証の間、明らかに各期間はカバーされる複数のプロトコルテーブルのエントリを持ち、前のシミュレーション期間でカバーされたプロトコルテーブルのエントリを除いて、新たにカバーされたプロトコルテーブルのエントリがプロトコルテーブルのカバレッジエントリに加えられ、i番目の期間に加えられるプロトコルテーブルはKiであり、i番目の期間のカバレッジ率の増加率はKi/N(Nはプロトコルテーブルの全エントリ数である。)であると設定され、t番目の期間によってカバーされるプロトコルテーブルの集合は{Ki}であり、T期間後のカバレッジ率はCart{KT=K1∪K2……KT}/Nであると設定され、
一つのシミュレーション期間を考察して、もしテストドライバが完全にランダムに生成された場合は、プロトコルテーブルの中の全てのエントリに対して任意の期間にカバーされる確率は等しく、各プロトコルテーブルエントリに対して、一つのシミュレーション期間は単一のベルヌーイ試行とみなされ、もし当該期間内のシミュレータの出力が当該プロトコルテーブルエントリをカバーすれば、試行は成功であるとみなされ、さもなければ試行は失敗であるとみなされ、
小さな確率のデッドロックイベントを解決するために設計されるプロトコルテーブルにはかなり多数のプロトコルテーブルのエントリがあり、すなわちプロトコルテーブル内の様々なエントリは異なる発生確率を持ち、シミュレーション期間の数が増加するとき、各期間に新たにカバーされるプロトコルテーブルのエントリの数は連続的に減少しなければならず、長期の稼働の間、有効なテストドライバの発生は速やかに減少し、0に向かわなければならず、
カバレッジ率によるテストドライバ自動発生器に対して、以上の分析により、純粋なランダムテストドライバ発生器を使うと、必然的に高効率の検証を行うことができないことが分かり、テストの効率を改善するために、毎回生成されるテストドライバは方向性がある必要があり、カバーされていないプロトコルテーブルのエントリをより大きな確率でシミュレータがカバーし、これはカバレッジ率による検証方法に対する不可避の必要条件であり、従って、カバレッジ率の変化に従ってカバレッジ率によるテストドライバ自動発生器によってテストドライバの発生を調節するための2つの方法が次の通り記述され、
(1)目的のプロトコルを検証することの複雑性および順序の保護のないネットワークによって生じるアクセストランザクションの実現プロセスの多様性のために、特定の入力テストドライバと出力カバレッジ目標との間の関係を分析することは不可能であり、この条件において、テストドライバ分類器を導入することが考慮され、当該分類器は入力テストドライバと出力カバレッジ率の間の確率の関係を提供することができ、当該分類器は、ランダムに生成されるテストドライバをフィルタリングし、新しいカバレッジ目標を生成する大きな確率を持っており、シミュレーション中に実行される有効なドライバとして働くテストドライバを選択するために使われ、無効なテストドライバは放棄され、
(2)プロトコルテーブルが分析され、プロトコルテーブルの中の多数のプロトコルテーブルエントリが類似のエントリを持ち、特に小さな確率のイベントのために設計された多くのプロトコルテーブルエントリを含み、従って関連する分析の方法に基づいてテストドライバの生成にオフセットの考えが導入され、各期間のシミュレーションが終了した後に、当該期間のテストドライバにオフセット措置を施し、前の期間で生じたシミュレーションの検証結果と類似するプロトコルテーブルエントリを速やかにカバーするために、オフセットされたテストドライバをもう一度稼働中のシミュレータに送る。
ここに開示される実施形態は、次の極めて有益な効果を有する。一般的に、国際的にキャッシュ・コヒーレンスに関わる複雑なコンピュータシステムの検証は検証システムの規模選択とプロトコル設計の検証の極端に高い困難さという問題を持つ。ここに開示される実施形態は、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルの変換の正確性に関するテスト検証モデルを構成する。プロセサによってサポート可能なドメイン内プロセサIDの数には制限があり、それでマルチプロセサシステムによって必要とされるノードコントローラの数は大き過ぎ、大きなノード間相互接続規模と複雑なトポロジー構造に帰着する。拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスプロトコルを構成し、ノードコントローラを使うことによってローカルプロトコルテーブルの変換メカニズムを調べ、多階層コヒーレントドメインパケットを変換することは、大規模メモリ共有マルチプロセサシステムを著しく拡大し、効果的にシステムの性能を改善し、システムのトポロジーの複雑さを削減することができる。CC−NUMAシステムの多階層キャッシュコヒーレンスプロトコルに向けて、完全な検証方法が設計され、実現される。その方法はカバレッジ率による検証戦略を使用する。そして、検証システムは、疑似ランダムベースのシミュレーション検証システムとカバレッジ率によるテストドライバ自動発生器で形成される。
ここに開示される実施形態は主に次の長所を持つ。
1.シミュレーションのモデルリング方法は、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムのプロトコル設計の検証を実現し、極めて低い資金コストと人員コストを費やして短時間で大規模コンピュータシステムのキープロトコルの検証を実現する。
2.大規模コンピュータシステムのキープロトコルの反例を迅速に発見することができ、モデリングの記録の完全性のために故障追跡を実行することができ、従ってキープロトコルの修正をガイドすることができる。
3.標準的なモデルが構成され、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムの相互接続チップの構成をガイドする。コンピュータシステムの検証カバレッジ率とそのキーチップセットを保証し、著しくプロジェクトデザインの検証コストを節約し、従って開発サイクルを保証する。
1.シミュレーションのモデルリング方法は、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムのプロトコル設計の検証を実現し、極めて低い資金コストと人員コストを費やして短時間で大規模コンピュータシステムのキープロトコルの検証を実現する。
2.大規模コンピュータシステムのキープロトコルの反例を迅速に発見することができ、モデリングの記録の完全性のために故障追跡を実行することができ、従ってキープロトコルの修正をガイドすることができる。
3.標準的なモデルが構成され、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムの相互接続チップの構成をガイドする。コンピュータシステムの検証カバレッジ率とそのキーチップセットを保証し、著しくプロジェクトデザインの検証コストを節約し、従って開発サイクルを保証する。
以下に、添付図面を参照しながらここに開示される方法を更に詳細に説明する。
1)多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造
このシステムは、SystemC言語を使うことによりフルシステムシミュレータを設計して実装し、並列シミュレーション方法を実現する。SystemC環境において疑似ランダムソフトウェアシミュレーション検証システムを構成することによってモデルを検証する。その構造を図2に示す。
このシステムは、SystemC言語を使うことによりフルシステムシミュレータを設計して実装し、並列シミュレーション方法を実現する。SystemC環境において疑似ランダムソフトウェアシミュレーション検証システムを構成することによってモデルを検証する。その構造を図2に示す。
検証システムは主に以下の部分を含む:
(1)バス機能モデル:バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のAPIインタフェースを提供して外部のモジュールとメッセージの交換を可能とし、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中のシミュレーションを行い、システムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供する。
(1)バス機能モデル:バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のAPIインタフェースを提供して外部のモジュールとメッセージの交換を可能とし、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中のシミュレーションを行い、システムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供する。
(2)Reference Model(プロトコルリファレンスモデル):リファレンスモデルは、バス機能モデルと固く統合され、シミュレーションシステムにおいてシステム状態とメッセージの流れをリアルタイムに検査し、シミュレーションの間にプロトコルから逸脱するシステムの動作を発見するために使用される。
(3)Node Controller(ノードコントローラシミュレータ):ノードコントローラは、バス機能モデルのAPIインタフェースを通して接続され、ノードコントローラ(NC)のキャッシュコヒーレンスプロトコルをシミュレーションで実現する。ノードコントローラは、プロセサの直接接続キャッシュコヒーレンスプロトコルのメッセージを使うことによってプロセサと通信し、そのキャッシュコヒーレンスプロトコルのメッセージを用いてネットワークシミュレータを通して様々なNCシミュレータの間で通信する。
(4)Network Simulator(ネットワークシミュレータ):ネットワークシミュレータは、順序の保護のない簡単な全交換のネットワークをシミュレーションし、そのネットワークを使うことによって拡張型キャッシュコヒーレンスプロトコルのメッセージ通信を実行する。
(5)Global Checker(全体検査器):全体検査器は、システム全体の上で作動し、バス機能モデルのAPIを通してデータ全体のキャッシュ・コヒーレンスを検査する。
(6)Random/Force Test Stimulation Generator(ランダム/フォーステストドライバ自動発生器):ランダム/フォーステストドライバ発生器は、バス機能モデルのAPIインタフェースを通して接続され、シミュレーションの途中でランダム/フォースアクセストランザクションを連続的に発生し、バス機能モデルのAPIインタフェースを通してバス機能モデルのキャッシュにアクセストランザクションを送信する。
2)拡張可能なトポロジー構造
このデザインにおいて、マルチノード・マルチプロセサシステムの相互接続ネットワークの基本構造を図3に示す。ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェース(NI)を通して送信される。各ドメインは2個のCPU(図3でPとして示される)を含み、各CPUは1個のメモリ(MEM)記憶空間に接続される。4つのクランプ(Clump)ベースの拡張可能な基本トポロジー構造が構成される。各クランプドメインが4つのノードを有するマルチノード・マルチプロセサのトポロジー構造を図1に示す。コヒーレンス空間、非コヒーレンス空間、およびI/O空間のアドレスは分割され、システムの規模に応じて設定される。NCは全てのリモートアドレス空間に代理としてアクセスする。システムアドレスのマッピング法によって、図4に示すように、各クランプのNCノードのアドレスエリアは他のNCノードのアドレスエリアと重ならない。従って、もしNCに入力されたパケットのアドレスエリアがこのクランプ内に位置しなければ、必ずクランプ間の変換操作が必要である。
このデザインにおいて、マルチノード・マルチプロセサシステムの相互接続ネットワークの基本構造を図3に示す。ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェース(NI)を通して送信される。各ドメインは2個のCPU(図3でPとして示される)を含み、各CPUは1個のメモリ(MEM)記憶空間に接続される。4つのクランプ(Clump)ベースの拡張可能な基本トポロジー構造が構成される。各クランプドメインが4つのノードを有するマルチノード・マルチプロセサのトポロジー構造を図1に示す。コヒーレンス空間、非コヒーレンス空間、およびI/O空間のアドレスは分割され、システムの規模に応じて設定される。NCは全てのリモートアドレス空間に代理としてアクセスする。システムアドレスのマッピング法によって、図4に示すように、各クランプのNCノードのアドレスエリアは他のNCノードのアドレスエリアと重ならない。従って、もしNCに入力されたパケットのアドレスエリアがこのクランプ内に位置しなければ、必ずクランプ間の変換操作が必要である。
3)ノードシミュレーションモデル
NCは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信する。NCは、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装する。ノードシミュレータが1つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見する。そして、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行する。対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了する。例えば、図5は、ノードシミュレーションモデルのキー構造を示す。
NCは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信する。NCは、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装する。ノードシミュレータが1つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見する。そして、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行する。対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了する。例えば、図5は、ノードシミュレーションモデルのキー構造を示す。
4)プロトコルテーブル入口調査
プロトコルエンジンは、ドメイン間のコヒーレンスを実行するための重要なモジュールである。ノードコントローラによって受信されたコヒーレンスパケットは、そのプロトコルテーブルに従って2つのモジュールによって変換される。プロトコルエンジンモジュールはパケットを受信して自身の状態によってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信する。プロトコルエンジンはプロトコルテーブルの複数のエントリを記録する。そして、イベント状態を記録するための構造は、Trk(パケット記録メモリモジュール)/Rdt(リードパケットメモリモジュール)/Wrt(ライトパケットメモリモジュール)/Orb(送信パケットメモリモジュール)/Dir(ディレクトリメモリモジュール)を含み、状態構造の記憶と調査を実現する。
プロトコルエンジンは、ドメイン間のコヒーレンスを実行するための重要なモジュールである。ノードコントローラによって受信されたコヒーレンスパケットは、そのプロトコルテーブルに従って2つのモジュールによって変換される。プロトコルエンジンモジュールはパケットを受信して自身の状態によってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信する。プロトコルエンジンはプロトコルテーブルの複数のエントリを記録する。そして、イベント状態を記録するための構造は、Trk(パケット記録メモリモジュール)/Rdt(リードパケットメモリモジュール)/Wrt(ライトパケットメモリモジュール)/Orb(送信パケットメモリモジュール)/Dir(ディレクトリメモリモジュール)を含み、状態構造の記憶と調査を実現する。
例えば、プロトコルテーブルは次のテーブルで示されるものである。
まず、システム状態レジスタのコーディング方法を定義する:各状態レジスタの値の桁は固定であり、全ての状態レジスタを対応する2進数に変換して最大の桁を左側に補完する。そして、補完された全2進数を1列に並べて対応するコーディング値を求める。プロトコルテーブルで与えられる値が不確定であれば、コーディングの間不確定の値を全ての値に広げ、コーディング後に全ての値は同じ入口に向く。各メッセージのコンフィグレーションファイルにおいて、入口の条件値に従ってソートが実行され、各条件は一つの入口に対応する。
調査器は階層的な設計を採用する。第1レベルは受信したメッセージを調べ、この部分は戦略設計モードを使って設計され、各メッセージに対してメッセージ処理クラスを実装し、パブリックメッセージ処理クラスを継承する。ノースブリッジシミュレータがメッセージを受信すると、ハッシュルックアップテーブルモードにおけるマッチング方法を使ってメッセージのマッチングを実行し、速やかに対応する入口を見い出す。
5)プロトコルテーブルの実行プロセス
プロトコルテーブルを実行するプロトコルエンジンのプロセスが図6のシミュレータ実行プロセスによって示される。各ブロックは一つのプロトコルテーブルの変換が達成されることを示す。点線内のブロックは1つの対応するプロトコルテーブルを実行する。プロトコルテーブルにおいて実行されることができる全ての可能な状態の変換は、2つのタイプ(レジスタ値の書き込みとメッセージの送信)を含む。レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝える;メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、コードが対応するメッセージ送信関数の関数ポインタと結び付けられる。従って、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有する。
プロトコルテーブルを実行するプロトコルエンジンのプロセスが図6のシミュレータ実行プロセスによって示される。各ブロックは一つのプロトコルテーブルの変換が達成されることを示す。点線内のブロックは1つの対応するプロトコルテーブルを実行する。プロトコルテーブルにおいて実行されることができる全ての可能な状態の変換は、2つのタイプ(レジスタ値の書き込みとメッセージの送信)を含む。レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝える;メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、コードが対応するメッセージ送信関数の関数ポインタと結び付けられる。従って、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有する。
実際のシミュレータの実行の間、入口条件調査器が対応する入口を調べるとき、コントロール権が状態変換実行器に渡され、状態変換実行器は、予めコンフィギュレーションファイルから読み取られる操作リストに従って、仕事のために対応するレジスタ書き込み関数とメッセージ送信関数とをそれぞれにコールする。
6)トランザクション生成器
トランザクション生成器の仕事はランダムなテストである。ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスである。ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストする。図7のトランザクション生成器の実行プロセスに示すように、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成される。プロトコルの検証はランダムな組み合わせを通して達成される。
トランザクション生成器の仕事はランダムなテストである。ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスである。ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストする。図7のトランザクション生成器の実行プロセスに示すように、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成される。プロトコルの検証はランダムな組み合わせを通して達成される。
7)テスト評価方法とカバレッジ率向上方法
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行される。そして、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析される。目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行する。目標のカバレッジ率を達成した場合は、検証の仕事は終了する。カバレッジ率による検証方法の中心的な技術はカバレッジ率測定と報告とテストドライバの自動生成を含む。
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行される。そして、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析される。目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行する。目標のカバレッジ率を達成した場合は、検証の仕事は終了する。カバレッジ率による検証方法の中心的な技術はカバレッジ率測定と報告とテストドライバの自動生成を含む。
図8は、カバレッジ率による2重ループ検証法のフローチャートである。
選択されたカバレッジ率によるシミュレーション検証方法によって、以下のようなシミュレーションの検証プロセスモデルが構成される。検証の間、テストは複数のシミュレーション期間によって形成される。そして、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、そのアクセストランザクションをシステムのシミュレータに投入する。システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行する。生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了する。各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進む。
選択されたカバレッジ率によるシミュレーション検証方法によって、以下のようなシミュレーションの検証プロセスモデルが構成される。検証の間、テストは複数のシミュレーション期間によって形成される。そして、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、そのアクセストランザクションをシステムのシミュレータに投入する。システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行する。生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了する。各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進む。
シミュレーションの検証の間、明らかに各期間はカバーされる複数のプロトコルテーブルのエントリを持ち、前のシミュレーション期間でカバーされたプロトコルテーブルのエントリを除いて、新たにカバーされたプロトコルテーブルのエントリがプロトコルテーブルのカバレッジエントリに加えられる。i番目の期間に加えられるプロトコルテーブルはKiであり、i番目の期間のカバレッジ率の増加率はKi/N(Nはプロトコルテーブルの全エントリ数である。)であると設定される。t番目の期間によってカバーされるプロトコルテーブルの集合は{Ki}であり、T期間後のカバレッジ率はCart{KT=K1∪K2……KT}/Nであると設定される。
小さな確率のデッドロックイベントを解決するために設計されるプロトコルテーブルにはかなり多数のプロトコルテーブルのエントリがある。すなわちプロトコルテーブル内の様々なエントリは異なる発生確率を持つ。シミュレーション期間の数が増加するとき、各期間に新たにカバーされるプロトコルテーブルのエントリの数は連続的に減少しなければならず、長期の稼働の間、有効なテストドライバの発生は速やかに減少し、0に向かわなければならない。
以上の分析により、純粋なランダムテストドライバ発生器を使うと、必然的に高効率の検証を行うことができないことが分かる。テストの効率を改善するために、毎回生成されるテストドライバは方向性がある必要があり、それでカバーされていないプロトコルテーブルのエントリをより大きな確率でシミュレータがカバーする。そして、これはカバレッジ率による検証方法に対する不可避の必要条件である。従って、カバレッジ率の変化に従ってテストドライバの発生を調節するための2つの方法が次の通り記述される。
1.目的のプロトコルを検証することの複雑性および順序の保護のないネットワークによって生じるアクセストランザクションの実現プロセスの多様性のために、特定の入力テストドライバと出力カバレッジ目標との間の関係を分析することは不可能である。この条件において、テストドライバ分類器を導入することが考慮され、その分類器は入力テストドライバと出力カバレッジ率の間の確率の関係を提供することができる。その分類器は、ランダムに生成されるテストドライバをフィルタリングし、新しいカバレッジ目標を生成する大きな確率を持っており、シミュレーション中に実行される有効なドライバとして働くテストドライバを選択するために使われる。そして、無効なテストドライバは放棄される。
2.プロトコルテーブルが分析される。そして、プロトコルテーブルの中の多数のプロトコルテーブルエントリが類似のエントリを持ち、特に小さな確率のイベントのために設計された多くのプロトコルテーブルエントリを含む。そこで関連する分析の方法に基づいてテストドライバの生成にオフセットの考えが導入される。各期間のシミュレーションが終了した後に、この期間のテストドライバにオフセット措置を施し、前の期間で生じたシミュレーションの検証結果と類似するプロトコルテーブルエントリを速やかにカバーするために、オフセットされたテストドライバをもう一度稼働中のシミュレータに送る。
ここで開示される実施形態は、複雑なハイエンドコンピュータシステムの設計分野に応用され、大規模ハイエンドコンピュータシステムの設計検証およびそのキー・チップセットの設計検証、さらにそのシステムOSと応用ソフトウェアの設計と開発において極めて高い応用価値がある。
ここで開示される実施形態は、863テーマクラウドデータセンターのキーサポート技術の研究において使われた。モデルを構成した後に単一トランザクションのシミュレーションタイムを測定した。シミュレータでは、あるシミュレーションタイムを設定し、シミュレーションクロックが進む間に費やした時間をテストした。同時に、図9に示すように、プロセサIntel E7540XM2×4、主メモリ4G×16、プラットフォームCentOS4.8を有するInspur浪潮NF8520サーバーにおいて、実際の実行時間を得た。実際のテスト結果は、ソフトウェアシミュレーションの方法に基づくこのテストで提供される複数階層コヒーレンスプロトコルの検証モデルは、許容できるシミュレーション処理時間の下でマルチ状態空間にあるキャッシュコヒーレンスプロトコルを検証できることを示す。
大規模CC−NUMAマルチプロセサシステムコンピュータの開発の間に、ここに開示される実施形態の内容は、プロジェクトシステムのアーキテクチャ設計、システムの相互接続設計、およびプロトコル処理のキーチップのプロトコル設計などのいろいろな面で設計の実現可能性を保証する。特にシステムのマルチキーチップセット設計のためにキーとなり、信頼できる比較モデルを提供し、より小さい設計規模とより低い投資コストを持つマルチパスコンピュータシステム設計の成功を保証し、極めて重要な開発と応用価値を備える。
海外市場の技術の状況分析および応用の必要性
システム規模の速やかな拡張、ネットワーク遅延の不確定性およびメモリコヒーレンスモデルの多様性のような様々な要因がキャッシュコヒーレンスプロトコルを極めて複雑化させ、プロトコルの状態空間は指数関数的に増加し、または爆発さえする。産業界ではキャッシュコヒーレンスプロトコルの検証方法について、主に形式的検証とソフトウェアシミュレーションによる検証のような多くの議論がある。固有の状態空間の爆発の問題のために、現在、完全に形式的検証は複雑なマルチレベルプロトコルの検証に適用することはできない。ソフトウェアシミュレーションによる検証は人為的に制約モデルを書き、制約された疑似ランダムなテストを実行して、改善された効率で特定の目標を検証することができ、実用的で実現可能な方法である。実際のコンピュータシステムの構造をシミュレーションして検証評価システムと検証評価プラットフォームを実現すれば、相対的に短い時間と極めて低い資金コストと人員コストを費やして大規模コンピュータシステムのキープロトコルを検証することができる。モデリングの間に、処理メカニズムの全状態を記録でき、大規模コンピュータシステムのキープロトコルの反例を発見したとき、故障を容易に追跡することができる。モデリングは標準のモデルを実装し、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムの相互接続チップの構成をガイドする。モデリングの規模は自由で制御可能であり、技術の条件は成熟している。実装の間、製造・開発コストを容易に制御でき、過度に長い開発周期を避けることができる。
システム規模の速やかな拡張、ネットワーク遅延の不確定性およびメモリコヒーレンスモデルの多様性のような様々な要因がキャッシュコヒーレンスプロトコルを極めて複雑化させ、プロトコルの状態空間は指数関数的に増加し、または爆発さえする。産業界ではキャッシュコヒーレンスプロトコルの検証方法について、主に形式的検証とソフトウェアシミュレーションによる検証のような多くの議論がある。固有の状態空間の爆発の問題のために、現在、完全に形式的検証は複雑なマルチレベルプロトコルの検証に適用することはできない。ソフトウェアシミュレーションによる検証は人為的に制約モデルを書き、制約された疑似ランダムなテストを実行して、改善された効率で特定の目標を検証することができ、実用的で実現可能な方法である。実際のコンピュータシステムの構造をシミュレーションして検証評価システムと検証評価プラットフォームを実現すれば、相対的に短い時間と極めて低い資金コストと人員コストを費やして大規模コンピュータシステムのキープロトコルを検証することができる。モデリングの間に、処理メカニズムの全状態を記録でき、大規模コンピュータシステムのキープロトコルの反例を発見したとき、故障を容易に追跡することができる。モデリングは標準のモデルを実装し、大規模な拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスコンピュータシステムの相互接続チップの構成をガイドする。モデリングの規模は自由で制御可能であり、技術の条件は成熟している。実装の間、製造・開発コストを容易に制御でき、過度に長い開発周期を避けることができる。
利益(経済的利益と社会的利益)
極めて複雑な構造を持つハイエンドのフォールトトレラントなコンピュータシステムに関して、ここに開示される実施形態の設計のキー技術は、システム構造の設計、キーチップセットの設計などを含む。小規模のプロトタイプ検証システムが小規模のハードウェアによって実現され、システム設計のキー技術がプログラマブルFPGAチップによって実現され、開発の周期を短縮したり、設計検証のコストを削減したり、プロジェクト開発の成功を保証する。例えば、複雑なプロトコルとロジックを持ったキーチップセットの設計の間、そのチップをテープアウトする費用は一回に千万元に迫り、テープアウトの期間も数ヶ月必要である。そして、高い検証カバレッジ率を持つプロトタイプ検証システムは、チップのテープアウトの成功を保証し、そのプロジェクトの時間のオーバヘッドとコストのオーバヘッドを大いに省く。更にまた、その検証はシステム構造の設計、放熱設計、パワー消費分へのレファレンスを与え、プロジェクトの開発リスクを著しく低下させる。従って、ここに開示される実施形態は高い経済的利益と社会的利益を有する。
極めて複雑な構造を持つハイエンドのフォールトトレラントなコンピュータシステムに関して、ここに開示される実施形態の設計のキー技術は、システム構造の設計、キーチップセットの設計などを含む。小規模のプロトタイプ検証システムが小規模のハードウェアによって実現され、システム設計のキー技術がプログラマブルFPGAチップによって実現され、開発の周期を短縮したり、設計検証のコストを削減したり、プロジェクト開発の成功を保証する。例えば、複雑なプロトコルとロジックを持ったキーチップセットの設計の間、そのチップをテープアウトする費用は一回に千万元に迫り、テープアウトの期間も数ヶ月必要である。そして、高い検証カバレッジ率を持つプロトタイプ検証システムは、チップのテープアウトの成功を保証し、そのプロジェクトの時間のオーバヘッドとコストのオーバヘッドを大いに省く。更にまた、その検証はシステム構造の設計、放熱設計、パワー消費分へのレファレンスを与え、プロジェクトの開発リスクを著しく低下させる。従って、ここに開示される実施形態は高い経済的利益と社会的利益を有する。
本発明では、本発明の明細書に開示された技術的特徴を除いて、他の技術は当業者によく知られている。
Claims (1)
- 拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのシミュレーション検証およびテスト方法であって、
カバレッジ率による検証戦略を使うことによって、疑似ランダムベースのシミュレーション検証システムおよびカバレッジ率によるテストドライバ自動発生器で形成されるシミュレーション検証システムを構成するために、多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造と、拡張可能なトポロジー構造と、ノードシミュレーションモデルと、プロトコルテーブル調査および状態変換実行方法と、プロトコルテーブルの実行プロセスと、トランザクション生成器と、テスト評価方法と、カバレッジ率向上方法とを備え、
コヒーレンス空間を拡張して大規模CC−NUMAマルチプロセサシステムを実現するために、ノードコントローラNCが必要であり、当該ノードコントローラが全体のキャッシュコヒーレンスの維持とシステム規模の拡大の2つの機能を持ち、まず、各ノードコントローラは1個から4個のプロセサに接続されてノードと第1レベルのキャシュコヒーレンシドメインを形成し、ドメイン内のコヒーレンスが当該プロセサと当該ノードコントローラによって共同で維持され、次に、ノードコントローラは直接に相互接続され、またはノードルータを通して接続されて大規模CC−NUMAシステムを形成し、ノード間における第2レベルのキャシュコヒーレンスがノードコントローラによって維持され、当該方法で構成される大規模CC−NUMAシステムは拡張されてプロセサ直接接続キャッシュコヒーレンスプロトコルに基づく多階層プロトコルを確立し、全体のコヒーレンスを維持し、拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのCC−NUMAシステムプロトコルシミュレーションモデルを構成するために、多数のコヒーレンシドメインの間でドメイン内およびドメイン間の送信の精度と安定性を保証するようにシステムのキーノードにおいてプロトコルテーブル調査および状態変換実行メカニズムが構成されることが必要であり、更に信頼できるプロトコル入口変換カバレッジ率評価による検証方法が提供され、最適化されたトランザクション生成器のプッシュモデルをロードすることによってトランザクションを処理し、操作の終了後にカバレッジ率の指標を取得し、ランダムトランザクション促進メカニズムに比べて検証効率が改善され、1つのマルチプロセサ検証システムモデルを構成して関連のあるシミュレーション検証を実行することを通して当該方法の妥当性と有効性が更に確認され、
1)多階層キャッシュコヒーレンスプロトコルモデルのシミュレーションテスト構造において、
拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインモデルのシステムシミュレータと当該システムシミュレータと並列に実行されるモデル検証システムとがSystemC言語を使って設計され、当該モデル検証システムが疑似ランダムトランザクション生成器を構成することによってテストされ、当該モデル検証システムの正確さが全体検査器を使って判断され、当該モデル検証システムは、バス機能モデルと、プロトコルリファレンスモデルと、ノードコントローラシミュレータと、ネットワークシミュレータと、全体検査器と、プロトコル入口調査メカニズムとを含み、
(1)バス機能モデルは、クロック精度の機能モデルであり、キャッシュ、プロセサの記憶装置制御、およびプロセサ内部とプロセサ間の相互接続ネットワークをシミュレーションし、アクセス動作に対してトランザクションレベルのシミュレーションをサポートし、カスタマイズシステムのトポロジー構造をサポートし、外部のAPIインタフェースを提供して外部のモジュールとメッセージの交換を提供し、プロセサの直接接続キャッシュコヒーレンスプロトコルに従って作動中のシミュレーションを行い、システムにおける様々なアクセストランザクション、キャッシュ、記憶装置制御のリアルタイム動作と状態を提供し、
(2)プロトコルリファレンスモデルは、バス機能モデルと固く統合され、シミュレーションシステムにおいてシステム状態とメッセージの流れをリアルタイムに検査し、シミュレーションの間にプロトコルから逸脱するシステムの動作を発見するために使用され、
(3)ノードコントローラシミュレータは、バス機能モデルのAPIインタフェースを通して接続され、ノードコントローラNCのキャッシュコヒーレンスプロトコルをシミュレーションで実現し、プロセサの直接接続キャッシュコヒーレンスプロトコルのメッセージを使うことによってプロセサと通信し、当該キャッシュコヒーレンスプロトコルのメッセージを用いてネットワークシミュレータを通して様々なNCシミュレータの間で通信し、
(4)ネットワークシミュレータは、順序の保護のない簡単な全交換のネットワークをシミュレーションし、当該ネットワークを使うことによって拡張型キャッシュコヒーレンスプロトコルのメッセージ通信を実行し、
(5)全体検査器は、システム全体の上で作動し、バス機能モデルのAPIを通してデータ全体のキャッシュ・コヒーレンスを検査し、
(6)ランダム/フォーステストドライバの自動発生器は、バス機能モデルのAPIインタフェースを通して接続され、シミュレーションの途中でランダム/フォースアクセストランザクションを連続的に発生し、バス機能モデルのAPIインタフェースを通してバス機能モデルのキャッシュにアクセストランザクションを送信し、
2)拡張可能なトポロジー構造において、
ノード間の通信はドメイン間の相互接続ネットワークを通して実行され、パケットはネットワークインタフェースNIを使って送信され、各ドメインは2個のCPUを含み、各CPUは1個のメモリに接続され、4つのクランプベースの拡張可能な基本トポロジー構造を構成し、当該基本トポロジー構造は各クランプドメインが4つのノードを有するマルチノード・マルチプロセサのトポロジー構造であり。コヒーレンス空間、非コヒーレンス空間、およびI/O空間のアドレスは分割され、システムの規模に応じて設定され、当該NCは全てのリモートアドレス空間に代理としてアクセスし、システムアドレスのマッピング法によって、各クランプのNCノードのアドレスエリアは他のNCノードのアドレスエリアと重ならず、当該NCに入力されたパケットのアドレスエリアが当該クランプ内に位置しなければ、必ずクランプ間の変換操作が必要であり、
3)ノードシミュレーションモデルにおいて、
NCは、クランプ内パケットとクランプ間パケットを受信して処理し、対応する記録と処理を実行し、クランプの内部でおよびクランプ間でパケットを送信し、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータを実装し、ノードシミュレータが1つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
4)プロトコルテーブルシミュレータと入口条件調査器を含むプロトコルテーブルの調査と状態変換の実行において、
プロトコルテーブルシミュレータはシステムシミュレータの中心部として働き、多階層キャッシュコヒーレンスプロトコルモデルの通常の動作に極めて重要であり、プロトコルテーブルは検証された目標であり、検証プロセス全体の間に修正可能であり、コンフィギュレーションファイルからプロトコルテーブルの具体的な操作を予め読み取るためのプロトコルテーブルシミュレータがセットされる必要があり、当該シミュレータは入口条件調査器と状態変換実行器の2つの部分を含み、ノードシミュレータが1つのメッセージを受信するとき、プロトコルテーブルシミュレータが活性化され、まず入口条件調査器が受信したメッセージと現在のシステム状態に従って探索し、入口を発見し、手続きは対応する状態変換実行器に進み、対応する状態変換コードを実行し、対応する入口が見つからない場合はシミュレーションのエラーを報告してシミュレーションを終了し、
入口条件調査器はドメイン間のコヒーレンスを実行するための重要なモジュールであり、ノードコントローラによって受信されたコヒーレンスパケットはプロトコルテーブルに従って前記2つのモジュールによって変換され、入口条件調査器はパケットを受信して入口条件調査器の状態に従ってプロトコルテーブルを調べ、ローカル状態をアップデートし、新しいパケットを送信し、入口条件調査器はプロトコルテーブルの複数のエントリを記録し、イベント状態を記録するための構造はTrk/Rdt/Wrt/Orb/Dirを含み、状態構造の記憶と調査を実現し、
システム状態レジスタのコーディング方法において、各状態レジスタの値の桁は固定であり、全ての状態レジスタを対応する2進数に変換して最大の桁を左側に補完し、補完された全2進数を1列に並べて対応するコーディング値を求め、プロトコルテーブルで与えられる値が不確定であれば、コーディングの間不確定の値を全ての値に広げ、コーディング後に全ての値は同じ入口に向き、各メッセージのコンフィグレーションファイルにおいて、入口の条件値に従ってソートが実行され、各条件は一つの入口に対応し、
入口条件調査器は階層的な設計を採用し、第1レベルは受信したメッセージを調べ、当該部分は戦略設計モードを使って設計され、各メッセージに対してメッセージ処理クラスを実装し、パブリックメッセージ処理クラスを継承し、ノースブリッジシミュレータがメッセージを受信すると、ハッシュルックアップテーブルモードにおけるマッチング方法を使ってメッセージのマッチングを実行し、速やかに対応する入口を見い出し、
5)プロトコルテーブルの実行プロセスにおいて、
プロトコルテーブルにおいて実行される全ての可能な状態の変換はレジスタ値の書き込みとメッセージの送信という2つのタイプを含み、レジスタの書き込みはユニバーサル書き込み関数を使ってレジスタの値をパラメータとして伝え、メッセージの送信に対しては、異なる送信メッセージによって異なるメッセージ送信関数が作成され、様々な送信予定のメッセージ関数がコード化され、当該コードが対応するメッセージ送信関数の関数ポインタと結び付けられ、各メッセージの操作コンフィグレーションファイルにおいて、各入口は対応するレジスタ値と、コールされる必要があるメッセージ送信関数のコードとを有し、
実際のシミュレータの実行の間、入口条件調査器が対応する入口を調べるとき、コントロール権が状態変換実行器に渡され、状態変換実行器は、予めコンフィギュレーションファイルから読み取られる操作リストに従って、仕事のために対応するレジスタ書き込み関数とメッセージ送信関数とをそれぞれにコールし、
6)トランザクション生成器において、
トランザクション生成器の仕事はランダムなテストであり、当該ランダムなテストはテストカバレッジの網羅性を確保するために有効な方法とプロセスであり、当該ランダムなテストは主にプロトコルの全ての重要なエントリに関する再テストを実行し、また、現在のテストサンプルによってカバーされない部分をテストし、各部分は複数の選択可能な内容を持ち、大量のランダムな部分を経て様々なプロトコルのエントリが生成され、プロトコルの検証はランダムな組み合わせを通して達成され、
7)テスト評価方法とカバレッジ率向上方法において、
モデリングテストの間にシミュレーション検証が引き続き行われ、もしデザインのリファレンスに違反するシミュレーションでの検証結果が出ればシミュレーションでの実装を変更し、再びシミュレーションが実行され、もしデザインのリファレンスに違反するシミュレーションが出なければ、目標のカバレッジ率を達成するかどうかを決定するために分析され、目標のカバレッジ率を達成しない場合は、テストドライバを修正して再びシミュレーションを実行し、目標のカバレッジ率を達成した場合は、検証の仕事は終了し、カバレッジ率による検証方法の中心的な技術はカバー率測定と報告とテストドライバの自動生成を含み、
選択されたカバレッジ率によるシミュレーション検証方法によって、シミュレーションの検証プロセスモデルが構成され、当該シミュレーションの検証プロセスモデルでは、検証の間、テストは複数のシミュレーション期間によって形成され、各期間が始まるとき、テストドライバの自動発生器は複数のアクセストランザクションを生成し、当該アクセストランザクションをシステムのシミュレータに投入し、当該システムのシミュレータはシミュレーションでの作動を通して生成されたアクセストランザクションを実行し、生成されたアクセストランザクションが一度全て実行されると、システムはシミュレーション期間を終了し、各シミュレーション期間が終了した後、システムはプロトコルテーブルのエントリカバレッジ率状況に関して統計を取り、シミュレータをリセットして次のシミュレーション期間に進み、
シミュレーションの検証の間、明らかに各期間はカバーされる複数のプロトコルテーブルのエントリを持ち、前のシミュレーション期間でカバーされたプロトコルテーブルのエントリを除いて、新たにカバーされたプロトコルテーブルのエントリがプロトコルテーブルのカバレッジエントリに加えられ、i番目の期間に加えられるプロトコルテーブルはKiであり、i番目の期間のカバレッジ率の増加率はKi/N(Nはプロトコルテーブルの全エントリ数である。)であると設定され、t番目の期間によってカバーされるプロトコルテーブルの集合は{Ki}であり、T期間後のカバレッジ率はCart{KT=K1∪K2……KT}/Nであると設定され、
一つのシミュレーション期間を考察して、もしテストドライバが完全にランダムに生成された場合は、プロトコルテーブルの中の全てのエントリに対して任意の期間にカバーされる確率は等しく、各プロトコルテーブルエントリに対して、一つのシミュレーション期間は単一のベルヌーイ試行とみなされ、もし当該期間内のシミュレータの出力が当該プロトコルテーブルエントリをカバーすれば、試行は成功であるとみなされ、さもなければ試行は失敗であるとみなされ、
小さな確率のデッドロックイベントを解決するために設計されるプロトコルテーブルにはかなり多数のプロトコルテーブルのエントリがあり、すなわちプロトコルテーブル内の様々なエントリは異なる発生確率を持ち、シミュレーション期間の数が増加するとき、各期間に新たにカバーされるプロトコルテーブルのエントリの数は連続的に減少しなければならず、長期の稼働の間、有効なテストドライバの発生は速やかに減少し、0に向かわなければならず、
カバレッジ率によるテストドライバ自動発生器に対して、以上の分析により、純粋なランダムテストドライバ発生器を使うと、必然的に高効率の検証を行うことができないことが分かり、テストの効率を改善するために、毎回生成されるテストドライバは方向性がある必要があり、カバーされていないプロトコルテーブルのエントリをより大きな確率でシミュレータがカバーし、これはカバレッジ率による検証方法に対する不可避の必要条件であり、従って、カバレッジ率の変化に従ってカバレッジ率によるテストドライバ自動発生器によってテストドライバの発生を調節するための2つの方法が次の通り記述され、
(1)目的のプロトコルを検証することの複雑性および順序の保護のないネットワークによって生じるアクセストランザクションの実現プロセスの多様性のために、特定の入力テストドライバと出力カバレッジ目標との間の関係を分析することは不可能であり、この条件において、テストドライバ分類器を導入することが考慮され、当該分類器は入力テストドライバと出力カバレッジ率の間の確率の関係を提供することができ、当該分類器は、ランダムに生成されるテストドライバをフィルタリングし、新しいカバレッジ目標を生成する大きな確率を持っており、シミュレーション中に実行される有効なドライバとして働くテストドライバを選択するために使われ、無効なテストドライバは放棄され、
(2)プロトコルテーブルが分析され、プロトコルテーブルの中の多数のプロトコルテーブルエントリが類似のエントリを持ち、特に小さな確率のイベントのために設計された多くのプロトコルテーブルエントリを含み、従って関連する分析の方法に基づいてテストドライバの生成にオフセットの考えが導入され、各期間のシミュレーションが終了した後に、当該期間のテストドライバにオフセット措置を施し、前の期間で生じたシミュレーションの検証結果と類似するプロトコルテーブルエントリを速やかにカバーするために、オフセットされたテストドライバをもう一度稼働中のシミュレータに送る、
ことを特徴とする拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのシミュレーション検証およびテスト方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310018123.3 | 2013-01-18 | ||
CN201310018123.3A CN103150264B (zh) | 2013-01-18 | 2013-01-18 | 一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法 |
PCT/CN2013/085028 WO2014110922A1 (zh) | 2013-01-18 | 2013-10-11 | 一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015531929A true JP2015531929A (ja) | 2015-11-05 |
Family
ID=48548357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015527784A Pending JP2015531929A (ja) | 2013-01-18 | 2013-10-11 | 拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのシミュレーション検証およびテスト方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20150095008A1 (ja) |
EP (1) | EP2869194A4 (ja) |
JP (1) | JP2015531929A (ja) |
CN (1) | CN103150264B (ja) |
WO (1) | WO2014110922A1 (ja) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150264B (zh) * | 2013-01-18 | 2014-09-17 | 浪潮电子信息产业股份有限公司 | 一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法 |
CN103488606B (zh) * | 2013-09-10 | 2016-08-17 | 华为技术有限公司 | 基于节点控制器的请求响应方法和装置 |
US9734063B2 (en) * | 2014-02-27 | 2017-08-15 | École Polytechnique Fédérale De Lausanne (Epfl) | Scale-out non-uniform memory access |
CN103914333B (zh) * | 2014-04-14 | 2017-12-01 | 中国科学技术大学苏州研究院 | 基于片上网络互连的多核存储系统仿真器 |
GB2532232A (en) | 2014-11-12 | 2016-05-18 | Ibm | Verifying a graph-based coherency verification tool |
CN104572514A (zh) * | 2015-01-20 | 2015-04-29 | 浪潮电子信息产业股份有限公司 | 一种全局共享i/o服务器的设计方法 |
US10114355B2 (en) * | 2015-01-20 | 2018-10-30 | Ultra Electronics | Techniques for facilitating communication between networked nodes |
US9678873B2 (en) | 2015-02-13 | 2017-06-13 | International Business Machines Corporation | Early shared resource release in symmetric multiprocessing computer systems |
US9799402B2 (en) | 2015-06-08 | 2017-10-24 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and program method thereof |
US9990291B2 (en) * | 2015-09-24 | 2018-06-05 | Qualcomm Incorporated | Avoiding deadlocks in processor-based systems employing retry and in-order-response non-retry bus coherency protocols |
US9942631B2 (en) * | 2015-09-25 | 2018-04-10 | Intel Corporation | Out-of-band platform tuning and configuration |
CN106603355B (zh) | 2015-10-15 | 2019-10-18 | 华为技术有限公司 | 一种计算装置、节点设备和服务器 |
CN105446840B (zh) * | 2015-11-24 | 2019-02-12 | 无锡江南计算技术研究所 | 一种Cache一致性极限测试方法 |
CN105573881B (zh) * | 2015-12-14 | 2018-03-27 | 浪潮(北京)电子信息产业有限公司 | 基于bfm快速验证大型互连芯片地址的方法及系统 |
AU2015412144B2 (en) * | 2015-12-29 | 2018-11-15 | Xfusion Digital Technologies Co., Ltd. | CPU and multi-CPU system management method |
CN105740168B (zh) * | 2016-01-23 | 2018-07-13 | 中国人民解放军国防科学技术大学 | 一种容错目录高速缓存控制器 |
US9928127B2 (en) | 2016-01-29 | 2018-03-27 | International Business Machines Corporation | Testing a data coherency algorithm |
CN105933286B (zh) * | 2016-04-05 | 2019-08-02 | 浪潮电子信息产业股份有限公司 | 一种验证协议的方法及装置 |
CN105959176B (zh) * | 2016-04-25 | 2019-05-28 | 浪潮(北京)电子信息产业有限公司 | 基于Gem5模拟器的一致性协议测试方法和系统 |
US9946674B2 (en) * | 2016-04-28 | 2018-04-17 | Infineon Technologies Ag | Scalable multi-core system-on-chip architecture on multiple dice for high end microcontroller |
US10205636B1 (en) * | 2016-10-05 | 2019-02-12 | Cisco Technology, Inc. | Two-stage network simulation |
CN106649041A (zh) * | 2016-12-27 | 2017-05-10 | 郑州云海信息技术有限公司 | 自动测试存储缓存模式的装置及方法 |
CN107222363B (zh) * | 2017-05-26 | 2021-01-08 | 苏州浪潮智能科技有限公司 | 一种存储协议一致性测试方法及系统 |
CN109240859B (zh) * | 2017-07-11 | 2021-11-19 | 展讯通信(上海)有限公司 | 处理器验证系统及方法 |
CN107368434B (zh) * | 2017-07-21 | 2020-08-04 | 苏州浪潮智能科技有限公司 | 一种验证Cache一致性协议的装置及方法 |
CN109309615B (zh) * | 2017-07-27 | 2020-07-07 | 华为技术有限公司 | 传输数据的方法和设备 |
JP2019053617A (ja) * | 2017-09-15 | 2019-04-04 | 株式会社東芝 | システムlsiおよびシステムlsiの故障検出方法 |
CN108228410B (zh) * | 2018-01-24 | 2020-09-25 | 北京航空航天大学 | 一种基于Event-B的多核并发系统验证方法 |
CN108897724B (zh) * | 2018-07-03 | 2022-11-15 | 天津芯海创科技有限公司 | 功能完成进度确定方法及装置 |
CN111381979B (zh) * | 2018-12-29 | 2023-05-23 | 杭州海康威视数字技术股份有限公司 | 神经网络的开发验证方法、装置、系统及存储介质 |
CN111628666B (zh) * | 2019-02-28 | 2021-04-13 | 台达电子企业管理(上海)有限公司 | 多电平变换器的控制方法及多电平变换器 |
CN110210053A (zh) * | 2019-04-24 | 2019-09-06 | 天津大学 | 一种基于fpga的实时数字解算器的通信接口设计方法 |
US10970213B2 (en) * | 2019-04-30 | 2021-04-06 | Hewlett Packard Enterprise Development Lp | Selective disabling of hardware-based cache coherency and enforcement of software-based cache coherency |
WO2020256610A1 (en) * | 2019-06-20 | 2020-12-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Network entities and methods performed therein for handling cache coherency |
CN110347617A (zh) * | 2019-07-03 | 2019-10-18 | 南京大学 | 一种多核SoC中DMA模块的功能验证方法 |
CN110598309B (zh) * | 2019-09-09 | 2022-11-04 | 电子科技大学 | 一种基于强化学习的硬件设计验证系统及方法 |
CN110727465B (zh) * | 2019-09-11 | 2021-08-10 | 无锡江南计算技术研究所 | 一种基于配置查找表的协议可重构一致性实现方法 |
CN111221629B (zh) * | 2020-01-09 | 2023-09-05 | 上海沄界信息科技有限公司 | 计算资源使用量量化方法及装置 |
CN111639470B (zh) * | 2020-05-28 | 2022-06-17 | 山东云海国创云计算装备产业创新中心有限公司 | 一种处理器协同芯片的仿真测试方法、系统及相关组件 |
CN111611176B (zh) * | 2020-06-28 | 2023-05-30 | 中国人民解放军国防科技大学 | 一种通用接口覆盖率模型验证环境自动生成方法、系统及介质 |
CN111611120B (zh) * | 2020-06-28 | 2023-05-30 | 中国人民解放军国防科技大学 | 一种片上多核处理器Cache一致性协议验证方法、系统及介质 |
CN111881520B (zh) * | 2020-07-31 | 2022-01-11 | 广州文远知行科技有限公司 | 一种自动驾驶测试的异常检测方法、装置、计算机设备及存储介质 |
CN112100817B (zh) * | 2020-08-20 | 2022-07-12 | 上海机电工程研究所 | 基于分布式仿真系统的异构io数据智能转换方法及系统 |
CN112235812A (zh) * | 2020-10-12 | 2021-01-15 | 江苏亨鑫众联通信技术有限公司 | 一种移动专网设备及其应用方法、系统 |
CN112199291A (zh) * | 2020-10-16 | 2021-01-08 | 天津飞腾信息技术有限公司 | 一种多核处理器Cache一致性模拟验证方法及验证装置 |
CN114584630B (zh) * | 2020-11-18 | 2023-10-27 | 中移物联网有限公司 | 一种基于现场总线协议的通信方法及设备 |
CN112329273B (zh) * | 2020-12-17 | 2023-10-24 | 芯天下技术股份有限公司 | 一种提升芯片验证效率的方法、装置、存储介质和终端 |
CN113012412B (zh) * | 2021-03-03 | 2022-10-18 | 福建鸿鹄环境发展有限公司 | 基于仪表和视频数据动态采集统计分析的智慧数据采集方法及系统 |
CN112988485B (zh) * | 2021-03-26 | 2024-01-26 | 国网冀北电力有限公司信息通信分公司 | 电力物联网设备模拟测试方法及装置 |
CN113157598A (zh) * | 2021-05-26 | 2021-07-23 | 中国银行股份有限公司 | 接口测试方法和模拟挡板 |
CN113608879B (zh) * | 2021-08-27 | 2024-02-09 | 北京易智联科技有限公司 | 一种可重构的模拟器或测试设备架构设计方法 |
CN114189468B (zh) * | 2021-11-02 | 2024-04-12 | 云端领航(北京)通信科技股份有限公司 | 一种基于标识分簇的多标识网络体系路由方法 |
CN115051984B (zh) * | 2021-11-22 | 2023-03-28 | 厦门大学 | 一种分布式数据平面验证方法 |
CN114500324B (zh) * | 2022-01-24 | 2023-08-18 | 国家工业信息安全发展研究中心 | 一种面向工业互联网仿真测试床的集成接入系统 |
CN114428749B (zh) * | 2022-04-07 | 2022-06-10 | 沐曦科技(北京)有限公司 | 用于验证cache的检测器 |
CN114580344B (zh) * | 2022-04-24 | 2022-08-16 | 飞腾信息技术有限公司 | 测试激励生成方法、验证方法、验证系统及相关设备 |
CN114896931B (zh) * | 2022-05-12 | 2023-09-01 | 北京联盛德微电子有限责任公司 | 一种基于握手机制的蓝牙收发通路的验证方法及系统 |
CN114722643B (zh) * | 2022-06-09 | 2022-09-16 | 浙江大学 | 基于复杂系统仿真模型的虚实一致性验证方法 |
CN114996077B (zh) * | 2022-08-08 | 2022-11-01 | 济南新语软件科技有限公司 | 一种多核并行仿真方法及实现多核并行仿真的平台架构 |
CN115051928B (zh) * | 2022-08-11 | 2022-11-11 | 国网江苏省电力有限公司信息通信分公司 | 一种多主体一体化研发仿真平台构建方法 |
CN115130402B (zh) * | 2022-08-30 | 2022-11-11 | 北京开源芯片研究院 | 一种缓存验证方法、系统、电子设备及可读存储介质 |
CN115190191B (zh) * | 2022-09-13 | 2022-11-29 | 中电运行(北京)信息技术有限公司 | 基于协议解析的电网工业控制系统及控制方法 |
CN115333872B (zh) * | 2022-10-17 | 2023-01-20 | 北京六方云信息技术有限公司 | 安全网关解析功能验证方法、装置、终端设备及存储介质 |
CN115618801B (zh) * | 2022-12-01 | 2023-04-07 | 北京智芯微电子科技有限公司 | 缓存一致性检验方法、装置及电子设备 |
CN116049035B (zh) * | 2022-12-27 | 2024-02-09 | 合芯科技有限公司 | 一种缓存一致性的验证和调试的实现方法 |
CN116629010B (zh) * | 2023-06-02 | 2024-01-23 | 江苏科技大学 | 一种基于随机过程的退化模型确认及其试验设计方法 |
CN117195790B (zh) * | 2023-11-07 | 2024-01-26 | 成都市楠菲微电子有限公司 | 多级表项验证方法、系统及计算机设备及介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6892319B2 (en) * | 2000-09-08 | 2005-05-10 | Hewlett-Packard Development Company, L.P. | Method for verifying abstract memory models of shared memory multiprocessors |
US6785773B2 (en) * | 2001-03-29 | 2004-08-31 | International Business Machines Corporation | Verification of global coherence in a multi-node NUMA system |
US20070150663A1 (en) * | 2005-12-27 | 2007-06-28 | Abraham Mendelson | Device, system and method of multi-state cache coherence scheme |
US20090171647A1 (en) * | 2007-12-27 | 2009-07-02 | Phanindra Mannava | Interconnect architectural state coverage measurement methodology |
CN101216815B (zh) * | 2008-01-07 | 2010-11-03 | 浪潮电子信息产业股份有限公司 | 一种双翼可扩展多处理器紧耦合共享存储器体系结构 |
US20110295587A1 (en) * | 2010-06-01 | 2011-12-01 | Eeckhout Lieven | Methods and systems for simulating a processor |
CN102122259A (zh) * | 2011-03-03 | 2011-07-13 | 浪潮(北京)电子信息产业有限公司 | 一种高端容错计算机原型验证系统及验证方法 |
CN102681937B (zh) * | 2012-05-15 | 2016-05-18 | 浪潮电子信息产业股份有限公司 | 一种缓存一致性协议正确性验证方法 |
CN102880537A (zh) * | 2012-09-07 | 2013-01-16 | 浪潮电子信息产业股份有限公司 | 一种Cache一致性协议软件模拟验证方法 |
CN103150264B (zh) * | 2013-01-18 | 2014-09-17 | 浪潮电子信息产业股份有限公司 | 一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法 |
-
2013
- 2013-01-18 CN CN201310018123.3A patent/CN103150264B/zh active Active
- 2013-10-11 EP EP13872015.6A patent/EP2869194A4/en not_active Withdrawn
- 2013-10-11 WO PCT/CN2013/085028 patent/WO2014110922A1/zh active Application Filing
- 2013-10-11 JP JP2015527784A patent/JP2015531929A/ja active Pending
-
2014
- 2014-11-06 US US14/534,906 patent/US20150095008A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20150095008A1 (en) | 2015-04-02 |
CN103150264A (zh) | 2013-06-12 |
CN103150264B (zh) | 2014-09-17 |
EP2869194A1 (en) | 2015-05-06 |
EP2869194A4 (en) | 2016-08-03 |
WO2014110922A1 (zh) | 2014-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2015531929A (ja) | 拡張型キャッシュコヒーレンスプロトコルに基づく多階層コヒーレンスドメインのシミュレーション検証およびテスト方法 | |
Zhang et al. | Fractal coherence: Scalably verifiable cache coherence | |
EP2485149A1 (en) | Symbolic execution and test generation for programs to be run on a graphic processor | |
US9501408B2 (en) | Efficient validation of coherency between processor cores and accelerators in computer systems | |
CN115130402B (zh) | 一种缓存验证方法、系统、电子设备及可读存储介质 | |
CN106250348B (zh) | 一种基于gpu访存特性的异构多核架构缓存管理方法 | |
CN110674055A (zh) | 一种用于部件级和部件联合级的缓存一致性模拟验证方法 | |
US9679098B2 (en) | Protocol probes | |
DeOrio et al. | Post-silicon verification for cache coherence | |
JP5628411B2 (ja) | 半導体装置 | |
CN110727611B (zh) | 一种带状态监测的可配置一致性验证系统 | |
Shacham et al. | Verification of chip multiprocessor memory systems using a relaxed scoreboard | |
Ta et al. | Autonomous data-race-free GPU testing | |
Grevtsev et al. | Multicore processor models verification in the early stages | |
CN116167310A (zh) | 一种验证多核心处理器缓存一致性的方法及装置 | |
Kota et al. | Horus: Large-scale symmetric multiprocessing for opteron systems | |
Hassan et al. | MCXplore: An automated framework for validating memory controller designs | |
Qureshi et al. | Genome sequence alignment-design space exploration for optimal performance and energy architectures | |
Genius | Measuring memory access latency for software objects in a NUMA system-on-chip architecture | |
Manian et al. | OMB-UM: Design, implementation, and evaluation of CUDA unified memory aware MPI benchmarks | |
Tasiran et al. | Using formal specifications to monitor and guide simulation: Verifying the cache coherence engine of the Alpha 21364 microprocessor | |
Heirman et al. | Synthetic traffic generation as a tool for dynamic interconnect evaluation | |
Banaiyanmofrad et al. | NoC-based fault-tolerant cache design in chip multiprocessors | |
Mukherjee et al. | Verification of an industrial CC-NUMA server | |
Li et al. | Model Checking TileLink Cache Coherence Protocols By Murphi |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20150803 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150901 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20160216 |