(57)【特許請求の範囲】
【請求項１】
一つのシステムで動作する複数のプロセッサの夫々に対応する複数のトレースデータを記憶した記憶部と、
前記記憶部に記憶された前記複数のトレースデータの１つを所定順に従って選択し、各トレースデータからトレースされた命令を１つずつ読み込みながら、同期命令毎に区切って並べ替え、前記記憶部内の転送用トレースデータに追加することによって、各プロセッサのトレースを結合するトレース結合処理部と
を有することを特徴とするトレース結合装置。
【請求項２】
前記トレース結合処理部は、
前記記憶部の前記所定順に従って選択したトレースデータから命令を読み込む命令読込部と、
前記命令読込部によって読み込んだ命令が同期命令であるか否かを判断する同期命令判断部と、
前記同期命令判断部によって前記命令が同期命令であると判断された場合、前記記憶部内に格納される前記複数のプロセッサの夫々に対応する同期フラグを有するフラグテーブル内の、該命令がトレースされたプロセッサに対応する該同期フラグを設定するフラグ設定部と、
前記同期命令判断部によって前記命令が同期命令でないと判断された場合、前記フラグテーブルを参照することによって、該命令がトレースされたプロセッサに対応する該同期フラグが設定されているか否かを判断するフラグ判断部と、
前記フラグ判断部によって前記同期フラグが設定されていると判断された場合、前記命令がトレースされた前記プロセッサに対応させた同期用バッファに保存する命令保存部と、
全プロセッサ夫々に対応する前記複数のトレースデータから前記同期命令の読み出しが終了した場合、前記所定順に従って選択した前記同期用バッファから命令を１つずつ読み込み、前記転送用トレースデータへ出力して追加するバッファ出力部と
を有することを特徴とする請求項１記載のトレース結合装置。
【請求項３】
前記バッファ出力部による前記転送用トレースデータへの出力が終了すると、前記命令読込部による処理を再開することを特徴とする請求項２記載のトレース結合装置。
【請求項４】
前記トレース結合処理部は、
前記フラグ判断部によって前記同期フラグが設定されていないと判断された場合、前記命令を前記転送用トレースデータへ出力して追加するフラグ未設定追加部と
を有することを特徴とする請求項３記載のトレース結合装置。
【請求項５】
記憶部に記憶された一つのシステムで動作する複数のプロセッサの夫々に対応する複数のトレースデータから所定順に従ってトレースデータを選択し、
各トレースデータからトレースされた命令を１つずつ読み込みながら、同期命令毎に区切って並べ替えて、前記記憶部内の転送用トレースデータに追加することによって、各プロセッサのトレースを結合する、
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、性能シミュレーションで複数のプロセッサが搭載されたシステムを評価するための複数のプロセッサのトレースを結合するトレース結合装置及びプログラムに関する。
【背景技術】
【０００２】
従来より、プロセッサのアーキテクチャ検討時の性能見積りのために性能シミュレータが使用されている。ベンチマークテスト等のプログラムを実行した際に、プロセッサが処理したすべての命令を含むトレースデータを取得しておく。そして、そのトレースデータとアーキテクチャに関するパラメータ（キャッシュサイズ、キャッシュプロトコル、パイプライン仕様等）とを性能シミュレータに入力して起動することで、トレースデータに基づく性能シミュレーションが実行され、評価対象のプロセッサのキャッシュヒット率、ＣＰＩ（Clock Per Instruction）等の性能情報を出力する。そして、様々なパラメータを試しながら最適なアーキテクチャを決定していくことが行われている。
【０００３】
そして、近年、マルチプロセッサやマルチコア等の複数のコアが同時に動作する際のシミュレーションが行われている。シングルコア、即ち、ＣＰＵ（Central Processing Unit）１個のシミュレーションを行う場合は、１つのトレースデータを順次入力することで、性能シミュレーションを実行できる。しかしながら、マルチコア等の場合、命令の並列実行が可能であるプロセッサである場合には、プロセッサ間通信中に処理が進むことによりトレースデータが動的に変わる可能性があること、シングルプロセッサ用のシミュレータを用いた場合、各プロセッサのトレースデータをその都度採取してシミュレーションを行うと、シミュレーションに要する時間が膨大になるという問題があった。
【０００４】
プロセッサ毎に採取された実行トレースデータから、プロセッサ内での実質的な処理実行時間を見積もり、プロセッサ毎に見積もられた処理実行時間を用いてマルチプロセッシングシステムのシミュレーションを行い、そのシミュレーション結果に基づいてマルチプロセッシングシステムの性能を評価すること等が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−０９６１３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術では、各プロセッサのトレースデータ毎に処理実行時間を見積もったものであるため、搭載されるプロセッサの数に相当するトレースデータを転送するための経路が必要となる。従って、性能シミュレーションにおいて、トレースデータの転送に係る構成がプロセッサ数に依存してしまうと言った問題があった。
【０００７】
よって、本発明の目的は、性能シミュレーションで複数のプロセッサが搭載されたシステムを評価するための複数のプロセッサのトレースを結合するトレース結合装置及びプログラムを提供することである。
【課題を解決するための手段】
【０００８】
開示の技術は、一つのシステムで動作する複数のプロセッサの夫々に対応する複数のトレースデータを記憶した記憶部と、前記記憶部に記憶された前記複数のトレースデータの１つを所定順に従って選択し、各トレースデータからトレースされた命令を１つずつ読み込みながら、同期命令毎に区切って並べ替え、前記記憶部内の転送用トレースデータに追加することによって、各プロセッサのトレースを結合するトレース結合処理部とを有するトレース結合装置のように構成される。
【０００９】
また、上記課題を解決するための手段として、コンピュータに上記トレース結合装置として機能させるためのプログラム、そのプログラムを記録した記録媒体、及びトレース結合方法とすることもできる。
【発明の効果】
【００１０】
開示の技術では、複数のプロセッサの夫々に対応する複数のトレースデータに含まれる同期命令で区切って並べ替えて、前記複数のトレースデータが結合された一つの転送用トレースデータが作成される。性能シミュレーションにおいて、このように同期命令で区切って並べ替えて作成された転送用トレースデータを用いることによって、各プロセッサへの同期命令が全て終了した後に、同期命令後の命令が入力されるようにすることができる。
【図面の簡単な説明】
【００１１】
【図１】性能シミュレーションに係る基本構成を説明するための図である。
【図２】図１に示す性能シミュレータをソフトウェアで実行するためのコンピュータ装置のハードウェア構成を示す図である。
【図３】図２のコンピュータ装置の機能構成の概要を説明するための図である。
【図４】図１に示す性能シミュレータをハードウェアで実現するためのシステムのハードウェア構成を示す図である。
【図５】図４のシステムの構成概要を説明するための図である。
【図６】複数コアのトレースデータを１つの経路で入力するための構成例を示す図である。
【図７】転送時に命令を並べ替える構成例を示す図である。
【図８】コア毎のバッファを有する構成例を示す図である。
【図９】命令を並べ替えて一つのトレースを作成しておく構成例を示す図である。
【図１０】実機での命令の実行タイミングを説明するための図である。
【図１１】単純に並べ替えたトレースデータを用いた実行タイミングを説明するための図である。
【図１２】実機と、図１１の並べ替え済トレースデータを用いた性能シミュレーションの場合の実行タイミングのずれを比較するための図である。
【図１３】プログラムに同期命令が含まれる場合の実行タイミングを説明するための図である。
【図１４】性能シミュレータの動作が停止してしまう場合を説明するための図である。
【図１５】トレースデータ作成方法の概要を説明するための図である。
【図１６】転送用トレースデータを作成するための機能構成例を示す図である。
【図１７】トレース結合処理部によるトレース結合処理を説明するためのフローチャート図である。
【図１８】図１７のステップＳ１７でのバッファ出力処理を説明するための図である。
【図１９】同期命令によって区切られた実行タイミングの例を示す図である。
【図２０】実機と、図１９の転送用トレースデータを用いた性能シミュレーションの場合の実行タイミングのずれを比較するための図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態を図面に基づいて説明する。発明者は、マルチプロセッサやマルチコア等の複数のプロセッサ（ＣＰＵ（Central Processing Unit））が同時に動作するシステムを評価するための性能シミュレーションの処理性能が、低下する原因となる同期命令を含むトレースデータを用いた場合について、処理性能が低下する現象について解析した。本実施の形態では、同期命令を含むトレースデータを用いた場合であっても、その処理性能を改善することができるトレースデータを作成することについて説明する。
【００１３】
まず、性能シミュレーションに係る基本構成について、図１で説明する。図１に示すシステム１０００において、トレースデータ２とアーキテクチャ設定情報４とを性能シミュレータ５に入力し、性能シミュレータ５を動作させることによって、性能シミュレータ５から評価対象のプロセッサに係る性能情報レポート８が出力される。
【００１４】
トレースデータ２は、事前に実機又はＩＳＳ（Instruction Set Simulator）等でプログラムを実行して取得した、実行順の命令３を含むデータファイルである。命令３は、ＰＣ（Program Counter）、命令、アドレス、データを示すデータである。アーキテクチャ設定情報４は、キャッシュサイズ、キャッシュプロトコル、パイプライン仕様等の評価対象のプロセッサに係るパラメータを示す。
【００１５】
性能シミュレータ５は、実際に命令を実行せずにパイプライン、メモリアクセス等のタイミングをシミュレーションする。性能シミュレータ５は、後述されるように、ソフトウェア又はハードウェアによって実現される。
【００１６】
性能情報レポート８は、ＣＰＩ（Clock per Instruction）、キャッシュヒット率等を含む性能評価結果を示す。
【００１７】
図１に示す性能シミュレータ５がソフトウェア（プログラム）で実現されるシステム１０００ａにおいて、そのソフトウェアを実行するためのコンピュータ装置１００ａのハードウェア構成を図２で示す。図２に示すシステム１０００ａでは、コンピュータ装置１００ａが性能シミュレータ５として動作するためのハードウェア構成が示される。
【００１８】
コンピュータ装置１００ａは、ＣＰＵ１１と、ＲＯＭ（Read-Only Memory）１２と、ＲＡＭ（Random Access Memory）１３と、ハードディスクドライブ１４と、入力装置１５と、出力装置１６と、通信Ｉ／Ｆ１７と、ドライブ１８とを有し、それらはバスＢに接続される。
【００１９】
ＣＰＵ１１は、ＲＯＭ１２又はＲＡＭ１３に格納されたプログラムに従ってコンピュータ装置１００ａを制御する。主記憶装置としてのＲＯＭ１２及びＲＡＭ１３は、ＣＰＵ１１にて実行されるプログラム、ＣＰＵ１１での処理に必要なデータ、ＣＰＵ１１での処理にて得られたデータ等を格納する。また、ＲＡＭ１３の一部の領域が、ＣＰＵ１１での処理に利用されるワークエリアとして割り付けられる。補助記憶装置としてのハードディスクドライブ１４には、各種処理を実行するプログラム等のデータが格納される。
【００２０】
記憶部３０は、ＲＯＭ１２、ＲＡＭ１３、ハードディスクドライブ１４等の記憶領域を有する。記憶部３０は、トレースデータ２、アーキテクチャ設定情報４、性能情報レポート８等を記憶する。
【００２１】
入力装置１５は、マウス、キーボード等を有し、ユーザがコンピュータ装置１００ａが処理を行なうための必要な各種情報を入力するために用いられる。出力装置１６は、ＬＣＤ（Liquid Crystal Display）又はＣＲＴ（Cathode Ray Tube）等の表示装置や、プリンタ等を有し、ＣＰＵ１１の制御のもとに必要な各種情報を表示、又は／及び、ユーザからの指示に応じて各種情報を出力する。性能情報レポート８が出力装置１６に表示又は／及び出力される。
【００２２】
通信Ｉ／Ｆ１７は、例えばインターネット、ＬＡＮ（Local Area Network）等に接続するためのインターフェースであり、外部装置との間の通信制御をするための装置である。
【００２３】
コンピュータ装置１００ａによって行われる処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）等の記憶媒体１９によってコンピュータ装置１００ａに提供される。即ち、プログラムが保存された記憶媒体１９がドライブ１８にセットされると、ドライブ１８が記憶媒体１９からプログラムを読み出し、その読み出されたプログラムがバスＢを介してハードディスクドライブ１４にインストールされる。そして、プログラムが起動されると、ハードディスクドライブ１４にインストールされたプログラムに従ってＣＰＵ１１がその処理を開始する。
【００２４】
尚、プログラムを格納する媒体としてＣＤ−ＲＯＭに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。コンピュータ読取可能な記憶媒体として、ＣＤ−ＲＯＭの他に、ＤＶＤディスク、ＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
【００２５】
また、コンピュータ装置１００ａによって行われる処理を実現するプログラムが、通信Ｉ／Ｆ１７を介して外部装置から提供されてもよい。或いは、外部装置へ該プログラムを提供し、後述される各処理は外部装置で実現されるように構成してもよい。通信Ｉ／Ｆ１７による通信は無線又は有線に限定されるものではない。
【００２６】
図３は、図２のコンピュータ装置１００ａの機能構成の概要を説明するための図である。図３では、複数コアの例として、ＣＰＵが４個の場合を例示しているが、個数を限定するものではない。以下の図においても同様である。
【００２７】
図３において、ＣＰＵ０〜ＣＰＵ３が評価対象である場合、各ＣＰＵ０〜ＣＰＵ３に対応するトレースデータ２００〜２０３が記憶部３０に用意され格納される。トレースデータ２００はＣＰＵ０用のトレースデータであり、トレースデータ２０１はＣＰＵ１用のトレースデータであり、トレースデータ２０２はＣＰＵ２用のトレースデータであり、トレースデータ２０３はＣＰＵ３用のトレースデータである。
【００２８】
コンピュータ装置１００ａは、ＣＰＵ１１が所定のプログラムを実行することによって性能シミュレーション部５０ａを実現する。性能シミュレーション部５０ａは性能シミュレータ５に相当する機能を行う処理部である。
【００２９】
性能シミュレーション部５０ａは、ハードウェア記述言語等で表現されたＣＰＵモデルとしての各ＣＰＵ０〜ＣＰＵ３等を有する。この例では、モデルとしてＣＰＵ０〜ＣＰＵ３のみを例示しているが、性能シミュレーション部５０ａは、メモリ、バス等のモデルを含んでいる。
【００３０】
トレースデータ２００〜２０３が、記憶部３０から性能シミュレーション部５０ａに入力されることによって、性能シミュレーション部５０ａが各ＣＰＵ０〜ＣＰＵ３の性能を評価する。性能シミュレーション部５０ａによる性能評価の結果を示す性能情報レポート８が、記憶部３０に出力され格納される。
【００３１】
次に、図１に示す性能シミュレータ５が専用装置等のハードウェアで実現されるシステム１０００ｂのハードウェア構成を図４で示す。図４に示すシステム１０００ｂは、コンピュータ装置１００ｂと、性能シミュレーション装置５０ｂとを有する。図４に示すコンピュータ装置１００ｂのハードウェア構成のうち、図２に示すコンピュータ装置１００ａと同様のハードウェアには同様の符号を付し、その説明を省略する。
【００３２】
図２に示すコンピュータ装置１００ａとの違いにおいて、コンピュータ装置１００ｂは、性能シミュレーション装置５０ｂに対して上位装置であるホストＰＣ（Personal Computer）であり、コンピュータ装置１００ａのハードウェア構成に加えて、更に、性能シミュレーション装置５０ｂと接続し通信するための性能シミュレーション装置Ｉ／Ｆ２０を有している。
【００３３】
性能シミュレーション装置Ｉ／Ｆ２０を介して、コンピュータ装置１００ｂの記憶部３０からトレースデータ２、アーキテクチャ設定情報４等が、性能シミュレーション装置５０ｂへ入力され、性能シミュレーション装置５０ｂによって性能評価が行われる。
【００３４】
性能シミュレーション装置５０ｂによって実行された性能評価の結果を示す性能情報レポート８は、性能シミュレーション装置Ｉ／Ｆ２０を介してコンピュータ装置１００ｂの記憶部３０に格納される。
【００３５】
性能シミュレーション装置５０ｂは、ＦＰＧＡ（Field-Programmable Gate Array）等の装置であり、上位装置としてのコンピュータ装置１００ｂから必要な情報を入力し、評価対象のプロセッサの性能を評価し、その結果を示す性能情報レポート８を出力する。
【００３６】
図５は、図４のシステム１０００ｂの構成概要を説明するための図である。図５において、性能シミュレーション装置５０ｂは、性能シミュレータ５と、Ｉ／Ｆ５１ｂと、Ｉ／Ｆ５２ｂとを有する。
【００３７】
性能シミュレータ５は、ハードウェア記述言語によるモデルとして表現されるＣＰＵ０〜ＣＰＵ３の各々の動作に合わせて夫々対応するトレースデータ２００〜２０３の命令３を読み込みながらシミュレーションを行う。
【００３８】
Ｉ／Ｆ５１ｂは、ホストＰＣであるコンピュータ装置１００ｂから各トレースデータ２００〜２０３を受信して性能シミュレータ５へ入力するためのインターフェースである。Ｉ／Ｆ５１ｂから入力されたトレースデータ２００〜２０３に従って、対応するＣＰＵ０〜ＣＰＵ３がシミュレーションされる。
【００３９】
Ｉ／Ｆ５２ｂは、性能シミュレータ５が行ったＣＰＵ０〜ＣＰＵ３の評価結果を示す性能情報レポート８を外部装置へ出力するためのインターフェースである。外部装置がコンピュータ装置１００ｂである場合、性能情報レポート８は、Ｉ／Ｆ５２ｂを介して、コンピュータ装置１００ｂへ転送されて記憶部３０に格納される。記憶部３０に格納された性能情報レポート８は、ＣＰＵ１１の制御によって、出力装置１６に結果表示として出力される。又は、Ｉ／Ｆ５２ｂがコンピュータ装置１００ｂ以外の結果表示用の外部装置に接続される場合には、性能情報レポート８が外部装置で表示されてもよい。
【００４０】
このようなシステム１０００ｂの構成では、各ＣＰＵ０〜ＣＰＵ３毎にホストＰＣのコンピュータ装置１００ｂとの経路を用意し、夫々の経路で独立にデータ転送を行う。従って、コア数が増えるに従ってPCI-Express等の転送経路で必要となるリソースが増加していくため、費用が掛かってしまう。
【００４１】
そこで、複数コアの夫々に対応するトレースデータ２００〜２０３を１つの経路で入力することが考えられる。図６は、複数コアのトレースデータを１つの経路で入力するための構成例を示す図である。
【００４２】
図６に示すシステム１０００ｃでは、複数コアに相当するＣＰＵ０〜ＣＰＵ３の夫々に対応するトレースデータ２００〜２０３は、１つの経路でＩ／Ｆ５１ｂに入力される。そのため、性能シミュレーション装置５０ｂは、トレース受信部６を更に有する。
【００４３】
性能シミュレーション装置５０ｂでは、記憶部３０にトレースデータ２ｂが用意され格納される。トレースデータ２ｂに含まれる命令３ｂは、性能シミュレータ５のＣＰＵ０〜ＣＰＵ３を特定するためのＣＰＵ番号、ＰＣ（Program Counter）、命令、アドレス、データ等を示す。
【００４４】
トレース受信部６は、振り分け処理部６ｂと、性能シミュレータ５のＣＰＵ０〜ＣＰＵ３の夫々に対応するバッファ０〜３とを有する。トレース受信部６は、ホストＰＣであるコンピュータ装置１００ｂからシリアルに転送されてくるトレースデータ２ｂを受信し、各命令３ｂのＣＰＵ番号に対応するＣＰＵ用のバッファに命令を書き込む処理を行う。書き込もうとしたバッファがフルの時には、それ以上、トレースデータ２ｂを読み込まずにそのバッファが空くまで待つ。
【００４５】
振り分け処理部６ｂは、Ｉ／Ｆ５１ｂを介して入力される各命令３ｂのＣＰＵ番号に基づいて、対応するバッファ０〜３の一つに格納する。例えば、命令３ｂのＣＰＵ番号がＣＰＵ０を指定する場合、命令３ｂはバッファ０に格納され、性能シミュレータ５のＣＰＵ０に与えられる。
【００４６】
トレースデータ２００〜２０３を１つの経路で転送する方法として、以下に説明する、転送時に複数コア（ＣＰＵ０〜ＣＰＵ３）の命令３ｂを並べ替える構成（図７）と、コア毎のトレースデータを予め格納しておくためのバッファを有する構成（図８）、複数コア（ＣＰＵ０〜ＣＰＵ３）間でトレースデータの命令３ｂを並べ替えて一つのトレースを作成しておく構成（図９）が考えられる。
【００４７】
図７は、転送時に命令を並べ替える構成例を示す図である。図７に示す構成では、ホストＰＣであるコンピュータ装置１００ｂは、転送処理部３３を有する。コンピュータ装置１００ｂでは、事前に命令３ｂを並べ替えることをせず、性能シミュレータ５からの各ＣＰＵ０〜３の命令フェッチ時に送信されるリクエストに応じて、転送処理部３３が、１命令単位で、対応するトレースデータから命令３ｂを取得する。
【００４８】
このような構成の場合、性能シミュレータ５がリクエストを出してから命令３ｂを含む応答があるまでの間、性能シミュレータ５の動作を停止しておくことで、実機と同じタイミングで実行することができる。しかし、１命令ごとにコンピュータ装置１００ｂ（ホストＰＣ）との間で転送を行うため、転送処理部３３による処理がボトルネックとなり実行速度を十分に得られない。
【００４９】
図８は、コア毎のバッファを有する構成例を示す図である。図８に示す構成では、性能シミュレーション装置５０ｂにおいて、トレース受信部６は、性能シミュレータ５のＣＰＵ０〜３の夫々に対応させてトレースサイズ分のバッファ０〜３を有する。
【００５０】
ＣＰＵ０〜３の夫々に対応するトレースデータ２００〜２０３は、性能シミュレータ５の動作が開始される前に、Ｉ／Ｆ５１ｂを介してコンピュータ装置１００ｂ（ホストＰＣ）から転送され、トレース受信部６のバッファ０〜３に格納される。しかし、この構成では、一般に、トレースデータのサイズが大きくなる（例えば、ＧＢ単位のサイズの）場合が多いため、性能シミュレーション装置５０ｂ側で全てを保持することは難しいと考えられる。
【００５１】
図９は、命令を並べ替えて一つのトレースを作成しておく構成例を示す図である。図９に示す構成では、性能シミュレータ５の動作の開始前に、コンピュータ装置１００ｂ（ホストＰＣ）側で、各ＣＰＵ０〜３の命令３ｂをトレースデータ２００〜２０３から並べ替えて一つの並べ替え済みトレースデータ２１０を、記憶部３０に用意しておく。
【００５２】
性能シミュレータ５の実行時には、コンピュータ装置１００ｂ（ホストＰＣ）の転送処理部３３は、一つの並べ替え済トレースデータ２１０の先頭から順に命令３ｂを転送するのみでよく、転送速度の低下を防ぐことができる。
【００５３】
次に、並べ替え済トレースデータ２１０に関して、複数コアの命令３を単純に並べ替えた例について説明する。図１０は、実機での命令の実行タイミングを説明するための図である。図１０において、ＣＰＵ０〜ＣＰＵ３の４つのＣＰＵで夫々ＣＰＵｎ−０からＣＰＵｎ−９までの順で、１０個の命令を実行し、各命令の位置は、実機の実行タイミング９を示している。
【００５４】
例えば、ＣＰＵ０の場合、クロックサイクル１でＣＰＵ０−０命令、サイクル３でＣＰＵ０−１命令、サイクル４でＣＰＵ０−２命令、サイクル６でＣＰＵ０−３命令、・・・のタイミングで実行される様子を示している。実行間隔が空く原因としては、キャッシュミス、データ依存待ち、分岐命令で分岐した場合等の様々な要因がある。
【００５５】
トレースデータでは命令間のタイミング情報を持たない。一方、実機の実行タイミング９では、同じ１０命令であっても、各命令の遅延がコア毎に異なり、命令フェッチのタイミングが異なる。
【００５６】
ＣＰＵ０からＣＰＵ３への順に、実行順序に従って、１命令ずつを取り出すこと（点線矢印の方向）を繰り返して、単純に並び替えた例を図１１で説明する。図１１は、単純に並べ替えたトレースデータを用いた実行タイミングを説明するための図である。
【００５７】
図１１において、並べ替え済トレースデータ２１０を用いた場合、図１０に示すように実際の命令実行時の遅延に加えて、並べ替えによるトレースの順序に依存した遅延が発生する。例えば、図１０に示す実機の実行タイミング９では、ＣＰＵ１−２命令よりも先にＣＰＵ２−２命令が実行されているが、図１１では、入力されたトレースの順序がＣＰＵ１−２−＞ＣＰＵ２−２となっているため、ＣＰＵ２−２命令はＣＰＵ１−２命令が実行されるまで入力できない状態となる。
【００５８】
また、トレースの順序に応じて遅延が追加されていき、実機の実行タイミング９と、性能シミュレーションによる実行タイミングとの誤差が大きくなっていく。
【００５９】
図１２は、実機と、図１１の並べ替え済トレースデータを用いた性能シミュレーションの場合の実行タイミングのずれを示す図である。実機と性能シミュレータ５とにおける実行タイミングの比較において、図１２（Ａ）はＣＰＵ０の実行タイミングのずれを示し、図１２（Ｂ）はＣＰＵ１の実行タイミングのずれを示し、図１２（Ｃ）はＣＰＵ２の実行タイミングのずれを示し、図１２（Ｄ）はＣＰＵ３の実行タイミングのずれを示している。
【００６０】
１０個の命令を終了した時点において、図１２（Ａ）では、性能シミュレータ５によるＣＰＵ０の性能シミュレーションは、実機と比べてｄ０遅れて終了している。図１２（Ｂ）では、性能シミュレータ５によるＣＰＵ１の性能シミュレーションは、実機と比べてｄ１遅れて終了している。図１２（Ｃ）では、性能シミュレータ５によるＣＰＵ２の性能シミュレーションは、実機と比べてｄ２遅れて終了している。図１２（Ｄ）では、性能シミュレータ５によるＣＰＵ３の性能シミュレーションは、実機と比べてｄ３遅れて終了している。
【００６１】
この例では、ＣＰＵ０〜３の夫々で実行タイミングのずれが発生しているが、性能シミュレーションの実行自体は完了している。
【００６２】
上述したような実行タイミングのずれに関して、マルチプロセッサの場合にはバリア同期命令等の複数のＣＰＵ間で同期を取る同期命令が使われる場合が多い。その場合、単純並べ替えで転送するとタイミングがずれるだけでなく、性能シミュレーションの途中で停止してしまう場合が発生する。その例を図１３で説明する。
【００６３】
図１３は、プログラムに同期命令が含まれる場合の実行タイミングを説明するための図である。図１３に示す実行タイミングにおいて、ＣＰＵ０−４命令、ＣＰＵ１−４命令、ＣＰＵ２−２命令、及びＣＰＵ３−６命令が同期命令である場合を示している。同期命令は、指定された複数のＣＰＵ間で同時に完了する必要がある。つまり、同期命令の次の命令は、同期するように全てのＣＰＵで同時に実行される。このような同期により、同じメモリ領域でデータ共有される場合にデータの正しいことを保証することができる。
【００６４】
図１３に示す実行タイミングにおいて、例えば、ＣＰＵ１がＣＰＵ１−３命令で共有メモリ領域にデータを書き込み、ＣＰＵ０、ＣＰＵ２、及びＣＰＵ３が前記命令による書き込みが確実に完了した後で、ＣＰＵ０−５命令、ＣＰＵ２−３命令、ＣＰＵ３−７命令によって、共有メモリ領域を読み出すために、ＣＰＵ０−４命令、ＣＰＵ１−４命令、ＣＰＵ２−２命令、ＣＰＵ３−６命令の同期命令が挿入されているとする。
【００６５】
この例では、最後の同期命令となるＣＰＵ１−４の実行後に、各ＣＰＵ０〜ＣＰＵ３で次の命令ＣＰＵ０−５、ＣＰＵ１−５、ＣＰＵ２−３、及びＣＰＵ３−７が実行される。
【００６６】
このような場合、図１１で説明した単純な並べ替えの方法では、図１３で示すように、同期命令によって各ＣＰＵ０〜ＣＰＵ３の処理が待ち状態になり、更に、性能シミュレータ５の動作が途中で停止してしまう場合がある。
【００６７】
図１４は、性能シミュレータ５の動作が停止してしまう場合を説明するための図である。図１４において、並べ替え済トレースデータ２１０からＣＰＵ０−０命令、ＣＰＵ１−０命令、ＣＰＵ２−０命令、ＣＰＵ３−０命令、ＣＰＵ０−１命令、・・・という順で性能シミュレーション装置５０ｂのトレース受信部６に入力され、各命令のＣＰＵ番号に従って対応するＣＰＵ用のバッファに振り分けられた後、性能シミュレータ５に入力される。図１４では、説明を簡潔にするため、バッファサイズを１命令分とする。
【００６８】
ＣＰＵ２−２命令を実行した後、全ての同期命令（ＣＰＵ０−４命令、ＣＰＵ１−４命令、及びＣＰＵ３−６命令）が実行されるまで、ＣＰＵ２では、次の命令（ＣＰＵ２−３）が実行されない。
【００６９】
並べ替え済トレースデータ２１０は、所定のＣＰＵの順に１命令ずつを繰り返して並べているため、ＣＰＵ２−２命令の後、ＣＰＵ３−２命令、ＣＰＵ０−３命令、ＣＰＵ１−３命令と順に入力された後、ＣＰＵ２−３命令がバッファ２に入った時点で、ＣＰＵ２は、他のＣＰＵ０、２及び３で同期命令（ＣＰＵ０−４命令、ＣＰＵ１−４命令、及びＣＰＵ３−６命令）が実行されるのを待つ状態となる。ＣＰＵ２は、命令フェッチを行わずに止まってしまう。
【００７０】
その後、更に、ＣＰＵ３−３命令、ＣＰＵ０−４命令、ＣＰＵ１−４命令と入力された後、ＣＰＵ２−４命令をバッファに入力できなくなり、そこで各ＣＰＵ０〜ＣＰＵ３による実行が止まり、性能シミュレータ５による性能シミュレーション全体の処理が停止してしまう。
【００７１】
発明者によって、上述したように、同期命令を含むトレースデータを単純に並べ替えて用いた場合に性能シミュレーションの処理が停止してしまう仕組みが解析された。そして、発明者は、以下に説明する本実施例に係るトレースデータ作成方法を見出した。
【００７２】
本実施例に係るトレースデータ作成方法について説明する。図１５は、トレースデータ作成方法の概要を説明するための図である。トレースデータ作成方法は、コンピュータ装置１００ａ又は１００ｂのＣＰＵ１１によって行われる。
【００７３】
図１５において、所定順に各ＣＰＵ０〜３のトレースデータ２００〜２０３からトレースされた順に１ずつ命令を取り出して転送用トレースデータ３００に追加する。その際、取り出した命令が同期命令の場合、同期命令の現われたＣＰＵのトレースデータから転送用トレースデータ３００への命令の追加を行わずにスキップして、全ての同期命令が転送用トレースデータ３００に追加された後、所定順に従って各トレースデータ２００〜２０３から同期命令以降の命令の転送用トレースデータ３００への追加を再開する。
【００７４】
図１５の例では、最初の同期命令ＣＰＵ２−２が現われて、全ての同期命令ＣＰＵ０−４、ＣＰＵ１−４、及びＣＰＵ３−６を転送用トレースデータ３００に追加するまでの、ＣＰＵ０−０からＣＰＵ３−６までが最初の同期命令ＣＰＵ２−２に基づく区切りとなり、同期命令ＣＰＵ２−２に対応する最後の同期命令ＣＰＵ３−６直後の区切り７で示している。
【００７５】
また、最後の同期命令ＣＰＵ３−６直後から、スキップした命令を含めて、所定順に各トレースデータ２００〜２０３から同期命令以降の命令を１ずつ取り出して、転送用トレースデータ３００に追加する。
【００７６】
従って、図１５の例では、最初の同期命令ＣＰＵ２−２の後には、全ての他ＣＰＵ１、３、及び４で同期命令が出現するまでＣＰＵ２の命令が含まれない。同期命令ＣＰＵ２−２の後に、同期命令ＣＰＵ０−４が出現すると、ＣＰＵ２及びＣＰＵ０以外の他ＣＰＵ１及び３で同期命令が出現するまでＣＰＵ０の命令が含まれない。
【００７７】
ＣＰＵ１及びＣＰＵ３においても同様である。そして、同期命令ＣＰＵ１−４と、同期命令ＣＰＵ３−６が出現することによって、転送用トレースデータ３００への命令の追加が、所定順で再開する。最後の同期命令ＣＰＵ３−６後に、ＣＰＵ０−５からＣＰＵ２−９までの命令が転送用トレースデータ３００に追加されることによって、同期命令後に実行されることになる。
【００７８】
トレース中に同期命令が現われるごとにこのように並べ替えを行うことによって、同期命令で区切られ、性能シミュレーションが停止することなく正常に動作する転送用トレースデータ３００を作成することができる。
【００７９】
図１６は、転送用トレースデータを作成するための機能構成例を示す図である。図１６に示す機能構成は、コンピュータ装置１００ａ又は１００ｂに実装される。コンピュータ装置１００ａ又は１００ｂは、マルチコア対応ＩＳＳ部３５と、トレース結合処理部３６とを転送用トレースデータ３００を作成するための処理部として有する。マルチコア対応ＩＳＳ部３５と、トレース結合処理部３６とは、ＣＰＵ１１が対応するプログラムを実行することによる処理によって実現される。
【００８０】
マルチコア対応ＩＳＳ部３５は、記憶部３０に格納されているマルチスレッドプログラム３４を読み込んで、命令セットレベルのシミュレーションを行う。その結果として、トレースデータＴＤ−１、ＴＤ−２、ＴＤ−３、・・・、ＴＤ−ｎが記憶部３０に出力され格納される。
【００８１】
トレース結合処理部３６は、所定順に、記憶部３０に格納されているトレースデータＴＤ−１、ＴＤ−２、ＴＤ−３、・・・、ＴＤ−ｎから命令を１つずつ読み出して、図１５で説明したトレースデータ作成方法によって、一つの転送用トレースデータ３００を作成して記憶部３０に格納する。処理を簡潔にするため、各トレースデータＴＤ−１、ＴＤ−２、ＴＤ−３、・・・、ＴＤ−ｎのファイル名に対応するＣＰＵ番号を含むようにして記憶部３０に格納してもよい。
【００８２】
トレース結合処理部３６によるトレース結合処理は、性能シミュレーションの実行の前に行われる。上述したように、トレース結合プログラムをＣＰＵ１１が実行することによって実現されるように、ソフトウェアで実現してもよいし、ハードウェアで実現してもよい。また、コンピュータ装置１００ａ及び１００ｂとは、別の装置で実現してもよい。
【００８３】
図１７は、トレース結合処理部によるトレース結合処理を説明するためのフローチャート図である。図１７において、トレース結合処理部３６は、トレースデータを選択するための所定順に従って、記憶部３０に記憶されたＣＰＵ番号７３のトレースデータからトレースされた順に命令３ｂを一つ読み込む（ステップＳ１１）。
【００８４】
選択の所定順は、命令３ｂを読み込む際のトレースデータを選択する順番をＣＰＵの番号で示す。例えば、各トレースデータのファイル名にＣＰＵ番号を含めておくことで、降順又は昇順などのＣＰＵの番号順に従って、トレースデータが選択されるようにすればよい。所定順がＣＰＵ０、ＣＰＵ１、ＣＰＵ２、・・・、ＣＰＵｎの順番（０、１、２、・・・、ｎ）である場合、ＣＰＵ０用のトレースデータ、ＣＰＵ１用のトレースデータ、ＣＰＵ２用のトレースデータ、・・・、ＣＰＵｎ用のトレースデータの順に選択される。
【００８５】
トレース結合処理部３６は、読み込んだ命令３ｂが同期命令か否かを判断する（ステップＳ１２）。命令３ｂが同期命令である場合、ＣＰＵ番号７３のフラグテーブル７１に同期フラグをセットして（ステップＳ１３）、命令３ｂを転送用トレースデータ３００に出力して格納する（ステップＳ１４）。
【００８６】
フラグテーブル７１は、記憶部３０に格納され、例えば、コア数分のビット数を少なくとも有するようにすればよい。ＣＰＵ番号と同期フラグとを対応付ければよい。同期フラグは、設定されることによって「１」を示す。即ち、ＣＰＵ番号に対応する同期フラグが「１」を示せば、読み出した命令が同期命令であったことを示す。また、ＣＰＵ番号に対応する同期フラグが「０」を示せば、未だ同期命令が読み出されていないことを示す。
【００８７】
一方、ステップＳ１２にて、読み込んだ命令が同期命令でないと判断した場合、トレース結合処理部３６は、記憶部３０に格納されているフラグテーブル７１を参照して、ＣＰＵ番号７３の同期フラグがセットされているか否かを判断する（ステップＳ１３−２）。同期フラグがセットされている場合、ＣＰＵ番号７３の同期用バッファ７２に読み出した命令３ｂを保存する（ステップＳ１４−２）。
【００８８】
同期用バッファ７２は、記憶部３０内に用意されたＣＰＵ番号毎の作業用のバッファ領域である。読み出された同期命令と同一ＣＰＵ番号を示す命令３ｂがトレースデータから読み出された場合、他ＣＰＵに対する全ての同期命令が検出されるまで、そのＣＰＵ番号の同期用バッファ７２に格納される。
【００８９】
ステップＳ１３−２にて、同期フラグがセットされていないと判断した場合、トレース結合処理部３６は、命令３ｂを転送用トレースデータ３００に出力し格納する（ステップＳ１４−４）。
【００９０】
ステップＳ１４、Ｓ１４−２、Ｓ１４−４の処理後、トレース結合処理部３６は、フラグテーブル７１を参照することによって、全てのＣＰＵに対して同期フラグがセットされたか否かを判断する（ステップＳ１５）。全てのＣＰＵに対して同期フラグがセットされている場合、トレース結合処理部３６は、全ての同期フラグをクリアする（ステップＳ１６）。全ての同期フラグが「０」に設定される。
【００９１】
そして、トレース結合処理部３６は、図１８に説明されるようなバッファ出力処理を実行する。バッファ出力処理の実行後、トレース結合処理部３６は、ステップＳ１８へと進む。
【００９２】
ステップＳ１５にて、全てのＣＰＵに対して同期フラグがセットされていないと判断した場合、又は、同期フラグが未セットのＣＰＵが存在すると判断した場合、トレース結合処理部３６は、所定順において、ＣＰＵ番号７３が最後の番号であるか否かを判断する（ステップＳ１８）。
【００９３】
ＣＰＵ番号７３が最後の番号であると判断した場合、トレース結合処理部３６は、ＣＰＵ番号７３を初期化して（ステップＳ１９）、ステップＳ２０へと進む。記憶部３０に格納されているＣＰＵ番号７３が、「０」に設定される。一方、ＣＰＵ番号７３が最後の番号ではないと判断した場合、トレース結合処理部３６は、ＣＰＵ番号７３を１インクリメントして（ステップＳ１９−２）、ステップＳ２０へと進む。
【００９４】
そして、トレース結合処理部３６は、全てのトレースの読み込みを完了したか否かを判断する（ステップＳ２０）。全てのトレースの読み込みが未完了であると判断した場合、トレース結合処理部３６は、ステップＳ１１へ戻り、記憶部３０に記憶されているＣＰＵ番号７３に基づいて、上述した同様の処理を繰り返す。
【００９５】
一方、ステップＳ２０にて、全てのトレースの読み込みを完了したと判断した場合、トレース結合処理部３６は、この処理を終了する。
【００９６】
図１８は、図１７のステップＳ１７でのバッファ出力処理を説明するための図である。図１８において、トレース結合処理部３６は、バッファ出力処理用のＣＰＵ番号７３−２を初期化して（ステップＳ５１）、ＣＰＵ番号７３−２の同期用バッファから命令３ｂを１つ読み込む（ステップＳ５２）。
【００９７】
トレース結合処理部３６は、読み込んだ命令を転送用トレースデータ３００に出力する（ステップＳ５３）。トレース結合処理部３６は、所定順において、ＣＰＵ番号７３−２が最後の番号であるか否かを判断する（ステップＳ５４）。
【００９８】
ＣＰＵ番号７３−２が最後の番号であると判断した場合、トレース結合処理部３６は、ＣＰＵ番号７３−２を初期化して（ステップＳ５５）、ステップＳ２０へと進む。記憶部３０に格納されているＣＰＵ番号７３−２が、「０」に設定される。一方、ＣＰＵ番号７３−２が最後の番号ではないと判断した場合、トレース結合処理部３６は、ＣＰＵ番号７３−２を１インクリメントして（ステップＳ５５−２）、ステップＳ５６へと進む。
【００９９】
そして、トレース結合処理部３６は、全ての同期用バッファ７２が空か否かを判断する（ステップＳ５６）。全ての同期用バッファ７２が空である場合、トレース結合処理部３６は、このバッファ出力処理を終了する。全ての同期用バッファ７２が空でない場合、トレース結合処理部３６は、ステップＳ５２へと戻り、上述した同様の処理を繰り返す。
【０１００】
上述したトレース結合処理部３６によるトレース結合処理によって、作成された転送用トレースデータ３００を用いた場合の実行タイミングについて、図１９及び図２０で説明する。図１９及び図２０では、図６に示す構成例において、トレースデータ３００を用いた場合で説明する。トレースデータ３００においても、命令３ｂのデータ構成は、トレースデータ２ｂの命令３ｂと同様である。
【０１０１】
図１９は、同期命令によって区切られた実行タイミングの例を示す図である。図１９において、トレース結合処理部３６によって作成された転送用トレースデータ３００が、性能シミュレーション装置５０ｂのトレース受信部６に入力されると、命令３ｂのＣＰＵ番号に対応するバッファに命令３ｂが格納される。
【０１０２】
性能シミュレータ５によってシミュレーションされる各ＣＰＵ０〜ＣＰＵ３は、夫々の対応するバッファ０〜バッファ３から命令３ｂを読み込んで実行する。最初の同期命令ＣＰＵ２−２をＣＰＵ２が実行すると、ＣＰＵ２は、他ＣＰＵ０、１及び３による同期命令の実行待ちとなる。
【０１０３】
次に、ＣＰＵ０で同期命令ＣＰＵ０−４を実行すると、ＣＰＵ０は他ＣＰＵ１及び３による同期命令の実行待ちとなる。更に、ＣＰＵ１で同期命令ＣＰＵ１−４を実行すると、ＣＰＵ１は他ＣＰＵ３による同期命令の実行待ちとなる。最後に、ＣＰＵ３で同期命令ＣＰＵ３−６を実行すると、全ての同期命令が実行済みとなり、各ＣＰＵ０〜３による命令フェッチが滞ることなく実行される。その時点が区切り７で示される。区切り７以降において、各ＣＰＵ０〜３によりトレースされた命令３ｂが順次実行される。
【０１０４】
図２０は、実機と、図１９の転送用トレースデータを用いた性能シミュレーションの場合の実行タイミングのずれを比較するための図である。実機と性能シミュレータ５とにおける実行タイミングの比較において、図２０（Ａ）はＣＰＵ０の実行タイミングのずれを示し、図２０（Ｂ）はＣＰＵ１の実行タイミングのずれを示し、図２０（Ｃ）はＣＰＵ２の実行タイミングのずれを示し、図２０（Ｄ）はＣＰＵ３の実行タイミングのずれを示している。
【０１０５】
１０個の命令を終了した時点において、図２０（Ａ）では、性能シミュレータ５によるＣＰＵ０の性能シミュレーションは、実機と比べてｄ２０遅れて終了している。図１２（Ｂ）では、性能シミュレータ５によるＣＰＵ１の性能シミュレーションは、実機と比べてｄ２１遅れて終了している。図１２（Ｃ）では、性能シミュレータ５によるＣＰＵ２の性能シミュレーションは、実機と比べてｄ２２遅れて終了している。図１２（Ｄ）では、性能シミュレータ５によるＣＰＵ３の性能シミュレーションは、実機と比べてｄ２３遅れて終了している。
【０１０６】
図２０（Ａ）から図１２（Ｄ）の夫々において、実機の実行タイミングにおける区切り７ａに対する、性能シミュレータ５による実行タイミングにおける区切り７ｂの遅延分の差が性能シミュレータ５にはある。しかしながら、トレース結合処理部３６によって作成された転送用トレースデータ３００を用いることによって、性能シミュレーションが途中で停止することなく実行できている。また、全ＣＰＵ０〜ＣＰＵ３の同期による実行タイミングについても、区切り７ｂに示すように実現できている。
【０１０７】
上述したように、複数のプロセッサ（ＣＰＵ）を搭載したシステムの性能評価において、同期命令毎に区切られるように、複数のＣＰＵ０〜ＣＰＵｎでトレースされた命令３ｂを並べ替えて一つのトレースデータ３００を作成することによって、同期命令を含むトレースに対しても、同期命令後の各プロセッサによる命令フェッチが滞りなく行われるため、性能シミュレーションが途中で停止することなく実行される。
【０１０８】
本実施例では、複数プロセッサのシステムを評価する性能シミュレーションのための転送用トレースデータを、複数プロセッサへの全同期命令後に次の命令が入力されるように複数のトレースを同期命令毎に区切って結合して作成する。
【０１０９】
本実施例に係る転送用トレースデータ３００は、図２、図６から図９の構成によって行われる性能シミュレーションのために適用可能である。コンピュータ装置１００ａ及び１００ｂは、以下に説明されるトレース結合装置に相当する。
【０１１０】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【０１１１】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
一つのシステムで動作する複数のプロセッサの夫々に対応する複数のトレースデータを記憶した記憶部と、
前記記憶部に記憶された前記複数のトレースデータの１つを所定順に従って選択し、各トレースデータからトレースされた命令を１つずつ読み込みながら同期命令毎に区切って並べ替え、前記記憶部内の転送用トレースデータに追加することによって、各プロセッサのトレースを結合するトレース結合処理部と
を有することを特徴とするトレース結合装置。
（付記２）
前記トレース結合処理部は、
前記記憶部の前記所定順に従って選択したトレースデータから命令を読み込む命令読込部と、
前記命令読込部によって読み込んだ命令が同期命令であるか否かを判断する同期命令判断部と、
前記同期命令判断部によって前記命令が同期命令でないと判断された場合、該命令がトレースされた前記プロセッサに対応させた同期用バッファに保存する命令保存部と、
全プロセッサ夫々に対応する前記複数のトレースデータから前記同期命令の読み出しが終了した場合、前記所定順に従って選択した前記同期用バッファから命令を１つずつ読み込み、前記転送用トレースデータへ出力して追加するバッファ出力部と
を有することを特徴とする付記１記載のトレース結合装置。
（付記３）
前記バッファ出力部による前記転送用トレースデータへの出力が終了すると、前記命令読込部による処理を再開することを特徴とする付記２記載のトレース結合装置。
（付記４）
前記同期命令判断部によって前記命令が同期命令であると判断された場合、前記記憶部内に格納される前記複数のプロセッサの夫々に対応する同期フラグを有するフラグテーブル内の、該命令がトレースされたプロセッサに対応する該同期フラグを設定するフラグ設定部と、
前記同期命令判断部によって前記命令が同期命令でないと判断された場合、前記フラグテーブルを参照することによって、該命令がトレースされたプロセッサに対応する該同期フラグが設定されているか否かを判断するフラグ判断部と、
前記フラグ判断部によって前記同期フラグが設定されていないと判断された場合、前記命令を前記転送用トレースデータへ出力して追加するフラグ未設定追加部と
を有することを特徴とする付記３記載のトレース結合装置。
（付記５）
前記同期命令判断部によって前記命令が同期命令でないと判断された場合であって、かつ、前記フラグ判断部によって前記同期フラグが設定されていると判断された場合に、該命令がトレースされた前記プロセッサに対応させた前記同期用バッファに保存する未設定命令保存部を有することを特徴とすることを特徴とする付記４記載のトレース結合装置。
（付記６）
前記同期命令判断部によって前記命令が同期命令であると判断され、前記フラグ設定部によって、前記フラグテーブル内の、該命令がトレースされたプロセッサに対応する該同期フラグが設定されると、該命令を前記転送用トレースデータへ出力して保存する設定後命令保存部を有することを特徴とする付記４又は５記載のトレース結合装置。
（付記７）
コンピュータによって実行されるトレース結合方法であって、
記憶部に記憶された一つのシステムで動作する複数のプロセッサの夫々に対応する複数のトレースデータから所定順に従ってトレースデータを選択し、
各トレースデータからトレースされた命令を１つずつ読み込みながら、同期命令毎に区切って並べ替えて、前記記憶部内の転送用トレースデータに追加することによって、各プロセッサのトレースを結合する
ことを特徴とするトレース結合方法。
（付記８）
記憶部に記憶された一つのシステムで動作する複数のプロセッサの夫々に対応する複数のトレースデータから所定順に従ってトレースデータを選択し、
各トレースデータからトレースされた命令を１つずつ読み込みながら、同期命令毎に区切って並べ替えて、前記記憶部内の転送用トレースデータに追加することによって、各プロセッサのトレースを結合する、
処理をコンピュータに実行させるプログラム。
（付記９）
記憶部に記憶された一つのシステムで動作する複数のプロセッサの夫々に対応する複数のトレースデータから所定順に従ってトレースデータを選択し、
各トレースデータからトレースされた命令を１つずつ読み込みながら、同期命令毎に区切って並べ替えて、前記記憶部内の転送用トレースデータに追加することによって、各プロセッサのトレースを結合する、
処理をコンピュータに実行させるプログラムを記憶したコンピュータ読取可能な記憶媒体。
【符号の説明】
【０１１２】
２、２ｂ      トレースデータ
３、３ｂ      命令
４            アーキテクチャ設定情報
５            性能シミュレータ
６            トレース受信部
７、７ａ、７ｂ  区切り
８            性能情報レポート
９            実機の実行タイミング
１１          ＣＰＵ
１２          ＲＯＭ
１３          ＲＡＭ
１４          ハードディスクドライブ
１５          入力装置
１６          出力装置
１７          通信Ｉ／Ｆ
１８          ドライブ
１９          記憶媒体
２０          性能シミュレーション装置Ｉ／Ｆ
３０          記憶部
３３          転送処理部
３４          マルチスレッドプログラム
３５          マルチコア対応ＩＳＳ部
３６          トレース結合処理部
５０ａ        性能シミュレーション部
５０ｂ        性能シミュレーション装置
５１ｂ、５２ｂ  Ｉ／Ｆ
７１          フラグテーブル
７２          同期用バッファ
７３          ＣＰＵ番号
１００ａ、１００ｂ  コンピュータ装置
２００、２０１、２０２、２０３  トレースデータ
２１０        並べ替え済トレースデータ
３００        転送用トレースデータ
【図１】
0005874433.tif 000002
【図２】
0005874433.tif 000003
【図３】
0005874433.tif 000004
【図４】
0005874433.tif 000005
【図５】
0005874433.tif 000006
【図６】
0005874433.tif 000007
【図７】
0005874433.tif 000008
【図８】
0005874433.tif 000009
【図９】
0005874433.tif 000010
【図１０】
0005874433.tif 000011
【図１１】
0005874433.tif 000012
【図１２】
0005874433.tif 000013
【図１３】
0005874433.tif 000014
【図１４】
0005874433.tif 000015
【図１５】
0005874433.tif 000016
【図１６】
0005874433.tif 000017
【図１７】
0005874433.tif 000018
【図１８】
0005874433.tif 000019
【図１９】
0005874433.tif 000020
【図２０】
0005874433.tif 000021