(57)【特許請求の範囲】
【請求項１】
ノンブロッキングメモリアクセス可能なプロセッサエレメントを構成要素に持つマルチプロセッサ・システムの性能評価方法であって、
各プロセッサごとに採取された実行トレースデータから、単体プロセッサのトレースドリブンシミュレーションにより、プロセッサ間通信時間を０とした場合の直前のプロセッサ間通信実行開始時刻と
当該プロセッサ間通信命令実行開始時刻との時間間隔Ｉ２と、
当該プロセッサ間通信命令実行開始時刻と当該プロセッサ間通信命令の実行結果に依存する命令において依存関係の発生した時刻との時間間隔Ｉ１を、各プロセッサ間通信実行命令毎に算出し、
上記Ｉ１，Ｉ２を用いて、マルチプロセッサ性能評価するためのプロセッサモデルにより、マルチプロセッサ・システムの性能を評価するマルチプロセッサ・システムの性能評価方法であって、
上記マルチプロセッサ性能評価するためのプロセッサモデルに、ノンブロッキングアクセス管理テーブルを設け、
上記ノンブロッキングアクセス管理テーブルに、終了していないプロセッサ間通信命令のアドレスと、上記時間間隔Ｉ１より求めたプロセッサ間通信による遅延がないとした仮定した場合の上記プロセッサ間通信命令の実行結果に依存する命令の実行タイミングを格納し、
上記プロセッサ間通信命令によるプロセッサ通信時間と上記実行タイミングから、プロセッサ間通信による遅延を求めて、この遅延による次のプロセッサ間通信命令の実行時間の遅れを求め、
前記時間間隔Ｉ２と、上記次のプロセッサ間通信命令の実行時間の遅れに基づき、次のプロセッサ間通信実行開始時刻を算出する
ことを特徴とするマルチプロセッサ・システムの性能評価方法。
【請求項２】
上記ノンブロッキングアクセス管理テーブルに、上記時間間隔Ｉ１より求めたプロセッサ間通信による遅延がないとした仮定した場合の上記プロセッサ間通信命令に依存する命令の実行タイミングを格納し、
上記ノンブロッキングアクセス管理テーブルに格納された上記実行タイミングの最小値をレジスタに保持し、
上記プロセッサ間通信命令によるプロセッサ通信時間と上記レジスタに保持された実行タイミングから、プロセッサ間通信による遅延を求めて、この遅延による次のプロセッサ間通信命令の実行時間の遅れを求め、
前記時間間隔Ｉ２と、上記次のプロセッサ間通信命令の実行時間の遅れに基づき、次のプロセッサ間通信実行開始時刻を算出する
ことを特徴とする請求項１のマルチプロセッサ・システムの性能評価方法。
【請求項３】
ノンブロッキングメモリアクセス可能なプロセッサエレメントを構成要素に持つマルチプロセッサ・システムの性能評価評価装置であって、
各プロセッサごとに採取された実行トレースデータから、プロセッサ間通信時間を０とした場合の直前のプロセッサ間通信実行開始時刻と当該プロセッサ間通信命令実行開始時刻との時間間隔Ｉ２と、当該プロセッサ間通信命令実行開始時刻と当該プロセッサ間通信命令の実行結果に依存する命令において依存関係の発生した時刻との時間間隔Ｉ１を、各プロセッサ間通信実行命令毎に算出する単体プロセッサのトレースドリブンシミュレータと、
上記Ｉ１，Ｉ２を用いて、マルチプロセッサ・システムの性能を評価するマルチプロセッサ・シミュレータを備え
上記マルチプロセッサ・シミュレータに、ノンブロッキングアクセス管理テーブルを設け、
上記マルチプロセッサ・シミュレータは、プロセッサ間通信命令の上記ノンブロッキングアクセス管理テーブルに、終了していないプロセッサ間通信命令のアクセスアドレスと、上記時間間隔Ｉ１より求めたプロセッサ間通信による遅延がないとした仮定した場合のプロセッサ間通信命令に依存する命令の実行タイミングを格納し、
上記プロセッサ間通信命令によるプロセッサ通信時間と上記実行タイミングから、プロセッサ間通信による遅延を求めて、この遅延による次のプロセッサ間通信命令の実行時間の遅れを求め、
前記時間間隔Ｉ２と、上記次のプロセッサ間通信命令の実行時間の遅れに基づき、次のプロセッサ間通信実行開始時刻を算出する
ことを特徴とするノンブロッキングメモリアクセス可能なプロセッサエレメントを構成要素に持つマルチプロセッサ・システムの性能評価装置。
【請求項４】
各プロセッサごとに採取された実行トレースデータから、トレースドリブンシミュレーションにより、プロセッサ間通信時間を０とした場合の直前のプロセッサ間通信実行開始時刻と当該プロセッサ間通信命令実行開始時刻との時間間隔Ｉ２と、当該プロセッサ間通信命令実行開始時刻と当該プロセッサ間通信命令の実行結果に依存する命令において依存関係の発生した時刻との時間間隔Ｉ１を各プロセッサ間通信実行命令毎に算出し、その結果に基づき、ノンブロッキングメモリアクセス可能なプロセッサエレメントを構成要素に持つマルチプロセッサ・システムの性能評価を行うためのプログラムを記録した記録媒体であって、
上記プログラムは、ノンブロッキングアクセス管理テーブルに、終了していないプロセッサ間通信命令のアドレスと、上記時間間隔Ｉ１より求めたプロセッサ間通信による遅延がないとした仮定した場合の上記プロセッサ間通信命令に依存する命令の実行タイミングを格納する処理と、
上記プロセッサ間通信命令によるプロセッサ通信時間と上記実行タイミングから、プロセッサ間通信による遅延を求めて、この遅延による次のプロセッサ間通信命令の実行時間の遅れを求め、前記時間間隔Ｉ２と、上記次のプロセッサ間通信命令の実行時間の遅れに基づき、次のプロセッサ間通信実行開始時刻を算出する処理をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
マルチプロセッサ・システムの性能評価は、システムの設計・構築・チューニングと様々な開発フェーズで行なわれる。いくつかのシステム性能評価手法が存在しており、必要とされるシミュレーション精度やシミュレーション速度によって性能評価手法が選択される。
本発明は上記マルチプロセッサ・システムの性能評価方法に関し、更に詳細には、ノンブロッキングメモリアクセスを行なうプロセッサを構成要素としたマルチプロセッサ・システムの性能評価に有効なマルチプロセッサ・システムの性能評価方法に関するものであり、特に、本発明はトレースドリブンシミュレーションという手法に焦点をあて、より精度が高くより速度の速いトレースドリブンシミュレーション技術によってマルチプロセッサ・システムの開発サイクルを短縮できるようしたものである。
【０００２】
【従来の技術】
マルチプロセッサ・システム（以下ＭＰシステムという）では、プロセッサ間の通信の効率によって、全体の性能が大きくかわってしまう。
既存のＭＰシステムのトレースドリブンシミュレーションには、以下のようなものがある。
【０００３】
（１）従来技術１
ハードウェア／ソフトウェア的にプロセッサ間通信が行なわれる時刻を記録したものをトレースデータとする。
ＭＰシステムのシミュレータがプロセッサ間通信時刻記録に基づきプロセッサ間の通信をシミュレートする。この手法の良い点は、現実のアプリケーションの実行トレースを利用しているために、実際のプロセッサ間通信に近いパターンを検証することができる上に、実行トレースデータのサイズを小さくできることが挙げられる。
【０００４】
（２）従来技術２（特願平９−２５７１２９号参照）
ＭＰシステムのプロセッサエレメント（以下ＰＥという）がスーパスカラプロセッサであった場合、単体プロセッサのトレースドリブンシミュレーションを用いて、プロセッサ間通信の間隔を２つのレイテンシ（先行通信命令との依存関係が生じるまでの時間、依存関係が生じる時刻から次通信命令が実行されるまでの時間）に分けて記録することにより、より正確なＭＰシステムのシミュレーションを行なう。
【０００５】
【発明が解決しようとする課題】
上記した特願平９−２５７１２９号に記載されているように、ＭＰシステムを構成するＰＥが、命令レベル並列実行可能なプロセッサ（例えばスーパスカラプロセッサ）であった場合、上記従来技術１の方法では、シミュレーション精度に大きな問題が発生する。
また、上記従来技術２に開示される方法では、ノンブロッキングメモリアクセスを行なうプロセッサを持つＭＰシステムに対しては適用できない。
以下、上記従来技術２（特願平９−２５７１２９号）の問題点を指摘するために、簡単にアルゴリズムにより、上記技術について説明する。
【０００６】
図１５に上記従来技術２の適用例を示す。
なお、図１５は、命令実行シーケンスをもとに単体ＰＥのトレースドリブンシミュレータ１０１〜１０３を用いて、プロセッサ通信のタイミングを抽出した後、プロセッサ通信のタイミングを入力としてマルチプロセッサのシミュレーションを行うＭＰシミュレーションシステムを前提としている。
上記特願平９−２５７１２９号に開示されたトレースドリブンシミュレータ１０１〜１０３においては、プロセッサ通信のタイミング（Ｉ１(n) ，Ｉ２(n) ）を次のように算出する。
ここで、プロセッサｉｄのｍ番目のプロセッサ間通信を行なう命令をＮＡ（id,n) 、これに依存する命令をＩＮＳＴ(id,n)とする。
0003647287.tif 000002
【０００７】
ＭＰシミュレーションでは、先に算出された上記プロセッサ通信のタイミングを用いる。
ＭＰシミュレータ２００は１サイクル毎のシステムの状態をシミュレートする。ＭＰシミュレータ２００のＣＰＵシミュレーションモデル２０１は、プロセッサ通信のタイミングＩ１(id,n)とＩ２(id,n)を用いてプロセッサ間通信の開始タイミングを見積もる。
ｎ＋１番目のプロセッサ間通信開始タイミング（時刻）Ａ(id,n+1)は次のように計算される。
いまＭＰシステム・シミュレータによってＮＡ(id,n)（プロセッサ間通信を行なう命令）のプロセッサ間通信時間がＮＬ(id,n)であったとすると次の式によってプロセッサ間通信開始タイミングＡ(id,n+1)を求める。
Ａ（id,n+1) ＝Ａ(id,n)＋max 〔ＮＬ(id,n)，Ｉ１(id,n)〕＋Ｉ２(id,n)〕
この式はＮＡ(id,n)のプロセッサ間通信が完了しないと、ＮＡ(id,n+1)が開始できないことを意味している。
【０００８】
図１６に上記関係を示す。図１６（ａ）は、ＮＬ(n) ＜Ｉ１(n) の場合を示し、図１６（ｂ）はＮＬ(n) ＞Ｉ１(n) の場合を示しており、同図において、ＮＡ(n) は上記したｎ番目のプロセッサ間通信を行なう命令（メモリアクセス命令）、ｉｎｓｔはそれに続く実行命令、ＩＮＳＴは上記命令ＮＡ(n) と依存関係が発生する命令（上記命令ＮＡ(n) により得られるデータを使用する命令）、ＮＬ(n) はプロセッサ間通信時間である。
【０００９】
図１６（ａ）に示すように、Ｉ１は、ＮＡ（n)がメモリアクセスを開始した時刻（同図Ａ点）から、ＩＮＳＴ(n) とＮＡ(n) の依存関係が発生する時刻（同図Ｂ点）までの時間であり、Ｉ２はＩＮＳＴ(n) とＮＡ(n) の依存関係が発生する時刻（同図Ｂ点）から次のメモリアクセス命令ＮＡ（n+1)がメモリアクセスを開始した時刻（同図Ｃ）までの時間である。
したがって、ＮＬ(n) ＞Ｉ１(n) の場合は、図１６（ｂ）に示すようになり、ｎ＋１番目のプロセッサ間通信開始時刻Ａ(n+1))（図１６のＣ点）は、ｎ番目のプロセッサ間通信開始時刻Ａ(n) （図１６のＡ点）に、ＮＬ(n) とＩ２(n) を加えた時刻になる。
図１５に示すシミュレーションフェーズ１における各単体ＰＥトレースドリブンシミュレータ１０１〜１０３は、上記のようにしてプロセッサ通信のタイミングを抽出する。そして、シミュレーションフェーズ２において、抽出された各プロセッサのプロセッサ通信タイミングを利用して、ＭＰシステムのシミュレーションを行う。
【００１０】
ところで、最近のプロセッサは、ノンブロッキングメモリアクセスを行なうことができる。
ノンブロッキングメモリアクセスとは、ＮＡ(id,n)のプロセッサ間通信の完了を待たずに、ＮＡ(id,n+1)を実行する機構であり、上記従来技術２はノンブロッキングメモリアクセスを行なうプロセッサを持つＭＰシステムには適用できない。
本発明は上記した問題点を解決するためになされたものであって、ノンブロッキングメモリアクセスを行なうプロセッサを持つＭＰシステムの性能評価を高速に精度良くシミュレートすることができるマルチプロセッサ・システムの性能評価方法を提供することを目的とする。
【００１１】
【課題を解決するための手段】
図１に本発明のＭＰシミュレータの概略構成を示し、図２に本発明におけるシミュレーションの概略手順を示す。本発明においては、図１、図２に示すように、各プロセッサの実行トレースデータを採取し、採取された各プロセッサのトレースデータを、図１に示す各単体プロセッサに対応するトレースドリブンシミュレータ１ａによってトレース変換を行い、変換後トレースデータ１ｂを得る。
そして、ＭＰシミュレータ２において、変換されたトレースデータ１ｂを用いてマルチプロセッサ・システムのシミュレーションを行なう。ＭＰシュミレータ２のＣＰＵシミュレーションモデル２ａは、終了していないプロセッサ間通信命令のアクセスアドレスと該プロセッサ間通信命令に依存する命令の実行タイミングＩ１を保持するテーブル２ｂ（ノンブロッキングアクセス管理テーブルとよぶ）を備えており、該テーブル２ｂを用いて、次のプロセッサ間通信実行開始時刻を算出し、ＭＰシステムのシミュレーションを行いその性能評価を行う。
【００１２】
なお、本発明では、以下の前提下にトレースドリブンシミュレーションを行う。
(a) トレースデータの前提
・トレースデータは各プロセッサエレメントごとに採取されている。
・共有変数のＬＯＣＫ、ＵＮＬＯＣＫを行う際のＢＵＳＹ  ＬＯＯＰは抽象的な命令列（ロックをかける命令、ロックを解放する命令）として保持されている。
・他のプロセッサからアクセスされる可能性のある共有変数と自プロセッサからしかアクセスされないローカル変数の区別が可能である。
(b) アプリケーションの振る舞いの前提
・他のプロセッサの振る舞いによって、実行トレース命令列およびアクセスアドレスが変化しない。
これらの前提はプロセッサの実行順序によって、プロセッサ間通信以外のトレースデータが変化しないことを保証する。
【００１３】
本発明においては、図１に示したように、以下のようにしてマルチプロセッサ・システムの性能評価を行う。
（１）各プロセッサごとに採取された実行トレースデータから、単体プロセッサのトレースドリブンシミュレーションにより、プロセッサ間通信時間を０とした場合の直前のプロセッサ間通信実行開始時刻と当該プロセッサ間通信命令実行開始時刻との時間間隔Ｉ２と、当該プロセッサ間通信命令実行開始時刻と当該プロセッサ間通信命令の実行結果に依存する命令において依存関係が発生した時刻との時間間隔Ｉ１を、各プロセッサ間通信実行命令毎に算出し、上記Ｉ１，Ｉ２を用いて、マルチプロセッサ性能評価するためのプロセッサモデルにより、マルチプロセッサ・システムの性能を評価するマルチプロセッサ・システムの性能評価方法において、上記マルチプロセッサ性能評価するためのプロセッサモデルに、ノンブロッキングアクセス管理テーブルを設け、上記ノンブロッキングアクセス管理テーブルに、終了していないプロセッサ間通信命令のアドレスと、上記時間間隔Ｉ１より求めたプロセッサ間通信による遅延がないとした仮定した場合の上記プロセッサ間通信命令の実行結果に依存する命令の実行タイミングを格納し、上記プロセッサ間通信命令によるプロセッサ通信時間と上記実行タイミングから、プロセッサ間通信による遅延を求めて、この遅延による次のプロセッサ間通信命令の実行時間の遅れを求め、前記時間間隔Ｉ２と、上記次のプロセッサ間通信命令の実行時間の遅れに基づき、次のプロセッサ間通信実行開始時刻を算出し、マルチプロセッサ・システムの性能を評価する。
（２）上記（１）において、上記ノンブロッキングアクセス管理テーブルに、上記時間間隔Ｉ１より求めたプロセッサ間通信による遅延がないとした仮定した場合の上記プロセッサ間通信命令に依存する命令の実行タイミングを格納し、上記ノンブロッキングアクセス管理テーブルに格納された上記実行タイミングの最小値をレジスタに保持し、上記プロセッサ間通信命令によるプロセッサ通信時間と上記レジスタに保持された実行タイミングから、プロセッサ間通信による遅延を求めて、この遅延による次のプロセッサ間通信命令の実行時間の遅れを求め、前記時間間隔Ｉ２と、上記次のプロセッサ間通信命令の実行時間の遅れに基づき、次のプロセッサ間通信実行開始時刻を算出する。
【００１４】
以上のように本発明においては、各プロセッサごとに採取された実行トレースデータから、単体プロセッサのトレースドリブンシミュレーションにより、プロセッサ間通信時間を０とした場合の直前のプロセッサ間通信実行開始時刻と当該プロセッサ間通信命令実行開始時刻との時間間隔Ｉ２と、当該プロセッサ間通信命令実行開始時刻と当該プロセッサ間通信命令の実行結果に依存する命令において依存関係が発生した時刻との時間間隔Ｉ１を、各プロセッサ間通信実行命令毎に算出し、上記Ｉ１，Ｉ２を用いて、マルチプロセッサ性能評価システムにより、マルチプロセッサ・システムの性能を評価するようにしたので、ノンブロッキングメモリアクセスが可能なプロセッサを持つＭＰシステムの性能評価を高い精度でなおかつ高速におこなうことができる。
【００１５】
【発明の実施の形態】
図３は本発明によって性能評価されるＭＰシステムの構成例であり、図３のシステムは、２台のプロセッサＣＰＵ１，ＣＰＵ２とメモリＭから構成され、これらがバスＢＵＳにより接続されている。
図４は上記したＭＰシステムを評価するＭＰシステム・シミュレータの全体構成を示す図である。
このＭＰシステム・シミュレータ、公知のパソコンやワークステーションなどのコンピュータで実現することができ、プログラムによって処理が実行される。
図４において、単体ＰＥのトレースドリブンシミュレータ１１，１２は、図３に示したＣＰＵ１，ＣＰＵ２の実行トレースの解析を行い、変換後のトレースデータ（以下、トレースと略記する）を通信タイミング履歴ファイル１３，１４に格納する（シミュレーションフェーズ１）。
【００１６】
ＭＰシミュレータ２０はＣＰＵ１のシミュレーションモデル２１と、ＣＰＵ２のシミュレーションモデル２２と、図３に示したメモリＭのシミュレーションを行うためのメモリシミュレーションモデル２４と、図３に示したバスＢＵＳのシミュレーションを行うためのバスシミュレーションモデル２５と、シミュレーションモデル２１，２２，２４，２５を駆動し、シミュレータのサイクル管理、リソース管理、統計情報算出を行うためのシミュレータ駆動部２３とを備えている。
【００１７】
シミュレーションモデル２１，２２には、それぞれノンブロッキングアクセス管理テーブル２１ａ，２２ａと、レジスタＭＩＮ ＤＥＰ ＣＹＣＬＥ２１ｂ，２２ｂが設けられており、ノンブロッキングアクセス管理テーブル２１ａ，２２ｂには、シミュレーションフェーズ１の変換後トレースから得られるアクセスアドレス（Ａｄｄｒ）と依存関係が生ずる時間Ｉ１が格納され、レジスタＭＩＮ ＤＥＰ ＣＹＣＬＥ２１ｂ，２２ｂは上記Ｉ１の最小値を保持する。
ＭＰシミュレータ２０は、上記ノンブロッキングアクセス管理テーブル２１ａ，２２ｂ、レジスタＭＩＮ ＤＥＰ ＣＹＣＬＥ２１ｂ，２２ｃを用いて、後述するようにＣＰＵ１，ＣＰＵ２の性能評価を行う。
以下、図４における単体ドリブンシミュレータ１１，１２による解析処理と、ＭＰシミュレータ２０によるＭＰシミュレーションについて説明する。
【００１８】
（１）単体ドリブンシミュレータ１１，１２による解析処理
単体ドリブンシミュレータ１１，１２は各プロセッサＣＰＵ１，ＣＰＵ２のトレースを解析し、図５に示すトレースデータに変換する。
このトレースデータは１回のプロセッサ間通信ごとに作成する。データの解析ではネットワークトラフイックに関わる全てのメモリアクセスに注意する必要がある。そこでプロセッサ間通信を行なうのは次のケースであるとする。
・共有変数へのアクセス（ロード／ストア／リプレース）
・ローカル変数アクセスの外部キャッシュミス（キャッシュのリプレースも含む）
【００１９】
図５に示すように変換後のトレースデータの各フィールドは以下のものからなる。
・アクセスアドレス（Ａｄｄｒ（ｎ））：アクセスするアドレス
・アクセスサイズ（Ｓｉｚｅ（ｎ））：アクセスするデータサイズ
・アクセスタイプ（Ｔｙｐｅ（ｎ））：Ｒｅａｄ／Ｗｒｉｔｅ／Ｒｅｐｌａｃｅ／Ｌｏｃｋ／ＵｕＬｏｃｋ等
・次の通信セクションまでのレイテンシに関する情報（Ｉ１(n) 、Ｉ２(n) ）：プロセッサ間通信の実行時間に関する情報（後述するＩ１(n) 、Ｉ２(n) 、従来技術２のＩ１(n) 、Ｉ２(n) とは異なる）。
【００２０】
図６は、トレースデータを変換するシステムの構成を示す図であり、トレース変換装置１０は、単体ＰＥのトレースドリブンシミュレータ１１と通信タイミング履歴バッファ１０ａと最終通信開始サイクルレジスタ１０ｂから構成される。トレースドリブンシミュレータ１１は、機能ユニットシミュレーションユニット１１ａとレジスタ管理テーブル１１ｂを備え、上記機能ユニットシミュレーションユニット１１ａの実行タイミング算出装置１１ｃは、レジスタ管理テーブル１１ｂを用いてプロセッサのトレースデータ（命令シーケンス）から、実行タイミングを算出し、通信タイミング履歴バッファ１０ａに格納する。通信タイミング履歴バッファ１０ａの内容は、変換後トレースとして、通信タイミング履歴ファイル１３に格納される。
上記トレースドリブンシミュレータ１１は、ネットワークレイテンシ（プロセッサ間通信による遅延）がない設定でシミュレーションを行い、プロセッサ通信の時間間隔の見積もりを行う。
【００２１】
いま、ｎ番目のプロセッサ通信命令をＮＡ(n) 、これに依存する命令をＩＮＳＴ(n) としたとき、本発明においてはＩ１(n) ，Ｉ２(n) を次のように定義する。
0003647287.tif 000003
【００２２】
図７は前記した従来例２と本発明との相違を説明する図であり、同図（ａ）は従来例２に定義されるＩ１(n) 、Ｉ２(n) を示し、同図（ｂ）は本発明で定義されるＩ１(n) 、Ｉ２(n) を示す。
本発明においては、プロセッサ間通信命令と依存関係のある命令までの時間間隔をＩ１として、また、ＮＡ(n-1) がメモリアクセスを開始した時刻とＮＡ(n) がメモリアクセスを開始した時刻の差をＩ２とし、これを用いてＭＰシステムのシミュレーションを行っているので、ノンブロッキングアクセスのシミュレートを行なうことが可能である。
【００２３】
図８、図９は、前記図５に示したトレースデータへの変換処理を示すフローチャートであり、同図により、本発明の実施例のトレース変換処理について説明する。なお、図６のレジスタ管理テーブル１１ｂには取り出された全てのＴが記録され、ＴのオペランドのＣＯＭ ＩＮＤＥＸにより、通信タイミング履歴バッファ１０ａのＩ１が指し示される。
図８のステップＳ１において、変数ｎ、ｐｒｅｖ ｅｘ、Ｉ１（０）、Ｉ２（０）を０に初期化する。
ステップＳ２において、トレースデータから１命令分のトレースデータＴを取り出し、トレースデータからＴを除く。
ステップＳ３において、図６の実行タイミング算出装置１１ｃにより、トレースデータＴがオペランドを読むサイクル（ＲＥＡＤ ＣＹＣＬＥ）、Ｔの実行開始サイクル（ＥＸ ＣＹＣＬＥ）、演算結果を書き込むサイクル（ＷＲＩＴＥ ＣＹＣＬＥ）を算出する（サイクルは時刻）。
【００２４】
ステップＳ４において、レジスタ管理テーブル１１ｂのＣＯＭ ＦＬＡＧがＴＲＵＥであるかを調べ（ＴＲＵＥであればプロセッサ間通信命令）、ＴＲＵＥでなければ、図９のステップＳ８に行く。
また、ＴＲＵＥであれば、ステップＳ５に行き、ワークＴＭＰ Ｉ１にＩ１（ＴのオペランドのＣＯＭ ＩＮＤＥＸが指すＩ１）を入れ、ワークＴＭＰ ＳＴＡＲＴに、ＳＴＡＲＴ（ＴのオペランドのＣＯＭ ＩＮＤＥＸが指すＳＴＡＲＴ）を入れる。すなわち、上記ステップＳ５においては、ＴのＣＯＭ ＩＮＤＥＸが指すＩ１がワークＴＭＰ Ｉ１に入れられ、ＴのオペランドのＣＯＭ ＩＮＤＥＸが指すＳＴＡＲＴがワークＴＭＰ ＳＴＡＲＴに入れられる。
【００２５】
ステップＳ６において、ＴＭＰが、ＲＥＡＤ ＣＹＣＬＥとＴＥＭＰ ＳＴＡＲＴの差より大きいかもしくは等しいかを調べ、ＴＭＰ＜〔ＲＥＡＤ ＣＹＣＬＥ〕−〔ＴＥＭＰ ＳＴＡＲＴ〕であれば、図９のステップＳ８に行く。
また、ＴＭＰ≧〔ＲＥＡＤ ＣＹＣＬＥ〕−〔ＴＥＭＰ ＳＴＡＲＴ〕であれば、ステップＳ７に行き、Ｉ１（ＴのオペランドのＣＯＭ ＩＮＤＥＸが指すＩ１）に〔ＲＥＡＤ ＣＹＣＬＥ〕−〔ＴＥＭＰ ＳＴＡＲＴ〕を入れる。すなわち、ＴＥＭＰ ＳＴＡＲＴからＲＥＡＤ ＣＹＣＬＥまでの時間（Ｉ１）が通信タイミング履歴バッファ１０ａに記録される。
【００２６】
図９のステップＳ８において、Ｔがプロセッサ間通信命令であるかを調べ、Ｔがプロセッサ間通信命令でない場合には、ステップＳ９にいき、次のトレースデータＴがあるかを調べ、ある場合にはステップＳ２に戻る。
Ｔがプロセッサ間通信命令の場合には、ステップＳ１１に行き、次の処理を行う。
すなわち、Ｉ１（ｎ）を無限大とし、Ｉ２（ｎ）に〔ＥＸ ＣＹＣＬＥ〕−〔ＰＲＶＥＶ ＥＸ〕、Ｓｔａｒｔ（ｎ）にＥＸ ＣＹＣＬＥ、Ａｄｄｒ（ｎ）にＴのアクセスアドレス、Ｓｉｚｅ（ｎ）にＴのアクセスサイズ、Ｔｙｐｅ（ｎ）にＴの命令タイプを入れ、Ｔが書き込むリソース（レジスタ管理テーブルのＴのオペランド）のＣＯＭ ＦＬＡＧをＴＲＵＥとし、Ｔが書き込むリソースのＳＥＴ ＣＹＣＬＥにＷＲＩＴＥ ＣＹＣＬＥを入れ、Ｔが書き込むリソースのＣＯＭ ＩＮＤＥＸにｎを入れる。
【００２７】
ついで、ステップＳ１２において、ＰＲＥＶ ＥＸにＥＸを入れ、ステップＳ１３において、ｎ＝ｎ＋１とし、またＥＸにＥＸ ＣＹＣＬＥを入れステップＳ９に行く。そして、次のトレースデータがある場合には、ステップＳ２に戻り上記処理を繰り返す。
以上の処理を行うことにより、ステップＳ１１において、Ｉ２（ｎ）が求まり、また、ステップＳ７においてＩ１（ｎ）が求まり、Ｉ１（ｎ），Ｉ２（ｎ）、Ａｄｄｒ、Ｓｉｚｅ等が通信履歴バッファ１０ａに格納される。
以上の処理を行って、次のトレースデータがなくなると、ステップＳ１０に行き、通信タイミング履歴バッファ１０ａのＡｄｄｒ、Ｓｉｚｅ、Ｉ１，Ｉ２を通信タイミング履歴ファイルに書き出し、トレース変換を終了する。
【００２８】
（２）変換されたトレースデータを用いたマルチプロセッサ・システム・シミュレーション
上記した先のトレースデータ変換手順によって、各プロセッサごとのトレースが変換されたのち、ＭＰシミュレータ２０は変換後のトレースを用いてマルチプロセッサ・システム・シミュレーション（ＭＰシミュレーション）を行なう。
【００２９】
図１０に、変換されたトレースデータを入力とするＭＰシミュレータの構成を示す。
このシミュレータ２０は１サイクル毎にＭＰシステムの状態をシミュレートする。ＭＰシミュレータ２０は、前記したように各ＰＥに対応したＣＰＵシミュレーションモデル２１，２２と、メモリおよびバスのシミュレーションを行うためのメモリ・バスシミュレーションモデル２４，２５と、シミュレータのサイクル管理、リソース管理、統計情報算出を行うためのシミュレータ駆動部２３とを備えている。
また、各ＣＰＵシミュレーションモデル２１，２２は前記したようにノンブロッキングアクセス管理テーブル２１ａ，２２ａと、レジスタＭＩＮ ＤＥＰ ＣＹＣＬＥ２１ｂ，２２ｂを備えている。ノンブロッキングアクセス管理テーブル２１ａ，２２ａのエントリ数は、ＣＰＵのノンブロッキングメモリアクセス数と同じだけ用意される。そして、図１０のシミュレータ駆動部２３が、実行終了したときに全体のシミュレーションが停止する。
【００３０】
図１１、図１２はプロセッサ間通信を行なうタイミング算出処理のフローチャートであり、同図によりプロセッサ間通信を行なうタイミング算出処理について説明する。
ステップＳ１において、変数Ｎ ＴＲＡＣＥ、Ｎ ＡＣＣＥＳＳ（ノンブロッキングアクセス管理テーブルのエントリ数）を０に初期化し、Ｎ ＭＡＸ（ノンブロッキングアクセス管理テーブルのエントリ数の最大値）に最大ノンブロッキングアクセス数を入れ、ＭＩＮ ＤＥＰ ＣＹＣＬＥを無限大に設定し、ＬＡＳＴ ＡＣＥＳＳ ＣＹＣＬＥ（最前のＣＹＣＬＥの時刻）を０に初期化する。また、ＴＡＣＥ ＳＩＺＥに変換後のトレースサイズを入れる。
ステップＳ２において、Ｎ ＴＲＡＣＥがＴＡＣＥ ＳＩＺＥより小さいかを調べ、小さい場合にはステップＳ３に行き以下の処理を行う。また、大きい場合には、処理を終了する。
【００３１】
ステップＳ３において、Ｎ ＡＣＣＥＳＳがＮ ＭＡＸより小さいかを調べ、小さくない場合にはステップＳ１１に行く。また、小さい場合には、ステップＳ４に行き、ＡＤＤＲにＮ番目のトレースデータのＡＤＤｒ〔Ｎ ＴＲＡＣＥ〕を、Ｉ１にＮ番目のトレースデータのＩ１〔Ｎ ＴＲＡＣＥ〕、Ｉ２にＮ番目のトレースデータのＩ２〔Ｎ ＴＲＡＣＥ〕を入れる。
ステップＳ５において、〔ＬＡＳＴ ＡＣＥＳＳ ＣＹＣＬＥ〕＋Ｉ２がＭＩＮ ＤＥＰ ＣＹＣＬＥより小さいかを調べる。
〔ＬＡＳＴ ＡＣＥＳＳ ＣＹＣＬＥ〕＋Ｉ２≧ＭＩＮ ＤＥＰ ＣＹＣＬＥの場合には、ステップＳ１１に行き、〔ＬＡＳＴ ＡＣＥＳＳ ＣＹＣＬＥ〕＋Ｉ２＜ＭＩＮ ＤＥＰ ＣＹＣＬＥの場合には、ステップＳ６に行き、Ｎ ＡＣＣＥＳＳに〔Ｎ ＡＣＣＥＳＳ〕＋１を入れ、また、Ｉ１に〔ＬＡＳＴ ＡＣＥＳＳ ＣＹＣＬＥ〕＋Ｉ２＋Ｉ１を入れる。
【００３２】
ステップＳ７において、ＡＤＤＲとＩ１をノンブロッキングアクセス管理テーブルに登録し、ステップＳ８において、ＬＡＳＴ ＡＣＥＳＳ ＣＹＣＬＥに、〔ＬＡＳＴ ＡＣＥＳＳ ＣＹＣＬＥ〕＋Ｉ２を入れ、Ｎ ＴＲＡＣＥにＮ ＴＲＡＣＥ＋１を入れる。
ステップＳ９において、ＭＩＮ ＤＥＰ ＣＹＣＬＥ＞Ｉ１であるかを調べ、ＭＩＮ ＤＥＰ ＣＹＣＬＥ≦Ｉ１の場合には、ステップＳ２に戻る。また、ＭＩＮ ＤＥＰ ＣＹＣＬＥ＞Ｉ１の場合には、ステップＳ１０に行き、ＭＩＮ ＤＥＰ ＣＹＣＬＥにＩ１を入れ、ステップＳ２に戻る。
ステップＳ３においてＮ ＡＣＣＥＳＳがＮ ＭＡＸが小さくない場合（等しい場合）、あるいは、ステップＳ５において、〔ＬＡＳＴ ＡＣＥＳＳ ＣＹＣＬＥ〕＋Ｉ２＜ＭＩＮ ＤＥＰ ＣＹＣＬＥでない場合、ステップＳ１１に行き、ＣＰＵにアクセスデータが来るまで、ＭＰシミュレーションを進める。
【００３３】
そして、ステップＳ１２において、アクセスデータのアドレスをノンブロッキングアクセス管理テーブルから探して取り除くと同時にＩ１を得る。
ステップＳ１３において、Ｎ ＡＣＣＥＳＳに〔Ｎ ＡＣＣＥＳＳ〕−１を入れ、ステップＳ１４において、ＭＩＮ ＤＥＰ ＣＹＣＬＥとＩ１が等しいかを調べる。等しくなければステップＳ２に戻る。また、等しい場合には、ステップＳ１５において、Ｉ１がシミュレーションサイクルより小さいかを調べる。Ｉ１がシミュレーションサイクルより小さくない場合には、ステップＳ１８に行く。また、小さい場合には、ステップＳ１６に行き、ＤＥＬＴＡに〔シミュレーションサイクル〕−Ｉ１を入れ、ステップＳ１７において、ノンブロッキングアクセス管理テーブルに登録されている全てのＩ１にＤＥＬＴＡを加算する。
ついでステップＳ１８において、ＭＩＮ ＤＥＰ ＣＹＣＬＥにノンブロッキングアクセス管理テーブルに登録されている最小のＩ１を入れて、ステップＳ２に戻る。
【００３４】
図１３、図１４にノンブロッキングアクセスを行なうプロセッサをもつＭＰシステムのシミュレーション例を示す。図１３、図１４は１ＣＰＵにだけ注目した振る舞いを示しており、同図によりＭＰシステムのシミュレーションについて説明する。
図１３、図１４において、図１３は命令実行の様子を示すタイムチャート（横軸のＴ１〜Ｔ１１は時刻）であり、一番上のチャートは、変換後トレースに含まれる情報（プロセッサ通信時間を０としたときの動作）を示し、その下のチャートはプロセッサ間通信時間による遅延を考慮したＭＰシミュレータ２０の動作を示している。また、同図中の黒丸はプロセッサ間通信命令が発生する時刻、白丸はプロセッサ間通信命令に依存した命令が発生する時刻であり、太直線の矢印はプロセッサ間の通信期間、太点線直線の矢印はプロセッサ間通信による遅延を示している。
図１４はノンブロッキングアクセス管理テーブル（以下、アクセス管理テーブルと略記する）の動作を示し、この例の場合、ノンブロッキングアクセス管理テーブルのエントリ数（Ｎ ＡＣＣＥＳＳ）は２である。
【００３５】
同図において、プロセッサ間通信命令ＮＡ１の実行開始時刻（＝Ｔ１）には、アクセス管理テーブルのアドレスＡｄｄｒのフィールドにはＮＡ１のアドレスが格納され、Ｉ１のフィールドにはＴ１＋Ｉ１ ０（プロセッサ間通信による遅延がないと仮定した場合の依存が発生する時刻、この場合Ｔ２）が格納される。また、レジスタＭＩＮ ＤＥＰ ＣＹＣＬＥには、上記Ｔ１＋Ｉ１ ０が格納される。なお、この時点では、次のプロセッサ間通信命令ＮＡ２はＴ１＋Ｉ２ １（＝Ｔ４）に実行される予定である。
次いで、ＭＰシミュレーションを進めると、同図の点線矢印で示すようにプロセッサ間通信による遅延Δ １（前記図１１、図１２のフローチャートにおけるＤＥＬＴＡ）により、ＮＡ１に依存した命令（同図の白丸）の実行時刻が遅れ、Ｔ３となる。
【００３６】
ＮＡ１の実行が終了した時刻Ｔ３においては、アクセス管理テーブルは空であり、レジスタＭＩＮ ＤＥＰ ＣＹＣＬＥには無限大が格納される。
一方、上記遅延Δ １により、ＮＡ２の実行時刻は、Ｔ１＋Ｉ２ １＋Δ １（＝Ｔ５）となる（確定）。
ＮＡ２の実行が開始される時刻Ｔ５においては、アドレス管理テーブルのＡｄｄｒのフィールドにＮＡ２のアドレスが格納され、Ｉ１のフィールドにＴ５＋Ｉ１ １が格納され、レジスタＭＩＮ ＤＥＰ ＣＹＣＬＥには、Ｔ５＋Ｉ１ １が格納される。
【００３７】
次いで、ＭＰシミュレーションを進めると次のプロセッサ間通信命令ＮＡ３の実行時刻である時刻Ｔ５＋Ｉ２ ２（＝Ｔ６）になる。
時刻Ｔ６においては、時刻Ｔ６以降にＮＡ２に依存する命令、ＮＡ３に依存する命令があるので、アドレス管理テーブルのＡｄｄｒのフィールドには、ＮＡ２，ＮＡ３のアドレスが格納され、Ｉ１のフィールドにＴ５＋Ｉ１ １、Ｔ６＋Ｉ１ ２がそれぞれ格納され、また、レジスタＭＩＮ ＤＥＰ ＣＹＣＬＥには、Ｔ５＋Ｉ１ １、Ｔ６＋Ｉ１ ２のうちの小さい方のＴ６＋Ｉ１ ２が格納される。なお、この時点では、次のプロセッサ間通信命令ＮＡ４はＴ６＋Ｉ２ ３（＝Ｔ１０）に実行される予定である。
【００３８】
次に、ＮＡ２の実行が終了する時刻Ｔ８（時刻Ｔ５＋Ｉ１ １）で、アドレス管理テーブルのＡｄｄｒフィールドのＮＡ２のアドレス、Ｉ１フィールドの時刻Ｔ５＋Ｉ１ １が取り除かれ、アドレス管理テーブルのＡｄｄｒフィールドにはＮＡ３のアドレスが、また、Ｉ１のフィールドにはＴ６＋Ｉ１ ２が残る。この場合、ＮＡ２のＩ１はＭＩＮ ＤＥＰ ＣＹＣＬＥと等しくないため、ＮＡ４の実行予定サイクルは変化がなく、この時点では、ＮＡ４はＴ６＋Ｉ２ ３（＝Ｔ１０）に実行される予定である。
【００３９】
一方、プロセッサ間通信命令ＮＡ３の実行終了は、プロセッサ通信の遅延により同図の太点線に示すようにΔ ２遅延し、時刻Ｔ９に実行が終了する。この時点でアドレス管理テーブルのＡｄｄｒフィールド、Ｉ１のフィールドの内容は空であり、レジスタＭＩＮ ＤＥＰ ＣＹＣＬＥには無限大が格納される。
上記のようにＮＡ３の実行終了サイクルがΔ ２遅延するので、これに応じてＮＡ２の実行終了時間もΔ ２遅延する。同様に、ＮＡ４の実行開始サイクルもＴ６＋Ｉ２ ３＋Δ ２となる。
以上のようなＭＰシミュレーションを進めることにより、プロセッサ通信による遅延を考慮したプロセッサ間通信命令ＮＡ１，ＮＡ２，ＮＡ３の開始、終了サイクルが図１３に示すようにシミュレーションされる。
以上のように、本発明によるＩ１、Ｉ２を用いることによってノンブロッキングアクセスのシミュレートを行なうことが可能となる。
【００４０】
【発明の効果】
以上説明したように、本発明によればノンブロッキングメモリアクセスが可能なプロセッサを持つＭＰシステムの性能評価を高い精度でなおかつ高速におこなうことができる。
これによりマルチプロセッサ・システムの開発サイクルを短縮化し、システム開発の工数を押えることができる。
【図面の簡単な説明】
【図１】本発明のＭＰシステムの性能評価システムの概略構成を示す図である。
【図２】本発明におけるシミュレーション手順を示す図である。
【図３】本発明の実施例の評価システムの対象となるＭＰシステムの一例を示す図である。
【図４】本発明の実施例のＭＰシステム・シミュレータの全体構成を示す図である。
【図５】トレース変換により得られるトレースデータの構成要素を示す図である。
【図６】トレースデータを変換するシステムの構成例を示す図である。
【図７】本発明と従来例におけるＩ１(n) ，Ｉ２(n) の定義の違いを説明する図である。
【図８】トレースデータへの変換処理を示すフローチャートである。
【図９】トレースデータへの変換処理を示すフローチャート（続き）である。
【図１０】変換されたトレースデータを入力とするＭＰシミュレータの構成を示す図である。
【図１１】ＭＰシミュレーション手順を示すフローチャートである。
【図１２】ＭＰシミュレーション手順を示すフローチャート（続き）である。
【図１３】本発明によるＭＰシミュレーションの振る舞いを説明する図である。
【図１４】本発明によるＭＰシミュレーションの振る舞いを説明する図である。
【図１５】従来技術２の適用例を示す図である。
【図１６】従来技術２におけるプロセッサ間通信タイミングの算出を説明する図である。
【符号の説明】
１ａ            トレースドリブンシミュレータ
１ｂ            変換後トレースデータ
２              ＭＰシミュレータ
２ａ            ノンブロッキングアクセス管理テーブル
１１，１２      単体ＰＥのトレースドリブンシミュレータ
１３，１４      通信タイミング履歴ファイル
２０            ＭＰシミュレータ２０
２１，２２      ＣＰＵシミュレーションモデル
２１ａ，２２ａ  ノンブロッキングアクセス管理テーブル
２２ｂ，２２ｂ  レジスタＭＩＮ ＤＥＰ ＣＹＣＬＥ
２４            メモリシミュレーションモデル
２５            バスシミュレーションモデル
２３            シミュレータ駆動部
【図１】
0003647287.tif 000004
【図２】
0003647287.tif 000005
【図３】
0003647287.tif 000006
【図４】
0003647287.tif 000007
【図５】
0003647287.tif 000008
【図６】
0003647287.tif 000009
【図７】
0003647287.tif 000010
【図８】
0003647287.tif 000011
【図９】
0003647287.tif 000012
【図１０】
0003647287.tif 000013
【図１１】
0003647287.tif 000014
【図１２】
0003647287.tif 000015
【図１３】
0003647287.tif 000016
【図１４】
0003647287.tif 000017
【図１５】
0003647287.tif 000018
【図１６】
0003647287.tif 000019