(57)【特許請求の範囲】
【請求項１】
演算装置におけるパイプライン処理の実行状況を可視化する演算処理可視化プログラムにおいて、
コンピュータを、
被験プログラムに含まれる命令のうちループ処理の対象となる命令のアドレスを特定するループ定義情報を記憶するループ情報記憶手段、
前記被験プログラムの実行によりパイプラインに投入された命令のアドレスと当該命令に対するパイプライン処理の実行状況を示す情報とを含む動作情報を記憶する動作情報記憶手段、
前記ループ情報記憶手段に記憶された前記ループ定義情報を参照して、前記動作情報記憶手段に記憶された前記動作情報で示される各パイプライン処理がループ処理を構成するか否か判定するループ判定手段、
前記ループ判定手段によりループ処理を構成すると判定されたパイプライン処理のうち所定のループ回数分のパイプライン処理の実行状況と、ループ処理を構成しないと判定されたパイプライン処理の実行状況とを視覚的に表した可視化情報を出力する出力手段、
として機能させることを特徴とする演算処理可視化プログラム。
【請求項２】
前記出力手段が出力する前記可視化情報は、パイプラインの各ステージの状態をクロック時間と対応付けて表したものであることを特徴とする請求項１記載の演算処理可視化プログラム。
【請求項３】
前記出力手段は、前記可視化情報を出力した後にループ部分の展開指示があると、ループ処理を構成すると判定された全ループ回数分のパイプライン処理の実行状況を表した他の可視化情報を出力することを特徴とする請求項１記載の演算処理可視化プログラム。
【請求項４】
演算装置におけるパイプライン処理の実行状況を可視化する演算処理可視化装置において、
被験プログラムに含まれる命令のうちループ処理の対象となる命令のアドレスを特定するループ定義情報を記憶するループ情報記憶手段と、
前記被験プログラムの実行によりパイプラインに投入された命令のアドレスと当該命令に対するパイプライン処理の実行状況を示す情報とを含む動作情報を記憶する動作情報記憶手段と、
前記ループ情報記憶手段に記憶された前記ループ定義情報を参照して、前記動作情報記憶手段に記憶された前記動作情報で示される各パイプライン処理がループ処理を構成するか否か判定するループ判定手段と、
前記ループ判定手段によりループ処理を構成すると判定されたパイプライン処理のうち所定のループ回数分のパイプライン処理の実行状況と、ループ処理を構成しないと判定されたパイプライン処理の実行状況とを視覚的に表した可視化情報を出力する出力手段と、
を有することを特徴とする演算処理可視化装置。
【請求項５】
演算装置におけるパイプライン処理の実行状況を可視化する演算処理可視化方法において、
ループ判定手段が、被験プログラムの実行によりパイプラインに投入された命令のアドレスと当該命令に対するパイプライン処理の実行状況を示す情報とを含む動作情報を動作情報記憶手段から取得し、前記被験プログラムに含まれる命令のうちループ処理の対象となる命令のアドレスを特定するループ情報記憶手段に記憶されたループ定義情報を参照して、前記動作情報で示される各パイプライン処理がループ処理を構成するか否か判定し、
出力手段が、前記ループ判定手段によりループ処理を構成すると判定されたパイプライン処理のうち所定のループ回数分のパイプライン処理の実行状況と、ループ処理を構成しないと判定されたパイプライン処理の実行状況とを視覚的に表した可視化情報を出力する、
ことを特徴とする演算処理可視化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は演算処理可視化プログラム、演算処理可視化装置および演算処理可視化方法に関し、特に演算装置におけるパイプライン処理の実行状況を可視化する演算処理可視化プログラム、演算処理可視化装置および演算処理可視化方法に関する。
【背景技術】
【０００２】
現在、コンピュータに実行させるソフトウェアの複雑化や処理対象データの大規模化が進んでおり、コンピュータが備える演算装置の処理能力の一層の向上が求められている。ここで、処理能力の高い演算装置を実現する際には、パイプライン処理を採用することが一般的となっている。パイプライン処理とは、１つの命令の処理過程を複数の処理単位（ステージ）に分割し、各ステージを並列に実行可能とする演算処理の方法である。
【０００３】
例えば、１つの命令の処理過程が、命令フェッチ（Ｆ）、命令デコード（Ｄ）、命令実行（Ｘ）、ライトバック（Ｗ）のようなステージに分割される。このようなパイプラインでは、例えば、１つ目の命令について命令デコード（Ｄ）を実行し、これと並列に２つ目の命令について命令フェッチ（Ｆ）を実行することが可能である。従って、実質的にステージ数だけ並列に命令を処理することができ、演算処理の高速化を図ることができる。
【０００４】
しかし、単純なパイプライン構造をもつ演算装置で依存関係のある複数の命令を連続して実行しようとすると、待機状態が発生して処理効率が低下するという問題がある。例えば、２つ目の命令が１つ目の命令の処理結果を利用するものである場合、１つ目の命令の処理が完了するまで２つ目の命令の処理を待機させる必要がある。従って、演算装置の開発時には、待機状態の発生が抑制されるようなパイプラインの設計が求められる。また、パイプライン処理を行う演算装置向けのコンパイラやプログラムの開発時には、対象とする演算装置のパイプライン構造を考慮した最適化が求められる。
【０００５】
そこで、演算装置、コンパイラ、プログラムの各開発者は、必要に応じてパイプライン処理のシミュレーションを行って、待機状態の発生状況の分析を行っている。例えば、パイプライン処理のシミュレーションを行うシミュレータは、被験演算装置の設計情報と被験プログラムとを入力として受け付け、被験プログラムを仮想的に実行して、パイプライン処理の実行状況を示す情報を出力する。
【０００６】
このようにして得られたシミュレーション結果は、開発者が理解容易な形式で可視化されて表示される。例えば、パイプラインに投入された命令を縦軸としクロック時間を横軸として、各ステージの状態変化を表形式で表したウォーターフォール図が知られている。また、このような図上で待機状態が発生した箇所を強調表示する可視化方法も知られている（例えば、特許文献１参照）。
【特許文献１】特開平１１−６５８４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、上記特許文献１に記載の技術では、シミュレーション結果のデータが膨大になると、開発者が処理効率上の問題点を図から見つけ出すことが容易でないという問題がある。特に、被験プログラムがループ処理を行うものである場合、同様の処理内容を示す図形が実行されたループ回数分だけ繰り返し表示されることとなり、その傾向は顕著となる。処理効率上の問題点を確認するという目的からすると、ループ処理については、本来はループ１回分または少数回分の実行状況が表示されれば十分である。一方、図上での単純な図形比較のみでは、ループ処理の範囲を正確に判定することは困難である。
【０００８】
本発明はこのような点に鑑みてなされたものであり、パイプライン処理の実行状況を可視化する際に、ループ部分の表示を適切に簡略化して視認性を高めることが可能な演算処理可視化プログラム、演算処理可視化装置および演算処理可視化方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明では上記課題を解決するために、図１に示すような演算処理可視化プログラムが提供される。本発明に係る演算処理可視化プログラムは、演算装置におけるパイプライン処理の実行状況を可視化するものである。この演算処理可視化プログラムを実行するコンピュータ１０は、ループ情報記憶手段１１、動作情報記憶手段１２、ループ判定手段１３および出力手段１４を有する。ループ情報記憶手段１１は、被験プログラムに含まれる命令のうちループ処理の対象となる命令のアドレスを特定するループ定義情報１１ａを記憶する。動作情報記憶手段１２は、被験プログラムの実行によりパイプラインに投入された命令のアドレスと当該命令に対するパイプライン処理の実行状況を示す情報とを含む動作情報１２ａを記憶する。ループ判定手段１３は、ループ情報記憶手段１１に記憶されたループ定義情報１１ａを参照して、動作情報記憶手段１２に記憶された動作情報１２ａで示される各パイプライン処理がループ処理を構成するか否か判定する。出力手段１４は、ループ判定手段１３によりループ処理を構成すると判定されたパイプライン処理のうち所定のループ回数分のパイプライン処理の実行状況と、ループ処理を構成しないと判定されたパイプライン処理の実行状況とを視覚的に表した可視化情報１４ａを出力する。
【００１０】
このような演算処理可視化プログラムを実行するコンピュータ１０によれば、ループ判定手段１３により、ループ処理の対象となる命令のアドレスを特定するループ定義情報１１ａが参照されて、動作情報１２ａで示される各パイプライン処理がループ処理を構成するか否か判定される。そして、出力手段１４により、ループ処理を構成すると判定されたパイプライン処理のうち所定のループ回数分のパイプライン処理の実行状況と、ループ処理を構成しないと判定されたパイプライン処理の実行状況とを視覚的に表した可視化情報１４ａが出力される。
【００１１】
また、上記課題を解決するために、演算装置におけるパイプライン処理の実行状況を可視化する演算処理可視化装置において、被験プログラムに含まれる命令のうちループ処理の対象となる命令のアドレスを特定するループ定義情報を記憶するループ情報記憶手段と、被験プログラムの実行によりパイプラインに投入された命令のアドレスと当該命令に対するパイプライン処理の実行状況を示す情報とを含む動作情報を記憶する動作情報記憶手段と、ループ情報記憶手段に記憶されたループ定義情報を参照して、動作情報記憶手段に記憶された動作情報で示される各パイプライン処理がループ処理を構成するか否か判定するループ判定手段と、ループ判定手段によりループ処理を構成すると判定されたパイプライン処理のうち所定のループ回数分のパイプライン処理の実行状況と、ループ処理を構成しないと判定されたパイプライン処理の実行状況とを視覚的に表した可視化情報を出力する出力手段と、を有することを特徴とする演算処理可視化装置が提供される。
【００１２】
このような演算処理可視化装置によれば、ループ判定手段により、ループ処理の対象となる命令のアドレスを特定するループ定義情報が参照されて、動作情報で示される各パイプライン処理がループ処理を構成するか否か判定される。そして、出力手段により、ループ処理を構成すると判定されたパイプライン処理のうち所定のループ回数分のパイプライン処理の実行状況と、ループ処理を構成しないと判定されたパイプライン処理の実行状況とを視覚的に表した可視化情報が出力される。
【００１３】
また、上記課題を解決するために、演算装置におけるパイプライン処理の実行状況を可視化する演算処理可視化方法において、ループ判定手段が、被験プログラムの実行によりパイプラインに投入された命令のアドレスと当該命令に対するパイプライン処理の実行状況を示す情報とを含む動作情報を動作情報記憶手段から取得し、被験プログラムに含まれる命令のうちループ処理の対象となる命令のアドレスを特定するループ情報記憶手段に記憶されたループ定義情報を参照して、動作情報で示される各パイプライン処理がループ処理を構成するか否か判定し、出力手段が、ループ判定手段によりループ処理を構成すると判定されたパイプライン処理のうち所定のループ回数分のパイプライン処理の実行状況と、ループ処理を構成しないと判定されたパイプライン処理の実行状況とを視覚的に表した可視化情報を出力する、ことを特徴とする演算処理可視化方法が提供される。
【００１４】
このような演算処理可視化方法によれば、ループ処理の対象となる命令のアドレスを特定するループ定義情報が参照されて、動作情報で示される各パイプライン処理がループ処理を構成するか否か判定される。そして、ループ処理を構成すると判定されたパイプライン処理のうち所定のループ回数分のパイプライン処理の実行状況と、ループ処理を構成しないと判定されたパイプライン処理の実行状況とを視覚的に表した可視化情報が出力される。
【発明の効果】
【００１５】
本発明では、被験プログラムにおいてループ処理の対象となる命令のアドレスを特定する情報を参照して、パイプラインに投入された命令のアドレスからループ処理の範囲を判定し、ループ処理部分の実行状況については所定のループ回数分だけ表示されるようにした。これにより、ループ処理部分の表示を適切に簡略化でき、視認性を高めることができる。従って、パイプライン処理の実行状況の分析がより容易となる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面を参照して詳細に説明する。まず、本発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
図１は、本実施の形態の概要を示す図である。図１に示すコンピュータ１０は、演算装置におけるパイプライン処理の実行状況を可視化するものである。コンピュータ１０は、ループ情報記憶手段１１、動作情報記憶手段１２、ループ判定手段１３および出力手段１４を有する。
【００１７】
ループ情報記憶手段１１には、ループ定義情報１１ａが格納されている。ループ定義情報１１ａは、被験プログラムに含まれる命令のうちループ処理の対象となる命令のアドレスを特定した情報である。例えば、各ループ処理について、ループの先頭のアドレスと最後尾のアドレスとを指定して、対象となる命令のアドレス範囲を特定する。ループ定義情報１１ａは、例えば、被験プログラムのソースコードをコンパイルする際に、コンパイラが処理途中で生成する中間情報から抽出することができる。
【００１８】
動作情報記憶手段１２には、動作情報１２ａが格納されている。動作情報１２ａは、被験プログラムの実行によりパイプラインに投入された命令のアドレスと、投入された命令に対するパイプライン処理の実行状況を示す情報とを含んでいる。パイプライン処理の実行状況を示す情報は、例えば、クロック時間と処理を実行中であるステージとを対応付けた情報である。動作情報１２ａは、例えば、被験プログラムを演算装置のシミュレータに入力することで、シミュレーション結果として得られる情報である。
【００１９】
ループ判定手段１３は、ループ情報記憶手段１１に格納されたループ定義情報１１ａと、動作情報記憶手段１２に格納された動作情報１２ａとを取得する。そして、ループ判定手段１３は、動作情報１２ａで示されるパイプラインに投入された各命令のアドレスを、ループ定義情報１１ａで定義されたアドレスと照合して、各パイプライン処理がループ処理を構成するか否か判定する。
【００２０】
出力手段１４は、ループ判定手段１３の判定結果に基づいて、動作情報１２ａで示されるパイプライン処理の実行状況を視覚的に表した可視化情報１４ａを生成して出力する。具体的には、出力手段１４は、ループ処理を構成しないと判定されたパイプライン処理については、全て可視化の対象とする。一方、ループ処理を構成すると判定されたパイプライン処理については、所定のループ回数分のみを可視化の対象とする。出力された可視化情報１４ａは、所定のモニタに表示されたり、所定の記憶装置に格納されて後で利用される。
【００２１】
ここで、命令“＃０２”，“＃０３”がループ処理の対象となっている被験プログラムを考える。そして、この被験プログラムのシミュレーションで、命令“＃０１”，“＃０２”，“＃０３”，“＃０２”，“＃０３”，“＃０４”という順序で命令がパイプラインに投入されたとする。この場合、命令のアドレスに基づいて、命令“＃０２”，“＃０３”がループ処理の対象であり、ループが２回実行されたことがわかる。そこで、命令“＃０２”，“＃０３”に対するパイプライン処理については、例えば、ループ１回分のみを可視化の対象として、表示を簡略化することができる。
【００２２】
このような演算処理可視化プログラムを実行するコンピュータ１０によれば、ループ判定手段１３により、ループ処理の対象となる命令のアドレスを特定するループ定義情報１１ａが参照されて、動作情報１２ａで示される各パイプライン処理がループ処理を構成するか否か判定される。そして、出力手段１４により、ループ処理を構成すると判定されたパイプライン処理のうち所定のループ回数分のパイプライン処理の実行状況と、ループ処理を構成しないと判定されたパイプライン処理の実行状況とを視覚的に表した可視化情報１４ａが出力される。
【００２３】
これにより、ループ処理部分の表示を適切に簡略化でき、視認性を高めることができる。従って、パイプライン処理の実行状況の分析がより容易となる。
以下、本実施の形態を図面を参照して詳細に説明する。本実施の形態は、演算装置におけるパイプライン処理のシミュレーションを行う１つのシミュレーション装置で構成される。本実施の形態に係るシミュレーション装置は、例えば、コンピュータに所定のシミュレーションプログラムを実行させることで実現することができる。
【００２４】
図２は、シミュレーション装置のハードウェア構成を示す図である。シミュレーション装置１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０６を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ：Hard Disk Drive）１０３、グラフィック処理装置１０４および入力インタフェース１０５が接続されている。
【００２５】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データの少なくとも一部が一時的に格納される。ＨＤＤ１０３には、ＯＳプログラムやアプリケーションプログラムが格納される。また、ＨＤＤ１０３には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００２６】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号を、バス１０６を介してＣＰＵ１０１に送信する。
【００２７】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
次に、シミュレーション装置１００のモジュール構成について説明する。
【００２８】
図３は、シミュレーション装置の機能を示すブロック図である。シミュレーション装置１００は、ソースファイル記憶部１１０、コンパイル部１２０、バイナリファイル記憶部１３０、ループ情報記憶部１４０、シミュレーション部１５０、動作情報記憶部１６０および可視化部１７０を有する。
【００２９】
ソースファイル記憶部１１０には、シミュレーション対象のプログラムのソースコードを記載したソースファイルが格納されている。シミュレーション装置１００の利用者は、ソースファイルを予め作成して、ソースファイル記憶部１１０に格納しておく。
【００３０】
コンパイル部１２０は、利用者の操作入力によりコンパイルの指示があると、ソースファイル記憶部１１０からソースファイルを読み出す。そして、コンパイル部１２０は、ソースコードのコンパイル処理を行い、実行可能形式のコードであるバイナリコードを生成する。ここで、コンパイル部１２０は、いわゆるクロスコンパイラの機能を有しており、シミュレーション対象の演算装置で実行可能なバイナリコードを生成することができる。また、コンパイル部１２０は、コンパイル処理の途中で得られる情報のうちループ処理の対象となる命令のアドレスを特定したループ定義情報を出力する。
【００３１】
バイナリファイル記憶部１３０には、コンパイル部１２０によって生成されたバイナリコードを記載したバイナリファイルが格納される。このバイナリファイルは、実行可能形式のプログラムファイルであり、シミュレーション対象の演算装置で実行可能な１以上の命令が含まれている。
【００３２】
ループ情報記憶部１４０には、コンパイル部１２０によって出力されたループ定義情報が格納される。ループ定義情報では、シミュレーション対象のプログラムで定義された各ループ処理について、ループの開始点に相当する命令のアドレスと終了点に相当する命令のアドレスとが設定されている。
【００３３】
シミュレーション部１５０は、利用者の操作入力によりシミュレーション開始の指示があると、バイナリファイル記憶部１３０からシミュレーション対象のプログラムのバイナリファイルを読み出す。そして、シミュレーション部１５０は、読み出したバイナリファイルと所定の演算装置の設計情報とに基づいて、演算処理のシミュレーションを行う。演算装置の設計情報は、利用者が予め作成して、シミュレーション部１５０に組み込んでおく。なお、シミュレーションの実行時に、利用者が複数の設計情報の中から１つを選択できるようにしてもよい。
【００３４】
動作情報記憶部１６０には、シミュレーション部１５０のシミュレーション結果である動作情報が格納される。動作情報は、演算装置のパイプラインに投入された命令毎に、パイプライン処理の進行状況、すなわち、各ステージの処理が行われたクロック時間を記載したものである。
【００３５】
可視化部１７０は、シミュレーション部１５０による演算処理のシミュレーションが完了すると、動作情報記憶部１６０から動作情報を読み出すと共に、ループ情報記憶部１４０からループ定義情報を読み出す。そして、可視化部１７０は、読み出した動作情報とループ定義情報とに基づいて、パイプライン処理の実行状況を可視化したウォーターフォール図を生成し、モニタ２１に表示する。ウォーターフォール図は、パイプラインに投入された命令を縦軸としクロック時間を横軸として、パイプライン処理の進行状況を表形式で表したものである。
【００３６】
図４は、評価対象プログラムのソースコード例を示す図である。図４に示すソースコード１１１は、ソースファイル記憶部１１０にソースファイルとして格納されている。ソースコード１１１は、シミュレーション対象のプログラムをＣ言語で記述したものである。ソースコード１１１では、まずコード範囲１１１ａで、このプログラムで用いる変数“ａ”，“ｍ”，“ｉ”を宣言し、変数“ａ”，“ｍ”の初期化を行っている。そして、コード範囲１１１ｂで、コード範囲１１１ａで宣言した変数を用いた四則演算を行っている。ここで、コード範囲１１１ｂでは、２つの四則演算を３回繰り返すループ処理を行っている。
【００３７】
図５は、評価対象プログラムのアセンブリコード例を示す図である。図５に示すアセンブリコード１２１は、コンパイル部１２０によるコンパイル処理の過程で生成されるものである。アセンブリコード１２１は、ソースコード１１１に対応する処理内容を所定のアセンブリ言語で記述したものである。ここで、コード範囲１２１ａが、ソースコード１１１のコード範囲１１１ａに対応している。コード範囲１２１ｂが、ソースコード１１１のコード範囲１１１ｂに対応している。
【００３８】
コード範囲１２１ａは、ラベル“Ｌ１”とラベル“Ｌ２”とで挟まれた３つの命令で構成される。具体的には、変数“ａ”，“ｍ”，“ｉ”にそれぞれ初期値を代入する命令で構成される。また、コード範囲１２１ｂは、ラベル“Ｌ２”とラベル“Ｌ３“とで挟まれた５つの命令で構成される。具体的には、変数“ａ”の加算命令、変数“ｍ”の乗算命令、ループカウンタである変数“ｉ”の加算命令、ループカウンタの比較命令、比較結果に基づく分岐命令で構成される。ここで、比較命令および分岐命令によりループ制御が行われ、５つの命令が３回繰り返して実行されることになる。
【００３９】
図６は、ループ定義テーブルのデータ構造を示す図である。図６に示すループ定義テーブル１４１は、コンパイル部１２０によって生成されるテーブルであり、ループ情報記憶部１４０に格納されている。ループ定義テーブル１４１には、ループＩＤを示す項目、開始アドレスを示す項目および終了アドレスを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つのループ処理についてのループ定義情報が構成される。
【００４０】
ループＩＤを示す項目には、シミュレーション対象のプログラムにおけるループ処理を一意に識別する識別番号が設定される。この識別番号は、１から始まる連番である。開始アドレスを示す項目には、ループ処理の開始点にある命令のアドレスが設定される。例えば、図５に示したアセンブリコード１２１の４番目の命令（加算命令）のアドレスがこれに相当する。終了アドレスを示す項目には、ループ処理の終了点にある命令のアドレスが設定される。例えば、図５に示したアセンブリコード１２１の８番目の命令（分岐命令）のアドレスがこれに相当する。
【００４１】
なお、開始アドレスおよび終了アドレスは、バイナリファイル中での先頭からの位置を示す数値であり、単位はバイトである。図６の例では、アドレスを１６進数として表記している。ループ定義テーブル１４１に格納される情報は、コンパイル部１２０によってコンパイル処理を通じて抽出されて登録される。
【００４２】
図７は、パイプライン動作テーブルのデータ構造を示す図である。図７に示すパイプライン動作テーブル１６１は、動作情報記憶部１６０に格納されている。パイプライン動作テーブル１６１には、命令実行ＩＤを示す項目、アドレスを示す項目およびステージ数を示す項目が設けられている。また、各ステージについて、ステージ種別を示す項目、開始クロックを示す項目および終了クロックを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１回の命令実行についての動作情報が構成される。
【００４３】
命令実行ＩＤを示す項目には、パイプライン処理を一意に識別する識別番号が設定される。この識別番号は、１から始まる連番であり、命令がパイプラインに投入される毎に新たな識別番号が設定される。アドレスを示す項目には、投入された命令のアドレスが設定される。アドレスは、バイナリファイル中での先頭からの位置を示す数値である。ステージ数を示す項目には、そのパイプライン処理で実行されたステージの数が設定される。
【００４４】
ステージ種別を示す項目には、ステージを示す符号が設定される。例えば、命令フェッチを示す“Ｆ”、命令デコードを示す“Ｄ”、命令実行を示す“Ｘ”、メモリアクセスを示す“Ｍ”、ライトバックを示す“Ｗ”などである。開始クロックを示す項目には、そのステージの処理を開始したクロック時間が設定される。終了クロックを示す項目には、そのステージの処理が終了したクロック時間が設定される。ステージ種別、開始クロック、終了クロックの組は、実行されたステージ数だけ設定される。
【００４５】
パイプライン動作テーブル１６１に格納される動作情報は、シミュレーション部１５０によって登録される。例えば、命令実行ＩＤが“４”、アドレスが“０ｘ１００００００ｃ”、ステージ数が“４”、クロック時間“４”の実行ステージが“Ｆ”、クロック時間“５”の実行ステージが“Ｄ”、クロック時間“６”の実行ステージが“Ｘ”、クロック時間“７”の実行ステージが“Ｗ”という情報が登録される。
【００４６】
なお、図７に示した例では、命令実行ＩＤ“４”〜“８”の動作情報が、図５に示したループ処理におけるループ１回目の処理に相当する。そして、命令実行ＩＤ“９”の動作情報は、ループ１回目の後にループの開始点に戻ってループ２回目の処理が開始されたことを示している。
【００４７】
次に、シミュレーション装置１００において、ループ定義情報および動作情報に基づいて実行される可視化処理の詳細を説明する。
図８は、可視化処理の手順を示すフローチャートである。以下、図８に示す処理をステップ番号に沿って説明する。
【００４８】
［ステップＳ１１］可視化部１７０は、動作情報記憶部１６０に格納されたパイプライン動作テーブル１６１の動作情報のうち、命令実行ＩＤの小さいものから順に動作情報を１つ選択する。
【００４９】
［ステップＳ１２］可視化部１７０は、ループフラグがＯＦＦ、すなわち、ループ外を示しているか否か判断する。ループフラグとは、現在注目しているパイプライン処理がループ処理の一部であるか否かを示すフラグである。可視化処理の開始時には、ループフラグはＯＦＦ（ループ外）に設定されている。ループ外である場合には、処理がステップＳ１３に進められる。ループ内である場合には、処理がステップＳ１７に進められる。
【００５０】
［ステップＳ１３］可視化部１７０は、ループ情報記憶部１４０に格納されたループ定義テーブル１４１を参照して、ステップＳ１１で選択した動作情報のアドレスが、いずれかのループ処理の開始アドレスに該当するか否か判断する。開始アドレスに該当する場合には、処理がステップＳ１６に進められる。開始アドレスに該当しない場合には、処理がステップＳ１４に進められる。
【００５１】
［ステップＳ１４］可視化部１７０は、現在一時的に保持している動作情報で示されるパイプライン処理を、モニタ２１に簡略表示する。具体的には、可視化部１７０は、１回目のループ分のパイプライン処理のみをモニタ２１に表示し、２回目以降のループ分のパイプライン処理を表示しないようにする。また、可視化部１７０は、全ループ回数分の動作情報を統計処理し、統計値をモニタ２１に表示する。その後、可視化部１７０は、保持している動作情報を破棄する。
【００５２】
［ステップＳ１５］可視化部１７０は、ステップＳ１１で選択した動作情報で示されるパイプライン処理を、モニタ２１に通常表示する。
［ステップＳ１６］可視化部１７０は、ステップＳ１１で選択した動作情報を、新規のループに属する動作情報として一時的に保持する。そして、可視化部１７０は、ループフラグをＯＮ（ループ内）に設定する。
【００５３】
［ステップＳ１７］可視化部１７０は、ループ定義テーブル１４１を参照して、ステップＳ１１で選択した動作情報のアドレスが、いずれかのループ処理の開始アドレスに該当するか否か判断する。開始アドレスに該当する場合には処理がステップＳ１８に進められる。開始アドレスに該当しない場合には、処理がステップＳ１９に進められる。
【００５４】
［ステップＳ１８］可視化部１７０は、現在一時的に保持している動作情報で示されるパイプライン処理の全てを、モニタ２１に通常表示する。そして、可視化部１７０は、保持している動作情報を破棄する。
【００５５】
［ステップＳ１９］可視化部１７０は、ループ定義テーブル１４１を参照して、ステップＳ１１で選択した動作情報のアドレスが、いずれかのループ処理の終了アドレスに該当するか否か判断する。終了アドレスに該当する場合には処理がステップＳ２０に進められる。終了アドレスに該当しない場合には、処理がステップＳ２１に進められる。
【００５６】
［ステップＳ２０］可視化部１７０は、ステップＳ１１で選択した動作情報を、１つ前に選択した動作情報と同じループに属する動作情報として一時的に保持する。そして、可視化部１７０は、ループフラグをＯＦＦに設定する。
【００５７】
［ステップＳ２１］可視化部１７０は、ステップＳ１１で選択した動作情報を、１つ前に選択した動作情報と同じループに属する動作情報として一時的に保持する。
［ステップＳ２２］可視化部１７０は、ステップＳ１１で全ての動作情報を選択したか否か判断する。全ての動作情報を選択した場合には、処理が終了する。未選択の動作情報が存在する場合には、処理がステップＳ１１に進められる。
【００５８】
このようにして、可視化部１７０は、投入された命令のアドレスに基づいて、各動作情報がループ処理を表すものか否か判断する。そして、可視化部１７０は、ループ処理を表す動作情報については最初のループ分のみを表示の対象とすると共に、ループ処理を表さない動作情報については全てを表示の対象とする。また、可視化部１７０は、ループ処理を表す動作情報を統計処理し、統計値をパイプライン処理の実行状況と併せて表示する。
【００５９】
なお、図８に示した可視化処理では、多重ループがある場合には最内ループのみを簡略表示するようにしたが、最内ループ以外もループの階層に応じて簡略表示するようにしてもよい。
【００６０】
図９は、ループ統計テーブルのデータ構造を示す図である。図９に示すループ統計テーブル１７１は、可視化部１７０による可視化処理の過程で生成されるものである。ループ統計テーブル１７１には、ループＩＤを示す項目、ループ回数を示す項目およびＣＰＩ（Cycles Per Instruction）を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つのループ処理についてのループ統計情報が構成される。
【００６１】
ループＩＤを示す項目には、シミュレーション対象のプログラムにおけるループ処理を一意に識別する識別番号が設定される。このループＩＤは、図６に示したループ定義テーブル１４１のループＩＤと対応するものである。ループ回数を示す項目には、シミュレーション時に実行されたループの回数が設定される。
【００６２】
ＣＰＩを示す項目には、ループ処理期間中のＣＰＩの値が設定される。ＣＰＩとは、１命令当たりの平均クロック数である。理想的な実行状況、すなわち、待機状態が全く発生せずに１クロック毎に１命令がパイプライン投入されている状況では、ＣＰＩは１となる。待機状態が発生すると、ＣＰＩは１より大きい値になる。
【００６３】
ループ統計テーブル１７１に格納される情報は、可視化部１７０によって生成されて保持される。例えば、ループＩＤが“２”、ループ回数が“１０”、ＣＰＩが“２．５”という情報が保持される。
【００６４】
図１０は、パイプライン動作画面の表示例を示す第１の図である。図１０に示すパイプライン動作画面２１ａは、可視化部１７０によってモニタ２１に表示される画面である。パイプライン動作画面２１ａには、演算処理のシミュレーション結果を可視化したウォーターフォール図が示されている。
【００６５】
ウォーターフォール図の縦軸はパイプラインへの命令の投入に対応しており、横軸はクロック時間に対応している。ウォーターフォール図の記載内容は、基本的に図７に示したパイプライン動作テーブル１６１の内容と対応している。すなわち、ウォーターフォール図では、パイプラインに投入された命令の処理経過とクロック時間とが対応付けられて可視化されている。
【００６６】
ただし、パイプライン動作画面２１ａでは、ループ処理の部分が簡略表示されている。ループ処理の部分が他の部分と区別できるように点線で囲まれており、その中に最初のループの実行状況のみが表示される。そして、ループ１回分の実行状況に続けて、ループ処理後の実行状況が表示される。また、ループ処理の実行状況の近くに、そのループ処理についてのループ回数とＣＰＩとが表示される。
【００６７】
ここで、利用者は、左側に表示されている三角形を操作することで、ループ処理の全ての実行状況を表示させることが可能である。
図１１は、パイプライン動作画面の表示例を示す第２の図である。図１１に示すパイプライン動作画面２１ｂは、パイプライン動作画面２１ａに対して操作入力が行われたときに、可視化部１７０によってモニタ２１に表示される画面である。図１１に示す通り、パイプライン動作画面２１ｂでは、全てのパイプライン処理の実行状況が表示される。ここで、利用者は、パイプライン動作画面２１ｂの左側に表示されている三角形を操作することで、パイプライン動作画面２１ａの表示に戻すことが可能である。すなわち、利用者は、必要に応じて、ループ処理部分の表示方法を切り換えることができる。
【００６８】
なお、図１０，１１に示した例は、ＣＰＩが１の場合、すなわち、待機状態が発生しない理想的なパイプライン処理の実行状況を示したものである。次に、待機状態が発生するパイプライン処理の例を示す。
【００６９】
図１２は、ループ定義テーブルの他の例を示す図である。図１２に示すパイプライン動作テーブル１６２は、動作情報記憶部１６０に格納されている。パイプライン動作テーブル１６２のデータ構造は、図７に示したパイプライン動作テーブル１６１と同じである。
【００７０】
パイプライン動作テーブル１６２は、一部の命令について命令実行（Ｘ）ステージに要するクロック数が、パイプライン動作テーブル１６１と異なる。具体的には、パイプライン動作テーブル１６２では、アドレス“０ｘ１００００００ｃ”〜“０ｘ１０００００１４”の３つの命令が、命令実行（Ｘ）ステージに４クロックを要している。例えば、命令実行ＩＤ“４”のパイプライン処理では、クロック時間“６”〜“９”の間、命令実行（Ｘ）ステージが実行されている。
【００７１】
図１３は、パイプライン動作画面の表示例を示す第３の図である。図１３に示すパイプライン動作画面２１ｃは、可視化部１７０によってモニタ２１に表示される画面である。この例では、命令実行ＩＤ“４”〜“６”のパイプライン処理は、命令実行（Ｘ）ステージに４クロックを要するため、“Ｘ”のブロックが４つ並んで表示されている。命令実行ＩＤ“７”，“８”のパイプライン処理は、図１０に示したパイプライン処理と同様、各ステージに１クロックを要している。ただし、命令実行ＩＤ“７”のパイプライン処理は、命令実行ＩＤ“６”の実行結果を利用するものであり、待機状態が発生している。パイプライン動作画面２１ｃでは、待機状態は斜線のブロックを用いて強調表示されている。
【００７２】
このような表示方法では、同一ステージの処理が複数クロックに跨る場合や待機状態が複数クロック連続して発生したときは、要したクロック数だけブロックが横方向に並べられる。しかし、メモリアクセス時のように、数十〜数百クロック連続して同一ステージの処理や待機状態の発生があると、ウォーターフォール図の視認性が低下する。そこで、クロック時間方向の表示も簡略化する表示方法が考えられる。
【００７３】
図１４は、パイプライン動作画面の表示例を示す第４の図である。図１４に示すパイプライン動作画面２１ｄは、可視化部１７０によってモニタ２１に表示される画面である。パイプライン動作画面２１ｄは、図１３に示したパイプライン動作画面２１ｃと同じ内容を、異なる表示形式で表示したものである。
【００７４】
具体的には、４クロック連続する命令実行（Ｘ）ステージの処理を、４ブロックで表す代わりに、ステージを示す記号と連続する数とによって簡略表示している。このような表示方法を用いる場合、簡略表示の対象とする連続クロック数の閾値を予め決めておく必要がある。例えば、３クロック以上連続する場合に簡略表示を行うと決めておく。
【００７５】
なお、複数のパイプライン処理の間で、開始クロックおよび終了クロックの相対的な位置関係がずれないように、簡略表示部分の長さを適切に設定する。図１４の例では、ループ処理部分の命令実行（Ｘ）ステージの長さを、２ブロックに統一している。
【００７６】
なお、本実施の形態では、１回目のループの実行状況を表示するようにしたが、最後の１回のループなど、任意のループを表示するようにしてもよい。また、本実施の形態では、ループ１回分の実行状況を表示するようにしたが、２回分や３回分など、所定のループ回数分の実行状況を表示するようにしてもよい。
【００７７】
このようなシミュレーション装置１００を用いることで、ループ処理の表示を命令方向に適切に簡略化することができる。更に、複数クロックに跨る処理や待機状態の表示をクロック時間方向に適切に簡略化することができる。すなわち、パイプライン処理の分析にとって重要でない部分を適切に省略して表示し、ウォーターフォール図の視認性を高めることができる。従って、パイプライン処理の分析がより容易となる。
【００７８】
特に、ループ処理の判定を行う際に、コンパイラなどから取得した命令のアドレスに関する情報を用いるようにしたため、単に図形比較によって判定を行う場合と異なり、判定誤りを防止することができる。
【００７９】
以上、本発明の演算処理可視化プログラム、演算処理可視化装置および演算処理可視化方法を図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、本発明に他の任意の構成物や工程が付加されていてもよい。また、本発明は前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【００８０】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、シミュレーション装置１００が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc - Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【００８１】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００８２】
上記プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００８３】
（付記１）  演算装置におけるパイプライン処理の実行状況を可視化する演算処理可視化プログラムにおいて、
コンピュータを、
被験プログラムに含まれる命令のうちループ処理の対象となる命令のアドレスを特定するループ定義情報を記憶するループ情報記憶手段、
前記被験プログラムの実行によりパイプラインに投入された命令のアドレスと当該命令に対するパイプライン処理の実行状況を示す情報とを含む動作情報を記憶する動作情報記憶手段、
前記ループ情報記憶手段に記憶された前記ループ定義情報を参照して、前記動作情報記憶手段に記憶された前記動作情報で示される各パイプライン処理がループ処理を構成するか否か判定するループ判定手段、
前記ループ判定手段によりループ処理を構成すると判定されたパイプライン処理のうち所定のループ回数分のパイプライン処理の実行状況と、ループ処理を構成しないと判定されたパイプライン処理の実行状況とを視覚的に表した可視化情報を出力する出力手段、
として機能させることを特徴とする演算処理可視化プログラム。
【００８４】
（付記２）  前記出力手段が出力する前記可視化情報は、パイプラインの各ステージの状態をクロック時間と対応付けて表したものであることを特徴とする付記１記載の演算処理可視化プログラム。
【００８５】
（付記３）  前記出力手段は、前記可視化情報を出力した後にループ部分の展開指示があると、ループ処理を構成すると判定された全ループ回数分のパイプライン処理の実行状況を表した他の可視化情報を出力することを特徴とする付記１記載の演算処理可視化プログラム。
【００８６】
（付記４）  前記出力手段は、前記ループ判定手段の判定結果に基づいてループ処理で行われたループの回数を計数し、計数したループ回数を示す情報を前記可視化情報に含めて出力することを特徴とする付記１記載の演算処理可視化プログラム。
【００８７】
（付記５）  前記出力手段は、ループ処理を構成すると判定されたパイプライン処理の実行状況を示す情報に基づいて、ループ処理の間に１命令の実行に要したクロック数の平均を計算し、計算した平均クロック数を示す情報を前記可視化情報に含めて出力することを特徴とする付記１記載の演算処理可視化プログラム。
【００８８】
（付記６）  前記出力手段が出力する前記可視化情報は、所定のクロック数以上のクロックに跨って処理が実行されたステージの状態を、クロック時間方向に圧縮して表したものであることを特徴とする付記２記載の演算処理可視化プログラム。
【００８９】
（付記７）  演算装置におけるパイプライン処理の実行状況を可視化する演算処理可視化装置において、
被験プログラムに含まれる命令のうちループ処理の対象となる命令のアドレスを特定するループ定義情報を記憶するループ情報記憶手段と、
前記被験プログラムの実行によりパイプラインに投入された命令のアドレスと当該命令に対するパイプライン処理の実行状況を示す情報とを含む動作情報を記憶する動作情報記憶手段と、
前記ループ情報記憶手段に記憶された前記ループ定義情報を参照して、前記動作情報記憶手段に記憶された前記動作情報で示される各パイプライン処理がループ処理を構成するか否か判定するループ判定手段と、
前記ループ判定手段によりループ処理を構成すると判定されたパイプライン処理のうち所定のループ回数分のパイプライン処理の実行状況と、ループ処理を構成しないと判定されたパイプライン処理の実行状況とを視覚的に表した可視化情報を出力する出力手段と、
を有することを特徴とする演算処理可視化装置。
【００９０】
（付記８）  前記出力手段が出力する前記可視化情報は、パイプラインの各ステージの状態をクロック時間と対応付けて表したものであることを特徴とする付記７記載の演算処理可視化装置。
【００９１】
（付記９）  前記出力手段は、前記可視化情報を出力した後にループ部分の展開指示があると、ループ処理を構成すると判定された全ループ回数分のパイプライン処理の実行状況を表した他の可視化情報を出力することを特徴とする付記７記載の演算処理可視化装置。
（付記１０）  前記出力手段は、前記ループ判定手段の判定結果に基づいてループ処理で行われたループの回数を計数し、計数したループ回数を示す情報を前記可視化情報に含めて出力することを特徴とする付記７記載の演算処理可視化装置。
【００９２】
（付記１１）  前記出力手段は、ループ処理を構成すると判定されたパイプライン処理の実行状況を示す情報に基づいて、ループ処理の間に１命令の実行に要したクロック数の平均を計算し、計算した平均クロック数を示す情報を前記可視化情報に含めて出力することを特徴とする付記７記載の演算処理可視化装置。
【００９３】
（付記１２）  前記出力手段が出力する前記可視化情報は、所定のクロック数以上のクロックに跨って処理が実行されたステージの状態を、クロック時間方向に圧縮して表したものであることを特徴とする付記８記載の演算処理可視化装置。
【００９４】
（付記１３）  演算装置におけるパイプライン処理の実行状況を可視化する演算処理可視化方法において、
ループ判定手段が、被験プログラムの実行によりパイプラインに投入された命令のアドレスと当該命令に対するパイプライン処理の実行状況を示す情報とを含む動作情報を動作情報記憶手段から取得し、前記被験プログラムに含まれる命令のうちループ処理の対象となる命令のアドレスを特定するループ情報記憶手段に記憶されたループ定義情報を参照して、前記動作情報で示される各パイプライン処理がループ処理を構成するか否か判定し、
出力手段が、前記ループ判定手段によりループ処理を構成すると判定されたパイプライン処理のうち所定のループ回数分のパイプライン処理の実行状況と、ループ処理を構成しないと判定されたパイプライン処理の実行状況とを視覚的に表した可視化情報を出力する、
ことを特徴とする演算処理可視化方法。
【００９５】
（付記１４）  前記出力手段が出力する前記可視化情報は、パイプラインの各ステージの状態をクロック時間と対応付けて表したものであることを特徴とする付記１３記載の演算処理可視化方法。
【００９６】
（付記１５）  前記可視化情報の出力後にループ部分の展開指示があると、前記出力手段が、ループ処理を構成すると判定された全ループ回数分のパイプライン処理の実行状況を表した他の可視化情報を出力することを特徴とする付記１３記載の演算処理可視化方法。
【００９７】
（付記１６）  前記可視化情報の出力の際、前記出力手段は、前記ループ判定手段の判定結果に基づいてループ処理で行われたループの回数を計数し、計数したループ回数を示す情報を前記可視化情報に含めることを特徴とする付記１３記載の演算処理可視化方法。
【００９８】
（付記１７）  前記可視化情報の出力の際、前記出力手段は、ループ処理を構成すると判定されたパイプライン処理の実行状況を示す情報に基づいて、ループ処理の間に１命令の実行に要したクロック数の平均を計算し、計算した平均クロック数を示す情報を前記可視化情報に含めることを特徴とする付記１３記載の演算処理可視化方法。
【００９９】
（付記１８）  前記出力手段が出力する前記可視化情報は、所定のクロック数以上のクロックに跨って処理が実行されたステージの状態を、クロック時間方向に圧縮して表したものであることを特徴とする付記１４記載の演算処理可視化方法。
【図面の簡単な説明】
【０１００】
【図１】本実施の形態の概要を示す図である。
【図２】シミュレーション装置のハードウェア構成を示す図である。
【図３】シミュレーション装置の機能を示すブロック図である。
【図４】評価対象プログラムのソースコード例を示す図である。
【図５】評価対象プログラムのアセンブリコード例を示す図である。
【図６】ループ定義テーブルのデータ構造を示す図である。
【図７】パイプライン動作テーブルのデータ構造を示す図である。
【図８】可視化処理の手順を示すフローチャートである。
【図９】ループ統計テーブルのデータ構造を示す図である。
【図１０】パイプライン動作画面の表示例を示す第１の図である。
【図１１】パイプライン動作画面の表示例を示す第２の図である。
【図１２】ループ定義テーブルの他の例を示す図である。
【図１３】パイプライン動作画面の表示例を示す第３の図である。
【図１４】パイプライン動作画面の表示例を示す第４の図である。
【符号の説明】
【０１０１】
１０  コンピュータ
１１  ループ情報記憶手段
１１ａ  ループ定義情報
１２  動作情報記憶手段
１２ａ  動作情報
１３  ループ判定手段
１４  出力手段
１４ａ  可視化情報
【図１】
0004842889.tif 000002
【図２】
0004842889.tif 000003
【図３】
0004842889.tif 000004
【図４】
0004842889.tif 000005
【図５】
0004842889.tif 000006
【図６】
0004842889.tif 000007
【図７】
0004842889.tif 000008
【図８】
0004842889.tif 000009
【図９】
0004842889.tif 000010
【図１０】
0004842889.tif 000011
【図１１】
0004842889.tif 000012
【図１２】
0004842889.tif 000013
【図１３】
0004842889.tif 000014
【図１４】
0004842889.tif 000015