JP2000172510A - 資源割付装置及び資源割付プログラムが記録されたコンピュータ読み取り可能な記録媒体 - Google Patents

資源割付装置及び資源割付プログラムが記録されたコンピュータ読み取り可能な記録媒体

Info

Publication number
JP2000172510A
JP2000172510A JP34452498A JP34452498A JP2000172510A JP 2000172510 A JP2000172510 A JP 2000172510A JP 34452498 A JP34452498 A JP 34452498A JP 34452498 A JP34452498 A JP 34452498A JP 2000172510 A JP2000172510 A JP 2000172510A
Authority
JP
Japan
Prior art keywords
resource
resource element
allocation
allocated
allocation target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP34452498A
Other languages
English (en)
Inventor
Akira Tanaka
旭 田中
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 JP34452498A priority Critical patent/JP2000172510A/ja
Publication of JP2000172510A publication Critical patent/JP2000172510A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 レジスタ割り付けにより発生する転送命令の
発生と、並列実行性を損なう命令間の依存の発生を抑え
て、より目的プログラムのコードサイズ及び実行時間を
減少させる 【解決手段】資源独立関係にある割付対象が、それら割
付済み割付対象と直接的な生存区間の連続性及び/又は
間接的な生存区間の連続性を有しているかを判定すると
共に、次に資源要素を割り付けるべき割付対象と、既に
資源要素が割り付けられた割付対象とが直接的な生存区
間の連続性及び/又は間接的な生存区間の連続性を有し
ているかを判定し、生存区間の連続性が判定された割付
対象に割り付けられたそれぞれの次に資源要素を割り付
けるべき割付対象に割り付けた場合に、機械語プログラ
ムに与え得る利害得失を資源要素毎に定量化する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、高級言語で書かれ
たソースプログラムを機械語プログラムなどの目的プロ
グラムに翻訳するコンパイラにおいてプログラム中の変
数をレジスタ、メモリ等の資源へ割り付ける資源割付装
置及び資源割付プログラムが記録されたコンピュータ読
み取り可能な記録媒体に関する。
【0002】
【従来の技術】近年、組み込み用途向けマイクロプロセ
ッサの並列実行性の向上による高性能化により、通信、
画像、音声処理など、マルチメディア処理を行なう情報
機器に、組み込み用途向けマイクロプロセッサが使用さ
るようになって来ている。また、組み込み用途向けマイ
クロプロセッサとともに、情報機器に組み込まれるプロ
グラムに対しては、従来から要求されているプログラム
サイズの縮小化の他に、並列実行による実行時間の短縮
化も強く要求されている。
【0003】さらにマルチメディア処理を行なう情報機
器に組み込まれるプログラムの規模が増大しており、プ
ログラムの開発コスト、保守、移植性などの観点から、
高級プログラミング言語を用いてプログラム開発できる
ことも、強く要求されている。そのため、高級プログラ
ミング言語で記述されたプログラムを、マイクロプロセ
ッサで直接実行できる機械語プログラムに変換するコン
パイラには、よりプログラムサイズが小さく且つ並列実
行性を向上させた機械語プログラムを生成することが要
求される。
【0004】ところで、高級プログラミング言語を用い
れば、プログラマはプログラム中の数値の保持、演算、
転送等の処理を、変数を被演算子とした演算で表現でき
る。この変数はプログラマによって任意に定義され、ま
た必要な個数だけ用いられるため、プログラマは自由に
プログラムを記述できる。また記述されたプログラム
(ソースプログラムと称す。)はコンパイルされること
よりコンピュータが理解可能な機械語プログラムとな
る。当該機械語プログラム中の演算は機械語命令によっ
て表現され、また当該機械語命令はレジスタあるいはメ
モリを被演算子とするので、上記変数にはレジスタある
いはメモリを割り付ける必要がある。この割り付け処理
は資源割付処理と称される。この資源割付処理はマイク
ロプロセッサの能力を最大限まで引き出すようなソフト
ウェアの開発においては特に重要視される。
【0005】次に従来技術の説明を行うがその前に、本
発明に関係する代表的な文献を挙げる。 (1)林、他:”コンパイラにおける命令スケジューリ
ング”, 特願平4−61983 (2)古関、他:”命令レベル並列アーキテクチャのた
めのコードスケジューリングおよびレジスタアロケータ
の協調技法”,情報処理学会, Vol.38, No.3, Mar.1997 (3)Shlomit S.P.:"Register Allocation with Inst
ruction Scheduling: aNew Approach", Proceedings of
the ACM SIGPLAN '93 Conference on Programming Lan
guages Design and Implementation, 1993 (4)田中、他:"資源割付装置”, 特願平8−594
46 (5)Hans Zima、他:"Supercompilers for Parallel a
nd VectorComputers", Addison Wesley Publishing Com
pany Inc.,1991、 (邦訳)村岡洋一:”スーパーコン
パイラ”,オーム社, 1995 従来の資源割付処理方式うち、並列実行性を向上させる
方式としては、文献1、2、3などが挙げられる。これ
は、変数へのレジスタ割り付けによって発生する命令間
の依存関係を解消し命令の並列実行性を高めるものであ
る。例えば、コンパイルする前のソースプログラムが次
のようであるとする。 s1: a = b + c; s2: e = a + d; s3: x = y + z; このとき、 命令s2は命令s1で代入される変数aの値を使
用しているのでs2はs1に依存する。 一方、命令s3は命
令s1,s2のどちらにも依存しておらずソースプログラム
上では、s1,s2より先に実行できるし、 並列実行可能な
プロセッサであれば、s1 或はs2と並列に実行できる。
ところが、変数a,b,c,d,eにそれぞれレジスタr0,r1,r
2,r3,r4を、変数x,y,zにそれぞれレジスタr0,r5,r6 を
割り付けると次のようになる。 s1: r0 = r1 + r2; s2: r4 = r0 + r3; s3: r0 = r5 + r6; このとき、命令s3はレジスタr0への代入を行うなうの
で、 命令s1,s2より先に実行できなくなるし且つ、命令
s1,s2とも同時実行できなくなる。 つまり、変数へのレ
ジスタ割り付けにより、命令s1,s2 と、命令s3との間に
新しい依存関係が発生したことになる。 ここでもし、
変数xに変数a,b,c,d,eとは異なる、例えばレジスタr7を
割り付ければこの依存は発生せず、ソースプログラムが
もつ並列実行性を損なうことがなくなり、プログラムの
短時間実行が可能になる。
【0006】従来の資源割付処理方式うち、目的プログ
ラムのコードサイズを縮小化する方式としては、文献4
が挙げられる。これは、レジスタ割り付けの如何によっ
て発生する転送命令の数を減らすものである。 例えば s1: a = b + c; s2: d = a; s3: e = d + 10; というソースプログラムがあるとき、変数a,b,c,d,e に
それぞれレジスタr0,r1,r2,r3,r4と割り付け且つ、コン
パイラのターゲットプロセッサが2アドレス形式であれ
ば次のようにな目的プログラムに変換される。 ここで、 「mov」は転送命令を表し、例えば「mov r1,r
0」 は、レジスタr1の内容をレジスタr1へ転送すること
を表す。また、「add」 は加算命令を表し「add r2,r
0」は、レジスタr2,r0の加算結果をレジスタr0に格納す
ることを表す。一方、変数a,b,c,d,e にそれぞれレジス
タr0,r0,r2,r0,r0 と具合に、変数a,b,d,e に同じレジ
スタを割り付ければ次のようにな目的プログラムに変換
される。 s1: add r2,r0 s3: add 10,r0 このように前に比べて転送命令の発生を減らすことがで
き、目的プログラムのプログラムの短時間実行ととも
に、コードサイズの縮小化が可能となる。
【0007】
【発明が解決しようとする課題】ところで上記文献4の
資源割付処理は、大域的な転送命令の増減を得失値とい
う独特のパラメータを用いて定量化することにより、コ
ードサイズの低減を図れるものの、転送命令の増減に伴
う命令間の並列実行性の増減を評価することができない
ため、転送命令の低減と、並列実行性の低減とを両立さ
せることはできないという問題点がある。
【0008】一般にソースプログラムは、高級プログラ
ミング言語を用いて記述されているので、並列実行性が
高い場合が多い。これは、高級プログラミング言語の文
法、言語要素がレジスタ、メモリ等のハードウェア資源
に拘束されないからであり、ソースプログラムを構成す
る複数の命令は、プログラマにより任意に定義された変
数を用いて記述されているので命令間の依存関係が少な
いからである。
【0009】これに対して機械語プログラムは、プロセ
ッサが直接実行するものであり、数値の保持、演算がハ
ードウェア資源を被演算子とした機械語命令にて構成さ
れている。これらハードウェア資源における記憶要素は
有限であるので、機械語プログラムには、これらの資源
に値を定義する機械語命令と、その値を使用する機械語
命令との間に多くの依存関係が発生している。そのた
め、機械語プログラムは、その並列実行性が低いといわ
れる。
【0010】ソースプログラム、機械語プログラムにお
ける上記の性質を考えるとコンパイル時には、ソースプ
ログラムにおいて存在する命令間の並列実行性をなるべ
く多く機械語プログラムに継承することが望ましいが、
文献4の資源割付処理では、そのような並列実行性につ
いて言及していないため、並列実行性を検出することは
できない。そこで文献1〜3に記載されている並列実行性
の検出処理を文献4の資源割付処理に適用することも考
えられる。このように適用する場合、問題となるのは、
文献4では、大域的な転送命令の増加率を得失値という
パラメータを用いて算出しているので、文献1〜3に基づ
いて検出された並列実行性と、この得失値とをどのよう
に比較するかである。ここで得失値は、割付済みの割付
対象(割付対象については文献4,若しくは実施形態を参
照のこと)の生存区間と、次に割り付けべき割付対象の
生存区間との位置関係によって定まるという特殊なパラ
メータなので、文献1〜4の何れにも、得失値と並列実行
性とをどのように比較するかに触れられていない。従っ
て得失値−並列実行性を総合的に評価することはでき
ず、文献4に見られるような転送命令の低減と、文献1
〜3に見られるような並列実行性の低減とを両立させる
ことは実質不可能となり、何れか一方が片手落ちとな
る。
【0011】本発明の目的は、文献4の転送命令数の削
減方式に並列実行性を向上させる方式を組み込み、レジ
スタ割り付けにより発生する転送命令の発生と、並列実
行性を損なう命令間の依存の発生を抑えて、より目的プ
ログラムのコードサイズ及び実行時間を減少させること
ができる資源割付装置を提供することである。
【0012】
【課題を解決するための手段】上記目的は、次に資源要
素を割り付けるべき割付対象が定義されている命令と同
一の基本ブロックに位置する命令であって、当該定義命
令と直接的な依存関係を有さず、尚且つ間接的な依存関
係を有さない独立命令にて定義されている割付対象を検
出する資源独立関係割付対象検出手段と、前記複数の資
源要素のうち、何れかの資源要素が何れかの割付対象に
既に割り付けられている場合、前記資源独立関係割付対
象検出手段により検出された割付対象が、それら割付済
み割付対象と直接的な生存区間の連続性及び/又は間接
的な生存区間の連続性を有しているかを判定する第1の
生存区間連続性判定手段と、次に資源要素を割り付ける
べき割付対象と、既に資源要素が割り付けられた割付対
象とが直接的な生存区間の連続性及び/又は間接的な生
存区間の連続性を有しているかを判定する第2の生存区
間連続性判定手段と、前記第1及び第2の生存区間連続
性判定手段により生存区間の連続性が判定されると、判
定された割付対象に割付け済みのそれぞれの資源要素
を、次に資源要素を割り付けるべき割付対象に割り付け
た場合に、目的プログラムに与え得る利害得失を各資源
要素について定量化する定量化手段と、前記定量化手段
により定量化された利害得失を示す利得値を資源要素同
士で比較して、その利得が最も大きい資源要素を、次に
資源要素を割り付けるべき割付対象に割り付ける割付手
段とを備える資源割付装置により達成される。
【0013】
【発明の実施の形態】資源割付装置の実施形態の説明に
先立って、実施形態で引用する技術用語についての説明
を行う。 <用語の説明> ・変数の定義、参照、使用 変数の値を設定することを「定義する」と呼び、設定し
た値を使用することを「参照する」と呼ぶ。またプログ
ラム上で変数を定義したり、参照したりすることを変数
を「使用する」と呼ぶことにする。
【0014】・中間命令 処理をし易すくするためにコンパイラがソースプログラ
ムのコードを中間的なコードに変換したものを「中間コ
ード」と呼び、中間コードの1ステップを「中間命令」
と呼ぶ。中間命令には4つ組や3つ組などが存在し、これ
らが変換されて最終的な目的プログラムが生成される。
またソースプログラムを中間命令の列に変換したものを
「中間プログラム」と呼ぶ。 図11(b)は図10のC言
語プログラムに対する中間プログラムの一例であり、4
つ組の一つである3番地コードを用いて中間命令を表現
している。また同図(a)のi1からi22は中間命令の識別子
を意味する。
【0015】・基本ブロック 基本ブロックは、プログラムの最初の中間命令、無条件
あるいは条件飛び越しの行き先の中間命令、無条件ある
いは条件飛び越しの直後の中間命令を検出し、検出した
これらを「リーダー」とみなして、リーダーから始まり
次のリーダーの一つ手前まで、あるいはプログラムの最
後までの一連の中間命令列を抽出することにより得られ
る。
【0016】・命令依存関係 命令依存関係は、先行文献5の4章で述べられているよ
うな命令間の実行順序の依存関係をいう。ここでは詳細
な説明を省略し、図11、図12を参照して簡単に説明
する。命令の依存関係は図12のような依存グラフで示
される。図12(a)は、図11の基本ブロックB1内に
存在する中間命令間の依存グラフを示している。本図に
おいて例えば中間命令i11に着目して考えると、中間命
令i11は中間命令i8,i10で定義される変数(割付対象)t
10,t6の値を参照するので、中間命令i8,i10は中間命令i
11より先に実行する必要があり、このとき中間命令i11
は中間命令i8,i10に「依存している」という。また逆に
中間命令i8,i10は中間命令i11を「制約している」とい
う。図12(a)では中間命令i8,i10から中間命令i11へ向
かう矢印で制約関係を、逆向きで依存関係を表現してい
る。
【0017】また図12(a)の中間命令i9は、中間命令i
4,i7に依存している。つまり、中間命令i4,i7は中間命
令i9より先に実行する必要がある。これは、中間命令i
4,i7で定義される変数x、yが外部変数であり、中間命令
i9において関数f1でさらに変数x、yを参照する可能性が
あるからである。また、同図において中間命令i10は中
間命令i9に依存し、中間命令i9は中間命令i4に依存して
いる。このように中間命令i10が中間命令i4に間接的に
依存していることを特に「間接依存」しているというこ
とにする。 これに対して、中間命令i10は中間命令i9に
「直接依存」しているということにする。混同の恐れが
ない限り、以下では「間接依存」、「直接依存」の双方
を単純に「依存」と呼ぶものとする。依存と逆の関係で
ある制約についても同様に「直接制約」「間接制約」
「制約」を定義する。また、任意の二つの中間命令x、
yの間に依存、制約どちらの関係も成立していないと
き、中間命令x、yは互いに「独立している」または、
「独立関係」にあるということにし、中間命令xは中間
命令yの「独立命令」、中間命令yは中間命令xの「独
立命令」ということにする。 ・生存区間 生存区間とは広義にはそれぞれの変数に保持されている
値が有効となる区間であり、狭義には変数に値を定義す
る中間命令からその定義された値を最後に参照する中間
命令までのプログラム上の区間のことである。そして、
生存区間はこの区間に含まれる中間命令の集合で表され
る。ここで変数に値を定義する中間命令は生存区間の開
始点に相当し、生存区間中で定義された値を参照してい
る中間命令のうち、最後に参照する中間命令は生存区間
の終了点に相当する。また生存区間の重複、非重複を中
間命令の集合積で判定するため、生存区間の終始が一致
する中間命令では生存区間は重ならないものと考える。
図11(c)は、生存区間の一例を示す図である。図11
(c)において生存区間は縦線の実線で表されている。生
存区間の開始点、及び終了点をそれぞれ白丸、黒丸で表
現している。
【0018】生存区間の解析については、本願の発明者
が取得した米国特許についての米国特許公報USP 5,642,
512にその詳細が記載されている。本公報によると、例
えばある変数を定義している命令が複数の基本ブロック
に存在する場合、生存区間の開始点は複数存在すること
になる。また、ある変数の最後の使用となる命令が複数
の基本ブロックに存在する場合、生存区間の終了点は複
数存在することになる。
【0019】・割付対象 資源の割付対象としては単に変数をとる場合もあるが、
一つの変数に対して複数の生存区間が存在する場合はそ
れぞれの生存区間ごとに別々の資源要素を割り付けるこ
とができるので、本明細書では割付対象は変数と生存区
間の組であると定義する。
【0020】また変数を「定義する」こと、「参照す
る」こと、「使用する」ことをそれぞれ、その変数を組
みとして有した割付対象を「定義する」「参照する」
「使用する」とも呼ぶ場合がある。更に割付対象が定義
される中間命令、及び参照される中間命令をそれぞれ、
その割付対象の「定義中間命令」「参照中間命令」と呼
び、定義及び参照中間命令を併せて「使用中間命令」と
呼ぶ。尚、本発明の説明では、特に混同の恐れがない限
り割付対象と変数を同義的に使用する。
【0021】・割付優先度 割り付けを行う際、割付対象の割り付けの順番を決める
ためのパラメータである。割付優先度の計算には様々な
方法が存在する。例えば、プログラム中の割付対象の使
用率を割付優先度としたときの計算式の例を以下の{数
式1}に示す。 {数式1} 割付優先度=使用率= 割付対象が使用される中間命令の個数/割付対象の生存
区間の長さ尚、割付対象が使用される中間命令が、プロ
グラム中のループ処理の中に存在するときは割付優先度
にそのループレベルを算入してもよい。その例を以下の
{数式2}に示す。
【0022】{数式2} 割付優先度=使用率=使用中間命令が存在するループレ
ベルの総和/割付対象の生存区間の長さ さらに、各割付優先度を求めた割付優先度の最大値で正
規化したものを、改めて割付優先度としてもよい。
【0023】・資源要素 コンピュータのハードウェアの要素のうち、割付対象に
割り付け可能な最小単位である。値を一時的に保持する
バッファや個々のレジスタ、メモリ内の番地単位のメモ
リ要素がその例である。0番目のレジスタ、1番目のレ
ジスタ、100番地のメモリ、101番地のメモリはそ
れぞれ別の資源要素である。
【0024】・資源 同一機能を有するハードウェア資源であり、資源要素の
集合を意味する。例えば、資源にはレジスタとメモリと
が存在する。更にレジスタはアドレスレジスタ、データ
レジスタ、大域的レジスタ、局所的レジスタというよう
に同一機能を果たすもので分類できる。またメモリは高
速メモリ、低速メモリというように同一機能を果たすも
ので分類できる。このように資源要素が同一機能を果た
すもの同士で分類できれば、その分類毎に別々の資源に
なる。
【0025】・多資源 メモリなどのように他の資源に比べて豊富な資源要素を
持ち、どの資源要素を割付対象に割り付けても特に目的
プログラムの効率化に影響を及ぼさない資源のことをい
う。尚、多資源の資源要素を「多資源要素」と呼ぶこと
にする。 ・少資源 多資源とは逆に、レジスタなどのように資源要素の個数
が少数であり、どの資源要素を割付対象に割り付けるか
によって目的プログラムの効率化に影響を及ぼす資源を
示す。尚、少資源の資源要素を「少資源要素」と呼ぶこ
とにする。 ・資源継承関係 資源継承関係とは割付対象同士の割り付けられた資源要
素を継承し得る関係をいう。また資源要素の継承とは既
に割り付けられた資源要素と同一の資源要素を割り付け
ることをいい、このような同一資源要素への割り付けに
よってコード生成装置に転送命令の生成を省かせること
ができる。加えて割り付け済みの資源要素をまわりに広
げてゆくことができる。プログラム中ではこのような資
源継承関係は生存区間の連続によって表される。正確的
には、次のように定義される。即ち、プログラム上のあ
る中間命令s1が、割付対象yの生存区間の終了点であ
り、且つ中間命令s1が、割付対象xの開始点であれば、
これらの割付対象xと割付対象yとは資源要素継承関係
にある。但し生存区間の終始点は一致しているが、同一
の資源要素に割り付けても転送命令の生成を省かせるこ
とが明確に不可能な場合は資源継承関係にないとする。
【0026】資源継承関係は上述の文献3と同様である
のでその詳細は省略するが、ここではさらに、割付対象
xと割付対象yとが資源要素継承関係にあり且つ、割付
対象yと割付対象zとが資源要素継承関係にあるとき、
割付対象xと割付対象zも資源要素継承関係あるという
ことにする。 特に割付対象xに対して上述の割付対象
yは「直接的」な資源要素継承関係にあるといい、上述
の割付対象zは「間接的」な資源要素継承関係にあると
いう。
【0027】例えば、 図11の割付対象t10と割付対象
t1は中間命令i8で生存区間の終始点が一致しており、
割付対象t10と割付対象t1は資源継承関係(直接的な資
源要素継承関係)にある。さらに、同図の割付対象t1と
割付対象Pr1は中間命令i1で生存区間の終点が一致して
おり、割付対象t1と 割付対象Pr1は資源継承関係(直接
的な資源要素継承関係)にあり、結果、 割付対象t10と
割付対象Pr1も資源継承関係(間接的な資源要素継承関
係)にある。
【0028】・得失値 得失値とは、目的プログラムの転送命令の発生を抑える
観点から考えて、ある特定の割付対象xに対して、割付
対象xと資源継承関係にある割付対象や、既に資源要素
に割り付けられた割付対象、およびその割り付けられて
いる資源要素に着目して、各資源要素を割付対象xに割
り付けたときに、 どれだけ転送命令の発生抑制に貢献
するかを定量化した値である。そのため、得失値はそれ
ぞれの資源要素毎に与えられる。得失値は上述の文献3
と同様であるのでその詳細は省略し、ここでは具体的な
例の説明と正確な定義について説明する。
【0029】例えば、図20において、L, L1,L2,L3,L
4,L5はそれぞれ割付対象x,x1,x2,x3,x4,x5の生存区間長
さを示す。また、x3とx2, x2とx1, x1とx, xとx4, x4と
x5 は資源継承関係にあるとする。 割付対象xの得失値
は、まず割付対象xと間接的に資源継承関係にある割付
対象x3がレジスタr0に割り付けられているのでレジスタ
r0の得失値は、 割付対象x からx3 までの生存区間長の
和に反比例させて「1/(L+L1+L2)」となる。 つまり、こ
のことを上述の転送命令の発生を抑える観点から言う
と、 割付対象xにレジスタr0を割り付けると「1/(L+L1+
L2)」だけ 転送命令の発生を抑えることができるとする
ということである。 同様に割付対象xと間接的に資源継
承関係にある資源割付対象x5がレジスタr1に割り付けら
れているので、レジスタr1の得失値は「1/(L+L4)」とな
る。もし、ここで L+L1+L2 > L+L4 であれば、得失値か
ら言えば、レジスタr1 を割付対象xに割り付けると最も
転送命令の発生を抑えることができると判断される。
尚、生存区間長の和を求める際に起点となる割付対象の
生存区間長を1としても構わない。 例えば、図20に
おいて割付対象xからx3までの生存区間長の和を「(1+L1
+L2)」としてもよい。
【0030】割付対象xに資源要素rを割り付けたときの
得失値(x,r) は正確には次の数式のように定義される。
(if, else の意味はプログラミング言語Cに準ず
る。) {数式3} 得失値(x,r) = Σ K(x, y, r)/D(x, y) y ∈ S(Σは全てのyについての和) S : xと資源継承関係にある割付対象の集合 D(x, y) : 割付対象xから割付対象yに至るまでの生存区間長の和 K(x, y, r): if(割付対象xから割付対象yの間に存在する、xと資源継 承関係にある割付対象に資源要素が割り付けられて いるとき) 0 ...(1) else if(割付対象xから割付対象yの間に存在する、xと資源継 承関係にある割付対象と資源排他関係(後述)にある割付対象 に資源要素rが割り付けられいるとき) 0 ...(2) else if(割付対象yが資源要素rに割り付けられいるとき) 1 ...(3) else 0 ...(4) ここで、K(x, y, r)について具体的に説明する。例え
ば、図20において、もしも、割付対象x1に既に資源要
素(レジスタ)が割り付けられていた場合、割付対象x3
と任意のレジスタrについて、数式3の(1)により K(x,x
3,r) は0となる。また、割付対象x1,x2と資源排他関係
(後述)にある割付対象y1に、もしもレジスタr0が割り
付けられている場合、割付対象x3とレジスタr0につい
て、数式3の(2)により K(x,x3,r0) は0となる。ま
た、割付対象xと割付対象x5に対して数式3の(1)(2)の
条件を満たさないとき、 割付対象xと割付対象x5および
レジスタr1について、数式3の(3)により K(x,x5,r1)
は1となる。また、図20に現れていないレジスタr3に
関しては、割付対象xと、割付対象xと資源継承関係にあ
る割付対象t(x1,x2,x3,x4,x5)のいずれに対しても、数
式3の(4)によりK(x,t,r3)は0となる。以降では、追跡
対象(後述)を用いて、図4の得失値計算部50(後
述)において効率良く得失値を求める方法を説明する。
【0031】・利得値 利得値とは、資源割付処理の過程において、未だ資源要
素に割り付けられていなく且つ、割付優先度が最大であ
る割付対象x (以降の用語の説明において特に断らない
場合は割付対象xをこの意味で用いる)に対して、割付
対象xに割り付けるべき資源要素を決定する際に、上述
の資源継承関係にある割付対象や、後述の資源排他関係
にある割付対象や、さらに後述の資源独立関係にある割
付対象に対する得失値を算出して、 求めた得失値を使
用して割付対象x に各資源要素を割り付けたときの利害
得失を定量化した値である。定量化すべき利得の目安は
としては、(1)割付対象xと資源継承関係ある割付対象y
に割り付けられている資源要素rが、割付対象xに資源要
素rを割り付けたときに、どれだけ転送命令の発生抑制
に貢献するか、 (2)割付対象xと資源排他関係ある割付
対象zにおいて、割付対象z と資源継承関係ある割付対
象z1に割り付けられている資源要素s が、割付対象xに
資源要素sを割り付けたときに、どれだけ転送命令の発
生増加をもたらすか、(3)割付対象xと資源独立関係ある
割付対象wにおいて、割付対象wと資源継承関係ある割付
対象w1に割り付けられている資源要素t が、割付対象x
に資源要素tを割り付けたときに、どれだけ転送命令の
発生増加および依存関係の発生増加をもたらすかがあ
る。これらの(1)(2)(3) の利害得失を得失値をという共
通のパラメータを用いて資源要素毎に定量化する。後述
の利得計算部33の説明で更に詳しく説明する。 ・追跡対象 追跡対象とは資源継承関係を辿って行き、各資源要素の
得失値を算出するための情報である。そのため追跡対象
はプログラムにおいて現在資源継承関係を辿っている箇
所を示す情報(これは割付対象名で表される)とその箇
所の割付対象と割付対象xとの間に介在する生存区間長
の総和と、その現在位置において得失計算を行なうべき
資源要素の集合とを含んでいる。これらの情報を含むた
め、本実施形態では追跡対象を構造体変数として扱い、
上記の現在の追跡位置の情報、生存区間長の総和、得失
計算を行なうべき資源要素集合をその構造体のメンバー
として扱っている (本実施形態では追跡対象をAとする
とき、現在の追跡位置の割付対象をA.ASO、生存区間長
の総和をA.LNS、得失計算を行なうべき資源要素集合を
A.RESと表している。)。これも先行文献(3)と同様であ
るのでこれ以上の説明は省略する。 ・資源排他関係 資源排他関係とは、生存区間が重複しており、排他的な
資源要素を割り付けるべき割付対象同士の関係をいう。
例えば図20に示すように2つの割付対象x,yの生存区
間が重複しており(つまり割付対象x,yは資源排他関係
にある)、その一方の割付対象yが他の割付対象y1,y2と
資源継承関係にある場合を想定する。この場合、割付対
象xと割付対象yとは、資源排他関係にあるので、別々の
資源要素(レジスタ)を割り付けるべきであることは明
確であるが、割付対象yは未割付であり、尚且つこの割
付対象yと資源継承関係にある割付対象y2にはレジスタr
2が割り付けられており、この場合、割付対象xにどのレ
ジスタを割り付けるべきであるかが問題となる。
【0032】ここで、割付対象yが未割付であるからと
いって、割付対象xにレジスタr2を割り付けてしまう
と、割付対象yにはレジスタr2以外のレジスタ(このレ
ジスタをレジスタr1とする)を割り付けざるを得ない。
このように割付対象yをレジスタr1を割り付けてしまう
と、資源継承関係にある一連の割付対象y、割付対象y
1、割付対象y2にレジスタr2、レジスタr1という二種類
の資源要素を割り付けることになり、レジスタr2−レジ
スタr1間で保持値の転送を行う転送命令を生成せざるを
得なくなる。このような転送命令の生成を避けるには、
割付対象xに資源要素を割り付ける際に、割付対象xにレ
ジスタr2を割り付けることによる損失を見積もらなけれ
ばならない。そこで割付対象xに資源要素を割り付ける
にあたって、資源排他関係にある割付対象yについて、
上述の得失値を算出し、割付対象xに割り付けるべき資
源要素を判定する利得値の計算に使用する。
【0033】割付対象y2の右方向に「-Py/(L6+L7)」とい
う数式が示されているが、これは資源排他関係にある割
付対象yの得失値から求めた、割付対象xにレジスタr2を
割り付けたときの利得値である。この利得値の「1/(L6+
L7)」は、割付対象yにレジスタr2を割り付けたときの得
失値であり、「Py」は割付対象yの割付優先度であり、
割付対象yがレジスタに割り付けられる可能性の度合と
して使用しており、「-」は割付対象xにとっては損失の
利得値となるので-1を乗じている。 ・資源独立関係 資源独立関係とは、互いに独立な中間命令にて定義され
ていて、これらの割付対象にお互いに異なる資源要素を
割り付ければ、コンパイル後に得られるオブジェクトコ
ードにおいても命令間の独立性を維持することができる
という割付対象同士の関係をいう。 例えば、図22に
示すように、中間命令a,bが互いに独立関係にあり且
つ、 中間命令a,bでそれぞれ割付対象x,zが定義されて
おり(つまり、割付対象x,zはお互いに資源独立関係に
ある)、 その一方の割付対象zが他の割付対象z1,z2と
資源継承関係にある場合を想定する。この場合、割付対
象xと割付対象zは資源独立関係にあるので、可能なかぎ
り別々の資源要素(レジスタ)を割り付ける方が、コン
パイル後に得られるオブジェクトコードにおいても命令
間の独立性を維持することができる。しかし、割付対象
zは未割付であり、尚且つこの割付対象zと資源継承関係
にある割付対象z2にはレジスタr0が割り付けられてお
り、この場合、割付対象xにどのレジスタを割り付ける
べきかが問題となる。
【0034】ここで割付対象zが未割付であるからとい
って、割付対象xにレジスタr0を割り付けて、且つ、中
間命令a,bの独立性を維持しようとすると、割付対象zに
はレジスタr0以外のレジスタ(このレジスタをレジスタ
r1とする)を割り付ける必要がある。 このように割付
対象zにレジスタr1を割り付けてしまうと、 資源継承関
係にある一連の割付対象z、割付対象z1、割付対象z2に
レジスタr1、レジスタr0という二種類の資源要素を割り
付けることになり、レジスタr1−レジスタr0間で保持値
の転送を行なう転送命令を発生せざるを得なくなる。こ
のような転送命令の生成を避けるためには、割付対象x
に資源要素を割り付ける際に、割付対象xにレジスタr0
を割り付けることによる損失を見積もらなければならな
い。 そこで、割付対象xに資源要素を割り付けるにあた
って、資源独立関係にある割付対象zについて上述の得
失値を算出し、割付対象xに割り付けるべき資源要素を
判定する利得値の計算に使用する。
【0035】割付対象z2の右方向に「-Pz/(L11+L12)」
という数式が示されているが、これは資源独立関係にあ
る割付対象zの得失値から求めた、割付対象xにレジスタ
r0を割り付けたときの利得値である。 この利得値の「1
/(L11+L12)」は割付対象zにレジスタr0を割り付けたと
きの得失値であり、 「Pz」は割付対象zの割付優先度で
あり、割付対象zがレジスタに割り付けられる可能性の
度合として使用しており、「-」は割付対象xにとっては
損失の利得値となるので-1を乗じている。
【0036】図21に基本ブロック内の資源独立関係を
求めるアルゴリズムをを示す。図中「for」や 「if」
の意味はプログラミング言語Cに準拠する。 <資源割付装置の実施形態>以下、本明細書に添付した
図面を参照しながら、資源割付装置の実施形態を説明す
る。現状において当業者で慣用されている資源割付装置
の流通・売買の形態は、資源割付装置を含んだコンパイ
ラの機能を実現する実行形式のソフトウェアを記録媒体
に記録して、パッケージソフトとして流通・売買する形
態である。このようなパッケージソフトはこれを購買し
た顧客により汎用コンピュ−タにインストールされ、イ
ンストールされた汎用コンピュ−タがこのソフトウェア
通りの処理を行うことにより汎用コンピュ−タは資源割
付装置としての機能を果たす。
【0037】上記のような形態が慣用されることを考え
ると、資源割付装置としての機能主体は、汎用コンピュ
−タが具備しているプロセッサ、メモリ等のハードウェ
ア資源というよりは、それらハードウェア資源を用いて
資源割付装置としての処理内容を行うソフトウェアと考
える方が妥当である。また複雑な処理内容を有するソフ
トウェアは、複数のサブルーチンやワークエリアにて構
成されることが一般的であるので、個々のサブルーチン
やワークエリアが独立した構成要素と考えるべきであ
る。しかしこれらのサブルーチンやワークエリアには、
既存のオペレーティングシステムやコンパイラ、資源割
付装置等がライブラリ化しているものも多くあり、それ
らは説明に値しないものが殆どであるから、その説明を
避けるものとし、資源割付装置の機能を果たすためにど
のような機能を果たすサブルーチン、ワークエリアを構
成要素として開発すべきかを論点とした説明を行う。
【0038】図2は、コンパイラ1の構成図を示す。本
図に示すようにコンパイラ1は、構文解析装置11と、
最適化装置12と、資源割付装置13と、コード生成装
置14とで構成される。構文解析装置11は、記憶装置
にファイルとして記憶されているソースプログラムの字
句解析、構文解析および意味解析を行い、ソースプログ
ラムを中間プログラムに変換する。例えば、図10のソ
ースプログラムは、図11(a)の中間プログラムに変換
される。
【0039】最適化装置12は、最終的に生成される目
的プログラムのプログラムサイズ及び処理実行時間を向
上させる目的で中間プログラムの最適化を行う。この最
適化の詳細については、本発明の主眼ではないため説明
を省略し、資源割付処理と特に関連がある点のみ説明す
る。最適化作業には、基本ブロック化、制御フロー解
析、データフロー解析、命令依存解析という作業が含ま
れている。
【0040】基本ブロック化とは、処理対象のプログラ
ムを基本ブロックに分割する処理をいい、制御フロー解
析とは、各基本ブロック間の制御の流れを解析する処理
をいう。データフロー解析とは、各基本ブロック中、そ
れぞれの変数がどこで定義され、どこで参照されている
かについて解析する処理をいう。これらの解析結果を参
照して変数の生存区間の情報が得られる。
【0041】命令依存解析とは、中間命令間の命令依存
関係を解析する処理をいう。図13は、図11の基本ブ
ロックB1に関する依存解析の結果を表す命令依存表で
ある。命令依存表は、中間命令n30と、当該中間命令
が直接依存する中間命令を示す依存命令n31と、当該
中間命令が直接制約する中間命令を示す制約命令n32
と、当該命令に依存しない命令を示す独立命令n33と
からなる。図12(a)は、図13の依存命令n31を依
存グラフで表現したものである。
【0042】中間命令iと独立な中間命令を見つけるに
は、次の両条件を満たさない中間命令jを見つけること
である。 (条件1)中間命令iが依存する中間命令である。 (条件2)中間命令iが制約する中間命令である。 条件1を満たす中間命令を検出するには、図13の依存
命令n31をたどることによって中間命令iが依存する
中間命令を検出することが可能であり、条件2を満たす
中間命令を検出するには、図13の制約命令n32をた
どることによって中間命令iが制約する中間命令を検出
することが可能である。よって最終的に条件1でも条件
2でも検出されなかった中間命令を中間命令iの独立命
令とすることで中間命令jは検出される。
【0043】これを図12(a)依存グラフの中間命令i4
で説明すると、 中間命令i4に入り込む有効辺を逆に辿
って次々に中間命令i3,i2,i1を検出することが、条件1
を満たす中間命令を検出することに相当し、中間命令i4
から出る有効辺を順に辿って次々に中間命令i9,i10,i1
1,i12を検出することが、 条件2を満す中間命令を検出
することに相当する。そして検出されなかった残りの中
間命令i5,i6,i7,i8が中間命令i4の独立命令となる。
【0044】資源割付装置13は、最適化装置により得
られた各種の情報を利用して割付対象にレジスタやメモ
リを割り付ける。その詳細については以降で説明する。
コード生成装置14は、 図11(b)に示すように中間プ
ログラム内の各中間命令を機械語命令等の目的プログラ
ムの命令に変換する。このコード生成は、従来と同様で
あり、本発明の主眼ではないので説明を省略する。
【0045】<図1に示した資源割付装置13の構成>
次に資源割付装置13について説明する。図1に資源割
付装置13の構成を示す。資源割付装置13は、図1に
示すように割付対象保持部21と、割付対象生成部22
と、資源排他割付対象検出部23と、資源継承割付対象
検出部24と、資源独立割付対象検出部25、割付優先
度計算部26と、割付資源要素決定部27と、資源割付
制御部28とで構成される。
【0046】割付対象保持部21は、割付対象生成部2
2で生成された割付対象と、割付情報テーブルとを保持
する。割付情報テーブルの一例を図14及び図15に示
す。図14は、以下で行う割り付け処理の対象となる割
付対象についての割付情報を表している。尚これらの図
の内容は、図11に示す中間プログラム例内に存在する
割付対象及び生存区間と対応している。
【0047】図14に示すように割付情報テーブルは、
割付対象n10と当該割付対象の生存区間がプログラム
内のどれだけの範囲を占めているかを中間命令の集合で
表した割付対象の生存区間n11と、当該集合の要素数
で表された当該割付対象の生存区間長n12と、当該割
付対象が使用される中間命令を示す使用中間命令集合n
13と、当該生存区間の開始点となる中間命令の集合で
ある開始点集合n14と、当該生存区間の終了点となる
中間命令の集合である終了点集合n15と、当該割付対
象と資源排他関係にある割付対象の集合を表した資源排
他割付対象集合n16と、当該割付対象と直接的な資源
継承関係にある割付対象の集合を表した資源継承割付対
象集合n17と、資源独立関係にある割付対象の集合を
表した資源独立割付対象集合n18と、当該割付対象の
割付優先度n19とからなる。本図において割付対象
「t1」の右隣の「i2〜i8」は、割付対象t1の生存区間
が、
【0048】図11におけるi2からi8までの中間命令に
よって表されることを示す。またその右隣の「7」は、
割付対象「t1」の生存区間長を示す。その右隣の「i1,i
2,i5,i8」は、割付対象「t1」を使用している中間命令
を示す。その右隣の「i1」は、割付対象「t1」の開始点
集合が「i1」であることを示す。その右隣の「i8」は、
割付対象「t1」の終了点集合が「i8」であることを示
す。その右隣の「t2,t3,t4,t5」は、割付対象「t1」の
資源排他割付対象集合が「t2,t3,t4,t5」であることを
示す。その右隣の「Pr1,t10」は、割付対象「t1」と直
接的な資源継承関係にある割付対象が「Pr1,t10」であ
ることを示す。更に2つ右隣の「0.57」は、割付対象
「t1」の優先度を示す。尚、開始点である「i1」が生存
区間n11に含まれていないのは、生存区間の終始が一
致する割付対象間の生存区間が重ならないということ
を、生存区間の集合積が空集合か否かにより単純に判定
可能とするためである。よって全ての割付対象の生存区
間には、開始点の中間命令が含まれていない。また、割
付対象「t2」も割付対象「t1」と同様であるが、資源独
立割付対象集合n18が「t4,t5,t10」と設定されてお
り、 これは、割付対象「t2」と資源独立関係にある割
付対象が「t4,t5,t10」 であることを示している。
【0049】図15は、実引数(Ar)、関数の戻り値(F
r)、破壊レジスタ(Br)等、既に資源要素が割付けられて
いる割付対象の割付情報の一例を示す図である。図15
に示す割付情報テーブルは、割付対象n20と、当該割
付対象の生存区間が中間プログラム内のどれだけの範囲
を占めているかを中間命令の集合で表した割付対象の生
存区間n21と、当該集合の要素数で表された当該割付
対象の生存区間長n22と、当該割付対象が使用される
中間命令を示す使用中間命令集合n23と、当該生存区
間の開始点となる中間命令の集合である開始点集合n2
4と、当該生存区間の終了点となる中間命令の集合であ
る終了点集合n25と、当該割付対象に割り付けられて
いる割付資源要素n26とからなる。
【0050】更に割付け状況テーブルの一例を図16
(b)に示す。割付け状況テーブルは、割付対象の一覧
と、各割付対象に割り付けられた資源要素を記入する記
入欄とからなり割り付けがどのように進行しているかが
反映されている。尚本図の内容は、図11に示す中間プ
ログラム例内に存在する割付対象と対応している。本図
の記入欄のうち、右端に「(p0)」と付されたものは、優
先度が最大の割付対象である「t2」が割り付けられた時
点での割り付け状況を示している。また右端に「(p6)」
と付されたものは、優先度が次に大きい割付対象である
「t3」が割り付けられた時点での割り付け状況を示して
いる。更に右端に「(p7)」と付されたものは、優先度が
次に大きい割付対象である「t4」が割り付けられた時点
での割り付け状況を示している。更に右端に「(p9)」と
付されたものは、優先度が次に大きい割付対象である
「t5」が割り付けられた時点での割り付け状況を示して
いる。更に右端に「(p10)」と付されたものは、全ての
割付対象が割り付けられた後での割り付け状況を示して
いる。
【0051】割付対象生成部22は、データフロー解析
の結果(以下データフロー情報と呼ぶ)や制御フロー解
析の結果(以下制御フロー情報と呼ぶ)をもとに割付対
象を生成する。またこのとき生存区間や使用中間命令、
生存区間の開始点、終了点も検出される。更に図15の
ように割付処理の前に割り付けることが必要な割付対象
は、ここで資源要素を割り付ける。生成された割付対象
は、割付対象保持部21に格納される。
【0052】資源排他割付対象検出部23は、割付対象
保持部21に保持されている割付対象に関して資源排他
関係にある全ての割付対象を検出する。即ち、任意の割
付対象xと資源排他関係にある割付対象の集合である割
付対象集合Ro(x)を求める。Ro(x)の内容は、割付対象保
持部21に保持される。Ro(x)を得るための集合化は
以下のようにして行われる。割付対象保持部21は各割
付対象の生存区間の情報を保持しており、割付対象xの
生存区間とxを除く全ての割付対象yの生存区間との集
合積を計算し、集合積の結果が空でないとき割付対象y
を割付対象xの資源排他割付対象集合に格納する。
【0053】資源継承割付対象検出部24は、割付対象
保持部21に保持されている割付対象に関して直接的な
資源継承関係にある全ての割付対象を検出する。即ち任
意の割付対象xと直接的な資源継承関係にある割付対象
の集合である割付対象集合Rs(x)を求める。Rs(x)の内容
は、割付対象保持部21に保持される。Rs(x)を得るた
めの集合化は、以下のようにして行われる。割付対象保
持部21は、各割付対象と、各割付対象の生存区間の開
始点に相当する中間命令と、各割付対象の生存区間の終
了点に相当する中間命令とを対応づけて保持しているの
で、資源継承割付対象検出部24は、保持している割付
対象のうち、割付対象xの生存区間の開始点に相当する
中間命令が、終了点に相当するものを全て探し出す。そ
して探し出した割付対象を割付対象xの資源継承割付対
象集合に格納する。また、割付対象xの生存区間の終了
点に相当する中間命令が、開始点に相当する割付対象を
全て探し出す。そして探し出した割付対象と、割付対象
xとを同一の集合にする。以上の処理を繰り返し、各割
付対象についてのRs(x)を生成する。但し明らかに探し
出した割付対象と割付対象xとに同じ資源要素を割り付
けても、転送命令を省けないときは、割付対象xの資源
継承割付対象集合に格納しない。
【0054】資源独立割付対象検出部25は、割付対象
保持部21に保持されている割付対象に関して資源独立
関係にある全ての割付対象を検出する。即ち任意の割付
対象xと資源独立関係にある割付対象の集合である割付
対象集合Ri(x)を求める。Ri(x)の内容は、割付対象保持
部21に保持される。Ri(x)を得るための集合化は、以
下のようにして行われる。資源独立割付対象検出部25
は、保持している割付対象のうち、割付対象xの定義中
間命令i1から、最適化情報保持部15に格納されてい
る命令依存表(例えば図13)の中間命令i1の行を参
照して、その独立命令i2で定義される割付対象を割付
対象保持部21から探し出す。そして探し出した割付対
象を割付対象xの資源独立割付対象集合に格納する。
【0055】割付優先度計算部26は、割付対象保持部
21に保持されている割付対象についての割付優先度を
計算する。割付資源要素決定部27は、割付情報テーブ
ルの記述内容に基づいて割付対象に資源要素を割付け
る。資源割付制御部28は、割付け処理全体を制御す
る。図5は、資源割付制御部28のフローチャートであ
る。
【0056】・ステップa1では、資源割付制御部28
は、割付対象生成部22を起動する。 ・ステップa2では、資源割付制御部28は、資源排他
割付対象検出部23を起動する。 ・ステップa3では、資源割付制御部28は、資源継承
割付対象検出部24を起動する。
【0057】・ステップa4では、資源割付制御部28
は、資源独立割付対象検出部25を起動する。 ・ステップa5では、資源割付制御部28は、割付優先
度計算部26を起動する。 ・ステップa6では、資源割付制御部28は、割付資源
要素決定部27を起動する。
【0058】<図3に示した割付資源要素決定部27の
構成>割付資源要素決定部27は、割付情報テーブルの
保持内容に基づいて各割付対象に割り付ける資源要素を
決定するように構成されている。図3は、図1における
割付資源要素決定部27の構成図である。割付資源要素
決定部27は、割付候補資源要素保持部31と、割付可
能資源要素検出部32と、利得計算部33と、利得保持
部34と、資源要素決定制御部35とから構成される。
図6は、資源要素決定制御部35の処理内容を示すフロ
ーチャートである。
【0059】本フロ−チャ−トは、図6に示すように割
付対象xに割り付け可能な少資源要素を求めるステップ
b3と、割り付け可能な少資源要素がないとき割付対象
xに多資源要素を割り付けるステップb5と、割り付け
可能な少資源要素が一つであるか複数であるかを判定す
るステップb6と、割り付け可能な少資源要素が一つで
あるとき当該少資源要素を割付対象xに割り付けるステ
ップb7と、割り付け可能な少資源要素が複数個存在す
るとき、割付対象xと資源継承関係、資源排他関係、及
び資源独立関係にある割付対象から得失値を計算し、各
少資源要素を割り付けたときどれだけ最終的な目的プロ
グラムのコードサイズ及び依存関係の縮減に貢献するか
を示す利得値を、求めた得失値から算出するステップb
8と、割付対象xに求めた利得値が最大の少資源要素を
割り付けるステップb9とを有し、以上の処理を未割り
付けの割付対象について割付優先度順に行うループ構造
(ステップb1〜b9)になっている。
【0060】以降、本フロ−チャ−トが有する各ステッ
プを順を追って更に詳しく説明してゆく。 ・ステップb1では、資源要素決定制御部35は、割付
対象保持部21に保持されていて資源要素が未だ割付ら
れていない割付対象が存在するときステップb2を行な
い、割付対象保持部21に資源要素が未だ割付られてい
ない割付対象が存在しないときは、割付資源要素決定部
27の処理を終了する。
【0061】・ステップb2では、資源要素決定制御部
35は、割付対象保持部21に保持されている未割付け
の割付対象のうち、割付優先度計算部26で求めた割付
優先度が最大の割付対象xを取り出す。 ・ステップb3では、割付可能資源要素検出部32を起
動して割付対象xに割付け可能な少資源要素の集合を求
める。即ち、割付対象xと資源排他関係にある割付対象
に割付けられていない少資源要素(割付可能少資源要素
という)を求め、割付候補資源要素保持部31に保持さ
せる。
【0062】・ステップb4では、割付候補資源要素保
持部31が空であるときは、ステップb5を行ない、そ
うでないときは、ステップb6に進む。 ・ステップb5では、割付対象xに多資源要素を割り付
けステップb1に戻る。 ・ステップb6では、割付候補資源要素保持部31に保
持されている少資源要素rが1個であるときは、ステッ
プb7を行ない、そうでないときは、ステップb8に進
む。
【0063】・ステップb7では、割付候補資源要素保
持部31に保持されている少資源要素rを割付対象xに
割り付けてステップb1に進む。 ・ステップb8では、利得計算部36を起動し、割付対
象xと資源継承関係にある割付対象や、資源独立関係に
ある割付対象から少資源要素毎の得失値を求め、求めた
得失値から利得値を算出し、利得保持部34に保持させ
る。
【0064】・ステップb9では、割付候補資源要素保
持部31に保持されている少資源要素のうち、ステップ
b6で求められた利得保持部34に保持されている利得
値が最大の少資源要素を割付対象xに割り付けてステッ
プb1に進む。割付候補資源要素保持部31は、割付対
象xについての割付可能な少資源要素を保持する。ここ
で割付可能な少資源要素とは、割付対象xと資源排他関
係にある割付対象に割り付けられていない少資源要素で
ある。割付候補資源要素保持部31の保持内容及び当該
保持内容の推移を図16(a)に示す。本図は、上から順
に割付候補資源要素保持部31の内容が、資源割り付け
処理の推移とともに更新されていく様子を示している。
【0065】割付可能資源要素検出部32は、ステップ
b3で起動され、割付可能資源要素を検出する。割付可
能資源要素検出部32によって求められた割付可能資源
要素は、割付候補資源要素保持部31に格納される。利
得保持部34は、ステップb8において利得計算部33
によって算出された利得値を保持する。利得保持部34
の保持内容の一例を図17(a)に示す。本図は、上から
順に各少資源要素の利得値が処理とともに更新されてい
く様子を示している。
【0066】資源要素決定制御部35は、割付資源決定
の処理全体を制御する。 <図4における利得計算部33の構成>利得計算部33
は、転送命令数の削減と命令依存性の削減を考慮した利
得値を算出するよう構成されている。図4は、利得計算
部33の構成図である。利得計算部33は、利得計算制
御部41と、追跡対象保持部42と、処理済割付対象保
持部43と、資源排他割付対象保持部44と、資源独立
割付対象保持部45と、得失保持部46と、翻訳制御情
報記憶部47と、起動順序制御部48と、利得値重付部
49と、得失計算部50から構成される。
【0067】利得計算制御部41は、割付対象xについ
ての利得値を計算するよう、処理制御を行う。利得計算
制御部41の処理内容を図7、図8のフローチャートに
示す。図7、図8は、利得計算制御部41の処理制御を
示すメインフローであり、図9は、得失値を計算する得
失計算部50のフローチャートである。図7、図8のフ
ローチャートは、割付対象xから資源継承関係を辿って
ゆくための追跡対象を生成するステップc3と、追跡対
象によって順々に資源継承関係を辿って行き、各少資源
要素の得失値を算出して少資源要素の第1段階の選考を
行うステップc4と、第1段階の再選考の結果利得値が
最大の少資源要素が複数個である場合、割付対象xと資
源排他関係にある未割付割付対象の資源継承関係を辿っ
て行き、各少資源要素の得失値を算出して少資源要素の
第2段階の選考を行うステップc10〜c16と、さら
に第2段階の再選考の結果利得値が最大の少資源要素が
複数個である場合、割付対象xと資源独立関係にある割
付対象の資源継承関係を辿って行き、各少資源要素の得
失値を算出して少資源要素の第3段階の選考を行う図8
のステップc21〜c27とを有している。
【0068】本フロ−チャ−トの第2段階の選考の部分
は、割付対象y(割付対象xと資源排他関係にあって未
割り付けである割付対象)に対して追跡対象を生成する
ステップc14と、その追跡対象を用いて割付対象yと
資源継承関係にある割付対象を探索してゆくことにより
得失値を算出するステップc15と、算出された得失値
に割付対象yの優先度を乗じた値を少資源要素の利得値
から減じるステップc16とが全ての割付対象yについ
て繰り返されるループ構造(ステップc11〜c16)
になっている。
【0069】同様に本フロ−チャ−トの第3段階の選考
の部分は、割付対象z(割付対象xと資源独立関係にあ
る割付対象)に対して追跡対象を生成するステップc2
5と、その追跡対象を用いて割付対象zと資源継承関係
にある割付対象を辿ってゆくことにより得失値を算出す
るステップc26と、算出された得失値に割付対象zの
優先度を乗じた値を少資源要素の利得値から減じるステ
ップc27とが全ての割付対象zについて繰り返される
ループ構造(ステップc22〜c27)になっている。
【0070】以降、本フロ−チャ−トが有する各ステッ
プを順を追って更に詳しく説明してゆく。 ・ステップc1では、利得計算制御部41は、利得保持
部34及び得失保持部46の各少資源要素に対応する内
容をゼロにする。 ・ステップc2では、追跡対象保持部42、処理済割付
対象保持部43を空にする。
【0071】・ステップc3では、割付対象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)を追跡対象保持部42に
格納する。
【0072】・ステップc4では、得失計算部50を起
動し、得失計算を行ない、各少資源要素毎の計算結果を
得失保持部46に保持させる。 ・ステップc5では、各少資源要素毎に得失保持部46
に格納されている値を利得保持部34に格納する。 ・ステップc6では、割付候補資源要素保持部31に格
納されている少資源要素であり且つ利得保持部34に格
納されている値が最大の少資源要素の集合RS1を求め
る。
【0073】・ステップc7では、集合RS1の要素数が
複数個であるときステップc8を行なう。そうでないと
きは、利得計算部33の処理を終了する。 ・ステップc8では、割付候補資源要素保持部31を一
旦空にし、新たに集合RS1の少資源要素を全て格納す
る。 ・ステップc9では、利得保持部34の各少資源要素に
対応する内容をゼロにし、追跡対象保持部42を空にす
る。
【0074】・ステップc10では、割付対象xと資源
継承関係にあり且つ未割付けの割付対象のみを資源排他
割付対象保持部44に格納する。 ・ステップc11では、資源排他割付対象保持部44が
空になるまでステップc12〜ステップc16を繰り返
す。 ・ステップc12では、資源排他割付対象保持部44か
ら割付対象yを一つ取り出し、資源排他割付対象保持部
44から削除する。
【0075】・ステップc13では、得失保持部46の
各少資源要素に対応する内容をゼロにし、処理済割付対
象保持部43を空にする。 ・ステップc14では、割付対象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)を追跡対象保持部42
に格納する。
【0076】・ステップc15では、得失計算部50を
起動し、得失計算を行ない、各少資源要素毎の計算結果
を得失保持部46に算出する。 ・ステップc16では、各少資源要素毎に得失保持部4
6に格納されている値に割付対象yの割付優先度を乗じ
た値を利得保持部34から減じてステップc11へ戻
る。
【0077】・ステップc17では、割付候補資源要素
保持部31に格納されている少資源要素であり且つ利得
保持部34に格納されている値が最大の少資源要素の集
合RS2を求める。 ・ステップc18では、集合RS2の要素数が複数個であ
るときステップc19を行なう。そうでないときは、利
得計算部33の処理を終了する。
【0078】・ステップc19では、割付候補資源要素
保持部31を一旦空にし、新たに集合RS2の少資源要素
を全て格納する。 ・ステップc20では、利得保持部34の各少資源要素
に対応する内容をゼロにし、追跡対象保持部42を空に
する。 ・ステップc21では、割付対象xと資源独立関係にあ
る割付対象を資源独立割付対象保持部45に格納する。
【0079】・ステップc22では、資源独立割付対象
保持部45が空になるまでステップc23〜ステップc
27までを繰り返す。空になったら利得計算部33の処
理を終了する。 ・ステップc23では、資源独立割付対象保持部45か
ら割付対象zを一つ取り出し、資源独立割付対象保持部
45から削除する。
【0080】・ステップc24では、得失保持部46の
各少資源要素に対応する内容をゼロにし、処理済割付対
象保持部43を空にする。 ・ステップc25では、割付対象zに対して追跡対象C
(z)を生成し、C(z)の各項目を 追跡対象C(z)の割付対象=C(z).ASO=z 追跡対象C(z)の生存区間長の和=C(z).LNS=1 追跡対象C(z)の少資源要素集合=C(z).RES=割付候補資
源要素保持部31に保持されている資源要素の集合 に設定し、生成した追跡対象C(z)を追跡対象保持部42
に格納する。
【0081】・ステップc26では、得失計算部50を
起動し、得失計算を行ない、各少資源要素毎の計算結果
を得失保持部46に算出する。 ・ステップc27では、各少資源要素毎に得失保持部4
6に格納されている値に割付対象zの割付優先度を乗じ
た値を利得保持部34から減じてステップc22へ戻
る。
【0082】以上のように利得計算制御部41は、割付
対象xと資源継承関係にある割付対象から利得値を算出
し(ステップc1〜ステップc5)、さらに算出した利
得値が最大の少資源要素が複数個あった場合、このう
ち、資源排他関係にある他の割付対象yに割り付けた方
が転送命令が削減される可能性のある場合も考慮して利
得値を算出している(ステップc10〜ステップc1
6)。さらに算出した利得値が最大の少資源要素が複数
個あった場合、このうち、資源独立関係にある割付対象
zに割り付けた方が、少資源要素の割り付けによる命令
間の依存発生を減少させる場合も考慮して最終的な利得
値を算している(ステップc21〜ステップc27)。
特に割付対象xと資源独立関係にある割付対象zに関し
て算出された得失値は、割付対象zに割り付けるとどれ
だけ有利な少資源要素であるかを示している。この度合
が大きい少資源要素ほど、割付対象xに割り付けると命
令間の依存発生が増加する事を示す。さらに割付対象z
の中でも、割付優先度が小さいものは、個数が限られて
いる少資源要素に割り付けられる可能性も低いのでその
効果を小さく見積もる必要がある。よってステップc2
7において割付対象zに関して算出された得失値に割付
対象zの割付優先度を乗じた値を利得保持部34から減
じている。
【0083】得失計算部50の処理内容を図9のフロ−
チャ−トに示す。得失計算部50は、図7のステップc
4、ステップc15及び図8のステップc26から起動
され、図7のフロ−チャ−トのステップc3、ステップ
c14及び図8のステップc25で追跡対象保持部42
に格納された全ての追跡対象に対しての処理を繰り返
す。
【0084】得失計算部50には、資源継承関係にある
一連の割付対象において現在資源継承関係を辿っている
箇所の割付対象A.ASOに少資源要素が割付けられている
かを判定するステップd3があり、このステップd3の
判定結果に応じてステップd4が実行されるかステップ
d5〜ステップd7が実行されるかが切り換る。ステッ
プd4では、ステップd3において割り付けられている
と判定された場合は、割付済みの割付対象まで辿り着い
たことになるので、その少資源要素の得失値を算出し、
その得失値分だけ少資源要素の得失値を増加する。これ
に対しステップd3において割り付けられてない場合、
ステップd5〜ステップd7においてさらに資源継承関
係にある割付対象から得失値を算出するために新たに追
跡対象を生成し、追跡対象を保持する追跡対象保持部4
2内から追跡対象が無くなるまでステップd2〜ステッ
プd7を繰り返すことによって、資源継承関係にある割
付対象を順に辿ってゆくループ構造になっている。以降
本フロ−チャ−トが有する各ステップを順を追って更に
詳しく説明してゆく。
【0085】・ステップd1では、追跡対象保持部42
が空になるまでステップd2〜ステップd7まで繰り返
す。空になったら得失計算部50の処理を終了する。 ・ステップd2では、追跡対象保持部42から追跡対象
Aを一つ取り出し、追跡対象保持部52から削除し、さ
らに追跡対象Aの割付対象項目である割付対象A.ASOを処
理済割付対象保持部43に格納する。
【0086】・ステップd3では、割付対象A.ASOに少
資源要素rが割付けられているか判定し、割付けられて
いるときは、ステップd4を行ない、そうでないとき
は、ステップd5を行なう。 ・ステップd4では、資源要素rが追跡対象Aの少資源
要素集合の項目であるA.RESに属しているとき、 得失値
=(1/追跡対象Aの生存区間長の和A.LNS)を求め、この
値を得失保持部46の少資源要素rの内容に加える。次
にステップd1に戻る。
【0087】・ステップd5では、割付対象A.ASOと資
源排他関係にあり、且つ少資源要素に割り付けられてい
る割付対象の集合OSを求める。 ・ステップd6では、集合OSに属している割付対象に割
付けられている少資源要素の集合RSを求める。 ステップd5、ステップd6において、割付対象A.ASO
と資源排他関係にある割付対象に割り付けられている少
資源要素集合RSを求めているのは、割付対象A.ASOと資
源継承関係にあり、且つ、割付対象A.ASOの後で辿られ
るべき割付対象にステップd5、ステップd6で求めら
れた資源要素集合RSのうち何れかの少資源要素が割り付
けられている場合、割付対象A.ASOに資源要素集合RSに
属する少資源要素を割り付けることは不可能なので、こ
のような集合RSに属する資源要素を少資源要素集合 A.R
ESから除外するためである。
【0088】・ステップd7では、割付対象A.ASOと直
接的な資源継承関係にある割付対象であり、且つ処理済
割付対象保持部43に格納されていない割付対象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−集合RS に設定し、生成した追跡対象B(y)を追跡対象保持部42
に格納し、ステップd7の実行後、ステップd1に戻
る。
【0089】以上のように得失計算部50は、ステップ
d7により資源継承関係にあるものを新たに追跡対象保
持部42に追加することによって資源継承関係を辿るこ
とを可能としている。この設定によって追跡対象が増え
るので得失値算出のための探索の範囲が広がることにな
る。追跡対象保持部42は、図7のステップc3、c1
4及び図8のステップc25、及び図9のステップd7
において得失計算部50の処理対象として生成された複
数個の追跡対象を保持する。追跡対象保持部42の保持
内容の一例を図18(a)に示す。本図は、上から順に追
跡対象保持部42の内容が処理とともに更新されていく
様子を示している。
【0090】処理済割付対象保持部43は、追跡対象と
して選択された割付対象を処理済み割付対象として保持
する。処理済割付対象保持部43は特に、資源継承関係
が循環している場合、資源継承関係を辿ってゆくために
得失計算部50の処理が無限に繰り返すことを防ぐとい
う役割を担っている。処理済割付対象保持部43の保持
内容の一例を図18(b)に示す。本図は、上から順に追
跡対象保持部42の内容が処理とともに更新されていく
様子を示している。
【0091】資源排他割付対象保持部44は、割付対象
xと資源排他関係にあり且つ、未だ資源要素を割付けて
いない割付対象を保持する。資源排他割付対象保持部4
4の保持内容の一例を図19(a)に示す。本図は、上か
ら順に資源排他割付対象保持部44の内容が処理ととも
に更新されていく様子を示している。資源独立割付対象
保持部45は、割付対象xと資源独立関係にある割付対
象を保持する。資源独立割付対象保持部45の保持内容
の一例を図19(b)に示す。本図は、上から順に資源独
立割付対象保持部45の内容が処理とともに更新されて
いく様子を示している。
【0092】得失保持部46は、図7のステップc4、
c15及び図8のステップc26の得失計算部50の実
行によって算出された得失値を各資源要素毎に保持す
る。得失保持部46の保持内容の一例を図17(b)に示
す。本図は、上から順に得失保持部46の内容が処理と
ともに更新されていく様子を示している。翻訳制御情報
記憶部47は、コンパイラが生成する目的プログラムの
コードサイズの縮小を優先するか又は依存関係の縮減を
優先するかを記憶する翻訳制御情報を記憶する。
【0093】起動順序制御部48は、翻訳制御情報がコ
ードサイズ縮小優先を示している場合、依存関係の縮減
優先を示している場合のそれぞれにおいて、図7のステ
ップc1〜c5、ステップc10〜c16、ステップc
21〜c27をそれぞれ相異なる順序で起動するよう利
得計算制御部41を制御する。図7のステップc1〜c
5は、割付対象の資源継承関係にある割付済み割付対象
から少資源要素を判定するので継承性資源要素選択部と
呼ばれ、ステップc10〜c16は、割付対象と資源排
他関係にある割付済み割付対象から少資源要素を判定す
る排他性資源要素選択部と呼ばれる。ステップc21〜
c27は、割付対象の資源独立関係にある割付済み割付
対象から少資源要素を判定するので独立性資源要素選択
部と呼ばれる。図7において利得計算制御部41は、こ
れらは継承性−排他性−独立性の順序で起動していた
が、これは特にコンパイラが生成する目的プログラムの
コードサイズの縮小を優先することを示す翻訳制御情報
が翻訳制御情報記憶部47に記憶されているためであ
り、資源割り付けによる命令間の依存発生を削減する場
合、起動順序制御部48は独立性資源要素選択部を優先
的に起動するよう利得計算制御部41を制御する。具体
的にいうと、図7に示す3つの資源要素選択部を独立性
−継承性−排他性の順序、又は継承性−独立性−排他性
の順序で起動するよう利得計算制御部41を制御する。
【0094】利得値重付部49は、プログラムのコード
サイズ縮小を重視する旨を示す翻訳制御情報が翻訳制御
情報記憶部47に記憶されている場合、継承性資源要素
選択部、排他性資源要素選択部が算出した利得値に重み
付けるべき重要度を引き上げ、依存関係の縮減を重視す
る旨を示す翻訳制御情報が翻訳制御情報記憶部47に記
憶されている場合、独立性資源要素選択部が算出した利
得値に重み付けるべき重要度を引き上げた後、利得値重
付部49は、継承性資源要素選択部、排他性資源要素選
択部、独立性資源要素選択部が算出した利得値に、それ
らの重要度を重み付けるよう利得計算制御部41を制御
する。
【0095】<具体的な実施形態の動作説明>以上のよ
うに構成される本実施形態の資源割付装置における具体
的な処理内容をこれまでに示したフローチャートを再度
参照しながら説明する。まず前提としてここで扱う少資
源をレジスタとし多資源をメモリとする。また説明の簡
便化のためにレジスタは、4本(R0〜R3)とする。よって
以降では、少資源要素とは、レジスタR0,R1,R2,R3のそ
れぞれを指示するものとする。また、多資源要素とは、
メモリの割り付け単位を指示するものとする。
【0096】勿論、特定領域のメモリを少資源要素とみ
なすことにより、本実施形態における資源割り付け処理
をメモリに対して適用することも可能であるが、このよ
うな割り付け処理は、本実施形態において特に顕著な効
果を奏するものではないので、メモリに関しては、従来
技術における資源割り付け処理を適用するものとする。
【0097】予め割り付け先が決められている割付対象
には、関数呼び出しにおいて破壊されるレジスタR0,R
1、引数の格納のため使用されるレジスタをR0,R1、関数
の戻り値の格納に使用される戻り値レジスタR0がある。
図10のC言語記述のプログラムに対して既に構文解析
装置11及び最適化装置12によって図11(b) のよう
な3番地形式の中間プログラムが出力されている。さら
に最適化装置12によって中間プログラムから基本ブロ
ックが抽出され制御フロー情報およびデータフロー情報
が求められる。図11(b)の中間プログラムから図11
(d)のように基本ブロックが抽出される。また図11で
は、陽に示していないが、各変数がどこで定義され参照
されるかの情報も解析される。例えば図11(b)の変数t
1は、中間命令i1で定義され、中間命令i2で参照されて
いることが解析されている。さらに最適化装置12によ
って図12(a)〜(d)のように各基本ブロックの中間命令
間の依存グラフが求められる。なお、図11(b)では、
特に図中の変数Pr1は、仮引数、変数Ar1,Ar2は、関数の
実引数、変数Fr1, Fr2, Fr3,は、それぞれおよび関数の
戻り値を保持する変数である。また、同図中の変数Br1,
Br2,Br3は、それぞれの関数呼び出しにおいて、破壊さ
れる可能性のあるレジスタを示すために便宜的に採り入
れられた変数である。
【0098】この状態で資源割付装置13に処理が移
る。資源割付制御部28は、割付対象生成部22を起動
する。割付対象生成部22は、制御フロー情報、および
データフロー情報から変数に対する割付対象を生成する
(ステップa1)。その結果図14のn10からn15
までの情報と、図15のn20からn26までの情報が
得られる。図14は、以下で行う割り付け処理によりレ
ジスタが割付けられるものを表し、図15は、実引数(A
r)、関数の戻り値(Fr)、破壊レジスタ(Br)を表す割付対
象を示しており、n26に示す通り既にレジスタに割り
付けられている。図14及び図15に示された割付対象
の情報は、図1中の割付対象保持部21に保持される。
次に資源割付制御部28は、資源排他割付対象検出部2
3を起動する。資源排他割付対象検出部23は、割付対
象保持部21に保持されている各々の割付対象に関して
資源排他関係にある割付け対象を求める(ステップa
2)。その結果図14のn16の情報が得られる。
【0099】次に資源割付制御部28は、資源継承割付
対象検出部24を起動する。資源継承割付対象検出部2
4は、割付対象保持部21に保持されている各々の割付
対象に関して直接的な資源継承関係にある割付対象を求
める(ステップa3)。その結果図14のn17の情報
が得られる。資源割付制御部28は、資源独立割付対象
検出部25を起動する。資源独立割付対象検出部25
は、割付対象保持部21に保持されている各々の割付対
象に関して資源独立関係にある割付対象を求める(ステ
ップa4)。その結果図14のn18の情報が得られ
る。次に資源割付制御部28は、割付優先度計算部26
を起動する。割付優先度計算部26は、各割付対象に関
して割付優先度を計算する(ステップa5)。その結果
図14のn19の情報が得られる。
【0100】次に資源割付制御部28は、割付資源要素
決定部27を起動する。割付資源要素決定部27は、割
付優先度の高い割付対象から順にレジスタを割付対象に
割付ける(ステップa6)。ここで割付資源要素決定部
27の処理を図6に示す資源要素決定制御部35のフロ
ーチャートを参照しながら説明する。
【0101】先ず、資源要素決定制御部35は、未割付
けの割付対象が存在するか否か判定し、未割付けの割付
対象のうち、割付優先度が最大の割付対象t2を取り出す
(ステップb1、b2)。 <割付対象t2を対象とした処理内容(p0)>次に資源要素
決定制御部35は、割付可能資源要素検出部32を起動
する(ステップb3)。割付可能資源要素検出部32
は、資源排他関係にある割付対象に割付けられていない
レジスタR0〜R3を割付候補資源要素保持部31に保持さ
せる(図16(P0-1))。次に資源要素決定制御部35
は、割付候補資源要素保持部31に格納されているレジ
スタが複数個存在すると判定し、利得計算部33を起動
する(ステップb4、b6、b8)。その結果、図4に
示される利得計算部33の利得計算制御部41が起動さ
れる。
【0102】<割付対象t2に対する利得計算部33の処
理内容(p1)>利得計算制御部41は、図17(a)(b)の(p
1-1)のように利得保持部34及び得失保持部46の各資
源要素の欄をゼロに設定する(ステップc1)。次に利
得計算制御部41は、図18(a)(b)の(p1-1)のように追
跡対象保持部42、処理済割付対象保持部43を空に設
定する(ステップc2)。次に利得計算制御部41は、
割付対象t2に対して追跡対象A1を生成し、A1の各項目を
図14からA1.ASO = t2, A1.LNS = 1, A1.RES = R0〜R3
に設定する。次に図18(a)の(p1-2) のようにA1を追跡
対象保持部42に格納する(ステップc3)。図18
(a)の(p1-2)では、追跡対象を(A1, t2, 1, (R0,R1,R2,R
3))で表現し、各項目は、(追跡対象名、割付対象、生存
区間長の和、得失値を求めるべき資源要素の集合)を示
す。次に利得計算制御部41は、得失計算部50を起動
する。
【0103】<追跡対象A1に対する得失計算部50の処
理内容(p2)>ここでさらに割付対象t2に関する利得計算
制御部41の処理内容を図9に示すフローチャートを参
照しながら説明する。まず、ステップd1、ステップd
2では、追跡対象A1を追跡対象保持部42から取り出
し、追跡対象保持部42から削除する。さらに追跡対象
A1の割付対象項目である割付対象t2を処理済割付対象保
持部43に格納する(図18(a)(p2-1)、図18(b)(p2-
1))。
【0104】次にステップd3において追跡対象A1の割
付対象項目である割付対象t2はレジスタに割り付けられ
ているかが判定されるが、割り付けられていないのでス
テップd5に進む。次にステップd5〜ステップd6で
は、集合OSおよび集合RSともに空となる。次にステップ
d7では、追跡対象A1の割付対象項目である割付対象t2
と直接的な資源継承関係にある割付対象t3に対して図1
8(a)(p2-2)にように追跡対象A2を生成する。ここで追
跡対象A2の生存区間長の和は、A2.LNSの1と、割付対象t
2の生存区間長 1 の和 2 となる。次にステップd1へ
戻る。
【0105】<追跡対象A2の処理(p3)>次にステップd
1、ステップd2では、追跡対象A2を追跡対象保持部4
2から取り出し、追跡対象保持部42から削除する。さ
らに追跡対象A2の割付対象項目である割付対象t3を処理
済割付対象保持部43に格納する(図18(a)(p3-1)、
図18(b)(p3-1))。
【0106】次にステップd3では、追跡対象A2の割付
対象項目である割付対象t3は、レジスタに割り付けられ
ていないのでステップd5に進む。次にステップd5〜
ステップd6では、集合OSおよび集合RSともに空とな
る。次にステップd7では、追跡対象A2の割付対象項目
である割付対象t3と直接的な資源継承関係にあり、かつ
処理済割付対象保持部43に格納されていない割付対象
は、存在しないので、追跡対象を生成せずステップd1
へ戻る。ステップd1では、追跡対象保持部42が空な
ので得失計算部50を終了しステップc4へ戻り、ステ
ップc5へ進む。
【0107】<割付対象t2に対する利得計算部33のス
テップc5からの処理内容(p1)>次に利得計算制御部4
1は、図17(a)(p1-2)のように 得失保持部46(p1-1)
に保持されている値を利得保持部34に設定する(ステ
ップc5)。次に利得計算制御部41は、利得保持部3
4に格納されている値が最大のレジスタを求める。この
場合、R0〜R3を集合要素として集合RS1が求められる
(ステップc6)。次に利得計算制御部41は、集合RS
1の要素は、複数個であるので、図16(p1-1)のように
割付候補資源要素保持部31に集合RS1を設定し、さら
に利得保持部34の内容をゼロにし、追跡対象保持部4
2の内容を空に設定する(ステップc8、c9、図17
(a)(p1-3)、図18(a)(p1-3))。
【0108】次に利得計算制御部41は、割付対象t2と
資源排他関係にあり且つ未割り付けの割付対象t1を資源
排他割付対象保持部44に格納する(図19(p1-1))。
次に利得計算制御部41は、資源排他割付対象保持部4
4から割付対象t1を取り出し、得失保持部46の内容を
ゼロにし、処理済割付対象保持部43を空に設定する
(図19(a)(p1-2)、図17(b)(p1-2)、図18(b)(p1-
2))。次に利得計算制御部41は、割付対象t1に対して
追跡対象B1を生成し、B1の各項目を図14からB1.ASO =
t1, B1.LNS = 1, B1.RES = R0〜R3 に設定する。次に
図18(a)(p1-4)のようにB1を追跡対象保持部42に格
納する (ステップc14)。次に利得計算制御部41
は、得失計算部50を起動する。
【0109】<追跡対象B1に対する得失計算部50の処
理内容(p4)>ここでさらに割付対象t1に関する利得計算
制御部41の処理内容を図9に示すフローチャートを参
照しながら説明する。まず、ステップd1、ステップd
2では、追跡対象B1を追跡対象保持部42から取り出
し、追跡対象保持部42から削除する。さらに追跡対象
B1の割付対象項目である割付対象t1を処理済割付対象保
持部43に格納する(図18(a)(p4-1)、図18(b)(p4-
1)。) 次にステップd3では、追跡対象B1の割付対象.項目に
て指定された割付対象t1は、レジスタに割り付けられて
いないのでステップd5に進む。次にステップd5〜ス
テップd6では、集合OSおよび集合RSともに空となる。
次にステップd7では、追跡対象B1の割付対象項目であ
る割付対象t1と直接的な資源継承関係にある割付対象Pr
1,t10 に対して図18(a)(p4-2)のように 追跡対象B2,B
3を生成する。ここで追跡対象B2,B3の生存区間長の和
は、B1.LNSの1と、割付対象t1の生存区間長7 の和8とな
る。次にステップd1へ戻る。
【0110】<追跡対象B2,B3の処理(p5)>次にステッ
プd1、ステップd2では、追跡対象B2を追跡対象保持
部42から取り出し、追跡対象保持部42から削除す
る。さらに追跡対象B2の割付対象項目である割付対象Pr
1を処理済割付対象保持部43に格納する(図18(a)(p
5-1)、図18(b)(p5-1))。
【0111】次にステップd3では、追跡対象B1の割付
対象項目である割付対象Pr1 は、レジスタに割り付けら
れているのでステップd4に進む。次にステップd4で
は、図15の割付対象Pr1 に割り付けられている割付資
源要素がR0であり、追跡対象B2の少資源要素集合の項目
であるB2.RESに属しているので、得失値= 1 / B1.LNS =
1/8 = 0.13 を求め、 図17(b)(p5-1)のように得
失保持部46のレジスタR0の内容に0.13を加える。次に
ステップd1に戻る。
【0112】次にステップd1、ステップd2では、追
跡対象B3を追跡対象保持部42から取り出し、追跡対象
保持部42から削除する。さらに追跡対象B3の割付対象
項目である割付対象t10を処理済割付対象保持部43に
格納する(図18(a)(p5-2)、図18(b)(p5-2))。次に
ステップd3では、 追跡対象B3の割付対象項目である
割付対象t10は、レジスタに割り付けられていないので
ステップd5に進む。次にステップd5〜ステップd6
では、集合OSの要素が割付対象Br1となり、集合RSは、
(R0,R1)となる。次にステップd7では、追跡対象B3の
割付対象項目である割付対象t10と直接的な資源継承関
係にあり、かつ処理済割付対象保持部43に格納されて
いない割付対象は、存在しないので、追跡対象を生成せ
ずステップd1へ戻る。ステップd1では、追跡対象保
持部42が図18(p5-2)のように追跡対象保持部42が
空なので得失計算部50を終了しステップc15へ戻
り、ステップc16へ進む。
【0113】<割付対象t2に対する利得計算部33のス
テップc16からの処理内容(p1)>次に利得計算制御部
41は、図17(b)(p5-1)に示す得失値に、図14に示
す割付対象t1の割付優先度0.57を乗じた値を、 図17
(a)(p1-3)から減じる(図17(a)(p1-4))。特にここで
図17(a)(p1-4)のR0の利得値が、-0.07であるのは、図
17(b)(p5-1)のR0の得失値0.13であり、0.13× 0.57
≒ 0.07を 0 から減じたことによる。次に利得計算制御
部41は、ステップc11に戻るが図19(a)(p1-2) の
ように資源排他割付対象保持部44が空であるのでルー
プ1(ステップc11)の処理を終えステップc17へ進
む。次に利得計算制御部41は、図17(a)(p1-4)のう
ち利得値が最大のR1, R2, R3 を集合要素とする集合RS2
に求め、当該集合の要素数が2個以上なのでステップc
19に進む(ステップc17、c18)。
【0114】次に利得計算制御部41は、図16(p1-2)
のように割付候補資源要素保持部31に集合RS2を設定
し、さらに利得保持部34の内容をゼロにし、追跡対象
保持部42の内容を空に設定する(ステップc19、c
20、図17(a)(p1-5)、図18(a)(p1-5))。利得計算
制御部41は、割付対象t2と資源独立関係にある割付対
象t4,t5 について追跡対象を生成し、得失値ルーチンを
起動して得失値を求めるが、割付対象t4,t5 ともに資源
継承関係にある割付対象にレジスタが割り付けられてい
ない。よって、図9のステップd4を実行することがな
いので各レジスタの得失値は、常にゼロとなり利得保持
部34の内容は、図17(a)(p1-5) のまま変化せずにル
ープ2(ステップc22)の処理を終了する(ステップ
c22〜c27)。次に利得計算制御部41は、利得計
算部33の処理を終了し、図6のステップb8に戻る。
【0115】<割付対象t2を対象としたステップb9か
らの処理内容(p0)>次に資源要素決定制御部35は、図
16(a)(p1-2) に示す割付候補資源要素保持部31に格
納されているレジスタと、 図17(a)(p1-5)に示す利得
保持部34の値のうち利得値が最大であるレジスタR1を
割付対象t2に割り付ける(図16(b)(p0))。次に資
源要素決定制御部35は、未割付けの割付対象が存在す
るか否か判定し、未割付けの割付対象のうち、割付優先
度が最大の割付対象t3を取り出す(ステップb1、b
2)。
【0116】<割付対象t3を対象とした処理内容(p6)>
次に資源要素決定制御部35は、割付対象t3に対しても
割付対象t2と同様の処理を行なう。よってその詳細な処
理説明は、省略するが、特に第1のレジスタ選択の処理
であるステップc1〜c6において、割付対象t3と資源
継承関係にある割付対象t2がレジスタR1に割り付けられ
ているので、ステップd4でレジスタR1の得失値が増加
し、結果的にR1の利得値が最大となり、割付対象t3に
は、レジスタR1が割り付けられる(図16(b)(p6) )。
次に資源要素決定制御部35は、未割付けの割付対象が
存在するか否か判定し、未割付けの割付対象のうち、割
付優先度が最大の割付対象t4を取り出す(ステップb
1、b2)。
【0117】<割付対象t4を対象とした処理内容(P7)>
次に資源要素決定制御部35は、割付対象t4に対しても
割付対象t2と同様に、ステップb3〜b6を行ない、ス
テップb8に進んで利得計算部33を起動し、利得計算
制御部41が起動される。次に利得計算制御部41は、
割付対象t2と同様に、第1のレジスタ選択の処理と第2
のレジスタ選択の処理(ステップc1〜c18)までと
ステップc19、c20を行うので、ステップc1〜c
20までの詳細な説明は、省略する。その処理の結果、
割付候補資源要素保持部31、利得保持部34、追跡対
象保持部42の内容は、 図16(a)(p7-1)、図17(a)
(p7-1)、図18(a)(p7-1)のようになる。
【0118】次に利得計算制御部41は、割付対象t4と
資源独立関係にある割付対象t2,t3を資源独立割付対象
保持部45に格納する(ステップc21、図19(b)(p7
-1))。次に利得計算制御部41は、資源独立割付対象
保持部45から割付対象t2を取り出し、得失保持部46
の内容をゼロにし、処理済割付対象保持部43を空に設
定する(図19(b)(p7-2)、図17(b)(p7-1)、図18
(b)(p7-1))。次に利得計算制御部41は、割付対象t2
に対して追跡対象C1を生成し、C1の各項目を図14から
C1.ASO = t2, C1.LNS = 1,C1.RES = R1〜R3に設定す
る。次に図18(a)(p7-2)のようにC1を追跡対象保持部
42に格納する(ステップc25)。次に利得計算制御
部41は、得失計算部50を起動する。
【0119】<追跡対象C1に対する得失計算部50の処
理内容(p8)>ここでさらに割付対象t4に関する利得計算
制御部41の処理内容を図9に示すフローチャートを参
照しながら説明する。まず、ステップd1、ステップd
2では、追跡対象C1を追跡対象保持部42から取り出
し、追跡対象保持部42から削除する。さらに追跡対象
C1の割付対象項目である割付対象t2を処理済割付対象保
持部43に格納する(図18(a)(p8-1)、図18(b)(p8-
1)。) 次にステップd3では、追跡対象C1の割付対象項目であ
る割付対象t2は、レジスタに割り付けられているのでス
テップd4に進む。次にステップd4では、図16(b)
(p0) のように割付対象t2に割り付けられている割付資
源要素がR1であり、追跡対象C1の少資源要素集合の項目
であるC1.RESに属しているので、得失値 =1 / C1.LNS =
1/1 = 1 を求め、 図17(b)(p8-1)のように得失保持
部46のレジスタR1の内容に 1 を加える。次にステッ
プd1に戻るが図18(a)(p8-1)のように追跡対象保持
部42が空なので得失計算部50を終了しステップc2
6へ戻り、ステップc27へ進む。
【0120】<割付対象t4に対する利得計算部33のス
テップc27からの処理内容(p7)>次に利得計算制御部
41は、図17(b)(p8-1)に示す得失値に、 図14に示
す割付対象t2の割付優先度2 を乗じた値を、 図17(a)
(p7-1)から減じる(図17(a)(p7-2))。次に利得計算
制御部41は、ステップc22に戻る。次に利得計算制
御部41は、割付対象t4と資源独立関係にある割付対象
t3を取り出し(図19(b)(p7-3))、 割付対象t2と同様
にステップc24〜c27を行ない、結果、利得保持部
34の内容は、図17(a)(p7-3)となる。次に利得計算
制御部41は、図19(b)(p7-3)に示すように資源独立
割付対象保持部45が空であるのでループ2(ステップ
c22)の処理を終了し、利得計算部33の処理を終了
し、図6のステップb8に戻る。
【0121】<割付対象t4を対象としたステップb9か
らの処理内容(p7)>次に資源要素決定制御部35は、図
16(a)(p7-1) に示す割付候補資源要素保持部31に格
納されているレジスタと、 図17(a)(p7-3)に示す利得
保持部34の値のうち利得値が最大であるレジスタR2を
割付対象t4に割り付ける(図16(b)(p7))。次に資源
要素決定制御部35は、未割付けの割付対象が存在する
か否か判定し、未割付けの割付対象のうち、割付優先度
が最大の割付対象t5を取り出す(ステップb1、b
2)。
【0122】<割付対象t5を対象とした処理内容(p9)>
次に資源要素決定制御部35は、割付対象t5に対しても
割付対象t4と同様の処理を行なう。よってその詳細な処
理説明は、省略するが、特に第1のレジスタ選択の処理
であるステップc1〜c6において、割付対象t5と資源
継承関係にある割付対象t4がレジスタR2に割り付けられ
ているので、ステップd4でレジスタR2の得失値が増加
し、結果的にR2の利得値が最大となり、割付対象t5に
は、レジスタR2が割り付けられる(図16(b)(p9) )。
この結果、割付対象t2,t3と割付対象t4,t5は、異なるレ
ジスタに割り付けられているので図11(a)の中間命令i
2,i3,i4 と中間命令i5,i6,i7 においては、レジスタ割
り付けによる命令間の新たな依存の発生は起きない。ま
た割付対象t2とt3及び割付対象t4とt5は、ともに同じレ
ジスタに割り付けられているので、図11(a)の中間命
令i3,i6 においてレジスタ割り付けによる新たな転送命
令の発生も起きない。
【0123】<その他の割付対象に対する処理結果(p1
0)>次に資源要素決定制御部35は、図14の割付対象
t6〜t10および b に対して同様の処理を行ない、結果図
16(b)(p10)のように割り付けられる。次に資源要素決
定制御部35は、未割り付けの割付対象が無くなったの
で割付資源要素決定部27の処理を終える。
【0124】以上のように本実施形態によれば、プログ
ラム中の各割付対象の資源継承関係が広域的にどうなっ
ているかを参照するため、より理想的な資源割付が行わ
れる。ネストレベルが深い箇所に優先してレジスタを割
り付け、その割り付け済みのレジスタをネストレベルが
浅くなる箇所に拡散してゆくような、又は使用頻度が高
い箇所に優先してレジスタを割り付け、その割り付け済
みのレジスタをネストレベルが低い箇所に拡散してゆく
ような、又は引数レジスタ、戻り値レジスタ、破壊レジ
スタ等予め割り付ける相手が決められた割付対象がその
資源を周りに拡げてゆくようなスマートな資源割り付け
を実現できるとともに、割り付けレジスタの選択時に命
令間の依存発生を抑えるレジスタ選択が実現できる。よ
って、割付結果が非常に洗練されたものになるため最終
的に生成する目的プログラムのプログラムサイズおよび
実行速度は、一層向上する。
【0125】
【発明の効果】以上説明したように本発明に係る資源割
付装置によれば、次に資源要素を割り付けるべき割付対
象が定義されている命令と同一の基本ブロックに位置す
る命令であって、当該定義命令と直接的な依存関係を有
さず、尚且つ間接的な依存関係を有さない独立命令にて
定義されている割付対象を検出する資源独立関係割付対
象検出手段と、前記複数の資源要素のうち、何れかの資
源要素が何れかの割付対象に既に割り付けられている場
合、前記資源独立関係割付対象検出手段により検出され
た割付対象が、それら割付済み割付対象と直接的な生存
区間の連続性及び/又は間接的な生存区間の連続性を有
しているかを判定する第1の生存区間連続性判定手段
と、次に資源要素を割り付けるべき割付対象と、既に資
源要素が割り付けられた割付対象とが直接的な生存区間
の連続性及び/又は間接的な生存区間の連続性を有して
いるかを判定する第2の生存区間連続性判定手段と、前
記第1及び第2の生存区間連続性判定手段により生存区
間の連続性が判定されると、判定された割付対象に割付
け済みのそれぞれの資源要素を、次に資源要素を割り付
けるべき割付対象に割り付けた場合に目的プログラムに
与え得る利害得失を各資源要素について定量化する定量
化手段と、定量化手段により定量化された利害得失を示
す利得値を資源要素同士で比較して、その利得が最も大
きい資源要素を、次に資源要素を割り付けるべき割付対
象に順次割り付ける割付手段とを備えている。ここで定
量化手段は、独立性が成立している割付対象、資源継承
関係が成立している割付対象と直接的又は間接的な生存
区間の連続性を有した割付対象に割付済みの資源要素に
ついて利害得失を定量化するので、得失値と並列実行性
とを総合的に評価することができる。このような総合評
価により転送命令の低減と、並列実行性の低減とを両立
させることができ、転送の発生と命令依存性の発生とを
抑えることができる。従って、目的プログラムのコード
サイズ縮小、実行時間短縮を両立することができる。
【0126】ここで各資源要素に対応づけて、利得値の
初期値を記憶する利得値記憶手段を新たに設け、前記定
量化手段は、前記第1の生存区間連続性判定手段によっ
て生存区間の連続性が判定された場合、前記資源独立関
係割付対象検出手段により検出された割付対象から既に
資源要素が割り付けられた割付対象までの生存区間長の
短さに応じて、既に割付対象に割り付けられている資源
要素についての利得値を減少する第1減少部を備えるよ
うにしてもよい。
【0127】本装置によれば、利得値記憶部に記憶され
ている各資源要素の利得値が、第1の減少部によって減
少させられる。そのため次に資源要素を割り付けるべき
割付対象と、独立性が成立する割付対象であって、他の
基本ブロックに存在するものに資源要素が割り付けられ
ている場合、当該次に資源要素を割り付けるべき割付対
象に割り付けることが機械語プログラムの並列実行にど
れだけの損失をもたらすかを客観的に評価でき、より綿
密に資源割付を行える。また利得値記憶部は、全ての資
源要素と、各々の資源要素の利得値の初期値とを対応づ
けて記憶しているので、第1減少部により独立性が成立
する割付対象に割り付けられている資源要素の利得値が
低く見積もられた場合、全く未割付けの資源要素の利得
値が大きく見積もられるようになる。そのため未割付け
次に資源要素を割り付けるべき割付対象に割り付けるこ
とができる。
【0128】ここで前記定量化手段は、次に資源要素を
割り付けるべき割付対象から、既に資源要素が割り付け
られた割付対象までの生存区間長の短さに応じて、当該
既に資源要素が割り付けられた割付対象に割り付けられ
ている資源要素の利得値を増加させる増加部を備えるよ
うに構成しても良い。本装置によれば、次に資源要素を
割り付けるべき割付対象の生存区間と連続性を有する割
付対象に資源要素が割り付けられている場合、割付済み
割付対象までの生存区間長の短さに応じて利得値記憶部
に記憶されている利得値が増加されるので、また生存区
間の遠近が影響するように資源割付が行われる。当該次
に資源要素を割り付けるべき割付対象に割り付ければ、
どれだけの利得をもたらすかを客観的に評価でき、より
綿密に資源割付を行える。
【0129】ここで次に資源要素を割り付けるべき割付
対象と生存区間が重複する割付対象であって、資源要素
が割り付けられていない割付対象を検出する資源排他未
割付割付対象判定手段と、既に資源要素が割り付けられ
た割付対象の生存区間と、前記資源排他未割付割付対象
判定手段により判定された割付対象の生存区間とが直接
的な生存区間の連続性及び/又は間接的な生存区間の連
続性を有しているかを判定する第3の生存区間連続性判
定手段とを備え、前記定量化手段は、前記資源排他未割
付割付対象判定手段により判定された割付対象から、既
に資源要素が割り付けられた割付対象までの生存区間長
の短さに応じて、当該既に資源要素が割り付けられた割
付対象に割り付けられている資源要素の利得値を減少さ
せる第2減少部とを備えていてもよい。
【0130】本装置によれば、次に資源要素を割り付け
るべき割付対象と生存区間が重なる未割付け割付対象と
連続性を有する割付対象に資源要素が割り付けられてい
る場合、割付済み割付対象から未割付割付対象までの生
存区間長の短さに応じて利得値記憶部に記憶されている
利得値が減少されるので、また生存区間の遠近が影響す
るように資源割付が行われる。当該次に資源要素を割り
付けるべき割付対象に割り付ければ、どれだけの損失を
もたらすかを客観的に評価でき、より綿密に資源割付を
行える。
【0131】また上記構成において、前記資源割付装置
は、プログラムにおける割付対象の使用頻度及び/又は
生存区間のネストレベルが反映された割付対象の優先度
を各割付対象に対応づけて記憶する優先度記憶手段と、
次に資源要素を割り付けるべき割付対象を優先度順に指
定する指定手段とを備えていてもよい。本装置によれ
ば、使用頻度又はネストレベルが高い順に資源要素が割
り付けられてゆくため、生存区間の位置関係と、使用頻
度及びネストレベルとを考慮した資源割付を実現でき、
目的プログラムの品質を向上させることができる。
【図面の簡単な説明】
【図1】実施形態に係る資源割付装置13の構成図であ
る。
【図2】コンパイラ1の構成図である。
【図3】割付資源要素決定部27の構成図である。
【図4】利得計算部33の構成図である。
【図5】資源割付制御部28の構成図である。
【図6】資源要素決定制御部35の処理手順を示すフロ
ーチャートである。
【図7】利得計算制御部41の処理手順を示すフローチ
ャートである。
【図8】利得計算制御部41の処理手順を示すフローチ
ャートである。
【図9】得失計算部50の処理手順を示すフローチャー
トである。
【図10】高級言語で書かれたプログラムの一例を示す
図である。
【図11】プログラム例に対する中間コードと割付対象
の生存区間を示す図である。
【図12】プログラム例に対する中間命令の依存グラフ
である。
【図13】プログラム例に対する中間命令の命令依存表
である。
【図14】割付対象保持部21の保持内容の一例を示す
図である。
【図15】割付対象保持部21の保持内容の一例を示す
図である。
【図16】(a)割付候補資源要素保持部31の保持内
容の一例を示す図である。 (b)割付状況テーブルの保持内容の推移の一例を示す
図である。
【図17】(a)利得保持部34の推移の一例を示す図
である。 (b)得失保持部46の推移の一例を示す図である。
【図18】(a)追跡対象保持部42の推移の一例を示
す図である。 (b)処理済割付対象保持部43の推移の一例を示す図
である。
【図19】(a)資源排他割付対象保持部44の推移の
一例を示す図である。 (b)資源独立割付対象保持部45の推移の一例を示す
図である。
【図20】割付対象xと資源継承関係、資源排他関係が
成立する割付対象に割り付けられた資源要素のそれぞれ
についての利害得失がどのように定量化されるかを示す
図である。
【図21】基本ブロック内の資源独立関係を算出するア
ルゴリズムである。
【図22】直接的な独立命令にある割付対象と、間接的
な独立命令にある割付対象とを示す図である。
【符号の説明】
11 構文解析装置 12 最適化装置 13 資源割付装置 14 コード生成装置 15 最適化情報保持部 21 割付対象保持部 22 割付対象生成部 23 資源排他割付対象検出部 24 資源継承割付対象検出部 25 資源独立割付対象検出部 26 割付優先度計算部 27 割付資源要素決定部 28 資源割付制御部 31 割付候補資源要素保持部 32 割付可能資源要素検出部 33 利得計算部 34 利得保持部 35 資源要素決定制御部 41 利得計算制御部 42 追跡対象保持部 43 処理済割付対象保持部 44 資源排他割付対象保持部 45 資源独立割付対象保持部 46 得失保持部 47 翻訳制御情報記憶部 48 起動順序制御部 49 利得値重付部 50 得失計算部

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 高級言語で書かれたプログラムを目的プ
    ログラムに翻訳するコンパイラに用いられ、プログラム
    の中の変数と、その生存区間との組である複数の割付対
    象のそれぞれにハードウェア資源が有する複数の資源要
    素を割り付ける資源割付装置であって、 前記プログラムは、複数の基本ブロックからなり、各基
    本ブロックは、その途中からの飛び越しが存在せず、そ
    の途中への飛び越し先もない命令列であり、 次に資源要素を割り付けるべき割付対象が定義されてい
    る命令と同一の基本ブロックに位置する命令であって、
    当該定義命令と直接的な依存関係を有さず、尚且つ間接
    的な依存関係を有さない独立命令にて定義されている割
    付対象を検出する資源独立関係割付対象検出手段と、 前記複数の資源要素のうち、何れかの資源要素が何れか
    の割付対象に既に割り付けられている場合、前記資源独
    立関係割付対象検出手段により検出された割付対象が、
    それら割付済み割付対象と直接的な生存区間の連続性及
    び/又は間接的な生存区間の連続性を有しているかを判
    定する第1の生存区間連続性判定手段と、 次に資源要素を割り付けるべき割付対象と、既に資源要
    素が割り付けられた割付対象とが直接的な生存区間の連
    続性及び/又は間接的な生存区間の連続性を有している
    かを判定する第2の生存区間連続性判定手段と、 前記第1及び第2の生存区間連続性判定手段により生存
    区間の連続性が判定されると、判定された割付対象に割
    付け済みのそれぞれの資源要素を、次に資源要素を割り
    付けるべき割付対象に割り付けた場合に、目的プログラ
    ムに与え得る利害得失を各資源要素について定量化する
    定量化手段と、 前記定量化手段により定量化された利害得失を示す利得
    値を資源要素同士で比較して、その利得が最も大きい資
    源要素を、次に資源要素を割り付けるべき割付対象に順
    次割り付ける割付手段とを備えることを特徴とする資源
    割付装置。
  2. 【請求項2】 前記資源割付装置は、 各資源要素に対応づけて、利得値の初期値を記憶する利
    得値記憶手段を備え、前記定量化手段は、 前記第1の生存区間連続性判定手段によって生存区間の
    連続性が判定された場合、前記資源独立関係割付対象検
    出手段により検出された割付対象から既に資源要素が割
    り付けられた割付対象までの生存区間長の短さに応じ
    て、既に割付対象に割り付けられている資源要素につい
    ての利得値を減少する第1減少部を備えることを特徴と
    する請求項1記載の資源割付装置
  3. 【請求項3】 前記定量化手段は、前記第2の生存区間
    連続性判定手段によって生存区間の連続性が判定された
    場合、次に資源要素を割り付けるべき割付対象から、既
    に資源要素が割り付けられた割付対象までの生存区間長
    の短さに応じて、当該既に資源要素が割り付けられた割
    付対象に割り付けられている資源要素の利得値を増加さ
    せる増加部を備えることを特徴とする請求項2記載の資
    源割付装置。
  4. 【請求項4】 前記資源割付装置は、 次に資源要素を割り付けるべき割付対象と生存区間が重
    複する割付対象であって、資源要素が割り付けられてい
    ない割付対象を検出する資源排他未割付割付対象判定手
    段と、 既に資源要素が割り付けられた割付対象の生存区間と、
    前記資源排他未割付割付対象判定手段により判定された
    割付対象の生存区間とが直接的な生存区間の連続性及び
    /又は間接的な生存区間の連続性を有しているかを判定
    する第3の生存区間連続性判定手段とを備え、 前記定量化手段は、 前記資源排他未割付割付対象判定手段により判定された
    割付対象から、既に資源要素が割り付けられた割付対象
    までの生存区間長の短さに応じて、当該既に資源要素が
    割り付けられた割付対象に割り付けられている資源要素
    の利得値を減少させる第2減少部とを備えることを特徴
    とする請求項3記載の資源割付装置
  5. 【請求項5】 前記資源割付装置は、 プログラムにおける割付対象の使用頻度及び/又は生存
    区間のネストレベルが反映された割付対象の優先度を各
    割付対象に対応づけて記憶する優先度記憶手段と、 次に資源要素を割り付けるべき割付対象を優先度順に指
    定する指定手段とを備えることを特徴とする請求項4に
    記載の資源割付装置。
  6. 【請求項6】 前記定量化手段は、前記資源独立関係割
    付対象検出手段により判定された割付対象から、前記第
    1の生存区間連続性判定手段によって連続性が判定され
    た既に資源要素が割り付けられた割付対象までの生存区
    間長の短さを算出する第1の短さ算出部と、 前記資源独立関係割付対象検出手段により判定された割
    付対象の優先度を検出する第1の優先度検出部とを備
    え、 前記第1減少部は、 前記第1の短さ算出部で算出された短さに前記第1の優
    先度検出部で検出された優先度を乗じ、その乗算結果に
    応じて、前記第1の生存区間連続性判定手段によって生
    存区間の連続性が判定された割付対象に割り付けられて
    いる資源要素の利得値を減少させ、 前記定量化手段は、 前記資源排他未割付割付対象判定手段により判定された
    割付対象から、前記第3の生存区間連続性判定手段によ
    って連続性が判定された既に資源要素が割り付けられた
    割付対象までの生存区間長の短さを算出する第2の短さ
    算出部と、 前記資源排他未割付割付対象判定手段により判定された
    割付対象の優先度を検出する第2の優先度検出部とを備
    え、 前記第2減少部は、 前記第2の短さ算出部で算出された短さに前記第2の優
    先度検出部で検出された優先度を乗じ、その乗算結果に
    応じて、前記第3の生存区間連続性判定手段によって生
    存区間の連続性が判定された割付対象に割り付けられて
    いる資源要素の利得値を減少させることを特徴とする請
    求項5記載の資源割付装置。
  7. 【請求項7】 前記資源割付装置は、前記独立性割付対
    象検出手段と、第1の生存区間連続性判定手段と、前記
    第1減少部とを順次実行させる資源独立性利得値算出手
    段と、 第2の生存区間連続性判定手段と、前記増加部とを順次
    実行する資源継承性利得値算出手段と、 資源排他未割付割付対象検出手段と、前記第3の生存区
    間連続性判定手段と、第2減少部とを順次実行する資源
    排他性利得値算出手段と、 コンパイラが生成する目的プログラムのコードサイズの
    縮小を優先するか又は依存関係の縮減を優先するかを示
    す翻訳制御情報を記憶する翻訳制御記憶手段と、 指定手段により次に資源要素を割り付けるべき割付対象
    が指定されると、前記翻訳制御記憶手段の記憶内容に従
    って、資源独立性利得値算出手段、資源継承性利得値算
    出手段、資源排他性利得値算出手段を異なる順序で起動
    する起動制御手段とを備えることを特徴とする請求項6
    記載の資源割付装置。
  8. 【請求項8】 前記資源割付装置は、 次に資源要素を割り付けるべき割付対象と生存区間が重
    複している割付対象に割り付けられていない資源要素を
    検出する割付可能資源要素検出手段を備え、 前記起動制御手段は、 前記翻訳制御記憶手段にコードサイズ縮小優先を示す翻
    訳制御情報が記憶されている状態で指定手段により次に
    資源要素を割り付けるべき割付対象が指定されると、前
    記資源継承性利得値算出手段を起動することにより各資
    源要素の利得値を算出させ、前記割付可能資源要素検出
    手段が検出した資源要素のうち、算出された利得値が最
    大の資源要素を選出する第1の資源要素選出手段と、 前記第1の資源要素選出手段において複数の資源要素が
    選出された場合、前記資源排他性利得値算出手段を起動
    することにより各資源要素の利得値を算出させ、前記第
    1の資源要素選出手段において選出された資源要素のう
    ち、算出された利得値が最大の資源要素を選出する第2
    の資源要素選出手段と、 前記第2の資源要素選出手段において複数の資源要素が
    選出された場合、前記資源独立性利得値算出手段を起動
    することにより各資源要素の利得値を算出させ、前記第
    2の資源要素選出手段において選出された資源要素のう
    ち、算出された利得値が最大の資源要素を選出する第3
    の資源要素選出手段と、 第1の資源要素選出手段において唯一の資源要素が選出
    された場合、当該資源要素を次に資源要素を割り付ける
    べき割付対象に割り付け、当該第2の資源要素選出手段
    において唯一の資源要素が選出された場合、当該資源要
    素を次に資源要素を割り付けるべき割付対象に割り付
    け、複数の資源要素が選出された場合、当該第3の資源
    要素選出手段において選出された資源要素を、次に資源
    要素を割り付けるべき割付対象に割り付ける第1の資源
    要素決定手段とを備えることを特徴とする請求項6記載
    の資源割付装置。
  9. 【請求項9】 前記起動制御手段は、前記翻訳制御記憶
    手段に依存関係縮減優先を示す翻訳制御情報が記憶され
    ている状態で指定手段により次に資源要素を割り付ける
    べき割付対象が指定されると、前記資源継承性利得値算
    出手段を起動することにより各資源要素の利得値を算出
    させ、前記割付可能資源要素検出手段が検出した資源要
    素のうち、算出された利得値が最大の資源要素を選出す
    る第4の資源要素選出手段と、 前記第4の資源要素選出手段において複数の資源要素が
    選出された場合、前記資源独立性利得値算出手段を起動
    することにより各資源要素の利得値を算出させ、算出さ
    れた利得値が最大の資源要素を選出する第5の資源要素
    選出手段と、 前記第5の資源要素選出手段において複数の資源要素が
    選出された場合、前記資源排他性利得値算出手段を起動
    することにより各資源要素の利得値を算出させ、算出さ
    れた利得値が最大の資源要素を選出する第6の資源要素
    選出手段と、 当該第4の資源要素選出手段において唯一の資源要素が
    選出された場合、当該資源要素を次に資源要素を割り付
    けるべき割付対象に割り付け、当該第5の資源要素選出
    手段において唯一の資源要素が選出された場合、当該資
    源要素を次に資源要素を割り付けるべき割付対象に割り
    付け、当該第5の資源要素選出手段において複数の資源
    要素が選出された場合、当該第6の資源要素選出手段に
    おいて選出された資源要素を、次に資源要素を割り付け
    るべき割付対象に割り付ける第2の資源要素決定手段と
    を備えることを特徴とする請求項6記載の資源割付装
    置。
  10. 【請求項10】 前記起動制御手段は、 前記翻訳制御記憶手段に依存関係縮減優先を示す翻訳制
    御情報が記憶されている状態で指定手段により次に資源
    要素を割り付けるべき割付対象が指定されると、前記資
    源独立性利得値算出手段を起動することにより各資源要
    素の利得値を算出させ、算出された利得値が最大の資源
    要素を選出する第7の資源要素選出手段と、 前記第7の資源要素選出手段において複数の資源要素が
    選出された場合、前記資源継承性利得値算出手段を起動
    することにより各資源要素の利得値を算出させ、前記第
    7の資源要素選出手段において選出された資源要素のう
    ち、算出された利得値が最大の資源要素を選出する第8
    の資源要素選出手段と、 前記第8の資源要素選出手段において複数の資源要素が
    選出された場合、前記資源排他性利得値算出手段を起動
    することにより各資源要素の利得値を算出させ、前記第
    8の資源要素選出手段において選出された資源要素のう
    ち、算出された利得値が最大の資源要素を選出する第9
    の資源要素選出手段と、 当該第7の資源要素選出手段において唯一の資源要素が
    選出された場合、当該資源要素を、次に資源要素を割り
    付けるべき割付対象に割り付け、当該第8の資源要素選
    出手段において唯一の資源要素が選出された場合、当該
    資源要素を、次に資源要素を割り付けるべき割付対象に
    割り付け、当該第9の資源要素選出手段において複数の
    資源要素が選出された場合、当該第9の資源要素選出手
    段において選出された資源要素を、次に資源要素を割り
    付けるべき割付対象に割り付ける第3の資源要素決定手
    段とを備えることを特徴とする請求項6記載の資源割付
    装置。
  11. 【請求項11】 前記資源割付装置は、 前記独立性割付対象検出手段と、第1の生存区間連続性
    判定手段と、前記第1減少部とを順次実行させる資源独
    立性利得値算出手段と、 第2の生存区間連続性判定手段と、前記増加部とを順次
    実行する資源継承性利得値算出手段と、 資源排他未割付割付対象検出手段と、前記第3の生存区
    間連続性判定手段と、 第2減少部とを順次実行する資源排他性利得値算出手段
    と、 コンパイラが生成する目的プログラムのコードサイズの
    縮小を優先するか又は依存関係の縮減を優先するかを示
    す翻訳制御情報を記憶する翻訳制御記憶手段と、 プログラムのコードサイズ縮小を優先する旨の翻訳制御
    情報が翻訳制御記憶手段に記憶されている場合、資源継
    承性利得値算出手段及び資源排他性利得値算出手段が算
    出した利得値に重み付けるべき重要度を引き上げ、依存
    関係の縮減優先する旨の翻訳制御情報が翻訳制御記憶手
    段に記憶されている場合、資源独立性利得値算出手段が
    算出した利得値に重み付けるべき重要度を引き上げる重
    要度調整手段と、 資源継承性利得値算出手段、資源排他性利得値算出手
    段、及び資源独立性利得値算出手段が算出した利得値
    に、調整された重要度を重み付ける重付手段とを備える
    ことを特徴とする請求項6記載の資源割付装置。
  12. 【請求項12】 高級言語で書かれたプログラムを目的
    プログラムに翻訳するコンパイラに用いられ、プログラ
    ムの中の変数と、その生存区間との組である複数の割付
    対象のそれぞれにハードウェア資源が有する複数の資源
    要素を割り付ける資源割付プログラムを記録したコンピ
    ュータ読取可能な記録媒体であって、 前記プログラムは、複数の基本ブロックからなり、各基
    本ブロックは、その途中からの飛び越しが存在せず、そ
    の途中への飛び越し先もない命令列であり、 前記資源割付プログラムは次に資源要素を割り付けるべ
    き割付対象が定義されている命令と同一の基本ブロック
    に位置する命令であって、当該定義命令と直接的な依存
    関係を有さず、尚且つ間接的な依存関係を有さない独立
    命令にて定義されている割付対象を検出する資源独立関
    係割付対象検出ステップと、 前記複数の資源要素のうち、何れかの資源要素が何れか
    の割付対象に既に割り付けられている場合、前記資源独
    立関係割付対象検出ステップにより検出された割付対象
    が、それら割付済み割付対象と直接的な生存区間の連続
    性及び/又は間接的な生存区間の連続性を有しているか
    を判定する第1の生存区間連続性判定ステップと、 次に資源要素を割り付けるべき割付対象と、既に資源要
    素が割り付けられた割付対象とが直接的な生存区間の連
    続性及び/又は間接的な生存区間の連続性を有している
    かを判定する第2の生存区間連続性判定ステップと、 前記第1及び第2の生存区間連続性判定手段により生存
    区間の連続性が判定されると、判定された割付対象に割
    付け済みのそれぞれの資源要素を、次に資源要素を割り
    付けるべき割付対象に割り付けた場合に、目的プログラ
    ムに与え得る利害得失を各資源要素について定量化する
    定量化ステップと、 定量化ステップにより定量化された利害得失を示す利得
    値を資源要素同士で比較して、その利得が最も大きい資
    源要素を、次に資源要素を割り付けるべき割付対象に順
    次割り付ける割付ステップとからなることを特徴とする
    記録媒体。
  13. 【請求項13】 前記資源割付プログラムを読み取るコ
    ンピュータは、 各資源要素に対応づけて、利得値の初期値を記憶する利
    得値記憶手段を有し、 前記定量化ステップは、 前記第1の生存区間連続性判定ステップによって生存区
    間の連続性が判定された場合、前記資源独立関係割付対
    象検出ステップにより検出された割付対象から既に資源
    要素が割り付けられた割付対象までの生存区間長の短さ
    に応じて、既に割付対象に割り付けられている資源要素
    についての利得値を減少する第1減少サブステップを有
    することを特徴とする請求項12記載の記録媒体
  14. 【請求項14】 前記定量化ステップは、 前記第2の生存区間連続性判定ステップにより生存区間
    の連続性が判定された場合、次に資源要素を割り付ける
    べき割付対象から、既に資源要素が割り付けられた割付
    対象までの生存区間長の短さに応じて、当該既に資源要
    素が割り付けられた割付対象に割り付けられている資源
    要素の利得値を増加させる増加サブステップを有するこ
    とを特徴とする請求項13記載の記録媒体。
  15. 【請求項15】 前記資源割付プログラムは、 次に資源要素を割り付けるべき割付対象と生存区間が重
    複する割付対象であって、資源要素が割り付けられてい
    ない割付対象を検出する資源排他未割付割付対象判定ス
    テップと、 既に資源要素が割り付けられた割付対象の生存区間と、
    前記資源排他未割付割付対象判定ステップにより判定さ
    れた割付対象の生存区間とが直接的な生存区間の連続性
    及び/又は間接的な生存区間の連続性を有しているかを
    判定する第3の生存区間連続性判定ステップとを有し、 前記定量化ステップは、 前記資源排他未割付割付対象判定ステップにより判定さ
    れた割付対象から、既に資源要素が割り付けられた割付
    対象までの生存区間長の短さに応じて、当該既に資源要
    素が割り付けられた割付対象に割り付けられている資源
    要素の利得値を減少させる第2減少サブステップからな
    ることを特徴とする請求項14記載の記録媒体。
  16. 【請求項16】 前記資源割付プログラムを読み取るコ
    ンピュータは、 プログラムにおける割付対象の使用頻度及び/又は生存
    区間のネストレベルが反映された割付対象の優先度を各
    割付対象に対応づけて記憶する優先度記憶手段を有し、 前記資源割付プログラムは、 次に資源要素を割り付けるべき割付対象を優先度順に指
    定する指定ステップを有することを特徴とする請求項1
    5記載の記録媒体。
  17. 【請求項17】 前記定量化ステップは、 前記資源独立関係割付対象検出ステップにより判定され
    た割付対象から、前記第1の生存区間連続性判定ステッ
    プによって連続性が判定された既に資源要素が割り付け
    られた割付対象までの生存区間長の短さを算出する第1
    の短さ算出サブステップと、 前記資源独立関係割付対象検出ステップにより判定され
    た割付対象の優先度を検出する第1の優先度検出サブス
    テップとを有し、 前記第1減少サブステップは、 前記第1の短さ算出サブステップで算出された短さに前
    記第1の優先度検出サブステップで検出された優先度を
    乗じ、その乗算結果に応じて、前記第1の生存区間連続
    性判定ステップによって生存区間の連続性が判定された
    割付対象に割り付けられている資源要素の利得値を減少
    させ、 前記定量化ステップは、 前記資源排他未割付割付対象判定ステップにより判定さ
    れた割付対象から、前記第3の生存区間連続性判定ステ
    ップによって連続性が判定された既に資源要素が割り付
    けられた割付対象までの生存区間長の短さを算出する第
    2の短さ算出サブステップと、 前記資源排他未割付割付対象判定ステップにより判定さ
    れた割付対象の優先度を検出する第2の優先度検出サブ
    ステップとを有し、 前記第2減少サブステップは、 前記第2の短さ算出サブステップで算出された短さに前
    記第2の優先度検出サブステップで検出された優先度を
    乗じ、その乗算結果に応じて、前記第3の生存区間連続
    性判定ステップによって生存区間の連続性が判定された
    割付対象に割り付けられている資源要素の利得値を減少
    させることを特徴とする請求項16記載の記録媒体。
  18. 【請求項18】 前記資源割付プログラムを読み取るコ
    ンピュータは、 コンパイラが生成する目的プログラムのコードサイズの
    縮小を優先するか又は依存関係の縮減を優先するかを示
    す翻訳制御情報を記憶する翻訳制御記憶手段を備え、 前記資源割付プログラムは、 前記独立性割付対象検出ステップと、第1の生存区間連
    続性判定ステップと、 前記第1減少サブステップとを順次実行させる資源独立
    性利得値算出ステップと、 第2の生存区間連続性判定ステップと、前記増加サブス
    テップとを順次実行する資源継承性利得値算出ステップ
    と、 資源排他未割付割付対象検出ステップと、前記第3の生
    存区間連続性判定ステップと、第2減少サブステップと
    を順次実行する資源排他性利得値算出ステップと、 指定ステップにより次に資源要素を割り付けるべき割付
    対象が指定されると、 前記翻訳制御記憶手段の記憶内容に従って、資源独立性
    利得値算出ステップ、資源継承性利得値算出ステップ、
    資源排他性利得値算出ステップを異なる順序で起動する
    起動制御ステップとからなることを特徴とする請求項1
    7記載の記録媒体。
  19. 【請求項19】 前記資源割付プログラムは、 次に資源要素を割り付けるべき割付対象と生存区間が重
    複している割付対象に割り付けられていない資源要素を
    検出する割付可能資源要素検出ステップを有し、 前記起動制御ステップは、 前記翻訳制御記憶手段にコードサイズ縮小優先を示す翻
    訳制御情報が記憶されている状態で指定ステップにより
    次に資源要素を割り付けるべき割付対象が指定される
    と、前記資源継承性利得値算出ステップを起動すること
    により各資源要素の利得値を算出させ、前記割付可能資
    源要素検出ステップが検出した資源要素のうち、算出さ
    れた利得値が最大の資源要素を選出する第1の資源要素
    選出ステップと、 前記第1の資源要素選出ステップにおいて複数の資源要
    素が選出された場合、前記資源排他性利得値算出ステッ
    プを起動することにより各資源要素の利得値を算出さ
    せ、前記第1の資源要素選出ステップにおいて選出され
    た資源要素のうち、算出された利得値が最大の資源要素
    を選出する第2の資源要素選出ステップと、 前記第2の資源要素選出ステップにおいて複数の資源要
    素が選出された場合、前記資源独立性利得値算出ステッ
    プを起動することにより各資源要素の利得値を算出さ
    せ、前記第2の資源要素選出ステップにおいて選出され
    た資源要素のうち、算出された利得値が最大の資源要素
    を選出する第3の資源要素選出ステップと、 第1の資源要素選出ステップにおいて唯一の資源要素が
    選出された場合、当該資源要素を次に資源要素を割り付
    けるべき割付対象に割り付け、当該第2の資源要素選出
    ステップにおいて唯一の資源要素が選出された場合、当
    該資源要素を次に資源要素を割り付けるべき割付対象に
    割り付け、複数の資源要素が選出された場合、当該第3
    の資源要素選出ステップにおいて選出された資源要素
    を、次に資源要素を割り付けるべき割付対象に割り付け
    る第1の資源要素決定ステップとからなることを特徴と
    する請求項18記載の記録媒体。
  20. 【請求項20】 前記起動制御ステップは、 前記翻訳制御記憶手段に依存関係縮減優先を示す翻訳制
    御情報が記憶されている状態で指定ステップにより次に
    資源要素を割り付けるべき割付対象が指定されると、前
    記資源継承性利得値算出ステップを起動することにより
    各資源要素の利得値を算出させ、前記割付可能資源要素
    検出ステップが検出した資源要素のうち、算出された利
    得値が最大の資源要素を選出する第4の資源要素選出ス
    テップと、 前記第4の資源要素選出ステップにおいて複数の資源要
    素が選出された場合、前記資源独立性利得値算出ステッ
    プを起動することにより各資源要素の利得値を算出さ
    せ、算出された利得値が最大の資源要素を選出する第5
    の資源要素選出ステップと、 前記第5の資源要素選出ステップにおいて複数の資源要
    素が選出された場合、前記資源排他性利得値算出ステッ
    プを起動することにより各資源要素の利得値を算出さ
    せ、算出された利得値が最大の資源要素を選出する第6
    の資源要素選出ステップと、 当該第4の資源要素選出ステップにおいて唯一の資源要
    素が選出された場合、当該資源要素を、次に資源要素を
    割り付けるべき割付対象に割り付け、当該第5の資源要
    素選出ステップにおいて唯一の資源要素が選出された場
    合、当該資源要素を、次に資源要素を割り付けるべき割
    付対象に割り付け、当該第5の資源要素選出ステップに
    おいて複数の資源要素が選出された場合、当該第6の資
    源要素選出ステップにおいて選出された資源要素を、次
    に資源要素を割り付けるべき割付対象に割り付ける第2
    の資源要素決定ステップとからなることを特徴とする請
    求項18記載の記録媒体。
  21. 【請求項21】前記起動制御ステップは、前記翻訳制御
    記憶手段に依存関係縮減優先を示す翻訳制御情報が記憶
    されている状態で指定ステップにより次に資源要素を割
    り付けるべき割付対象が指定されると、前記資源独立性
    利得値算出ステップを起動することにより各資源要素の
    利得値を算出させ、算出された利得値が最大の資源要素
    を選出する第7の資源要素選出ステップと、 前記第7の資源要素選出ステップにおいて複数の資源要
    素が選出された場合、前記資源継承性利得値算出ステッ
    プを起動することにより各資源要素の利得値を算出さ
    せ、前記第7の資源要素選出ステップにおいて選出され
    た資源要素のうち、算出された利得値が最大の資源要素
    を選出する第8の資源要素選出ステップと、 前記第8の資源要素選出ステップにおいて複数の資源要
    素が選出された場合、前記資源排他性利得値算出ステッ
    プを起動することにより各資源要素の利得値を算出さ
    せ、前記第8の資源要素選出ステップにおいて選出され
    た資源要素のうち、算出された利得値が最大の資源要素
    を選出する第9の資源要素選出ステップと、 当該第7の資源要素選出ステップにおいて唯一の資源要
    素が選出された場合、当該資源要素を、次に資源要素を
    割り付けるべき割付対象に割り付け、当該第8の資源要
    素選出ステップにおいて唯一の資源要素が選出された場
    合、当該資源要素を、次に資源要素を割り付けるべき割
    付対象に割り付け、当該第9の資源要素選出ステップに
    おいて複数の資源要素が選出された場合、当該第9の資
    源要素選出ステップにおいて選出された資源要素を、次
    に資源要素を割り付けるべき割付対象に割り付ける第3
    の資源要素決定ステップとからなることを特徴とする請
    求項18記載の記録媒体。
  22. 【請求項22】 前記資源割付プログラムを読み取るコ
    ンピュータは、 コンパイラが生成する目的プログラムのコードサイズの
    縮小を優先するか又は依存関係の縮減を優先するかを示
    す翻訳制御情報を記憶する翻訳制御記憶手段を備え、 前記資源割付プログラムは、 前記独立性割付対象検出ステップと、第1の生存区間連
    続性判定ステップと、前記第1減少サブステップとを順
    次実行させる資源独立性利得値算出ステップと、 第2の生存区間連続性判定ステップと、前記増加サブス
    テップとを順次実行する資源継承性利得値算出ステップ
    と、 資源排他未割付け割付対象検出ステップと、前記第3の
    生存区間連続性判定ステップと、第2減少サブステップ
    とを順次実行する資源排他性利得値算出ステップと、 プログラムのコードサイズ縮小を優先する旨の翻訳制御
    情報が翻訳制御記憶手段に記憶されている場合、資源継
    承性利得値算出ステップ及び資源排他性利得値算出ステ
    ップが算出した利得値に重み付けるべき重要度を引き上
    げ、依存関係の縮減優先する旨の翻訳制御情報が翻訳制
    御記憶手段に記憶されている場合、資源独立性利得値算
    出ステップが算出した利得値に重み付けるべき重要度を
    引き上げる重要度調整ステップと、 資源継承性利得値算出ステップ、資源排他性利得値算出
    ステップ、及び資源独立性利得値算出ステップが算出し
    た利得値に、調整された重要度を重み付ける重付ステッ
    プとからなることを特徴とする請求項18記載の記録媒
    体。
JP34452498A 1998-12-03 1998-12-03 資源割付装置及び資源割付プログラムが記録されたコンピュータ読み取り可能な記録媒体 Pending JP2000172510A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP34452498A JP2000172510A (ja) 1998-12-03 1998-12-03 資源割付装置及び資源割付プログラムが記録されたコンピュータ読み取り可能な記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP34452498A JP2000172510A (ja) 1998-12-03 1998-12-03 資源割付装置及び資源割付プログラムが記録されたコンピュータ読み取り可能な記録媒体

Publications (1)

Publication Number Publication Date
JP2000172510A true JP2000172510A (ja) 2000-06-23

Family

ID=18369950

Family Applications (1)

Application Number Title Priority Date Filing Date
JP34452498A Pending JP2000172510A (ja) 1998-12-03 1998-12-03 資源割付装置及び資源割付プログラムが記録されたコンピュータ読み取り可能な記録媒体

Country Status (1)

Country Link
JP (1) JP2000172510A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000284968A (ja) * 1999-03-31 2000-10-13 Toshiba Corp コンパイル方法及びコンパイラ装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000284968A (ja) * 1999-03-31 2000-10-13 Toshiba Corp コンパイル方法及びコンパイラ装置

Similar Documents

Publication Publication Date Title
US5790862A (en) Resource assigning apparatus which assigns the variable in a program to resources
JP3311462B2 (ja) コンパイル処理装置
JP3299611B2 (ja) 資源割付装置
US8612948B2 (en) Dynamic compiler program, dynamic compiling method and dynamic compiling device
US20130283250A1 (en) Thread Specific Compiler Generated Customization of Runtime Support for Application Programming Interfaces
US8387026B1 (en) Compile-time feedback-directed optimizations using estimated edge profiles from hardware-event sampling
JP5583514B2 (ja) バイナリコードを最適化するコンパイル方法、及びそのコンパイラシステム、並びにコンピュータ・プログラム
JPH0695311B2 (ja) コード最適化方法
US7418699B2 (en) Method and system for performing link-time code optimization without additional code analysis
US7174546B2 (en) Compiler and register allocation method
US8458679B2 (en) May-constant propagation
CN105849698B (zh) 动态编程中的执行防护
US8423980B1 (en) Methods for handling inlined functions using sample profiles
Novillo Samplepgo-the power of profile guided optimizations without the usability burden
JPH04213118A (ja) プログラム翻訳装置およびプログラム翻訳方法
CN111061485A (zh) 任务处理方法、编译器、调度服务器和介质
JP2002366366A (ja) コンパイル方法、コード生成方法、スタックレジスタ使用方法、コンパイラ、これらを実現するプログラム及び記憶媒体
US8938728B2 (en) Dynamic compiler program, dynamic compiling method and dynamic compiling device
US6625806B1 (en) Language processing method and language processing system improving use efficiency of cache memory
US7770152B1 (en) Method and apparatus for coordinating state and execution context of interpreted languages
US20120017070A1 (en) Compile system, compile method, and storage medium storing compile program
US11321236B2 (en) Reduced instructions to generate global variable addresses
JP2000353097A (ja) 低密回の干渉グラフを生成する方法および装置
US20220291908A1 (en) Information processing apparatus, computer-readable recording medium storing compiling program, and compiling method
JP2000172510A (ja) 資源割付装置及び資源割付プログラムが記録されたコンピュータ読み取り可能な記録媒体