JPH0773044A - 最適化コンパイル方法及び最適化コンパイル装置 - Google Patents
最適化コンパイル方法及び最適化コンパイル装置Info
- Publication number
- JPH0773044A JPH0773044A JP5218622A JP21862293A JPH0773044A JP H0773044 A JPH0773044 A JP H0773044A JP 5218622 A JP5218622 A JP 5218622A JP 21862293 A JP21862293 A JP 21862293A JP H0773044 A JPH0773044 A JP H0773044A
- Authority
- JP
- Japan
- Prior art keywords
- execution time
- object program
- execution
- program
- optimization
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【目的】 実行時間が最も短くなるオブジェクト・プロ
グラムを生成する。 【構成】 コンパイラ23は最適化の指令22を受け、
適用可能な最適化方法の有無を検討する。適用可能な全
ての最適化の操作が実行されれば、全ての最適化操作に
対応してコードが生成される。このコードはオブジェク
ト・プログラム候補24として位置づけられる。オブジ
ェクト・プログラム候補24はその全てが実行用データ
25と共に実行部26aに与えられ、いずれも実行され
る。その実行に要した時間(実行時間)が計測されて実
行時間記憶手段27へと記憶される。そして選択手段2
8によって、実行時間が最も短いオブジェクト・プログ
ラム候補24がオブジェクト・プログラム29として選
択され、確定する。
グラムを生成する。 【構成】 コンパイラ23は最適化の指令22を受け、
適用可能な最適化方法の有無を検討する。適用可能な全
ての最適化の操作が実行されれば、全ての最適化操作に
対応してコードが生成される。このコードはオブジェク
ト・プログラム候補24として位置づけられる。オブジ
ェクト・プログラム候補24はその全てが実行用データ
25と共に実行部26aに与えられ、いずれも実行され
る。その実行に要した時間(実行時間)が計測されて実
行時間記憶手段27へと記憶される。そして選択手段2
8によって、実行時間が最も短いオブジェクト・プログ
ラム候補24がオブジェクト・プログラム29として選
択され、確定する。
Description
【0001】
【産業上の利用分野】この発明は、プログラミング言語
を用いて記述されたソースプログラムからオブジェクト
・プログラムを生成する技術に関し、特に生成されたオ
ブジェクト・プログラムの実行時間が最適となるように
考慮されるオブジェクト・プログラムの生成を行う技術
に関するものである。
を用いて記述されたソースプログラムからオブジェクト
・プログラムを生成する技術に関し、特に生成されたオ
ブジェクト・プログラムの実行時間が最適となるように
考慮されるオブジェクト・プログラムの生成を行う技術
に関するものである。
【0002】
【従来の技術】従来から、ソースプログラムからオブジ
ェクト・プログラムへの変換(以下「コンパイル」と記
す)に関して、オブジェクト・プログラムの実行時間が
短くなるような最適化コンパイルを行う最適化コンパイ
ラが知られている。
ェクト・プログラムへの変換(以下「コンパイル」と記
す)に関して、オブジェクト・プログラムの実行時間が
短くなるような最適化コンパイルを行う最適化コンパイ
ラが知られている。
【0003】例えば大域的最適化として、入力されたソ
ースプログラムを解析し、制御やデータの流れに関する
情報を収集し、一部の変数のレジスタへの割り付けや、
共通式の削除、ループ内不変式のループ外への移動等が
行われる。このような技術は特開昭61−7946号公
報の「発明の背景」及び特開昭61−82243号公報
の「背景技術の問題点」において開示されている。
ースプログラムを解析し、制御やデータの流れに関する
情報を収集し、一部の変数のレジスタへの割り付けや、
共通式の削除、ループ内不変式のループ外への移動等が
行われる。このような技術は特開昭61−7946号公
報の「発明の背景」及び特開昭61−82243号公報
の「背景技術の問題点」において開示されている。
【0004】あるいは局所的最適化の一種であるのぞき
穴最適化として、冗長な命令の削除や、生成されたオブ
ジェクト・プログラムを実行するべき計算機(以下「目
的機械」と記す)の特徴に適した命令の利用等が採用さ
れている。
穴最適化として、冗長な命令の削除や、生成されたオブ
ジェクト・プログラムを実行するべき計算機(以下「目
的機械」と記す)の特徴に適した命令の利用等が採用さ
れている。
【0005】しかし、このように静的な情報だけを用い
てコンパイルの最適化を行った場合には、例えばレジス
タの割り付けにおいて問題が生じる。一般にコンピュー
タにおけるレジスタの個数は限られており、コンパイラ
がソースプログラム上での出現頻度、ループのネストの
深さ等を基にして、参照頻度が高いと推定される変数を
重点的にレジスタに割り付ける。しかし、これでは実際
に実行した場合において参照頻度が高い変数が必ずしも
レジスタに割り付けられない場合が生じる。このような
場合の有無により、生成されたオブジェクト・プログラ
ムの実行時間には大きな差が生じることになる。
てコンパイルの最適化を行った場合には、例えばレジス
タの割り付けにおいて問題が生じる。一般にコンピュー
タにおけるレジスタの個数は限られており、コンパイラ
がソースプログラム上での出現頻度、ループのネストの
深さ等を基にして、参照頻度が高いと推定される変数を
重点的にレジスタに割り付ける。しかし、これでは実際
に実行した場合において参照頻度が高い変数が必ずしも
レジスタに割り付けられない場合が生じる。このような
場合の有無により、生成されたオブジェクト・プログラ
ムの実行時間には大きな差が生じることになる。
【0006】このような問題に対処するため、静的な情
報以外の情報をも用いた最適化コンパイルに関する技術
が、例えば特開昭61−7946号公報、特開昭61−
82243号公報において開示されている。図7は従来
の最適化コンパイル方式を示す概念図である。コンパイ
ルの対象となるソースプログラム1が準備され、最適化
の指令2と共に第1コンパイラ3に与えられる。第1コ
ンパイラ3はソースプログラム1をコンパイルすること
により第1オブジェクト・プログラム4を生成する。こ
れは最終的に求めるべき、即ち目的機械において用いら
れるオブジェクト・プログラムではなく、中間結果とし
てのオブジェクト・プログラムである。
報以外の情報をも用いた最適化コンパイルに関する技術
が、例えば特開昭61−7946号公報、特開昭61−
82243号公報において開示されている。図7は従来
の最適化コンパイル方式を示す概念図である。コンパイ
ルの対象となるソースプログラム1が準備され、最適化
の指令2と共に第1コンパイラ3に与えられる。第1コ
ンパイラ3はソースプログラム1をコンパイルすること
により第1オブジェクト・プログラム4を生成する。こ
れは最終的に求めるべき、即ち目的機械において用いら
れるオブジェクト・プログラムではなく、中間結果とし
てのオブジェクト・プログラムである。
【0007】第1オブジェクト・プログラム4は、実行
用データ5と共に実行部6に与えられ、ここで実行され
る。この時に、静的な情報のみならず、変数の参照頻度
等の情報をも含んだ実行時情報7が求められる。
用データ5と共に実行部6に与えられ、ここで実行され
る。この時に、静的な情報のみならず、変数の参照頻度
等の情報をも含んだ実行時情報7が求められる。
【0008】ソースプログラム1は第2コンパイラ8に
与えられて再度コンパイルが行われる。この際、先程求
められた実行時情報7も第2コンパイラに与えられ、変
数の参照頻度等をも用いて最適化されたコンパイルが行
われることになる。このため、実際に実行することによ
って確認された参照頻度に基づいて変数のレジスタへの
割り付けが行われる等し、静的な情報のみを考慮してコ
ンパイルを行った場合と比較して実行時間の短いオブジ
ェクト・プログラムを得ることができる。
与えられて再度コンパイルが行われる。この際、先程求
められた実行時情報7も第2コンパイラに与えられ、変
数の参照頻度等をも用いて最適化されたコンパイルが行
われることになる。このため、実際に実行することによ
って確認された参照頻度に基づいて変数のレジスタへの
割り付けが行われる等し、静的な情報のみを考慮してコ
ンパイルを行った場合と比較して実行時間の短いオブジ
ェクト・プログラムを得ることができる。
【0009】第2コンパイラ8は第1コンパイラ3と兼
用することができる。
用することができる。
【0010】
【発明が解決しようとする課題】しかし、このように変
数の参照頻度をも考慮してコンパイルを行った場合にお
いても、ハードウェア・アーキテクチャ上の制約から割
り付け可能な空きレジスタを必要な数だけ確保できない
場合には問題が生じる。例えば複数の変数の参照頻度が
同一であった場合には、これらの変数のいずれをレジス
タに割り付けるのが最適なコンパイルであるのか否かを
一意的に決定することはできない。このような場合には
特定の変数を優先的にレジスタに割り付けるのか、無作
為に変数を割り付けるのか、いずれが実行時間の短縮に
結びつくのかを推定して選択せねばならず、結果的に必
ずしも最適なコンパイルを行うことができないという問
題点があった。
数の参照頻度をも考慮してコンパイルを行った場合にお
いても、ハードウェア・アーキテクチャ上の制約から割
り付け可能な空きレジスタを必要な数だけ確保できない
場合には問題が生じる。例えば複数の変数の参照頻度が
同一であった場合には、これらの変数のいずれをレジス
タに割り付けるのが最適なコンパイルであるのか否かを
一意的に決定することはできない。このような場合には
特定の変数を優先的にレジスタに割り付けるのか、無作
為に変数を割り付けるのか、いずれが実行時間の短縮に
結びつくのかを推定して選択せねばならず、結果的に必
ずしも最適なコンパイルを行うことができないという問
題点があった。
【0011】しかも目的機械のアーキテクチャが複雑な
場合には、この割り付けの選択はオブジェクト・プログ
ラムの実行時間を大きく左右し、上記問題点を一層悪化
させる可能性がある。
場合には、この割り付けの選択はオブジェクト・プログ
ラムの実行時間を大きく左右し、上記問題点を一層悪化
させる可能性がある。
【0012】この発明は上記の問題点を解決するために
なされたもので、変数の参照頻度が同一であり、割り付
けの選択が困難な場合でも一意的にオブジェクト・プロ
グラムの最適化を行うことができる最適化コンパイル方
法及び最適化コンパイル装置を提供することを目的とす
る。
なされたもので、変数の参照頻度が同一であり、割り付
けの選択が困難な場合でも一意的にオブジェクト・プロ
グラムの最適化を行うことができる最適化コンパイル方
法及び最適化コンパイル装置を提供することを目的とす
る。
【0013】
【課題を解決するための手段】この発明にかかる最適化
コンパイル方法は、(a)プログラミング言語を用いて
記述されたソースプログラムを得る工程と、(b)前記
ソースプログラムを解析して所定の最適化操作を行う工
程と、(c)前記所定の最適化操作に従って少なくとも
ひとつの第1オブジェクト・プログラムを得る工程と、
(d)前記第1オブジェクト・プログラムの少なくとも
一つの実行時間を測定する工程と、(e)前記第1オブ
ジェクト・プログラムの中から、その前記実行時間の最
も短いものを第2オブジェクト・プログラムとして選択
する工程と、を備える。
コンパイル方法は、(a)プログラミング言語を用いて
記述されたソースプログラムを得る工程と、(b)前記
ソースプログラムを解析して所定の最適化操作を行う工
程と、(c)前記所定の最適化操作に従って少なくとも
ひとつの第1オブジェクト・プログラムを得る工程と、
(d)前記第1オブジェクト・プログラムの少なくとも
一つの実行時間を測定する工程と、(e)前記第1オブ
ジェクト・プログラムの中から、その前記実行時間の最
も短いものを第2オブジェクト・プログラムとして選択
する工程と、を備える。
【0014】望ましくは、前記工程(d)において前記
第1オブジェクト・プログラムの全ての実行時間が測定
される。
第1オブジェクト・プログラムの全ての実行時間が測定
される。
【0015】また望ましくは、前記工程(d)は、(d
−1)前記第1オブジェクト・プログラムを実行してそ
の実行時間を測定する工程を有する。
−1)前記第1オブジェクト・プログラムを実行してそ
の実行時間を測定する工程を有する。
【0016】あるいは、前記工程(d)は、(d−2)
前記第1オブジェクト・プログラムの実行をシミュレー
トする工程と、(d−3)前記シミュレートによって得
られた前記実行時間を測定する工程とを有する。
前記第1オブジェクト・プログラムの実行をシミュレー
トする工程と、(d−3)前記シミュレートによって得
られた前記実行時間を測定する工程とを有する。
【0017】望ましくは、前記工程(c)の後で、かつ
前記工程(d)の前において行われる(f)前記第1オ
ブジェクト・プログラムにおいて、所定の条件を満足す
るもののみを選択する工程を更に備える。そして前記工
程(f)において選択された前記第1オブジェクト・プ
ログラムのみが前記工程(d)において前記実行時間が
測定される。
前記工程(d)の前において行われる(f)前記第1オ
ブジェクト・プログラムにおいて、所定の条件を満足す
るもののみを選択する工程を更に備える。そして前記工
程(f)において選択された前記第1オブジェクト・プ
ログラムのみが前記工程(d)において前記実行時間が
測定される。
【0018】この発明にかかる最適化コンパイル装置
は、(a)プログラミング言語を用いて記述されたソー
スプログラムに対し、前記ソースプログラムを解析して
所定の最適化操作を行い、前記所定の最適化操作に従っ
て少なくともひとつの第1オブジェクト・プログラムを
得るコンパイラと、(b)前記第1オブジェクト・プロ
グラムの少なくとも一つの実行時間を記憶する実行時間
記憶装置と、(c)前記第1オブジェクト・プログラム
の中から、その前記実行時間の最も短いものを第2オブ
ジェクト・プログラムとして選択する第1選択手段と、
を備える。
は、(a)プログラミング言語を用いて記述されたソー
スプログラムに対し、前記ソースプログラムを解析して
所定の最適化操作を行い、前記所定の最適化操作に従っ
て少なくともひとつの第1オブジェクト・プログラムを
得るコンパイラと、(b)前記第1オブジェクト・プロ
グラムの少なくとも一つの実行時間を記憶する実行時間
記憶装置と、(c)前記第1オブジェクト・プログラム
の中から、その前記実行時間の最も短いものを第2オブ
ジェクト・プログラムとして選択する第1選択手段と、
を備える。
【0019】望ましくは、前記実行時間記憶装置は(b
−1)前記第1オブジェクト・プログラムを実行して前
記実行時間を測定する実行部と、(b−2)前記実行時
間を記憶する実行時間記憶手段と、を有する。
−1)前記第1オブジェクト・プログラムを実行して前
記実行時間を測定する実行部と、(b−2)前記実行時
間を記憶する実行時間記憶手段と、を有する。
【0020】あるいは望ましくは、前記実行時間記憶装
置は(b−3)前記第1オブジェクト・プログラムの実
行をシミュレートしてその実行時間を求めるシミュレー
ション手段と、(b−4)前記実行時間を記憶する実行
時間記憶手段と、を有する。
置は(b−3)前記第1オブジェクト・プログラムの実
行をシミュレートしてその実行時間を求めるシミュレー
ション手段と、(b−4)前記実行時間を記憶する実行
時間記憶手段と、を有する。
【0021】あるいは望ましくは、前記実行時間記憶装
置は(b−5)前記第1オブジェクト・プログラムのう
ち所定の条件を満足するもののみを選択する第2選択手
段と、(b−6)前記工程(b−5)によって選択され
た前記第1オブジェクト・プログラムを実行して前記実
行時間を測定する実行部と、(b−7)前記実行時間を
記憶する実行時間記憶手段と、を有する。
置は(b−5)前記第1オブジェクト・プログラムのう
ち所定の条件を満足するもののみを選択する第2選択手
段と、(b−6)前記工程(b−5)によって選択され
た前記第1オブジェクト・プログラムを実行して前記実
行時間を測定する実行部と、(b−7)前記実行時間を
記憶する実行時間記憶手段と、を有する。
【0022】
【作用】この発明にかかる最適化コンパイル方法におい
ては、第1オブジェクト・プログラムの実行時間が求め
られるので、これを比較することにより最も実行時間の
短い第1オブジェクト・プログラムを第2オブジェクト
・プログラムとして選択することができる。
ては、第1オブジェクト・プログラムの実行時間が求め
られるので、これを比較することにより最も実行時間の
短い第1オブジェクト・プログラムを第2オブジェクト
・プログラムとして選択することができる。
【0023】第1オブジェクト・プログラムは所定の最
適化操作に基づいて生成されているので、これらの全て
の実行時間を測定することにより、所定の最適化操作の
全ての中で最も実行時間の短いものを第2オブジェクト
・プログラムとして選択することができる。
適化操作に基づいて生成されているので、これらの全て
の実行時間を測定することにより、所定の最適化操作の
全ての中で最も実行時間の短いものを第2オブジェクト
・プログラムとして選択することができる。
【0024】実行時間の測定は、第1オブジェクト・プ
ログラムを作成した計算機自身が第1オブジェクト・プ
ログラムを実行してその実行時間を測定してもよい。
ログラムを作成した計算機自身が第1オブジェクト・プ
ログラムを実行してその実行時間を測定してもよい。
【0025】しかし第1オブジェクト・プログラムを生
成した計算機において目的機械における実行をシミュレ
ートすることができる。
成した計算機において目的機械における実行をシミュレ
ートすることができる。
【0026】また、所定の条件を満足していない第1オ
ブジェクト・プログラムの実行時間の測定を省略するこ
ともできる。
ブジェクト・プログラムの実行時間の測定を省略するこ
ともできる。
【0027】この発明にかかる最適化コンパイル装置に
おいては、実行時間記憶装置が第1オブジェクト・プロ
グラムの実行時間を記憶するので、これを基に第1選択
手段が第2オブジェクト・プログラムを選択する。
おいては、実行時間記憶装置が第1オブジェクト・プロ
グラムの実行時間を記憶するので、これを基に第1選択
手段が第2オブジェクト・プログラムを選択する。
【0028】この実行時間は実行によって測定された
り、シミュレーション手段によって求められたりする。
り、シミュレーション手段によって求められたりする。
【0029】第2選択手段は、第1オブジェクト・プロ
グラムの中から、所定の条件を満足するもののみを選択
し、この選択された第1オブジェクト・プログラムの実
行時間のみが実行時間記憶装置において記憶される。
グラムの中から、所定の条件を満足するもののみを選択
し、この選択された第1オブジェクト・プログラムの実
行時間のみが実行時間記憶装置において記憶される。
【0030】
第1実施例:図1はこの発明の第1実施例を示す概念図
であり、図2はその手順を示すフローチャートである。
コンパイラ23にはソースプログラム21が入力され
る。ステップS1においてコンパイラ23はソースプロ
グラム21の構文解析等を行い、これにより制御やデー
タの流れの解析を行う。この際、ソースプログラム21
の静的な情報が得られる。
であり、図2はその手順を示すフローチャートである。
コンパイラ23にはソースプログラム21が入力され
る。ステップS1においてコンパイラ23はソースプロ
グラム21の構文解析等を行い、これにより制御やデー
タの流れの解析を行う。この際、ソースプログラム21
の静的な情報が得られる。
【0031】コンパイラ23は、その起動時に実行モー
ド指令として最適化の指令22が与えられており、コン
パイルの最適化を行う。ステップS2においては適用可
能な最適化方法の有無を検討する。適用可能な最適化方
法、例えば一部の変数のレジスタへの割り付け、共通式
の削除等の大域的最適化や冗長な命令の削除等ののぞき
穴最適化が有ればステップS3に進み、そのような最適
化操作を行う。このような最適化方法が複数ある場合
や、最適化方法を適用する対象が複数あれば、その全て
について最適化操作が行われる。
ド指令として最適化の指令22が与えられており、コン
パイルの最適化を行う。ステップS2においては適用可
能な最適化方法の有無を検討する。適用可能な最適化方
法、例えば一部の変数のレジスタへの割り付け、共通式
の削除等の大域的最適化や冗長な命令の削除等ののぞき
穴最適化が有ればステップS3に進み、そのような最適
化操作を行う。このような最適化方法が複数ある場合
や、最適化方法を適用する対象が複数あれば、その全て
について最適化操作が行われる。
【0032】例えば、「発明が解決しようとする課題」
において説明したように、複数の変数の参照頻度が同一
であった場合には、これらの変数のいずれをレジスタに
割り付けるのが最適なコンパイルであるのか否かを一意
的に決定することはできない。この発明ではこのような
場合に同一の参照頻度を持つ複数の変数の全てに関して
最適化を行う。
において説明したように、複数の変数の参照頻度が同一
であった場合には、これらの変数のいずれをレジスタに
割り付けるのが最適なコンパイルであるのか否かを一意
的に決定することはできない。この発明ではこのような
場合に同一の参照頻度を持つ複数の変数の全てに関して
最適化を行う。
【0033】ステップS2、S3の繰り返しによって適
用可能な全ての最適化の操作が実行されれば、ステップ
S4に進んでコード生成が行われる。このとき、ステッ
プS2、S3で操作された全ての最適化操作に対応して
コードが生成される。従って、最適化操作が複数存在し
た場合にはコードが複数存在することになる。このコー
ドはいずれもオブジェクト・プログラムとして実行する
ことが可能であるため、ここではオブジェクト・プログ
ラム候補24として位置づけられる。後述するように、
最終的にはこのオブジェクト・プログラム候補24から
一つを選択してオブジェクト・プログラム29を確定す
ることになる。
用可能な全ての最適化の操作が実行されれば、ステップ
S4に進んでコード生成が行われる。このとき、ステッ
プS2、S3で操作された全ての最適化操作に対応して
コードが生成される。従って、最適化操作が複数存在し
た場合にはコードが複数存在することになる。このコー
ドはいずれもオブジェクト・プログラムとして実行する
ことが可能であるため、ここではオブジェクト・プログ
ラム候補24として位置づけられる。後述するように、
最終的にはこのオブジェクト・プログラム候補24から
一つを選択してオブジェクト・プログラム29を確定す
ることになる。
【0034】もしステップS5においてオブジェクト・
プログラム候補24が複数でなく、単数であると判断さ
れた場合にはステップS8に進み、その単数のオブジェ
クト・プログラム候補24がオブジェクト・プログラム
29として選択されることになる。
プログラム候補24が複数でなく、単数であると判断さ
れた場合にはステップS8に進み、その単数のオブジェ
クト・プログラム候補24がオブジェクト・プログラム
29として選択されることになる。
【0035】一方オブジェクト・プログラム候補24が
複数存在する場合にはステップS6に進む。図1ではこ
のようにしてオブジェクト・プログラム候補24が複数
存在する場合を示している。これらの複数のオブジェク
ト・プログラム候補24は実行用データ25と共に全て
実行部26aに与えられ、いずれも実行される(ステッ
プS6)。ここで実行部26aはコンパイルを行う計算
機システムにおけるオブジェクト・プログラム候補24
の実行を行う。
複数存在する場合にはステップS6に進む。図1ではこ
のようにしてオブジェクト・プログラム候補24が複数
存在する場合を示している。これらの複数のオブジェク
ト・プログラム候補24は実行用データ25と共に全て
実行部26aに与えられ、いずれも実行される(ステッ
プS6)。ここで実行部26aはコンパイルを行う計算
機システムにおけるオブジェクト・プログラム候補24
の実行を行う。
【0036】このようにして全てのオブジェクト・プロ
グラム候補24に関して実行がなされ、その実行に要し
た時間(実行時間)が計測されて実行時間記憶手段27
へと記憶される。そして選択手段28によって、実行時
間が最も短いオブジェクト・プログラム候補24が選択
され(ステップS7)、オブジェクト・プログラム29
として確定する(ステップS8)。
グラム候補24に関して実行がなされ、その実行に要し
た時間(実行時間)が計測されて実行時間記憶手段27
へと記憶される。そして選択手段28によって、実行時
間が最も短いオブジェクト・プログラム候補24が選択
され(ステップS7)、オブジェクト・プログラム29
として確定する(ステップS8)。
【0037】第1実施例では適用可能な最適化操作を全
て行い、それぞれに対応してオブジェクト・プログラム
候補24を作成し、それぞれの実行時間を計測して最も
実行時間の短いオブジェクト・プログラム候補24をオ
ブジェクト・プログラム29として選択するので、オブ
ジェクト・プログラム29は最適化方法の中で最も実行
時間を短くするものが適用・操作されたことになる。従
って、必ず結果的に最適なコンパイルを行うことができ
るという効果が得られる。
て行い、それぞれに対応してオブジェクト・プログラム
候補24を作成し、それぞれの実行時間を計測して最も
実行時間の短いオブジェクト・プログラム候補24をオ
ブジェクト・プログラム29として選択するので、オブ
ジェクト・プログラム29は最適化方法の中で最も実行
時間を短くするものが適用・操作されたことになる。従
って、必ず結果的に最適なコンパイルを行うことができ
るという効果が得られる。
【0038】第2実施例:第1実施例では、実行部26
aはコンパイルを行う計算機システムにおけるオブジェ
クト・プログラム候補24の実行を行う。しかし、コン
パイルを行う計算機システム(以下「コンパイル計算機
システム」と記す)と、最終的に求めたオブジェクト・
プログラム29を実行する目的機械とが異なる場合も考
えられる。このような場合に、コンパイル計算機システ
ムにおいて実行される実行部26aにおける実行時間が
最も短いオブジェクト・プログラム候補24を、オブジ
ェクト・プログラム29として特定しても、目的機械に
おいてオブジェクト・プログラム29が他のオブジェク
ト・プログラム候補24よりも実行時間が短くなるとは
限らない。
aはコンパイルを行う計算機システムにおけるオブジェ
クト・プログラム候補24の実行を行う。しかし、コン
パイルを行う計算機システム(以下「コンパイル計算機
システム」と記す)と、最終的に求めたオブジェクト・
プログラム29を実行する目的機械とが異なる場合も考
えられる。このような場合に、コンパイル計算機システ
ムにおいて実行される実行部26aにおける実行時間が
最も短いオブジェクト・プログラム候補24を、オブジ
ェクト・プログラム29として特定しても、目的機械に
おいてオブジェクト・プログラム29が他のオブジェク
ト・プログラム候補24よりも実行時間が短くなるとは
限らない。
【0039】第2実施例では、このように目的機械とコ
ンパイル計算機システムとが異なる場合においても、目
的機械において実行時間が最も短くなるようなオブジェ
クト・プログラム29を、コンパイル計算機システムに
おいて選択し、特定することができるようにするもので
ある。
ンパイル計算機システムとが異なる場合においても、目
的機械において実行時間が最も短くなるようなオブジェ
クト・プログラム29を、コンパイル計算機システムに
おいて選択し、特定することができるようにするもので
ある。
【0040】図3はこの発明の第2実施例を示す概念図
であり、図4はその手順の一部を示すフローチャートで
ある。図3を図1と比較することで容易に判断できるよ
うに、第2実施例においては第1実施例の実行部26a
をシミュレーションプログラム26bに置換したものと
なっている。即ち、第1実施例と同様にして生成された
オブジェクト・プログラム候補24と、実行用データ2
5が与えられ、シミュレーションプログラム26bによ
り目的機械におけるオブジェクト・プログラム候補24
の実行がシミュレートされる。
であり、図4はその手順の一部を示すフローチャートで
ある。図3を図1と比較することで容易に判断できるよ
うに、第2実施例においては第1実施例の実行部26a
をシミュレーションプログラム26bに置換したものと
なっている。即ち、第1実施例と同様にして生成された
オブジェクト・プログラム候補24と、実行用データ2
5が与えられ、シミュレーションプログラム26bによ
り目的機械におけるオブジェクト・プログラム候補24
の実行がシミュレートされる。
【0041】シミュレーションプログラム26b自身は
コンパイル計算機システムで実行されるものの、その実
行内容は目的機械におけるオブジェクト・プログラム候
補24の実行を実クロック毎にシミュレーションするも
のである。従って、シミュレーションプログラム26b
の結果として、目的機械においてオブジェクト・プログ
ラム候補24が必要とする実行時間が求められる。
コンパイル計算機システムで実行されるものの、その実
行内容は目的機械におけるオブジェクト・プログラム候
補24の実行を実クロック毎にシミュレーションするも
のである。従って、シミュレーションプログラム26b
の結果として、目的機械においてオブジェクト・プログ
ラム候補24が必要とする実行時間が求められる。
【0042】第2実施例の手順は、図2に示された第1
実施例の手順と基本的には同様である。第2実施例にお
けるステップS6の詳細が図4のフローチャートに示さ
れているが、その他の手順については図2に示されたフ
ローチャートと同一である。
実施例の手順と基本的には同様である。第2実施例にお
けるステップS6の詳細が図4のフローチャートに示さ
れているが、その他の手順については図2に示されたフ
ローチャートと同一である。
【0043】ステップS61において、オブジェクト・
プログラム候補24の実行シミュレーションが開始され
る。そしてステップS62に進み、全てのオブジェクト
・プログラム候補24に関し、実クロック毎のシミュレ
ーションを行う。この結果、目的機械におけるオブジェ
クト・プログラム候補24の実行時間が得られる(ステ
ップS63)。
プログラム候補24の実行シミュレーションが開始され
る。そしてステップS62に進み、全てのオブジェクト
・プログラム候補24に関し、実クロック毎のシミュレ
ーションを行う。この結果、目的機械におけるオブジェ
クト・プログラム候補24の実行時間が得られる(ステ
ップS63)。
【0044】このようにして実行時間が求められるとス
テップ64を以てステップS6が終了し、ステップS7
に進む。この後の手順は第1実施例と同様であり、実行
時間の最も短いオブジェクト・プログラム候補24がオ
ブジェクト・プログラム29として選択され、確定す
る。
テップ64を以てステップS6が終了し、ステップS7
に進む。この後の手順は第1実施例と同様であり、実行
時間の最も短いオブジェクト・プログラム候補24がオ
ブジェクト・プログラム29として選択され、確定す
る。
【0045】第2実施例においては、オブジェクト・プ
ログラム候補24の目的機械における実行時間をコンパ
イル計算機システムにおいてシミュレートすることによ
って求める。このため、目的機械と異なるコンパイル計
算機システムにおいて、目的機械に対応して最適なオブ
ジェクト・プログラム29を選択して特定することがで
きるという効果がある。
ログラム候補24の目的機械における実行時間をコンパ
イル計算機システムにおいてシミュレートすることによ
って求める。このため、目的機械と異なるコンパイル計
算機システムにおいて、目的機械に対応して最適なオブ
ジェクト・プログラム29を選択して特定することがで
きるという効果がある。
【0046】第3実施例:オブジェクト・プログラム候
補24からオブジェクト・プログラム29を選択する
際、2段階に選択することもできる。例えばコードサイ
ズに関して限定条件が存在する場合には、この条件を満
足しないオブジェクト・プログラム候補24をオブジェ
クト・プログラム29として選択すべきではない。この
ため、オブジェクト・プログラム候補24の実行に先立
ち、予めこのような限定条件を満足するもののみを第1
段階として選択しておき、第1段階において選択された
オブジェクト・プログラム候補24のみを実行部26a
において実行させる。そして第1実施例と同様にして実
行時間を以てオブジェクト・プログラム29を第2段階
において選択することができる。
補24からオブジェクト・プログラム29を選択する
際、2段階に選択することもできる。例えばコードサイ
ズに関して限定条件が存在する場合には、この条件を満
足しないオブジェクト・プログラム候補24をオブジェ
クト・プログラム29として選択すべきではない。この
ため、オブジェクト・プログラム候補24の実行に先立
ち、予めこのような限定条件を満足するもののみを第1
段階として選択しておき、第1段階において選択された
オブジェクト・プログラム候補24のみを実行部26a
において実行させる。そして第1実施例と同様にして実
行時間を以てオブジェクト・プログラム29を第2段階
において選択することができる。
【0047】図5はこの発明の第3実施例を示す概念図
であり、図6はその手順を示すフローチャートである。
図5を図1と比較することで容易に判断できるように、
第3実施例においては第1実施例の実行部26aに与え
るオブジェクト・プログラム候補24を選択手段30に
おいて一旦選択している。選択手段30における選択の
条件は最適化の指令22から与えられる。ここで選択さ
れたオブジェクト・プログラム候補24のみが、実行用
データ25と共に実行部26aに与えられて実行され
る。そして更に選択手段28において唯一のオブジェク
ト・プログラム候補24がオブジェクト・プログラム2
9として選択され、確定する。この選択手段28におけ
る選択の基準は、第1実施例と同様に実行時間が最短で
あるか否かということである。
であり、図6はその手順を示すフローチャートである。
図5を図1と比較することで容易に判断できるように、
第3実施例においては第1実施例の実行部26aに与え
るオブジェクト・プログラム候補24を選択手段30に
おいて一旦選択している。選択手段30における選択の
条件は最適化の指令22から与えられる。ここで選択さ
れたオブジェクト・プログラム候補24のみが、実行用
データ25と共に実行部26aに与えられて実行され
る。そして更に選択手段28において唯一のオブジェク
ト・プログラム候補24がオブジェクト・プログラム2
9として選択され、確定する。この選択手段28におけ
る選択の基準は、第1実施例と同様に実行時間が最短で
あるか否かということである。
【0048】図6に示されたフローチャートで示される
手順は、図2に示された第1実施例に関するフローチャ
ートのステップS5とステップS6の間にステップS9
が介在した手順となっている。更にステップS6がステ
ップS61と置換されている。ステップS9においては
選択手段30におけるオブジェクト・プログラム候補2
4の選択が行われ、ステップS60においてはオブジェ
クト・プログラム候補24の全てではなく、ステップ9
において選択されたオブジェクト・プログラム候補24
のみが実行される。
手順は、図2に示された第1実施例に関するフローチャ
ートのステップS5とステップS6の間にステップS9
が介在した手順となっている。更にステップS6がステ
ップS61と置換されている。ステップS9においては
選択手段30におけるオブジェクト・プログラム候補2
4の選択が行われ、ステップS60においてはオブジェ
クト・プログラム候補24の全てではなく、ステップ9
において選択されたオブジェクト・プログラム候補24
のみが実行される。
【0049】第3実施例においてはオブジェクト・プロ
グラム候補24からオブジェクト・プログラム29を選
択するにあたり、2段階に選択を行うので、単に実行時
間の最短であるか否かを条件として選択を行うのみなら
ず、他の条件、例えばコードサイズが所望のものか否か
という条件に関しての選択をも行うことができるという
効果があり、実行時間の測定に要する時間を短縮できる
という効果もある。
グラム候補24からオブジェクト・プログラム29を選
択するにあたり、2段階に選択を行うので、単に実行時
間の最短であるか否かを条件として選択を行うのみなら
ず、他の条件、例えばコードサイズが所望のものか否か
という条件に関しての選択をも行うことができるという
効果があり、実行時間の測定に要する時間を短縮できる
という効果もある。
【0050】
【発明の効果】この発明においては、第2オブジェクト
・プログラムを結果的にオブジェクト・プログラムとし
て使用することにより、所定の最適化操作のなかで最も
実行時間が短くなるようなものを選んで最適化コンパイ
ルができる。
・プログラムを結果的にオブジェクト・プログラムとし
て使用することにより、所定の最適化操作のなかで最も
実行時間が短くなるようなものを選んで最適化コンパイ
ルができる。
【0051】特に第1オブジェクト・プログラムを生成
した計算機において、第2オブジェクト・プログラムが
用いられるべき計算機における第1オブジェクト・プロ
グラムの実行のシミュレーションができるので、前者の
計算機と後者の計算機とが異なる場合にも対応すること
ができる。
した計算機において、第2オブジェクト・プログラムが
用いられるべき計算機における第1オブジェクト・プロ
グラムの実行のシミュレーションができるので、前者の
計算機と後者の計算機とが異なる場合にも対応すること
ができる。
【0052】また、所定の条件をも第2オブジェクト・
プログラムを選択するための条件とすることができ、実
行時間の測定に要する時間の短縮が可能である。
プログラムを選択するための条件とすることができ、実
行時間の測定に要する時間の短縮が可能である。
【図1】この発明の第1実施例を示す概念図である。
【図2】この発明の第1実施例を説明するフローチャー
トである。
トである。
【図3】この発明の第2実施例を示す概念図である。
【図4】この発明の第2実施例を説明するフローチャー
トである。
トである。
【図5】この発明の第3実施例を示す概念図である。
【図6】この発明の第3実施例を説明するフローチャー
トである。
トである。
【図7】従来の技術を示す概念図である。
21 ソースプログラム 23 コンパイラ 24 オブジェクト・プログラム候補 26a 実行部 26b シミュレーションプログラム 27 実行時間記憶手段 28 選択手段 29 オブジェクト・プログラム
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成6年3月3日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0038
【補正方法】変更
【補正内容】
【0038】第2実施例:第1実施例では、実行部26
aはコンパイルを行う計算機システムにおけるオブジェ
クト・プログラム候補24の実行を行う。しかし、コン
パイルを行う計算機システム(以下「コンパイル計算機
システム」と記す)と、最終的に求めたオブジェクト・
プログラム29を実行する目的機械とが異なる場合も考
えられる。このような場合には、オブジェクト・プログ
ラム候補24をコンパイル計算機システム上で実行する
ことはできない。
aはコンパイルを行う計算機システムにおけるオブジェ
クト・プログラム候補24の実行を行う。しかし、コン
パイルを行う計算機システム(以下「コンパイル計算機
システム」と記す)と、最終的に求めたオブジェクト・
プログラム29を実行する目的機械とが異なる場合も考
えられる。このような場合には、オブジェクト・プログ
ラム候補24をコンパイル計算機システム上で実行する
ことはできない。
Claims (9)
- 【請求項1】 (a)プログラミング言語を用いて記述
されたソースプログラムを得る工程と、 (b)前記ソースプログラムを解析して所定の最適化操
作を行う工程と、 (c)前記所定の最適化操作に従って少なくともひとつ
の第1オブジェクト・プログラムを得る工程と、 (d)前記第1オブジェクト・プログラムの少なくとも
一つの実行時間を測定する工程と、 (e)前記第1オブジェクト・プログラムの中から、そ
の前記実行時間の最も短いものを第2オブジェクト・プ
ログラムとして選択する工程と、を備える、最適化コン
パイル方法。 - 【請求項2】 前記工程(d)においては、前記第1オ
ブジェクト・プログラムの全ての実行時間が測定され
る、請求項1記載の最適化コンパイル方法。 - 【請求項3】 前記工程(d)は、(d−1)前記第1
オブジェクト・プログラムを実行してその実行時間を測
定する工程を有する、請求項1記載の最適化コンパイル
方法。 - 【請求項4】 前記工程(d)は、(d−2)前記第1
オブジェクト・プログラムの実行をシミュレートする工
程と、(d−3)前記シミュレートによって得られた前
記実行時間を測定する工程とを有する、請求項1記載の
最適化コンパイル方法。 - 【請求項5】 前記工程(c)の後で、かつ前記工程
(d)の前において行われる、 (f)前記第1オブジェクト・プログラムにおいて、所
定の条件を満足するもののみを選択する工程を更に備
え、前記工程(f)において選択された前記第1オブジ
ェクト・プログラムのみが前記工程(d)において前記
実行時間が測定される、請求項1記載の最適化コンパイ
ル方法。 - 【請求項6】 (a)プログラミング言語を用いて記述
されたソースプログラムに対し、前記ソースプログラム
を解析して所定の最適化操作を行い、前記所定の最適化
操作に従って少なくともひとつの第1オブジェクト・プ
ログラムを得るコンパイラと、 (b)前記第1オブジェクト・プログラムの少なくとも
一つの実行時間を記憶する実行時間記憶装置と、 (c)前記第1オブジェクト・プログラムの中から、そ
の前記実行時間の最も短いものを第2オブジェクト・プ
ログラムとして選択する第1選択手段と、を備える最適
化コンパイル装置。 - 【請求項7】 前記実行時間記憶装置は、(b−1)前
記第1オブジェクト・プログラムを実行して前記実行時
間を測定する実行部と、(b−2)前記実行時間を記憶
する実行時間記憶手段と、を有する請求項6記載の最適
化コンパイル装置。 - 【請求項8】 前記実行時間記憶装置は、(b−3)前
記第1オブジェクト・プログラムの実行をシミュレート
してその実行時間を求めるシミュレーション手段と、
(b−4)前記実行時間を記憶する実行時間記憶手段
と、を有する請求項6記載の最適化コンパイル装置。 - 【請求項9】 前記実行時間記憶装置は、(b−5)前
記第1オブジェクト・プログラムのうち所定の条件を満
足するもののみを選択する第2選択手段と、(b−6)
前記工程(b−5)によって選択された前記第1オブジ
ェクト・プログラムを実行して前記実行時間を測定する
実行部と、(b−7)前記実行時間を記憶する実行時間
記憶手段と、を有する請求項6記載の最適化コンパイル
装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5218622A JPH0773044A (ja) | 1993-09-02 | 1993-09-02 | 最適化コンパイル方法及び最適化コンパイル装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5218622A JPH0773044A (ja) | 1993-09-02 | 1993-09-02 | 最適化コンパイル方法及び最適化コンパイル装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0773044A true JPH0773044A (ja) | 1995-03-17 |
Family
ID=16722844
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5218622A Pending JPH0773044A (ja) | 1993-09-02 | 1993-09-02 | 最適化コンパイル方法及び最適化コンパイル装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0773044A (ja) |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2000035893A (ja) * | 1998-04-07 | 2000-02-02 | Sun Microsyst Inc | デ―タ処理システムの配列の静的初期化方法、デ―タ処理方法、並びにデ―タ処理システム及びその制御手順をコンピュ―タに実行させるプログラムを記憶したコンピュ―タ読み取り可能な記憶媒体 |
| JP2001075816A (ja) * | 1999-09-08 | 2001-03-23 | Sony Corp | プログラム変換装置及び方法、プログラム製造装置、並びにプログラム記録媒体 |
| JP2007041805A (ja) * | 2005-08-02 | 2007-02-15 | Hitachi Ltd | プログラム生成装置、プログラム生成方法及びコンパイラ |
| JP2008027048A (ja) * | 2006-07-19 | 2008-02-07 | I L C:Kk | 情報処理装置、検証方法、および該方法をコンピュータに実行させるプログラム |
| JP2011048605A (ja) * | 2009-08-27 | 2011-03-10 | Hitachi Ltd | プログラム実行装置及びアプリケーションプログラムの実行方法 |
| CN102081544A (zh) * | 2009-11-30 | 2011-06-01 | 国际商业机器公司 | 应用程序生成系统和方法 |
-
1993
- 1993-09-02 JP JP5218622A patent/JPH0773044A/ja active Pending
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2000035893A (ja) * | 1998-04-07 | 2000-02-02 | Sun Microsyst Inc | デ―タ処理システムの配列の静的初期化方法、デ―タ処理方法、並びにデ―タ処理システム及びその制御手順をコンピュ―タに実行させるプログラムを記憶したコンピュ―タ読み取り可能な記憶媒体 |
| JP2001075816A (ja) * | 1999-09-08 | 2001-03-23 | Sony Corp | プログラム変換装置及び方法、プログラム製造装置、並びにプログラム記録媒体 |
| JP2007041805A (ja) * | 2005-08-02 | 2007-02-15 | Hitachi Ltd | プログラム生成装置、プログラム生成方法及びコンパイラ |
| JP2008027048A (ja) * | 2006-07-19 | 2008-02-07 | I L C:Kk | 情報処理装置、検証方法、および該方法をコンピュータに実行させるプログラム |
| JP2011048605A (ja) * | 2009-08-27 | 2011-03-10 | Hitachi Ltd | プログラム実行装置及びアプリケーションプログラムの実行方法 |
| CN102081544A (zh) * | 2009-11-30 | 2011-06-01 | 国际商业机器公司 | 应用程序生成系统和方法 |
| JP2011113449A (ja) * | 2009-11-30 | 2011-06-09 | Internatl Business Mach Corp <Ibm> | アプリケーション生成システム、方法及びプログラム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5768592A (en) | Method and apparatus for managing profile data | |
| US7571427B2 (en) | Methods for comparing versions of a program | |
| US9141350B2 (en) | Embedded system performance | |
| US6253373B1 (en) | Tracking loop entry and exit points in a compiler | |
| US6772106B1 (en) | Retargetable computer design system | |
| CN112882718B (zh) | 编译处理方法、装置、设备及存储介质 | |
| JPH05257709A (ja) | 並列化判別方法およびそれを用いた並列化支援方法 | |
| JP2002215423A (ja) | ソフトウェアモデル作成方法 | |
| US5450554A (en) | Apparatus for detecting possibility of parallel processing and method thereof and a program translation apparatus utilized therein | |
| US7694288B2 (en) | Static single assignment form pattern matcher | |
| EP3244306A1 (en) | A computer-implemented method for allowing modification of a region of original code | |
| JPH06324881A (ja) | メモリデータの重なり判定機能を備えたコンパイラ装置 | |
| CN102207902A (zh) | 用于分析包含校准值的软件的方法和设备 | |
| JPH0773044A (ja) | 最適化コンパイル方法及び最適化コンパイル装置 | |
| CN112631925A (zh) | 一种单变量原子违背缺陷的检测方法 | |
| JPH11167492A (ja) | ループ飛び出し文を含むループに対する配列サマリ解析方法 | |
| US6983457B2 (en) | Compile method for storing source code within object code | |
| RU2206119C2 (ru) | Способ получения объектного кода | |
| Ayache et al. | Certifying and reasoning on cost annotations in C programs | |
| US12164892B2 (en) | Methods and devices for compiler function fusion | |
| US9274929B2 (en) | Constraint derivation in context following for use with object code insertion | |
| Schösser et al. | Graph rewriting for hardware dependent program optimizations | |
| Soest | Compiling Second-Order Accelerate Programs to First-Order TensorFlow Graphs | |
| Mortensen | Isolating Errors for an Assembly Optimizer | |
| JP7059827B2 (ja) | ソースコード生成装置 |