JPH04241630A - グラフ色塗りによるレジスタ割り付け最適化方式 - Google Patents
グラフ色塗りによるレジスタ割り付け最適化方式Info
- Publication number
- JPH04241630A JPH04241630A JP1599691A JP1599691A JPH04241630A JP H04241630 A JPH04241630 A JP H04241630A JP 1599691 A JP1599691 A JP 1599691A JP 1599691 A JP1599691 A JP 1599691A JP H04241630 A JPH04241630 A JP H04241630A
- Authority
- JP
- Japan
- Prior art keywords
- graph
- nodes
- register
- register allocation
- variables
- 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
Links
- 238000010422 painting Methods 0.000 title abstract 2
- 239000003086 colorant Substances 0.000 claims abstract description 14
- 238000004040 coloring Methods 0.000 claims description 39
- 238000000034 method Methods 0.000 claims description 34
- 238000011156 evaluation Methods 0.000 claims description 18
- 238000005457 optimization Methods 0.000 claims description 18
- 238000010586 diagram Methods 0.000 description 7
- 238000003860 storage Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明は、与えられたソースプロ
グラムから目的プログラムを生成するコンパイラにおけ
る最適化方式に関し、特に並列に動作する複数の演算部
を持ち各演算部で実行される命令が目的プログラムの生
成時点で確定していることを前提とするプロセッサに対
するコンパイラにおける最適化方式に関し、とりわけ目
的プログラムの生成過程でソースプログラムの展開によ
り生成された中間コード列を対象としてレジスタを効率
良く割り付けるためにグラフ色塗りの手法を採用するグ
ラフ色塗りによるレジスタ割り付け最適化方式に関する
。
グラムから目的プログラムを生成するコンパイラにおけ
る最適化方式に関し、特に並列に動作する複数の演算部
を持ち各演算部で実行される命令が目的プログラムの生
成時点で確定していることを前提とするプロセッサに対
するコンパイラにおける最適化方式に関し、とりわけ目
的プログラムの生成過程でソースプログラムの展開によ
り生成された中間コード列を対象としてレジスタを効率
良く割り付けるためにグラフ色塗りの手法を採用するグ
ラフ色塗りによるレジスタ割り付け最適化方式に関する
。
【0002】
【従来の技術】単一の演算部からなりその演算部で実行
される命令が目的プログラムの生成時点で確定している
ことを前提とするプロセッサに対するコンパイラで、中
間コード列中の変数に対してレジスタを割り付ける方式
として、グラフ色塗りの手法を用いる方式が知られてい
る。
される命令が目的プログラムの生成時点で確定している
ことを前提とするプロセッサに対するコンパイラで、中
間コード列中の変数に対してレジスタを割り付ける方式
として、グラフ色塗りの手法を用いる方式が知られてい
る。
【0003】この方式では、次のような手順で処理が行
われる。
われる。
【0004】■ 各変数が有効なデータを保持してい
る区間をグラフのノードとして表す。
る区間をグラフのノードとして表す。
【0005】■ 2つの区間に重複があることにより
対象となっている2個の変数に同一のレジスタを割り付
けることが不可能な場合には、対応する2個のノードを
グラフの辺で結ぶ。
対象となっている2個の変数に同一のレジスタを割り付
けることが不可能な場合には、対応する2個のノードを
グラフの辺で結ぶ。
【0006】■ 以上の方法を用いて全ての区間につ
いて重複を解析し、その結果得られたグラフにおいて、
互いに辺で結ばれたノードが同一の色とならないように
色を割り当てる。
いて重複を解析し、その結果得られたグラフにおいて、
互いに辺で結ばれたノードが同一の色とならないように
色を割り当てる。
【0007】■ 同一の色が割り当てられた複数のノ
ードに対応する複数の変数に対して1本のレジスタを割
り付ける。
ードに対応する複数の変数に対して1本のレジスタを割
り付ける。
【0008】なお、上述の方式において、ノードにあら
かじめ優先度を与えることにより、上述のレジスタ割り
付けの効果をさらに高める方式がある。この方式では、
あるノードの優先度としてそのノードに対応する変数が
ソースプログラム中で使用される頻度が用いられ、上述
の手順■においてレジスタが割り付けられる段階で優先
度の高いノードから順にレジスタが割り付けてられてい
る(このように従来技術における「優先度」はノードに
対して付与されるものであった)。
かじめ優先度を与えることにより、上述のレジスタ割り
付けの効果をさらに高める方式がある。この方式では、
あるノードの優先度としてそのノードに対応する変数が
ソースプログラム中で使用される頻度が用いられ、上述
の手順■においてレジスタが割り付けられる段階で優先
度の高いノードから順にレジスタが割り付けてられてい
る(このように従来技術における「優先度」はノードに
対して付与されるものであった)。
【0009】並列に動作する複数の演算部を持ち各演算
部で実行される命令が目的プログラムの生成時点で確定
していることを前提とするプロセッサに対するコンパイ
ラにおいても、従来のグラフ色塗りによるレジスタ割り
付け最適化方式は、単一の演算部からなるプロセッサに
対するコンパイラにおける上述の方式がそのまま適用さ
れて実現されていた。
部で実行される命令が目的プログラムの生成時点で確定
していることを前提とするプロセッサに対するコンパイ
ラにおいても、従来のグラフ色塗りによるレジスタ割り
付け最適化方式は、単一の演算部からなるプロセッサに
対するコンパイラにおける上述の方式がそのまま適用さ
れて実現されていた。
【0010】
【発明が解決しようとする課題】複数の演算部を持つプ
ロセッサに対するコンパイラにおける従来のグラフ色塗
りによるレジスタ割り付け最適化方式では、単一の演算
部からなるプロセッサに対するコンパイラにおける上述
の方式がそのまま適用されており、2つの区間に重複が
ない限りノードを結ぶ辺は作成されないので、ソースプ
ログラム上での位置が近接している2つの変数であって
もそれらの変数に対応する2つの区間に重複がなければ
同一のレジスタが割り付けられ得る。
ロセッサに対するコンパイラにおける従来のグラフ色塗
りによるレジスタ割り付け最適化方式では、単一の演算
部からなるプロセッサに対するコンパイラにおける上述
の方式がそのまま適用されており、2つの区間に重複が
ない限りノードを結ぶ辺は作成されないので、ソースプ
ログラム上での位置が近接している2つの変数であって
もそれらの変数に対応する2つの区間に重複がなければ
同一のレジスタが割り付けられ得る。
【0011】ところで、複数の演算部を持つコンパイラ
における命令の並列化処理では、ソースプログラム上で
の位置が近接している命令は可能な限り並列に実行する
ような配置が試みられる。このときに、これらの命令に
含まれる変数に同一のレジスタが割り付けられると、こ
れらの変数を使用している命令を並列に実行できない。
における命令の並列化処理では、ソースプログラム上で
の位置が近接している命令は可能な限り並列に実行する
ような配置が試みられる。このときに、これらの命令に
含まれる変数に同一のレジスタが割り付けられると、こ
れらの変数を使用している命令を並列に実行できない。
【0012】したがって、上述した従来のグラフ色塗り
によるレジスタ割り付け最適化方式では、その方式が適
用されるコンパイラにより生成される目的プログラムの
実行性能が悪くなるという問題点があった。
によるレジスタ割り付け最適化方式では、その方式が適
用されるコンパイラにより生成される目的プログラムの
実行性能が悪くなるという問題点があった。
【0013】本発明の目的は、上述の点に鑑み、高い実
行性能を有する目的プログラムを生成することができる
グラフ色塗りによるレジスタ割り付け最適化方式を提供
することにある。
行性能を有する目的プログラムを生成することができる
グラフ色塗りによるレジスタ割り付け最適化方式を提供
することにある。
【0014】
【課題を解決するための手段】本発明のグラフ色塗りに
よるレジスタ割り付け最適化方式は、並列に動作する複
数の演算部を持ち各演算部で実行される命令が目的プロ
グラムの生成時点で確定していることを前提とするプロ
セッサに対する目的プログラムの生成過程で中間コード
列に対してグラフ色塗りの手法を用いてレジスタ割り付
けの最適化を行うコンパイラにおいて、中間コード列中
の「変数が有効なデータを保持している区間」に関して
重複の有無および同一のレジスタを割り付けることによ
り命令の並列化を損なう可能性を判断し重複の有無およ
び並列化を損なう可能性の高さに応じて評価値を算出す
るデータコンフリクト解析手段と、このデータコンフリ
クト解析手段による解析に基づいて「変数が有効なデー
タを保持している区間」に対応するノードを辺で結びそ
の辺に評価値を付加してグラフを作成するグラフ作成手
段と、このグラフ作成手段により辺で結ばれたノードに
利用可能なレジスタ数に応じた数の別の色を割り当てる
グラフ色塗り手段と、このグラフ色塗り手段により同一
の色が割り当てられたノードに対応する変数に同一のレ
ジスタを割り付けるレジスタ割り付け手段とを有する。
よるレジスタ割り付け最適化方式は、並列に動作する複
数の演算部を持ち各演算部で実行される命令が目的プロ
グラムの生成時点で確定していることを前提とするプロ
セッサに対する目的プログラムの生成過程で中間コード
列に対してグラフ色塗りの手法を用いてレジスタ割り付
けの最適化を行うコンパイラにおいて、中間コード列中
の「変数が有効なデータを保持している区間」に関して
重複の有無および同一のレジスタを割り付けることによ
り命令の並列化を損なう可能性を判断し重複の有無およ
び並列化を損なう可能性の高さに応じて評価値を算出す
るデータコンフリクト解析手段と、このデータコンフリ
クト解析手段による解析に基づいて「変数が有効なデー
タを保持している区間」に対応するノードを辺で結びそ
の辺に評価値を付加してグラフを作成するグラフ作成手
段と、このグラフ作成手段により辺で結ばれたノードに
利用可能なレジスタ数に応じた数の別の色を割り当てる
グラフ色塗り手段と、このグラフ色塗り手段により同一
の色が割り当てられたノードに対応する変数に同一のレ
ジスタを割り付けるレジスタ割り付け手段とを有する。
【0015】
【作用】本発明のグラフ色塗りによるレジスタ割り付け
最適化方式では、データコンフリクト解析手段が中間コ
ード列中の「変数が有効なデータを保持している区間」
に関して重複の有無および同一のレジスタを割り付ける
ことにより命令の並列化を損なう可能性を判断し重複の
有無および並列化を損なう可能性の高さに応じて評価値
を算出し、グラフ作成手段がデータコンフリクト解析手
段による解析に基づいて「変数が有効なデータを保持し
ている区間」に対応するノードを辺で結びその辺に評価
値を付加してグラフを作成し、グラフ色塗り手段がグラ
フ作成手段により辺で結ばれたノードに利用可能なレジ
スタ数に応じた数の別の色を割り当て、レジスタ割り付
け手段がグラフ色塗り手段により同一の色が割り当てら
れたノードに対応する変数に同一のレジスタを割り付け
る。
最適化方式では、データコンフリクト解析手段が中間コ
ード列中の「変数が有効なデータを保持している区間」
に関して重複の有無および同一のレジスタを割り付ける
ことにより命令の並列化を損なう可能性を判断し重複の
有無および並列化を損なう可能性の高さに応じて評価値
を算出し、グラフ作成手段がデータコンフリクト解析手
段による解析に基づいて「変数が有効なデータを保持し
ている区間」に対応するノードを辺で結びその辺に評価
値を付加してグラフを作成し、グラフ色塗り手段がグラ
フ作成手段により辺で結ばれたノードに利用可能なレジ
スタ数に応じた数の別の色を割り当て、レジスタ割り付
け手段がグラフ色塗り手段により同一の色が割り当てら
れたノードに対応する変数に同一のレジスタを割り付け
る。
【0016】
【実施例】次に、本発明について図面を参照して詳細に
説明する。
説明する。
【0017】図1は、本発明のグラフ色塗りによるレジ
スタ割り付け最適化方式の一実施例の構成を示すブロッ
ク図である。本実施例のグラフ色塗りによるレジスタ割
り付け最適化方式は、二次記憶装置(図示せず)に格納
されているソースプログラム1と、コンパイラ2と、コ
ンパイルされて二次記憶装置に格納される目的プログラ
ム3とを含んで構成されている。
スタ割り付け最適化方式の一実施例の構成を示すブロッ
ク図である。本実施例のグラフ色塗りによるレジスタ割
り付け最適化方式は、二次記憶装置(図示せず)に格納
されているソースプログラム1と、コンパイラ2と、コ
ンパイルされて二次記憶装置に格納される目的プログラ
ム3とを含んで構成されている。
【0018】コンパイラ2は、二次記憶装置からソース
プログラム1を取り込み構文解析および意味解析を行い
解析結果を中間コード列5(図2参照)に展開するソー
スプログラム解釈部21と、その中間コード列5に対し
てコード短縮等のための最適化処理を施す最適化部22
と、複数の演算部の各演算部で実行される全ての命令を
一列に並べた形の直列アセンブリ命令列を生成する直列
アセンブリ命令列生成部23と、直列アセンブリ命令列
の並列化を行い目的プログラム3となる並列アセンブリ
命令列を生成する並列アセンブリ命令列生成部24と、
目的プログラム3を二次記憶装置に出力する目的プログ
ラム出力部25とを含んで構成されている。
プログラム1を取り込み構文解析および意味解析を行い
解析結果を中間コード列5(図2参照)に展開するソー
スプログラム解釈部21と、その中間コード列5に対し
てコード短縮等のための最適化処理を施す最適化部22
と、複数の演算部の各演算部で実行される全ての命令を
一列に並べた形の直列アセンブリ命令列を生成する直列
アセンブリ命令列生成部23と、直列アセンブリ命令列
の並列化を行い目的プログラム3となる並列アセンブリ
命令列を生成する並列アセンブリ命令列生成部24と、
目的プログラム3を二次記憶装置に出力する目的プログ
ラム出力部25とを含んで構成されている。
【0019】最適化部22内のレジスタ割り付け処理部
4は、データコンフリクト解析手段41と、グラフ作成
手段42と、グラフ色塗り手段43と、レジスタ割り付
け手段44とを含んで構成されている。このレジスタ割
り付け処理部4によって、本実施例のグラフ色塗りによ
るレジスタ割り付け最適化方式の中枢の処理が実現され
る。
4は、データコンフリクト解析手段41と、グラフ作成
手段42と、グラフ色塗り手段43と、レジスタ割り付
け手段44とを含んで構成されている。このレジスタ割
り付け処理部4によって、本実施例のグラフ色塗りによ
るレジスタ割り付け最適化方式の中枢の処理が実現され
る。
【0020】図2および図3はレジスタ割り付け処理部
4の処理を説明するための図であり、図2は中間コード
列5の一例を示す図であり、図3はグラフ作成手段42
により作成されグラフ色塗り手段43による「グラフ色
塗り」の対象となるグラフ6の一例を示す図である。
4の処理を説明するための図であり、図2は中間コード
列5の一例を示す図であり、図3はグラフ作成手段42
により作成されグラフ色塗り手段43による「グラフ色
塗り」の対象となるグラフ6の一例を示す図である。
【0021】次に、このように構成された本実施例のグ
ラフ色塗りによるレジスタ割り付け最適化方式の動作に
ついて説明する。
ラフ色塗りによるレジスタ割り付け最適化方式の動作に
ついて説明する。
【0022】レジスタ割付け処理部4では、次のような
処理が行われる。
処理が行われる。
【0023】データコンフリクト解析手段41は、中間
コード列5を参照して各変数が有効なデータを保持して
いる区間を検出し、これらの区間相互に重複があるか否
かを解析する。重複がある場合には、その重複を示す評
価値として無限大を算出する。さらに、このような重複
がなくても、後のレジスタ割り付けでこれらの区間に対
応する変数に同一のレジスタが割り付けられると並列性
を損なう可能性があるか否かを解析し、その可能性があ
る場合にはその可能性の大きさに応じた評価値を算出す
る。
コード列5を参照して各変数が有効なデータを保持して
いる区間を検出し、これらの区間相互に重複があるか否
かを解析する。重複がある場合には、その重複を示す評
価値として無限大を算出する。さらに、このような重複
がなくても、後のレジスタ割り付けでこれらの区間に対
応する変数に同一のレジスタが割り付けられると並列性
を損なう可能性があるか否かを解析し、その可能性があ
る場合にはその可能性の大きさに応じた評価値を算出す
る。
【0024】グラフ作成手段42は、次のようにしてグ
ラフ6を作成する。すなわち、データコンフリクト解析
手段41によって解析された「変数が有効なデータを保
持している区間」に対してグラフ6のノードを割り当て
る。また、データコンフリクト解析手段41によって「
相互に重複がある」と解析された2つの区間に対応する
2つのノードを辺で結び、データコンフリクト解析手段
41により算出された評価値である無限大(重複を示す
評価値。図3中では「inf」で示す)をその辺に付加
する。また、相互に重複がない2つの区間であっても、
同一のレジスタが割り付けられると並列性を損なう可能
性がある2つの区間に対応する2つのノードを辺で結び
、データコンフリクト解析手段41により算出された評
価値(並列性を損なう可能性に応じた評価値)をその辺
に付加する。
ラフ6を作成する。すなわち、データコンフリクト解析
手段41によって解析された「変数が有効なデータを保
持している区間」に対してグラフ6のノードを割り当て
る。また、データコンフリクト解析手段41によって「
相互に重複がある」と解析された2つの区間に対応する
2つのノードを辺で結び、データコンフリクト解析手段
41により算出された評価値である無限大(重複を示す
評価値。図3中では「inf」で示す)をその辺に付加
する。また、相互に重複がない2つの区間であっても、
同一のレジスタが割り付けられると並列性を損なう可能
性がある2つの区間に対応する2つのノードを辺で結び
、データコンフリクト解析手段41により算出された評
価値(並列性を損なう可能性に応じた評価値)をその辺
に付加する。
【0025】グラフ色塗り手段43は、グラフ作成手段
42によって作成されたグラフ6の辺に付加された評価
値を優先度として用い、以下のようにグラフ6に対して
グラフ色塗りを行う。最初に、全ての辺を用いてグラフ
色塗りを行い(辺で結ばれたノードに別の色を割り当て
ることを全ての辺について行う)、必要な色の数が利用
可能なレジスタ数以下であるか否かを判断する。必要な
色の数が利用可能なレジスタ数以下である場合には、グ
ラフ色塗りを完了する。必要な色の数が利用可能なレジ
スタ数以下でない場合には、評価値の小さい(優先度の
低い)順に辺をグラフ6から除去して残りの辺を用いて
グラフ色塗りを行い、必要な色の数が利用可能なレジス
タ数以下になるまで以上の処理を繰り返す。
42によって作成されたグラフ6の辺に付加された評価
値を優先度として用い、以下のようにグラフ6に対して
グラフ色塗りを行う。最初に、全ての辺を用いてグラフ
色塗りを行い(辺で結ばれたノードに別の色を割り当て
ることを全ての辺について行う)、必要な色の数が利用
可能なレジスタ数以下であるか否かを判断する。必要な
色の数が利用可能なレジスタ数以下である場合には、グ
ラフ色塗りを完了する。必要な色の数が利用可能なレジ
スタ数以下でない場合には、評価値の小さい(優先度の
低い)順に辺をグラフ6から除去して残りの辺を用いて
グラフ色塗りを行い、必要な色の数が利用可能なレジス
タ数以下になるまで以上の処理を繰り返す。
【0026】レジスタ割り付け手段44は、グラフ色塗
り手段43によるグラフ色塗りの結果として同一の色が
与えられたノードに同一のレジスタを対応させることに
より、各変数にレジスタを割り付ける。
り手段43によるグラフ色塗りの結果として同一の色が
与えられたノードに同一のレジスタを対応させることに
より、各変数にレジスタを割り付ける。
【0027】次に、レジスタ割り付け処理部4によるレ
ジスタ割り付け処理を具体例を用いて説明する(図2お
よび図3参照)。
ジスタ割り付け処理を具体例を用いて説明する(図2お
よび図3参照)。
【0028】図2に示す中間コード列5に対して、グラ
フ作成手段42は、図3に示すようなグラフ6を作成す
る(図3では、簡単のために、変数A,XおよびYに関
する部分のみを示す)。グラフ6中のノード61は変数
Aが有効なデータを保持している区間51(図2参照)
に対応するノードであり、ノード62は変数Xが有効な
データを保持している区間52に対応するノードであり
、ノード63は変数Yが有効なデータを保持している区
間53に対応するノードである。
フ作成手段42は、図3に示すようなグラフ6を作成す
る(図3では、簡単のために、変数A,XおよびYに関
する部分のみを示す)。グラフ6中のノード61は変数
Aが有効なデータを保持している区間51(図2参照)
に対応するノードであり、ノード62は変数Xが有効な
データを保持している区間52に対応するノードであり
、ノード63は変数Yが有効なデータを保持している区
間53に対応するノードである。
【0029】中間コード列5において、変数Aが有効な
データを保持している区間51と変数Xが有効なデータ
を保持している区間52とには重複がある。そこで、グ
ラフ作成手段42は、ノード61とノード62とを辺6
4で結び、データコンフリクト解析手段41により算出
された評価値(重複を示す評価値)である無限大(in
f)を辺64に付加する。
データを保持している区間51と変数Xが有効なデータ
を保持している区間52とには重複がある。そこで、グ
ラフ作成手段42は、ノード61とノード62とを辺6
4で結び、データコンフリクト解析手段41により算出
された評価値(重複を示す評価値)である無限大(in
f)を辺64に付加する。
【0030】変数Aが有効なデータを保持している区間
51と変数Yが有効なデータを保持している区間53と
についても重複があるので、ノード61とノード63と
は辺66で結ばれ、辺66には評価値として無限大(i
nf)が付加される。
51と変数Yが有効なデータを保持している区間53と
についても重複があるので、ノード61とノード63と
は辺66で結ばれ、辺66には評価値として無限大(i
nf)が付加される。
【0031】変数Xが有効なデータを保持している区間
52と変数Yが有効なデータを保持している区間53と
には重複はないが、中間コード命令列5(したがって、
ソースプログラム1でも)において近接しているので、
同一のレジスタを割り付けると並列性を損なう可能性が
高い。したがって、データコンフリクト解析手段41は
その可能性の高さに応じた評価値(ここでは「2」とす
る)を与える。この結果、グラフ作成手段42は、ノー
ド62とノード63とを辺65で結び、辺65に評価値
として2を付加する。
52と変数Yが有効なデータを保持している区間53と
には重複はないが、中間コード命令列5(したがって、
ソースプログラム1でも)において近接しているので、
同一のレジスタを割り付けると並列性を損なう可能性が
高い。したがって、データコンフリクト解析手段41は
その可能性の高さに応じた評価値(ここでは「2」とす
る)を与える。この結果、グラフ作成手段42は、ノー
ド62とノード63とを辺65で結び、辺65に評価値
として2を付加する。
【0032】グラフ色塗り手段43およびレジスタ割り
付け手段44は、次のようにグラフ色塗りおよびレジス
タ割り付けを行う(図4参照)。
付け手段44は、次のようにグラフ色塗りおよびレジス
タ割り付けを行う(図4参照)。
【0033】グラフ6の構成に基づき、グラフ色塗り手
段43は、辺64〜66で結ばれているノード61〜6
3には全て別の色を割り当てる。したがって、レジスタ
割り付け手段44はレジスタが3本以上利用可能な場合
には各ノード61〜63に別々のレジスタを割り付ける
。
段43は、辺64〜66で結ばれているノード61〜6
3には全て別の色を割り当てる。したがって、レジスタ
割り付け手段44はレジスタが3本以上利用可能な場合
には各ノード61〜63に別々のレジスタを割り付ける
。
【0034】しかし、利用可能なレジスタが2本しかな
い場合には、グラフ色塗り手段43は、付加された評価
値の小さい辺65をグラフ6から除去し、ノード62と
ノード63とに同一の色を割り当て、さらにこれとは別
の色をノード61に割り当てる。この場合には、レジス
タ割り付け手段44はノード62とノード63とに同一
のレジスタを割り付ける(これにより、並列性を損なう
可能性が生じるが、利用可能なレジスタ数の制限からや
むをえない)。
い場合には、グラフ色塗り手段43は、付加された評価
値の小さい辺65をグラフ6から除去し、ノード62と
ノード63とに同一の色を割り当て、さらにこれとは別
の色をノード61に割り当てる。この場合には、レジス
タ割り付け手段44はノード62とノード63とに同一
のレジスタを割り付ける(これにより、並列性を損なう
可能性が生じるが、利用可能なレジスタ数の制限からや
むをえない)。
【0035】以上の処理により、利用可能なレジスタ数
に余裕がある範囲で、並列性を生かしたレジスタ割り付
けを行うことができる。
に余裕がある範囲で、並列性を生かしたレジスタ割り付
けを行うことができる。
【0036】
【発明の効果】以上説明したように本発明は、2つのノ
ードに同一のレジスタを割り付けることによって命令の
並列化処理が妨げられる可能性がある場合に、ノードに
対応する区間に重複がない場合でもこれらのノードを辺
で結ぶことにより、アセンブリ命令列(目的プログラム
)の並列性を高めることができる。また、グラフの辺に
優先度を持たせることにより、利用可能なレジスタ数が
不足する場合にも対処することができる。
ードに同一のレジスタを割り付けることによって命令の
並列化処理が妨げられる可能性がある場合に、ノードに
対応する区間に重複がない場合でもこれらのノードを辺
で結ぶことにより、アセンブリ命令列(目的プログラム
)の並列性を高めることができる。また、グラフの辺に
優先度を持たせることにより、利用可能なレジスタ数が
不足する場合にも対処することができる。
【0037】以上のことにより、単純なグラフ色塗りの
手法によるレジスタ割付け(単一の演算部からなるプロ
セッサに対するコンパイラにおけるグラフ色塗りの手法
を複数の演算部からなるプロセッサに対してそのまま適
用した場合のグラフ色塗りによるレジスタ割り付け)に
よって生成される目的プログラムの実行性能以上の実行
性能を有する目的プログラムを生成することができると
いう効果がある。
手法によるレジスタ割付け(単一の演算部からなるプロ
セッサに対するコンパイラにおけるグラフ色塗りの手法
を複数の演算部からなるプロセッサに対してそのまま適
用した場合のグラフ色塗りによるレジスタ割り付け)に
よって生成される目的プログラムの実行性能以上の実行
性能を有する目的プログラムを生成することができると
いう効果がある。
【図1】本発明の一実施例の構成を示すブロック図であ
る。
る。
【図2】図1中のソースプログラム解釈部により生成さ
れる中間コード列の一例を示す図である。
れる中間コード列の一例を示す図である。
【図3】図1中のグラフ作成手段により作成されるグラ
フの一例を示す図である。
フの一例を示す図である。
1 ソースプログラム
2 コンパイラ
3 目的プログラム
4 レジスタ割り付け処理部
5 中間コード列
6 グラフ
21 ソースプログラム解釈部
22 最適化部
23 直列アセンブリ命令列生成部
24 並列アセンブリ命令列生成部
25 目的プログラム出力部
41 データコンフリクト解析手段
42 グラフ作成手段
43 グラフ色塗り手段
44 レジスタ割り付け手段
51〜53 区間
61〜63 ノード
64〜66 辺
Claims (1)
- 【請求項1】 並列に動作する複数の演算部を持ち各
演算部で実行される命令が目的プログラムの生成時点で
確定していることを前提とするプロセッサに対する目的
プログラムの生成過程で中間コード列に対してグラフ色
塗りの手法を用いてレジスタ割り付けの最適化を行うコ
ンパイラにおいて、中間コード列中の「変数が有効なデ
ータを保持している区間」に関して重複の有無および同
一のレジスタを割り付けることにより命令の並列化を損
なう可能性を判断し、重複の有無および並列化を損なう
可能性の高さに応じて評価値を算出するデータコンフリ
クト解析手段と、このデータコンフリクト解析手段によ
る解析に基づいて「変数が有効なデータを保持している
区間」に対応するノードを辺で結びその辺に評価値を付
加してグラフを作成するグラフ作成手段と、このグラフ
作成手段により辺で結ばれたノードに利用可能なレジス
タ数に応じた数の別の色を割り当てるグラフ色塗り手段
と、このグラフ色塗り手段により同一の色が割り当てら
れたノードに対応する変数に同一のレジスタを割り付け
るレジスタ割り付け手段とを有することを特徴とするグ
ラフ色塗りによるレジスタ割り付け最適化方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1599691A JPH04241630A (ja) | 1991-01-14 | 1991-01-14 | グラフ色塗りによるレジスタ割り付け最適化方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1599691A JPH04241630A (ja) | 1991-01-14 | 1991-01-14 | グラフ色塗りによるレジスタ割り付け最適化方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH04241630A true JPH04241630A (ja) | 1992-08-28 |
Family
ID=11904258
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1599691A Pending JPH04241630A (ja) | 1991-01-14 | 1991-01-14 | グラフ色塗りによるレジスタ割り付け最適化方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH04241630A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6317876B1 (en) * | 1999-06-08 | 2001-11-13 | Hewlett-Packard Company | Method and apparatus for determining a maximum number of live registers |
-
1991
- 1991-01-14 JP JP1599691A patent/JPH04241630A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6317876B1 (en) * | 1999-06-08 | 2001-11-13 | Hewlett-Packard Company | Method and apparatus for determining a maximum number of live registers |
| US6609249B2 (en) | 1999-06-08 | 2003-08-19 | Hewlett-Packard Development Company, L.P. | Determining maximum number of live registers by recording relevant events of the execution of a computer program |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR101360512B1 (ko) | 기록 마스크를 사용하는 simd 아키텍처에 의한 레지스터 할당 | |
| US6247173B1 (en) | Computer compiler optimizer for reducing computer resource consumption during dependence analysis after loop unrolling | |
| JP2004220583A (ja) | アセンブラにおいて大域的プロセッサ資源割当てを実行するための方法およびシステム | |
| US20020170044A1 (en) | Method and system for register allocation | |
| Michaelson et al. | Nested algorithmic skeletons from higher order functions | |
| JP2002366366A (ja) | コンパイル方法、コード生成方法、スタックレジスタ使用方法、コンパイラ、これらを実現するプログラム及び記憶媒体 | |
| US6139200A (en) | Register resource allocation feedback | |
| JPH04241630A (ja) | グラフ色塗りによるレジスタ割り付け最適化方式 | |
| JP2000353097A (ja) | 低密回の干渉グラフを生成する方法および装置 | |
| JPH01118931A (ja) | プログラム変換方式 | |
| Goubault | Generalized boxings, congruences and partial inlining | |
| EP4697161A1 (en) | Dead code optimization method for compiler, and compiler, processor and electronic device | |
| JPH04307624A (ja) | ループ最適化方法及び装置 | |
| JP3028821B2 (ja) | 並列化コンパイル方法 | |
| JPS6182243A (ja) | オブジエクトプログラム生成方法 | |
| JP2004021425A (ja) | コンパイラにおけるメモリ配置方式 | |
| JPH02236638A (ja) | レジスタ割付け管理方式 | |
| CN112925566A (zh) | 建立虚拟寄存器生存区间的方法和装置及编译方法和装置 | |
| JPH09160784A (ja) | 並列化コンパイル方式 | |
| Kvas et al. | Evaluation of static program allocation schemes for macro data-flow computer | |
| JPH047748A (ja) | 参照順による自動配列要素割付処理方式 | |
| JP3004340B2 (ja) | プログラム最適化装置 | |
| JPH04324532A (ja) | 多次元資源割り付け方式 | |
| JP2003271392A (ja) | レジスタ割り付け方法 | |
| JPH02105224A (ja) | コンパイラにおけるデータ割付け方式 |