JPH0512015A - レジスタウインドウ設定方式 - Google Patents
レジスタウインドウ設定方式Info
- Publication number
- JPH0512015A JPH0512015A JP3183711A JP18371191A JPH0512015A JP H0512015 A JPH0512015 A JP H0512015A JP 3183711 A JP3183711 A JP 3183711A JP 18371191 A JP18371191 A JP 18371191A JP H0512015 A JPH0512015 A JP H0512015A
- Authority
- JP
- Japan
- Prior art keywords
- register
- function
- window
- variable
- registers
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02E—REDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
- Y02E60/00—Enabling technologies; Technologies with a potential or indirect contribution to GHG emissions mitigation
- Y02E60/10—Energy storage using batteries
Landscapes
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
Abstract
(57)【要約】
【目的】レジスタウィンドウのウィンドウ長を可変とす
ることで、レジスタ資源を有効に利用し、処理の実行速
度を向上させることが可能となるようにする。 【構成】入力部10から入力された関数について、変数
検索処理部12は、関数毎の変数情報を生成する。必要
レジスタ割当処理部16は、関数毎の変数情報に基づい
て、各関数内で必要なレジスタ数と関数を呼出すときに
オーバーラップさせるレジスタウィンドウの個数(関数
毎のレジスタ情報)を求める。コード生成部20は、レ
ジスタ情報を参照してレジスタ割当命令を含むコードを
生成し、CPU22に出力する。CPU22は、レジス
タ割当命令に従って、レジスタウィンドウのコントロー
ルを行ないながら、実際のコードを実行する。こうし
て、各関数に必要なだけのレジスタが割り当てられ、ま
たオーバーラップする部分も必要な個数だけのレジスタ
がオーバーラップされる。
ることで、レジスタ資源を有効に利用し、処理の実行速
度を向上させることが可能となるようにする。 【構成】入力部10から入力された関数について、変数
検索処理部12は、関数毎の変数情報を生成する。必要
レジスタ割当処理部16は、関数毎の変数情報に基づい
て、各関数内で必要なレジスタ数と関数を呼出すときに
オーバーラップさせるレジスタウィンドウの個数(関数
毎のレジスタ情報)を求める。コード生成部20は、レ
ジスタ情報を参照してレジスタ割当命令を含むコードを
生成し、CPU22に出力する。CPU22は、レジス
タ割当命令に従って、レジスタウィンドウのコントロー
ルを行ないながら、実際のコードを実行する。こうし
て、各関数に必要なだけのレジスタが割り当てられ、ま
たオーバーラップする部分も必要な個数だけのレジスタ
がオーバーラップされる。
Description
【0001】
【産業上の利用分野】本発明は、オーバーラッピングレ
ジスタウィンドウを備えた制御ユニットにおけるレジス
タウィンドウ設定方式に関する。
ジスタウィンドウを備えた制御ユニットにおけるレジス
タウィンドウ設定方式に関する。
【0002】
【従来の技術】従来、オーバーラッピングレジスタウィ
ンドウを備えた制御ユニットでは、レジスタウィンドウ
が固定長となっている。この従来のレジスタウィンドウ
の概念図を図3に示している。
ンドウを備えた制御ユニットでは、レジスタウィンドウ
が固定長となっている。この従来のレジスタウィンドウ
の概念図を図3に示している。
【0003】図3においては、関数fが関数gを呼び、
関数gが関数hを呼ぶものとする。オーバーラッピング
レジスタウィンドウでは、各々のレジスタのうち、オー
バラップする部分を用いて引数や返却値の受け渡しが行
なわれる。
関数gが関数hを呼ぶものとする。オーバーラッピング
レジスタウィンドウでは、各々のレジスタのうち、オー
バラップする部分を用いて引数や返却値の受け渡しが行
なわれる。
【0004】従って、例えば図3に示すように、関数g
がレジスタウィンドウで与えられるだけのレジスタを必
要としない場合には、図中斜線部分のレジスタが無駄と
なってしまう。
がレジスタウィンドウで与えられるだけのレジスタを必
要としない場合には、図中斜線部分のレジスタが無駄と
なってしまう。
【0005】ところで、関数やサブルーチン呼出しが一
定の深さに達し、レジスタを使い切った場合には、通
常、レジスタセーブが行なわれる。また、一つの関数で
沢山のレジスタを使う場合にも、同様にレジスタセーブ
が行なわれる。
定の深さに達し、レジスタを使い切った場合には、通
常、レジスタセーブが行なわれる。また、一つの関数で
沢山のレジスタを使う場合にも、同様にレジスタセーブ
が行なわれる。
【0006】
【発明が解決しようとする課題】このように、従来のオ
ーバーラッピングレジスタウィンドウは固定長であった
ために、変数をあまり使用しない関数やサブルーチンの
ように、レジスタウィンドウで与えられるだけのレジス
タを必要としない場合、図3に示すように、レジスタが
無駄となることがあった。このように、不必要にレジス
タを浪費することは、必要以上のレジスタセーブを招く
ことになる。すなわち、従来では、レジスタ資源を有効
に利用できず、これに伴って実行速度の低下を招いてし
まうという問題があった。
ーバーラッピングレジスタウィンドウは固定長であった
ために、変数をあまり使用しない関数やサブルーチンの
ように、レジスタウィンドウで与えられるだけのレジス
タを必要としない場合、図3に示すように、レジスタが
無駄となることがあった。このように、不必要にレジス
タを浪費することは、必要以上のレジスタセーブを招く
ことになる。すなわち、従来では、レジスタ資源を有効
に利用できず、これに伴って実行速度の低下を招いてし
まうという問題があった。
【0007】本発明は前記のような点に鑑みてなされた
もので、レジスタ資源を有効に利用して、処理の実行速
度を向上させることが可能なレジスタウィンドウ設定方
式に関する。
もので、レジスタ資源を有効に利用して、処理の実行速
度を向上させることが可能なレジスタウィンドウ設定方
式に関する。
【0008】
【課題を解決するための手段】本発明は、オーバーラッ
ピングレジスタウィンドウを備えた制御ユニットにおい
て、レジスタウィンドウのウィンドウ長を動的に変更す
る可変手段を具備し、前記可変手段によって得られたレ
ジスタウィンドウを制御するものである。
ピングレジスタウィンドウを備えた制御ユニットにおい
て、レジスタウィンドウのウィンドウ長を動的に変更す
る可変手段を具備し、前記可変手段によって得られたレ
ジスタウィンドウを制御するものである。
【0009】
【作用】これにより、レジスタ資源を有効に利用でき、
従って必要以上にレジスタセーブを招くことがないた
め、実行速度を向上させることができる。
従って必要以上にレジスタセーブを招くことがないた
め、実行速度を向上させることができる。
【0010】
【実施例】以下、図面を参照して本発明の一実施例を説
明する。図1は同実施例に係わるレジスタウィンドウ設
定方式を説明するための機能ブロック図である。図1に
おいて、入力部10は、処理対象とする関数を入力する
ものである。変数検索処理部12は、入力部10から入
力された各関数が使う変数の個数や変数の種類等を求め
るものである。変数情報記憶部14は、関数毎の変数情
報を記憶するものであり、同時に生存する変数の個数や
種類を示す。必要レジスタ割当処理部16は、変数情報
記憶部14を参照して、レジスタに割り当てるべき変数
を決め、関数内毎で使うレジスタの個数を求めるもので
ある。レジスタ情報記憶部18は、関数毎のレジスタ情
報を記憶するものであり、各関数が関数内で必要とする
レジスタの個数及び呼出し側のレジスタウィンドウとオ
ーバーラップするレジスタの個数を示す。コード生成部
20は、関数毎のレジスタ情報を参照して、レジスタ割
当命令を含むコードを生成するものである。CPU22
は、コード生成部20によって生成されたコードを実行
するもので、レジスタ割当命令に応じてレジスタウィン
ドウのコントロールを行なう。
明する。図1は同実施例に係わるレジスタウィンドウ設
定方式を説明するための機能ブロック図である。図1に
おいて、入力部10は、処理対象とする関数を入力する
ものである。変数検索処理部12は、入力部10から入
力された各関数が使う変数の個数や変数の種類等を求め
るものである。変数情報記憶部14は、関数毎の変数情
報を記憶するものであり、同時に生存する変数の個数や
種類を示す。必要レジスタ割当処理部16は、変数情報
記憶部14を参照して、レジスタに割り当てるべき変数
を決め、関数内毎で使うレジスタの個数を求めるもので
ある。レジスタ情報記憶部18は、関数毎のレジスタ情
報を記憶するものであり、各関数が関数内で必要とする
レジスタの個数及び呼出し側のレジスタウィンドウとオ
ーバーラップするレジスタの個数を示す。コード生成部
20は、関数毎のレジスタ情報を参照して、レジスタ割
当命令を含むコードを生成するものである。CPU22
は、コード生成部20によって生成されたコードを実行
するもので、レジスタ割当命令に応じてレジスタウィン
ドウのコントロールを行なう。
【0011】次に、同実施例の動作について説明する。
【0012】入力部10から入力された関数について、
変数検索処理部12は、通常のコンパイラ等が行なうよ
うな変数検索処理を関数単位で行ない、変数のサイズ,
生存範囲と共に、変数の個数や種類等を含む関数毎の変
数情報を生成する。ここで生成された関数毎の変数情報
は、変数情報記憶部14に記憶される。
変数検索処理部12は、通常のコンパイラ等が行なうよ
うな変数検索処理を関数単位で行ない、変数のサイズ,
生存範囲と共に、変数の個数や種類等を含む関数毎の変
数情報を生成する。ここで生成された関数毎の変数情報
は、変数情報記憶部14に記憶される。
【0013】次に、必要レジスタ割当処理部16は、変
数情報記憶部14に記憶された関数毎の変数情報に基づ
いて、各関数内で必要なレジスタ数と、その関数を呼出
すときにオーバーラップさせるレジスタウィンドウの個
数を、変数にレジスタを割り付けながら求める。ここで
得られた関数毎のレジスタ情報は、レジスタ情報記憶部
18に記憶される。
数情報記憶部14に記憶された関数毎の変数情報に基づ
いて、各関数内で必要なレジスタ数と、その関数を呼出
すときにオーバーラップさせるレジスタウィンドウの個
数を、変数にレジスタを割り付けながら求める。ここで
得られた関数毎のレジスタ情報は、レジスタ情報記憶部
18に記憶される。
【0014】その後、コード生成部20は、コード生成
を行なうが、関数の呼出しに伴い、呼出される関数側で
のレジスタウィンドウをどの様な状態にするのか、レジ
スタ情報記憶部18に記憶された関数毎のレジスタ情報
を参照して判別する。コード生成部20は、この判別結
果に基づいて、レジスタ割当命令を含むコードを生成
し、CPU22に出力する。
を行なうが、関数の呼出しに伴い、呼出される関数側で
のレジスタウィンドウをどの様な状態にするのか、レジ
スタ情報記憶部18に記憶された関数毎のレジスタ情報
を参照して判別する。コード生成部20は、この判別結
果に基づいて、レジスタ割当命令を含むコードを生成
し、CPU22に出力する。
【0015】CPU22は、レジスタ割当命令に従っ
て、レジスタウィンドウのコントロールを行ないなが
ら、実際のコードを実行する。このCPU22よるレジ
スタウィンドウのコントロール概念を図2に示してい
る。
て、レジスタウィンドウのコントロールを行ないなが
ら、実際のコードを実行する。このCPU22よるレジ
スタウィンドウのコントロール概念を図2に示してい
る。
【0016】ここでは、図3を用いて説明した際と同様
の状況であり、関数fが関数gを呼び、関数gが関数h
を呼ぶものとする。図2に示すように、関数gのレジス
タウィンドウが、図3に示すレジスタウィンドウと異な
り、各関数に必要なだけのレジスタが割り当てられてい
る。オーバーラップする部分も同様で、関数gが関数h
を呼出す場合、必要な個数だけのレジスタがオーバーラ
ップされている。
の状況であり、関数fが関数gを呼び、関数gが関数h
を呼ぶものとする。図2に示すように、関数gのレジス
タウィンドウが、図3に示すレジスタウィンドウと異な
り、各関数に必要なだけのレジスタが割り当てられてい
る。オーバーラップする部分も同様で、関数gが関数h
を呼出す場合、必要な個数だけのレジスタがオーバーラ
ップされている。
【0017】このように、無駄となるレジスタがないた
め、不必要にレジスタを浪費することがない。従って、
必要以上のレジスタセーブを招くことがないため、より
効率的な実行が可能となるものである。
め、不必要にレジスタを浪費することがない。従って、
必要以上のレジスタセーブを招くことがないため、より
効率的な実行が可能となるものである。
【0018】なお、レジスタが沢山ある(容量が大き
い)CPUでは、ハードウェアによって可変個のレジス
タウィンドウを実現しなくても、ソフトウェアによって
実現可能である。
い)CPUでは、ハードウェアによって可変個のレジス
タウィンドウを実現しなくても、ソフトウェアによって
実現可能である。
【0019】
【発明の効果】以上のように本発明によれば、オーバー
ラッピングレジスタウィンドウを可変長にすることによ
り、レジスタをあまり必要としない関数やサブルーチン
の呼出しを、より深くまでレジスタセーブすることなく
呼び出すことが可能となるので、より効率的に処理を実
行することが可能となるものである。
ラッピングレジスタウィンドウを可変長にすることによ
り、レジスタをあまり必要としない関数やサブルーチン
の呼出しを、より深くまでレジスタセーブすることなく
呼び出すことが可能となるので、より効率的に処理を実
行することが可能となるものである。
【図1】本発明の一実施例に係わるレジスタウィンドウ
設定方式を説明するための機能ブロック図。
設定方式を説明するための機能ブロック図。
【図2】同実施例におけるレジスタウィンドウの概念
図。
図。
【図3】従来におけるレジスタウィンドウの概念図。
10…入力部、12…変数検索処理部、14…変数情報
記憶部、16…必要レジスタ割当処理部、18…レジス
タ情報記憶部、20…コード生成部、22…CPU。
記憶部、16…必要レジスタ割当処理部、18…レジス
タ情報記憶部、20…コード生成部、22…CPU。
Claims (1)
- 【特許請求の範囲】 【請求項1】 オーバーラッピングレジスタウィンドウ
を備えた制御ユニットにおいて、 レジスタウィンドウのウィンドウ長を動的に変更する可
変手段を具備し、 前記可変手段によって得られたレジスタウィンドウを制
御することを特徴とするレジスタウィンドウ設定方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP3183711A JPH0512015A (ja) | 1991-06-28 | 1991-06-28 | レジスタウインドウ設定方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP3183711A JPH0512015A (ja) | 1991-06-28 | 1991-06-28 | レジスタウインドウ設定方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0512015A true JPH0512015A (ja) | 1993-01-22 |
Family
ID=16140627
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP3183711A Pending JPH0512015A (ja) | 1991-06-28 | 1991-06-28 | レジスタウインドウ設定方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0512015A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8161467B2 (en) | 2001-05-29 | 2012-04-17 | International Business Machines Corporation | Compiling method and storage medium therefor |
-
1991
- 1991-06-28 JP JP3183711A patent/JPH0512015A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8161467B2 (en) | 2001-05-29 | 2012-04-17 | International Business Machines Corporation | Compiling method and storage medium therefor |
| US8671399B2 (en) | 2001-05-29 | 2014-03-11 | International Business Machines Corporation | Systems and methods for efficiently using stack registers and storage medium therefor |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH01155451A (ja) | 仮想計算機システム | |
| JPH09502558A (ja) | マルチタスクオペレーティングシステムにおける共用コード及びデータを保護するための方法およびシステム | |
| JPH0512015A (ja) | レジスタウインドウ設定方式 | |
| JP2902746B2 (ja) | 仮想計算機制御方式 | |
| JP2001282560A (ja) | 仮想計算機制御方法及びその実施装置並びにその処理プログラムを記録した記録媒体 | |
| JP2002099435A (ja) | マルチタスク制御方法および情報処理装置 | |
| JPH0460843A (ja) | マルチプロセッサシステムにおけるタスクスケジュール方式 | |
| JP2000215071A (ja) | 仮想計算機システム | |
| JPH1131134A (ja) | コンピュータシステム及び同システムに適用するスケジューリング方法 | |
| JP2570198B2 (ja) | タイムスライスディスパッチングシステム | |
| JPH05134960A (ja) | ローカルプロセツシング方式 | |
| JPS605302A (ja) | シ−ケンスコントロ−ラのプログラム方法 | |
| JPH0528120A (ja) | マルチプロセツサ処理方式 | |
| JP2574539B2 (ja) | 半導体装置 | |
| JPH09325892A (ja) | ジョブ並列実行制御方法 | |
| JP2518504B2 (ja) | 目的プログラム生成装置 | |
| JPH0373027A (ja) | ベクトルレジスタ退避復元方式 | |
| JPS62205434A (ja) | 再帰呼出し可能プログラムのコンパイル処理方式 | |
| JPH0512038A (ja) | Cpu待ち時間制御デイスパツチング方式 | |
| JPS6236576B2 (ja) | ||
| JPH113235A (ja) | 仮想プロセッサによるタスク制御システム | |
| JPS6113342A (ja) | 演算制御方式 | |
| JPH02113363A (ja) | マルチプロセッサシステムにおけるタイムスライス制御方式 | |
| JPH03241431A (ja) | タスク内共通領域の割当て方式 | |
| JP2001101150A (ja) | データ処理装置及びデータ処理方法 |