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
Application number
JP570392A
Other languages
English (en)
Inventor
Akira Tanaka
旭 田中
Nobuteru Tominaga
宣輝 富永
Jiyunko Irikou
旬子 入交
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 JP570392A priority Critical patent/JPH05189245A/ja
Publication of JPH05189245A publication Critical patent/JPH05189245A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 ワークレジスタを確保しない資源割付け装
置、ワークレジスタを確保した資源割付け装置のいずれ
と比較しても有利な資源割付け装置を提供する。 【構成】 割付け処理部1が割付け結果を割付け結果保
持部2に格納し、次にオペレータの再割付け実行の選択
により、再割付け処理部3が、割付け処理部1でメモリ
に割付けられ、かつ、レジスタの退避・復元を発生する
割付け対象に対して、新たな割付け対象の生成、割付け
プログラムの変更、新たに生成した割付け対象を考慮し
た再割付けを行い、さらに割付け結果を再割付け結果保
持部4に格納し、割付け結果選択部5が、割付け結果保
持部2と再割付け結果保持部4に保持されている内容を
比較して、プログラムの演算処理が有利な方を最終的な
割付け結果として選択する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンパイラにおける資源
割付け装置に関するものである。
【0002】
【従来の技術】コンパイラが翻訳するプログラム中で生
きている割付け対象の個数が、割付け可能なレジスタの
数より多い期間を制約期間といい、制約期間中に生きて
いる割付け対象を制約な割付け対象という。なお、割付
け対象とは、変数と変数の生存期間の組(X、L)のこ
とである。ここで、生存期間とは、コンパイラが翻訳す
るプログラムにおいて、ある変数への値の代入から、そ
の代入した値を使用する、変数の最後の演算場所までを
いい、またこの期間、変数は生きているという。また、
コンパイラが翻訳するプログラムによっては、一つの変
数に対し代入する値が複数個ありえるため、一つの変数
に複数の生存期間がありえる。この生存期間は、コンパ
イラにおけるデータフロー解析技術によって得られる。
さらに、割付け対象(X、L)の生存期間とは、生存期
間Lのことであり、この期間、割付け対象は生きている
という。また、割付け対象(X、L)の使用および使用
箇所とは、コンパイラが翻訳するプログラムにおいて、
変数Xが使用および使用されている場所のことである。
また、割付け対象(X、L)で定義した代入文とは、変
数Xで定義した代入文のことである。
【0003】ところで、与えられたコンパイラが翻訳す
るプログラムの割付け対象をレジスタまたは、メモリに
割付ける方法には、以下の2種がある。第1の方法は、
個々の演算を行うために予め確保したレジスタ(ワーク
レジスタという)を特に設けないで、割付け可能なレジ
スタ数を多くして割付けるものである。この方法では、
制約な割付け対象のうち、メモリに割付けられたものを
使用している演算箇所では、その演算に使用可能なレジ
スタが余っていなければ、既に割付けられているレジス
タの退避・復元のコードを演算の前後に挿入する操作が
なされる。
【0004】第2の方法は、ワークレジスタを何個か確
保して割付けるものである。この方法では、レジスタ数
が少ない場合には、割付け可能なレジスタ数が少なくな
るため、メモリに割付けられる割付け対象の数が多くな
り、その結果、メモリに割付けられた割付け対象を使用
している演算で必要となるメモリとレジスタ間での値の
出し入れも多くなされる。
【0005】
【発明が解決しようとする課題】しかしながら、上記第
1の方法では、コンパイラが翻訳するプログラムによっ
ては、レジスタの退避・復元が多く発生し、このためコ
ンパイラが生成する目的コードのサイズが増大し、ま
た、実行速度も遅くなることがある。次に、上記第2の
方法では、プログラムによっては、メモリとレジスタ間
での値の出入れが多くなるため、第1の方法と同じくコ
ンパイラが作成するコードのサイズが増大し、また実行
速度が遅くなることがある。
【0006】このため、上記、いずれかの方式のみで
は、必ずしも、良好なレジスタ割付け結果が得られな
い。本発明は、かかる課題に鑑み、ワークレジスタを確
保しない方法に、ワークレジスタを確保した方法と同様
な効果を与える機能を追加することにより、より効率の
良いレジスタの割付けが可能な資源割付け装置を提供す
ることを目的としてなされたものである。
【0007】
【課題を解決するための手段】上記目的を達成するた
め、請求項1の発明においては、コンパイラ等でレジス
タを変数に割付ける際に、レジスタの割付け対象にレジ
スタやメモリを割付ける割付け処理部と、前記割付け処
理部の割付け結果を保持する割付け結果保持部とを有す
る資源割付け装置において、前記割付け処理部において
メモリに割付けられかつそのプログラム中の使用箇所
で、レジスタの退避・復元が必要な割付け対象に対し
て、レジスタに必ず割付けられる新たな割付け対象を生
成し、前記のレジスタの退避・復元が必要な割付け対象
の使用箇所の直前に、新たに生成した割付け対象を前記
のレジスタの退避・復元が必要な割付け対象で定義した
代入文を挿入し、前記のレジスタの退避・復元が必要な
割付け対象の使用を前記新たに生成した割付け対象の使
用で置き換え、前記新たに生成した割付け対象を、前記
割付け処理部で扱った割付け対象に付け加えて再割付け
を行う、前記割付け処理部に引き続いて起動される再割
付け処理部と、前記再割付け処理部の割付け結果を保持
する再割付け結果保持部と前記再割付け処理部から起動
され、前記割付け結果保持部と前記再割付け結果保持部
に保持されている内容を比較して有利な方を最終的な割
付け結果として前記割付け結果保持部に設定する割付け
結果選択部とを備えたことを特徴とする資源割付け装置
としている。
【0008】請求項2の発明においては、請求項1の発
明の資源割付け装置において上記再割付け処理部、再割
付け結果保持部、割付け結果選択部による再割付け処理
の有無をオペレータが選択可能とする再割付け実行選択
部を有することを特徴としている。
【0009】
【作用】上記構成により請求項1の発明においては、先
ず、割付け処理部が割付け結果を割付け結果保持部に格
納し、再割付け処理部が、割付け処理部においてメモリ
に割付けられ、かつ、そのプログラム中における使用箇
所でレジスタの退避・復元が必要な割付け対象に対し
て、新たな割付け対象の生成、目的コードの変更、新た
に生成した割付け対象を考慮した再割付けを行い、割付
け結果を再割付け結果保持部へ格納し、割付け結果選択
部が、割付け結果保持部と再割付け結果保持部に保持さ
れている内容を比較して、有利な方を最終的な割付け結
果とする。
【0010】請求項2の発明においては、請求項1の発
明に係わる資源再割付け処理の採否がオペレータの選択
にもとづきなされる。
【0011】
【実施例】以下、請求項1の発明を主対象に、実施例に
基づいて説明する。図1は本発明に係わる資源割付け装
置の一実施例の構成図である。本図において、1は、割
付け対象の生存期間や参照回数等の情報を用いてメモリ
やレジスタの資源への割付けを行う割付け処理部であ
る。
【0012】2は、割付け処理部1の割付け結果を保持
する割付け結果保持部である。そして、これらは従来技
術に係わる資源割付け装置と異ならない。次に、本発明
の要旨に直接関係する構成について説明する。3は、割
付け処理部1においてメモリに割付けられ、かつ、その
プログラム中の使用箇所でレジスタの退避・復元が必要
な割付け対象に対して、予めレジスタに割付けた新たな
割付け対象を生成し、前記のレジスタの退避・復元が必
要な割付け対象の使用箇所の直前に、新たに生成した割
付け対象を前記のレジスタの退避・復元が必要な割付け
対象で定義した代入文を挿入し、前記のレジスタの退避
・復元が必要な割付け対象の使用を新たに生成した割付
け対象の使用で置き換え、新たに生成した割付け対象
を、割付け処理部1で扱った割付け対象に付け加えて再
割付けを行う再割付け処理部である。
【0013】4は、再割付け処理部3の割付け結果を保
持する再割付け結果保持部である。5は、割付け結果保
持部2と再割付け結果保持部4の保持している結果をも
とにして、各割付け結果毎にコンパイラが生成する目的
コードの総コスト(サイクル数やサイズ数等)を算出
し、コストの小さい方を選択の上、新たに割付け結果保
持部2に設定する割付け結果選択部である。
【0014】6は、オペレータの再割付け処理を行うか
否かの指示により、再割付け処理部3等を作動させるか
否かを選択する再割付け実行選択部であり、請求項2の
発明に係わるものである。次に、以上のように構成され
た本実施例のレジスタ割付け装置の動作を以下に説明す
る。
【0015】(1)割付け処理部1は、割付け対象に対
して割付け処理を行い、結果を割付け結果保持部2に格
納する。 (2)ユーザの指示のもと、再割付け実行選択部6は再
割付けを行うときは再割付け処理部3を起動し、行わな
いときは割付け結果保持部2を割付け結果として資源割
付けの処理を終了する。
【0016】(3)再割付け処理部3は、新たに生成し
た割付け対象を考慮にいれて再割付けを行い、結果を再
割付け結果保持部4に格納し、割付け結果選択部5を起
動する。 (4)割付け結果選択部5は、割付け結果保持部2と再
割付け結果保持部4とから得られるコストを比較し、再
割付け結果の方がコストが小さいときには、割付け結果
保持部2の内容を再割付け結果保持部4の内容に変更
し、割付け結果保持部2を割付け結果として資源割付け
の処理を終了する。
【0017】ここで、この場合のコストの計算法につい
て説明する。一般に知られているように、コンパイラ
は、翻訳するプログラムの式を、オペレータとそのオペ
レータに関係する複数のオペランドの組である四つ組
や、三つ組等といった中間的な式に変換し、この中間的
な式を、複数個の機械命令(またはアセンブラソース命
令)に変換する。コンパイラの内部では、中間的な式に
対して、そのオペレーションの種類と、オペランドの種
類(メモリ、レジスタまたは、即値等)であるかによ
り、どのような機械命令に変換するかを示す情報をテー
ブルとして(または、処理関数として)持っている。よ
って、オペレーションとオペランドの種類毎に、どのよ
うな機械命令に変換するかが解るので、必要とする機械
命令のサイズ数やクロック数も解り、このサイズ数やク
ロック数をオペレーションとオペランドの種類毎に、コ
ストの情報として機械命令とともに、予めテーブルに格
納して置くことにより、中間的な式に対するコストを求
めることが可能となり、結果的に、割付け結果毎のコス
トを計算することが可能となる。
【0018】なお、以上はあくまでもコスト計算が可能
であることを示すものであり、他のより最良な中間的な
式の形式や、コスト情報の格納場所等に関する方法があ
ることは勿論であるし、それに関連したコスト計算の具
体的な方法については本発明の要旨そのものでないの
で、その説明は省略する。上述のように本実施例におけ
る資源割付け装置においては、再割付け処理で新たに生
成した割付け対象が、ワークレジスタの役目をするた
め、最初の割付け処理でレジスタの退避・復元が発生し
たプログラム部分に、必要なワークレジスタを確保した
のと同様な作用をもたらす。従って、本資源割付け装置
は、最初のワークレジスタを使用しない割付け処理の割
付け結果と、部分的にワークレジスタを確保したのと同
様な作用をする再割付け処理の割付け結果とを比較し
て、良好な方を選択できるので、より有効な資源割付け
が可能となる。
【0019】次に請求項2の発明について、その目的と
効果を主に説明する。プログラムの開発段階では、プロ
グラムの開発者は、コンパイラを使用して、開発プログ
ラムを目的コードであるアセンブラソースコードや機械
命令に変換(翻訳)し、生成した目的コードを実行し
て、誤りがあれば、開発プログラムの修正を行い、再度
コンパイラにより目的コードに翻訳するという作業を誤
りがなくなるまで繰り返す。この誤りは、プログラムの
開発段階では、頻繁に起きるため、生成する目的コード
の効率そのものよりもコンパイル時間の短縮が重要とな
ることが多い。その場合、請求項1の発明に係わる再割
付け装置を有する計算機においては、そのままでは再割
付け結果の保持や選択等がなされるため、コンパイル時
間が長くなり、好ましくないという事態もありえる。
【0020】そこで、請求項2の発明に係わる資源割付
け装置においては、再割付け実行選択部を設けることに
より、ユーザが生成コードの効率よりもコンパイル時間
を重視するときには、その選択により再割付け処理を行
わない構成としている。以上、本発明を実施例にもとづ
き説明してきたが、本発明は何も上記実施例に限定され
ないのは勿論である。
【0021】すなわち、コンパイラの方式(通訳、翻
訳)、単一計算又は平行計算等の計算機の計算の方式、
メモリの種類等、割付け結果保持部と再割付け結果保持
部との有利な評価の選択に際しての評価対象の如何、評
価手法等で考慮すべき具体的内容の如何等を問わないの
は勿論である。
【0022】
【発明の効果】以上の構成により、請求項1の発明に係
わる資源割付け装置においては、ワークレジスタとして
使用するレジスタを確保せずに、割付け可能なレジスタ
数を多くして資源を割付けた割付け結果と、レジスタの
退避・復元が発生するプログラム部分に対して、ワーク
レジスタを確保してレジスタの退避・復元の発生を抑え
た割付け結果とを比較して、有利な方を最終的な割付け
結果とするので、いずれか一方の割付け方法しか取らな
い資源割付け装置に比較した場合に、コンパイラが生成
する目的コードのサイズ数やクロック数をより一層少な
くする効率のよい資源割付けが可能となる。
【0023】次に請求項2の発明に係わる資源割付け装
置においては、プログラム開発時等、生成コードの効率
よりもコンパイル時間の短縮が重要な場合には、プログ
ラムの開発者の選択により請求項1の発明に係わる資源
の再割付けの実行がなされない。このため、プログラム
開発において、コンパイル時間が長くならず、請求項1
の発明に係わる資源割付け装置の実用性がより一層向上
する。
【図面の簡単な説明】
【図1】本発明発明に係わる資源割付け装置の一実施例
の構成図である。
【符号の説明】
1 割付け処理部 2 割付け結果保持部 3 再割付け処理部 4 再割付け結果保持部 5 割付け結果選択部 6 再割付け実行選択部

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 コンパイラ等でレジスタを変数に割付け
    る際に、レジスタの割付け対象にレジスタやメモリを割
    付ける割付け処理部と、前記割付け処理部の割付け結果
    を保持する割付け結果保持部とを有する資源割付け装置
    において、 前記割付け処理部においてメモリに割付けられかつその
    プログラム中の使用箇所で、レジスタの退避・復元が必
    要な割付け対象に対して、レジスタに必ず割付けられる
    新たな割付け対象を生成し、前記のレジスタの退避・復
    元が必要な割付け対象の使用箇所の直前に、新たに生成
    した割付け対象を前記のレジスタの退避・復元が必要な
    割付け対象で定義した代入文を挿入し、前記のレジスタ
    の退避・復元が必要な割付け対象の使用を前記新たに生
    成した割付け対象の使用で置き換え、前記新たに生成し
    た割付け対象を、前記割付け処理部で扱った割付け対象
    に付け加えて再割付けを行う、前記割付け処理部に引き
    続いて起動される再割付け処理部と前記再割付け処理部
    の割付け結果を保持する再割付け結果保持部と、 前記再割付け処理部から起動され、前記割付け結果保持
    部と前記再割付け結果保持部に保持されている内容を比
    較して有利な方を最終的な割付け結果として前記割付け
    結果保持部に設定する割付け結果選択部とを備えたこと
    を特徴とする資源割付け装置。
  2. 【請求項2】 上記再割付け処理部、再割付け結果保持
    部、割付け結果選択部による再割付け処理の有無をオペ
    レータが選択可能とする再割付け実行選択部を有するこ
    とを特徴とする請求項1記載の資源割付け装置。
JP570392A 1992-01-16 1992-01-16 資源割付け装置 Pending JPH05189245A (ja)

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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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) 並列処理システム