JPH04141737A - レジスタ再割付け方式 - Google Patents

レジスタ再割付け方式

Info

Publication number
JPH04141737A
JPH04141737A JP26573790A JP26573790A JPH04141737A JP H04141737 A JPH04141737 A JP H04141737A JP 26573790 A JP26573790 A JP 26573790A JP 26573790 A JP26573790 A JP 26573790A JP H04141737 A JPH04141737 A JP H04141737A
Authority
JP
Japan
Prior art keywords
instruction
register
instructions
block
memory
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
JP26573790A
Other languages
English (en)
Inventor
Kuniko Yamamoto
山本 久仁子
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP26573790A priority Critical patent/JPH04141737A/ja
Publication of JPH04141737A publication Critical patent/JPH04141737A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はレジスタ再割付は方式に関し、特にメモリ・レ
ジスタ間のロード/ストア命令をもち、間接分岐命令を
もたないアーキテクチャ上におけるレジスタ再割付は方
式に関する。
〔従来の技術〕
従来、レジスタの割付けは、コンパイラ内部の中間テキ
スト、またはコード生成後のテキストに対して行われて
おり、(レジスタ割付けも含めて)機械語命令の生成完
了後に、再度レジスタの割付けが行われることはなかっ
た。
〔発明が解決しようとする課題〕
上述したコンパイラ内部の中間テキスト、またはコード
生成後のテキストに対して行う従来のレジスタ割付は方
式では、必すしも同値関係(命令実行中のある時点て、
メモリの内容とレジスタの内容とが同じ値である関係)
を考慮したレノスタ割付けが行われているとはかぎらず
、同値関係を有効利用しない不要なロード命令が生成さ
れる場合があり、オブジェクトサイズの増大や実行スピ
ードの低下を招くという問題点があった。
また、コンパイラの構成に依存する中間テキスト、また
はフード生成後のテキストに対してレジスタを割付けて
いたため、コンパイラごとにフッバイラ特有のレジスタ
割付は処理を用意しなければならないという問題点があ
った。
本発明の目的は、オブジェクトサイズを縮小することが
でき、実行速度も向上できるとともに、コンパイラごと
にコンパイラ特有のレジスタ割付は処理を用意する必要
がないレジスタ再割付は方式を提供することにある。
〔課題を解決するための手段〕
第1の発明のレジスタ再割付は方式は、メモリとレジス
タとの間のロード/ストア命令をもち、間接分岐命令を
もたないアーキテクチャ上のレジスタ再割付は方式にお
いて、 (A)命令を格納した媒体から命令の並びを入力してメ
モリ上に展開する命令入力手段、(B)入力した前記命
令を解析して、分岐命令の直後と分岐先ラベル位置で命
令の並びを分割して命令ブロックを作成し、同時に分割
した前記命令ブロック間の制御の流れを求める命令ブロ
ック分割手段、 (C)前記分割した命令ブロンク間のレジスタの定義書
参照の依存関係を調査し、前記命令ブロックの入口/出
口で生きているレジスタを求めるプロ、り間レジスタフ
ロー解析手段、(D)前記分割した命令ブロック内の命
令について、命令実行中のある時点て前記メモリの内容
と前記レジスタの内容とが同じ値の関係をボす同値関係
の状態を解析する同値関係解析手段、 (E)前記同値関係の付いた前記メモリからの不要なロ
ード命令があれば、矛盾がないように前記レジスタの再
割付けを行って不要なロード命令を削除するレジスタ再
割付は手段、(F)分割したすべての前記命令ブロック
に関して同値関係解析及びレジスタ再割付けを行った後
、命令を格納してあった前記媒体にレジスタ再割付は済
命令の並びを出力する命令出力手段、 を有して構成されている。
また、第2の発明のレジスタ再割付は方式は、メモリと
レジスタとの間のロード/ストア命令をもち、間接分岐
命令をもたないアーキテクチャ上のレジスタ再割付は方
式において、 (A)命令を格納した媒体から命令の並びを入力してメ
モリ上に展開するステ・ツブ、 (B)入力した前記命令を解析して、分岐命令の直後と
分岐先ラベル位置で命令の並びを分割して命令ブロック
を作成し、同時に分割した前記命令ブロック間の制御の
流れを求めるステップ) (C)前記分割した命令ブロック間のレジスタの定義・
参照の依存関係を訳査し、前記命令ブロックの入口/出
口で生きているレジスタを求めるステップ、 (D)前記分割した命令ブロック内の命令ζこつ(1て
、命令実行中のある時点て前記メモリの内容と前記レジ
スタの内容とが同じ値の関係を示す同値関係の状態を解
析するステ・ツブ、(E)前記同値関係の付いた前記メ
モリからの不要なロード命令があれば、矛盾かな0よう
番こ前記レジスタの再割付けを行って不要なロード命令
を削除するステ・ツブ、 (F)分割したすべての前記命令ブロック(こ関して同
値関係解析及びレジスタ再割付けを行った後、命令を格
納してあった前記媒体(こレジスタ再割付は済命令の並
びを出力するステ・ツブ、 を実行するように構成されている。
〔実施例〕
次に、本発明の実施例について図面を参照して説明する
第1図は本発明の一実施例のブロック図である。
第1図に示すレジスタ再割付は方式は、命令を格納した
媒体から命令の並びを入力してメモリ上に展開する命令
入力手段1、入力した命令を解析して、分岐命令の直後
と分岐先ラベル位置で命令の並びを分割して命令ブロッ
クを作成し、同時に分割した前記命令ブロック間の制御
の流れを求める命令ブロック分割手段2、分割した命令
ブロック間のレジスタの定義φ参照の依存関係を調査し
、命令ブロックの入口/出口で生きているレジスタを求
めるブロック間レジスタフロー解析手段3、分割した命
令ブロック内の命令について、命令実行中のある時点で
メモリの内容とレジスタの内容とが同じ値の関係を示す
同値関係の状態を解析する同値関係解析手段4、同値関
係の付いたメモリからの不要なロード命令があれば、矛
盾がないようにレジスタの再割付けを行って不要なロー
ド命令を削除するレジスタ再割付は手段5、分割したす
べての命令ブロックに関して同値関係解析及びレジスタ
再割付けを行った後、命令を格納してあった媒体にレジ
スタ再割付は済命令の並びを出力する命令出力手段6、
命令展開メモリ7、ブロックテーブル群8、同値関係表
9、命令格納媒体(ファイルまたはメモリ)10から構
成されている。
なお、第1図の各ブロック間の処理の流れは、太線の矢
印で示され、データの流れは細線の矢印で示されている
次に、動作を説明する。
まず、命令入力手段1により、命令を格納した任意の媒
体(ファイルまたはメモリ)′10から命令の並びを入
力する。入力は一命令ずつ行い、命令展開メモリ7上に
展開した後、−命令ごとに、命令ブロック分割手段2に
より、命令を解析しながら、制御上入口が一つで出口が
一つ、かつ途中に出口以外の分岐がないような単位(以
降「命令ブロック」または単に「ブロック」と呼ぶ)に
命令の並びを分割していく。
命令ブロック分割手段2の処理の流れは第2図に示す通
りである。分割された命令プロ、ツクは、第4図に示す
ようなブロックテーブルが命令展開メモリ7中のブロッ
クの先頭命令をポイントすることにより表現される。
命令ブロック分割手段2は、命令コードを解析しくステ
ップ11)、対象命令が分岐命令か否かを判断しくステ
ップ12)、分岐命令のときのみブロック分割処理を行
う。すなわち、対象命令が分岐命令ならば、まず、分岐
命令の次の命令を指しているブロックテーブルを検索し
くステップ13)、すでにあれば何もしない。もし、分
岐命令の次の命令を指しているブロックテーブルがなけ
れば、ブロックテーブルを一つ作成しくステップ14)
、分岐命令の次の命令を、次ブロックの最初の命令とし
て命令へのポインタ(または命令展開メモリ7上の展開
命令内相対オフセット、以降の命令へのポインタも同様
)を設定し、プロ、ツクテーブルが命令のアドレス順に
チェ一二ングされるように、前後のブロックテーブルと
チエ一二ングする(ステップ15)。そして、さらに分
岐命令が条件分岐命令か否かを判断しくステップ16)
、条件分岐命令の場合は、ブロックテーブルを新しく作
成しなかった場合も含めて、現ブロックテーブルとの間
を、制御順先行ブロックポインタ及び制御順後続ブロッ
クポインタで互いにチェーニングする(ステップ17)
。また、分岐命令の分岐相対オフセットから、下方向分
岐か否かを判断しくステップ18)、下方向分岐ならば
無条件にブロックテーブルを作成しくステップ20)、
上方向分岐ならば分岐先命令をポイントするブロックテ
ーブルがあるか否かを判断しくステップ19)、ブロッ
クテーブルがないときのみ、ブロックテーブルを作成し
て(ステップ20)、前記と同様に命令のアドレス順に
前後のブロックテーブルとチェーニングしくステップ2
1)、さらにブロックテーブルを新しく作成しなかった
場合も含ぬて、前記と同様に制御順に現ブロックテーブ
ルとチェーニングする(ステップ22)。これで、分岐
命令の直後、及び分岐先ラベル位置でブロックが分割さ
れたことになり、命令入力手段1と命令ブロック分割手
段2とを繰り返し、全命令について前記の処理を行うと
、ブロックテーブル単位の制御フローができあがる。
このブロックテーブルの集りをブロックテーブル群8と
呼ぶ。
次に、ブロック間レジスタフロー解析手段3によって、
ブロック間のレジスタの依存関係(ブロック間にまたが
ってその値が引き継がれるか否かの関係、レジスタ上の
値が引き継がれている間は、そのレジスタは「生きてい
る」という)を調へ、ブロックの入口で生きているレジ
スタ、及びブロックの出口で生きているレジスタを求め
る。
ブロックごとに、含まれる命令列を各レジスタに着目し
て解析し、ブロック内で最初に現われたレジスタアクセ
ス命令がレジスタ参照命令ならば、そのレジスタはブロ
ックの入口で生きていることになる。ブロックテーブル
を、ブロックテーブル起点ポインタからアドレス順チェ
ーンにしたがってたどり、上記のように全ブロックに関
してその入口で生きているレジスタを洗い出し、各ブロ
ックテーブルに設定する。次に、ブロックテーブルを制
御フローの逆順にたどり、ブロックの出口で生きている
レジスタを求め、各ブロックテーブルに設定する。ブロ
ックの出口で生きているレジスタとは、制御移行上の直
後のブロックの出口で生きていて、そのブロックで定義
されていないレジスタと、制御移行上の直後のブロック
の入口で生きているレジスタとの和集合である。
ブロックの入口/出口で生きているレジスタの情報が得
られたならば、次に同値関係解析手段4によって、メモ
リとレジスタとの間の同値関係を解析する(ここでいう
同値関係とは、前述したように命令実行中のある時点て
、メモリの内容とレジスタの内容とが同じ値である関係
のことであり、一般にメモリからレジスタへのロード命
令、及びレジスタからメモリへのストア命令によって付
けられる)。
同値関係解析手段4の処理の流れは第3図に示す通りで
ある。同値関係解析手段4は、第5図に示すような同値
関係表9を使用して、プロ・νり内の命令について、−
命令ずつ命令コードによって以下のような処理をしてい
く。
まず、ロード命令か否かを判断しくステップ31)、ロ
ード命令の場合は、次にロード先のメモリに対して同値
関係(すなわち、同一アドレス・同一長のメモリに対し
て同値関係表9がすでに設定しである場合)が付いてい
るか否か判断しくステップ32)、同値関係が付いてい
る場合、後述のようにレジスタの再割付けを試みる(ス
テップ33)。
ロード先のメモリに対して同値関係が付イテイない場合
(すなわち、同一アドレス・同一長のメモリに対して同
値関係表9がない場合)、新たに同値関係表9にロード
先のメモリのアドレスと長さ(命令によって決まる)、
及びロード先のレジスタを設定する(ステップ37)。
ステップ31において、ロード命令でない場合、さらに
ストア命令か否かを判断しくステップ34)、ストア命
令の場合は、対象メモリの何れかと同値関係の付いたレ
ジスタがあるか否かを判断し、(ステップ35)、スト
ア先のメモリに対して、一部でも同値関係が伺いている
場合(すなわち、アドレスと長さで示されるメモリのと
こか一部に対してでも、同値関係表9がすてに設定しで
ある場合)、同値関係表9からその情報を削除しくステ
ップ36)、新たに同値関係表9にストア先のメモリの
アドレスと長さ(命令によって決る)、及びストア元の
レジスタを設定する(ステップ37)。
また、ストア先のメモリに対して、一部でも同値関係が
付いていない場合(すなわち、アドレスと長さで示され
るメモリのどこか一部に対しても、同値関係表9がない
場合)、新たに同値関係表9にストア先の命令のアドレ
スと長さ(命令によって決る)、及びストア元のレジス
タを設定する(ステップ37)。
さらに、ステップ31及びステップ34で、ロード命令
でもストア命令でもない場合は、何もしないで終了する
上記のような解析処理でレジスタの再割付は可能になっ
た場合(同値関係が付いているメモリに対するロード命
令が生成されている場合)のみ、レジスタ再割付は手段
5によって同値関係を引き継いで、不要なロード命令を
削除するようにレジスタの再割付けを行う。
ここで、同値関係を設定した命令を81同値関係の付い
た対象メモリをM1対象レジスタをRz削除しようとす
るMからのロード命令をり、Lのロード先レジスタをR
2、ブロックの先頭からしの直前命令までの区間をα、
Lの直後の命令からブロックの最後までの区間をβ、α
区間内のAレジスタの最後の定義命令以降の区間をγ(
A)、β区間内のAレジスタ参照命令以前の区間の内、
Aレジスタ定義命令を含まない最大区間をδ(A)とす
る(第6図参照)。
たたし、α区間内にAレジスタ定義命令がなければ、 γ(A)=α+ε とし、β区間内にAレジスタ定義命令がなく、Aレジス
タがブロックの出口で生きていれば、δ(A)=β十ε とし、β区間内にAレジスタ定義命令があれば、最初の
A定義命令まで、なければブロックの最後までの区間内
にAレジスタ参照命令がないとき、δ(A)=0 とする。
まず、L以降のR2レジスタを、同値関係の付いたレジ
スタR1に置き換えることにより、Lの削除を行う。以
下の条件をすへて満たした場合、δ(R2)区間内のR
2レジスタ参照命令のレジスタをR1に変更して、Lを
削除する。
(1)Lで定義されたR2レジスタの寿命はブロック内
で終わる。
[δ(R2)≦β] (2)Lで定義されたR2レジスタが生きている間、R
+ レジスタの定義命令がない。
[δ(R2)  R,レジスタ定義命令]R2レジスタ
→R1レジスタ置換が不可能たった場合、Lの前後の同
値関係の付いたレジスタR1を、レジスタR2に置き換
えることにより、Lの削除を行う。
以下の条件をすべて満たした場合、γ(Ro)+6(R
8)区間内のR1レジスタ定義/参照命令のレジスタを
R2に変更して、Lを削除する。
(1) Sで同値関係を設定したR1レジスタの寿命は
、ブロック内で始まり、ブロック内で終わる。
[γ (R1)≦α  &  δ (R,)≦β](2
)Sで同値関係を設定したR、レジスタが生きている間
でかつ、して定義したR2レジスタが生きている間以外
で、R2レジスタの定義/参照命令がない。
[γ(R1)十δ(R,)−δ(R2)R2レジスタ定
義/参照命令コ R1レジスタ→R2レジスタ置換も不可能たった場合、
レジスタの再割付けは行わない。
ブロックテーブルをブロックテーブル起点ポインタから
アドレス順チェーンにしたがってたどり、全ブロックに
関して同値関係解析手段4とレジスタ再割付は手段5と
によって最適化を行ったならば、命令出力手段6によっ
て、命令を格納してあった命令格納媒体10にレジスタ
再割付は済命令の並びを出力する。
このように、線形に制御移行する最大の単位である命令
ブロックに対して、含まれる命令のレジスタに関する依
存関係、及びメモリ番レジスタ間の同値関係状態を調査
して、レジスタの再割付けを行い不要なロード命令を削
除することにより、オブジェクトサイズを縮小すること
ができ、実行速度も向上できる。
また、機械語命令に対して行うことにより、コンパイラ
ごとにコンパイラ特有のレジスタ割付は処理を用意する
必要がなくなり、さらに、コンパイラが出力したオブジ
ェクトに対しても適用可能である。
〔発明の効果〕
以上説明したように、本発明は、線形に制御移行する最
大の単位である命令ブロックに対して、含まれる命令の
レジスタに関する依存関係及びメモリ・レジスタ間の同
値関係状態を調査して、レジスタの再割付けを行い不要
なロード命令を削除することにより、オブジェクトサイ
ズを縮小することができ、実行速度も向上できるという
効果を有する。
また、機械語命令に対して行うことにより、コンパイラ
ごとにフンバイラ特有のレジスタ割付は処理を用意する
必要がなくなるという効果を有する。
【図面の簡単な説明】
第1図は本発明の一実施例のブロック図、第2図は第1
図に示す命令ブロック分割手段の処理の流れを示す流れ
図、第3図は第1図に示す同値関係解析手段の処理の流
れを示す流れ図、第4図は第1図に示すブロックテーブ
ル群の詳細を示す図、第5図は第1図に示す同値関係表
の詳細を示す図、第6図は第1図に示すレジスタ再割付
は手段の処理中におけるブロック内の命令の関連イメー
ジを示す図である。 1・・・・・・命令入力手段、2・・・・・・命令ブロ
ック分割手段、3・・・・・・ブロック間レジスタフロ
ー解析手段、4・・・・・・同値関係解析手段、5・・
・・・・レジスタ再割付は手段、6・・・・・・命令出
力手段、7・・・由命令展開メモ1ハ8・・・・・・ブ
ロックテーブル群、9・・・・・・同値関係表、10・
・・・・・命令格納媒体。 代理人 弁理士  内 原  晋 第 図 第 図

Claims (1)

  1. 【特許請求の範囲】 1、メモリとレジスタとの間のロード/ストア命令をも
    ち、間接分岐命令をもたないアーキテクチャ上のレジス
    タ再割付け方式において、 (A)命令を格納した媒体から命令の並びを入力してメ
    モリ上に展開する命令入力手段、(B)入力した前記命
    令を解析して、分岐命令の直後と分岐先ラベル位置で命
    令の並びを分割して命令ブロックを作成し、同時に分割
    した前記命令ブロック間の制御の流れを求める命令ブロ
    ック分割手段、 (C)前記分割した命令ブロック間のレジスタの定義・
    参照の依存関係を調査し、前記命令ブロックの入口/出
    口で生きているレジスタを求めるブロック間レジスタフ
    ロー解析手段、 (D)前記分割した命令ブロック内の命令について、命
    令実行中のある時点で前記メモリの内容と前記レジスタ
    の内容とが同じ値の関係を示す同値関係の状態を解析す
    る同値関係解析手段、 (E)前記同値関係の付いた前記メモリからの不要なロ
    ード命令があれば、矛盾がないように前記レジスタの再
    割付けを行って不要なロード命令を削除するレジスタ再
    割付け手段、 (F)分割したすべての前記命令ブロックに関して同値
    関係解析及びレジスタ再割付けを行った後、命令を格納
    してあった前記媒体にレジスタ再割付け済命令の並びを
    出力する命令出力手段、 を有することを特徴とするレジスタ再割付け方式。 2、メモリとレジスタとの間のロード/ストア命令をも
    ち、間接分岐命令をもたないアーキテクチャ上のレジス
    タ再割付け方式において、 (A)命令を格納した媒体から命令の並びを入力してメ
    モリ上に展開するステップ、 (B)入力した前記命令を解析して、分岐命令の直後と
    分岐先ラベル位置で命令の並びを分割して命令ブロック
    を作成し、同時に分割した前記命令ブロック間の制御の
    流れを求めるステップ、 (C)前記分割した命令ブロック間のレジスタの定義・
    参照の依存関係を調査し、前記命令ブロックの入口/出
    口で生きているレジスタを求めるステップ、 (D)前記分割した命令ブロック内の命令について、命
    令実行中のある時点で前記メモリの内容と前記レジスタ
    の内容とが同じ値の関係を示す同値関係の状態を解析す
    るステップ、 (E)前記同値関係の付いた前記メモリからの不要なロ
    ード命令があれば、矛盾がないように前記レジスタの再
    割付けを行って不要なロード命令を削除するステップ、 (F)分割したすべての前記命令ブロックに関して同値
    関係解析及びレジスタ再割付けを行った後、命令を格納
    してあった前記媒体にレジスタ再割付け済命令の並びを
    出力するステップ、 を実行することを特徴とするレジスタ再割付け方式。
JP26573790A 1990-10-03 1990-10-03 レジスタ再割付け方式 Pending JPH04141737A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP26573790A JPH04141737A (ja) 1990-10-03 1990-10-03 レジスタ再割付け方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP26573790A JPH04141737A (ja) 1990-10-03 1990-10-03 レジスタ再割付け方式

Publications (1)

Publication Number Publication Date
JPH04141737A true JPH04141737A (ja) 1992-05-15

Family

ID=17421295

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26573790A Pending JPH04141737A (ja) 1990-10-03 1990-10-03 レジスタ再割付け方式

Country Status (1)

Country Link
JP (1) JPH04141737A (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6325374A (ja) * 1986-02-11 1988-02-02 Nippon Denso Co Ltd 内燃機関用点火装置
JPS6429936A (en) * 1987-07-27 1989-01-31 Mitsubishi Electric Corp Register re-mapping system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6325374A (ja) * 1986-02-11 1988-02-02 Nippon Denso Co Ltd 内燃機関用点火装置
JPS6429936A (en) * 1987-07-27 1989-01-31 Mitsubishi Electric Corp Register re-mapping system

Similar Documents

Publication Publication Date Title
JP3417984B2 (ja) キャッシュ競合削減コンパイル方法
JP3299611B2 (ja) 資源割付装置
JPS6149242A (ja) コード最適化方法
US7386843B2 (en) Method and system for register allocation
EP0795821B1 (en) Optimization method using global analysis to remove redundant transfer instructions
US20060242633A1 (en) Compiling computer programs to exploit parallelism without exceeding available processing resources
CN101246433A (zh) 产生优化程序的装置和方法、程序执行装置及记录介质
US20050138613A1 (en) Method and system for code modification based on cache structure
JPH0522936B2 (ja)
JP3318051B2 (ja) 翻訳処理方法
EP3997593B1 (en) A streaming compiler for automatic adjoint differentiation
JP2002527816A (ja) プログラム最適化装置および方法
JP2019185486A (ja) コード変換装置、コード変換方法、及びコード変換プログラム
JP2008500654A (ja) 仕切りのあるレジスタバンクのためのバンク付与
JPH04141737A (ja) レジスタ再割付け方式
US10475151B2 (en) Graphics engine resource management and allocation system
JP3638171B2 (ja) 資源割付装置
JPH0421031A (ja) レジスタ再割付け方式
JPH03127229A (ja) レジスタ再割付け装置
CN115774557B (zh) 特征工程编译优化方法及装置
CN119883369A (zh) 一种生命周期冲突时寄存器合并方法及装置
KR100912114B1 (ko) 디지털 신호처리 프로세서에서 효과적인 데이터 전송을위한 메모리 운용 방법
JP2522372B2 (ja) デ―タ駆動形計算機
JPH04252336A (ja) プログラム最適化処理装置
JPH0417031A (ja) 定数値伝播最適化方式