JPH0630063B2 - マイクロプロセッサ - Google Patents
マイクロプロセッサInfo
- Publication number
- JPH0630063B2 JPH0630063B2 JP1037805A JP3780589A JPH0630063B2 JP H0630063 B2 JPH0630063 B2 JP H0630063B2 JP 1037805 A JP1037805 A JP 1037805A JP 3780589 A JP3780589 A JP 3780589A JP H0630063 B2 JPH0630063 B2 JP H0630063B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- window
- module
- registers
- output
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
- G06F9/30127—Register windows
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】 〔発明の目的〕 (産業上の利用分野) 本発明は、マイクロプロセッサに関し、特に、RISC
(Reduced Instruction Computer Set)タイプのマイク
ロプロセッサに関する。
(Reduced Instruction Computer Set)タイプのマイク
ロプロセッサに関する。
(従来の技術) SPARCアーキテクチャーによるマイクロプロセッサ
は、例えば、刊行物『10MIPSから100MPSま
でを単一アーキテクチャーでカバーするSPARC』
(NIKKEI BYTE/MARCH 1988)に示されている。ここに
は、レジスタウインドウを用いたマイクロプロセッサに
関して詳述されている。このようなシステムで使用す
る、プロシージャコールを多用するプログラムにおいて
は、多くのウインドウを使用することになる。
は、例えば、刊行物『10MIPSから100MPSま
でを単一アーキテクチャーでカバーするSPARC』
(NIKKEI BYTE/MARCH 1988)に示されている。ここに
は、レジスタウインドウを用いたマイクロプロセッサに
関して詳述されている。このようなシステムで使用す
る、プロシージャコールを多用するプログラムにおいて
は、多くのウインドウを使用することになる。
従って、マイクロプロセッサチップ上のウインドウ数が
少ないとウインドウのオーバーフロー/アンダーフロー
トラップ処理によるオーバーヘッドが大きな問題となっ
てくる。SPARCアーキテクチャーでは、1つのウイ
ンドウを追加するためには、32ビット長のレジスタを
16本必要とする。しかしながら、チップ上のウインド
ウ数はハードウェア量によって制限を受けるため、現実
には多くすることはできない。ちなみに、SPARCで
は、ウインドウの数は最小6個、最大32個と規定して
いるが、1.5μmC−MOSゲートアレイによるチッ
プの数は、上記刊行物では7個となっている。
少ないとウインドウのオーバーフロー/アンダーフロー
トラップ処理によるオーバーヘッドが大きな問題となっ
てくる。SPARCアーキテクチャーでは、1つのウイ
ンドウを追加するためには、32ビット長のレジスタを
16本必要とする。しかしながら、チップ上のウインド
ウ数はハードウェア量によって制限を受けるため、現実
には多くすることはできない。ちなみに、SPARCで
は、ウインドウの数は最小6個、最大32個と規定して
いるが、1.5μmC−MOSゲートアレイによるチッ
プの数は、上記刊行物では7個となっている。
(発明が解決しようとする課題) 従来のマイクロプロセッサは以上のように構成されてい
るので、1個のウインドウに割り当てるレジスタ数は固
定である(以下これを固定方式と呼ぶ)。しかしなが
ら、個々のプロシージャコールで実際に使用するレジス
タ数は割り当て数より少ない場合も多くあり、割り当て
数が固定であるということは非常に冗長である。このた
め、例えば、現在のウインドウで未使用のレジスタを別
のウインドウに割り当ててウインドウ数を増やすといっ
た、レジスタの有効活用ができない。
るので、1個のウインドウに割り当てるレジスタ数は固
定である(以下これを固定方式と呼ぶ)。しかしなが
ら、個々のプロシージャコールで実際に使用するレジス
タ数は割り当て数より少ない場合も多くあり、割り当て
数が固定であるということは非常に冗長である。このた
め、例えば、現在のウインドウで未使用のレジスタを別
のウインドウに割り当ててウインドウ数を増やすといっ
た、レジスタの有効活用ができない。
このような問題を解決する目的で、1つのウインドウに
割り当てるレジスタ数を可変にする方式が従来技術とし
て知られている(以下、この方式を可変方式と呼ぶ)。
割り当てるレジスタ数を可変にする方式が従来技術とし
て知られている(以下、この方式を可変方式と呼ぶ)。
本発明は、可変方式のレジスタウインドウを含むマイク
ロプロセッサの構成技術に関し、その目的は、プロセッ
サの実行プログラムの内容に応じて、自動的に1つのウ
インドウに割り当てるレジスタ数を決定する可変方式の
レジスタウインドウの構成技術を提供し、固定方式のレ
ジスタウインドウによるマイクロプロセッサの為に開発
されたプログラムをそのまま実行できる可変方式のレジ
スタウインドウによるプロセッサの構成技術を提供する
ことにより、上記プログラムの内容の変更なしに従来の
プログラムの処理速度を、ウインドウのオーバープロー
/アンダーフローのオーバーヘッドを低減することによ
り、改善出来るようにすることにある。
ロプロセッサの構成技術に関し、その目的は、プロセッ
サの実行プログラムの内容に応じて、自動的に1つのウ
インドウに割り当てるレジスタ数を決定する可変方式の
レジスタウインドウの構成技術を提供し、固定方式のレ
ジスタウインドウによるマイクロプロセッサの為に開発
されたプログラムをそのまま実行できる可変方式のレジ
スタウインドウによるプロセッサの構成技術を提供する
ことにより、上記プログラムの内容の変更なしに従来の
プログラムの処理速度を、ウインドウのオーバープロー
/アンダーフローのオーバーヘッドを低減することによ
り、改善出来るようにすることにある。
(課題を解決するための手段) 本発明のマイクロプロセッサは、複数個のレジスタウイ
ンドウを有し、前記各レジスタウインドウは複数個のレ
ジスタを有するマイクロプロセッサであって、 前記各レジスタは前記レジスタウインドウのうちの複数
のものに対して割り当てられており、さらに、 プログラム上の個々のプロシージャに対して前記レジス
タウインドウのうちのいずれかを割り当てることによ
り、前記各プロシージャ上で使用されるワーキングレジ
スタを決定する第1決定手段と、 前記各レジスタウインドウへのレジスタ割り当て数を、
前記ワーキングレジスタに対するアドレス情報に基づい
て自動的に記憶する記憶手段と、 前記記憶手段中の前記割り当て数に基づいて、前記各レ
ジスタウインドウが前記レジスタのうちのどれによって
構成されるかを決定する第2決定手段と、を備えるもの
として構成される。
ンドウを有し、前記各レジスタウインドウは複数個のレ
ジスタを有するマイクロプロセッサであって、 前記各レジスタは前記レジスタウインドウのうちの複数
のものに対して割り当てられており、さらに、 プログラム上の個々のプロシージャに対して前記レジス
タウインドウのうちのいずれかを割り当てることによ
り、前記各プロシージャ上で使用されるワーキングレジ
スタを決定する第1決定手段と、 前記各レジスタウインドウへのレジスタ割り当て数を、
前記ワーキングレジスタに対するアドレス情報に基づい
て自動的に記憶する記憶手段と、 前記記憶手段中の前記割り当て数に基づいて、前記各レ
ジスタウインドウが前記レジスタのうちのどれによって
構成されるかを決定する第2決定手段と、を備えるもの
として構成される。
(作用) 各レジスタウインドウ(モジュール)へのレジスタ割り
当て数が記憶手段に記憶されている。第2決定手段は、
その割り当て数に応じて、各モジュールがどのレジスタ
によって、即ち何個のレジスタによって構成されるかを
決定する。従って、記憶手段中の割り当て数によって、
各モジュールが何個のレジスタによって構成されるかが
変化することとなる。即ち、プログラム上の個々のプロ
シージャに応じて、そのプロシージャ上で使用されるワ
ーキングレジスタが第1決定手段で決定されると共にワ
ーキングレジスタを構成するレジスタの数が第2決定手
段で決定される。
当て数が記憶手段に記憶されている。第2決定手段は、
その割り当て数に応じて、各モジュールがどのレジスタ
によって、即ち何個のレジスタによって構成されるかを
決定する。従って、記憶手段中の割り当て数によって、
各モジュールが何個のレジスタによって構成されるかが
変化することとなる。即ち、プログラム上の個々のプロ
シージャに応じて、そのプロシージャ上で使用されるワ
ーキングレジスタが第1決定手段で決定されると共にワ
ーキングレジスタを構成するレジスタの数が第2決定手
段で決定される。
さらに、本発明においては、記憶手段での、各レジスタ
ウインドウへのレジスタ割り当て数の記憶は、ワーキン
グレジスタに対するアドレス情報に基づいて自動的に行
われる。
ウインドウへのレジスタ割り当て数の記憶は、ワーキン
グレジスタに対するアドレス情報に基づいて自動的に行
われる。
(実施例) 以下、図面を参照しながら本発明の実施例を説明する。
第1図は本発明の一実施例に係るマイクロプロセッサの
ブロック図で、特にウインドウのlocals、outsに割り当
てるレジスタ数を8本または4本とすることを可能とし
た例を示すものである。
ブロック図で、特にウインドウのlocals、outsに割り当
てるレジスタ数を8本または4本とすることを可能とし
た例を示すものである。
第1図において、レジスタアドレスrs1−A0〜4は
ソースレジスタ1を、レジスタアドレスrs2−A0〜
4はソースレジスタ2を、レジスタアドレスrd−A0
〜4はデステネーションレジスタをそれぞれ指定するも
のである。前記各アドレスのうちのA0〜2はそれぞれ
R−FILE1モジュール101、R−FILE1モジ
ュール102、R−FILE2モジュール103に与え
られる。より詳しくは、アドレスrs1−A0〜2は各
モジュールのポートP0−A0〜6に、アドレスrs2
−A0〜2はポートP1−A0〜6に、アドレスrd−
A0〜4はポートP2−A0〜6にそれぞれ与えられ
る。また、各アドレスA2は論理ブロック100に与え
られる。そして、各アドレスのA3〜A4はそれぞれデ
コーダ(DEC)104,105,106に与えられ
る。
ソースレジスタ1を、レジスタアドレスrs2−A0〜
4はソースレジスタ2を、レジスタアドレスrd−A0
〜4はデステネーションレジスタをそれぞれ指定するも
のである。前記各アドレスのうちのA0〜2はそれぞれ
R−FILE1モジュール101、R−FILE1モジ
ュール102、R−FILE2モジュール103に与え
られる。より詳しくは、アドレスrs1−A0〜2は各
モジュールのポートP0−A0〜6に、アドレスrs2
−A0〜2はポートP1−A0〜6に、アドレスrd−
A0〜4はポートP2−A0〜6にそれぞれ与えられ
る。また、各アドレスA2は論理ブロック100に与え
られる。そして、各アドレスのA3〜A4はそれぞれデ
コーダ(DEC)104,105,106に与えられ
る。
一方、rs1−D0〜31はソースレジスタ1の出力デ
ータであり、rs2−D0〜31はソースレジスタ2の
出力データである。これらのrs1−D0〜31および
rs2−D0〜31のいずれもR−FILE1モジュー
ル101、R−FILE1モジュール102、R−FI
LE2モジュール103のそれぞれのポートP0−D0
〜31、P1−D0〜31から出力される。また、rd
−D0〜31はデステネーションレジスタへの入力デー
タであり、R−FILE1モジュール101、R−FI
LE1モジュール102およびR−FILE2モジュー
ル103の各ポートP2−D0〜31に与えられる。
ータであり、rs2−D0〜31はソースレジスタ2の
出力データである。これらのrs1−D0〜31および
rs2−D0〜31のいずれもR−FILE1モジュー
ル101、R−FILE1モジュール102、R−FI
LE2モジュール103のそれぞれのポートP0−D0
〜31、P1−D0〜31から出力される。また、rd
−D0〜31はデステネーションレジスタへの入力デー
タであり、R−FILE1モジュール101、R−FI
LE1モジュール102およびR−FILE2モジュー
ル103の各ポートP2−D0〜31に与えられる。
なお、A0〜4で示されるアドレスはglobals8本と1
個のウインドウ24本(ins8本、locals8本、outs8
本)の計32本のワーキングレジスタの指定を行なうも
のである。D0〜31で示されるデータはアドレスA0
〜4に対応するワーキングレジスタの入出力データであ
る。
個のウインドウ24本(ins8本、locals8本、outs8
本)の計32本のワーキングレジスタの指定を行なうも
のである。D0〜31で示されるデータはアドレスA0
〜4に対応するワーキングレジスタの入出力データであ
る。
なお、プログラム上の基本演算は2つのソースレジスタ
と1つのデステネーションレジスタとの間で見かけ上1
サイクルで行なうようにされている。ワーキングレジス
タを構成するR−FILE1モジュール101、R−F
ILE1モジュール102およびR−FILE2モジュ
ール103は、データ出力ポートが2個、データ入力ポ
ートが1個の3ポート構成となっている。各アドレスお
よびデータは、R−FILE1モジュール101、R−
FILE1モジュール102およびR−FILE2モジ
ュール103の各ポートに対して独立に接続されてい
る。
と1つのデステネーションレジスタとの間で見かけ上1
サイクルで行なうようにされている。ワーキングレジス
タを構成するR−FILE1モジュール101、R−F
ILE1モジュール102およびR−FILE2モジュ
ール103は、データ出力ポートが2個、データ入力ポ
ートが1個の3ポート構成となっている。各アドレスお
よびデータは、R−FILE1モジュール101、R−
FILE1モジュール102およびR−FILE2モジ
ュール103の各ポートに対して独立に接続されてい
る。
R−FILE1モジュール101はins/outsのワーキン
グレジスタを構成するレジスタファイルのモジュール
で、32ビット×56本の構成を有する。R−FILE
1モジュール102はlocalsのワーキングレジスタを構
成するレジスタファイルのモジュールで、32ビット×
56本の構成を有する。またR−FILE2モジュール
103はglobalsのワーキングレジスタを構成するレジ
スタファイルのモジュールで、32ビット×8本の構成
を有する。
グレジスタを構成するレジスタファイルのモジュール
で、32ビット×56本の構成を有する。R−FILE
1モジュール102はlocalsのワーキングレジスタを構
成するレジスタファイルのモジュールで、32ビット×
56本の構成を有する。またR−FILE2モジュール
103はglobalsのワーキングレジスタを構成するレジ
スタファイルのモジュールで、32ビット×8本の構成
を有する。
ちなみに、各R−FILE1モジュール101、R−F
ILE1モジュール102およびR−FILE2モジュ
ール103において、ΦはクロックCLKの入力端子、
REはリードイネーブルREGR−ENの入力端子、W
EはライトイネーブルREGW−ENの入力端子、S0
〜2は各ポートの選択を行なう信号の入力端子である。
ILE1モジュール102およびR−FILE2モジュ
ール103において、ΦはクロックCLKの入力端子、
REはリードイネーブルREGR−ENの入力端子、W
EはライトイネーブルREGW−ENの入力端子、S0
〜2は各ポートの選択を行なう信号の入力端子である。
R−FILE1モジュール101の内部は、第2図に示
すように、0〜13の番地付けのなされた14個のブロ
ックに分割されている。さらに、1つのブロックは4本
のレジスタにより構成される。そして、ポートP0のア
ドレスA3〜6(上位4ビット)がブロックアドレスに
なり、ポートP0のアドレスA0〜2(下位3ビット)
がポートP0のアドレスA3〜6が指定するブロックを
ベースとした8本のレジスタに対するアドレスになる。
ポートP1のアドレスA0〜6、ポートP2のアドレス
A0〜6も上記と同様である。ウインドウ13が8本モ
ードであるときのレジスタファイルの割り当てブロック
は、localsはR−FILE1モジュール102のブロッ
ク13,12、outsはR−FILE1モジュール101
のブロック13,12、insはR−FILE1モジュー
ル101のブロック0(初期状態)である。また、ウイ
ンドウ13が4本モードであるときのレジスタファイル
の割り当てブロックはlocalsはR−FILE1モジュー
ル102のブロック13、outsはR−FILE1モジュ
ール101のブロック13、insはR−FILE1モジ
ュール101のブロック0(初期状態)となる。この
他、S0〜2の入力信号によってポートP0〜2がイネ
ーブルかそうでないかを決定する。ちなみに、ポートP
0〜2がイネーブルとなるのはS0〜2の入力信号が
“1”の時である。
すように、0〜13の番地付けのなされた14個のブロ
ックに分割されている。さらに、1つのブロックは4本
のレジスタにより構成される。そして、ポートP0のア
ドレスA3〜6(上位4ビット)がブロックアドレスに
なり、ポートP0のアドレスA0〜2(下位3ビット)
がポートP0のアドレスA3〜6が指定するブロックを
ベースとした8本のレジスタに対するアドレスになる。
ポートP1のアドレスA0〜6、ポートP2のアドレス
A0〜6も上記と同様である。ウインドウ13が8本モ
ードであるときのレジスタファイルの割り当てブロック
は、localsはR−FILE1モジュール102のブロッ
ク13,12、outsはR−FILE1モジュール101
のブロック13,12、insはR−FILE1モジュー
ル101のブロック0(初期状態)である。また、ウイ
ンドウ13が4本モードであるときのレジスタファイル
の割り当てブロックはlocalsはR−FILE1モジュー
ル102のブロック13、outsはR−FILE1モジュ
ール101のブロック13、insはR−FILE1モジ
ュール101のブロック0(初期状態)となる。この
他、S0〜2の入力信号によってポートP0〜2がイネ
ーブルかそうでないかを決定する。ちなみに、ポートP
0〜2がイネーブルとなるのはS0〜2の入力信号が
“1”の時である。
また、カレントウインドウポインタ(CWP)107は
現在のプロシージャが使用しているウインドウの番号を
出力するものであり、且つインクリメント信号INCに
基づいてインクリメント可能な5ビットのバイナリカウ
ンタである。ちなみに、SPARCではカレントウイン
ドウポインタ(CWP)はプロセッサステートレジスタ
(PSR)の下位5ビットを形成しているので、本実施
例ではこれに準じて5ビットとしている。このカレント
ウインドウポインタ(CWP)107は、リセット信号
RESETが入力されると、カウント値がプロシージャ
が最初に使用するウインドウの番号CWP=13にセッ
トされる。ちなみに、SPARCではウインドウ番号の
最も大きなものから使用していくので、本実施例はこれ
に準じている。なお、CWP=0の状態でディクリメン
ト信号DECによりデクリメントするとCWP=13に
戻る。そして、カレントウインドウポインタ(CWP)
107の出力信号CWP0〜4は次に説明するレジスタ
(W−CC)108のビットを指定する。
現在のプロシージャが使用しているウインドウの番号を
出力するものであり、且つインクリメント信号INCに
基づいてインクリメント可能な5ビットのバイナリカウ
ンタである。ちなみに、SPARCではカレントウイン
ドウポインタ(CWP)はプロセッサステートレジスタ
(PSR)の下位5ビットを形成しているので、本実施
例ではこれに準じて5ビットとしている。このカレント
ウインドウポインタ(CWP)107は、リセット信号
RESETが入力されると、カウント値がプロシージャ
が最初に使用するウインドウの番号CWP=13にセッ
トされる。ちなみに、SPARCではウインドウ番号の
最も大きなものから使用していくので、本実施例はこれ
に準じている。なお、CWP=0の状態でディクリメン
ト信号DECによりデクリメントするとCWP=13に
戻る。そして、カレントウインドウポインタ(CWP)
107の出力信号CWP0〜4は次に説明するレジスタ
(W−CC)108のビットを指定する。
レジスタ(W−CC)108は、各ウインドウが、8本
モードかあるいは4本モードかの情報を記憶する14ビ
ットのレジスタである。14ビットはそれぞれ14個の
ウインドウに対応している。各ビットは、“0”が4本
モードに、“1”が8本モードにそれぞれ対応してい
る。これは、RESETが入力されると全ビットが
“0”にリセットされ、4本モードに設定される。8本
モードへの切り替えは、次のようにして自動的に実施さ
れる。即ち、outsとlocalsのワーキングレジスタのそれ
ぞれの8個のアドレスの順に前半と後半の4個に分け
る。プロシージャでouts、localsとも後半の4個しかア
クセスせずに次のウインドウに移った場合は、そのウイ
ンドウは4本モードのままになっている。もし、outs、
localsのいずれかで、前半のいずれかのレジスタをアク
セスすると、レジスタ(W−CC)108の対応するビ
ットが“1”にセットされ、このウインドウは8本モー
ドとなる、localsの前半はr16〜r19、後半はr2
0〜r23、outsの前半はr8〜r11、後半はr12
〜r15である。
モードかあるいは4本モードかの情報を記憶する14ビ
ットのレジスタである。14ビットはそれぞれ14個の
ウインドウに対応している。各ビットは、“0”が4本
モードに、“1”が8本モードにそれぞれ対応してい
る。これは、RESETが入力されると全ビットが
“0”にリセットされ、4本モードに設定される。8本
モードへの切り替えは、次のようにして自動的に実施さ
れる。即ち、outsとlocalsのワーキングレジスタのそれ
ぞれの8個のアドレスの順に前半と後半の4個に分け
る。プロシージャでouts、localsとも後半の4個しかア
クセスせずに次のウインドウに移った場合は、そのウイ
ンドウは4本モードのままになっている。もし、outs、
localsのいずれかで、前半のいずれかのレジスタをアク
セスすると、レジスタ(W−CC)108の対応するビ
ットが“1”にセットされ、このウインドウは8本モー
ドとなる、localsの前半はr16〜r19、後半はr2
0〜r23、outsの前半はr8〜r11、後半はr12
〜r15である。
一方、許可信号rs1CCW−ENは、ソースレジスタ
1のレジスタアドレスのrs1−A2を、レジスタ(W
−CC)108のセットに使用することを許可するもの
である。また、許可信号rs2CCW−ENは、ソース
レジスタ2のレジスタアドレスのrs2−A2を、レジ
スタ(W−CC)108のセットに使用することを許可
するものである。そして、許可信号rdCCW−EN
は、デステネーションレジスタのレジスタアドレスのr
d−A2を、レジスタ(W−CC)108のセットに使
用することを許可するものである。これらの許可信号r
s1CCW−EN、rs2CCW−EN、rdCCW−
ENは各アドレスA2が入力される論理ブロック100
に入力され、結果としてレジスタ(W−CC)108の
特定のビットを“1”にセットするセット信号SET−
CCを出力する。ちなみに、この場合のビットの指定
は、カレントウインドウポインタ(CWP)107から
のCWP0〜4で行なうことになる。
1のレジスタアドレスのrs1−A2を、レジスタ(W
−CC)108のセットに使用することを許可するもの
である。また、許可信号rs2CCW−ENは、ソース
レジスタ2のレジスタアドレスのrs2−A2を、レジ
スタ(W−CC)108のセットに使用することを許可
するものである。そして、許可信号rdCCW−EN
は、デステネーションレジスタのレジスタアドレスのr
d−A2を、レジスタ(W−CC)108のセットに使
用することを許可するものである。これらの許可信号r
s1CCW−EN、rs2CCW−EN、rdCCW−
ENは各アドレスA2が入力される論理ブロック100
に入力され、結果としてレジスタ(W−CC)108の
特定のビットを“1”にセットするセット信号SET−
CCを出力する。ちなみに、この場合のビットの指定
は、カレントウインドウポインタ(CWP)107から
のCWP0〜4で行なうことになる。
論理ブロック100からのセット信号SET−CCとカ
レントウインドウポインタ(CWP)107からのCW
P0〜4とによってビット指定されたレジスタ(W−C
C)108は、ビット出力ccnとビット出力ccn−
1をカレントブロックポインタ(CBP)109に送出
する。ちなみに、ビット出力ccnは現在のウインドウ
に対応するレジスタ(W−CC)108のビット状態で
あり、ビット出力ccn−1は前のウインドウに対応す
るレジスタ(W−CC)108のビット状態である。
レントウインドウポインタ(CWP)107からのCW
P0〜4とによってビット指定されたレジスタ(W−C
C)108は、ビット出力ccnとビット出力ccn−
1をカレントブロックポインタ(CBP)109に送出
する。ちなみに、ビット出力ccnは現在のウインドウ
に対応するレジスタ(W−CC)108のビット状態で
あり、ビット出力ccn−1は前のウインドウに対応す
るレジスタ(W−CC)108のビット状態である。
カレントブロックポインタ(CBP)109は現在のウ
インドウが実際に使用するR−FILE1モジュール1
01でのブロックを指定する4ビットのバイナリカウン
タであり、“−1”、“−2”、“+1”、“+2”の
動作が可能である。このカレントブロックポインタ(C
BP)109は、リセット信号RESETが入力される
と、プロシージャが最初に使用するウインドウに対して
R−FILE1モジュール101のブロック13を割り
当てるので、CWP=13となる。ちなみに、CWP=
0の状態でディクリメント信号DECによりディクリメ
ントするとCWP=13に戻る。このカレントブロック
ポインタ(CBP)109の出力CWP=CbP0〜3
によって、ウインドウに割り当てるレジスタ数が制御さ
れる。なお、この出力CBP=CbP0〜3はウインド
ウのオーバーフロー/アンダーフローの情報を外部に知
らせる機能をも有する。そして、CWPがCWP−1と
なって次のウインドウに移るとき、ビット出力ccnが
“1”ならCBPがCBP−2となり、現在のウインド
ウに対して8本のレジスタ(2個のブロック)を割り当
てる。一方、ビット出力ccn=“0”ならばCBPが
CBP−1となり現在のウインドウに対して4本のレジ
スタ(1個のブロック)を割り当てる。これに対して、
CWPがCWP+1となり前のウインドウに戻るときは
ビット出力ccn−1が“1”ならばCBPがCBP+
2となり、ビット出力ccn−1が“0”ならばCBP
がCBP+1となる。
インドウが実際に使用するR−FILE1モジュール1
01でのブロックを指定する4ビットのバイナリカウン
タであり、“−1”、“−2”、“+1”、“+2”の
動作が可能である。このカレントブロックポインタ(C
BP)109は、リセット信号RESETが入力される
と、プロシージャが最初に使用するウインドウに対して
R−FILE1モジュール101のブロック13を割り
当てるので、CWP=13となる。ちなみに、CWP=
0の状態でディクリメント信号DECによりディクリメ
ントするとCWP=13に戻る。このカレントブロック
ポインタ(CBP)109の出力CWP=CbP0〜3
によって、ウインドウに割り当てるレジスタ数が制御さ
れる。なお、この出力CBP=CbP0〜3はウインド
ウのオーバーフロー/アンダーフローの情報を外部に知
らせる機能をも有する。そして、CWPがCWP−1と
なって次のウインドウに移るとき、ビット出力ccnが
“1”ならCBPがCBP−2となり、現在のウインド
ウに対して8本のレジスタ(2個のブロック)を割り当
てる。一方、ビット出力ccn=“0”ならばCBPが
CBP−1となり現在のウインドウに対して4本のレジ
スタ(1個のブロック)を割り当てる。これに対して、
CWPがCWP+1となり前のウインドウに戻るときは
ビット出力ccn−1が“1”ならばCBPがCBP+
2となり、ビット出力ccn−1が“0”ならばCBP
がCBP+1となる。
サブストラクタ(INSAG)110,111,112
は、レジスタアドレスがinsを指定したとき、ins/outs
のR−FILE1モジュール101へのブロック指定ア
ドレスをoutsの値からinsの値に変換する4ビットのサ
ブストラクタであり、R−FILE1モジュール101
のポートP0,P1,P2にそれぞれ対応して設けられ
る。そして、insが指定されてビット出力ccn−1が
“1”のときに、サブストラクタ(INSAG)11
0,111,112からの各出力信号CbP0′0〜
3、CbP1′0〜3、CbP2′0〜3の各値はCB
P−2となり、ビット出力ccn−1が“0”の時にサ
ブストラクタ(INSAG)110,111,112か
らの出力信号 CbP0′0〜3、CbP1′0〜3、 CbP2′0〜3の値はCBP−1となる。一方、outs
が指定されるとサブストラクタ(INSAG)110,
111,112からの出力CbP0′0〜3、CbP
1′0〜3、CbP2′0〜3の各値としてはCBP=
0〜3がそのままスルーして出力される。
は、レジスタアドレスがinsを指定したとき、ins/outs
のR−FILE1モジュール101へのブロック指定ア
ドレスをoutsの値からinsの値に変換する4ビットのサ
ブストラクタであり、R−FILE1モジュール101
のポートP0,P1,P2にそれぞれ対応して設けられ
る。そして、insが指定されてビット出力ccn−1が
“1”のときに、サブストラクタ(INSAG)11
0,111,112からの各出力信号CbP0′0〜
3、CbP1′0〜3、CbP2′0〜3の各値はCB
P−2となり、ビット出力ccn−1が“0”の時にサ
ブストラクタ(INSAG)110,111,112か
らの出力信号 CbP0′0〜3、CbP1′0〜3、 CbP2′0〜3の値はCBP−1となる。一方、outs
が指定されるとサブストラクタ(INSAG)110,
111,112からの出力CbP0′0〜3、CbP
1′0〜3、CbP2′0〜3の各値としてはCBP=
0〜3がそのままスルーして出力される。
デコーダ(DEC)104,105,106はそれぞれ
レジスタアドレスrs1−A0〜4、rs2−A0〜
4、rd−A0〜4のうちの各上位2ビットA3〜4に
より、globals、ins、localsのうちのいずれかのレジス
タアドレスになっているかをデコードするものである。
そして、A3=“0”、A4=“0”の時には、デコー
ダ(DEC)104からはglob-rs1が、デコーダ(D
EC)105からはglob-rs2が、デコーダ(DEC)
106からはglob-rdがそれぞれ出力される。また、A
3=“1”、A4=“0”の時には、デコーダ(DE
C)104からはin-rs1が、デコーダ(DEC)10
5からはin-rs2が、デコーダ(DEC)106からはi
n-rdがそれぞれ出力される。また、A3=“0”、A4
=“1”の時には、デコーダ(DEC)104からはlo
c-rs1が、デコーダ(DEC)105からはloc-rs2
が、デコーダ(DEC)106からはloc-rdがそれぞれ
出力される。そして、A3=“1”、A4=“1”の時
には、デコーダ(DEC)104からはout-rs1が、デ
コーダ(DEC)105からはout-rs2が、デコーダ
(DEC)106からはout-rdがそれぞれ出力される。
これらの信号のうちin-rs1、in-rs2、in-rdとout-rs
1、rs2、rdとは論理ブロック200で処理され、IO
SEL0〜2というR−FILE1モジュール101の
各ポートをイネーブルにする信号として送出されて、R
−FILE1モジュール101の入力端子S0〜2に入
力される。また、loc-rs1、loc-rs2、loc-rdはR−F
ILE1モジュール102の各ポートをイネーブルにす
る信号として送出されR−FILE1モジュール102
の入力端子S0〜2に入力される。また、glob-rs1、g
lob-rs2、glob-rdはR−FILE1モジュール103
の各ポートをイネーブルにする信号として送出されR−
FILE1モジュール103の入力端子S0〜2に入力
される。ちなみに、ワーキングレジスタのアドレスはr
0〜7がglobalsに、r8〜15がoutsに、r16〜2
3がlocalsに、r24〜31がinsにそれぞれ対応す
る。
レジスタアドレスrs1−A0〜4、rs2−A0〜
4、rd−A0〜4のうちの各上位2ビットA3〜4に
より、globals、ins、localsのうちのいずれかのレジス
タアドレスになっているかをデコードするものである。
そして、A3=“0”、A4=“0”の時には、デコー
ダ(DEC)104からはglob-rs1が、デコーダ(D
EC)105からはglob-rs2が、デコーダ(DEC)
106からはglob-rdがそれぞれ出力される。また、A
3=“1”、A4=“0”の時には、デコーダ(DE
C)104からはin-rs1が、デコーダ(DEC)10
5からはin-rs2が、デコーダ(DEC)106からはi
n-rdがそれぞれ出力される。また、A3=“0”、A4
=“1”の時には、デコーダ(DEC)104からはlo
c-rs1が、デコーダ(DEC)105からはloc-rs2
が、デコーダ(DEC)106からはloc-rdがそれぞれ
出力される。そして、A3=“1”、A4=“1”の時
には、デコーダ(DEC)104からはout-rs1が、デ
コーダ(DEC)105からはout-rs2が、デコーダ
(DEC)106からはout-rdがそれぞれ出力される。
これらの信号のうちin-rs1、in-rs2、in-rdとout-rs
1、rs2、rdとは論理ブロック200で処理され、IO
SEL0〜2というR−FILE1モジュール101の
各ポートをイネーブルにする信号として送出されて、R
−FILE1モジュール101の入力端子S0〜2に入
力される。また、loc-rs1、loc-rs2、loc-rdはR−F
ILE1モジュール102の各ポートをイネーブルにす
る信号として送出されR−FILE1モジュール102
の入力端子S0〜2に入力される。また、glob-rs1、g
lob-rs2、glob-rdはR−FILE1モジュール103
の各ポートをイネーブルにする信号として送出されR−
FILE1モジュール103の入力端子S0〜2に入力
される。ちなみに、ワーキングレジスタのアドレスはr
0〜7がglobalsに、r8〜15がoutsに、r16〜2
3がlocalsに、r24〜31がinsにそれぞれ対応す
る。
以上のような構成において、次にその動作を第3図のタ
イミングチャートに基づいて説明する。ちなみに、第3
図(A)はクロックCLK、(B)はディクリメント信
号DEC、(C)はインクリメント信号、(D)はR−
FILE1モジュール101、R−FILE1モジュー
ル102およびR−FILE2モジュール103に与え
られるリードイネーブルREGR−EN、(E)はR−
FILE1モジュール101、R−FILE1モジュー
ル102およびR−FILE2モジュール103に与え
られるライトイネーブルREGW−EN、(F)は各レ
ジスタアドレスをレジスタ(W−CC)108にセット
することを許可する許可信号rs1CCW−EN、rs
2CCW−EN、rbCCW−EN、(G)はレジスタ
アドレスrs1−A0〜4、(H)はレジスタアドレス
rs2−A0〜4、(I)はレジスタアドレスrd−A
0〜4、(J)はソースレジスタ1の出力データrs1
−D0〜31、(K)はソースレジスタ2の出力データ
rs2−D0〜31、(L)はデステネーションレジス
タの出力データrd−D0〜31、(M)はカレントウ
インドウポインタ(CWP)107の出力CWP0〜
4、(N)はレジスタ(W−CC)108のビット出力
ccn、(O)はレジスタ(W−CC)108のビット
出力ccn−1、(P)はカレントブロックポインタ
(CBP)109の出力であるCbP0〜3、(Q)は
サブストラクタ(INSAG)110から送出されるC
bP0′0〜3、(R)はサブストラクタ(INSA
G)111から送出されるCbP1′0〜3、(S)は
サブストラクタ(INSAG)112から送出されるC
bP2′0〜3、(T)はデコーダ(DEC)104か
ら出力されるglob-rs1、(U)デコーダ(DEC)1
04から出力されるin-rs1、(V)はデコーダ(DE
C)104から出力されるloc-rs1、(W)はデコーダ
(DEC)104から出力されるout-rs1、(X)は論
理ブロック100から出力されるセット信号SET−C
Cである。
イミングチャートに基づいて説明する。ちなみに、第3
図(A)はクロックCLK、(B)はディクリメント信
号DEC、(C)はインクリメント信号、(D)はR−
FILE1モジュール101、R−FILE1モジュー
ル102およびR−FILE2モジュール103に与え
られるリードイネーブルREGR−EN、(E)はR−
FILE1モジュール101、R−FILE1モジュー
ル102およびR−FILE2モジュール103に与え
られるライトイネーブルREGW−EN、(F)は各レ
ジスタアドレスをレジスタ(W−CC)108にセット
することを許可する許可信号rs1CCW−EN、rs
2CCW−EN、rbCCW−EN、(G)はレジスタ
アドレスrs1−A0〜4、(H)はレジスタアドレス
rs2−A0〜4、(I)はレジスタアドレスrd−A
0〜4、(J)はソースレジスタ1の出力データrs1
−D0〜31、(K)はソースレジスタ2の出力データ
rs2−D0〜31、(L)はデステネーションレジス
タの出力データrd−D0〜31、(M)はカレントウ
インドウポインタ(CWP)107の出力CWP0〜
4、(N)はレジスタ(W−CC)108のビット出力
ccn、(O)はレジスタ(W−CC)108のビット
出力ccn−1、(P)はカレントブロックポインタ
(CBP)109の出力であるCbP0〜3、(Q)は
サブストラクタ(INSAG)110から送出されるC
bP0′0〜3、(R)はサブストラクタ(INSA
G)111から送出されるCbP1′0〜3、(S)は
サブストラクタ(INSAG)112から送出されるC
bP2′0〜3、(T)はデコーダ(DEC)104か
ら出力されるglob-rs1、(U)デコーダ(DEC)1
04から出力されるin-rs1、(V)はデコーダ(DE
C)104から出力されるloc-rs1、(W)はデコーダ
(DEC)104から出力されるout-rs1、(X)は論
理ブロック100から出力されるセット信号SET−C
Cである。
第3図に示した命令のシーケンスはでADD、でS
AVE、でADD、でSAVEとなっている。A
DDではrdのr7にrs1のr31とrs2のr12を加算
して移す。次に、SAVEでは次のウインドウに移
り、CWPをCWP−1とする。そして、ADDでは
rdのr6にrs1のr16とrs2のr12を加算して移
す。そして、次のSAVEでセーブする。ちなみに、
この場合〔r31〕には7が、〔r12〕には3が、
〔r16〕には2がそれぞれ予め入っているものとす
る。文献(前記刊行物)によるSPARCチップでは命
令を4段のパイプラインで実行しているので、本実施例
ではこれに準じて4段のパイプラインとする。次に、第
4図に基づいてパイプライン構造の概略を説明する。こ
こでは、ADD命令を例にとって各ステージでの処理を
説明する。
AVE、でADD、でSAVEとなっている。A
DDではrdのr7にrs1のr31とrs2のr12を加算
して移す。次に、SAVEでは次のウインドウに移
り、CWPをCWP−1とする。そして、ADDでは
rdのr6にrs1のr16とrs2のr12を加算して移
す。そして、次のSAVEでセーブする。ちなみに、
この場合〔r31〕には7が、〔r12〕には3が、
〔r16〕には2がそれぞれ予め入っているものとす
る。文献(前記刊行物)によるSPARCチップでは命
令を4段のパイプラインで実行しているので、本実施例
ではこれに準じて4段のパイプラインとする。次に、第
4図に基づいてパイプライン構造の概略を説明する。こ
こでは、ADD命令を例にとって各ステージでの処理を
説明する。
先ず、ADD命令をメモリ200から取り出し、インス
トラクションレジスタ(IR)202に書き込む(ステ
ップF)。次に、インストラクションレジスタ(IR)
202の中の命中をインストラクションデコーダ(ID
EC)204に入力してこれをデコードする。そして、
次の命令に対するアドレスを、アドレスジェネレータ
(AG)206およびプログラムカウンタ(PC)20
8により発生する。レジスタアドレスrs1、rs2
(2つのソースレジスタのデータ)をレジスタファイル
(RF)210から読み出し、Aレジスタ212、Bレ
ジスタ214に書き込む(ステップD)。
トラクションレジスタ(IR)202に書き込む(ステ
ップF)。次に、インストラクションレジスタ(IR)
202の中の命中をインストラクションデコーダ(ID
EC)204に入力してこれをデコードする。そして、
次の命令に対するアドレスを、アドレスジェネレータ
(AG)206およびプログラムカウンタ(PC)20
8により発生する。レジスタアドレスrs1、rs2
(2つのソースレジスタのデータ)をレジスタファイル
(RF)210から読み出し、Aレジスタ212、Bレ
ジスタ214に書き込む(ステップD)。
Aレジスタ212のデータとBレジスタ214のデータ
を演算ユニットALU216で加算して、結果を結果レ
ジスタ(R)218に書き込む(ステップE)。
を演算ユニットALU216で加算して、結果を結果レ
ジスタ(R)218に書き込む(ステップE)。
結果レジスタ(R)218のデータをrdの示すデステネ
ーションレジスタに書き込む(ステップS)。
ーションレジスタに書き込む(ステップS)。
第3図のタイミングチャートでは上記各ステップをクロ
ックCLKのt1、t2、t3、t4に対応づけて示し
ている。即ち、先ず、のADDにおいては、t2のス
テップDでレジスタアドレスrs1−A0〜4=31、
レジスタアドレスrs2−A0〜12となりレジスタフ
ァイルからr31とr12のデータを読み出す。但し、
実際の読み出し動作はt2の後半で行なっているので、
データrs1−D0〜31、データrs2−D0〜31
にデータが出力されるのはt2の後半となる。r31の
データは3であるので、データrs1−D0〜31=
7、データrs2−D0〜31=3となる。そして、t
3のステップEではr31+r12=10を実行し、結
果をレジスタに書き込む。r31はinsレジスタなの
で、r31の読み出しのときにはCBP−1でCbP
0′0〜3=0となる。次の、t4のステップSでは、
結果レジスタのデータをデステネーションレジスタのr
7に書き込む。書き込みはt4の前半で行なう。なお、
t4の前半においては、のADD命令のためにソース
レジスタからの読み出しが行なわれている。
ックCLKのt1、t2、t3、t4に対応づけて示し
ている。即ち、先ず、のADDにおいては、t2のス
テップDでレジスタアドレスrs1−A0〜4=31、
レジスタアドレスrs2−A0〜12となりレジスタフ
ァイルからr31とr12のデータを読み出す。但し、
実際の読み出し動作はt2の後半で行なっているので、
データrs1−D0〜31、データrs2−D0〜31
にデータが出力されるのはt2の後半となる。r31の
データは3であるので、データrs1−D0〜31=
7、データrs2−D0〜31=3となる。そして、t
3のステップEではr31+r12=10を実行し、結
果をレジスタに書き込む。r31はinsレジスタなの
で、r31の読み出しのときにはCBP−1でCbP
0′0〜3=0となる。次の、t4のステップSでは、
結果レジスタのデータをデステネーションレジスタのr
7に書き込む。書き込みはt4の前半で行なう。なお、
t4の前半においては、のADD命令のためにソース
レジスタからの読み出しが行なわれている。
のSAVEでは、t4のステップEでCWP=CWP
−1を実行する。の実行において、localsへのアクセ
スがなく且つoutsのアクセスにおいてもr8〜r15の
中で後半のr12へのアクセスであったので、レジスタ
(W−CC)108のビット13=“0”のままである
ので、つまりウインドウ13は4本モードのままである
ので、CBP=CBP−1を実行する。
−1を実行する。の実行において、localsへのアクセ
スがなく且つoutsのアクセスにおいてもr8〜r15の
中で後半のr12へのアクセスであったので、レジスタ
(W−CC)108のビット13=“0”のままである
ので、つまりウインドウ13は4本モードのままである
ので、CBP=CBP−1を実行する。
そして、のADDでは、t4のステップDにおいて、
r16とr12のデータ2,3がデータrs1−D0〜
31、rs2−D0〜31に出力される。このとき、r
16はlocalsの前半のレジスタなので、セット出力SE
T−CC=“1”となり、レジスタ(W−CC)108
のビット12に“1”がセットされる。その結果、ウイ
ンドウ12は8本モードになる。
r16とr12のデータ2,3がデータrs1−D0〜
31、rs2−D0〜31に出力される。このとき、r
16はlocalsの前半のレジスタなので、セット出力SE
T−CC=“1”となり、レジスタ(W−CC)108
のビット12に“1”がセットされる。その結果、ウイ
ンドウ12は8本モードになる。
次の、のSAVEでは、t4のステップEで、CWP
=CWP−1を実行する。ウインドウ12は8本モード
になっているので、CBP=CBP−1を実行する。
=CWP−1を実行する。ウインドウ12は8本モード
になっているので、CBP=CBP−1を実行する。
以上の例では、localsとoutsの割り当て数をブロック単
位で管理しており、localsとins/outsのレジスタ数が等
しく、さらにlocalsとins/outsを分離して別のモジュー
ルにしている。その結果、ウインドウ1個当たりのコン
ディション情報が1ビットでよく、実アドレス発生回路
が簡単になり、実アドレスの計算も非常に高速に実行で
きるようになるというメリットがある。
位で管理しており、localsとins/outsのレジスタ数が等
しく、さらにlocalsとins/outsを分離して別のモジュー
ルにしている。その結果、ウインドウ1個当たりのコン
ディション情報が1ビットでよく、実アドレス発生回路
が簡単になり、実アドレスの計算も非常に高速に実行で
きるようになるというメリットがある。
なお、上記実施例では8本と4本の切り替えを例示した
が、レジスタの割り当て数は8本〜0本の範囲で任意に
選ぶことができる。また、localsとoutsへのレジスタの
割り当て数を異なるようにしても良い。
が、レジスタの割り当て数は8本〜0本の範囲で任意に
選ぶことができる。また、localsとoutsへのレジスタの
割り当て数を異なるようにしても良い。
ちなみに、ウインドウに対するレジスタ数を可変とすれ
ば、レジスタ(W−CC)108としては14ビットレ
ジスタが、カレントブロックポインタ(CBP)109
としては4ビットカウンタが、およびサブストラクタ
(INSAG)110,111,112としては4ビッ
トフルアダー×3=12ビットフルアダーの機能回路が
それぞれ必要となる。これに対し、ウインドウをn個追
加するのに必要な回路は、32ビット長レジスタ×16
×nであるので、第1図の構成のほうがコストパーフォ
ーマンスが非常に優れていることがわかる。
ば、レジスタ(W−CC)108としては14ビットレ
ジスタが、カレントブロックポインタ(CBP)109
としては4ビットカウンタが、およびサブストラクタ
(INSAG)110,111,112としては4ビッ
トフルアダー×3=12ビットフルアダーの機能回路が
それぞれ必要となる。これに対し、ウインドウをn個追
加するのに必要な回路は、32ビット長レジスタ×16
×nであるので、第1図の構成のほうがコストパーフォ
ーマンスが非常に優れていることがわかる。
また、上記実施例ではハードウェアで8本/4本の切り
替えを行なっているが、プロセッサ自身が切り替え命令
を持つようにして、その命令を用いてソフトウェア上で
切り替えを行なうようにしても良いことはもちろんであ
る。
替えを行なっているが、プロセッサ自身が切り替え命令
を持つようにして、その命令を用いてソフトウェア上で
切り替えを行なうようにしても良いことはもちろんであ
る。
この場合、第1図に示すW−CCレジスタのような機能
をはたすレジスタの内容を、所定の値に書き変える命令
を、プロセッサの命令セットに設ければ良い。
をはたすレジスタの内容を、所定の値に書き変える命令
を、プロセッサの命令セットに設ければ良い。
本発明によれば、複数のワーキングレジスタを有するシ
ステムにおいて、ウインドウ(モジュール)に割り当て
るレジスタ数を変化することができるため、システムの
冗長性が無くなり、ハードウェア資源を無駄無く有効に
利用することが可能となり、コストパーフォーマンスの
優れた、レジスタウインドウ方式によるマイクロプロセ
ッサを得ることができるという可変方式の特長に加え、
さらに、本発明によれば、レジスタウインドウのレジス
タの割り当て数の記憶を、ワーキングレジスタに対する
アドレス情報に基づいて自動的に行うようにしたので、
固定方式の既存のプログラムをそのまま実行でき、かつ
ウインドウのオーバーフロー/アンダーフローによるオ
ーバーヘッドを低減することの可能なマイクロプロセッ
サを得ることができる。
ステムにおいて、ウインドウ(モジュール)に割り当て
るレジスタ数を変化することができるため、システムの
冗長性が無くなり、ハードウェア資源を無駄無く有効に
利用することが可能となり、コストパーフォーマンスの
優れた、レジスタウインドウ方式によるマイクロプロセ
ッサを得ることができるという可変方式の特長に加え、
さらに、本発明によれば、レジスタウインドウのレジス
タの割り当て数の記憶を、ワーキングレジスタに対する
アドレス情報に基づいて自動的に行うようにしたので、
固定方式の既存のプログラムをそのまま実行でき、かつ
ウインドウのオーバーフロー/アンダーフローによるオ
ーバーヘッドを低減することの可能なマイクロプロセッ
サを得ることができる。
第1図は本発明の一実施例に係るマイクロプロセッサの
ブロック図、第2図は第1図のR−FILE1モジュー
ル101の詳細例を示す説明図、第3図は第1図の装置
の動作を説明するタイミングチャート、第4図はパイプ
ライン構造の概略説明図である。 101…R−FILE1モジュール、 102…R−FILE1モジュール、 103…R−FILE2モジュール、 104,105,106…デコーダ(DEC)、 107…カレントウインドウポインタ(CWP)、 108…レジスタ(W−CC)、 109…カレントブロックポインタ(CBP)、 110,111,112…サブストラクタ(INSA
G)。
ブロック図、第2図は第1図のR−FILE1モジュー
ル101の詳細例を示す説明図、第3図は第1図の装置
の動作を説明するタイミングチャート、第4図はパイプ
ライン構造の概略説明図である。 101…R−FILE1モジュール、 102…R−FILE1モジュール、 103…R−FILE2モジュール、 104,105,106…デコーダ(DEC)、 107…カレントウインドウポインタ(CWP)、 108…レジスタ(W−CC)、 109…カレントブロックポインタ(CBP)、 110,111,112…サブストラクタ(INSA
G)。
Claims (1)
- 【請求項1】複数個のレジスタウィンドウを有し、前記
各レジスタウィンドウは複数個のレジスタを有するマイ
クロプロセッサであって、 前記各レジスタは前記レジスタウィンドウのうちの複数
のものに対して割り当てられており、さらに、 プログラム上の個々のプロシージャに対して前記レジス
タウィンドウのうちのいずれかを割り当てることによ
り、前記各プロシージャ上で使用されるワーキングレジ
スタを決定する第1決定手段と、 前記各レジスタウィンドウへのレジスタ割り当て数を、
前記ワーキングレジスタに対するアドレス情報に基づい
て自動的に記憶する記憶手段と、 前記記憶手段中の前記割り当て数に基づいて、前記各レ
ジスタウィンドウが前記レジスタのうちのどれによって
構成されるかを決定する第2決定手段と、を備えること
を特徴とするマイクロプロセッサ。
Priority Applications (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1037805A JPH0630063B2 (ja) | 1989-02-17 | 1989-02-17 | マイクロプロセッサ |
| DE69028224T DE69028224T2 (de) | 1989-02-17 | 1990-02-16 | Mikroprozessor |
| EP90103037A EP0383342B1 (en) | 1989-02-17 | 1990-02-16 | Microprocessor |
| KR1019900001965A KR920006789B1 (ko) | 1989-02-17 | 1990-02-17 | 마이크로프로세서 |
| US08/287,428 US5642523A (en) | 1989-02-17 | 1994-08-09 | Microprocessor with variable size register windowing |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1037805A JPH0630063B2 (ja) | 1989-02-17 | 1989-02-17 | マイクロプロセッサ |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH02217925A JPH02217925A (ja) | 1990-08-30 |
| JPH0630063B2 true JPH0630063B2 (ja) | 1994-04-20 |
Family
ID=12507729
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1037805A Expired - Fee Related JPH0630063B2 (ja) | 1989-02-17 | 1989-02-17 | マイクロプロセッサ |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US5642523A (ja) |
| EP (1) | EP0383342B1 (ja) |
| JP (1) | JPH0630063B2 (ja) |
| KR (1) | KR920006789B1 (ja) |
| DE (1) | DE69028224T2 (ja) |
Families Citing this family (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
| JPH07114498A (ja) * | 1993-10-15 | 1995-05-02 | Toshiba Corp | マイクロプロセッサ |
| JP4573189B2 (ja) * | 1998-10-10 | 2010-11-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムコード変換方法 |
| JP2000353092A (ja) * | 1999-06-09 | 2000-12-19 | Nec Corp | 情報処理装置及びそのレジスタファイル切替方法 |
| US6553487B1 (en) * | 2000-01-07 | 2003-04-22 | Motorola, Inc. | Device and method for performing high-speed low overhead context switch |
| JP3763518B2 (ja) | 2001-05-29 | 2006-04-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ、そのコンパイル方法およびプログラム |
| EP1470476A4 (en) * | 2002-01-31 | 2007-05-30 | Arc Int | CONFIGURABLE DATA PROCESSOR WITH MULTI-LENGTH INSTRUCTION KIT ARCHITECTURE |
| US7127592B2 (en) * | 2003-01-08 | 2006-10-24 | Sun Microsystems, Inc. | Method and apparatus for dynamically allocating registers in a windowed architecture |
| JP2006039874A (ja) * | 2004-07-26 | 2006-02-09 | Fujitsu Ltd | 情報処理装置 |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4777588A (en) * | 1985-08-30 | 1988-10-11 | Advanced Micro Devices, Inc. | General-purpose register file optimized for intraprocedural register allocation, procedure calls, and multitasking performance |
| US5021947A (en) * | 1986-03-31 | 1991-06-04 | Hughes Aircraft Company | Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing |
| JP2545789B2 (ja) * | 1986-04-14 | 1996-10-23 | 株式会社日立製作所 | 情報処理装置 |
| JPH0217541A (ja) * | 1988-07-06 | 1990-01-22 | Hitachi Ltd | スタツク方式マイクロコンピュータ |
| US5083263A (en) * | 1988-07-28 | 1992-01-21 | Sun Microsystems, Inc. | BISC with interconnected register ring and selectively operating portion of the ring as a conventional computer |
-
1989
- 1989-02-17 JP JP1037805A patent/JPH0630063B2/ja not_active Expired - Fee Related
-
1990
- 1990-02-16 EP EP90103037A patent/EP0383342B1/en not_active Expired - Lifetime
- 1990-02-16 DE DE69028224T patent/DE69028224T2/de not_active Expired - Fee Related
- 1990-02-17 KR KR1019900001965A patent/KR920006789B1/ko not_active Expired
-
1994
- 1994-08-09 US US08/287,428 patent/US5642523A/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| US5642523A (en) | 1997-06-24 |
| EP0383342B1 (en) | 1996-08-28 |
| KR900013390A (ko) | 1990-09-05 |
| EP0383342A3 (en) | 1992-10-07 |
| KR920006789B1 (ko) | 1992-08-17 |
| DE69028224T2 (de) | 1997-02-06 |
| JPH02217925A (ja) | 1990-08-30 |
| EP0383342A2 (en) | 1990-08-22 |
| DE69028224D1 (de) | 1996-10-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6157997A (en) | Processor and information processing apparatus with a reconfigurable circuit | |
| EP0213843B1 (en) | Digital processor control | |
| GB2077010A (en) | Microprogramme control method and apparatus therefor | |
| US5642523A (en) | Microprocessor with variable size register windowing | |
| EP0110227B1 (en) | Control memory organization | |
| JPS5911921B2 (ja) | 数値制御装置 | |
| JPH05197619A (ja) | マルチcpu用メモリ制御回路 | |
| JP2618223B2 (ja) | シングルチツプマイクロコンピユータ | |
| JPH10326224A (ja) | ディジタル・シグナル・プロセッサ | |
| JPH01230125A (ja) | レジスタの部分的更新機能を持つデータ処理装置 | |
| JP2942449B2 (ja) | データ処理装置 | |
| JPH0784937A (ja) | 周辺回路のマイクロプロセッサ接続回路 | |
| JPH033047A (ja) | 演算機能付きメモリ | |
| JP2504535B2 (ja) | バスユニットの構成方法 | |
| JPS5999551A (ja) | アドレス生成回路 | |
| JPS6320631A (ja) | レジスタ選択方式 | |
| JPH0619710B2 (ja) | レジスタ制御方式 | |
| JPS62245350A (ja) | ペ−ジ切替制御方式 | |
| JPH0312338B2 (ja) | ||
| JPS5998253A (ja) | マイクロプログラム制御装置 | |
| JPH03137753A (ja) | アクセス制御装置 | |
| JPH0782463B2 (ja) | 通信制御装置 | |
| JPH0540726A (ja) | ライトバツフアのギヤザリング制御方式 | |
| JPH04195895A (ja) | Icメモリ | |
| JPH03126143A (ja) | 中央処理装置の周辺回路 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |