JPH02171831A - コンパイラのデータ接近方式 - Google Patents
コンパイラのデータ接近方式Info
- Publication number
- JPH02171831A JPH02171831A JP32677788A JP32677788A JPH02171831A JP H02171831 A JPH02171831 A JP H02171831A JP 32677788 A JP32677788 A JP 32677788A JP 32677788 A JP32677788 A JP 32677788A JP H02171831 A JPH02171831 A JP H02171831A
- Authority
- JP
- Japan
- Prior art keywords
- block
- blocks
- variable
- base
- data area
- 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
- 238000000034 method Methods 0.000 claims description 9
- 230000003247 decreasing effect Effects 0.000 abstract 1
- 238000006073 displacement reaction Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はデータ接近をベースレジスタ、インデックスレ
ジスタ及びディスプレースメントで行うアーキテクチャ
−をもつ計算機でのコンパイラのデータ接近方式に関す
る。
ジスタ及びディスプレースメントで行うアーキテクチャ
−をもつ計算機でのコンパイラのデータ接近方式に関す
る。
従来、この種のコンパイラのデータ接近方式は、翻訳処
理でソースプログラムの変数をデータ域に割付ける過程
で、データ域をブロック分けし、低位のブロックよりベ
ースアドレスを順番に割付けていた。また、ブロック中
の変数に対するデータ接近は、ベースレジスタ、インデ
ックスレジスタ及びディスプレースメントで接近を行う
アーキテクチャ−をもつ計算機では、ブロックに割当て
られたベースアドレスをベースレジスタに設定し、ベー
スアドレスからの相対アドレスをインデックスレジスタ
及びディスプレースメントに設定し行っていた。
理でソースプログラムの変数をデータ域に割付ける過程
で、データ域をブロック分けし、低位のブロックよりベ
ースアドレスを順番に割付けていた。また、ブロック中
の変数に対するデータ接近は、ベースレジスタ、インデ
ックスレジスタ及びディスプレースメントで接近を行う
アーキテクチャ−をもつ計算機では、ブロックに割当て
られたベースアドレスをベースレジスタに設定し、ベー
スアドレスからの相対アドレスをインデックスレジスタ
及びディスプレースメントに設定し行っていた。
更に、変数への接近の都度、ベースアドレスをベースレ
ジスタに設定する命令を少なくするために、複数のベー
スアドレスに対して低位のブロックのベースアドレスよ
りベースレジスタを割当てていた。
ジスタに設定する命令を少なくするために、複数のベー
スアドレスに対して低位のブロックのベースアドレスよ
りベースレジスタを割当てていた。
従来のコンパイラのデータ接近方式では、上記のように
ブロック分けした低位のベースアドレスの順番にベース
レジスタの複数個が割当てられるために、変数の参照回
数の多いブロックにベースレジスタが割当てされない場
合があり、このような場合に、データ接近のためにベー
スアドレスをベースレジスタに設定する命令が生成され
、データ接近のための命令の生成頻度が多く、目的プロ
グラムのステップ数及びサイズが著しく大きくなるとい
う問題があった。
ブロック分けした低位のベースアドレスの順番にベース
レジスタの複数個が割当てられるために、変数の参照回
数の多いブロックにベースレジスタが割当てされない場
合があり、このような場合に、データ接近のためにベー
スアドレスをベースレジスタに設定する命令が生成され
、データ接近のための命令の生成頻度が多く、目的プロ
グラムのステップ数及びサイズが著しく大きくなるとい
う問題があった。
本発明のコンパイラのデータ接近方式の楕或は、コンパ
イラシステムのソースプログラムの変数をデータ域に割
付ける過程で、そのデータ域をブロック分けし、そのブ
ロックに含まれる変数を参照する回数を記憶するブロッ
ク参照回数リストを備え、前記ブロックに含まれる変数
の参照する同数を調べる翻訳処理手段と、ブロック分け
した低位のプロ・yりよりベースアドレスを割付は前記
ブロック参照回数リストより変数の参照回数の多いブロ
ックに優先的にベースレジスタを割付け、この情報を基
にデータ接近を施しオブジェクト生成を行うコード生成
処理手段とを含むことを特徴どする。
イラシステムのソースプログラムの変数をデータ域に割
付ける過程で、そのデータ域をブロック分けし、そのブ
ロックに含まれる変数を参照する回数を記憶するブロッ
ク参照回数リストを備え、前記ブロックに含まれる変数
の参照する同数を調べる翻訳処理手段と、ブロック分け
した低位のプロ・yりよりベースアドレスを割付は前記
ブロック参照回数リストより変数の参照回数の多いブロ
ックに優先的にベースレジスタを割付け、この情報を基
にデータ接近を施しオブジェクト生成を行うコード生成
処理手段とを含むことを特徴どする。
次に1本発明について図面を参照1.て説明する。
第1図を参照すると、本発明の一実施例は、ソースプロ
グラムを記憶する手段1と、中間語を記憶する手段2と
、生成オブジェクトを記憶する手段3と、ブロック参照
回数を記憶する手段4と、翻訳処理手段5と、コード生
成手段6とから構成されるコンパイラシステムを示して
いる。
グラムを記憶する手段1と、中間語を記憶する手段2と
、生成オブジェクトを記憶する手段3と、ブロック参照
回数を記憶する手段4と、翻訳処理手段5と、コード生
成手段6とから構成されるコンパイラシステムを示して
いる。
次に、翻訳処理手段5およびコード生成処理手段6での
処理についてそれぞれ第2図及び第3図を参照して説明
する。
処理についてそれぞれ第2図及び第3図を参照して説明
する。
第2図において、翻訳処理手段5は、ステップら−1で
ソースプログラム1を入力として楕文則意味則をチエツ
クを行い、変数のデータ域への割付けを行い、更に、ハ
ードウェアの最大ディスプレースメントの間隔でデータ
域をブロック分けを行う。次に、ステップ5−2でオブ
ジェクトの生成の基本単位である中間言語2に分解しな
がら、上記のデータ域をブロック分けしたブロックに含
まれる変数の参照回数を調べ、ブロック参照回数テーブ
ル4に記憶を行う。
ソースプログラム1を入力として楕文則意味則をチエツ
クを行い、変数のデータ域への割付けを行い、更に、ハ
ードウェアの最大ディスプレースメントの間隔でデータ
域をブロック分けを行う。次に、ステップ5−2でオブ
ジェクトの生成の基本単位である中間言語2に分解しな
がら、上記のデータ域をブロック分けしたブロックに含
まれる変数の参照回数を調べ、ブロック参照回数テーブ
ル4に記憶を行う。
第3図において、コード生成処理手段6は、ステップ6
−1でブロック分けし、たブロックにベースレジスタを
割付け、ブロック参照回数テーブル4で取得したブロッ
クm位の参照回数に基づき参照回数の多いブロックのベ
ースアドレスに対してベースレジスタを優先的に割当て
を行う。ステップ6−2で翻訳処理5で分解された中間
言語3を入力として、機械語を生成しオブジェクト3を
出力する。機械語の生成において、変数の参照は変数の
参照アドレスが含まれるブロックにベースレジスタが割
当てられている場合は、そのベースレジスタによってデ
ータ接近を行い、割当てられていない場合は、ブロック
に割付けられているベースアドレスを任意のベースレジ
スタにロード後、データ接近を行う。
−1でブロック分けし、たブロックにベースレジスタを
割付け、ブロック参照回数テーブル4で取得したブロッ
クm位の参照回数に基づき参照回数の多いブロックのベ
ースアドレスに対してベースレジスタを優先的に割当て
を行う。ステップ6−2で翻訳処理5で分解された中間
言語3を入力として、機械語を生成しオブジェクト3を
出力する。機械語の生成において、変数の参照は変数の
参照アドレスが含まれるブロックにベースレジスタが割
当てられている場合は、そのベースレジスタによってデ
ータ接近を行い、割当てられていない場合は、ブロック
に割付けられているベースアドレスを任意のベースレジ
スタにロード後、データ接近を行う。
第4図に、翻訳処理手段5で作成されコード生成手段6
で参照されるブロック参照回数チー・プル4の詳細を示
している。
で参照されるブロック参照回数チー・プル4の詳細を示
している。
ブロック参照回数テーブル4は、ハードウェアの最大デ
ィスプレースメントの間隔でブロック分けしなブロック
の個数を要素とする配列で構成され、その1要素が1ブ
ロツクに含まれる変数の参照回数を記憶する。
ィスプレースメントの間隔でブロック分けしなブロック
の個数を要素とする配列で構成され、その1要素が1ブ
ロツクに含まれる変数の参照回数を記憶する。
このようにして、ハードウェアの最大ディスプレースメ
ントの間隔で中間言語をブロック分けし、そのブロック
に含まれる変数の参照回数を調べ、参照回数の多いブロ
ックに対して優先的にベースレジスタを割当てることに
より、データ域への接近のためのオブジェクトを減少さ
せ、効率の良いオブジェクトの作成を行う。
ントの間隔で中間言語をブロック分けし、そのブロック
に含まれる変数の参照回数を調べ、参照回数の多いブロ
ックに対して優先的にベースレジスタを割当てることに
より、データ域への接近のためのオブジェクトを減少さ
せ、効率の良いオブジェクトの作成を行う。
本発明には、以上説明したように、変数の参照回数の多
いブロックにベースレジスタを優先的に割当てることに
より、データ接近のために生成される命令が減少し、目
的プログラムのステップ数及びサイズが大幅に削減でき
る効果がある。
いブロックにベースレジスタを優先的に割当てることに
より、データ接近のために生成される命令が減少し、目
的プログラムのステップ数及びサイズが大幅に削減でき
る効果がある。
第1図は本発明の一実施例のコンパイラシステムの構成
図、第2図は第1図の翻訳処理部5の処理内容を示す図
、第3図は第1図のコード生成処理部6の処理内容を示
す図、第4図は第1図のブロック参照回数テーブル4の
テーブル構成図である。 1・・・ソースプログラム、2・・・中間言語、3・・
・ブロック参照回数テーブル、4・・・オブジェクト、
5・・・翻訳処理部、6・・・コード生成処理部。
図、第2図は第1図の翻訳処理部5の処理内容を示す図
、第3図は第1図のコード生成処理部6の処理内容を示
す図、第4図は第1図のブロック参照回数テーブル4の
テーブル構成図である。 1・・・ソースプログラム、2・・・中間言語、3・・
・ブロック参照回数テーブル、4・・・オブジェクト、
5・・・翻訳処理部、6・・・コード生成処理部。
Claims (1)
- コンパイラシステムのソースプログラムの変数をデー
タ域に割付ける過程で、そのデータ域をブロック分けし
、そのブロックに含まれる変数を参照する回数を記憶す
るブロック参照回数リストを備え、前記ブロックに含ま
れる変数の参照する回数を調べる翻訳処理手段と、ブロ
ック分けした低位のブロックよりベースアドレスを割付
け前記ブロック参照回数リストより変数の参照回数の多
いブロックに優先的にベースレジスタを割付け、この情
報を基にデータ接近を施しオブジェクト生成を行うコー
ド生成処理手段とを含むことを特徴とするコンパイラの
データ接近方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP32677788A JPH02171831A (ja) | 1988-12-23 | 1988-12-23 | コンパイラのデータ接近方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP32677788A JPH02171831A (ja) | 1988-12-23 | 1988-12-23 | コンパイラのデータ接近方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH02171831A true JPH02171831A (ja) | 1990-07-03 |
Family
ID=18191585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP32677788A Pending JPH02171831A (ja) | 1988-12-23 | 1988-12-23 | コンパイラのデータ接近方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH02171831A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05120028A (ja) * | 1991-10-28 | 1993-05-18 | Nec Corp | マイクロコンピユータ装置 |
WO2007018328A1 (en) * | 2005-08-05 | 2007-02-15 | Gq Soft Co., Ltd. | Method for platform-free file compression and file security in cellular phone |
-
1988
- 1988-12-23 JP JP32677788A patent/JPH02171831A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05120028A (ja) * | 1991-10-28 | 1993-05-18 | Nec Corp | マイクロコンピユータ装置 |
WO2007018328A1 (en) * | 2005-08-05 | 2007-02-15 | Gq Soft Co., Ltd. | Method for platform-free file compression and file security in cellular phone |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5934094B2 (ja) | データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング | |
JPH04268927A (ja) | メモリ管理方法 | |
US7949848B2 (en) | Data processing apparatus, method and computer program product for reducing memory usage of an object oriented program | |
WO2004017207A2 (en) | Method and system for memory management optimization | |
JPH05204656A (ja) | スレッド固有データ保持方法 | |
KR100349958B1 (ko) | 메모리 관리를 위한 방법 및 장치 | |
US6600493B1 (en) | Allocating memory based on memory device organization | |
KR20010014861A (ko) | 컴퓨터 시스템의 하나의 논리적 분할부에서의 최대인터랙티브 작업을 나머지 분할부들에서의 최대인터랙티브 작업과 별도로 지정하는 장치 및 방법 | |
JP2000330865A (ja) | メモリ・バンク間でメモリをインタリーブする方法 | |
US6421824B1 (en) | Method and apparatus for producing a sparse interference graph | |
CN111344667A (zh) | 用于在一个或多个虚拟内存页的虚拟内存子页内编译和执行代码的***和方法 | |
JPH02171831A (ja) | コンパイラのデータ接近方式 | |
JP2001101010A (ja) | 仮想機械最適化方法 | |
US7581213B2 (en) | Allocating automatic variables to different memory banks | |
JPS6234240A (ja) | デ−タ割付け方式 | |
CN108241508B (zh) | 处理OpenCL内核的方法及用于该方法的计算设备 | |
Sudarsanam et al. | Optimization of embedded DSP programs using post-pass data-flow analysis | |
JP3304445B2 (ja) | プログラム生成処理装置 | |
JPH0371233A (ja) | コンパイラにおける最適データ割付け方式 | |
KR100912114B1 (ko) | 디지털 신호처리 프로세서에서 효과적인 데이터 전송을위한 메모리 운용 방법 | |
JPH04344549A (ja) | 計算機システムにおけるページ割り当て方式 | |
JPH02171830A (ja) | コンパイラにおける最適データ割付け方式 | |
CN116127445A (zh) | 基于内核态内存隔离硬件特性的eBPF内存隔离方法及*** | |
JPH03109642A (ja) | コンパイル装置 | |
JPH1063510A (ja) | コード展開方法 |