JPS63276127A - ダイナミック命令生成方式 - Google Patents
ダイナミック命令生成方式Info
- Publication number
- JPS63276127A JPS63276127A JP11157287A JP11157287A JPS63276127A JP S63276127 A JPS63276127 A JP S63276127A JP 11157287 A JP11157287 A JP 11157287A JP 11157287 A JP11157287 A JP 11157287A JP S63276127 A JPS63276127 A JP S63276127A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- program
- user
- source
- module
- 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 abstract description 10
- 238000009825 accumulation Methods 0.000 claims description 12
- 238000005457 optimization Methods 0.000 claims description 2
- 238000012544 monitoring process Methods 0.000 abstract 2
- 238000010586 diagram Methods 0.000 description 7
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
(概要)
本発明は、オブジェクトモジエール中の各命令実行回数
を利用者ごとに監視し、その結果を次回のコンパイル処
理に反映させて、最適な命令生成を行うことにより、プ
ログラムの実行効率を向上させる。
を利用者ごとに監視し、その結果を次回のコンパイル処
理に反映させて、最適な命令生成を行うことにより、プ
ログラムの実行効率を向上させる。
本発明は、コンパイラにおける命令生成方式。
特に命令生成方法が複数ある場合のコンパイラの最適化
処理技術に関する。
処理技術に関する。
原始プログラムを実行可能なプログラム、即ちOM (
Ob3ect Module)に翻訳するには1通常コ
ンパイラが用いられる。
Ob3ect Module)に翻訳するには1通常コ
ンパイラが用いられる。
第4図は、従来例を示す図である。
第4図において、41はS M (Source Mo
dule)。
dule)。
42はコンパイラ、43はソース解析部、44は命令生
成部、45はコンパイル時の情報ファイル。
成部、45はコンパイル時の情報ファイル。
46はOM (Object Module)である。
S M (Source Module) 41は、原
始プログラムであり、コンパイラ42によりコンパイル
されて実行可能なOM(Object Module)
46に翻訳される。
始プログラムであり、コンパイラ42によりコンパイル
されて実行可能なOM(Object Module)
46に翻訳される。
コンパイラ42は、 S M (Source Mo
dule) 41を実行可能なOM(Object M
odule) 46に翻訳する。
dule) 41を実行可能なOM(Object M
odule) 46に翻訳する。
ソース解析部43は、 S M (Source M
odule) 41を解析するためのものである。
odule) 41を解析するためのものである。
命令生成部44は、 OM(Object Modul
e) 4 Gの命令群を生成するためのものである。
e) 4 Gの命令群を生成するためのものである。
コンパイル時の情報ファイル45には、コンパイルに必
要な情報が蓄積されている。
要な情報が蓄積されている。
OM(Object Module) 46は、コン
パイラ42により翻訳された実行可能なプログラムであ
る。
パイラ42により翻訳された実行可能なプログラムであ
る。
原始プログラムSM41は、コンパイラ42中のソース
解析部43により命令1文法等が解析され、コンパイル
時の情報ファイル45に蓄積された情報に基づいて、命
令生成部44において命令列が生成され、実行可能なプ
ログラムである0M46に翻訳される。
解析部43により命令1文法等が解析され、コンパイル
時の情報ファイル45に蓄積された情報に基づいて、命
令生成部44において命令列が生成され、実行可能なプ
ログラムである0M46に翻訳される。
従来のコンパイラによる命令の生成方式では。
コンパイル時に収集できる情報のみから命令を生成して
いるため、実行上最適な命令の生成を行うことができな
いという問題があった。
いるため、実行上最適な命令の生成を行うことができな
いという問題があった。
例えば、原始プログラムSMとして次の例を考える。
IF A=B THEN
文I
LSE
文2
F !
この原始プログラムSMにおいて1文lと文2が同時に
実行されることはない、このため1文1と文2の命令生
成順序は任意であるが1文1と文2の実行頻度により出
力順序を可変にすれば、実行効率の良いOMを生成する
ことができる。
実行されることはない、このため1文1と文2の命令生
成順序は任意であるが1文1と文2の実行頻度により出
力順序を可変にすれば、実行効率の良いOMを生成する
ことができる。
しかしながら、実行頻度は実際に実行しなければ判らな
いから、従来例のようにコンパイル時に収集できる情報
のみから命令を生成するコンパイラでは、実行効率の良
いOMを生成することはできない。
いから、従来例のようにコンパイル時に収集できる情報
のみから命令を生成するコンパイラでは、実行効率の良
いOMを生成することはできない。
本発明は、コンパイラによる命令生成方式において、コ
ンパイルされた命令の実行時の命令実行回数をカウント
する命令実行回数カウント機構と。
ンパイルされた命令の実行時の命令実行回数をカウント
する命令実行回数カウント機構と。
この命令実行回数カウント機構の結果を各利用者毎に蓄
積していく命令実行回数蓄積機構とを設け。
積していく命令実行回数蓄積機構とを設け。
原始プログラムをコンパイルする時に命令実行回数蓄積
機構に蓄積された各利用者の命令実行回数情報を反映さ
せた命令生成を行うことにより、命令の実行効率を向上
させるものである。
機構に蓄積された各利用者の命令実行回数情報を反映さ
せた命令生成を行うことにより、命令の実行効率を向上
させるものである。
第1図は9本発明の基本構成を示す図である。
第1図において、1はS M (Source Mod
ule)。
ule)。
2はコンパイラ、3はソース解析部、4は命令生成部、
5はコンパイル時の情報ファイル、6はOM (Obj
ect Module)、 7はLM (Load M
odule)。
5はコンパイル時の情報ファイル、6はOM (Obj
ect Module)、 7はLM (Load M
odule)。
8は命令実行回数カウント機構、9は命令実行回数蓄積
機構である。
機構である。
S M (Source Module) 1は、高級
言語で書かれた原始プログラムである。
言語で書かれた原始プログラムである。
コンパイラ2は、ソース解析部3及び命令生成部4から
なり、SMIを0M6に翻訳する。
なり、SMIを0M6に翻訳する。
ソース解析部3は、SMIを解析するためのものである
。
。
命令生成部4は、0M6の命令群を生成するためのもの
である。
である。
コンパイル時の情報ファイル5には、コンパイルに必要
な情報が蓄積されている。
な情報が蓄積されている。
OM (Object Module) 6は、コンパ
イルされた実行可能なプログラムであり、各利用者毎に
作成される。
イルされた実行可能なプログラムであり、各利用者毎に
作成される。
L M (Load Module) 7は、各利用者
がコンピュータにロードして実行中のプログラムである
。
がコンピュータにロードして実行中のプログラムである
。
命令実行回数カウント機構8は、各利用者がLM7を実
行した時のLM7の命令群中の各命令の実行回数をカウ
ントするためのものである。
行した時のLM7の命令群中の各命令の実行回数をカウ
ントするためのものである。
命令実行回数蓄積機構9は、命令実行回数カウント機構
8がカウントした各利用者の命令実行回数を各利用者ご
とに蓄積しておくためのものである。
8がカウントした各利用者の命令実行回数を各利用者ご
とに蓄積しておくためのものである。
SMIを最初にコンパイルする時は、ソース解析部3に
より解析した後、コンパイル時に収集された情報のみに
基づいて命令生成部4によりOMGを作成する。
より解析した後、コンパイル時に収集された情報のみに
基づいて命令生成部4によりOMGを作成する。
命令実行回数カウント機構8は、各利用者がLM7を実
行時に各命令が実行される都度、その回数を数え上げ、
その結果は、命令実行回数蓄積機構9が各利用者毎に蓄
積していく。
行時に各命令が実行される都度、その回数を数え上げ、
その結果は、命令実行回数蓄積機構9が各利用者毎に蓄
積していく。
SMIをコンパイラ2により再コンパイルするには、ソ
ース解析部3によりSMIを解析した後。
ース解析部3によりSMIを解析した後。
コンパイル時の情報ファイル5に収集された情報に加え
て命令実行回数蓄積11fJI9に蓄積された各利用者
の命令実行回数情報をも参照して命令生成部4により0
M6を作成する。
て命令実行回数蓄積11fJI9に蓄積された各利用者
の命令実行回数情報をも参照して命令生成部4により0
M6を作成する。
(実施例)
第2図は1本発明の1実施例構成を示す図である。
本実施例においては、プログラムの例として。
IF A=B THEN
文I
LSE
文2
l
というプログラムを用い、以下これをプログラムAと称
する。
する。
第2図において、21はプログラムAのSM(Sour
ce Module)、 22はコンパイラ、23は
ソース解析部、24は命令生成部、25はコンパイル時
の情報ファイル、26はプログラムAのOM(Obje
ct Module) 、 27はプログラムAのL
M(Load Module) + 28は命令実行
回数カウント機構。
ce Module)、 22はコンパイラ、23は
ソース解析部、24は命令生成部、25はコンパイル時
の情報ファイル、26はプログラムAのOM(Obje
ct Module) 、 27はプログラムAのL
M(Load Module) + 28は命令実行
回数カウント機構。
29は命令実行回数蓄積機構である。
プログラムAのS M (Source Module
) 21は。
) 21は。
高級言語で書かれたプログラムAの原始プログラムであ
る。
る。
コンパイラ22は、ソース解析部23及び命令生成部2
4からなり、5M21を0M26に翻訳する。
4からなり、5M21を0M26に翻訳する。
ソース解析部23は、5M21を解析するためのもので
ある。
ある。
命令生成部24は、0M26の命令群を生成するための
ものである。
ものである。
コンパイル時の情報ファイル25には、コンパイルに必
要な情報が蓄積されている。
要な情報が蓄積されている。
プログラムAのOM(Object Module)
26は。
26は。
プログラムAの3M21がコンパイルされた実行可能な
プログラムである。
プログラムである。
プログラムAのLM(Load Module) 27
は、利用者がコンピュータにロードして実行中のプログ
ラムである。
は、利用者がコンピュータにロードして実行中のプログ
ラムである。
命令実行回数カウント機構28は、利用者が1M27を
実行した時のLM27の命令群中の各命令の実行回数を
カウントするためのものである。
実行した時のLM27の命令群中の各命令の実行回数を
カウントするためのものである。
命令実行回数蓄積機構29は、命令実行回数カウント機
構28がカウントした命令実行回数を蓄積しておくため
のものである。
構28がカウントした命令実行回数を蓄積しておくため
のものである。
本実施例において、プログラムAの3M21は。
初めは従来例と同じく、コンパイル時の情報25のみに
店づいてコンパイルされて0M26となる。
店づいてコンパイルされて0M26となる。
0M26は、1M27としてコンピュータにロードされ
て実行される。この実行時に各命令の実行回数が命令実
行回数カウント機構28によりカウントされ、命令実行
回数蓄積機構29に?!i積されていく。
て実行される。この実行時に各命令の実行回数が命令実
行回数カウント機構28によりカウントされ、命令実行
回数蓄積機構29に?!i積されていく。
次に、プログラムAの3M21を再コンパイルする時に
は、コンパイル時の情報25と命令実行回数蓄積機構2
9に蓄積された情報とを参照してコンパイルする。
は、コンパイル時の情報25と命令実行回数蓄積機構2
9に蓄積された情報とを参照してコンパイルする。
前掲のプログラムA、即ち。
IF A=B THEN
文I
LSE
文2
Fl
というプログラムを用いて、以下説明する(第3図参照
)。
)。
命令実行回数蓄積機構29に蓄積された情報として文2
の実行頻度が高ければ、命令生成部24− の命令生成
論理1を用いて、第3図(a)に示した命令群を生成す
る。これにより8図中■で示した分岐命令の実行時間を
短縮することができる。
の実行頻度が高ければ、命令生成部24− の命令生成
論理1を用いて、第3図(a)に示した命令群を生成す
る。これにより8図中■で示した分岐命令の実行時間を
短縮することができる。
また、命令実行回数蓄積機構29に蓄積された情報とし
て文1の実行頻度が高ければ、命令生成部24の命令生
成論理2を用いて、第3図(b)に示した命令群を生成
する。これにより3図中■で示した分岐命令の実行時間
を短縮することができる。
て文1の実行頻度が高ければ、命令生成部24の命令生
成論理2を用いて、第3図(b)に示した命令群を生成
する。これにより3図中■で示した分岐命令の実行時間
を短縮することができる。
〔発明の効果〕
本発明では、命令生成条件に実行時の各命令の実行頻度
を盛り込むので、原始プログラムのコンパイルと実行を
繰り返す毎に、より最適な命令生成を実現し、より効率
の良いOM (Object Module)を生成す
ることができる。
を盛り込むので、原始プログラムのコンパイルと実行を
繰り返す毎に、より最適な命令生成を実現し、より効率
の良いOM (Object Module)を生成す
ることができる。
また、同一の原始プログラムから、各利用者の実行条件
に適した。異なったO M (Object Modu
le)を作成し、ソフトウェア製品の実行効率を上げる
ことができる。
に適した。異なったO M (Object Modu
le)を作成し、ソフトウェア製品の実行効率を上げる
ことができる。
第1図は本発明の基本構成を示す図、第2図は本発明の
1実施例構成を示す図、第3図は生成されるOMの命令
群の例を示す図、第4図は従来例を示す図である。 第1rjJにおいて。 1 : S M (Source Module)2:
コンパイラ 3:ソース解析部 4:命令生成部 5=コンパイル時の情報ファイル 6 + OM (Object Module)7 :
L M (Load Module)8:命令実行回
数カウント機構 9:命令実行回数蓄積機構 特許出願人 富士通株式会社(外1名)代理人弁理士
長谷用 文廣(外1名)主威フバろONシ會冷群0例 $ 3 国
1実施例構成を示す図、第3図は生成されるOMの命令
群の例を示す図、第4図は従来例を示す図である。 第1rjJにおいて。 1 : S M (Source Module)2:
コンパイラ 3:ソース解析部 4:命令生成部 5=コンパイル時の情報ファイル 6 + OM (Object Module)7 :
L M (Load Module)8:命令実行回
数カウント機構 9:命令実行回数蓄積機構 特許出願人 富士通株式会社(外1名)代理人弁理士
長谷用 文廣(外1名)主威フバろONシ會冷群0例 $ 3 国
Claims (1)
- 【特許請求の範囲】 コンパイラによる命令生成方式において、 原始プログラムからコンパイルされたオブジェクトモジ
ュール中の各命令の実行時の実行回数をカウントする命
令実行回数カウント機構(8)と、この命令実行回数カ
ウント機構(8)の結果を各利用者毎に蓄積していく命
令実行回数蓄積機構(9)とを設け、 原始プログラムをコンパイルする時に命令実行回数蓄積
機構(9)に蓄積された各利用者の命令実行回数情報を
参照して実行回数の多い命令については処理時間を短縮
する最適化を行い、命令生成方法を変更することを特徴
とするダイナミック命令生成方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11157287A JPS63276127A (ja) | 1987-05-07 | 1987-05-07 | ダイナミック命令生成方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11157287A JPS63276127A (ja) | 1987-05-07 | 1987-05-07 | ダイナミック命令生成方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPS63276127A true JPS63276127A (ja) | 1988-11-14 |
Family
ID=14564777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11157287A Pending JPS63276127A (ja) | 1987-05-07 | 1987-05-07 | ダイナミック命令生成方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS63276127A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07160499A (ja) * | 1993-12-09 | 1995-06-23 | Nec Corp | 多方向分岐命令の最適化方式 |
WO2000003322A1 (fr) * | 1998-07-10 | 2000-01-20 | Sony Corporation | Procede et appareil de compilation |
US6848098B1 (en) | 1999-11-18 | 2005-01-25 | Fujitsu Limited | Process and apparatus for optimizing program written in interpretive language for each callable program part base on frequency of executions |
-
1987
- 1987-05-07 JP JP11157287A patent/JPS63276127A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07160499A (ja) * | 1993-12-09 | 1995-06-23 | Nec Corp | 多方向分岐命令の最適化方式 |
WO2000003322A1 (fr) * | 1998-07-10 | 2000-01-20 | Sony Corporation | Procede et appareil de compilation |
US6848098B1 (en) | 1999-11-18 | 2005-01-25 | Fujitsu Limited | Process and apparatus for optimizing program written in interpretive language for each callable program part base on frequency of executions |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5586328A (en) | Module dependency based incremental compiler and method | |
Click | Global code motion/global value numbering | |
Hermenegildo et al. | The CIAO multi-dialect compiler and system: An experimentation workbench for future (C) LP systems | |
JP3290567B2 (ja) | プロファイル計装方法 | |
EP1164478A2 (en) | Method and apparatus for resolving data references in generated code | |
US20040025152A1 (en) | Compiling method, apparatus, and program | |
Agrawal et al. | Interprocedural compilation of irregular applications for distributed memory machines | |
Cooper et al. | Building a control-flow graph from scheduled assembly code | |
JP3802058B2 (ja) | ソフトウェア・コンパイル・ユニットを条件付きでコンパイルするシステム、方法およびコンパイラ・プリプロセッサ | |
CN112114817B (zh) | 基于cobol语言的数据字典字段信息获取方法及装置 | |
Andersen | Partial evaluation of C and automatic compiler generation | |
Sathyanathan et al. | Incremental whole program optimization and compilation | |
US5134705A (en) | System and method for concurrency simulation | |
US20170206068A1 (en) | Program optimization based on directives for intermediate code | |
Guyer et al. | Optimizing the use of high performance software libraries | |
Shei et al. | MATLAB parallelization through scalarization | |
JPS63276127A (ja) | ダイナミック命令生成方式 | |
Basso et al. | Optimizing Parallel Java Streams | |
Dybvig et al. | Destination-driven code generation | |
Wiedmann | A performance comparison between an APL interpreter and compiler | |
JPH0683597A (ja) | オブジェクト指向プログラム開発装置およびオブジェクト指向プログラム開発方法 | |
JP3018783B2 (ja) | コンパイル方式 | |
Teodosiu | Hare: An optimizing portable compiler for Scheme | |
Ching | An APL/370 compiler and some performance comparisons with APL interpreter and FORTRAN | |
Malik et al. | Memory management of safety-critical hard real-time systems designed in SystemJ |