JPH05189245A - 資源割付け装置 - Google Patents
資源割付け装置Info
- Publication number
- JPH05189245A JPH05189245A JP570392A JP570392A JPH05189245A JP H05189245 A JPH05189245 A JP H05189245A JP 570392 A JP570392 A JP 570392A JP 570392 A JP570392 A JP 570392A JP H05189245 A JPH05189245 A JP H05189245A
- Authority
- JP
- Japan
- Prior art keywords
- allocation
- result
- reallocation
- target
- register
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 ワークレジスタを確保しない資源割付け装
置、ワークレジスタを確保した資源割付け装置のいずれ
と比較しても有利な資源割付け装置を提供する。 【構成】 割付け処理部1が割付け結果を割付け結果保
持部2に格納し、次にオペレータの再割付け実行の選択
により、再割付け処理部3が、割付け処理部1でメモリ
に割付けられ、かつ、レジスタの退避・復元を発生する
割付け対象に対して、新たな割付け対象の生成、割付け
プログラムの変更、新たに生成した割付け対象を考慮し
た再割付けを行い、さらに割付け結果を再割付け結果保
持部4に格納し、割付け結果選択部5が、割付け結果保
持部2と再割付け結果保持部4に保持されている内容を
比較して、プログラムの演算処理が有利な方を最終的な
割付け結果として選択する。
置、ワークレジスタを確保した資源割付け装置のいずれ
と比較しても有利な資源割付け装置を提供する。 【構成】 割付け処理部1が割付け結果を割付け結果保
持部2に格納し、次にオペレータの再割付け実行の選択
により、再割付け処理部3が、割付け処理部1でメモリ
に割付けられ、かつ、レジスタの退避・復元を発生する
割付け対象に対して、新たな割付け対象の生成、割付け
プログラムの変更、新たに生成した割付け対象を考慮し
た再割付けを行い、さらに割付け結果を再割付け結果保
持部4に格納し、割付け結果選択部5が、割付け結果保
持部2と再割付け結果保持部4に保持されている内容を
比較して、プログラムの演算処理が有利な方を最終的な
割付け結果として選択する。
Description
【0001】
【産業上の利用分野】本発明はコンパイラにおける資源
割付け装置に関するものである。
割付け装置に関するものである。
【0002】
【従来の技術】コンパイラが翻訳するプログラム中で生
きている割付け対象の個数が、割付け可能なレジスタの
数より多い期間を制約期間といい、制約期間中に生きて
いる割付け対象を制約な割付け対象という。なお、割付
け対象とは、変数と変数の生存期間の組(X、L)のこ
とである。ここで、生存期間とは、コンパイラが翻訳す
るプログラムにおいて、ある変数への値の代入から、そ
の代入した値を使用する、変数の最後の演算場所までを
いい、またこの期間、変数は生きているという。また、
コンパイラが翻訳するプログラムによっては、一つの変
数に対し代入する値が複数個ありえるため、一つの変数
に複数の生存期間がありえる。この生存期間は、コンパ
イラにおけるデータフロー解析技術によって得られる。
さらに、割付け対象(X、L)の生存期間とは、生存期
間Lのことであり、この期間、割付け対象は生きている
という。また、割付け対象(X、L)の使用および使用
箇所とは、コンパイラが翻訳するプログラムにおいて、
変数Xが使用および使用されている場所のことである。
また、割付け対象(X、L)で定義した代入文とは、変
数Xで定義した代入文のことである。
きている割付け対象の個数が、割付け可能なレジスタの
数より多い期間を制約期間といい、制約期間中に生きて
いる割付け対象を制約な割付け対象という。なお、割付
け対象とは、変数と変数の生存期間の組(X、L)のこ
とである。ここで、生存期間とは、コンパイラが翻訳す
るプログラムにおいて、ある変数への値の代入から、そ
の代入した値を使用する、変数の最後の演算場所までを
いい、またこの期間、変数は生きているという。また、
コンパイラが翻訳するプログラムによっては、一つの変
数に対し代入する値が複数個ありえるため、一つの変数
に複数の生存期間がありえる。この生存期間は、コンパ
イラにおけるデータフロー解析技術によって得られる。
さらに、割付け対象(X、L)の生存期間とは、生存期
間Lのことであり、この期間、割付け対象は生きている
という。また、割付け対象(X、L)の使用および使用
箇所とは、コンパイラが翻訳するプログラムにおいて、
変数Xが使用および使用されている場所のことである。
また、割付け対象(X、L)で定義した代入文とは、変
数Xで定義した代入文のことである。
【0003】ところで、与えられたコンパイラが翻訳す
るプログラムの割付け対象をレジスタまたは、メモリに
割付ける方法には、以下の2種がある。第1の方法は、
個々の演算を行うために予め確保したレジスタ(ワーク
レジスタという)を特に設けないで、割付け可能なレジ
スタ数を多くして割付けるものである。この方法では、
制約な割付け対象のうち、メモリに割付けられたものを
使用している演算箇所では、その演算に使用可能なレジ
スタが余っていなければ、既に割付けられているレジス
タの退避・復元のコードを演算の前後に挿入する操作が
なされる。
るプログラムの割付け対象をレジスタまたは、メモリに
割付ける方法には、以下の2種がある。第1の方法は、
個々の演算を行うために予め確保したレジスタ(ワーク
レジスタという)を特に設けないで、割付け可能なレジ
スタ数を多くして割付けるものである。この方法では、
制約な割付け対象のうち、メモリに割付けられたものを
使用している演算箇所では、その演算に使用可能なレジ
スタが余っていなければ、既に割付けられているレジス
タの退避・復元のコードを演算の前後に挿入する操作が
なされる。
【0004】第2の方法は、ワークレジスタを何個か確
保して割付けるものである。この方法では、レジスタ数
が少ない場合には、割付け可能なレジスタ数が少なくな
るため、メモリに割付けられる割付け対象の数が多くな
り、その結果、メモリに割付けられた割付け対象を使用
している演算で必要となるメモリとレジスタ間での値の
出し入れも多くなされる。
保して割付けるものである。この方法では、レジスタ数
が少ない場合には、割付け可能なレジスタ数が少なくな
るため、メモリに割付けられる割付け対象の数が多くな
り、その結果、メモリに割付けられた割付け対象を使用
している演算で必要となるメモリとレジスタ間での値の
出し入れも多くなされる。
【0005】
【発明が解決しようとする課題】しかしながら、上記第
1の方法では、コンパイラが翻訳するプログラムによっ
ては、レジスタの退避・復元が多く発生し、このためコ
ンパイラが生成する目的コードのサイズが増大し、ま
た、実行速度も遅くなることがある。次に、上記第2の
方法では、プログラムによっては、メモリとレジスタ間
での値の出入れが多くなるため、第1の方法と同じくコ
ンパイラが作成するコードのサイズが増大し、また実行
速度が遅くなることがある。
1の方法では、コンパイラが翻訳するプログラムによっ
ては、レジスタの退避・復元が多く発生し、このためコ
ンパイラが生成する目的コードのサイズが増大し、ま
た、実行速度も遅くなることがある。次に、上記第2の
方法では、プログラムによっては、メモリとレジスタ間
での値の出入れが多くなるため、第1の方法と同じくコ
ンパイラが作成するコードのサイズが増大し、また実行
速度が遅くなることがある。
【0006】このため、上記、いずれかの方式のみで
は、必ずしも、良好なレジスタ割付け結果が得られな
い。本発明は、かかる課題に鑑み、ワークレジスタを確
保しない方法に、ワークレジスタを確保した方法と同様
な効果を与える機能を追加することにより、より効率の
良いレジスタの割付けが可能な資源割付け装置を提供す
ることを目的としてなされたものである。
は、必ずしも、良好なレジスタ割付け結果が得られな
い。本発明は、かかる課題に鑑み、ワークレジスタを確
保しない方法に、ワークレジスタを確保した方法と同様
な効果を与える機能を追加することにより、より効率の
良いレジスタの割付けが可能な資源割付け装置を提供す
ることを目的としてなされたものである。
【0007】
【課題を解決するための手段】上記目的を達成するた
め、請求項1の発明においては、コンパイラ等でレジス
タを変数に割付ける際に、レジスタの割付け対象にレジ
スタやメモリを割付ける割付け処理部と、前記割付け処
理部の割付け結果を保持する割付け結果保持部とを有す
る資源割付け装置において、前記割付け処理部において
メモリに割付けられかつそのプログラム中の使用箇所
で、レジスタの退避・復元が必要な割付け対象に対し
て、レジスタに必ず割付けられる新たな割付け対象を生
成し、前記のレジスタの退避・復元が必要な割付け対象
の使用箇所の直前に、新たに生成した割付け対象を前記
のレジスタの退避・復元が必要な割付け対象で定義した
代入文を挿入し、前記のレジスタの退避・復元が必要な
割付け対象の使用を前記新たに生成した割付け対象の使
用で置き換え、前記新たに生成した割付け対象を、前記
割付け処理部で扱った割付け対象に付け加えて再割付け
を行う、前記割付け処理部に引き続いて起動される再割
付け処理部と、前記再割付け処理部の割付け結果を保持
する再割付け結果保持部と前記再割付け処理部から起動
され、前記割付け結果保持部と前記再割付け結果保持部
に保持されている内容を比較して有利な方を最終的な割
付け結果として前記割付け結果保持部に設定する割付け
結果選択部とを備えたことを特徴とする資源割付け装置
としている。
め、請求項1の発明においては、コンパイラ等でレジス
タを変数に割付ける際に、レジスタの割付け対象にレジ
スタやメモリを割付ける割付け処理部と、前記割付け処
理部の割付け結果を保持する割付け結果保持部とを有す
る資源割付け装置において、前記割付け処理部において
メモリに割付けられかつそのプログラム中の使用箇所
で、レジスタの退避・復元が必要な割付け対象に対し
て、レジスタに必ず割付けられる新たな割付け対象を生
成し、前記のレジスタの退避・復元が必要な割付け対象
の使用箇所の直前に、新たに生成した割付け対象を前記
のレジスタの退避・復元が必要な割付け対象で定義した
代入文を挿入し、前記のレジスタの退避・復元が必要な
割付け対象の使用を前記新たに生成した割付け対象の使
用で置き換え、前記新たに生成した割付け対象を、前記
割付け処理部で扱った割付け対象に付け加えて再割付け
を行う、前記割付け処理部に引き続いて起動される再割
付け処理部と、前記再割付け処理部の割付け結果を保持
する再割付け結果保持部と前記再割付け処理部から起動
され、前記割付け結果保持部と前記再割付け結果保持部
に保持されている内容を比較して有利な方を最終的な割
付け結果として前記割付け結果保持部に設定する割付け
結果選択部とを備えたことを特徴とする資源割付け装置
としている。
【0008】請求項2の発明においては、請求項1の発
明の資源割付け装置において上記再割付け処理部、再割
付け結果保持部、割付け結果選択部による再割付け処理
の有無をオペレータが選択可能とする再割付け実行選択
部を有することを特徴としている。
明の資源割付け装置において上記再割付け処理部、再割
付け結果保持部、割付け結果選択部による再割付け処理
の有無をオペレータが選択可能とする再割付け実行選択
部を有することを特徴としている。
【0009】
【作用】上記構成により請求項1の発明においては、先
ず、割付け処理部が割付け結果を割付け結果保持部に格
納し、再割付け処理部が、割付け処理部においてメモリ
に割付けられ、かつ、そのプログラム中における使用箇
所でレジスタの退避・復元が必要な割付け対象に対し
て、新たな割付け対象の生成、目的コードの変更、新た
に生成した割付け対象を考慮した再割付けを行い、割付
け結果を再割付け結果保持部へ格納し、割付け結果選択
部が、割付け結果保持部と再割付け結果保持部に保持さ
れている内容を比較して、有利な方を最終的な割付け結
果とする。
ず、割付け処理部が割付け結果を割付け結果保持部に格
納し、再割付け処理部が、割付け処理部においてメモリ
に割付けられ、かつ、そのプログラム中における使用箇
所でレジスタの退避・復元が必要な割付け対象に対し
て、新たな割付け対象の生成、目的コードの変更、新た
に生成した割付け対象を考慮した再割付けを行い、割付
け結果を再割付け結果保持部へ格納し、割付け結果選択
部が、割付け結果保持部と再割付け結果保持部に保持さ
れている内容を比較して、有利な方を最終的な割付け結
果とする。
【0010】請求項2の発明においては、請求項1の発
明に係わる資源再割付け処理の採否がオペレータの選択
にもとづきなされる。
明に係わる資源再割付け処理の採否がオペレータの選択
にもとづきなされる。
【0011】
【実施例】以下、請求項1の発明を主対象に、実施例に
基づいて説明する。図1は本発明に係わる資源割付け装
置の一実施例の構成図である。本図において、1は、割
付け対象の生存期間や参照回数等の情報を用いてメモリ
やレジスタの資源への割付けを行う割付け処理部であ
る。
基づいて説明する。図1は本発明に係わる資源割付け装
置の一実施例の構成図である。本図において、1は、割
付け対象の生存期間や参照回数等の情報を用いてメモリ
やレジスタの資源への割付けを行う割付け処理部であ
る。
【0012】2は、割付け処理部1の割付け結果を保持
する割付け結果保持部である。そして、これらは従来技
術に係わる資源割付け装置と異ならない。次に、本発明
の要旨に直接関係する構成について説明する。3は、割
付け処理部1においてメモリに割付けられ、かつ、その
プログラム中の使用箇所でレジスタの退避・復元が必要
な割付け対象に対して、予めレジスタに割付けた新たな
割付け対象を生成し、前記のレジスタの退避・復元が必
要な割付け対象の使用箇所の直前に、新たに生成した割
付け対象を前記のレジスタの退避・復元が必要な割付け
対象で定義した代入文を挿入し、前記のレジスタの退避
・復元が必要な割付け対象の使用を新たに生成した割付
け対象の使用で置き換え、新たに生成した割付け対象
を、割付け処理部1で扱った割付け対象に付け加えて再
割付けを行う再割付け処理部である。
する割付け結果保持部である。そして、これらは従来技
術に係わる資源割付け装置と異ならない。次に、本発明
の要旨に直接関係する構成について説明する。3は、割
付け処理部1においてメモリに割付けられ、かつ、その
プログラム中の使用箇所でレジスタの退避・復元が必要
な割付け対象に対して、予めレジスタに割付けた新たな
割付け対象を生成し、前記のレジスタの退避・復元が必
要な割付け対象の使用箇所の直前に、新たに生成した割
付け対象を前記のレジスタの退避・復元が必要な割付け
対象で定義した代入文を挿入し、前記のレジスタの退避
・復元が必要な割付け対象の使用を新たに生成した割付
け対象の使用で置き換え、新たに生成した割付け対象
を、割付け処理部1で扱った割付け対象に付け加えて再
割付けを行う再割付け処理部である。
【0013】4は、再割付け処理部3の割付け結果を保
持する再割付け結果保持部である。5は、割付け結果保
持部2と再割付け結果保持部4の保持している結果をも
とにして、各割付け結果毎にコンパイラが生成する目的
コードの総コスト(サイクル数やサイズ数等)を算出
し、コストの小さい方を選択の上、新たに割付け結果保
持部2に設定する割付け結果選択部である。
持する再割付け結果保持部である。5は、割付け結果保
持部2と再割付け結果保持部4の保持している結果をも
とにして、各割付け結果毎にコンパイラが生成する目的
コードの総コスト(サイクル数やサイズ数等)を算出
し、コストの小さい方を選択の上、新たに割付け結果保
持部2に設定する割付け結果選択部である。
【0014】6は、オペレータの再割付け処理を行うか
否かの指示により、再割付け処理部3等を作動させるか
否かを選択する再割付け実行選択部であり、請求項2の
発明に係わるものである。次に、以上のように構成され
た本実施例のレジスタ割付け装置の動作を以下に説明す
る。
否かの指示により、再割付け処理部3等を作動させるか
否かを選択する再割付け実行選択部であり、請求項2の
発明に係わるものである。次に、以上のように構成され
た本実施例のレジスタ割付け装置の動作を以下に説明す
る。
【0015】(1)割付け処理部1は、割付け対象に対
して割付け処理を行い、結果を割付け結果保持部2に格
納する。 (2)ユーザの指示のもと、再割付け実行選択部6は再
割付けを行うときは再割付け処理部3を起動し、行わな
いときは割付け結果保持部2を割付け結果として資源割
付けの処理を終了する。
して割付け処理を行い、結果を割付け結果保持部2に格
納する。 (2)ユーザの指示のもと、再割付け実行選択部6は再
割付けを行うときは再割付け処理部3を起動し、行わな
いときは割付け結果保持部2を割付け結果として資源割
付けの処理を終了する。
【0016】(3)再割付け処理部3は、新たに生成し
た割付け対象を考慮にいれて再割付けを行い、結果を再
割付け結果保持部4に格納し、割付け結果選択部5を起
動する。 (4)割付け結果選択部5は、割付け結果保持部2と再
割付け結果保持部4とから得られるコストを比較し、再
割付け結果の方がコストが小さいときには、割付け結果
保持部2の内容を再割付け結果保持部4の内容に変更
し、割付け結果保持部2を割付け結果として資源割付け
の処理を終了する。
た割付け対象を考慮にいれて再割付けを行い、結果を再
割付け結果保持部4に格納し、割付け結果選択部5を起
動する。 (4)割付け結果選択部5は、割付け結果保持部2と再
割付け結果保持部4とから得られるコストを比較し、再
割付け結果の方がコストが小さいときには、割付け結果
保持部2の内容を再割付け結果保持部4の内容に変更
し、割付け結果保持部2を割付け結果として資源割付け
の処理を終了する。
【0017】ここで、この場合のコストの計算法につい
て説明する。一般に知られているように、コンパイラ
は、翻訳するプログラムの式を、オペレータとそのオペ
レータに関係する複数のオペランドの組である四つ組
や、三つ組等といった中間的な式に変換し、この中間的
な式を、複数個の機械命令(またはアセンブラソース命
令)に変換する。コンパイラの内部では、中間的な式に
対して、そのオペレーションの種類と、オペランドの種
類(メモリ、レジスタまたは、即値等)であるかによ
り、どのような機械命令に変換するかを示す情報をテー
ブルとして(または、処理関数として)持っている。よ
って、オペレーションとオペランドの種類毎に、どのよ
うな機械命令に変換するかが解るので、必要とする機械
命令のサイズ数やクロック数も解り、このサイズ数やク
ロック数をオペレーションとオペランドの種類毎に、コ
ストの情報として機械命令とともに、予めテーブルに格
納して置くことにより、中間的な式に対するコストを求
めることが可能となり、結果的に、割付け結果毎のコス
トを計算することが可能となる。
て説明する。一般に知られているように、コンパイラ
は、翻訳するプログラムの式を、オペレータとそのオペ
レータに関係する複数のオペランドの組である四つ組
や、三つ組等といった中間的な式に変換し、この中間的
な式を、複数個の機械命令(またはアセンブラソース命
令)に変換する。コンパイラの内部では、中間的な式に
対して、そのオペレーションの種類と、オペランドの種
類(メモリ、レジスタまたは、即値等)であるかによ
り、どのような機械命令に変換するかを示す情報をテー
ブルとして(または、処理関数として)持っている。よ
って、オペレーションとオペランドの種類毎に、どのよ
うな機械命令に変換するかが解るので、必要とする機械
命令のサイズ数やクロック数も解り、このサイズ数やク
ロック数をオペレーションとオペランドの種類毎に、コ
ストの情報として機械命令とともに、予めテーブルに格
納して置くことにより、中間的な式に対するコストを求
めることが可能となり、結果的に、割付け結果毎のコス
トを計算することが可能となる。
【0018】なお、以上はあくまでもコスト計算が可能
であることを示すものであり、他のより最良な中間的な
式の形式や、コスト情報の格納場所等に関する方法があ
ることは勿論であるし、それに関連したコスト計算の具
体的な方法については本発明の要旨そのものでないの
で、その説明は省略する。上述のように本実施例におけ
る資源割付け装置においては、再割付け処理で新たに生
成した割付け対象が、ワークレジスタの役目をするた
め、最初の割付け処理でレジスタの退避・復元が発生し
たプログラム部分に、必要なワークレジスタを確保した
のと同様な作用をもたらす。従って、本資源割付け装置
は、最初のワークレジスタを使用しない割付け処理の割
付け結果と、部分的にワークレジスタを確保したのと同
様な作用をする再割付け処理の割付け結果とを比較し
て、良好な方を選択できるので、より有効な資源割付け
が可能となる。
であることを示すものであり、他のより最良な中間的な
式の形式や、コスト情報の格納場所等に関する方法があ
ることは勿論であるし、それに関連したコスト計算の具
体的な方法については本発明の要旨そのものでないの
で、その説明は省略する。上述のように本実施例におけ
る資源割付け装置においては、再割付け処理で新たに生
成した割付け対象が、ワークレジスタの役目をするた
め、最初の割付け処理でレジスタの退避・復元が発生し
たプログラム部分に、必要なワークレジスタを確保した
のと同様な作用をもたらす。従って、本資源割付け装置
は、最初のワークレジスタを使用しない割付け処理の割
付け結果と、部分的にワークレジスタを確保したのと同
様な作用をする再割付け処理の割付け結果とを比較し
て、良好な方を選択できるので、より有効な資源割付け
が可能となる。
【0019】次に請求項2の発明について、その目的と
効果を主に説明する。プログラムの開発段階では、プロ
グラムの開発者は、コンパイラを使用して、開発プログ
ラムを目的コードであるアセンブラソースコードや機械
命令に変換(翻訳)し、生成した目的コードを実行し
て、誤りがあれば、開発プログラムの修正を行い、再度
コンパイラにより目的コードに翻訳するという作業を誤
りがなくなるまで繰り返す。この誤りは、プログラムの
開発段階では、頻繁に起きるため、生成する目的コード
の効率そのものよりもコンパイル時間の短縮が重要とな
ることが多い。その場合、請求項1の発明に係わる再割
付け装置を有する計算機においては、そのままでは再割
付け結果の保持や選択等がなされるため、コンパイル時
間が長くなり、好ましくないという事態もありえる。
効果を主に説明する。プログラムの開発段階では、プロ
グラムの開発者は、コンパイラを使用して、開発プログ
ラムを目的コードであるアセンブラソースコードや機械
命令に変換(翻訳)し、生成した目的コードを実行し
て、誤りがあれば、開発プログラムの修正を行い、再度
コンパイラにより目的コードに翻訳するという作業を誤
りがなくなるまで繰り返す。この誤りは、プログラムの
開発段階では、頻繁に起きるため、生成する目的コード
の効率そのものよりもコンパイル時間の短縮が重要とな
ることが多い。その場合、請求項1の発明に係わる再割
付け装置を有する計算機においては、そのままでは再割
付け結果の保持や選択等がなされるため、コンパイル時
間が長くなり、好ましくないという事態もありえる。
【0020】そこで、請求項2の発明に係わる資源割付
け装置においては、再割付け実行選択部を設けることに
より、ユーザが生成コードの効率よりもコンパイル時間
を重視するときには、その選択により再割付け処理を行
わない構成としている。以上、本発明を実施例にもとづ
き説明してきたが、本発明は何も上記実施例に限定され
ないのは勿論である。
け装置においては、再割付け実行選択部を設けることに
より、ユーザが生成コードの効率よりもコンパイル時間
を重視するときには、その選択により再割付け処理を行
わない構成としている。以上、本発明を実施例にもとづ
き説明してきたが、本発明は何も上記実施例に限定され
ないのは勿論である。
【0021】すなわち、コンパイラの方式(通訳、翻
訳)、単一計算又は平行計算等の計算機の計算の方式、
メモリの種類等、割付け結果保持部と再割付け結果保持
部との有利な評価の選択に際しての評価対象の如何、評
価手法等で考慮すべき具体的内容の如何等を問わないの
は勿論である。
訳)、単一計算又は平行計算等の計算機の計算の方式、
メモリの種類等、割付け結果保持部と再割付け結果保持
部との有利な評価の選択に際しての評価対象の如何、評
価手法等で考慮すべき具体的内容の如何等を問わないの
は勿論である。
【0022】
【発明の効果】以上の構成により、請求項1の発明に係
わる資源割付け装置においては、ワークレジスタとして
使用するレジスタを確保せずに、割付け可能なレジスタ
数を多くして資源を割付けた割付け結果と、レジスタの
退避・復元が発生するプログラム部分に対して、ワーク
レジスタを確保してレジスタの退避・復元の発生を抑え
た割付け結果とを比較して、有利な方を最終的な割付け
結果とするので、いずれか一方の割付け方法しか取らな
い資源割付け装置に比較した場合に、コンパイラが生成
する目的コードのサイズ数やクロック数をより一層少な
くする効率のよい資源割付けが可能となる。
わる資源割付け装置においては、ワークレジスタとして
使用するレジスタを確保せずに、割付け可能なレジスタ
数を多くして資源を割付けた割付け結果と、レジスタの
退避・復元が発生するプログラム部分に対して、ワーク
レジスタを確保してレジスタの退避・復元の発生を抑え
た割付け結果とを比較して、有利な方を最終的な割付け
結果とするので、いずれか一方の割付け方法しか取らな
い資源割付け装置に比較した場合に、コンパイラが生成
する目的コードのサイズ数やクロック数をより一層少な
くする効率のよい資源割付けが可能となる。
【0023】次に請求項2の発明に係わる資源割付け装
置においては、プログラム開発時等、生成コードの効率
よりもコンパイル時間の短縮が重要な場合には、プログ
ラムの開発者の選択により請求項1の発明に係わる資源
の再割付けの実行がなされない。このため、プログラム
開発において、コンパイル時間が長くならず、請求項1
の発明に係わる資源割付け装置の実用性がより一層向上
する。
置においては、プログラム開発時等、生成コードの効率
よりもコンパイル時間の短縮が重要な場合には、プログ
ラムの開発者の選択により請求項1の発明に係わる資源
の再割付けの実行がなされない。このため、プログラム
開発において、コンパイル時間が長くならず、請求項1
の発明に係わる資源割付け装置の実用性がより一層向上
する。
【図1】本発明発明に係わる資源割付け装置の一実施例
の構成図である。
の構成図である。
1 割付け処理部 2 割付け結果保持部 3 再割付け処理部 4 再割付け結果保持部 5 割付け結果選択部 6 再割付け実行選択部
Claims (2)
- 【請求項1】 コンパイラ等でレジスタを変数に割付け
る際に、レジスタの割付け対象にレジスタやメモリを割
付ける割付け処理部と、前記割付け処理部の割付け結果
を保持する割付け結果保持部とを有する資源割付け装置
において、 前記割付け処理部においてメモリに割付けられかつその
プログラム中の使用箇所で、レジスタの退避・復元が必
要な割付け対象に対して、レジスタに必ず割付けられる
新たな割付け対象を生成し、前記のレジスタの退避・復
元が必要な割付け対象の使用箇所の直前に、新たに生成
した割付け対象を前記のレジスタの退避・復元が必要な
割付け対象で定義した代入文を挿入し、前記のレジスタ
の退避・復元が必要な割付け対象の使用を前記新たに生
成した割付け対象の使用で置き換え、前記新たに生成し
た割付け対象を、前記割付け処理部で扱った割付け対象
に付け加えて再割付けを行う、前記割付け処理部に引き
続いて起動される再割付け処理部と前記再割付け処理部
の割付け結果を保持する再割付け結果保持部と、 前記再割付け処理部から起動され、前記割付け結果保持
部と前記再割付け結果保持部に保持されている内容を比
較して有利な方を最終的な割付け結果として前記割付け
結果保持部に設定する割付け結果選択部とを備えたこと
を特徴とする資源割付け装置。 - 【請求項2】 上記再割付け処理部、再割付け結果保持
部、割付け結果選択部による再割付け処理の有無をオペ
レータが選択可能とする再割付け実行選択部を有するこ
とを特徴とする請求項1記載の資源割付け装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP570392A JPH05189245A (ja) | 1992-01-16 | 1992-01-16 | 資源割付け装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP570392A JPH05189245A (ja) | 1992-01-16 | 1992-01-16 | 資源割付け装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH05189245A true JPH05189245A (ja) | 1993-07-30 |
Family
ID=11618476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP570392A Pending JPH05189245A (ja) | 1992-01-16 | 1992-01-16 | 資源割付け装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH05189245A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE42535E1 (en) | 1997-09-30 | 2011-07-12 | Mitsumi Electric Co, Ltd | Optical disc drive and method of examining the optical disc drive |
-
1992
- 1992-01-16 JP JP570392A patent/JPH05189245A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE42535E1 (en) | 1997-09-30 | 2011-07-12 | Mitsumi Electric Co, Ltd | Optical disc drive and method of examining the optical disc drive |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101422861B1 (ko) | 컴퓨팅 장치 및 컴퓨팅 장치 상에서 가상 머신을 구현하기 위한 컴퓨터 실행 가능 명령들을 저장한 컴퓨터 판독 가능 매체 | |
Wall | Global register allocation at link time | |
US6408433B1 (en) | Method and apparatus for building calling convention prolog and epilog code using a register allocator | |
US8453132B2 (en) | System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems | |
US5890000A (en) | Cooperation of global and local register allocators for better handling of procedures | |
KR20040069257A (ko) | 다수의 하드웨어 구성들을 가지는 재구성가능한 하드웨어아키텍처의 스케줄링 방법 | |
JPH08502612A (ja) | データ処理システムおよびオペレーティング・システム | |
US20030079210A1 (en) | Integrated register allocator in a compiler | |
US7240341B2 (en) | Global constant pool to allow deletion of constant pool entries | |
US6134708A (en) | Program compilation execution system | |
US6256782B1 (en) | Compile apparatus, compile method and computer-readable medium storing compiler | |
JP3871312B2 (ja) | プログラム変換方法、これを用いたデータ処理装置及びプログラム | |
JPH05189245A (ja) | 資源割付け装置 | |
JP2000315163A (ja) | プロセッサ資源の均衡のとれた分配を実行する方法及びそのシステム | |
JPH05242051A (ja) | タスクスケジューリング方式 | |
Arandi et al. | Data-driven thread execution on heterogeneous processors | |
US6029003A (en) | Method of assigning external variables to memories when compiling source program | |
CN112602058B (zh) | 处理器存储器存取 | |
JPH06324882A (ja) | コンパイラ装置 | |
Rajan et al. | Development of an optimizing compiler for a Fujitsu fixed-point digital signal processor | |
JPH0373026A (ja) | コンパイル方式 | |
CN112639760A (zh) | 异步处理器架构 | |
JPH1131134A (ja) | コンピュータシステム及び同システムに適用するスケジューリング方法 | |
JPH02183833A (ja) | マルチプロセッサ用コンパイル方式 | |
JPH05298271A (ja) | 並列処理システム |