(57)【要約】【目的】命令実行の高速化をより徹底して図るプログラム変換装置及びコンパイラプログラムを提供する。【構成】本発明によるプログラム変換装置及びコンパイラプログラムは、プログラムソースコードを変換して複数の命令を含む中間コードを生成し、該中間コードから２つの並列化候補命令からなる少なくとも１つの組み合わせを抽出すると共に該並列化候補命令毎に依存関係を有する依存関係命令を抽出する。そして、該並列化候補命令毎に、当該並列化候補命令について抽出された依存関係命令の実行位置に基づいて当該並列化候補命令の移動可能範囲を判別し、該２つの並列化候補命令の共通移動可能範囲に含まれる１つの実行位置に該２つの並列化候補命令を移動することで該中間コードを修正して命令コードを生成する。【選択図】図２
2009048252.tif 000002
【特許請求の範囲】
【請求項１】
プログラムソースコードを命令コードに変換するプログラム変換装置であって、
前記プログラムソースコードを変換して複数の命令を含む中間コードを生成する中間コード生成手段と、
前記中間コードから、２つの並列化候補命令からなる少なくとも１つの組み合わせを抽出する並列化候補命令抽出手段と、
前記並列化候補命令毎に、当該並列化候補命令と依存関係を有する依存関係命令を前記中間コードから抽出する依存関係命令抽出手段と、
前記並列化候補命令毎に、当該並列化候補命令について抽出された依存関係命令の実行位置に基づいて当該並列化候補命令の移動可能範囲を判別する移動可能範囲判別手段と、
前記２つの並列化候補命令の共通移動可能範囲に含まれる１つの実行位置に前記２つの並列化候補命令を移動することで前記中間コードを修正し、修正した中間コードを変換することによって前記命令コードを生成する命令コード生成手段と、
を含むことを特徴とするプログラム変換装置。
【請求項２】
前記依存関係命令抽出手段は、当該並列化候補命令に先行してその実行条件を与える依存関係を有する命令若しくは当該並列化候補命令に後行してその実行結果に従う依存関係を有する命令を前記依存関係命令として抽出することを特徴とする請求項１記載のプログラム変換装置。
【請求項３】
前記命令コード生成手段は、前記共通移動可能範囲が無い場合に、前記並列化候補命令とこれに対応する依存関係命令とを含む命令群を単位として実行位置を移動することで前記中間コードを修正することを特徴とする請求項１又は２記載のプログラム変換装置。
【請求項４】
プログラムソースコードを命令コードに変換する手段としてコンピュータを機能させるためのコンパイラプログラムであって、
前記プログラムソースコードを変換して複数の命令を含む中間コードを生成する中間コード生成手段と、
前記中間コードから、２つの並列化候補命令からなる少なくとも１つの組み合わせを抽出する並列化候補命令抽出手段と、
前記並列化候補命令毎に、当該並列化候補命令と依存関係を有する依存関係命令を前記中間コードから抽出する依存関係命令抽出手段と、
前記並列化候補命令毎に、当該並列化候補命令について抽出された依存関係命令の実行位置に基づいて当該並列化候補命令の移動可能範囲を判別する移動可能範囲判別手段と、
前記２つの並列化候補命令の共通移動可能範囲に含まれる１つの実行位置に前記２つの並列化候補命令を移動することで前記中間コードを修正し、修正した中間コードを変換することによって前記命令コードを生成する命令コード生成手段と、
を機能させることを特徴とするコンパイラプログラム。
【請求項５】
前記依存関係命令抽出手段は、当該並列化候補命令に先行してその実行条件を与える依存関係を有する命令若しくは当該並列化候補命令に後行してその実行結果に従う依存関係を有する命令を前記依存関係命令として抽出することを特徴とする請求項４記載のコンパイラプログラム。
【請求項６】
前記命令コード生成手段は、前記共通移動可能範囲が無い場合に、前記並列化候補命令とこれに対応する依存関係命令とを含む命令群を単位として実行位置を移動することで前記中間コードを修正することを特徴とする請求項４又は５記載のコンパイラプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｃ言語等のプログラム言語にて記述されたソースコードを電子計算機にて実行可能な命令コードに変換するプログラム変換装置及びコンパイラプログラムに関する。
【背景技術】
【０００２】
近年、電子計算機のプロセッサには、アドレス生成ユニットと演算実行ユニットとを独立に持つアーキテクチャが用いられるようになって来ている。かかるアーキテクチャにおいては、例えば、転送命令と演算命令とを並列して実行することが可能となる。１つの命令の実行サイクル数が１サイクルであるとした場合、従来の転送命令と演算命令との実行には２サイクル必要としたが、アドレス生成ユニットと演算実行ユニットとを独立に持つことにより転送命令と演算命令とを同時すなわち並列実行命令に置き換えることで実行時間を１サイクルに短縮することが可能となる。
【０００３】
ところで、Ｃ言語にて記述されたソースコードを転送命令や演算命令等の命令コードに変換するには、ソフトウェアであるＣコンパイラを用いることで該ソースコードを元に一旦中間コードを生成し、生成した中間コードを元にしてさらに各種の最適化を行って最終的な命令コードを生成することが行われる。この時、上記した如き並列実行命令については、Ｃコンパイラが中間コードを元にして２つの命令を１つの並列実行命令に変換することが行われる。このような中間コードレベルにおける並列化の為のプログラム変換技術については特許文献１が参照される。
【特許文献１】特開２００１−２８２５４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の方法では、並列化の候補となった２つの命令があってこれらを同時実行位置に移動しようとした場合に、これらの間に依存関係のある他の命令がある場合は画一的に命令移動ができないと判別され、並列化が行われないという欠点があった。ここで、依存関係とは、先に実行された命令によって更新されたデータやフラグを後続する命令が参照するなどして、ある命令の実行条件が先行する命令の実行結果となる、若しくはある命令の実行結果が後行する命令の実行条件となる関係を意味し、かかる関係がある場合には命令を実行する命令順が制約されることになる。
【０００５】
図１は、依存関係があることで命令移動が行われない具体例を示している。ここでは、説明のために次の擬似的な中間命令を使用する。すなわち、ＩＮＳＴＰｎ（ｎは命令順に割り当てられる番号）は並列化の対象となりうる命令であり、例えば、ＩＮＳＴＰ１及びＩＮＳＴＰ２同士は並列化可能であることを意味する。ＩＮＳＴＮｎは並列化の対象とならない命令を示している。各命令の後ろの括弧内に他の命令が記述してあるものは、その命令と自身との間に依存関係があることを示している。図面の下方向に各命令が命令順に実行される。
【０００６】
図１の（ａ）参照すると、ＩＮＳＴＮｌとＩＮＳＴＰ５と、ＩＮＳＴＰ２とＩＮＳＴＮ４、ＩＮＳＴＮ３とＩＮＳＴＰ５、ＩＮＳＴＮ４とＩＮＳＴＰ２、ＩＮＳＴＰ５とＩＮＳＴＮｌ及びＩＮＳＴＮ３との各々は命令間に依存関係がある。また、ＩＮＳＴＰ２とＩＮＳＴＰ５の２つの命令は並列化可能な命令である。
【０００７】
この場合、ＩＮＳＴＰ２とＩＮＳＴＰ５とを同時実行位置に移動することか試みられる。しかし、ＩＮＳＴＰ２はＩＮＳＴＮ４との間の依存関係によってＩＮＳＴＰ５の位置に移動することができず、また、ＮＳＴＰ５は、ＩＮＳＴＮ３との間の依存関係によってＩＮＳＴＰ２の位置に移動することができないと判別される。結果的に、ＩＮＳＴＰ２とＩＮＳＴＰ５の並列化は行われないことになり、命令実行の高速化が図られないことになる。
【０００８】
図１の（ｂ）を参照すると、ＩＮＳＴＮｌとＩＮＳＴＰ５と、ＩＮＳＴＰ２とＩＮＳＴＮ３、ＩＮＳＴＮ３とＩＮＳＴＰ２、ＩＮＳＴＮ４とＩＮＳＴＰ５、ＩＮＳＴＰ５とＩＮＳＴＮｌ及びＩＮＳＴＮ４との各々は命令間に依存関係がある。また、ＩＮＳＴＰ２とＩＮＳＴＰ３の２つの命令は並列化可能な命令である。
【０００９】
この場合、ＩＮＳＴＰ２とＩＮＳＴＰ５とを同時実行位置に移動することか試みられる。しかし、ＩＮＳＴＰ２はＩＮＳＴＮ３との間の依存関係によってＩＮＳＴＰ５の位置に移動することができず、また、ＩＮＳＴＰ５は、ＩＮＳＴＮ４との間の依存関係によってＩＮＳＴＰ２の位置に移動することができないと判別される。結果的に、この場合もＩＮＳＴＰ２とＩＮＳＴＰ５の並列化は行われないことになる。以上の具体例の如く、従来の方法においては実行位置並列化による高速化が十分ではなかった。
【００１０】
本発明の目的は、命令実行の高速化をより徹底して図るプログラム変換装置及びコンパイラプログラムを提供することである。
【課題を解決するための手段】
【００１１】
本発明によるプログラム変換装置は、プログラムソースコードを命令コードに変換するプログラム変換装置であり、該ソースコードを変換して複数の命令を含む中間コードを生成する中間コード生成手段と、該中間コードから、２つの並列化候補命令からなる少なくとも１つの組み合わせを抽出する並列化候補命令抽出手段と、該並列化候補命令毎に、当該並列化候補命令と依存関係を有する依存関係命令を該中間コードから抽出する依存関係命令抽出手段と、該並列化候補命令毎に、当該並列化候補命令について抽出された依存関係命令の実行位置に基づいて当該並列化候補命令の移動可能範囲を判別する移動可能範囲判別手段と、該２つの並列化候補命令の共通移動可能範囲に含まれる１つの実行位置に該２つの並列化候補命令を移動することで該中間コードを修正し、修正した中間コードを変換することによって該命令コードを生成する命令コード生成手段と、を含むことを特徴とする。
【００１２】
本発明によるコンパイラプログラムは、プログラムソースコードを命令コードに変換する手段としてコンピュータを機能させるためのコンパイラプログラムであり、該ソースコードを変換して複数の命令を含む中間コードを生成する中間コード生成手段と、該中間コードから、２つの並列化候補命令からなる少なくとも１つの組み合わせを抽出する並列化候補命令抽出手段と、該並列化候補命令毎に、当該並列化候補命令と依存関係を有する依存関係命令を該中間コードから抽出する依存関係命令抽出手段と、該並列化候補命令毎に、当該並列化候補命令について抽出された依存関係命令の実行位置に基づいて当該並列化候補命令の移動可能範囲を判別する移動可能範囲判別手段と、該２つの並列化候補命令の共通移動可能範囲に含まれる１つの実行位置に該２つの並列化候補命令を移動することで該中間コードを修正し、修正した中間コードを変換することによって該命令コードを生成する命令コード生成手段と、を機能させることを特徴とする。
【発明の効果】
【００１３】
本発明によるプログラム変換装置及びコンパイラプログラムによれば、よりきめの細かい命令コードの実行位置並列化がなされて、命令実行の高速化がより徹底される。
【発明を実施するための最良の形態】
【００１４】
本発明の実施例について添付の図面を参照しつつ詳細に説明する。
【００１５】
＜第１の実施例＞
図２は、第１の実施例を示し、プログラム変換装置を含む全体の構成を示している。プログラム変換装置２０は、ソースコード１０を入力として取り込み、該ソースコードを命令コード４０に変換して出力する装置である。ソースコード１０は、Ｃ言語等のプログラム言語にて記述されたソースコードのデータであり、通信ネットワークや記憶媒体等の多様な手段によりプログラム変換装置２０に取り込まれる。命令コード４０は、目的となる電子計算機にて実行可能な命令コードのデータであり、通信ネットワークや記憶媒体等の多様な手段により電子計算機に向けて出力される。本実施例において、命令コード４０を実行する電子計算機としては、アドレス生成ユニットと演算実行ユニットとを独立に持つことで複数の命令を並列して実行することを可能とする並列アーキテクチャのプロセッサを備える電子計算機を前提としている。
【００１６】
プログラム変換装置２０は、中間コード生成部２１と、依存関係命令抽出部２２と、並列化候補命令抽出部２３と、並列化実行部２４と、命令コード生成部２５と、並列化可能命令テーブル２６とを含む。これらの各部２１〜２６は、プログラム変換装置２０を１つのコンピュータ装置とした場合のコンパイラプログラム３０として実現されてもよい。
【００１７】
中間コード生成部２１は、取り込んだソースコード１０を元にして中間コードを生成し、生成した中間コードを依存関係命令抽出部２２及び並列化候補命令抽出部２３に供給する機能を備える。ソースコード１０のデータがＣ言語により作成されていた場合には、中間コードは例えばアセンブラ言語により記述され得る。
【００１８】
依存関係命令抽出部２２は、供給された中間コードを元にして、各命令間の依存関係を検査して、命令毎に依存関係のある依存関係命令を抽出し、かかる依存関係を並列化実行部２４に通知する機能を備える。並列化候補命令抽出部２３は、供給された中間コードを元にして、同時に実行すなわち並列化が可能な並列化候補命令の組み合わせを抽出し、抽出した組み合わせを並列化実行部２４に通知する機能を備える。ある命令と他の命令が並列化可能であるか否かの判定は、予め並列化可能な命令の組み合わせが設定された並列化可能命令テーブル２６を参照することで行われる。
【００１９】
並列化実行部２４は、依存関係命令抽出部２２から通知された依存関係と、並列化候補命令抽出部２３から通知された並列化候補命令とを元にして、並列化候補命令である２つの命令の移動位置を画定して中間コードに対して並列化を実行する機能を備える。命令コード生成部２５は、並列化実行部２４により並行化がなされた中間コードを元にして改めて通常のコンパイラ処理により命令コードを生成する機能を備える。
【００２０】
尚、プログラム変換装置２０は、１つのパーソナルコンピュータ等の電子計算機により実現されても良い。その場合、中間コード生成部２１と、依存関係命令抽出部２２と、並列化候補命令抽出部２３と、並列化実行部２４と、命令コード生成部２５とは、１つのコンパイラプログラム３０としてコンピュータであるプログラム変換装置２０を機能せしめることになる。
【００２１】
図３は、図２に示された並列化可能命令テーブルの設定例を示している。図示される様に並列化可能命令テーブル２６において、例えば命令Ａのメモリ転送命令と、命令Ｂの算術演算命令、論理演算命令及びシフト演算命令とが並列化可能であると設定される。命令の種類の例としてアセンブラ言語における表記が図面右側に示されている。
【００２２】
図４は、第１の実施例における並列化の処理手順を示している。前提として、ソースコードがプログラム変換装置に入力され、該ソースコードがプログラム変換装置に含まれる中間コード生成部（図２参照）により中間コードに既に変換されたものとする。この並列化の処理手順は、プログラム変換装置に含まれる依存関係命令抽出部、並列化候補命令抽出部及び並列化実行部（図２参照）により実行される。
【００２３】
先ず、中間コードに含まれる命令毎に依存関係命令を抽出する（ステップＳ１）。ここで、依存関係命令とは、ある命令について当該命令に先行してその実行条件を与える依存関係を有する命令若しくは当該命令に後行してその実行結果に従う依存関係を有する命令を意味する。
【００２４】
ステップＳ１に並行してまたはこの次に、中間コードから並列化が可能な命令の組み合わせを抽出する（ステップＳ２）。並列化可能か否かの判定は、並列化可能命令テーブルを参照して並列化可能な命令の組み合わせであるか否かを判定することで行われる。次いで、並列化可能な命令の組み合わせのうちから並列化の対象となる並列化候補命令の組み合わせの２つの命令を抽出する（ステップＳ３）。すなわち、並列化が可能な命令のうちから依存関係命令を互いに含まない２つの命令の組み合わせを抽出する。
【００２５】
次に、該２つの命令のうちで移動可能な命令を判別する（ステップＳ４）。具体的には、先ず該２つの命令のどちらかを他方の位置に移動することが可能か否かを判定することにより移動可能な命令を判別する（ステップＳ４１）。この場合、該２つの命令の実行位置間に、移動しようとする命令に対応する依存関係命令が無い場合には当該移動しようとする命令は他方の位置に移動可能と判別する。次いで、従来の方法と同様にしてステップＳ５の並列化を実行する。
【００２６】
一方、移動可能ではない判別した場合には、２つの命令の各々の共通移動可能範囲に移動できるか否かを判定する（ステップＳ４２）。すなわち、２つの命令毎に当該命令の依存関係命令の実行位置に基づいて移動可能範囲を割り出す。命令の移動可能範囲とは当該命令にとって先行する依存関係命令の次の実行位置から後行する依存関係命令の実行位置の直前までである。そして、該２つの命令の移動可能範囲の重複する位置すなわち共通移動可能範囲を抽出する。重複する位置が複数ある場合でも１つの位置が抽出された時点で抽出を終了すればよい。もし、共通移動可能範囲がある場合には、その共通移動可能範囲の例えば先頭位置において並列化を実行する（ステップＳ５）。一方、共通移動可能範囲がない場合には、当該２つの命令については並列化が不可能と判定してステップＳ３に戻り、他の並列化候補命令の２つの命令を新たに抽出する。
【００２７】
ステップ５の並列化の実行は、該２つの命令のうちの何れか一方を他方の位置に移動するか、あるいは該２つの命令を共に共通移動可能範囲内の同一位置に移動することによって並列化を実現する（ステップＳ５）。以上の並列化実行の手順は、処理対象となった中間コードの全てについて行われ、並列化による修正がなされた中間コードは命令コード生成部にて変換されて命令コードが生成される。
【００２８】
図５は、図３に示された処理手順において命令を移動する様子を説明している。図５の（ａ）を参照すると、ＩＮＳＴＰ２とＩＮＳＴＰ５は図４に示された手順ステップＳ１〜Ｓ３によって割り出された並列化可能な２つの命令の組み合わせである。しかし、ＩＮＳＴＰ２は、ＩＮＳＴＮ４との間の依存関係によってＩＮＳＴＰ５の位置に移動することができず、また、ＩＮＳＴＰ５は、ＩＮＳＴＮ３との間の依存関係によってＩＮＳＴＰ２の
位置に移動することができないことから、共通移動可能位置の抽出処理の手順（ステップＳ４２）が実行されるべきことになる。
【００２９】
図５の（ｂ）を参照すると、上記の具体例に説明のための位置識別名を付加したものが示されている。ここで、ＩＮＳＴＰ２の移動可能範囲は、上記例の「位置Ａ」から「位置Ｄ」の範囲である。また、ＩＮＳＴＰ５の移動可能位置は「位置Ｄ」から「位置Ｆ」の範囲である。よって、ＩＮＳＴＰ２とＩＮＳＴＰ５の移動可能範囲の重複部分として「位置Ｄ」が割り出される。従って、両命令を共通する移動可能位置である「位置Ｄ」に移動することによって並列化を行うことができる。
【００３０】
以上の第１の実施例において、本発明によるプログラム変換装置及びコンパイラプログラムを適用することで、従来では、並列化の対象となる２つの命令の間に依存関係のある命令が存在していることによって移動不可能と判定され並列化を行わなかった場合でも、２つの命令に重複する移動可能範囲があれば並列化を行うことができる。これにより、より徹底したプログラムの実行高速化が図られる。
【００３１】
＜第２の実施例＞
図６は、第２の実施例における並列化の処理手順を示している。第２の実施例は、第１の実施例における同様の装置構成（図２参照）において第１の実施例におけるとは異なる処理手順を含む構成である。すなわち、命令移動を複数の命令からなるセット単位で移動を行うものである。この方法では、第１の実施例において示した並列化手順中の、ステップＳ４の「移動可能な命令抽出処理」において、並列化候補命令である２つの命令のどちらも移動できないと判別された場合に、２つの命令のうち一方の命令を、その命令と依存関係のある命令群のセット単位でまとめて移動することによって２つの命令の並列化を行うものである。
【００３２】
図６を参照すると、移動可能な命令の抽出に係る処理手順のみが示されている。前提として、第１の実施例におけるステップＳ１〜Ｓ３の処理手順は既に行われているものとする。すなわち、並列化候補命令の少なくとも１つの組み合わせが抽出されているものとする。
【００３３】
そこで、並列化候補命令の２つの命令のどちらかを他方の位置に移動することが可能か否かが第１の実施例の場合と同様にして判定される（ステップＳ４１）。移動可能ではないと判定された場合には２つの命令の共通移動可能範囲に移動できるか否かが判定される（ステップＳ４２）。ステップＳ４１及びＳ４２の何れかにおいて移動可能と判定されれば、ステップＳ５においてのセット単位の並列化を実行する。
【００３４】
一方、ステップＳ４２において共通移動可能範囲がないと判定された場合、２つの命令についてセット単位で他方の位置に移動可能か否かを判定する（ステップＳ４３）。もしセット単位で移動可能ではないと判定された場合には、当該２つの命令についての並列化を断念してステップＳ３に戻り、新たに並列化候補命令を抽出する。一方、セット単位で移動可能であると判定された場合には、当該２つの命令についてセット単位の並列化を行うべくステップＳ５の並列化の実行を行うことができる。以下にその具体例を説明する。
【００３５】
図７Ａに示されるように、前提として、ＩＮＳＴＰ１とＩＮＳＴＰ４は既にステップ４以前の手順により抽出された並列化候補命令である２つの命令の組み合わせである。ＩＮＳＴＰ１の移動可能範囲は、「位置Ａ」から「位置Ｂ」の範囲である。また、ＩＮＳＴＰ４の移動可能位置は「位置Ｄ」から「位置Ｅ」の範囲である。よって、ＩＮＳＴＰ１とＩＮＳＴＰ４の移動可能範囲の重複部分が無く、両命令に共通する移動可能位置への移動による並列化ができないと判別されている。
【００３６】
図７Ｂに示されるように、ＩＮＳＴＰ１およびＩＮＳＴＰ４のそれぞれの依存関係から命令のセットが設定される。ＩＮＳＴＰ１及びこれと依存関係にあるＩＮＳＴＮ２とのセット１、ＩＮＳＴＰ４及びこれと依存関係にあるＩＮＳＴＮ３のセット２、並びにＩＮＳＴＰ４及びこれと依存関係にあるＩＮＳＴＮ５のセット３とが設定される。そして、ＩＮＳＴＰ１とＩＮＳＴＰ４を並列化するための移動位置候補をセット毎に設定する。ＩＮＳＴＰ１とＩＮＳＴＰ４を同じ命令実行位置にするために、セット１の移動位置候補は「位置Ｅ」、セット２の移動位置候補は「位置Ａ」、そしてセット３の移動位置候補は「位置Ｂ」となる。
【００３７】
次に、各セットがその移動位置候補へ移動可能かどうかを判別する。この判別は、各セットに含まれる各命令について当該命令からセットの移動位置候補までの間に、当該命令のセットを除く他のセット内に当該命令に対応する依存関係命令があるかどうかを走査することにより行われる。
【００３８】
セット１について走査すると、ＩＮＳＴＰ１またはＩＮＳＴＮ２の位置から「位置Ｅ」の間に依存関係命令が存在しないため、セット１は「位置Ｅ」に移動可能であると判別される。セット２について走査すると、ＩＮＳＴＮ３またはＩＮＳＴＰ４の位置から「位置Ａ」の間に依存関係命令が存在しないため、セット２は「位置Ａ」に移動可能であると判別される。セット３について走査すると、ＩＮＳＴＰ４またはＩＮＳＴＮ５の位置から「位置Ｂ」の間にＩＮＳＴＰ４にとって依存関係命令であるＩＮＳＴＮ３があるため、セット３は「位置Ｂ」には移動できないと判別される。よって、セット１とセット２とを移動することで並列化が可能であると判別される。この場合、例えば先に判別された「セット１を位置Ｅに移動する」を採用して、ＩＮＳＴＰ１とＩＮＳＴＰ４の並列化を行うものとする。
【００３９】
図８は、図６に示された処理手順が実行されることで得られる並列化の実際例を示している。リストＬ１について見ると並列化前の中間コードの記述例が示されている。ここで、セット１に属するMOVX命令（命令１）とセット２に属するSUB命令（命令４）とが並列化候補命令である。リストＬ２を見るとリストＬ１の内容を並列化した後の中間コードが示されている。ここで、MOVX命令（命令１）とSUB命令（命令４）とは横に並記される。これにより命令１と命令４は同時に実行されることになる。
【００４０】
以上の第２の実施例において、本発明によるプログラム変換装置及びコンパイラプログラムを適用することで、第１の実施例におけるように共通移動可能範囲が無いために並列化が行われなかった場合でも、並列化候補命令を依存関係命令とセット単位で移動することが可能であれば並列化を行うことができる。これにより、さらなる徹底した並列化が実現される。
【産業上の利用可能性】
【００４１】
以上の複数の実施例においては、ソースコードをＣ言語により記述された例について説明されたが、本発明にかかる限定はなくソースコードはＣ言語以外の多様なプログラム言語により記述されていてもよい。また、命令コードは電子計算機に供される命令コードであるとして説明されたが、本発明における命令コードは、並列化アーキテクチャのプロセッサに供される命令コードであればよく、パーソナルコンピュータやサーバコンピュータのみならず、特定の機能装置に組み込まれて特化した処理機能を実現するＤＳＰ（Digital Signal Processor）に供される命令コードであってもよい。
【図面の簡単な説明】
【００４２】
【図１】従来の方法における命令実行順序の並列化の具体例を示す図である。
【図２】第１の実施例を示し、プログラム変換装置を含む全体の構成を示すブロック図である。
【図３】図２に示された並列化可能命令テーブルの設定例を示す図である。
【図４】第１の実施例における並列化の処理手順を示すフローチャートである。
【図５】図３に示された処理手順において命令を移動する様子を説明する説明図である。
【図６】第２の実施例における並列化の処理手順を示すフローチャートである。
【図７Ａ】図６に示された処理手順において前提となる命令配列を説明する説明図である。
【図７Ｂ】図６に示された処理手順においてセット単位に命令移動を行う様子を説明する説明図である。
【図８】図６に示された処理手順が実行されることで得られる並列化の実際例を示す図である。
【符号の説明】
【００４３】
１０  ソースコード
２０  プログラム変換装置
２１  中間コード生成部
２２  依存関係命令抽出部
２３  並列化候補命令抽出部
２４  並列化実行部
２５  命令コード生成部
２６  並列化可能命令テーブル
３０  コンパイラプログラム
４０  命令コード
【図１】
2009048252.tif 000003
【図２】
2009048252.tif 000004
【図３】
2009048252.tif 000005
【図４】
2009048252.tif 000006
【図５】
2009048252.tif 000007
【図６】
2009048252.tif 000008
【図７Ａ】
2009048252.tif 000009
【図７Ｂ】
2009048252.tif 000010
【図８】
2009048252.tif 000011