(57)【要約】【課題】サイクル精度がない動作シミュレーションに基づくプログラム性能の見積もりにおいて、コンピュータが動作を停止し、命令を実行していない区間に関する実行時間の見積もりを行うことができないという課題があった。【解決手段】プログラムの動作中のウェイトの発生と疑似タイマイベント発生の動作記録を取得し、ウェイトが発生しない区間からＳｏＣの仕様情報に基づき命令実行、キャッシュヒットとバスアクセスを解析することにより疑似タイマイベント間の動作時間を見積もり、ウェイトが発生する区間の疑似タイマイベント情報に基づきウェイトが発生した時間を見積もる。【選択図】図４
2010009175.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ上で動作するプログラムの動作性能を見積もるプログラム性能見積もり装置であって、
プログラムの動作に関する命令実行とデータアクセスに関する情報、ウェイトの発生とイベント発生の情報を取得するプログラム動作情報入力部と、
前記プログラム動作情報入力部から取得したプログラム動作情報のうち、ウェイトが発生する区間とウェイトが発生しない区間を判別し抽出するウェイト発生区間抽出部と、
前記ウェイト発生区間抽出部から取得したウェイトが発生しない区間のプログラム動作情報と、ＳｏＣの仕様情報に基づき、命令実行とストールを解析する命令実行解析部と、
前記ウェイト発生区間抽出部から取得したプログラム動作情報と、ＳｏＣの仕様情報に基づき、データアクセス要求に対するキャッシュヒットとバスアクセスを解析するバスアクセス解析部と、
前記命令実行解析部から命令実行解析結果と前記バスアクセス解析部からバスアクセス解析結果を取得し、前記命令実行解析部と前記バスアクセス解析部からイベント発生の情報を取得し、前記解析結果とストールサイクル情報に基づきイベント間の動作時間を見積もるイベント間見積もり部と、
前記イベント間見積もり部から取得したイベント間の動作時間と、前記ウェイト発生区間抽出部から取得したウェイトが発生した区間のプログラム動作情報に基づき、ウェイトが発生した時間を見積もるウェイト発生時間見積もり部を備えることを特徴とするプログラム性能見積もり装置。
【請求項２】
コンピュータ上で動作するプログラムの動作性能を見積もるプログラム性能見積もり方法であって、
プログラムの動作に関する命令実行とデータアクセスに関する情報、ウェイトの発生とイベント発生の情報を取得するプログラム動作情報入力ステップと、
前記プログラム動作情報入力部から取得したプログラム動作情報のうち、ウェイトが発生する区間とウェイトが発生しない区間を判別し抽出するウェイト発生区間抽出ステップと、
前記ウェイト発生区間抽出部から取得したウェイトが発生しない区間のプログラム動作情報と、ＳｏＣの仕様情報に基づき、命令実行とストールを解析する命令実行解析ステップと、
前記ウェイト発生区間抽出部から取得したプログラム動作情報と、ＳｏＣの仕様情報に基づき、データアクセス要求に対するキャッシュヒットとバスアクセスを解析するバスアクセス解析ステップと
前記命令実行解析部から命令実行解析結果と前記バスアクセス解析部からバスアクセス解析結果を取得し、前記命令実行解析部と前記バスアクセス解析部からイベント発生の情報を取得し、前記解析結果とストールサイクル情報に基づきイベント間の動作時間を見積もるイベント間見積もりステップと、
前記イベント間見積もり部から取得したイベント間の動作時間と、前記ウェイト発生区間抽出部から取得したウェイトが発生した区間のプログラム動作情報に基づき、ウェイトが発生した時間を見積もるウェイト発生時間見積もりステップとを備えることを特徴とするプログラム性能見積もり方法。
【請求項３】
コンピュータ上で動作するプログラムの動作性能を見積もるプログラム性能見積もりのプログラムであって、
プログラムの動作に関する命令実行とデータアクセスに関する情報、ウェイトの発生とイベント発生の情報を取得するプログラム動作情報入力ステップと、
前記プログラム動作情報入力部から取得したプログラム動作情報のうち、ウェイトが発生する区間とウェイトが発生しない区間を判別し抽出するウェイト発生区間抽出ステップと、
前記ウェイト発生区間抽出部から取得したウェイトが発生しない区間のプログラム動作情報と、ＳｏＣの仕様情報に基づき、命令実行とストールを解析する命令実行解析ステップと、
前記ウェイト発生区間抽出部から取得したプログラム動作情報と、ＳｏＣの仕様情報に基づき、データアクセス要求に対するキャッシュヒットとバスアクセスを解析するバスアクセス解析ステップと
前記命令実行解析部から命令実行解析結果と前記バスアクセス解析部からバスアクセス解析結果を取得し、前記命令実行解析部と前記バスアクセス解析部からイベント発生の情報を取得し、前記解析結果とストールサイクル情報に基づきイベント間の動作時間を見積もるイベント間見積もりステップと、
前記イベント間見積もり部から取得したイベント間の動作時間と、前記ウェイト発生区間抽出部から取得したウェイトが発生した区間のプログラム動作情報に基づき、ウェイトが発生した時間を見積もるウェイト発生時間見積もりステップとを備えることを特徴とするプログラム性能見積もりのプログラム。
【請求項４】
コンピュータ上で動作するプログラムの動作性能を見積もるプログラム性能見積もりのプログラムを記録した媒体であって、
プログラムの動作に関する命令実行とデータアクセスに関する情報、ウェイトの発生とイベント発生の情報を取得するプログラム動作情報入力ステップと、
前記プログラム動作情報入力部から取得したプログラム動作情報のうち、ウェイトが発生する区間とウェイトが発生しない区間を判別し抽出するウェイト発生区間抽出ステップと、
前記ウェイト発生区間抽出部から取得したウェイトが発生しない区間のプログラム動作情報と、ＳｏＣの仕様情報に基づき、命令実行とストールを解析する命令実行解析ステップと、
前記ウェイト発生区間抽出部から取得したプログラム動作情報と、ＳｏＣの仕様情報に基づき、データアクセス要求に対するキャッシュヒットとバスアクセスを解析するバスアクセス解析ステップと
前記命令実行解析部から命令実行解析結果と前記バスアクセス解析部からバスアクセス解析結果を取得し、前記命令実行解析部と前記バスアクセス解析部からイベント発生の情報を取得し、前記解析結果とストールサイクル情報に基づきイベント間の動作時間を見積もるイベント間見積もりステップと、
前記イベント間見積もり部から取得したイベント間の動作時間と、前記ウェイト発生区間抽出部から取得したウェイトが発生した区間のプログラム動作情報に基づき、ウェイトが発生した時間を見積もるウェイト発生時間見積もりステップとを備えることを特徴とするプログラム性能見積もりのプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、種々のコンピュータアーキテクチャにおいて実行されるプログラムの性能を見積もる技術に関するものである。
【背景技術】
【０００２】
コンピュータ上で実行されるプログラムの性能は、主にそのプログラムの動作とコンピュータの仕様により決定される。実在しないコンピュータ上で動作するプログラムの性能を計測することができないので、新規のコンピュータの仕様によるプログラム性能の変化を把握するためには、何らかの見積もり手段が必要になる。
【０００３】
そのような見積もり手段として、一般にハードウェアエミュレータ、あるいはサイクル精度のソフトウェアのシミュレータを利用する手段が知られている。これは、コンピュータの仕様を擬似的に設定可能であり、設定したコンピュータの動作クロックに応じた振る舞いを正確にシミュレートし、プログラムの実行に要した総サイクル数を算出するものである。
【０００４】
しかし、一般的にハードウェアエミュレータ、あるいはサイクル精度のソフトウェアのシミュレータは低速で動作することから、実用上のプログラムの性能を見積もるのに必要とする時間がかかるという欠点があった。
【０００５】
上記背景のもとで、サイクル精度ではなく、ＣＰＵの動作を命令の順序を保証することのみで、動作速度が高速なシミュレーションを行い、全命令の実行時間の合計を算出する技術が開示されている（例えば、特許文献１参照）。プログラム、データ初期値、実行開始番地及び実行終了番地を入力とし、ＣＰＵの全命令の実行トレースを行い、パイプラインストールとキャッシュ方式とキャッシュサイズに関する情報を用いてヒット率シミュレーションを実施する。その結果得られたトレース情報にストールペナルティを加えて実行クロック数を求め、キャッシュミスによる実行時間の増加を見積もる技術が開示されている。その中で特に、割り込み処理に起因するキャッシュミスの増加等に基づいて生じる実行時間の増加を考慮し、見積もりに反映していた。
【特許文献１】特開２０００−２７６３８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、一般にプログラムの動作中には、コンピュータが動作を停止し、実行している命令の処理を停止することがある。例えば、プログラムの実行中にコンピュータと接続している他の機器に処理を要求し、他の機器の処理を待つ場合、コンピュータ自身が停止処理を行い、何らかの起動トリガを発生するまで命令の実行を停止し待つ場合などがある。
【０００７】
前記従来の技術は、コンピュータのシミュレートによる全命令の実行トレースに基づき性能を見積もっており、プログラムの動作中に、コンピュータが動作を停止し、命令を実行していない区間の実行時間を見積もることができない。つまり、プログラムの動作全体に対する性能を見積もることができないという課題を有していた。
【０００８】
本発明は、前記従来の課題を解決するもので、コンピュータが動作を停止している区間に対する性能見積もりを可能にし、プログラムの動作全体に対する性能を見積もることを可能にするプログラム性能見積もり装置の提供を目的とする。
【課題を解決するための手段】
【０００９】
前記従来の課題を解決するために、本発明のプログラム性能見積もり装置は、コンピュータ上で動作するプログラムの動作性能を見積もるプログラム性能見積もり装置であって、プログラムの動作に関する命令実行とデータアクセスに関する情報、ウェイトの発生とイベント発生の情報を取得するプログラム動作情報入力部と、前記プログラム動作情報入力部から取得したプログラム動作情報のうち、ウェイトが発生する区間とウェイトが発生しない区間を判別し抽出するウェイト発生区間抽出部と、前記ウェイト発生区間抽出部から取得したウェイトが発生しない区間のプログラム動作情報と、ＳｏＣの仕様情報に基づき、命令実行とストールを解析する命令実行解析部と、前記ウェイト発生区間抽出部から取得したプログラム動作情報と、ＳｏＣの仕様情報に基づき、データアクセス要求に対するキャッシュヒットとバスアクセスを解析するバスアクセス解析部と、前記命令実行解析部から命令実行解析結果と前記バスアクセス解析部からバスアクセス解析結果を取得し、前記命令実行解析部と前記バスアクセス解析部からイベント発生の情報を取得し、前記解析結果とストールサイクル情報に基づきイベント間の動作時間を見積もるイベント間見積もり部と、前記イベント間見積もり部から取得したイベント間の動作時間と、前記ウェイト発生区間抽出部から取得したウェイトが発生した区間のプログラム動作情報に基づき、ウェイトが発生した時間を見積もるウェイト発生時間見積もり部を備えることを特徴とする。
【００１０】
上記の構成により、ウェイト発生区間とウェイト発生しない区間を判別し、ＳｏＣ仕様に基づくイベント間の性能見積もりを用いて、ウェイト発生区間の性能見積もりを可能にし、プログラムの動作全体に対する性能を見積もることができる。
【発明の効果】
【００１１】
本発明のプログラム性能見積もり装置によれば、コンピュータが動作を停止している区間に対する性能見積もりを可能にし、プログラムの動作全体に対する性能を見積もることができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００１３】
図１は、本発明の実施の形態におけるプログラム性能見積もり装置を備えた情報処理装置の構成を示す図である。この情報処理装置１０００は、それ自体としてユーザの使用に供することもできるが、様々な電気機器に組み込まれてもよい。情報処理装置１０００の一例は、代表的にはＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ；パーソナルコンピュータあるいはパソコン）等の汎用のコンピュータである。ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｃｅ）あるいは携帯電話機等の携帯通信端末でもよい。
【００１４】
情報処理装置１０００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央演算処理部）１、メモリ装置２、通信装置３４、入力装置４０、表示装置４５、タイマ回路５１及び割り込みコントローラ５５を備えている。これらの装置は、バスライン５０を通じて互いに接続されている。また、必要に応じて、バスライン５０には、ハードディスク装置２５及び読み取り装置３２を接続することが可能となっている。ハードディスク装置２５、読み取り装置３２、入力装置４０及び表示装置４５は、それぞれ、インタフェース２６、３５、４１及び４６を通じてバスライン５０に接続される。
【００１５】
ＣＰＵ１は、単一のＣＰＵで構成されても良く、複数のＣＰＵで構成されてもよい。一例として、情報処理装置１０００は、複数のＣＰＵ１１、１２、１３、・・・を有するものとする。メモリ装置２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２１及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２２を備えている。ＲＯＭ２１は、ＣＰＵ１の動作を規定するコンピュータプログラム及びデータを記憶している。コンピュータプログラム及びデータは、ハードディスク装置２５に記憶させることもできる。ＣＰＵ１は、ＲＯＭ２１又はハードディスク装置２５が格納するコンピュータプログラム及びデータを、必要に応じてＲＡＭ２２に書き込みつつ、コンピュータプログラムが規定する処理を実行する。ＲＡＭ２２は、ＣＰＵ１が処理を実行するのに伴って発生するデータを一時的に記憶する媒体としても機能する。ＲＯＭ２１には、フラッシュＲＯＭのように書き込みが可能で、電源を切っても記憶内容を保持できる不揮発性のメモリと記憶媒体も含まれる。ＲＡＭ２２には、電源を切ると記憶内容が保持されない揮発性のメモリと記憶媒体が含まれる。
【００１６】
ハードディスク装置２５は、内蔵する不図示のハードディスクへ、コンピュータプログラム、あるいはデータを書き込み及び読み出す装置である。読み取り装置３２は、記録媒体３１（例えばＣＤ、ＤＶＤ、メモリカードなど）に記録されたコンピュータプログラム、あるいはデータを読み取る装置である。通信装置３４は、電話回線、ネットワーク線、無線、赤外線通信等の通信回線３３を通じて、外部と自身との間で、コンピュータプログラム、あるいはデータを交換する装置である。入力装置４０は、ユーザの操作によりデータ等を入力する装置であり、例えば、ＰＤＡに配列されたキーボード、携帯電話機に配列された入力ボタン、あるいは着脱自在のマウス、キーボードである。表示装置４５は、データ、画像等を画面に表示したり、データ等を音声で出力したりする装置であり、例えばＬＣＤ（Ｌｉｇｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ；液晶表示器）、ブラウン管、スピーカである。
【００１７】
タイマ回路５１は、一定の周期でタイマ割り込み信号を出力する装置である。割り込みコントローラ５５は、タイマ回路５１、入力装置４０、ＣＰＵ１、ネットワークデバイスとしての通信装置３４、ハードディスク装置２５、読み取り装置３２等から送られる割り込み要求信号を、ＣＰＵ１へ中継する装置である。各装置からの割り込み要求には優先度が付けられている。割り込みコントローラ５５は、同時に複数の装置から割り込みが発生した場合には、それらの要求を優先度に応じて調停する機能を有している。
【００１８】
以上のように、情報処理装置１０００は、コンピュータとして構成されている。上記コンピュータプログラムは、ＲＯＭ２１、ハードディスク装置２５、不図示のフレキシブルディスク、ＣＤ−ＲＯＭ等のプログラム記録媒体３１を通じて供給することも、電気通信回線３３等の伝送媒体を通じて供給することも可能である。例えば、プログラム記録媒体３１（ＣＤ−ＲＯＭ）に記録されたコンピュータプログラムは、読み取り装置３２を情報処理装置１０００へ接続することで、読み出すことができる。また、読み出したコンピュータプログラムを、ＲＡＭ２２あるいはハードディスク装置２５に格納することができる。
【００１９】
プログラム記録媒体としてＲＯＭ２１からコンピュータプログラムが供給される場合には、当該ＲＯＭ２１を情報処理装置１０００に搭載することにより、ＣＰＵ１は上記コンピュータプログラムに従った処理を実行可能となる。電気通信回線３３等の伝送媒体を通じて供給されるコンピュータプログラムは、通信装置３４を通じて受信され、例えば、ＲＡＭ２２あるいはハードディスク装置２５に格納される。伝送媒体は、有線の伝送媒体に限られず、無線の伝送媒体であってもよい。また、伝送媒体は通信線路のみでなく、通信線路を中継する中継装置、例えばルータをも含む。
【００２０】
プログラム性能見積もり機能の実体は、メモリ装置２あるいはハードディスク装置２５に格納され、ＣＰＵ１と協働して実行することにより、プログラム性能見積もり装置を実現している。
【００２１】
図２は、プログラム動作ログを出力するプログラム疑似動作装置７０の構成を示すブロック図である。プログラム動作ログは、プログラム性能見積もり装置８０に出力され、プログラム性能見積もり装置８０は、プログラム動作ログを用いて、性能見積もりを行う。プログラム疑似動作装置７０は、典型的にはコンピュータ、プロセッサ、デバイスのハードウェアの動作を模擬するシミュレータあるいはエミュレータと、そのシミュレータあるいはエミュレータ上で動作するプログラムから成る。プログラム疑似動作装置７０は、特にサイクル精度による動作のシミュレートを要求されず、実行する命令を模擬するものであればよい。さらには、プログラム疑似動作装置７０は、実際のハードウェアであるコンピュータ、プロセッサ、デバイスそのものであってもよい。
【００２２】
プログラム疑似動作装置７０は、プログラムを疑似的に動作させ、プログラム性能見積もり装置８０がプログラムの動作性能を見積もるのに必要な情報を、動作記録であるログとして出力する。なお、プログラム疑似動作装置７０が出力するプログラム動作ログは、必ずしもファイルなどの形式で二次記憶装置上に格納する必要はなく、プログラム性能見積もり装置８０に渡せる形式であればよい。
【００２３】
図２を参照し、プログラム疑似動作装置７０の構成を説明する。
【００２４】
命令実行検出部２０１は、プログラムが動作している際に、コンピュータあるいはＣＰＵなどのプロセッサ上で実行される命令の実行を検出する。命令実行検出部２０１は、例えばシミュレータあるいはエミュレータに備わる命令の実行を監視する機能を利用し、実行される命令をすべて検出することが可能である。ＣＰＵなどのプロセッサに転送された命令でありながら、最終的に条件により実行されない命令も検出することが可能である。
【００２５】
また、命令実行検出部２０１は、検出開始と終了のトリガを外部から受け、指定された開始から終了までの区間における命令の実行を検出する。
【００２６】
命令実行検出部２０１は、命令の実行を検出した後、実行番地であるプログラムカウンタ、実行命令コード、プロセッサの動作モードに応じた識別子などをプログラム動作ログ出力部２０６に渡す。また、命令実行検出部２０１は、命令実行に関する動作ログであることを示す識別子、開始から終了までの区間における命令実行の回数をプログラム動作ログ出力部２０６に渡すこともできる。また、命令実行検出部２０１は、命令の実行番地であるプログラムカウンタを命令フェッチ要求検出部２０２に渡すことができる。
【００２７】
また、命令実行検出部２０１は、実行命令コードを解析し、何の命令であるかを判断した上で出力を変える機能を有してもよい。例えば、検出した命令が分岐命令であった場合、プログラム性能の見積もりに反映させるために、命令実行検出部２０１は、分岐命令であることを示す識別子を、プログラム動作ログ出力部２０６に出力することが可能となる。また、検出した命令が、ロード命令またはストア命令などの、外部の記憶装置へのアクセスを要求する命令である場合、命令実行検出部２０１は、データアクセス要求検出部２０３に実行命令コードを出力することが可能となる。
【００２８】
命令フェッチ要求検出部２０２は、命令実行時後部２０１からプログラムカウンタを受け取り、命令フェッチ要求の発生を検出する。つまり、命令フェッチ要求検出部２０２は、事前に指定された命令フェッチ単位長を超えるプログラムカウンタになった場合に、命令フェッチ要求が発生すると見なして命令フェッチ要求の記録をプログラム動作ログ出力部２０６に通知する。
【００２９】
データアクセス要求検出部２０３は、命令実行検出部２０１から渡された実行命令コードを解析し、解析した結果をプログラム動作ログ出力部２０６に通知する。ここでの解析した結果とは、データアクセスを要求する番地、読み出し（ｒｅａｄ）であるか書き込み（ｗｒｉｔｅ）かの判定、及び要求するデータサイズ、なお、図２では、データアクセス要求検出部２０３は、命令実行検出部２０１から実行命令コードを受け取って解析している。別の構成として、データアクセス要求検出部２０３が、シミュレータあるいはエミュレータに備わる機能であるデータアクセスを監視する機能を利用し、直接データアクセス要求を検出し、データアクセス要求に関係する情報を取得してもよい。
【００３０】
ウェイト発生監視部２０４は、命令実行検出部２０１から実行番地であるプログラムカウンタまたは実行命令コードなどの情報を受け取り、命令の実行を停止するタイミングであるか否かを判定する。ウェイト発生監視部２０４は、停止するタイミングと判定した場合、命令の実行を停止したことを示す情報を、プログラム動作ログ出力部２０６に通知する。なお、ウェイト発生監視部２０４は、実行命令コードの解析結果を用いて、命令の実行を停止する命令であるかどうかを判定することができる。また、受け取ったプログラムカウンタを用いて、ほかのデバイスまたは機器を待つための関数の呼び出しまたはモジュールの実行であることを判定することができる。これは、コンピュータまたはプロセッサが命令の実行を停止し待ち状態に入るのは、特定の命令を実行する場合またはプログラムの動作中に実行される特定の関数またはモジュールを実行するためである。
【００３１】
疑似タイマ記録部２０５は、疑似的なタイマを動作させ、プログラム疑似動作装置７０の疑似環境下の時間情報をプログラム動作ログ出力部２０６に通知する。例えば、プログラム疑似動作装置７０そのものが動作するコンピュータに接続するタイマ回路を利用することができる。このタイマ回路が、実世界で一定の時間間隔でイベントを発生させることにより、プログラム疑似動作装置７０上の世界に、疑似的に一定の時間間隔のイベントを発生させる。疑似タイマ記録部２０５は、疑似的なタイマイベントを受けると、プログラム動作ログ出力部２０６に疑似的なタイマイベントの発生を通知する。また、タイマイベント発生時に、その時のタイムスタンプをプログラム動作ログ出力部２０６に通知することも可能である。
【００３２】
プログラム動作ログ出力部２０６は、命令実行検出部２０１、命令フェッチ要求検出部２０２、データアクセス要求検出部２０３、ウェイト発生監視部２０４、疑似タイマ記録部２０５から情報を受け取り、プログラム動作ログを生成する。また、プログラム動作ログ出力部２０６は、生成したプログラム動作ログを、プログラム性能見積もり装置８０に出力する。なお、プログラム動作ログは、受け取った情報が発生した順序関係を把握できる形式であるものとする。
【００３３】
以上の構成により、本発明のプログラム擬似動作装置７０は、ウェイト発生監視部２０４と疑似タイマ記録部２０５から取得する情報を用いて、命令の実行停止時間を見積もるのに必要な情報を、プログラム動作ログとして出力できる。このプログラム動作ログを受け取ったプログラム性能見積もり装置８０は、命令を実行している区間だけでなく、コンピュータが動作を停止している区間に対する性能見積もりを可能とする。これにより、プログラムの動作全体に対する性能を見積もることができる。このコンピュータが停止している区間は、プログラムの実行中にコンピュータと接続しているほかの機器に処理を要求し、ほかの機器の処理完了を待つ時間を含んでいる。また、コンピュータ自身が停止処理を行い、何らかの起動トリガを発生するまで命令の実行を停止し待つ時間を含んでいる。
【００３４】
また、プログラム疑似動作装置７０は、プログラムをサイクル精度でシミュレートし動作させるものではないので、プログラム疑似動作装置７０の疑似環境下の時間情報が必要となる。そのため、疑似タイマ記録部２０５により疑似的なタイマを動作させ、プログラム疑似動作装置７０の疑似環境下の時間情報をプログラム動作ログ出力部２０６に通知することにより、疑似的な時間情報をプログラム動作ログに含めることができる。
【００３５】
図３は、プログラム疑似動作装置７０が出力しプログラム性能見積もり装置８０に入力するプログラム動作ログに記される情報の一例である。図３では、１行で一つのログ情報を示しており、プログラム動作ログに記される情報９０は、発生した順序に従って、５つのログ情報（２５１〜２５５）が上から並んでいる。各ログ情報は、識別子と、補助情報とから構成されている。
【００３６】
識別子は、動作ログの種別を識別するための情報である。識別できるのであれば、補助情報に含まれるほかの情報を用いて、識別してもよい。例えば、命令フェッチ要求に関する情報（図３の２５２）は、アクセス種別により命令フェッチ要求の情報であることを特定しても問題はない。
【００３７】
補助情報は、識別子に応じて必要となる情報が異なっている。
【００３８】
ログ情報２５１は、命令実行検出部２０１からプログラム動作ログ出力部２０６に渡される情報の一例である。プログラムカウンタ値と実行命令種別が記される。実行命令種別は、実行命令コードを解析した後に命令を特定する識別情報を記してもよいし、実行命令コードを解析せずに記録してもかまわない。
【００３９】
ログ情報２５２は、命令フェッチ要求検出部２０２からプログラム動作ログ出力部２０６に渡される情報の一例である。命令フェッチを要求しているアドレスと、命令フェッチであることを示すアクセス種別と、命令フェッチで要求しているサイズが記される。
【００４０】
ログ情報２５３は、データアクセス要求検出部２０３からプログラム動作ログ出力部２０６に渡される情報の一例である。データアクセスを要求しているアドレスと、データアクセスの要求が読み込み（ｒｅａｄアクセス）であるか書き出し（ｗｒｉｔｅアクセス）であるかを判別するアクセス種別と、データアクセスで要求しているサイズが記される。
【００４１】
ログ情報２５４は、ウェイト発生監視部２０４からプログラム動作ログ出力部２０６に渡される情報の一例である。命令の実行が停止するウェイトが発生したことを示すウェイト発生イベント発生記録と、ウェイト種別が記される。ウェイト種別は、プログラムが自らコンピュータまたはプロセッサを停止モードにしたかどうか、あるいはほかの機器またはデバイスに対する何の要求を出して待ちに入っているのかを示す。
【００４２】
ログ情報２５５は、疑似タイマ記録部２０５からプログラム動作ログ出力部２０６に渡される情報の一例である。疑似タイマからのイベントが発生したことを示す疑似タイマイベント発生記録と、疑似タイマからのイベントが発生した時刻を示すタイムスタンプが記される。
【００４３】
図３に示すプログラム動作ログに記される情報９０は、一例であり、同等の情報が別の形式に加工されていても、プログラム性能見積もり装置８０の動作に支障はない。
【００４４】
また、実際にはプログラム動作ログは、プログラムの動作として記録される一連の情報が発生した順序関係を特定できる形式で記録される。最も単純には、発生した順序の時系列により、プログラム動作の情報が記されていればよい。
【００４５】
図４は、本発明の実施の形態におけるプログラム性能見積もり装置８０の構成を示すブロック図である。
【００４６】
プログラム性能見積もり装置８０は、プログラム動作ログ入力部３０１、ウェイト発生区間抽出部３０３、ＣＰＵバス仕様入力部、命令実行解析部３０５、バスアクセス解析部３０６、ストールサイクル管理部３０７、擬似タイマ時間見積もり部３０８、通常処理時間見積もり部３０９、ウェイト発生時間見積もり部３１０、見積もり時間提示部３１１を備えている。
【００４７】
プログラム動作ログ入力部３０１は、プログラム疑似動作装置７０からプログラム動作ログを受け取り、受け取ったプログラム動作ログをウェイト発生区間抽出部３０３に出力する。
【００４８】
ウェイト発生区間抽出部３０３は、プログラム動作ログに含まれる各ログ情報が、ウェイト発生区間に発生したプログラム動作か否かを判定する。ウェイト発生区間に発生したプログラム動作と判定した場合、ウェイト発生区間抽出部３０３は、対応するログ情報を、ウェイト発生時間見積もり部３１０に通知する。また、ウェイトが発生していない通常動作区間に発生したプログラム動作と判定した場合、ウェイト発生区間抽出部３０３は、対応するログ情報を命令実行解析部３０５、及びバスアクセス解析部３０６に通知する。
【００４９】
ＣＰＵバス仕様入力部３０４は、見積もり対象のプログラムを動作させることを想定するコンピュータ、プロセッサ、あるいはＣＰＵに関する仕様、種々のキャッシュアーキテクチャ、バスアーキテクチャの仕様を読み込み、その情報を命令実行解析部３０５、バスアクセス解析部３０６、ストールサイクル管理部３０７に通知する。つまり、ＣＰＵバス仕様入力部３０４は、見積もり対象のＳｏＣの仕様情報を読み込み、各処理部（３０５、３０６、３０７）が必要とする情報を抽出して、通知を行う。
【００５０】
命令実行解析部３０５、バスアクセス解析部３０６及びストールサイクル管理部３０７は、上述のＣＰＵバス仕様入力部３０４から、解析に必要なＣＰＵとキャッシュアーキテクチャ仕様の情報を取得して動作する。
【００５１】
ストールサイクル管理部３０７は、ＣＰＵ関連の情報と、キャッシュ関連のストールサイクルに関する情報と、外バス関連のストールサイクルに関する情報などをストールサイクル管理情報として管理し、保持している。ストールサイクル管理部３０７は、ＣＰＵバス仕様入力部３０４から取得した仕様に基づいて、見積もりに使用するストール数の情報を、擬似タイマ時間見積もり部３０８と通常処理時間見積もり部３０９に通知する。
【００５２】
命令実行解析部３０５は、ウェイト発生区間抽出部３０３からログ情報を、ＣＰＵバス仕様入力部３０４からＣＰＵ仕様情報を取得し、命令実行に関するプログラム動作を解析する。具体的には、命令の実行回数と分岐命令の実行回数、パイプラインハザードによるストールサイクル回数を算出する。なお、命令実行解析部３０５が取得するログ情報は、例えば、図３のログ情報２５１であり、プログラムカウンタ値と実行命令コードの情報を得る。また、命令実行解析部３０５は、取得したログ情報に含まれる擬似タイマイベント発生記録を用いて、算出した値と擬似タイマイベントとを対応付け、通常処理時間見積もり部３０９と疑似タイマ時間見積もり部３０８に解析情報を通知する。
【００５３】
バスアクセス解析部３０６は、ウェイト発生区間抽出部３０３からログ情報を、ＣＰＵバス仕様入力部３０４からキャッシュ仕様情報を取得し、命令フェッチ及びデータアクセスに関する解析を行う。具体的は、キャッシュヒット回数を算出する。なお、バスアクセス解析部３０６が取得するログ情報は、例えば、図３のログ情報２５２、ログ情報２５３である。また、バスアクセス解析部３０６は、取得したログ情報に含まれる疑似タイマイベント発生記録を用いて、算出した値と擬似タイマイベントとを対応付け、通常処理時間見積もり部３０９と疑似タイマ時間見積もり部３０８に解析情報を通知する。
【００５４】
疑似タイマ時間見積もり部３０８は、命令実行解析部３０５とバスアクセス解析部から解析情報を取得し、ストールサイクル管理部３０７からストール数の情報を取得し、擬似タイマイベント区間のプログラム動作時間を算出する。また、擬似タイマ時間見積もり部３０８は、算出したプログラム動作時間と、対象としている疑似タイマイベントと対応付け、ウェイト発生時間見積もり部３１０に通知する。
【００５５】
ウェイト発生時間見積もり部３１０は、コンピュータが他の機器の処理を待つ場合や、何らかの起動トリガを発生するまで命令の実行を停止し待つ場合の動作時間を見積もる。
【００５６】
ウェイト発生時間見積もり部３１０は、ウェイトが発生した際のプログラム動作であるとウェイト発生区間抽出部３０３が判断したプログラム動作ログの情報を取得する。ウェイト発生時間見積もり部３１０は、そのプログラム動作ログの情報から疑似タイマイベントが発生した回数を計算する。
【００５７】
また、ウェイト発生時間見積もり部３１０は、疑似タイマ時間見積もり部３０８が各疑似タイマイベント区間に対して算出した動作時間を取得し、その各疑似タイマイベント区間に動作時間に基づき疑似タイマイベント区間あたりの動作時間を算出する。典型的には、全ての各疑似タイマイベント区間の動作時間の平均値、あるいは中央値、あるいは最頻値を疑似タイマイベント区間あたりの動作時間と判断してもよいし、分布の偏りを考慮して上位と下位のサンプルを何パーセントか削除した上で平均値、あるいは中央値を疑似タイマイベント区間あたりの動作時間と判断してもよい。
【００５８】
ウェイト発生時間見積もり部３１０は、上記算出した疑似タイマイベント区間あたりの動作時間と、プログラム動作ログに基づき計算した疑似タイマイベントの発生回数との積により、ウェイト発生区間抽出部３０３から取得したプログラム動作全体においてコンピュータが待ちにより停止した時間であると見なし、その時間をウェイト発生時間として見積もり時間提示部３１１に通知する。これにより、コンピュータが待ちの発生により停止している処理区間に対して停止時間を見積もることが可能になる。
【００５９】
通常処理時間見積もり部３０９は、命令実行解析部３０５から命令時実行回数、分岐命令回数、ストール回数の情報などの命令実行に関するプログラム動作の解析情報を取得し、バスアクセス解析部からキャッシュヒット回数と外バスアクセス情報などの命令フェッチ及びデータアクセスに関する解析情報を取得し、解析情報の全体のプログラム動作時間を算出し、見積もり時間提示部３１１に通知する。
【００６０】
通常処理時間見積もり部３０９は、疑似タイマ時間見積もり部３０８と同様の動作を行う。動作が異なる点は、疑似タイマ時間見積もり部３０８が疑似タイマイベント間の動作時間を算出しているのに対し、通常処理時間見積もり部３０９は命令実行解析部３０５及びバスアクセス解析部３０６から取得するプログラム動作の解析情報全体に対して動作時間を算出する点である。通常処理時間見積もり部３０９は、プログラム動作の解析情報全体に対し、ＣＰＵ実行時間及び各レベルのキャッシュヒットに要する時間及び外バスアクセス時間を算出し、その合計をプログラムが待ちに入らず動作している通常処理時間であると判断し、見積もり時間提示部３１１に通知する。
【００６１】
あるいは、通常処理時間見積もり部３０９はプログラム動作の解析情報全体ではなく、指定されるタイマイベント間の動作時間を算出することも可能である。例えば、疑似タイマのタイムスタンプにより動作時間を見積もる区間の開始と終了を指定し、指定される区間に対して上記と同様に通常処理時間を算出し、見積もり時間提示部３１１に通知する。この場合、疑似タイマ時間見積もり部３０８は、開始と終了を示すタイムスタンプの区間に存在する疑似タイマイベントの発生回数を計算し、疑似タイマイベント区間あたりの動作時間との積により、指定された開始から終了までの区間のウェイト発生時間を見積もり、見積もり時間提示部３１１に通知する。
【００６２】
見積もり時間提示部３１１は、通常処理時間見積もり部３０９から取得したプログラムが動作している通常処理時間と、ウェイト発生時間見積もり部３１０から取得したウェイト発生時間を合算し、プログラム疑似動作装置７０から取得したプログラム動作ログ全体においてコンピュータが待ちにより停止している時間を含め、プログラム動作時間として出力することができる。このプログラム動作時間がプログラム性能見積もり値である。
【００６３】
以上により、本発明のプログラム性能見積もり装置８０は、命令を実行している区間だけでなく、コンピュータが動作を停止している区間に対する見積もりを可能にする。これにより、サイクル精度がない動作シミュレーションに基づくプログラム性能の見積もりにおいて、プログラムの動作全体の性能を見積もることができる。
【００６４】
図５は、ウェイト発生区間抽出部３０３の処理フローを示している。ウェイト発生区間抽出部３０３は、プログラム動作ログ入力部３０１からプログラム動作ログを受け取り、最初の疑似タイマイベントの発生記録を確認することで、処理を開始する。
【００６５】
ウェイト発生区間抽出部３０３は、現在の疑似タイマイベントの記録から、次に発生する疑似タイマイベントの記録までの区間に存在するプログラム動作ログを確認する（Ｓ３２１）。プログラム動作ログを確認とは、対象のログ情報の内容を確認することを意味する。
【００６６】
ウェイト発生区間抽出部３０３は、現在の疑似タイマイベントの区間内に、ウェイト発生イベントのログ情報が存在するか否かを判定する（Ｓ３２２）。
【００６７】
ウェイト発生イベントのログ情報が存在する場合（Ｓ３２２でＹｅｓ）、ウェイト発生区間抽出部３０３は、現在の疑似タイマイベント区間のプログラム動作を、ウェイトが発生した際のプログラム動作であると判断する。そして、対応するログ情報をウェイト発生時間見積もり部３１０に通知する（Ｓ３２５）。
【００６８】
一方、ウェイト発生イベントの記録が存在しない場合（Ｓ３２２でＮｏ）、ウェイト発生区間抽出部３０３は、現在の疑似タイマイベントの区間内に、ほかのプログラム動作のログ情報が存在するかを判定する（Ｓ３２３）。なお、ここで存在を判定するのは、プログラムカウンタの値、命令フェッチ、データアクセスなどのログ情報である。ほかのプログラム動作のログ情報が存在する場合（Ｓ３２３でＹｅｓ）、ウェイト発生区間抽出部３０３は、現在の疑似タイマイベント区間のログ情報を命令実行解析部３０５、及びバスアクセス解析部３０６に通知する（Ｓ３２４）。
【００６９】
また、ほかのプログラム動作のログ情報が存在しない場合（Ｓ３２３でＮｏ）、ウェイト発生区間抽出部３０３は、現在の疑似タイマイベント区間のプログラム動作を、ウェイトが発生した際のプログラム動作であると判断する。そして、対応するログ情報をウェイト発生時間見積もり部３１０に通知する（Ｓ３２５）。
【００７０】
なお、プログラム動作ログの先頭から最初の疑似タイマイベントの記録までの間に発生しているプログラム動作のログ情報に関して、ウェイト発生時間見積もり部３１０は、ウェイトが発生していない通常動作区間であると判断する。そして、この区間のプログラム動作のログ情報を、命令実行解析部３０５、及びバスアクセス解析部３０６に通知すればよい。また、最後の疑似タイマイベントの記録からプログラム動作ログの最後尾までに発生しているプログラム動作のログ情報に関して、ウェイト発生時間見積もり部３１０は、ウェイトが発生していない通常動作区間であると判断する。そして、この区間のプログラム動作ログの情報を、命令実行解析部３０５、及びバスアクセス解析部３０６に渡せばよい。
【００７１】
図６は、ＣＰＵバス仕様入力部３０４が読み込む情報の一例を示している。図６の４０１は、ＣＰＵに関する仕様の情報をまとめて記すもので、その中にはクロック周波数（４０２）、実行並列度（４０３）、分岐予測方式（４０４）、バイパス回路の有無（４０５）に関する情報などが含まれる。
【００７２】
クロック周波数４０２は、ＣＰＵの動作の最小単位であるクロックが単位時間あたりどの程度供給されるのかを示す値であり、典型的にはＭＨｚまたはＧＨｚの単位に基づいて、ＣＰＵのクロック周波数の値が記される。
【００７３】
実行並列度４０３にはＣＰＵが命令をどの程度並列に実行することができると想定するかを記すことができ、例えば、１クロックあたりの命令の実行回数を平均的に記してもよく、命令に応じて並列に実行できるかどうかの情報を記してもよい。命令に応じた実行並列度の情報を記す場合、並列に実行可能である命令が何であるかを実行命令コードに基づいて判断できる情報が記されていればよい。
【００７４】
分岐予測方式４０４は、ＣＰＵが備える分岐予測機能に関する情報を示し、分岐予測機能の有無、あるいは分岐予測の方式の種別が記される。また、バイパス回路有無４０５は、ＣＰＵのパイプラインハザードが起きた際に、迂回して前段にデータを送るバイパス回路の有無の情報を記されている。
【００７５】
図７は、ＣＰＵバス仕様入力部３０４が読み込む情報の一例を示している。図７の４５１は、キャッシュアーキテクチャ仕様の情報をまとめて記す物で、その中には使用有無（４５２）、方式（４５３）、ｗａｙ数（４５４）、ブロック数（４５５）、ラインサイズ（４５６）、置換アルゴリズム（４５７）、ダーティビット管理（４５８）に関する情報などが含まれる。
【００７６】
キャッシュは記憶媒体である外部デバイスとの間に介在する小容量で高速な記憶媒体であり、複数の段数分を実装することができる。そのため、プログラム性能を見積もる上で想定するキャッシュの構成に応じ、複数段のキャッシュアーキテクチャ仕様の情報を読み込むことが可能である。また、複数段分のキャッシュ構成を想定し、レベル１のキャッシュアーキテクチャ仕様だけではなく、レベル２、レベル３、またはそれ以上の段数に関しても、同様にキャッシュアーキテクチャ仕様の情報を読み込むことができる。
【００７７】
キャッシュの使用有無４５２は、そのレベルのキャッシュを使用するかどうかを示す情報が記される。
【００７８】
キャッシュの方式４５３は、命令フェッチとデータアクセスの双方を扱う統合型（ユニファイド）キャッシュであるか、命令フェッチとデータアクセスを分離して別々に扱う分離型（ハーバード）キャッシュであるかの情報が記される。
【００７９】
ｗａｙ数４５４、ブロック数４５５、ラインサイズ４５６は、キャッシュの総容量を決めるパラメータである。キャッシュにヒットするかミスするかを判定する基準のサイズをラインサイズ４５６として、典型的にはバイト（ｂｙｔｅ）の単位で記される。また、ブロック数４５５は、１つのラインサイズをブロック数１として、１ｗａｙあたりのラインサイズの総個数に相当する値が記される。ｗａｙ数４５４は、キャッシュにヒットするかミスするかを、並列に判定することができるラインサイズ×ブロック数のキャッシュが幾つ備わっているかを示す。
【００８０】
置換アルゴリズム４５７は、ＬＲＵ、ランダム置換など、どの置換アルゴリズムを使用するかを記す。ダーティビット管理４５８は、キャッシュラインに対する書き込みが発生した場合に、キャッシュラインの中でどの単位でダーティビットを管理するかを示す。
【００８１】
また、ＣＰＵバス仕様入力部３０４は、ＣＰＵ仕様とキャッシュ仕様のみならず、接続しているバスの種別と、バス幅またはバースト長などのバス仕様に関しても情報を読み込むことができる。
【００８２】
図８は、ストールサイクル管理部３０７が管理するストールサイクル管理情報の一例を示している。図８の４７１は、ストールサイクル管理情報をまとめて記すもので、その中にはＣＰＵ関連の情報、キャッシュ関連のストールサイクルに関する情報、外バス関連のストールサイクルに関する情報などが含まれる。
【００８３】
ストールサイクル管理部３０７は、ＣＰＵバス仕様入力部３０４からクロック周波数４０２の値を取得し、クロック周波数４７２として管理する。ＣＰＩ４７３は１つの命令に対しＣＰＵが動作するサイクル数を示す。あらかじめ定数値を与えてもよいが、ストールサイクル管理部３０７は条件に応じて、疑似タイマ時間見積もり部３０８及び通常処理時間見積もり部３０９に通知するストール管理情報を変化させることが可能である。例えば、ストールサイクル管理部３０７は、ＣＰＵ−ＡとＣＰＵ−Ｂの２種類のＣＰＵ種別に応じＣＰＩの値を管理する。ストールサイクル管理部３０７は、ＣＰＵバス仕様入力部３０４が読み込んだＣＰＵ仕様の実行並列度４０３が示すＣＰＵ種別に応じＣＰＩの値を選択し、疑似タイマ時間見積もり部３０８及び通常処理時間見積もり部３０９に通知することが可能である。
【００８４】
また、その他のストールサイクル管理情報に関しても、ストールサイクル管理部３０７はＣＰＵバス仕様入力部３０４から取得する仕様の条件に応じ、変化させることができる。ＣＰＵは一般にパイプライン実行されるので、分岐命令が実行された結果、後続のアドレス以外にジャンプすることになると、それまでパイプラインに積んでいた、後続のアドレスの命令が無駄になる。そのため、分岐ペナルティ４７４がストール数として加算される。ストールサイクル管理部３０７は、分岐ペナルティ４７４に関しても、分岐予測機能がない場合、あるいは分岐予測機能がある場合に、その種別ごとに、分岐ペナルティを管理する。ＣＰＵバス仕様入力部３０４のＣＰＵ仕様の情報から、分岐予測方式の情報を取得すると、それに応じて分岐ペナルティの情報を疑似タイマ時間見積もり部３０８及び通常処理時間見積もり部３０９に通知する。
【００８５】
また、ストールサイクル管理部３０７は、レジスタ競合ストール４７５も同様に、ＣＰＵのバイパス回路の有無によりストール数を管理する。ＣＰＵバス仕様入力部３０４から取得するバイパス回路有無４０５の情報に応じて、ストール数の情報を疑似タイマ時間見積もり部３０８及び通常処理時間見積もり部３０９に通知する。
【００８６】
ストールサイクル管理部３０７は、キャッシュ関連のストール情報も管理する。基準クロック周波数４７７には、キャッシュ関連のストールサイクル数が、どの周波数のサイクルベースで記されているかを示す周波数値が管理される。キャッシュ関連のＣＰＵ関連のクロック周波数４７２を利用してもかまわない。
【００８７】
ストールサイクル管理部３０７は、レベル１キャッシュヒット時にストール４７８またはレベル２キャッシュヒット時のストール４７９のように、キャッシュのレベルに応じて、キャッシュヒット時のストール数を管理することができる。キャッシュのレベル数増加に応じて管理することも可能である。
【００８８】
また、レベル１キャッシュヒット時のストール情報もアクセスの条件に応じて管理することも可能である。例えば、リード（ｒｅａｄ）アクセスによる場合とライト（ｗｒｉｔｅ）アクセスによる場合に分けて、ストール情報を管理してもよい。
【００８９】
ストールサイクル管理部３０７は、さらに外バス関連のストール情報も管理する。基準クロック周波数４８０は、外バス関連のストールサイクル数が、どの周波数のサイクルベースで記されているかを示す周波数値が管理される。デバイス１のストール４８１またはデバイス２のストール４８２のように、外バス関連のストール情報には、コンピュータと接続される外部デバイスのストール情報が管理される。
【００９０】
ストールサイクル管理部３０７は、デバイスごとに条件に応じてストール情報を管理することが可能である。例えば、キャッシュラインのサイズが変更されれば転送サイズが変化し、それに応じてストールサイクル数が変化する。また、バス幅またはバースト長が変更されれば一度に転送するサイズが変化するので、それに応じてストールサイクル数が変化する。したがって、ストールサイクルキャッシュ仕様またはバスの仕様に応じて種々のストール情報を管理し、適切なストール数の情報を、疑似タイマ時間見積もり部３０８及び通常処理時間見積もり部３０９に通知することができる。
【００９１】
図９は、命令実行解析部３０５の処理フローを示している。
【００９２】
命令実行解析部３０５は、ウェイト発生区間抽出部３０３から実行命令コードの情報を取得し（Ｓ５０１）、ＣＰＵバス仕様入力部３０４からＣＰＵ仕様の情報を取得する（Ｓ５０２）。
【００９３】
命令実行解析部３０５は、実行される順序で先頭の命令の実行命令コードを対象に選択する（Ｓ５０３）。
【００９４】
命令実行解析部３０５は、現在の実行命令コード、及び先だって実行された実行命令コードを解析し、指定されている命令であるかどうかを判定する（Ｓ５０４）。この判定は、ステップＳ５０２で取得したＣＰＵ仕様の情報に命令の実行並列度の情報が含まれ、並列に実行可能である命令が何であるかを実行命令コードに基づいて判断できる情報がある場合に可能である。
【００９５】
先だって実行された命令と並列に実行可能ではない場合（Ｓ５０４でＮｏ）、命令実行解析部３０５は、その命令を実行するのに必要なサイクル数を消費すると判断する。命令実行解析部３０５は、管理する命令実行回数の値を加算し（Ｓ５０５）、ステップＳ５０６に移る。
【００９６】
先だって実行された命令と並列に実行可能である場合（Ｓ５０４でＹｅｓ）、命令実行解析部３０５は、現在の実行命令コードを解析し、分岐命令であるかどうかを判定する（Ｓ５０６）。その結果、現在の命令が分岐命令であると判定した場合（Ｓ５０６でＹｅｓ）、命令実行解析部３０５は、管理する分岐命令回数の値を加算し（Ｓ５０７）、ステップＳ５０８に移る。
【００９７】
現在の命令が分岐命令ではないと判定した場合（Ｓ５０６でＮｏ）、命令実行解析部３０５は、現在の実行命令コードを解析し、先だって実行された命令とデータ依存関係に基づいて、ストールが発生するかどうかを判定する（Ｓ５０８）。その結果、ストールが発生すると判定した場合（Ｓ５０８でＹｅｓ）、命令実行解析部３０５は、管理するストール回数の値を加算し（Ｓ５０９）、ステップＳ５１０に移る。
【００９８】
ストールが発生しないと判定する場合（Ｓ５０８でＮｏ）、命令実行解析部３０５は、現在の命令が最後の実行命令コードであるかどうかを判定する（Ｓ５１０）。最後の実行命令コードではないと判定する場合（Ｓ５１０でＮｏ）、次に実行される実行命令コードを対象にし（Ｓ５１１）、ステップＳ５０４に戻り処理を繰り返す。最後の実行命令コードである場合（Ｓ５１０でＹｅｓ）、命令実行解析部３０５は、算出した命令実行回数、分岐命令回数及びストール回数を、通常時間見積もり部３０２及び疑似タイマ時間見積もり部３０８に通知する（Ｓ５１２）。
【００９９】
図１０は、バスアクセス解析部３０６の処理フローを示している。
【０１００】
バスアクセス解析部３０６は、ウェイト発生区間抽出部３０３から命令フェッチに関する情報とデータアクセスに関する情報を取得し（Ｓ５３１）、ＣＰＵバス仕様入力部３０４からキャッシュ仕様情報を取得する（Ｓ５３２）。バスアクセス解析部３０６は、取得したキャッシュ仕様情報を最小のレベルのキャッシュから順に使用有りに指定されているキャッシュ仕様情報を探し、使用有りに指定される、最小のレベルのキャッシュ仕様情報を取得する（Ｓ５３３）。
【０１０１】
ウェイト発生区間抽出部３０３は、Ｓ５３１で取得したすべての命令フェッチに関する動作ログ情報とデータアクセスに関する動作ログ情報を対象にする（Ｓ５３４）。次に、Ｓ５３３で取得したキャッシュ仕様情報に記されるキャッシュの方式が、統合型（ユニファイド）キャッシュであるか、分離型（ハーバード）キャッシュであるか判定する（Ｓ５３５）。
【０１０２】
キャッシュの方式が統合型である場合（Ｓ５３５でＹｅｓ）、Ｓ５３４で対象にした命令フェッチ及びデータアクセスに関する動作ログ情報が分離されていれば、順序関係を損なわず併合する（Ｓ５３６）。その後、取得したキャッシュ仕様情報に基づきキャッシュシミュレートし、キャッシュヒット回数を算出し（Ｓ５３７）、ステップＳ５４０に移る。キャッシュ仕様情報には、キャッシュのｗａｙ数、ブロック数、ラインサイズ、置換アルゴリズム、ダーティビット管理などを含んでいる。
【０１０３】
キャッシュの方式が統合型ではない場合（Ｓ５３５でＮｏ）、Ｓ５３４で対象にした命令フェッチ及びデータアクセスに関する動作ログ情報が併合されていれば、命令フェッチとデータアクセスに分離する（Ｓ５３８）。なお、ここでは、順序関係を損なわない形式で分離するものとする。その後、命令キャッシュとデータキャッシュの各々のキャッシュ仕様情報に基づきキャッシュシミュレートし、キャッシュヒット回数を算出し（Ｓ５３９）、ステップＳ５４０に移る。
【０１０４】
バスアクセス解析部３０６は、使用有りに指定される、次のレベルのキャッシュ仕様情報を探し存在するか判定する（Ｓ５４０）。次のキャッシュ仕様情報が存在すれば（Ｓ５４０でＹｅｓ）、そのキャッシュ使用情報を取得する（Ｓ５４１）。その後、ステップＳ５３４あるいはステップＳ５３９のキャッシュシミュレートによりキャッシュミスしたアクセスを対象にし（Ｓ５４２）、ステップＳ５３５に移る。
【０１０５】
次のキャッシュ仕様情報が存在しなければ（Ｓ５４０でＮｏ）、バスアクセス解析部３０６は、キャッシュシミュレートを実施した、各レベルのキャッシュのキャッシュヒット回数と、最終的にキャッシュミスし外バスに出るアクセスの情報を、通常処理時間見積もり部３０９と疑似タイマ時間見積もり部３０８に通知する（Ｓ５４３）。
【０１０６】
図１１は、疑似タイマ時間見積もり部３０８の処理フローを示している。
【０１０７】
疑似タイマ時間見積もり部３０８は、命令実行解析部３０５から命令実行に関するプログラム動作の解析情報を取得し、バスアクセス解析部から命令フェッチ及びデータアクセスに関する解析情報を取得する（Ｓ６０１）。なお、命令実行に関する解析情報とは、命令時実行回数、分岐命令回数、ストール回数の情報などである。また、命令フェッチ及びデータアクセスに関する解析情報とは、キャッシュヒット回数と外バスアクセス情報などである。この解析情報には、命令実行解析部３０５及びバスアクセス解析部３０６から出力される、疑似タイマイベントの記録に関する情報も含まれる。
【０１０８】
疑似タイマ時間見積もり部３０８は、ストールサイクル管理部３０７からストールサイクル管理情報を取得する（Ｓ６０２）。
【０１０９】
疑似タイマ時間見積もり部３０８は、命令実行解析部３０５及びバスアクセス解析部３０６から取得する解析情報に含まれる、疑似タイマイベントの記録のうち、先頭の記録を選択し処理を開始する（Ｓ６０３）。典型的には時系列で、疑似タイマイベントの記録及び解析情報の処理を実施する。しかし、どの疑似タイマイベント間の解析情報を処理したかを管理し、すべての疑似タイマイベント間の解析情報を対象にするのであれば、時系列で処理しなくてもかまわない。
【０１１０】
次に、疑似タイマ時間見積もり部３０８は、現在選択している疑似タイマイベントの記録から、その次に発生する疑似タイマイベントを検出し、その擬似タイマイベントまでの区間の解析情報を対象にする（Ｓ６０４）。
【０１１１】
疑似タイマ時間見積もり部３０８は、命令実行解析部３０５から取得した解析情報と、ストールサイクル管理部３０７から取得したストールサイクル管理情報に基づき、プログラムの動作時間のうちＣＰＵ実行時間を算出する（Ｓ６０５）。なお、命令実行解析部３０５から取得した解析情報とは、命令実行回数、分岐命令回数、ストール回数の情報などである。また、ストールサイクル管理情報とは、ＣＰＵクロック周波数、ＣＰＩ値、分岐ペナルティ、レジスタ競合ストールの情報などである。典型的には、命令実行回数とＣＰＩ値を積算し、クロック周波数により除算することにより命令実行時間を算出する。また、分岐命令回数と分岐ペナルティのサイクル数を積算しクロック周波数により除算することにより分岐ペナルティによる時間を算出する。さらに、ストール回数とレジスタ競合ストールのサイクル数を積算し、クロック周波数により除算することによりパイプラインのストール時間を算出する。これらを合計することで、対象区間のＣＰＵ実行時間を算出することができる。
【０１１２】
疑似タイマ時間見積もり部３０８は、バスアクセス解析部３０６から取得した解析情報と、ストールサイクル管理部３０７から取得したストールサイクル管理情報に基づき、プログラムの動作時間のうち各レベルのキャッシュヒット時間を算出する（Ｓ６０６）。なお、バスアクセス解析部３０６から取得した解析情報とは、各レベルのキャッシュヒット回数である。また、ストールサイクル管理部３０７から取得したストールサイクル管理情報とは、基準クロック周波数とキャッシュヒット時のストールの情報などである。典型的には、各レベルのキャッシュヒット回数と各レベルのキャッシュヒット時のストールサイクル数を積算し、基準クロック周波数により除算することにより、対象区間の各レベルのキャッシュヒットに要する時間を算出する。
【０１１３】
疑似タイマ時間見積もり部３０８は、バスアクセス解析部３０６から取得した解析情報と、ストールサイクル管理部３０７から取得したストールサイクル管理情報に基づき、各デバイスのアクセス時間を算出する（Ｓ６０７）。なお、バスアクセス解析部３０６から取得した解析情報とは、外バスアクセス情報である。また、ストールサイクル管理部３０７から取得したストールサイクル管理情報とは、基準クロック周波数とデバイスのストール情報などである。典型的には、外バスアクセス情報として一つ一つのアクセス要求がどのアドレスに対するアクセス要求であるかを把握し、各デバイスが配置されているアドレス空間に照らして、どのデバイスにアクセスするかを判定する。次に、アクセスするデバイスのストールサイクル管理情報を参照し、当該アクセス要求にかかるストールサイクル数と判断する。疑似タイマ時間見積もり部３０８は、現在対象にしている解析情報に含まれるすべての外バスアクセスに、どのデバイスに対するアクセスであるかを判定する。疑似タイマ時間見積もり部３０８は、アクセスするデバイスのストールサイクル数を用いて、その総和を外バスアクセスに要するサイクル数とし、基準クロック周波数により除算することにより対象区間の外バスアクセス時間を算出する。
【０１１４】
疑似タイマ時間見積もり部３０８は、ステップＳ６０５で算出したＣＰＵ実行時間と、Ｓ６０６で算出した各レベルのキャッシュヒットに要する時間と、及びＳ６０６で算出した外バスアクセス時間を合計して動作時間を算出する。その後、疑似タイマ時間見積もり部３０８は、現在対象としている疑似タイマイベントの記録として一意に識別できるように、算出した動作時間を例えばタイムスタンプと対応付け、ウェイト発生時間見積もり部３１０に通知する（Ｓ６０９）。
【０１１５】
以上により、本発明のプログラム性能見積もり装置は、命令を実行している区間だけでなく、コンピュータが動作を停止している区間に対する見積もりを可能にする。これにより、サイクル精度がない動作シミュレーションに基づくプログラム性能の見積もりにおいて、プログラムの動作全体の性能を見積もることができる。
【０１１６】
なお、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【産業上の利用可能性】
【０１１７】
本発明にかかるプログラム性能見積もり装置は、コンピュータが動作を停止している区間に対する見積もりを行う機能を有し、情報処理装置などとして有用である。また、情報機器、ＡＶ機器、通信機器、家電機器などの組み込み機器の開発ツールとして有用である。
【図面の簡単な説明】
【０１１８】
【図１】本発明の実施の形態におけるプログラム性能見積もり装置を備えた情報処理装置の構成を示す図
【図２】本発明の実施の形態におけるプログラム疑似動作装置の構成を示すブロック図
【図３】本発明の実施の形態におけるプログラム動作ログに記される情報の一例を示す図
【図４】本発明の実施の形態におけるプログラム性能見積もり装置の構成を示すブロック図
【図５】本発明の実施の形態におけるウェイト発生区間抽出部の動作手順の一例を示すフローチャート
【図６】本発明の実施の形態におけるＣＰＵバス仕様入力部が読み込むＣＰＵ仕様情報の一例を示す図
【図７】本発明の実施の形態におけるＣＰＵバス仕様入力部が読み込むキャッシュ仕様情報の一例を示す説明図
【図８】本発明の実施の形態におけるストールサイクル管理部が管理するストールサイクル管理情報の一例を示す図
【図９】本発明の実施の形態における命令実行解析部の動作手順の一例を示すフローチャート
【図１０】本発明の実施の形態におけるバスアクセス解析部の動作手順の一例を示すフローチャート
【図１１】本発明の実施の形態における疑似タイマ時間見積もり部の動作手順の一例を示すフローチャート
【符号の説明】
【０１１９】
１，１１，１２，１３    ＣＰＵ
２    メモリ装置
１０    プログラム性能見積もり装置
２１    ＲＯＭ
２２    ＲＡＭ
２５    ハードディスク装置
２６，３５，４１，４６    インタフェース
３１    記録媒体
３２    読み取り装置
３３    電気通信回線
３４    通信装置
４０    入力装置
４５    表示装置
５０    バスライン
５１    タイマ回路
５５    割り込みコントローラ
７０    プログラム擬似動作装置
８０    プログラム性能見積もり装置
２０１    命令実行検出部
２０２    命令フェッチ要求検出部
２０３    データアクセス要求検出部
２０４    ウェイト発生監視部
２０５    疑似タイマ記録部
２０６    プログラム動作ログ出力部
３０１    プログラム動作ログ入力部
３０３    ウェイト発生区間抽出部
３０４    ＣＰＵ・バス仕様入力部
３０５    命令実行解析部
３０６    バスアクセス解析部
３０７    ストールサイクル管理部
３０８    疑似タイマ時間見積もり部
３０９    通常処理時間見積もり部
３１０    ウェイト発生時間見積もり部
３１１    見積もり時間提示部
【図１】
2010009175.tif 000003
【図２】
2010009175.tif 000004
【図３】
2010009175.tif 000005
【図４】
2010009175.tif 000006
【図５】
2010009175.tif 000007
【図６】
2010009175.tif 000008
【図７】
2010009175.tif 000009
【図８】
2010009175.tif 000010
【図９】
2010009175.tif 000011
【図１０】
2010009175.tif 000012
【図１１】
2010009175.tif 000013