JP2500079B2 - プログラムの最適化方法及びコンパイラ・システム - Google Patents

プログラムの最適化方法及びコンパイラ・システム

Info

Publication number
JP2500079B2
JP2500079B2 JP3040548A JP4054891A JP2500079B2 JP 2500079 B2 JP2500079 B2 JP 2500079B2 JP 3040548 A JP3040548 A JP 3040548A JP 4054891 A JP4054891 A JP 4054891A JP 2500079 B2 JP2500079 B2 JP 2500079B2
Authority
JP
Japan
Prior art keywords
cost
program
selecting
branch
statement
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.)
Expired - Lifetime
Application number
JP3040548A
Other languages
English (en)
Other versions
JPH04330527A (ja
Inventor
スチーブン・マレー・ホクシー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH04330527A publication Critical patent/JPH04330527A/ja
Application granted granted Critical
Publication of JP2500079B2 publication Critical patent/JP2500079B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンパイラの最適化に関
する。詳細にいえば、マルチウェイ分岐に対して考えら
れる各解法のコストを示す関数を使用し、マルチウェイ
分岐の実行前に各方法の相対的なコストを比較し、もっ
ともコストの低い方法を実行のために選択して、マルチ
ウェイ分岐の実行パフォーマンスを改善することに関す
る。
【0002】
【従来の技術】もっとも高水準の言語は、通常マルチウ
ェイ分岐とみなされる言語構造を含んでおり、この構造
内で実行時変数が、定数のセットの各メンバーと比較さ
れ、比較の結果に基づいてステートメントの選択が行わ
れる。このような構造は、ケース・ステートメントまた
はスイッチ・ステートメントと呼ばれることもある。
「ケース・セレクタ」と呼ばれることもある実行時変数
は式であって、「ケース(case)項」と呼ばれるこ
ともある指定された定数のセットに対してテストされ
る。当分野で周知のように、マルチウェイ分岐は各種の
選択方法を利用して、レンジ・テスト、ジャンプ・テー
ブル、比較分岐シーケンス、アドレス変換及び算術級数
を含む、必要な論理を遂行する。これらを簡単に説明す
る。ジャンプ・テーブルとは、それぞれがある命令シー
ケンスにより計算された値に関連する複数のアドレスを
もつリストであって、この計算値に基づいて制御が移行
する。レンジ・テストとは、計算された値を所定の範囲
値と比較する処理であって、その範囲内にあるか範囲外
(上回る場合と下回る場合を含む)にあるかによって、
異なる態様で制御を移行する。比較分岐シーケンスと
は、ある命令シーケンスにより計算された値を1又は複
数の所定の値と比較し、一致する場合には、その値に対
応する分岐を実行する最も単純な比較分岐処理をいう。
また、アドレス変換とは文字どおりアドレスを変換する
処理であり、かつ算術級数とは、数学的意味における等
差数列と同様、比較される値を n,n+b,n+2b,n+3b,...の
ようにし、これに従って命令を分岐する処理をいう。実
行時に最善のパフォーマンスをもたらす方法は、コンパ
イルされたプログラムが実行される機械の基礎となるア
ーキテクチャによって、また選択セット、すなわち実行
時変数の比較対象である定数のセットの値によって大幅
に変化する。
【0003】最良の実行コードを作成する問題を解決す
るための周知の試みは一般に、プログラムがコンパイル
される対象の特定の機械、すなわち目的機械のアーキテ
クチャに関連している。このことは解法に、またヒュー
リスティック情報に、この機械に最適なコード形式に関
する想定を含めることによって行われる。たとえば、マ
ルチウェイ分岐が高水準言語の一般的に使用される構造
であるから、ある種の複雑命令セット・コンピュータ
(CICS)システムの設計者は命令をこのようなコン
ピュータに組み込んで、比較的低いコストでテーブル索
引付き分岐をもたらしている。このようなアーキテクチ
ャに対するマルチウェイ分岐の実現者はしばしば、自分
たちの解法を調整し、パフォーマンスが最良ではないコ
ードの何らかの収集に対してさえも、この命令を常に利
用するようにしている。周知の従来の方法は、1種類の
機械にだけ最適であり、かつ実行時変数と比較される選
択セットの1組の条件において最適なコードを作成す
る。
【0004】R・バーンスタイン(Bernstei
n)「ケース・ステートメントに対する良好なコードの
作成(Producing Good Code fo
r the Case Statement)」、IB
M RESEARCH REPORT 10525(#
45755)1983/12/06は利用可能なテスト
がジャンプ・テーブル、レンジ・テスト、2進探索及び
線形探索を含んでいる場合に、ケース・ステートメント
のどのテストが適切かを判定する際に使用する若干の考
慮事項を説明し、「セット」と呼ばれることのある単一
のクラスタとしてのケース項のすべてから始め、各々が
ジャンプ・テーブル解に対する最低ケース密度に合致す
るまで、小さなクラスタに分割していく選択方法を開示
している。この場合、数種類のテストが、常にジャンプ
・テーブルから始まる所定の順序で行われる。
【0005】エイホ、セチ及びウルマン(Aho,Se
thi,and Ullman)「コンパイラ:原理、
手法及びツール(COMPILER:PRINCIPL
ES,TECHNIQUES AND TOOLS)」
Addison−Wesley(1988年)の第10
章では、最適化方法がごく一般的に検討されている。他
の関連する従来技術の参照文献としては、「Pasca
lにおける2状態ケース・ステートメントの最適化(O
pimizing Two−state Case S
tatement in Pascal)」、SOFT
WARE−PRACTICE AND EXPERIE
NCE、12:6(1982年)、571−581、な
らびにJ・ヘネシィ(Hennessey)及びN・メ
ンデルソーン(Mendelsohn)、「Pasca
lケース・ステートメントのコンパイル(Compil
ation of the Pascal Case
Statement)」、SOFTWARE−PRAC
TICE AND EXPERIENCE、12:9
(1982年)、879−882がある。
【0006】
【発明が解決しようとする課題】これらの試みにもかか
わらず、実行を最低限としてケース・ステートメントを
評価するための、コンパイル時に遭遇すると思われるケ
ースの全数及び密度を処理するだけではなく、移植性も
よい、すなわち異なるアーキテクチャを有する目的機械
で使用できる最適化方法が依然として必要である。
【0007】
【課題を解決するための手段】マルチウェイ分岐ステー
トメントの処理が実行時変数の規定の値にしたがって、
取ることのできると考えられる分岐を予め定義し、所定
のコスト決定方法にしたがって方法の各々のコストを決
定し、コストのもっとも低い方法を選択して実行するこ
とによって容易となることが判明した。
【0008】したがって、本発明は下記のステップから
なるコンピュータにおいてコンパイルされるプログラム
を最適化する方法を提供する。
【0009】(a)マルチウェイ分岐ステートメントを
選択し、(b)複数の命令シーケンスの各々の相対実行
コストを決定して、前記マルチウェイ分岐ステートメン
トを実施し、(c)前記の複数の命令シーケンスから、
コストのもっとも低い命令シーケンスを選択し、(d)
前記の最低コストの命令シーケンスを実施する。本発明
はさらに、下記のステップからなるコンピュータにおい
てコンパイルされるプログラムを最適化する方法を提供
する。
【0010】(a)マルチウェイ分岐ステートメントを
選択し、(b)テストを実行する各方法がジャンプ・テ
ーブル、レンジ・テスト、比較分岐、算術級数、及びア
ドレス変換からなる場合に、該各方法の相対コストを決
定して、前記プログラムがどの分岐を取り入れるかを選
択し、(c)必要なコストがもっとも低い方法を選択
し、(d)選択した方法に対応する命令シーケンスを実
施する。本発明はさらに、下記のものからなるコンピュ
ータにおいて実行されるプログラムを最適化する改善さ
れたコンパイラを提供する。
【0011】(a)マルチウェイ分岐を選択する手段
と、(b)テストを実行する各方法がジャンプ・テーブ
ル、レンジ・テスト、比較分岐、算術級数、及びアドレ
ス変換からなる場合に、該各方法の相対コストを決定し
て、前記プログラムがどの分岐を取り入れるかを決定す
る手段と、(c)コストのもっとも低い方法を選択する
手段と、(d)選択した方法に対応する命令シーケンス
を実施する手段。
【0012】本発明の方法及びコンパイラはコードのコ
ンパイル中に、テスト変数の取り得る値をセット要素と
して処理し、テスト・ポイントをくみあわせるセットを
識別することによって、ケース・ステートメントを処理
するが、レンジ・セットは組み合わされたポイントによ
って定義された範囲内の取りうるすべてのポイントを含
んでおり、デンス・セットは特に目的機械に依存する、
少なくともプログラマが選択可能なある値である有効な
値の一部を含んでおり、ユニーク・セットは各々がレン
ジ・セットまたはデンス・セットに組み合わされていな
いポイントを1つだけ含んでおり、バウンド・セットは
他のすべてのセットが選択された後で残ったポイントを
含んでいる。
【0013】特定の目的機械、つまりヒューリスティッ
ク情報に対してこの問題を解決するための他の手法が試
みられ、どのようなタイプのコードが最適なのかに関す
る基礎となる想定が解決手順の一部となる。本発明は複
数のアーキテクチャを同時に対象とし、機械Aには適し
ているが、機械Bには適していない想定を除去する必要
があった。
【0014】インターバル・クラスタ化に対する「グリ
ーディ手法」に関するR・バーンスタインの検討は、バ
ーンスタインの最初のセットが選択値のすべてを含んで
いることを示唆している。各分割後、サブインターバル
間の新しいギャップが計算され、その最大値が次の分割
の位置となる。詳細には述べないが、基礎となる想定
は、ジャンプ・テーブル法が求める最良な方法であると
いうものである。本発明は反対の手法、すなわち大きな
インターバルを分割するのではなく、小さなインターバ
ルを組み合わせるという手法を取る。これはデータを区
分するのに必要な計算量の低減、ならびに特定の目的ア
ーキテクチャに対して最適な方法を選択する能力をもた
らすはずである。
【0015】
【実施例】本発明はマルチウェイ分岐ステートメントを
評価する際にかかるクロック・サイクルの数を減らすこ
とによって、目的機械でのコンパイルされたプログラム
の実行コストを下げることを目的としている。クロック
・サイクルとは特定の操作または機能を行うのに、中央
演算処理装置にかかる時間について、しばしば使用され
る測定値である。本発明の方法には、このような評価に
利用されるメモリの量を少なくするという、一般的な効
果もある。関連したコンパイラが使用される任意の型式
の目的機械アーキテクチャに適用されるように設計され
ている。以下で説明するように、本発明の最適化方法が
一般に、中間コード・レベルで適用されるので、各種の
目的コンピュータ・アーキテクチャに容易に適合させる
ことができるが、これは部分的には、「バック・エン
ド」が最適化された中間コードを、目的コンピュータで
実際に実行される機械コードに変換するからである。最
適化の原理はコンパイラ作成の分野で周知のものである
から、本明細書で詳細に説明する必要はない。
【0016】追随する適切な分岐の選択に関連するコス
トは、コンパイルに関連するコストと、目的機械でコン
パイルされたプログラムを実行するコスト、すなわち実
行コストの両方を含んでいる。一般に、コンパイラが各
プログラムで1回だけ実行され、これを実行可能な形態
にするものであるから、コンパイルに関連するコストは
実行コストに比較して小さく、コンパイラはコンパイラ
のサイズ及びコンパイル時間を若干犠牲にしても、コン
パイルされたプログラムの実行を最適化するため、ます
ます複雑なものとなってきている。
【0017】マルチウェイ分岐ステートメントはほとん
どの典型的なソース・プログラムのコードのどこかに置
かれる。このようなステートメントの各々は、本明細書
で説明する最小コスト法の候補となる。追随するのに適
切な分岐は、プログラムのソース・テキストに含まれる
パラメータを含む多くの要因、ならびにプログラムに関
連してどのデータがシステムに入力されたかに応じて、
プログラムによって選択される。上述のように、マルチ
ウェイ分岐ステートメントの変数をテストして、正しい
分岐を選択することのできる方法はいくつかある。これ
らの方法はジャンプ・テーブルの生成、レンジ・テスト
の実行、線形探索及び2進探索を含む比較分岐シーケン
ス、アドレス変換、ならびに演算級数の認識を含んでい
る。これらの方法のすべてが必ずしも各コンピュータ・
アーキテクチャで使用されるものではなく、これらが実
現される方法はアーキテクチャごとに異なっている。こ
れらの方法の各々には、特に分岐を評価する際の特定の
実行時変数におけるデータの値、分岐を選択して、制御
を移すことのできる選択肢の数、目的機械によって左右
されるコストがかかる。異なるタイプの操作には、それ
ぞれに異なる相対的なコストがかかり、どのような命令
が機械のアーキテクチャで利用できるか、また各命令が
どのように作動するかによって左右される。これらは特
定の機械のプログラミングの分野の技術者にとって周知
のものである。
【0018】所与の分岐を評価するためのコスト・パラ
メータはコスト決定ヒューリスティックに挿入すること
ができる。コスト決定ヒューリスティックは、上述のマ
ルチウェイ分岐を処理する特定の方法についての実行コ
ストを計算するためのアルゴリズムを実施する。これに
より、コンパイラが評価の実行コストを評価できるよう
にする。
【0019】商業的に実施するために構成された本発明
の好ましい実施例において、ケース選択方法の選択肢は
レンジ分析、ジャンプ・テーブル生成、ならびに2つの
形式の比較分岐シーケンス、すなわち線形探索及び2進
探索に限定される。これらはマルチウェイ分岐の評価時
にもっとも一般的に使用される選択方法である。実施例
に使用される特定のコンピュータ・システムにアドレス
変換のための命令がないので、これをケース選択方法と
して組み込む必要はない。
【0020】好ましい実施例の以下の説明において、便
宜上及び明確化のために、「クラスタ」と呼ばれること
のある各種のセットに与えられる名前は一般に、それぞ
れのセットのメンバーに使用される選択方法を反映する
ように選ばれたものである。
【0021】RANGEは目的ロケーションが同じステ
ートメントである順次値のセットである。C関数isd
igit(c)の好ましい実施形態の例を以下に示す。
【0022】 Cを使用した場合 PASCALを使用した場合 switch(c){ CASE c OF case ’0’: ’0’..’9’ : x:=1; case ’1’: OTHERWISE : x:=0; case ’2’: END case ’3’: case ’4’: case ’5’: case ’6’: case ’7’: case ’8’: case ’9’: return(1); } return(0):
【0023】RANGEセットを処理するための当分野
で周知の方法は、4命令シーケンスを使用して単純なレ
ンジ・テストを行うことである。
【0024】1.実行時変数をレンジの高域と比較す
る。
【0025】2.変数がこれよりも大きければ、分岐す
る。
【0026】3.実行時変数を低域と比較する。
【0027】4.実行時変数がこれ以下でなければ、目
的ロケーションへ分岐する。
【0028】無記号ないし「論理」比較を可能とする、
機械アーキテクチャに対する同等な短いシーケンスは次
のとおりである。
【0029】1.レンジの低域を実行時変数から引く。
【0030】2.結果を高域と低域の間の差と論理比較
する。
【0031】3.論理的にこれよりも大きくなければ、
目的ロケーションへ分岐する。
【0032】DENSEは、必ずしも順次となっていな
い値のセットであって、それぞれの目的ロケーションが
異なっており、「ケース密度」とも呼ばれるセット密度
がコスト決定ヒューリスティックに与えられた限度内に
あるセットをいう。セット密度とは、当該セット内の最
大値と最小値の間の差で割った判別する値の数である。
この限度はプログラマが与えることも、あるいはもっと
も頻繁に遭遇する状況をカバーするために予め選択する
こともできるものである。たとえば、10から49まで
の範囲の整数のセットから、このセットから奇数の整数
を利用可能な値として選択するDENSEセットが予測
される場合、このセットのセット密度は0.5となる。
2つの言語の各々に対してDENSEセットを使用した
例を、以下に示す。
【0033】 Cを使用した場合 PASCALを使用した場 合 switch(c){ CASE c OF case ’A’ : x=0; break; ’A’ : x:=0 ;case ’B’ : x=1: break; ’B’ : x:= 1;case ’D’ : x=2; break; ’D’ : x: =2;} END
【0034】DENSEセットを処理する周知の方法
は、もちろんほとんどの非最適化コンパイラ実施形態が
マルチウェイ分岐を処理する方法、すなわち索引付きロ
ード命令を解して参照されるジャンプ・テーブルを生成
し、ロードされたアドレスへ分岐する方法である。この
シーケンスの前には通常、上述のような3つまたは4つ
の命令レンジ・テスト・シーケンスが置かれ、アドレス
指定例外に対する保護を行っている。したがって、シー
ケンス全体は次のようになる。
【0035】1.レンジ・テストを行い(成功)、
【0036】2.テーブルからアドレスをロードし、
【0037】3.ロードされたアドレスへ分岐する。
【0038】BOUNDは、上述の2つのクラスのいず
れにもクラスタ化されないすべての他の選択値の和集合
を含んでいるセットである。BOUNDセットは各対が
比較及び分岐命令を含んでいる命令セットのシーケンス
である。
【0039】UNIQUEはメンバーが1つだけのセッ
トである。選択値の母集団の各メンバーはまずこの態様
で表されてから、区分が行われる。
【0040】クラスタ化の方法は分類された順序でセッ
トを調べ、各セットをもっとも近い隣接セットと和集合
を取ることを試みる。結果として生じるセットに個々の
実施形態のコストの合計よりも、費用効果の高い実施形
態があるとコスト決定ヒューリスティックが決定した場
合に、和集合が取られる。この手法を使用した場合、U
NIQUEセットを1回だけ調べて、DENSEまたは
RANGEセットを形成するだけでよく、これらのセッ
トはすべてのUNIQUEセットが調べられるまで成長
を続ける。DENSEセットまたはRANGEセットに
クラスタされないすべてのUNIQUEセットの和集合
は、BOUNDセットになる。これで区分ステップは完
了する。
【0041】区分が行われると、選択コードを各セット
内のデータに対して生成できるようになる。次いで、各
セットを順次調べて、そのメンバーに対して上述のよう
な適切な選択論理を生成する(すなわち、RANGEセ
ットであればレンジ・テストを含む上記の3つ又は4つ
の命令シーケンス、DENSEセットであればさらにジ
ャンプ・テーブルの使用を含む上述の2つの命令シーケ
ンスを生成する)。現行の生成論理は最初の母集団から
の各値が、実行時に発生する同等な確率を有しており、
したがって線形的にテストを生成すると想定している。
しかしながら、十分多数なセットが存在するか、あるい
はBOUNDセットに充分多数なメンバーが存在する場
合、各セットは実行時にトラバースされる2進木のノー
ドとして配置される。線形探索論理から2進探索論理へ
の切換えの決定は、この場合も、2進探索法が木の各ノ
ードにおいて付加的な比較分岐を必要とすることに注目
して、コスト決定ヒューリスティックによって決定され
る。
【0042】どの値がもっとも発生しやすいかに関する
確率情報を提供する付加的な機能によって、この時点で
ハフマン探索を使用することを考慮することができる。
ハフマン探索の方法は、当分野の技術者にとって周知で
ある。
【0043】各種の方法に対するコード・パターンの検
討によって、機械固有なコスト決定ヒューリスティック
が下記の命令コストから開発されることが明らかになっ
た。
【0044】1.比較(適宜、記号なしと記号付きの両
方)
【0045】2.条件付き分岐
【0046】3.レジスタから定数を引く
【0047】4.メモリからレジスタへロードする
【0048】5.レジスタ内のアドレスに分岐する
【0049】6.ロードし、アドレスへ分岐する(アー
キテクチャの中には、ジャンプ・テーブル・アクセス方
式が組み込まれているものもある)
【0050】7.メモリ・コストを使用して、サイクル
時間に無関係に変動する命令長を反映することができ
る。スペースを最適化する場合、ジャンプ・テーブルを
使用することによって、クラスタ化をもたらす付加的な
オーバーヘッドをこうむることがある。
【0051】8.密度限度はジャンプ・テーブルの作成
時に認めることのできる、維持するためのメモリ・コス
トとは無関係な部分的に未使用なメモリ・オーバーヘッ
ドを反映する。
【0052】下記の例は本発明の方法を実施することに
よって、典型的な縮小命令セット・コンピュータ(RI
SC)システムで得られる実行速度の改善を示してい
る。
【0053】
【0054】このコードの断片に対する直接的な手法
は、比較分岐命令のシーケンスを生成することである。
この場合、各々が特定の「case n :」クローズ
を表す9つの比較命令と9つの分岐命令がある。たとえ
ば、IBM RT PCシステムにおいては、各命令を
実行するのに1サイクルかかり、選択を行うコストは1
8サイクル程度である。しかしながら、このコードがレ
ンジ・テストとして実施された場合には、これに必要な
のは4サイクルだけとなろう。このことはこの特定なコ
ンピュータ・システムにおいて、18サイクルの内14
サイクル、すなわち78%が節約されることを表す。
【0055】時間の節約は当分野の技術者に容易に理解
されるように、各種の処理装置、ならびにケース・ステ
ートメントのサイズ及び密度によって異なっているが、
平均して、処理時間の大幅な削減がデータ処理分野で一
般的に使用されるすべてのタイプの処理装置で実現でき
るものである。
【0056】
【発明の効果】本発明はマルチウェイ分岐に可能な各解
法のコストを示す関数を使用し、マルチウェイ分岐を実
行する前に、各方法の相対コストを比較し、かつもっと
もコストの低い方法を実行のために選択することによっ
て、マルチウェイ分岐の実行パフォーマンスを改善する
ものである。

Claims (9)

    (57)【特許請求の範囲】
  1. 【請求項1】少なくとも1つのマルチウェイ分岐ステー
    トメントを含むプログラムをコンパイルして最適化する
    方法であって、 (a)マルチウェイ分岐ステートメントを選択し、 (b)前記選択されたマルチウェイ分岐ステートメント
    を検査して、該ステートメントを実施するための複数の
    命令シーケンスを生成し、 (c)前記複数の命令シーケンスの各々について、相対
    的な実行コストを決定し、 (d)前記の複数の命令シーケンスから、前記実行コス
    トのもっとも低い命令シーケンスを選択し、 (e)前記の最低コストの命令シーケンスを、前記プロ
    グラムのコンパイルされたコードとして取り込み、 (f)プログラム中の各マルチウェイ分岐ステートメン
    トごとに(a)〜(e)を繰り返すステップを有する、 プログラムの最適化方法。
  2. 【請求項2】前記の複数の命令シーケンスがレンジ・テ
    スト、ジャンプ・テーブル、比較分岐、算術級数、及び
    アドレス変換を含む、請求項1記載の方法。
  3. 【請求項3】前記コストが前記プログラムを実行するの
    に必要な機械時間のコストを含んでいる、請求項1記載
    の方法。
  4. 【請求項4】コンパイルされる前記プログラムのソース
    ・テキストによって決定されるパラメータにしたがっ
    て、複数の選択値を設定することをさらに含んでいる、
    請求項1記載の方法。
  5. 【請求項5】コストの前記の決定が値をコスト決定ヒュ
    ーリスティックに挿入することによって行われる方法で
    あって、さらに前記コンピュータのアーキテクチャにし
    たがって、前記値を前記コスト決定ヒューリスティック
    に設定することを含んでいる、請求項1記載の方法。
  6. 【請求項6】さらに、コスト決定ヒューリスティックを
    確立し、該コスト決定ヒューリスティックが前記最低コ
    ストの命令シーケンスを選択するための複数のセット
    に、実行時変数の比較対象である定数をクラスタ化する
    ステップを含む、請求項1記載の方法。
  7. 【請求項7】(a)マルチウェイ分岐ステートメントを
    選択する手段と、 (b)テストを実行する各方法がジャンプ・テーブル、
    レンジ・テスト、比較分岐、算術級数、及びアドレス変
    換を含んでおり、該各方法についての相対的なコストを
    前記選択されたマルチウェイ分岐ステートメントを検査
    して、決定する手段と、 (c)前記コストのもっとも低い方法を選択する手段
    と、 (d)選択した方法に対応する命令シーケンスを、前記
    プログラムのコンパイルされたコードとして取り込む手
    段とからなる、 コンピュータによって実行されるプログラムを最適化す
    る改良されたコンパイラ・システム。
  8. 【請求項8】前記コストが前記プログラムを実行するの
    に必要な機械時間のコストを含む、請求項7記載の改良
    されたコンパイラ・システム。
  9. 【請求項9】前記コスト決定手段が、コスト決定ヒュー
    リスティックを確立し、該コスト決定ヒューリスティッ
    クが前記もっともコストの低い方法を選択するための複
    数のセットに、実行時変数の比較対象である定数をクラ
    スタ化する手段を含む、請求項7記載のコンパイラ・シ
    ステム。
JP3040548A 1990-02-14 1991-02-13 プログラムの最適化方法及びコンパイラ・システム Expired - Lifetime JP2500079B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CA2010068 1990-02-14
CA002010068A CA2010068C (en) 1990-02-14 1990-02-14 Partitioning case statements for optimal execution performance

Publications (2)

Publication Number Publication Date
JPH04330527A JPH04330527A (ja) 1992-11-18
JP2500079B2 true JP2500079B2 (ja) 1996-05-29

Family

ID=4144298

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3040548A Expired - Lifetime JP2500079B2 (ja) 1990-02-14 1991-02-13 プログラムの最適化方法及びコンパイラ・システム

Country Status (5)

Country Link
US (1) US5339420A (ja)
EP (1) EP0442624A3 (ja)
JP (1) JP2500079B2 (ja)
BR (1) BR9100573A (ja)
CA (1) CA2010068C (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452457A (en) * 1993-01-29 1995-09-19 International Business Machines Corporation Program construct and methods/systems for optimizing assembled code for execution
JPH06314203A (ja) * 1993-04-28 1994-11-08 Fujitsu Ltd コンパイラの最適化方法および装置
CA2190487A1 (en) * 1994-05-16 1995-11-23 Daniel Kenneth Freeman Instruction creation device
US5787285A (en) * 1995-08-15 1998-07-28 International Business Machines Corporation Apparatus and method for optimizing applications for multiple operational environments or modes
US5835774A (en) * 1996-04-30 1998-11-10 Hewlett-Packard Company Efficient 32-bit based case table support for 64-bit architectures
US5778233A (en) * 1996-10-11 1998-07-07 International Business Machines Corporation Method and apparatus for enabling global compiler optimizations in the presence of exception handlers within a computer program
US6412105B1 (en) 1997-12-31 2002-06-25 Elbrus International Limited Computer method and apparatus for compilation of multi-way decisions
US6145120A (en) * 1998-03-24 2000-11-07 Lockheed Martin Corporation Declaration programming language extension for procedural programming languages
US20040210886A1 (en) * 2003-04-15 2004-10-21 Sverre Jarp Optimized switch statement code employing predicates
US7496905B2 (en) * 2003-07-18 2009-02-24 Bea Systems, Inc. System and method for generating state machines
US7451299B2 (en) * 2003-07-18 2008-11-11 Bea Systems, Inc. System and method for generating multi-way branches
KR100613287B1 (ko) * 2004-12-22 2006-08-21 동부일렉트로닉스 주식회사 수직 게이트를 갖는 반도체 소자 및 그 제조 방법
US7774764B2 (en) * 2005-12-21 2010-08-10 Intel Corporation Method and system for efficient range and stride checking
US8176479B2 (en) * 2006-07-21 2012-05-08 National Instruments Corporation Case structure replacement in a data flow diagram
US8813057B2 (en) * 2007-03-31 2014-08-19 Intel Corporation Branch pruning in architectures with speculation support
US8438003B2 (en) * 2007-04-12 2013-05-07 Cadence Design Systems, Inc. Methods for improved simulation of integrated circuit designs
US7685584B1 (en) * 2009-01-05 2010-03-23 International Business Machines Corporation Heuristic method for the analysis of switch tables in position-independent binary code
US8387003B2 (en) * 2009-10-27 2013-02-26 Oracle America, Inc. Pluperfect hashing
US8438536B2 (en) * 2009-10-28 2013-05-07 Oracle America, Inc. Encoding switch on ordered universes with binary decision diagrams
JP6193151B2 (ja) * 2013-03-01 2017-09-06 株式会社東芝 多分岐判断構文の最適化処理装置
JP6536266B2 (ja) * 2015-08-03 2019-07-03 富士通株式会社 コンパイル装置、コンパイル方法およびコンパイルプログラム
US10001978B2 (en) 2015-11-11 2018-06-19 Oracle International Corporation Type inference optimization
US10394812B2 (en) 2016-12-06 2019-08-27 International Business Machines Corporation Case statement optimization
US10795682B2 (en) * 2016-12-28 2020-10-06 Intel Corporation Generating vector based selection control statements

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5093916A (en) * 1988-05-20 1992-03-03 International Business Machines Corporation System for inserting constructs into compiled code, defining scoping of common blocks and dynamically binding common blocks to tasks
JPH022425A (ja) * 1988-06-13 1990-01-08 Yaskawa Electric Mfg Co Ltd 多方向分岐演算の高速化方法

Also Published As

Publication number Publication date
US5339420A (en) 1994-08-16
BR9100573A (pt) 1991-10-29
EP0442624A3 (en) 1992-11-04
JPH04330527A (ja) 1992-11-18
CA2010068A1 (en) 1991-08-14
CA2010068C (en) 1993-10-26
EP0442624A2 (en) 1991-08-21

Similar Documents

Publication Publication Date Title
JP2500079B2 (ja) プログラムの最適化方法及びコンパイラ・システム
EP0214751B1 (en) A method for vectorizing and compiling object code
EP0428084B1 (en) Method and apparatus for compiling computer programs with interprocedural register allocation
US5659754A (en) Method and apparatus for an improved optimizing compiler
US5966537A (en) Method and apparatus for dynamically optimizing an executable computer program using input data
US7725883B1 (en) Program interpreter
US5966539A (en) Link time optimization with translation to intermediate program and following optimization techniques including program analysis code motion live variable set generation order analysis, dead code elimination and load invariant analysis
EP0190622B1 (en) Method for optimizing operand access and processing in a computer system
EP0171631B1 (en) A method for performing global common subexpression elimination and code motion in an optimizing compiler
US6113650A (en) Compiler for optimization in generating instruction sequence and compiling method
JP3311462B2 (ja) コンパイル処理装置
US4961141A (en) Generating efficient code for a computer with dissimilar register spaces
EP0467629B1 (en) A loop compiler method & apparatus for a data processing system
EP0760129B1 (en) Instruction creation device
US20020066090A1 (en) Method for removing dependent store-load pair from critical path
US6675380B1 (en) Path speculating instruction scheduler
JPH06250846A (ja) コンパイル装置
US4843545A (en) Compile method using copy propagation of a variable
US6301652B1 (en) Instruction cache alignment mechanism for branch targets based on predicted execution frequencies
US5278985A (en) Software method for implementing dismissible instructions on a computer
US6016398A (en) Method for using static single assignment to color out artificial register dependencies
US5999735A (en) Method for constructing a static single assignment language accommodating complex symbolic memory references
US20180189085A1 (en) Method for executing a computer program with a parameterised function
Marks Compilation to compact code
JPS62204374A (ja) 2倍演算最適化処理方式