JP2970785B2 - 資源割り付け装置 - Google Patents

資源割り付け装置

Info

Publication number
JP2970785B2
JP2970785B2 JP3270940A JP27094091A JP2970785B2 JP 2970785 B2 JP2970785 B2 JP 2970785B2 JP 3270940 A JP3270940 A JP 3270940A JP 27094091 A JP27094091 A JP 27094091A JP 2970785 B2 JP2970785 B2 JP 2970785B2
Authority
JP
Japan
Prior art keywords
pattern
cost
unit
instruction
instruction sequence
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 - Fee Related
Application number
JP3270940A
Other languages
English (en)
Other versions
JPH05108373A (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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP3270940A priority Critical patent/JP2970785B2/ja
Publication of JPH05108373A publication Critical patent/JPH05108373A/ja
Application granted granted Critical
Publication of JP2970785B2 publication Critical patent/JP2970785B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンパイラが目的コー
ドを生成する際に、生きている変数に資源を割り付ける
装置に関する。
【0002】
【従来の技術】コンパイラは高級言語から目的コードで
あるアセンブラソースコード又はマシン語を作成する手
段としてよく知られている。一般にコンパイラは、目的
コードを生成する際、演算に必要な値がその演算の時点
で、コンピュータ内部の高速な記憶装置であるレジスタ
内に入っているようにして命令列を生成する。また、そ
の演算の時点では不要であるが他の演算で必要となる値
は、レジスタ、またはコンピュータ内部のより低速な記
憶装置であるメモリ、に入っているようにする。
【0003】この時、レジスタとメモリとを合わせて資
源と呼び、値を入れるために資源上に置かれる枠組を変
数と呼び、どの変数をどの資源上に置くかを決定するこ
とを資源割り付けと呼ぶ。資源割り付けを行う際、レジ
スタの数には限りがあるため、変数の使用頻度に応じ
て、使用頻度の低い変数はメモリ上に置いておき、その
変数を用いた演算を行う際に、その変数をレジスタ上に
読みだしできてから演算を行うといった手法をとる。
【0004】また、プログラム内で、変数の値が決定さ
れた時から、最後に演算に使用されるまで、その変数は
生きている、と称する。コンパイラの生成する目的コー
ドの性能を良くするためには、使用頻度の高い変数が、
なるべくレジスタ上に置かれるようにする方がよい。こ
のことを実現するために、従来は、変数相互の関係は無
視して、変数1つ1つを独立に扱い、その変数がプログ
ラム内で生きている期間の長さや、その変数が演算に使
用される頻度等に基づいて、レジスタに割り付けるため
の優先順位を決めていた。
【0005】
【発明が解決しようとする課題】しかしながら、このよ
うな従来の方法では、生きている変数同士の関係を考慮
に入れることができず、資源割り付けの精度が低かっ
た。このため、例えば2つの生きている変数の演算が必
要であるのに、それらの変数が互いに演算できないレジ
スタ間或いはメモリ間に格納されていて、実質的に演算
できなかったり、演算できたとしても大変時間がかかる
場合があることを避けることができない。
【0006】本発明は、かかる問題点に鑑み、精度の高
い資源割り付け装置を提供することを目的とるものであ
る。
【0007】
【課題を解決するための手段】本発明は、前記の目的を
達成するために、資源割り付け対象区間の生きている変
数中のいずれの変数にどのような資源を割り付けるかと
いう組合せのパタンを発生するパタン発生部と、資源割
り付け対象区間から式木を順に生成する式木生成部と、
割り付けパタンと式木とに対応する命令列を得る命令生
成規則の表であるテンプレートと、前記パタン発生部が
割り付けるパタンと前記式木生成部の生成する式木とに
対応する命令列を前記テンプレートから選択する命令選
択部と、命令列とその命令列を実行する際のコストの対
応表であるコストテーブルと、前記命令選択部が選択す
る命令列のコストを前記コストテーブルから検索するコ
スト検索部と、前記式木生成部が生成する全ての式木を
実行する際の総コストを前記コスト検索部によって得ら
れるコストから計算する総コスト計算部と、前記パタン
発生部の発生する全ての組合せのパタン中より前記総コ
スト計算部によって得られる総コストが最小になるパタ
ンを決定する最適パタン決定部を備えたことを特徴とす
る。
【0008】
【作用】本発明の資源割り付け装置は、前記した構成に
より、パタン発生部が発生する割り付けパタンと、式木
生成部が生成する式木に対して、命令選択部が対応する
命令列を選択し、コスト検索部がコストを検索し、総コ
スト計算部が式木発生部の発生する全ての式木に対する
総コストを計算し、最適パタン決定部がパタン発生部の
発生する全ての組合せのパタン中より総コストが最小と
なるパタンを決定することを可能とするものである。
【0009】
【実施例】以下、本発明の資源割り付け装置の一実施例
を図面を用いて説明する。図1は本発明の一実施例にお
ける資源割り付け装置の構成図である。図中、1はパタ
ン発生部で資源割り付けの組合せのパタンを発生するも
のである。資源割り付け組み合わせパタンとは、生きて
いる変数のうちいずれをレジスタにいずれをメモリに割
り付けるかを示すもの、言い換えれば、変数と資源との
対応を示すものである。
【0010】図2はソースプログラムそのもの又はそれ
をコンパイラ内部で処理できるように作り直した式にお
いて存在する変数(a,b,c,t1 ,t2 )を用い
て、資源割り付けを行うための説明図である。各変数の
下方に引かれている垂線は、その変数が生きている区間
を示す。この区間のうちα区間は全ての変数が生きてい
る。今、資源として4つのレジスタとメモリmが存在す
るとするなら、上記変数に資源を割り付けるパタンとし
ては、例えば図中最下段のように複数個得られる。
【0011】図1において、2は式木生成部で資源割り
付け対象区間から式木を順に生成する。ここで、資源割
り付け対象区間とは、資源の割り付けを矛盾なく行える
最大の区間で、一般には、一つの関数全体又はプログラ
ム全体を資源割り付け対象区間となりうる。式木とは図
3に示すような演算子OPと葉LFが連結された構造を
いう。
【0012】3はテンプレートで、どういった式木に対
してどういった資源が割り付けられた場合に、どういっ
た命令を出すかを示す対応表である。具体的にはこの対
応表は、式木の演算子の種類、型(情報の長さ)、式の
左辺、右辺及び演算結果に割り付けられる資源の種類に
よって命令の種類を選択する表である。ここで、命令と
は、アセンブラコード又はマクロ命令を指す。
【0013】4は命令選択部で、パタン発生部1から得
る資源組合せパタンと式木生成部2から得る式木とに基
づきテンプレート3から命令を選択する。5は命令とサ
イクル数の対応を示すコストテーブルである。ここでコ
ストとは、命令を実行するのに固有のサイクル数をい
う。一般によいコンパイラの生成する目的コードは総サ
イクル数が少ない。
【0014】6は前記命令選択部4が選択した命令列の
コストを前記コストテーブル5から検索するコスト検索
部である。7は前記式木生成部が生成する全ての式木に
対する総コストを前記コスト検索部6から計算する総コ
スト計算部である。8は前記パタン発生部1の発生する
全ての組合せのパタンのうち前記総コスト計算部7で得
られる総コストが最小になるパタンを決定する最適パタ
ン決定部である。
【0015】9は特定の生きている変数に特定の資源を
割り付けた際において資源割り付け対象区間の全ての式
木を実行した場合の総コストを推定する総コスト推定部
である。10は前記総コスト推定部によって得られるコ
ストの推定値を用いて発生するパタンを選抜するパタン
選抜部である。11は対象プログラムの目的に応じてパ
タン選抜を行なうかどうかを選択するパタン選抜選択部
である。次に、前述のように構成された資源割り付け装
置の動作を説明する。 (1)パタン選抜選択部11は、オペレータの指定に基
づき、総コスト推定部9、もしくは、パタン発生部1を
起動する。開発やデバッグの途中のような場合は、精度
はあまり高くなくても高速な資源割り付けが行なわれる
方がプログラム開発の効率がよいので、パタン選抜を行
ない、デバッグ終了後製品化時には、時間はかかるがよ
り高精度の資源割り付けが行なわれるように、パタン選
抜を行なわないようにする。
【0016】パタン選抜を行うときは、処理は次の
(2)へと進み、一方パタン選抜を行わないときは、処
理が(4)までジャンプする。 (2)総コスト推定部9は、ある生きている変数にある
資源を割り付けた時の総コストを推定する。この推定に
は、例えば、その生きている変数の参照定義される回
数、参照定義される場所のループの深さ、生存区間の長
さ等、他の生きている変数と独立なパラメータのみを用
いる。
【0017】(3)パタン選抜部10では、(2)の結
果を用いて、明らかに不利であると思われる割り付けパ
タンを取り除き、有利であると思われるパタンを選抜す
る。 (4)パタン発生部1は、パタン選抜が行なわれたのな
ら、その選抜されたパタンのみを、選抜が行なわれなか
ったのなら、考え得る全てのパタンを順に発生する。
【0018】(5)式木生成部2は資源割り付け対象区
間から式木を順に生成する。 (6)命令選択部4は、パタン発生部1の発生したパタ
ンおよび式木生成部2の生成した式木に対応する命令列
をテンプレート3から選択する。 (7)コスト検索部6は命令選択部4の選択した命令列
のコストをコストテーブル5から検索する。
【0019】(8)総コスト計算部7は、式木生成部2
の発生する全ての式木に対する総コストをコスト検索部
6の検索したコストから計算する。この総コストは、例
えば、対象となる式木が含まれているループの深さで重
み付けされたコストの加算等によって求められる。 (9)最適パタン決定部8は、パタン発生部1の発生す
るパタンのうち、総コスト計算部7で得られるコストが
最小なパタンを決定する。
【0020】尚、本発明の資源割り付け装置は上記実施
例の構成に限定されるものではなく、本発明の要旨を逸
脱していない範囲で変更実施することができる。例え
ば、コストテーブルの代わりに命令列とその命令列がメ
モリ上で占める領域数の対応表である必要領域テーブル
を持ち、コスト検索部の代わりに前記命令選択部が選択
する命令列がメモリ上で占める領域を前記必要領域テー
ブルから検索する検索部を持ち、総コスト計算部の代わ
りに前記式木生成部が生成する全ての式木がメモリ上で
示す総領域数を前記必要領域検索部によって得られる必
要領域から計算する総領域計算部を持ち、最適パタン決
定部の代わりに前記パタン発生部の発生する全ての組合
わせのパタン中より前記領域計算部によって得られる総
領域が最小になるパタンを決定する最適パタン決定部を
持った構成とすることができる。
【0021】又、コストテーブルとテンプレートの代わ
りに、割り付けパタンと式木と命令生成規則とコストと
の対応表であるコストテンプレートを持ち、命令選択部
とコスト検索部の代わりに、命令列の選択と同時にコス
トの検索を行う命令コスト検索部を持った構成とするこ
ともできる。
【0022】
【発明の効果】本発明は以上説明したように、他の生き
ている変数にどのような資源が割り付けられたかという
生きている変数同士の関係を考慮に入れて資源割り付け
を行うので、生きている変数同士の演算が実質上不可能
になったり、時間がかかるといった従来における問題は
確実に解消できる。
【図面の簡単な説明】
【図1】本発明の一実施例の資源割り付け装置の構成図
である。
【図2】資源割り付け組合せパタンを作成するための説
明図である。
【図3】式木の例を示す図である。
【符号の説明】
1 パタン発生部 2 式木生成部 3 テンプレート 4 命令選択部 5 コストテーブル 6 コスト検索部 7 総コスト計算部 8 最適パタン決定部 9 総コスト推定部 10 割り付けパタン選抜部 11 パタン選抜選択部
フロントページの続き (72)発明者 漆原 誠一 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (56)参考文献 特開 平2−236638(JP,A) 特開 昭62−144247(JP,A) 特開 平1−130230(JP,A) 日経バイト44(1988.4)日経BP社 P.106〜113「最適化競争続くCコン パイラ」

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】 資源割り付け対象区間の生きている変数
    中のいずれの変数にどのような資源を割り付けるかとい
    う組合せのパタンを発生するパタン発生部と、 資源割り付け対象区間から式木を順に生成する式木生成
    部と、 割り付けパタンと式木とに対応する命令列を得る命令生
    成規則の表であるテンプレートと、 前記パタン発生部が発生する割り付けるパタンと前記式
    木生成部の生成する式木とに対応する命令列を前記テン
    プレートから選択する命令選択部と、 命令列とその命令列を実行する際の動作クロック数に相
    当するコストとの対応表であるコストテーブルと、 前記命令選択部が選択する命令列のコストを前記コスト
    テーブルから検索するコスト検索部と、 前記式木生成部が生成する全ての式木を実行する際の総
    コストを前記コスト検索部によって得られるコストから
    計算する総コスト計算部と、 前記パタン発生部の発生する全ての組合せのパタン中よ
    り前記総コスト計算部によって得られる総コストが最小
    になるパタンを決定する最適パタン決定部と、を備えた
    ことを特徴とする資源割り付け装置。
  2. 【請求項2】 特定の生きている変数に特定の資源を割
    り付けた際の資源割り付け対象区間の全ての式木を実行
    する総コストを推定する総コスト推定部と、発生する資
    源割り付けパタンを前記総コスト推定部によって得られ
    るコストの推定値を用いて選抜するパタン選抜部と、 を持つことを特徴とする請求項1記載の資源割り付け装
    置。
  3. 【請求項3】 資源割り付けパタンの選抜を行なうかど
    うかを対象プログラムの目的に応じて選択するパタン選
    抜選択部を持つことを特徴とする請求項2記載の資源割
    り付け装置。
  4. 【請求項4】 資源割り付け対象区間の生きている変数
    中のいずれの変数にどのような資源を割り付けるかとい
    う組合せのパタンを発生するパタン発生部と、 資源割り付け対象区間から式木を順に生成する式木生成
    部と、 割り付けパタンと式木とに対応する命令列を得る命令生
    成規則の表であるテンプレートと、 前記パタン発生部が発生する割り付けるパタンと前記式
    木生成部の生成する式木とに対応する命令列を前記テン
    プレートから選択する命令選択部と、 命令列とその命令列がメモリ上で占める領域数の対応表
    である必要領域テーブルと、 前記命令選択部が選択する命令列がメモリ上で占める領
    域数を前記必要領域テーブルから検索する必要領域検索
    部と、 前記式木生成部が生成する全ての式木がメモリ上で占め
    る総領域数を前記必要領域検索部によって得られる必要
    領域から計算する総領域計算部と、 前記パタン発生部の発生する全ての組合せのパタン中よ
    り前記総領域計算部によって得られる総領域が最小にな
    るパタンを決定する最適パタン決定部と、 を備えることを特徴とする資源割り付け装置。
  5. 【請求項5】 コストテーブルとテンプレートの代わり
    に割り付けパタンと式木と命令生成規則とコストとの対
    応表であるコストテンプレートを持ち、命令選択部とコ
    スト検索部の代わりに、命令列の選択と同時にコストの
    検索を行なう命令コスト検索部を持つことを特徴とする
    請求項1記載の資源割り付け装置。
JP3270940A 1991-10-18 1991-10-18 資源割り付け装置 Expired - Fee Related JP2970785B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3270940A JP2970785B2 (ja) 1991-10-18 1991-10-18 資源割り付け装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3270940A JP2970785B2 (ja) 1991-10-18 1991-10-18 資源割り付け装置

Publications (2)

Publication Number Publication Date
JPH05108373A JPH05108373A (ja) 1993-04-30
JP2970785B2 true JP2970785B2 (ja) 1999-11-02

Family

ID=17493126

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3270940A Expired - Fee Related JP2970785B2 (ja) 1991-10-18 1991-10-18 資源割り付け装置

Country Status (1)

Country Link
JP (1) JP2970785B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0947922B1 (en) 1998-04-01 2006-09-27 Matsushita Electric Industrial Co., Ltd. Compiler

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4782444A (en) * 1985-12-17 1988-11-01 International Business Machine Corporation Compilation using two-colored pebbling register allocation method such that spill code amount is invariant with basic block's textual ordering
JPH02236638A (ja) * 1989-03-10 1990-09-19 Hitachi Ltd レジスタ割付け管理方式

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
日経バイト44(1988.4)日経BP社 P.106〜113「最適化競争続くCコンパイラ」

Also Published As

Publication number Publication date
JPH05108373A (ja) 1993-04-30

Similar Documents

Publication Publication Date Title
US4763255A (en) Method for generating short form instructions in an optimizing compiler
Chow et al. Register allocation by priority-based coloring
US6199093B1 (en) Processor allocating method/apparatus in multiprocessor system, and medium for storing processor allocating program
US6725448B1 (en) System to optimally create parallel processes and recording medium
US5963972A (en) Memory architecture dependent program mapping
CA2010068C (en) Partitioning case statements for optimal execution performance
US5937188A (en) Instruction creation device
US20050044538A1 (en) Interprocedural computing code optimization method and system
US6425124B1 (en) Resource allocation device for reducing the size and run time of a machine language program
JP2000222220A (ja) 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ
US20010049818A1 (en) Partitioned code cache organization to exploit program locallity
US6785801B2 (en) Secondary trace build from a cache of translations in a caching dynamic translator
US6360360B1 (en) Object-oriented compiler mechanism for automatically selecting among multiple implementations of objects
US5557797A (en) Scheduling method for automatically developing hardware patterns for integrated circuits
JP2970785B2 (ja) 資源割り付け装置
US20040199907A1 (en) Compiler and method for optimizing object codes for hierarchical memories
Andrade et al. Accurate prediction of the behavior of multithreaded applications in shared caches
JPH01118931A (ja) プログラム変換方式
JP3431568B2 (ja) プログラム変換装置、プログラム変換方法及びプログラム記録媒体
JPH06202875A (ja) インライン展開による最適化を行うコンパイラ
EP0180077A2 (en) A data processing machine for compiling computer programs
US6912640B2 (en) Method to partition large code across multiple e-caches
JPH086797A (ja) 定数参照最適化処理装置
JP6981087B2 (ja) 情報処理装置、方法、及びプログラム
Chow The Compiler System

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees