JP3299611B2 - 資源割付装置 - Google Patents

資源割付装置

Info

Publication number
JP3299611B2
JP3299611B2 JP26281493A JP26281493A JP3299611B2 JP 3299611 B2 JP3299611 B2 JP 3299611B2 JP 26281493 A JP26281493 A JP 26281493A JP 26281493 A JP26281493 A JP 26281493A JP 3299611 B2 JP3299611 B2 JP 3299611B2
Authority
JP
Japan
Prior art keywords
allocation
resource
resource element
allocation target
target
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
JP26281493A
Other languages
English (en)
Other versions
JPH07121377A (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 Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP26281493A priority Critical patent/JP3299611B2/ja
Priority to US08/325,998 priority patent/US5684994A/en
Priority to DE69428247T priority patent/DE69428247T2/de
Priority to EP94307707A priority patent/EP0650121B1/en
Publication of JPH07121377A publication Critical patent/JPH07121377A/ja
Application granted granted Critical
Publication of JP3299611B2 publication Critical patent/JP3299611B2/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/441Register allocation; Assignment of physical memory space to logical memory space
    • 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】
【従来の技術】近年、C言語などの高級プログラミング
言語でプログラムを記述し、プログラムの開発効率を高
めることが盛んに行われている。これら高級プログラミ
ング言語で記述されたソースプログラムは様々なコンパ
イラを使用することによってコンピュータが実行可能な
機械語プログラムに翻訳される。
【0003】ソースプログラムは数値の保持や演算等を
行うために変数を使用している。変数はプログラマによ
って任意に定義され、また必要な個数だけ用いられる。
一方機械語プログラムは数値の保持や演算等を行う際レ
ジスタやメモリを直接操作する必要がある。これらレジ
スタやメモリは、ハードウェアそのものであるから使用
できる個数が限定されている。
【0004】上述した翻訳をコンパイラが行う際、ソー
スプログラム中の変数に、全てレジスタやメモリを割り
付けられなくてはならない。そこで従来のコンパイラ
は、資源割付装置を備えることで、ソースプログラム中
の各変数にレジスタ、メモリを割り付けている。従来の
割付装置に付いて述べる前に、以下使用する用語に付い
て説明しておく。 ・生存区間 変数に値を代入しているステップから、その代入された
値を最後に使用しているステップまでのプログラム上の
区間のことである。 ・割付対象 資源の割付対象としては、単に変数をとる場合もある
が、一つの変数に対して複数の生存区間が存在する場合
は、それぞれの生存区間ごとに別々の資源要素に割り付
けることができるので、変数と生存区間の組とする。 ・割付対象優先度 割り付けを行う際、割り付けの順番を決めるためのパラ
メータである。
【0005】割付対象優先度の計算には様々な方法が存
在する。プログラム中の割付対象の使用率を割付対象優
先度としたときの計算式の例を、以下の{数式1}に示
す。 {数式1} 割付対象優先度=使用率=(defの個数+useの個
数)/生存区間の長さ ここに書かれたdefおよびuseとは割付対象に値を
代入するステップ、およびその値が代入された割付対象
が使用されるステップのことである。
【0006】尚、プログラム中にループ処理があれば、
割付対象優先度にそのループ処理のネストレベルを算入
してもよい。生存区間が重なる割付対象があれば割付対
象優先度にその割付対象の数を算入してもよい。 ・資源要素 コンピュータのハードウェア的要素のうち、割付対象に
割り付け可能な最小単位である。値の一時的な保持や、
個々のレジスタ、メモリ内の番地単位のメモリ要素がそ
の例である。0番目のレジスタ、1番目のレジスタ、1
00番地のメモリ、101番地のメモリはそれぞれ別の
資源要素である。 ・資源 同じ機能を果たす資源要素の集合を示す。
【0007】例えば、資源にはレジスタとメモリとが存
在する。更にレジスタは、アドレスレジスタ、データレ
ジスタ、大域的レジスタ、局所的レジスタというように
同一機能を果たすもので分類できる。またメモリは、高
速メモリ、低速メモリというように同一機能を果たすも
ので分類できる。このように資源要素が同一機能を果た
すもの同士で分類できれば、その分類毎が別々の資源に
なる。 ・干渉グラフ 割付対象と、割付対象同士の生存区間の重なりを図示す
るためのグラフである。
【0008】割付対象をグラフの頂点とし、生存区間が
重なる割付対象(頂点)同士を互いに結んで辺として描
かれる。 ・頂点の次数 干渉グラフにおいて頂点に結合している辺の数である。
従来のコンパイラ、資源割付装置について説明する。
【0009】従来のコンパイラは、構文解析装置と、最
適化装置と、資源割付装置と、コード生成装置とで構成
されている。構文解析装置は、ソースプログラムの構文
を解析し、中間言語プログラムに変換する。最適化装置
は、中間言語プログラムの最適化を行う。この最適化は
最終的に生成される機械語プログラムのプログラムサイ
ズ、及び、処理実行時間を向上させる目的で行われる。
この最適化の過程で最適化装置は、基本ブロック化、制
御フロー解析、及びデータフロー解析を行う。基本ブロ
ック化とは、プログラムを複数の基本ブロックに分解す
ることであり、基本ブロックとは、中間言語プログラム
の最初のステップ、無条件あるいは条件飛び越しの行き
先のステップ、無条件あるいは条件飛び越しの直後のス
テップをリーダとし、リーダーから始まり、次のリーダ
ーの一つ手前まで、あるいはプログラムの最後までの一
連のステップである。制御フロー解析とは、基本ブロッ
ク間の制御の流れを分析することである。またデータフ
ロー解析とは、基本ブロックにおいてそれぞれの変数が
何ステップ目で代入され、何ステップ目で使用されてい
るかについて分析することである。このデータフロー解
析によって生存区間の情報も取得される。
【0010】資源割付装置は、資源割り付けのためのア
ルゴリズムの一つであるグラフ縮退によるグラフ彩色法
を用いてプログラム中の変数にレジスタを割り付ける。
コード生成装置は、中間言語状態のプログラムを、ター
ゲットマシンの機械語命令に変換する。図13は従来の
資源割付装置の構成図である。
【0011】資源割付制御部21は、割付処理全体を制
御する。割付対象生成部22は、資源割付制御部21よ
り起動され、割付対象を生成し、割付対象保持部23に
割付対象を格納する。割付対象保持部23は、割付対象
を格納する。優先度計算部24は資源割付制御部21に
より起動され、最適化装置が作成したデータフロー解析
の情報、制御フロー解析の情報をもとに、各割付対象の
割付対象優先度を計算する。
【0012】干渉グラフ生成部25は、資源割付制御部
21により起動され、干渉グラフを生成し、干渉グラフ
保持部26に干渉グラフを描くための情報、つまり干渉
グラフ情報を格納する。干渉グラフ保持部26は、干渉
グラフ生成部25で生成する干渉グラフ情報を保持す
る。
【0013】頂点結合部27は、資源割付制御部21に
より起動され、干渉グラフ中の、辺で結ばれていない2
つの頂点を1つに結合する。言い換えれば頂点結合部2
7は、生存区間が重ならない2つの割付対象を1つの割
付対象に結合する。資源要素割付部28は、資源割付制
御部21により起動され、グラフ縮退によるグラフ彩色
法を利用して割付対象に資源要素を割り付ける。
【0014】ここで述べるグラフ縮退によるグラフ彩色
法とは、干渉グラフの各頂点の色分けをする場合に辺で
結ばれていれば色を変えるという規則に従って、最も少
ない色数で干渉グラフの各頂点の色分けを行う近似アル
ゴリズムである。上述のように構成された従来の資源割
付装置の動作を以下に説明する。資源割付制御部21が
割付対象生成部22を起動する。割付対象生成部22
は、既に最適化装置が行ったデータフロー解析により得
られた各変数の生存区間を参照して割付対象を生成し、
割付対象保持部23に割付対象を格納する。
【0015】既に図14(1)に示すような「プログラ
ム」に対して最適化装置が作動し、基本ブロック化、制
御フロー解析、及びデータフロー解析が行われ、得られ
た結果を用いて、割付対象生成部22が作動し、図14
に示すような「(2)割付対象」の情報が得られる。図
中において、変数b及びeがそれぞれb1、b2及びe
1、e2に分割されているのは、変数b、eの生存区間
が異なる部分を別個の割付対象としているからである。
割付対象生成部22によって割付対象a、b1、b2、
c、d、e1、e2が割付対象保持部23に格納され
る。次に資源割付制御部21が優先度計算部24を起動
し、割付対象の優先度を計算する。計算した結果、割付
対象b1の割付対象優先度が一番低いものとする。次に
資源割付制御部21が干渉グラフ生成部25を起動し、
割付対象の生存区間を参照して、これらをそれぞれ頂点
と辺に置き換えた干渉グラフの情報を生成し、干渉グラ
フ保持部26に格納する。図14(2)の割付対象に対
する干渉グラフを図15(1)に示す。次に資源割付制
御部21が、頂点結合部27を起動し、同一のレジスタ
を割り付けると不要な代入を削除できる場合、頂点結合
を行なう。図15(1)においては、割付対象b2、c
がこの条件を満たすのでこれらの頂点は、図15(2)
のように頂点b2cに結合される。資源割付制御部21
が資源要素割付部28を起動し、資源要素割付部28
は、以下に示すような手順により、割付対象にレジスタ
またはメモリを割り付ける。
【0016】干渉グラフ保持部26に保持されている干
渉グラフを元の干渉グラフとし、その元の干渉グラフの
頂点の中で、頂点の次数、つまり頂点に結合している辺
の数が、レジスタの数未満の頂点を一つ選ぶ。ここで次
数がレジスタの数未満の頂点を次数の低い頂点と呼び、
次数がレジスタの数以上の頂点を次数の高い頂点と呼
ぶ。資源要素割付部28はその選んだ頂点と、その頂点
に結合されている辺を削除し、元の干渉グラフの縮小を
行う。この作業を頂点削除と呼ぶ。この時削除された頂
点である割付対象は、後積み先出し方式のスタック領域
に積み込まれる。全ての頂点の次数が高いとき、つまり
レジスタ数以上であるときは、強制削除を行い、これを
繰り返すことでレジスタの数未満の頂点を作る。強制削
除とは、割付対象優先度の最も低い割付対象を選び、そ
の割付対象である頂点と、その頂点に結合している辺を
元の干渉グラフから削除することである。強制削除され
た割付対象はスタックに積まれるのではなく、強制的に
メモリを割り付ける。このような割付対象は、使用率の
低い割付対象であり、レジスタを割り付ける必要が無い
としたためである。この元の干渉グラフの縮小と、スタ
ックへの積み込み作業を繰り返し、割付対象を全てスタ
ック領域に積み込んでしまう。頂点である割付対象が全
てスタック領域に積まれてしまうと元の干渉グラフは消
えてしまう。元の干渉グラフが消えた後、レジスタへの
割り付けと、新干渉グラフの作成を始める。新干渉グラ
フは、スタック領域に積まれている全ての割付対象に対
して頂点再生を繰り返すことで行われる。頂点再生と
は、スタック領域から取り出した割付対象を頂点にして
辺の復活を行い、レジスタを割り付けることである。辺
の復活とは、その取り出した割付対象が、元の干渉グラ
フにおいて、他の割付対象と辺で結ばれていた場合、新
干渉グラフにおいてその辺を復活することである。この
ように、頂点再生を繰り返して、割付対象資源割付部1
2は新干渉グラフを完成させる。新干渉グラフの各頂点
にはそれぞれ別々のレジスタを割り付けるので、割付対
象へのレジスタの割り付けが完了する。
【0017】図16は、図15(2)の干渉グラフに関
して、レジスタをR0、R1、R2の3個としたとき、
上述の手順を適用することで、干渉グラフが変遷する様
子を示した図である。元の干渉グラフに対して、頂点削
除が行われる。このとき削除される頂点は、d、e2が
であり、これらはスタックに積まれる(図16(1)
(2))。次に、図16(2)に示された元の干渉グラ
フの状態においては、次数が3未満の頂点が存在しな
い。ここで強制削除を実行する。割付対象優先度が、
a、e1、b2c、b1の順に高いとして、最も割付対
象優先度の低いb1を強制削除する(図16(3))。
次に、次数が2以下の頂点を次々と頂点削除してスタッ
クに積む(図16(3)(4))。次に、グラフが空に
なったので、頂点再生を行う。このaは、第1の割付対
象であるから、レジスタ R0が割り付けられる。次に
スタックの先頭からe1を取り出し、頂点再生を行う。
このとき元の干渉グラフにおいて、e1はaと辺で結ば
れているので、e1にはR0と別のレジスタであるR1
を割り付ける(図16(5)(6))。
【0018】以下、スタックが空になるまで同様に繰り
返す(図16(7)(8)(9))と最終的な新干渉グ
ラフが得られ、割付対象は以下に示すように割り付けら
れる。 割付対象 a b2 c d e1 e2 レジスタ R0 R2 R2 R1 R1 R0 以上、プログラム中に変数のみが存在する場合について
述べた。しかしC言語等で記述されたプログラムは、変
数を用いた演算式、論理式だけで構成されているわけで
はなく、関数呼び出しを行っている部分が存在する。何
故ならC言語等で記述されたプログラムは、関数の定義
と関数呼び出しとによって階層的な処理構造になってい
るからである。以下、プログラム中に関数呼び出しが存
在する場合の資源割り付けについて簡単に述べておく。
【0019】関数呼び出しを行う際には、呼び出す関数
に値を引き渡す作業と、呼び出した関数からの戻り値を
取得する作業と、関数呼び出しによって内容が破壊され
るレジスタを退避・復元する作業とが必要になる。レジ
スタを使用することによって、これらの関数呼び出し作
業の効率化を図る場合、引数レジスタ、戻り値レジス
タ、破壊レジスタを予め設定する。
【0020】引数レジスタとは、関数呼び出し時に引数
をレジスタで引き渡すためのレジスタである。戻り値レ
ジスタとは、関数呼び出しの戻り値を返すためのレジス
タである。破壊レジスタとは、関数呼び出しの開始と終
了時に、内容を退避・復元する必要のないレジスタであ
る。
【0021】特に、関数呼び出しの前後では、呼び出さ
れる関数の処理中にレジスタの内容が破壊される可能性
がある。そのため通常の関数呼び出し時には、全てのレ
ジスタの内容を退避・復元する必要がある。この退避・
復元作業は関数呼び出しのオーバヘッドを増大させる。
そこで、レジスタの内容の退避・復元作業が必要でない
破壊レジスタを設定し、関数呼び出しのオーバヘッドを
軽減させるのである。
【0022】但し上述のグラフ縮退によるグラフ彩色法
は、このような引数レジスタ、戻り値レジスタ、破壊レ
ジスタを、効果的に割付対象に割り付けることはできな
い。
【0023】
【発明が解決しようとする課題】しかしながら上記従来
技術における資源割付装置によれば、割付対象の優先度
が正確に反映されないという問題点があった。例えば次
数が最低であり、割付対象の優先度が最高である割付対
象aと、次数が最高であり、割付対象の優先度が最低で
ある割付対象bとが割付対象abに頂点結合されたとす
る。資源割付の際、次数が最高であり、割付対象の優先
度が中間値程度である割付対象abは、資源要素割付部
28が行う強制削除の対象になり得る。割付対象abが
強制削除されると、結局、割付対象の優先度が最高であ
り第1にレジスタを割り付けるべき割付対象aに、メモ
リを割り付けてしまう。
【0024】また、資源が3種類以上の機能に別れてい
る場合に、資源の機能に応じて割付対象を割り付けるこ
とができないという問題点があった。例えば、これから
資源割付を行おうとするターゲットマシンaには、デー
タレジスタとアドレスレジスタとが同数だけ備えられて
いるものとする。レジスタと、レジスタ数が足りない時
に強制的な割付対象の割り付けを行うメモリとを使い分
けるだけの従来の資源割付は、第2のレジスタセットで
あるアドレスレジスタを利用することができない。つま
り従来の方法は、多種類の資源を考慮した資源割付を行
うには不充分である。
【0025】また、関数呼び出しを効率良く行うために
設定される引数レジスタ、戻り値レジスタ、破壊レジス
タが存在しても、これらを対象外にして資源割り付けが
行われるという問題点があった。例えば、プログラム中
に引数レジスタが存在しても、従来の資源割付装置は、
引き数レジスタが割り付けられている割付対象f0を別の
ものとして扱うので、割付対象f0の生存区間の終了点と
生存区間の開始点が一致する割付対象xに、引数レジス
タとして使用されているレジスタと異なるレジスタを割
り付けることも有り得る。割付対象xに、引数レジスタ
として使用されているレジスタと異なるレジスタを割り
付ければ、その分だけ転送命令が必要になる。
【0026】レジスタの個数にかなり余裕がある場合、
上述の問題点による影響は無視できるレベルに留まる。
しかし多くの組み込み用途向けのマイクロプロセッサの
ようにレジスタの個数が制限されている場合、あるいは
果たす機能が異なるレジスタが少数でかつ多種類備えら
れている場合には上述の問題点は顕著に現れる。本発明
は、上記問題点に鑑み、割付対象の優先度を用いて割付
対象を資源要素に割り付け、資源が2種類以上に分類さ
れている場合、資源が果たす機能に応じて資源を使い分
けられる資源割り付け装置および方法を提供することを
目的とする。
【0027】
【課題を解決するための手段】上記課題を解決するため
に本発明の資源割付装置は、高級言語で書かれたプログ
ラムを機械語プログラムに翻訳するコンパイラに用いら
れ、レジスタ、メモリ等のハードウェアである資源の資
源要素を、プログラミング言語で記述されたプログラム
の中の変数と生存区間の組である割付対象に、割付対象
の優先度に基づいて割り付ける資源割付装置であって、
プログラム中の割付対象とその優先度とを保持する割付
対象保持手段と、前記割付対象保持手段から優先度最大
の割付対象を取り出し、優先度が最大の割付対象に資源
要素の何れかを割り付ける第1の資源要素割付手段と、
割付結果を格納する割付結果格納手段と、直前に割り付
けられた割付対象の優先度に対して、次順位の優先度を
持つ割付対象を、前記割付対象保持手段から取り出す割
付対象取出手段と、前記割付対象取出手段が取り出した
割付対象について、生存区間が重なっている割付対象を
検出する第1の割付対象検出手段と、全ての資源要素の
中から、前記第1の割付対象検出手段が検出した割付対
象に割り付けていない資源要素を、前記割付結果格納手
段を参照して判定する第1の資源要素判定手段と、前記
割付対象取出手段が取り出した割付対象について、生存
区間の開始点又は終了点を参照し、該開始点で生存区間
が終わる割付対象と、該終了点で生存区間が始まる割付
対象とを検出する第2の割付対象検出手段と、前記第2
の割付対象検出手段が検出した割付対象に割り付けてい
る資源要素を、前記割付結果格納手段を参照して判定す
る第2の資源要素判定手段と、前記第1の資源要素判定
手段が判定した資源要素と第2の資源要素判定手段が判
定した資源要素の何れかの資源要素を、前記割付対象取
出手段が取り出した割付対象に割り付け、前記割付結果
格納手段に格納する第2の資源要素割付手段と、全ての
割付対象が割り付けられるまで、前記割付対象取出手段
の起動を繰り返えす制御手段とを備えている。
【0028】また、前記第2の資源要素割付手段は第1
の資源要素判定手段が判定した資源要素が1つである場
合、その資源要素を前記割付対象取出手段が取り出した
割付対象に割り付ける第1の割付手段と、第1の資源要
素判定手段が判定した資源要素が複数個存在し、前記第
2の資源要素判定手段が判定した結果該当する資源要素
が存在しない場合、前記第1の資源要素判定手段が判定
した資源要素の何れかを前記割付対象取出手段が取り出
した割付対象に割り付ける第2の割付手段と、第1の資
源要素判定手段が判定した資源要素が複数個存在し、前
記第2の資源要素判定手段が判定した資源要素が存在す
る場合、前記第1の資源要素判定手段の判定結果である
資源要素であり、かつ前記第2の資源要素判定手段の判
定結果である資源要素の何れかを前記割付対象取出手段
が取り出した割付対象に割り付ける第3の割付手段とを
備えていてもよい。
【0029】また、前記第3の割付手段は第1の資源要
素判定手段が判定した資源要素が複数個存在し、第2の
資源要素判定手段が判定した資源要素が複数個存在する
場合、それぞれの資源要素について、資源要素を使用す
る命令の生成コードの実行時間およびメモリサイズが減
少する度合である利得値を算出する利得値算出手段と、
前記利得値算出手段が算出した利得値が最大の資源要素
を、前記割付対象取出手段が取り出した割付対象に割り
付ける第4の割付手段とを備えていてもよい。
【0030】また、前記第2の資源要素割付手段は更に
前記第2の割付対象検出手段が検出した割付対象の生存
区間と、生存区間が重なる割付対象を検出する第3の割
付対象検出手段と、前記割付結果格納手段を参照して、
前記第3の割付対象検出手段が検出した割付対象に割り
付けている資源要素を判定する第3の資源要素判定手段
と、前記第2の資源要素判定手段が判定した結果該当す
る資源要素がなかった場合、前記第1の資源要素判定手
段の判定結果であり、かつ前記第3の資源要素判定手段
の判定結果でない資源要素を前記割付対象取出手段が取
り出した割付対象に割り付ける第5の割付手段とを備え
ていてもよい。
【0031】また、前記第2の資源要素割付手段は更に
第1の資源要素判定手段が判定した資源要素が複数個存
在し、第3の資源要素判定手段が判定した資源要素が複
数個存在する場合、それぞれの資源要素について、資源
要素を使用する命令の生成コードの実行時間およびメモ
リサイズが増加する度合である損失値を算出する損失値
算出手段と、前記損失値算出手段が算出した損失値が最
小の資源要素を前記割付対象取出手段が取り出した割付
対象に割り付ける第6の割付手段とを備えていてもよ
い。
【0032】また、前記利得値算出手段はそれぞれの資
源要素に割り付けられている割付対象の優先度に基づい
て、前記第2の資源要素判定手段が判定したそれぞれの
資源要素についての前記利得値を算出してもよい。ま
た、前記利得値算出手段は前記第2の資源要素判定手段
が判定したそれぞれの資源要素に割り付けられている割
付対象であり、かつ第2の割付対象検出手段の検出結果
である割付対象の個数に基づいて、前記第2の資源要素
判定手段が判定したそれぞれの資源要素についての前記
利得値を算出してもよい。
【0033】また、前記損失値算出手段は前記第3の資
源要素判定手段が判定したそれぞれの資源要素に割り付
けられている割付対象と生存区間が重なる割付対象であ
り、前記第2の割付対象検出手段の検出結果である割付
対象の優先度に基づいて、前記第3の資源要素判定手段
が判定したそれぞれの資源要素についての前記損失値を
算出してもよい。
【0034】また、前記損失値算出手段は第3の資源要
素判定手段が判定したそれぞれの資源要素に割り付けら
れている割付対象と生存区間が重なる割付対象であり、
前記第2の割付対象検出手段の検出結果である割付対象
の個数に基づいて、前記第2の資源要素判定手段が判定
したそれぞれの資源要素についての前記損失値を算出し
てもよい。
【0035】また、前記第1の資源要素判定手段は、資
源要素を用いる機械語プログラムの各命令について、そ
の命令を実行する際の実行時間およびその命令のメモリ
サイズを示すコストを、各資源毎に記憶するコスト記憶
手段と、1つの割付対象の変数が生存区間内で使用され
ているそれぞれのプログラム中の命令について、コスト
記憶手段を参照して資源毎にコストを取り出すコスト検
索手段と、コスト検索手段により取り出されたコストを
それぞれの割付対象について、資源毎に集計するコスト
集計手段と、コスト集計手段の集計結果のうち、どの資
源について集計値が最小になるのかを判定する第1の資
源判定手段と、前記第1の資源判定手段により判定され
た資源に含まれる資源要素の中から、前記第1の割付対
象検出手段が検出した割付対象に割り付けられていない
資源要素を判定する最小コスト資源要素判定手段とを備
えていてもよい。
【0036】また、高級言語で書かれたプログラムを機
械語プログラムに翻訳するコンパイラに用いられ、レジ
スタ、メモリ等のハードウェアである資源の資源要素
を、プログラミング言語で記述されたプログラムの中の
変数と生存区間の組である割付対象に、割付対象の優先
度に基づいて割り付ける資源割付装置であって、プログ
ラム中の割付対象とその優先度とを保持する割付対象保
持手段と、優先度が最大の割付対象に、資源要素の何れ
かを割り付ける第1の資源要素割付手段と、割付結果を
格納する割付結果格納手段と、前記割付対象保持手段に
保持されているそれぞれの割付対象について、生存区間
の開始点と、生存区間の終了点とが一致している割付対
象の組み合わせを全て検出する同一資源要素割付関係一
括検出手段と、前記同一資源要素割付関係一括検出手段
が検出した割付対象の組み合わせで同じ割付対象を含む
ものを抽出し、抽出したものをグループ化する大域グル
ープ化手段と、直前に割り付けられた割付対象の優先度
に対して、次順位の優先度を持つ割付対象を、前記割付
対象保持手段から取り出す割付対象取出手段と、前記割
付対象取出手段が取り出した割付対象について、生存区
間が重なっている割付対象を検出する第1の割付対象検
出手段と、全ての資源要素から、前記第1の割付対象検
出手段が検出した割付対象に割り付けていない資源要素
を、前記割付結果格納手段を参照して判定する第1の資
源要素判定手段と、前記割付対象取出手段が取り出した
割付対象が、どの大域グループに属するかを調べる第1
の大域グループ検出手段と、前記割付対象取出手段が取
り出した割付対象が属する大域グル−プの、他の割付対
象に割り付けられている資源要素を、前記割付結果格納
手段を参照して判定する第2の資源要素判定手段と、前
記第1の資源要素判定手段が判定した資源要素であり、
かつ第2の資源要素判定手段が判定した資源要素の何れ
かを、前記割付対象取出手段が取り出した割付対象に割
り付ける第2の資源要素割付手段と、全ての割付対象が
割り付けられるまで、前記割付対象取出手段の起動を繰
り返えす制御手段とを備えてもよい。
【0037】また、前記第2の資源要素割付手段は、第
1の資源要素判定手段が判定した資源要素が1つである
場合、その資源要素を前記割付対象取出手段が取り出し
た割付対象に割り付ける第1の割付手段と、第1の資源
要素判定手段が判定した資源要素が複数個存在し、前記
第2の資源要素判定手段が判定した資源要素が存在しな
い場合、前記第1の資源要素判定手段が判定した資源要
素の何れかを前記割付対象取出手段が取り出した割付対
象に割り付ける第2の割付手段と、第1の資源要素判定
手段が判定した資源要素が複数個存在し、前記第2の資
源要素判定手段が判定した資源要素が存在する場合、前
記第1の資源要素判定手段の判定結果であり、前記第2
の資源要素判定手段の判定結果である資源要素の何れか
を前記割付対象取出手段が取り出した割付対象に割り付
ける第3の割付手段とを備えていてもよい。
【0038】また、前記第3の割付手段は第2の資源要
素判定手段の判定結果である資源要素が複数個存在する
場合、その資源要素に割り付けられている割付対象の優
先度を参照し、最も大きい優先度の割付対象に割り付け
ている資源要素を、割付対象取出手段が取り出した割付
対象に割り付けるようにしてもよい。
【0039】また、前記第2の資源要素割付手段は更に
同一の資源要素に割り付けられた割付対象の優先度を、
資源要素毎に集計する第1の優先度集計手段と、前記割
付対象取出手段が取り出した割付対象が属する大域グル
−プ内に、割り付け済みの割付対象が2つ以上存在する
場合、前記割付対象取出手段が取り出した割付対象に前
記第1の優先度集計手段が集計した集計値が最大の資源
要素を割り付ける第4の割付手段とを備えてもよい。
【0040】また、前記資源割付装置は更に前記割付対
象取出手段が取り出した割付対象が属する大域グループ
の生存区間と、生存区間が重なる大域グル−プを全て検
出する第2の大域グル−プ検出手段と、前記第2の大域
グル−プ検出手段が検出した大域グル−プに属する割付
対象を全て検出する第4の割付対象検出手段と、前記第
4の割付対象検出手段が検出した割付対象の何れにも割
り付けていない資源要素を、前記割付結果格納手段を参
照して判定する第3の資源要素判定手段とを備え、前記
第2の資源要素割付手段は更に割付対象取出手段が取り
出した割付対象が属する前記大域グループ内の他の割付
対象の何れにも資源要素を割り付けていない場合、前記
第3の資源要素判定手段が判定した資源要素の何れかを
割付対象に割り付ける第5の割付手段を備えていてもよ
い。
【0041】また、前記資源割付装置は更に前記第4の
割付対象検出手段が検出した割付対象のうち、同一の資
源要素に割り付けられた割付対象の優先度を、資源要素
毎に集計をする第2の優先度集計手段とを備え、前記第
2の資源要素割付手段は更に前記割付対象取出手段が取
り出した割付対象に、前記第2の優先度集計手段が集計
した集計値が最小の資源要素を割り付ける第6の割付手
段を備えていてもよい。
【0042】また、高級言語で書かれたプログラムを機
械語プログラムに翻訳するコンパイラに用いられ、レジ
スタ、メモリ等のハードウェアである資源の資源要素
を、プログラミング言語で記述されたプログラムの中の
変数と生存区間の組である割付対象に、割付対象の優先
度に基づいて割り付ける資源割付装置であって、プログ
ラム中の割付対象とその優先度とを保持する割付対象保
持手段と、前記割付対象保持手段から優先度最大の割付
対象を取り出し、優先度が最大の割付対象に資源要素の
何れかを割り付ける第1の資源要素割付手段と、割付結
果を格納する割付結果格納手段と、直前に割り付けられ
た割付対象の優先度に対して、次順位の優先度を持つ割
付対象を、前記割付対象保持手段から取り出す割付対象
取出手段と、前記割付対象取出手段が取り出した割付対
象について、生存区間が重なっている割付対象を検出す
る第1の割付対象検出手段と、全ての資源要素の中か
ら、前記第1の割付対象検出手段が検出した割付対象に
割り付けていない資源要素を、前記割付結果格納手段を
参照して判定する第1の資源要素判定手段と、前記割付
対象取出手段が取り出した割付対象について、生存区間
の開始点又は終了点を参照し、該開始点で生存区間が終
わる割付対象と、該終了点で生存区間が始まる割付対象
とを検出する第2の割付対象検出手段と、前記第2の割
付対象検出手段が検出した割付対象に割り付けている資
源要素を、前記割付結果格納手段を参照して判定する第
2の資源要素判定手段と、前記第2の割付対象検出手段
が検出した割付対象の生存区間と、生存区間が重なる割
付対象を検出する第3の割付対象検出手段と、前記割付
結果格納手段を参照して、前記第3の割付対象検出手段
が検出した割付対象に割り付けている資源要素を判定す
る第3の資源要素判定手段と、第1の資源要素判定手段
が判定した資源要素であり、かつ前記第2の資源要素判
定手段の判定結果である資源要素、または、第1の資源
要素判定手段が判定した資源要素であり、かつ前記第3
の資源要素判定手段の判定結果でない資源要素の何れか
を前記割付対象取出手段が取り出した割付対象に割り付
ける第2の資源要素割付手段と、全ての割付対象が割り
付けられるまで、前記割付対象取出手段の起動を繰り返
えす制御手段とを備えている。
【0043】また、前記第2の資源要素割付手段は、第
1の資源要素判定手段が判定した資源要素が1つの場
合、前記第1の資源要素判定手段の判定結果に該当する
資源要素を前記割付対象取出手段が取り出した割付対象
に割り付ける第1の割付手段と、前記第1の資源要素判
定手段の判定結果であり、前記第2の資源要素判定手段
の判定結果である資源要素については、その資源要素を
使用する命令の生成コードの実行時間およびメモリサイ
ズが減少する度合である局所的利得値を算出し、前記第
1の資源要素判定手段の判定結果であり、前記第2の資
源要素判定手段の判定結果でない資源要素については、
前記局所的利得値を0(ゼロ)とする局所的利得値算出
手段と、前記第1の資源要素判定手段の判定結果であ
り、前記第3の資源要素判定手段の判定結果である資源
要素については、その資源要素を使用する命令の生成コ
ードの実行時間およびメモリサイズが増加する度合であ
る局所的損失値を算出し、前記第1の資源要素判定手段
の判定結果であり、前記第3の資源要素判定手段の判定
結果でない資源要素については、前記局所的損失値を0
(ゼロ)とする局所的損失値算出手段と、前記第1の資
源要素判定手段の判定結果である資源要素について、前
記局所的利得値算出手段が算出した局所的利得値と、前
記局所的損失値算出手段が算出した局所的損失値との差
である局所的絶対利得値を算出する局所的絶対利得値算
出手段と、前記第1の資源要素判定手段の判定結果であ
り、前記局所的絶対利得値算出手段が算出した局所的絶
対利得値が最大の資源要素を判定する第6の資源要素判
定手段と、 前記第1の資源要素判定手段が判定した資
源要素であり、かつ前記第6の資源要素判定手段の判定
結果である資源要素を、前記割付対象取出手段が取り出
した割付対象に割り付ける第2の割付手段とを備えてい
てもよい。
【0044】また、高級言語で書かれたプログラムを機
械語プログラムに翻訳するコンパイラに用いられ、レジ
スタ、メモリ等のハードウェアである資源の資源要素
を、プログラミング言語で記述されたプログラムの中の
変数と生存区間の組である割付対象に、割付対象の優先
度に基づいて割り付ける資源割付装置であって、プログ
ラム中の割付対象とその優先度とを保持する割付対象保
持手段と、優先度が最大の割付対象に、資源要素の何れ
かを割り付ける第1の資源要素割付手段と、割付結果を
格納する割付結果格納手段と、前記割付対象保持手段に
保持されているそれぞれの割付対象について、生存区間
の開始点と、生存区間の終了点とが一致している割付対
象の組み合わせを全て検出する同一資源要素割付関係一
括検出手段と、前記同一資源要素割付関係一括検出手段
が検出した割付対象の組み合わせで同じ割付対象を含む
ものを抽出し、抽出したものをグループ化する大域グル
ープ化手段と、直前に割り付けられた割付対象の優先度
に対して、次順位の優先度を持つ割付対象を、前記割付
対象保持手段から取り出す割付対象取出手段と、前記割
付対象取出手段が取り出した割付対象について、生存区
間が重なっている割付対象を検出する第1の割付対象検
出手段と、全ての資源要素から、前記第1の割付対象検
出手段が検出した割付対象に割り付けていない資源要素
を、前記割付結果格納手段を参照して判定する第1の資
源要素判定手段と、前記割付対象取出手段が取り出した
割付対象について、生存区間の開始点又は終了点を参照
し、該開始点で生存区間が終わる割付対象と、該終了点
で生存区間が始まる割付対象とを検出する第2の割付対
象検出手段と、前記第2の割付対象検出手段が検出した
割付対象に割り付けている資源要素を、前記割付結果格
納手段を参照して判定する第2の資源要素判定手段と、
前記第2の割付対象検出手段が検出した割付対象の生存
区間と、生存区間が重なる割付対象を検出する第3の割
付対象検出手段と、前記割付結果格納手段を参照して、
前記第3の割付対象検出手段が検出した割付対象に割り
付けている資源要素を判定する第3の資源要素判定手段
と、前記割付対象取出手段が取り出した割付対象が、ど
の大域グループに属するかを調べる第1の大域グループ
検出手段と、前記第1の大域グル−プ検出手段の検出結
果である大域グル−プの、他の割付対象を全て検出する
第4の割付対象検出手段と、前記第4の割付対象検出手
段が検出した割付対象に割り付けている資源要素を、前
記割付結果格納手段を参照して判定する第4の資源要素
判定手段と、前記割付対象取出手段が取り出した割付対
象が属する大域グループの生存区間と、生存区間が重な
る大域グル−プを全て検出する第2の大域グル−プ検出
手段と、前記第2の大域グル−プ検出手段が検出した大
域グル−プに属する割付対象を全て検出する第5の割付
対象検出手段と、前記第5の割付対象検出手段が検出し
た割付対象に割り付けられている全ての資源要素を、前
記割付結果格納手段を参照して判定する第5の資源要素
判定手段と、前記第1の資源要素判定手段が判定した資
源要素であり、かつ前記第2、4の資源要素判定手段の
判定結果である資源要素、または、第1の資源要素判定
手段が判定した資源要素であり、かつ前記第3、5の資
源要素判定手段の判定結果でない資源要素の何れかを前
記割付対象取出手段が取り出した割付対象に割り付ける
第2の資源要素割付手段と、全ての割付対象が割り付け
られるまで、前記割付対象取出手段の起動を繰り返えす
制御手段とを備えている。
【0045】また、前記第2の資源要素割付手段は、第
1の資源要素判定手段が判定した資源要素が1つの場
合、前記第1の資源要素判定手段の判定結果に該当する
資源要素を前記割付対象取出手段が取り出した割付対象
に割り付ける第1の割付手段と、前記第1の資源要素判
定手段の判定結果であり、前記第2の資源要素判定手段
の判定結果である資源要素については、その資源要素を
使用する命令の生成コードの実行時間およびメモリサイ
ズが減少する度合である局所的利得値を算出し、前記第
1の資源要素判定手段の判定結果であり、前記第2の資
源要素判定手段の判定結果でない資源要素については、
前記局所的利得値を0(ゼロ)とする局所的利得値算出
手段と、前記第1の資源要素判定手段の判定結果であ
り、前記第3の資源要素判定手段の判定結果である資源
要素については、その資源要素を使用する命令の生成コ
ードの実行時間およびメモリサイズが増加する度合であ
る局所的損失値を算出し、前記第1の資源要素判定手段
の判定結果であり、前記第3の資源要素判定手段の判定
結果でない資源要素については、前記局所的損失値を0
(ゼロ)とする局所的損失値算出手段と、前記第1の資
源要素判定手段の判定結果である資源要素について、前
記局所的利得値算出手段が算出した局所的利得値と、前
記局所的損失値算出手段が算出した局所的損失値との差
である局所的絶対利得値を算出する局所的絶対利得値算
出手段と、前記第1の資源要素判定手段の判定結果であ
り、前記局所的絶対利得値算出手段が算出した局所的絶
対利得値が最大の資源要素を判定する第6の資源要素判
定手段と、 前記第1の資源要素判定手段が判定した資
源要素であり、かつ前記第6の資源要素判定手段の判定
結果である資源要素を、前記割付対象取出手段が取り出
した割付対象に割り付ける第2の割付手段とを備えてい
てもよい。
【0046】また、前記第2の資源要素割付手段は更に
前記第6の資源要素判定手段が複数個の資源要素を判定
した場合、第6の資源要素判定手段の判定結果であり、
前記第4の資源要素判定手段の判定結果である資源要素
については、その資源要素を使用する命令の生成コード
の実行時間およびメモリサイズが減少する度合である大
域的利得値を算出し、前記第1の資源要素判定手段の判
定結果であり、第6の資源要素判定手段の判定結果であ
り、前記第4の資源要素判定手段の判定結果でない資源
要素については、前記大域的利得値を0(ゼロ)とする
大域的利得値算出手段と、前記第6の資源要素判定手段
の判定結果であり、前記第5の資源要素判定手段の判定
結果である資源要素については、資源要素を使用する命
令の生成コードの実行時間およびメモリサイズが増加す
る度合である大域的損失値を算出し、前記第1の資源要
素判定手段の判定結果であり、前記第6の資源要素判定
手段の判定結果であり、前記第5の資源要素判定手段の
判定結果でない資源要素については前記大域的損失値を
0(ゼロ)とする大域的損失値算出手段と、前記第6の
資源要素判定手段の判定結果であるそれぞれの資源要素
について、前記大域的利得値算出手段が算出し大域的利
得値と、前記大域的損失値算出手段が算出した大域的損
失値との差である大域的絶対利得値を算出する大域的絶
対利得値算出手段と、前記第6の資源要素判定手段の判
定結果であり、前記大域的絶対利得値算出手段が算出し
た大域的絶対利得値が最大の資源要素である資源要素
を、前記割付対象取出手段が取り出した割付対象に割り
付ける第6の割付手段とを備えていてもよい。
【0047】また、前記局所的利得値算出手段は、前記
第2の資源要素判定手段の判定結果であるそれぞれの資
源要素の前記局所的利得値を、前記第2の資源要素判定
手段が判定したそれぞれの資源要素に割り付けられてい
る割付対象であり、第2の割付対象検出手段の検出結果
である割付対象の優先度に基づいて算出するようにして
もよい。
【0048】また、前記局所的利得値算出手段は、前記
第2の資源要素判定手段の判定結果であるそれぞれの資
源要素の前記局所的利得値を、前記第2の資源要素判定
手段が判定したそれぞれの資源要素に割り付けられてい
る割付対象であり、第2の割付対象検出手段の検出結果
である割付対象の個数に基づいて算出するようにしても
よい。
【0049】また、前記局所的損失値算出手段は、前記
第3の資源要素判定手段の判定結果であるそれぞれの資
源要素の前記局所的損失値を、前記第3の資源要素判定
手段が判定したそれぞれの資源要素に割り付けられてい
る割付対象と生存区間が重なる割付対象であり、前記第
2の割付対象検出手段の検出結果である割付対象の優先
度に基づいて算出するようにしてもよい。
【0050】また、前記局所的損失値算出手段は、前記
第3の資源要素判定手段の判定結果であるそれぞれの資
源要素の前記局所的損失値を、第3の資源要素判定手段
が判定したそれぞれの資源要素に割り付けられている割
付対象と生存区間が重なる割付対象であり、前記第2の
割付対象検出手段の検出結果である割付対象の個数に基
づいて算出するようにしてもよい。
【0051】また、前記大域的利得値算出手段は、前記
第4の割付対象検出手段が検出した割付対象のうち、同
一の資源要素に割り付けられた割付対象の優先度の集計
値に基づいて、大域的利得値を算出するようにしてもよ
い。また、前記大域的利得値算出手段は、前記第4の割
付対象検出手段が検出した割付対象のうち、同一の資源
要素に割り付けられた割付対象の個数の集計値に基づい
て、大域的利得値を算出するようにしてもよい。
【0052】また、前記大域的損失値算出手段は、前記
第5の割付対象検出手段が検出した割付対象のうち、同
一の資源要素に割り付けられた割付対象と生存区間が重
なる割付対象であり、前記第4の割付対象検出手段の検
出結果である割付対象の優先度の集計値に基づいて、大
域的損失値を算出するようにしてもよい。
【0053】また、前記大域的損失値算出手段は、前記
第5の割付対象検出手段が検出した割付対象のうち、同
一の資源要素に割り付けられた割付対象と生存区間が重
なる割付対象であり、前記第4の割付対象検出手段の検
出結果である割付対象の個数の集計値に基づいて、大域
的損失値を算出することを特徴とするようにしてもよ
い。
【0054】また、前記資源割付装置は更に優先度を計
算する割付対象優先度計算手段を備え、前記割付対象優
先度計算手段は、資源要素を用いる各命令について、そ
の命令を実行する際の実行時間およびその命令のメモリ
サイズを示すコストを、各資源毎に記憶するコスト記憶
手段と、1つの割付対象の変数が生存区間内で使用され
ているプログラム中のそれぞれの命令ついて、コスト記
憶手段を参照して資源毎にコストを取り出すコスト検索
手段と、コスト検索手段により取り出されたコストをそ
れぞれの割付対象について、資源毎に集計するコスト集
計手段と、それぞれの割付対象について集計したコスト
集計値と、それぞれの割付対象の生存区間とに基づいて
前記優先度を計算する優先度計算手段とと備えてもよ
い。
【0055】また、資源割付装置は更に同一資源の資源
要素を割り付け得る割付対象の全てを割付対象保持手段
に提供する資源別割付対象提供手段を備え、前記資源別
割付対象提供手段は、それぞれの割付対象について前記
コスト集計手段の集計した結果のうち、どの資源につい
て集計値が最小になるのかを判定する第1の資源判定手
段と、前記第1の資源判定手段が判定したそれぞれの割
付対象と、それらに対応して第1の資源判定手段が判定
した資源とを参照し、同じ判定結果を得た割付対象を資
源別グループとしてグループ化する資源別グループ化手
段と、前記資源別グループ化手段がグループ化した複数
個の資源別グループを1つ選択する資源別グループ選択
手段と、前記資源別グループ選択手段が選択したグルー
プを、前記割付対象保持手段に書き込む資源別グル−プ
書込手段と、割付対象保持手段内の割付対象が、前記割
付対象取出手段によって全て取り出された場合、次の資
源別グループの選択を指示する制御手段とを備えてもよ
い。
【0056】また、前記資源別グループ選択手段は更に
前記コスト集計手段が求めた割付対象のコスト集計値
を、前記資源別グループ化手段がグループ化した資源別
グループ毎に集計する資源別グループコスト集計手段を
備え、前記資源別グループ選択手段は前記グループコス
ト集計手段の集計値が大きい順に資源別グループを選択
するようにしてもよい。
【0057】また、前記第1の資源要素判定手段は更に
前記割付対象取出手段が取り出した割付対象が属する資
源を判定する第2の資源判定手段と、前記第2の資源判
定手段の判定結果である資源に属する資源要素であり、
前記第1の割付対象検出手段が検出した割付対象に割り
付けていない資源要素が存在しない場合、前記コスト集
計手段の集計結果が、前記第2の資源判定手段の判定結
果である資源よりも小さく、かつ未だどの資源要素も、
割付対象に割り付けられていない資源を判定する第3の
資源判定手段と、前記第3の資源判定手段の判定結果で
ある資源に対応する資源別グル−プへ、前記割付対象取
出手段が取り出した割付対象を移行する第1の移行手段
とを備えていてもよい。
【0058】また、前記コスト集計手段は更に1つの割
付対象の変数が使用されているそれぞれの命令につい
て、ル−プ処理のネストレベルを検出するネストレベル
検出手段を備え、前記コスト集計手段は、コスト検索手
段により取り出されたコストに前記ネストレベル検出手
段が検出したネストレベルを算入し、集計するようにし
てもよい。
【0059】また、前記資源別グル−プ化手段は更に前
記資源別グル−プ化手段がグル−プ化した全ての資源別
グル−プから、第1の資源判定手段が2個以上の資源が
最小であると判定した割付対象を全て検出する第6の割
付対象検出手段と、第6の割付対象検出手段が検出した
割付対象の生存区間の開始点および終了点を参照し、該
開始点で生存区間が終わる割付対象又は該終了点で生存
区間が始まる割付対象を、全ての資源別グル−プから検
出する第7の割付対象検出手段と、前記第7の割付対象
検出手段が検出した割付対象がどの資源別グル−プに属
するかを判定する資源別グル−プ判定手段と、前記第6
の割付対象検出手段が検出した割付対象を、前記資源別
グル−プ判定手段が判定した資源別グル−プに移行する
第2の移行手段とを備えていてもよい。
【0060】前記資源別グループ選択手段は、資源別グ
ループコスト集計手段に代えて、1つの資源別グループ
に属する割付対象の個数を検出するグループ個数検出手
段を備え、前記資源別グループ選択手段は、グループ個
数検出手段が検出した割付対象の個数が大きい順に、資
源別グループを選択するようにしてもよい。
【0061】前記資源別グループ選択手段は、資源別グ
ループコスト集計手段に代えて、資源別グル−プに対応
する資源の資源要素の個数を検出する資源要素個数検出
手段を備え、前記資源別グループ選択手段は、資源要素
個数検出手段が検出した資源要素の個数が小さい順に、
資源別グループを選択するようにしてもよい。
【0062】
【作用】上記の手段により本発明の資源割付装置におい
て、割付対象保持手段は、プログラム中の割付対象とそ
の優先度とを保持している。プログラム中の割付対象と
その優先度に対して、第1の資源要素割付手段が作動
し、前記割付対象保持手段から優先度最大の割付対象が
取り出され、優先度が最大の割付対象に資源要素の何れ
かを割り付ける。資源要素の何れかが割り付けられた割
付対象の割付結果は、割付結果格納手段に格納される。
直前に割り付けられた割付対象の優先度に対して、割付
対象取出手段が作動し、次順位の優先度を持つ割付対象
が前記割付対象保持手段から取り出される。前記割付対
象取出手段が取り出した割付対象に対して、第1の割付
対象検出手段が作動し、生存区間が重なっている割付対
象が検出される。全ての資源要素に対して、第1の資源
要素判定手段が作動し、前記第1の割付対象検出手段が
検出した割付対象に割り付けていない資源要素が判定さ
れる。前記割付対象取出手段が取り出した割付対象に対
して、第2の割付対象検出手段が作動し、生存区間の開
始点又は終了点が参照され、該開始点で生存区間が終わ
る割付対象と、該終了点で生存区間が始まる割付対象と
が検出される。前記第2の割付対象検出手段が検出した
割付対象に対して、第2の資源要素判定手段が作動し、
前記第2の割付対象検出手段が検出した割付対象に割り
付けている資源要素が、前記割付結果格納手段を参照し
て判定される。前記第1の資源要素判定手段が判定した
資源要素と第2の資源要素判定手段が判定した資源要素
の何れかの資源要素に対して、第2の資源要素割付手段
が作動し、前記割付対象取出手段が取り出した割付対象
が割り付けられ、前記割付結果格納手段に格納される。
制御手段が作動して、全ての割付対象が割り付けられる
まで、前記割付対象取出手段の起動を繰り返えされる。
【0063】また、前記第2の資源要素割付手段は第1
の資源要素判定手段が判定した資源要素が1つである場
合、その資源要素を前記割付対象取出手段が取り出した
割付対象に対して、第1の割付手段が作動し、第1の資
源要素判定手段が判定した資源要素が、前記割付対象取
出手段が取り出した割付対象に割り付けられる。第1の
資源要素判定手段が判定した資源要素が複数個存在し、
前記第2の資源要素判定手段が判定した結果該当する資
源要素が存在しない場合、第2の割付手段が作動し、前
記第1の資源要素判定手段が判定した資源要素の何れか
を前記割付対象取出手段が取り出した割付対象に割り付
けられる。第1の資源要素判定手段が判定した資源要素
が複数個存在し、前記第2の資源要素判定手段が判定し
た資源要素が存在する場合、前記第1の資源要素判定手
段の判定結果である資源要素であり、かつ前記第2の資
源要素判定手段の判定結果である資源要素の何れかに対
して、第3の割付手段が作動し、前記割付対象取出手段
が取り出した割付対象に割り付ける。
【0064】また、上記の手段により本発明の資源割付
装置において、割付対象保持手段は、プログラム中の割
付対象とその優先度とを保持している。プログラム中の
割付対象とその優先度に対して、第1の資源要素割付手
段が作動し、前記割付対象保持手段から優先度最大の割
付対象が取り出され、優先度が最大の割付対象に資源要
素の何れかを割り付けられる。資源要素の何れかが割り
付けられた割付対象の割付結果は、割付結果格納手段に
格納される。直前に割り付けられた割付対象の優先度に
対して、割付対象取出手段が作動し、次順位の優先度を
持つ割付対象が前記割付対象保持手段から取り出され
る。前記割付対象取出手段が取り出した割付対象に対し
て、第1の割付対象検出手段が作動し、生存区間が重な
っている割付対象が検出される。全ての資源要素に対し
て、第1の資源要素判定手段が作動し、前記第1の割付
対象検出手段が検出した割付対象に割り付けていない資
源要素が、前記割付結果格納手段を参照して判定され
る。前記割付対象取出手段が取り出した割付対象に対し
て、第2の割付対象検出手段が作動し、生存区間の開始
点又は終了点が参照され、該開始点で生存区間が終わる
割付対象と、該終了点で生存区間が始まる割付対象とが
検出される。前記第2の割付対象検出手段が検出した割
付対象に対して、第2の資源要素判定手段が作動し、前
記第2の割付対象検出手段が検出した割付対象に割り付
けている資源要素が、前記割付結果格納手段を参照して
判定される。前記第2の割付対象検出手段が検出した割
付対象に対して、第3の割付対象検出手段が作動し、当
該割付対象の生存区間と生存区間が重なる割付対象が検
出される。前記割付結果格納手段の割付結果に対して、
第3の資源要素判定手段が作動し、前記第3の割付対象
検出手段が検出した割付対象に割り付けている資源要素
が判定される。第1の資源要素判定手段が判定した資源
要素であり、かつ前記第2の資源要素判定手段の判定結
果である資源要素、または、第1の資源要素判定手段が
判定した資源要素であり、かつ前記第3の資源要素判定
手段の判定結果でない資源要素に対して、第2の資源要
素割付手段が作動し、当該資源要素の何れかを前記割付
対象取出手段が取り出した割付対象に割り付ける。全て
の割付対象が割り付けられるまで、制御手段が作動し、
前記割付対象取出手段の起動を繰り返えされる。
【0065】また、前記第2の資源要素割付手段は、第
1の資源要素判定手段が判定した資源要素が1つの場
合、前記第1の資源要素判定手段の判定結果に該当する
資源要素に対して、第1の割付手段が作動し、当該資源
要素が、前記割付対象取出手段が取り出した割付対象に
割り付けられる。前記第1の資源要素判定手段の判定結
果であり、前記第2の資源要素判定手段の判定結果であ
る資源要素に対して、局所的利得値算出手段が作動し、
前記第2の資源要素判定手段の判定結果である資源要素
を使用する命令の生成コードの実行時間およびメモリサ
イズが減少する度合である局所的利得値が算出され、前
記第1の資源要素要素判定手段の判定結果であり、前記
第2の資源要素判定手段の判定結果でない資源要素の前
記局所的利得値は、0(ゼロ)とみなされる。前記第1
の資源要素判定手段の判定結果であり、前記第3の資源
要素判定手段の判定結果に該当する資源要素に対して、
局所的損失値算出手段が作動し、その資源要素を使用す
る命令の生成コードの実行時間およびメモリサイズが増
加する度合である局所的損失値が算出され、前記第3の
資源要素判定手段の判定結果でない資源要素について
は、前記局所的損失値は、0(ゼロ)とみなされる。前
記第1の資源要素判定手段の判定結果である資源要素に
対して、局所的絶対利得値算出手段が作動し、前記局所
的利得値算出手段が算出した局所的利得値と、前記局所
的損失値算出手段が算出した局所的損失値との差である
局所的絶対利得値が算出される。前記第1の資源要素判
定手段の判定結果であり、前記局所的絶対利得値算出手
段が算出した局所的絶対利得値が最大の資源要素に対し
て第2の割付手段が作動し、前記第1の資源要素判定手
段が判定した資源要素であり、かつ前記第6の資源要素
判定手段の判定結果である資源要素が、前記割付対象取
出手段が取り出した割付対象に割り付けられる。
【0066】また、上記手段により本発明の資源割付装
置において、プログラム中の割付対象とその優先度と
が、割付対象保持手段によって保持される。優先度が最
大の割付対象に対して、第1の資源要素割付手段が作動
し、資源要素の何れかが割り付けられる。割付結果が割
付結果格納手段によって格納される。前記割付対象保持
手段に保持されているそれぞれの割付対象に対して、同
一資源要素割付関係一括検出手段が作動し、生存区間の
開始点と、生存区間の終了点とが一致している割付対象
の組み合わせが全て検出される。前記同一資源要素割付
関係一括検出手段が検出した割付対象の組み合わせに対
して、大域グループ化手段が作動し、同じ割付対象を含
むものが抽出され、抽出したものがグループ化される。
直前に割り付けられた割付対象の優先度に対して、割付
対象取出手段が作動し、次順位の優先度を持つ割付対象
が前記割付対象保持手段から取り出される。前記割付対
象取出手段が取り出した割付対象に対して、第1の割付
対象検出手段が作動し、生存区間が重なっている割付対
象が検出される。全ての資源要素に対して、第1の資源
要素判定手段が作動し、前記第1の割付対象検出手段が
検出した割付対象に割り付けられていない資源要素が前
記割付結果格納手段を参照して判定される。前記割付対
象取出手段が取り出した割付対象に対して、第2の割付
対象検出手段が作動し、生存区間の開始点又は終了点が
参照され、該開始点で生存区間が終わる割付対象と、該
終了点で生存区間が始まる割付対象とが検出される。前
記第2の割付対象検出手段が検出した割付対象に対し
て、第2の資源要素判定手段が作動し、割付対象に割り
付けている資源要素が、前記割付結果格納手段を参照し
て判定される。前記第2の割付対象検出手段が検出した
割付対象に対して、第3の割付対象検出手段が作動し、
割付対象の生存区間と生存区間が重なる割付対象が検出
される。前記割付結果格納手段を参照に対して、第3の
資源要素判定手段が作動し、前記第3の割付対象検出手
段が検出した割付対象に割り付けている資源要素が判定
される。前記割付対象取出手段が取り出した割付対象に
対して、第1の大域グループ検出手段が作動し、取り出
された割付対象がどの大域グループに属するかが調べら
れる。前記第1の大域グル−プ検出手段の検出結果であ
る大域グル−プに対して、第4の割付対象検出手段が作
動し、他の割付対象が全て検出される。前記第4の割付
対象検出手段が検出した割付対象に対して、第4の資源
要素判定手段が作動し、当該割付対象に割り付けている
資源要素が資源要素前記割付結果格納手段を参照して判
定される。前記割付対象取出手段が取り出した割付対象
に対して、第2の大域グル−プ検出手段が作動し、当該
割付対象が属する大域グループの生存区間と、生存区間
が重なる大域グル−プが全て検出される。前記第2の大
域グル−プ検出手段が検出した大域グル−プに対して、
第5の割付対象検出手段が作動し、当該大域グル−プに
属する割付対象が全て検出される。前記第5の割付対象
検出手段が検出した割付対象に対して、第5の資源要素
判定手段が作動し、割付対象に割り付けている全ての資
源要素が、前記割付結果格納手段を参照して判定され
る。第1の資源要素判定手段が判定した資源要素であ
り、かつ前記第2、4の資源要素判定手段の判定結果で
る資源要素、または、第1の資源要素要素判定手段の判
定結果であり、かつ前記第3、5の資源要素判定手段の
判定結果に対して第2の資源要素割付手段が作動し、資
源要素の何れかが前記割付対象取出手段が取り出した割
付対象に割り付けられる。全ての割付対象が割り付けら
れるまで、制御手段が作動し、前記割付対象取出手段の
起動を繰り返えされる。
【0067】また、前記第2の資源要素割付手段は、第
1の資源要素判定手段が判定した資源要素が1つの場
合、前記第1の資源要素判定手段の判定結果に該当する
資源要素に対して、第1の割付手段が作動し、当該資源
要素が、前記割付対象取出手段が取り出した割付対象に
割り付けられる。前記第1の資源要素判定手段の判定結
果であり、前記第2の資源要素判定手段の判定結果であ
る資源要素に対して、局所的利得値算出手段が作動し、
前記第2の資源要素判定手段の判定結果である資源要素
を使用する命令の生成コードの実行時間およびメモリサ
イズが減少する度合である局所的利得値が算出され、前
記第2の資源要素判定手段の判定結果でない資源要素の
前記局所的利得値は、0(ゼロ)とみなされる。前記第
1の資源要素判定手段の判定結果であり、前記第3の資
源要素判定手段の判定結果に該当する資源要素に対し
て、局所的損失値算出手段が作動し、その資源要素を使
用する命令の生成コードの実行時間およびメモリサイズ
が増加する度合である局所的損失値が算出され、前記第
1の資源要素判定手段の判定結果であり、前記第3の資
源要素判定手段の判定結果でない資源要素については、
前記局所的損失値は、0(ゼロ)とみなされる。前記第
1の資源要素判定手段の判定結果である資源要素に対し
て、局所的絶対利得値算出手段が作動し、前記局所的利
得値算出手段が算出した局所的利得値と、前記局所的損
失値算出手段が算出した局所的損失値との差である局所
的絶対利得値が算出される。前記第1の資源要素判定手
段の判定結果であり、前記局所的絶対利得値算出手段が
算出した局所的絶対利得値が最大の資源要素に対して第
2の割付手段が作動し、前記第1の資源要素判定手段が
判定した資源要素であり、かつ前記第6の資源要素判定
手段の判定結果である資源要素が、前記割付対象取出手
段が取り出した割付対象に割り付けられる。
【0068】また、前記第2の資源要素割付手段は更
に、前記第6の資源要素判定手段が複数個の資源要素を
判定した場合、第6の資源要素判定手段の判定結果であ
り、前記第4の資源要素判定手段の判定結果である資源
要素に対して、大域的利得値算出手段が作動し、その資
源要素を使用する命令の生成コードの実行時間およびメ
モリサイズが減少する度合である大域的利得値が算出さ
れ、第6の資源要素判定手段の判定結果であり、前記第
4の資源要素判定手段の判定結果でない資源要素につい
ての前記大域的利得値は0(ゼロ)とみなされる。前記
第6の資源要素判定手段の判定結果であり、前記第5の
資源要素判定手段の判定結果である資源要素に対して、
大域的損失値算出手段が作動し、資源要素を使用する命
令の生成コードの実行時間およびメモリサイズが増加す
る度合である大域的損失値が算出され、前記第6の資源
要素判定手段の判定結果であり、前記第5の資源要素判
定手段の判定結果でない資源要素についての前記大域的
利得値は0(ゼロ)と算出される。前記第6の資源要素
判定手段の判定結果であるそれぞれの資源要素に対し
て、大域的絶対利得値算出手段が作動し、前記大域的利
得値算出手段が算出し大域的利得値と、前記大域的損失
値算出手段が算出した大域的損失値との差である大域的
絶対利得値が算出される。前記第6の資源要素判定手段
の判定結果であり、前記大域的絶対利得値算出手段が算
出した大域的絶対利得値が最大の資源要素に対して、第
6の割付手段が作動し、大域的絶対利得値が最大である
資源要素が、前記割付対象取出手段が取り出した割付対
象に割り付けられる。
【0069】また、前記割付対象優先度計算手段は、資
源要素を用いる各命令に対して、コスト記憶手段が作動
し、その命令を実行する際の実行時間およびその命令の
メモリサイズを示すコストが、各資源毎に記憶される。
1つの割付対象の変数が生存区間内で使用されているプ
ログラム中のそれぞれの命令に対して、コスト検索手段
が作動し、資源毎にコストを取り出される。コスト検索
手段により取り出されたコストをそれぞれの割付対象に
対して、コスト集計手段が作動し、取り出されたコスト
が資源毎に集計される。それぞれの割付対象について集
計したコスト集計値と、それぞれの割付対象の生存区間
とに対して優先度計算手段が作動し、前記優先度が計算
される。
【0070】また、資源割付装置は更に同一資源の資源
要素を割り付け得る割付対象の全てを割付対象保持手段
に提供する資源別割付対象提供手段を備え、前記資源別
割付対象提供手段は、それぞれの割付対象について前記
コスト集計手段の集計した結果に対して、第1の資源判
定手段が作動し、どの資源について集計値が最小になる
のかが判定される。前記第1の資源判定手段が判定した
それぞれの割付対象と、それらに対応して第1の資源判
定手段が判定した資源とに対して、資源別グループ化手
段が作動し、同じ判定結果を得た割付対象が資源別グル
ープとしてグループ化される。前記資源別グループ化手
段がグループ化した複数個の資源別グループに対して、
資源別グループ選択手段が作動し、1つが選択される。
前記資源別グループ選択手段が選択したグループに対し
て、資源別グル−プ書込手段が作動し、選択したグル−
プが、前記割付対象保持手段に書き込まれる。割付対象
保持手段内の割付対象が、前記割付対象取出手段によっ
て全て取り出された場合、制御手段が作動し、次の資源
別グループの選択が指示される。
【0071】
【実施例】以下、本発明の資源割付装置の一実施例を図
面を用いて説明する。図1は、本発明の第1の実施例に
おけるコンパイラの構成図である。コンパイラは、構文
解析装置31と、最適化装置32と、資源割付装置33
と、コード生成装置34とで構成されている。
【0072】構文解析装置31は、ファイルとして記憶
されているソースプログラムの字句解析、構文解析およ
び意味解析を行う。解析結果は、中間言語プログラムと
して出力される。最適化装置32は、最終的に生成され
る機械語プログラムのプログラムサイズ、及び、処理実
行時間を向上させる目的で中間言語プログラムの最適化
を行う。この最適化の詳細については本発明の主眼では
ないため説明を省略し、本発明の資源割付装置と特に関
連がある点のみ説明する。最適化作業には、基本ブロッ
ク化、制御フロー解析、データフロー解析という作業が
含まれている。基本ブロック化とは、処理対象のプログ
ラムを、以降の処理単位である基本ブロックに分解する
ことである。基本ブロックとは、中間言語プログラムの
最初のステップ、無条件あるいは条件飛び越しの行き先
のステップ、無条件あるいは条件飛び越しの直後のステ
ップをリーダとし、リーダーから始まり、次のリーダー
の一つ手前まで、あるいはプログラムの最後までの一連
のステップである。制御フロー解析とは、各基本ブロッ
ク間の制御の流れを解析することである。データフロー
解析とは各基本ブロック中、それぞれの変数がどこで代
入され、どこで使用されているかについて解析すること
である。これらの解析結果を参照して変数の生存区間の
情報が得られる。
【0073】資源割付装置33は、プログラム中の割付
対象に、ターゲットマシンのレジスタ、メモリである資
源を割り付ける。コード生成装置34は、最適化された
中間言語プログラムを、資源割付装置33の割付結果に
従い、ターゲットマシンの機械語命令に変換し、オブジ
ェクトプログラムとして出力する。
【0074】図2は、図1における資源割付装置33の
構成図である。資源割付装置33は、資源割付制御部1
と、割付対象生成部2と、割付対象保持部3と、資源別
コスト計算部4と、同時生存割付対象検出部5と、同一
資源要素割付関係検出部6と、資源別割付対象集合分割
部7と、資源別割付対象集合保持部8と、資源別割付対
象集合選択部9と、資源別割付対象保持部10と、割付
対象優先度計算部11と、割付対象資源割付部12と、
資源要素多数時割付部16とで構成される。
【0075】資源割付制御部1は、割り付け処理全体を
制御する。割付対象生成部2は、データフロー解析の結
果(以下データフロー情報と呼ぶ)や、制御フロー解析
の結果(以下制御フロー情報と呼ぶ)をもとに、割付対
象を生成する。生成された割付対象は、割付対象保持部
3に格納される。割付対象保持部3は、割付対象生成部
\u2\uで生成された割付対象の集合を保持する。更に、
割付対象の情報として、変数や生存区間の情報の他に、
生存区間における開始点と終了点の集合、生存区間内で
対象変数を使用しているステップの集合、後述する割付
対象を各資源に割り付けたと仮定したときの推定コスト
値、同時に生存している割付対象の集合、同一資源要素
割付関係にある割付対象の集合、割付対象に割り付けた
資源要素の情報をも保持する。以下ではこれらの情報を
割付対象の保持情報と呼ぶ。
【0076】資源別コスト計算部4は、割付対象保持部
3に保持されている各々の割付対象に関して、割付対象
を各資源に割り付けたときの推定コスト値を求める。推
定コスト値とは、割付対象にある特定の資源の資源要素
を割り付けたと仮定した場合における、プログラム上の
割付対象を使用しているステップの実行時間の推定値ま
たはメモリサイズの推定値を、プログラムの全てのステ
ップにおいて総和したものである。この推定コスト値の
計算方法を、具体的に説明する。資源別コスト計算部4
は、任意の割付対象xの全てのdef箇所、use箇所
における上述の推定値を求めた後、これらの総和を算出
し、推定コスト値とする。資源が複数種類存在する場
合、1つの割付対象についてそれぞれの資源に対して推
定コスト値の計算を行う。上述の推定コスト値は、次の
{数式2}で与えられるCost関数式で求められる。
【0077】{数式2} Cost(R、x)=Σ C(x、R、i)*W(i) x:割付対象 i:xのdef箇所、use箇所における中間言語プロ
グラム内のステップ R:ターゲットマシンの資源 W(i):ステップiの置かれているループの重みであ
り、内側のループほど重みが大きい。例えばネストのレ
ベル。
【0078】C(x、R、i):xにRを割り付けた時
に、ステップiに必要な平均の実行時間、またはメモリ
サイズの推定値。 ターゲットマシンにアドレスレジスタ(以下ARと略
す)、データレジスタ(DR)、メモリ(Mem)とい
う三種類の資源が存在する場合、任意の割付対象xにつ
いて以下の推定コスト値が計算されることになる。
【0079】割付対象xをARに割り付けたとき、xに
ついての全てのdef箇所および全てのuse箇所で計
算した推定値の和:Cost(AR、x) 割付対象xをDRに割り付けたとき、xについての全て
のdef箇所および全てのuse箇所で計算した推定値
の和:Cost(DR、x) 割付対象xをMemに割り付けたとき、xについての全
てのdef箇所および全てのuse箇所で計算した推定
値の和:Cost(Mem、x) 尚、Cost(R、x)の計算は、C(x、R、i)のW
(i)乗としてもよい。上述の推定値は、図外のステッ
プ推定値定義テーブルに記憶される。資源別コスト計算
部が計算した推定コスト値は、割付対象保持手段3に保
持される。
【0080】尚ターゲットマシンを変更する場合、上述
のステップ推定コスト値テーブルを書き直す必要があ
る。同時生存割付対象検出部5は、割付対象同士の生存
区間の重なりを調べる。つまり任意の割付対象xと生存
区間が重なる割付対象の集合である割付対象集合Ov
(x)を求める。Ov(x)の内容は割付対象保持部3
に格納される。
【0081】同一資源要素割付関係検出部6は、割付対
象保持部3に保持されているそれぞれの割付対象と、同
一資源要素割付関係にある全ての割付対象をプログラム
中から検出する。この結果、任意の割付対象xと同一資
源要素割付関係(後述)にある割付対象の集合R1
(x)が求められる。R1(x)の内容は、割付対象保
持部3に格納される。同一資源要素割付関係とは、ある
割付対象の生存区間の終了点と他の割付対象の生存区間
の開始点とが1つのステップで一致している関係をい
う。このような関係にある2つの割付対象を、同一の資
源要素に割り付ければ、資源要素間の無駄な転送命令の
発生を防止できる。同一資源要素割付関係の検出につい
て更に詳しく述べると、上述のターゲットマシンの機械
語命令が2オペランド形式である場合など、ターゲット
マシンの機械語命令のオペランド形式によって、同一資
源要素割付関係検出部6は、演算子の左辺にある割付対
象のみを、同一資源要素割付関係にある割付対象として
検出する場合がある。例えば、ターゲットマシンのマイ
クロプロセッサの機械語命令は、2オペランド形式であ
る場合、反転命令のような単項演算子や、加算命令のよ
うな可換な演算子や、減算のような非可換な演算子によ
る演算結果は、{数式3}のように被演算子の一方に格
納されるので、同一資源要素割付関係検出部6によって
同一資源要素割付関係にあると検出される割付対象x、
yは、ソースプログラム中で、以下の(a)〜(c)の
ように使用されている割付対象となる。
【0082】{数式3} Rev opr1  ̄opr1 −> opr1 (反転演算の被演算子に演算結果を格納する機械語命
令) ADD opr1、opr2 opr1+opr2
−> opr1 (加算演算の左辺の被演算子に演算結果を格納する機械
語命令) SUB opr1、opr2 opr1−opr2
−> opr1 (減算演算の左辺の被演算子に演算結果を格納する機械
語命 (a)割付対象xの終了点が単項演算であるときで、そ
のステップに開始点がある割付対象y(例えば y= ̄
x ここで ̄は符号反転式の符号) (b)割付対象xの終了点が可換演算であるとき、その
ステップに開始点がある割付対象y(例えば y=x+
10)。
【0083】(c)割付対象xの終了点が非可換演算で
あるとき、そのステップに開始点がある割付対象y(例
えば y=x−10)。 上述の同一資源要素割付関係がループ処理の内側および
外側にある場合、ループ処理の内側にある同一資源要素
割付関係ほど、プログラム実行時の処理回数が多いので
同一資源要素割付関係はより強いとみなされる。また、
複数のステップで同一資源要素割付関係にある割付対象
ほど、同一資源要素割付関係は強いとみなされる。この
ような同一資源要素割付関係の強弱を割付関係強度と呼
ぶ。ループの内側にある割付対象同士ほど、また同一資
源要素割付関係にある割付対象が多いほど、この割付関
係強度は大きくなる。
【0084】資源別割付対象集合分割部7は、各割付対
象がどの資源に割り付けられるのが適切であるかを推定
コスト値を参照して判断し、資源別に分類する。資源
と、こうして分類された割付対象の集合とを要素とする
集合を資源別割付対象集合と呼ぶ。また分類された割付
対象の集合を割付候補集合と呼び、資源別割付対象集合
の要素である。資源別割付対象集合分割部7が参照する
推定コスト値は、それぞれの割付対象の推定コスト値で
あるが、必要に応じて、それぞれの割付対象と同一資源
要素割付関係にある割付対象の推定コスト値も参照す
る。
【0085】資源別割付対象集合保持部8は、資源別割
付対象集合分割部7により得られた全ての資源に対する
資源別割付対象集合を保持する。資源別割付対象集合選
択部9は、資源別割付対象集合保持部8に格納されてい
る全ての資源別割付対象集合について、どの資源の資源
別割付対象集合から割り付け処理を行うかを決定するた
めの優先順位である資源選択優先順位を決定した後、資
源別割付対象集合選択部9は、未だ割り付け処理が行わ
れていない資源別割付対象集合の中から、優先順位が高
い資源別割付対象集合を選択する。
【0086】資源別割付対象保持部10は、資源別割付
対象集合選択部9により選択された資源別割付対象集合
を保持する。割付対象優先度計算部11は、資源別割付
対象保持部10に格納されている割付候補集合中の割付
対象に対して、どの割付対象から資源要素に割り付けて
ゆくかを示す割付対象優先順位を決定する。割付対象優
先順位は、推定コスト値、生存区間の長さ、生存区間の
重なり、同一資源要素割付関係をパラメータとする割付
対象優先度によって決定される。資源別割付対象保持部
10に格納されている割付候補集合中の任意の割付対象
を割付対象xとすると、割付対象xの割付対象優先度
は、以下の計算式で求められる。
【0087】割付対象優先度 = Cost(R、x)/L
n(x) Ln(x):割付対象xの生存区間の長さ R:資源別割付対象保持部10に格納されている資源 尚、割付対象優先度の計算規則は、コンパイラが動作す
る条件、処理対象であるソースプログラムの内容等に応
じて、以下の(規則1)〜(規則5)の計算規則のうち
何れか1つを選択してもよい。
【0088】(規則1)割付対象xを資源Rに割り付け
たとき、推定コスト値の大きさを割付対象優先度に比例
させる。 (規則2)資源選択優先順位が資源Rの次である資源を
Sとするとき、割付対象xに資源Rを割り付けたときの
推定コスト値の大きさと、割付対象xに資源Sを割り付
けたときの推定コスト値の大きさとを求め、これらの推
定コスト値の差を割付対象優先度に比例させる。
【0089】(規則2a)資源選択優先順位が資源Rよ
り低い資源をS1..Snとするとき、割付対象xに資
源Rを割り付けたときの推定コスト値の大きさと、資源
をS1..Snのそれぞれを資源xの割り付けたときの
推定コスト値の平均の大きさを求め、これらの推定コス
ト値の差を割付対象優先度に比例させる。 (規則3)(規則2)で求めた割付対象優先度を、割付
対象xの生存区間で割る。
【0090】(規則3a)(規則2a)で求めた割付対
象優先度を、割付対象xの生存区間の長さで割る。 (規則4)割付対象xと生存区間が重なる割付対象の集
合であるOv(x)の要素で、既に資源要素に割り付け
られている割付対象の数に割付対象優先度を比例させ
る。
【0091】(規則5)割付対象xと同一資源要素割付
関係にある割付対象の集合であるR1(x)の各要素
で、既に資源要素に割り付けられている割付対象の数に
割付対象優先度を比例させる。 割付対象資源割付部12は、資源別割付対象保持部10
から割付対象優先順位に従って、割付対象を順に取り出
し、その割付対象に割り付けることができる資源要素を
求めて、割付対象に割り付ける。その割付対象に割り付
けることができる資源要素が複数存在したときは、それ
ぞれの資源要素を割り付ける際の利得および損失を、生
存区間の重なりや同一資源要素割付関係に基づいて更に
詳しく調べる。ここで割り付けの際の利得とは、主に資
源要素間の転送命令を削除する場合をいい、割り付けの
際の損失とは、資源要素間の転送命令が増加する場合を
いう。割付対象資源割付部12は、上述の利得および損
失のパラメータである、局所的利得値および局所的損失
値を求め、更にこれらの利得値、損失値の差である局所
的絶対利得値が最大の資源要素を求める。最後にこうし
て求められた資源要素に割付対象を割り付ける。
【0092】資源要素多数時割付部16は、資源がメモ
リのように、資源別割付対象保持部10に格納されてい
る資源の資源要素の数が、割付対象の数と比較してはる
かに多い場合に、生存区間が重なる割付対象同士を別々
の資源要素に割り付ける。図3は、図2に示す資源割付
制御部1のフローチャートである。ステップa1では、
割付対象生成部2を起動する。
【0093】ステップa2では、同時生存割付対象検出
部5を起動する。ステップa3では、同一資源要素割付
関係検出部6を起動する。ステップa4では、資源別コ
スト計算部4を起動する。ステップa5では、資源別割
付対象集合分割部7を起動する。ステップa6では、資
源別割付対象集合選択部9を起動する。
【0094】ステップa7では、資源別割付対象集合選
択部9が選択すべき資源別割付対象集合が、未だ存在す
るか否かを判断する。資源別割付対象集合が存在しなけ
れば、資源割付装置33の処理を終了する。ステップa
8では、割付対象優先度計算部11を起動する。ステッ
プa9では、割付対象資源割付部12、資源要素多数時
割付部16を起動する。
【0095】図4は、図2に示す資源別割付対象集合分
割部7のフローチャートである。ステップb1では、未
だ特定の資源の割付候補になっていない割付対象である
割付対象xが存在するか否かの判断を行う。存在すれば
ステップb2に移行する。存在しなければ処理を終了す
る。ステップb2では、ステップb1で求めた割付対象
xについて、各資源毎の推定コストを比べ、最小の推定
コスト値をとる資源である最小コスト資源がただ一つ
か、あるいは複数かの判断を行う。最小コスト資源が複
数のとき、ステップb3に移行する。最小コスト資源が
ただ一つのとき、ステップb9に移行する。
【0096】ステップb3では、同一資源要素割付関係
検出部6の検出結果を参照して、割付対象xと同一資源
要素割付関係にある割付対象が存在するか否かの判定を
行う。存在すれば該当する割付対象を全て取り出し、ス
テップb4に移行する。存在しなければステップb8に
移行する。ステップb4では、割付対象xと同一資源要
素割付関係にある割付対象のうち、割付関係強度が最大
である割付対象x1を求める。
【0097】ステップb5では、ステップb2と同様に
割付対象x1についての最小コスト資源が一つであるか
複数であるかの判断を行う。最小コスト資源が複数のと
き、ステップb6に移行する。最小コスト資源がただ一
つのとき、ステップb9に移行する。ステップb6で
は、ステップb3で取り出した割付対象のうち未だステ
ップb5の判定を行っていない割付対象である割付対象
xと、同一資源要素割付関係にある割付対象が存在する
か否かの判定を行う。存在すれば該当する割付対象を全
て取り出し、ステップb7に移行する。存在しなければ
ステップb8に移行する。
【0098】ステップb7では、割付対象xとの割付関
係強度が次に大きいものを求め、求めた割付対象を割付
対象x1とする。ステップb5〜b7の処理を繰り返す
ことで、割付対象xと同一資源要素割付関係にあるそれ
ぞれの割付対象の最小コスト資源が調べられる。ステッ
プb8では、複数の最小コスト資源から最小コスト資源
を1つだけ選ぶ。選ばれた最小コスト資源の割付候補集
合に割付対象xを入れる。
【0099】ステップb9では、割付対象xを最小コス
ト資源の割付候補の集合に入れる。上述した、ステップ
b1〜b9の動作を繰り返すことにより、全ての割付対
象が、それぞれの資源の資源別割付対象集合に分類され
る。図5は、図2に示す資源別割付対象集合選択部9の
フローチャートである。ステップc1では、資源別割付
対象集合選択部9は、未だ割付対象が割り付けられてい
ない資源が存在するか否かについて調べる。未割付の資
源が存在する場合、ステップc2に移行する。存在しな
い場合はステップc7に移行する。
【0100】ステップc2では、未割付の資源が一つか
複数かを調べる。一つのときステップc3に移行する。
複数のときステップc4に移行する。ステップc3で
は、その資源についての資源別割付対象集合を、資源別
割付対象集合保持部8から取り出す。ステップc4で
は、それらの資源についての資源別割付対象集合を、全
て資源別割付対象集合保持部8から取り出す。
【0101】ステップc5では、ステップc4で取り出
された全ての資源別割付対象集合に対して資源選択優先
順位を決定する。割付対象優先順位決定のため、推定コ
スト値の総和を資源別割付対象集合毎に求める。その総
和が大きな資源別割付対象集合ほど資源選択優先度を高
くする。その優先度が最大の資源別割付対象集合を取り
出す。
【0102】尚、資源選択優先度を決定する際、推定コ
スト値の総和に代えて割付対象の多さや、資源要素の少
なさをパラメータにしてもよい。また推定コスト値の総
和、割付対象の多さ、資源要素の少なさを組み合わせて
資源選択優先度を決定してもよい。ステップc6では、
ステップc3及びステップc5で取り出された資源別割
付対象集合を、資源別割付対象保持部10に格納する。
【0103】ステップc7では、割付処理が終了したこ
とを資源割付制御部1に知らせる。以上のステップc1
〜ステップc7の手順を繰り返し、資源別割付対象集合
選択部9は、資源別割付対象集合を、資源別割付対象保
持部10に格納する。図6は、図2に示す割付対象資源
割付部12の処理を示すフローチャートである。
【0104】ステップd1では、割付対象資源割付部1
2は、未だ割り付けられていない割付対象から、割付対
象優先度計算部11において求められた割付対象優先度
が最も高い割付対象である割付対象xを取り出す。ステ
ップd2では、割付対象優先度計算部11に割付対象優
先度の再計算を行わせる。本ステップは、割付対象優先
度計算部の計算規則に、既に資源要素に割り付けられた
割付対象の数をパラメータとする計算規則(規則4)及
び(規則5)が用いられたときのみ必要となる。
【0105】ステップd3では、最も割付対象優先度の
高い割付対象xを取り出す。ステップd4では、資源別
割付対象集合選択部9が選択した資源Rに、まだ割付対
象xに割り付けることができる資源要素が残っているか
を調べる。具体的に述べると、先ず、割付対象xと生存
区間が重なるそれぞれの割付対象を求める。次にこうし
て求めた割付対象の中で既に割り付けられている資源要
素を全て求める。求めた資源要素を除外し、残った資源
要素を割付可能資源要素とする。
【0106】ステップd5では、ステップd4で調べた
結果、資源Rには割付可能資源要素が存在しないことが
判別したとき、資源選択優先順度が資源Rより小さく
て、かつ割付対象xの推定コスト値が資源Rの次に小さ
い資源Sを求める。ステップd6では、資源別割付対象
集合保持部8に格納されている資源Sの資源別割付対象
集合に割付対象xを追加し、ステップd1に移行する。
【0107】ステップd7では、割付可能資源要素が1
つか、複数かの判断を行う。割付可能資源要素がただ1
つのとき、ステップd8に移行する。割付可能資源要素
が複数のとき、ステップd9に移行する。ステップd8
では、ステップd4で判別された割付可能資源要素yを
割付対象xに割り付ける。割り付けの後、ステップd1
に移行する。
【0108】ステップd9では、割付対象xを割り付け
るとき、それぞれの資源要素における局所的利得値およ
び局所的損失値はどれだけになるかを求める。更にこう
して求めた局所的利得値および局所的損失値の差を求
め、局所的絶対利得値とする。局所的利得値を求める手
順について具体的に述べる。先ず割付対象xと同一資源
要素割付関係にある割付対象集合R1(x)の全ての要
素を取り出し、資源要素に割り付けられている割付対象
を探す。ここで割付対象集合R1(x)の1要素である
割付対象x0に、資源要素y0を割り付けていたとす
る。割付対象資源割付部12は、資源要素y0を取り出
し、資源要素y0の局所的利得値を、割付対象x0の割
付対象優先度にする。次に、局所的損失値を求める手順
について具体的に述べる。割付対象xと同一資源要素割
付関係にある割付対象集合R1(x)の全ての要素を取
り出し、資源要素に割り付けられていない割付対象を探
す。ここでR1(x)の1要素である割付対象x1は、
資源要素に割り付けられていないものとする。割付対象
資源割付部12は、割付対象x1を取り出し、更にOv
(x1)の要素を調べる。Ov(x1)の1要素である
割付対象x11に、資源要素y11を割り付けているも
のとする。割付対象資源割付部12は、資源要素y11
の局所的損失値を、割付対象x1の割付対象優先度にす
る。
【0109】尚、上述の手順に代えて、同一資源要素割
付関係にある割付対象と同一資源要素割付関係が成立す
るステップのループの重みを局所的利得値および局所的
損失値としても良い。例を述べると、上述の割付対象集
合R1(x)の1要素である割付対象x0に資源要素y
0を割り付けているものとする。このとき割付対象資源
割付部12は、資源要素y0の局所的利得値に、割付対
象xの生存区間の開始点あるいは終了点と、割付対象x
0の生存区間の終了点あるいは開始点とが一致している
ステップ(以降一致ステップと呼ぶ。)のループの重み
を用いる。割付対象xと割付対象x0との一致ステップ
が複数個存在するときは、それらのステップのループの
重みの総和を求めて、資源要素y0の局所的利得値とす
る。また、割付対象集合R1(x)のうち、資源要素に
割り付けられていない割付対象の集合をR2(x)とす
る。このとき、割付対象資源割付部12は、割付対象集
合R2(x)の1要素である割付対象x1を取り出し、
そのOv(x1)の要素を調べる。ここでOv(x1)
の1要素である割付対象x11に、資源要素y11を割
り付けているものとすると、割付対象資源割付部12
は、資源要素y11の局所的損失値に、局所的利得値と
同様に、割付対象xと割付対象x1との一致ステップの
ループの重みを用いる。割付対象xと割付対象x0との
一致ステップが複数個存在するときは、それらのステッ
プのループの重みの総和を求めて、資源要素y0の局所
的損失値とする。
【0110】更に、割付対象の個数を局所的利得値およ
び局所的損失値としても良い。例を述べると、割付対象
xと同一資源要素割付関係にある割付対象集合R1
(x)の要素には、割付対象x0、x1、x2、x3、
x4という5つの要素が存在するものとする。このうち
割付対象x0、x1、x2が、既に資源要素y0に割り
付けられており、割付対象x3、x4が、既に資源要素
y1に割り付けられているものとする。このとき、割付
対象資源割付部12は、資源要素y0の局所的利得値を
3とし、資源要素y1の局所的利得値を2とする。
【0111】また、割付対象xにおいて、損失となる割
付対象の集合をLo(x)とする。Lo(x)を求める
には、上述のR2(x)の1要素であるx1についてO
v(x1)を求め、更にOv(x1)の要素のうち、資
源要素を割り付けているものを求める。こうして求めた
割付対象がLo(x)になる。また、このようなLo
(x)には、x0、x1、x2、x3、x4という5つ
の要素が存在し、このうち割付対象x0、x1、x2
が、既に資源要素y0に割り付けられており、割付対象
x3、x4が、既に資源要素y1に割り付けられている
ものとする。このとき、割付対象資源割付部12は、資
源要素y0の局所的損失値を3とし、資源要素y1の局
所的損失値を2とする。
【0112】更に、ターゲットマシンのマイクロプロセ
ッサの機械語命令が2オペランド形式であって、上述の
数式3のように被演算子が減算、除算など非可換演算で
ある場合、上述の局所的損失値の手順を追加できる。何
故なら、演算結果を格納する割付対象と、演算子の右辺
にある割付対象(以降、N演算子である割付対象と呼
ぶ。)とに同じ資源要素を割り付ける場合は、演算結果
を格納する割付対象と、演算子の左辺にある割付対象と
に同じ資源要素を割り付ける場合に比べて転送命令が余
分に必要になり損失が発生するからである。このような
損失の度合を求めるための損失値を割付対象資源割付部
12は算出する。具体的には、割り付けようとする割付
対象xが非可換演算によって定義されている場合、割付
対象資源割付部12は、N被演算子として使用されてい
る割付対象x1を検出する。また、割付対象xが非可換
演算においてN被演算子として使用されている場合、割
付対象資源割付部12は、演算結果を格納する割付対象
として使用されている割付対象x1を検出する。割付対
象資源割付部12は、検出した割付対象x1を、非可換
演算についての割付対象の集合であるT1(x)の要素
とし、更にT1(x)の要素のうち、資源要素を割り付
けている要素の集合であるT2(x)を求める。T2
(x)の1要素がx1である場合、割付対象資源割付部
12は、割付対象x1に割り付けられている資源要素y
11についての局所的損失値を、割付対象x1の割付対
象優先度とするか、または、その非可換演算が存在する
ステップの、ループの重みとする。尚、以上の算出を行
う場合、ステップの重みの代わりに、ステップの実行頻
度を用いても良い。
【0113】ステップd10では、ステップd9で求め
た最大の局所的絶対利得値をもつ資源要素を求める。ス
テップd11では、局所的絶対利得値が最大の資源要素
を、割付対象xに割り付ける。以上、ステップd1〜ス
テップd11の作業を繰り返すことによって、割付対象
資源割付部12は、それぞれの割付対象に資源要素を割
り付ける。
【0114】これまでに述べたの構成の他にも、機械語
プログラムを生成するために様々な機能が存在するが、
これらの構成は本発明の主眼でないので説明を省略す
る。以上のように構成される本実施例の資源割付装置3
3における具体的な動作を説明する。ターゲットマシン
の資源は、アドレスレジスタARと、データレジスタD
Rと、メモリMemとである。資源ARの資源要素は、
A0、A1、A2であり、資源DRの資源要素はD0、
D1、D2である。また、これらの資源には、それぞれ
機能制限が存在する。資源ARは、メモリの間接参照機
能を持つが、資源DRは、メモリの間接参照機能を持た
ない。また資源DRは、乗除算演算のオペランドとなり
うるが、資源ARはならない。レジスタD0及びA0
は、関数呼び出し時使用レジスタとして設定されてい
る。
【0115】図7はプログラムの例であり、既に最適化
装置32によって、ソースプログラムから基本ブロック
が抽出され、変数と生存区間の情報が得られている。同
図において変数は、s、q、r、a、b、c、d、e、
f、g、Ret、f1、f2である。変数s、q、rは、ポイ
ンタ変数である。ポインタ変数とは、メモリを間接参照
する変数である。
【0116】変数f1、f2は、プログラム中の関数呼び出
しにおいて使用する関数呼び出し時使用レジスタを表現
するために導入した変数である。変数f1は、関数呼び出
し部「f1(c);」で使用する関数呼び出し時使用レジ
スタであり、変数f2は、関数呼び出し部「f2(b、*
r);」で使用する関数呼び出し時使用レジスタのこと
である。
【0117】この状態で、資源割付装置33に処理が移
る。資源割付制御部1は、割付対象生成部2を起動す
る。割付対象生成部2は、割付対象を生成する(図3の
ステップa1)。その結果、図7の「(2)割付対象」
の情報が得られる。同図において、各変数と実線を示す
区間は生存区間を示す。この時点で上述の変数f1、f2に
は、関数呼び出し時使用レジスタおよび破壊レジスタと
して用いられるレジスタD0、A0が割り付けられてい
るものとする。また変数Retには、戻り値レジスタとし
て用いられるレジスタD0が割り付けられているものと
する。
【0118】資源割付装置33の以降の処理の経過を図
8に示す。図7に示された割付対象の情報は、図8中の
割付対象テーブルm1として保持されているものとす
る。資源割付制御部1は、同一資源要素割付関係検出部
6を起動し、それぞれの割付対象の同一資源要素割付関
係を調べさせる(ステップa2)。その結果、任意の割
付対象xについての割付対象の集合であるR1(x)が
得られる。{数式7}に、その内容を示す。
【0119】{数式7} R1(s)={} R1(q)={} R1(r)={} R1(a)={} R1(b)={e} R1(c)={d} R1(d)={c} R1(e)={b、f} R1(f)={e、g} R1(g)={f、Ret} R1(Ret)={g} これらの処理結果を、図中の同一資源要素割付関係テー
ブルm5にも示しておく。
【0120】次に資源割付制御部1は、同時生存割付対
象検出部5を起動する。同時生存割付対象検出部5は、
割付対象保持部3に格納されているそれぞれの割付対象
に関して、生存区間が重なる割付対象を求める(ステッ
プa3)。その結果、任意の割付対象xの生存区間と、
生存区間が重なる割付対象の集合であるOv(x)の情
報が得られる。{数式6}にその内容を示す。 r{数式6} Ov(s)={q、r} Ov(q)={s、r、a} Ov(r)={s、q、a、b、c、d、f1、f2} Ov(a)={q、r、b、c、d、f1} Ov(b)={r、a、c、d、f1、f2} Ov(c)={r、a、b、f1} Ov(d)={r、a、b} Ov(e)={} Ov(f)={} Ov(g)={} Ov(Ret)={} Ov(f1)={r、a、b、c} Ov(f2)={r、b} これらの処理結果を、図8中の重なりテーブルm4にも
示しておく。
【0121】資源別コスト計算部4を起動し、各割付対
象xの推定コスト値を計算させる(ステップa4)。こ
こで、上述のC(x、R、i)の値を、以下の{数式
4}のように定義する。 {数式4} C(x、AR、代入)=1 C(x、DR、代入)=1 C(x、Mem、代入)=3 C(x、AR、加算)=1 C(x、DR、加算)=1 C(x、Mem、加算)=3 C(x、AR、減算)=1 C(x、DR、減算)=1 C(x、Mem、減算)=3 C(x、AR、比較)=1 C(x、DR、比較)=1 C(x、Mem、比較)=3 C(x、AR、乗算)=2 C(x、DR、乗算)=1 C(x、Mem、乗算)=3 C(x、AR、除算)=2 C(x、DR、除算)=1 C(x、Mem、除算)=3 C(x、AR、間接参照)=1 C(x、DR、間接参照)=2 C(x、Mem、間接参照)=3 C(x、AR、関数呼出)=1 C(x、DR、関数呼出)=1 C(x、Mem、関数呼出)=3 これらの定義内容を、図8中のコスト定義テーブルm2
にも示しておく。これらの値によって、資源別コスト計
算部4は、各割付対象の推定コスト値を計算する。図8
中の割付対象テーブルm1の割付対象に対する計算結果
は、以下のように求められる。 Cost(AR、s)=1、Cost(DR、s)=2、Cost(Mem、s)=3、 Cost(AR、q)=1、Cost(DR、q)=2、Cost(Mem、q)=3、 Cost(AR、r)=3、Cost(DR、r)=6、Cost(Mem、r)=9、 Cost(AR、a)=2、Cost(DR、a)=2、Cost(Mem、a)=6、 Cost(AR、b)=5、Cost(DR、b)=4、Cost(Mem、b)=12、 Cost(AR、c)=2、Cost(DR、c)=3、Cost(Mem、c)=6、 Cost(AR、d)=3、Cost(DR、d)=2、Cost(Mem、d)=6、 Cost(AR、e)=2、Cost(DR、e)=2、Cost(Mem、e)=6、 Cost(AR、f)=2、Cost(DR、f)=2、Cost(Mem、f)=6、 Cost(AR、g)=2、Cost(DR、g)=2、Cost(Mem、g)=6 これらの計算結果を、図8中の推定コストテーブルm3
にも示しておく。
【0122】次に資源割付制御部1は、資源別割付対象
集合分割部7を起動し、資源別割付対象集合を生成する
作業を行う(ステップa5)。この作業を図4のフロー
チャートを用いて説明する。先ず、資源別割付対象集合
分割部7は、割付対象を取り出す(ステップb1)。次
に割付対象aの最小コスト資源として、資源ARおよび
資源DRを求める(ステップb2)。最小コスト資源が
複数なので、割付対象aと同一資源要素割付関係にある
割付対象を求める(ステップb3)。同一資源要素割付
関係にある割付対象が存在しないので、最小コスト資源
としてDRを選択する。また、割付対象aを、資源DR
の資源別割付対象集合に格納する(ステップb8)。
【0123】次に資源別割付対象集合分割部7は、割付
対象eを取り出す(ステップb1)。割付対象eについ
て最小コスト資源として、資源ARおよび資源DRを求
める(ステップb2)。最小コスト資源が複数なので、
割付対象eと同一資源要素割付関係にある割付対象を求
める。ここで割付対象b、fが求められる(ステップb
3)。同一資源要素割付関係の割付対象が存在したの
で、割付対象aとの割付関係関係強度が最大の割付対象
である割付対象bを選択する(ステップb4)。割付対
象bについての最小コスト資源を求める。ここで求めら
れる最小コスト資源は、資源DRである(ステップb
5)。最小コスト資源がただ1つなので、資源DRの資
源別割付対象集合に、割付対象eを格納する(ステップ
b9)。
【0124】以上の処理を、全ての割付対象に対して行
う。その結果、{数式8}に示すような資源別割付対象
集合が得られる。 {数式8}(AR、{s、q、r}) (DR、{a、b、c、d、e、f、g}) (Mem、{}) これらの結果を、図中の資源別割付対象集合テーブルm
6に示す。
【0125】次に資源割付制御部1は、資源別割付対象
集合選択部9を起動し、資源別割付対象集合の選択を行
わせる(ステップa6)。この選択作業を、図5のフロ
ーチャートを用いて説明する。未割り付けの資源が存在
するか否かの判断を行う(ステップc1)。割付対象を
割り付けた資源が存在しないので、未割り付けの資源が
1つか複数かの判断を行う(ステップc2)。未割り付
けの資源は、DR、AR、Memであるから、これらの
資源別割付対象集合を全て取り出す(ステップc4)。
資源選択優先度を計算する。計算の結果、資源選択優先
順位は、DR、AR、Memの順となる。資源選択優先
度が最大なのは資源DRであるから、資源DRの資源別
割付対象集合を選択する(ステップc5)。選択された
DRについての資源別割付対象集合を資源別割付対象保
持部10に格納する。
【0126】このような動作の結果、資源別割付対象集
合テーブルm6から資源別割付対象集合(DR、{a、
b、c、d、e、f、g})が選択される。次に資源割
付制御部1は、割付対象優先度計算部11を起動し、そ
れぞれの割付対象についての割付対象優先度および割付
対象優先順位を決定させる(ステップa8)。割付対象
優先度の計算するため、任意の割付対象xについての推
定コストであるCost(DR、x)と、生存区間の情報で
あるLn(x)が必要となる。それぞれの割付対象の生
存区間の長さを、{数式9}に示す。
【0127】{数式9} Ln(s)=4 Ln(q)=4 Ln(r)=9 Ln(a)=5 Ln(b)=6 Ln(c)=2 Ln(d)=1 Ln(e)=1 Ln(f)=1 Ln(g)=1 これらの情報から、それぞれの割付対象の割付対象優先
度は以下のようになる。
【0128】 割付対象 d f e g c b a Ret f1 f2 割付対象優先度 2 2 2 2 1.5 0.7 0.4 1 1 1 割付対象Ret、f1、f2は、既にレジスタに割り付けられ
ているが、優先度として、Ret、f1、f2が存在するルー
プの重みが与えられる。割付対象優先度計算部11が計
算した優先度と、既にレジスタに割り付けられている割
付対象の優先度との内容を、図中の割付対象優先度テー
ブルm7に示す。
【0129】次に資源割付制御部1は、割付対象資源割
付部12を起動し、割付対象に資源要素を割り付けさせ
る(ステップa9)。ここで割り付け処理を行うのは、
資源DRについての資源別割付対象集合である。先ず割
付対象資源割付部12は、割付対象優先度が最大である
割付対象dを取り出す(ステップd3)。重なりテーブ
ルm4に示すOv(d)の要素で、資源要素に割り付け
られている割付対象を求める。そのような割付対象は存
在しないので、割付可能な資源要素として、資源要素D
0、D1、D2を取り出す(ステップd4)(ステップ
d7)。割付可能資源要素が3つ存在したから、それぞ
れの資源要素についての局所的利得値、局所的損失値を
求めるため既に資源要素に割り付けられている割付対象
が、同一資源要素割付関係テーブルに示すR1(d)に
存在するか否かを調べる。存在しなければ、R1(d)
の要素である割付対象cのOv(c)に存在するか否か
を調べる。割付対象資源割付部12は、Ov(c)中か
ら割付対象f1を探し出す。割付対象f1を割り付けている
資源要素D0の局所的損失値を、割付対象cの割付対象
優先度だけ増加させる(ステップd9)。局所的絶対利
得値が大きい資源要素は、資源要素D1、資源要素D2
であるので(ステップd10)、このうち資源要素D1
を、割付対象dに割り付ける。
【0130】次に割付対象資源割付部12は、割付対象
優先度が2番目である割付対象fを取り出す(ステップ
d3)。割付対象dの場合と同様に、既に資源要素を割
り付けている割付対象をOv(f)中から探す。そのよ
うな割付対象が存在しないので、割付可能な資源要素と
して資源要素D0、D1、D2を取り出す(ステップd
4)(ステップd7)。割付可能資源要素が3つ存在し
たから、それぞれの資源要素についての局所的利得値、
局所的損失値を求めるため、既に資源要素に割り付けら
れている割付対象がR1(f)に存在するか否かを調べ
る。R1(f)には要素が存在しないので、局所的利得
値、局所的損失値を変化させない(ステップd9)。局
所的利得値、局所的損失値が同じなので資源要素D0
を、割付対象fに割り付ける。
【0131】次に割付対象資源割付部12は、割付対象
優先度が3番目である割付対象eを取り出す(ステップ
d3)。既に資源要素を割り付けている割付対象をOv
(e)から探す。そのような割付対象が存在しないの
で、割付可能な資源要素として、資源要素D0、D1、
D2を取り出す(ステップd4)(ステップd7)。そ
れぞれの資源要素についての局所的利得値、局所的損失
値を求めるため、既に資源要素に割り付けられている割
付対象がR1(e)に存在するか否かを調べる。割付対
象資源割付部12は割付対象bを取り出す。割付対象b
は、既に資源要素D0を割り付けている割付対象f1、f2
と生存区間が重なるので、資源要素D0の局所的損失値
を割付対象bの割付対象優先度だけ増加させる(ステッ
プd9)。次に割付対象資源割付部12は、割付対象f
を取り出す。割付対象fには資源要素D0が割り付けら
れているので、局所的利得値を割付対象fの割付対象優
先度だけ増加させる。局所的絶対利得値は資源要素D
0、D1、D2の順に1.3、0、0となるので局所的
絶対利得値が最大である資源要素D0を、割付対象eに
割り付ける。
【0132】次に割付対象資源割付部12は、割付対象
優先度が4番目である割付対象gを取り出す(ステップ
d3)。既に資源要素を割り付けている割付対象が、O
v(g)に存在するか否かを調べる。そのような割付対
象が存在しないので割付可能な資源要素として、資源要
素D0、D1、D2を取り出す(ステップd4)(ステ
ップd9)。取り出された資源要素についての局所的利
得値、局所的損失値を求めるため、既に資源要素に割り
付けられている割付対象が、R1(g)に存在するか否
かを調べる。その結果、割付対象f、Retを探し出す。
割付対象f、Retは、既に資源要素D0を割り付けてい
るので、資源要素D0の局所的利得値を、割付対象f、
Retの割付対象優先度だけ増加させる(ステップd
9)。局所的絶対利得値が最大である資源要素D0を、
割付対象gに割り付ける。
【0133】次に割付対象資源割付部12は、割付対象
優先度が5番目である割付対象cを取り出す(ステップ
d3)。既に資源要素を割り付けている割付対象をOv
(c)から探す。そのような割付対象として割付対象f1
を取り出す。割付対象f1は、資源要素D0を割り付けて
いるため、割付可能な資源要素として、資源要素D1、
D2を取り出す(ステップd4)(ステップd7)。資
源要素D1、D2についての局所的利得値、局所的損失
値を求めるため、既に資源要素に割り付けられている割
付対象が、R1(c)に存在するか否かを調べる。割付
対象資源割付部12は、割付対象dを探し出す。割付対
象dは既に資源要素D1に割り付けられているので、資
源要素D1の局所的利得値を割付対象dの割付対象優先
度だけ増加させる(ステップd9)。局所的絶対利得値
が最大の資源要素D1を、割付対象cに割り付ける。
【0134】次に割付対象資源割付部12は、割付対象
優先度が6番目である割付対象bを取り出す(ステップ
d3)。既に資源要素を割り付けている割付対象をOv
(b)から探す。そのような割付対象として割付対象f
1、f2、c、dを探し出す。割付対象f1、f2、c、dは
既に資源要素D0およびD1に割り付けられているの
で、割付対象bに割付可能な資源要素として資源要素D
2を取り出す(ステップd4)(ステップd7)。割付
対象bを、資源要素D2に割り付ける(ステップd
8)。
【0135】次に割付対象資源割付部12は、割付対象
優先度が7番目である割付対象aを取り出す(ステップ
d3)。既に資源要素を割り付けている割付対象を、O
v(a)から探す。そのような割付対象として割付対象
f1、b、c、dが探し出される。これらの割付対象は既
に、資源要素D0、D1、D2に割り付けられている
(ステップd4)。割付可能資源要素が存在しないた
め、次の未割り付け資源である資源ARを求める(ステ
ップd5)。割付対象aは、資源ARの資源別割付対象
集合に格納する(ステップd6)。資源ARの資源別割
付対象集合は、(AR、{a、s、q、r}になる。
【0136】上述の動作によって、資源DRについての
資源別割付対象集合の割り付け作業が行われ、それぞれ
の割付対象は、以下のように割り付けられる。 割付対象 d f e g c b 資源要素 D1 D0 D0 D0 D1 D2 同様に資源ARについての資源別割付対象集合に対して
同様な処理を行うと、割付対象に、資源ARの資源要素
が割り付けられる。
【0137】資源AR、DRの全ての資源要素が何れか
の割付対象を割り付けられると、残りの割付対象に資源
Memの資源要素を割り付けるため、割付制御部1は、
資源要素多数時割付部16を起動する。資源要素多数時
割付部16は、資源Memの資源要素を割付対象に割り
付ける。このようにして、資源別割付対象集合選択部9
が全ての資源の資源別割付対象集合を選択すれば、処理
終了の通知を資源割付制御部1に行い、これを受けて資
源割付制御部1は資源割付装置の作業を終了させる。
【0138】このように本発明によれば、資源要素を割
付対象に割り付ける過程において、割付対象への資源要
素の割付状況を綿密に判断することができる。そのため
メモリに割り付ける割付対象は著しく少なくなり、更に
メモリ、レジスタ間およびレジスタ、レジスタ間の転送
命令も少なくなるので、最終的に生成される機械語プロ
グラムのプログラムサイズおよび実行速度を向上させる
ことができる。レジスタ数が少数であるターゲットマシ
ンに対して資源割付を行う場合、上述のプログラムサイ
ズおよび実行速度の向上は特に顕著になる。
【0139】また3種類以上の機能に別れている資源か
ら、割付対象を割り付けるのにふさわしい複数の資源要
素を選び出せるので、ハードウェアコストを減少させる
ために機能が異なる資源を複数個備える組み込み用途向
けのマイクロプロセッサのプログラム開発にあたって、
本発明のコンパイラを使用すれば、そのマイクロプロセ
ッサが備えている機能を充分に発揮する機械語プログラ
ムを作成することができる。
【0140】図9は、本発明の第2実施例である資源割
付装置35を示す構成図である。同図において、第1の
実施例の資源割付装置33と同じ構成要素については同
一の参照符号を付して説明を省略し、相違点だけを述べ
ることにする。資源割付装置35は、資源割付装置33
の構成に加えて、大域グループ化部13、大域的得失値
情報計算部14を備える。また、資源割付制御部1に代
えて資源要素割付制御部19が、割付対象資源割付部1
2に代えて割付対象資源割付部15が、それぞれ備えら
れている。
【0141】大域グループ化部13は、資源別割付対象
保持部10に保持されている全ての割付対象の中から同
一の資源要素を割り付けると効果がある複数の割付対象
を選び出し、グループ化する。より具体的には、大域グ
ループ化部13は、資源別割付対象保持部10に保持さ
れている割付対象について、先ず、同一資源要素割付関
係検出部6によって求められた同一資源要素割付関係R
1(x)を参照して、それに含まれる同一資源要素割付
関係にある割付対象x1をグループのメンバーとする。
次にグループ内に取り込んだ割付対象について更に同一
資源要素割付関係R1(x1)を参照して、それに含ま
れている割付対象x2もグループのメンバーとする。以
降も同様にして、グループ内に取り込んだ割付対象につ
いて同一資源要素割付関係R1(x1)を参照して、順
々に得られる割付対象をメンバーとしてグループ化す
る。このグループは、上述のように同一資源要素割付関
係に基づいて連鎖する割付対象のグループであり、グル
ープ内のどれかがある資源要素に割り付けられると、残
りの割付対象も可能な限りその資源要素に割り付けられ
る。以降このグル−プを大域グループと呼ぶ。このよう
にグループ化した割付対象を、大域グループ化部13
は、大域グループテーブルに出力する。但し、生存区間
の重なりのため、大域グループ化部13によって求めら
れた大域グループ内の全ての割付対象が、必ずしも1つ
の資源要素に割り付けられるとは限らない。
【0142】大域的得失値情報計算部14は、大域グル
ープ化部13が作成した大域グループ毎に、グループ内
の割付対象が割り付けられる可能性がある全ての資源要
素とそれぞれの資源要素の利得値および損失値を記憶す
るための大域的利得値テーブルおよび大域的損失値テー
ブルを作成し、これらのテーブルに利得値および損失値
の初期値を書き込む。これらのテーブル上の利得値およ
び損失値を、割付対象資源割付部12が用いる局所的利
得値および局所的損失値と区別するため、大域的利得値
および大域的損失値と呼ぶ。大域的利得値テーブル、大
域的損失値テーブルは、それぞれの資源要素の大域的利
得値、大域的損失値の値を書き込むためのセルによって
構成されている。上述の動作を更に具体的に説明する
と、大域的得失値情報計算部14は、ターゲットマシン
の資源要素の数だけ上述のセルを作成する。次に大域的
利得値、大域的損失値の初期値を書き込むのだが、関数
呼び出し時使用レジスタ、破壊レジスタ等、既に割付対
象に割り付けられている資源要素の初期値には、大域的
利得値、大域的損失値を求め、求めた値を書き込む。こ
の様子を更に詳しく述べる。
【0143】先ず大域グループGのメンバーである割付
対象xを取り出す。取り出された割付対象xが、既に資
源要素に割り付けられていれば、その資源要素の大域的
利得値に割付対象xの割付対象優先度を書き込む。次に
割付対象xの生存区間と生存区間が重なり、既に資源要
素に割り付けられている割付対象を探す。そのような割
付対象が見つかれば、その資源要素の大域的損失値に、
割付対象xの割付対象優先度を書き込む。上述の資源要
素以外の、割付対象を割り付けていない資源要素には、
大域的利得値、大域的損失値の初期値として0を書き込
む。
【0144】割付対象資源割付部15は、割付対象資源
割付部12と同様の動作を行う。異なる点は、取り出さ
れた割付対象を割り付けることができる資源要素が複数
個存在し、かつそれらの局所的絶対利得値が等しいと
き、大域グループ利得テーブル、大域グループ損失テー
ブルに示された大域的利得値、大域的損失値の差を求
め、それらの差が最大の資源要素にその割付対象を割り
付ける点である。
【0145】図10は、資源割付制御部19のフローチ
ャートである。本フローチャートは、図3のフローチャ
ートと類似しているため、異なるステップのみ説明す
る。ステップe1〜e7、e9では、図3に示したステ
ップa1〜a7、a8とそれぞれ同じ処理を行うので説
明を省略する。ステップe8では、資源別割付対象集合
保持部8に格納されている資源の資源要素の個数を調べ
る。資源要素の個数が、割付対象の個数をはるかに上回
っているとき、ステップe13に移行する。そうでなけ
れば、ステップe9に移行する。
【0146】ステップe10では、大域グループ化部1
3を起動する。ステップe11では、大域的得失値情報
計算部14を起動する。ステップe12では、割付対象
資源割付部15を起動する。ステップe13では、資源
要素多数時割付部16を起動する。図11は、割付対象
資源割付部15のフローチャートである。
【0147】ステップf1、f9では、図6に示したス
テップd1〜d9と同じ処理を行う。ステップf10
は、最大の局所的絶対利得値をもつ資源要素が、1つで
あるかあるいは複数であるかの判断を行う。最大の局所
的絶対利得値をもつ資源要素が複数である場合、ステッ
プf11に移行する。1つの場合、ステップf13に移
行する。
【0148】ステップf11では、大域的利得値テーブ
ルおよび大域的損失値テーブルに保持されている大域的
利得値および大域的損失値の集計結果を参照し、これら
の差をそれぞれの資源要素について求める。こうして求
めた差が最大である資源要素を取り出し、割付可能資源
要素とする。ステップf12では、割付可能資源要素
を、割付対象xに割り付る。
【0149】ステップf13では、局所的絶対利得値が
最大の割付可能資源要素を、割付対象xに割り付る。ス
テップf14では、割付対象xに割り付けた資源要素の
大域的利得値に、割付対象xの割付対象優先度を足し合
わせる。この動作の様子の例を以下に述べる。先ず、割
付対象xが属する大域グループGを求める。次に大域グ
ル−プGの大域的利得値テーブルを取り出し、割付対象
xに割り付けた資源要素の大域的利得値に、割付対象x
の割付対象優先度を足し合わせる。
【0150】ステップf15では、資源要素を割付対象
xに割り付けたことによって、損失が発生する大域グル
−プの大域的損失値を増加させる。この様子の例を以下
に述べる。先ず、割付対象xと生存区間が重なる割付対
象x1を取り出す。次に、割付対象x1が属する大域グ
ル−プG1の大域的損失値テーブルを取り出し、割付対
象xに割り付けた資源要素の大域的損失値に、割付対象
x1の割付対象優先度を足し合わせる。また、割付対象
xが上述の非可換演算のN被演算子として使用されてい
るときは、その演算の演算結果を格納している割付対象
x1を検出し、また、演算結果を格納している割付対象
が、割付対象xである場合には、N被演算子となってい
る割付対象x1を検出して、割付対象x1が属する大域
グル−プG1の大域的損失値を割付対象x1の割付対象
優先度だけ増加させる。
【0151】以上のように構成された資源割付装置35
の動作を説明する。尚、資源割付装置33と類似する部
分については説明を省略し、異なる点のみについて説明
する。図7に示されたプログラムに対して、資源割付装
置35が動作し、既に上述の{数式8}に示すような資
源別割付対象集合が得られており、また資源別割付対象
集合選択部9によって、資源別割付対象集合(DR、
{a、b、c、d、e、f、g})が選択されている
(図10のステップe1〜e6)ものとする。
【0152】資源割付制御部19は、資源DRの資源要
素の個数を調べる(ステップe8)。資源Memは、一
般的に資源要素の個数が割付対象の個数よりはるかに多
数であり、資源要素の個数に制限がないと見なしてもよ
い資源である。つまり、資源要素多数時割付部16によ
り処理されるものとする。また、資源AR、DRは、同
一資源要素割付関係にあるもの同士を可能な限り同じ資
源要素に割り付けると効果があるものとする。資源割付
制御部19は、割り付け可能な資源がDRであり、資源
の個数が少数であるので、割付対象優先度計算部11を
起動する(ステップe8)(ステップe9)。
【0153】割付対象優先度計算部11が起動した後、
資源割付制御部19は、大域グループ化部13を起動す
る(ステップe10)。大域グループ化部13は{数式
10}に示す4つの大域グループを形成する。これらの
グループは、大域グループテーブルに出力される。 {数式10} G1={c、d}、G2={b、e、f、g、Ret}、G3={a} 次に資源割付制御部19は、大域的得失値情報計算部1
4を起動する。大域的得失値情報計算部14は、それぞ
れの大域グループについての大域的利得値テーブルおよ
び大域的損失値テーブルを作成し、初期値を書き込む。
以降、大域グループG1およびG2に注目して動作を説
明する。
【0154】先ず大域的得失値情報計算部14は、大域
グループG1を選択し、割付対象cを取り出す。図8の
重なりテーブルm4に示したOv(c)の要素に、既に
資源要素に割り付けられている割付対象である、割付対
象f1、f2、Retが存在するか否かを調べる。この結果、
大域的得失値情報計算部14は、割付対象f1を探し出
し、大域グル−プG1の資源要素D0の大域的損失値
に、図8の割付対象優先度テーブルm7に示した割付対
象cの割付対象優先度である1.5を書き込む。次に割
付対象d取り出し、割付対象cと同様に、Ov(d)を
調べる。Ov(d)の要素には、上述の割付対象は存在
しないので、大域的利得値、大域的損失値を変化させな
い。残りの大域的利得値、大域的損失値のセルに0を書
き込むと、大域グループG1についての大域的利得値テ
ーブル、大域的損失値テーブルの初期値は、以下に示す
ようになる。
【0155】 次に大域的得失値情報計算部14は、大域グループG2
を選択し、割付対象bを取り出す。割付対象c、dの場
合と同様に、Ov(b)の要素を調べ、割付対象f1、f
2、Retを探し出す。割付対象f1、f2が探し出されたた
め、資源要素D0の大域的損失値に、割付対象bの割付
対象優先度である0.7を書き込む。続いて割付対象
e、f、gを取り出し、Ov(e)、Ov(f)、Ov
(g)を調べる。これらの集合の要素には、割付対象f
1、f2、Retが存在しないので、大域的利得値、大域的損
失値を変化させない。次に大域的得失値情報計算部14
は、割付対象Retを取り出す。割付対象Retは、既に資源
要素D0を割り付けている割付対象なので、資源要素D
0の大域的利得値に、割付対象Retの割付対象優先度で
ある1を書き込む。残り資源要素のセルには初期値とし
て0を書き込む。以上の動作によって、大域グループG
2についての大域的利得値テーブル、大域的損失値テー
ブルの初期値は、以下に示すようになる(ステップe1
1)。
【0156】 以下、大域グループG3について同様な処理を行うと、
大域的利得値テーブルおよび大域的損失値テーブルは、
図12のように出力される。
【0157】次に資源割付制御部1は割付対象資源割付
部15を起動し、割付対象に資源要素を割り付ける。こ
こで割り付け処理を行うのは、資源DRについての資源
別割付対象集合である。先ず割付対象資源割付部15
は、割付対象優先度が最大である割付対象dを取り出し
て、割付対象資源割付部12と同様の動作を行い、局所
的絶対利得値が大きい割付可能資源要素として、資源要
素D1、D2を既に求めている(ステップf1、f3〜
f10)。局所的絶対利得値が同じ割付可能資源要素が
2つ存在したため、大域的絶対利得値が最大の資源要素
を求める(ステップf11)。割付対象dが属している
大域グループG1を探し出し、大域グループG1の大域
的利得値テーブル、大域的損失値テーブルを参照して、
大域的絶対利得値が最大である資源要素D1を求める。
求めた資源要素D1を割付対象dに割り付ける(ステッ
プf12)。割付対象dが資源要素D1に割り付けられ
たため、割付対象dが属する大域グループG1の資源要
素D1についての大域的利得値を、資源要素dの割付対
象優先度分だけ増加させる(ステップf14)。他の大
域グル−プの大域的損失値テーブルを更新するため、割
付対象資源割付部15は、図8に示した重なりテーブル
m4を参照し、Ov(d)の要素である割付対象r、
a、bが、それぞれどの大域グループに属するかを調べ
る。割付対象資源割付部15は、割付対象bが、大域グ
ループG2に属していることを調べ出し、大域グループ
G2についての大域的損失値を割付対象bの割付対象優
先度分だけ増加させる(ステップf15)。よって割付
対象dに資源要素D1を割り付けたとき、大域グル−プ
G1の大域的利得値テーブルおよび大域グル−プG2の
大域的損失値テーブルは、以下に示すようになる。
【0158】 次に割付対象資源割付部15は、割付対象優先度が2番
目である割付対象fを取り出して、割付対象資源割付部
12と同様な処理を行い、割付可能資源要素として資源
要素D0、D1、D2を既に求めている(ステップf3
〜f10)。局所的絶対利得値が同じ割付可能資源要素
が3つ存在したため、割付対象fが属している大域グル
ープG2を参照し、最大の大域的絶対利得値を持つ資源
要素である資源要素D0を求める。求めた資源要素D0
を、割付対象fに割り付ける(ステップf12)。資源
要素D0に割り付けられたため、割付対象資源割付部1
5は、割付対象fが属する大域グループG2の資源要素
D0についての大域的利得値を、割付対象fの割付対象
優先度分だけ増加させる(ステップf14)。他の大域
グル−プの大域的損失値テーブルを更新するため、割付
対象dの場合と同様にOv(f)を調べるが、Ov
(f)には要素が存在しないので、どの大域グループの
大域的損失値も変化させない(ステップf15)。割付
対象fを割り付けたときの大域的利得値テーブルの内容
は、以下に示すようになる。
【0159】 次に割付対象資源割付部15は、割付対象優先度が3番
目である割付対象eを取り出して、割付対象資源割付部
12と同様の処理を行い、割付対象eに、資源要素D0
を割り付ける(ステップf3〜f13)。割付対象eが
属する大域グループである大域グループG2を求め、資
源要素D0の大域的利得値を資源要素eの割付対象優先
度分だけ増加させる(ステップf14)。大域的損失値
テーブルを更新するため、割付対象d、fの場合と同様
に、Ov(e)を調べるが、Ov(e)には要素が存在
しないので、どの大域グループの大域的損失値も変化さ
せない(ステップf15)。割付対象eを割り付けたと
き、大域的利得値テーブルの内容は、以下に示すように
なる。
【0160】 次に割付対象資源割付部15は、割付対象優先度が4番
目である割付対象gを取り出して、割付対象資源割付部
12と同様の処理を行い、割付対象gに資源要素D0を
割り付ける(ステップf3〜ステップf13)。割付対
象gに、資源要素D0を割り付けたため、割付対象gが
属する大域グループG2の資源要素D0についての大域
的利得値を、資源要素gの割付対象優先度分だけ増加さ
せる(ステップf14)。大域的損失値テーブルを更新
するため、割付対象d、f、eの場合と同様に、Ov
(g)を調べるが、Ov(g)には、要素が存在しない
ので、どの大域グループの大域的損失値を変化させない
(ステップf15)。割付対象gを割り付けたとき、大
域的利得値テーブルの内容は、以下に示すようになる。
【0161】 次に割付対象資源割付部15は、割付対象優先度が5番
目である割付対象cを取り出して、割付対象資源割付部
12と同様の処理を行い、割付対象cを資源要素D1に
割り付ける(ステップf3〜f13)。割付対象cが、
資源要素D1に割り付けられたため、割付対象cが属す
る大域グループG1の資源要素D1についての大域的利
得値を、資源要素cの割付対象優先度分だけ増加させる
(ステップf14)。大域的損失値テーブルを更新する
ため、割付対象d、f、e、gの場合と同様に、Ov
(c)の要素が、どの大域グループに属するかを調べ
る。割付対象bは大域グループG2に属しているから、
大域グループG2の、資源要素D1の大域的損失値を、
割付対象bの割付対象優先度分だけ増加させる(ステッ
プf15)。割付対象cを割り付けたとき、大域グルー
プG1の大域的利得値テーブル、および大域グル−プG
2の大域的損失値テーブルの内容は、以下に示すように
なる。
【0162】 次に割付対象資源割付部15は、割付対象優先度が6番
目である割付対象bを取り出して、割付対象資源割付部
12と同様の処理を行い、割付対象bを資源要素D2に
割り付ける(ステップf3〜ステップf8)。割付対象
bを資源要素D2に割り付けられたため、割付対象bが
属する大域グループG2の資源要素D2についての大域
的利得値を、割付対象bの割付対象優先度分だけ増加さ
せる(ステップf14)。他の大域グル−プの大域的損
失値テーブルを更新するため、割付対象d、f、e、
g、c、bの場合と同様に、Ov(b)の要素が、どの
大域グループに属するかを調べる。割付対象c、dは、
大域グループG1に属しているから、資源要素D2の大
域的損失値を、割付対象c、dの割付対象優先度だけ増
加させる(ステップf15)。割付対象cを割り付けた
とき、大域グループG2の大域的利得値テーブルおよび
大域グループG1の大域的損失値の内容は、以下に示す
ようになる。
【0163】 次に割付対象資源割付部15は、割付対象優先度が7番
目である割付対象aを取り出して、割付対象資源割付部
12と同様の処理を行う(ステップf3〜f6)。
【0164】以上の動作による割り付けの作業の結果、
資源DRの資源要素と、割付対象との割り付け組み合わ
せは以下のようになる。 割付対象 d f e g c b 資源要素 D1 D0 D0 D0 D1 D2 また、資源ARについて、割り付け処理が行われれば、
資源要素と、割付対象との割り付けの組み合わせは以下
のようになる(ステップe12)。
【0165】 割付対象 a s p r 資源要素 A1 A0 A1 A2 資源別割付対象集合選択部9は、資源Memの資源別割
付対象集合を取り出す(ステップe6)。資源Mem
は、資源要素の個数が多数であるので、資源割付制御部
19は、資源要素多数時割付部16を起動する(ステッ
プe13)。資源別割付対象集合選択部9は、選択する
資源が無くなったことを資源割付制御部19に通知する
(ステップe6)。資源別割付対象集合選択部9の通知
を受け、資源割付制御部19は処理を終了する(ステッ
プe7)。
【0166】このように本発明によれば、プログラム中
の各割付対象の同一資源要素割付関係が広域的にどうな
っているかを参照するため、より理想的な資源割付が行
われる。この結果、最終的に生成する機械語プログラム
のプログラムサイズおよび実行速度は、一層向上するこ
とになる。
【0167】
【発明の効果】以上説明してきたように、本発明の資源
割付装置によれば、資源要素を割付対象に割り付ける過
程において、割付対象への資源要素の割り付け状況を綿
密に判断することができる。そのためメモリに割り付け
る割付対象は著しく少なくなり、更にメモリ、レジスタ
間およびレジスタ、レジスタ間の転送命令も少なくなる
ので、最終的に生成される機械語プログラムのプログラ
ムサイズおよび実行速度を向上させることができる。レ
ジスタ数が少数であるターゲットマシンに対して資源割
付を行う場合、上述のプログラムサイズおよび実行速度
の向上は特に顕著になる。
【0168】また3種類以上の機能に別れている資源か
ら、割付対象を割り付けるのにふさわしい複数の資源要
素を選び出せるので、ハードウェアコストを減少させる
ために機能が異なる資源を複数個備える組み込み用途向
けのマイクロプロセッサのプログラムの開発にあたっ
て、本発明のコンパイラを使用すれば、そのマイクロプ
ロセッサが備えている機能を充分に発揮する機械語プロ
グラムを作成することができる。
【図面の簡単な説明】
【図1】コンパイラの構成図である。
【図2】本発明の第1実施例の資源割付装置33の構成
図である。
【図3】資源割付制御部1のフローチャートである。
【図4】資源別割付対象集合分割部7のフローチャート
である。
【図5】資源別割付対象集合選択部9のフローチャート
である。
【図6】割付対象資源割付部12のフローチャートであ
る。
【図7】処理対象であるプログラムと、そのプログラム
中の割付対象を示す図である。
【図8】資源割付装置33が行った、割り付け処理の経
過を示す図である。
【図9】本発明の第2実施例の資源割付装置35の構成
図である。
【図10】資源割付制御部19のフローチャートであ
る。
【図11】割付対象資源割付部15のフローチャートで
ある。
【図12】大域グループと、大域的利得値テーブルおよ
び大域的損失値テーブルとの例を示す図である。
【図13】従来の資源割付装置20の構成図である。
【図14】処理対象であるプログラムと、そのプログラ
ム中の割付対象を示す図である。
【図15】図14のプログラムについて求められた干渉
グラフを示す図である。
【図16】従来の資源割付装置20が行った割り付け処
理の経過を示す図である。
【符号の説明】
1 資源割付制御部 2 割付対象生成部 3 割付対象保持部 4 資源別コスト計算部 5 同時生存割付対象検出部 6 同一資源要素割付関係検出部 7 資源別割付対象集合分割部 8 資源別割付対象集合保持部 9 資源別割付対象集合選択部 10 資源別割付対象保持部 11 割付対象優先度計算部 12 割付対象資源割付部 13 大域グループ化部 14 大域グループ内得失値情報計算部 15 割付対象資源割付部 16 資源要素多数時割付部 19 資源割付制御部 33 資源割付装置 35 資源割付装置
フロントページの続き (56)参考文献 特開 平4−213118(JP,A) 特開 平4−241630(JP,A) 特開 平1−61822(JP,A) 特開 平6−214802(JP,A) 特開 平6−242963(JP,A) 佐々木政孝,「岩波講座ソフトウェア 科学5 プログラミング言語処理系」, 日本,株式会社岩波書店・発行,1989年 10月31日,初版,pp.418〜431 中田育男,「コンピューターサイエン ス・ライブラリー コンパイラ」,日 本,産業図書株式会社・発行,1981年 9月10日,初版,pp.264〜268 A.V.エイホ、J.D.ウルマン・ 共著、土居範久・訳,「情報処理シリー ズ7 コンパイラ」,日本,株式会社培 風館・発行,1986年 3月30日,初版, pp.485〜488 阿部仁、守屋康正,「生存区間分割に よるレジスタ割り付け」,情報処理学会 第42回全国大会講演論文集(分冊5), 日本,社団法人情報処理学会・発行, 1991年 2月25日,第5分冊,pp. 113〜114 田中旭・他,「最適化コンパイラにお けるレジスタ割付けの一方式」情報処理 学会第43回全国大会講演論文集(分冊 5),日本,社団法人情報処理学会・発 行,1991年 9月24日,第5分冊,p p.197〜198 Fred C.Chow,John L.Hennessy,”The Pr iority−Based Color ing Approach to Re gister Allocatio n”,ACM Transaction s on Programming L anguages and Syste ms,Vol.12,No.4,1990,p p.501−536 (58)調査した分野(Int.Cl.7,DB名) G06F 9/45 CSDB(日本国特許庁) JSTファイル(JOIS) INSPEC(DIALOG)

Claims (37)

    (57)【特許請求の範囲】
  1. 【請求項1】高級言語で書かれたプログラムを機械語プ
    ログラムに翻訳するコンパイラに用いられ、レジスタ、
    メモリ等のハードウェアである資源の資源要素を、プロ
    グラミング言語で記述されたプログラムの中の変数と生
    存区間の組である割付対象に、割付対象の優先度に基づ
    いて割り付ける資源割付装置であって、 プログラム中の割付対象とその優先度とを保持する割付
    対象保持手段と、 前記割付対象保持手段から優先度最大の割付対象を取り
    出し、優先度が最大の割付対象に資源要素の何れかを割
    り付ける第1の資源要素割付手段と、 割付結果を格納する割付結果格納手段と、 直前に割り付けられた割付対象の優先度に対して、次順
    位の優先度を持つ割付対象を、前記割付対象保持手段か
    ら取り出す割付対象取出手段と、 前記割付対象取出手段が取り出した割付対象について、
    生存区間が重なっている割付対象を検出する第1の割付
    対象検出手段と、 全ての資源要素の中から、前記第1の割付対象検出手段
    が検出した割付対象に割り付けていない資源要素を、前
    記割付結果格納手段を参照して判定する第1の資源要素
    判定手段と、 前記割付対象取出手段が取り出した割付対象について、
    生存区間の開始点又は終了点を参照し、該開始点で生存
    区間が終わる割付対象と、該終了点で生存区間が始まる
    割付対象とを検出する第2の割付対象検出手段と、 前記第2の割付対象検出手段が検出した割付対象に割り
    付けている資源要素を、前記割付結果格納手段を参照し
    て判定する第2の資源要素判定手段と、 前記第1の資源要素判定手段が判定した資源要素と第2
    の資源要素判定手段が判定した資源要素の何れかの資源
    要素を、前記割付対象取出手段が取り出した割付対象に
    割り付け、前記割付結果格納手段に格納する第2の資源
    要素割付手段と、 全ての割付対象が割り付けられるまで、前記割付対象取
    出手段の起動を繰り返えす制御手段とを備えることを特
    徴とする資源割付装置
  2. 【請求項2】前記第2の資源要素割付手段は第1の資源
    要素判定手段が判定した資源要素が1つである場合、そ
    の資源要素を前記割付対象取出手段が取り出した割付対
    象に割り付ける第1の割付手段と、 第1の資源要素判定手段が判定した資源要素が複数個存
    在し、前記第2の資源要素判定手段が判定した結果該当
    する資源要素が存在しない場合、前記第1の資源要素判
    定手段が判定した資源要素の何れかを前記割付対象取出
    手段が取り出した割付対象に割り付ける第2の割付手段
    と、 第1の資源要素判定手段が判定した資源要素が複数個存
    在し、前記第2の資源要素判定手段が判定した資源要素
    が存在する場合、前記第1の資源要素判定手段の判定結
    果である資源要素であり、かつ前記第2の資源要素判定
    手段の判定結果である資源要素の何れかを前記割付対象
    取出手段が取り出した割付対象に割り付ける第3の割付
    手段とを備えることを特徴とする請求項1記載の資源割
    付装置
  3. 【請求項3】 前記第3の割付手段は第1の資源要素判
    定手段が判定した資源要素が複数個存在し、第2の資源
    要素判定手段が判定した資源要素が複数個存在する場
    合、それぞれの資源要素について、資源要素を使用する
    命令の生成コードの実行時間およびメモリサイズが減少
    する度合である利得値を算出する利得値算出手段と、 前記利得値算出手段が算出した利得値が最大の資源要素
    を、前記割付対象取出手段が取り出した割付対象に割り
    付ける第4の割付手段とを備えることを特徴とする請求
    項2記載の資源割付装置
  4. 【請求項4】前記第2の資源要素割付手段は更に前記第
    2の割付対象検出手段が検出した割付対象の生存区間
    と、生存区間が重なる割付対象を検出する第3の割付対
    象検出手段と、 前記割付結果格納手段を参照して、前記第3の割付対象
    検出手段が検出した割付対象に割り付けている資源要素
    を判定する第3の資源要素判定手段と、 前記第2の資源要素判定手段が判定した結果該当する資
    源要素がなかった場合、前記第1の資源要素判定手段の
    判定結果であり、かつ前記第3の資源要素判定手段の判
    定結果でない資源要素を前記割付対象取出手段が取り出
    した割付対象に割り付ける第5の割付手段とを備えるこ
    とを特徴とする請求項3記載の資源割付装置
  5. 【請求項5】前記第2の資源要素割付手段は更に第1の
    資源要素判定手段が判定した資源要素が複数個存在し、
    第3の資源要素判定手段が判定した資源要素が複数個存
    在する場合、それぞれの資源要素について、資源要素を
    使用する命令の生成コードの実行時間およびメモリサイ
    ズが増加する度合である損失値を算出する損失値算出手
    段と、 前記損失値算出手段が算出した損失値が最小の資源要素
    を前記割付対象取出手段が取り出した割付対象に割り付
    ける第6の割付手段とを備えることを特徴とする請求項
    4記載の資源割付装置
  6. 【請求項6】前記利得値算出手段はそれぞれの資源要素
    に割り付けられている割付対象の優先度に基づいて、前
    記第2の資源要素判定手段が判定したそれぞれの資源要
    素についての前記利得値を算出することを特徴とする請
    求項3記載の資源割付装置
  7. 【請求項7】前記利得値算出手段は前記第2の資源要素
    判定手段が判定したそれぞれの資源要素に割り付けられ
    ている割付対象であり、かつ第2の割付対象検出手段の
    検出結果である割付対象の個数に基づいて、前記第2の
    資源要素判定手段が判定したそれぞれの資源要素につい
    ての前記利得値を算出することを特徴とする請求項3記
    載の資源割付装置
  8. 【請求項8】前記損失値算出手段は前記第3の資源要素
    判定手段が判定したそれぞれの資源要素に割り付けられ
    ている割付対象と生存区間が重なる割付対象であり、前
    記第2の割付対象検出手段の検出結果である割付対象の
    優先度に基づいて、前記第3の資源要素判定手段が判定
    したそれぞれの資源要素についての前記損失値を算出す
    ることを特徴とする請求項5記載の資源割付装置
  9. 【請求項9】前記損失値算出手段は第3の資源要素判定
    手段が判定したそれぞれの資源要素に割り付けられてい
    る割付対象と生存区間が重なる割付対象であり、前記第
    2の割付対象検出手段の検出結果である割付対象の個数
    に基づいて、前記第2の資源要素判定手段が判定したそ
    れぞれの資源要素についての前記損失値を算出すること
    を特徴とする請求項5記載の資源割付装置
  10. 【請求項10】前記第1の資源要素判定手段は、 資源要素を用いる機械語プログラムの各命令について、
    その命令を実行する際の実行時間およびその命令のメモ
    リサイズを示すコストを、各資源毎に記憶するコスト記
    憶手段と、 1つの割付対象の変数が生存区間内で使用されているそ
    れぞれのプログラム中の命令について、コスト記憶手段
    を参照して資源毎にコストを取り出すコスト検索手段
    と、 コスト検索手段により取り出されたコストをそれぞれの
    割付対象について、資源毎に集計するコスト集計手段
    と、 コスト集計手段の集計結果のうち、どの資源について集
    計値が最小になるのかを判定する第1の資源判定手段
    と、 前記第1の資源判定手段により判定された資源に含まれ
    資源要素の中から、前記第1の割付対象検出手段が検
    出した割付対象に割り付けられていない資源要素を判定
    する最小コスト資源要素判定手段とを備えることを特徴
    とする請求項1から9記載の何れかの資源割付装置
  11. 【請求項11】高級言語で書かれたプログラムを機械語
    プログラムに翻訳するコンパイラに用いられ、レジス
    タ、メモリ等のハードウェアである資源の資源要素を、
    プログラミング言語で記述されたプログラムの中の変数
    と生存区間の組である割付対象に、割付対象の優先度に
    基づいて割り付ける資源割付装置であって、 プログラム中の割付対象とその優先度とを保持する割付
    対象保持手段と、 優先度が最大の割付対象に、資源要素の何れかを割り付
    ける第1の資源要素割付手段と、 割付結果を格納する割付結果格納手段と、 前記割付対象保持手段に保持されているそれぞれの割付
    対象について、生存区間の開始点と、生存区間の終了点
    とが一致している割付対象の組み合わせを全て検出する
    同一資源要素割付関係一括検出手段と、 前記同一資源要素割付関係一括検出手段が検出した割付
    対象の組み合わせで同じ割付対象を含むものを抽出し、
    抽出したものをグループ化する大域グループ化手段と、 直前に割り付けられた割付対象の優先度に対して、次順
    位の優先度を持つ割付対象を、前記割付対象保持手段か
    ら取り出す割付対象取出手段と、 前記割付対象取出手段が取り出した割付対象について、
    生存区間が重なっている割付対象を検出する第1の割付
    対象検出手段と、 全ての資源要素から、前記第1の割付対象検出手段が検
    出した割付対象に割り付けていない資源要素を、前記割
    付結果格納手段を参照して判定する第1の資源要素判定
    手段と、 前記割付対象取出手段が取り出した割付対象が、どの大
    域グループに属するかを調べる第1の大域グループ検出
    手段と、 前記割付対象取出手段が取り出した割付対象が属する大
    域グル−プの、他の割付対象に割り付けられている資源
    要素を、前記割付結果格納手段を参照して判定する第2
    の資源要素判定手段と、 前記第1の資源要素判定手段が判定した資源要素であ
    り、かつ第2の資源要素判定手段が判定した資源要素の
    何れかを、前記割付対象取出手段が取り出した割付対象
    に割り付ける第2の資源要素割付手段と、 全ての割付対象が割り付けられるまで、前記割付対象取
    出手段の起動を繰り返えす制御手段とを備えることを特
    徴とする資源割付装置
  12. 【請求項12】前記第2の資源要素割付手段は第1の資
    源要素判定手段が判定した資源要素が1つである場合、
    その資源要素を前記割付対象取出手段が取り出した割付
    対象に割り付ける第1の割付手段と、 第1の資源要素判定手段が判定した資源要素が複数個存
    在し、前記第2の資源要素判定手段が判定した資源要素
    が存在しない場合、前記第1の資源要素判定手段が判定
    した資源要素の何れかを前記割付対象取出手段が取り出
    した割付対象に割り付ける第2の割付手段と、 第1の資源要素判定手段が判定した資源要素が複数個存
    在し、前記第2の資源要素判定手段が判定した資源要素
    が存在する場合、前記第1の資源要素判定手段の判定結
    果であり、前記第2の資源要素判定手段の判定結果であ
    る資源要素の何れかを前記割付対象取出手段が取り出し
    た割付対象に割り付ける第3の割付手段とを備えること
    を特徴とする請求項11記載の資源割付装置
  13. 【請求項13】 前記第3の割付手段は第2の資源要素
    判定手段の判定結果である資源要素が複数個存在する場
    合、その資源要素に割り付けられている割付対象の優先
    度を参照し、最も大きい優先度の割付対象に割り付けて
    いる資源要素を、割付対象取出手段が取り出した割付対
    象に割り付けることを特徴とする請求項12記載の資源
    割付装置
  14. 【請求項14】前記第2の資源要素割付手段は更に同一
    の資源要素に割り付けられた割付対象の優先度を、資源
    要素毎に集計する第1の優先度集計手段と、前記割付対象取出手段が取り出した割付対象が属する大
    域グル−プ内に、割り付け済みの割付対象が2つ以上存
    在する場合、 前記割付対象取出手段が取り出した割付対
    象に前記第1の優先度集計手段が集計した集計値が最大
    の資源要素を割り付ける第4の割付手段とを備えること
    を特徴とする請求項13記載の資源割付装置
  15. 【請求項15】前記資源割付装置は更に前記割付対象取
    出手段が取り出した割付対象が属する大域グループの生
    存区間と、生存区間が重なる大域グル−プを全て検出す
    る第2の大域グル−プ検出手段と、 前記第2の大域グル−プ検出手段が検出した大域グル−
    プに属する割付対象を全て検出する第4の割付対象検出
    手段と、 前記第4の割付対象検出手段が検出した割付対象の何れ
    にも割り付けていない資源要素を、前記割付結果格納手
    段を参照して判定する第3の資源要素判定手段とを備
    え、 前記第2の資源要素割付手段は更に割付対象取出手段が
    取り出した割付対象が属する前記大域グループ内の他の
    割付対象の何れにも資源要素を割り付けていない場合、
    前記第3の資源要素判定手段が判定した資源要素の何れ
    かを割付対象に割り付ける第5の割付手段を備えること
    を特徴とする請求項14記載の資源割付装置
  16. 【請求項16】前記資源割付装置は更に前記第4の割付
    対象検出手段が検出した割付対象のうち、同一の資源要
    素に割り付けられた割付対象の優先度を、資源要素毎に
    集計をする第2の優先度集計手段とを備え、 前記第2の資源要素割付手段は更に前記割付対象取出手
    段が取り出した割付対象に、前記第2の優先度集計手段
    が集計した集計値が最小の資源要素を割り付ける第6の
    割付手段を備えることを特徴とする請求項15記載の資
    源割付装置
  17. 【請求項17】高級言語で書かれたプログラムを機械語
    プログラムに翻訳するコンパイラに用いられ、レジス
    タ、メモリ等のハードウェアである資源の資源要素を、
    プログラミング言語で記述されたプログラムの中の変数
    と生存区間の組である割付対象に、割付対象の優先度に
    基づいて割り付ける資源割付装置であって、 プログラム中の割付対象とその優先度とを保持する割付
    対象保持手段と、 前記割付対象保持手段から優先度最大の割付対象を取り
    出し、優先度が最大の割付対象に資源要素の何れかを割
    り付ける第1の資源要素割付手段と、 割付結果を格納する割付結果格納手段と、 直前に割り付けられた割付対象の優先度に対して、次順
    位の優先度を持つ割付対象を、前記割付対象保持手段か
    ら取り出す割付対象取出手段と、 前記割付対象取出手段が取り出した割付対象について、
    生存区間が重なっている割付対象を検出する第1の割付
    対象検出手段と、 全ての資源要素の中から、前記第1の割付対象検出手段
    が検出した割付対象に割り付けていない資源要素を、前
    記割付結果格納手段を参照して判定する第1の資源要素
    判定手段と、 前記割付対象取出手段が取り出した割付対象について、
    生存区間の開始点又は終了点を参照し、該開始点で生存
    区間が終わる割付対象と、該終了点で生存区間が始まる
    割付対象とを検出する第2の割付対象検出手段と、 前記第2の割付対象検出手段が検出した割付対象に割り
    付けている資源要素を、前記割付結果格納手段を参照し
    て判定する第2の資源要素判定手段と、 前記第2の割付対象検出手段が検出した割付対象の生存
    区間と、生存区間が重なる割付対象を検出する第3の割
    付対象検出手段と、 前記割付結果格納手段を参照して、前記第3の割付対象
    検出手段が検出した割付対象に割り付けている資源要素
    を判定する第3の資源要素判定手段と、 第1の資源要素判定手段が判定した資源要素であり、か
    つ前記第2の資源要素判定手段の判定結果である資源要
    素、または、第1の資源要素判定手段が判定した資源要
    素であり、かつ前記第3の資源要素判定手段の判定結果
    でない資源要素の何れかを前記割付対象取出手段が取り
    出した割付対象に割り付ける第2の資源要素割付手段
    と、 全ての割付対象が割り付けられるまで、前記割付対象取
    出手段の起動を繰り返えす制御手段とを備えることを特
    徴とする資源割付装置
  18. 【請求項18】前記第2の資源要素割付手段は、 第1の資源要素判定手段が判定した資源要素が1つの場
    合、前記第1の資源要素判定手段の判定結果に該当する
    資源要素を前記割付対象取出手段が取り出した割付対象
    に割り付ける第1の割付手段と、 前記第1の資源要素判定手段の判定結果であり、前記第
    2の資源要素判定手段の判定結果である資源要素につい
    ては、その資源要素を使用する命令の生成コードの実行
    時間およびメモリサイズが減少する度合である局所的利
    得値を算出し、前記第1の資源要素判定手段の判定結果
    であり、前記第2の資源要素判定手段の判定結果でない
    資源要素については、前記局所的利得値を0(ゼロ)と
    する局所的利得値算出手段と、 前記第1の資源要素判定手段の判定結果であり、前記第
    3の資源要素判定手段の判定結果である資源要素につい
    ては、その資源要素を使用する命令の生成コードの実行
    時間およびメモリサイズが増加する度合である局所的損
    失値を算出し、前記第1の資源要素判定手段の判定結果
    であり、前記第3の資源要素判定手段の判定結果でない
    資源要素については、前記局所的損失値を0(ゼロ)と
    する局所的損失値算出手段と、 前記第1の資源要素判定手段の判定結果である資源要素
    について、前記局所的利得値算出手段が算出した局所的
    利得値と、前記局所的損失値算出手段が算出した局所的
    損失値との差である局所的絶対利得値を算出する局所的
    絶対利得値算出手段と、 前記第1の資源要素判定手段の判定結果であり、前記局
    所的絶対利得値算出手段が算出した局所的絶対利得値が
    最大の資源要素を判定する第6の資源要素判定手段と、 前記第1の資源要素判定手段が判定した資源要素であ
    り、かつ前記第6の資源要素判定手段の判定結果である
    資源要素を、前記割付対象取出手段が取り出した割付対
    象に割り付ける第2の割付手段とを備えることを特徴と
    する請求項17記載の資源割付装置
  19. 【請求項19】高級言語で書かれたプログラムを機械語
    プログラムに翻訳するコンパイラに用いられ、レジス
    タ、メモリ等のハードウェアである資源の資源要素を、
    プログラミング言語で記述されたプログラムの中の変数
    と生存区間の組である割付対象に、割付対象の優先度に
    基づいて割り付ける資源割付装置であって、 プログラム中の割付対象とその優先度とを保持する割付
    対象保持手段と、 優先度が最大の割付対象に、資源要素の何れかを割り付
    ける第1の資源要素割付手段と、 割付結果を格納する割付結果格納手段と、 前記割付対象保持手段に保持されているそれぞれの割付
    対象について、生存区間の開始点と、生存区間の終了点
    とが一致している割付対象の組み合わせを全て検出する
    同一資源要素割付関係一括検出手段と、 前記同一資源要素割付関係一括検出手段が検出した割付
    対象の組み合わせで同じ割付対象を含むものを抽出し、
    抽出したものをグループ化する大域グループ化手段と、 直前に割り付けられた割付対象の優先度に対して、次順
    位の優先度を持つ割付対象を、前記割付対象保持手段か
    ら取り出す割付対象取出手段と、 前記割付対象取出手段が取り出した割付対象について、
    生存区間が重なっている割付対象を検出する第1の割付
    対象検出手段と、 全ての資源要素から、前記第1の割付対象検出手段が検
    出した割付対象に割り付けていない資源要素を、前記割
    付結果格納手段を参照して判定する第1の資源要素判定
    手段と、 前記割付対象取出手段が取り出した割付対象について、
    生存区間の開始点又は終了点を参照し、該開始点で生存
    区間が終わる割付対象と、該終了点で生存区間が始まる
    割付対象とを検出する第2の割付対象検出手段と、 前記第2の割付対象検出手段が検出した割付対象に割り
    付けている資源要素を、前記割付結果格納手段を参照し
    て判定する第2の資源要素判定手段と、 前記第2の割付対象検出手段が検出した割付対象の生存
    区間と、生存区間が重なる割付対象を検出する第3の割
    付対象検出手段と、 前記割付結果格納手段を参照して、前記第3の割付対象
    検出手段が検出した割付対象に割り付けている資源要素
    を判定する第3の資源要素判定手段と、 前記割付対象取出手段が取り出した割付対象が、どの大
    域グループに属するかを調べる第1の大域グループ検出
    手段と、 前記第1の大域グル−プ検出手段の検出結果である大域
    グル−プの、他の割付対象を全て検出する第4の割付対
    象検出手段と、 前記第4の割付対象検出手段が検出した割付対象に割り
    付けている資源要素を、前記割付結果格納手段を参照し
    て判定する第4の資源要素判定手段と、 前記割付対象取出手段が取り出した割付対象が属する大
    域グループの生存区間と、生存区間が重なる大域グル−
    プを全て検出する第2の大域グル−プ検出手段と、 前記第2の大域グル−プ検出手段が検出した大域グル−
    プに属する割付対象を全て検出する第5の割付対象検出
    手段と、 前記第5の割付対象検出手段が検出した割付対象に割り
    付けられている全ての資源要素を、前記割付結果格納手
    段を参照して判定する第5の資源要素判定手段と、 前記第1の資源要素判定手段が判定した資源要素であ
    り、かつ前記第2、4の資源要素判定手段の判定結果で
    ある資源要素、または、第1の資源要素判定手段が判定
    した資源要素であり、かつ前記第3、5の資源要素判定
    手段の判定結果でない資源要素の何れかを前記割付対象
    取出手段が取り出した割付対象に割り付ける第2の資源
    要素割付手段と、 全ての割付対象が割り付けられるまで、前記割付対象取
    出手段の起動を繰り返えす制御手段とを備えることを特
    徴とする資源割付装置
  20. 【請求項20】前記第2の資源要素割付手段は、 第1の資源要素判定手段が判定した資源要素が1つの場
    合、前記第1の資源要素判定手段の判定結果に該当する
    資源要素を前記割付対象取出手段が取り出した割付対象
    に割り付ける第1の割付手段と、 前記第1の資源要素判定手段の判定結果であり、前記第
    2の資源要素判定手段の判定結果である資源要素につい
    ては、その資源要素を使用する命令の生成コードの実行
    時間およびメモリサイズが減少する度合である局所的利
    得値を算出し、前記第1の資源要素判定手段の判定結果
    であり、前記第2の資源要素判定手段の判定結果でない
    資源要素については、前記局所的利得値を0(ゼロ)と
    する局所的利得値算出手段と、 前記第1の資源要素判定手段の判定結果であり、前記第
    3の資源要素判定手段の判定結果である資源要素につい
    ては、その資源要素を使用する命令の生成コードの実行
    時間およびメモリサイズが増加する度合である局所的損
    失値を算出し、前記第1の資源要素判定手段の判定結果
    であり、前記第3の資源要素判定手段の判定結果でない
    資源要素については、前記局所的損失値を0(ゼロ)と
    する局所的損失値算出手段と、 前記第1の資源要素判定手段の判定結果である資源要素
    について、前記局所的利得値算出手段が算出した局所的
    利得値と、前記局所的損失値算出手段が算出した局所的
    損失値との差である局所的絶対利得値を算出する局所的
    絶対利得値算出手段と、 前記第1の資源要素判定手段の判定結果であり、前記局
    所的絶対利得値算出手段が算出した局所的絶対利得値が
    最大の資源要素を判定する第6の資源要素判定手段と、 前記第1の資源要素判定手段が判定した資源要素であ
    り、かつ前記第6の資源要素判定手段の判定結果である
    資源要素を、前記割付対象取出手段が取り出した割付対
    象に割り付ける第2の割付手段とを備えることを特徴と
    する請求項19記載の資源割付装置
  21. 【請求項21】前記第2の資源要素割付手段は更に前記
    第6の資源要素判定手段が複数個の資源要素を判定した
    場合、第6の資源要素判定手段の判定結果であり、前記
    第4の資源要素判定手段の判定結果である資源要素につ
    いては、その資源要素を使用する命令の生成コードの実
    行時間およびメモリサイズが減少する度合である大域的
    利得値を算出し、前記第1の資源要素判定手段の判定結
    果であり、第6の資源要素判定手段の判定結果であり、
    前記第4の資源要素判定手段の判定結果でない資源要素
    については、前記大域的利得値を0(ゼロ)とする大域
    的利得値算出手段と、 前記第6の資源要素判定手段の判定結果であり、前記第
    5の資源要素判定手段の判定結果である資源要素につい
    ては、資源要素を使用する命令の生成コードの実行時間
    およびメモリサイズが増加する度合である大域的損失値
    を算出し、前記第1の資源要素判定手段の判定結果であ
    り、前記第6の資源要素判定手段の判定結果であり、前
    記第5の資源要素判定手段の判定結果でない資源要素に
    ついては前記大域的損失値を0(ゼロ)とする大域的損
    失値算出手段と、 前記第6の資源要素判定手段の判定結果であるそれぞれ
    の資源要素について、前記大域的利得値算出手段が算出
    し大域的利得値と、前記大域的損失値算出手段が算出し
    た大域的損失値との差である大域的絶対利得値を算出す
    る大域的絶対利得値算出手段と、 前記第6の資源要素判定手段の判定結果であり、前記大
    域的絶対利得値算出手段が算出した大域的絶対利得値が
    最大の資源要素である資源要素を、前記割付対象取出手
    段が取り出した割付対象に割り付ける第6の割付手段と
    を備えることを特徴とする請求項20記載の資源割付装
  22. 【請求項22】 前記局所的利得値算出手段は前記第2
    の資源要素判定手段の判定結果であるそれぞれの資源要
    素の前記局所的利得値を、前記第2の資源要素判定手段
    が判定したそれぞれの資源要素に割り付けられている割
    付対象であり、第2の割付対象検出手段の検出結果であ
    る割付対象の優先度に基づいて算出することを特徴とす
    る請求項18から21の何れかに記載の資源割付装置
  23. 【請求項23】 前記局所的利得値算出手段は前記第2
    の資源要素判定手段の判定結果であるそれぞれの資源要
    素の前記局所的利得値を、前記第2の資源要素判定手段
    が判定したそれぞれの資源要素に割り付けられている割
    付対象であり、第2の割付対象検出手段の検出結果であ
    る割付対象の個数に基づいて算出することを特徴とする
    請求項18から21の何れかに記載の資源割付装置
  24. 【請求項24】 前記局所的損失値算出手段は前記第3
    の資源要素判定手段の判定結果であるそれぞれの資源要
    素の前記局所的損失値を、前記第3の資源要素判定手段
    が判定したそれぞれの資源要素に割り付けられている割
    付対象と生存区間が重なる割付対象であり、前記第2の
    割付対象検出手段の検出結果である割付対象の優先度に
    基づいて算出することを特徴とする請求項18から21
    の何れかに記載の資源割付装置
  25. 【請求項25】 前記局所的損失値算出手段は前記第3
    の資源要素判定手段の判定結果であるそれぞれの資源要
    素の前記局所的損失値を、第3の資源要素判定手段が判
    定したそれぞれの資源要素に割り付けられている割付対
    象と生存区間が重なる割付対象であり、前記第2の割付
    対象検出手段の検出結果である割付対象の個数に基づい
    て算出することを特徴とする請求項18から21の何れ
    かに記載の資源割付装置
  26. 【請求項26】前記大域的利得値算出手段は前記第4の
    割付対象検出手段が検出した割付対象のうち、同一の資
    源要素に割り付けられた割付対象の優先度の集計値に基
    づいて、大域的利得値を算出することを特徴とする請求
    項21記載の資源割付装置
  27. 【請求項27】前記大域的利得値算出手段は前記第4の
    割付対象検出手段が検出した割付対象のうち、同一の資
    源要素に割り付けられた割付対象の個数の集計値に基づ
    いて、大域的利得値を算出することを特徴とする請求項
    21記載の資源割付装置
  28. 【請求項28】前記大域的損失値算出手段は前記第5の
    割付対象検出手段が検出した割付対象のうち、同一の資
    源要素に割り付けられた割付対象と生存区間が重なる割
    付対象であり、第4の割付対象検出手段の検出結果であ
    る割付対象の優先度の集計値に基づいて、大域的損失値
    を算出することを特徴とする請求項21記載の資源割付
    装置
  29. 【請求項29】前記大域的損失値算出手段は前記第5の
    割付対象検出手段が検出した割付対象のうち、同一の資
    源要素に割り付けられた割付対象と生存区間が重なる割
    付対象であり、前記第4の割付対象検出手段の検出結果
    である割付対象の個数の集計値に基づいて、大域的損失
    値を算出することを特徴とする請求項21記載の資源割
    付装置
  30. 【請求項30】前記資源割付装置は更に優先度を計算す
    る割付対象優先度計算手段を備え、 前記割付対象優先度計算手段は、 資源要素を用いる各命令について、その命令を実行する
    際の実行時間およびその命令のメモリサイズを示すコス
    トを、各資源毎に記憶するコスト記憶手段と、 1つの割付対象の変数が生存区間内で使用されているプ
    ログラム中のそれぞれの命令ついて、コスト記憶手段を
    参照して資源毎にコストを取り出すコスト検索手段と、 コスト検索手段により取り出されたコストをそれぞれの
    割付対象について、資源毎に集計するコスト集計手段
    と、 それぞれの割付対象について集計したコスト集計値と、
    それぞれの割付対象の生存区間とに基づいて前記優先度
    を計算する優先度計算手段とからなる請求項1から29
    記載の何れかの資源割付装置
  31. 【請求項31】資源割付装置は更に同一資源の資源要素
    を割り付け得る割付対象の全てを割付対象保持手段に提
    供する資源別割付対象提供手段を備え、 前記資源別割付対象提供手段は、 それぞれの割付対象について前記コスト集計手段の集計
    した結果のうち、どの資源について集計値が最小になる
    のかを判定する第1の資源判定手段と、 それぞれの割付対象と、それらに対応して第1の資源判
    定手段が判定した資源とを参照し、同じ判定結果を得た
    割付対象を資源別グループとしてグループ化する資源別
    グループ化手段と、 前記資源別グループ化手段がグループ化した複数個の資
    源別グループを1つ選択する資源別グループ選択手段
    と、 前記資源別グループ選択手段が選択したグループを、前
    記割付対象保持手段に書き込む資源別グル−プ書込手段
    と、 割付対象保持手段内の割付対象が、前記割付対象取出手
    段によって全て取り出された場合、次の資源別グループ
    の選択を指示する制御手段とからなる請求項30記載の
    資源割付装置
  32. 【請求項32】前記資源別グループ選択手段は更に前記
    コスト集計手段が求めた割付対象のコスト集計値を、前
    記資源別グループ化手段がグループ化した資源別グルー
    プ毎に集計する資源別グループコスト集計手段を備え、 前記資源別グループ選択手段は前記グループコスト集計
    手段の集計値が大きい順に資源別グループを選択するこ
    とを特徴とする請求項31記載の資源割付装置
  33. 【請求項33】前記第1の資源要素判定手段は更に前記
    割付対象取出手段が取り出した割付対象が属する資源を
    判定する第2の資源判定手段と、 前記第2の資源判定手段の判定結果である資源に属する
    全ての資源要素が、前記第1の割付対象検出手段が検出
    した割付対象に割り付けられていた場合、前記コスト集
    計手段の集計結果が、前記第2の資源判定手段の判定結
    果である資源よりも小さく、かつ未だどの資源要素も、
    割付対象に割り付けられていない資源を判定する第3の
    資源判定手段と、 前記第3の資源判定手段の判定結果である資源に対応す
    る資源別グル−プへ、前記割付対象取出手段が取り出し
    た割付対象を移行する第1の移行手段とを備えることを
    特徴とする請求項31又は32記載の何れかの資源割付
    装置
  34. 【請求項34】前記コスト集計手段は更に1つの割付対
    象の変数が使用されているそれぞれの命令について、ル
    −プ処理のネストレベルを検出するネストレベル検出手
    段を備え、 前記コスト集計手段は、コスト検索手段により取り出さ
    れたコストに前記ネストレベル検出手段が検出したネス
    トレベルを算入し、集計することを特徴とする請求項3
    0から33記載の何れかの資源割付装置
  35. 【請求項35】 前記資源別グル−プ化手段は更に前記
    資源別グル−プ化手段がグル−プ化した全ての資源別グ
    ル−プから、第1の資源判定手段が2個以上の資源が最
    小であると判定した割付対象を全て検出する第6の割付
    対象検出手段と、 第6の割付対象検出手段が検出した割付対象の生存区間
    の開始点および終了点を参照し、該開始点で生存区間が
    終わる割付対象又は該終了点で生存区間が始まる割付対
    象を、全ての資源別グル−プから検出する第7の割付対
    象検出手段と、 前記第7の割付対象検出手段が検出した割付対象がどの
    資源別グル−プに属するかを判定する資源別グル−プ判
    定手段と、 前記第6の割付対象検出手段が検出した割付対象を、前
    記資源別グル−プ判定手段が判定した資源別グル−プに
    移行する第2の移行手段とを備えることを特徴とする
    求項31から34の何れかに記載の資源割付装置。
  36. 【請求項36】前記資源別グループ選択手段は、資源別
    グループコスト集計手段に代えて、 1つの資源別グループに属する割付対象の個数を検出す
    るグループ個数検出手段を備え、 前記資源別グループ選択手段は、 グループ個数検出手段が検出した割付対象の個数が大き
    い順に、資源別グループを選択することを特徴とする請
    求項32又は33記載の資源割付装置
  37. 【請求項37】前記資源別グループ選択手段は、資源別
    グループコスト集計手段に代えて、 資源別グル−プに対応する資源の資源要素の個数を検出
    する資源要素個数検出手段を備え、 前記資源別グループ選択手段は、 資源要素個数検出手段が検出した資源要素の個数が小さ
    い順に、資源別グループを選択することを特徴とする請
    求項32又は33記載の資源割付装置
JP26281493A 1993-10-20 1993-10-20 資源割付装置 Expired - Lifetime JP3299611B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP26281493A JP3299611B2 (ja) 1993-10-20 1993-10-20 資源割付装置
US08/325,998 US5684994A (en) 1993-10-20 1994-10-19 Resource assignment apparatus
DE69428247T DE69428247T2 (de) 1993-10-20 1994-10-20 Betriebsmittelzuweisungsgerät
EP94307707A EP0650121B1 (en) 1993-10-20 1994-10-20 Resource assignment apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP26281493A JP3299611B2 (ja) 1993-10-20 1993-10-20 資源割付装置

Publications (2)

Publication Number Publication Date
JPH07121377A JPH07121377A (ja) 1995-05-12
JP3299611B2 true JP3299611B2 (ja) 2002-07-08

Family

ID=17380988

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26281493A Expired - Lifetime JP3299611B2 (ja) 1993-10-20 1993-10-20 資源割付装置

Country Status (4)

Country Link
US (1) US5684994A (ja)
EP (1) EP0650121B1 (ja)
JP (1) JP3299611B2 (ja)
DE (1) DE69428247T2 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1149476C (zh) * 1995-03-16 2004-05-12 松下电器产业株式会社 资源分配装置
JP3060907B2 (ja) * 1995-07-28 2000-07-10 日本電気株式会社 言語処理プログラムの処理方式
US6442584B1 (en) * 1997-05-16 2002-08-27 Sybase, Inc. Methods for resource consolidation in a computing environment
DE69933323T2 (de) 1998-04-01 2007-01-11 Matsushita Electric Industrial Co., Ltd., Kadoma Kompiler
US6584611B2 (en) * 1999-02-17 2003-06-24 Elbrus International Limited Critical path optimization—unload hard extended scalar block
US6434743B1 (en) * 1999-04-23 2002-08-13 Sun Microsystems, Inc. Method and apparatus for allocating stack slots
US7518993B1 (en) * 1999-11-19 2009-04-14 The United States Of America As Represented By The Secretary Of The Navy Prioritizing resource utilization in multi-thread computing system
JP2001290652A (ja) * 2000-04-04 2001-10-19 Matsushita Electric Ind Co Ltd プログラム変換装置、プログラム変換方法及び記録媒体
FR2823871B1 (fr) * 2001-04-20 2003-07-04 Canon Kk Procede et dispositif de generation du code executable d'un programme d'ordinateur
US7320131B1 (en) * 2001-06-06 2008-01-15 Cisco Technology, Inc. Methods and apparatus for selecting a server to process a request
JP3956112B2 (ja) 2002-06-12 2007-08-08 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ、レジスタ割当装置、プログラム、記録媒体、コンパイル方法、及びレジスタ割当方法
US7313552B2 (en) * 2004-03-19 2007-12-25 Sybase, Inc. Boolean network rule engine
US7478374B2 (en) * 2004-03-22 2009-01-13 Intel Corporation Debug system having assembler correcting register allocation errors
US7590508B1 (en) 2004-10-22 2009-09-15 Sprint Communications Company L.P. Method and system for forecasting usage costs and computer capacity
US20070038984A1 (en) * 2005-08-12 2007-02-15 Gschwind Michael K Methods for generating code for an architecture encoding an extended register specification
US20070143762A1 (en) * 2005-12-16 2007-06-21 Arnold Kevin M Assigning tasks in a distributed system based on ranking
US7831960B2 (en) * 2006-06-08 2010-11-09 Oracle America, Inc. Configuration tool with multi-level priority semantic
JP4721975B2 (ja) * 2006-07-28 2011-07-13 パナソニック株式会社 コンパイラ装置およびコンパイル方法
JP4785710B2 (ja) * 2006-11-14 2011-10-05 富士通株式会社 資源に対する重要度算出方法及び装置
JP5165969B2 (ja) * 2007-08-29 2013-03-21 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムのコンパイルのために変数にレジスタを割り付ける技術
JP2009181279A (ja) * 2008-01-30 2009-08-13 Sanyo Electric Co Ltd 情報処理装置および割当方法
JP2011181114A (ja) * 2011-06-23 2011-09-15 Panasonic Corp プログラム変換装置、プログラム変換方法及び記録媒体
US20130321040A1 (en) * 2012-05-31 2013-12-05 General Electric Company Method and system for using demand response to provide frequency regulation
US10310863B1 (en) * 2013-07-31 2019-06-04 Red Hat, Inc. Patching functions in use on a running computer system
US9823842B2 (en) 2014-05-12 2017-11-21 The Research Foundation For The State University Of New York Gang migration of virtual machines using cluster-wide deduplication
CN110347512B (zh) * 2019-07-12 2023-05-12 北京天云融创软件技术有限公司 一种多组件异构资源需求的资源调度方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4885684A (en) * 1987-12-07 1989-12-05 International Business Machines Corporation Method for compiling a master task definition data set for defining the logical data flow of a distributed processing network
US4961141A (en) * 1988-12-16 1990-10-02 International Business Machines Corporation Generating efficient code for a computer with dissimilar register spaces
US5274811A (en) * 1989-06-19 1993-12-28 Digital Equipment Corporation Method for quickly acquiring and using very long traces of mixed system and user memory references
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
JPH0816871B2 (ja) * 1990-12-07 1996-02-21 富士ゼロックス株式会社 プログラム翻訳装置およびプログラム翻訳方法
US5226164A (en) * 1991-04-24 1993-07-06 International Business Machines Corporation Millicode register management and pipeline reset
CA2060555A1 (en) * 1991-04-24 1992-10-25 Robert J. Bullions, Iii System and method for draining an instruction pipeline
WO1993020505A2 (en) * 1992-03-31 1993-10-14 Seiko Epson Corporation Superscalar risc instruction scheduling

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
A.V.エイホ、J.D.ウルマン・共著、土居範久・訳,「情報処理シリーズ7 コンパイラ」,日本,株式会社培風館・発行,1986年 3月30日,初版,pp.485〜488
Fred C.Chow,John L.Hennessy,"The Priority−Based Coloring Approach to Register Allocation",ACM Transactions on Programming Languages and Systems,Vol.12,No.4,1990,pp.501−536
中田育男,「コンピューターサイエンス・ライブラリー コンパイラ」,日本,産業図書株式会社・発行,1981年 9月10日,初版,pp.264〜268
佐々木政孝,「岩波講座ソフトウェア科学5 プログラミング言語処理系」,日本,株式会社岩波書店・発行,1989年10月31日,初版,pp.418〜431
田中旭・他,「最適化コンパイラにおけるレジスタ割付けの一方式」情報処理学会第43回全国大会講演論文集(分冊5),日本,社団法人情報処理学会・発行,1991年 9月24日,第5分冊,pp.197〜198
阿部仁、守屋康正,「生存区間分割によるレジスタ割り付け」,情報処理学会第42回全国大会講演論文集(分冊5),日本,社団法人情報処理学会・発行,1991年 2月25日,第5分冊,pp.113〜114

Also Published As

Publication number Publication date
EP0650121B1 (en) 2001-09-12
JPH07121377A (ja) 1995-05-12
EP0650121A2 (en) 1995-04-26
US5684994A (en) 1997-11-04
DE69428247T2 (de) 2002-04-18
DE69428247D1 (de) 2001-10-18
EP0650121A3 (en) 1996-12-04

Similar Documents

Publication Publication Date Title
JP3299611B2 (ja) 資源割付装置
CN112579063B (zh) 一种用于深度学习编译器中探索优化空间的加速方法
CN103858099B (zh) 用于执行应用的方法和系统、具有机器指令的电路
Vegdahl A survey of proposed architectures for the execution of functional languages
US6505344B1 (en) Object oriented apparatus and method for allocating objects on an invocation stack
US8893080B2 (en) Parallelization of dataflow actors with local state
US8266603B2 (en) Technique for allocating register to variable for compiling
CN111104120B (zh) 神经网络编译方法、系统及相应异构计算平台
JP3311462B2 (ja) コンパイル処理装置
Zheng et al. AStitch: enabling a new multi-dimensional optimization space for memory-intensive ML training and inference on modern SIMT architectures
US9557976B2 (en) Adaptable and extensible runtime and system for heterogeneous computer systems
JP3900476B2 (ja) オブジェクト指向システム
US10423395B2 (en) Data processing graph compilation
US7386843B2 (en) Method and system for register allocation
WO2021000971A1 (zh) 操作数据的生成方法、装置及相关产品
JPH096627A (ja) 最適化装置
US7747992B2 (en) Methods and apparatus for creating software basic block layouts
CN115809063A (zh) 一种存储过程编译方法、系统、电子设备和存储介质
US11947941B2 (en) Dynamic computation offloading to graphics processing unit
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
Ali et al. Parallelizing user-defined functions in the ETL workflow using orchestration style sheets
JP3638171B2 (ja) 資源割付装置
Belyaev et al. LuNA-ICLU compiler for automated generation of iterative fragmented programs
JPH02236638A (ja) レジスタ割付け管理方式
Ishimura et al. Just-In-Time Compiler System in Aspect-Oriented Programming based Building Block Platform for constructing Domain-Specific Language for HPC Application

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080419

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090419

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100419

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110419

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120419

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130419

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130419

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140419

Year of fee payment: 12

EXPY Cancellation because of completion of term