(57)【要約】【課題】プログラムおよび特定用途向け構造プロセッサとを考慮し、このうち少なくとも１つを最適化するために必要な情報を提供するプロファイラを提供する。【解決手段】複数の処理要素を含む特定用途向け構造プロセッサの構造が記述された構造記述を分析して構造分析情報を生成する構造分析部と、プログラムの静的情報が記述されたプログラム静的情報を分析して静的分析情報を生成する静的分析部と、プログラムをシミュレーションして生成されたプログラムの動的情報が記述されたプログラム動的情報を分析して動的分析情報を生成する動的分析部と、構造分析情報、静的分析情報および動的分析情報のうち少なくとも１つに基づいて、プログラムを実行する際の特定用途向け構造プロセッサを最適化するための情報を生成するクロスプロファイル分析部とを含む。【選択図】図２
2008130078.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理要素を含む特定用途向け構造プロセッサの構造が記述された構造記述を分析して構造分析情報を生成する構造分析部と、
特定用途向け構造プロセッサによって実行されるプログラムの静的情報が記述されたプログラム静的情報を分析して静的分析情報を生成する静的分析部と、
前記プログラムをシミュレーションして生成された前記プログラムの動的情報が記述されたプログラム動的情報を分析して動的分析情報を生成する動的分析部と、
前記構造分析情報、前記静的分析情報、および前記動的分析情報のうちの少なくとも１つに基づいて、前記プログラムおよび前記特定用途向け構造プロセッサのうちの少なくとも１つを最適化するための情報を生成するクロスプロファイル分析部と、
を含むことを特徴とするプロファイラ。
【請求項２】
前記構造分析部は、
前記構造記述を分析して、複数の演算グループの少なくとも１つを実行可能な複数の処理要素のうちの少なくとも１つに対して演算グループ情報を生成する演算分析部を含むことを特徴とする請求項１に記載のプロファイラ。
【請求項３】
前記演算情報は、
前記複数の演算グループの少なくとも１つのそれぞれに対して、前記複数の処理要素のうち前記複数の演算グループの少なくとも１つを実行可能な処理要素数および前記複数の演算グループの少なくとも１つを実行可能な前記処理要素の識別子を含むことを特徴とする請求項２に記載のプロファイラ。
【請求項４】
前記構造分析部は、
前記構造記述を分析して前記複数の処理要素のうち少なくとも１つの処理要素の入力ポート、前記少なくとも１つの処理要素の出力ポートおよび前記少なくとも１つの処理要素の演算グループに関する情報のうち少なくとも１つを生成するプロセスユニット分析部を含むことを特徴とする請求項１に記載のプロファイラ。
【請求項５】
前記プロセスユニット分析部は、
前記少なくとも１つの処理要素によって支援される演算グループの最大遅延に関する情報を生成することを特徴とする請求項４に記載のプロファイラ。
【請求項６】
前記構造分析部は、
前記複数の処理要素の相互連結に関する情報を生成する相互連結分析部を含むことを特徴とする請求項１に記載のプロファイラ。
【請求項７】
前記プログラムの前記静的情報は、
前記プログラムをコンパイルした結果に基づくことを特徴とする請求項１に記載のプロファイラ。
【請求項８】
前記静的分析部は、
前記プログラムの前記静的情報を分析して各サイクル別に前記複数の処理要素のそれぞれで実行される少なくとも１つの演算に関するスケジュール情報を生成する演算スケジュール分析部を含むことを特徴とする請求項１に記載のプロファイラ。
【請求項９】
前記演算スケジュール分析部は、前記プログラムを遂行する少なくとも１つの関数を遂行するのに必要な少なくとも１つの演算グループに関するスケジュール情報をさらに生成し、前記少なくとも１つの演算グループは複数の演算で構成されることを特徴とする請求項８に記載のプロファイラ。
【請求項１０】
前記演算スケジュール分析部は、
前記少なくとも１つの演算間のデータ依存に関する情報を生成することを特徴とする請求項８に記載のプロファイラ。
【請求項１１】
前記静的分析部は、
前記プログラム静的情報を分析して前記プログラムを実行するための複数の演算の少なくとも１つが前記複数の処理要素のうちいずれの処理要素に割り当てられるかに関する情報を生成する配置およびルーティング分析部を含むことを特徴とする請求項１に記載のプロファイラ。
【請求項１２】
前記配置およびルーティング分析部は、
前記プログラム静的情報を分析して各サイクル別に前記処理要素に割り当てられた少なくとも１つの演算間のルーティングに関する情報を生成することを特徴とする請求項11に記載のプロファイラ。
【請求項１３】
前記配置およびルーティング分析部は、
前記対応する処理要素に割り当てられた前記少なくとも１つの演算が前記対応する処理要素で何回実行されるかに関する情報を生成することを特徴とする請求項11に記載のプロファイラ。
【請求項１４】
前記クロスプロファイル分析部は、
複数の演算グループの少なくとも１つが前記プログラム内で用いられた回数に関する静的演算活用度情報を生成することを特徴とする請求項１に記載のプロファイラ。
【請求項１５】
前記クロスプロファイル分析部は、
前記プログラムがシミュレーションされる間に複数の演算グループの少なくとも１つが用いられた回数に関する動的演算活用度情報を生成することを特徴とする請求項１に記載のプロファイラ。
【請求項１６】
前記クロスプロファイル分析部は、
前記複数の処理要素のうち少なくとも１つが前記プログラムに用いられる少なくとも１つの演算グループに割り当てられた回数に関する静的処理要素活用度情報を生成することを特徴とする請求項１に記載のプロファイラ。
【請求項１７】
前記クロスプロファイル分析部は、
前記プログラムがシミュレーションされる間に前記少なくとも１つの演算グループが割り当てられた前記複数の処理要素のうち少なくとも１つで、前記少なくとも１つの演算グループが用いられた回数に関する動的処理要素活用度情報を生成することを特徴とする請求項１に記載のプロファイラ。
【請求項１８】
前記クロスプロファイル分析部は、
前記プログラムがシミュレーションされる間に前記複数の処理要素のうち少なくとも１つの相互連結が用いられた回数に関する動的相互連結活用度情報を生成することを特徴とする請求項１に記載のプロファイラ。
【請求項１９】
前記クロスプロファイル分析部は、
前記プログラムのループのうちソフトウェアパイプラインが可能なループに関する情報を生成することを特徴とする請求項１に記載のプロファイラ。
【請求項２０】
前記クロスプロファイル分析部によって生成された前記特定用途向け構造プロセッサを最適化するための前記情報を視覚化してユーザに提供するプロファイル報告生成部をさらに含むことを特徴とする請求項１に記載のプロファイラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特定用途向け構造プロセッサ（application specific architecture processor）に関し、より詳細には、特定用途向け構造プロセッサのためのプロファイラに関する。
【背景技術】
【０００２】
最近、ASIC（Application Specific Integrated Circuit）やDSP（digital signal processor）に比べて相対的に高性能および柔軟性を同時に満たし得る特定用途向け構造プロセッサに対する関心が高まっている。特定用途向け構造プロセッサは、再構成プロセッサ（reconfigurable processor）、ASIP（application specific instruction set processor）、VLIW構造（very long instruction word architecture）などを含む。このような特定用途向け構造プロセッサの大部分は、多数の同質的または異質的な処理要素（processing element）で構成されている。この特定用途向け構造プロセッサは、ユーザの要求によって容易に変形できリリースできるという点において、関連する他のプロセッサと区別される。
【０００３】
関連技術のプロファイラは、関連技術の固定された構造のプロセッサのためにプログラムを最適化させることにだけ用いられてきた。例えば、ARM社のReal View（登録商標）シリーズやIntel社のThreading Toolなどのプロファイラは、固定された構造のターゲットプロセッサでソフトウェアを最適化するための実行時間情報（run-time information）のみを提供していた。
【０００４】
しかし、プロセッサの構造がユーザによって変形可能な特定用途向け構造プロセッサの登場により、この特定用途向け構造プロセッサおよびプログラムすべてを最適化させるのに必要な情報を提供することができるプロファイラが求められている。
【０００５】
【特許文献１】特開平11-330370号公報
【特許文献２】特開2005-172830号公報
【特許文献３】特開2005-216177号公報
【特許文献４】大韓民国特許出願公開第2002-66936号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、前述したような従来技術の問題点を解決するために案出されたものであって、プログラムをターゲットプロセッサに最適化するために必要な情報を提供するだけでなく、プログラムおよび特定用途向け構造プロセッサすべてを考慮して、両者を最適化するために必要な情報を提供することができるプロファイラを提供することを目的とする。
【０００７】
また、本発明は、特定用途向け構造プロセッサを最適化するために必要なプログラムの静的／動的演算スケジュール情報、静的／動的演算活用度情報、静的／動的処理要素活用度情報などを提供することができるプロファイラを提供することを目的とする。
【課題を解決するための手段】
【０００８】
前述したような目的を達成して従来技術の問題点を解決するために、本発明に係るプロファイラは、複数の処理要素を含む特定用途向け構造プロセッサの構造が記述された構造記述を分析して構造分析情報を生成する構造分析部と、特定用途向け構造プロセッサによって実行されるプログラムの静的情報が記述されたプログラム静的情報を分析して静的分析情報を生成する静的分析部と、前述のプログラムをシミュレーションして生成されたプログラムの動的情報が記述されたプログラム動的情報を分析して動的分析情報を生成する動的分析部と、構造分析情報、静的分析情報および動的分析情報のうち少なくとも１つに基づいて、プログラムおよび特定用途向け構造プロセッサのうち少なくとも１つを最適化するための情報を生成するクロスプロファイル分析部とを含む。
【０００９】
また、本発明の他の観点によるプロファイラは、クロスプロファイル分析部によって生成された特定用途向け構造プロセッサを最適化するための情報を視覚化してユーザに提供するプロファイル報告生成部をさらに含むように構成できる。
【００１０】
また、本発明のさらに他の観点によるプロファイラは、構造分析部が、構造記述を分析して、複数の演算グループのうち少なくとも１つを実行可能な処理要素に対する演算グループ情報を生成する演算分析部と、構造記述を分析して複数の処理要素のうち少なくとも１つの処理要素の入力ポート、少なくとも１つの処理要素の出力ポートおよび少なくとも１つの処理要素の演算グループに関する情報のうち少なくとも１つを生成するプロセスユニット分析部と、複数の処理要素の相互連結に関する情報を生成する相互連結分析部とを含む。
【００１１】
また、本発明のさらに他の観点によるプロファイラは、静的分析部が、プログラムの静的情報を分析して各サイクル別に複数の処理要素のそれぞれで実行される少なくとも１つの演算に関するスケジュール情報を生成する演算スケジュール分析部と、プログラム静的情報を分析してプログラムを実行するための複数の演算の少なくとも１つが複数の処理要素のうちのいずれの処理要素に割り当てられるかに関する情報を生成する配置およびルーティング分析部とを含む。
【００１２】
また、本発明のさらに他の観点によるプロファイラは、クロスプロファイル分析部が、複数の演算グループの少なくとも１つがプログラム内で用いられる回数に関する静的演算活用度情報と、プログラムがシミュレーションされる間に複数の演算グループの少なくとも１つが用いられた回数に関する動的演算活用度情報と、複数の処理要素のうち少なくとも１つがプログラムに用いられる少なくとも１つの演算グループに割り当てられた回数に関する静的処理要素活用度情報と、プログラムがシミュレーションされる間に少なくとも１つの演算グループが割り当てられた複数の処理要素のうち少なくとも１つで少なくとも１つの演算グループが用いられた回数に関する動的処理要素活用度情報と、プログラムがシミュレーションされる間に複数の処理要素のうち少なくとも１つの相互連結が用いられた回数に関する動的相互連結活用度情報とを生成する。
【発明の効果】
【００１３】
本発明によれば、プログラムおよび特定用途向け構造プロセッサすべてを考慮し、両者を最適化するために必要な情報を提供することができるプロファイラが提供される。
【００１４】
また、本発明のプロファイラは、特定用途向け構造プロセッサを最適化するために必要なプログラムの静的／動的動作スケジュール情報、静的／動的動作活用度情報、静的／動的処理要素活用度情報などを提供することができる。
【発明を実施するための最良の形態】
【００１５】
以下、添付の図面に基づき、本発明の好適な実施の形態を詳細に説明するが、本発明がこれらの実施形態によって制限または限定されることはない。図中、同じ参照符号は同じ部材を示す。
【００１６】
図１は、本発明のプロファイラを説明するための特定用途向け構造プロセッサの一例を示す図である。
【００１７】
図１に示された特定用途向け構造プロセッサは再構成プロセッサである。再構成構造は、装置の組み立て後にも問題解決のためにカスタマイズされ、計算を実行するために空間的にカスタマイズされた計算が用いられるという特徴を有する。
【００１８】
コースグレインアレイ（coarse-grained array：粗粒度アレイ）120は、複数の処理要素を含む。１つの処理要素110には、計算ユニット（function unit：FU）およびレジスタファイル（register file：RF）が含まれる。計算ユニットは計算を実行するユニットであり、レジスタファイルはレジスタの集合であって、計算ユニットで用いられるデータを一時的に保存する。構成メモリ（図示せず）は、コースグレインアレイ120の構成に関する情報を保存する。構成メモリに保存された構成によって、コースグレインアレイ120は、自身に含まれた処理要素間の連結状態を変更する。
【００１９】
図１に示されたプロセッサは、コースグレインアレイ120の処理要素のうち一部の処理要素をホストプロセッサとして用いる。したがって、通常のインストラクションは、コースグレインアレイ120のうち選択された一部の処理要素（以下「共有処理要素」とする）で実行され、ループのように反復した実行が必要なインストラクションは、共有処理要素を含んだ全体コースグレインアレイ120で実行される。このように、コースグレインアレイの処理要素のうち一部の処理要素をホストプロセッサとして用いる構成を密結合（tightly-coupled）と呼ぶ。密結合構成には、アレイモードおよび命令セットプロセッサモードの２つすべてが存在する。アレイモードでは、構成メモリに保存された構成によってコースグレインアレイ120の計算ユニットを実行させる。したがって、アレイモードで共有された処理要素は、コースグレインアレイの一部で動作する。命令セットプロセッサモードでは、コースグレインアレイ120の計算ユニットのうちあらかじめ選定された計算ユニット（共有処理要素）を実行させる。例えば、命令セットプロセッサモードでは、コースグレインアレイ120のうちの共有処理要素のみを動作し、残りの処理要素は動作しない。
【００２０】
このような密結合構成を用いれば、コースグレインアレイで用いる処理要素のうち一部をホストプロセッサとして用いるため、別途のホストプロセッサを採用する必要がない。これにより、プロセッサのサイズが減少するだけでなく、プロセッサの製作費用も減少することができる。
【００２１】
また、コースグレインアレイ120のうち一部の処理要素をホストプロセッサとして用いるときに、VLIW（very long instruction word）構造を用いることもできる。この場合、インストラクションメモリ140、データメモリ130、中央レジスタファイル160および共有処理要素がVLIW構造150を構成する。データメモリ130はコースグレインアレイ120の外部に位置してデータを保存し、インストラクションメモリ140はインストラクションを保存する。
【００２２】
本発明では、特定用途向け構造プロセッサの例としてコースグレインアレイを用いた密結合構成を中心として説明しているが、本発明は他の形態の再構成構造はもちろん、他の特定用途向け構造プロセッサにも適用が可能である。
【００２３】
図２は、本発明に係るプロファイラの構成を示したブロック図である。
【００２４】
本発明に係るプロファイラ230は、構造分析部231と、静的分析部232と、動的分析部233と、クロスプロファイル分析部234と、プロファイル報告生成部235とを含む。
【００２５】
構造分析部231は、複数の処理要素を含む特定用途向け構造プロセッサ構造が記述された構造記述211を分析して構造分析情報を生成する。構造分析部231については、図３〜６を参照して後述する。
【００２６】
静的分析部232は、プログラムの静的情報が記述されたプログラム静的情報222を分析して静的分析情報を生成する。プログラム静的情報222は、XML（Extensible Markup Language）などによりユーザが作成することもでき、プログラムをコンパイラ212によってコンパイルすることによって生成することもできる。静的分析部232については、図７〜11を参照して後述する。
【００２７】
動的分析部233は、プログラムをシミュレーションして生成されたプログラムの動的情報が記述されたプログラム動的情報223を分析して動的分析情報を生成する。プログラム動的情報223は、シミューレータ213がプログラムをシミュレーションして、プログラムが実際に実行された場合における情報である。例えば、プログラムが条件判断であるような場合には、この条件判断の種別を静的分析部232が判断することはできないが、動的分析部233はシミュレーションによっていずれの条件になるかを判断できる。本発明の一実施形態によれば、動的分析部233はクロスプロファイル分析部234とともに具現される。本明細書では、動的分析部233とクロスプロファイル分析部234をともに具現した例について、図12〜17bを参照して後述する。
【００２８】
クロスプロファイル分析部234は、構造分析部231によって生成された構造分析情報、静的分析部232によって生成された静的分析情報、および動的分析部233によって生成された動的分析情報のうち少なくとも１つに基づいて、プログラムを実行するための特定用途向け構造プロセッサのうちの少なくとも１つを最適化するための情報を生成する。
【００２９】
プロファイル報告生成部235は、クロスプロファイル分析部234によって生成された特定用途向け構造プロセッサを最適化するための情報を視覚化してユーザに提供する。例えば、本発明の一例によれば、図14a〜17bのような形態でユーザに特定用途向け構造プロセッサを最適化するための情報が提供される。ユーザはこの情報に基づいて、特定用途向け構造プロセッサの構造を決定して特定用途向け構造プロセッサに適用することで、該当するプログラムを実行するための最適化された構造を有する特定用途向け構造プロセッサを決定することができる。プロファイル報告生成部235によって生成される情報としては、構造情報表示241および静的およびデータプロファイリング情報表示242を挙げることができる。
【００３０】
図３は、本発明に係るプロファイラの構造分析部を説明するためのブロック図である。
【００３１】
構造分析部231は、特定用途向け構造プロセッサの構造を分析するモジュールである。構造分析部231は、複数の処理要素を含む特定用途向け構造プロセッサの構造が記述された構造記述を分析して構造分析情報を生成する。
【００３２】
構造記述211は、複数の処理要素を含む特定用途向け構造プロセッサの構造が記述されたデータである。構造記述は、XMLまたはADL（Architecture Description Language）などの形式で記述される。
【００３３】
図4aおよび図4bは、本発明に係る構造記述の一例を示している。
【００３４】
図面符号410は、複数の処理要素のうち「fu_0」で識別される処理要素の入力ポートおよび出力ポートに関する事項を記述している。図面符号410を参照すると、処理要素「fu_0」は、32ビットの２つの入力ポートと、32ビットの１つの出力ポートとを有する。また、「fu_0」が支援する演算グループに関しては、図面符号420に記述されている。処理要素「fu_0」は、「arith」、「logic」および「mul」で識別される３つの演算グループを実行することができる。設定によって処理要素「fu_0」は、３つの動作グループのうち１つの動作を実行する処理要素で設定できることは言うまでもない。本発明に係るプロファイラを用いれば、処理要素「fu_0」をいずれの動作グループを実行するように設定すれば良いのかに関する情報を得ることができる。
【００３５】
図面符号430は、特定用途向け構造プロセッサに含まれた複数の処理要素の連結に関する情報を記述する。図面符号430によれば、処理要素「fu_0」のポート「dst1」は、中央レジスタファイル「vliw_int_rf」のポート「in1」に連結される。
【００３６】
図面符号440および図面符号450は、各動作グループが含む動作が何であるかに関する情報を記述する。図面符号440によれば、「control」で識別される動作グループは「1」クロックサイクルの遅延を有し、「mv2sr」、「mvfsr」および「halt」という３つの動作を含む。「mv2sr」は「move to special register」、「mvfsr」は「move from special register」を意味する。図面符号450によれば、「arith」で識別される動作グループは「1」クロックサイクルの遅延を有し、「mov」、「add」、「add_u」、「sub」、「sub_u」、「setlo」、「sethi」、および「mb」という８つの動作を含む。
【００３７】
図３に示すように、構造分析部231は、演算分析部310と、プロセスユニット分析部320と、相互連結分析部330とを含む。構造分析部231は、構造記述211を演算分析部310、プロセスユニット分析部320および相互連結分析部330を介して分析し、演算グループ情報340、プロセスユニット情報350および相互連結情報360を生成する。
【００３８】
演算分析部310は、構造記述211を分析して複数の演算グループのそれぞれに対して前述の演算グループを実行可能な処理要素に対する演算グループ情報340を生成する。
【００３９】
図６は、本発明に係る演算分析部310によって分析された演算グループ情報340の一例を示している。図６に示すように、演算グループ情報340は、各演算グループに対して演算グループに属する演算を、演算グループの実行に必要なクロックサイクル（遅延）、演算グループを実行可能な処理要素の識別子、および演算グループを実行可能な処理要素数に関する情報を含むように構成できる。例えば、「arith」演算グループは「1」クロックサイクルの遅延を有し、「mov」、「add」、「add_u」、「sub」、「sub_u」、「setlo」、「sethi」、および「mb」という８つの動作を含む。また、「arith」演算グループは、「fu_0」〜「fu_15」までの計16の処理要素で支援される。
【００４０】
プロセスユニット分析部320は構造記述211を分析し、複数の処理要素のそれぞれに対して、処理要素の入力ポート、処理要素の出力ポート、および処理要素の演算グループに関する情報のうち少なくとも１つを生成する。プロセスユニット分析部320は、複数の処理要素のそれぞれに対して処理要素が支援する演算グループの最大遅延に関する情報を生成することもできる。
【００４１】
図５は、本発明に係るプロセスユニット分析部320によって分析されたプロセスユニット情報350の一例を示している。
【００４２】
図５は、特定用途向け構造プロセッサに含まれた複数の処理要素のうち「fu_0」で識別される処理要素に対するプロセスユニット情報350である。図面符号501は、処理要素「fu_0」の最大遅延が「4」クロックサイクルであることを示す。すなわち、処理要素「fu_0」が支援する動作グループのうち最大の遅延を有する動作グループの遅延が「4」クロックサイクルである。図面符号502は、処理要素「fu_0」が占める面積を示す。図面符号503は、処理要素「fu_0」を設定するために必要なビット数を示す。本発明の実施形態で説明する特定用途向け構造プロセッサは再構成プロセッサであるため、各処理要素を設定するための設定ビットが必要となる。これについては図面符号503に示されている。図面符号504は、処理要素「fu_0」の入力ポートに関する情報を示す。図面符号505は、処理要素「fu_0」の出力ポートに関する情報を示す。図面符号506は、処理要素「fu_0」が支援する演算グループに関する情報を示す。
【００４３】
相互連結分析部330は、構造記述211を分析して特定用途向け構造プロセッサに含まれた複数の処理要素の相互連結に関する相互連結情報360を生成する。このような相互連結情報は、プロファイル報告生成部235によって図16bおよび図16cのように視覚的に認知しやすい形態でユーザに提供するように構成できる。
【００４４】
図７は、本発明に係るプロファイラの静的分析部を説明するためのブロック図である。
【００４５】
静的分析部232は、プログラムの静的情報を記述するプログラム静的情報222を分析して静的分析情報を生成する。プログラム静的情報222は、プログラムをコンパイルして生成されたアセンブリコードであっても良い。
【００４６】
図８は、プログラム静的情報222の一例を示している。図８は、プログラムをコンパイルしてXML形式で表現したものである。図８によれば、識別子「403」を有する動作は「add」演算を実行する。このとき、「add」演算を実行するためのソースは、「vliw_int_rf」で識別される中央レジスタファイル160の「48」番レジスタファイルおよび「38」番レジスタファイルである。中央レジスタファイル160は複数のレジスタファイルを含む。この「add」演算の結果は、「vliw_int_rf」で識別される中央レジスタファイル160の「24」番レジスタファイルに記録される。プログラム静的情報222は、プログラムの実行をシミュレーションせずにプログラムから得られる情報であって、プログラムの実行をシミュレーションして生成されるプログラム動的情報223と区別される。
【００４７】
図７に示すように、静的分析部232は、動作スケジュール分析部710と、配置およびルーティング分析部720とを含む。静的分析部232は、プログラム静的情報222を演算スケジュール分析部710および配置およびルーティング分析部720によって分析し、演算スケジュール情報730、相互連結スケジュール情報740、およびデータフロー情報750を生成する。
【００４８】
演算スケジュール分析部710は、プログラム静的情報222を分析して、各サイクル別に特定用途向け構造プロセッサに含まれた複数の処理要素のそれぞれで実行される演算のスケジュールに関する演算スケジュール情報730を生成する。演算スケジュール分析部710は、複数の処理要素のそれぞれで実行される演算間のデータ依存（data dependency）に関する情報を生成することもできる。これは、演算間のスケジューリングのための情報として用いられる。
【００４９】
図９および図10には、演算スケジュール分析部710によって生成された演算スケジュール情報730の一例が示されている。図９に示された演算スケジュール情報730は、プログラムを実行する各関数別にこれら関数を実行するために必要な演算グループのスケジュール情報を示したものである。例えば、「HalfDelVerNxGT8_d」という関数を実行するためには、「ARI」、「SHI」、「PRE」などの演算グループが必要となる。また、演算グループはそれぞれ７番目、２番目、１番目などとして実行される必要がある。
【００５０】
図10に示された動作スケジュール情報730は、各クロックサイクル別に各処理要素が実行する演算のスケジュール情報を示す。例えば、クロックサイクル「0」において、処理要素「fu_0」は「ld_uc」という演算を実行し、処理要素「fu_2」は「add」という演算を実行する。
【００５１】
図７に示すように、配置およびルーティング分析部720は、プログラム静的情報222を分析してプログラムを実行するための複数の演算のそれぞれが複数の処理要素のうちいずれの処理要素に割り当てられるかに関する情報を生成する。また、配置およびルーティング分析部720は、処理要素に割り当てられた演算が処理要素で何回実行されるかに関する情報を生成する。
【００５２】
また、配置およびルーティング分析部720は、プログラム静的情報222を分析して各サイクル別に処理要素に割り当てられた演算間のルーティングに関する相互連結スケジュール情報740を生成する。また、配置およびルーティング分析部720は、プログラム静的情報222を分析して各サイクル別に処理要素間のデータフローに関するデータフロー情報750を生成する。
【００５３】
図11は、本発明に係る配置およびルーティング分析部720によって生成された相互連結スケジュール情報740およびデータフロー情報750の一例を示した図である。
【００５４】
図７に示すように、クロックサイクル「0」において、処理要素「fu_0」の「pred」ポートは、特定用途向け構造プロセッサを構成する「loop_start」素子の「dst」ポートで連結される。また、図７は、クロックサイクル「0」で処理要素「fu_0」の「src2」ポートは特定用途向け構造プロセッサを構成する「vliw_int_rf」素子の「out2」ポートで連結され、処理要素「fu_0」の「src1」ポートは特定用途向け構造プロセッサを構成する「vliw_int_rf」素子の「out1」ポートで連結されることを示す。
【００５５】
動的分析部233は、プログラムをシミュレーションして生成されたプログラムの動的情報を記述するプログラム動的情報223を分析して動的分析情報を生成する。プログラム動的情報223は、シミューレータ213がプログラムをシミュレーションしてプログラムが実際に実行される場合に関する情報である。
【００５６】
図13には、プログラム動的情報223の一例を示す。図13のプログラム動的情報223は、プログラムの実行をシミュレーションしてこのプログラムを実行するための関数に関する内容を含む。図13に示すように、「HalfPelVerNxGT8_d」という関数は、プログラムをシミュレーションする間に「795」回呼び出されている。また、この関数を実行するための詳細な内容が含まれる。
【００５７】
このような動的分析部233は、後述するクロスプロファイル分析部234に統合して具現することが可能である。
【００５８】
図12は、本発明に係るプロファイラのクロスプロファイル分析部234を説明するためのブロック図である。クロスプロファイル分析部234は、構造分析部231で生成される構造分析情報、静的分析部232で生成される静的分析情報、動的分析部233で生成される動的分析情報にうちの少なくとも１つに基づいて、特定用途向け構造プロセッサを最適化するための情報を生成するものである。
図12に示すように、クロスプロファイル分析部234は、演算活用度分析部1210と、処理要素活用度分析部1220と、相互連結活用度分析部1230と、ソフトウェアパイプライン分析部1240とを含む。
【００５９】
クロスプロファイル分析部234は、構造分析部231によって生成された構造分析情報、静的分析部232によって生成された静的分析情報、および動的分析部233によって生成された動的分析情報のうちの少なくとも１つに基づいて、プログラムを実行する際に特定用途向け構造プロセッサを最適化するための情報を生成する。この生成される情報は、静的／動的動作活用度情報1250と、静的／動的処理要素活用度情報1260と、静的／動的相互連結活用度情報1270と、ソフトウェアパイプラインループ情報1280とを含む。
【００６０】
演算活用度分析部1210は、構造分析情報、静的分析情報、および動的分析情報に基づいて、複数の演算グループのそれぞれがプログラム内で用いられた回数に関する静的演算活用度情報を、複数の演算グループのそれぞれに対して生成する。また、演算活用度分析部1210は、構造分析情報、静的分析情報、および動的分析情報に基づいて、プログラムがシミュレーションされる間に複数の演算グループのそれぞれが用いられた回数に関する動的演算活用度情報を、複数の演算グループのそれぞれに対して生成する。
【００６１】
図14a、図14bおよび図14cには、演算活用度分析部1210によって生成された静的／動的演算活用度情報1250が示されている。図14aに示すように、「extended」という演算グループに関して、プログラム静的情報222上では244回用いられるが、プログラム動的情報223では、7043917回の使用（呼び出し）がなされている。これは、プログラム上では「extended」という演算グループが１回だけ登場したとしても、ループまたは呼び出しなどによって演算グループが何度も用いられるためであり、静的分析部232によって分析するときはコンパイルされた結果だけで分析するが、動的分析部233ではプログラムの実行をシミュレーションした結果で分析するためである。
【００６２】
図14bは、各演算グループに対して静的分析結果演算グループのそれぞれがプログラム内に登場した回数を視覚的に示したものである。また、図14cは、プログラムがシミュレーションされる間に演算グループのそれぞれが用いられた回数を視覚的に示したものである。本実施形態で、「intr02_gp」および「intr13_gp」演算は、静的動作活用度および動的動作活用度ともに低下することを確認できる。この場合、ユーザは「intr02_gp」および「intr13_gp」演算を用いずに、他の演算を用いる関数にプログラムを変更することができる。また、プロセッサ側においても、このような演算を支援する処理要素をこれら演算を支援しないように変更することができる。また、本実施形態において、「intr06_gp」演算の場合、静的動作活用度は低いが動的動作活用度は高いため、「intr06_gp」演算は必要な演算であることが分かる。
【００６３】
図12に示すように、処理要素活用度分析部1220は、プログラム静的情報222（図２参照）に基づいて演算グループのそれぞれに対して演算グループが割り当てられた処理要素数を静的処理要素活用度情報として生成する。また、処理要素活用度分析部1220は、プログラムがシミュレーションされる間に演算グループが割り当てられた処理要素で演算グループが用いられた回数に関する動的処理要素活用度情報を演算グループのそれぞれに対して生成する。
【００６４】
図15a、図15bおよび図15cは、処理要素活用度分析部1220によって生成された静的／動的処理要素活用度情報1260を示している。
【００６５】
図15aに示すように、「extended」という演算グループは、プログラム静的情報222上では1サイクル当たり平均1．9個の処理要素で実行され、１サイクル当たり最大７つの処理要素で実行され、全体的に465個の処理要素によって実行される。１つの処理要素が互いに異なるサイクルで「extended」という演算グループを実行した場合には重複してカウントされる。また、「extended」という演算グループは、プログラムをシミュレーションしたときに、全体的に26114389個の処理要素によって実行される。静的分析と同様、１つの処理要素がシミュレーションのうち互いに異なるサイクルで「extended」という動作グループを実行した場合には重複してカウントされる。
【００６６】
図15bは、プログラム静的情報222に基づいて演算グループのそれぞれに対して演算グループが割り当てられた処理要素数を視覚的に示したものである。また、図15cは、処理要素活用度分析部1220によって、プログラムをシミュレーションする間に、演算グループが割り当てられた処理要素として、演算グループが用いられた回数を視覚的に示したものである。もし、特定用途向け構造プロセッサの処理要素のうち「extended」という演算グループを支援する処理要素を６つだけ用いることができる場合には、図15bおよび図15cを参照して、活用度が最も高い６つの処理要素を選択して、処理要素に「extended」という演算グループを配置するように構成できる。
【００６７】
図12に示すように、相互連結活用度分析部1230は、プログラム静的情報222に基づいて、複数の処理要素の相互連結が用いられた回数に関する静的相互連結活用度情報を複数の処理要素のそれぞれに対して生成する。また、相互連結活用度分析部1230は、プログラムをシミュレーションする間に複数の処理要素の相互連結が用いられた回数に関する動的相互連結活用度情報を複数の処理要素のそれぞれに対して生成する。
【００６８】
図16a、図16bおよび図16cは、本発明に係るプロファイラによって生成された静的／動的相互連結活用度情報および相互連結情報を示した図である。
【００６９】
図16aに示すように、特定用途向け構造プロセッサに含まれた処理要素「fu_0」は、多様な相互連結を有することができる。例えば、処理要素「fu_0」の「pred」ポートは、特定用途向け構造プロセッサに含まれる「vliw_pred」の「out1」ポートと静的には429回の相互連結を有するが、動的には15225190回の相互連結を有する。したがって、静的／動的相互連結活用度情報1270を参照すると、各処理要素で使用回数が少ない相互連結を除去することで、特定用途向け構造プロセッサを最適化することができる。
【００７０】
図16bおよび図16cは、構造記述211を分析した情報から各処理要素の連結を互いに異なる観点で視覚化したものである。このように視覚化された情報を介して、ユーザは処理要素間の相互連結をより容易に確認することができる。
【００７１】
図12に示すように、ソフトウェアパイプライン分析部1240は、プログラムのループのうちソフトウェアパイプラインが可能なループに関するソフトウェアパイプラインループ情報1280を生成する。プログラムのループのうちソフトウェアパイプラインが可能な場合は、これを分析してユーザに提供することで、ユーザはプログラムを最適化することができる。
【００７２】
図17aおよび図17bは、本発明に係るプロファイラによって生成されたソフトウェアパイプラインループ情報を示した図である。図17aでは、各関数に対してソフトウェアパイプライニングの適用が可能な程度を「s.cycle」で表示する。図17bは、「s.cycle」（図17bでは「cycle」）の順にソーティングして示したものである。
【００７３】
また、本発明の実施形態は、コンピュータにより具現される多様な動作を実行するためのプログラム命令を含むコンピュータ読み取り可能な媒体を含む。この媒体は、プログラム命令、データファイル、データ構造などを単独または組み合わせて含むように構成できる。媒体およびプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知であり使用可能なものであってもよい。コンピュータ読み取り可能な記録媒体の例としては、ハードディスク、フレキシブルディスクおよび磁気テープのような磁気媒体、CD−ROM、DVDのような光記録媒体、フロプティカルディスクのような磁気−光媒体、およびROM、RAM、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれる。媒体は、プログラム命令、データ構造などを保存する信号を送信する搬送波を含む光または金属線、導波管などの伝送媒体である場合も含まれる。プログラム命令の例としては、コンパイラによって生成されるもののような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行される高級言語コードを含む。
【００７４】
上述したように、本発明の好ましい実施形態を参照して説明したが、該当する技術分野において熟練した当業者にとっては、特許請求の範囲に記載された本発明の思想および領域から逸脱しない範囲内で、本発明を多様に修正および変更させることができることを理解できるであろう。すなわち、本発明の技術的範囲は、特許請求の範囲に基づいて定められ、発明を実施するための最良の形態により制限されるものではない。
【図面の簡単な説明】
【００７５】
【図１】本発明のプロファイラを説明するための特定用途向け構造プロセッサの一例を示した図である。
【図２】本発明に係るプロファイラの構成を示したブロック図である。
【図３】本発明に係るプロファイラの構造分析部を説明するためのブロック図である。
【図４ａ】本発明に係る構造記述の一例を示した図である。
【図４ｂ】本発明に係る構造記述の一例を示した図である。
【図５】本発明に係るプロファイラの構造分析部によって分析されたプロセスユニット情報の一例を示した図である。
【図６】本発明に係るプロファイラの構造分析部によって分析された動作グループ情報の一例を示した図である。
【図７】本発明に係るプロファイラの静的分析部を説明するためのブロック図である。
【図８】本発明に係るプログラム静的情報の一例を示した図である。
【図９】本発明に係るプロファイラの静的分析部によって生成された動作スケジュール情報の一例を示した図である。
【図１０】本発明に係るプロファイラの静的分析部によって生成された動作スケジュール情報の一例を示した図である。
【図１１】本発明に係るプロファイラの静的分析部によって生成された相互連結スケジュール情報およびデータフロー情報の一例を示した図である。
【図１２】本発明に係るプロファイラの動的分析部を説明するためのブロック図である。
【図１３】本発明に係るプログラム動的情報の一例を示した図である。
【図１４ａ】本発明に係るプロファイラによって生成された静的／動的動作活用度情報を示した図である。
【図１４ｂ】本発明に係るプロファイラによって生成された静的／動的動作活用度情報を示した図である。
【図１４ｃ】本発明に係るプロファイラによって生成された静的／動的動作活用度情報を示した図である。
【図１５ａ】本発明に係るプロファイラによって生成された静的／動的処理要素活用度情報を示した図である。
【図１５ｂ】本発明に係るプロファイラによって生成された静的／動的処理要素活用度情報を示した図である。
【図１５ｃ】本発明に係るプロファイラによって生成された静的／動的処理要素活用度情報を示した図である。
【図１６ａ】本発明に係るプロファイラによって生成された静的／動的相互連結活用度情報および相互連結情報を示した図である。
【図１６ｂ】本発明に係るプロファイラによって生成された静的／動的相互連結活用度情報および相互連結情報を示した図である。
【図１６ｃ】本発明に係るプロファイラによって生成された静的／動的相互連結活用度情報および相互連結情報を示した図である。
【図１７ａ】本発明に係るプロファイラによって生成されたソフトウェアパイプラインループ情報を示した図である。
【図１７ｂ】本発明に係るプロファイラによって生成されたソフトウェアパイプラインループ情報を示した図である。
【図１】
2008130078.tif 000003
【図２】
2008130078.tif 000004
【図３】
2008130078.tif 000005
【図４ａ】
2008130078.tif 000006
【図４ｂ】
2008130078.tif 000007
【図５】
2008130078.tif 000008
【図６】
2008130078.tif 000009
【図７】
2008130078.tif 000010
【図８】
2008130078.tif 000011
【図９】
2008130078.tif 000012
【図１０】
2008130078.tif 000013
【図１１】
2008130078.tif 000014
【図１２】
2008130078.tif 000015
【図１３】
2008130078.tif 000016
【図１４ａ】
2008130078.tif 000017
【図１４ｂ】
2008130078.tif 000018
【図１４ｃ】
2008130078.tif 000019
【図１５ａ】
2008130078.tif 000020
【図１５ｂ】
2008130078.tif 000021
【図１５ｃ】
2008130078.tif 000022
【図１６ａ】
2008130078.tif 000023
【図１６ｂ】
2008130078.tif 000024
【図１６ｃ】
2008130078.tif 000025
【図１７ａ】
2008130078.tif 000026
【図１７ｂ】
2008130078.tif 000027