JPH047748A - 参照順による自動配列要素割付処理方式 - Google Patents
参照順による自動配列要素割付処理方式Info
- Publication number
- JPH047748A JPH047748A JP2108661A JP10866190A JPH047748A JP H047748 A JPH047748 A JP H047748A JP 2108661 A JP2108661 A JP 2108661A JP 10866190 A JP10866190 A JP 10866190A JP H047748 A JPH047748 A JP H047748A
- Authority
- JP
- Japan
- Prior art keywords
- array
- order
- array element
- processing means
- referenced
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004458 analytical method Methods 0.000 claims abstract description 10
- 238000003672 processing method Methods 0.000 claims description 3
- 238000000034 method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
[産業上の利用分野]
本発明はプログラム中の配列の配列要素の割付方式に関
し、特にループの中で使用される配列要素をその参照順
にメモリに割り付ける参照順による自動配列要素割付処
理方式に関する。
し、特にループの中で使用される配列要素をその参照順
にメモリに割り付ける参照順による自動配列要素割付処
理方式に関する。
従来の言語処理系ではプログラム内で定義されている配
列の領域に配列要素を割り付ける場合、配列要素の参照
順序とは無関係にあらかじめ決められた固有の順序に従
って機械的に割り付けている。第6図に3次元配列A
(100,100,100)の配列要素の従来方式によ
る割付例を示す。このように、−船釣には下位次元(右
側の要素)の添字から変化していく順序で割り付けるの
が標準的な割付方式であり、これはコンパイルに使用す
る言語処理系に固有のものである。
列の領域に配列要素を割り付ける場合、配列要素の参照
順序とは無関係にあらかじめ決められた固有の順序に従
って機械的に割り付けている。第6図に3次元配列A
(100,100,100)の配列要素の従来方式によ
る割付例を示す。このように、−船釣には下位次元(右
側の要素)の添字から変化していく順序で割り付けるの
が標準的な割付方式であり、これはコンパイルに使用す
る言語処理系に固有のものである。
しかしながら、従来の配列要素の割付方式では以下に説
明するような問題があった。
明するような問題があった。
このような配列はループの中の命令によって集中的に実
行されるので、連続的に参照されるのが普通である。し
たがって、第6図の配列Aを参照する場合、下位次元の
添字を変化させるループが上位次元の添字を変化させる
ループの内側にあるプログラムを実行するときは割り付
けられた順序と参照する順序とが一致するので特に間B
無いが、これと反対に、上位次元の添字を変化させるル
ープが下位次元の添字を変化させるループの内側にある
プログラムを実行するときは割り付けられた順序と参照
する順序とが一致しない。したがって、同図の81で示
す配列要素A(1,1,1)の次はS2で示す配列要素
A(2,1,ILその次はS3の配列要素A(3,1,
1)のように10,000ワード飛びに配列を参照する
ことになる。このように、参照されるメモリのアドレス
が離れてしまうので、キャッシュメモリにロードされて
いる範囲を逸脱してしまい、主メモリからキャッシュメ
モリへのロードが多発してキャッシュメモリを備えてい
る意味が失われてしまう。また、たとえ、キャッシュメ
モリに一度にロードできるサイズの配列でも、メモリを
連続して参照することができないためにオブジェクトコ
ードが複雑になり、プログラムの実行速度が遅くなる。
行されるので、連続的に参照されるのが普通である。し
たがって、第6図の配列Aを参照する場合、下位次元の
添字を変化させるループが上位次元の添字を変化させる
ループの内側にあるプログラムを実行するときは割り付
けられた順序と参照する順序とが一致するので特に間B
無いが、これと反対に、上位次元の添字を変化させるル
ープが下位次元の添字を変化させるループの内側にある
プログラムを実行するときは割り付けられた順序と参照
する順序とが一致しない。したがって、同図の81で示
す配列要素A(1,1,1)の次はS2で示す配列要素
A(2,1,ILその次はS3の配列要素A(3,1,
1)のように10,000ワード飛びに配列を参照する
ことになる。このように、参照されるメモリのアドレス
が離れてしまうので、キャッシュメモリにロードされて
いる範囲を逸脱してしまい、主メモリからキャッシュメ
モリへのロードが多発してキャッシュメモリを備えてい
る意味が失われてしまう。また、たとえ、キャッシュメ
モリに一度にロードできるサイズの配列でも、メモリを
連続して参照することができないためにオブジェクトコ
ードが複雑になり、プログラムの実行速度が遅くなる。
本発明は上記従来の問題に鑑みてなされたものであり、
プログラム内で配列を参照するときの順序に合わせて配
列要素をメモリに割り付けること番こより、キャッシュ
メモリの有効利用と生成するオブジェクトコードの簡潔
化をはかり、プログラムの実行速度を高めることができ
る参照順による自動配列要素割付処理方式を提供するこ
とを目的とするものである。
プログラム内で配列を参照するときの順序に合わせて配
列要素をメモリに割り付けること番こより、キャッシュ
メモリの有効利用と生成するオブジェクトコードの簡潔
化をはかり、プログラムの実行速度を高めることができ
る参照順による自動配列要素割付処理方式を提供するこ
とを目的とするものである。
上記の目的を達成するために、本発明においては、原始
プログラム内で定義されている配列に対して、少なくと
もその配列を識別する配列識別子とその配列要素が参照
されている順序を識別する参照順序情報とその配列の参
照回数とから成る配列要素割付情報テーブルと、前記配
列識別子を前記配列要素割付情報テーブルに登録する配
列識別子登録処理手段と、前記配列が原始プログラム内
のループの中で参照されている場合に、その配列要素の
参照順序を解析し、前記配列要素割付情報テーブルの参
照順序情報および参照回数にその情報を格納する配列要
素参照順序解析処理手段と、前記配列要素割付情報テー
ブルに基づいて配列要素の割付順序を決定する配列要素
割付順序決定処理手段と、この配列要素割付順序決定処
理手段によって決められた順序に従って配列要素を参照
するオブジェクトコードを出力するコード生成処理手段
を備えるものである。
プログラム内で定義されている配列に対して、少なくと
もその配列を識別する配列識別子とその配列要素が参照
されている順序を識別する参照順序情報とその配列の参
照回数とから成る配列要素割付情報テーブルと、前記配
列識別子を前記配列要素割付情報テーブルに登録する配
列識別子登録処理手段と、前記配列が原始プログラム内
のループの中で参照されている場合に、その配列要素の
参照順序を解析し、前記配列要素割付情報テーブルの参
照順序情報および参照回数にその情報を格納する配列要
素参照順序解析処理手段と、前記配列要素割付情報テー
ブルに基づいて配列要素の割付順序を決定する配列要素
割付順序決定処理手段と、この配列要素割付順序決定処
理手段によって決められた順序に従って配列要素を参照
するオブジェクトコードを出力するコード生成処理手段
を備えるものである。
本発明はこのように構成されているので、配列要素参照
順序解析処理手段において、原始プログラム内のループ
の中での配列要素の参照順序を解析して参照順序情報と
参照回数とを配列要素割付情報テーブルに格納し、配列
要素割付順序決定処理手段において前記配列要素割付情
報テーブルに基づいて配列要素の割付順序を決定し、コ
ード生成処理手段においてこの決定された順序に従って
配列要素を参照するオブジェクトコードを出力すること
ができる。
順序解析処理手段において、原始プログラム内のループ
の中での配列要素の参照順序を解析して参照順序情報と
参照回数とを配列要素割付情報テーブルに格納し、配列
要素割付順序決定処理手段において前記配列要素割付情
報テーブルに基づいて配列要素の割付順序を決定し、コ
ード生成処理手段においてこの決定された順序に従って
配列要素を参照するオブジェクトコードを出力すること
ができる。
(実施例]
以下本発明の実施例を図面を参照して説明する。
第1図は本発明の方式の一実施例におけるブロック図で
ある。第1図においで、】はコンパイル対象の原始プロ
グラム、2はコンパイラ、3は原始プログラム内で定義
されている配列に対して、その配列を識別する配列識別
子とその配列要素が参照されている順序を識別する参照
順序情報とその配列の参照回数とから成る配列要素割付
情報テーブル、4は配列識別子を配列要素割付情報テー
ブル3に登録する配列識別子登録処理手段、5は前記配
列が原始プログラム内のループの中で参照されている場
合に、その配列要素の参照順序を解析し、配列要素割付
情報テーブル3の参照順序情報および参照回数にその情
報を格納する配列要素参照順序解析処理手段、6は配列
要素割付情報テーブル3に基づいて配列要素の割付順序
を決定する配列要素割付順序決定処理手段、7はこの配
列要素割付順序決定処理手段によって決められた順序に
従って配列要素を参照するオブジェクトコードを出力す
るコード生成処理手段、8は生成されたオブジェクトコ
ードである。
ある。第1図においで、】はコンパイル対象の原始プロ
グラム、2はコンパイラ、3は原始プログラム内で定義
されている配列に対して、その配列を識別する配列識別
子とその配列要素が参照されている順序を識別する参照
順序情報とその配列の参照回数とから成る配列要素割付
情報テーブル、4は配列識別子を配列要素割付情報テー
ブル3に登録する配列識別子登録処理手段、5は前記配
列が原始プログラム内のループの中で参照されている場
合に、その配列要素の参照順序を解析し、配列要素割付
情報テーブル3の参照順序情報および参照回数にその情
報を格納する配列要素参照順序解析処理手段、6は配列
要素割付情報テーブル3に基づいて配列要素の割付順序
を決定する配列要素割付順序決定処理手段、7はこの配
列要素割付順序決定処理手段によって決められた順序に
従って配列要素を参照するオブジェクトコードを出力す
るコード生成処理手段、8は生成されたオブジェクトコ
ードである。
次に、上記実施例の動作について説明する。コンパイラ
2が原始プログラム1を入力してオブジェクトコード8
を出力する過程で、構文解析または意味解析中に配列の
定義が現われる度に配列識別子登録処理手段4を呼び出
す。配列識別子登録処理手段4はその配列名を配列要素
割付情報テーブル3の配列識別子に登録する。配列要素
が原始プログラム1のループの中で参照されている場合
には配列要素参照順序解析処理手段5を呼び出し、最も
内側のループの繰り返しによって配列要素がどのような
順序で参照されているかを調べる。そして、配列の下位
次元の添字が先に変化する順序で参照されている場合に
は、例えば1を、上位次元の添字が先に変化する順序で
参照されている場合には、例えば2を、第2図に示す配
列要素割付情報テーブル3の参照順序情報に加算すると
ともに参照回数に1を加算する。同図において配列aは
2回参照され、2回とも上位次元の添字が先に変化する
順序で参照されていることを示す、また、配列すは3回
参照され、3回とも下位次元の添字が先に変化する順序
で参照されていることを示す。
2が原始プログラム1を入力してオブジェクトコード8
を出力する過程で、構文解析または意味解析中に配列の
定義が現われる度に配列識別子登録処理手段4を呼び出
す。配列識別子登録処理手段4はその配列名を配列要素
割付情報テーブル3の配列識別子に登録する。配列要素
が原始プログラム1のループの中で参照されている場合
には配列要素参照順序解析処理手段5を呼び出し、最も
内側のループの繰り返しによって配列要素がどのような
順序で参照されているかを調べる。そして、配列の下位
次元の添字が先に変化する順序で参照されている場合に
は、例えば1を、上位次元の添字が先に変化する順序で
参照されている場合には、例えば2を、第2図に示す配
列要素割付情報テーブル3の参照順序情報に加算すると
ともに参照回数に1を加算する。同図において配列aは
2回参照され、2回とも上位次元の添字が先に変化する
順序で参照されていることを示す、また、配列すは3回
参照され、3回とも下位次元の添字が先に変化する順序
で参照されていることを示す。
同様に、配列Cは1回参照され、上位次元の添字が先に
変化する順序で参照されていることを示す。
変化する順序で参照されていることを示す。
次に、構文解析および意味解析が終了すると、配列要素
割付順序決定処理手段6を呼び出す。配列要素割付順序
決定処理手段6は上記のようにして作成された配列要素
割付情報テーブル3に基づいて配列要素の割付順序を決
定する。すなわち、配列要素割付情報テーブル3の参照
順序情報を参照回数で割った値が、例えば1.5未満の
場合は参照順序情報を1に書き換え、1.5以上の場合
は2に書き換えることによって、それぞれの配列毎に下
位次元の添字が先に変化するような参照のされ方が多け
れば、参照順序情報を1に、その反対の場合は2に決定
する。
割付順序決定処理手段6を呼び出す。配列要素割付順序
決定処理手段6は上記のようにして作成された配列要素
割付情報テーブル3に基づいて配列要素の割付順序を決
定する。すなわち、配列要素割付情報テーブル3の参照
順序情報を参照回数で割った値が、例えば1.5未満の
場合は参照順序情報を1に書き換え、1.5以上の場合
は2に書き換えることによって、それぞれの配列毎に下
位次元の添字が先に変化するような参照のされ方が多け
れば、参照順序情報を1に、その反対の場合は2に決定
する。
第3図は第2図に示した配列要素割付情報テーブル3に
ついて配列要素割付順序決定処理を実行した結果であり
、配列aおよび配列Cは上位次元の添字が先に変化する
順序で、配列すは下位次元の添字が先に変化する順序で
メモリに割り付けられる。次に、コード生成処理手段7
が呼び出され、配列要素割付順序決定処理手段6によっ
て決められた配列要素割付情報テーブル3の参照順序情
報に従って配列要素を参照するようなオブジェクトコー
ド8を出力する。すなわち、参照順序情報が1であれば
下位次元の添字が先に変化する順序で配列要素がメモリ
に割り付けられるものとして、配列要素を参照するオブ
ジェクトコード8を出力する。同様に、参照順序情報が
2であれば上位次元の添字が先に変化する順序で配列要
素がメモリに割り付けられるものとして、配列要素を参
照するオブジェクトコード8を出力する。
ついて配列要素割付順序決定処理を実行した結果であり
、配列aおよび配列Cは上位次元の添字が先に変化する
順序で、配列すは下位次元の添字が先に変化する順序で
メモリに割り付けられる。次に、コード生成処理手段7
が呼び出され、配列要素割付順序決定処理手段6によっ
て決められた配列要素割付情報テーブル3の参照順序情
報に従って配列要素を参照するようなオブジェクトコー
ド8を出力する。すなわち、参照順序情報が1であれば
下位次元の添字が先に変化する順序で配列要素がメモリ
に割り付けられるものとして、配列要素を参照するオブ
ジェクトコード8を出力する。同様に、参照順序情報が
2であれば上位次元の添字が先に変化する順序で配列要
素がメモリに割り付けられるものとして、配列要素を参
照するオブジェクトコード8を出力する。
第4図は二つの3次元配列AおよびBの参照例を示すF
ORTRANプログラムの例であり、配列AはループL
1において下位次元の添字Kから順に参照され、配列B
はプログラムL2において上位次元の添字Kから順に参
照されている。
ORTRANプログラムの例であり、配列AはループL
1において下位次元の添字Kから順に参照され、配列B
はプログラムL2において上位次元の添字Kから順に参
照されている。
第5図は前記FORTRANプログラムを上記実施例に
より処理した配列要素の割付順序を示すものであり、配
列Aは下位次元の添字を連続して参照できるように割り
付けられ、配列Bは上位次元の添字を連続して参照でき
るように割り付けられている。
より処理した配列要素の割付順序を示すものであり、配
列Aは下位次元の添字を連続して参照できるように割り
付けられ、配列Bは上位次元の添字を連続して参照でき
るように割り付けられている。
したがって、以上のような実施例の構成によれば、原始
プログラムのコンパイル単位で、それぞれの配列要素が
プログラムの中で参照されている順序に合わせて配列要
素をメモリに割り付けることができる。また、複数回の
参照回数がある場合は、最も多い参照順序に合わせて配
列要素をメモリに割り付けることができる。
プログラムのコンパイル単位で、それぞれの配列要素が
プログラムの中で参照されている順序に合わせて配列要
素をメモリに割り付けることができる。また、複数回の
参照回数がある場合は、最も多い参照順序に合わせて配
列要素をメモリに割り付けることができる。
本発〜明によれば、上記実施例から明らかなように、プ
ログラムを実行するときに参照される配列要素がメモリ
上で連続して得られるため、キャッシュメモリを効果的
に利用することができる。また、配列要素がメモリ上で
連続しているため、ポストインクリメント命令などを用
いることによって、繰り返し時に次の配列要素のアドレ
ス計算が要らなくなり、配列要素を参照するためのオブ
ジェクトニードが簡潔になり、プログラムの実行速度が
速くなるという効果がある。
ログラムを実行するときに参照される配列要素がメモリ
上で連続して得られるため、キャッシュメモリを効果的
に利用することができる。また、配列要素がメモリ上で
連続しているため、ポストインクリメント命令などを用
いることによって、繰り返し時に次の配列要素のアドレ
ス計算が要らなくなり、配列要素を参照するためのオブ
ジェクトニードが簡潔になり、プログラムの実行速度が
速くなるという効果がある。
第1図は本発明の方式の一実施例におけるブロック図、
第2図と第3図は配列要素割付情報テーブルの格納状態
を示す説明図、第4図はFORTRANプログラムリス
ト、第5図は本発明による配列要素の割付状態を示す説
明図、第6図は従来例による配列要素の割付状態を示す
説明図である。 1・・・原始プログラム、2・・・コンパイラ、3・・
・配列要素割付情報テーブル、4・・・配列識別子登録
処理手段、5・・・配列要素参照順序解析処理手段、6
・・・配列要素割付順序決定処理手段、7・・・コード
生成処理手段、
第2図と第3図は配列要素割付情報テーブルの格納状態
を示す説明図、第4図はFORTRANプログラムリス
ト、第5図は本発明による配列要素の割付状態を示す説
明図、第6図は従来例による配列要素の割付状態を示す
説明図である。 1・・・原始プログラム、2・・・コンパイラ、3・・
・配列要素割付情報テーブル、4・・・配列識別子登録
処理手段、5・・・配列要素参照順序解析処理手段、6
・・・配列要素割付順序決定処理手段、7・・・コード
生成処理手段、
Claims (1)
- 【特許請求の範囲】 原始プログラム内で定義されている配列に対して、少な
くともその配列を識別する配列識別子とその配列要素が
参照されている順序を識別する参照順序情報とその配列
の参照回数とから成る配列要素割付情報テーブルと、 前記配列識別子を前記配列要素割付情報テーブルに登録
する配列識別子登録処理手段と、前記配列が原始プログ
ラム内のループの中で参照されている場合に、その配列
要素の参照順序を解析し、前記配列要素割付情報テーブ
ルの参照順序情報および参照回数にその情報を格納する
配列要素参照順序解析処理手段と、 前記配列要素割付情報テーブルに基づいて配列要素の割
付順序を決定する配列要素割付順序決定処理手段と、 この配列要素割付順序決定処理手段によって決められた
順序に従って配列要素を参照するオブジェクトコードを
出力するコード生成処理手段とを備えることを特徴とす
る参照順による自動配列要素割付処理方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2108661A JPH047748A (ja) | 1990-04-26 | 1990-04-26 | 参照順による自動配列要素割付処理方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2108661A JPH047748A (ja) | 1990-04-26 | 1990-04-26 | 参照順による自動配列要素割付処理方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH047748A true JPH047748A (ja) | 1992-01-13 |
Family
ID=14490473
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2108661A Pending JPH047748A (ja) | 1990-04-26 | 1990-04-26 | 参照順による自動配列要素割付処理方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH047748A (ja) |
-
1990
- 1990-04-26 JP JP2108661A patent/JPH047748A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR101360512B1 (ko) | 기록 마스크를 사용하는 simd 아키텍처에 의한 레지스터 할당 | |
| US20040139427A1 (en) | Method and system for performing global processor resource assignment in an assembler | |
| EP0798636A1 (en) | Method and system for register allocation using multiple interference graphs | |
| JP2008529119A (ja) | マルチスレッドプロセッサ | |
| JPH01118931A (ja) | プログラム変換方式 | |
| JPH047748A (ja) | 参照順による自動配列要素割付処理方式 | |
| US8566813B2 (en) | Method and system generating execution file system device | |
| JP3264901B2 (ja) | コンパイル装置及びコンパイル方法 | |
| JP2003330730A (ja) | オペレーティングシステム配置装置 | |
| JPH08212081A (ja) | メモリ割り付け方法、並びにコンパイル方法およびコンパイラ | |
| JP3004340B2 (ja) | プログラム最適化装置 | |
| JPS6234240A (ja) | デ−タ割付け方式 | |
| JPH04241630A (ja) | グラフ色塗りによるレジスタ割り付け最適化方式 | |
| JPS63163636A (ja) | 並列処理実行方式 | |
| JPH0371233A (ja) | コンパイラにおける最適データ割付け方式 | |
| JPH02171831A (ja) | コンパイラのデータ接近方式 | |
| JP2003271393A (ja) | インライン割付による最適化方法およびそのコンパイラ | |
| JP2003271392A (ja) | レジスタ割り付け方法 | |
| JPH02183833A (ja) | マルチプロセッサ用コンパイル方式 | |
| JPH0769831B2 (ja) | コンパイラにおけるレジスタ割当て方法 | |
| JPH03257534A (ja) | メモリ割り当て方式 | |
| JPS62163145A (ja) | コンパイラ装置 | |
| JPS63189944A (ja) | 目的プログラム生成処理方式 | |
| JPS6378237A (ja) | 情報処理装置 | |
| JPH04256132A (ja) | 高級プログラム言語の代入文最適化方式 |