(57)【要約】【課題】「レジスタ＋オフセット」で表現されるアドレス計算が可能なメモリアクセス命令を持つアーキテクチャのコンピュータに適用されるコンパイラに関し、データへのアドレス割り付けの最適化を図り、オブジェクトプログラムのサイズの縮小化と実行サイクルの減少化を図ることができるようにする。【解決手段】データ毎のデータ管理情報テーブル１２−１〜１２−ｎを用意し、データ管理情報テーブル１２−１〜１２−ｎにデータ毎のデータアクセス回数を登録し、その後、登録されたデータアクセス回数が多い順にデータ管理情報テーブル１２−１〜１２−ｎの連鎖の並べ替えを行い、アドレス回数が多いデータほどベースアドレスに近い位置に配置されるように、アクセス回数の多いデータ用のデータ管理情報テーブルの順にベースアドレスからの相対距離を割り付ける。【選択図】          図３
2006058991.tif 000002
【特許請求の範囲】
【請求項１】
データ毎のアクセス回数情報を取得する工程と、
アクセス回数が多いデータほど、ベースアドレスに近い位置に配置する工程を含む
ことを特徴とするコンパイル方法。
【請求項２】
データ毎のアクセス回数情報を取得するデータアクセス回数情報取得手段と、
アクセス回数が多いデータほど、ベースアドレスに近い位置に配置するアドレス割り付け処理手段を有する
ことを特徴とするコンパイラ。
【請求項３】
データ毎にデータ管理情報テーブルを有すると共に、
前記データアクセス回数情報取得手段として、命令を読み込み、アクセスされるデータの種類を判別し、前記データ管理情報テーブルにデータ毎のアクセス回数を登録するデータアクセス回数登録手段を有する
ことを特徴とする請求項２記載のコンパイラ。
【請求項４】
前記データ管理情報テーブルは、次のデータ管理情報テーブルを指すポインタを保持するポインタ保持部と、データの種類が登録されるデータ種類登録部と、データへのアクセス回数が登録されるデータアクセス回数登録部と、ベースアドレスからの相対距離が登録される相対距離登録部を有する
ことを特徴とする請求項３記載のコンパイラ。
【請求項５】
前記データ管理情報テーブルの前記ポインタによる連鎖の並びをデータアクセス回数の多い順番に並べ替えるデータ管理情報テーブル連鎖並べ替え手段を有し、
前記アドレス割り付け処理手段は、前記データ管理情報テーブル連鎖並べ替え手段により連鎖を並べ替えられた前記データ管理情報テーブルに対して先頭のデータ管理情報テーブルから順番にベースアドレスからの相対距離を登録する
ことを特徴とする請求項４記載のコンパイラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ領域に存在するデータをアクセスする際に、「レジスタ＋オフセット」で表現されるアドレス計算が可能なメモリアクセス命令を持つアーキテクチャのコンピュータに適用して好適なコンパイル方法及びコンパイラに関する。
【背景技術】
【０００２】
従来、メモリ領域に存在するデータは、（１）高級言語プログラム中の変数の宣言の順番、（２）データをアクセスする境界整合値の順番、或いは、（３）コンパイラの処理の都合による順番のいずれかの順番でメモリ領域上に割り付けられていた。
【特許文献１】特開昭６４−７１３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来のデータへのアドレス割り付け方法では、メモリをアクセスする際の基点となるアドレス、即ち、ベースアドレスを特定のレジスタに格納し、このベースアドレスからの相対距離（オフセット）を使用して所望のアドレスにアクセスするメモリアクセス手法を採用する場合、アクセス回数が多いデータをベースアドレスからの相対距離が大きいアドレスに割り付けてしまう場合があった。
【０００４】
ここで、ベースアドレスからの相対距離が、相対距離として表現可能なアーキテクチャ上の限界を超える大きさの場合、ベースアドレスと相対距離を加算する処理を事前に実行する必要があり、この場合には、オブジェクトプログラムのサイズや実行サイクルが大きくなってしまうという問題点があった。
【０００５】
本発明は、かかる点に鑑み、データへのアドレス割り付けの最適化を図り、オブジェクトプログラムのサイズの縮小化と実行サイクルの減少化を図ることができるようにしたコンパイル方法及びコンパイラを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明のコンパイル方法は、データ毎のアクセス回数情報を取得する工程と、アクセス回数が多いデータほど、ベースアドレスに近い位置に配置する工程を含むものである。
【０００７】
本発明のコンパイラは、データ毎のアクセス回数情報を取得するデータアクセス回数情報取得手段と、アクセス回数が多いデータほど、ベースアドレスに近い位置に配置するアドレス割り付け処理手段を有するものである。
【発明の効果】
【０００８】
本発明によれば、アクセス回数が多いデータほど、ベースアドレスに近い位置に配置されるので、事前のアドレス計算や相対距離のレジスタへの転送の出現回数が減少することになる。したがって、データへのアドレス割り付けの最適化を図り、オブジェクトプログラムのサイズの縮小化と実行サイクルの減少化を図ることができる。
【発明を実施するための最良の形態】
【０００９】
図1は本発明のコンパイラの一実施形態の構成図であり、本発明のコンパイラで行われるコンパイル処理が本発明のコンパイル方法の一実施形態である。本発明のコンパイラの一実施形態は、構文解析処理手段１と、中間言語レベル最適化手段２と、コード生成処理手段３を有している。なお、４はソースプログラム格納手段、５は中間言語格納手段、６はオブジェクトプログラム格納手段である。
【００１０】
構文解析処理手段１はソースプログラム格納手段４に格納されている高級言語で記述されたソースプログラムを入力して構文解析を行うものであり、構文解析結果は中間言語格納手段５に格納される。
【００１１】
中間言語レベル最適化手段２は、中間言語格納手段５に格納されている構文解析処理手段１による構文解析結果を入力し、コード生成時の効率を上げるための最適化を行うものであり、最適化結果は中間言語格納手段５に格納される。
【００１２】
コード生成処理手段３は中間言語格納手段５に格納されている中間言語レベル最適化手段２による最適化結果を入力してコードを生成するものであり、生成されたコードはオブジェクトプログラム格納手段６に格納される。
【００１３】
図２はコード生成処理手段３の構成図である。コード生成処理手段３は、ノード変換処理手段７と、レジスタ割り付け処理手段８と、アドレス割り付け処理手段９と、コード出力処理手段１０を有している。
【００１４】
ノード変換処理手段７は、中間言語格納手段５に格納されている中間言語レベル最適化手段２による最適化結果を入力してノード変換処理を行うものであり、ノード変換結果はノード格納手段１１に格納される。
【００１５】
レジスタ割り付け処理手段８はデータのレジスタ割り付け処理を行うものであり、レジスタ割り付け結果はノード格納手段１１に格納される。アドレス割り付け処理手段９はレジスタが割り付かなかったデータのアドレス割り付け処理を行うものであり、アドレス割り付け結果はノード格納手段１１に格納される。コード出力処理手段１０はコードの出力処理を行うものである。
【００１６】
図３はアドレス割り付け処理手段９の構成図である。アドレス割り付け処理手段９は、データ毎のデータ管理情報テーブル１２−１〜１２−ｎを有するデータ管理情報テーブル連鎖機構１３と、データアクセス回数登録手段１４と、データ管理情報テーブル連鎖並べ替え手段１５と、データのアドレス割り付け処理手段１６を有している。
【００１７】
図４はデータ管理情報テーブル１２−ｘ（但し、ｘ＝１、２、…、ｎ）の構成図である。データ管理情報テーブル１２−ｘは、次のデータ管理情報テーブルを指すポインタを書き換え可能に保持するポインタ保持部１７−ｘと、データの管理情報が登録されるデータ管理情報登録部１８−ｘと、データのアクセス回数が登録されるデータアクセス回数登録部１９−ｘを有している。
【００１８】
データ管理情報登録部１８−ｘは、データの種類が登録されるデータ種類登録部２０−ｘと、データのベースアドレスからの相対距離が登録される相対距離登録部２１−ｘと、その他のデータ管理情報が登録される領域２２−ｘを有している。
【００１９】
このように、データ管理情報テーブル１２−１〜１２−ｎは、ポインタ保持部１７−ｘが保持する次のデータ管理情報テーブルを指すポインタにより連鎖の並びを有するものとされている。
【００２０】
ここに、データアクセス回数登録手段１４は、データアクセス回数取得手段をなすものであり、データ管理情報テーブル１２−１〜１２−ｎに、データ毎のデータアクセス回数を登録するものである。
【００２１】
データ管理情報テーブル連鎖並べ替え手段１５は、データアクセス回数登録手段１４によるデータ管理情報テーブル１２−１〜１２−ｎへのデータアクセス回数の登録終了後、データ管理情報テーブル１２−１〜１２−ｎの連鎖の並びをデータアクセス回数の多い順番に並べ替えるものである。
【００２２】
データのアドレス割り付け処理手段１６は、データ管理情報テーブル連鎖並べ替え手段１５によるデータ管理情報テーブル１２−１〜１２−ｎの連鎖の並べ替え後に、データのアドレス割り付け処理を行うものである。
【００２３】
図５はデータアクセス回数登録手段１４の動作を示す流れ図である。データアクセス回数登録手段１４では、命令の読み込みが行われ（ステップＳ１）、読み込んだ命令がメモリアクセス命令であるか否かが判断される（ステップＳ２）。
【００２４】
そして、読み込んだ命令がメモリアクセスである場合には、アクセスされるデータの種類が判別され（ステップＳ３）、該当するデータ管理情報テーブルのデータアクセス回数情報登録部に登録されている値に１が加算される（ステップＳ４）。
【００２５】
これに対して、読み込んだ命令がメモリアクセスでない場合は、ここでは、何も処理せず、次の命令が存在するか否かが判断され（ステップＳ５）、次の命令が存在していれば、次の命令が読み込まれてステップＳ２〜Ｓ５が繰り返され、次の命令が存在しなければ、データアクセス回数登録手段１４の登録処理動作が終了する。
【００２６】
図６はデータ管理情報テーブル１２−１〜１２−ｎの状態遷移例を示す図であり、説明の都合上、データ管理情報テーブル１２−１〜１２−ｎの数を４個としている。（Ａ）は初期状態、（Ｂ）はデータアクセス回数登録手段１４によるデータアクセス回数登録終了後の状態、（Ｃ）はデータ管理情報テーブル連鎖並べ替え手段１５によるデータ管理情報テーブル連鎖並べ替え後の状態、（Ｄ）はデータのアドレス割り付け処理手段１６によるアドレス割り付け処理後の状態（最終状態）を示している。
【００２７】
この例では、図６（Ａ）に示すように、初期状態においては、データ管理情報テーブル１２−１〜１２−４は、データ管理情報テーブル１２−１を先頭として、データ管理情報テーブル１２−１→データ管理情報テーブル１２−２→データ管理情報テーブル１２−３→データ管理情報テーブル１２−４の順に連鎖の並びを持っている。
【００２８】
即ち、データ管理情報テーブル１２−１を先頭とし、データ管理情報テーブル１２−１のポインタはデータ管理情報テーブル１２−２を指し、データ管理情報テーブル１２−２のポインタはデータ管理情報テーブル１２−３を指し、データ管理情報テーブル１２−３のポインタはデータ管理情報テーブル１２−４を指している。
【００２９】
また、データ管理情報テーブル１２−１はデータＡ１用、データ管理情報テーブル１２−２はデータＡ２用、データ管理情報テーブル１２−３はデータＡ３用、データ管理情報テーブル１２−４はデータＡ４用とされている。また、データ管理情報テーブル１２−１〜１２−４のアクセス回数登録部１９−１〜１９−４及び相対距離登録部２１−１〜２１−４の初期値は０とされる。
【００３０】
そして、図６（Ｂ）に示すように、データアクセス回数登録手段１４によるデータアクセス回数登録の結果、データＡ１〜Ａ４に対するデータアクセス回数は、例えば、データＡ１には６回、データＡ２には３回、データＡ３には１０回、データＡ４には５回となっている。
【００３１】
この結果、図６（Ｃ）に示すように、データ管理情報テーブル１２−１〜１２−４は、データ管理情報テーブル連鎖並べ替え手段１６により、アクセス回数の多い順番に連鎖を並べ替えられる。即ち、データ管理情報テーブル１２−１〜１２−４は、データ管理情報テーブル１２−３を先頭として、データ管理情報テーブル１２−３→データ管理情報テーブル１２−１→データ管理情報テーブル１２−４→データ管理情報テーブル１２−２の順に連鎖を並べ替えられる。
【００３２】
この結果、図６（Ｄ）に示すように、データのアドレス割り付け処理手段１６により、データ管理情報テーブル１２−３、１２−１、１２−４、１２−２の連鎖の順番にベースアドレスからの相対距離が割り付けられている。即ち、例えば、データＡ３には４、データＡ１には８、データＡ４には１２、データＡ２には１６が割り付けられている。
【００３３】
以上のように、本発明のコンパイラの一実施形態によれば、データ毎のデータ管理情報テーブル１２−１〜１２−ｎが用意され、データアクセス回数登録手段１４によりデータ管理情報テーブル１２−１〜１２−ｎにデータ毎のデータアクセス回数が登録され、その後、データ管理情報テーブル連鎖並べ替え手段１５により、登録されたデータアクセス回数が多い順となるようにデータ管理情報テーブルの連鎖が並べ替えられる。
【００３４】
そして、データのアドレス割り付け処理手段１６により、アドレス回数が多いデータほどベースアドレスに近い位置に配置されるように、アクセス回数の多いデータ用のデータ管理情報テーブルの順にベースアドレスからの相対距離が割り付けられるので、事前のアドレス計算や相対距離のレジスタへの転送の出現回数が減少することになる。
【００３５】
したがって、データへのアドレス割り付けの最適化を図り、オブジェクトプログラムのサイズの縮小化と実行サイクルの減少化を図ることができる。なお、特許文献１には、オブジェクトプログラムのサイズの縮小化と実行サイクルの減少化を図る技術が開示されているが、特許文献１に記載の技術は、ベースアドレスの割り付けに関する技術であり、本発明のようにデータへのアドレス割り付けの最適化を図る技術ではない。
【図面の簡単な説明】
【００３６】
【図１】本発明のコンパイラの一実施形態の構成図である。
【図２】本発明のコンパイラの一実施形態が備えるコード生成処理手段の構成図である。
【図３】本発明のコンパイラの一実施形態が備えるアドレス割り付け処理手段の構成図である。
【図４】本発明のコンパイラの一実施形態が備えるデータ管理情報テーブルの構成図である。
【図５】本発明のコンパイラの一実施形態が備えるデータアクセス回数登録手段の動作を示す流れ図である。
【図６】本発明のコンパイラの一実施形態が備えるデータ管理情報テーブルの状態遷移例を示す図である。
【符号の説明】
【００３７】
１…構文解析処理手段
２…中間言語レベル最適化手段
３…コード生成処理手段
４…ソースプログラム格納手段
５…中間言語格納手段
６…オブジェクトプログラム格納手段
７…ノード変換処理手段
８…レジスタ割り付け処理手段
９…アドレス割り付け処理手段
１０…コード出力処理手段
１１…ノード格納手段
１２−ｘ…データ管理情報テーブル
１３…データ管理情報テーブル連鎖機構
１４…データアクセス回数登録手段
１５…データ管理情報テーブル連鎖並べ替え手段
１６…データのアドレス割り付け処理手段
１７−ｘ…ポインタ保持部
１８−ｘ…データ管理情報登録部
１９−ｘ…データアクセス回数登録部
２０−ｘ…データ種類登録部
２１−ｘ…相対距離登録部
【図１】
2006058991.tif 000003
【図２】
2006058991.tif 000004
【図３】
2006058991.tif 000005
【図４】
2006058991.tif 000006
【図５】
2006058991.tif 000007
【図６】
2006058991.tif 000008