(57)【要約】【課題】手続き型の汎用プログラム言語で記述されたソースプログラムから、データ駆動型プロセッサが実行できるオブジェクトプログラムを生成するコンパイラ装置を提供する。【解決手段】コンパイラ装置は、ソースプログラムをＳＳＡ形式に変換する変換手段と、変換手段によりＳＳＡ形式に変換されたソースプログラムから、オブジェクトプログラム又はアセンブラプログラムを生成する生成手段とを備えている。【選択図】図１
2007128135.tif 000002
【特許請求の範囲】
【請求項１】
ソースプログラムを入力とし、データ駆動型プロセッサが実行するオブジェクトプログラム又はデータ駆動型プロセッサ用のアセンブラプログラムを出力するコンパイラ装置であって、
ソースプログラムに対して字句解析、構文解析及び意味解析を行い、中間語を出力する解析手段と、
中間語をＳＳＡ（Ｓｔａｔｉｃ  Ｓｉｎｇｌｅ  Ａｓｓｉｇｎｍｅｎｔ）形式に変換する変換手段と、
ＳＳＡ形式に変換された中間語から、オブジェクトプログラム又はアセンブラプログラムを生成する生成手段と、
を有することを特徴とするコンパイラ装置。
【請求項２】
ソースプログラムを入力とし、データ駆動型プロセッサが実行するオブジェクトプログラム又はデータ駆動型プロセッサ用のアセンブラプログラムを出力するコンパイラ装置として、コンピュータを機能させるプログラムであって、
コンピュータに、
ソースプログラムに対して字句解析、構文解析及び意味解析を行い、中間語を出力するステップと、
中間語をＳＳＡ（Ｓｔａｔｉｃ  Ｓｉｎｇｌｅ  Ａｓｓｉｇｎｍｅｎｔ）形式に変換するステップと、
ＳＳＡ形式に変換された中間語から、オブジェクトプログラム又はアセンブラプログラムを生成するステップと、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、手続き型のプログラム言語で記述されたソースプログラムから、データ駆動型プロセッサで実行されるオブジェクトプログラムを生成するコンパイラ装置に関する。
【背景技術】
【０００２】
ノイマン型プロセッサ用のプログラムは、Ｃ言語等の手続き型の高級言語で記述された後、コンパイラ装置にて、対象とするノイマン型プロセッサが実行できるオブジェクトプログラムに変換される。
【０００３】
図２は、ソースプログラム５を入力として、対象とするノイマン型プロセッサが実行できるオブジェクトプログラム６を出力する、ノイマン型プロセッサのためのコンパイラ装置４のブロック図である。図２によると、コンパイラ装置４は、解析部４１と、変換部４２と、最適化部４３と、逆変換部４４と、生成部４５とを備えている。
【０００４】
解析部４１は、ソースプログラム５の字句解析、構文解析及び意味解析を順次行って中間語を出力し、変換部４２は、解析部４１が出力する中間語のプログラムをＳＳＡ（Ｓｔａｔｉｃ  Ｓｉｎｇｌｅ  Ａｓｓｉｇｎｍｅｎｔ：静的単一代入）形式に変換し、最適化部４３は、ＳＳＡ形式の中間語に対して最適化処理を行い、逆変換部４４は、最適化されたＳＳＡ形式の中間語を、別の形式の中間語に変換し、生成部４５は、この別の形式の中間語からオブジェクトプログラム６を出力する。尚、生成部４５はアセンブラプログラムを出力してもよい。これら、各部での処理の詳細については、例えば、非特許文献１に記載されている。
【０００５】
ここで、ＳＳＡ形式とは、プログラムの表現形式の１つであり、プログラムで使用されている総ての変数に対して、その定義を、つまり値の代入を１回のみ行う形式のことである。
【０００６】
例えば、Ｃ言語で記述されたソースプログラム５の一部分が
ａ＝２；
ｂ＝３；
ａ＝ａ＋１；
ｂ＝ｂ＋５；
ａ＝ａ＊ｂ；
である場合を考える。この場合、変数ａには値が３回代入され、変数ｂには値が２回代入されていることになる。このため変換部４２は、
ａ０＝２；
ｂ０＝３；
ａ１＝ａ０＋１；
ｂ１＝ｂ０＋５；
ａ２＝ａ１＊ｂ１；
といったように、変数に添え字をつけて区別し、各変数への値の代入が１回のみであるＳＳＡ形式に変換を行う。
【０００７】
一方、ノイマン型プロセッサと異なり、データが揃った時点で処理を開始するデータ駆動型プロセッサ用のプログラムは、単一代入則を導入した関数型言語に近い性質をもつ言語により記述された後、コンパイラ装置によりオブジェクトプログラムに変換している（例えば、非特許文献２参照。）。
【０００８】
【非特許文献１】中田育男著、“コンパイラの構成と最適化”、朝倉書店、１９９９年９月
【非特許文献２】関口、島田、平木、“並列記述言語  ＤＦＣＩＩの命令レベルデータ駆動型計算機に対する構造文処理”、情報処理学会論文誌、Ｖｏｌ．３１  Ｎｏ．１０、１９９０年１０月
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述したように、データ駆動型プロセッサに対するプログラムの開発には、Ｃ言語といった手続き型の汎用プログラム言語を使用できず、特殊な言語を使用しなければならないためデータ駆動型プロセッサの普及に拍車がかからない要因となっている。
【００１０】
したがって、本発明は、手続き型の汎用プログラム言語で記述されたソースプログラムから、データ駆動型プロセッサが実行できるオブジェクトプログラムを生成するコンパイラ装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明におけるコンパイラ装置によれば、
ソースプログラムを入力とし、データ駆動型プロセッサが実行するオブジェクトプログラム又はデータ駆動型プロセッサ用のアセンブラプログラムを出力するコンパイラ装置であって、ソースプログラムに対して字句解析、構文解析及び意味解析を行い、中間語を出力する解析手段と、中間語をＳＳＡ形式に変換する変換手段と、ＳＳＡ形式に変換された中間語から、オブジェクトプログラム又はアセンブラプログラムを生成する生成手段とを有することを特徴とする。
【００１２】
本発明のプログラムによれば、コンピュータを上記コンパイラ装置として機能させることを特徴とする。
【発明の効果】
【００１３】
データ駆動型プロセッサのプログラム開発に、Ｃ言語等の手続き型汎用プログラム言語の使用が可能となる。
【発明を実施するための最良の形態】
【００１４】
本発明を実施するための最良の実施形態について、以下では図面を用いて詳細に説明する。
【００１５】
図１は、本発明によるコンパイラ装置１のブロック図である。図１によると、コンパイラ装置１は、解析部１１と、変換部１２と、最適化部１３と、生成部１４とを備えている。
【００１６】
解析部１１は、Ｃ言語といった手続き型の汎用プログラム言語で記述されたソースプログラム２の字句解析、構文解析及び意味解析を順次行って中間語を出力し、変換部１２は、解析部１１が出力する中間語をＳＳＡ形式に変換し、最適化部１３は、ＳＳＡ形式の中間語に対して最適化処理を行い、生成部１４は、最適化されたＳＳＡ形式の中間語から対象とするデータ駆動型プロセッサが実行可能なオブジェクトプログラム３を出力する。尚、生成部１４は、対象とするデータ駆動型プロセッサ用のアセンブラプログラムを出力してもよい。
【００１７】
ここで、本発明によるコンパイラ装置１での処理の理解のために、データ駆動型プロセッサにおいて、ある数に１を足した値に、ある数に５を足した値を乗ずる処理を行うことを考える。図３は、データ駆動型プロセッサにおいて上記処理を実行する場合の構成図である。図３によると、演算器９１は、ある数に１を足す処理を実行し、演算器９２はある数に５を足す処理を実行し、演算器９３は、それぞれ１と５が足された値の乗算処理を実行する。この場合、演算器９１に対する命令をｃ＝ａ＋１と記述し、演算器９２に対する命令をｄ＝ｂ＋５と記述し、演算器９３に対する命令をｅ＝ｃ×ｄと記述することで、各演算器間の接続関係を含めた処理内容の定義が可能となる。
【００１８】
一方、上記処理をＣ言語で記述することを考える。Ｃ言語での表現は１通りではないが、一例として、
ａ＝ａ＋１；
ｂ＝ｂ＋５；
ａ＝ａ＊ｂ；
と記述することが考えられる。この場合、変換部１２は、
ａ１＝ａ０＋１；
ｂ１＝ｂ０＋５；
ａ２＝ａ１＊ｂ１；
とＳＳＡ形式に変換を行う。ここで、ａ０、ａ１、ａ２、ｂ０、ｂ１は総て異なる変数であるため、ａ０をａ、ａ１をｃ、ａ２をｅ、ｂ０をｂ、ｂ１をｄと置き換えると、上述した演算器９１から９３に対する命令と同じとなる。
【００１９】
つまり、図３において矢印で表示される、データ駆動型プロセッサ間で入出力されるデータは、独立した変数であり、これら矢印で表される変数には矢印の基点となる演算器より値が１回のみ代入されるため、これら矢印で表される変数は、ＳＳＡ形式で表現された変数と１対１で対応する。従って、生成部１４において、ＳＳＡ形式で表現された中間語から、対象とするデータ駆動型プロセッサが実行できるオブジェクトプログラム３を直接生成することが可能であり、これによりデータ駆動型プロセッサのプログラム開発に、Ｃ言語といった手続き型汎用プログラム言語の使用が可能となる。
【図面の簡単な説明】
【００２０】
【図１】本発明によるコンパイラ装置のブロック図である。
【図２】ノイマン型プロセッサのためのコンパイラ装置のブロック図である。
【図３】コンパイラ装置の処理を説明する図である。
【符号の説明】
【００２１】
１、４  コンパイラ装置
１１、４１  解析部
１２、４２  変換部
１３、４３  最適化部
４４  逆変換部
１４、４５  生成部
２、５  ソースプログラム
３、６  オブジェクトプログラム
【図１】
2007128135.tif 000003
【図２】
2007128135.tif 000004
【図３】
2007128135.tif 000005