JPH08314727A - 資源割付装置 - Google Patents

資源割付装置

Info

Publication number
JPH08314727A
JPH08314727A JP5944696A JP5944696A JPH08314727A JP H08314727 A JPH08314727 A JP H08314727A JP 5944696 A JP5944696 A JP 5944696A JP 5944696 A JP5944696 A JP 5944696A JP H08314727 A JPH08314727 A JP H08314727A
Authority
JP
Japan
Prior art keywords
allocation
allocation target
resource
target
allocated
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.)
Granted
Application number
JP5944696A
Other languages
English (en)
Other versions
JP3638171B2 (ja
Inventor
Akira Tanaka
旭 田中
Jiyunko Sayama
旬子 佐山
Hiroshi Yugawa
博司 湯川
Kensuke Kotani
謙介 小谷
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 JP05944696A priority Critical patent/JP3638171B2/ja
Publication of JPH08314727A publication Critical patent/JPH08314727A/ja
Application granted granted Critical
Publication of JP3638171B2 publication Critical patent/JP3638171B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 各割付対象の同一資源要素割付関係が広域的
にどうなっているかを参照することにより、より理想的
な資源割付を行う。 【解決手段】 資源割付装置13は、変数とその変数の
生存区間の組である割付対象を生成し、それぞれの割付
対象毎に、生存区間が重なる割付対象や、資源継承関係
にある割付対象を求め、さらに、割付けの優先度を計算
する。次に割付資源要素決定部26は、優先度の高い割
付対象から、各割付対象に割付け可能な資源要素を割付
けときに、プログラム上での割付対象の使用箇所で費や
すコストである使用コスト値と、資源継承関係にある割
付対象に着目して、目的コードにおける転送命令の減少
度を定量化した利得値を算出し、使用コストが最少で、
かつ利得値が最大の資源要素を割付対象に割付ける。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、高級言語で書かれ
たソースプログラムを機械語プログラムに翻訳するコン
パイラにおいてプログラム中の変数をレジスタ、メモリ
等の資源へ割り付ける資源割付装置に関する。
【0002】
【従来の技術】近年、組み込み用途向けのマイクロプロ
セッサを用いて多種多様なニーズに応えるようにした情
報機器が盛んに開発されている。このような情報機器の
開発においてはソフトウェアの面でも、処理の高速化や
ハードウェアコストの縮減(メモリサイズの縮小)の徹
底が求められる。そのため上記の情報機器の開発では冗
長な転送命令を徹底して除去し、アドレッシングモード
等、マイクロプロセッサが有する機能を最大限まで引き
出すべく、アセンブリ言語でソフトウェアの開発が行わ
れてきた。ところが、アセンブリ言語の文法はプロセッ
サの命令体系そのものであるから至って開発効率が低
く、ソースファイルの移植性に問題がある。そのため組
み込み用途向けのマイクロプロセッサのソフトウェアを
高級プログラミング言語で作成することで開発効率を高
めることが近年注目を集めている。
【0003】高級プログラミング言語を用いれば、プロ
グラマはプログラム中の数値の保持、演算、転送等の処
理を変数を被演算子とした演算で表現できる。この変数
はプログラマによって任意に定義され、また必要な個数
だけ用いられるため、プログラマは自由にプログラムを
記述できる。また記述されたプログラム(ソースプログ
ラムと称す。)はコンパイルされることよりコンピュー
タが理解可能な機械語プログラムとなる。当該機械語プ
ログラム中の演算は機械語命令によって表現され、また
当該機械語命令はレジスタあるいはメモリを被演算子と
するので、上記変数にはレジスタあるいはメモリを割り
付ける必要がある。この割り付け処理は資源割付処理と
称される。この資源割付処理はマイクロプロセッサの能
力を最大限まで引き出すようなソフトウェアの開発にお
いては特に重要視される。
【0004】従来の資源割付装置に付いて述べる前に以
下の説明で使用する用語について説明しておく。 ・変数の定義、参照、使用 変数の値を設定することを「定義する」と呼び、設定し
た値を使用することを「参照する」と呼ぶ。またプログ
ラム上で変数を定義したり、参照したりすることを変数
を「使用する」と呼ぶことにする。 ・中間命令 処理をし易すくするためにコンパイラがソースプログラ
ムのコードを中間的なコードに変換したものを中間コー
ドと呼び、中間コードの1ステップを中間命令と呼ぶこ
とにする。中間命令には4つ組や3つ組などが存在し、
これらが変換されて最終的なオブジェクトコードが生成
される。またソースプログラムを中間命令の列に変換し
たものを中間プログラムと呼ぶことにする。 ・生存区間 生存区間とは広義にはそれぞれの変数に保持されている
値が有効となる区間であり、狭義には変数に値を定義す
る中間命令からその定義された値を最後に参照する中間
命令までのプログラム上の区間のことであり、生存区間
はこの区間に含まれる中間命令の集合で表される。ここ
で変数に値を定義する中間命令は生存区間の開始点に相
当し、生存区間中で定義された値を参照している中間命
令のうち、最後に参照する中間命令は生存区間の終了点
に相当する。また生存区間の重複、非重複を中間命令の
集合積で判定するため、生存区間の終始が一致する中間
命令では生存区間は重ならないとする。
【0005】中間プログラムの例(これは図30(a)
に示すソースプログラムを変換したものである。)と、
その生存区間との対応の一例を図28に示す。図28に
おいて生存区間は縦線s1、s2、s3で表されてい
る。生存区間の開始点、及び終了点は点p1、p2、p
3、p4・・・で表現している。図30(a)において
変数c及びdの開始点は2箇所存在しているが、これは
変数c、dが、判断文if(b>=10){処理p1}
else{処理p2}の処理p1、p2において定義されて
いるからである。 ・割付対象 資源の割付対象としては単に変数をとる場合もあるが、
一つの変数に対して複数の生存区間が存在する場合はそ
れぞれの生存区間ごとに別々の資源要素に割り付けるこ
とができるので、本明細書では割付対象は変数と生存区
間の組とし、割付対象は変数と生存区間とを保持するも
のとする。ここで図28の変数bのように生存区間が複
数ある場合は、互いに区別するために割付対象b1、b
2として独立した割付対象として表現する。
【0006】また割付対象が保持する変数を「定義す
る」こと、「参照する」こと、「使用する」ことをそれ
ぞれ、その変数を保持する割付対象を「定義する」「参
照する」「使用する」とも呼ぶことにする。更に割付対
象が定義される中間命令、及び参照される中間命令をそ
れぞれ、その割付対象の定義中間命令、参照中間命令と
呼び、定義及び参照中間命令を併せて使用中間命令と呼
ぶ。 ・割付優先度 割り付けを行う際、割付対象の割り付けの順番を決める
ためのパラメータである。
【0007】割付優先度の計算には様々な方法が存在す
る。例えば、プログラム中の割付対象の使用率を割付優
先度としたときの計算式の例を以下の{数式1}に示
す。 {数式1} 割付優先度=使用率=割付対象が使用される中間命令の
個数/生存区間の長さ 尚、割付対象が使用される中間命令が、プログラム中の
ループ処理の中に存在するときは割付優先度にそのルー
プレベルを算入してもよい。
【0008】例えば、 割付優先度=使用率=使用中間命令が存在するループレ
ベルの総和/生存区間の長さ ・資源要素 コンピュータのハードウェアの要素のうち、割付対象に
割り付け可能な最小単位である。値を一時的に保持する
バッファや個々のレジスタ、メモリ内の番地単位のメモ
リ要素がその例である。0番目のレジスタ、1番目のレ
ジスタ、100番地のメモリ、101番地のメモリはそ
れぞれ別の資源要素である。 ・資源 同じ機能を果たす資源要素の集合を示す。
【0009】例えば、資源にはレジスタとメモリとが存
在する。更にレジスタはアドレスレジスタ(AR)、デ
ータレジスタ(DR)、大域的レジスタ、局所的レジス
タというように同一機能を果たすもので分類できる。ま
たメモリは高速メモリ、低速メモリというように同一機
能を果たすもので分類できる。このように資源要素が同
一機能を果たすもの同士で分類できれば、その分類毎が
別々の資源になる。 ・干渉グラフ 割付対象と、割付対象同士の生存区間の重なりとを図示
するためのグラフである。
【0010】干渉グラフとは割付対象をグラフの頂点と
し、生存区間が重なる割付対象(頂点)同士を互いに結
んで辺として描かれる。 ・頂点の次数 干渉グラフにおいて頂点に結合している辺の数である。
次に図29にコンパイラの構成図を示す。コンパイラは
構文解析装置11と、最適化装置12と、資源割付装置
63と、コード生成装置14とで構成されている。この
コンパイラの各構成について図29の構成図、図28、
図30(a)、図30(b)、図30(c)の説明図を
用いて説明する。
【0011】構文解析装置11は記憶装置(図外)にフ
ァイルとして記憶されているソースプログラムの字句解
析、構文解析および意味解析を行い、ソースプログラム
を中間プログラムに変換する。例えば、図30(a)の
ソースプログラムは図28の中間プログラムに変換され
る。最適化装置12は最終的に生成される機械語プログ
ラムのプログラムサイズ及び処理実行時間を向上させる
目的で中間プログラムの最適化を行う。この最適化の詳
細については本発明の主眼ではないため説明を省略し、
資源割付処理と特に関連がある点のみ説明する。最適化
作業には基本ブロック化、制御フロー解析、データフロ
ー解析という作業が含まれている。基本ブロック化とは
処理対象のプログラムを基本ブロックに分割することで
ある。
【0012】この分割処理を簡単に説明する。先ず最適
化装置12は中間プログラムの最初の中間命令、無条件
あるいは条件飛び越しの行き先の中間命令、無条件ある
いは条件飛び越しの直後の中間命令を検出し、検出した
これらをリーダーとみなす。更に最適化装置12はリー
ダーから始まり、次のリーダーの一つ手前まであるいは
プログラムの最後までの一連の中間命令を抽出する。こ
の抽出処理によって得られた命令列は基本ブロックと称
され、以降の処理単位となる。
【0013】制御フロー解析とは各基本ブロック間の制
御の流れを解析することである。データフロー解析とは
各基本ブロック中、それぞれの変数がどこで定義され、
どこで参照されているかについて解析することである。
これらの解析結果を参照して変数の生存区間の情報が得
られる。資源割付装置63は資源割り付けのためのアル
ゴリズムの一つであるグラフ縮退によるグラフ彩色法を
用いて中間プログラム中の割付対象にレジスタ、メモリ
を割り付ける。グラフ縮退によるグラフ彩色法とは、干
渉グラフの各頂点の色分けをする場合に辺で結ばれてい
れば異なる色を塗るという規則に従って、近似的に最も
少ない色数で干渉グラフの各頂点の色分けを行うアルゴ
リズムである。図30(a)のプログラム中の割付対象
は資源割付処理によって図30(b)のように資源要素
が割り付けられる。本図において図30(a)に示した
割付対象aには資源要素R0を割り付けたことを示し、
割付対象b2には資源要素R2を割り付けたことを示
す。
【0014】コード生成装置14は図30(c)に示す
ように中間プログラム内の各中間命令の機械語命令化を
行い、中間プログラムをターゲットマシンが解読可能な
機械語プログラムに変換する。このようにコード生成装
置14によって変換された機械語プログラムを目的プロ
グラムと呼ぶ。本目的プログラム中の機械語命令と、図
30(a)、図28のソースプログラム及び中間プログ
ラムとの対応は記号で表される。上記機械語命
令化において各機械語命令のオペランドには図30
(b)に示した資源割付結果のものを用いる。また図中
の転送命令t11、t12、t13、t14、t15・
・・は図28の中間プログラム中の各中間命令の処理
が、機械語命令によって実現されるようにするためコー
ド生成装置14によって生成されたものである。また資
源割付の結果によってはこの転送命令の幾つかが不用に
なることも有り得る。図30(c)においては割付対
象b2と、cとが同一レジスタに割り付けられたため、
転送命令生成が不用になった例である。
【0015】次に資源割付装置63について説明を行
う。上記グラフ彩色法を用いた資源割付処理の詳細は以
下に示す文献に記されている。従来の資源割付け方式、
特にレジスタの割付け方式としては [1]A.V.Aho, R.Sethi, J.D.Ullman: "Compilers Pr
inciples, Techniques, and Tools", Addison-Wesl
ey, 1986 [2]Chaitin.. :"Register allocation and spillin
g via graph coloring",United States Patent,
pat.num. 4.571.678, Feb.18, 1986 [3]Frederick Chow, John Hennessy:"Register All
cation by Priority-based Coloring",Computer Sy
stems Laboratory,Stanford University [4]David Bernstein,..,Ron Y.Pinter:"Spill code
minimization techniquesof optimizing compiler
s",SIGPLAN 1989, IBM Israel Science and Tech
nology Technion City Haifa, Israel [5]佐々 政孝 :"プログラミング言語処理系", 岩波
書店 レジスタ割付けp420〜p423 [6]森、他 :"複合バンク機構を考慮した系統的なレジ
スタ割当て方式とその一般化", 情報処理学会, Vol.3
0, No6, Jun, 1989がある。
【0016】上記資源割付装置63の構成を図31に示
す。図31に示すように資源割付装置63は最適化装置
12の処理結果に応じて割付対象を生成する割付対象生
成部71と、割付対象生成部71によって生成された割
付対象を保持する割付対象保持部72と、当該保持部に
保持されている各割付対象の優先度を上記{数式1}に
示した計算式を用いて計算し、記憶する優先度計算部7
3と、図28に示したような各割付対象の生存区間につ
いての情報及び当該生存区間がどう重なっているかの情
報を記憶する生存区間情報記憶部74と、保持部に保持
されている全割付対象を干渉グラフ状に展開する展開部
75と、展開部が展開を行うためのバッファ76と、一
旦展開部によって展開された割付対象を全て積み込むた
めのスタック77と、上記グラフ縮退によるグラフ彩色
法で資源割付を行う制御部80と、資源割付の結果を図
30(b)の形式で記憶する記憶部78とを備える。
【0017】図32(a)、図32(b)、及び図33
(a)〜図33(i)はグラフ縮退によるグラフ彩色法
を説明するための説明図である。これらの説明図を用い
て上記資源割付装置63の処理内容を説明する。ここで
は割り付け可能なレジスタの個数を3個とし、レジスタ
に割り付けられなかったものはメモリに割り付けるもの
とする。
【0018】上記展開部75は図28に示した割付対象
及び当該割付対象間の生存区間の重なりを図32(a)
に示すような干渉グラフで表現する。このような干渉グ
ラフにおいて各割付対象がどれだけの割付対象と生存区
間の重なりがあるかは、頂点から出ている辺の数(次
数)で表現される。また図32(b)に示したように割
付対象のうち、生存区間の終了点及び開始点が1中間命
令で一致しているもの同士は(図28の割付対象b2、
c)、1つの割付対象と見なせ得るため、図32(b)
に示すように制御部80はそれぞれが対応している頂点
を結合し、干渉グラフの簡易化を図る(図32(b)、
割付対象b2c)。このような簡易化の後、干渉グラフ
の頂点には高低が発生している。頂点の次数が、レジス
タの数が3個未満の頂点は次数の低い頂点と称され、次
数がレジスタの数以上の頂点は次数の高い頂点と称され
る。この次数の高低はグラフ縮退の成立条件として利用
される。グラフ縮退とは図33(a)の矢線y11、y
12に指示するように次数が低い頂点を{数式1}で求
めた優先度の低い順に削除してゆき、削除された頂点に
割付対象を後積み先出し方式のスタック領域に積み込む
ことであり、e2及びdを削除した結果、図33(a)
に示した干渉グラフは図33(b)に示すものへと変遷
する。
【0019】この図33(b)の状態では全頂点の次数
が高いため、上記条件が成立しない。そこでこれらの頂
点のうち、矢線y13に示すように最低優先度の割付対
象b1にメモリを割り付け頂点b1を削除する。この頂
点b1の削除により干渉グラフは図33(c)のものへ
と変遷し、再び、上記成立条件が成立する。図33
(c)の状態で再び、グラフ縮退を繰り返し、図33
(d)に示すように全割付対象をスタックに積み込む。
このような積み込み処理を終えたのちに、これから資源
割付処理を行う。先ず、図33(e)に示すようにスタ
ックのトップから割付対象aを取り出し、割付対象aに
レジスタR0を割り付け、同様にスタックのトップから
割付対象e1、b2cを取り出し、図33(f)、図3
3(g)に示すように割付対象e1、b2cにレジスタ
R1、R2を割り付ける。次順の割付対象e2、dはb
2cとは生存区間が重なるが、割付対象a、e1とは生
存区間が重ならないため、図33(h)に示すように割
付可能なレジスタのうち、最も番号の若いレジスタR0
を割付対象e2に割り付け、同じく、図33(i)に示
すようにレジスタR1を割付対象dに割り付ける。この
ような割付処理によって生存区間が重なり合う割付対象
同士に異なるレジスタを割り付けることができる。
【0020】上記の割付対象a、b2、c、d、e1、
e2、b1は資源割付処理によって何れかの資源要素を
割り付けていたが、C言語等の高級言語においては割付
対象との組み合わせが予め設定されているレジスタがあ
る。それは関数呼び出し作業の効率化を図るために用い
られるものであり、引数レジスタ、戻り値レジスタ、破
壊レジスタと称される。
【0021】引数レジスタとは関数呼び出し時に引数を
レジスタで引き渡すためのレジスタである。中間プログ
ラムにおいて引数として使用されている割付対象はこの
引数レジスタが割り付けられる。戻り値レジスタとは関
数呼び出しの戻り値を返すためのレジスタである。中間
プログラムにおいて戻り値を返すために使用されている
割付対象は、この戻り値レジスタが割り付けられる。
【0022】破壊レジスタとは関数呼び出しの開始と終
了時に格納値を退避・復元する必要のないレジスタであ
る。この破壊レジスタは関数呼び出しのオーバーヘッド
軽減を目的としている。上記関数呼び出しを行う場合、
呼び出される関数内での処理によって各レジスタの内容
は書き換えられる可能性があり関数呼び出しの前後にお
いてレジスタ内容の退避・復元を行う必要がある。但
し、全レジスタについてこの退避・復元作業を行うこと
は関数呼び出しのオーバヘッドを増大させることになる
から、レジスタ内容の退避・復元作業が必要でない破壊
レジスタを予め設定し、割付対象のうち、関数呼び出し
命令を生存区間に含まないものに破壊レジスタを割り付
け、退避・復元作業を最低限のものにする。
【0023】
【発明が解決しようとする課題】しかしながら上記従来
技術における資源割付装置によれば、目的プログラムの
実行時間、メモリサイズを増加させるような資源割付を
行い得るという問題点があった。この問題点を図34を
参照しながら説明を行う。本図に示されている縦線は割
付対象の生存区間を表し、そのうち、白抜きのものは未
割り付けの割付対象、黒で塗り潰されているものは割付
済みの割付対象を示す。一方、本図において割付対象x
0,x1,x5を表す縦線は割付対象z0,z1,z2を表す縦線と並
行部分を有するのでこれらは互いに生存区間が重なって
いることが判る。
【0024】また図34に示すように生存区間が連続し
合う割付対象同士(割付対象x0、x1、x2、x3、x4、x5)
は、上記の頂点結合によって1つの割付対象yへと結合
される。結合された割付対象yは既に資源要素R0が割り
付けられている割付対象z0、資源要素R1が割り付けられ
ている割付対象z1、資源要素R2が割り付けられている割
付対象z2と生存区間が重なってしまう。このように割付
済みの割付対象と生存区間と重なれば、当該割付済みの
割付対象に割り付けられている資源要素(資源要素R0、
R1、R2)を割付対象yに割り付けることはできない。そ
のため割付対象yを構成する割付対象x0、x1、x2、x3、x
4、x5は全てメモリを割り付けてしまうことになる。こ
れらの割付対象を全てメモリに割り付ければ、これらの
割付対象を被演算子として使用している中間命令は全て
メモリを被演算子とする機械語命令へと変換される。被
演算子がメモリの機械語命令は概して実行速度が遅く、
またメモリサイズが大きくなり、目的プログラムの実行
時間、メモリサイズに悪影響を及ぼしてしまう。
【0025】また資源が3種類以上の機能に別れている
場合に資源の機能に応じた割付対象の割り付けを行わな
いと、目的プログラムの実行時間、メモリサイズに悪影
響を及ぼしてしまうという問題点があった。上記文献の
うち、[6]に記載されているものはアドレスレジスタ、
データレジスタといったクラスが異なる複数種のレジス
タへのアクセスに必要なコストを参照する資源割り付け
について述べている。この文献では、「C言語でのポイ
ンタ型のようなアドレス型の変数を保持する割付対象は
全てアドレスレジスタに割り付ける。」というようなル
ールづけを行っている。但しアドレス型の割付対象には
加算や減算で複数回使用され、メモリの間接参照が僅か
な割付対象も存在し得る。データレジスタに関して高速
な加算、減算演算を有するターゲットマシンにおいては
このような割付対象を一律にアドレスレジスタに割り付
けてしまえば、目的プログラム中にはアドレスレジスタ
からデータレジスタへの転送命令が多数生成され、目的
プログラムのメモリサイズや実行時間を増大させる結果
となる。
【0026】このように単にあるクラスのレジスタへの
アクセスに必要なコストを参照するだけではかえって多
くの転送命令を生成する結果を招いてしまう。更に関数
呼び出しを効率良く行うために設定される引数レジス
タ、戻り値レジスタ、破壊レジスタの格納値をそのまま
利用できるような資源割付が行えないという問題点があ
った。
【0027】グラフ彩色法とは干渉グラフの頂点塗り分
けを最適に行うための近似アルゴリズムである。引数レ
ジスタ、戻り値レジスタ、破壊レジスタはアルゴリズム
実行前に予め割付対象に割り付けられた資源要素である
ため、干渉グラフにおいてこれらのレジスタは色付きの
頂点とみなされる。戻り値レジスタ、引数レジスタの格
納値をそのまま利用出来るような資源割付を実現するた
めには、色付きの頂点を干渉グラフ内に組み込み、有効
であればその色に他の頂点を彩色するという処理が必要
となるが、これはグラフ彩色法の域を逸脱してしまう。
以上の理由から通常はグラフ彩色法で割り付けるレジス
タとは別個に引数レジスタ、戻り値レジスタに用いるた
めのレジスタを用意する必要がある。そして引数レジス
タ、戻り値レジスタの格納値を使用するため、割り付け
用レジスタへの転送命令が必要となる。このように転送
命令が必要となるとその命令の追加分だけ、目的プログ
ラムのメモリサイズ及び実行時間が増大する。
【0028】以上の問題点による影響はレジスタの個数
にかなり余裕がある場合無視できるレベルに留まる。し
かし多くの組み込み用途向けのマイクロプロセッサのよ
うにレジスタの個数が制限されている場合、あるいは果
たす機能が異なるレジスタが少数でかつ多種類備えられ
ている場合にはこれらの問題点は顕著に現れる。本発明
の目的は優先度順に割付対象に資源要素を割り付けるこ
とができ、転送命令の生成量を最低限に留めることによ
り目的プログラムのメモリサイズ及び実行時間を最低限
にすることができる資源割付装置を提供することであ
る。
【0029】
【課題を解決するための手段】本発明は、資源要素に既
に割り付けられた割付対象の生存区間と割り付けるべき
割付対象の生存区間の位置関係に基づいて、資源要素を
割付対象に割り付けるようにしている。
【0030】
【発明の実施の形態】上記目的を達成するために請求項
1記載の資源割付装置は、高級言語で書かれたプログラ
ムを機械語プログラムに翻訳するコンパイラに用いら
れ、プログラミング言語で記述されたプログラムの中の
変数と生存区間の組である割付対象を複数個生成し、生
成した割付対象にレジスタ、メモリ等のハードウェアで
ある資源が有する資源要素を割り付ける資源割付装置で
あって、次に割り付けるべき割付対象にどの資源要素が
適切かを示す得失値を、資源要素に既に割り付けられた
割付対象の生存区間と割り付けるべき割付対象の生存区
間とがプログラムにおいてどのような位置関係にあるか
に基づいて、各資源要素について算出する得失値算出手
段と、各資源要素について算出された得失値の大きさに
基づいて、何れかの資源要素を、割り付けるべき割付対
象に割り付ける割付手段と、全ての割付対象が割り付け
られるまで、得失値算出手段及び割付手段の起動を繰り
返す制御手段とを備えることを特徴としており、次に割
り付けるべき割付対象にどの資源要素が適切かを示す得
失値が、資源要素に既に割り付けられた割付対象の生存
区間と割り付けるべき割付対象の生存区間とがプログラ
ムにおいてどのような位置関係にあるかに基づいて、得
失値算出手段によって各資源要素について算出される。
各資源要素について算出された得失値の大きさに基づい
て、割付手段によって何れかの資源要素が、割り付ける
べき割付対象に割り付けられる。全ての割付対象が割り
付けられるまで、制御手段によって得失値算出手段及び
割付手段の起動が繰り返される。以上の繰り返しによっ
て、割り付けるべき割付対象には、既に割り付けられた
資源要素のうち、得失値が大きいものが割り付けられ
る。この得失値には、プログラムにおける生存区間の位
置関係が反映されているので、この位置関係に準拠した
資源要素が、各割付対象に割り付けられる。
【0031】また、請求項2において、資源割付装置
は、プログラム中の各割付対象の位置関係を判定する位
置関係判定手段を有し、位置関係判定手段は、既に資源
要素が割り付けられた割付対象の生存区間が、割り付け
るべき割付対象の生存区間と重複しているかを判定する
重複関係判定手段と、資源要素が既に割り付けられた割
付対象の生存区間と、割り付けるべき割付対象の生存区
間とが連続しているかを判定する割付済み−被割付間連
続判定手段とを備え、得失値算出手段は、割付済み−被
割付間連続判定手段によって割り付けるべき割付対象と
生存区間が連続していることが判定されると、資源要素
が既に割り付けられた割付対象から割り付けるべき割付
対象までの生存区間長の短さに応じて、連続が判定され
た割付済みの割付対象に既に割り付けられている資源要
素の得失値を増加させる第1の増加部を備え、割付手段
は、重複関係判定手段によって生存区間が重複している
ことが判定された重複している生存区間を有する割付済
みの割付対象に割り付けられている資源要素を割り付け
るべき割付対象に割り付けず、生存区間が重複していな
いことが判定された割付済みの割付対象のうち、得失値
が最大の資源要素を割り付けるべき割付対象に割り付け
ることを特徴としたものであり、既に資源要素が割り付
けられた割付対象の生存区間が、割り付けるべき割付対
象の生存区間と重複しているかが重複関係判定手段によ
って判定される。また資源要素が既に割り付けられた割
付対象の生存区間と、割り付けるべき割付対象の生存区
間とが連続しているかが割付済み−被割付間連続判定手
段によって判定される。割付済み−被割付間連続判定手
段によって割り付けるべき割付対象と生存区間が連続し
ていることが判定されると、資源要素が既に割り付けら
れた割付対象から割り付けるべき割付対象までの生存区
間長の短さに応じて、連続が判定された割付済みの割付
対象に既に割り付けられている資源要素の得失値が第1
の増加部によって増加される。このように、生存区間が
連続し合うような位置関係にあっては、生存区間長の短
さに応じて得失値が増加されるため、生存区間が連続し
合う割付済みの割付対象に割り付けられている資源要素
はより割り付けられる確率が高くなる。
【0032】重複関係判定手段によって生存区間が重複
していることが判定されると、重複している生存区間を
有する割付済みの割付対象に割り付けられている資源要
素が割り付けるべき割付対象に割り付けられないため、
生存区間が重複し合う割付対象に、同一の資源要素が割
り付けられることが避けられる。また、生存区間が連続
し合う割付対象群のうち、生存区間の重なりによって、
不具合が生じる割付対象には、異なる資源要素が割り付
けられる。
【0033】また、請求項3において、位置関係判定手
段は、資源要素が既に割り付けられた割付対象と重なる
生存区間を有する未割り付けの割付対象を検出する第1
の割付済み側重なり割付対象検出手段と、検出された未
割り付けの割付対象の生存区間と、割り付けるべき割付
対象の生存区間とが連続しているかを判定する未割り付
け−被割付間連続判定手段とを備え、得失値算出手段
は、連続すると判定されると、割付済み側重なり割付対
象検出手段によって検出された未割り付けの割付対象か
ら、割り付けるべき割付対象までの生存区間長の短さに
応じて、当該割付済みの割付対象に割り付けられている
資源要素の得失値を減少させる第1の減少部を備えるこ
とを特徴としており、請求項3によれば、資源要素が既
に割り付けられた割付対象と重なる生存区間を有する未
割り付けの割付対象が、第1の割付済み側重なり割付対
象検出手段によって検出される。検出された未割り付け
の割付対象の生存区間と、割り付けるべき割付対象の生
存区間とが連続しているかが未割り付け−被割付間連続
判定手段によって判定される。連続することが判定され
ると、第1の割付済み側重なり割付対象検出手段によっ
て検出された未割り付けの割付対象から、割り付けるべ
き割付対象までの生存区間長の短さに応じて、第1の減
少部によって、当該割付済みの割付対象に割り付けられ
ている資源要素の得失値が減少される。このように、得
失値が減少されることによって、割り付けるべき割付対
象からみて損失となるような位置の割付対象に割り付け
られている資源要素は低く見積もられるようになる。こ
のように低く見積もられた資源要素は、得失値が低いも
のとなるため、割り付けられる可能性が低くなるという
作用を有する。
【0034】また、請求項4において、第1の割付済み
側重なり割付対象検出手段によって、複数個の未割り付
けの割付対象が判定された場合、未割り付け−被割付間
連続判定手段は、検出された複数個の未割り付けの割付
対象のうち、何れかのものの生存区間と、割り付けるべ
き割付対象の生存区間とが連続しているかを判定するこ
とを特徴としており、また、請求項4によれば、第1の
割付済み側重なり割付対象検出手段によって、複数個の
未割り付けの割付対象が判定された場合、検出された複
数個の未割り付けの割付対象のうち、何れかのものの生
存区間と、割り付けるべき割付対象の生存区間とが連続
しているかが未割り付け−被割付間連続判定手段によっ
て判定されると、いう作用を有する。
【0035】また、請求項5において、資源割付装置
は、プログラムにおける割付対象の使用頻度及び/又は
生存区間のネストレベルが反映された割付対象の優先度
を、各割付対象に対応づけて記憶する優先度記憶手段を
備え、得失値算出手段及び割付手段は、優先度記憶手段
が記憶する優先度順に、割り付けるべき割付対象を決定
することを特徴としており、請求項5によれば、割り付
けるべき割付対象は、得失値算出手段及び割付手段によ
って優先度記憶手段が記憶する優先度順に決定される。
この優先度には、プログラムにおける割付対象の使用頻
度及び/又は生存区間のネストレベルが反映されている
ため、割付対象は、使用頻度又はネストレベルが高い順
に資源要素が割り付けられてゆくという作用を有する。
【0036】また、請求項6において、位置関係判定手
段は、各資源要素について得失値算出手段によって算出
された得失値が複数個の資源要素同士で同一の大きさに
なった場合、割り付けるべき割付対象の生存区間と重な
る生存区間を有する未割り付けの割付対象を検出する被
割付側重なり割付対象検出手段と、検出された割付対象
の生存区間と、資源要素が既に割り付けられた割付対象
の生存区間とが連続しているかを判定する未割り付け−
割付済み間連続判定手段とを備え、得失値算出手段は、
被割付側重なり割付対象検出手段によって検出された割
付対象の優先度を検出する優先度検出部と、割付済みの
割付対象から検出された未割り付けの割付対象までの生
存区間長の短さを算出する第1の短さ算出部と、検出さ
れた優先度に算出された短さを乗じ、その乗算結果に応
じて、当該割付済みの資源要素の得失値を減少させる第
2の減少部とを備えることを特徴としており、請求項6
によれば、割り付けるべき割付対象の生存区間と重なる
生存区間を有する未割り付けの割付対象が、被割付側重
なり割付対象検出手段によって検出される。検出された
割付対象の生存区間と資源要素が既に割り付けられた割
付対象の生存区間とが連続しているかが未割り付け−割
付済み間連続判定手段によって判定される。被割付側重
なり割付対象検出手段によって検出された割付対象の優
先度が優先度検出部によって検出され、割付済みの割付
対象から検出された未割り付けの割付対象までの生存区
間長の短さが第1の短さ算出部によって算出される。検
出された優先度に算出された短さを乗じ、その乗算結果
に応じて、当該割付済みの資源要素の得失値が第2の減
少部によって減少される。このように、得失値が減少さ
れることによって、割り付けるべき割付対象からみて損
失となるような位置の割付対象に割り付けられている資
源要素は低く見積もられるようになる。このように低く
見積もられた資源要素は、得失値が低いものとなるた
め、割り付けられる可能性が低くなるという作用を有す
る。
【0037】また、請求項7において、位置関係判定手
段は、資源要素が既に割り付けられた割付対象の生存区
間と重なる生存区間を有する未割り付けの割付対象を検
出する第2の割付済み側重なり割付対象検出手段と、被
割付側重なり割付対象検出手段によって検出された未割
り付けの割付対象の生存区間と、第2の割付済み側重な
り割付対象検出手段によって検出された未割り付けの割
付対象の生存区間とが連続しているかを判定する未割り
付け−未割り付け間連続判定手段とを備え、得失値算出
手段は、被割付側重なり割付対象検出手段によって検出
された未割り付けの割付対象から、第2の割付済み側重
なり割付対象検出手段によって検出された未割り付けの
割付対象までの生存区間長の短さを算出する第2の短さ
算出部と、検出された優先度に算出された短さを乗じ、
その乗算結果に応じて、割付済みの割付対象に割り付け
られた資源要素の得失値を増加させる第2の増加部とを
備えることを特徴としており、請求項7によれば、資源
要素が既に割り付けられた割付対象の生存区間と重なる
生存区間を有する未割り付けの割付対象が第2の割付済
み側重なり割付対象検出手段によって検出される。被割
付側重なり割付対象検出手段によって検出された未割り
付けの割付対象の生存区間と、第2の割付済み側重なり
割付対象検出手段によって検出された未割り付けの割付
対象の生存区間とが連続しているかが未割り付け−未割
り付け間連続判定手段によって判定される。被割付側重
なり割付対象検出手段によって検出された未割り付けの
割付対象から、第2の割付済み側重なり割付対象検出手
段によって検出された未割り付けの割付対象までの生存
区間長の短さが第2の短さ算出部によって算出される。
検出された優先度に算出された短さを乗じ、その乗算結
果に応じて、割付済みの割付対象に割り付けられた資源
要素の得失値が第2の増加部によって増加される。得失
値が増加されることによって、割り付けるべき割付対象
からみて利得となるような位置の割付対象に割り付けら
れている資源要素は高く見積もられるようになる。この
ように高く見積もられた資源要素は、得失値が高いもの
となるため、割り付けられる可能性が高くなるという作
用を有する。
【0038】また、請求項8において、第2の割付済み
側重なり割付対象検出手段によって、複数個の未割り付
けの割付対象が判定された場合、未割り付け−未割り付
け間連続判定手段は、検出された複数個の未割り付けの
割付対象のうち、何れかのものの生存区間と、割り付け
るべき割付対象の生存区間とが連続しているかを判定す
ることを特徴としており、請求項8によれば、第2の割
付済み側重なり割付対象検出手段によって、複数個の未
割り付けの割付対象が判定された場合、検出された複数
個の未割り付けの割付対象のうち、何れかのものの生存
区間と、割り付けるべき割付対象の生存区間とが連続し
ているかが未割り付け−未割り付け間連続判定手段によ
って判定されるという作用を有する。
【0039】また、請求項9において、資源割付装置
は、全ての資源要素と、各々の資源要素の得失値の初期
値とを対応づけて記憶する得失値記憶部を備え、第1及
び第2の増加部は、得失値記憶部に記憶されている各資
源要素の得失値を増加させ、第1及び第2の減少部は、
得失値記憶部に記憶されている各資源要素の得失値を減
少させることを特徴としており、請求項9によれば、得
失値記憶部に記憶されている各資源要素の得失値が、第
1及び第2の増加部によって増加され、得失値記憶部に
記憶されている各資源要素の得失値が第1及び第2の減
少部によって減少させられる。得失値記憶部は、全ての
資源要素と、各々の資源要素の得失値の累計の初期値と
を対応づけて記憶しているので、全ての資源要素が損失
になるような位置に割り付けられていれば、どの割付対
象にも割り付けられてない資源要素の得失値が大きく見
積もられるようになる。そのため、どの割付対象にも割
り付けられてない資源要素を割り付けるべき割付対象に
割り付けることができるという作用を有する。
【0040】また、請求項10において、資源割付装置
は更に、プログラムにおいて、各資源の資源要素を割り
付けると、割り付けるべき割付対象が定義されている全
ての定義命令、及び、使用されている全ての使用命令の
実行サイクルおよび/又はコードサイズの集計値がどれ
だけになるかを、割り付けるべき割付対象と各資源要素
との組み合わせについてその集計値の推定値を算出する
ことで推定する推定手段と、各資源要素毎の推定結果で
ある推定値を比較し、推定値が最小である資源要素が1
つか複数かを判定する資源要素単複判定手段とを備え、
前記割付手段は、1つと判定された場合、割り付けるべ
き割付対象に推定値が最小である資源要素を割り付け、
複数個と判定された場合、得失値が最大の資源要素を、
割り付けるべき割付対象に割り付けることを特徴として
おり、また、請求項10によれば、プログラム中の各割
付対象の定義命令及び使用命令の実行サイクルおよび/
又はコードサイズの集計がどれだけになるかを示す推定
値が、推定値算出手段によって各資源要素について算出
される。各資源要素毎の推定値が比較され、推定値が最
小である資源要素が、資源要素単複判定手段によって1
つか複数かが判定される。1つと判定された場合、割り
付けるべき割付対象に推定値が最小である資源要素が割
付手段によって割り付けられ、複数個と判定された場
合、得失値の累計が最大の資源要素が割り付けるべき割
付対象に割り付けられる。このように割付対象に割り付
けるのに際して、推定値を用いるか得失値を用いるかが
切り換えられ、推定値が最大の資源要素が1つである場
合、推定値が優先されるため、割付対象の定義命令及び
使用命令の実行サイクルおよび/又はコードサイズの増
加量を優先させた資源割り付けが行えるという作用を有
する。
【0041】また、請求項11において、推定手段は、
機械語命令の命令フォーマットを用いて、プログラム中
の割付対象の定義命令及び使用命令を表現した情報であ
る命令パタンを、プログラム中における当該割付対象の
全ての定義命令及び使用命令について出力する命令パタ
ン出力部と、機械語命令の各オペランドに各資源の資源
要素を用いた場合の、当該定義命令及び使用命令の実行
サイクルおよび/又はコードサイズを示すコストを、命
令パタン出力部によって出力され得る命令パタンのそれ
ぞれに対応づけて記憶するコスト記憶部と、コスト記憶
部から、出力された命令パタンに対応するコストを取り
出し、取り出したコストを各資源要素毎に集計し、集計
した集計値を推定値とするコスト集計部とを備えること
を特徴としており、請求項11によれば機械語命令の命
令フォーマットを用いて、プログラム中の割付対象の定
義命令及び使用命令を表現した情報である命令パタン
が、命令パタン出力部によってプログラム中における当
該割付対象の全ての定義命令及び使用命令について生成
される。コスト記憶部から、出力された命令パタンに対
応するコストがコスト集計部によって取り出され、取り
出されたコストが各資源要素毎に集計され、集計された
集計値が推定値とされる。コスト記憶部は、各機械語命
令の各オペランドに各資源の資源要素を用いた場合の当
該定義命令及び使用命令の実行サイクルおよび/又はコ
ードサイズを示すコストを命令パタン出力部によって出
力され得る命令パタンのそれぞれに対応づけて記憶して
いるため、割付対象の定義命令及び使用命令を機械語命
令化するのに、どの資源の資源要素が適切であるかが綿
密に判定されるという作用を有する。
【0042】また、請求項12において、資源割付装置
は更に、各資源要素について得失値算出手段によって算
出された得失値が複数個の異なる資源の資源要素同士で
同一の大きさになった場合、割り付けるべき割付対象よ
り優先度が低く、割り付けるべき割付対象の後に割り付
けられる全ての未割り付けの割付対象に最も相応しい資
源要素を予測する予測手段を備え、前記割付手段は、予
測手段によって予測された資源要素を、割り付けるべき
割付対象に割り付けることを特徴としており、請求項1
2によれば、各資源要素について得失値算出手段によっ
て算出された得失値が複数個の異なる資源の資源要素同
士で同一の大きさになった場合、割り付けるべき割付対
象より優先度が低く、割り付けるべき割付対象の後に割
り付けられる全ての未割り付けの割付対象に最も相応し
い資源要素が予測手段によって予測される。このように
予測された資源要素が、割付手段によって割り付けるべ
き割付対象に割り付けられるという作用を有する。
【0043】また、請求項13において、予測手段は、
割り付けるべき割付対象が有する生存区間と連続する生
存区間を有し、かつ、当該割付対象より優先度が低い未
割り付けの割付対象を全て検出する第1の後順割付対象
検出手段と、検出された各割付対象に各資源要素を割り
付けたとすると当該割付対象が定義されている全ての定
義命令及び使用されている全ての使用命令の実行サイク
ルおよび/又はコードサイズの集計値がどれだけになる
かを、第1の後順割付対象検出手段に検出された全ての
割付対象と各資源要素との組み合わせについて当該集計
値の推定値を算出することにより推定する第1の推定手
段と、第1の後順割付対象検出手段によって検出された
各割付対象と割り付けるべき割付対象との間に介在する
生存区間長を、第1の後順割付対象検出手段によって検
出された各割付対象毎に計数する第1の生存区間長計数
手段と、検出された各割付対象と各資源要素との組み合
わせに対して第1の推定手段によって算出された推定値
に、その割付対象に対して計数された生存区間長の短さ
を重みとして、重み付けを行う第1の重み付け手段と、
第1の重み付け手段によって重み付けられた推定値を各
資源要素毎に集計する第1の集計手段と、第1の集計手
段によって集計された集計結果が最も小さい資源要素
を、割り付けるべき割付対象より優先度が低い未割り付
けの割付対象に最も相応しい資源要素と判定する第1の
最適資源要素判定手段とを備えることを特徴としてお
り、請求項13によれば、割り付けるべき割付対象が有
する生存区間と連続する生存区間を有し、かつ、当該割
付対象より優先度が低い未割り付けの割付対象が第1の
後順割付対象検出手段によって全て検出される。次に検
出された各割付対象に各資源要素を割り付けたとすると
当該割付対象が定義されている全ての定義命令及び使用
されている全ての使用命令の実行サイクルおよび/又は
コードサイズの集計値がどれだけになるかが、第1の推
定手段によって推定される。第1の後順割付対象検出手
段によって検出された各割付対象と割り付けるべき割付
対象との間に介在する生存区間長が、第1の生存区間長
計数手段によって計数される。検出された各割付対象と
各資源要素との組み合わせに対して第1の推定手段によ
って算出された推定値に、その割付対象に対して計数さ
れた生存区間長の短さを重みとして、第1の重み付け手
段によって重み付けが行われる。第1の重み付け手段に
よって重み付けられた推定値が第1の集計手段によって
各資源要素毎に集計される。第1の集計手段によって集
計された集計結果が最も小さい資源要素が割り付けるべ
き割付対象より優先度が低い未割り付けの割付対象に最
も相応しい資源要素として第1の最適資源要素判定手段
によって判定され、このように判定された資源要素が割
付対象に割り付けられるという作用を有する。
【0044】また、請求項14において、予測手段は、
第1の最適資源要素判定手段によって複数個の資源要素
が最も相応しいと判定された場合、割り付けるべき割付
対象と生存区間が重なる未割り付けの割付対象、及び、
その未割り付けの割付対象の生存区間と連続する生存区
間を有する未割り付けの割付対象を検出する第2の後順
割付対象検出手段と、第2の後順割付対象検出手段によ
って検出された未割り付けの割付対象に各資源要素を割
り付けたとすると、検出された各割付対象が定義されて
いる全ての定義命令及び使用されている全ての使用命令
の実行サイクルおよび/又はコードサイズの集計値がど
れだけになるかを、検出された割付対象と各資源要素と
の組み合わせについて当該集計値の推定値を算出するこ
とで推定する第2の推定手段と、割り付けるべき割付対
象が有する生存区間と生存区間が重なる未割り付けの割
付対象と、その重なる側の割付対象の生存区間と連続す
る生存区間を有する割付対象との間に介在し、連続する
生存区間長を当該第2の後順割付対象検出手段によって
検出された各割付対象毎に計数する第2の生存区間長計
数手段と、第2の後順割付対象検出手段によって未割り
付けの割付対象と各資源要素との組み合わせに対して第
2の推定手段によって推定された推定値に、その割付対
象に対して計数された生存区間長の短さと、各割付対象
の優先度とを重みとして、重み付けを行う第2の重み付
け手段と、第2の重み付け手段によって重み付けられた
各割付対象の推定値を資源要素毎に集計する第2の集計
手段と、第2の集計手段によって集計された各資源要素
についての集計値が最も大きい資源要素を、割り付ける
べき割付対象より後に割り付けられる全ての未割り付け
の割付対象に最も相応しい資源要素と判定する第2の最
適資源要素判定手段とを備えることを特徴としており、
請求項14によれば、第1の最適資源要素判定手段によ
って複数個の資源要素が最も相応しいと判定された場
合、割り付けるべき割付対象と生存区間が重なる未割り
付けの割付対象、及び、その未割り付けの割付対象の生
存区間と連続する生存区間を有する未割り付けの割付対
象が第2の後順割付対象検出手段によって検出される。
第2の後順割付対象検出手段によって検出された未割り
付けの割付対象に各資源要素が割り付けられたとすると
検出された各割付対象が定義されている全ての定義命令
及び使用されている全ての使用命令の実行サイクルおよ
び/又はコードサイズの集計値がどれだけになるかが、
検出された割付対象と各資源要素との組み合わせについ
て当該集計値の推定値が算出されることで第2の推定手
段によって推定される。
【0045】割り付けるべき割付対象が有する生存区間
と生存区間が重なる未割り付けの割付対象と、その重な
る側の割付対象の生存区間と連続する生存区間が有する
割付対象との間に介在し、連続する生存区間長が第2の
生存区間長計数手段によって当該第2の後順割付対象検
出手段によって検出された各割付対象毎に計数される。
【0046】第2の後順割付対象検出手段によって未割
り付けの割付対象と各資源要素との組み合わせに対して
第2の推定手段によって推定された推定値に、その割付
対象に対して計数された生存区間長の短さと各割付対象
の優先度とが重みとして、第2の重み付け手段によって
重み付けされる。第2の重み付け手段によって重み付け
られた各割付対象の推定値が、第2の集計手段によって
資源要素毎に集計される。第2の集計手段によって集計
された各資源要素についての集計値が最も大きい資源要
素が、第2の最適資源要素判定手段によって割り付ける
べき割付対象より後に割り付けられる全ての未割り付け
の割付対象に最も相応しい資源要素と判定されるという
作用を有する。
【0047】また、請求項15において、第1及び第2
の重み付け手段は、第1及び第2の生存区間長計数手段
によって計数された割付対象間の生存区間長が0であっ
た場合、1を生存区間長の短さとして重み付けを行い、
計数された生存区間長が0でない場合、その生存区間長
の逆数を算出し、算出した生存区間長の逆数を生存区間
長の短さとして重み付けを行うことを特徴としており、
また、請求項15によれば、第1及び第2の重み付け手
段は、第1及び第2の生存区間長計数手段によって計数
された割付対象間の生存区間長が0であった場合、1が
生存区間長の短さとして重み付けが行われ、計数された
生存区間長が0でない場合、その生存区間長の逆数が算
出され、算出された生存区間長の逆数を生存区間長の短
さとして重み付けが行われるという作用を有する。
【0048】また、請求項16において、資源割付装置
は、機械語命令の命令フォーマットを用いてプログラム
中の割付対象の定義命令及び使用命令を表現した情報で
ある命令パタンを複数個記憶し、また、機械語命令の各
オペランドに各資源の資源要素を用いた場合のプログラ
ム中の割付対象の定義命令及び使用命令の実行サイクル
および/又はコードサイズを示すコストをそれぞれの命
令パタンに対応づけて記憶するコスト記憶手段を備え、
第1の推定手段は、第1の後順割付対象検出手段によっ
て検出された未割り付けの割付対象の全ての定義命令及
び使用命令に対応する命令パタンを読み出し、読み出し
た命令パタンを出力する第1の命令パタン出力部と、コ
スト記憶手段から、出力された命令パタンに対応するコ
ストを取り出し、取り出したコストを各資源要素毎に集
計し、集計した集計値を推定値とする第1のコスト集計
部とを備え、第2の推定手段は、第2の後順割付対象検
出手段によって検出された未割り付けの割付対象の全て
の定義命令及び使用命令に対応する命令パタンを読み出
し、読み出した命令パタンを出力する第2の命令パタン
出力部と、コスト記憶手段から、出力された命令パタン
に対応するコストを取り出し、取り出したコストを各資
源要素毎に集計し、集計した集計値を推定値とする第2
のコスト集計部とを備えることを特徴としており、ま
た、請求項17において、命令パタンは、演算結果の格
納先がどのオペランドであるか、何れのオペランドにも
一致しないかを示す情報を有し、格納先がオペランドで
ある命令パタンに対応するコストは、そうでない命令パ
タンに対応するコストよりも小さいことを特徴としてお
り、また、請求項18において、命令パタンは、対応す
る使用命令が、生存区間の終了点であるか、そうでない
かを示す情報を有し、終了点である命令パタンに対応す
るコストは、そうでない命令パタンに対応するコストよ
りも小さいことを特徴としており、また、請求項16〜
18によれば、コスト記憶手段には、機械語命令の命令
フォーマットを用いてプログラム中の割付対象の定義命
令及び使用命令が表現した情報である命令パタンが複数
個記憶され、また、機械語命令の各オペランドに各資源
の資源要素を用いた場合のプログラム中の割付対象の定
義命令及び使用命令の実行サイクルおよび/又はコード
サイズを示すコストがそれぞれの命令パタンに対応づけ
て記憶されている。
【0049】第1の後順割付対象検出手段によって検出
された未割り付けの割付対象の全ての定義命令及び使用
命令に対応する命令パタンが読み出され、第1の命令パ
タン出力部によって読み出された命令パタンが出力され
る。コスト記憶手段から、出力された命令パタンに対応
するコストが取り出され、取り出したコストが各資源要
素毎に集計され、集計した集計値が第1のコスト集計部
によって推定値とされる。第2の後順割付対象検出手段
によって検出された未割り付けの割付対象の全ての定義
命令及び使用命令に対応する命令パタンが読み出され、
第2の命令パタン出力部によって読み出された命令パタ
ンが出力される。コスト記憶手段から、第2のコスト集
計部によって出力された命令パタンに対応するコストが
取り出され、取り出されたコストが各資源要素毎に集計
され、集計された集計値が推定値とされるという作用を
有する。
【0050】また、請求項19において、資源割付装置
は更に、割り付けるべき資源要素が予め定められている
割付対象を、前記プログラムから検出する予約割付対象
検出手段と、予約割付対象検出手段が検出した割付対象
に割り付けるべき資源要素を記憶する予約資源要素記憶
手段と、割付手段は、予約割付対象検出手段によって検
出された割付対象に割り付けられるべき資源要素を割り
付け、割り付けた後に最大の優先度の割付対象に、資源
要素の何れかを割り付けることを特徴としており、ま
た、請求項20において、前記予約割付対象検出手段
は、前記プログラムから関数呼び出しの引数を保持する
割付対象を検出し、前記予約資源要素記憶手段は、当該
割付対象に割り付けるべき引数レジスタを記憶すること
を特徴としており、また、請求項21において、前記予
約割付対象検出手段は、前記プログラムから関数呼び出
しの戻り値を保持する割付対象を検出し、前記予約資源
要素記憶手段は、当該割付対象に割り付けるべき戻り値
レジスタを記憶することを特徴としており、また、請求
項22において、前記予約割付対象検出手段は、前記プ
ログラムから値が書き換えられてもよい割付対象を検出
し、前記予約資源要素記憶手段は、当該割付対象に割り
付けるべき破壊レジスタを記憶することを特徴としてお
り、また、請求項19〜22によれば、割り付けるべき
資源要素が予め定められている割付対象が、予約割付対
象検出手段によって前記プログラムから検出される。割
付手段は、予約割付対象検出手段によって検出された割
付対象に割り付けられるべき資源要素を割り付け、割り
付けた後に最大の優先度の割付対象に資源要素の何れか
を割り付ける。このように、引数レジスタ、戻り値レジ
スタ、破壊レジスタ等、割り付けるべき資源要素が予め
定められている割付対象への資源割り付けの後に優先度
順に割付対象を割り付けるため、引数レジスタ、戻り値
レジスタ、破壊レジスタを、他の割付対象に割り付ける
ことができるという作用を有する。
【0051】また、請求項23において資源割付装置は
更に、プログラム中の各割付対象を、当該割付対象の開
始点で生存区間が終了する全ての割付対象と、当該割付
対象の終了点で生存区間が始まる全ての割付対象とから
なる集合である生存区間継承関係集合に対応づけて記憶
する生存区間継承関係集合記憶手段を備え、割付済み−
被割付間連続判定手段は、割り付けるべき割付対象につ
いての生存区間継承関係集合を参照し、当該生存区間継
承関係集合に、割付済みの割付対象が存在するか否かを
判定する第1の判定部と、存在しなければ、生存区間継
承関係集合内の他の割付対象を取り出し、取り出した割
付対象についての生存区間継承関係集合を参照し、当該
生存区間継承関係集合に、割付済みの割付対象が存在す
るかを判定する第2の判定部と、存在することが判定さ
れるまで、第2の判定部の起動を繰り返させる制御部と
を備え、得失値算出手段は、検出結果とされた割付対象
の生存区間長を集計する集計部と、割り付けるべき割付
対象の生存区間長と集計部によって集計された生存区間
長との和の逆数を算出し、算出結果を生存区間の短さと
する逆数算出部とを備えることを特徴としており、ま
た、請求項23によれば、割り付けられるべき割付対象
についての生存区間継承関係集合が参照され、当該生存
区間継承関係集合に、割付済みの割付対象が存在するか
否かが第1の判定部によって判定される。存在しなけれ
ば、生存区間継承関係集合内の他の割付対象が取り出さ
れ、取り出された割付対象についての生存区間継承関係
集合が参照され、当該生存区間継承関係集合に、第2の
判定部によって、割付済みの割付対象が存在するかが判
定される。存在することが判定されるまで、制御部によ
って、第2の判定部の起動が繰り返させられる。また、
検出された割付対象の生存区間長が集計部によって集計
され、割り付けられるべき割付対象の生存区間長と集計
部によって集計された生存区間長との和の逆数が算出さ
れ、算出結果が、逆数算出部によって生存区間の短さと
されるという作用を有する。
【0052】また、請求項24において、資源割付装置
は更に、プログラム中の各割付対象を、当該割付対象の
開始点で生存区間が終了する全ての割付対象と、当該割
付対象の終了点で生存区間が始まる全ての割付対象とか
らなる集合である生存区間継承関係集合に対応づけて記
憶する生存区間継承関係集合記憶手段を備え、未割り付
け−被割付間連続判定手段は、割り付けるべき割付対象
についての生存区間継承関係集合を参照し、当該生存区
間継承関係集合に、割付済み側重なり割付対象検出手段
によって検出された未割り付けの割付対象が存在するか
否かを判定する第1の判定部と、存在しなければ、生存
区間継承関係集合内の他の割付対象を取り出し、取り出
した割付対象についての生存区間継承関係集合を参照
し、当該生存区間継承関係集合に、割付済み側重なり割
付対象検出手段によって検出された未割り付けの割付対
象が存在するかを判定する第2の判定部と、存在するこ
とが判定されるまで、第2の判定部の起動を繰り返させ
る制御部とを備え、得失値算出手段は、検出結果とされ
た割付対象の生存区間長を集計する集計部と、割り付け
るべき割付対象の生存区間長と集計部によって集計され
た生存区間長との和の逆数を算出し、算出結果を生存区
間の短さとする逆数算出部とを備えることを特徴として
おり、また、請求項24によれば、割り付けられるべき
割付対象についての生存区間継承関係集合が参照され、
当該生存区間継承関係集合に、割付済み側重なり割付対
象検出手段によって検出された未割り付けの割付対象が
存在するか否かが第1の判定部によって判定される。存
在しなければ、生存区間継承関係集合内の他の割付対象
が取り出され、取り出された割付対象についての生存区
間継承関係集合が参照され、当該生存区間継承関係集合
に、割付済み側重なり割付対象検出手段によって検出さ
れた未割り付けの割付対象が存在するかが第2の判定部
によって判定される。存在することが判定されるまで、
制御部によって第2の判定部の起動が繰り返させられ
る。また、検出結果とされた割付対象の生存区間長が集
計部によって、集計される。割り付けられるべき割付対
象の生存区間長と集計部によって集計された生存区間長
との和の逆数が逆数算出部によって算出され、算出結果
が生存区間の短さとされるという作用を有する。
【0053】また、請求項25において、資源割付装置
は更に、プログラム中の各割付対象を、当該割付対象の
開始点で生存区間が終了する全ての割付対象と、当該割
付対象の終了点で生存区間が始まる全ての割付対象とか
らなる集合である生存区間継承関係集合に対応づけて記
憶する生存区間継承関係集合記憶手段を備え、未割り付
け−割付済み間連続判定手段は、被割付側重なり割付対
象検出手段によって検出された未割り付けの割付対象に
ついての生存区間継承関係集合を参照し、当該生存区間
継承関係集合に、割付済みの割付対象が存在するか否か
を判定する第1の判定部と、存在しなければ、生存区間
継承関係集合内の他の割付対象を取り出し、取り出した
割付対象についての生存区間継承関係集合を参照し、当
該生存区間継承関係集合に、割付済みの割付対象が存在
するかを判定する第2の判定部と、存在することが判定
されるまで、第2の判定部の起動を繰り返させる制御部
とを備え、得失値算出手段は、検出結果とされた割付対
象の生存区間長を集計する集計部と、割り付けるべき割
付対象の生存区間長と集計部によって集計された生存区
間長との和の逆数を算出し、算出結果を生存区間の短さ
とする逆数算出部とを備えることを特徴としており、ま
た、請求項25によれば、被割付側重なり割付対象検出
手段によって検出された未割り付けの割付対象について
の生存区間継承関係集合が第1の判定部によって参照さ
れ、当該生存区間継承関係集合に、割付済みの割付対象
が存在するか否かが判定される。存在しなければ、生存
区間継承関係集合内の他の割付対象が取り出され、取り
出された割付対象についての生存区間継承関係集合が第
2の判定部によって参照され、当該生存区間継承関係集
合に、割付済みの割付対象が存在するかが判定される。
存在することが判定されるまで、第2の判定部の起動が
制御部によって繰り返させられる。検出結果とされた割
付対象の生存区間長が集計部によって集計される。割り
付けられるべき割付対象の生存区間長と集計部によって
集計された生存区間長との和の逆数が逆数算出部によっ
て算出され、算出結果が生存区間の短さとされるという
作用を有する。
【0054】また、請求項26において、資源割付装置
は更に、プログラム中の各割付対象を、当該割付対象の
開始点で生存区間が終了する全ての割付対象と、当該割
付対象の終了点で生存区間が始まる全ての割付対象とか
らなる集合である生存区間継承関係集合に対応づけて記
憶する生存区間継承関係集合記憶手段を備え、未割り付
け−未割り付け間連続判定手段は、被割付側重なり割付
対象検出手段によって検出された未割り付けの割付対象
についての生存区間継承関係集合を参照し、当該生存区
間継承関係集合に、割付済み側重なり割付対象検出手段
によって検出された未割り付けの割付対象が存在するか
否かを判定する第1の判定部と、存在しなければ、生存
区間継承関係集合内の他の割付対象を取り出し、取り出
した割付対象についての生存区間継承関係集合を参照
し、当該生存区間継承関係集合に、割付済み側重なり割
付対象検出手段によって検出された未割り付けの割付対
象が存在するかを判定する第2の判定部と、存在するこ
とが判定されるまで、第2の判定部の起動を繰り返させ
る制御部とを備え、得失値算出手段は、検出結果とされ
た割付対象の生存区間長を集計する集計部と、割り付け
るべき割付対象の生存区間長と集計部によって集計され
た生存区間長との和の逆数を算出し、算出結果を生存区
間の短さとする逆数算出部とを備えることを特徴として
おり、また、請求項26によれば、被割付側重なり割付
対象検出手段によって検出された未割り付けの割付対象
についての生存区間継承関係集合が第1の判定部によっ
て参照され、当該生存区間継承関係集合に、割付済み側
重なり割付対象検出手段によって検出された未割り付け
の割付対象が存在するか否かが判定される。存在しなけ
れば、第2の判定部によって、生存区間継承関係集合内
の他の割付対象が取り出され、取り出された割付対象に
ついての生存区間継承関係集合が参照され、当該生存区
間継承関係集合に、割付済み側重なり割付対象検出手段
によって検出された未割り付けの割付対象が存在するか
が判定される。存在することが判定されるまで、制御部
によって第2の判定部の起動が繰り返させられる。検出
結果とされた割付対象の生存区間長が集計部によって集
計される。割り付けられるべき割付対象の生存区間長と
集計部によって集計された生存区間長との和の逆数が逆
数算出部によって算出され、算出結果が生存区間の短さ
とされるという作用を有する。
【0055】また、請求項27において、割付対象の生
存区間は、当該生存区間によって占められるプログラム
中の開始点から終了点までの命令位置情報で表され、集
計部は、命令位置情報の数を集計し、集計値を生存区間
長とすることを特徴としており、また、請求項27によ
れば、集計部によって命令位置情報の数が集計され、集
計値が生存区間長とされる。
【0056】また、請求項28において、割付対象の生
存区間の開始点及び終了点は、プログラム中の命令位置
情報で表され、資源割付装置は更に、プログラム中の割
付対象と、各割付対象の生存区間の開始点に相当する命
令位置情報と、各割付対象の生存区間の終了点に相当す
る命令位置情報とを対応づけて記憶する開始終了点記憶
手段と、開始終了点記憶手段を参照して、プログラム中
の各割付対象の生存区間の開始点に相当する命令位置情
報が終了点に相当するものを全て探し出し、探し出した
割付対象と、プログラム中の割付対象とを同一の生存区
間継承関係集合にする第1の集合化手段と、開始終了点
記憶手段を参照して、プログラム中の各割付対象の生存
区間の終了点に相当する命令位置情報が、開始点に相当
するものを全て探し出し、探し出した割付対象と、プロ
グラム中の割付対象とを同一の生存区間継承関係集合に
する第2の集合化手段と、プログラム中の割付対象と、
第1及び第2の集合化手段によって集合化された生存区
間継承集合とを対応づけて、生存区間継承関係集合記憶
部に書き込む書き込み手段とを備えることを特徴として
おり、請求項28によれば、第1の集合化手段によって
開始終了点記憶手段が参照され、プログラム中の各割付
対象の生存区間の開始点に相当される命令位置情報が終
了点に相当されるものが全て探し出され、探し出された
割付対象と、プログラム中の割付対象とが同一の生存区
間継承関係集合にされる。第2の集合化手段によって開
始終了点記憶手段が参照され、プログラム中の各割付対
象の生存区間の終了点に相当される命令位置情報が、開
始点に相当されるものが全て探し出され、探し出された
割付対象と、プログラム中の割付対象とが同一の生存区
間継承関係集合にされる。プログラム中の割付対象と、
第1及び第2の集合化手段によって集合化された生存区
間継承集合とが書き込み手段によって対応づけられて、
生存区間継承関係集合記憶部に書き込まれるという作用
を有する。
【0057】また、請求項29において、高級言語で書
かれたプログラムを機械語プログラムに翻訳するコンパ
イラに用いられ、プログラミング言語で記述されたプロ
グラムの中の変数と生存区間の組である割付対象にレジ
スタ、メモリ等のハードウェアである資源が有する資源
要素を割り付ける資源割付装置であって、プログラム中
の割付対象を、その優先度に対応づけて保持する割付対
象保持手段と、前記割付対象保持手段から優先度最大の
割付対象を取り出し、優先度が最大の割付対象に資源要
素の何れかを割り付ける第1の資源要素割付手段と、直
前に割り付けられた割付対象の優先度に対して、次順位
の優先度を持つ割付対象を、前記割付対象保持手段から
取り出す割付対象取出手段と、前記割付対象取出手段が
取り出した割付対象について、生存区間が重なっている
割付対象を検出する一次重なり割付対象検出手段と、前
記一次重なり割付対象検出手段が検出した割付対象に、
既に割り付けられている資源要素を検出する資源要素検
出手段と、検出された資源要素とは異なる資源要素が既
に割り付けられている割付対象を全て検出する割付対象
−資源要素検出手段と、割付対象−資源要素検出手段に
よって検出された割付済みの割付対象のうち、割付対象
取出手段によって取り出された割付対象と生存区間が連
続している割付対象を全て判定する利得側連続割付済み
割付対象判定手段と、既に割付対象に割り付けられた資
源要素がこれから割り付けようとする割付対象にどれだ
け適切であるかを示す値である得失値を、連続すると判
定された割付済みの割付対象から割付対象取出手段によ
って取り出された割付対象までの生存区間長の短さに基
づき、生存区間が連続すると判定された割付対象に割り
付けられている全ての資源要素について算出する第1の
得失値算出手段と、算出された得失値を、割付対象−資
源要素検出手段によって判定された各資源要素毎に累計
する累計手段と、累計手段によって累計された累計値が
最大の資源要素を、割付対象取り出し手段が取り出した
割付対象に割り付ける第2の資源要素割付手段と、全て
の割付対象が割り付けられるまで、前記割付対象取出手
段の起動を繰り返えす制御手段とを備えることを特徴と
しており、また、請求項29によれば、前記割付対象保
持手段から優先度最大の割付対象が第1の資源要素割付
手段によって取り出され、優先度が最大の割付対象に資
源要素の何れかが割り付けられる。直前に割り付けられ
た割付対象の優先度に対して、次順位の優先度が持つ割
付対象が、割付対象取出手段によって前記割付対象保持
手段から取り出される。前記割付対象取出手段が取り出
された割付対象について、一次重なり割付対象検出手段
によって生存区間が重なっている割付対象が検出され
る。前記一次重なり割付対象検出手段が検出した割付対
象に、資源要素検出手段によって既に割り付けられてい
る資源要素が検出される。検出された資源要素とは異な
る資源要素が既に割り付けられている割付対象が割付対
象−資源要素検出手段によって全て検出される。割付対
象−資源要素検出手段によって検出された割付済みの割
付対象のうち、割付対象取出手段によって取り出された
割付対象と生存区間が連続している割付対象が利得側連
続割付済み割付対象判定手段によって全て判定される。
既に割付対象に割り付けられた資源要素がこれから割り
付けようとされる割付対象にどれだけ適切であるかが示
す値である得失値が、第1の得失値算出手段によって、
連続すると、判定された割付済みの割付対象から割付対
象取出手段によって取り出された割付対象までの生存区
間長の短さに基づき、生存区間が連続されると、判定さ
れた割付対象に割り付けられている全ての資源要素につ
いて算出される。算出された得失値が、累計手段によっ
て、割付対象−資源要素検出手段によって判定された各
資源要素毎に累計される。累計手段によって累計された
累計値が最大の資源要素が、第2の資源要素割付手段に
よって割付対象取り出し手段が取り出された割付対象に
割り付けられる。全ての割付対象が割り付けられるま
で、制御手段によって前記割付対象取出手段の起動が繰
り返えさせられるという作用を有する。
【0058】また、請求項30において、資源割付装置
は更に、割付対象−資源要素検出手段によって検出され
た割付済みの割付対象のうち、割付対象取出手段によっ
て取り出された割付対象と生存区間が連続せず、かつ、
生存区間が重なっていない割付対象を判定する第1の非
重なり非連続割付済み割付対象判定手段と、第1の非重
なり非連続割付済み割付対象判定手段によって判定され
た割付済みの割付対象の生存区間と生存区間が重なる未
割り付けの割付対象であって、割付対象取出手段によっ
て取り出された割付対象と生存区間が連続している割付
対象を検出する利得側連続未割り付け割付対象検出手段
と、利得側連続未割り付け割付対象検出手段によって検
出された未割り付けの割付対象から、割付対象取出手段
によって取り出された割付対象までの生存区間長の短さ
に基づき、第1の非重なり非連続割付済み割付対象判定
手段によって判定された割付済みの割付対象に割り付け
られた資源要素の得失値を算出する第2の得失値算出手
段と、前記累計手段によって累計された当該資源要素に
ついての得失値から、第2の得失値算出手段によって算
出された得失値を減ずる第1の減算手段とを備え、第2
の資源要素割付手段は、第1の減算手段によって得失値
が減ぜられた得失値が最大の資源要素を、割付対象取出
手段が取り出した割付対象に割り付けることを特徴とし
ており、また、請求項30によれば、割付対象−資源要
素検出手段によって検出された割付済みの割付対象のう
ち、割付対象取出手段によって取り出された割付対象と
生存区間が連続せず、かつ、生存区間が重なっていない
割付対象が第1の非重なり非連続割付済み割付対象判定
手段によって判定される。第1の非重なり非連続割付済
み割付対象判定手段によって判定された割付済みの割付
対象の生存区間と生存区間が重なる未割り付けの割付対
象であって、割付対象取出手段によって取り出された割
付対象と生存区間が連続している割付対象が利得側連続
未割り付け割付対象検出手段によって検出される。利得
側連続未割り付け割付対象検出手段によって検出された
未割り付けの割付対象から、割付対象取出手段によって
取り出された割付対象までの生存区間長の短さに基づ
き、第1の非重なり非連続割付済み割付対象判定手段に
よって判定された割付済みの割付対象に割り付けられた
資源要素の得失値が第2の得失値算出手段によって算出
される。前記累計手段によって累計された当該資源要素
についての得失値から、第2の得失値算出手段によって
算出された得失値が第1の減算手段によって減ぜられ
る。第2の資源要素割付手段によって、第1の減算手段
によって得失値が減ぜられた得失値が最大の資源要素
が、割付対象取出手段が取り出された割付対象に割り付
けられるという作用を有する。
【0059】また、請求項31において、資源割付装置
は更に、割付対象−資源要素検出手段によって検出され
た割付済みの割付対象のうち、一次重なり割付対象検出
手段によって検出された割付対象と、生存区間が連続し
ているものを判定する重なり側連続割付済み割付対象判
定手段と、重なり側連続割付済み割付対象判定手段によ
って判定された割付済みの割付対象から一次重なり割付
対象検出手段によって検出された割付対象までの生存区
間長の短さに基づき、重なり側連続割付済み割付対象判
定手段によって判定された割付済みの割付対象に割り付
けられた資源要素の得失値を算出する第3の得失値算出
手段と、前記累計手段によって累計された当該資源要素
についての累計値から、第3の得失値算出手段によって
算出された得失値を減ずる第2の減算手段と、第2の資
源要素割付手段は、第2の減算手段によって得失値が減
ぜられた後の累計値が最大の資源要素を、割付対象取出
手段が取り出した割付対象に割り付けることを特徴とし
ており、また、請求項31によれば、割付対象−資源要
素検出手段によって検出された割付済みの割付対象のう
ち、一次重なり割付対象検出手段によって検出された割
付対象と、生存区間が連続しているものが重なり側連続
割付済み割付対象判定手段によって判定される。重なり
側連続割付済み割付対象判定手段によって判定された割
付済みの割付対象から一次重なり割付対象検出手段によ
って検出された割付対象までの生存区間長の短さに基づ
き、重なり側連続割付済み割付対象判定手段によって判
定された割付済みの割付対象に割り付けられた資源要素
の得失値が第3の得失値算出手段によって算出される。
前記累計手段によって累計された当該資源要素について
の累計値から、第3の得失値算出手段によって算出され
た得失値が第2の減算手段によって減ぜられる。第2の
資源要素割付手段によって、第2の減算手段によって得
失値が減ぜられた後の累計値が最大の資源要素が、割付
対象取出手段が取り出された割付対象に割り付けられる
という作用を有する。
【0060】また、請求項32において、資源割付装置
は更に、割付対象−資源要素検出手段によって検出され
た割付済みの割付対象のうち、一次重なり割付対象検出
手段によって検出された割付対象と生存区間が連続せ
ず、かつ、生存区間が重なっていない割付対象を判定す
る第2の非重なり非連続割付済み割付対象判定手段と、
第2の非重なり非連続割付済み割付対象判定手段によっ
て判定された割付済みの割付対象の生存区間と生存区間
が重なる未割り付けの割付対象であって、一次重なり割
付対象検出手段によって検出された割付対象と生存区間
が連続しているものを判定する重なり側連続未割り付け
割付対象判定手段と、重なり側連続未割り付け割付対象
判定手段によって判定された割付対象から、一次重なり
割付対象検出手段によって検出された割付対象までの生
存区間長の短さに基づいて、第2の非重なり非連続割付
済み割付対象判定手段によって判定された割付済みの割
付対象に割り付けられている資源要素の得失値を算出す
る第4の得失値算出手段と、前記累計手段によって累計
された当該資源要素についての累計値に、第4の得失値
算出手段によって算出された得失値を加算する加算手段
と、第2の資源要素割付手段は、加算手段によって得失
値が加算された累計値が最大の資源要素を、割付対象取
出手段が取り出した割付対象に割り付けることを特徴と
しており、また、請求項32によれば、割付対象−資源
要素検出手段によって検出された割付済みの割付対象の
うち、一次重なり割付対象検出手段によって検出された
割付対象と生存区間が連続せず、かつ、生存区間が重な
っていない割付対象が第2の非重なり非連続割付済み割
付対象判定手段によって判定される。第2の非重なり非
連続割付済み割付対象判定手段によって判定された割付
済みの割付対象の生存区間と生存区間が重なる未割り付
けの割付対象であって、一次重なり割付対象検出手段に
よって検出された割付対象と生存区間が連続しているも
のが重なり側連続未割り付け割付対象判定手段によって
判定される。重なり側連続未割り付け割付対象判定手段
によって判定された割付対象から、一次重なり割付対象
検出手段によって検出された割付対象までの生存区間長
の短さに基づいて、第2の非重なり非連続割付済み割付
対象判定手段によって判定された割付済みの割付対象に
割り付けられている資源要素の得失値が第4の得失値算
出手段によって算出される。前記累計手段によって累計
された当該資源要素についての累計値に、加算手段によ
って第4の得失値算出手段によって算出された得失値が
加算される。加算手段によって得失値が加算された累計
値が最大の資源要素が、第2の資源要素割付手段によっ
て割付対象取出手段が取り出された割付対象に割り付け
られるという作用を有する。
【0061】<用語の説明>本発明の実施形態の説明の
前に以下で使用する用語について説明しておく。 ・ループレベル ループレベルとはループのネストの深さのことであり、
中間命令のループレベルとはその中間命令が存在するル
ープのレベルを意味する。例えば、図26において中間
命令i1 のループレベルは1である。中間命令i8は中間
命令i31のジャンプ先になっているのでループレベルは2
である。 ・多資源 メモリなどのように他に比べて豊富な資源要素を持ち、
どの資源要素を割付対象に割り付けても特に生成コード
の品質に影響を及ぼさない資源を示す。 ・割付資源 割付対象に割付け可能な資源要素または多資源を元とす
る集合である。通常は1つの割付対象に1つの割付資源
を割付けるが、ここでは資源は前述のように同じ機能を
果たす資源要素の集合であるから割付対象に多資源Rを
割付けるとは、Rに属する資源要素のどれか1つを割付
対象に割り付けることとする。 ・資源要素(広義) 割付資源の要素を示す。以下特に断りがない限り資源要
素は広義の意味とする。 ・資源継承関係 資源継承関係とは割付対象同士の割り付けられた資源要
素を継承し得る関係をいう。また資源要素の継承とは既
に割り付けられた資源要素と同一の資源要素を割り付け
ることをいい、このような同一資源要素への割り付けに
よってコード生成装置に転送命令の生成を省かせること
ができる。加えて割り付け済みの資源要素をまわりに広
げてゆくことができる。プログラム中ではこのような資
源継承関係は生存区間の連続によって表される。即ちプ
ログラム上のある中間命令s1が、割付対象yの生存区間
の終了点であり、かつ中間命令s1が、割付対象xの開始
点であれば、これらの割付対象xと割付対象yとは資源
要素継承関係にある。但し生存区間の終始点は一致して
いるが、同一の資源要素に割り付けても転送命令の生成
を省かせることが明確に不可能な場合は資源継承関係に
ないとする。
【0062】例えばプログラム上の中間命令s1: x =
y;において割付対象xの生存区間の開始点が中間命令s
1であり、割付対象yの生存区間の終了点が中間命令s1で
あるとき割付対象x,割付対象yは同じ資源要素に割付ら
れると、割付対象yから割付対象xへの転送は不要であ
る。よって割付対象xと割付対象yは資源継承関係にあ
る。
【0063】またターゲットマシンが2アドレス形式の
マイクロプロセッサであり、被演算子に演算の結果が格
納されるとき(ターゲットマシンの減算命令の被減数側
のオペランドに演算結果が格納されるとき)、プログラ
ム上の中間命令s2: z = x- w;において割付対象zの
生存区間の開始点が中間命令s2であり、割付対象xの生
存区間の終了点が中間命令s2である際に割付対象xと割
付対象zは資源継承関係にある。そのため割付対象xと割
付対象zを同じ資源要素に割り付けると不要な転送命令
は生成されない。しかしここで割付対象wも中間命令s2
が生存区間の終了点である場合、割付対象zと資源要素
に割り付けるとかえって転送命令が増えるので割付対象
zと割付対象wとは資源継承関係にない。
【0064】また一般に割付対象Aと割付対象A1、割付
対象A2、....、割付対象An-2と割付対象An-1、割付対象
An-1と割付対象Anが各々資源継承関係にあるとき割付対
象Aと割付対象Anは「間接的に資源継承関係にある」と
言うことにする。例えば、上記の中間命令s1、s2におい
て割付対象yと割付対象zとは割付対象xを介して間接的
に資源継承関係にある。 ・使用コスト値 使用コスト値とはこれから割り付けられようとする割付
対象xに各々の資源の資源要素を割り付ければ、割付対
象xが使用されている中間命令のコードサイズ、実行時
間がどれだけになるかを示す値である。中間命令と、使
用コスト値との関係を図12及び図13に示す使用コス
ト計算例の説明図を参照しながら説明を行う。
【0065】図12は各資源の資源要素を被演算子にす
ることで機械語命令のコードサイズ又は実行時間がどの
ように増減するかを示した図である。本図には「C(x,A
R,INDIRECT REFERENCE)=1」、「C(x,DR,INDIRECT REF
ERENCE)=2」、「C(x,Mem,INDIRECT REFERENCE)=3」
という数式が示されている。これらは「間接参照」とい
う命令を機械語命令で行うのにどの資源を用いるのがよ
いかを示すものである。
【0066】この「C(x,AR,INDIRECT REFERENCE)=1」
はアドレスレジスタ(AR)で間接参照という命令を行
うとメモリサイズ又は実行時間が「1」だけ増加するこ
とを示す。「C(x,DR,INDIRECT REFERENCE)=2」はデー
タレジスタ(DR)で間接参照という命令を行うと、メ
モリサイズ又は実行時間が「2」だけ増加することを示
す。
【0067】「C(x,Mem,INDIRECT REFERENCE)=3」は
メモリ(Mem)で間接参照という命令を行うとメモリ
サイズ又は実行時間が「3」だけ増加することを示す。
また図中の「C(x,Mem,ADDITION)=3」はメモリで加算
を行うと、メモリサイズ又は実行時間が「3」増加する
ことを示す。「C(x,Mem,SUBTRACTION)=3」はメモリで
減算を行うとメモリサイズ又は実行時間が「3」増加す
ることを示す。
【0068】図13において左半分に示しているのは中
間プログラム例である。この中間プログラム内の割付対
象の一部は○印で囲まれ、当該○印からは矢線が伸びて
いる。図中の割付対象「s」からは矢線a11が伸び、
a11の先は3つに別れている。この先にある「C(s,A
R,INDIRECT REFERENCE)」「C(s,DR,INDIRECT REFERENC
E)」「C(s,Mem,INDIRECT REFERENCE)」は割付対象sが
間接参照という命令で使用されていることを示してい
る。その下の「Cost(AR,s)=1」「Cost(DR,s)=2」
「Cost(Mem,s)=3」は割付対象sについての使用コス
ト値の集計を示している。即ち、割付対象sに資源AR
の資源要素を割り付ける場合、その使用コスト値が
「1」となり、割付対象sに資源DRの資源要素を割り
付ける場合、その使用コスト値が「2」となることを示
す。また割付対象sにMemを割り付ける場合、その使
用コスト値が「3」となることを示す。
【0069】またこのプログラム例には割付対象rが3
箇所存在し、これらの割付対象は○印で囲まれている。
更にこれらの割付対象からは矢線a13、a14、a1
5が伸びている。これらの矢線の先には「C(r,AR,INDIR
ECT REFERENCE)」、「C(r,DR,INDIRECT REFERENCE)」
「C(r,Mem,INDIRECT REFERENCE)」が3つずつ存在する
が、これらは基本ブロック中において割付対象rが3箇
所使用されているためその3箇所について評価を行うこ
とを示す。この3箇所についての使用コスト値の集計が
「Cost(AR,r)=3」「Cost(DR,r)=6」「Cost(Mem,
r)=9」である。
【0070】以上のような使用コスト値の集計値の算出
を矢線a11、a12、a13・・・のように行うと、
図13の下半分の表に示すように全ての割付対象につい
ての3通りの資源についての使用コスト値の集計が得ら
れる。この集計が各割付対象に対する適応、不適応のパ
ラメータであり、これが小さいほどその割付対象に資源
が適応していることを示している。但しこの使用コスト
の短所はコードサイズや実行時間を目安にしたものであ
るから、同機能のデータレジスタDO〜D2やアドレスレジ
スタA0〜A2は使用コストが何れも同値になり、おおまか
な目安にしかならないことである。 ・得失値 得失値とは、既に割付対象に割り付けられた資源要素が
これから割り付けようとする割付対象にどれだけ影響す
るかを示す値である。そのため、得失値は既に割り付け
られたそれぞれの資源要素に与えられる。この得失値を
資源要素毎に累計したものは利得値と称される。
【0071】割付済みの資源要素の得失値がどのような
値になるかを図14に示す説明図を参照しながら説明を
行う。図14は利得要因を処理対象とした場合の各資源
要素の得失値を表した説明図である。尚、図中の割付対
象xは優先度による優先順位が次順であり、割り付けの
順番がまわってきた割付対象である(以降の説明におい
て特に断らない場合は割付対象xをこの意味で用い
る。)。
【0072】図中に示されている縦線は割付対象の生存
区間を表し、そのうち、白抜きのものは未割り付けの割
付対象、黒で塗り潰されているものは割付済みの割付対
象を示す。当該割付対象の生存区間の始点及び終点を黒
点「・」で表す。図中の黒点の中には破線の横線で結ば
れているものが存在するが、これは生存区間の終点と始
点とが一致していることを示し、このように破線によっ
て終始点が結ばれている割付対象同士は資源継承関係に
あることが判る。生存区間を表す縦線にはそれぞれ、
「割付対象x1」、「割付対象x2」、「割付対象x1
1」のように当該生存区間を有する割付対象の名称を示
す文字列が付されている。
【0073】更に当該割付対象のうち、資源要素を割り
付けているものは当該文字列の真下に資源要素の名称を
示す文字列が示されている。この資源要素の名称を示す
文字列から矢線が伸び、その矢先には「+1/L1」、
「+1/(L1+L2)」、「+1/(L1+L3+L
4)」という数式が存在するが、これらの数式は各資源
要素の得失値を示している。
【0074】本図において文字列「資源要素D2」から
矢線が伸び、その矢先が、数式「+1/L1」に伸びて
いるが、これは割付対象x3に割り付けられた資源要素
D2の得失値が「+1/L1」になることを示す。また
文字列「資源要素D3」から矢線が伸び、その矢先が、
数式「+1/(L1+L2)」に伸びているが、これは
割付対象x1に割り付けられた資源要素D3の得失値が
「+1/(L1+L2)」になることを示す。得失値が
このような値になるのは割付対象x1の生存区間と、割
付対象xの生存区間との間に生存区間長L2の生存区間
が介在しており、この生存区間長が得失値に反映されて
いるからである。
【0075】更に文字列「資源要素D1」から矢線が伸
び、その矢先が、数式「+1/(L1+L3+L4)」
に伸びているが、これは割付対象x2に割り付けられた
資源要素D1の得失値が、+1/(L1+L3+L4)
になることを示す。得失値がこのような値になるのは割
付対象x2の生存区間と、割付対象xの生存区間との間
に生存区間長L3及び生存区間長L4の生存区間が介在
しており、この生存区間長が得失値に反映されているか
らである。
【0076】一方、本図において割付対象x11を表す
縦線は生存区間L3を有する割付対象と並行部分を有す
るので割付対象x11と生存区間L3を有する割付対象
x5と生存区間が重なることが判る。この縦線の左下に
「−1/(L1+L3)」という文字列が付されれてい
るが、これは割付対象x11に割り付けられている資源
要素D0の得失値が「−1/(L1+L3)」であるこ
とを示す。得失値がこのような値になるのは割付対象x
11の生存区間と、割付対象xの生存区間との間に生存
区間長L3の生存区間が介在しており、この生存区間長
が反映されるからである。
【0077】尚、本図において得失値「−1/(L1+
L3)」に負の符号が付され、「+1/(L1+L
2)」、「+1/(L1+L3+L4)」に正の符号が
付されている理由は以下の通りである。得失値「+1/
(L1+L2)」が与えられた資源要素D3は割付対象
xを割り付ける際、転送命令を削除できるような割付対
象(割付対象x1)に割り付けられ、得失値「+1/
(L1+L3+L4)」が与えられた資源要素D1は割
付対象xを割り付ける際、転送命令を削除できるような
割付対象(割付対象x2)に割り付けられているのに対
し得失値「−1/(L1+L3)」が与えられた資源要
素D0は割付対象xを割り付ける際転送命令を生じるよ
うな割付対象(割付対象x11)に割り付けられている
からである。
【0078】また得失値の分母は割付対象xを基点とし
た生存区間長の和であるので生存区間長L1を単に
「1」としても構わない。以上の説明から割付対象xに
近い割付対象に割り付けられた資源要素ほど得失値は大
きく割付対象xに遠い割付対象に割り付けられた資源要
素ほど得失値は小さくなることが判る。割り付けの順番
が回ってきた割付対象はより近い割り付け済み資源要素
に影響されるのである。先に述べたように使用コストで
はデータレジスタD0,D1,D2間アドレスレジスタA0,A1,A2
間等同機能の資源間では優劣の決着がつきにくい。これ
に対して得失値はデータレジスタD0,D1,D2のうち、どれ
が先に割り付けられているかに影響する。割付済みの場
合でもデータレジスタD0,D1,D2のうち、どれが割付対象
xに一番近いかで優劣が決着する。
【0079】また割り付け済みの割付対象からみれば、
自身の身近にある後順の割付対象に影響を与えることが
できる。つまり割付済みの割付対象は周辺の割付対象に
自身と同じ資源要素を分配することができる。本実施形
態でもネストレベルと使用頻度を表した割付優先度の順
に割付対象に資源要素を割り付けてゆくのだが、この優
先度と得失値との組み合わせによって、ネストレベルが
深い箇所に優先してレジスタを割り付け、その割り付け
済みのレジスタをネストレベルが浅くなる箇所に拡散し
てゆくようなスマートな割付結果が得ることができる。
同様に使用頻度が高い箇所に優先してレジスタを割り付
け、その割り付け済みのレジスタをネストレベルが低い
箇所に拡散してゆくようなスマートな割付結果を得るこ
とができる。更に引数レジスタ、戻り値レジスタ、破壊
レジスタ等予め割り付ける相手が決められた割付対象が
その資源を周りに拡げてゆくようなスマートな資源割り
付けを実現できる。
【0080】以上の説明は割付対象xと生存区間が連続
する割付済み割付対象について説明を行ったが、連続す
るものばかりを見ていればかえって損失が生じることが
ある。これは、割付対象xと重なる側の生存区間の延長
線上に既に幾つもの資源要素が割り付けられている場合
はこれらに割り付けることを何とか避けねばならない。
避け得ない場合はこれらのうち、最も損失が軽度のもの
を選択する必要がある。このような損失を定量的に見積
もるためにも得失値は用いられる。損失を見積もるため
に得失値を用いる場合を図15の説明図を参照しながら
説明を行う。図15において縦線は割付対象を表し、そ
のうち、白抜きのものは未割り付けの割付対象、黒で塗
り潰されているものは割付済みの割付対象を示す。当該
生存区間の始点及び終点を黒点「・」で表す。図中の黒
点の中には破線の横線で結ばれているものが存在する
が、これは生存区間の終点と始点とが一致していること
を示し、このように破線によって終始点が結ばれている
割付対象同士は資源継承関係にあることが判る。生存区
間を表す縦線にはそれぞれ、「割付対象x2」、「割付
対象x3」、「割付対象x4」のように当該生存区間を
有する割付対象の名称を示す文字列が付されている。
【0081】更に当該割付対象のうち、資源要素を割り
付けているものは当該文字列の真下に資源要素の名称を
示す文字列が示されている。この資源要素の名称を示す
文字列から伸びる矢線の先には「+Px/(L2+L
3)」、「−Px/(L2+L3)」という数式が示さ
れているが、これらは各資源要素の得失値を示す。本図
において文字列「資源要素D1」から矢線が伸びその矢
先が文字列「−Px/(L2+L3)」に至っている
が、これは割付対象x4に割り付けられた資源要素D1
のマイナスの符号を持った得失値、つまり損失を示す得
失値が「−Px/(L2+L3)」であることを示す。
得失値がこのような値になるのは割付対象x4の生存区
間と、割付対象xと生存区間が重なる割付対象x2の生
存区間との間に生存区間長L2及びL3の生存区間が介
在しており、この生存区間長が、得失値に反映されてい
るからである。
【0082】一方、本図において割付対象x31を表す
縦線は生存区間長L3を有する割付対象x3と並行部分
を有するので割付対象x31と割付対象x3とは生存区
間が重複し合うことが判る。この縦線の左下に「+Px
/(L2+L3)」という文字列が付されれているが、
これは割付対象x31に割り付けられている資源要素D
2の得失値が「+Px/(L2+L3)」であることを
示す。得失値がこのような値になるのは割付対象x31
の生存区間と、割付対象xと生存区間が重なる割付対象
x2の生存区間との間に生存区間長L2及び生存区間長
L3の生存区間が介在しており、この生存区間長が反映
されるからである。
【0083】尚、本図において得失値「−Px/(L2
+L3)」に負の符号が付され、「+Px/(L2+L
3)」に正の符号が付されている理由は以下の通りであ
る。得失値「+Px/(L2+L3)」が与えられた資
源要素D2は、割付対象xを割り付ける際、転送命令を
削除できるような割付対象(割付対象x31)に割り付
けられ、得失値「−Px/(L2+L3)」が与えられ
た資源要素D1は、割付対象xを割り付ける際、転送命
令を生じるような割付対象(割付対象x4)に割り付け
られているからである。また得失値の分母は割付対象x
2を基点とした生存区間長の和であるので生存区間長L
2を単に「1」としても構わない。 ・追跡対象 追跡対象とは資源継承関係を辿って行き、各資源要素の
得失値を算出するための情報である。そのため追跡対象
はプログラムにおいて現在資源継承関係を辿っている箇
所を示す情報(これは割付対象名で表される)とその箇
所の割付対象と割付対象xとの間に介在する生存区間長
の総和と、その現在位置において割付可能な資源要素の
集合とを含んでいる。これらの情報を含むため、本実施
形態では追跡対象を構造体変数として扱い、上記の現在
位置情報、生存区間長の総和、割付可能な資源要素集合
をその構造体のメンバーとして扱っている(本実施形態
では追跡対象をA、現在の追跡位置の割付対象をA.ASO、
生存区間長の総和をA.LNS、資源要素集合をA.RESと表し
ている。)。 ・後順コスト値 後順コスト値とは優先度が割付対象xより低く割付対象
xより後に割り付けられる割付対象を使用している中間
命令のコードサイズ、実行時間が割付対象xに各々の資
源の資源要素を割り付けることでどう増減するかを示す
値である。
【0084】優先順位が後順である未割り付けの割付対
象の後順コスト値がどのような値になるかを図16の説
明図を参照しながら説明を行う。図16は未割り付けの
割付対象の後順コスト値を表した説明図である。図中に
示されている白抜きの縦線は割付対象の生存区間を表
し、当該割付対象の生存区間の始点及び終点を白丸で表
す。図中の白丸の中には破線の横線で結ばれているもの
が存在するが、これは生存区間の終点と始点とが一致し
ていることを示し、このように破線によって終始点が結
ばれている割付対象同士は資源継承関係にあることが判
る。生存区間を表す縦線にはそれぞれ「割付対象x
1」、「割付対象x2」、「割付対象x3」のように割
付対象の名称を示す文字列が付されている。また割付対
象x1の左隣には「「x1=u+v」「y=x1+200」「r=x1/4
0」「t=30+x1」「w=x1+3」」といった中間命令群が存在
する。これらは中間プログラムにおいて割付対象x1が
使用されている中間命令群を表している。
【0085】また割付対象x2の左隣には「「x2=u+v」
「y=x2+200」「r=x2/40」「t=30+x2」「w=x2+3」」とい
った中間命令群が存在するが、これらは中間プログラム
において割付対象x2が使用されている中間命令群を表
している。更に割付対象x3の左隣には「「x3=u+v」
「y=x3+200」「r=x3/40」「t=30+x3」「w=x3+32」」と
いった中間命令群が存在するが、これらは中間プログラ
ムにおいて割付対象x3が使用されている中間命令群を
表している。
【0086】本図において「割付対象x1」という文字
列の真下には『DRの後順コスト値』、『ARの後順コ
スト値』といった文字列が存在し、更にその下には『Co
st(DR)/L』『Cost(AR)/L』という数式が存在するが、
これらの数式は資源であるデータレジスタ、アドレスレ
ジスタの資源要素を割付対象x1に割り付けた場合の割
付対象x1の後順コスト値を示している。また割付対象
x1の左隣に位置する中間命令群の各中間命令『「x1=u
+v」「y=x1+200」「r=x1/40」「t=30+x1」「w=x1+3」』
から伸びた矢印がこの数式における『Cost(DR)』『Cost
(AR)』に至っているが、これは後順コスト値の式におけ
る使用コストの集計値『Cost(DR)』『Cost(AR)』が、デ
ータレジスタDR、アドレスレジスタARの資源要素を
割り付けた場合の割付対象x1の使用コスト値の集計値
であることを示している。
【0087】本図において「割付対象x2」といった文
字列の真下には『DRの後順コスト値』、『ARの後順
コスト値』といった文字列が存在し、更にその下には
『Cost(DR)/(L1+L)』『Cost(AR)/(L1+L)』という数式
が存在するが、これらの数式は割付対象x2の後順コス
ト値を示している。また割付対象x2の左隣に位置する
中間命令群の各中間命令『「x2=u+v」「y=x2+200」「r=
x2/40」「t=30+x2」「w=x2+3」』から伸びた矢印がこの
後順コスト値の式における『Cost(DR)』『Cost(AR)』に
至っているが、これは後順コスト値の式における使用コ
ストの集計値『Cost(DR)』『Cost(AR)』が、データレジ
スタDR、アドレスレジスタARの資源要素を割り付け
た場合の中間命令群での割付対象x2の使用コスト値の
集計値であることを示している。この使用コストの集計
値『Cost(DR)』『Cost(AR)』が、数式において生存区間
長(L1+L)で割られているが、これは割付対象x2
と割付対象xとの間に割付対象x1が介在しており、こ
れの生存区間長(L1+L)が後順コスト値に反映され
ていることを示す。
【0088】「割付対象x3」の文字列の真下には『D
Rの後順コスト値』、『ARの後順コスト値』といった
文字列が存在し、更にその下には『Cost(DR)/(L1+L2+
L)』『Cost(AR)/(L1+L2+L)』という数式が存在する
が、これらの数式は割付対象x3の後順コスト値を示し
ている。また割付対象x3の左隣に位置する中間命令群
の各中間命令『「x1=u+v」「y=x3+200」「r=x3/40」「t
=30+x3」「w=x3+32」』から伸びた矢印はこの後順コス
ト値の式における使用コストの集計値『Cost(DR)』『Co
st(AR)』に至っているが、これは後順コスト値の式にお
ける『Cost(DR)』『Cost(AR)』が、データレジスタD
R、アドレスレジスタARの資源要素を割り付けた場合
の中間命令群での割付対象x3の使用コスト値の集計値
であることを示している。この使用コストの集計値『Co
st(DR)』『Cost(AR)』が数式において生存区間長(L1
+L2+L)で割られているが、これは割付対象x3と
割付対象xとの間に割付対象x1、x2が介在してお
り、これの生存区間長の総和(L1+L2+L)が後順
コスト値に反映されていることを示す。尚、後順コスト
値の分母は割付対象xを基点とした生存区間長の和であ
るので生存区間長Lを単に「1」としても構わない。
【0089】<資源割付装置13の構成>図1は資源割
付装置13の構成図である。資源割付装置13は割付対
象保持部21と、割付対象生成部22と、生存区間重複
割付対象検出部23と、資源継承割付対象検出部24
と、割付優先度計算部25と、割付資源要素決定部26
と、資源割付制御部27とで構成される。
【0090】割付対象保持部21は割付対象生成部22
で生成された割付対象と、割付対象の情報とからなる割
付情報テーブルを保持し、また割付状況テーブルを保持
する。割付情報テーブルの一例を図17及び図18に示
す。図17は以下で行う割り付け処理によって資源要素
が割付けられる割付対象の割付情報を表している。尚こ
れらの図の内容は図26に示す中間プログラム例内に存
在する割付対象及び生存区間と対応している。
【0091】図17に示すように割付情報テーブルは割
付対象n10と当該割付対象の生存区間がプログラム内
のどれだけの範囲を占めているかを中間命令の集合で表
した割付対象の生存区間n11と、当該集合の要素数で
表された当該割付対象の生存区間長n12と、当該割付
対象が使用される中間命令を示す使用中間命令集合n1
3と、当該生存区間の開始点となる中間命令の集合であ
る開始点集合n14と、当該生存区間の終了点となる中
間命令の集合である終了点集合n15と、当該割付対象
の生存区間と重複する生存区間を有する割付対象の集合
である重複割付対象集合n16と、当該割付対象と資源
継承関係にある割付対象の集合を表した資源継承割付対
象集合n17と、当該割付対象の割付優先度n18とか
らなる。
【0092】本図において割付対象「t35」の右隣の「i
2〜i6」は割付対象t35の生存区間が、図26における、
i2からi6までの中間命令によって表されることを示す。
またその右隣の「5」は割付対象「t35」の生存区間長
を示す。その右隣の「i1、i5、i6」は割付対象「t35」
を使用している中間命令を示す。その右隣の「i1」は割
付対象「t35」の開始点集合が、「i1」であることを示
す。その右隣の「i6」は割付対象「t35」の終了点集合
が、「i6」であることを示す。その右隣の「t34、t1、a1、
p1」は割付対象「t35」の重複割付対象集合が、「t34、t
1、a1、p1」であることを示す。その右隣の「Pr1」は割付
対象「t35」と資源継承関係にある割付対象が「Pr1」で
あることを示す。その右隣の「0.6」は割付対象「t35」
の優先度を示す。尚、開始点である「i1」が生存区間n1
1に含まれていないのは、生存区間の終始が一致する割
付対象間の生存区間が重ならないということを、生存区
間の集合積により単純に判定可能とするためである。よ
って全ての割付対象の生存区間には、開始点を含めない
ものとする。
【0093】また図18は実引数(Ar)、関数の戻り値(F
r)、破壊レジスタ(Br)等、既に資源要素が割付けられて
いる割付対象の割付情報の一例を表している。図18に
示す割付情報テーブルは割付対象n20と、当該割付対
象の生存区間が中間プログラム内のどれだけの範囲を占
めているかを中間命令の集合で表した割付対象の生存区
間n21と、当該集合の要素数で表された当該割付対象
の生存区間長n22と、当該割付対象が使用される中間
命令を示す使用中間命令集合n23と、当該生存区間の
開始点となる中間命令の集合である開始点集合n24
と、当該生存区間の終了点となる中間命令の集合である
終了点集合n25と、当該割付対象の生存区間と重複す
る生存区間を有する割付対象の集合である重複割付対象
集合n26と、当該割付対象と資源継承関係にある割付
対象を表した資源継承関係割付対象集合n27と、当該
割付対象に割り付けられている割付資源要素n28とか
らなる。
【0094】更に割付け状況テーブルの一例を図19
(a)に示す。割付け状況テーブルは割付対象の一覧
と、各割付対象に割り付けられた資源要素を記入する記
入欄とからなり割り付けがどのように進行しているかが
反映されている。尚本図の内容は図26に示す中間プロ
グラム例内に存在する割付対象及び生存区間と対応して
いる。
【0095】本図の記入欄のうち、右端に「(a)」と付
されたものは優先度が最大の割付対象である「t262」が
割り付けられた時点での割り付け状況を示している。ま
た右端に「(b)」と付されたものは優先度が次に大きい
割付対象である「t263」が割り付けられた時点での割り
付け状況を示している。更に右端に「(c)」と付された
ものは優先度が次に大きい割付対象である「t264」が割
り付けられた時点での割り付け状況を示している。
【0096】割付対象生成部22はデータフロー解析の
結果(以下データフロー情報と呼ぶ)や制御フロー解析
の結果(以下制御フロー情報と呼ぶ)をもとに割付対象
を生成する。またこのとき生存区間や使用中間命令、生
存区間の開始点、終了点も検出される。更に図18のよ
うに割付処理の前に割り付けることが必要な割付対象は
ここで資源要素を割り付ける。生成された割付対象は割
付対象保持部21に格納される。
【0097】生存区間重複割付対象検出部23は割付対
象同士の生存区間の重なりを調べる。つまり任意の割付
対象xと生存区間が重なる割付対象の集合である割付対
象集合Ov(x)を求める。Ov(x)の内容は割付対
象保持部21に保持される。資源継承割付対象検出部2
4は割付対象保持部21に保持されている割付対象に関
して資源継承関係にある全ての割付対象を検出する。即
ち任意の割付対象xと資源継承関係にある割付対象の集
合である割付対象集合Rs(x)を求める。Rs(x)
の内容は割付対象保持部21に保持される。
【0098】Rs(x)を得るための集合化は以下のよ
うにして行われる。割付対象保持部21は各割付対象
と、各割付対象の生存区間の開始点に相当する中間命令
と、各割付対象の生存区間の終了点に相当する中間命令
とを対応づけて保持しているので、資源継承割付対象検
出部24は保持している割付対象のうち、割付対象xの
生存区間の開始点に相当する中間命令が、終了点に相当
するものを全て探し出す。そして探し出した割付対象を
割付対象xの資源継承割付対象集合に格納する。
【0099】また割付対象xの生存区間の終了点に相当
する中間命令が、開始点に相当する割付対象を全て探し
出す。そして探し出した割付対象と、割付対象xとを同
一の集合にする。以上の処理を繰り返し、各割付対象に
ついてのRs(x)を生成する。但し明らかに探し出し
た割付対象と割付対象xとに同じ資源要素を割り付けて
も、転送命令を省けないときは割付対象xの資源継承割
付対象集合に格納しない。
【0100】割付優先度計算部25は割付対象保持部2
1に保持されている割付対象xについての割付優先度を
計算する。割付優先度とは資源要素への割り付けをどの
割付対象から行なうかを示す優先度である。ここでは以
下の計算式を使用して求める。 割付優先度 = (xの使用中間命令が存在するループ
レベルの総和)/xの生存区間の長さ 割付資源要素決定部26は割付情報テーブルの記述内容
に基づいて割付対象に資源要素を割付ける。
【0101】資源割付制御部27は割付け処理全体を制
御する。図5は資源割付制御部27のフローチャートで
ある。ステップa1では資源割付制御部27は割付対象
生成部22を起動する。ステップa2では資源割付制御
部27は生存区間重複割付対象検出部23を起動する。
【0102】ステップa3では資源割付制御部27は資
源継承割付対象検出部24を起動する。ステップa4で
は資源割付制御部27は割付優先度計算部25を起動す
る。ステップa5では資源割付制御部27は割付資源要
素決定部26を起動する。 <図1に示した割付資源要素決定部26の構成>割付資
源要素決定部26は割付情報テーブルの保持内容に基づ
いて各割付対象に割り付ける資源要素を決定するように
構成されている。
【0103】図2は図1における割付資源要素決定部2
6の構成図である。割付資源要素決定部26は割付候補
資源要素保持部31と、割付可能資源要素検出部32
と、使用コスト計算部34と、使用コスト保持部35
と、推定利得計算部36と、利得保持部37と、資源要
素決定制御部38と、資源別コスト計算部39と、資源
別コスト保持部40と、評価資源保持部41とで構成さ
れる。図6は資源要素決定制御部38のフローチャート
である。
【0104】本フロ−チャ−トは図6に示すように割付
対象xに割り付け可能な資源要素を求めるステップb3
と、割り付け可能な資源要素が複数個存在する場合、各
資源要素の使用コストを算出することによって割り付け
るべき資源要素を選考するステップb4と、選考の結果
1つの資源要素のみが残れば、その資源要素に割付対象
xを割り付けるステップb16と、選考の結果複数の資
源要素が残れば、それらに候補を絞り込むステップb7
と、絞り込まれた候補について得失値を算出することで
割付対象xに割り付ける資源要素の再選考を行うステッ
プb8と、再選考の結果単一資源の資源要素が残った場
合、その資源要素を割付対象xに割り付けるステップb
14と、再選考の結果、複数資源の資源要素が残った場
合、各資源の後順コスト値を算出して各資源が有する資
源要素の再々選考を行うステップb12とを有し、以上
の処理を未割り付けの割付対象について割付優先度順に
行うループ構造(ステップb1〜b14)になってい
る。
【0105】本フロ−チャ−トにおいて集合Rは割付対
象xと生存区間が重なる割付対象に割付けられていない
資源要素の集合を示す。以降、本フロ−チャ−トが有す
る各ステップを順を追って更に詳しく説明してゆく。ス
テップb1では資源要素決定制御部38は割付対象保持
部21に保持されていて資源要素が未だ割付られていな
い割付対象が存在するときステップb2を行ない、割付
対象保持部21に存在しないときは割付資源要素決定部
26の処理を終了する。
【0106】ステップb2では資源要素決定制御部38
は割付対象保持部21に保持されている未割付けの割付
対象のうち、割付優先度計算部25で求めた割付優先度
が最大の割付対象xを取り出す。ステップb3では割付
可能資源要素検出部32を起動して割付対象xに割付け
可能な資源要素の集合を求める。即ち、割付対象xと生
存区間が重なる割付対象に割付けられていない資源要素
(割付可能資源要素という。)の集合Rを求め、割付候
補資源要素保持部31に保持させる。
【0107】ステップb4では更に詳しくは使用コスト
計算部34を起動して割付候補資源要素保持部31に保
持されている集合Rの各資源要素に対して割付対象xの
中間命令での使用コストを計算し、計算結果を使用コス
ト保持部35に保持させる。ステップb5では割付候補
資源要素保持部31に保持されている資源要素のうち、
ステップb4で得られた使用コストが最小である資源要
素に多資源rhが存在するときはステップb15を行な
い、そうでないときはステップb6を行なう。
【0108】ステップb6では割付候補資源要素保持部
31に保持されている資源要素のうち、ステップb4で
得られた使用コストが最小の資源要素rが一つしかない
ときはステップb16を行ない、そうでないときはステ
ップb7を行なう。ステップb7では割付候補資源要素
保持部31を一旦空にしてステップb4で得られた使用
コストが最小の資源要素のみを新たに割付候補資源要素
保持部31に保持させる。
【0109】ステップb8では更に詳しくは推定利得計
算部36を起動し、割付対象xの資源継承関係にある割
付対象から資源要素毎の利得値を求め、求めた利得値を
利得保持部37に保持させる。ステップb9では割付候
補資源要素保持部31に保持されている資源要素のう
ち、ステップb8で求められ、利得保持部37に保持さ
れている利得値が最大の資源要素の集合RSを求め、割
付候補資源要素保持部31の内容を一旦空にし、集合R
Sに属する資源要素を格納する。
【0110】ステップb10では集合RS内の資源要素
が属する資源の集合RESを求め、評価資源保持部41
に格納する。ステップb11では評価資源保持部41に
保持されている集合RESに複数の資源が存在する場合
にステップb12を行ない、そうでない場合はステップ
b14を行なう。
【0111】ステップb12では更に詳しくは資源別コ
スト計算部39を起動し、後順コスト値の算出を行な
い、各資源毎の計算結果を資源別コスト保持部40に算
出する。ステップb13では評価資源保持部41に属し
かつ、資源別コスト保持部40に格納されているコスト
が最小の資源が有する資源要素でありかつ、割付候補資
源要素保持部31に保持されている資源要素を割付対象
xに割り付け、ステップb1へ戻る。
【0112】ステップb14では割付候補資源要素保持
部31に保持されている資源要素を割付対象xに割り付
け、ステップb1へ戻る。ステップb15ではxと生存
区間が重なる割付対象に多資源rhの資源要素が割付け
られているときはその資源要素とは異なる多資源rhの
資源要素を割付対象xに割り付け、ステップb1へ戻
る。
【0113】ステップb16では資源要素rを割付対象
xに割り付け、ステップb1へ戻る。割付候補資源要素
保持部31は割付対象xについての割付可能資源要素を
保持する。割付候補資源要素保持部31の保持内容及び
当該保持内容の推移を図19(b)に示す。本図におい
て右端に付された(a)、(d)、(e)、(f)・・・は図19
(a)に示した(a)、(d)、(e)、(f)・・・に対応し、図
26に示すプログラム例内の(a)、(d)、(e)、(f)・・・
に対応している。ここで割付可能資源要素とは割付対象
xと生存区間が重なる割付対象に割り付けられていない
資源要素である。
【0114】図19(b)の(a),(d)の状況ではD0、
D1、D2、D3、A0、A1、A2、Mmが、割付可
能資源要素となっていることがわかる。更に(f)の状態
から(f-1)の状態へと遷移すると、資源要素D1が、割
付可能資源要素として除外されていることがわかる。割
付可能資源要素検出部32はステップb3で起動され、
割付可能資源要素を検出する。割付可能資源要素検出部
32によって求められた割付可能資源要素の集合は割付
候補資源要素保持部31に格納される。
【0115】使用コスト計算部34はステップb4で起
動され、使用コストを算出することで割付候補資源要素
保持部31に保持されている各資源要素を割付対象xに
割り付た場合に割付対象xの使用中間命令に対応する機
械語命令がどれくらいのメモリサイズまたは実行時間数
を費やするかを見積もり、各資源要素の選考を行う。ま
た使用コスト計算部34は見積もり結果として算出した
コスト値を各資源要素毎に使用コスト保持部35に保持
させる。
【0116】使用コスト保持部35はステップb4で算
出された使用コスト計算部34の計算結果を保持する。
推定利得計算部36は使用コスト計算部34がメモリサ
イズまたは実行時間を見積もるのに対し、得失値を算出
することで割付対象xに各資源要素を割り付けると、ど
れだけ転送命令が削除できるかを見積もり、各資源要素
の選考を行う。
【0117】利得保持部37はステップb9において推
定利得計算部36によって算出された得失値の累計であ
る利得値を保持する。利得保持部37の保持内容の一例
を図21(a)に示す。本図において各記入欄には右端
に「(d)」「(d-1)」「(d-2)」「(d-3)」「(d-4)」・・
・・といった記号が付されているが、これは割付対象t2
65に対する推定利得計算部36での各資源要素の利得値
の保持内容の推移が示されている。
【0118】資源要素決定制御部38は割付資源決定の
処理全体を制御する。資源別コスト計算部39はステッ
プb12において推定利得計算部36によって算出され
た利得値が複数の資源について最大であった場合、後順
コスト値の計算を行なう。資源別コスト保持部40は資
源別コスト計算部39の計算結果である後順コスト値を
資源毎に保持する。
【0119】評価資源保持部41はステップb12にお
ける資源別コスト計算部39の計算によって有効である
ことが判明した資源を保持する。評価資源保持部41の
保持内容の一例を図24(c)に示す。本図において各
記入欄には右端に「(d)」「(d-1)」といった記号が付さ
れているが、これは割付対象t265に対する資源別コスト
計算部39での評価資源保持部41の保持内容の推移が
示されている。
【0120】<使用コスト計算部34の構成図>図2に
示した使用コスト計算部34は各割付対象の使用コスト
を算出するように構成されている。図3に使用コスト計
算部34の構成を示す。使用コスト計算部34はパタン
保持部43と、演算コスト保持部44と、総コスト保持
部46と、使用コスト計算制御部47とで構成される。
【0121】図7は使用コスト計算制御部47のフロー
チャートである。本フロ−チャ−トにおいて中間命令i
は割付対象xが使用されている中間命令を表す。資源要
素rは割付候補資源要素保持部31に保持されている資
源要素を表す。コストパタンpは資源要素rを用いて中
間命令iについて生成されたコストパタンを表す(尚、
コストパタンについては後述する。)。
【0122】本フロ−チャ−トは割付対象xの使用中間
命令iの被演算子(オペランド)に資源要素rを用いた
場合のコストパタンpを生成するステップc5と、生成
したコストパタンpとマッチングするコストエントリを
求めるステップc6と、求めたコストエントリを総コス
ト保持部46に加算するステップc7とが割付対象xの
全ての使用中間命令に対して繰り返されるループ構造に
なっており(ステップc4〜c9)、このループ構造が
更に割付可能な資源要素の全てについて繰り返される二
重ループ構造になっている(ステップc2〜c10
尚、コストエントリについては後述する。)。
【0123】以降、本フロ−チャ−トが有する各ステッ
プを順を追って更に詳しく説明してゆく。ステップc1
では使用コスト保持部35の保持領域のうち、割付候補
資源要素保持部31に保持されている資源要素に対応す
るものにはゼロを書き込み、そうでないものには「無
効」を書き込む。
【0124】ステップc2では割付候補資源要素保持部
31に保持されている資源要素rの全てについてステッ
プc3からc10を繰り返す。繰り返し終了後、使用コ
スト計算部34を終了する。ステップc3では総コスト
保持部46にゼロを保持させる。ステップc4では入力
として与えられた割付対象xを使用している中間命令を
1つずつ取り出し、取り出した中間命令iについてステ
ップc5からステップc9までの1連の処理を繰り返
す。
【0125】ステップc5では中間命令iにおいて割付
対象xを使用している部分に資源要素rを当てはめて中
間命令iに関するコストパタンpを生成し、パタン保持
部43に保持させる。ステップc6ではコストパタンp
と演算コスト保持部44に保持されているコストエント
リとのマッチングを行ない、マッチングするコストエン
トリe1を取り出す。
【0126】ステップc7ではコストエントリe1のコ
ストを取り出し、取り出したコストを総コスト保持部4
6に加算する。ステップc8ではコストエントリe1の
WORKに資源要素が設定されているか否かを判定し、設定
されているときステップc9を行ない、そうでないとき
ステップc4を行なう。WORKとは、コード生成装置14
において機械語命令を生成する際に、中間命令iのオペ
ランド及び演算結果に設定されている資源要素の他に、
必要となる資源要素である。
【0127】ステップc9では中間命令iを生存区間に
含む割付対象に割付けている資源要素の集合R1を求
め、コストエントリe1のWORKで指定されている資源要
素r1が集合R1に存在するときはスピルコストを総コ
スト保持部46に加える。スピルコストとは資源要素r
1の格納値を一旦スタックに退避し、中間命令iの使用
後に復帰させるために要するコストである。スピルコス
トの加算後、ステップc4を行なう(以下では資源要素
r1を中間命令iにおけるスピル資源要素と呼ぶことに
する。) ステップc10では割付対象xに資源要素rを割り付け
たときの使用コストを総コスト保持部46に保持されて
いる値として使用コスト保持部35に格納し、ステップ
c2を行なう。
【0128】パタン保持部43はステップc5で生成さ
れるコストパタンを保持する。コストパタンとは割付対
象xを使用している中間命令を以下に示す4つの項目の
組み合わせで表したものであり、使用コスト計算をより
具体的にかつより精密に計算するために必要なものであ
る。 (OP, OPR1, OPR2, RESULT) OP ... この項目には「乗算」「加算」「代入」とい
った、中間命令の演算子の種類が設定される。
【0129】OPR1... この項目は中間命令の第1オぺ
ランド(OPが2項演算のときは左辺のオペランドに相当
する。)と対応し、この第1オペランドがどう設定され
ているかが記述される。第1オペランドが、即値に設定
されていれば、即値を表す「IM」が設定される。また第
1オペランドの割付対象が既に資源要素に割付けられて
いれば、当該資源要素が設定される。オペランドが即値
でなくかつ資源要素も割付けられていないときは未割付
けを表す「未」が設定される。またこの第1オぺランド
の項目にはこの中間命令が終了点に相当するか否かを示
す「K」か「N」の特性も付加される。
【0130】OPR2...この項目には中間命令の第2オペ
ランド(2項演算のときは右辺のオペランドが相当す
る。)に相当し、OPR1と同様な値が設定される。 RESULT...この項目には演算結果を保持させるための資
源要素が、どの割付対象に割り付けられている資源要素
と同一であるかを示す情報が設定される。左辺に割付け
られている資源要素とが同じときにはこのRESULTには
「左同」、右辺と同じときに「右同」が設定され、左右
辺と異なるときは「異」が設定される。また結果に資源
要素が割付けられていないときは「未」が設定される。
但し、代入演算及び比較演算のときはこの項は未設定で
ある。
【0131】(以下ではこの4つ組のパタンをコストパ
タンと呼ぶことにする。) 例えば、図26のプログラムの一例における中間命令i3
「t1=t34+3」において割付対象t34がD0に割付けられ、
割付対象t1が未割付けであるとする。このとき演算の種
類の項目が「加算」に設定される。また中間命令i3は割
付対象t34の終了中間命令であり、割付対象t34は割付対
象D0に割付けられているからOPR1は「D0.K」に設定され
る。第2オペランドは即値3であるからOPR2は「IM」に
設定される。演算結果のt1が未割付けであるからRESULT
の項目は「未」が設定される。
【0132】そのため中間命令i3「t1=t34+3」のコスト
パタンは(加算, D0.K, IM, 未)となる。演算コスト
保持部44は全てのコストパタンと、当該コストパタン
に対応するコストとを欄とする演算コストテーブルを保
持するものであり、使用コスト計算をより具体的にかつ
より精密に計算するために必要なものである。
【0133】演算コストテーブルの一例を図20(a)
に示す。コストパタンは先に述べたOP,OPR1,OPR2,RESUL
Tからなる4つの項目と、当該項目の組み合わせにおい
てオペランドや結果に割付けられている資源要素以外に
必要な資源要素を示すWORKと、当該組み合わせのコスト
値を示すCOSTとからなる(以下ではコストのテーブルの
要素をコストエントリと呼ぶことにする。) 例えば、図20においてDn,Dmは資源DRの資源要素の
うち、D0〜D3の何れであってもマッチングすることを示
す。またAn,Amは資源ARの資源要素のうち、A0〜A2の
何れかであってもマッチングすることを示す。IMは即値
にマッチングすることを示す。Dn及びAnは「|」によっ
て区切られているが、これは資源DRあるいは資源AR
の何れの資源要素でもマッチングすることを示す。図2
0(a)(a)のコストエントリのように「K」「N」の特
性がないものはコストパタンに「K」「N」の特性が付い
ているか否かにかかわらずそれとマッチングすることを
表す。前述の「t1=t34+3」のコストパタン(加算,D0.K,I
M,未)は図20(a)(b)のコストエントリにマッチング
する。そのため当該コストパタンのコストは2となる。
【0134】このようにマッチングされたコストは総コ
スト保持部46において総和される。使用コスト計算制
御部47は割付対象xを入力とし、割付対象xに割付候
補資源要素保持部31に保持されている各資源要素を割
り付けたときの使用コストを算出するよう、図7に示し
たフロ−チャ−トに従って制御を行う。
【0135】<推定利得計算部36の構成>推定利得計
算部36は利得値を算出することで転送命令の削減度合
を見積もるよう構成されている。図4(a)は推定利得
計算部36の構成図である。推定利得計算部36は利得
推定制御部51と、追跡対象保持部52と、処理済割付
対象保持部53と、既損失割付対象保持部54と、重複
割付対象保持部55、得失保持部56とで構成される。
【0136】利得推定制御部51は割付対象xについて
の利得値を計算するよう、処理制御を行う。利得推定制
御部51の処理内容を図8及び図9のフローチャートに
示す。図8は利得推定制御部51の処理制御を示すメイ
ンフローであり、図9は得失計算処理のフローチャート
である(このフローチャートによって表される得失値計
算処理を得失計算ルーチンと呼ぶ。)。
【0137】図8のフローチャートは割付対象xから資
源継承関係を辿ってゆくための追跡対象を生成するステ
ップd3と、追跡対象によって順々に資源継承関係を辿
って行き、各資源要素の得失値を算出して資源要素の第
1段階の再選考を行うステップd4と、第1段階の再選
考の結果利得値が最大の資源要素が複数個である場合、
割付対象xと生存区間が重なりかつ未割付けの割付対象
の資源継承関係を辿って行き、各資源要素の得失値を算
出して資源要素の第2段階の再選考を行うステップd1
2〜d17とを有している。
【0138】本フロ−チャ−トの第2段階の再選考の部
分は割付対象y(割付対象xと生存区間が重なる割付対
象であって未割り付けである割付対象)に対して追跡対
象を生成するステップd15と、その追跡対象について
得失値を算出するステップd16と、算出された得失値
に割付対象yの優先度を乗じた値を資源要素の利得値か
ら減じるステップd17とが全ての割付対象yについて
繰り返されるループ構造(ステップd12〜d17)に
なっている。
【0139】以降、本フロ−チャ−トが有する各ステッ
プを順を追って更に詳しく説明してゆく。図8のステッ
プd1では利得推定制御部51は利得保持部37および
得失保持部56の各資源要素に対応する内容をゼロにす
る。ステップd2では追跡対象保持部52、処理済割付
対象保持部53、既損失割付対象保持部54を空にす
る。
【0140】ステップd3では割付対象xに対して追跡
対象A(x)を生成し、A(x)の各項目を 追跡対象A(x)の割付対象 = A(x).ASO = x 追跡対象A(x)の生存区間長の和= A(x).LNS = 1 追跡対象A(x)の資源要素集合= A(x).RES = 割付候補資源要素保持部31に保持されている資源要素
の集合に設定し、生成した追跡対象A(x)を追跡対象保持
部52に格納する。
【0141】ステップd4では後述する得失計算ルーチ
ンを呼び出し、得失計算を行ない、各資源要素毎の計算
結果を得失保持部56に保持させる。ステップd5では
各資源要素毎に得失保持部56に格納されている値を利
得保持部37に格納する。ステップd6では割付候補資
源要素保持部31に格納されている資源要素であり且つ
利得保持部37に格納されている値が最大の資源要素の
集合RSを求める。
【0142】ステップd7では集合RSの要素数が複数
個であるときステップd8を行なう。そうでないときは
推定利得計算部36の処理を終了する。ステップd8で
は割付対象xと生存区間が重なり且つ未割付けの割付対
象が存在するときステップd9を行う。そうでないとき
は推定利得計算部36の処理を終了する。
【0143】ステップd9では割付候補資源要素保持部
31を一旦空にし、新たに集合RSの資源要素を全て格
納する。ステップd10では利得保持部37の各資源要
素に対応する内容をゼロにし、追跡対象保持部52を空
にする。ステップd11では割付対象xと生存区間が重
なり且つ未割付けの割付対象のみを重複割付対象保持部
55に格納する。
【0144】ステップd12では重複割付対象保持部5
5が空になるまでステップd13〜ステップd17まで
を繰り返す。空になったら推定利得計算部36の処理を
終了する。ステップd13では重複割付対象保持部55
から割付対象yを一つ取り出し、重複割付対象保持部5
5から削除する。
【0145】ステップd14では 得失保持部56の各
資源要素に対応する内容をゼロにし、処理済割付対象保
持部53、既損失割付対象保持部54を空にする。ステ
ップd15では割付対象yに対して追跡対象B(y)を生成
し、B(y)の各項目を追跡対象B(y)の割付対象 = B(y).
ASO = y 追跡対象B(y)の生存区間長の和= B(y).LNS = 1 追跡対象B(y)の資源要素集合= B(y).RES =割付候補
資源要素保持部31に保持されている資源要素の集合 に設定し、生成した追跡対象B(y)を追跡対象保持部52
に格納する。
【0146】ステップd16では後述する得失計算ルー
チンを呼び出し、得失計算を行ない、各資源要素毎の計
算結果を得失保持部56に算出する。ステップd17で
は各資源要素毎に得失保持部56に格納されている値に
割付対象yの割付優先度を乗じた値を利得保持部37か
ら減じてステップd12へ戻る。
【0147】以上のように利得推定制御部51は割付対
象xと資源継承関係にある割付対象から利得値を算出し
(ステップd1〜ステップd5)、さらに算出した利得値
が最大の資源要素が複数個あった場合、このうち、生存
区間が重なる他の割付対象yに割り付けた方が転送命令
が削減される可能性のある場合も考慮して最終的な利得
値を算出している(ステップd9〜ステップd17) 特に割付対象xと生存区間が重なる割付対象yに関して
算出された得失値は割付対象yに割り付けるとどれだけ
有利な資源要素であるかを示している。この度合が大き
い資源要素ほど、割付対象xに割り付けると転送命令が
増加する事を示す。さらに割付対象yの中でも、割付優
先度が小さいものはレジスタ等の個数が限られている資
源要素に割り付けられる可能性も小さいのでその効果を
小さく見積もる必要がある。よってステップd17にお
いて割付対象yに関して算出された得失値に割付対象y
の割付優先度を乗じた値を利得保持部37から減じてい
る。
【0148】<得失計算ルーチンの詳細フロ−チャ−ト
>得失計算ルーチンは図8のステップd4からもステッ
プd16からも呼び出されるサブルーチンであり、図8
のフロ−チャ−トのステップd3及びステップd15で
追跡対象保持部52に格納された全ての追跡対象に対し
て図9の処理を繰り返す。
【0149】得失計算ルーチンには連続生存群(生存区
間が連続し合う一連の割付対象の集合のことである。)
において現在資源継承関係を辿っている箇所の割付対象
A.ASOに資源要素が割付けられているかを判定するステ
ップe3があり、このステップe3の判定結果に応じて
ステップe4が実行されるかステップe5〜ステップe
10が実行されるかが切り換る。
【0150】ステップe4では割り付けられていると判
定された場合割付済みの割付対象まで辿り着いたとして
その資源要素の得失値を算出して得失値分だけ資源要素
の利得値を増加する。これに対しステップe3において
割り付けられてない場合、ステップe5〜ステップe1
0において割付対象A.ASOと生存区間が重なる側へと探
索の域を広げる。具体的には割付対象A.ASOについての
損失要因(利得値減少の要因となる割付対象)を算出す
るステップe5〜e8と、損失要因となる割付対象に割
り付けられている資源要素の得失値を算出してその資源
要素の利得値を得失値だけ減少させるステップe9と、
減少後、割付対象A.ASOと資源継承関係にある割付対象
について追跡対象を新たに生成するステップe10とを
有し、追跡対象を保持する追跡対象保持部52内から追
跡対象が無くなるまでステップe2〜e10を繰り返
し、資源継承関係にある連続的に割付対象を順に追って
ゆくループ構造になっている。
【0151】以降本フロ−チャ−トが有する各ステップ
を順を追って更に詳しく説明してゆく。ステップe1で
は追跡対象保持部52が空になるまでステップe2〜ス
テップe10まで繰り返す。空になったら得失計算ルー
チンの処理を終了する。ステップe2では追跡対象保持
部52から追跡対象Aを一つ取り出し、追跡対象保持部
52から削除し、さらに追跡対象Aの割付対象項目であ
る割付対象A.ASOを処理済割付対象保持部53に格納す
る。
【0152】ステップe3では割付対象A.ASOに資源要
素rが割付けられているか判定し、割付けられていると
きはステップe4を行ない、そうでないときはステップ
e5を行なう。ステップe4では資源要素rが追跡対象A
の資源要素集合の項目であるA.RESに属しているとき得
失値 = 1 / 追跡対象Aの生存区間長の和A.LNSを
求め、この値を得失保持部56の資源要素rの内容に加
える。次にステップe1に戻る。
【0153】ステップe5では割付対象A.ASOと生存区
間が重なり、かつ資源要素に割り付けられている割付対
象の集合OS1を求める。ステップe6では集合OS1
に属している割付対象に割付けられている資源要素の集
合RS1を求める。ステップe7では集合OS1に属し
かつ、既損失割付対象保持部54に格納されていない割
付対象xの集合OS2を求め、集合OS2の要素を既損
失割付対象保持部54に格納する。
【0154】ステップe8では集合OS2に属している
割付対象に割付けられている資源要素の集合RS2を求
める。ステップe9では得失値 = 1 / 追跡対象A
の生存区間長の和A.LNSを求め、得失保持部56内の集
合RS2に属する資源要素の内容から求めた得失値を減
ずる。
【0155】ステップe10では割付対象A.ASOと資源
継承関係にある割付対象であり、かつ処理済割付対象保
持部53に格納されていない割付対象yの全てに関して
各々のy毎に追跡対象B(y)を生成し、B(y)の各項目を 追跡対象B(y)の割付対象 = B(y).ASO = y 追跡対象B(y)の生存区間長の和= B(y).LNS =生存区
間長の和 A.LNS + 割付対象A.ASOの生存区間長 追跡対象B(y)の資源要素集合= B(y).RES =資源要素
集合 A.RES − 集合RS1 に設定し、生成した追跡
対象B(y)を追跡対象保持部52に格納し、ステップe1
0の実行後、ステップe1に戻る。
【0156】以上のように得失計算ルーチンはステップ
e10により資源継承関係にあるものを新たに追跡対象
保持部52に追加することによって資源継承関係を辿る
ことを可能としている。この設定によって追跡対象が増
えるので得失値算出のための探索の範囲がまた広がるこ
とになる。追跡対象保持部52はステップd3、d1
5、e10において得失計算ルーチンの処理対象として
生成された複数個の追跡対象を保持する。追跡対象保持
部52の保持内容の一例を図21(c)に示す。本図に
おいて各記入欄には「(d)」「(d-1)」「(d-2)」「(d-
3)」「(d-4)」・・・・といった記号が付されている
が、これは割付対象t265に対する推定利得計算部36で
の追跡対象保持部52の保持内容の推移を示している。
これらの記号「(d)」「(d-1)」「(d-2)」「(d-3)」「(d
-4)」・・・・が付された追跡対象の割付対象は割付対
象t265の得失値を計算する際に資源継承関係が辿られる
割付対象を示している。これらの資源継承関係が辿られ
る割付対象が、割付対象t265の生存区間とどのような位
置関係にあるかは図27に示す通りである。本図では得
失値計算の対象となる割付対象t265を黒で塗り潰された
縦線で示し、その得失値計算を行う際、資源継承関係が
辿られてゆく割付対象を白抜きの縦線で示す。
【0157】図21(c)の記入欄のうち、右端に「(d
-1)」と付されたものは割付対象t265を構造体のメンバ
ーとした追跡対象が生成されたことを示している。同様
に右端に「(d-4)」と付されたものは割付対象t265の生
存区間と重なる生存区間を有する割付対象p1を構造体の
メンバーとした追跡対象が生成されたことを示してい
る。同様に右端に「(d-6)」と付されたものは割付対象t
265の生存区間と重なる生存区間を有する割付対象a3を
構造体のメンバーとした追跡対象が生成されたことを示
している。
【0158】また右端に「(d-8)」と付されたものは割
付対象t265の生存区間と重なる生存区間を有する割付対
象a3と資源継承関係にある割付対象t263、t264、x2、x3
を構造体のメンバーとした追跡対象が生成されたことを
示している。図21(c)における「(d-4)」では生存
区間が重なり合う割付対象p1が割付対象t265についての
追跡対象として選択されている。図21(c)における
「(d-6)」では生存区間が重なり合う割付対象a3が割付
対象t265についての追跡対象として選択されている。図
21(c)における「(d-8)」では割付対象a3と資源継
承関係になる割付対象t263,t264,x2,x3が割付対象t265
についての追跡対象として選択されている。
【0159】このように図21(c)を参照すれば割付
対象t265の得失値を算出するために割付対象p1,a3,t26
3,t264,x2,x3まで探索の域が広がっていることがわか
る。処理済割付対象保持部53はステップe2において
得失計算ルーチンの処理を完了することになる追跡対象
の割付対象を保持する。特に処理済割付対象保持部53
の役割は資源継承関係が直接または間接的に循環してい
る場合、得失計算ルーチンの処理が無限に繰り返すこと
を防ぐためである。
【0160】処理済割付対象保持部53の保持内容の一
例を図22(a)に示す。本図において各記入欄には
「(d)」「(d-1)」「(d-2)」「(d-3)」「(d-4)」・・・
・といった記号が付されているが、これは割付対象t265
に対する推定利得計算部36での処理済割付対象保持部
53の保持内容の推移を示している。本図の記入欄のう
ち、右端に「(d-1)」と付されたものは割付対象t265
が、処理済みの割付対象になったことを示している。こ
れが「(d-1)」「(d-2)」「(d-3)」「(d-4)」・・・・と
いうように下欄に進むにつれ、割付対象t265の生存区間
と重なる生存区間を有する割付対象p1、割付対象t265の
生存区間と重なる生存区間を有する割付対象a3及び割付
対象a3と資源継承関係にある割付対象t263、t264、x2、
x3をメンバーとした追跡対象が処理済み割付対象保持部
53に追加されてゆくことがわかる。
【0161】既損失割付対象保持部54は得失計算ルー
チンの過程で同じ割付対象に対して得失値を減ずる処理
を2回以上行わないようにするため、ステップe7にお
いて損失要因として一度選択された割付対象を保持す
る。このように既損失割付対象保持部54が設られてい
るのは損失要因の極端な見積りを避けるためである。例
えば図14における割付対象xを保持する追跡対象をま
ずステップd3において追跡対象保持部52に格納した
とする。その後に得失計算ルーチンが呼び出され、ステ
ップe10で割付対象x3,x4, x5 を保持する追跡対象が
追跡対象保持部52に格納されたとする。このときステ
ップe7、e8がなく、ステップe9において集合RS
2の代わりに集合RS1を用いるとすると、割付対象x
4,x5を保持する追跡対象がステップe9で処理される
と、き、割付対象x4, x5と生存区間が重なる割付対象x1
1の割付けられている資源要素D0の得失値が2回減じら
れる。さらにその後、割付対象x6を保持する追跡対象が
ステップe9で処理されると、きも同様に割付対象x11
に割付けられている資源要素D0の得失値が減じられ、資
源要素D0の得失値が極端に小さく算出されてしまう可能
性がある。このことを防ぐためにステップe7において
既損失割付対象保持部54に未格納の割付対象のみを得
失値計算の対象としている。
【0162】既損失割付対象保持部54の保持内容の一
例を図22(b)に示す。本図において各記入欄には
「(d)」「(d-1)」「(d-2)」「(d-3)」「(d-4)」・・・
・といった記号が付されているが、これは割付対象t265
に対する推定利得計算部36での既損失割付対象保持部
54の保持内容の推移を示している。本図の記入欄のう
ち、右端に「(d)」「(d-1)」「(d-2)」と付されたもの
は割付対象t265に対する推定利得計算の初期段階で既に
損失要因となった割付対象を示している。これが、「(d
-3)」の欄で割付対象t265の生存区間と重なる生存区間
を有する割付対象p1に対して得失計算ルーチンが呼ば
れ、割付対象p1と生存区間が重なる割付対象Ar11、Fr
1、Ar12等が既損失割付対象保持部54に追加されてゆ
くことがわかる。
【0163】重複割付対象保持部55は割付対象xと生
存区間が重なりかつ、未だ資源要素を割付けていない割
付対象を保持する。重複割付対象保持部55の保持内容
の一例を図22(c)に示す。本図において各記入欄に
は右端に「(d)」「(d-1)」「(d-2)」といった記号が付
されているが、これは割付対象t265に対する推定利得計
算部36での重複割付対象保持部55の保持内容の推移
を示している。特に右端に「(d)」と付されたものは割
付対象t265の生存区間と重なる生存区間を有する割付対
象p1、割付対象a3が重複割付対象保持部55に格納され
たことを示す。
【0164】得失保持部56はステップd4、d16に
おいて得失計算ルーチンの実行によって算出された得失
値を各資源要素毎に保持する。得失保持部56の保持内
容の一例を図21(b)に示す。本図において各記入欄
には右端に「(d)」「(d-1)」「(d-2)」「(d-3)」「(d-
4)」・・・・といった記号が付されているが、割付対象
t265に対する推定利得計算部36での得失保持部56の
保持内容の推移を示している。
【0165】<資源別コスト計算部39の構成>図4
(b)に示した資源別コスト計算部39は割り付けられ
る順序が後の割付対象がより適切な資源要素に割り付け
られるように構成されている。資源別コスト計算部39
は資源別コスト計算制御部501と、コストパタン保持
部502と、資源演算コスト保持部503と、追跡対象
保持部504と、資源別総コスト保持部505と、処理
済割付対象保持部506と、重複割付対象保持部507
とで構成される。
【0166】資源別コスト計算制御部501は割付対象
xについての資源別の使用コストを計算するよう、処理
制御を行う。資源別コスト計算制御部501の処理内容
を図10及び図11のフローチャートに示す。図10は
資源別コスト計算制御部の処理制御を示すメインフロー
であり、図11は後順コスト値計算処理のフローチャー
トである(このフローチャートによって表される後順コ
スト値計算処理を後順コスト値計算ルーチンと呼
ぶ。)。
【0167】図10のフローチャートは割付対象xから
資源継承関係を辿ってゆくための追跡対象を生成するス
テップf3と、追跡対象によって順々に資源継承関係を
辿って行き各資源の後順コスト値を算出して資源の第1
段階の再々選考を行うステップf4と、第1段階の再々
選考の結果後順コスト値が最小の資源が複数個である場
合、割付対象xと生存区間が重なり且つ未割付けの割付
対象の資源継承関係を辿って行き、各資源の後順コスト
値を算出して資源要素の第2段階の再々選考を行うステ
ップf15とを有している。
【0168】本フロ−チャ−トの第2段階の再々選考の
部分は割付対象y(割付対象xと生存区間が重なる割付
対象であって未割り付けである割付対象)に対して追跡
対象を生成するステップf14と、その追跡対象につい
て後順コスト値を算出するステップf15と、算出され
た後順コスト値に割付対象yの優先度を乗じた値を資源
の後順コスト値から減じるステップf16とが、全ての
割付対象yについて繰り返されるループ構造(ステップ
f11〜f16)になっている。
【0169】以降、本フロ−チャ−トが有する各ステッ
プを順を追って更に詳しく説明してゆく。ステップf1
では資源別コスト保持部40および資源別総コスト保持
部505の各資源に対応する内容をゼロにする。ステッ
プf2では追跡対象保持部504、処理済割付対象保持
部506を空にする。
【0170】ステップf3では割付対象xに対して追跡
対象rA(x)を生成し、rA(x)の各項目を 追跡対象rA(x)の割付対象 = rA(x).ASO = x 追跡対象rA(x)の生存区間長の和= rA(x).LNS = 1
に設定し、生成した追跡対象rA(x)を追跡対象保持部5
04に格納する。
【0171】ステップf4では後述する後順コスト値計
算ルーチンを呼び出し、コスト計算を行ない、各資源毎
の計算結果を資源別総コスト保持部505に算出する。
ステップf5では各資源毎に資源別総コスト保持部50
5に格納されている値を資源別コスト保持部40に格納
する。ステップf6では資源別コスト保持部40に格納
されている値が最小である資源の集合Rを求め、評価資
源保持部41を一旦空にし、集合Rに属する資源を格納
する。
【0172】ステップf7では集合Rの要素数が複数個
であるときステップf8を行なう。そうでないときは資
源別コスト計算部39の処理を終了する。ステップf8
では割付対象xと生存区間が重なり且つ未割付けの割付
対象が存在するときステップf9を行う。そうでないと
きは資源別コスト計算部39の処理を終了する、ステッ
プf9では資源別コスト保持部40の各資源に対応する
内容をゼロにし、追跡対象保持部504を空にする。
【0173】ステップf10では割付対象xと生存区間
が重なり且つ未割付けの割付対象のみを重複割付対象保
持部507に格納する。ステップf11では重複割付対
象保持部507が空になるまでステップf12〜ステッ
プf16までを繰り返す。空になったら資源別コスト計
算部39の処理を終了する。
【0174】ステップf12では重複割付対象保持部5
07から割付対象yを一つ取り出し、重複割付対象保持
部507から削除する。ステップf13では 資源別総
コスト保持部505の各資源に対応する内容をゼロに
し、処理済割付対象保持部506を空にする。ステップ
f14では割付対象yに対して追跡対象rB(y)を生成
し、rB(y)の各項目を 追跡対象rB(y)の割付対象 = rB(y).ASO = y 追跡対象rB(y)の生存区間長の和= rB(y).LNS = 1
に設定し、生成した追跡対象rB(y)を追跡対象保持部5
04に格納する。
【0175】ステップf15では後述する後順コスト値
計算ルーチンを呼び出し、コスト計算を行ない、各資源
毎の計算結果を資源別総コスト保持部505に算出す
る。ステップf16では評価資源保持部41に格納され
ている各資源に対して資源別総コスト保持部505に格
納されている値に割付対象yの割付優先度を乗じた値を
資源別コスト保持部40から減じ、ステップf11へ戻
る。
【0176】以上のように資源別コスト計算制御部50
1は割付対象xと資源継承関係にある割付対象から後順
コストを算出し(ステップf1〜ステップf5)、さらに
算出したコストが最小の資源が複数個あった場合、この
うち、生存区間が重なる他の割付対象yに関する後順コ
スト計算を行なうことにより割付対象yをも考慮した割
付対象xに対する後順コストの算出を行っている(ステ
ップf9〜ステップf16) 特にステップf15おいて求められる後順コストの大き
い資源は割付対象xと生存区間が重なる割付対象yにと
って後順コストがかかる資源であり、割付対象xに当該
資源を含めて他に割付け可能な資源が存在するときは当
該資源を割付対象xに割付ければ、割付対象yには後順
コストのかからない資源を割り付けれる可能性が増す。
よってステップf16では求めた後順コストを資源別コ
スト保持部40から減じている。またステップf16に
おいて求めた後順コストに割付対象yの優先度を乗じて
いるのは割付対象yの中でも割付優先度が小さいものは
レジスタ等の個数の限定された資源に割り付けられる可
能性も小さいのでその効果を小さく見積もるためであ
る。
【0177】<後順コスト値計算ルーチンの詳細フロー
チャート>図11は後順コスト値計算ルーチンのフロー
チャートである。後順コスト値計算ルーチンは割付対象
rA.ASO中の使用中間命令についてコストパタンを生成す
るステップg5と、コストエントリとのマッチングをと
り、コストエントリe1を取りだすステップg6と、当
該コストエントリe1のコストcと、追跡対象rAの生存
区間長の和であるrA.LNS とから後順コスト値 = コス
トc / rA.LNS を算出するステップg7と、算出した後
順コスト値を資源rの後順コスト値に加えるステップg
8とが割付対象rA.ASOに含まれる全ての使用中間命令に
対して繰り返されるループ構造(ステップg4〜g8)
になっており、このループ構造が更に資源要素が再々選
考に残った資源について繰り返される二重ループ構造
(ステップg3)になっている。
【0178】またこの二重ループ構造が更に追跡対象保
持部504から追跡対象rAが取り出される度に起動さ
れ、また追跡対象保持部504には二重ループ構造が1
度実行される度に現在資源継承関係を辿っている箇所の
割付対象rA.ASOと資源継承関係にある割付対象が新たに
格納される構造になっている(ステップg9)。そのた
め当該二重ループ構造は連続的に資源継承関係にある未
割り付けの割付対象が処理されるまで繰り返される三重
ループ構造になっている(ステップg1)。
【0179】以降、本フロ−チャ−トが有する各ステッ
プを順を追って更に詳しく説明してゆく。ステップg1
では追跡対象保持部504が空になるまでステップg2
〜ステップg9まで繰り返す。空になったら後順コスト
値計算ルーチンの処理を終了する。
【0180】ステップg2では追跡対象保持部504か
ら追跡対象rAを一つ取り出し、追跡対象保持部504か
ら削除する。さらに追跡対象rAの割付対象項目である割
付対象rA.ASOを処理済割付対象保持部506に格納す
る。ステップg3では評価資源保持部41に保持されて
いる資源であり、追跡対象rAの割付対象項目である割付
対象rA.ASOに割付け可能な資源rの一つ一つについてス
テップg4〜ステップg8の一連の処理を繰り返す。繰
り返し処理を終了したらステップg9を行なう。ここで
割付対象rA.ASOに割付け可能な資源とは割付対象rA.ASO
と生存区間が重なる割付対象に割付けられていない資源
要素が属する資源のことである。つまり割付対象rA.ASO
と生存区間が重なる割付対象にある資源が有する資源要
素の全てが割付けられているとき当該資源は割付け不可
能となる。
【0181】ステップg4では割付対象rA.ASOを使用し
ている中間命令を1つずつ取りだし、取り出した中間命
令iについてステップg5〜ステップg8の一連の処理
を繰り返す。繰り返し処理を終了したらステップg3に
戻る。ステップg5では中間命令iにおいて割付対象r
A.ASOを使用している部分に資源rを割り付けて中間命令
iに関するコストパタンpを生成し、コストパタン保持
部502に保持させる。
【0182】ステップg6ではコストパタン保持部50
2に格納されているコストパタンpと資源演算コスト保
持部503に保持されているコストエントリとのマッチ
ングを行ない、マッチングするコストエントリe1を取
り出す。ステップg7ではコストエントリe1のコスト
cを取りだし、当該コストcと、追跡対象rAの生存区間
長の和であるrA.LNS とから後順コスト値 = コストc
/ rA.LNS を算出する。
【0183】ステップg8ではステップg7で求めた後
順コスト値を資源別総コスト保持部505の資源rの内
容に加える。次にステップg4に戻る。ステップg9で
は割付対象rA.ASOと資源継承関係にある未割付けの割付
対象であり、かつ処理済割付対象保持部506に格納さ
れていない割付対象yの全てに関して各々の割付対象y
毎に追跡対象rB(y)を生成し、rB(y)の各項目を 追跡対象rB(y)の割付対象 = rB(y).ASO = y 追跡対象rB(y)の生存区間長の和= rB(y).LNS =生存
区間長の和 rA.LNS + 割付対象rA.ASOの生存区間長 に設定し、生成した追跡対象rB(y)を追跡対象保持部5
04に格納してステップg1へ戻る。
【0184】コストパタン保持部502は後順コスト値
の計算のために図11のステップg5で生成されたコス
トパタンを保持している。このコストパタンはパタン保
持部43が保持したものと同一の項目で構成されている
ので説明は省略する。コストパタン保持部502の保持
内容の一例を図24(b)に示す。本図において各記入
欄には右端に「(d)」といった記号が付されているが、
これは割付対象t265に対する資源別コスト計算部39で
のコストパタン保持部502の推移を示すものである。
【0185】資源演算コスト保持部503は全てのコス
トパタンと、当該コストパタンに対応するコストとを欄
とする演算コストテーブルを後順コスト値計算用に保持
している。資源演算コスト保持部503が保持する演算
コストテーブルは図20(a)のうち、OP, OPR1, OPR
2, RESULTからなる4つの項目と、当該項目の組み合わ
せのコスト値を示すCOSTからなる。
【0186】追跡対象保持部504は後順コスト値計算
ルーチンの処理対象となる複数個の追跡対象を保持す
る。追跡対象保持部504に保持される追跡対象は推定
利得計算部36で使用する追跡対象保持部52によって
保持される追跡対象と異なり、割付可能な資源要素の集
合がメンバから省かれている。そのため追跡対象保持部
504に保持される追跡対象は割付対象と生存区間長の
和の2項目のデータで構成されている。本実施形態では
追跡対象保持部52で保持される追跡対象と区別するた
め、追跡対象において現在資源継承関係を辿っている箇
所の割付対象をASO、そこまでの生存区間長の和をLNSで
表現し、これらを参照する場合は割付対象rA.ASO、生存
区間長の和rA.LNSというように先頭に「r」を付けて表
している。
【0187】資源別総コスト保持部505は後順コスト
値計算ルーチンで算出されるコストを保持する。処理済
割付対象保持部506は推定利得計算部36の処理済割
付対象保持部53同様、後順コスト値計算ルーチンの処
理を完了した割付対象を保持する。処理済割付対象保持
部53同様、処理済割付対象保持部506の役割も、資
源継承関係が直接または間接的に循環している場合、後
順コスト値計算ルーチンの処理が無限に繰り返すことを
防ぐために備えられている。処理済割付対象保持部50
6の保持内容の一例を図24(a)に示す。本図におい
て各記入欄には右端に「(d)」「(d-1)」「(d-2)」「(d-
3)」「(d-4)」・・・・といった記号が付されている
が、これは割付対象t265に対する資源別コスト計算部3
9での処理済割付対象保持部506の推移を示すもので
ある。本図の記入欄のうち、右端に「(d-1)」と付され
たものは割付対象t265に対する資源別コスト計算部39
での処理済みの初期の時点での割付対象を示している。
これが、「(d-1)」「(d-2)」「(d-3)」「(d-4)」・・・
・というように下欄に進むにつれ、割付対象t265の生存
区間と重なる生存区間を有する割付対象a3及び割付対象
a3と資源継承関係にある割付対象x2、x3をメンバーとし
た追跡対象が処理済割付対象保持部506に追加されて
ゆくことがわかる。
【0188】重複割付対象保持部507は割付対象xと
生存区間が重なりかつ、未だ資源要素を割付けていない
割付対象を保持する。重複割付対象保持部507の保持
内容の一例を図24(d)に示す。本図において各記入
欄には右端に「(d)」「(d-1)」「(d-2)」・・・・とい
った記号が付されているが、これは割付対象t265に対す
る資源別コスト計算部39での重複割付対象保持部50
7の推移を示す。右端に「(d)」と付されたものは割付
対象t265の生存区間と重なる生存区間を有する割付対象
p1、割付対象a3が重複割付対象保持部507に格納され
たことを示す。
【0189】以上のように構成される本実施形態の資源
割付装置における具体的な処理内容をこれまでに示した
フローチャートを再度参照しながら説明する。まず前提
としてここで扱う資源をアドレスレジスタ(AR)、データ
レジスタ(DR)、多資源をメモリ(Mm)とする。また資源AR
の資源要素をA0,A1,A2とし、資源DRの資源要素をD0,D1,
D2,D3とし、また多資源Mmも資源要素とする。
【0190】また資源別の機能制限として資源ARはメモ
リの間接参照機能を持つが、資源DRは持たないとする。
さらに資源DRは乗除算演算の被演算子となりうるが、資
源ARはならないとする。更に関数の引数渡しに使用する
引数レジスタ、および関数呼び出しにおいて破壊レジス
タをD0,D1,A0とし、関数の戻り値に使用する戻り値レジ
スタをD0,A0とし、戻り値のデータ型によってD0,A0の使
用区別を行なうものとする。
【0191】図25のC言語記述のプログラムに対して
既に構文解析装置11および最適化装置12によって図
26(1)のような3番地形式の中間プログラムが出力さ
れている。さらに最適化装置12によって中間プログラ
ムから基本ブロックが抽出され、制御フロー情報、およ
びデータフロー情報が得られている。図26(1)では特
に矢印↑は間接参照演算を表しており、図中の変数Ar1,
Ar2, Frはそれぞれ関数の実引数および関数の戻り値を
保持させる変数を表している。
【0192】この状態で資源割付装置13に処理が移
る。資源割付制御部27は割付対象生成部22を起動す
る。割付対象生成部22は制御フロー情報、およびデー
タフロー情報から変数に対する割付対象を生成する(ス
テップa1)。その結果図17のn10からn15まで
の情報が得られる。図17は以下で行う割り付け処理に
より資源要素が割付けられるものを表し、図18は実引
数(Ar)、関数の戻り値(Fr)、破壊レジスタ(Br)を表す割
付対象を示している。さらに図26(2)は生存区間を実
線で示したものである。図26(2)および図17におい
て変数t26のように生存区間が複数存在する変数はそれ
ぞれ別々に割付対象になるのでt261, t262のように区
別される。
【0193】図17に示された割付対象の情報は図1中
の割付対象保持部21に保持される。次に資源割付制御
部27は生存区間重複割付対象検出部23を起動する。
生存区間重複割付対象検出部23は割付対象保持部21
に保持されている各々の割付対象に関して生存区間が重
なる割付け対象を求める(ステップa2)。その結果図
17のn16の情報が得られる。
【0194】次に資源割付制御部27は資源継承割付対
象検出部24を起動する。資源継承割付対象検出部24
は割付対象保持部21に保持されている各々の割付対象
に関して資源継承関係にある割付対象を求める(ステッ
プa3)。その結果図17のn17の情報が得られる。
次に資源割付制御部27は割付優先度計算部25を起動
する。割付優先度計算部25は各割付対象に関して次の
式により割付優先度を計算する(ステップa4)。
【0195】割付優先度=使用率=使用中間命令が存在
するループレベルの総和/生存区間の長さ 次に資源割付制御部27は割付資源要素決定部26を起
動する。割付資源要素決定部26は割付優先度の高い割
付対象から順に資源要素を割付対象に割付ける(ステッ
プa5)。
【0196】ここで割付資源要素決定部26の処理を図
6に示す資源要素決定制御部38のフローチャートを参
照しながら説明する。 <(a)割付対象t262を対象とした処理内容>先ず、資源
要素決定制御部38は未割付けの割付対象が存在するか
否か判定し、未割付けの割付対象のうち、割付優先度が
最大の割付対象t262を取り出す(ステップb1、b
2)。
【0197】次に資源要素決定制御部38は割付可能資
源要素検出部32を起動する(ステップb3)。割付可
能資源要素検出部32は生存区間が重なる割付対象に割
付けられていない資源要素である、D0,D1,D2,D3,A0,A1,
A2と多資源要素のMmを割付候補資源要素保持部31に保
持させる(図19(b)の(a))。次に資源要素決定制
御部38は使用コスト計算部34を起動する(ステップ
b4)。
【0198】使用コスト計算部34は割付対象t262の使
用箇所において割付候補資源要素保持部31に保持され
ている資源要素を使用したときの使用コストを各資源要
素毎に求める。 <(a-1)割付対象t262の使用中間命令i10と、資源要素D0
とを対象にした処理内容>ここでさらに使用コスト計算
部34の処理内容を図7に示す使用コスト計算制御部4
7のフローチャートを参照しながら説明する。
【0199】次に使用コスト計算制御部47は使用コス
ト保持部35の各資源要素の内容にゼロを保持させる
(ステップc1)。次に使用コスト計算制御部47は割
付候補資源要素保持部31に格納されており、未だ使用
コストを算出していない資源要素D0を取り出す(ステッ
プc2)。次に使用コスト計算制御部47は総コスト保
持部46にゼロを保持させる(ステップc3)。
【0200】次に使用コスト計算制御部47は割付対象
t262の使用中間命令のうち、D0について未だ使用コスト
の計算を行なってい中間命令i10を取り出す(ステップ
c4)。次に使用コスト計算制御部47は使用中間命令
i10に対して コストパタン(代入,D0.N,D0.K,-)を生成
し、パタン保持部43に保持させる(ステップc5)。
【0201】次に使用コスト計算制御部47は演算コス
ト保持部44に保持されている図20(a)の演算コス
トテーブルと、パタン保持部43に保持されているコス
トパタンとのマッチングをとる。このとき図20(a)
の(c)のコストエントリとマッチングが成立し、コスト0
を得、得られたコストを総コスト保持部46に保持され
ている値に加える(ステップc6、c7)。
【0202】次に使用コスト計算制御部47はマッチン
グしたコストエントリのWORK項目が未設定であると判定
してステップc4を行なう。 <(a-2)t262の中間命令i11と、資源要素D0とを対象にし
た処理内容>次に使用コスト計算制御部47は割付対象
t262のD0について未だ使用コストを計算していない中間
命令i11を取り出し、コストパタン(加算,D0.K,IM,未)を
生成しパタン保持部43に保持させる。図20(a)の
演算コストテーブルの(b)のコストエントリとマッチン
グを成立させてコスト2を得て総コスト保持部46に加
える。次にマッチングしたコストエントリのWORK項目が
未設定であると判定してステップc4を行なう(ステッ
プc4からc8)。
【0203】次に使用コスト計算制御部47は資源要素
D0について未だ使用コストを計算していない割付対象t2
62の中間命令が存在しないことを検出し、総コスト保持
部46に保持されている値をt262にD0を割付けたときの
使用コストととして使用コスト保持部35のD0の内容に
保持させる(ステップc4、c10)。 <(a-3)t262の中間命令i10、i11と、資源要素D1とを対
象にした処理内容>次に使用コスト計算制御部47は割
付候補資源要素保持部31にから未だ使用コストを算出
していない資源要素D1を取り出し、資源要素D0のときと
同様に割付対象t262の中間命令i10,i11に対してそれぞ
れ、コストパタン(代入,D1.N,D0.K,-)(加算,D1.K,Im,
未)を生成し、演算コストテーブルとマッチングをと
り、それぞれ図20(a)の(d),(b)のコストエントリ
とマッチングしてそれぞれコスト1,2を得る。そしてそ
の和3を総コスト保持部46に得て使用コスト保持部3
5のD1の欄に保持させる(ステップc2からc8)。
【0204】次に使用コスト計算制御部47は資源要素
D2,D3,A0,A1,A2 に関しても、資源要素D1と同様に計算
を行い、使用コストの結果を得る。次に使用コスト計算
制御部47は割付候補資源要素保持部31にから未だ使
用コストを算出していない資源要素Mmを取り出し、割付
対象t262の中間命令i10,i11に対してそれぞれ、コスト
パタン(代入,Mm.N,D0.K,-)(加算,Mm.K,Im,未)を生成
し、演算コストテーブルとマッチングをとり、それぞれ
の図20(a)の(e),(f)のコストエントリとマッチン
グしてそれぞれコスト 2, 3 を得る。そしてその和
5 を総コスト保持部46に得て使用コスト保持部3
5のMmの欄に保持させる(ステップc2からc7)。ま
た図20(a)(f)のコストエントリのWORK項目が指定
されているが、中間命令i11におけるスピル資源要素が
存在しないのでスピルコストを総コスト保持部46には
算入しない(ステップc8、c9)。
【0205】次に使用コスト計算制御部47は割付候補
資源要素保持部31に格納されており、未だ使用コスト
を求めていない資源要素が存在しないことを判定し(ス
テップc2)、使用コスト計算部34の処理を終え、ス
テップb4へ戻る。尚、この時点での使用コスト保持部
35の内容は図20(b)の(a)のように得られる。資
源要素決定制御部38は使用コスト保持部35を参照し
て多資源であるMmのコストが最小でないとことを判定し
て(ステップb5)、ステップb6を行なう。
【0206】次に資源要素決定制御部38は使用コスト
保持部35を参照して使用コストが最小である資源要素
D0が存在することを判定し、資源要素D0を割付対象t262
に割付ける(ステップb6、b16、図19(a)の
(a)、図20(b)の(a))。 <(b)(c)割付対象t263、t264を対象とした処理内容>次
に資源要素決定制御部38はステップb1に戻り、未割
付けの割付対象 t263, t264についても割付対象t262
と同様に割付け処理を行ない、図19(a)の(b)(c)の
ようにD0を割り付ける。 <(d)割付対象t265を対象とした処理内容>次に資源要
素決定制御部38は未割り付けで優先度が高いt265を取
り出す(ステップb1、b2)。
【0207】次に資源要素決定制御部38は割付可能資
源要素検出部32を起動し、割付可能な資源要素、D0,D
1,D2,D3,A0,A1,A2,Mmを得て割付候補資源要素保持部3
1に保持させる(ステップb3、図19(b)の
(d))。次に資源要素決定制御部38は使用コスト計算
部34を起動し、割付候補資源要素保持部31の各資源
要素に関して図20(b)(d)のように使用コストを計
算する(ステップb4)。
【0208】次に資源要素決定制御部38は多資源であ
るメモリが最小の使用コストとなっているかを判定する
が、そうでないのでステップb6を行う(ステップb
5)。次に資源要素決定制御部38は使用コストが最小
である資源要素が唯一つかどうかを判定するが、そうで
ないのでステップb7を行う(ステップb6)。次に資
源要素決定制御部38は使用コストが最小でない資源要
素を割付候補資源要素保持部31の割付候補集合から削
除する(ステップb7、図19(b)の(d-1))。
【0209】次に資源要素決定制御部38はt265を入力
として推定利得計算部36を起動し、割付候補資源要素
保持部31に保持されている各資源要素に関して利得計
算を行う(ステップb8)。 <割付対象t265に関するステップd1以降の処理>ここ
でさらにt265に関して推定利得計算部36の処理内容を
図8、図9に示す利得推定制御部51のフローチャート
を参照しながら説明する。
【0210】まず利得推定制御部51は利得保持部37
および得失保持部56の各資源要素に対応する内容をゼ
ロにする(ステップd1、図21(a)の(d)、図21
(b)の(d))。次に利得推定制御部51は追跡対象保持
部52、処理済割付対象保持部53、既損失割付対象保
持部54を空にする(ステップd2、図21(c)の
(d)、図22(a)の(d)、図22(b)の(d))。
【0211】次に利得推定制御部51は割付対象t265に
対して追跡対象A1を生成し、A1の各項目を図17からA
1.ASO = t265 A1.LNS = 1 A1.RES = D0, D1, D2, D3, A
0, A1, A2に設定する。 次に図21(c)の(d-1)のよ
うにA1を追跡対象保持部52に格納する(ステップd3)
図21(c)の(d-1)では追跡対象を(A1, t265, 1,
(D0,D1,D2,D3,A0,A1,A2))で表現し、各項目は(追跡対象
名、割付対象、生存区間長の和、資源要素集合)を示
す。
【0212】次に利得推定制御部51は得失計算ルーチ
ンを呼び出す。 <追跡対象A1の処理>ここでさらに割付対象t265に関す
る利得推定制御部51の処理内容を図9に示すフローチ
ャートを参照しながら説明する。まず、ステップe1、
ステップe2では追跡対象A1を追跡対象保持部52から
取り出し、追跡対象保持部52から削除する。さらに追
跡対象A1の割付対象項目である割付対象t265を処理済割
付対象保持部53に格納する(図21(c)の(d-2)、図
22(a)の(d-1))。
【0213】次にステップe3では追跡対象A1の割付対
象項目である割付対象t265は資源要素に割り付けられて
いないのでステップe5に進む。次にステップe5〜ス
テップe9では集合OS1が空であるので集合RS1、
集合OS2、集合RS2が空となり得失値は計算されな
い(図22(b)の(d-1))。
【0214】次にステップe10では追跡対象A1の割付
対象項目である割付対象t265と資源継承関係にある割付
対象が存在しないので新しい追跡対象は生成されない。
次にステップe1へ戻る。次にステップe1において追
跡対象保持部52が(図21(c)の(d-2))のように空
なので得失計算ルーチンの処理を終了し、ステップd4
に戻る。
【0215】<割付対象t265に関するステップd5以降
の処理>ここでさらに割付対象t265に関する利得推定制
御部51の処理内容を図8に示すフローチャートのステ
ップd5以降を参照しながら説明する。まず、利得推定
制御部51は図21(b)の(d)に示す得失保持部56
の値を利得保持部37に格納する(ステップd5、図2
1(a)の(d-1))。
【0216】次に利得推定制御部51は図21(a)の
(d-1)に示す利得保持部37に格納されている値が最大
の資源要素の集合RS=(D0, D1, D2, D3, A0, A1, A2)
を求める(ステップd6)。次に利得推定制御部51は集
合RSの要素数が複数個であり、割付対象t265と生存区
間が重なり且つ未割付けの割付対象 p1, a3 が存在する
のでステップd9を行う(ステップd7、ステップd
8)。
【0217】次に利得推定制御部51は集合RSを割付
候補資源要素保持部31に格納し、利得保持部37の各
資源要素に対応する内容をゼロにし、追跡対象保持部5
2を空にし、重複割付対象保持部55に割付対象t265と
生存区間が重なり且つ未割付けの割付対象p1, a3 を重
複割付対象保持部55に格納する(ステップd9、ステ
ップd10、ステップd11、図19(b)(d-2)、図
21(c)の(d-3)、図21(a)の(d-2)、図22
(c)の(d))。
【0218】次に利得推定制御部51は重複割付対象保
持部55から割付対象p1を取り出し、重複割付対象保持
部55から削除する(ステップd12、ステップd1
3、図22(c)の(d-1))。次に得失保持部56の各資
源要素に対応する内容をゼロにし、利得推定制御部51
は処理済割付対象保持部53、既損失割付対象保持部5
4を空にする(ステップd14、図21(b)の(d-1)、
図22(a)の(d-2)、図22(b)の(d-2))。
【0219】次に利得推定制御部51は割付対象p1に対
して追跡対象A2を生成し、A2の各項目を図17からA2.A
SO = p1,A2.LNS = 1,A2.RES = D0, D1, D2, D3, A0, A
1, A2に設定する。 次に図21(c)の(d-4)のようにA
2を追跡対象保持部52に格納する(ステップd15)。
次に利得推定制御部51は得失計算ルーチンを呼び出
す。
【0220】ここでさらに割付対象t265に関する利得推
定制御部51の処理内容を図9に示すフローチャートを
参照しながら説明する。 <追跡対象A2の処理>まず、ステップe1、ステップe
2では追跡対象A2を追跡対象保持部52から取り出し、
追跡対象保持部52から削除する。さらに追跡対象A2の
割付対象項目である割付対象p1を処理済割付対象保持部
53に格納する(図21(c)の(d-5)、図22(a)の
(d-3))。
【0221】次にステップe3では追跡対象A2の割付対
象項目である割付対象p1は資源要素に割り付けられてい
ないのでステップe5に進む。次にステップe5、ステ
ップe6では集合OS1 = (Ar11, Fr1, Ar12, Ar22,Fr
2, Ar13, Ar23, Fr3, Br1, Br2, Br3, t262, t263, t26
4)、集合RS1= (D0, D1, A0) を求める。
【0222】次にステップe7、ステップe8では既損
失割付対象保持部54が図22(b)の(d-2)のように
空なので集合OS2 = (Ar11, Fr1, Ar12, Ar22, Fr2,
Ar13,Ar23, Fr3, Br1, Br2, Br3, t262, t263, t264)、
集合RS2 = (D0, D1, A0)となり、既損失割付対象保
持部54は図22(b)の(d-3)となる。次にステップ
e9では得失値 = 1 / A2.LNS = 1 を求め、図21
(b)の(d-1)の得失保持部56の資源要素D0, D1, A0
の内容から減ずる(図21(b)の(d-2))。
【0223】次にステップe10では追跡対象A2の割付
対象項目である割付対象p2と資源継承関係にある割付対
象が存在しないので新しい追跡対象は生成されない。次
にステップe1へ戻る。次にステップe1において追跡
対象保持部52が(図21(c)の(d-5))のように空な
ので得失計算ルーチンの処理を終了し、ステップd16
に戻る。
【0224】<割付対象t265に関するステップd17以
降の処理その1>ここでさらに割付対象t265に関する利
得推定制御部51の処理内容を図8に示すフローチャー
トのステップd17以降を参照しながら説明する。ま
ず、利得推定制御部51は図21(b)の(d-2)に示す
得失保持部56に格納されている値に割付対象p1の割付
優先度0.27を乗じた値を利得保持部37から減ずる。つ
まり、図21(b)の(d-2)のように得失値がマイナス
であるところは最終的に図21(a)の(d-3)のように
各値を加算することになる。 次にステップd12へ戻
る(ステップd17)。
【0225】次に利得推定制御部51は重複割付対象保
持部55から割付対象a3を取り出し、重複割付対象保持
部55から削除する(ステップd12、ステップd1
3、図22(c)の(d-2))。次に利得推定制御部51は
得失保持部56の各資源要素に対応する内容をゼロに
し、処理済割付対象保持部53、既損失割付対象保持部
54を空にする(ステップd14、図21(b)の(d-
3)、図22(a)の(d-4)、図22(b)の(d-4))。
【0226】次に利得推定制御部51は割付対象a3に対
して追跡対象A3を生成し、A3の各項目を図17および図
19(b)の(d-2)からA3.ASO = a3,A3.LNS = 1,A3.RES
= D0, D1, D2, D3, A0, A1, A2に設定する。 次に図2
1(c)の(d-6)のようにA2を追跡対象保持部52に格
納する(ステップd15)。次に利得推定制御部51は得
失計算ルーチンを呼び出す(ステップd16) ここでさらに割付対象t265に関する利得推定制御部51
の処理内容を図9に示すフローチャートを参照しながら
説明する。
【0227】<追跡対象A3の処理>まず、ステップe
1、ステップe2では追跡対象A3を追跡対象保持部52
から取り出し、追跡対象保持部52から削除する。さら
に追跡対象A3の割付対象項目である割付対象a3を処理済
割付対象保持部53に格納する(図21(c)の(d-7)、
図22(a)の(d-5))。
【0228】次にステップe3では追跡対象A3の割付対
象項目である割付対象a3は資源要素に割り付けられてい
ないのでステップe5に進む。次にステップe5〜ステ
ップe9では集合OS1が空であるので集合RS1、集
合OS2、集合RS2が空となり得失値は計算されない
(図22(b)の(d-5))。
【0229】次にステップe10では追跡対象A3の割付
対象項目である割付対象a3と資源継承関係にある割付対
象t263, t264, x2, x3 に対して図21(c)の(d-8)の
ように追跡対象A4, A5, A6, A7を生成する。ここで各追
跡対象の生存区間長の和はA3.LNS の 1と、割付対象a3
の生存区間長 3 の和 4 となる。次にステップe1へ戻
る。
【0230】<追跡対象A4の処理>次にステップe1、
ステップe2では追跡対象A4を追跡対象保持部52から
取り出し、追跡対象保持部52から削除する。さらに追
跡対象A4の割付対象項目である割付対象t263を処理済割
付対象保持部53に格納する(図21(c)の(d-9)、
(図22(a)の(d-6))。
【0231】次にステップe3では追跡対象A4の割付対
象項目である割付対象t263は資源要素D0に割り付けられ
ているのでステップe4に進む。次にステップe4では
得失値 = 1 / A4.LNS = 0.25 を求め、図21(b)の
(d-3)の得失保持部56の資源要素D0の内容に加え、ス
テップe1へ戻る(図21(b)の(d-4))。
【0232】<追跡対象A5の処理>次に追跡対象A5に対
しても、追跡対象A4と同様に処理され、追跡対象保持部
52は図21(c)の(d-10)に得失保持部56は図21
(b)の(d-5)に処理済割付対象保持部53は図22
(a)の(d-7)に推移する(ステップe1〜ステップe
4、ステップe11)。
【0233】<追跡対象A6の処理>次にステップe1、
ステップe2では追跡対象A6を追跡対象保持部52から
取り出し、追跡対象保持部52から削除する。さらに追
跡対象A6の割付対象項目である割付対象x2を処理済割付
対象保持部53に格納する(図21(c)の(d-11)、図
22(a)の(d-8))。
【0234】次にステップe3では追跡対象A6の割付対
象項目である割付対象x2は資源要素に割り付けられてい
ないのでステップe5に進む。次にステップe5、ステ
ップe6では集合OS1 = (Ar12, Ar22, Fr2, t263,Br
2)、集合RS1 = (D0, D1, A0) を求める。次にステッ
プe7、ステップe8では既損失割付対象保持部54が
図22(b)の(d-5)のように空であるので集合OS2
= (Ar12, Ar22, Fr2, t263, Br2)、集合RS2 = (D0,
D1, A0) となり、既損失割付対象保持部54は図22
(b)の(d-6)となる。
【0235】次にステップe9では得失値 = 1 / A6.LN
S = 0.25 を求め、図21(b)の(d-5)の得失保持部5
6の資源要素D0, D1, A0の内容から減ずる(図21
(b)の(d-6))。次にステップe10では追跡対象A6の
割付対象項目である割付対象x2と資源継承関係にある割
付対象a3は図22(a)の(d-8)の処理済割付対象保持
部53に格納されているので追跡対象は生成されない。
次にステップe1へ戻る。
【0236】<追跡対象A7の処理>次に追跡対象A7に対
しても、追跡対象A6と同様に処理され、追跡対象保持部
52は図21(c)の(d-12)に、得失保持部56は図2
1(b)の(d-7)に、処理済割付対象保持部53は図2
2(a)の(d-9)に推移する(ステップe1〜ステップe
4、ステップe10)。
【0237】次にステップe1において追跡対象保持部
52が図21(c)の(d-12)のように空なので得失計算
ルーチンの処理を終了し、ステップd16に戻る。 <割付対象t265に関するステップd17以降の処理その
2>ここでさらに割付対象t265に関する利得推定制御部
51の処理内容を図8に示すフローチャートのステップ
d17以降を参照しながら説明する。
【0238】まず、利得推定制御部51は図21(b)
の(d-7)に示す得失保持部56に格納されている値に割
付対象a3の割付優先度2.67を乗じた値を利得保持部37
から減ずる。つまり、図21(b)の(d-7)のように得
失値がマイナスであるところは最終的に図21(a)の
(d-4)のように各値を加算することになる。 次にステッ
プd12へ戻る(ステップd17)。
【0239】次に利得推定制御部51は図22(c)の
(d-2)に示す重複割付対象保持部55が空であるので推
定利得計算部36を終了し、ステップb8に戻る。ここ
でさらに割付対象t265に関する資源別コスト計算部39
の処理内容を図7に示すフローチャートのステップb9
以降を参照しながら説明する。 <割付対象t265に関するステップb9以降の処理>ま
ず、資源要素決定制御部38は図21(a)の(d-4)に
示す利得保持部37に格納されている値が最大の資源要
素の 集合RS = { D1, A0 }を求め、割付候補資源要素保
持部31に格納する(図19(b)の(d-3))(ステップ
b9)。
【0240】次に資源要素決定制御部38は集合RSの
内容から集合RES = { AR, DR }を得え、評価資源保
持部41に格納する(ステップb10、図24(c)の
(d))。次に資源要素決定制御部38は集合RESには
二つの資源が存在するのでステップb12を行なう(ス
テップb11) 次に資源要素決定制御部38は資源別コスト計算部39
を起動し、コストの算出を行なう(ステップb12) <割付対象t265に関する資源別コスト計算部39の処理
>ここでさらに割付対象t265に関する資源別コスト計算
部39の処理内容を図10に示すフローチャートを参照
しながら説明する。
【0241】まず、資源別コスト計算制御部501は資
源別コスト保持部40および資源別総コスト保持部50
5の各資源要素に対応する内容をゼロにする(ステップ
f1、図23(a)の(d)、図23(b)の(d))。次に
資源別コスト計算制御部501は追跡対象保持部50
4、処理済割付対象保持部506を空にする(ステップ
f2、図23(c)の(d)、図24(a)の(d))。
【0242】次に資源別コスト計算制御部501は割付
対象t265に対して追跡対象rA1を生成し、rA1の各項目を
rA1.ASO = t265,rA1.LNS = 1に設定する。 次に図23
(c)の(d-1)のようにrA1を追跡対象保持部504に格
納する(ステップf3) 図23(c)の(d-1)では追跡対象を(rA1, t265, 1)の
ように表現し、各項目は(追跡対象名、割付対象、生存
区間長の和)を示す。
【0243】次に資源別コスト計算制御部501は後順
コスト値計算ルーチンを呼び出す(ステップf4) ここでさらに割付対象t265に関する資源別コスト計算部
39の処理内容を図11に示すフローチャートを参照し
ながら説明する。 <追跡対象rA1の処理>まず、ステップg1、ステップ
g2では追跡対象rA1を追跡対象保持部504から取り
だし、追跡対象保持部504から削除する。さらに追跡
対象rA1の割付対象項目であるt265を処理済割付対象保
持部506に格納する(図23(c)の(d-2)、図24
(a)の(d-1))。
【0244】次にステップg3では図24(c)の(d)
の評価資源保持部41に格納されておりかつ、割付対象
t265に割付け可能な資源AR, DRが存在するのでまず資源
ARについてステップg4以降を行なう。 <資源ARについての処理>次にステップg4においてま
ず、割付対象t265の使用中間命令i27が取り出され、ス
テップg5おいてコストパタン(間接参照, An, 未, -)
が生成され、コストパタン保持部502に格納される
(図24(b)の(d))。
【0245】次にステップg6においてコストパタン
(間接参照, An, 未)とマッチングするコストエントリで
ある図20(a)の(g)が取り出される。次にステップ
g7において取り出されたコストエントリのコスト 2
と、追跡対象rA1の生存区間長さの和であるrA1.LSNから
後順コスト値 2/1 = 2を算出する。
【0246】次にステップg8おいて求めた後順コスト
値を資源別総コスト保持部505の資源ARの内容に加え
る(図23(b)の(d-1))。次にステップg4に戻
り、割付対象t265の中間命令i28が取り出され、コスト
パタン(加算, 未, An, 未)が生成され、このコストパタ
ンとマッチングする図20(a)の(f)のコストパタン
が取り出される。当該コストパタンのコスト3と、追跡
対象rA1の生存区間長さの和であるrA1.LSNから後順コス
ト値 3/1 = 3が算出され、資源別総コスト保持部505
の資源ARの内容に加算されて図23(b)の(d-2)とな
る。
【0247】次にステップg4に戻るが、割付対象t265
の中間命令が全て取り出されたのでステップg3に戻
る。 <資源DRについての処理>資源DRについても資源ARと同
様にコストの算出を行なうと、図20(a)の(g)(f)の
コストエントリにマッチングするので結果的に資源別総
コスト保持部505は図23(b)の(d-3)となる。
【0248】次にステップg3に戻るが、評価資源保持
部41に格納されている資源AR, DR(図24(c)
(d))全てについてコスト計算が終了したのでステップ
g9を行なう。次にステップg9では割付対象t265と資
源継承関係にある割付対象が存在しないので追跡対象は
生成されない。
【0249】次にステップg1に戻るが、図23(c)
の(d-2)のように追跡対象保持部504が空なので後順
コスト値計算ルーチンの処理を終了し、ステップf4に
戻る。ここでさらに割付対象t265に関する資源別コスト
計算部39の処理内容を図10に示すフローチャートの
ステップf5以降を参照しながら説明する。
【0250】<割付対象t265に関するステップf5以降
の処理>まず、ステップf5では資源別総コスト保持部
505に格納されている値を資源別コスト保持部40に
格納する(図23(a)の(d-1))。次にステップf6
では資源別コスト保持部40の値が最小である資源 AR,
DRを求め、図24(c)の(d-1)のように評価資源保持
部41に格納する。
【0251】次にステップf7では資源別コスト保持部
40の値が最小である資源が複数個であるのでステップ
f8を行なう。次にステップf8では割付対象t265と生
存区間が重なる割付対象p1, a3 が存在するのでステッ
プf9を行う。次にステップf9、f10では資源別コ
スト保持部40の内容をゼロにし、追跡対象保持部50
4を空にし、割付対象p1, a3 を重複割付対象保持部5
07に格納する(図23(a)の(d-2)、図23(c)の
(d-3)、図24(d)の(d))。
【0252】次にステップf11、f12、f13では
重複割付対象保持部507から割付対象p1を取り出し、
資源別総コスト保持部505の内容をゼロにし、処理済
割付対象保持部506を空にする(図24(d)の(d-
1)、図23(b)の(d-4)、図24(a)の(d-2))。次
にステップf14では取り出した割付対象p1に対して追
跡対象rA2を生成し、rA2の各項目をrA2.ASO = p1rA2.LN
S = 1に設定する。次に図23(c)の(d-4)のようにrA
2を追跡対象保持部504に格納する。次に資源別コス
ト計算制御部501は後順コスト値計算ルーチンを呼び
出す(ステップf15) ここでさらに割付対象t265に関する資源別コスト計算部
39の処理内容を図11に示すフローチャートを参照し
ながら説明する。
【0253】<追跡対象rA2の処理>まず、ステップg
1、ステップg2では追跡対象rA2を追跡対象保持部5
04から取りだし、追跡対象保持部504から削除す
る。さらに追跡対象rA2の割付対象項目である割付対象p
1を処理済割付対象保持部506に格納する(図23
(c)の(d-5)、図24(a)の(d-3))。
【0254】次にステップg3では図24(c)の(d-
1)の評価資源保持部41に格納されておりかつ、割付対
象p1に割付け可能な資源AR, DR が存在するのでまず資
源ARについてステップg4以降を行なう。 <資源ARについての処理>割付対象p1の使用中間命令i
5, i27, i29, i30に対してコストパタンがそれぞれ、
(代入, An, 未, -)、(間接参照, 未, An, -)、(加算, A
n, IM, 左同)、(間接参照, 未, An, -)が生成され、そ
れぞれ図20(a)のコストエントリ(h)(i)(a)(i)とマ
ッチングとられ、追跡対象rA2の生存区間長の和であるr
A2.LNSから後順コスト値を求めると、図23(b)の(d
-5)のように資源別総コスト保持部505の資源ARの内
容が更新される(ステップg4〜ステップg8)。
【0255】<資源DRについての処理>次にステップg
3に戻り、資源DRが取り出され、割付対象p1の使用中間
命令i5, i27, i29, i30に対してコストパタンがそれぞ
れ、(代入, Dn, 未, -)、(間接参照, 未, Dn, -)、(加
算, Dn, IM, 左同)、(間接参照, 未, Dn, -)が生成さ
れ、それぞれ図20(a)のコストエントリ(h)(j)(a)
(i)とマッチングをとり、追跡対象rA2の生存区間長の和
であるrA2.LNSから後順コスト値を求めると、図23
(b)の(d-6)のように資源別総コスト保持部505の
資源DRの内容が更新される(ステップg4〜ステップg
8)。
【0256】次にステップg3に戻るが、条件を満たす
資源がすべて取り出されたのでステップg9を行う。次
にステップg9では割付対象p1と資源継承関係にある割
付対象が存在しないので新たに追跡対象は生成せずにス
テップg1へ戻る。次にステップg1では図23(c)
の(d-5)のように追跡対象保持部504が空であるので
後順コスト値計算ルーチンの処理を終了し、ステップf
15に戻る。
【0257】ここでさらに割付対象t265に関する資源別
コスト計算部39の処理内容を図10に示すフローチャ
ートのステップf16以降を参照しながら説明する。 <割付対象t265に関するステップf16以降の処理その
1>まず、ステップf16では得失保持部56に格納さ
れている値と、割付対象p1の優先度0.27から資源別コス
ト保持部40の資源AR, DRの内容は図23(a)の(d-
3)のように更新される。
【0258】次にステップf11、f12、f13では
重複割付対象保持部507から割付対象a3を取り出し、
資源別総コスト保持部505の内容をゼロにし、処理済
割付対象保持部506を空にする(図24(d)の(d-
2)、図23(b)の(d-7)、図24(a)の(d-4))。次
にステップf14では取り出した割付対象a3に対して追
跡対象rA3を生成し、rA3の各項目をrA3.ASO = a3,rA3.L
NS = 1に設定する。
【0259】次に図23(c)の(d-6)のようにrA3を追
跡対象保持部504に格納する。次に資源別コスト計算
制御部501は後順コスト値計算ルーチンを呼び出す
(ステップf15) ここでさらに割付対象t265に関する資源別コスト計算部
39の処理内容を図11に示すフローチャートを参照し
ながら説明する。
【0260】<追跡対象rA3の処理>まず、ステップg
1、ステップg2では追跡対象rA3を追跡対象保持部5
04から取りだし、追跡対象保持部504から削除す
る。さらに追跡対象rA3の割付対象項目である割付対象a
3を処理済割付対象保持部506に格納する(図23
(c)の(d-7)、図24(a)の(d-5))。
【0261】次にステップg3では図24(c)の(d-
1)の評価資源保持部41に格納されておりかつ、割付対
象a3に割付け可能な資源AR, DRが存在するのでステップ
g4以降を行なう。 <資源ARについての処理>割付対象a3の中間命令i20, i
26, i28に対してコストパタンがそれぞれ、(加算, 未,
未, 異)、(加算, 未, 未, 異)、(加算, An, 未, 未)が
生成され、図20のコストエントリ(k)(k)(l)とマッチ
ングがとられ、図23(b)の(d-8)のように資源別総
コスト保持部505の資源ARの内容が更新される(ステ
ップg4〜ステップg8)。
【0262】<資源DRについての処理>次にステップg
3に戻り、資源DRが取り出され、資源DRについてのも同
様に処理を行うなわれ、図23(b)の(d-9)のように
資源別総コスト保持部505の資源DRの内容が更新され
る(ステップg4〜ステップg8)。次にステップg3に
戻るが、条件を満たす資源がすべて取り出されたのでス
テップg9を行う。
【0263】次にステップg9では割付対象a3と資源継
承関係にある未割付けの割付対象であり、図24(a)
の(d-5)の処理済割付対象保持部506に格納されてい
ない割付対象x2, x3 に対して追跡対象rA4, rA5を図2
3(c)の(d-8)のように生成する。 <追跡対象rA4の処理>次にステップg1、ステップg
2では追跡対象rA4を追跡対象保持部504から取りだ
し、追跡対象保持部504から削除する。さらに追跡対
象rA4の割付対象項目であるx2を処理済割付対象保持部
506に格納する(図23(c)の(d-9)、図24
(a)の(d-6))。
【0264】次にステップg3では図24(c)の(d-
1)の評価資源保持部41に格納されておりかつ、割付対
象x2に割付け可能な資源AR, DRが存在するのでステップ
g4以降を行なう。 <資源ARについての処理>割付対象x2の使用中間命令i1
2, i13, i20に対してコストパタンがそれぞれ、(加算,
未, IM, 異)、(加算, An, IM, 未)、(加算, 未, An,
未)が生成され、図20の(a)のコストエントリ(m)
(b)(f)とマッチングがとられ、コスト値 8 が求めれら
れ、さらに追跡対象rA4の生存区間長の和の項目であるr
A4.LNS が4であるから後順コスト値 = 8 / 4 = 2 とな
り、図23(b)の(d-10)のように資源別総コスト保持
部505の資源ARの内容が更新される(ステップg4〜
ステップg8)。
【0265】<資源DRについての処理>次にステップg
3に戻り、資源DRが取り出され、資源DRについてのも同
様に処理を行うなわれ、図23(b)の(d-11)のように
資源別総コスト保持部505の資源DRの内容が更新され
る(ステップg4〜ステップg8)。次にステップg3に
戻るが、条件を満たす資源がすべて取り出されたのでス
テップg9を行う。
【0266】次にステップg9では割付対象x2と資源継
承関係にある唯一の割付対象a3が、図24(a)の(d-
6)のように処理済割付対象保持部506に格納されてい
ないるので新たな追跡対象は生成せずにステップg1へ
戻る。 <追跡対象rA5の処理>次にステップg1、ステップg
2では追跡対象rA5を追跡対象保持部504から取りだ
し、追跡対象保持部504から削除する。さらに追跡対
象rA5の割付対象項目であるx3を処理済割付対象保持部
506に格納する(図23(c)の(d-10)、図24
(a)の(d-7))。
【0267】次に前述に追跡対象rA4の割付対象x2と同
様に割付対象x3の使用中間命令i13,i26おける、資源AR,
DR の後順コスト値が求められ資源別総コスト保持部5
05の資源AR、資源DRの内容が図23(b)の(d-12)の
ように更新される(ステップg3〜ステップg8)。さら
にステップg9では割付対象x3と資源継承関係にある唯
一の割付対象a3が、図24(a)の(d-7)のように処理
済割付対象保持部506に格納されていないるので新た
な追跡対象は生成せずにステップg1へ戻る。
【0268】次にステップg1では図23(c)の(d-1
0)のように追跡対象保持部504が空であるので後順コ
スト値計算ルーチンの処理を終了し、ステップf15に
戻る。ここでさらに割付対象t265に関する資源別コスト
計算部39の処理内容を図10に示すフローチャートの
ステップf16以降を参照しながら説明する。
【0269】<割付対象t265に関するステップf16以
降の処理その2>まず、ステップf16では得失保持部
56に格納されている値と、割付対象a3の優先度2.67か
ら資源別コスト保持部40の資源AR, DRの内容は図23
(a)の(d-4)のように更新される。次にステップf1
1に戻るが、図24(d)の(d-2)のように重複割付対
象保持部507が空であるので資源別コスト計算部39
の処理を終了し、ステップb12へ戻る。
【0270】ここでさらに割付対象t265に関する資源別
コスト計算部39の処理内容を図7に示すフローチャー
トのステップb13以降を参照しながら説明する。 <割付対象t265に関するステップb13以降の処理>ま
ず、資源要素決定制御部38は図24(c)の(d-1)の
評価資源保持部41に属し、かつ図23(a)の(d-4)
の資源別コスト保持部40に格納されているコストが最
小の資源であり、かつ図19(b)の(d-3)の割付候補
資源要素保持部31に格納されている資源要素D1を t26
5に割り付ける(ステップb13)。
【0271】このような処理を全ての割付対象に対して
行い、各割付対象に資源要素を割り付ける(尚、以上割
付対象t265以降の割付対象については説明を省略す
る。) このように本発明によれば、プログラム中の各割付対象
の資源継承関係が広域的にどうなっているかを参照する
ため、より理想的な資源割付が行われる。ネストレベル
が深い箇所に優先してレジスタを割り付け、その割り付
け済みのレジスタをネストレベルが浅くなる箇所に拡散
してゆくようなスマートな割付結果が得られる。また使
用頻度が高い箇所に優先してレジスタを割り付け、その
割り付け済みのレジスタをネストレベルが低い箇所に拡
散してゆくようなスマートな割付結果も得られる。更に
引数レジスタ、戻り値レジスタ、破壊レジスタ等予め割
り付ける相手が決められた割付対象がその資源を周りに
拡げてゆくようなスマートな資源割り付けを実現でき
る。
【0272】割付結果が非常に洗練されたものになるた
め最終的に生成する機械語プログラムのプログラムサイ
ズおよび実行速度は一層向上する。上記実施形態は使用
コスト値計算、得失値計算、後順コスト値計算を順に行
う構成で計算処理を階層的に詳細化する形で説明してき
たが、本実施形態はその要旨を逸脱しない範囲で変更実
施することができるのはゆうまでもない。代表的な2つ
の応用例を以下に示す。
【0273】<応用例1>特にコンパイラが生成する目
的コードのサイズの縮小より実行時間の短縮を重視する
ときは割付対象xの使用中間命令iが存在するループレ
ベルまたはiの実行回数が解るときはその実行回数をス
テップc7において取り出されるコストエントリe1の
コストに乗じ、その乗じた値を総コスト保持部に加えて
もよい(尚、ループレベルは図8の使用コスト計算制御
部47のフローチャートのステップc4で検出され、使
用コスト計算部34に入力される。)。
【0274】<応用例2>またステップb9で求められ
る資源要素の集合RSに複数個の資源要素が存在する場
合、ステップb12における資源別コスト計算の後順コ
スト値計算においてステップb4で行った使用コスト計
算と同様の処理をすることにより集合RSから更に最適
な資源要素を選び出して割付対象xに割り付けてもよ
い。
【0275】この場合、先ず、ステップg5からg8を
更にステップc5からc9と同様な処理に置き換えて使
用コストを算出するようにし、更に図10、図11にお
ける資源別総コスト保持部505を総コスト保持部4
6、資源別コスト保持部40を使用コスト保持部35、
後順コスト値を使用コストに置き換える。そしてステッ
プb11で集合RSの要素が複数かどうかで判定するよ
うにする。
【0276】更にステップb12及びステップf1から
f6において割付対象xと資源継承関係にあるか、また
間接的に資源継承関係にある未割り付けの割付対象x1
に資源RSに属する資源要素を割り付けたときの使用コ
ストを求め、求めた使用コストを更に割付対象xから割
付対象x1に至る生存区間の長さで割り算した値を使用
コスト保持部35に保持させるようにする。
【0277】加えてステップf7において使用コスト保
持部35に保持されている最小コストの資源要素が複数
個存在するときステップf8を行い、ステップf8から
ステップf11において割付対象xと生存区間が重なり
かつ未割り付けである割付対象x2と資源継承関係にあ
るか、あるいは間接的に資源継承関係にある未割り付け
の割付対象x3に集合RSに属する資源要素を割り付け
たときの使用コストを求め、求めた値を更に割付対象x
2から割付対象x3に至る生存区間の長さで割り算した
値に−1を乗じた値を使用コスト保持部35に保持させ
るようにする。
【0278】このように使用コストを保持させた使用コ
スト保持部35の保持内容を参照し、保持内容が最小の
資源要素を割付対象xに割り付ける。 <応用例3>尚、本実施形態では、得失値として生存区
間の和を用いているが、これを割付対象の個数としても
よい。例えば、図14において、割付対象xから割付対
象x2に達するまでに存在する割付対象の個数3(割付
対象x、x5、x6)を用いて割付対象x2に割り付けられた
資源要素の得失値を1/3にしてもよい。
【0279】<応用例4>また、本実施形態では、正の
符号を持つ得失値と、負の符号を持つ得失値を求めてそ
れの和を最終的な得失値としているが、これを別々に使
用して、一方の得失値から割り付けレジスタの候補を絞
り、更にもう一方の得失値から割り付けレジスタを決定
してもよい。例えば、図15の割付対象xのレジスタ決
定において、割付対象xに割付可能な資源要素をD1,D2,
D3とする。このとき、割付け可能な資源要素のうち、先
ず負の得失値が最小の資源要素を割付対象xの割り付け
候補にする。但し、負の得失値が設定されていない資源
要素に関しては、負の得失値を0とする。よって資源要
素D2,D3の負の得失値は0になる。すると、資源要素D1
の負の得失値は『Px/(L1+L2)』であるので、負の得
失値が最大の資源要素はレジスタD2,D3となり、これを
新たに割付対象xの割付け候補にする。
【0280】次に正の得失値が最大の資源要素を割付対
象xに割り付ける。但し、正の得失値が設定されていな
い資源要素に関しては正の得失値を0とする。よって資
源要素D3の得失値は0となり、得失値が最大の資源要素
D2を割付対象xに割り付ける。
【0281】
【発明の効果】以上説明したように請求項1又は2記載
の資源割付装置によれば、生存区間が連続し合うような
位置関係にある複数個の割付対象群は生存区間長の短さ
に応じて得失値が増加され、また群中の割付対象のう
ち、割付済みの割付対象と生存区間が重複するものには
異なる資源要素が割り付けられるので、生存区間が連続
し合う複数個の割付対象が一律に同一の資源要素に割り
付けられることはなく、また生存区間の遠近が影響する
ように資源割付が行われる。そのため周辺の割り付け状
況が次回の資源割付に影響するようになり、転送命令の
削減数をより多くすることができる。
【0282】また請求項3記載の資源割付装置によれ
ば、得失値が減少されることによって割り付けるべき割
付対象からみて損失となるような位置の割付対象に割り
付けられている資源要素は低く見積もられるようになる
ため、周辺の割り付け状況が次回の資源割付に影響する
ようになり、転送命令の削減数をより多くすることがで
きる。
【0283】また請求項4記載の資源割付装置によれ
ば、未割り付けの割付対象が検出されることで割付済み
割付対象に割り付けられている資源要素の得失値が複数
回減じられ、他に比べて低く見積もられてしまうことを
防止できる。また請求項5記載の資源割付装置によれ
ば、使用頻度又はネストレベルが高い順に資源要素が割
り付けられてゆくため、生存区間の位置関係と、使用頻
度及びネストレベルとを考慮した資源割付を実現でき、
目的プログラムの品質を向上させることができる。
【0284】また請求項6記載の資源割付装置によれ
ば、得失値が減少されることによって割り付けるべき割
付対象からみて損失となるような位置の割付対象に割り
付けられている資源要素は低く見積もられるようになる
ため、周辺の割り付け状況が次回の資源割付に影響する
ようになり、転送命令の削減数をより多くすることがで
きる。
【0285】また請求項7記載の資源割付装置によれ
ば、得失値が増加されることによって割り付けるべき割
付対象からみて利得となるような位置の割付対象に割り
付けられている資源要素は高く見積もられるようになる
ため、周辺の割り付け状況が次回の資源割付に影響する
ようになり、転送命令の削減数をより多くすることがで
きる。
【0286】また請求項8記載の資源割付装置によれば
未割り付けの割付対象が検出されることで割付済み割付
対象に割り付けられている資源要素の得失値が複数回減
じられ、他に比べて低く見積もられてしまうことを防止
できる。また請求項9記載の資源割付装置によれば、得
失値記憶部に記憶されている各資源要素の得失値が、第
1及び第2の増加部によって増加され、得失値記憶部に
記憶されている各資源要素の得失値が第1及び第2の減
少部によって減少させられる。そのため割り付けるべき
割付対象から見て同一の資源要素が利得になる箇所と損
失になる箇所とに割り付けられていても、当該資源要素
がどれだけの利得あるいは損失をもたらすかを客観的に
評価でき、より綿密に資源割付を行える。または得失値
記憶部は全ての資源要素と、各々の資源要素の得失値の
累計の初期値とを対応づけて記憶しているので全ての資
源要素が損失になるような位置に割り付けられていれ
ば、どの割付対象にも割り付けられてない資源要素の得
失値が大きく見積もられるようになる。そのためどの割
付対象にも割り付けられてない資源要素を割り付けるべ
き割付対象に割り付けることができる。
【0287】また請求項10記載の資源割付装置によれ
ば、推定値を用いるか得失値を用いるかが切り換えら
れ、推定値を用いた場合、コードサイズ及び実行時間を
資源割付に反映できるのでマイクロプロセッサの持つ命
令の詳しいコスト情報を十分に活用でき、3種類以上の
機能に別れている資源から割付対象を割付けるのにふさ
わしい複数の資源要素を選び出せる。機能が異なる資源
を複数個備える組み込み用途向けのマイクロプロセッサ
のプログラムの開発にあたって本発明のコンパイラを使
用すれば、そのマイクロプロセッサが備えている機能を
充分に発揮する目的プログラムを作成することができ
る。
【0288】また、請求項11記載の資源割付装置によ
れば、割付対象の定義命令及び使用命令を機械語命令化
するのにどの資源の資源要素が適切であるかが綿密に判
定されるのでターゲットマシンのマイクロプロセッサが
備えている機能を充分に発揮する目的プログラムを作成
することができる。また、請求項12記載の資源割付装
置によれば、割り付け済の資源要素について算出された
得失値が複数個の異なる資源の資源要素同士で同一の大
きさになった場合、優先度がより低い全ての割付対象に
相応しいと予測された資源要素をもとに、割付手段が割
り付けるべき割付対象に資源要素を割り付けるので、得
失値による比較では優劣が付け難い場合に、より綿密な
資源要素の選考を行うことができる。その結果として優
先度がより低い全ての割付対象の定義命令、使用命令の
実行時間および/又はコードサイズが小さくなるような
資源割り付けを行うことができる。更にこのように資源
要素を割り付ければ、次の割付対象の割り付ける際にそ
の資源要素を継承できるので互いに生存区間が連続しあ
う割付対象が全て同一の資源要素を割り付ける可能性が
高まる。
【0289】また、請求項13記載の資源割付装置によ
れば、優先度がより低く、割り付けるべき割付対象より
後に割り付けられる割付対象のうち、生存区間が連続し
合うものの定義命令、使用命令の実行時間および/又は
コードサイズの推定値の大きさと、および、未割り付け
の割付対象が、割り付けるべき割付対象からどれだけ遠
いかとに基づいて予測が行われるので割り付けるべき割
付対象に近い位置にある割付対象の定義命令、使用命令
の実行時間および/又はコードサイズが大きく見積もら
れ、割り付けるべき割付対象に遠い位置にある割付対象
の定義命令、使用命令の実行時間および/又はコードサ
イズが小さく見積もられる。そのため互いに生存区間が
連続しあう割付対象が同一の資源要素を割り付ければ可
能性が高まる。その結果として後順の割付対象について
実行時間および/又はコードサイズが小さくなるような
資源要素の予測を確実に行うことができる。
【0290】また、請求項14または15記載の資源割
付装置によれば、優先度がより低く、割り付けるべき割
付対象より後に割り付けられる割付対象のうち、生存区
間が重なる側の割付対象の定義命令、使用命令の実行時
間および/又はコードサイズの推定値の比較と、およ
び、未割り付けの割付対象から割り付けるべき割付対象
がどれだけ遠いかとに基づいて予測が行われるので後順
の割付対象について実行時間および/又はコードサイズ
が小さくなるような資源要素の予測を確実に行うことが
できる。
【0291】また、請求項16〜18記載の何れかの資
源割付装置によれば、割付対象の定義命令及び使用命令
を機械語命令化するのにどの資源の資源要素が適切であ
るかが綿密に判定されるので、後順の割付対象について
実行時間および/又はコードサイズが小さくなるような
資源要素の予測がより確実になる。また、請求項19〜
22記載の何れかの資源割付装置によれば、引数レジス
タ、戻り値レジスタ、破壊レジスタを他の割付対象に割
り付けることができ、引数レジスタ、戻り値レジスタ、
破壊レジスタの格納値をそのまま利用できるような資源
割付が行える。そのため転送命令の削減数をより多くす
ることができる。
【0292】また、請求項23〜26記載の何れかの資
源割付装置によれば、割り付けられるべき割付対象の生
存区間長と集計部によって集計された生存区間長との和
の逆数が算出され、算出結果が、逆数算出部によって生
存区間の短さとされるので生存区間長の和を資源割付に
反映させることができ、転送命令の削減数をより多くす
ることができる。。
【0293】また、請求項27又は28記載の資源割付
装置によれば、プログラム中の割付対象と、第1及び第
2の集合化手段によって集合化された生存区間継承集合
とが書き込み手段によって対応づけられて、生存区間継
承関係集合記憶部に書き込まれるので、生存区間の継
承、非継承をより効率良く判定することができる。
【0294】また、請求項29記載の資源割付装置によ
れば、割り付けるべき割付対象には既に割り付けられた
資源要素のうち、得失値が大きいものが割り付けられる
ので、資源要素を割付対象に割付ける過程において、割
付対象への資源要素の割付け状況を綿密に判断すること
ができる。そのため、メモリ、レジスタ間およびレジス
タ、レジスタ間の転送命令も少なくなるので、最終的に
生成される機械語プログラムのプログラムサイズおよび
実行速度を向上させることができる。特にレジスタ数が
少数であるターゲットマシンに対して資源割付けを行う
場合、上述のプログラムサイズおよび実行速度の向上は
特に顕著になる。
【0295】また、請求項30記載の資源割付装置によ
れば、得失値が減少されることによって、割り付けるべ
き割付対象からみて損失となるような位置の割付対象に
割り付けられている資源要素は低く見積もられるように
なるため、周辺の割り付け状況が次回の資源割付に影響
するようになり、転送命令の削減数をより多くすること
ができる。
【0296】また、請求項31記載の資源割付装置によ
れば、得失値が減少されることによって、割り付けるべ
き割付対象からみて損失となるような位置の割付対象に
割り付けられている資源要素は低く見積もられるように
なるため、周辺の割り付け状況が次回の資源割付に影響
するようになり、転送命令の削減数をより多くすること
ができる。
【0297】また、請求項32記載の資源割付装置によ
れば、得失値が増加されることによって、割り付けるべ
き割付対象からみて利得となるような位置の割付対象に
割り付けられている資源要素は高く見積もられるように
なるため、周辺の割り付け状況が次回の資源割付に影響
するようになり、転送命令の削減数をより多くすること
ができる。
【図面の簡単な説明】
【図1】実施形態に係る資源割付装置13の構成図であ
る。
【図2】割付資源要素決定部26の構成図である。
【図3】使用コスト計算部34の構成図である。
【図4】(a)推定利得計算部36の構成図である。 (b)資源別コスト計算部39の構成図である。
【図5】資源割付制御部27のフローチャートである。
【図6】資源要素決定制御部38のフローチャートであ
る。
【図7】使用コスト計算制御部47の制御内容を示すフ
ローチャートである。
【図8】利得推定制御部51の制御内容を示すフローチ
ャートである。
【図9】得失計算のフローチャートである。
【図10】資源別コスト計算制御部501の制御内容を
示すフロ−チャ−トである。
【図11】後順コスト計算ルーチンのフロ−チャ−トで
ある。
【図12】資源とコストとの対応を表す図である。
【図13】割付対象に各資源の資源要素を割り付けるこ
とでその割付対象が定義、使用されている中間命令のコ
ストがどう増減するかを示した図である。
【図14】割付済みの割付対象の得失値がどう増減する
かを示した説明図である。
【図15】割付済みの割付対象の得失値がどう増減する
かを示した説明図である。
【図16】未割り付けの割付対象の後順コスト値がどう
いう値になるかを示した説明図である。
【図17】割付対象保持部21の保持内容の一例を示す
図である。
【図18】割付対象保持部21の保持内容の一例を示す
図である。
【図19】(a)割付状況テーブルの保持内容の推移の
一例を示す図である。 (b)割付候補資源要素保持部31の保持内容の一例を
示す図である。
【図20】(a)演算コストテーブルの一例を示す図で
ある。 (b)使用コスト保持部35の推移の一例を示す図であ
る。
【図21】(a)利得保持部37の保持内容の推移の一
例を示す図である。 (b)得失保持部56の保持内容の推移の一例を示す図
である。 (c)追跡対象保持部52の保持内容の推移の一例を示
す図である。
【図22】(a)処理済割付対象保持部53の保持内容
の推移の一例を示す図である。 (b)既損失割付対象保持部54の保持内容の推移の一
例を示す図である。 (c)重複割付対象保持部55の保持内容の推移の一例
を示す図である。
【図23】(a)資源別コスト保持部40の保持内容の
推移の一例を示す図である。 (b)資源別総コスト保持部505の保持内容の推移の
一例を示す図である。 (c)追跡対象保持部504の保持内容の推移の一例を
示す図である。
【図24】(a)処理済割付対象保持部506の保持内
容の推移の一例を示す図である。 (b)コストパタン保持部502の保持内容の推移の一
例を示す図である。 (c)評価資源保持部41の保持内容の推移の一例を示
す図である。 (d)重複割付対象保持部507の保持内容の推移の一
例を示す図である。
【図25】高級言語で書かれたプログラムの一例を示す
図である。
【図26】プログラム例に対する中間コードと割付対象
の生存区間を示す図である。
【図27】図26中の割付対象t265について得失値が計
算される際、資源継承関係が辿られる割付対象を図示し
た図である。
【図28】プログラムと、当該プログラム中の割付対象
とを示した図である。
【図29】コンパイラの構成図である。
【図30】(a)〜(c)コンパイラによる処理過程を
示す図である。
【図31】従来の資源割付装置63の構成を示す図であ
る。
【図32】(a)(b)干渉グラフと、当該干渉グラフ
を頂点結合することで干渉グラフがどう変遷したかを示
す図である。
【図33】(a)〜(i)干渉グラフが、グラフ縮退さ
れてゆく様子を示す図である。
【図34】頂点結合による問題点を表した図である。
【符号の説明】
11 構文解析装置 12 最適化装置 13 資源割付装置 21 割付対象保持部 22 割付対象生成部 23 生存区間重複割付対象検出部 24 資源継承割付対象検出部 25 割付優先度計算部 26 割付資源要素決定部 27 資源割付制御部 31 割付候補資源要素保持部 32 割付可能資源要素検出部 34 使用コスト計算部 35 使用コスト保持部 36 推定利得計算部 37 利得保持部 38 資源要素決定制御部 39 資源別コスト計算部 40 資源別コスト保持部 41 評価資源保持部 43 パタン保持部 44 演算コスト保持部 46 総コスト保持部 47 使用コスト計算制御部 51 利得推定制御部 52 追跡対象保持部 53 処理済割付対象保持部 54 既損失割付対象保持部 55 重複割付対象保持部 56 得失保持部 63 資源割付装置 501 資源別コスト計算制御部 502 コストパタン保持部 503 資源演算コスト保持部 504 追跡対象保持部 505 資源別総コスト保持部 506 処理済割付対象保持部 507 重複割付対象保持部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 小谷 謙介 大阪府門真市大字門真1006番地 松下電器 産業株式会社内

Claims (32)

    【特許請求の範囲】
  1. 【請求項1】 高級言語で書かれたプログラムを機械語
    プログラムに翻訳するコンパイラに用いられ、プログラ
    ミング言語で記述されたプログラムの中の変数と生存区
    間の組である割付対象を複数個生成し、生成した割付対
    象に順次レジスタ、メモリ等のハードウェアである資源
    が有する資源要素を割り付ける資源割付装置であって、 次に割り付けるべき割付対象にどの資源要素が適切かを
    示す得失値を、資源要素に既に割り付けられた割付対象
    の生存区間と次に割り付けるべき割付対象の生存区間と
    がプログラムにおいてどのような位置関係にあるかに基
    づいて、各資源要素について算出する得失値算出手段
    と、 各資源要素について算出された得失値の大きさに基づい
    て何れかの資源要素を割り付けるべき割付対象に割り付
    ける割付手段と、 全ての割付対象が割り付けられるまで得失値算出手段及
    び割付手段の起動を繰り返す制御手段とを備えることを
    特徴とする資源割付装置。
  2. 【請求項2】 請求項1記載の資源割付装置は、 プログラム中の各割付対象の位置関係を判定する位置関
    係判定手段を有し、 前記位置関係判定手段は、 既に資源要素が割り付けられた割付対象の生存区間が、
    割り付けるべき割付対象の生存区間と重複しているかを
    判定する重複関係判定手段と、 資源要素が既に割り付けられた割付対象の生存区間と、
    割り付けるべき割付対象の生存区間とが連続しているか
    を判定する割付済み−被割付間連続判定手段とを備え、 前記得失値算出手段は、 割付済み−被割付間連続判定手段によって割り付けるべ
    き割付対象と生存区間が連続していることが判定される
    と、資源要素が既に割り付けられた割付対象から割り付
    けるべき割付対象までの生存区間長の短さに応じて、連
    続が判定された割付済みの割付対象に既に割り付けられ
    ている資源要素の得失値を増加させる第1の増加部と、 前記割付手段は、 重複関係判定手段によって生存区間が重複していること
    が判定された重複している生存区間を有する割付済みの
    割付対象に割り付けられている資源要素を割り付けるべ
    き割付対象に割り付けず、生存区間が重複していないこ
    とが判定された割付済みの割付対象のうち、得失値が最
    大の資源要素を割り付けるべき割付対象に割り付けるこ
    とを特徴とする資源割付装置。
  3. 【請求項3】 請求項2記載の資源割付装置において位
    置関係判定手段は、 資源要素が既に割り付けられた割付対象と重なる生存区
    間を有する未割り付けの割付対象を検出する第1の割付
    済み側重なり割付対象検出手段と、 検出された未割り付けの割付対象の生存区間と、割り付
    けるべき割付対象の生存区間とが連続しているかを判定
    する未割り付け−被割付間連続判定手段とを備え、 前記得失値算出手段は、 連続すると判定されると、第1の割付済み側重なり割付
    対象検出手段によって検出された未割り付けの割付対象
    から割り付けるべき割付対象までの生存区間長の短さに
    応じて、当該割付済みの割付対象に割り付けられている
    資源要素の得失値を減少させる第1の減少部を備えるこ
    とを特徴とする資源割付装置。
  4. 【請求項4】 請求項3記載の資源割付装置において第
    1の割付済み側重なり割付対象検出手段によって複数個
    の未割り付けの割付対象が判定された場合、 前記未割り付け−被割付間連続判定手段は検出された複
    数個の未割り付けの割付対象のうち、何れかのものの生
    存区間と、割り付けるべき割付対象の生存区間とが連続
    しているかを判定することを特徴とする資源割付装置。
  5. 【請求項5】 請求項3記載の資源割付装置は、 プログラムにおける割付対象の使用頻度及び/又は生存
    区間のネストレベルが反映された割付対象の優先度を各
    割付対象に対応づけて記憶する優先度記憶手段を備え、 前記得失値算出手段及び割付手段は、優先度記憶手段が
    記憶する優先度順に、割り付けるべき割付対象を決定す
    ることを特徴とする資源割付装置。
  6. 【請求項6】 請求項5記載の資源割付装置において位
    置関係判定手段は、 各資源要素について得失値算出手段によって算出された
    得失値が複数個の資源要素同士で同一の大きさになった
    場合、割り付けるべき割付対象の生存区間と重なる生存
    区間を有する未割り付けの割付対象を検出する被割付側
    重なり割付対象検出手段と、 検出された割付対象の生存区間と、資源要素が既に割り
    付けられた割付対象の生存区間とが連続しているかを判
    定する未割り付け−割付済み間連続判定手段とを備え、 前記得失値算出手段は、 被割付側重なり割付対象検出部によって検出された割付
    対象の優先度を検出する優先度検出部と、 割付済みの割付対象から検出された未割り付けの割付対
    象までの生存区間長の短さを算出する第1の短さ算出部
    と、 検出された優先度に算出された短さを乗じ、その乗算結
    果に応じて当該割付済みの資源要素の得失値を減少させ
    る第2の減少部とを備えることを特徴とする資源割付装
    置。
  7. 【請求項7】 請求項6記載の資源割付装置において位
    置関係判定手段は、 資源要素が既に割り付けられた割付対象の生存区間と重
    なる生存区間を有する未割り付けの割付対象を検出する
    第2の割付済み側重なり割付対象検出手段と、 被割付側重なり割付対象検出手段によって検出された未
    割り付けの割付対象の生存区間と、第2の割付済み側重
    なり割付対象検出手段によって検出された未割り付けの
    割付対象の生存区間とが連続しているかを判定する未割
    り付け−未割り付け間連続判定手段とを備え、 前記得失値算出手段は、 被割付側重なり割付対象検出手段によって検出された未
    割り付けの割付対象から第2の割付済み側重なり割付対
    象検出手段によって検出された未割り付けの割付対象ま
    での生存区間長の短さを算出する第2の短さ算出部と、 検出された優先度に算出された短さを乗じ、その乗算結
    果に応じて割付済みの割付対象に割り付けられた資源要
    素の得失値を増加させる第2の増加部とを備えることを
    特徴とする資源割付装置。
  8. 【請求項8】 請求項7記載の資源割付装置において第
    2の割付済み側重なり割付対象検出手段によって複数個
    の未割り付けの割付対象が判定された場合、 前記未割り付け−未割り付け間連続判定手段は検出され
    た複数個の未割り付けの割付対象のうち、何れかのもの
    の生存区間と、割り付けるべき割付対象の生存区間とが
    連続しているかを判定することを特徴とする資源割付装
    置。
  9. 【請求項9】 請求項7記載の資源割付装置は、 全ての資源要素と、各々の資源要素の得失値の初期値と
    を対応づけて記憶する得失値記憶部を備え、 第1及び第2の増加部は、得失値記憶部に記憶されてい
    る各資源要素の得失値を増加させ、第1及び第2の減少
    部は得失値記憶部に記憶されている各資源要素の得失値
    を減少させることを特徴とする資源割付装置。
  10. 【請求項10】 請求項9記載の資源割付装置は更に、 プログラムにおいて各資源の資源要素を割り付けると、
    割り付けるべき割付対象が定義されている全ての定義命
    令及び使用されている全ての使用命令の実行サイクルお
    よび/又はコードサイズの集計値がどれだけになるかを
    割り付けるべき割付対象と各資源要素との組み合わせに
    ついてその集計値の推定値を算出することで推定する推
    定手段と、 各資源要素毎の推定結果である推定値を比較し、推定値
    が最小である資源要素が1つか複数かを判定する資源要
    素単複判定手段とを備え、 前記割付手段は1つと判定された場合、割り付けるべき
    割付対象に推定値が最小である資源要素を割り付け、複
    数個と判定された場合、得失値が最大の資源要素を割り
    付けるべき割付対象に割り付けることを特徴とする資源
    割付装置。
  11. 【請求項11】 請求項10記載の資源割付装置におい
    て推定手段は、 機械語命令の命令フォーマットを用いてプログラム中の
    割付対象の定義命令及び使用命令を表現した情報である
    命令パタンをプログラム中における当該割付対象の全て
    の定義命令及び使用命令について出力する命令パタン出
    力部と、 機械語命令の各オペランドに各資源の資源要素を用いた
    場合の当該定義命令及び使用命令の実行サイクルおよび
    /又はコードサイズを示すコストを命令パタン出力部に
    よって出力され得る命令パタンのそれぞれに対応づけて
    記憶するコスト記憶部と、 コスト記憶部から出力された命令パタンに対応するコス
    トを取り出し、取り出したコストを各資源要素毎に集計
    し、集計した集計値を推定値とするコスト集計部とを備
    えることを特徴とする資源割付装置。
  12. 【請求項12】 請求項10記載の資源割付装置は更
    に、 各資源要素について得失値算出手段によって算出された
    得失値が複数個の異なる資源の資源要素同士で同一の大
    きさになった場合、割り付けるべき割付対象より優先度
    が低く、割り付けるべき割付対象の後に割り付けられる
    全ての未割り付けの割付対象に最も相応しい資源要素を
    予測する予測手段を備え、 前記割付手段は、 予測手段によって予測された資源要素を割り付けるべき
    割付対象に割り付けることを特徴とする資源割付装置。
  13. 【請求項13】 請求項12記載の資源割付装置におい
    て前記予測手段は、 割り付けるべき割付対象が有する生存区間と連続する生
    存区間を有し且つ当該割付対象より優先度が低い未割り
    付けの割付対象を全て検出する第1の後順割付対象検出
    手段と、 検出された各割付対象に各資源要素を割り付けたとする
    と当該割付対象が定義されている全ての定義命令及び使
    用されている全ての使用命令の実行サイクルおよび/又
    はコードサイズの集計値がどれだけになるかを第1の後
    順割付対象検出手段に検出された全ての割付対象と各資
    源要素との組み合わせについて当該集計値の推定値を算
    出することにより推定する第1の推定手段と、 第1の後順割付対象検出手段によって検出された各割付
    対象と割り付けるべき割付対象との間に介在する生存区
    間長を第1の後順割付対象検出手段によって検出された
    各割付対象毎に計数する第1の生存区間長計数手段と、 検出された各割付対象と各資源要素との組み合わせに対
    して第1の推定手段によって算出された推定値にその割
    付対象に対して計数された生存区間長の短さを重みとし
    て重み付けを行う第1の重み付け手段と、 第1の重み付け手段によって重み付けられた推定値を各
    資源要素毎に集計する第1の集計手段と、 第1の集計手段によって集計された集計結果が最も小さ
    い資源要素を割り付けるべき割付対象より優先度が低い
    未割り付けの割付対象に最も相応しい資源要素と判定す
    る第1の最適資源要素判定手段とを備えることを特徴と
    する資源割付装置。
  14. 【請求項14】 請求項13記載の資源割付装置におい
    て予測手段は、 第1の最適資源要素判定手段によって複数個の資源要素
    が最も相応しいと判定された場合、割り付けるべき割付
    対象と生存区間が重なる未割り付けの割付対象及びその
    未割り付けの割付対象の生存区間と連続する生存区間を
    有する未割り付けの割付対象を検出する第2の後順割付
    対象検出手段と、 第2の後順割付対象検出手段によって検出された未割り
    付けの割付対象に各資源要素を割り付けたとすると、検
    出された各割付対象が定義されている全ての定義命令及
    び使用されている全ての使用命令の実行サイクルおよび
    /又はコードサイズの集計値がどれだけになるかを検出
    された割付対象と各資源要素との組み合わせについて当
    該集計値の推定値を算出することにより推定する第2の
    推定手段と、 割り付けるべき割付対象が有する生存区間と生存区間が
    重なる未割り付けの割付対象と、その重なる側の割付対
    象の生存区間と連続する生存区間を有する割付対象との
    間に介在する生存区間長を当該第2の後順割付対象検出
    手段によって検出された各割付対象毎に計数する第2の
    生存区間長計数手段と、 第2の後順割付対象検出手段によって未割り付けの割付
    対象と各資源要素との組み合わせに対して第2の推定手
    段によって推定された推定値にその割付対象に対して計
    数された生存区間長の短さと、各割付対象の優先度とを
    重みとして重み付けを行う第2の重み付け手段と、 第2の重み付け手段によって重み付けられた各割付対象
    の推定値を資源要素毎に集計する第2の集計手段と、 第2の集計手段によって集計された各資源要素について
    の集計値が最も大きい資源要素を割り付けるべき割付対
    象より後に割り付けられる全ての未割り付けの割付対象
    に最も相応しい資源要素と判定する第2の最適資源要素
    判定手段とを備えることを特徴とする資源割付装置。
  15. 【請求項15】 請求項14記載の資源割付装置におい
    て第1及び第2の重み付け手段は、 第1及び第2の生存区間長計数手段によって計数された
    割付対象間の生存区間長が0であった場合、1を生存区
    間長の短さとして重み付けを行い、計数された生存区間
    長が0でない場合、その生存区間長の逆数を算出し、算
    出した生存区間長の逆数を生存区間長の短さとして重み
    付けを行うことを特徴とする資源割付装置。
  16. 【請求項16】 請求項14又は15記載の資源割付装
    置において資源割付装置は、 機械語命令の命令フォーマットを用いてプログラム中の
    割付対象の定義命令及び使用命令を表現した情報である
    命令パタンを複数個記憶し、また機械語命令の各オペラ
    ンドに各資源の資源要素を用いた場合のプログラム中の
    割付対象の定義命令及び使用命令の実行サイクルおよび
    /又はコードサイズを示すコストをそれぞれの命令パタ
    ンに対応づけて記憶するコスト記憶手段を備え、 前記第1の推定手段は、 第1の後順割付対象検出手段によって検出された未割り
    付けの割付対象の全ての定義命令及び使用命令に対応す
    る命令パタンを読み出し、読み出した命令パタンを出力
    する第1の命令パタン出力部と、 コスト記憶手段から出力された命令パタンに対応するコ
    ストを取り出し、取り出したコストを各資源要素毎に集
    計し、集計した集計値を推定値とする第1のコスト集計
    部とを備え、 第2の推定手段は、 第2の後順割付対象検出手段によって検出された未割り
    付けの割付対象の全ての定義命令及び使用命令に対応す
    る命令パタンを読み出し、読み出した命令パタンを出力
    する第2の命令パタン出力部と、 コスト記憶手段から出力された命令パタンに対応するコ
    ストを取り出し、取り出したコストを各資源要素毎に集
    計し、集計した集計値を推定値とする第2のコスト集計
    部とを備えることを特徴とする資源割付装置。
  17. 【請求項17】 請求項11又は16記載の資源割付装
    置において命令パタンは、演算結果の格納先がどのオペ
    ランドであるか、何れのオペランドにも一致しないかを
    示す情報を有し、 格納先がオペランドである命令パタンに対応するコスト
    はそうでない命令パタンに対応するコストよりも小さい
    ことを特徴とする資源割付装置。
  18. 【請求項18】 請求項11又は16記載の資源割付装
    置において命令パタンは、対応する使用命令が、生存区
    間の終了点であるか、そうでないかを示す情報を有し、 終了点である命令パタンに対応するコストはそうでない
    命令パタンに対応するコストよりも小さいことを特徴と
    する資源割付装置。
  19. 【請求項19】 請求項9記載の資源割付装置において
    資源割付装置は更に、 割り付けるべき資源要素が予め定められている割付対象
    を前記プログラムから検出する予約割付対象検出手段
    と、 予約割付対象検出手段が検出した割付対象に割り付ける
    べき資源要素を記憶する予約資源要素記憶手段と、 割付手段は予約割付対象検出手段によって検出された割
    付対象に割り付けられるべき資源要素を割り付け、割り
    付けた後に最大の優先度の割付対象に資源要素の何れか
    を割り付けることを特徴とする資源割付装置。
  20. 【請求項20】 請求項19記載の資源割付装置におい
    て前記予約割付対象検出手段は、前記プログラムから関
    数呼び出しの引数を保持する割付対象を検出し、前記予
    約資源要素記憶手段は当該割付対象に割り付けるべき引
    数レジスタを記憶することを特徴とする資源割付装置。
  21. 【請求項21】 請求項19記載の資源割付装置におい
    て前記予約割付対象検出手段は、前記プログラムから関
    数呼び出しの戻り値を保持する割付対象を検出し、前記
    予約資源要素記憶手段は当該割付対象に割り付けるべき
    戻り値レジスタを記憶することを特徴とする資源割付装
    置。
  22. 【請求項22】 請求項19記載の資源割付装置におい
    て前記予約割付対象検出手段は、前記プログラムから値
    が書き換えられてもよい割付対象を検出し、前記予約資
    源要素記憶手段は当該割付対象に割り付けるべき破壊レ
    ジスタを記憶することを特徴とする資源割付装置。
  23. 【請求項23】 請求項2〜9記載の何れかの資源割付
    装置は更に、 プログラム中の各割付対象を当該割付対象の開始点で生
    存区間が終了する全ての割付対象と、当該割付対象の終
    了点で生存区間が始まる全ての割付対象とからなる集合
    である生存区間継承関係集合に対応づけて記憶する生存
    区間継承関係集合記憶手段を備え、 割付済み−被割付間連続判定手段は、 割り付けるべき割付対象についての生存区間継承関係集
    合を参照し、当該生存区間継承関係集合に割付済みの割
    付対象が存在するか否かを判定する第1の判定部と、 存在しなければ、生存区間継承関係集合内の他の割付対
    象を取り出し、取り出した割付対象についての生存区間
    継承関係集合を参照し、当該生存区間継承関係集合に割
    付済みの割付対象が存在するかを判定する第2の判定部
    と、 存在することが判定されるまで第2の判定部の起動を繰
    り返させる制御部とを備え、 得失値算出手段は、 検出結果とされた割付対象の生存区間長を集計する集計
    部と、 割り付けるべき割付対象の生存区間長と集計部によって
    集計された生存区間長との和の逆数を算出し、算出結果
    を生存区間の短さとする逆数算出部とを備えることを特
    徴とする資源割付装置。
  24. 【請求項24】 請求項3〜9記載の何れかの資源割付
    装置は更に、 プログラム中の各割付対象を、当該割付対象の開始点で
    生存区間が終了する全ての割付対象と、当該割付対象の
    終了点で生存区間が始まる全ての割付対象とからなる集
    合である生存区間継承関係集合に対応づけて記憶する生
    存区間継承関係集合記憶手段を備え、 未割り付け−被割付間連続判定手段は、 割り付けるべき割付対象についての生存区間継承関係集
    合を参照し、当該生存区間継承関係集合に第1の割付済
    み側重なり割付対象検出手段によって検出された未割り
    付けの割付対象が存在するか否かを判定する第1の判定
    部と、 存在しなければ、生存区間継承関係集合内の他の割付対
    象を取り出し、取り出した割付対象についての生存区間
    継承関係集合を参照し、当該生存区間継承関係集合に第
    1の割付済み側重なり割付対象検出手段によって検出さ
    れた未割り付けの割付対象が存在するかを判定する第2
    の判定部と、 存在することが判定されるまで第2の判定部の起動を繰
    り返させる制御部とを備え、 得失値算出手段は、 検出結果とされた割付対象の生存区間長を集計する集計
    部と、 割り付けるべき割付対象の生存区間長と集計部によって
    集計された生存区間長との和の逆数を算出し、算出結果
    を生存区間の短さとする逆数算出部とを備えることを特
    徴とする資源割付装置。
  25. 【請求項25】 請求項6〜9記載の何れかの資源割付
    装置は更に、 プログラム中の各割付対象を当該割付対象の開始点で生
    存区間が終了する全ての割付対象と、当該割付対象の終
    了点で生存区間が始まる全ての割付対象とからなる集合
    である生存区間継承関係集合に対応づけて記憶する生存
    区間継承関係集合記憶手段を備え、 未割り付け−割付済み間連続判定手段は、 被割付側重なり割付対象検出手段によって検出された未
    割り付けの割付対象についての生存区間継承関係集合を
    参照し、当該生存区間継承関係集合に割付済みの割付対
    象が存在するか否かを判定する第1の判定部と、 存在しなければ、生存区間継承関係集合内の他の割付対
    象を取り出し、取り出した割付対象についての生存区間
    継承関係集合を参照し、当該生存区間継承関係集合に割
    付済みの割付対象が存在するかを判定する第2の判定部
    と、 存在することが判定されるまで、第2の判定部の起動を
    繰り返させる制御部とを備え、 得失値算出手段は、 検出結果とされた割付対象の生存区間長を集計する集計
    部と、 割り付けるべき割付対象の生存区間長と集計部によって
    集計された生存区間長との和の逆数を算出し、算出結果
    を生存区間の短さとする逆数算出部とを備えることを特
    徴とする資源割付装置。
  26. 【請求項26】 請求項7〜9記載の何れかの資源割付
    装置は更に、 プログラム中の各割付対象を、当該割付対象の開始点で
    生存区間が終了する全ての割付対象と、当該割付対象の
    終了点で生存区間が始まる全ての割付対象とからなる集
    合である生存区間継承関係集合に対応づけて記憶する生
    存区間継承関係集合記憶手段を備え、 未割り付け−未割り付け間連続判定手段は、 被割付側重なり割付対象検出手段によって検出された未
    割り付けの割付対象についての生存区間継承関係集合を
    参照し、当該生存区間継承関係集合に第2の割付済み側
    重なり割付対象検出手段によって検出された未割り付け
    の割付対象が存在するか否かを判定する第1の判定部
    と、 存在しなければ、生存区間継承関係集合内の他の割付対
    象を取り出し、取り出した割付対象についての生存区間
    継承関係集合を参照し、当該生存区間継承関係集合に第
    2の割付済み側重なり割付対象検出手段によって検出さ
    れた未割り付けの割付対象が存在するかを判定する第2
    の判定部と、 存在することが判定されるまで第2の判定部の起動を繰
    り返させる制御部とを備え、 得失値算出手段は、 検出結果とされた割付対象の生存区間長を集計する集計
    部と、 割り付けるべき割付対象の生存区間長と集計部によって
    集計された生存区間長との和の逆数を算出し、算出結果
    を生存区間の短さとする逆数算出部とを備えることを特
    徴とする資源割付装置。
  27. 【請求項27】 請求項23〜26記載の何れかの資源
    割付装置において割付対象の生存区間は、当該生存区間
    によって占められるプログラム中の開始点から終了点ま
    での命令位置情報で表され、 集計部は命令位置情報の数を集計し、集計値を生存区間
    長とすることを特徴とする資源割付装置。
  28. 【請求項28】 請求項27記載の資源割付装置におい
    て、割付対象の生存区間の開始点及び終了点は、プログ
    ラム中の命令位置情報で表され、 資源割付装置は更に、 プログラム中の割付対象と、各割付対象の生存区間の開
    始点に相当する命令位置情報と、各割付対象の生存区間
    の終了点に相当する命令位置情報とを対応づけて記憶す
    る開始終了点記憶手段と、 開始終了点記憶手段を参照してプログラム中の各割付対
    象の生存区間の開始点に相当する命令位置情報が終了点
    に相当するものを全て探し出し、探し出した割付対象
    と、プログラム中の割付対象とを同一の生存区間継承関
    係集合にする第1の集合化手段と、 開始終了点記憶手段を参照してプログラム中の各割付対
    象の生存区間の終了点に相当する命令位置情報が、開始
    点に相当するものを全て探し出し、探し出した割付対象
    と、プログラム中の割付対象とを同一の生存区間継承関
    係集合にする第2の集合化手段と、 プログラム中の割付対象と、第1及び第2の集合化手段
    によって集合化された生存区間継承集合とを対応づけて
    生存区間継承関係集合記憶部に書き込む書き込み手段と
    を備えることを特徴とする資源割付装置。
  29. 【請求項29】 高級言語で書かれたプログラムを機械
    語プログラムに翻訳するコンパイラに用いられ、プログ
    ラミング言語で記述されたプログラムの中の変数と生存
    区間の組である割付対象にレジスタ、メモリ等のハード
    ウェアである資源が有する資源要素を割り付ける資源割
    付装置であって、 プログラム中の割付対象をその優先度に対応づけて保持
    する割付対象保持手段と、 前記割付対象保持手段から優先度最大の割付対象を取り
    出し、優先度が最大の割付対象に資源要素の何れかを割
    り付ける第1の資源要素割付手段と、 直前に割り付けられた割付対象の優先度に対して、次順
    位の優先度を持つ割付対象を、前記割付対象保持手段か
    ら取り出す割付対象取出手段と、 前記割付対象取出手段が取り出した割付対象について、
    生存区間が重なっている割付対象を検出する一次重なり
    割付対象検出手段と、 前記一次重なり割付対象検出手段が検出した割付対象
    に、既に割り付けられている資源要素を検出する資源要
    素検出手段と、 検出された資源要素とは異なる資源要素が既に割り付け
    られている割付対象を全て検出する割付対象−資源要素
    検出手段と、 割付対象−資源要素検出手段によって検出された割付済
    みの割付対象のうち、割付対象取出手段によって取り出
    された割付対象と生存区間が連続している割付対象を全
    て判定する利得側連続割付済み割付対象判定手段と、 既に割付対象に割り付けられた資源要素がこれから割り
    付けようとする割付対象にどれだけ適切であるかを示す
    値である得失値を連続すると判定された割付済みの割付
    対象から割付対象取出手段によって取り出された割付対
    象までの生存区間長の短さに基づき、生存区間が連続す
    ると判定された割付対象に割り付けられている全ての資
    源要素について算出する第1の得失値算出手段と、 算出された得失値を割付対象−資源要素検出手段によっ
    て判定された各資源要素毎に累計する累計手段と、 累計手段によって累計された累計値が最大の資源要素を
    割付対象取り出し手段が取り出した割付対象に割り付け
    る第2の資源要素割付手段と、 全ての割付対象が割り付けられるまで前記割付対象取出
    手段の起動を繰り返えす制御手段とを備えることを特徴
    とする資源割付装置。
  30. 【請求項30】 請求項29において資源割付装置は更
    に、 割付対象−資源要素検出手段によって検出された割付済
    みの割付対象のうち、割付対象取出手段によって取り出
    された割付対象と生存区間が連続せず且つ生存区間が重
    なっていない割付対象を判定する第1の非重なり非連続
    割付済み割付対象判定手段と、 第1の非重なり非連続割付済み割付対象判定手段によっ
    て判定された割付済みの割付対象の生存区間と生存区間
    が重なる未割り付けの割付対象であって割付対象取出手
    段によって取り出された割付対象と生存区間が連続して
    いる割付対象を検出する利得側連続未割り付け割付対象
    検出手段と、 利得側連続未割り付け割付対象検出手段によって検出さ
    れた未割り付けの割付対象から割付対象取出手段によっ
    て取り出された割付対象までの生存区間長の短さに基づ
    き、第1の非重なり非連続割付済み割付対象判定手段に
    よって判定された割付済みの割付対象に割り付けられた
    資源要素の得失値を算出する第2の得失値算出手段と、 前記累計手段によって累計された当該資源要素について
    の得失値から第2の得失値算出手段によって算出された
    得失値を減ずる第1の減算手段とを備え、 前記第2の資源要素割付手段は、第1の減算手段によっ
    て得失値が減ぜられた得失値が最大の資源要素を割付対
    象取出手段が取り出した割付対象に割り付けることを特
    徴とする資源割付装置。
  31. 【請求項31】 請求項30において資源割付装置は更
    に、 割付対象−資源要素検出手段によって検出された割付済
    みの割付対象のうち、一次重なり割付対象検出手段によ
    って検出された割付対象と、生存区間が連続しているも
    のを判定する重なり側連続割付済み割付対象判定手段
    と、 重なり側連続割付済み割付対象判定手段によって判定さ
    れた割付済みの割付対象から一次重なり割付対象検出手
    段によって検出された割付対象までの生存区間長の短さ
    に基づき、重なり側連続割付済み割付対象判定手段によ
    って判定された割付済みの割付対象に割り付けられた資
    源要素の得失値を算出する第3の得失値算出手段と、 前記累計手段によって累計された当該資源要素について
    の累計値から第3の得失値算出手段によって算出された
    得失値を減ずる第2の減算手段と、 第2の資源要素割付手段は第2の減算手段によって得失
    値が減ぜられた後の累計値が最大の資源要素を割付対象
    取出手段が取り出した割付対象に割り付けることを特徴
    とする資源割付装置。
  32. 【請求項32】 請求項31において資源割付装置は更
    に、 割付対象−資源要素検出手段によって検出された割付済
    みの割付対象のうち、一次重なり割付対象検出手段によ
    って検出された割付対象と生存区間が連続せず且つ生存
    区間が重なっていない割付対象を判定する第2の非重な
    り非連続割付済み割付対象判定手段と、 第2の非重なり非連続割付済み割付対象判定手段によっ
    て判定された割付済みの割付対象の生存区間と生存区間
    が重なる未割り付けの割付対象であって一次重なり割付
    対象検出手段によって検出された割付対象と生存区間が
    連続しているものを判定する重なり側連続未割り付け割
    付対象判定手段と、 重なり側連続未割り付け割付対象判定手段によって判定
    された割付対象から一次重なり割付対象検出手段によっ
    て検出された割付対象までの生存区間長の短さに基づい
    て第2の非重なり非連続割付済み割付対象判定手段によ
    って判定された割付済みの割付対象に割り付けられてい
    る資源要素の得失値を算出する第4の得失値算出手段
    と、 前記累計手段によって累計された当該資源要素について
    の累計値に第4の得失値算出手段によって算出された得
    失値を加算する加算手段と、 前記第2の資源要素割付手段は加算手段によって得失値
    が加算された累計値が最大の資源要素を割付対象取出手
    段が取り出した割付対象に割り付けることを特徴とする
    資源割付装置。
JP05944696A 1995-03-16 1996-03-15 資源割付装置 Expired - Fee Related JP3638171B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP05944696A JP3638171B2 (ja) 1995-03-16 1996-03-15 資源割付装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP5759695 1995-03-16
JP7-57596 1995-03-16
JP05944696A JP3638171B2 (ja) 1995-03-16 1996-03-15 資源割付装置

Publications (2)

Publication Number Publication Date
JPH08314727A true JPH08314727A (ja) 1996-11-29
JP3638171B2 JP3638171B2 (ja) 2005-04-13

Family

ID=26398664

Family Applications (1)

Application Number Title Priority Date Filing Date
JP05944696A Expired - Fee Related JP3638171B2 (ja) 1995-03-16 1996-03-15 資源割付装置

Country Status (1)

Country Link
JP (1) JP3638171B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001290652A (ja) * 2000-04-04 2001-10-19 Matsushita Electric Ind Co Ltd プログラム変換装置、プログラム変換方法及び記録媒体
US6334212B1 (en) 1998-04-01 2001-12-25 Matsushita Electric Industrial Co., Ltd. Compiler
JP2006286027A (ja) * 2006-07-28 2006-10-19 Matsushita Electric Ind Co Ltd コンパイラ装置およびコンパイル方法
US7222082B1 (en) * 2000-06-28 2007-05-22 Kronos Technology Systems Limited Partnership Business volume and workforce requirements forecaster
JP2011181114A (ja) * 2011-06-23 2011-09-15 Panasonic Corp プログラム変換装置、プログラム変換方法及び記録媒体

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6334212B1 (en) 1998-04-01 2001-12-25 Matsushita Electric Industrial Co., Ltd. Compiler
JP2001290652A (ja) * 2000-04-04 2001-10-19 Matsushita Electric Ind Co Ltd プログラム変換装置、プログラム変換方法及び記録媒体
US7222082B1 (en) * 2000-06-28 2007-05-22 Kronos Technology Systems Limited Partnership Business volume and workforce requirements forecaster
JP2006286027A (ja) * 2006-07-28 2006-10-19 Matsushita Electric Ind Co Ltd コンパイラ装置およびコンパイル方法
JP4721975B2 (ja) * 2006-07-28 2011-07-13 パナソニック株式会社 コンパイラ装置およびコンパイル方法
JP2011181114A (ja) * 2011-06-23 2011-09-15 Panasonic Corp プログラム変換装置、プログラム変換方法及び記録媒体

Also Published As

Publication number Publication date
JP3638171B2 (ja) 2005-04-13

Similar Documents

Publication Publication Date Title
US5790862A (en) Resource assigning apparatus which assigns the variable in a program to resources
JP3299611B2 (ja) 資源割付装置
JP4745341B2 (ja) 依存性チェーン処理のためのシステム、方法及び装置
US6718541B2 (en) Register economy heuristic for a cycle driven multiple issue instruction scheduler
KR910009116B1 (ko) 레지스터 할당 및 지정 방법
EP0428084B1 (en) Method and apparatus for compiling computer programs with interprocedural register allocation
Chow et al. The priority-based coloring approach to register allocation
US6286135B1 (en) Cost-sensitive SSA-based strength reduction algorithm for a machine with predication support and segmented addresses
JP3311462B2 (ja) コンパイル処理装置
US6675380B1 (en) Path speculating instruction scheduler
US5946491A (en) Register allocation method and apparatus for gernerating spill code as a function of register pressure compared to dual thresholds
JP2005216177A (ja) コンフィグラブル・プロセッサの設計装置、設計方法、ライブラリの最適化方法、プロセッサ、及びプロセッサを備えた半導体装置の製造方法
JP2000347874A (ja) レジスタ割当器を用いた呼出規則プロローグ・エピローグコード構築方法及び装置
JPH096627A (ja) 最適化装置
US5450588A (en) Reducing pipeline delays in compilers by code hoisting
JPH04213118A (ja) プログラム翻訳装置およびプログラム翻訳方法
US6584611B2 (en) Critical path optimization—unload hard extended scalar block
US11500641B2 (en) Devices, methods, and media for efficient data dependency management for in-order issue processors
JP3638171B2 (ja) 資源割付装置
US7007272B2 (en) Compiling computer programs including branch instructions
Ottoni et al. Improving offset assignment through simultaneous variable coalescing
Kim et al. Fine-grain register allocation and instruction scheduling in a reference flow
JPH07129410A (ja) コンパイラにおけるメモリ割り付け方法
Thammanur et al. A fast, memory-efficient register allocation framework for embedded systems
JPH11175351A (ja) プログラム変換装置、高級言語プログラム内アセンブラ表現方法および記録媒体

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040928

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050107

R150 Certificate of patent (=grant) or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080121

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090121

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090121

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100121

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110121

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110121

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120121

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees