JP2001290653A - 資源割付装置 - Google Patents

資源割付装置

Info

Publication number
JP2001290653A
JP2001290653A JP2000104655A JP2000104655A JP2001290653A JP 2001290653 A JP2001290653 A JP 2001290653A JP 2000104655 A JP2000104655 A JP 2000104655A JP 2000104655 A JP2000104655 A JP 2000104655A JP 2001290653 A JP2001290653 A JP 2001290653A
Authority
JP
Japan
Prior art keywords
variable
selecting
registers
allocation
instruction
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
JP2000104655A
Other languages
English (en)
Inventor
Kensuke Kotani
謙介 小谷
Akira Tanaka
旭 田中
Takehito Heiji
岳人 瓶子
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 JP2000104655A priority Critical patent/JP2001290653A/ja
Publication of JP2001290653A publication Critical patent/JP2001290653A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 資源割付時における退避復帰コードを削減
し、使用レジスタ数を削減する。 【解決手段】 生存区間解析部100、スピル決定部2
00、割付確定部300から構成され、生存区間解析部
100が解析した生存区間に基づき、スピル決定部20
0は、スピル対象及びこれと同時に退避、復帰できる変
数を決定し、割付確定部300が資源割付を確定する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、高級言語からオブ
ジェクトコードを生成するコンパイラに関するものであ
り、変数をレジスタに割り付ける資源割り付け技術に関
する。
【0002】
【従来の技術】コンパイラは、高級言語から対象プロセ
ッサ向けオブジェクトコードを生成するが、この際、演
算対象をプロセッサ内部の高速な記憶装置であるレジス
タに置くようコードを生成すると高速な実行が期待でき
る。このため、コンパイラでは演算対象である変数をで
きる限り効率良くレジスタに配置するようなコードを生
成する。レジスタ数の制限により、全ての変数をレジス
タに配置できない場合に、レジスタからメモリへ、ま
た、メモリからレジスタへの退避・復帰コードが生成さ
れることになる。
【0003】また、近年プロセッサにおいては、微細化
技術の進展によりプロセッサ内部へ内蔵できるメモリ量
が増大し、メモリとプロセッサコアとのメモリ転送バン
ド幅を向上させることが容易になってきている。これに
より、例えば、 MOV R0R1,(1000) (レジスタR0、R1の値を一度にメモリ1000番地
から始まる2レジスタ長分の連続した領域に書き込む)
や MOV (2000),R0−3 (メモリ2000番地から始まる4レジスタ長分のメモ
リ内容をレジスタR0〜R3に書き込む)のように、レ
ジスタ長を越えるサイズの退避・復帰を一度に行なう命
令を備えることが可能になってきている。
【0004】
【発明が解決しようとする課題】しかしながら、従来の
コンパイラ技術では、上記メモリ転送バンド幅の向上を
十分に生かすことができず、使用レジスタ数が増加した
り、並列性が阻害される場合が存在する。
【0005】本発明はかかる問題点に鑑みてなされたも
のであり、レジスタ長を越えるメモリ退避・復帰命令を
活用し、好適なレジスタ−メモリ配置を実現する、資源
割付装置を提供することを目的とする。
【0006】
【課題を解決するための手段】上記目的を達成する為
に、本発明に係る資源割付方法はメモリへ退避する変数
を選定する選定ステップ1と、前記選定ステップ1で選
定された変数と同時に退避可能な変数を選定する選定ス
テップ2と、前記選定ステップ1及び前記選定ステップ
2で選定された変数を同時に退避する退避命令を挿入す
る挿入ステップ1と、プログラム中の変数をレジスタに
割り付ける割付ステップ1を備えるとすることができ
る。
【0007】また、前記割付ステップ1は、前記挿入ス
テップ1で挿入される退避命令のオペランドとなる複数
の変数を、目的機械において単一の退避命令で指定でき
るレジスタに割り付けるとすることができる。
【0008】また、前記選定ステップ1は、プログラム
中の変数を仮にレジスタに割り付ける仮割付ステップ1
を含み、上記仮割付ステップで、レジスタに割り付けら
れなかった変数を選定するとすることができる。
【0009】また、前記仮割付ステップ1は、使用可能
なレジスタ数より少ない数のレジスタを用いて仮割付を
行なうとすることができる。
【0010】また、前記仮割付ステップ1は、使用可能
なレジスタ数及びより少ない数のレジスタを用いて複数
回の仮割付を行ない、前記挿入ステップ1は、上記複数
の仮割付の結果、最もコストの小さな仮割付結果に基づ
き、挿入を行なうとすることができる。
【0011】本発明に係る資源割付方法は、メモリから
復帰する変数を選定する選定ステップ3と、前記選定ス
テップ3で選定された変数と同時に復帰可能な変数を選
定する選定ステップ4と、前記選定ステップ3及び前記
選定ステップ4で選定された変数を同時に復帰する復帰
命令を挿入する挿入ステップ2と、プログラム中の変数
をレジスタに割り付ける割付ステップ2を備えるとする
ことができる。
【0012】また、前記割付ステップ2は、前記挿入ス
テップ2で挿入される復帰命令のオペランドとなる複数
の変数を、目的機械において単一の復帰命令で指定でき
るレジスタに割り付けるとすることができる。
【0013】また、前記選定ステップ3は、プログラム
中の変数を仮にレジスタに割り付ける仮割付ステップ2
を含み、上記仮割付ステップで、レジスタに割り付けら
れなかった変数を選定するとすることができる。
【0014】また、前記仮割付ステップ2は、使用可能
なレジスタ数より少ない数のレジスタを用いて仮割付を
行なうとすることができる。
【0015】また、前記仮割付ステップ2は、使用可能
なレジスタ数及びより少ない数のレジスタを用いて複数
回の仮割付を行ない、前記挿入ステップ2は、上記複数
の仮割付の結果、最もコストの小さな仮割付結果に基づ
き、挿入を行なうとすることができる。
【0016】本発明に係る資源割付方法は、メモリへ退
避かつメモリから復帰する変数を選定する選定ステップ
5と、前記選定ステップ5で選定された変数と同時に退
避可能な変数を選定する選定ステップ6と、前記選定ス
テップ5で選定された変数と同時に復帰可能な変数を選
定する選定ステップ7と、前記選定ステップ6及び前記
選定ステップ7で共に選定された変数を選定する選定ス
テップ8と、上記選定ステップ5及び選定ステップ8で
選定された変数を同時に退避する退避命令及び同時に復
帰する命令を挿入する挿入ステップ3と、プログラム中
の変数をレジスタに割り付ける割付ステップ3を備える
とすることができる。
【0017】また、前記割付ステップ3は、前記挿入ス
テップ3で挿入される退避命令及び復帰命令のオペラン
ドとなる複数の変数を、目的機械において単一の退避命
令及び復帰命令で指定できるレジスタに割り付けるとす
ることができる。
【0018】また、前記選定ステップ3は、プログラム
中の変数を仮にレジスタに割り付ける仮割付ステップ3
を含み、上記仮割付ステップで、レジスタに割り付けら
れなかった変数を選定するとすることができる。
【0019】また、前記仮割付ステップ3は、使用可能
なレジスタ数より少ない数のレジスタを用いて仮割付を
行なうとすることができる。
【0020】また、前記仮割付ステップ3は、使用可能
なレジスタ数及びより少ない数のレジスタを用いて複数
回の仮割付を行ない、前記挿入ステップ3は、上記複数
の仮割付の結果、最もコストの小さな仮割付結果に基づ
き、挿入を行なうとすることができる。
【0021】
【発明の実施の形態】以下、本発明に係る資源割付方
法、資源割付装置及び記録媒体について図面を参照しな
がら説明する。 [用語の説明] ・資源 資源割付装置で、ソースコード中の変数を割り当てる対
象となる、対象システム中の記憶装置の総称。一般にプ
ロセッサ内部の高速記憶装置であるレジスタとこれより
低速なメモリがこれにあたる。 ・スピル 資源割付時にレジスタ数が不足した際に、レジスタを空
ける為に、レジスタの内容をメモリへ退避すること、及
び、メモリへ退避した値をレジスタに復帰することをい
う。ここでは、レジスタ数の不足に対処する為、変数の
生存区間を分割する為の退避/復帰命令も含めてスピル
と呼ぶ。 ・コスト 目的機械において命令実行にかかる負荷を示す値。コー
ドサイズ及びコード実行サイクル数を指す。 [目的機械]次に本資源割付装置が対象とする目的機械
について説明する。目的機械は一般的なRISCプロセ
ッサを想定する。但し、近年の微細化技術の進展にとも
なうメモリ転送バンド幅向上を考慮に入れ、下記の多レ
ジスタ一括転送命令を持つこととする。 ・退避命令 MOV R2nR2n+1,(メモリ) レジスタ番号2nと2n+1で指定される2レジスタの
内容をメモリへ退避する。 ・ MOV (メモリ),R2nR2n+1 メモリの内容をレジスタ番号2nと2n+1で指定され
る2レジスタへ復帰する。
【0022】レジスタ総数は簡単の為、3とし、R0〜
R2が使用できるとする。
【0023】説明の都合上、上記プロセッサを目的機械
とするが、本発明はこのプロセッサで例として挙げたメ
モリ転送バンド幅(2レジスタ分)、転送レジスタ指定
方式(隣接するレジスタ番号2nと2n+1のレジス
タ)に依存するものではない。これらが異なる場合にも
適用可能である。
【0024】[実施の形態1] [プログラム処理装置の構成]図1は、実施形態におけ
る資源割付装置の構成及び関連するデータを示すブロッ
ク図である。
【0025】本資源割付装置は、生存区間解析部10
0、スピル決定部200、割付確定部300から構成さ
れる。
【0026】また、資源割付装置はコンパイラの一部を
成し、その入力としてコンパイラ内部形式コード500
を受け取り、出力としてレジスタ割付済の内部形式コー
ド600を生成する。
【0027】(生存区間解析部)生存区間解析部100
は、内部形式コード500を解析し、内部形式コード5
00に含まれる変数の生存区間を確定する。生存区間解
析部100の動作は、従来の資源割付装置における生存
区間解析部と同様であるので、詳細な説明は省略する。
【0028】(スピル決定部)スピル決定部200は、
上記生存区間解析の結果、同時に使用されるレジスタ数
が、使用可能なレジスタ数を超過した場合に、一時的に
メモリに退避する変数を決定し、更にその変数をメモリ
へ退避、メモリから復帰する際に使用するレジスタを確
定する。
【0029】スピル決定部200は、スピル対象決定部
210、同時スピル対象決定部220、同時スピル命令
挿入部230、同時スピル変数資源割付部240から構
成される。
【0030】(スピル対象決定部)スピル対象決定部2
10は、上記一時的にメモリに退避/メモリから復帰す
る変数を決定する。図2はスピル対象決定部210の動
作アルゴリズムをフローチャートとして記述したもので
ある。
【0031】(同時スピル対象決定部)同時スピル対象
決定部220は、上記スピル対象決定部210でスピル
対象とされた変数と、同時に退避/復帰する変数を決定
する。同時スピル対象決定部220は、同時退避対象選
定部221、同時復帰対象選定部222、同時退避復帰
対象選定部223から構成される。
【0032】図3は同時退避対象選定部221の動作ア
ルゴリズムをフローチャートとして記述したものであ
る。上記アルゴリズムに従い、同時退避対象が選定され
る。
【0033】図4は同時復帰対象選定部222の動作ア
ルゴリズムをフローチャートとして記述したものであ
る。上記アルゴリズムに従い、同時復帰対象が選定され
る。
【0034】同時退避復帰対象選定部223は、上記同
時退避対象選定部221で選定された同時退避対象変数
集合と、上記同時復帰対象選定部222で選定された同
時復帰対象変数集合の集合積をとり、これを同時退避復
帰対象として選定する。この際同時退避復帰対象が、対
象プロセッサで用意された多レジスタ一括転送命令の同
時転送レジスタ数(nとする)を越える場合には、定義
位置が退避復帰対象変数の定義位置に近いものn個を同
時退避復帰対象とする。また、参照位置が退避復帰対象
変数の第一参照位置に近いものn個を同時退避復帰対象
としてもよい。
【0035】(同時スピル命令挿入部)同時スピル命令
挿入部230は、上記スピル対象決定部210で決定さ
れた変数と、上記同時スピル対象決定部220で決定さ
れた変数とを同時に退避/復帰する命令を内部形式コー
ドに挿入する。同時退避命令の挿入位置は、退避復帰対
象と同時退避復帰対象変数の定義命令のうち最も後に存
在する定義命令の直後とする。また、同時復帰命令の挿
入位置は、退避復帰対象と同時退避復帰対象変数の参照
命令のうち最も前に存在する第一参照命令の直前とす
る。
【0036】(同時スピル変数資源割付部)同時スピル
変数資源割付部240では、上記退避対象変数と上記同
時退避復帰対象変数にレジスタを割り付ける。ここで割
り付けるレジスタは、多レジスタ一括転送命令でオペラ
ンドとして許されるレジスタ番号のレジスタである。
【0037】(割付確定部)割付確定部300は、上記
スピル決定部200で割り付けられた変数を除く変数に
ついて、レジスタ割り付けを行なう。割付確定部300
の動作は、従来のレジスタ割付部の動作と同様である
為、詳細を省略する。
【0038】[プログラム処理装置の具体的な動作]次
に、本プログラム処理装置の特徴的な構成要素の動作に
ついて、具体的な命令を用いて説明する。
【0039】[動作例1]図5は資源割付部に入力とし
て渡される内部形式コードの一例である。ここで、「a
=」は、変数aへの代入を表す。変数aに代入される値
自身は重要ではないので特に記述していない。また、
「=b」は、変数bの値を参照することを表す。変数b
の値がどのように用いられるかは重要ではないので記述
していない。
【0040】図5の内部形式コードが入力されると、ま
ず、本資源割付装置の生存区間解析部100が起動され
る。生存区間解析部100は、内部形式コードに含まれ
る変数の生死判定を行ない、図6で示される生存区間グ
ラフを出力する。なおここでは分かりやすくする為に生
存区間グラフは図6の様に表現したが、本資源割付装置
を含むコンパイラの内部ワークエリアに表形式で格納さ
れる。
【0041】次にスピル決定部200が起動される。ス
ピル決定部はスピル対象決定部210、同時スピル対象
決定部220、同時スピル命令挿入部230、同時スピ
ル変数資源割付部240から構成されており、この順序
で起動される。従って、まずスピル対象決定部210が
起動される。
【0042】スピル対象決定部210の動作について図
2を用いて説明する。スピル対象決定部210は入力さ
れた内部形式コードの1命令毎に以下の処理(ステップ
s2〜ステップs6)を繰り返す(ステップs1、ステ
ップs7)。
【0043】ステップs2では現在処理している内部形
式コードの時点での生存区間の重なり数から使用可能レ
ジスタ数を引いた値をrとして設定する。
【0044】次にステップs3で上記rが0より大きい
か否かを判定する。rが0より大きい場合は処理時点で
レジスタ数が不足することになるので、ステップs4〜
ステップs6の処理を起動する。そうでない場合は、ス
テップs7へ移り繰り返す。
【0045】レジスタ数が不足する場合には、現時点で
生きている変数全てについて、スピル対象期待値を計算
する。期待値は例えば、スピル対象期待値=生存区間の
長さ/参照回数とする(ステップs4)。この中で最大
期待値のものをスピル対象とする(ステップs5)。
【0046】最後に、スピル対象とされた変数につい
て、メモリに退避/メモリから復帰する命令を仮挿入す
ることで生存区間を分割する(ステップs6)。メモリ
への退避命令は、当該変数の定義命令の直後に置く。ま
た、メモリからの復帰命令は、当該変数の第一参照命令
の直前に置く。
【0047】以上の処理により、スピル対象が決定され
る。この例では、図7の時点で、r=4−3=1>0と
なるので、スピルが必要となる。スピル対象期待値は変
数aが最大となるので、スピル対象として変数aが決定
される。その後、生存区間の分割が行なわれ、内部形式
コード及び生存区間は図8の様になる。
【0048】次に、同時スピル対象決定部220が起動
される。同時スピル対象決定部220は、同時退避対象
選定部221、同時復帰対象選定部222、同時退避復
帰対象選定部223から構成されており、この順序で起
動される。従ってまず同時退避対象選定部221が起動
される。
【0049】同時退避対象選定部221の動作について
図3を用いて説明する。同時退避対象選定部221は入
力された内部形式コードの命令毎に以下の処理(ステッ
プt2〜ステップt7)を繰り返す(ステップt1、ス
テップt8)。
【0050】ステップt2では仮の同時退避位置を退避
対象変数の退避命令位置に初期化する。
【0051】次に、ステップt3では現在処理している
内部形式コードの時点での生存区間の重なり数から使用
可能レジスタ数を引いた値をrとして設定する。
【0052】次に、上記rが0より大きいか否かを判定
する(ステップt4)。0より大きい場合は、この位置
でレジスタが不足する為、当該退避対象変数についての
同時退避対象の選定を終了する。
【0053】レジスタ数が足りている場合には、この時
点の命令が変数の定義命令であるか否かを調べ、定義命
令である場合には、これを同時退避候補集合に追加する
(ステップt5)。
【0054】つぎに、仮同時退避位置を一つ次の命令へ
進める(ステップt6)。
【0055】更に、仮同時退避位置が、当該退避対象変
数の第一参照命令にあたるか否かを判定する(ステップ
t7)。そうである場合には、当該退避対象変数に関す
る処理を終え、次の退避対象変数に対するループへ移る
(Yes)。そうでない場合には、繰り返す(No)。
【0056】以上の処理を例の内部コードに適用した際
の図を図9(a)〜図9(c)に示す。これらはそれぞ
れ、退避対象(変数a)に対する同時退避対象選定の開
始段階(図9a)、途中段階(図9b)、最終段階(図
9c)である。
【0057】結果、変数aの同時退避対象としては、変
数b、cが選ばれる。
【0058】次に、同時復帰対象選定部222が起動さ
れる。図4は同時復帰対象選定部222のアルゴリズム
を示すフローチャートである。処理内容は、上記同時退
避対象選定部221の処理とほぼ同じであるので詳細は
省略し、開始段階(図10a)、途中段階(図10
b)、最終段階(図10c)の各図と結果のみを示す。
【0059】結果、変数aの同時退避対象としては、変
数b、e、dが選ばれる。
【0060】最後に、同時退避復帰対象選定部223が
起動される。
【0061】同時退避対象変数集合={b、c} 同時復帰対象変数集合={b、e、d} であるので、その集合積をとって、同時退避復帰対象変
数として変数bが選ばれる。
【0062】次に、同時スピル命令挿入部230が起動
される。この例では退避対象変数は変数a、同時退避復
帰対象変数は変数bであるので、これら2変数の定義命
令のうち、より後の方(変数b)の定義位置の直後に、
同時退避命令を、また、2変数の第一参照命令のうち、
より前の方(ここでは変数aも変数bも同位置)の第一
参照命令の直前に同時復帰命令を挿入する(図11)。
【0063】次に、同時スピル変数資源割付部240で
は、ここで退避対象変数と同時退避復帰対象変数にレジ
スタを割り付ける。本例では、レジスタ番号2nと2n
+1のレジスタを多レジスタ一括転送命令のオペランド
としているため、例えば変数aはレジスタr0、変数b
はレジスタr1に割り付けられる(図12)。
【0064】最後に、割付確定部300が残りの変数に
レジスタを割り付ける。この段階では内部形式コードの
いずれの段階でも、レジスタの使用数は使用可能レジス
タ数以下になっているため、レジスタ割り付けは必ず成
功する。
【0065】結果、最終的な割り付けは図13の様にな
る。図13の右側には最終的な内部形式コードも示し
た。この結果から分かるように、本例の内部形式コード
の場合、2レジスタにより割り付けが完了している。
【0066】[従来方式との比較]本発明の有効性を示
す為、同じ例に付いて従来方式での割り付け結果を示
す。従来方式では、レジスタ退避/復帰は単一変数毎に
行なわれる為、最良の割付を仮定しても、図のようにな
り、3レジスタが必要となる。
【0067】この例から分かるように、本発明では従来
方式に比べより効率的なレジスタ割り付けを実現してい
る。
【0068】[実施の形態2]実施の形態1において
は、スピル対象決定部でのスピル対象の選定は、使用可
能レジスタ数に比べて、生存区間の重なり数が多い場合
にのみ行なわれていたが、これを等しい場合、もしく
は、生存区間の重なり数が少ない場合にも行なうことが
できる。この場合、本来必要でなかった退避復帰命令が
挿入されることになるため、実施の形態1での結果とコ
ードのコストを比較し、よりコストの少ない方を選択す
ることによりよりコストの小さいコードを生成すること
が可能になる。実施の形態2でのブロック図を図14に
示す。
【0069】生存区間解析部100、スピル決定部20
0、割付確定部300の動作は実施の形態1と同様であ
る。次に第二スピル決定部700は使用可能レジスタ数
と生存区間の重なり数が等しい場合にもスピル対象を選
定する。第二割付確定部800は第二スピル決定部70
0で決定されたスピル対象について、割付確定部300
と同様の処理を行なう。最後に、割付選択部900が、
割付確定部300と第二割付確定部800の出力内部形
式コードを比較し、よりコストの小さいコードを選択し
て、最終的な内部形式コードとして出力する。
【0070】なお、ここでは第二スピル決定部では使用
可能レジスタ数と生存区間の重なり数が等しい場合にス
ピル対象とするとしたが、これを使用可能レジスタ数の
方が多い場合にもスピル対象とすることも可能である。
【0071】[実施の形態3]実施の形態1,2で示さ
れる資源割付装置をフロッピー(登録商標)ディスク、
ハードディスク、CD−ROM、MO、DVDなどの記
録媒体に入れることにより、コンピュータ上で実現する
ことができる。
【0072】
【発明の効果】以上の説明から明らかなように、本発明
に係る資源割付方法はメモリへ退避する変数を選定する
選定ステップ1と、前記選定ステップ1で選定された変
数と同時に退避可能な変数を選定する選定ステップ2
と、前記選定ステップ1及び前記選定ステップ2で選定
された変数を同時に退避する退避命令を挿入する挿入ス
テップ1と、プログラム中の変数をレジスタに割り付け
る割付ステップ1を備えることを特徴とする。これによ
って、複数レジスタのメモリへの退避を同時に行なうこ
とができるので、退避コードの削減が図れ、使用レジス
タ数が減少する。
【0073】また、前記割付ステップ1は、前記挿入ス
テップ1で挿入される退避命令のオペランドとなる複数
の変数を、目的機械において単一の退避命令で指定でき
るレジスタに割り付けるとすることができる。これによ
り複数レジスタ退避命令で使用できるオペランドレジス
タ番号に制限のある場合にも、好適な資源割付が可能と
なる。
【0074】また、前記選定ステップ1は、プログラム
中の変数を仮にレジスタに割り付ける仮割付ステップ1
を含み、上記仮割付ステップで、レジスタに割り付けら
れなかった変数を選定するとすることができる。
【0075】また、前記仮割付ステップ1は、使用可能
なレジスタ数より少ない数のレジスタを用いて仮割付を
行なうとすることができる。これにより、更に使用レジ
スタ数の削減が図れる。
【0076】また、前記仮割付ステップ1は、使用可能
なレジスタ数及びより少ない数のレジスタを用いて複数
回の仮割付を行ない、前記挿入ステップ1は、上記複数
の仮割付の結果、最もコストの小さな仮割付結果に基づ
き、挿入を行なうとすることができる。これにより、使
用レジスタ数の削減とコードサイズの削減の最適なバラ
ンスを実現することができる。
【0077】本発明に係る資源割付方法は、メモリから
復帰する変数を選定する選定ステップ3と、前記選定ス
テップ3で選定された変数と同時に復帰可能な変数を選
定する選定ステップ4と、前記選定ステップ3及び前記
選定ステップ4で選定された変数を同時に復帰する復帰
命令を挿入する挿入ステップ2と、プログラム中の変数
をレジスタに割り付ける割付ステップ2を備えることを
特徴とする。これによって、複数レジスタのメモリから
の復帰を同時に行なうことができるので、復帰コードの
削減が図れ、使用レジスタ数が減少する。
【0078】また、前記割付ステップ2は、前記挿入ス
テップ2で挿入される復帰命令のオペランドとなる複数
の変数を、目的機械において単一の復帰命令で指定でき
るレジスタに割り付けるとすることができる。これによ
り複数レジスタ復帰命令で使用できるオペランドレジス
タ番号に制限のある場合にも、好適な資源割付が可能と
なる。
【0079】また、前記選定ステップ3は、プログラム
中の変数を仮にレジスタに割り付ける仮割付ステップ2
を含み、上記仮割付ステップで、レジスタに割り付けら
れなかった変数を選定するとすることができる。
【0080】また、前記仮割付ステップ2は、使用可能
なレジスタ数より少ない数のレジスタを用いて仮割付を
行なうとすることができる。これにより、更に使用レジ
スタ数の削減が図れる。
【0081】また、前記仮割付ステップ2は、使用可能
なレジスタ数及びより少ない数のレジスタを用いて複数
回の仮割付を行ない、前記挿入ステップ2は、上記複数
の仮割付の結果、最もコストの小さな仮割付結果に基づ
き、挿入を行なうとすることができる。これにより、使
用レジスタ数の削減とコードサイズの削減の最適なバラ
ンスを実現することができる。
【0082】本発明に係る資源割付方法は、メモリへ退
避かつメモリから復帰する変数を選定する選定ステップ
5と、前記選定ステップ5で選定された変数と同時に退
避可能な変数を選定する選定ステップ6と、前記選定ス
テップ5で選定された変数と同時に復帰可能な変数を選
定する選定ステップ7と、前記選定ステップ6及び前記
選定ステップ7で共に選定された変数を選定する選定ス
テップ8と、上記選定ステップ5及び選定ステップ8で
選定された変数を同時に退避する退避命令及び同時に復
帰する命令を挿入する挿入ステップ3と、プログラム中
の変数をレジスタに割り付ける割付ステップ3を備える
ことを特徴とする。これによって、複数レジスタのメモ
リからの退避及び復帰をそれぞれ同時に行なうことがで
きるので、退避復帰コードの削減が図れ、使用レジスタ
数が減少する。
【0083】また、前記割付ステップ3は、前記挿入ス
テップ3で挿入される退避命令及び復帰命令のオペラン
ドとなる複数の変数を、目的機械において単一の退避命
令及び復帰命令で指定できるレジスタに割り付けるとす
ることができる。これにより複数レジスタ退避命令及び
複数レジスタ復帰命令で使用できるオペランドレジスタ
番号に制限のある場合にも、好適な資源割付が可能とな
る。
【0084】また、前記選定ステップ3は、プログラム
中の変数を仮にレジスタに割り付ける仮割付ステップ3
を含み、上記仮割付ステップで、レジスタに割り付けら
れなかった変数を選定するとすることができる。
【0085】また、前記仮割付ステップ3は、使用可能
なレジスタ数より少ない数のレジスタを用いて仮割付を
行なうとすることができる。これにより、更に使用レジ
スタ数の削減が図れる。
【0086】また、前記仮割付ステップ3は、使用可能
なレジスタ数及びより少ない数のレジスタを用いて複数
回の仮割付を行ない、前記挿入ステップ3は、上記複数
の仮割付の結果、最もコストの小さな仮割付結果に基づ
き、挿入を行なうとすることができる。これにより、使
用レジスタ数の削減とコードサイズの削減の最適なバラ
ンスを実現することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態における資源割付装置の構
成及び関連するデータを示すブロック図
【図2】スピル対象決定部210の処理手順を示すフロ
ーチャート
【図3】同時退避対象選定部221の処理手順を示すフ
ローチャート
【図4】同時復帰対象選定部222の処理手順を示すフ
ローチャート
【図5】内部形式コードの一例を示す図
【図6】図5に対応する変数生存区間グラフの一例を示
す図
【図7】変数生存区間の重なりを示す変数生存区間グラ
フの一例を示す図
【図8】仮退避、仮復帰コードを挿入した内部形式コー
ド及び変数生存区間グラフの一例を示す図
【図9】(a)〜(c)同時退避対象選定部221で処
理している内部形式コード及び変数生存区間グラフの一
例を示す図
【図10】(a)〜(c)同時復帰対象選定部222で
処理している内部形式コード及び変数生存区間グラフの
一例を示す図
【図11】同時スピル命令挿入部230でスピル命令を
挿入した内部形式コード及び変数生存区間グラフの一例
を示す図
【図12】同時スピル変数資源割付部240で資源割付
を行なった内部形式コード及び変数生存区間グラフの一
例を示す図
【図13】割付確定部300で資源割付を行なった内部
形式コード及び変数生存区間グラフの一例を示す図
【図14】本発明の一実施形態における資源割付装置の
構成及び関連するデータを示すブロック図
【図15】従来の資源割付を行なった内部形式コード及
び変数生存区間グラフの一例を示す図
【符号の説明】
100 生存区間解析部 200 スピル決定部 210 スピル対象決定部 220 同時スピル対象決定部 221 同時退避対象選定部 222 同時復帰対象選定部 223 同時退避復帰対象選定部 230 同時スピル命令挿入部 240 同時スピル変数資源割付部 300 割付確定部 500 内部形式コード 600 資源割付された内部形式コード 700 第二スピル決定部 800 第二割付確定部 900 割付選択部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 瓶子 岳人 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 Fターム(参考) 5B081 CC25 CC28

Claims (19)

    【特許請求の範囲】
  1. 【請求項1】 メモリへ退避する変数を選定する選定ス
    テップ1と、 前記選定ステップ1で選定された変数と同時に退避可能
    な変数を選定する選定ステップ2と、 前記選定ステップ1及び前記選定ステップ2で選定され
    た変数を同時に退避する退避命令を挿入する挿入ステッ
    プ1と、 プログラム中の変数をレジスタに割り付ける割付ステッ
    プ1を備えることを特徴とする資源割付方法。
  2. 【請求項2】 前記割付ステップ1は、 前記挿入ステップ1で挿入される退避命令のオペランド
    となる複数の変数を、目的機械において単一の退避命令
    で指定できるレジスタに割り付けることを特徴とする請
    求項1記載の資源割付方法。
  3. 【請求項3】 前記選定ステップ1は、 プログラム中の変数を仮にレジスタに割り付ける仮割付
    ステップ1を含み、 上記仮割付ステップで、レジスタに割り付けられなかっ
    た変数を選定することを特徴とする請求項1または2記
    載の資源割付方法。
  4. 【請求項4】 前記仮割付ステップ1は、 使用可能なレジスタ数より少ない数のレジスタを用いて
    仮割付を行なうことを特徴とする請求項1〜3記載の資
    源割付方法。
  5. 【請求項5】 前記仮割付ステップ1は、 使用可能なレジスタ数及びより少ない数のレジスタを用
    いて複数回の仮割付を行ない、 前記挿入ステップ1は、上記複数の仮割付の結果、最も
    コストの小さな仮割付結果に基づき、挿入を行なうこと
    を特徴とする請求項1〜3記載の資源割付方法。
  6. 【請求項6】 メモリから復帰する変数を選定する選定
    ステップ3と、 前記選定ステップ3で選定された変数と同時に復帰可能
    な変数を選定する選定ステップ4と、 前記選定ステップ3及び前記選定ステップ4で選定され
    た変数を同時に復帰する復帰命令を挿入する挿入ステッ
    プ2と、 プログラム中の変数をレジスタに割り付ける割付ステッ
    プ2を備えることを特徴とする資源割付方法。
  7. 【請求項7】 前記割付ステップ2は、 前記挿入ステップ2で挿入される復帰命令のオペランド
    となる複数の変数を、目的機械において単一の復帰命令
    で指定できるレジスタに割り付けることを特徴とする請
    求項6記載の資源割付方法。
  8. 【請求項8】 前記選定ステップ3は、 プログラム中の変数を仮にレジスタに割り付ける仮割付
    ステップ2を含み、 上記仮割付ステップで、レジスタに割り付けられなかっ
    た変数を選定することを特徴とする請求項6または7記
    載の資源割付方法。
  9. 【請求項9】 前記仮割付ステップ2は、 使用可能なレジスタ数より少ない数のレジスタを用いて
    仮割付を行なうことを特徴とする請求項6〜8記載の資
    源割付方法。
  10. 【請求項10】 前記仮割付ステップ2は、 使用可能なレジスタ数及びより少ない数のレジスタを用
    いて複数回の仮割付を行ない、 前記挿入ステップ2は、上記複数の仮割付の結果、最も
    コストの小さな仮割付結果に基づき、挿入を行なうこと
    を特徴とする請求項6〜8記載の資源割付方法。
  11. 【請求項11】 メモリへ退避かつメモリから復帰する
    変数を選定する選定ステップ5と、 前記選定ステップ5で選定された変数と同時に退避可能
    な変数を選定する選定ステップ6と、 前記選定ステップ5で選定された変数と同時に復帰可能
    な変数を選定する選定ステップ7と、 前記選定ステップ6及び前記選定ステップ7で共に選定
    された変数を選定する選定ステップ8と、 上記選定ステップ5及び選定ステップ8で選定された変
    数を同時に退避する退避命令及び同時に復帰する命令を
    挿入する挿入ステップ3と、 プログラム中の変数をレジスタに割り付ける割付ステッ
    プ3を備えることを特徴とする資源割付方法。
  12. 【請求項12】 前記割付ステップ3は、 前記挿入ステップ3で挿入される退避命令及び復帰命令
    のオペランドとなる複数の変数を、目的機械において単
    一の退避命令及び復帰命令で指定できるレジスタに割り
    付けることを特徴とする請求項11記載の資源割付方
    法。
  13. 【請求項13】 前記選定ステップ3は、 プログラム中の変数を仮にレジスタに割り付ける仮割付
    ステップ3を含み、 上記仮割付ステップで、レジスタに割り付けられなかっ
    た変数を選定することを特徴とする請求項11または1
    2記載の資源割付方法。
  14. 【請求項14】 前記仮割付ステップ3は、 使用可能なレジスタ数より少ない数のレジスタを用いて
    仮割付を行なうことを特徴とする請求項11〜13記載
    の資源割付方法。
  15. 【請求項15】 前記仮割付ステップ3は、 使用可能なレジスタ数及びより少ない数のレジスタを用
    いて複数回の仮割付を行ない、 前記挿入ステップ3は、上記複数の仮割付の結果、最も
    コストの小さな仮割付結果に基づき、挿入を行なうこと
    を特徴とする請求項11〜13記載の資源割付方法。
  16. 【請求項16】 メモリへ退避かつメモリから復帰する
    変数を選定する選定手段1と、 前記選定手段1で選定された変数と同時に退避可能な変
    数を選定する選定手段2と、 前記選定手段1で選定された変数と同時に復帰可能な変
    数を選定する選定手段3と、 前記選定手段2及び前記選定手段3で共に選定された変
    数を選定する選定手段4と、 上記選定手段1及び選定手段4で選定された変数を同時
    に退避する退避命令及び同時に復帰する命令を挿入する
    挿入手段1と、 プログラム中の変数をレジスタに割り付ける割付手段1
    を備えることを特徴とする資源割付装置。
  17. 【請求項17】 前記割付手段1は、 前記挿入手段1で挿入される退避命令及び復帰命令のオ
    ペランドとなる複数の変数を、目的機械において単一の
    退避命令及び復帰命令で指定できるレジスタに割り付け
    ることを特徴とする請求項15記載の資源割付装置。
  18. 【請求項18】 メモリへ退避かつメモリから復帰する
    変数を選定する選定ステップ5と、 前記選定ステップ5で選定された変数と同時に退避可能
    な変数を選定する選定ステップ6と、 前記選定ステップ5で選定された変数と同時に復帰可能
    な変数を選定する選定ステップ7と、 前記選定ステップ6及び前記選定ステップ7で共に選定
    された変数を選定する選定ステップ8と、 上記選定ステップ5及び選定ステップ8で選定された変
    数を同時に退避する退避命令及び同時に復帰する命令を
    挿入する挿入ステップ3と、 プログラム中の変数をレジスタに割り付ける割付ステッ
    プ3からなるプログラムを記録した記録媒体。
  19. 【請求項19】 前記割付ステップ3は、 前記挿入ステップ3で挿入される退避命令及び復帰命令
    のオペランドとなる複数の変数を、目的機械において単
    一の退避命令及び復帰命令で指定できるレジスタに割り
    付けるからなるプログラムを記録した請求項17記載の
    記録媒体。
JP2000104655A 2000-04-06 2000-04-06 資源割付装置 Pending JP2001290653A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000104655A JP2001290653A (ja) 2000-04-06 2000-04-06 資源割付装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000104655A JP2001290653A (ja) 2000-04-06 2000-04-06 資源割付装置

Publications (1)

Publication Number Publication Date
JP2001290653A true JP2001290653A (ja) 2001-10-19

Family

ID=18618162

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000104655A Pending JP2001290653A (ja) 2000-04-06 2000-04-06 資源割付装置

Country Status (1)

Country Link
JP (1) JP2001290653A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112925566A (zh) * 2019-12-06 2021-06-08 中科寒武纪科技股份有限公司 建立虚拟寄存器生存区间的方法和装置及编译方法和装置
JP2021530057A (ja) * 2018-07-06 2021-11-04 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. マスク関数を用いるコンパイラデバイス

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021530057A (ja) * 2018-07-06 2021-11-04 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. マスク関数を用いるコンパイラデバイス
JP7371034B2 (ja) 2018-07-06 2023-10-30 コーニンクレッカ フィリップス エヌ ヴェ マスク関数を用いるコンパイラデバイス
CN112925566A (zh) * 2019-12-06 2021-06-08 中科寒武纪科技股份有限公司 建立虚拟寄存器生存区间的方法和装置及编译方法和装置

Similar Documents

Publication Publication Date Title
US8266603B2 (en) Technique for allocating register to variable for compiling
JP4745341B2 (ja) 依存性チェーン処理のためのシステム、方法及び装置
JP3220055B2 (ja) 機械語命令列またはアセンブリ言語命令列を最適化する最適化装置、及び、高級言語で記載されたソースプログラムを機械語またはアセンブリ言語の命令列に変換するコンパイラ装置。
EP0806725B1 (en) Method and apparatus for early insertion of assembler code for optimization
US20080134151A1 (en) Compiler register allocation and compilation
US6434743B1 (en) Method and apparatus for allocating stack slots
JPH06250846A (ja) コンパイル装置
JP2003515203A (ja) Nベースタイプの演算式の最適化
JP2000035893A (ja) デ―タ処理システムの配列の静的初期化方法、デ―タ処理方法、並びにデ―タ処理システム及びその制御手順をコンピュ―タに実行させるプログラムを記憶したコンピュ―タ読み取り可能な記憶媒体
JP3546341B2 (ja) 多重ループ向けデータプリフェッチ方法およびプログラム生成方法
JP2008009957A (ja) コンパイル装置
Mattson et al. Communication scheduling
US8266416B2 (en) Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system
US20190057125A1 (en) System and method for managing log data
US5276821A (en) Operation assignment method and apparatus therefor
JP2001290653A (ja) 資源割付装置
JP3318051B2 (ja) 翻訳処理方法
EP1387266A1 (en) Software pipelining for branching control flow
US20070011440A1 (en) Processor and processing method
JPH11242599A (ja) コンピュータプログラム製品
US6086632A (en) Register optimizing compiler using commutative operations
JP3727039B2 (ja) コンパイラにおける乗算実施方法
JP3237591B2 (ja) コンパイル装置、コンパイル方法およびコンパイラを記録した記録媒体
JP3323147B2 (ja) コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体
JPH0689187A (ja) インライン展開最適化方法