JPWO2006022204A1 - ソースプログラムの分析装置および方法 - Google Patents

ソースプログラムの分析装置および方法 Download PDF

Info

Publication number
JPWO2006022204A1
JPWO2006022204A1 JP2006531879A JP2006531879A JPWO2006022204A1 JP WO2006022204 A1 JPWO2006022204 A1 JP WO2006022204A1 JP 2006531879 A JP2006531879 A JP 2006531879A JP 2006531879 A JP2006531879 A JP 2006531879A JP WO2006022204 A1 JPWO2006022204 A1 JP WO2006022204A1
Authority
JP
Japan
Prior art keywords
memory
block
memory address
code
address
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.)
Granted
Application number
JP2006531879A
Other languages
English (en)
Other versions
JP4866241B2 (ja
Inventor
下郡 慎太郎
慎太郎 下郡
Original Assignee
パシフィック・デザイン株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by パシフィック・デザイン株式会社 filed Critical パシフィック・デザイン株式会社
Priority to JP2006531879A priority Critical patent/JP4866241B2/ja
Publication of JPWO2006022204A1 publication Critical patent/JPWO2006022204A1/ja
Application granted granted Critical
Publication of JP4866241B2 publication Critical patent/JP4866241B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)

Abstract

ソースプログラムをコンパイルする際に生成されるデバッグ情報と、オブジェクトコードをシミュレータで走行することにより生成されるメモリアクセス情報とを用いて、ソースプログラムを分割実行する可能性を解析する分析装置を提供する。分析装置は、ソースプログラムのソースステートメントの一部を処理ブロックとしてグループ化するためのブロックIDを、デバッグ情報に基づき、それぞれの命令のコードメモリアドレスに関連付けして記憶するメモリと、メモリアクセス情報に基づき、ソースプログラムを実行したときの、コードメモリアドレス、変数メモリアドレスおよびアクセスタイプを含めた、実行用メモリに対するアクセス状況を、サイクルの経過と共に、それぞれの命令のコードメモリアドレスに関連付けされたブロックIDにより異なる形態で表示デバイスにグラフィック表示するグラフィック表示機能とを有する。

Description

ソースプログラムにより記述された処理を実行するためのデバイスの設計およびその設計を支援するための分析装置および方法に関するものである。
特開2003−216678号公報には、C言語で記述された仕様あるいはプログラムを実行する際に、プログラム中の特定のプロセスあるいはプログラムファンクションを専用回路化し、プログラムを効率よく稼動させることが開示されている。また、その専用回路に対する命令セットを、サイクルに分解したモデルでシミュレートすることができる、サイクルベースの命令レベルシミュレータ(以降、ISS)が記載されている。
複数のソースステートメントを含むプログラムは、それらのソースステートメントの処理が逐次実行されることが基本である。プログラムを実行するハードウェア資源に余裕があれば、プログラムの一部を分割して並列に実行することにより処理を効率化することが試みられる。並列化の1つの方法は命令単位で並列に実行することである。他の方法の1つは、複数の命令を含むブロック(処理ブロック)に分割し、プログラムをブロック単位で並列に同時実行することである。さらに、並列に稼動可能な処理ブロックに対して、それらの処理ブロックがパイプラインを構成するようにデータを順番に供給して処理を進める、いわゆるブロック・パイプライン処理がある。
本発明の一つの形態は、デバイスの設計を支援するシステムであり、コンパイラと、シミュレータと、これらコンパイラおよびシミュレータから得られた情報によりソースプログラムを分析するための装置とを有する。コンパイラは、複数のソースステートメントを含むソースプログラムをコンパイルしてオブジェクトコードを生成すると共に、デバッグ情報を生成する。デバッグ情報は、それぞれのソースステートメントおよび/またはそれぞれのソースステートメントを中間言語に翻訳した中間リストと、中間リストがコード化された命令のコードメモリアドレスおよびその命令によりアクセスされる変数の変数メモリアドレスとを関連付けするデバッグ情報を含む。コードメモリアドレスおよび変数メモリアドレスは、オブジェクトコードの実行時の実行用メモリにおけるアドレスを示す。
シミュレータは、サイクルベースのシミュレータであって、オブジェクトコードを走行することにより、メモリアクセス情報を生成する。メモリアクセス情報は、サイクル単位でアクセスされるコードメモリアドレス、変数メモリアドレスおよびアクセスタイプを含む。
分析装置は、複数のソースステートメントの一部または中間リストの一部を処理ブロックとしてグループ化するためのブロックIDを、デバッグ情報に基づき、それぞれの命令のコードメモリアドレスに関連付けして記憶するメモリと、メモリアクセス情報に基づき、ソースプログラムを実行したときの実行用メモリに対するアクセス状況を、サイクルの経過と共に、表示デバイスにグラフィック表示するグラフィック表示機能とを有する。アクセス状況には、変数メモリアドレスおよびアクセスタイプが含まれる。さらに、アクセス状況には、さらに、コードメモリアドレスを含めても良い。さらに、アクセス状況は、それぞれの命令のコードメモリアドレスに関連付けされたブロックIDにより異なる形態で表示される。その1つの形態は、アクセス状況を、ブロックIDの相違により色分けして表示することである。
分析装置は、ブロックIDを、それぞれの命令のコードメモリアドレスに関連付けしてメモリに記憶する。アクセス状況は、コードメモリアドレスおよび変数メモリアドレスを含み、コードメモリアドレスおよびブロックIDを介して、それぞれの命令が属する処理ブロックと関連付けされる。したがって、グラフィック表示機能は、サイクル(サイクル時刻)の経過と共に変化するアクセス状況を、そのアクセスを行なっている命令が含まれる処理ブロックの単位で識別できるように表示できる。そして、この分析装置は、メモリに記憶された、ブロックIDと、ソースステートメントまたは中間リストとを関連付けするためのデータを変更することにより、それぞれの命令のコードメモリアドレスに対するブロックIDが変更される。したがって、ソースプログラムあるいは中間リストをベースとして、プログラム内の複数の処理ブロックの構成を簡単に、そして、フレキシブルに変更できる。このため、コンパイルおよびシミュレーションを繰り返すことなく、短時間で、リアレンジされた処理ブロックに基づき、実行用メモリに対するアクセス状況を表示できる。
ソースプログラムを自動的に分析して複数の処理ブロックを設定することも可能である。一方、ユーザが外部から複数の処理ブロックをフレキシブルに指定あるいは定義できることは、デバイスの設計段階において重要である。例えば、表示デバイスに表示されたソースステートメントの一部あるいは中間レベルの一部を選択するだけで、ソースプログラムを分割するための複数の処理ブロックの構成を変更できる。ソースレベルあるいは中間言語レベルで処理ブロックを変更できる分析装置は、複数のソースステートメントの少なくとも一部または中間リストの少なくとも一部を表示デバイスに表示する機能と、表示デバイス上で指定された複数のソースステートメントの一部または中間リストの一部に対応する命令のコードメモリアドレスに対して、デバッグ情報を参照して、他の処理ブロックのブロックIDとは異なるブロックIDを割当てる機能とを有することが望ましい。
アクセス状況として表示されたコードメモリアドレスを指定することにより、プログラムの処理ブロックの構成を変更することも可能である。そして、デバッグ情報を参照することにより、そのリアレンジされた処理ブロックをソースプログラムレベルあるいは中間言語レベルで表示することができる。どのような方法により複数の処理ブロックの指定を変更しても、プログラムの処理ブロックの構成を変えた段階で、シミュレーションを再実行しなくても、再構成あるいは再分割された処理ブロックによりアクセス状況を表示できる。
本発明の他の一つの形態は、デバッグ情報と、メモリアクセス情報とを利用して、複数のソースステートメントを備えたソースプログラムを分析する処理をコンピュータにより実行するためのプログラムあるいはプログラム製品である。この分析処理は、複数のソースステートメントの一部または中間リストの一部を処理ブロックとしてグループ化するためのブロックIDを、デバッグ情報に基づき、コードメモリアドレスに関連付けしてメモリに記憶する機能(工程)と、メモリアクセス情報に基づき、ソースプログラムを実行したときの、コードメモリアドレス、変数メモリアドレスおよびアクセスタイプを含めた、実行用メモリに対するアクセス状況を、サイクルの経過と共に、コードメモリアドレスに関連付けされたブロックIDにより異なる形態で表示デバイスにグラフィック表示する機能(工程)とを含む。このプログラムは、適当な記録媒体に記録して提供でき、コンピュータにインストールすることにより、コンピュータを分析装置として機能させることができる。
この分析装置は、ソースプログラムを複数の処理ブロックに分割する構成を変更することが簡単であり、シミュレーションをやり直すことなく、種々の処理ブロックの構成に対して、処理ブロックの単位で実行用メモリに対するアクセス状況を表示できる。このため、分析装置は、CPUあるいは他の適当な演算機能をメモリアクセス解析手段として、指定された処理ブロックの構成について、処理ブロックの単位で、実行用メモリに対するアクセス状況を解析できる。
この分析装置において、メモリアクセス情報と、それぞれの命令のコードメモリアドレスに関連付けされたブロックIDとに基づき、対をなす処理ブロックの間の実行用メモリを介したデータ転送の方向を示す第1の判断機能は、ブロック間のパイプライン処理の可能性を判断するために有効である。ソースプログラム内の処理ブロックの構成を変えたときに、対を成す処理ブロックの間のデータ転送方向が一方向であれば、その対をなす処理ブロックをパイプライン方式で並列実行できる。
対をなす処理ブロックが複数ある場合は、それらの間の実行用メモリを介したデータ転送の量および方向を表示デバイスにマトリクス表示することにより、パイプライン方式で並列実行できる処理ブロックのペアを簡単に指定できる。デバッグ情報を利用して、マトリクス表示されたデータ転送のいずれかを指定することにより、そのデータ転送に対応するソースステートメントまたは中間リストを表示デバイスに表示することも可能である。
本発明の一つの形態は、デバッグ情報と、メモリアクセス情報とを利用して、複数のソースステートメントを備えたソースプログラムを分析する方法であって、以下の工程を有する。
a1. 複数のソースステートメントの一部または中間リストの一部に対して、複数のソースステートメントの一部または中間リストの一部を処理ブロックとしてグループ化するためのブロックIDを割当て、そのブロックIDをデバッグ情報に基づき、それぞれの命令のコードメモリアドレスに関連付けしてメモリに記憶する。
a2. メモリアクセス情報と、コードメモリアドレスに関連付けされたブロックIDとに基づき、メモリアクセス解析手段により、対を成す処理ブロックの間の実行用メモリを介したデータ転送の方向を求める。
a3. 複数の対をなす処理ブロックの間の実行用メモリを介したデータ転送の量および方向を表示デバイスにマトリクス表示する。
分析装置において、指定された処理ブロックの構成について、メモリアクセス情報と、それぞれの命令のコードメモリアドレスに関連付けされたブロックIDとに基づき、実行用メモリの同一領域に対する第1の処理ブロックおよび第2の処理ブロックの参照関係を求める第2の判断機能も有用である。参照関係が求まれば、実行用メモリの同一領域に対するアクセスが重ならないあるいは逆転しない範囲が判断できる。重ならない範囲あるいは逆転しない範囲であれば、その範囲は、他の処理ブロックのアクセスを許すことができる。そのような条件で、第1の処理ブロックと第2の処理ブロックとは並列実行可能であり、第1の処理ブロックと第2の処理ブロックとを、仮想的に並列実行した結果を示すことができる。
この第2の判断機能により、メモリアクセス状態情報の順序関係を分析することにより、複数の処理ブロックを、どこまで重複させて実行可能かが判定できる。前の処理ブロック(ブロック領域の処理)がデータを書き出してから、後の処理ブロックがそのデータを読み込むという処理上の順序制限を満たす場合は、それらの処理ブロックは、その参照関係を満足する範囲において並列実行することが可能であり、処理時間をさらに短縮できる。
さらに、メモリアクセス情報と、それぞれの命令のコードメモリアドレスに関連付けされたブロックIDとに基づき、第1の処理ブロックおよび第2の処理ブロックと並列実行したときの実行用メモリとの間のアクセスに要するバンド幅を算出できる。指定された1の処理ブロックと他の処理ブロックとの間のバンド幅を判定するために、バンド幅対サイクルの関係をグラフにより表示する機能を設けることは有効である。また、利用可能なバンド幅などの複数の処理ブロックのパイプライン動作の条件を設定する機能または工程を設けることも有効である。
本発明の他の一つの形態は、パイプライン動作に関し、ソースプログラムを分析する方法であり、以下の工程を有する。
b1. 複数のソースステートメントの一部または中間リストの一部に対して、複数のソースステートメントの一部または中間リストの一部を処理ブロックとしてグループ化するためのブロックIDを割当て、そのブロックIDをデバッグ情報に基づき、それぞれの命令のコードメモリアドレスに関連付けしてメモリに記憶する。
b2. メモリアクセス情報と、それぞれの命令のコードメモリアドレスに関連付けされたブロックIDとに基づき、メモリアクセス解析手段により、実行用メモリの同一領域に対する第1の処理ブロックおよび第2の処理ブロックの参照関係を求めて、第1の処理ブロックと第2の処理ブロックとを並列実行する可能性を示す。
b3. メモリアクセス解析手段により、メモリアクセス情報と、それぞれの命令のコードメモリアドレスに関連付けされたブロックIDとに基づき、第1の処理ブロックおよび第2の処理ブロックと実行用メモリとの間のアクセスに要するバンド幅を算出する。
これらの分析装置および方法においては、複数の処理ブロックのパイプライン方式により実行する可能性、さらには、単純なパイプライン方式より並列度を高めて実行する可能性を、プログラムそのものを独立分割してシミュレーションせずに判断できる。その結果、パイプライン方式と、並列実行とが可能であり、それに適した複数の処理ブロックの構成、並列実行のために要するデータ転送量やバンド幅が判明する。その情報を利用することにより、ソースプログラムにより記述された処理を、複数のブロック領域(処理ブロック)に分け、それらを適当なタイミングで個別のハードウェアにより実行可能とし、所謂マルチプロセッサデバイスの動作環境でソースプログラムにより記述された処理を実行するデバイスを設計できる。ブロック・パイプライン動作の判定の結果、1の構成となるようにプログラムをブロック化したのでは所望の性能に至ることが不可能と判定されれば、GUI環境で処理ブロックの定義を変えて、他の構成となるようにプログラムをブロック化した場合のブロック・パイプライン動作の可否を判定できる。
図1は、分析装置を含む支援システムの概要を示す。 図2は、デバッグ情報、メモリアクセス情報およびブロック情報の概要を示す。 図3は、ソースプログラムの記述に対して処理ブロックを設定する概要を示す。 図4は、メモリアクセス状況を示す表示例。 図5は、処理ブロック間のデータ転送の説明。 図6は、データ転送のマトリクス表示例。 図7は、マトリクス表示からソースステートメントをバックトラックして表示する例。 図8は、メモリアクセスの参照関係の一例を示す。 図9は、処理ブロックを並列に実行したときのメモリアクセスの参照関係の一例。 図10は、処理ブロックを並列に実行したときのメモリアクセスの参照関係の他の例。 図11は、バンド幅も含めてメモリアクセスの参照関係を示す表示例。 図12は、解析方法の概要を示すフローチャート。 図13は、複数の処理ブロックの実行状況を示す。 図14は、複数の処理ブロックをパイプライン方式で実行する例を示す。 図15は、複数の処理ブロックを並列度を高めて実行する例を示す。
図1は、ソースプログラム50により記述された処理をデバイス、例えば、半導体デバイスに実装するための設計を支援するためにソースプログラム50を分析する支援システム5の概要を示している。分析の対象となるソフトウェア(ソースプログラム)50は、例えばMPEG4のプロトコルを用いて画像の圧縮伸長を行う処理を含む画像処理用のアプリケーションである。この支援システム5は、分析あるいは解析のターゲットとなるソースプログラム50をコンパイルするコンパイラ1と、コンパイルされたオブジェクトコード51を走行させることにより、実行時のメモリに対するアクセス状態およびサイクル情報を含むメモリアクセス情報53を生成するサイクルベースの命令レベルシミュレータ(ISS)2とを備えている。コンパイラ1は、オブジェクトコード51と共に、デバッグ情報52を生成する。このデバッグ情報52は、ソースプログラム50に含まれるソースステートメント、例えば、C言語により記述されたCステートメントと、そのステートメントをコード化した命令のメモリ上のアドレス(コードメモリアドレス)と、その命令によりアクセスされる変数のメモリ上のアドレス(変数メモリアドレス)との関連を示す結合情報を含んでいる。
支援システム5は、デバッグ情報52と、メモリアクセス情報53とを用いて、ソースプログラム50を、それによるメモリに対するアクセスという動作面から分析する分析装置55を備えている。コンパイラ1、ISS2および分析装置55は、専用のハードウェアを備えた装置であっても良い。多くのケースでは、入出力装置、記憶装置、CPUなどの適当なハードウェア資源を備えたコンピュータを、コンパイラ1、ISS2および分析装置55として機能させるためのソフトウェアとして、それぞれ提供される。したがって、支援システム5が単体のコンピュータあるいはネットワークにより接続された複数のコンピュータにより実現される場合は、分析装置55の入力となるデバッグ情報52およびメモリアクセス情報53は、システム5に含まれるハードディスクなどの適当な記録媒体を介して、あるいは、コンピュータネットワークなどの適当な伝送経路を介して分析装置55に供給される。以下において、デバッグ情報52は、結合情報に加えて、ソースプログラム50およびオブジェクトコード51に含まれる情報のうち、分析に必要な情報を含むものとして記載されている。デバッグ情報52と共に、ソースプログラム50および/またはオブジェクトコード51を分析装置55に供給し、デバッグ情報52の情報量を削減することも可能である。
分析装置55においては、ターゲットのソフトウェアであるソースプログラム50の動作結果を分析する際に、ソースプログラム50におけるブロック領域の指定を行うブロック情報54を生成する。ブロック領域は、ソースプログラム50に含まれる1または複数のCステートメントを含む。ブロック領域によりグループ化あるいは分割されたステートメントからなる1または一群の処理は、分析装置55においてソースプログラム50の動作を分析する際に、1つの分離できない単位あるいは塊としてハンドリングされる。したがって、以降では、ソースプログラム50が分割され、ソースプログラム50に含まれる複数のCステートメントがグループ化されたものを処理ブロックと呼ぶ。ブロック情報54においては各々の処理ブロックに対してユニークなブロックIDを付すことで、処理ブロックを区別する。
分析装置55は、適当なハードウェア資源を有するコンピュータ3により実現される。例えば、コンピュータ3は、演算機能を備え、以降で説明する複数の機能を実現するためのCPU4と、データを記憶するためのメモリ7と、コンピュータ3を分析装置55として機能させるためのプログラム(プログラム製品)9pなどが格納されたROMなどのプログラムメモリ(記録媒体)9と、入出力インターフェイス8と、この入出力インターフェイス8を介してデータを表示し、また、データを入力できる入出力デバイス6を備えている。分析装置55においては、視覚的にソースプログラム50の動作が把握できるようにGUI(グラフィカルユーザインターフェイス)8が採用されており、入出力デバイス6は、グラフィック表示するための表示デバイスとしての機能を備えている。コンピュータ3が備えたハードウェア資源は、これらに限定されるものではない。
図2に、デバッグ情報、メモリアクセス情報およびブロック情報の概要を示してある。デバッグ情報52は、ソース情報としてソースプログラム50に含まれるC言語のソースステートメント(Cステートメント)21と、ソースプログラム50に含まれる関数定義22と、ソースステートメント21を中間言語、この例ではアセンブラに変換したアセンブラ・リスト23とを備えている。また、デバッグ情報52は、オブジェクト情報として、アセンブラ・リスト23がコード化された命令(コード)のメモリアドレス(コードメモリアドレス)25と、その命令によりアクセスされる変数のメモリアドレス(変数メモリアドレス)26とを備えている。さらに、デバッグ情報52は、デバッグする際に、オブジェクト情報からソース情報にフィードバックするためにオブジェクト情報とソース情報との関係を示す結合情報29を備えている。コードメモリアドレス25および変数メモリアドレス26は、オブジェクトコード51を半導体デバイス90に実装し、ソースプログラム50の処理を実行する際のメモリ(実行用メモリ)のアドレスとなる。図2には、プロセッサ91と、プロセッサ91に対してコードを提供するコードメモリ92と、データを記憶するデータメモリ93とを備えたハーバードアーキテクチャタイプのデバイス90を参考に示している。
メモリアクセス情報53は、オブジェクトコード51をサイクルベースISS2により走行することにより作成され、デバイス90における実行用のメモリ92および93に対するサイクル単位のメモリアクセス状態が記録されたものである。メモリアクセス情報53は、サイクル情報31と、そのサイクルの処理を指示する命令のコードメモリアドレス25と、アクセスした変数メモリアドレス26と、動作タイプ(アクセスタイプ)を示す情報27とを備えている。アクセスタイプ27は、例えば、変数(メモリ)93に対して書き込みまたは読み出しの動作をしたことが記録される。ISS2においては、オブジェクトコード51は、命令コードが並んだ順番で逐次実行され、並列実行は考慮されない。このため、サイクル情報31に格納されるサイクルタイムに対し、1つのコードメモリアドレス25が対応する。
メモリアクセス情報53は、各サイクルで記録されるので、膨大な量となる。したがって、メモリアクセス情報53は圧縮されて保持され、また、分析装置55に供給されることが望ましい。データを圧縮する方法は種々であるが、サイクル情報31は、ビット長とインクリメンタル値の組み合わせを連続して持たせる相対値による保有方式が有効である。また、コードメモリアドレス25と変数メモリアドレス26については辞書方式が有効である。したがって、メモリアクセス情報53には、メモリアドレス値を対応する辞書値が保有され、メモリアクセス情報53とは独立にデコード用のメモリアドレス辞書が分析装置55に供給される。
ブロック情報54は、コードメモリアドレス25と、ブロックID35とを備えている。デバッグ情報52は、コードメモリアドレス25を介してブロックID35と関連付けされ、Cステートメント21およびアセンブラ・リスト23を含むソース情報が、ブロックID35により識別される処理ブロックのいずれに属するものであるかが判明する。また、メモリアクセス情報53も、コードメモリアドレス25を介してブロックID35と関連付けされ、あるサイクルのメモリアクセスが、ブロックID35により識別される処理ブロックのいずれに属するものであるかが判明する。さらに、あるサイクルのメモリアクセスを特定することにより、それら一連のメモリアクセスを行なっている処理ブロックのCステートメント21を表示することも可能となる。
図3に、ソースプログラム上でブロック領域を指定して、処理ブロックをセットする様子を示してある。複数のCソースステートメント21を含んだソースプログラム50は、入出力する変数の相違、入力あるいは出力の相違、ループ処理など様々な観点からグループ化することが可能である。メモリに対するアクセスという観点からは、変数に対して入出力する処理を含むループ処理は、アクセス量が多いので、ループ処理を一つのブロックとしてグループ化することは有効である。例えば、図3に示したソースプログラム50において、メモリに対する書き込みと読み出しをそれぞれ含むループ処理を2つのブロック10および11として設定することができる。
コンパイラ1において、ソースプログラム50は、中間言語であるアセンブラに変換され、中間ファイル59が生成される。高級言語であるC言語のステートメントは、1つのステートメントが、1つまたは複数のアセンブラ・リスト23に変換される。したがって、1または複数のCステートメント21を含む処理ブロック10および11に対応して、1または複数のアセンブラ・リスト23を含む処理ブロック10および11が設定される。
各々のアセンブラ・リスト23が機械語の命令コードに変換され、オブジェクトコード51が生成される。それと共に、デバッグ情報52が生成される。オブジェクトコード51は、アセンブラによる中間ファイル59と同じ順番でコード化された命令が並び、この順番でISS2により実行される。
図1に示した分析装置55は、ソースプログラム50を処理ブロックに区分けして、処理ブロックの単位でメモリに対するアクセス状態を確認することができる。このため、図1に示すように、ソースプログラム50をブロック化して、ブロック情報54を生成するブロック化機能61を備えている。分析装置55は、内部において、ソースプログラム50をコンピュータの機能を用いて解析し、実行用のメモリに対する入出力を含むループ処理を自動的にブロック化する機能を備えていても良い。さらに、分析装置55は、外部から、ユーザにより、ブロック化する機能を備えている。
この分析装置55は、ユーザに対して、ソースプログラム50を、どのようにブロック化するかということを開放している。このため、入出力装置6に対し、デバッグ情報52に基づき、入力インターフェイス8を介してソース情報としてCソースステートメント21またはアセンブラ・リスト23の全部あるいは一部を表示するソース情報表示機能62を備えている。ソース情報表示機能62は、さらに、入出力装置6に表示されたソース情報の一部をユーザが指定することにより、ブロック化したい領域を設定する機能を備えている。したがって、ユーザは、図3に示したように、ソースステートメント21またはアセンブラ・リスト23を個別に、あるいはある領域で指定することにより、処理ブロックを設定することができる。
ブロック化機能61は、デバッグ情報52を参照し、表示デバイス6で指定された複数のソースステートメント21の一部またはアセンブラ・リスト23の一部に対応する命令のコードメモリアドレス25に対して、他の処理ブロックのブロックID35とは異なるブロックID35を割当てる。そして、コードメモリアドレス25と、ブロックID35との対応関係をブロック情報54としてメモリ7に記憶する。
図4に、メモリに対するアクセス状況の表示画面の例を示してある。分析装置55は、さらに、メモリアクセス情報53に基づき、実行用のメモリ92および93に対するアクセス状況をサイクルの経過と共に入出力装置6にグラフィック表示する機能63を備えている。入出力装置6のディスプレイ6dには、縦軸71がメモリアドレスとなり、横軸72がサイクル時間となったグラフ70が表示される。メモリアドレス71は、コードメモリ92のアドレス71cと、変数メモリ93のアドレス71vとに上下に分かれて表示され、変数メモリアドレス71vにはソースプログラム50において参照される変数名73が合わせて表示される。メモリアクセス情報53は、サイクル情報31と、コードメモリアドレス25と、変数メモリアドレス26と、アクセスタイプ27とを含んでいる。したがって、サイクルの経過にしたがって、コードメモリアドレス25と、変数メモリアドレス26とをグラフ70にプロットすることにより、サイクルの経過により実行用のメモリ92および93に対するアクセス状況を表示できる。アクセスタイプ27は、色で区別することが可能であり、例えば、実行用メモリ93に対する書き込みは、赤のライン75で表示され、実行用メモリ93からの読み出しは、青のライン76で表示される。コードメモリ92に対しては基本的に読み出しを示すライン74が表示される。
グラフ70に表示されるサイクル単位のアクセス状況は、コードメモリアドレス25の情報を含んでおり、ブロック情報54を参照することにより、ブロックID35により識別される何れかの処理ブロックに属する命令によるアクセスかを判断することができる。さらに、ISS2においては、オブジェクトコード51は、命令コードが並んだ順番で逐次実行されるので、メモリ92および93に対して並列なアクセスは発生しない。このため、サイクルの経過(サイクルタイム)72と共に示されるメモリアクセス状況はいずれか1つの処理ブロックに属するものになる。したがって、グラフ70においては、サイクルタイム72によりバックグラウンドの表示を色分けすることで、いずれかの処理ブロックに属するメモリアクセスであることを区別できるようにしている。例えば、処理ブロック10に属するサイクルタイム72の領域は、バックグラウンドが薄い黄色により表示され、処理ブロック11に属するサイクルタイム72の領域は、バックグラウンドが薄いピンク色により表示され、処理ブロック12に属するサイクルタイム72の領域は、バックグラウンドが薄い紫色により表示される。
また、グラフ70に表示されたメモリアクセス状況は、コードメモリアドレス25およびブロック情報54を介して、そのアクセスを行なっているソース情報とも関連付けされている。このため、ディスプレイ6dにグラフィック表示された実行用メモリ93に対するアクセスのサイクルタイム、例えば、アクセスしていることを示すライン75の上を指定することにより、そのメモリアクセス75に対応するソースステートメント21またはアセンブラ・リスト23を抽出できる。このため、アクセス状況を表示する機能63は、グラフ70の上からブロックID35が判断できる操作が行われると、ポップアップ画面6pを表示し、その中に、該当するブロックID35の処理ブロックのソースステートメント21を表示する。ポップアップ画面6pには、ソースステートメント21の代わりに、あるいは共に、アセンブラ・リスト23を表示することも可能である。
分析装置55は、さらに、処理ブロックのブロック間パイプライン動作の条件を判断する2つの判断機能65および66を備えている。第1の判断機能65は、対を成す処理ブロック、すなわち、処理ブロック10および11と、処理ブロック11および12と、処理ブロック10および12の間の実行用メモリ93を介したデータ転送の方向を示し、パイプライン方式での動作の可否を判断する。第2の判断機能66は、実行用メモリ93の同一領域に対する第1の処理ブロック10および第2の処理ブロック11の参照関係を求めて、第1の処理ブロック10と第2の処理ブロック11との並列実行性を判断する。
複数の処理ブロックが指定された場合、それらの処理ブロックをパイプライン方式で並列実行できるか否かを判断するため、各処理ブロックの間に通信が存在しているのか否かを第1の判断機能65により判断する。対をなす処理ブロック、例えば、ブロック10および11をパイプライン化する、すなわち、パイプライン方式で実行するためには、ブロック10からブロック11に対して通信があり、ブロック11からブロック10に対しては通信がないことが必要である。ブロック間の通信は、変数メモリ93を介したデータ転送で判断される。すなわち、図5に示すように、メモリアクセス状態をグラフィック表示する機能63により表示されたグラフ70において、ブロック10が変数メモリ93に対して入出力97を繰り返し、その後のサイクルでブロック11が変数メモリ93の同じアドレスからデータを読み出す処理98を行なっていれば、ブロック10からブロック11に対するデータ転送(データ通信)99が存在する。したがって、第1の判断機能65は、メモリアクセス状況をグラフ表示するか否かに関わらず、メモリアクセス情報53と、ブロック情報54により、対を成す処理ブロック10および11の間の実行用メモリ93を介したデータ転送の有無およびその方向を判断できる。そして、そのデータ転送の方向が一方向であれば、処理ブロック10および11はパイプライン方式で並列実行できる。
図6に、ディスプレイ6dに、複数の処理ブロックに対して、それらの間のデータ転送の方向および量をマトリクス表示した様子を示してある。マトリクス表示77を採用することにより、ソースプログラム50に3つ以上の処理ブロック、例えば、ブロック10〜12が設定される場合は、ペアをなすブロック間のデータ転送の方向を視覚により容易に把握できる。ブロック間のデータ転送量は、ブロック・パイプラインの可否判断だけであれば要求されないが、デバイスの設計においては、バス幅などを検討するために重要である。分析装置55は、第1の判断機能65に付属する機能として、マトリクス表示する機能67を備えている。
この例において、ブロック10とブロック11のペアでは、ブロック10からブロック11に対するデータ転送D1011があり、逆方向のデータ転送D1110はない。ブロック11とブロック12のペアでは、ブロック11からブロック12に対するデータ転送D1112があり、逆方向のデータ転送D1211はない。ブロック10とブロック12のペアでは、ブロック10からブロック12に対するデータ転送は両方向D1012およびD1210ともない。したがって、ブロック10、11および12は、この順番にパイプライン方式で実行することが可能である。
このような、「From」「To」のデータ転送を示すマトリクス表示77により各ブロック間の通信量を相互に示すことが可能となる。これによりブロック間に通信が存在しているのか否かが方向性まで含めて分かる。マトリクス表示77においては、サイクル時間の概念は失われている。しかしながら、まずこの方法によってデータ通信の存在を確認し、しかる後に、後述するバンド幅分析に入ることが望ましい。
マトリクス表示77に表示されたブロック間のデータ転送は、サイクルタイムの概念はない。しかしながら、データ転送において使用された変数アドレス26は分かる。したがって、マトリクス表示77の任意のデータ転送の表示を指定することにより、そのデータ転送に関わるソースステートメント21あるいはアセンブラ・リスト23を表示することができる。
図7に、マトリクス表示77のデータ転送D1011を指定して、その通信動作をしているCソースステートメント21をバックトラックして表示する例を示す。通信は、ライトとリードから成り立ち、かつ、通信の回数(タイミング)は通常は複数である。したがって、通信表示D1011から、その通信に使用された変数を表示する変数ウィンドウ78が表示される。変数ウィンドウ78には、変数毎に、その変数に対する実行時の動作タイプ(リードもしくはライト)の回数78cが表示される。この動作回数78cには、動作を行なったサイクル情報31が含まれている。したがって、メモリアクセス情報53およびデバッグ情報52により、通信を行なった処理ブロックおよびソースステートメント21を判断することができる。このため、ディスプレイ6dに、ソースステートメント21を表示するポップアップ画面6pが表示される。ソースステートメント21の代わりにアセンブラ・リスト23を表示することも可能である。
分析装置55の第2の判断機能66は、2つの処理ブロックをパイプライン動作させたときの並列実行の分析および判定と、それら2つの処理ブロックの間のデータ転送量とバンド幅の分析および判定とを行う。分析装置55は、さらに、2つの処理ブロックを仮想的に並列実行した結果をグラフィック表示する機能68を備えており、並列実行した際のバンド幅を含めて表示することができる。また、分析装置55は、複数の処理ブロックの並列実行を検討するための動作条件を入力する機能69を備えている。
上述したように、ISS2においては、オブジェクトコード51は、オリジナルのソースプログラム50に記述された順番でシーケンシャルに実行される。したがって、分析装置55において複数の処理ブロックに区分けされるアルゴリズムも、シーケンシャルに実行され、その結果がメモリアクセス情報53として分析装置55に供給されている。このため、当初のメモリアクセス状況を示すグラフィック表示70においては、図4に示すように、処理ブロック10および11は、並列性なしで実行された条件で表示される。
図8に、図4に示したメモリアクセス状況を簡略化して示してある。ここでは、ISS2においては、ソースプログラム50の処理ブロック10と処理ブロック11は、実行用の変数メモリ93の各エントリd[i]をアクセスしながら逐次処理され、その結果、メモリ93の各エレメントd[i]に関するアクセスの内容(即ち書き込み状態又は読み出し状態)27、アドレス情報(コードメモリアドレス25および変数メモリアドレス26)、およびサイクル情報31がメモリアクセス情報53として記録される。以下では、メモリ93は、アドレス0語からn語に相当するエントリd[i]を備えたメモリであるとしている。
サイクル情報31を含むメモリアクセス情報53には、あるサイクル期間においてメモリ93のあるアドレス領域95にデータの書き込み75を行い、その後、あるサイクル期間においてメモリ93の同じアドレス領域95からデータの読み出し(読み込み)76を行なうといった過程が記録されている。分析装置55の第2の判断機能66においては、ブロック情報54を参照することにより、メモリアクセス情報53を解析することにより、コードメモリアドレス25を介して、データの書き込み75が処理ブロック10により行なわれ、データの読み出し76が処理ブロック11により行なわれたことが分かる。したがって、第2の判断機能66では、メモリ93のアドレス領域95に対して、処理ブロック10と処理ブロック11とは、ある参照関係96を備えていることが分かる。
分析装置55の第2の判断機能66は、この参照関係96に基づき、処理ブロック10と11を、独立のハードウェア、例えば、独立の回路あるいは処理ユニットに実装した場合の並列処理について判断する。すなわち、処理ブロック10および11を異なるデバイスにより並列に実行する場合に、処理ブロック11の実行に齟齬をきたさないで、あるいはウェイトを発生させないで、どこまで処理ブロック11を前進させて、処理ブロック10と部分的に並列に実行させることが可能となるかを判断する。
上述した第1の判断機能65により、処理ブロック10と処理ブロック11との間にバックトラックを発生させる逆方向のデータ転送がない場合は、処理ブロック10と処理ブロック11とに順番にデータを流すことにより、ブロック単位でパイプライン処理を行うことができる。この第2の判断機能66においては、同じデータ群あるいはフレームの処理を処理ブロック10と処理ブロック11とが時間的に一部重複して、あるいは一部並列に実行できるか否かを検討する。処理ブロック10および11が、一部重複して処理を実行することにより、ブロック・パイプライン動作をさらに進めて処理速度を向上することが可能となる。
このため、第2の判断機能66においては、処理ブロック10および11により、互いに参照される、すべてのメモリアドレスにおいて、処理ブロック11をどこまで前進させて実行できるか判断する。これにより、これら処理ブロック10および11の間のパイプライン動作の可能なタイミング・サイクルが最終的に判定できる。さらに条件設定機能69により、並列実行の動作条件を変更することが可能であり、第2の判断機能66により、設定された動作条件に従ってメモリアクセス情報53を解析する。
図9は、条件設定機能69によりメモリ93がシングルポートであるとして、パイプライン動作を検討した結果のグラフィック表示79aである。このグラフ79aは、ソースプログラム50の処理ブロック10と処理ブロック11とを、ハードウェア的に分離独立して同時実行可能とした場合を示している。このグラフ79aは、メモリ93への参照関係(アクセスのタイミング)より、処理ブロック11を処理ブロック10と一部並列に実行でき、パイプライン動作のタイミング・サイクルTcをメモリ93に対するアクセスが重複しないサイクルTaまで短縮できることを示している。したがって、処理ブロック11の実行は、図8に示したように、ソースプログラム50をシリアルに実行した場合に比べて大きく前進させることができる。
図10は、条件設定機能69にメモリ93がデュアルポートであるとして、パイプライン動作を検討した結果のグラフィック表示79bである。この関係グラフ79bは、処理ブロック10と処理ブロック11とが、ハードウェア的に分離独立して同時実行可能とした場合、メモリ93へのアクセスのタイミングより、パイプライン動作のタイミング・サイクルTcをメモリ93に対するアクセスが部分的に重複したサイクルTbまで短縮できることを示している。タイミング・サイクルTcは図9に示したケースよりさらに短くなり、処理ブロック11の実行をさらに前進させることができる。
これらの検討結果は、処理ブロック10と処理ブロック11とに区分けされた処理においては、シングルポートメモリを用いて、書き込み75と読み出し76が同時実行されない条件でブロック間パイプライン処理をするハードウェアに対し、デュアルポートメモリを用いて書き込み75と読み出し76とが同時実行される条件でブロック間パイプライン処理するハードウェアの方が処理時間を短縮できることを示している。したがって、デュアルポートメモリを採用したときの処理時間の短縮による性能的なメリットと、シングルポートメモリを採用したときの経済的なメリットとを判断して、ソースプログラム50を実行するハードウェアを決定できる。
この第2の判断機能66においては、処理ブロック10および11が実行メモリ93にアクセスするすべてのメモリアドレスにおいて、それぞれの処理ブロック10および11のアクセスをサイクル単位で判断する。したがって、処理ブロック10による書き込み75の処理量と、処理ブロック11による読み出し76の処理量がサイクル単位で判明する。このため、処理ブロック10および11を、上記の条件でブロック・パイプライン動作するように並列実行したときに、メモリ93とのアクセスに必要なビット転送量の総和を計算できる。このビット転送量の総和は、処理ブロック10および11を並列実行する際に必要なメモリ93のバス幅およびデータバスのバンド幅に対応する。
図11に、バス幅も含めた第2の判断機能66の評価結果を表示機能68により表示した様子を示してある。ディスプレイ6dには、メモリアドレス対サイクルの参照関係を示すグラフ79cと、バンド幅対サイクルの関係を示すグラフ79dとが表示される。グラフ79dのバンド幅71bは、あるサイクルタイムにおけるメモリあるいはバスをアクセスする際に要求されるビット幅である。サイクル毎のバンド幅の総和が、データ転送量に相当する。
図11のメモリアドレス対サイクルの参照関係を示すグラフ79cは、図10においてメモリ93をデュアルポートとした動作条件のグラフ79bに相当する。したがって、グラフ79dは、その動作条件で処理ブロック10および11を並列実行したときの各サイクルにおけるバンド幅を示している。図8あるいは図9に示した動作条件であっても同様のバンド幅対サイクルの関係を示すグラフを表示できる。図11に示したグラフ79dにより、デュアルポートメモリを前提とした同時アクセスを許容する仕様のデバイスにおいて、ピーク時にどの程度のバンド幅が要求されるかが判明する。バンド幅を示すグラフ79dにおいては、処理ブロック10による書き込みに必要とされるバンド幅と、処理ブロック11による読み出しに必要とされるバンド幅が色などにより区別して表示される。必要とされるバンド幅は、各サイクルにおけるバンド幅の最大値であり、データ転送量は各サイクルにおけるバンド幅の総和になる。また、この例ではオーバラップしているが、書き込み75と読み出し76の時間総和Ttが判明するので、サイクル平均のバンド幅の算出も可能である。
このように、分析装置55においては、ソースプログラム50により与えられた所定のアプリケーションの処理を、適当な大きさの複数の処理ブロックに、マニュアルで、あるいは自動的に区切ることができる。さらに、分析装置55によりメモリアクセス状況を解析することにより、それらの処理ブロックを、独立して稼動する複数のデバイスによりブロック・パイプライン動作させることの可否と、それによる処理時間の短縮度と、ブロック・パイプライン動作させるために必要なハードウェアリソースとを判断できる。したがって、分析装置55およびそれを含む支援システム5により、ソースプログラム50を実行するための、経済的な専用ハードウェアリソース、たとえばプロセッサの、設計および開発を支援することができる。
図12に、分析装置55において、ソースプログラム50を複数の処理ブロックに分けて、それらをパイプライン方式で実行する可能性および並列実行する可能性を解析する方法の概要をフローチャートにより示してある。まず、ステップ80において、デバッグ情報52およびメモリアクセス情報53を取得する。これらの情報がコンピュータネットワークにより接続されたサーバなどに格納されている場合は、それらにアクセスできる条件がセットされれば十分である。
次に、ステップ81において、ブロック化機能61により、ソースプログラム50または中間リストファイル59を参照して、処理ブロックを設定する。メモリアクセス状況のグラフィック表示70において、メモリアクセス状態を参照しながら処理ブロックを設定することも可能である。このステップ81において、適当なブロックIDが、ソースプログラム50のそれぞれの命令のコードメモリアドレスに関連付けされたブロック情報54が生成されてメモリ7に記録される。
次に、ステップ82において、第1の処理機能65をメモリアクセス解析手段として、メモリアクセス情報53と、ブロック情報54に基づき、対を成す処理ブロックの間の実行用メモリを介したデータ転送の方向が求められる。その結果が、ステップ83において、マトリクス表示機能67によりマトリクス表示される。この段階で、ステップ81において設定した処理ブロックをパイプライン方式で実行できるか否かを判断できる。したがって、ステップ84において、処理ブロックを再設定する必要があるかを判断し、必要があれば、ステップ81に戻って、処理ブロックの設定を変更する。例えば、ソースプログラム50の分割位置などを変更する。上述したように、ブロック情報54により処理ブロックの設定を自由に変更できるので、分析装置55においては、処理ブロックの再設定は極めて容易である。そして、コンパイルを再実行したり、ISS2によるシミュレーションを再実行する必要もなく、異なる構成の処理ブロックを設定しても、それに基づくソースプログラム50の解析結果を短時間に得ることができる。
例えば、ISS2によりソースプログラム50に記述された命令を逐次実行したときに、設定された3つの処理ブロック10、11および12は、図13に示したように実行される。これら3つの処理ブロック10、11および12において、図6のマトリクス表示77のようなデータ転送関係があれば、処理ブロック10、11および12は、この順番でパイプラインを組むことが可能となる。したがって、図14に示したように、処理ブロック10、11および12をパイプライン並列で実行することができることがわかる。分析装置55が、このように、処理ブロック単位で、サイクルの経過(サイクルタイム)にしたがってソースプログラム50の処理が実行されている様子をディスプレイ6dに表示することは有効である。このため、分析装置55は、処理ブロックの単位で実行される様子をシミュレートした結果を表示する機能64を備えている。
複数の処理ブロックをパイプライン並列で処理できる場合、さらに、並列度を向上できるか否かの評価(解析)を行なうことができる。ステップ85において、動作条件の入力機能69によりメモリ93のタイプ、バスのバンド幅などを含む動作条件をセットする。ステップ86において、第2の判断機能66をメモリアクセス解析手段として、メモリアクセス情報53と、ブロック情報54とに基づき、実行用メモリ93の同一領域に対する処理ブロック、例えば、処理ブロック10および処理ブロック11の参照関係を求めて、これらの処理ブロック10および11を並列実行する可能性を判断する。ステップ87において、その結果をバンド幅も含めて、グラフ表示機能68により表示する。
解析結果を判断し、ステップ88において動作条件の再設定を希望する場合は、ステップ85に戻って、再解析することができる。また、ステップ89において、処理ブロックの再設定を希望する場合は、ステップ81に戻って、ブロック情報54を変更する処理から再度実行することができる。動作条件の設定で変更可能な条件は、上記の例で述べたメモリがシングルポートであるとかデュアルポートであるとかに限らず、メモリアクセスに費やされるレイテンシなどであっても良い。また、ブロック領域の設定によってもブロック間パイプラインの条件は変わり、性能や経済的な効果も変動する。したがって、実際のハードウェアの設計においては、幾つかの条件で性能およびコストを比較することが望ましい。いずれの場合も、上述したように、デバッグ情報52およびメモリアクセス情報53を再生成する必要がないので、短時間で解析結果を得ることができる。
第2の解析機能65によるメモリ93の参照関係の解析の結果、処理ブロック10と処理ブロック11との間では並列に実行が可能であり、処理ブロック11と処理ブロック12との間では並列実行が不可能であると判断される。したがって、図15に示すように、処理ブロック10、11および12をブロック・パイプライン方式で実行する場合、処理ブロック10および11を一部重複して並列に実行できることが分かる。したがって、ソースプログラム50により与えられたアプリケーションの処理をさらに加速できることがわかる。
上記の解析方法で解析した結果、ターゲットのソフトウェア自体を改変する等の処理をして最適化する必要が生じた場合であっても、実際に、ソフトウェア(ソースプログラム)を独立分割してデバイスへの実装を進めてから性能が満たされないと判明するよりは遥かに設計期間を短縮できる。従来、機能がブロック単位に逐次構成されているソフトウェアを実行すれば、ブロック単位に順次実行され、いわゆる逐次処理が行われる。このソフトウェアをブロック単位に並列同時実行させるには、ソフトウェアそのものをブロック単位に独立分割し、同時実行する環境にて走行させて分析するのが常であった。しかしながら、これでは独立分割してみないと、並列実行された場合の処理性能、その構成におけるデータ転送量、あるいはバンド幅が分からない。分割そのものは大変な作業であり、かつ、分割可能な点あるいは領域がいくつもある場合には、どこで分割すればどのような結果となるのかは、分割してみないと分からないという状況になる。デバイスの設計過程における、前述のような状況に対して、この分析装置55および分析装置を用いた解析方法は極めて有効な解を提供できる。
すなわち、ソフトウェアを分割せずに、メモリアクセス情報を記録する機能を有するISSを実行し、しかる後に分析したい対象となるソフトウェアのブロック領域を指定するだけで分離独立させた際と同等な解析が可能となる。したがって、ターゲットのソフトウェアを分離独立せずに、パイプライン並列性の特性と必要とされるデータ転送量とバンド幅の判定が可能となり、従来の初期分離分割手法に比べ大幅な設計期間の短縮が可能となる。このため、分析装置55を用いた支援システム5は、マルチプロセッサの開発環境における初期段階で効果を発揮する。
分析装置55は、専用のハードウェアで実現しても良く、汎用のコンピュータを用いて実現することも可能である。コンピュータを分析装置として動作させるためのプログラムまたはプログラム製品は、上述した各機能をコンピュータにより実行可能な命令を有するものであり、CD−ROMなどの適当な記録媒体に記録して提供することができる。また、プログラムをインターネットなどのコンピュータネットワークを介して提供することも可能である。
また、上記では、ソースプログラム50に対して、処理ブロック10、11および12の3つのブロック領域を設定して分析装置(解析装置)55にて解析する例を説明してきたが、ブロック指定は1または2でもよく、4以上であっても良い。ブロック指定が1つの場合は、ひとつのブロック領域が指定され、指定されなかった部分がもうひとつのブロックと認識される。したがって、本発明の判定プログラムは、パイプライン動作判定に限らず、データ転送量およびバンド幅の判定にも適用できる。

Claims (19)

  1. 複数のソースステートメントを含むソースプログラムをコンパイルしてオブジェクトコードを生成すると共に、それぞれのソースステートメントおよび/または前記それぞれのソースステートメントを中間言語に翻訳した中間リストと、前記オブジェクトコードの実行時の実行用メモリにおける、前記中間リストがコード化された命令のアドレスであるコードメモリアドレスおよびその命令によりアクセスされる変数のアドレスである変数メモリアドレスとを関連付けするデバッグ情報を生成するコンパイラと、
    サイクルベースのシミュレータであって、前記オブジェクトコードを走行することにより、サイクル単位でアクセスされるコードメモリアドレス、変数メモリアドレスおよびアクセスタイプを含むメモリアクセス情報を生成するシミュレータと、
    前記デバッグ情報と前記メモリアクセス情報とを利用して前記ソースプログラムを分析する分析装置とを有し、
    この分析装置は、
    前記複数のソースステートメントの一部または前記中間リストの一部を処理ブロックとしてグループ化するためのブロックIDを、前記デバッグ情報に基づき、それぞれの命令のコードメモリアドレスに関連付けして記憶するメモリと、
    前記メモリアクセス情報に基づき、前記ソースプログラムを実行したときの、変数メモリアドレスおよびアクセスタイプを含めた、前記実行用メモリに対するアクセス状況を、サイクルの経過と共に、前記それぞれの命令のコードメモリアドレスに関連付けされたブロックIDにより異なる形態で表示デバイスにグラフィック表示する機能とを備えている、支援システム。
  2. デバッグ情報と、メモリアクセス情報とを利用して、複数のソースステートメントを備えたソースプログラムを分析するための装置であって、
    前記デバッグ情報は、前記ソースプログラムをコンパイルしてオブジェクトコードを生成する段階で生成され、それぞれのソースステートメントおよび/または前記それぞれのソースステートメントを中間言語に翻訳した中間リストと、前記オブジェクトコードの実行時の実行用メモリにおける、前記中間リストがコード化された命令のアドレスであるコードメモリアドレスおよびその命令によりアクセスされる変数のアドレスである変数メモリアドレスとを関連付けする情報を含み、
    前記メモリアクセス情報は、前記オブジェクトコードをサイクルベースのシミュレータで走行することにより生成され、サイクル単位でアクセスされるコードメモリアドレス、変数メモリアドレスおよびアクセスタイプを含み、
    さらに、
    前記複数のソースステートメントの一部または前記中間リストの一部を処理ブロックとしてグループ化するためのブロックIDを、前記デバッグ情報に基づき、それぞれの命令のコードメモリアドレスに関連付けして記憶するメモリと、
    前記メモリアクセス情報に基づき、前記ソースプログラムを実行したときの、変数メモリアドレスおよびアクセスタイプを含めた、前記実行用メモリに対するアクセス状況を、サイクルの経過と共に、それぞれの命令のコードメモリアドレスに関連付けされたブロックIDにより異なる形態で表示デバイスにグラフィック表示するグラフィック表示機能とを有する装置。
  3. 前記グラフィック表示機能は、前記アクセス状況を、ブロックIDの相違により色分けして表示する、請求項2の装置。
  4. 前記複数のソースステートメントの少なくとも一部または前記中間リストの少なくとも一部を前記表示デバイスに表示する機能と、
    前記表示デバイス上で指定された前記複数のソースステートメントの一部または前記中間リストの一部に対応する命令のコードメモリアドレスに対して、前記デバッグ情報を参照し、他の処理ブロックのブロックIDとは異なるブロックIDを割当てる機能とを有する、請求項2の装置。
  5. 前記メモリアクセス情報と、前記それぞれの命令のコードメモリアドレスに関連付けされたブロックIDとに基づき、対を成す処理ブロックの間の前記実行用メモリを介したデータ転送の方向を示す、第1の判断機能を、さらに有する、請求項2の装置。
  6. 前記第1の判断機能は、複数の対をなす処理ブロックの間の前記実行用メモリを介したデータ転送の量および方向を前記表示デバイスにマトリクス表示する機能を備えている、請求項5の装置。
  7. マトリクス表示されたデータ転送のいずれかを指定することにより、そのデータ転送に対応するソースステートメントまたは中間リストを前記表示デバイスに表示する機能をさらに有する、請求項6の装置。
  8. 前記メモリアクセス情報と、前記それぞれの命令のコードメモリアドレスに関連付けされたブロックIDとに基づき、前記実行用メモリの同一領域に対する第1の処理ブロックおよび第2の処理ブロックの参照関係を求めて、前記第1の処理ブロックと前記第2の処理ブロックとを並列実行する可能性を示す、第2の判断機能を、さらに有する、請求項2の装置。
  9. 前記第2の判断機能は、前記メモリアクセス情報と、前記それぞれの命令のコードメモリアドレスに関連付けされたブロックIDとに基づき、前記第1の処理ブロックおよび前記第2の処理ブロックと前記実行用メモリとの間のアクセスに要するバンド幅を算出する機能を備えている、請求項8の装置。
  10. 前記グラフィック表示機能によりグラフィック表示された実行用メモリに対するアクセスのサイクルを指定することにより、そのメモリアクセスに対応するソースステートメントまたは中間リストを前記表示デバイスに表示する機能をさらに有する、請求項2の装置。
  11. デバッグ情報と、メモリアクセス情報とを利用して、複数のソースステートメントを備えたソースプログラムを分析する処理をコンピュータにより実行するためのプログラムであって、
    前記デバッグ情報は、前記ソースプログラムをコンパイルしてオブジェクトコードを生成する段階で生成され、それぞれのソースステートメントおよび/または前記それぞれのソースステートメントを中間言語に翻訳した中間リストと、前記オブジェクトコードの実行時の実行用メモリにおける、前記中間リストがコード化された命令のアドレスであるコードメモリアドレスおよびその命令によりアクセスされる変数のアドレスである変数メモリアドレスとを関連付けした情報を含み、
    前記メモリアクセス情報は、前記オブジェクトコードをサイクルベースのシミュレータで走行することにより生成され、サイクル単位でアクセスされるコードメモリアドレス、変数メモリアドレスおよびアクセスタイプを含み、
    当該分析する処理は、
    前記複数のソースステートメントの一部または前記中間リストの一部を処理ブロックとしてグループ化するためのブロックIDを、前記デバッグ情報に基づき、前記コードメモリアドレスに関連付けしてメモリに記憶する機能と、
    前記メモリアクセス情報に基づき、前記ソースプログラムを実行したときの、変数メモリアドレスおよびアクセスタイプを含めた、前記実行用メモリに対するアクセス状況を、サイクルの経過と共に、前記それぞれの命令のコードメモリアドレスに関連付けされたブロックIDにより異なる形態で表示デバイスにグラフィック表示する機能とを含む、プログラム。
  12. 前記分析する処理は、さらに、
    前記メモリアクセス情報と、前記それぞれの命令のコードメモリアドレスに関連付けされたブロックIDとに基づき、対を成す処理ブロックの間の前記実行用メモリを介したデータ転送の方向を示す、第1の判断機能を含む、請求項11のプログラム。
  13. 前記第1の判断機能は、複数の対をなす処理ブロックの間の前記実行用メモリを介したデータ転送の量および方向を前記表示デバイスにマトリクス表示する機能を含む、請求項12のプログラム。
  14. 前記分析する処理は、さらに、
    前記メモリアクセス情報と、前記それぞれの命令のコードメモリアドレスに関連付けされたブロックIDとに基づき、前記実行用メモリの同一領域に対する第1の処理ブロックおよび第2の処理ブロックの参照関係を求めて、前記第1の処理ブロックと前記第2の処理ブロックとを並列実行する可能性を示す、第2の判断機能を含む、請求項11のプログラム。
  15. 前記第2の判断機能は、前記メモリアクセス情報と、前記それぞれの命令のコードメモリアドレスに関連付けされたブロックIDとに基づき、前記第1の処理ブロックおよび前記第2の処理ブロックと前記実行用メモリとの間のアクセスに要するバンド幅を算出する機能を含む、請求項12のプログラム。
  16. デバッグ情報と、メモリアクセス情報とを利用して、複数のソースステートメントを備えたソースプログラムを分析する方法であって、
    前記デバッグ情報は、前記ソースプログラムをコンパイルしてオブジェクトコードを生成する段階で生成され、それぞれのソースステートメントおよび/または前記それぞれのソースステートメントを中間言語に翻訳した中間リストと、前記オブジェクトコードの実行時の実行用メモリにおける、前記中間リストがコード化された命令のアドレスであるコードメモリアドレスおよびその命令によりアクセスされる変数のアドレスである変数メモリアドレスとを関連付けした情報を含み、
    前記メモリアクセス情報は、前記オブジェクトコードをサイクルベースのシミュレータで走行することにより生成され、サイクル単位でアクセスされるコードメモリアドレス、変数メモリアドレスおよびアクセスタイプを含み、
    以下の工程を有する方法。
    a1. 前記複数のソースステートメントの一部または前記中間リストの一部に対して、前記複数のソースステートメントの一部または前記中間リストの一部を処理ブロックとしてグループ化するためのブロックIDを割当て、そのブロックIDを前記デバッグ情報に基づき、それぞれの命令のコードメモリアドレスに関連付けしてメモリに記憶する。
    a2. 前記メモリアクセス情報と、コードメモリアドレスに関連付けされたブロックIDとに基づき、メモリアクセス解析手段により、対を成す処理ブロックの間の前記実行用メモリを介したデータ転送の方向を求める。
  17. さらに以下の工程を有する、請求項16の方法。
    a3. 複数の対をなす処理ブロックの間の前記実行用メモリを介したデータ転送の量および方向を表示デバイスにマトリクス表示する。
  18. デバッグ情報と、メモリアクセス情報とを利用して、複数のソースステートメントを備えたソースプログラムを分析する方法であって、
    前記デバッグ情報は、前記ソースプログラムをコンパイルしてオブジェクトコードを生成する段階で生成され、それぞれのソースステートメントおよび/または前記それぞれのソースステートメントを中間言語に翻訳した中間リストと、前記オブジェクトコードの実行時の実行用メモリにおける、前記中間リストがコード化された命令のアドレスであるコードメモリアドレスおよびその命令によりアクセスされる変数のアドレスである変数メモリアドレスとを関連付けした情報を含み、
    前記メモリアクセス情報は、前記オブジェクトコードをサイクルベースのシミュレータで走行することにより生成され、サイクル単位でアクセスされるコードメモリアドレス、変数メモリアドレスおよびアクセスタイプを含み、
    以下の工程を有する方法。
    b1. 前記複数のソースステートメントの一部または前記中間リストの一部に対して、前記複数のソースステートメントの一部または前記中間リストの一部を処理ブロックとしてグループ化するためのブロックIDを割当て、そのブロックIDを前記デバッグ情報に基づき、それぞれの命令のコードメモリアドレスに関連付けしてメモリに記憶する。
    b2. 前記メモリアクセス情報と、前記それぞれの命令のコードメモリアドレスに関連付けされたブロックIDとに基づき、メモリアクセス解析手段により、前記実行用メモリの同一領域に対する第1の処理ブロックおよび第2の処理ブロックの参照関係を求めて、前記第1の処理ブロックと前記第2の処理ブロックとを並列実行する可能性を示す。
  19. さらに、以下の工程を有する請求項18の方法。
    b3. 前記メモリアクセス解析手段により、前記メモリアクセス情報と、前記それぞれの命令のコードメモリアドレスに関連付けされたブロックIDとに基づき、前記第1の処理ブロックおよび前記第2の処理ブロックと前記実行用メモリとの間のアクセスに要するバンド幅を算出する。
JP2006531879A 2004-08-23 2005-08-19 ソースプログラムの分析装置 Expired - Fee Related JP4866241B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006531879A JP4866241B2 (ja) 2004-08-23 2005-08-19 ソースプログラムの分析装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2004242151 2004-08-23
JP2004242151 2004-08-23
PCT/JP2005/015158 WO2006022204A1 (ja) 2004-08-23 2005-08-19 ソースプログラムの分析装置および方法
JP2006531879A JP4866241B2 (ja) 2004-08-23 2005-08-19 ソースプログラムの分析装置

Publications (2)

Publication Number Publication Date
JPWO2006022204A1 true JPWO2006022204A1 (ja) 2008-05-08
JP4866241B2 JP4866241B2 (ja) 2012-02-01

Family

ID=35967416

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006531879A Expired - Fee Related JP4866241B2 (ja) 2004-08-23 2005-08-19 ソースプログラムの分析装置

Country Status (4)

Country Link
US (1) US20080288923A1 (ja)
EP (1) EP1788485A4 (ja)
JP (1) JP4866241B2 (ja)
WO (1) WO2006022204A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4905165B2 (ja) * 2007-02-07 2012-03-28 富士通株式会社 監視支援プログラム、監視方法および監視システム
US8042099B2 (en) * 2007-05-30 2011-10-18 Red Hat, Inc. Facilitating availability of object data types at runtime
JP5333232B2 (ja) * 2007-12-12 2013-11-06 日本電気株式会社 プログラムデバッグ方法、プログラム変換方法及びそれを用いるプログラムデバッグ装置、プログラム変換装置並びにデバッグ用プログラム
KR100939917B1 (ko) 2008-03-07 2010-02-03 에스케이 텔레콤주식회사 움직임 예측을 통한 부호화 시스템 및 움직임 예측을 통한부호화 방법
US9026925B2 (en) * 2008-10-17 2015-05-05 International Business Machines Corporation Method to create and use an aspect oriented color coding algorithm for a graphical user interface
JP5287427B2 (ja) * 2009-03-30 2013-09-11 日本電気株式会社 シンボリックデバッガ、方法およびプログラム
JP5459021B2 (ja) * 2010-03-31 2014-04-02 富士通株式会社 シミュレーション装置
JP5059174B2 (ja) * 2010-08-10 2012-10-24 株式会社東芝 プログラム変換装置、およびそのプログラム
US9355017B2 (en) * 2012-01-06 2016-05-31 Iii Holdings 4, Llc Automated error checking system for a software application and method therefor
KR101674787B1 (ko) * 2015-01-05 2016-11-10 삼성에스디에스 주식회사 프로그램의 성능 측정 시스템 및 방법
US20180173455A1 (en) * 2016-12-16 2018-06-21 International Business Machines Corporation Storage profiler for a computer operating system
US20210248288A1 (en) * 2018-07-19 2021-08-12 Hitachi Automotive Systems, Ltd. Simulation device, simulation method, and ecu device

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS53112043A (en) * 1977-03-11 1978-09-30 Fujitsu Ltd Program debugging system
JPS63204443A (ja) * 1987-02-20 1988-08-24 Mitsubishi Electric Corp ソフトウエア開発支援装置
JPH05197587A (ja) * 1991-11-12 1993-08-06 Fujitsu Ltd プログラムの動作表示処理装置
JPH10283226A (ja) * 1997-03-31 1998-10-23 Sony Computer Entertainment:Kk コンピユータ機器の解析装置及びその方法
JP2003216678A (ja) * 2001-04-06 2003-07-31 Pacific Design Kk データ処理システムおよび設計システム
JP2004234068A (ja) * 2003-01-28 2004-08-19 Pacific Design Kk プログラム性能評価方法およびプロファイラ
JP2004302706A (ja) * 2003-03-31 2004-10-28 Nec Corp プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05250341A (ja) * 1991-11-11 1993-09-28 Matsushita Electric Ind Co Ltd 並列可能性判定装置、及び並列可能性判定方法、並びにそれを用いたプログラム変換装置
US6230313B1 (en) * 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
US6877079B2 (en) * 2001-03-06 2005-04-05 Samsung Electronics Co., Ltd. Memory system having point-to-point bus configuration
US20020152061A1 (en) * 2001-04-06 2002-10-17 Shintaro Shimogori Data processing system and design system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS53112043A (en) * 1977-03-11 1978-09-30 Fujitsu Ltd Program debugging system
JPS63204443A (ja) * 1987-02-20 1988-08-24 Mitsubishi Electric Corp ソフトウエア開発支援装置
JPH05197587A (ja) * 1991-11-12 1993-08-06 Fujitsu Ltd プログラムの動作表示処理装置
JPH10283226A (ja) * 1997-03-31 1998-10-23 Sony Computer Entertainment:Kk コンピユータ機器の解析装置及びその方法
JP2003216678A (ja) * 2001-04-06 2003-07-31 Pacific Design Kk データ処理システムおよび設計システム
JP2004234068A (ja) * 2003-01-28 2004-08-19 Pacific Design Kk プログラム性能評価方法およびプロファイラ
JP2004302706A (ja) * 2003-03-31 2004-10-28 Nec Corp プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム

Also Published As

Publication number Publication date
JP4866241B2 (ja) 2012-02-01
WO2006022204A1 (ja) 2006-03-02
US20080288923A1 (en) 2008-11-20
EP1788485A1 (en) 2007-05-23
EP1788485A4 (en) 2012-09-26

Similar Documents

Publication Publication Date Title
JP4866241B2 (ja) ソースプログラムの分析装置
JP6307140B2 (ja) セーフティクリティカルソフトウェア自動要求ベーステストケース生成のためのシステムおよび方法
JP5648584B2 (ja) ソフトウェアアプリケーションのプロファイリング方法及び装置
JP5209059B2 (ja) ソース・コード処理方法、システム、及びプログラム
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
EP1248211A2 (en) Data processing system and design system
EP3264274B1 (en) Input discovery for unknown program binaries
JP2011096107A (ja) 並列化方法、システム、及びプログラム
US6360360B1 (en) Object-oriented compiler mechanism for automatically selecting among multiple implementations of objects
US20150331787A1 (en) Software verification
JP2005242569A (ja) データ処理装置設計方法、データ処理装置設計装置及びプログラム
JP2000347900A (ja) 入力パラメータ生成装置、その方法及び記録媒体
CN112445855A (zh) 用于图形处理器芯片的可视化分析方法和可视化分析装置
US9710360B2 (en) Optimizing error parsing in an integrated development environment
JP4870956B2 (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
US10409624B1 (en) Data array compaction in an emulation system
Chapp et al. Identifying degree and sources of non-determinism in MPI applications via graph kernels
JP4152659B2 (ja) データ処理システムおよび設計システム
US9582410B2 (en) Testing software on a computer system
JP5056493B2 (ja) 仮想ソフトウェア生成装置
US20170220450A1 (en) Analytic method and analyzing apparatus
Singhal et al. Profiling minisat based on user defined execution time--GPROF
Hammond et al. Performance prediction and procurement in practice: assessing the suitability of commodity cluster components for wavefront codes
CN117313595B (zh) 用于功能验证的随机指令生成方法、设备及系统
CN114153750B (zh) 代码检查方法及装置、代码编写方法、电子设备

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080305

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080520

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111003

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111025

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4866241

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees