JPH03150637A - パイプライン対応のレジスタ割付け方式 - Google Patents
パイプライン対応のレジスタ割付け方式Info
- Publication number
- JPH03150637A JPH03150637A JP1288702A JP28870289A JPH03150637A JP H03150637 A JPH03150637 A JP H03150637A JP 1288702 A JP1288702 A JP 1288702A JP 28870289 A JP28870289 A JP 28870289A JP H03150637 A JPH03150637 A JP H03150637A
- Authority
- JP
- Japan
- Prior art keywords
- registers
- register
- real
- instructions
- executed
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/441—Register allocation; Assignment of physical memory space to logical memory space
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
(産業上の利用分野)
本発明は、プログラムミンク用高位言語で書かれたプロ
グラムの翻訳を行ないパイプライン対応の機械語を出力
するコンパイラの、各命令にレジスタを割り付けるパイ
プライン対応のレジスタ割付は方式に関する。
グラムの翻訳を行ないパイプライン対応の機械語を出力
するコンパイラの、各命令にレジスタを割り付けるパイ
プライン対応のレジスタ割付は方式に関する。
(従来の技術)
プログラミング高位言語で書かれたプログラム(ソース
プログラム)を翻訳し、実行可能な機械語(実行形式プ
ログラム)を得るためにコンパイラが利用される。
プログラム)を翻訳し、実行可能な機械語(実行形式プ
ログラム)を得るためにコンパイラが利用される。
コンパイラは、ソースプログラムを一旦中間形式プログ
ラムに翻訳した後に、この中間形式プログラムを実行形
式プログラムへと翻訳する処理を行なう。
ラムに翻訳した後に、この中間形式プログラムを実行形
式プログラムへと翻訳する処理を行なう。
さて1.中間形式プログラムは、擬似コードから構成さ
れている。この擬似コードは、レジスタ数に制限の無い
仮想的な機械命令である。この擬似コードで表わされた
命令のオペランドとして用いられるレジスタは仮想レジ
スタと呼ばれている。
れている。この擬似コードは、レジスタ数に制限の無い
仮想的な機械命令である。この擬似コードで表わされた
命令のオペランドとして用いられるレジスタは仮想レジ
スタと呼ばれている。
中間形式プログラムから実行形式プログラムへと翻訳す
る場合、仮想レジスタを実際に存在する実レジスタに割
付けるレジスタ割付は処理を行なう必要がある。このレ
ジスタ割付は処理は、コンパイラのバックエンド処理(
中間形式プログラムから実行形式プログラムへの翻訳処
理)の一つとして設けられている。
る場合、仮想レジスタを実際に存在する実レジスタに割
付けるレジスタ割付は処理を行なう必要がある。このレ
ジスタ割付は処理は、コンパイラのバックエンド処理(
中間形式プログラムから実行形式プログラムへの翻訳処
理)の一つとして設けられている。
ところで、レジスタ割付は処理の際、使用する実レジス
タはなるべく節約する方向でその処理が進められる。こ
れは、実レジスタが有限であることなどに依存している
。
タはなるべく節約する方向でその処理が進められる。こ
れは、実レジスタが有限であることなどに依存している
。
一方、最近のCPU (プロセッサ)では、その処理高
速化のためにパイプライン制御を行なっている。パイプ
ライン制御とは、1つの命令をさらに細かいステップに
分割し、1つの命令のあるステップを実行中、他の命令
のあるステップを実行するといったものである。これに
より、本来1つの命令しか実行できない単位時間中に、
複数の命令を実行することができ、全体として処理速度
を上げることができる。
速化のためにパイプライン制御を行なっている。パイプ
ライン制御とは、1つの命令をさらに細かいステップに
分割し、1つの命令のあるステップを実行中、他の命令
のあるステップを実行するといったものである。これに
より、本来1つの命令しか実行できない単位時間中に、
複数の命令を実行することができ、全体として処理速度
を上げることができる。
ところで、ある命令の実行結果を別の命令が使用するよ
うな場合、前の命令の実行が終了するまで後の命令の実
行が待たされることがある。これらの命令はパイプライ
ン制御として並行処理することはできず、このような事
象をパイプの乱れと呼んでいる。
うな場合、前の命令の実行が終了するまで後の命令の実
行が待たされることがある。これらの命令はパイプライ
ン制御として並行処理することはできず、このような事
象をパイプの乱れと呼んでいる。
このパイプの乱れをできる限り少なくするため、コンパ
イラは一旦生成した実行形式プログラムの命令列を並べ
換える、いわゆるパイプライン対応命令再配置の最適化
処理を行なう。
イラは一旦生成した実行形式プログラムの命令列を並べ
換える、いわゆるパイプライン対応命令再配置の最適化
処理を行なう。
(発明が解決しようとする課題)
さて、従来のコンパイラは、レジスタ割付は処理と、パ
イプライン対応命令再配置の最適化処理(以下、単に最
適化処理と称す)は、それぞれ何等関係を持たずに独立
に行なっていた。
イプライン対応命令再配置の最適化処理(以下、単に最
適化処理と称す)は、それぞれ何等関係を持たずに独立
に行なっていた。
第2図に、従来のコンパイラの動作説明図を示す。
図において(ア)のようなソースプログラムが、(イ)
のような擬似コードに翻訳されたものとする。擬似コー
ド(1)では、bの値が仮想レジスタVRIに格納され
る。擬似コード(2)では、仮想レジスタVRIの値が
aに格納される。擬似コード(3)〜(6)についても
同様の内容である。
のような擬似コードに翻訳されたものとする。擬似コー
ド(1)では、bの値が仮想レジスタVRIに格納され
る。擬似コード(2)では、仮想レジスタVRIの値が
aに格納される。擬似コード(3)〜(6)についても
同様の内容である。
以上のような擬似コードに実レジスタを割付けるレジス
タ割付は処理を施すと、(つ)のような機械語の実行形
式プログラムが生成される。即ち、機械語(1)では、
bの値が実レジスタr0に格納される0機械語(2)で
は、実レジスタr0の値がaに格納される0機械語(3
)〜(6)についても同様の内容である。
タ割付は処理を施すと、(つ)のような機械語の実行形
式プログラムが生成される。即ち、機械語(1)では、
bの値が実レジスタr0に格納される0機械語(2)で
は、実レジスタr0の値がaに格納される0機械語(3
)〜(6)についても同様の内容である。
機械語相互の関係は(1)が実行された後でなければ(
2)を実行することができない、また(3)が実行され
た後でなければ(4)を実行することができない、さら
に(5)が実行された後でなければ(6)を実行するこ
とができない、言換えれば、機械語(2) 、 (4
)が実行された後には、それぞれ実レジスタr0の値は
必要なくなる。このため、レジスタ割付は処理の際に、
機械語(1)〜(6)の全てに実レジスタr0を割付け
ることができ、またそれが最も実レジスタを効率的に使
用することになる。
2)を実行することができない、また(3)が実行され
た後でなければ(4)を実行することができない、さら
に(5)が実行された後でなければ(6)を実行するこ
とができない、言換えれば、機械語(2) 、 (4
)が実行された後には、それぞれ実レジスタr0の値は
必要なくなる。このため、レジスタ割付は処理の際に、
機械語(1)〜(6)の全てに実レジスタr0を割付け
ることができ、またそれが最も実レジスタを効率的に使
用することになる。
ところで、(つ)に示した機械語に対して最適化を施し
た場合、各機械語の並びは換わることがない、これは、
全ての機械語(命令)に対して実レジスタr0が割り付
けられているため、並行してその実行を行なうことがで
きないためである。
た場合、各機械語の並びは換わることがない、これは、
全ての機械語(命令)に対して実レジスタr0が割り付
けられているため、並行してその実行を行なうことがで
きないためである。
従って、機械語(1)〜(2) 、 (3)〜(4)
、 (5)〜(6)の間で発生するパイプの乱れを解消
することができないといった問題が生じていた。
、 (5)〜(6)の間で発生するパイプの乱れを解消
することができないといった問題が生じていた。
本発明は以上の点に着目してなされたもので、パイプラ
イン対応命令再配置の最適化の効果を向上させ、パイプ
の乱れを減少させることのできるパイプライン対応のレ
ジスタ割付は方式を提供することを目的とするものであ
る。
イン対応命令再配置の最適化の効果を向上させ、パイプ
の乱れを減少させることのできるパイプライン対応のレ
ジスタ割付は方式を提供することを目的とするものであ
る。
(課題を解決するための手段)
本発明のパイプライン対応のレジスタ割付は方式は、プ
ログラムの命令に使用されるレジスタを割り付けた後に
、パイプライン対応のために前記命令の再配置を行ない
、前記複数命令を並行に実行させて演算処理する場合に
おいて、前記演算処理中の所定のタイミングで、前記命
令により同時に使用されるレジスタの数を示す干渉数が
、前記レジスタの全数以下のとき、並行に実行される前
記各命令に対して個別の前記レジスタを割付けるもので
ある。
ログラムの命令に使用されるレジスタを割り付けた後に
、パイプライン対応のために前記命令の再配置を行ない
、前記複数命令を並行に実行させて演算処理する場合に
おいて、前記演算処理中の所定のタイミングで、前記命
令により同時に使用されるレジスタの数を示す干渉数が
、前記レジスタの全数以下のとき、並行に実行される前
記各命令に対して個別の前記レジスタを割付けるもので
ある。
(作用)
以上の方式は、前記演算処理中の所定のタイミングで、
複数の命令により同時に使用されるレジスタの数を示す
干渉数の検索を行ない、この干渉数が前記レジスタの全
数以下のとき、並行に実行される前記各命令に対して個
別の前記レジスタを割付けるものである。これにより、
複数の命令を同時に実行しても、そのレジスタが重なる
といったことを回避することができ、パイプの乱れが減
少する。
複数の命令により同時に使用されるレジスタの数を示す
干渉数の検索を行ない、この干渉数が前記レジスタの全
数以下のとき、並行に実行される前記各命令に対して個
別の前記レジスタを割付けるものである。これにより、
複数の命令を同時に実行しても、そのレジスタが重なる
といったことを回避することができ、パイプの乱れが減
少する。
(実施例)
第1図に、本発明に係るコンパイラの動作説明図を示す
。
。
図は、バイブライン対応命令再配置の最適化処理(最適
化処理)の前後の実行形式プログラム(機械語)を示し
ている。即ち、コンパイラにかけられるソースプログラ
ム、翻訳された中間形式プログラム(擬似コード)は、
先に第2図において説明したものと同一である。
化処理)の前後の実行形式プログラム(機械語)を示し
ている。即ち、コンパイラにかけられるソースプログラ
ム、翻訳された中間形式プログラム(擬似コード)は、
先に第2図において説明したものと同一である。
即ち、本発明のパイプライン対応のレジスタ割付は方式
によると、(ア)に示すように実レジスタr O+ r
l + f” 2の3つの実レジスタが仮想レジス
タに対して割り付けられる。即ち、機械語(11)、
(12)には、実レジスタr0が割付けられる。同様
に機械語(13)、 (14)及び機械語(15)。
によると、(ア)に示すように実レジスタr O+ r
l + f” 2の3つの実レジスタが仮想レジス
タに対して割り付けられる。即ち、機械語(11)、
(12)には、実レジスタr0が割付けられる。同様
に機械語(13)、 (14)及び機械語(15)。
(16)には、それぞれ実レジスタr”t * raが
割付けられる。
割付けられる。
以上の状態で最適化処理を施すと、(イ)に示すように
、機械語(11)、 (13)、 (15)及び機械
語(12)、 (t4)、 (16,)の順にその並び
が換わり、バイブの乱れを防止することができる。
、機械語(11)、 (13)、 (15)及び機械
語(12)、 (t4)、 (16,)の順にその並び
が換わり、バイブの乱れを防止することができる。
さて、第3図以降を参照しながら本発明の詳細について
説明を行なう。
説明を行なう。
第3図は、本発明の方式の動作を示すフローチャートで
ある。また、第4図は、本発明に係る動作説明図である
。この第4図は、擬似コード(命令)に含まれる仮想レ
ジスタの使用状況の一覧である。
ある。また、第4図は、本発明に係る動作説明図である
。この第4図は、擬似コード(命令)に含まれる仮想レ
ジスタの使用状況の一覧である。
さて、第3図においてレジスタ割付は処理を行なう場合
、中間形式プログラムを構成する各擬似コードを読込み
仮想レジスタの使用状況を把握する(ステップS1)、
具体的には、各仮想レジスタ毎に、それを定義(LOA
D命令等)した擬似コードや使用(STORE命令等)
の把握を行なう(第4図の黒丸)、その後、仮想レジス
タのライブ(live)解析を行なう(ステップS2)
、具体的には、各仮想レジスタの生存期間(定義から使
用迄)の把握を行なう(第4図の実線)、その後、干渉
グラフの作成を行なう(ステップS3)、この干渉グラ
フは、各仮想レジスタの生存期間が他の仮想レジスタと
重なっていれば干渉あり、重なりがなければ干渉なしと
して、干渉している仮想レジスタ(ノード)同志をエツ
ジで結ぶグラフを作成する。第4図の(ア)の場合には
干渉なしである。(イ)の場合には干渉がある。即ち、
仮想レジスタVRIは仮想レジスタVR2゜VH2と、
仮想レジスタVR2は、仮想レジスタVRI、VR3、
仮想レジスタVR3は、仮想レジスタVRI、VR2と
干渉しているため、各ノードがエツジで結ばれる。
、中間形式プログラムを構成する各擬似コードを読込み
仮想レジスタの使用状況を把握する(ステップS1)、
具体的には、各仮想レジスタ毎に、それを定義(LOA
D命令等)した擬似コードや使用(STORE命令等)
の把握を行なう(第4図の黒丸)、その後、仮想レジス
タのライブ(live)解析を行なう(ステップS2)
、具体的には、各仮想レジスタの生存期間(定義から使
用迄)の把握を行なう(第4図の実線)、その後、干渉
グラフの作成を行なう(ステップS3)、この干渉グラ
フは、各仮想レジスタの生存期間が他の仮想レジスタと
重なっていれば干渉あり、重なりがなければ干渉なしと
して、干渉している仮想レジスタ(ノード)同志をエツ
ジで結ぶグラフを作成する。第4図の(ア)の場合には
干渉なしである。(イ)の場合には干渉がある。即ち、
仮想レジスタVRIは仮想レジスタVR2゜VH2と、
仮想レジスタVR2は、仮想レジスタVRI、VR3、
仮想レジスタVR3は、仮想レジスタVRI、VR2と
干渉しているため、各ノードがエツジで結ばれる。
次に、ステップS4においては、干渉グラフの縮退が行
なわれる。ここでは、先ず実レジスタの全数をN個であ
るものとする。干渉グラフの縮退は、各ノードから出て
いるエツジの数がN未満であれば、干渉グラフからその
ノード及びエツジを取り去る。この処理をエツジの数が
N未満のノートがなくなるまで繰返し行なう、このステ
ップS4の処理により、干渉グラフが空になれば、各ノ
ードをN色に色分けすることが可能である。
なわれる。ここでは、先ず実レジスタの全数をN個であ
るものとする。干渉グラフの縮退は、各ノードから出て
いるエツジの数がN未満であれば、干渉グラフからその
ノード及びエツジを取り去る。この処理をエツジの数が
N未満のノートがなくなるまで繰返し行なう、このステ
ップS4の処理により、干渉グラフが空になれば、各ノ
ードをN色に色分けすることが可能である。
従って、ステップS5の結、果はYESとなる。ステッ
プS4の結果、ノードが残ればN色の色分けは不可能と
なり、ステップS5の結果がNOとなりステップS6に
移る。ステップS6では、スピル(Spill )コー
ドの挿入処理を行なう、この挿入処理は、スピルコード
、即ち、仮想レジスタの内容をメモリ等に退避させ、さ
らに復帰させる命令を各命令の間に挿入するもので、仮
想レジスタの生存期間の短縮を目的として行なわれる。
プS4の結果、ノードが残ればN色の色分けは不可能と
なり、ステップS5の結果がNOとなりステップS6に
移る。ステップS6では、スピル(Spill )コー
ドの挿入処理を行なう、この挿入処理は、スピルコード
、即ち、仮想レジスタの内容をメモリ等に退避させ、さ
らに復帰させる命令を各命令の間に挿入するもので、仮
想レジスタの生存期間の短縮を目的として行なわれる。
さて、ステップS5の結果がYESの場合、実際に擬似
コード中の仮想レジスタに実レジスタを割付ける割付は
処理(実レジスタ冗長割付け)を行なう(ステップS7
)。
コード中の仮想レジスタに実レジスタを割付ける割付は
処理(実レジスタ冗長割付け)を行なう(ステップS7
)。
このステップS7の処理について、第5図を参照しなが
ら説明を行なう。
ら説明を行なう。
第5図は、実レジスタ冗長割付けの詳細なフローチャー
トである。
トである。
先ず、干渉グラフ上の仮想レジスタを1つ取出す(ステ
ップ5ll)、そして、割付は候補とする実レジスタ(
候補レジスタ)として初期レジスタ(割付けのために用
意された実レジスタの何れか)を用意する(ステップ5
12)、そして、ステップ311で取出された仮想レジ
スタを、候補レジスタで色分けできるか否かの判断を行
なう。
ップ5ll)、そして、割付は候補とする実レジスタ(
候補レジスタ)として初期レジスタ(割付けのために用
意された実レジスタの何れか)を用意する(ステップ5
12)、そして、ステップ311で取出された仮想レジ
スタを、候補レジスタで色分けできるか否かの判断を行
なう。
この色分けは、この仮想レジスタにエツジで結ばれた他
の仮想レジスタの色が当該候補レジスタの色でなければ
可能である。この結果YESで色分け(実レジスタの割
付け)が可能であった場合には、その実レジスタの割付
けを行ない、初期レジスタを他の割付は候補の実レジス
タに更新する(ステップ514)、そして、干渉グラフ
上に実レジスタの割付けを行なうべき他の仮想レジスタ
があるか否かの判断を行なう(ステップ515)。この
結果NOの場合、割付けの処理を終了する。また、結果
がYESの場合にはステップSllに戻る。
の仮想レジスタの色が当該候補レジスタの色でなければ
可能である。この結果YESで色分け(実レジスタの割
付け)が可能であった場合には、その実レジスタの割付
けを行ない、初期レジスタを他の割付は候補の実レジス
タに更新する(ステップ514)、そして、干渉グラフ
上に実レジスタの割付けを行なうべき他の仮想レジスタ
があるか否かの判断を行なう(ステップ515)。この
結果NOの場合、割付けの処理を終了する。また、結果
がYESの場合にはステップSllに戻る。
ステップS13の結果がNOの場合には、実レジスタに
他の候補があるか否かの判断を行なう(ステップ516
)、この結果がYESの場合には、候補レジスタを更新
して他の実レジスタの設定を行ない(ステップ・517
) ステップS13に戻る。また、ステップS16の
結果がNOの場合には、割付は失敗であるとして処理を
終了する。
他の候補があるか否かの判断を行なう(ステップ516
)、この結果がYESの場合には、候補レジスタを更新
して他の実レジスタの設定を行ない(ステップ・517
) ステップS13に戻る。また、ステップS16の
結果がNOの場合には、割付は失敗であるとして処理を
終了する。
以上のような手順により、実レジスタの割付は処理を行
なう。
なう。
さて、再び第3図に戻り、ステップS7が終了すると、
即ち第5図において説明した処理が終了すると、各仮想
レジスタの色付け、即ち実レジスタの割付けができたか
否かの判断を行なう(ステップS8)。第5図において
、ステップS15の結果、処理を終了した場合には、ス
テップS8の結果はYESとなり、レジスタ割付は処理
を終了する。また、第5図において、ステップS16の
結果、処理を終了した場合には、ステップS8の結果は
NOとなり、従来同様の実レジスタを節約した実レジス
タ割付けの処理を行ない(ステップS9)、処理を終了
する。
即ち第5図において説明した処理が終了すると、各仮想
レジスタの色付け、即ち実レジスタの割付けができたか
否かの判断を行なう(ステップS8)。第5図において
、ステップS15の結果、処理を終了した場合には、ス
テップS8の結果はYESとなり、レジスタ割付は処理
を終了する。また、第5図において、ステップS16の
結果、処理を終了した場合には、ステップS8の結果は
NOとなり、従来同様の実レジスタを節約した実レジス
タ割付けの処理を行ない(ステップS9)、処理を終了
する。
ここで、ステップS8における判断の必要性について説
明を行なう。
明を行なう。
第6図に、色付けに係る説明図を示す。
先ず、ここでは、2つの実レジスタが割付は用として用
意されているものとする。そして、仮想レジスタが3つ
、即ちノードA、B、Cが存在し、ノードA、B、ノー
ドA、Cが干渉している(エツジで結ばれている)もの
とする。
意されているものとする。そして、仮想レジスタが3つ
、即ちノードA、B、Cが存在し、ノードA、B、ノー
ドA、Cが干渉している(エツジで結ばれている)もの
とする。
以上のような状態で(ア)に示すように、例えば、ノー
ドB、C,,Aの順番で色付けを行なったものとする。
ドB、C,,Aの順番で色付けを行なったものとする。
ノードBは第1の実レジスタ(色1)で色付けを、ノー
ドCは冗長に第2の実レジスタ(色2)で色付けを行な
ったものとする。この場合、ノードAに色付けを行なお
うとした場合、第3のレジスタが必要となる。即ち、ノ
ードAには、色1.2の何れでも色付けを行なうことが
できないためである。このような色付けの失敗に対処す
るためにステップS8が設けられている。
ドCは冗長に第2の実レジスタ(色2)で色付けを行な
ったものとする。この場合、ノードAに色付けを行なお
うとした場合、第3のレジスタが必要となる。即ち、ノ
ードAには、色1.2の何れでも色付けを行なうことが
できないためである。このような色付けの失敗に対処す
るためにステップS8が設けられている。
ちなみに、(イ)に示すように、ノードB。
C,Aの順番で色付けを行なう場合、ノードBに色l、
ノードCに従来同様節約して色1を色付けた場合、ノー
ドAは色2で色付けすることができる。この場合は、色
付は成功である。
ノードCに従来同様節約して色1を色付けた場合、ノー
ドAは色2で色付けすることができる。この場合は、色
付は成功である。
さて1.第1図に戻って、以上説明したように実レジス
タの割付けを行なうことにより、実レジスタro 、r
l l r2の3つが各仮想レジスタに割付けられる。
タの割付けを行なうことにより、実レジスタro 、r
l l r2の3つが各仮想レジスタに割付けられる。
そして、この機械語に最適化処理を施すと、(イ)に示
すように命令の並び換えを行なうことができ、パイプの
乱れを解消することができる。
すように命令の並び換えを行なうことができ、パイプの
乱れを解消することができる。
第7図に、実レジスタの構成説明図を示す。
実レジスタが32本存在し、この32本がその用途によ
り4つに区分けされているものとする。
り4つに区分けされているものとする。
そして、割付は候補として用いることのできる実レジス
タは実レジスタr0〜r211の29本であるものとす
る。実レジスタr29〜r31は特殊レジスタで、その
使用目的が限定されているものである。実レジスタro
”raaの内訳は、そのコストにより3つに分類される
。先ずコストの高い実レジスタr4〜r+s、コストの
中程度の実レジスタr o ” r sそしてコストの
安い実レジスタr’lll〜rigである。
タは実レジスタr0〜r211の29本であるものとす
る。実レジスタr29〜r31は特殊レジスタで、その
使用目的が限定されているものである。実レジスタro
”raaの内訳は、そのコストにより3つに分類される
。先ずコストの高い実レジスタr4〜r+s、コストの
中程度の実レジスタr o ” r sそしてコストの
安い実レジスタr’lll〜rigである。
本発明では、コストの安い実レジスタから順に割付けを
行なうものとする。即ち、実レジスタr 16. f
”17+ ”’ r 2a+ r s 、
・・・ ro 、 ra 、 ・・・r+sの
順である。
行なうものとする。即ち、実レジスタr 16. f
”17+ ”’ r 2a+ r s 、
・・・ ro 、 ra 、 ・・・r+sの
順である。
以上のような順序で、実レジスタを割付ける訳だが、各
仮想レジスタに割付けを行なう場合、毎回実レジスタr
’+sを候補として上げるのでなく。
仮想レジスタに割付けを行なう場合、毎回実レジスタr
’+sを候補として上げるのでなく。
1回目の割付けは実レジスタf”ta、2回目は実レジ
スタrat、そして4回目は実レジスタr19を初めに
候補として上げ、5回目以降は再び実レジスタr16に
戻るといった繰返しを行なう、この場合は冗長度4(4
回繰返すと元に戻る)の場合で、これは適宜変更するこ
とができる。
スタrat、そして4回目は実レジスタr19を初めに
候補として上げ、5回目以降は再び実レジスタr16に
戻るといった繰返しを行なう、この場合は冗長度4(4
回繰返すと元に戻る)の場合で、これは適宜変更するこ
とができる。
なお、1回目の割付けはr18+ ・・・r2111r
3・・・ 2回目の割付けはr’ +71・・・r”z
a、r+a+r、、*** 3回目はr’ +8.”
’ r 28.r’ +8+ r’ l?+r s p
・・・といった順番となる。
3・・・ 2回目の割付けはr’ +71・・・r”z
a、r+a+r、、*** 3回目はr’ +8.”
’ r 28.r’ +8+ r’ l?+r s p
・・・といった順番となる。
(発明の効果)
以上説明した本発明のバイブライン対応の実レジスタ割
付は方式は、実レジスタを極端に節約して仮想レジスタ
に割付けるといったことがないため、パイプライン対応
命令再配置の最適化処理を行なった場合、命令が並び換
わる確率が高くなる。このため、パイプの乱れ等の発生
を極力防止することができ、高速で実行することのでき
る実行形式プログラムを生成することができる。
付は方式は、実レジスタを極端に節約して仮想レジスタ
に割付けるといったことがないため、パイプライン対応
命令再配置の最適化処理を行なった場合、命令が並び換
わる確率が高くなる。このため、パイプの乱れ等の発生
を極力防止することができ、高速で実行することのでき
る実行形式プログラムを生成することができる。
第1図は本発明に係るコンパイラの動作説明図、第2図
は従来のコンパイラの動作説明図、第3図は本発明の方
式の動作を説明するフローチャート、第4図は擬似コー
ドに含まれる仮想レジスタの使用状況の一覧、第5図は
実レジスタ冗長割付けの詳細なフローチャート、第6図
は色付けに係る説明図、第7図は実レジスタの構成説明
図である。 r0〜r31・・・実レジスタ、 VRI−VH2−・・仮想レジスタ。 第3図
は従来のコンパイラの動作説明図、第3図は本発明の方
式の動作を説明するフローチャート、第4図は擬似コー
ドに含まれる仮想レジスタの使用状況の一覧、第5図は
実レジスタ冗長割付けの詳細なフローチャート、第6図
は色付けに係る説明図、第7図は実レジスタの構成説明
図である。 r0〜r31・・・実レジスタ、 VRI−VH2−・・仮想レジスタ。 第3図
Claims (1)
- プログラムの命令に使用されるレジスタを割り付けた後
に、パイプライン対応のために前記命令の再配置を行な
い、前記複数命令を並行に実行させて演算処理する場合
において、前記演算処理中の所定のタイミングで、前記
複数の命令により同時に使用されるレジスタの数を示す
干渉数が、前記レジスタの全数以下のとき、並行に実行
される前記各命令に対して個別の前記レジスタを割付け
ることを特徴とするパイプライン対応のレジスタ割付け
方式。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1288702A JPH03150637A (ja) | 1989-11-08 | 1989-11-08 | パイプライン対応のレジスタ割付け方式 |
| US07/607,062 US5261062A (en) | 1989-11-08 | 1990-10-31 | Register allocation system adaptive for pipelining |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1288702A JPH03150637A (ja) | 1989-11-08 | 1989-11-08 | パイプライン対応のレジスタ割付け方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH03150637A true JPH03150637A (ja) | 1991-06-27 |
Family
ID=17733584
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1288702A Pending JPH03150637A (ja) | 1989-11-08 | 1989-11-08 | パイプライン対応のレジスタ割付け方式 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5261062A (ja) |
| JP (1) | JPH03150637A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH07152583A (ja) * | 1993-11-30 | 1995-06-16 | Nec Corp | 実行形式ファイル生成装置 |
| JP2000284968A (ja) * | 1999-03-31 | 2000-10-13 | Toshiba Corp | コンパイル方法及びコンパイラ装置 |
Families Citing this family (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5418958A (en) * | 1992-07-15 | 1995-05-23 | Sun Microsystems, Inc. | Register allocation by decomposing, re-connecting and coloring hierarchical program regions |
| US5367651A (en) * | 1992-11-30 | 1994-11-22 | Intel Corporation | Integrated register allocation, instruction scheduling, instruction reduction and loop unrolling |
| US5630149A (en) * | 1993-10-18 | 1997-05-13 | Cyrix Corporation | Pipelined processor with register renaming hardware to accommodate multiple size registers |
| JP3311462B2 (ja) * | 1994-02-23 | 2002-08-05 | 富士通株式会社 | コンパイル処理装置 |
| US5765215A (en) * | 1995-08-25 | 1998-06-09 | International Business Machines Corporation | Method and system for efficient rename buffer deallocation within a processor |
| US5761514A (en) * | 1995-08-31 | 1998-06-02 | International Business Machines Corporation | Register allocation method and apparatus for truncating runaway lifetimes of program variables in a computer system |
| US5758117A (en) * | 1995-12-14 | 1998-05-26 | International Business Machines Corporation | Method and system for efficiently utilizing rename buffers to reduce dispatch unit stalls in a superscalar processor |
| US6298435B1 (en) * | 1996-04-16 | 2001-10-02 | International Business Machines Corporation | Methods and apparatus for exploiting virtual buffers to increase instruction parallelism in a pipelined processor |
| US6086632A (en) * | 1996-10-31 | 2000-07-11 | Nec Corporation | Register optimizing compiler using commutative operations |
| US6003126A (en) * | 1997-07-01 | 1999-12-14 | International Business Machines | Special instruction register including allocation field utilized for temporary designation of physical registers as general registers |
| US6307860B1 (en) | 1998-04-03 | 2001-10-23 | Mmc Networks, Inc. | Systems and methods for data transformation and transfer in networks |
| US6330584B1 (en) * | 1998-04-03 | 2001-12-11 | Mmc Networks, Inc. | Systems and methods for multi-tasking, resource sharing and execution of computer instructions |
| US7055151B1 (en) * | 1998-04-03 | 2006-05-30 | Applied Micro Circuits Corporation | Systems and methods for multi-tasking, resource sharing and execution of computer instructions |
| US6317876B1 (en) * | 1999-06-08 | 2001-11-13 | Hewlett-Packard Company | Method and apparatus for determining a maximum number of live registers |
| US6862730B1 (en) * | 2000-04-26 | 2005-03-01 | Lucent Technologies Inc. | Register allocation in code translation between processors |
| US20030079210A1 (en) * | 2001-10-19 | 2003-04-24 | Peter Markstein | Integrated register allocator in a compiler |
| US9501285B2 (en) * | 2010-05-27 | 2016-11-22 | International Business Machines Corporation | Register allocation to threads |
| US9696975B2 (en) * | 2010-09-03 | 2017-07-04 | International Business Machines Corporation | Allocating register halves independently |
| CN105637474B (zh) * | 2013-10-18 | 2019-03-22 | 马维尔国际贸易有限公司 | 用于寄存器分配的系统和方法 |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63138427A (ja) * | 1986-11-29 | 1988-06-10 | Nec Corp | 配列に対する命令のスケジユ−リング処理方式 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4435753A (en) * | 1980-10-31 | 1984-03-06 | International Business Machines Corporation | Register allocation system using recursive queuing during source code compilation |
| US4571678A (en) * | 1982-11-05 | 1986-02-18 | International Business Machines Corporation | Register allocation and spilling via graph coloring |
| US4754394A (en) * | 1984-10-24 | 1988-06-28 | International Business Machines Corporation | Multiprocessing system having dynamically allocated local/global storage and including interleaving transformation circuit for transforming real addresses to corresponding absolute address of the storage |
| US4782444A (en) * | 1985-12-17 | 1988-11-01 | International Business Machine Corporation | Compilation using two-colored pebbling register allocation method such that spill code amount is invariant with basic block's textual ordering |
| US4903196A (en) * | 1986-05-02 | 1990-02-20 | International Business Machines Corporation | Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor |
| US4891753A (en) * | 1986-11-26 | 1990-01-02 | Intel Corporation | Register scorboarding on a microprocessor chip |
-
1989
- 1989-11-08 JP JP1288702A patent/JPH03150637A/ja active Pending
-
1990
- 1990-10-31 US US07/607,062 patent/US5261062A/en not_active Expired - Lifetime
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63138427A (ja) * | 1986-11-29 | 1988-06-10 | Nec Corp | 配列に対する命令のスケジユ−リング処理方式 |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH07152583A (ja) * | 1993-11-30 | 1995-06-16 | Nec Corp | 実行形式ファイル生成装置 |
| JP2000284968A (ja) * | 1999-03-31 | 2000-10-13 | Toshiba Corp | コンパイル方法及びコンパイラ装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| US5261062A (en) | 1993-11-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5099447A (en) | Blocked matrix multiplication for computers with hierarchical memory | |
| US8725989B2 (en) | Performing function calls using single instruction multiple data (SIMD) registers | |
| Perrott | A language for array and vector processors | |
| JP6236093B2 (ja) | 並列パイプラインにおいてブランチを分岐するためのハードウェアおよびソフトウェアソリューション | |
| JP3901180B2 (ja) | プログラム並列化装置及びその方法並びにプログラム | |
| US6298479B1 (en) | Method and system for compiling and linking source files | |
| US20110161945A1 (en) | Minimizing Register Spills by Using Register Moves | |
| US5261062A (en) | Register allocation system adaptive for pipelining | |
| JPH0397059A (ja) | 並列プロセッサで処理する並列な命令ストリームを同期させる方法 | |
| US5613121A (en) | Method and system of generating combined storage references | |
| KR20110097716A (ko) | 기록 마스크를 사용하는 simd 아키텍처에 의한 레지스터 할당 | |
| CN116134416B (zh) | 避免张量内存布局中存储体冲突和流水线冲突的方法 | |
| JPH04336378A (ja) | 情報処理装置 | |
| US5901317A (en) | Method and system for register allocation using multiple interference graphs | |
| US20220121498A1 (en) | Combination of multiple data processing and machine learning frameworks for a target hardware | |
| JPH05101141A (ja) | 高位合成装置 | |
| US11762641B2 (en) | Allocating variables to computer memory | |
| US11675572B2 (en) | Sharing data structures | |
| KR102933463B1 (ko) | 차량 및 프로세서 제어 방법 | |
| JPS58149567A (ja) | ベクトル・レングス制御範囲融合処理方式 | |
| KR100912114B1 (ko) | 디지털 신호처리 프로세서에서 효과적인 데이터 전송을위한 메모리 운용 방법 | |
| JP6600888B2 (ja) | 並列化コンパイラ、並列化コンパイル装置、及び並列プログラムの生成方法 | |
| Feo et al. | Developing a high-performance FFT algorithm in Sisal for a vector supercomputer | |
| Arvind et al. | Future scientific programming on parallel machines | |
| CN119668689A (zh) | 指令处理方法及装置、电子设备、计算机可读存储介质 |