特許
J-GLOBAL ID:201103025617693875

コンパイル方法、コンパイラ、およびコンパイル装置

発明者:
出願人/特許権者:
代理人 (1件): 中野 寛也
公報種別:特許公報
出願番号(国際出願番号):特願2003-042628
公開番号(公開出願番号):特開2004-252728
特許番号:特許第4177681号
出願日: 2003年02月20日
公開日(公表日): 2004年09月09日
請求項(抜粋):
【請求項1】 ソースプログラムをコンパイルして目的プログラムを生成するコンパイラであって、 前記ソースプログラムをブロック単位で分割して複数のマクロタスクを生成するマクロタスク生成手段と、 前記各マクロタスクの実行が確定する実行確定条件および前記各マクロタスクの実行に必要なデータが使用可能状態になるデータアクセス条件からなる最早実行可能条件を解析する並列性解析手段と、 前記各マクロタスクとして前記ソースプログラムに含まれるデータ依存を有する各ループのうちから、キャッシュメモリを効果的に利用するためのループ整合分割が可能な複数のループを、キャッシュ最適化用のターゲットループグループとして選択するターゲットループグループ選択手段と、 このターゲットループグループ選択手段により選択された前記ターゲットループグループをターゲットループグループテーブルに格納するターゲットループグループ格納手段と、 前記ターゲットループグループを構成する前記複数のループによりそれぞれ使用される各配列データを、キャッシュ最適化用の対象配列データとして選択する対象配列データ選択手段と、 この対象配列データ選択手段により選択された前記各対象配列データを対象配列データテーブルに格納する対象配列データ格納手段と、 前記各対象配列データの合計サイズおよび前記キャッシュメモリのサイズに基づき、前記ターゲットループグループを構成する前記複数のループの分割数を決定する分割数決定手段と、 この分割数決定手段により決定した前記分割数に基づき、前記ターゲットループグループテーブルに格納された前記ターゲットループグループを構成する前記複数のループをそれぞれ分割して前記各ループについてそれぞれ複数の小ループを生成し、これらの各小ループのうち同一の部分的な前記対象配列データを使用する小ループ同士を集合させて複数のデータローカライザブルグループを形成するループ整合分割手段と、 前記各小ループの実行が確定する実行確定条件および前記各小ループの実行に必要なデータが使用可能状態になるデータアクセス条件からなる最早実行可能条件を満たす範囲内で、同一の前記データローカライザブルグループに属する前記各小ループ同士が、可能な限り連続して実行されるスケジューリングを行うスケジューリング手段と、 前記各データローカライザブルグループに属する前記各小ループにより使用される部分的な前記各対象配列データ同士が前記キャッシュメモリ上で重なりを持たないように、前記各対象配列データの主メモリへの格納位置をずらすために挿入するパディング用データのサイズを決定するパディングサイズ決定手段と、 このパディングサイズ決定手段により決定した前記サイズに相当するパディング用データを、前記対象配列データテーブルに格納された前記対象配列データの内部または前記対象配列データ間に挿入することによりパディングを用いたデータレイアウト変更を行うデータレイアウト変更手段として、 コンピュータを機能させることを特徴とするコンパイラ。
IPC (2件):
G06F 9/45 ( 200 6.01) ,  G06F 12/08 ( 200 6.01)
FI (3件):
G06F 9/44 322 H ,  G06F 9/44 322 G ,  G06F 12/08 563

前のページに戻る