JP2000353092A - 情報処理装置及びそのレジスタファイル切替方法 - Google Patents

情報処理装置及びそのレジスタファイル切替方法

Info

Publication number
JP2000353092A
JP2000353092A JP11162784A JP16278499A JP2000353092A JP 2000353092 A JP2000353092 A JP 2000353092A JP 11162784 A JP11162784 A JP 11162784A JP 16278499 A JP16278499 A JP 16278499A JP 2000353092 A JP2000353092 A JP 2000353092A
Authority
JP
Japan
Prior art keywords
instruction
register file
register
data
written
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
JP11162784A
Other languages
English (en)
Inventor
Hideki Sugimoto
英樹 杉本
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 JP11162784A priority Critical patent/JP2000353092A/ja
Priority to EP00112075A priority patent/EP1059579A3/en
Priority to US09/589,963 priority patent/US6704858B1/en
Publication of JP2000353092A publication Critical patent/JP2000353092A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

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)

Abstract

(57)【要約】 【課題】受け渡すべきパラメータの数に影響されずにレ
ジスタファイルを迅速に切り替え可能な情報処理装置を
及びそのレジスタファイル切替方法を提供する。 【解決手段】情報処理装置は、第1命令の実行時に使用
される第1レジスタファイル12と、第2命令の実行時
に使用される第2レジスタファイル13とを備え、第1
命令から第2命令が呼び出された時に、第1レジスタフ
ァイルが使用される状態から第2レジスタファイルが使
用される状態に切り替える。そして、第2命令の実行時
に、該第2命令で使用するデータが上記切り替えられた
第2レジスタファイルに書き込まれていなければ第1レ
ジスタファイルから該データを入手し、書き込まれてい
れば第2のレジスタファイルから該データを入手する。
そして、入手されたデータに基づき第2命令を実行した
結果を第2レジスタファイルに書き込む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複数のレジスタフ
ァイルを有する情報処理装置及びそのレジスタファイル
切替方法に関し、特にレジスタファイルの切り替えに伴
うオーバーヘッドを減少させる技術に関する。
【0002】
【従来の技術】従来、複数のレジスタバンクを有する情
報処理装置が知られている。このような情報処理装置で
は、一般に、例えばメインルーチン用に第1レジスタバ
ンクが、サブルーチン用に第2レジスタバンクがそれぞ
れ割り当てられている。そして、メインルーチンがサブ
ルーチンをコールする時に、第1レジスタバンクから第
2レジスタバンクに切り替えられ、サブルーチンがメイ
ンルーチンにリターンする時に第2レジスタバンクから
第1レジスタバンクに切り替えられる。
【0003】このようなバンク切り替えが行われる場
合、メインルーチンにおける処理とサブルーチンにおけ
る処理との連続性を維持するために、サブルーチン用の
第2レジスタバンクを構成する第2レジスタファイルの
内容を、メインルーチン用の第1レジスタバンクを構成
する第1レジスタファイルの内容に一致させる必要があ
る。このために、従来以下のような技術が用いられてい
る。
【0004】バンク切替の第1の従来技術は、メインル
ーチンからサブルーチンをコールする時に、それまで使
用していた第1レジスタバンクを第2レジスタバンクに
切り替えると共に、第1レジスタファイルの内容を第2
レジスタファイルに複写する方法である。この場合、第
1レジスタファイルの全内容を複写する場合と、必要な
部分だけを複写する場合とがある。なお、サブルーチン
からメインルーチンにリターンする時は、このリターン
の直前で特殊命令を実行することにより、サブルーチン
で得られた処理結果だけを第1レジスタファイルの特定
のレジスタに戻すという方法が採用されている。
【0005】図7は、この第1の従来技術を用いた情報
処理装置の構成を示すブロック図である。この情報処理
装置は、命令レジスタ50、命令デコーダ51、第1レ
ジスタファイル52、第2レジスタファイル53、セレ
クタ54、セレクタ55、バンク切替制御回路56及び
演算ユニット57から構成されている。
【0006】命令レジスタ50は、図示しない命令フェ
ッチ機構によって主記憶から読み出された命令を一時記
憶する。この命令レジスタ50の内容は命令デコーダ5
1に供給される。命令デコーダ51は、命令レジスタ5
0にセットされている命令中のレジスタ指定部を抽出
し、レジスタアドレスRAとして第1レジスタファイル
52、第2レジスタファイル53及びセレクタ54に供
給する。このレジスタアドレスRAには、読出アドレス
RDAと書込アドレスWRAが含まれる。
【0007】また、命令デコーダ51は、命令のオペレ
ーションコード部をデコードし、バンク切替信号BK、
レジスタ転送信号RT及び演算信号OPを生成する。バ
ンク切替信号BKには、信号CALL及び信号RETが
含まれる。信号CALLはコール命令が命令レジスタ5
0にセットされた時に生成され、信号RETはリターン
命令が命令レジスタ50にセットされた時に生成され
る。また、レジスタ転送信号RTは、レジスタ転送命令
が命令レジスタ50にセットされた時に生成される。こ
のレジスタ転送命令は、第1レジスタファイル52の内
容を第2レジスタファイル53に転送するための命令で
ある。更に、演算信号OPは、コール命令、リターン命
令及びレジスタ転送命令以外の命令、例えば算術演算命
令、論理演算命令、比較命令、移動命令といった各種命
令が命令レジスタ50にセットされた時に生成される。
【0008】第1レジスタファイル52は、例えば32
個のレジスタから構成されており、メインルーチンの実
行時に使用される。命令デコーダ51からのレジスタア
ドレスRAが第1レジスタファイル52に供給される
と、第1レジスタファイル52内の、読出アドレスRD
Aで指定されたレジスタからデータが読み出される。こ
の読み出されたデータは、セレクタ54及び55の各入
力端子Aに供給される。また、演算ユニット57からの
データは、メインルーチンの実行中であることを条件
に、第1レジスタファイル52内の、書込アドレスWR
Aで指定されるレジスタに書き込まれる。
【0009】同様に、第2レジスタファイル53は、例
えば32個のレジスタから構成されおり、サブルーチン
が実行される時に使用される。命令デコーダ51からの
レジスタアドレスRAが第2レジスタファイル52に供
給されると、第2レジスタファイル53内の、読出アド
レスRDAで指定されたレジスタからデータが読み出さ
れる。この読み出されたデータは、セレクタ55の入力
端子Bに供給される。また、演算ユニット57からのデ
ータは、サブルーチンの実行中であるということを条件
に、第2レジスタファイル53中の、書込アドレスWR
Aで指定されるレジスタに書き込まれる。
【0010】セレクタ54は、セレクト端子Sに供給さ
れるレジスタ転送信号RTに従って、入力端子Aに入力
される第1レジスタファイル52からのデータ又は入力
端子Bに入力される演算ユニット57からのデータを選
択し、第2レジスタファイル53に供給する。即ち、命
令デコーダ51からレジスタ転送信号RTがセレクタ5
4のセレクト端子Sに供給される場合は、セレクタ54
の入力端子A側が選択され、これにより第1レジスタフ
ァイル52からのデータが、このセレクタ54を介して
直接(演算ユニット57を経由しないで)第2レジスタ
ファイル53に転送される。一方、命令デコーダ51か
らレジスタ転送信号RTがセレクタ54のセレクト端子
Sに供給されない場合は入力端子B側が選択され、これ
により演算ユニット57からのデータが、このセレクタ
54を介して第2レジスタファイル53に転送される。
【0011】セレクタ55は、バンク切替制御回路56
からの制御信号に応答して第1レジスタファイル52か
らのデータ又は第2レジスタファイル53からのデータ
の何れかを選択して演算ユニット57に供給する。バン
ク切替制御回路56は、命令デコーダ51から信号CA
LLを受け取った場合に、セレクタ55の入力端子B側
を選択し、信号RETを受け取った場合に、セレクタ5
5の入力端子A側を選択するような制御信号を生成す
る。従って、メインルーチンを実行中は第1レジスタフ
ァイル52からのデータが、サブルーチンを実行中は第
2レジスタファイル53からのデータが演算ユニット5
7に供給される。
【0012】演算ユニット57は、命令デコーダ51か
らの演算信号OPに従って、セレクタ55からのデータ
に対する演算を実行する。この演算結果は、メインルー
チンを実行中は、第1レジスタファイル52内の、書込
アドレスWRAで指定されるレジスタに格納され、サブ
ルーチンを実行中は、第2レジスタファイル52内の、
書込アドレスWRAで指定されるレジスタに格納され
る。
【0013】この第1の従来技術に係る情報処理装置に
よれば、メインルーチンでコール命令を実行する直前に
レジスタ転送命令を実行することにより、第1レジスタ
ファイルの内容が第2レジスタファイルに複写される。
その結果、メインルーチンにおける処理とサブルーチン
における処理との連続性が維持される。
【0014】また、バンク切替の第2の従来技術は、メ
インルーチンからサブルーチンをコールする場合に、第
1レジスタファイルから第2レジスタファイルへのパラ
メータの直接転送は行わず、主記憶を介してパラメータ
の受け渡しを行う方法である。即ち、メインルーチンで
は、サブルーチンをコールするに先立って、第2レジス
タファイルにセットすべきパラメータを主記憶の所定領
域にストアする。一方、サブルーチンでは、当該サブル
ーチンの命令を実行するに先立って、主記憶の上記所定
領域から第2レジスタファイルにロードする。この第2
の従来技術では、主記憶の代わりに、メインルーチン及
びサブルーチンの双方からアクセス可能な共通レジスタ
が使用される場合もある。
【0015】この第2の従来技術に係る情報処理装置で
は、図7に示したセレクタ54及び第1レジスタファイ
ル52からセレクタ54を介して第2レジスタファイル
53に至るデータ転送経路は不要になる。その結果、上
記第1の従来技術に係る情報処理装置に比べて構成が簡
単になる。
【0016】更に、バンク切替の第3の従来技術は、所
謂レジスタウインドウと呼ばれる技術である。この第3
の従来技術では、図8に示すように、レジスタファイル
はメインルーチン用領域、サブルーチン用領域及び共通
領域に分けられている。そして、レジスタファイルに
は、例えば物理アドレス0〜47が付されている。
【0017】一方、メインルーチンからレジスタファイ
ルにアクセスする場合は、メインルーチン用論理アドレ
ス0〜31が用られる。この論理アドレス0〜31のう
ち、論理アドレス0〜15は物理アドレス16〜31に
対応付けられ、論理アドレス16〜31は物理アドレス
0〜16に対応付けられる。同様に、サブルーチンから
レジスタファイルにアクセスする場合は、サブルーチン
用論理アドレス0〜31が用られる。この論理アドレス
0〜31のうち、論理アドレス0〜15は物理アドレス
16〜31に対応付けられ、論理アドレス16〜31は
物理アドレス32〜47に対応付けられる。これらの対
応付けは、例えばメインルーチン及びサブルーチンの各
プログラムをコンパイルする時に行われる。
【0018】この情報処理装置では、メインルーチン
は、メインルーチン用論理アドレス0〜15で指定され
る共通領域をパラメータの受け渡し領域、論理アドレス
16〜31で指定されるメインルーチン用領域を作業用
領域として使用する。また、サブルーチンは、サブルー
チン用論理アドレス0〜15で指定される共通領域をパ
ラメータの受け渡し領域、論理アドレス16〜31で指
定されるサブルーチン用領域を作業用領域として使用す
る。この場合、メインルーチンの共通領域はサブルーチ
ンの共通領域と物理的に同一であるので、メインルーチ
ンは、サブルーチンコール時にパラメータをサブルーチ
ン用のレジスタファイルに転送する必要がない。その結
果、レジスタバンクの切り替えに伴うオーバーヘッドを
少なくすることができる。
【0019】この第3の従来技術に係る情報処理装置と
して、例えば特開平7−64857号公報に「データ記
憶装置」が開示されている。この第3の従来技術では、
ウインドウ構成の第1レジスタファイルは読み出しポー
トと書き込みポートを各1つずつ備えたレジスタを備
え、1ウインドウ分の第2レジスタファイルとの間でデ
ータアクセスを行う。このデータ処理装置では、ウイン
ドウポインタの値に応じて第1レジスタファイルの選択
された部分が第2レジスタファイルに置き換えられる。
この置き換えはウインドウポインタの値が変化したとき
に行われる。演算器からレジスタへのアクセスは、第2
レジスタファイルへのアクセスとして処理される。第2
レジスタファイルを構成するレジスタは、演算器の数に
応じた数の読み出しポートと書き込みポートとの他に、
第1レジスタファイルとのデータアクセスのための読み
出しポートと書き込みポートを備える。このように、ウ
インドウ構成の第1レジスタファイルと演算器との間に
第2のレジスタファイルを設けることにより、レジスタ
ファイル全体の回路規模が縮小されている。
【0020】
【発明が解決しようとする課題】しかしながら、上記第
1の従来技術に係る情報処理装置では、第1レジスタフ
ァイルから第2レジスタファイルにデータを現実に転送
する必要があるので、バンク切替に時間がかかる。具体
的には、レジスタ間のデータ転送には、1データ転送毎
に通常1クロックかかり、レジスタ数が32であれば、
全データを転送するのに32クロックかかる。
【0021】この第1の従来技術では、サブルーチンの
実行前に全データ又は必要なデータを予め転送しておか
なければならないため、転送すべきレジスタの数が多け
れば多いほど、レジスタバンクの切り替えに伴うデータ
転送のオーバーヘッドが大きくなる。しかも、サブルー
チンで実行される関数が小さいために演算時間が32ク
ロックに満たない場合も多く、このような場合は、演算
ユニット57の待ち時間が多くなり、その利用効率が上
がらない。特にリアルタイム処理ではデータ転送のオー
バーヘッドによる情報処理装置の処理性能低下は問題で
ある。
【0022】また、上記第2の従来技術に係る情報処理
装置では、主記憶や共有レジスタを経由してルーチン間
のデータ受け渡しを行うので、この処理に時間がかかり
実効処理性能が落ちる。特に、アクセス速度の遅い主記
憶を経由して第1レジスタファイルに記憶されているデ
ータを第2レジスタファイルに書き込む場合は、バンク
切替に要する時間が大きくなる。また、上記第1及び第
2の従来技術に係る情報処理装置が、複数のルーチンを
並列処理可能な情報処理装置である場合、ルーチン間で
データの排他処理を行う必要があるため更にオーバーヘ
ッドが大きくなり処理性能が低下する。
【0023】更に、第3の従来技術に係る情報処理装置
によれば、第1レジスタファイルから第2レジスタファ
イルにデータを現実に転送する必要がないのでバンク切
替を迅速に行うことができる。しかし、この第3の従来
技術では、共通領域がハードウェア的に固定されるの
で、レジスタを有効活用できないという問題がある。例
えば、或るソフトウェアではサブルーチンをコールする
場合に少ないパラメータで済むのに、他のソフトウェア
では多くのパラメータを必要とするような場合、共通領
域のサイズが固定であるために使用されないレジスタが
出現したり、レジスタが不足するという事態が発生す
る。
【0024】また、サブルーチンをデータ転送せずに実
行するためには、予め共通領域に必要なデータを格納し
ておかなければならない。なぜなら、サブルーチンはメ
インルーチン領域からデータを直接読み出すことができ
ず、メインルーチンはサブルーチン領域にデータを直接
書き込んでおくことができないからである。このため、
共通領域にメインルーチンとサブルーチンとで共用され
るデータを選択して格納するようにプログラムし、或い
はコンパイルしなければならず、ソフトウェアの負荷が
大きくなり、汎用性も乏しくなる。
【0025】本発明は、上述した問題を解消するために
なされたものであり、受け渡すべきパラメータの数に影
響されずに、レジスタファイルを迅速に切り替えること
ができる情報処理装置及びそのレジスタファイル切替方
法を提供することを目的とする。
【0026】
【課題を解決するための手段】本発明の第1の態様に係
る情報処理装置は、上記目的を達成するために、第1命
令の実行時に使用される第1レジスタファイルと、第2
命令の実行時に使用される第2レジスタファイルと、前
記第1命令から前記第2命令が呼び出された時に、前記
第1レジスタファイルが使用される状態から前記第2レ
ジスタファイルが使用される状態に切り替える制御部
と、前記第2命令の実行時に、該第2命令で使用するデ
ータが前記制御部によって切り替えられた前記第2レジ
スタファイルに書き込まれていなければ、前記第1レジ
スタファイルから該データを入手する第1経路と、前記
第2命令の実行時に、該第2命令で使用するデータが前
記制御部によって切り替えられた前記第2レジスタファ
イルに書き込まれていれば、前記第2のレジスタファイ
ルから該データを入手する第2経路と、前記第1経路及
び前記第2経路の何れかから入手されたデータに基づき
前記第2命令を実行した結果を前記第2レジスタファイ
ルに書き込む第3経路、とを備えている。
【0027】この情報処理装置では、第1命令から第2
命令が呼び出された時に、第1レジスタファイルが使用
される状態から第2レジスタファイルが使用される状態
に切り替えられる。そして、第2命令の実行時は、第2
命令で使用するデータが第2レジスタファイルに未だ書
き込まれていない場合は、第1レジスタファイルから入
手されたデータを使用して命令を実行し、結果を第2レ
ジスタファイルに書き込む。従って、第2命令で使用す
るデータを予め第1レジスタファイルから第2レジスタ
ファイルに転送する必要がないので、レジスタファイル
の切替のオーバーヘッドを小さくできる。また、従来の
レジスタウインドウにおける固定的なサイズの共通領域
とは異なり、第2命令で使用するデータが格納されたレ
ジスタのみが共通領域として使用されることに等しいの
で、使用されないレジスタが出現したり、レジスタが不
足するという事態は発生しない。
【0028】また、本発明の第2の態様に係る情報処理
装置は、上記と同様の目的で、少なくとも3つの命令の
それぞれに対応し、各命令を実行するために使用される
少なくとも3個のレジスタファイルと、所定の命令から
他の命令が呼び出された時に、前記所定の命令に対応す
る所定のレジスタファイルが使用される状態から前記他
の命令に対応する他のレジスタファイルファイルが使用
される状態に切り替える制御部と、前記他の命令の実行
時に、該他の命令で使用するデータが前記制御部によっ
て切り替えられた前記他のレジスタファイルに書き込ま
れていなければ、前記他のレジスタファイル以外のレジ
スタファイルから該データを入手する第1経路と、前記
他の命令の実行時に、該他の命令で使用されるデータが
前記制御部によって切り替えられた前記他のレジスタフ
ァイルに書き込まれていれば、前記他のレジスタファイ
ルから該データを入手する第2経路と、前記第1経路及
び前記第2経路の何れかから入手されたデータに基づき
前記他の命令を実行した結果を前記他のレジスタファイ
ルに書き込む第3経路、とを備えている。
【0029】この情報処理装置によれば、3個以上のレ
ジスタファイルを、少ないオーバーヘッドで切り替える
ことができるので、高速なデータ処理が可能になる。
【0030】また、本発明の第3の態様に係る情報処理
装置のレジスタファイル切替方法は、上記と同様の目的
で、第1命令の実行時に使用される第1レジスタファイ
ルと、第2命令の実行時に使用される第2レジスタファ
イルとを備えた情報処理装置のレジスタファイル切替方
法であって、(a)前記第1命令から前記第2命令が呼
び出された時に、前記第1レジスタファイルが使用され
る状態から前記第2レジスタファイルが使用される状態
に切り替えるステップと、(b)前記第2命令の実行時
に、該第2命令で使用するデータが前記ステップ(a)
で切り替えられた前記第2レジスタファイルに書き込ま
れていなければ、前記第1レジスタファイルから該デー
タを入手するステップと、(c)前記第2命令の実行時
に、該第2命令で使用するデータが前記ステップ(a)
で切り替えられた前記第2レジスタファイルに書き込ま
れていれば、前記第2のレジスタファイルから該データ
を入手するステップと、(d)前記ステップ(b)及び
前記ステップ(c)の何れかで入手されたデータに基づ
き前記第2命令を実行した結果を前記第2レジスタファ
イルに書き込むステップ、とで構成されている。
【0031】更に、本発明の第4の態様に係る情報処理
装置のレジスタファイル切替方法は、上記と同様の目的
で、少なくとも3つの命令のそれぞれに対応し、各命令
を実行するために使用される少なくとも3個のレジスタ
ファイルを備えた情報処理装置のレジスタファイル切替
方法であって、(a)所定の命令から他の命令が呼び出
された時に、前記所定の命令に対応する所定のレジスタ
ファイルが使用される状態から前記他の命令に対応する
他のレジスタファイルファイルが使用される状態に切り
替えるステップと、(b)前記他の命令の実行時に、該
他の命令で使用するデータが前記ステップ(a)で切り
替えられた前記他のレジスタファイルに書き込まれてい
なければ、前記他のレジスタファイル以外のレジスタフ
ァイルから該データを入手するステップと、(c)前記
他の命令の実行時に、該他の命令で使用されるデータが
前記ステップ(a)で切り替えられた前記他のレジスタ
ファイルに書き込まれていれば、前記他のレジスタファ
イルから該データを入手するステップと、(d)前記ス
テップ(b)及び前記ステップ(c)の何れかで入手さ
れたデータに基づき前記他の命令を実行した結果を前記
他のレジスタファイルに書き込むステップ、とで構成さ
れている。
【0032】
【発明の実施の形態】以下、本発明の実施の形態を、図
面を参照しながら説明する。なお、この情報処理装置で
は、2オペランド形式の命令セットが使用され、各オペ
ランドとしてレジスタ及びイミディエイト値が使用され
るものとする。従って、この情報処理装置で使用される
命令は、基本的には、第1オペランドとして指定された
レジスタの内容又はイミディエイト値と第2オペランド
スタとして指定されたレジスタの内容とを演算し、演算
結果を第2オペランドとして指令されたレジスタに格納
するものとする。
【0033】(実施の形態1)図1は本発明の実施の形
態1に係る情報処理装置の主要部の構成を示すブロック
図である。この情報処理装置は、命令レジスタ10、命
令デコーダ11、第1レジスタファイル12、第2レジ
スタファイル13、書込済みフラグ14、セレクタ15
A及び15B、ANDゲート16A及び16B、サブ実
行中フラグ17、演算ユニット18並びにインバータ1
9から構成されている。
【0034】命令レジスタ10は、図示しない命令フェ
ッチ機構によって主記憶から読み出された命令を一時記
憶する。この命令レジスタ10の内容は命令デコーダ1
1に供給される。
【0035】命令デコーダ11は、命令レジスタ10に
記憶されている命令の第1オペランド指定部を抽出し、
第1レジスタアドレスRA1として第1レジスタファイ
ル12及び第2レジスタファイル13に供給する。ま
た、命令デコーダ11は、命令レジスタ10に記憶され
ている命令の第2オペランド指定部を抽出し、第2レジ
スタアドレスRA2として第1レジスタファイル12及
び第2レジスタファイル13に供給する。なお、図1で
は、その経路を省略してあるが、命令の第1オペランド
指定部がイミディエイト値として定義されている場合
は、そのイミディエイト値がそのままセレクタ15Aの
入力端子Aに供給される。同様に、命令の第2オペラン
ド指定部がイミディエイト値として定義されている場合
は、そのイミディエイト値がそのままセレクタ15Bの
入力端子Aに供給される。
【0036】更に、命令デコーダ11は、命令レジスタ
10に記憶されている命令のオペレーションコード部を
デコードし、各命令を表す信号を生成する。例えば、コ
ール命令(call命令)が命令レジスタ10に記憶さ
れている場合は、命令デコーダ11は、コール命令を表
す信号CALLを生成し、サブ実行中フラグ17に供給
する。また、リターン命令(ret命令)が命令レジス
タ10に記憶されている場合は、命令デコーダ11は、
リターン命令を表す信号RETを生成してサブ実行中フ
ラグ17に供給する。これら以外の命令、例えば算術演
算命令、論理演算命令、比較命令、移動命令、分岐命令
等が命令レジスタ10に記憶されている場合は、命令デ
コーダ11は、各命令を表す演算信号OPを生成して演
算ユニット18に供給する。
【0037】第1レジスタファイル12は、例えば32
個のレジスタr0、r1、・・・、r31から構成され
ており、第1命令列から成るメインルーチンを実行する
時に使用される。各レジスタはデュアルポートRAMか
ら構成されている。この第1レジスタファイル12の第
1出力ポートからは、第1レジスタアドレスRA1で指
定されたレジスタの内容が読み出され、セレクタ15A
の入力端子Aに供給される。同様に、この第1レジスタ
ファイル12の第2出力ポートからは、第2レジスタア
ドレスRA2で指定されたレジスタの内容が読み出さ
れ、セレクタ15Bの入力端子Aに供給される。また、
第1レジスタファイル12は、サブ実行中フラグ17か
らの信号SUBが「0」の状態、即ちメインルーチンが
実行されている状態で書込イネーブルにされ、書き込み
を伴う命令が実行された場合は、第2レジスタアドレス
RA2で指定されるレジスタに演算ユニット18からの
データが書き込まれる。
【0038】第2レジスタファイル13は、例えば32
個のレジスタr0、r1、・・・、r31から構成され
ており、第2命令列から成るサブルーチンを実行する時
に使用される。各レジスタはデュアルポートRAMから
構成されている。この第2レジスタファイル13の第1
出力ポートからは、第1レジスタアドレスRA1で指定
されたレジスタの内容が読み出され、セレクタ15Aの
入力端子Bに供給される。また、この第2レジスタファ
イル13の第2出力ポートからは、第2レジスタアドレ
スRA2で指定されたレジスタの内容が読み出され、セ
レクタ15Bの入力端子Bに供給される。また、第2レ
ジスタファイル13は、サブ実行中フラグ17からの信
号SUBが「1」の状態、即ちサブルーチンが実行され
ている状態で書込イネーブルにされ、書き込みを伴う命
令が実行された場合は、第2レジスタアドレスRA2で
指定されるレジスタに演算ユニット18からのデータが
書き込まれる。
【0039】書込済みフラグ14は、32個のフラグf
0、f1、・・・、f31から構成されている。32個
のフラグf0、f1、・・・、f31のぞれぞれは、第
2レジスタファイル13を構成する32個のレジスタr
0、r1、・・・、r31のぞれぞれに対応している。
この書込済みフラグ14は、例えば1ビットのデュアル
ポートRAMで構成できる。なお、この書込済みフラグ
14は、デュアルポートRAMに限らず、レジスタ、フ
リップフロップ等で構成してもよい。
【0040】この書込済みフラグ14の第1出力ポート
からは、第1レジスタアドレスRA1で指定されたフラ
グが読み出され、ANDゲート16Aに供給される。同
様に、この書込済みフラグ14の第2出力ポートから
は、第2レジスタアドレスRA2で指定されたフラグが
読み出され、ANDゲート16Bに供給される。また、
サブ実行中フラグ17からの信号SUBが「1」の状
態、即ちサブルーチンが実行されている状態で書き込み
を伴う命令が実行された場合に、書込済みフラグ14内
の、第2レジスタアドレスRA2で指定されるフラグが
「1」にセットされる。更に、書込済みフラグ14を構
成する全フラグは、メインルーチンでコール命令が実行
された時に、即ち、命令デコーダ11からの信号CAL
Lが「1」にされた時に一斉に「0」にクリアされる。
【0041】セレクタ15Aは、ANDゲート16Aか
らの選択信号に従って、第1レジスタファイル12の第
1出力ポートからのデータ及び第2レジスタファイル1
3の第1出力ポートからのデータの何れかを選択し、第
1オペランドのデータとして演算ユニット18に供給す
る。同様に、セレクタ15Bは、ANDゲート16Bか
らの選択信号に従って、第1レジスタファイル12の第
2出力ポートからのデータ及び第2レジスタファイル1
3の第2出力ポートからのデータの何れかを選択し、第
2オペランドのデータとして演算ユニット18に供給す
る。
【0042】サブ実行中フラグ17は、サブルーチンの
実行中であるかどうかを記憶する。このサブ実行中フラ
グ17は、メインルーチンの実行中は「0」にクリアさ
れ、サブルーチンの実行中は「1」にセットされる。こ
のサブ実行中フラグ17は、コール命令が命令レジスタ
10にセットされることにより命令デコーダ11からの
信号CALLが「1」になった時に「1」にセットさ
れ、リターン命令が命令レジスタ10にセットされるこ
とにより命令デコーダ11からの信号RETが「1」に
なった時に、「0」にクリアされる。このサブ実行中フ
ラグ17の出力は、ANDゲート16A及び16B並び
にインバータ19に供給される。
【0043】ANDゲート16Aは、書込済みフラグ1
4の第1出力ポートからの信号と、サブ実行中フラグ1
7からの信号SUBとの論理積をとり、結果をセレクタ
15Aのセレクト端子Sに供給する。メインルーチンを
実行中はサブ実行中フラグ17からの信号SUBは
「0」になるので、ANDゲート16Aは「0」を出力
する。これにより、セレクタ15Aの入力端子Aが選択
されるので、メインルーチンを実行中は、第1レジスタ
ファイル12の第1出力ポートからのデータが第1オペ
ランドのデータとして演算ユニット18に供給される。
【0044】一方、サブルーチンを実行中はサブ実行中
フラグ17からの信号SUBは「1」になるので、AN
Dゲート16Aの出力は、書込済みフラグ14の第1出
力ポートからの信号によって決定される。即ち、書込済
みフラグ14の第1出力ポートからの信号が「0」(未
書込)であればANDゲート16Aは「0」を出力す
る。これにより、セレクタ15Aの入力端子Aが選択さ
れるので、第1レジスタファイル12の第1出力ポート
からのデータが第1オペランドのデータとして演算ユニ
ット18に供給される。一方、書込済みフラグ14の第
1出力ポートからの信号が「1」(書込済み)であれば
ANDゲート16Aは「1」を出力する。これにより、
セレクタ15Aの入力端子Bが選択されるので、第2レ
ジスタファイル12の第1出力ポートからのデータが第
1オペランドのデータとして演算ユニット18に供給さ
れる。
【0045】同様に、ANDゲート16Bは、書込済み
フラグ14の第2出力ポートからの信号と、サブ実行中
フラグ17からの信号との論理積をとり、結果をセレク
タ15Bのセレクト端子Sに供給する。メインルーチン
を実行中はサブ実行中フラグ17からの信号SUBは
「0」になるので、ANDゲート16Bは「0」を出力
する。これにより、セレクタ15Bの入力端子Aが選択
されるので、メインルーチンを実行中は、第1レジスタ
ファイル12の第2出力ポートからのデータが第2オペ
ランドのデータとして演算ユニット18に供給される。
【0046】一方、サブルーチンを実行中はサブ実行中
フラグ17からの信号SUBは「1」になるので、AN
Dゲート16Bの出力は、書込済みフラグ14の第2出
力ポートからの信号によって決定される。即ち、書込済
みフラグ14の第2出力ポートからの信号が「0」(未
書込)であればANDゲート16Bは「0」を出力す
る。これにより、セレクタ15Bの入力端子Aが選択さ
れるので、第1レジスタファイル12の第2出力ポート
からのデータが第2オペランドのデータとして演算ユニ
ット18に供給される。一方、書込済みフラグ14の第
2出力ポートからの信号が「1」(書込済み)であれば
ANDゲート16Bは「1」を出力する。これにより、
セレクタ15Bの入力端子Bが選択されるので、第2レ
ジスタファイル13の第2出力ポートからのデータが第
2オペランドのデータとして演算ユニット18に供給さ
れる。
【0047】演算ユニット18は、命令デコーダ11か
らの演算信号OPに応じて、セレクタ15Aからの第1
オペランドのデータとセレクタ15Bからの第2オペラ
ンドのデータとを演算し、演算結果を第1レジスタファ
イル12又は第2レジスタファイル13に格納する。第
1レジスタファイル12又は第2レジスタファイル13
の何れに格納されるかは、サブ実行中フラグ17から出
力される信号SUBによって決定される。
【0048】インバータ19は、サブ実行中フラグ17
からの信号SUBを反転し、第1レジスタファイル12
の書込イネーブル端子WEに供給する。第2レジスタフ
ァイル13の書込イネーブル端子WEには、サブ実行中
フラグ17からの信号SUBがそのまま供給される。こ
れにより、メインルーチンを実行中は第1レジスタファ
イル12が書込イネーブルにされ、サブルーチンを実行
中は第2レジスタファイル13が書込イネーブルにされ
る。
【0049】次に、以上のように構成される情報処理装
置の動作を、図2に示すプログラムを実行する場合を例
に挙げて説明する。なお、初期状態では、サブ実行中フ
ラグ17はゼロにセットされており、書込済みフラグ1
4の内容も全てゼロにセットされているものとする。
【0050】図2に示すメインルーチンは、mov命令
「mov Param1,r20」でパラメータPar
am1をレジスタr20にセットし、mov命令「mo
vParam2,r21」でパラメータParam2を
レジスタr21にセットし、call命令「call
Func,r19」で、関数戻り値レジスタとしてレジ
スタr19を指定してFuncで指定されるサブルーチ
ンをコールし、サブルーチンからのリターンがあった場
合に、cmp命令「cmp 0,r19」でレジスタr
19の内容を「0」と比較するというプログラムであ
る。
【0051】一方、図2に示すサブルーチンは、mov
命令「mov 1,r30」でレジスタr30に「1」
をセットし、add命令「add r20,r30」で
レジスタr20の内容をレジスタr30の内容に加算
し、add命令「add r21,r30」でレジスタ
r21の内容をレジスタr30の内容に加算し、その後
種々の命令を実行し、mov’命令「mov’ r3
0,r19」でレジスタr30の内容をレジスタr19
に移し、その後、ret命令でメインルーチンに復帰す
るというプログラムである。なお、mov’命令「mo
v’ r30,r19」は、第2レジスタファイル13
内のレジスタr30の内容を第1レジスタファイル12
内のレジスタr19に移す機能を有する特殊命令であ
る。
【0052】この情報処理装置では、図示しない命令フ
ェッチ機構は、図示しない主記憶からmov命令「mo
v Param1,r20」をフェッチして命令レジス
タ10に格納する。命令デコーダ11は、命令レジスタ
10に記憶されている命令の第1オペランド指定部の値
Param1をそのままセレクタ15Aの入力端子Aに
供給する。
【0053】また、命令デコーダ11は、命令レジスタ
10に格納されている命令の第2オペランド指定部をデ
コードしてレジスタr20を指定する第2レジスタアド
レスRA2を生成する。この第2レジスタアドレスRA
2は、第1レジスタファイル12、第2レジスタファイ
ル13及び書込済みフラグ14に供給される。これによ
り、第1レジスタファイル12内のレジスタr20の内
容がその第2出力ポートから読み出され、セレクタ15
Bの入力端子Aに供給される。同様に、第2レジスタフ
ァイル13内のレジスタr20の内容がその第2出力ポ
ートから読み出され、セレクタ15Bの入力端子Bに供
給される。更に、書込済みフラグ14内のフラグf20
がその第2出力ポートから読み出され、ANDゲート1
6Bに供給される。
【0054】また、命令デコーダ11は、命令レジスタ
10に格納されている命令のオペレーションコード部を
デコードし、mov命令を表す演算信号OPを生成して
演算ユニット18に供給する。なお、この場合、命令レ
ジスタ10に格納されている命令はcall命令及びr
et命令の何れでもないので、信号CALL及び信号R
ETは何れも生成されず、サブ実行中フラグ17は
「0」のままである。従って、ANDゲート16A及び
16Bの何れも「0」を出力する。その結果、セレクタ
15A及び15Bの各入力端子Aが選択され、第1オペ
ランドのデータとして値Param1が、第2オペラン
ドのデータとして第1レジスタファイル12のレジスタ
r20の内容がそれぞれ演算ユニット18に供給され
る。
【0055】演算ユニット18は、命令デコーダ11か
らmov命令を表す演算信号OPが供給されることによ
り、第2オペランドのデータは無視し、第1オペランド
のデータ、つまり値Param1を通過させる。この演
算ユニット18から出力された値Param1は、第1
レジスタファイル12及び第2レジスタファイル13の
各入力端子に供給される。ここで、サブ実行中フラグ1
7は「0」であるので、第1レジスタファイル12の書
込イネーブル端子WEには「1」が、第2レジスタファ
イル13の書込イネーブル端子WEには「0」がそれぞ
れ供給されている。従って、演算ユニット18から出力
された値Param1は、第1レジスタファイル12内
の、第2レジスタアドレスRA2で指定されているレジ
スタr20に書き込まれる。以上の動作により、mov
命令「mov Param1,r20」の実行が完了す
る。
【0056】次のmov命令「mov Param2,
r21」も上記と全く同様にして実行される。次に、命
令フェッチ機構によって主記憶からcall命令「ca
llFunc,r19」が読み出され、命令レジスタ1
0に格納される。命令デコーダ11は、命令レジスタ1
0に記憶されている命令の第2オペランド指定部をデコ
ードすることによりレジスタr19を指定する第2レジ
スタアドレスRA2を生成する。この第2レジスタアド
レスRA2は、図示しない退避データレジスタに格納さ
れる。この退避データレジスタの内容は、特殊命令「m
ov’ r30,r19」を実行する時に参照される
(詳細後述)。また、このcall命令「call F
unc,r19」の次のcmp命令「cmp 0,r1
9」の命令アドレスが退避アドレスレジスタに格納され
る。この退避アドレスレジスタの内容は、ret命令で
使用される(詳細後述)。なお、第2レジスタアドレス
RA2は、第1レジスタファイル12、第2レジスタフ
ァイル13及び書込済みフラグ14にも供給されるが、
call命令の実行には無関係である。
【0057】また、命令デコーダ11は、命令レジスタ
10に記憶されている命令のオペレーションコード部を
デコードすることによりcall命令を表す信号CAL
Lを生成し、サブ実行中フラグ17及び書込済みフラグ
14に供給する。これにより、サブ実行中フラグ17
は、「1」にセットされる。なお、call命令は、レ
ジスタr19にデータを書き込む命令ではないので、書
込済みフラグ14内のフラグf19は変化しない。
【0058】なお、演算ユニット18は、命令デコーダ
11が演算信号OPを生成しない(信号CALLを生成
する)ので動作しない。また、信号CALLが生成され
ることにより、図示しない命令カウンタに、ファンクシ
ョンコードFuncに対応する命令アドレス、即ちサブ
ルーチンの先頭アドレスがセットされる。以上の動作に
より、call命令「call Func,r19」の
実行が完了し、次の命令サイクルからサブルーチンの実
行が開始される。
【0059】サブルーチンの実行が開始されると、命令
フェッチ機構は主記憶からmov命令「mov 1,r
30」を読み出し、命令レジスタ10に格納する。命令
デコーダ11は、命令レジスタ10に格納されている命
令の第1オペランド指定部の値「1」をそのままセレク
タ15Aの入力端子Aに供給する。
【0060】また、命令デコーダ11は、命令レジスタ
10に格納されている命令の第2オペランド指定部をデ
コードしてレジスタr30を指定する第2レジスタアド
レスRA2を生成する。この第2レジスタアドレスRA
2は、第1レジスタファイル12、第2レジスタファイ
ル13及び書込済みフラグ14に供給される。これによ
り、第1レジスタファイル12内のレジスタr20の内
容がその第2出力ポートから読み出され、セレクタ15
Bの入力端子Aに供給される。同様に、第2レジスタフ
ァイル13内のレジスタr20の内容がその第2出力ポ
ートから読み出され、セレクタ15Bの入力端子Bに供
給される。更に、書込済みフラグ14内のフラグf20
がその第2出力ポートから読み出され、ANDゲート1
6Bに供給される。
【0061】また、命令デコーダ11は、命令レジスタ
10に格納されている命令のオペレーションコード部を
デコードし、mov命令を表す演算信号OPを生成して
演算ユニット18に供給する。この場合、命令レジスタ
10に格納されている命令はcall命令及びret命
令の何れでもないので、サブ実行中フラグ17は、
「1」にセットされたままである。また、第2レジスタ
ファイル13への書き込みは未だ実行されていないの
で、書込済みフラグ14内の全フラグは「0」にクリア
されたままである。従って、ANDゲート16A及び1
6Bの何れも「0」を出力する。その結果、セレクタ1
5A及び15Bの各入力端子Aが選択され、第1オペラ
ンドのデータとして値「1」が、第2オペランドのデー
タとして第1レジスタファイル12のレジスタr30の
内容がそれぞれ演算ユニット18に供給される。
【0062】演算ユニット18は、命令デコーダ11か
らのmov命令を表す演算信号OPが入力されることに
より、第2オペランドのデータは無視し、第1オペラン
ドのデータ、つまり値「1」を通過させる。この演算ユ
ニット18から出力された値「1」は、第1レジスタフ
ァイル12及び第2レジスタファイル13の各入力端子
に供給される。ここで、サブ実行中フラグ17は「1」
であるので、第1レジスタファイル12の書込イネーブ
ル端子WEには「0」が、第2レジスタファイル13の
書込イネーブル端子WEには「1」がそれぞれ供給され
ている。従って、演算ユニット18から出力された値
「1」は、第2レジスタファイル13内の、第2レジス
タアドレスRA2で指定されているレジスタr30に書
き込まれる。同時に、書込済みフラグ14内の、第2レ
ジスタアドレスRA2で指定されているフラグf30に
「1」が書き込まれる。以上の動作により、mov命令
「mov 1,r30」の実行が完了する。
【0063】次に、命令フェッチ機構によって主記憶か
らadd命令「add r20,r30」が読み出さ
れ、命令レジスタ10に格納される。命令デコーダ11
は、命令レジスタ10に格納されている命令の第1オペ
ランド指定部をデコードすることによりレジスタr20
を指定する第1レジスタアドレスRA1を生成し、第1
レジスタファイル12、第2レジスタファイル13及び
書込済みフラグ14に供給する。これにより、第1レジ
スタファイル12の第1出力ポートからレジスタr20
の内容が読み出されてセレクタ15Aの入力端子Aに供
給される。同様に、第2レジスタファイル13の第1出
力ポートからレジスタr20の内容が読み出されてセレ
クタ15Aの入力端子Bに供給される。また、書込済み
フラグ14の第1出力ポートからフラグf20が読み出
されてANDゲート16Aに供給される。
【0064】同様に、命令デコーダ11は、命令レジス
タ10に格納されている命令の第2オペランド指定部を
デコードすることによりレジスタr30を指定する第2
レジスタアドレスRA2を生成し、第1レジスタファイ
ル12、第2レジスタファイル13及び書込済みフラグ
14に供給する。これにより、第1レジスタファイル1
2の第2出力ポートからレジスタr30の内容が読み出
されてセレクタ15Bの入力端子Aに供給される。同様
に、第2レジスタファイル13の第2出力ポートからレ
ジスタr30の内容が読み出されてセレクタ15Bの入
力端子Bに供給される。また、書込済みフラグ14の第
2出力ポートからフラグf30が読み出されてANDゲ
ート16Bに供給される。
【0065】ここで、サブ実行中フラグ17は「1」で
あり、書込済みフラグ14の第1出力ポートからフラグ
f20として「0」が読み出されるので、ANDゲート
16Aは「0」を出力する。これにより、セレクタ15
Aの入力端子A側が選択されるので、第1レジスタファ
イル12の第1出力ポートからのデータ、つまりレジス
タr20の内容が第1オペランドのデータとして演算ユ
ニット18に供給される。また、書込済みフラグ14の
第2出力ポートからフラグf30として「1」が読み出
されるので、ANDゲート16Aは「1」を出力する。
これにより、セレクタ15Bの入力端子B側が選択され
るので、第2レジスタファイル13の第2出力ポートか
らのデータ、つまりレジスタr30の内容が第2オペラ
ンドのデータとして演算ユニット18に供給される。
【0066】演算ユニット18は、セレクタ15Aから
のデータとセレクタ15Bからのデータとを加算し、結
果を第1レジスタファイル12及び第2レジスタファイ
ル13の各入力端子に供給する。この際、サブ実行中フ
ラグ17は「1」であるので、第1レジスタファイル1
2の書込イネーブル端子WEに「0」が供給され、第2
レジスタファイル13の書込イネーブル端子WEに
「1」が供給されている。従って、上記演算結果は、第
2レジスタファイル13内の、第2レジスタアドレスR
A2で指定されるレジスタr30に書き込まれる。な
お、書込済みフラグ14内のフラグf30は既に「1」
にセットされている。以上により、第1レジスタファイ
ル12内のレジスタr20の内容と第2レジスタファイ
ル13内のレジスタr30の内容とが加算され、結果が
第2レジスタファイル13内のレジスタr30に格納さ
れ、add命令「add r20,r30」の実行が完
了する。
【0067】次のadd命令「add r21,r3
0」も上記add命令「add r20,r30」と同
様の動作で実行される。即ち、第1レジスタファイル1
2内のレジスタr21の内容と第2レジスタファイル1
3内のレジスタr30の内容とが加算され、結果が第2
レジスタファイル13内のレジスタr30に格納され、
add命令「add r21,r30」の実行が完了す
る。
【0068】次いで、種々の命令が実行された後にmo
v’命令「mov’ r30,r19」が実行される。
なお、上記種々の命令の実行において、退避データレジ
スタの内容に基づいて、mov’命令の第2オペランド
としてレジスタr19が使用されるように処理される。
このmov’命令「mov’ r30,r19」は、第
1オペランド指定部でイミディエイト値が指定される代
わりにレジスタが指定され、且つ、第2オペランド指定
部で指定されるレジスタr19が強制的に第1レジスタ
ファイル12内のレジスタr19になる点を除けば、上
述したmov命令と同じである。このmov’命令の実
行により、関数戻り値として第2レジスタファイル13
内のレジスタr30に格納されているデータが、第1レ
ジスタファイル12内のレジスタr19に移動される。
【0069】次に、命令フェッチ機構によって主記憶か
らret命令が読み出され、命令レジスタ10に格納さ
れる。命令デコーダ11は、命令レジスタ10に記憶さ
れている命令のオペレーションコード部をデコードする
ことによりret命令を表す信号RETを生成し、サブ
実行中フラグ17に供給する。これにより、サブ実行中
フラグ17は、「0」にクリアされる。従って、次の命
令サイクルからは第1レジスタファイル12が使用され
ることになる。
【0070】また、信号RETが生成されることによ
り、図示しない命令カウンタに、退避アドレスレジスタ
の内容、即ち、cmp命令「cmp 0,r19」の命
令アドレスがセットされる。なお、演算ユニット18
は、命令デコーダ11が演算信号OPを生成しない(信
号RETを生成する)ので動作しない。以上の動作によ
り、ret命令の実行が完了し、次の命令サイクルから
メインルーチンの実行が再開される。
【0071】メインルーチンの実行が再開されると、命
令フェッチ機構は主記憶からcmp命令「cmp 0,
r19」を読み出し、命令レジスタ10に格納する。命
令デコーダ11は、命令レジスタ10に格納されている
命令の第1オペランド指定部の値「0」をそのままセレ
クタ15Aの入力端子Aに供給する。
【0072】また、命令デコーダ11は、命令レジスタ
10に格納されている命令の第2オペランド指定部をデ
コードしてレジスタr19を指定する第2レジスタアド
レスRA2を生成する。この第2レジスタアドレスRA
2は、第1レジスタファイル12、第2レジスタファイ
ル13及び書込済みフラグ14に供給される。これによ
り、第1レジスタファイル12内のレジスタr19の内
容がその第2出力ポートから読み出され、セレクタ15
Bの入力端子Aに供給される。同様に、第2レジスタフ
ァイル13内のレジスタr19の内容がその第2出力ポ
ートから読み出され、セレクタ15Bの入力端子Bに供
給される。更に、書込済みフラグ14内のフラグf19
がその第2出力ポートから読み出され、ANDゲート1
6Bに供給される。
【0073】また、命令デコーダ11は、命令レジスタ
10に格納されている命令のオペレーションコード部を
デコードし、cmp命令を表す演算信号OPを生成して
演算ユニット18に供給する。この場合、命令レジスタ
10に格納されている命令はcall命令及びret命
令の何れでもないので、サブ実行中フラグ17は、
「0」のままである。従って、ANDゲート16A及び
16Bの何れも「0」を出力する。その結果、セレクタ
15A及び15Bの各入力端子Aが選択され、第1オペ
ランドのデータとして値「0」が、第2オペランドのデ
ータとして第1レジスタファイル12のレジスタr19
の内容がそれぞれ演算ユニット18に供給される。
【0074】演算ユニット18は、命令デコーダ11か
らcmp命令を表す演算信号OPが入力されることによ
り、第1オペランドのデータ、つまり値「0」と、第2
オペランドのデータ、つまりレジスタr19の内容とを
比較する。このcmp命令「cmp 0,r19」で
は、演算結果を第1レジスタファイル12又は第2レジ
スタファイル13に格納することは行われず、比較結果
が図示しないステータスレジスタにセットされるだけで
ある。以下同様にして、メインルーチンの命令が順次実
行される。
【0075】以上説明したように、この実施の形態1に
よれば、サブルーチンをコールする際は、第1レジスタ
ファイル12に格納されているパラメータを第2レジス
タファイル13に転送する必要がないので、レジスタフ
ァイルの切替を迅速に行うことができる。また、サブル
ーチンの実行時は、未だ書込が行われていないレジスタ
については第1レジスタファイル12内のレジスタが参
照され、書込が行われたレジスタについてのみ第2レジ
スタファイル13内のレジスタが参照される。その結
果、任意の数のレジスタを第1レジスタファイルから第
2レジスタファイルに切り替えるに等しい動作が行われ
ることになるので、従来のレジスタウインドウ技術のよ
うに、共通領域のサイズが固定であるために、アプリケ
ーションによっては、使用されないレジスタが出現した
り、レジスタが不足するという事態を回避できる。
【0076】また、上述した第3の従来技術では、サブ
ルーチンはメインルーチン用領域を使用することができ
なかったため、必要なパラメータ数が多くなって共通領
域が不足し、メインルーチン用領域から読み出さなけれ
ばならなくなった場合、データ転送が必要になってしま
う。これに対し、本実施の形態1によれば、サブルーチ
ンは第1レジスタファイルのデータを直接読み出すこと
ができるので、そのような不都合は生じない。
【0077】なお、上述した実施の形態1では、第2レ
ジスタファイル13のレジスタ数を、第1レジスタファ
イル12のそれと同一にしたが、例えば図3に示すよう
に、第2レジスタファイル13のレジスタ数を、第1レ
ジスタファイル12のそれの半分にすることもできる。
一般のアプリケーションでは、レジスタファイルの半分
程度はバンク切替が不要なアドレスポインタ領域、パラ
メータ領域として使用されるので、この構成によりレジ
スタファイル全体のレジスタ数を少なくできるという利
点がある。なお、第2レジスタファイルのレジスタ数
は、第1レジスタファイルのレジスタ数の半分に限ら
ず、この情報処理装置が適用されるシステムの要求に応
じて任意に決定できる。
【0078】(実施の形態2)本発明の実施の形態2に
係る情報処理装置は、上記実施の形態1に係る情報処理
装置において、演算ユニット18からの演算結果を第2
レジスタファイル13内のレジスタへ書き込むと同時
に、第1レジスタファイル12内の上記レジスタと同一
のレジスタアドレスを有するレジスタへも書き込むこと
ができるようにしたものである。
【0079】図4は、この実施の形態2に係る情報処理
装置の構成を示すブロック図である。この情報処理装置
は、上記実施の形態1に係る情報処理装置に、制御レジ
スタ20、コンパレータ21及びORゲート22が追加
されて構成されている。以下では、上記実施の形態1に
係る情報処理装置と異なる点のみを説明する。
【0080】制御レジスタ20は、演算結果を書き込む
対象とされる、第1レジスタファイル12及び第2レジ
スタファイル13内のレジスタのレジスタアドレスを記
憶する。この制御レジスタ20は、演算ユニット18か
らのデータを記憶するように構成してもよいし、所定の
条件が成立した場合に、命令デコーダ11からのレジス
タアドレスを記憶するように構成してもよい。この制御
レジスタ20の出力はコンパレータ21に供給される。
【0081】コンパレータ21は、命令デコーダ11か
らの第2レジスタアドレスRA2と制御レジスタ20か
らのアドレスデータとを比較する。そして、これらが一
致すれば比較結果信号として「1」を出力し、一致しな
ければ「0」を出力する。この比較結果信号はORゲー
ト22に供給される。
【0082】ORゲート22は、インバータ19からの
信号及びコンパレータ21からの比較信号の論理和をと
り、第1レジスタファイル12の書込イネーブル端子W
Eに供給する。
【0083】以上の構成において、この情報処理装置の
動作を説明する。今、制御レジスタ20にレジスタr1
9を指定する第2レジスタアドレスRA2が格納されて
おり、この状態で、図2に示したメインルーチン及びサ
ブルーチンが実行されるものとする。但し、サブルーチ
ン内のmov’命令「mov’ r30,r19」とい
う特殊命令の代わりに、通常のmov命令「mov r
30,r19」が格納されているものとする。
【0084】メインルーチン及びサブルーチンの各命令
の動作は、サブルーチン内のmov命令「mov r3
0,r19」の動作を除き、上述した実施の形態1の場
合と同じであるので、以下では、mov命令「mov
r30,r19」の動作についてのみ説明する。
【0085】命令フェッチ機構によって主記憶からmo
v命令「mov r30,r19」が読み出され、命令
レジスタ10に格納されると、命令デコーダ11は、命
令の第1オペランド指定部をデコードすることにより第
1レジスタアドレスRA1を生成する。この第1レジス
タアドレスは、第1レジスタファイル12、第2レジス
タファイル13及び書込済みフラグ14に供給される。
これにより、第1レジスタファイル12の第1出力ポー
トからレジスタr30の内容が読み出されてセレクタ1
5Aの入力端子Aに供給される。また、第2レジスタフ
ァイル13の第1出力ポートからレジスタr30の内容
が読み出されてセレクタ15Aの入力端子Bに供給され
る。更に、書込済みフラグ14の第1出力ポートからフ
ラグf30が読み出されてANDゲート16Aに供給さ
れる。
【0086】同様に、命令デコーダ11は、命令レジス
タ10に格納されている命令の第2オペランド指定部を
デコードすることにより第2レジスタアドレスRA2を
生成し、第1レジスタファイル12、第2レジスタファ
イル13及び書込済みフラグ14に供給する。これによ
り、第1レジスタファイル12の第2出力ポートからレ
ジスタr19の内容が読み出されてセレクタ15Bの入
力端子Aに供給される。また、第2レジスタファイル1
3の第2出力ポートからレジスタr19の内容が読み出
されてセレクタ15Bの入力端子Bに供給される。更
に、書込済みフラグ14の第2出力ポートからフラグf
19が読み出されてANDゲート16Bに供給される。
【0087】ここで、サブ実行中フラグ17は「1」で
あり、書込済みフラグ14の第1出力ポートからフラグ
f30として「1」が読み出されるので、ANDゲート
16Aは「1」を出力する。これにより、セレクタ15
Aの入力端子Bが選択されるので、第2レジスタファイ
ル13の第1出力ポートから出力されるレジスタr30
の内容が第1オペランドのデータとして演算ユニット1
8に供給される。また、書込済みフラグ14の第2出力
ポートからフラグf30として「1」が読み出されるの
で、ANDゲート16Bは「1」を出力する。これによ
り、セレクタ15Bの入力端子B側が選択されるので、
第2レジスタファイル13の第2出力ポートから出力さ
れるレジスタr30の内容が第2オペランドのデータと
して演算ユニット18に供給される。
【0088】演算ユニット18は、命令デコーダ11か
らの演算信号OPによりmov命令であることを認識す
ると、セレクタ15Aからのデータ、即ち第2レジスタ
ファイル13のレジスタr30の内容を通過させる。こ
の演算ユニット18から出力されるデータは、第1レジ
スタファイル12及び第2レジスタファイル13の入力
端子に供給される。
【0089】この際、サブ実行中フラグ17は「1」で
あるので、第2レジスタファイル13の書込イネーブル
端子WEに「1」が供給されている。また、命令デコー
ダ11からの第2レジスタアドレスRA2はレジスタr
19を指定するアドレスであり、制御レジスタ20には
レジスタr19を指定するアドレスが格納されているの
で、コンパレータ21は「1」を出力する。従って、O
Rゲート22から「1」が出力され、第1レジスタファ
イル12の書込イネーブル端子WEに供給される。従っ
て、上記演算ユニット18を通過したデータは、第1レ
ジスタファイル12内の、第2レジスタアドレスRA2
で指定されるレジスタr30及び第2レジスタファイル
13内の、第2レジスタアドレスRA2で指定されるレ
ジスタr30の双方に書き込まれる。以上により、mo
v命令「mov r30,r19」の実行が完了する。
【0090】以上説明したように、この実施の形態2に
係る情報処理装置によれば、制御レジスタ20にセット
されたレジスタアドレスを有するレジスタにデータを書
き込む場合は、第1レジスタファイル12及び第2レジ
スタファイル13の双方のレジスタに該データが書き込
まれる。その結果、上述した実施の形態1で使用したm
ov命令「mov’ r30,r19」のような特殊命
令を備える必要がない。
【0091】(実施の形態3)本発明の実施の形態3に
係る情報処理装置は、3個のレジスタファイルを備え、
サブルーチン(以下、「第1サブルーチン」という)か
ら更にサブルーチン(以下、「第2サブルーチン」とい
う)をコールできるように構成されている。
【0092】図5は、この実施の形態3に係る情報処理
装置の構成を示すブロック図である。この情報処理装置
は、図1に示した情報処理装置からインバータ19が除
去されると共に、第3レジスタファイル30、書込済み
フラグ31、セレクタ32A及び32B、第2サブ実行
中フラグ33、ANDゲート34A及び34B、制御信
号生成回路35、並びにORゲート36A及び36Bが
追加されることにより構成されている。
【0093】なお、図5では、図面の煩雑さを避けるた
めに、セレクタ15A及び15Bとして1つのセレクタ
の記号を示しているが実際には、図1に示すように2つ
のセレクタの記号で示されるべきものである。また、A
NDゲート16A及び16Bとして1つのANDゲート
の記号を示しているが実際には、図1に示すように2つ
のANDゲートの記号で示されるべきものである。更
に、ORゲート36A及び36Bも2つのORゲートの
記号で示されるべきものである。以下では、上述した実
施の形態1に係る情報処理装置と同一又は相当部分には
同一符号を付して説明を省略又は簡略化し、異なる部分
を中心に説明する。
【0094】制御信号生成回路35は、命令デコーダ1
1からの信号CALL及び信号RET、サブ実行中フラ
グ17からの信号SUB1並びに第2サブ実行中フラグ
33からの信号SUB2に基づいて各種制御信号を生成
する。各種制御信号には、第1レジスタファイル12に
供給される書込イネーブル信号WE1、第2レジスタフ
ァイル13に供給される書込イネーブル信号WE2、第
3レジスタファイル30に供給される書込イネーブル信
号WE3、書込済みフラグ14及びサブ実行中フラグ1
7に供給される信号CALL1、書込済みフラグ31及
び第2サブ実行中フラグ33に供給される信号CALL
2、サブ実行中フラグ17に供給される信号RET1、
第2サブ実行中フラグ33に供給される信号RET2が
含まれる。各信号の意味は、以下において出現する都度
説明する。
【0095】第1レジスタファイル12は、制御信号生
成回路35からの書込イネーブル信号WE1によって書
込可能にされる。制御信号生成回路35は、メインルー
チンが実行されている時に、即ち、信号SUB1及び信
号SUB2が双方とも「0」である時に書込イネーブル
信号WE1を「1」にする。
【0096】セレクタ15Aは、ANDゲート16Aか
らの選択信号に従って、第1レジスタファイル12の第
1出力ポートからのデータ及びセレクタ32Aからのデ
ータの何れかを選択し、第1オペランドのデータとして
演算ユニット18に供給する。ここで、ANDゲート1
6Aには、サブ実行中フラグ17からの信号SUB1と
ORゲート36Aからの信号とが入力されるようになっ
ている。また、ORゲート36Aには、書込済みフラグ
14の第1出力ポートからの信号とANDゲート34A
からの信号とが入力されるようになっている。
【0097】同様に、セレクタ15Bは、ANDゲート
16Bからの選択信号に従って、第1レジスタファイル
12の第2出力ポートからのデータ及びセレクタ32B
からのデータの何れかを選択し、第2オペランドのデー
タとして演算ユニット18に供給する。ここで、AND
ゲート16Bには、サブ実行中フラグ17からの信号S
UB1とORゲート36Bからの信号とが入力されるよ
うになっている。また、ORゲート36Bには、書込済
みフラグ14の第2出力ポートからの信号とANDゲー
ト34Bからの信号とが入力されるようになっている。
【0098】第2レジスタファイル13の第1出力ポー
トからのデータはセレクタ32Aの入力端子Aに供給さ
れ、第2出力ポートからのデータはセレクタ32Bの入
力端子Aに供給される。また、この第2レジスタファイ
ル13は、制御信号生成回路35からの書込イネーブル
信号WE2によって書込可能にされる。制御信号生成回
路35は、第1サブルーチンが実行されている時に、即
ち、信号SUB1が「1」であり、且つ信号SUB2が
「0」である時に書込イネーブル信号WE2を「1」に
する。
【0099】また、書込済みフラグ14を構成する全フ
ラグは、信号CALL1が「1」にされた時に一斉に
「0」にクリアされる。制御信号生成回路35は、メイ
ンルーチンでcall命令が実行された時、即ち、信号
SUB1及び信号SUB2が双方とも「0」であり且つ
命令デコーダ11から信号CALLが出力された時に信
号CALL1を「1」にする。
【0100】第3レジスタファイル30の構成は、第2
レジスタファイル13の構成と同じであり、第2サブル
ーチンを実行する時に使用される。この第3レジスタフ
ァイル30の第1出力ポートからは、第1レジスタアド
レスRA1で指定されたレジスタの内容が読み出され、
セレクタ32Aの入力端子Bに供給される。また、この
第3レジスタファイル30の第2出力ポートからは、第
2レジスタアドレスRA2で指定されたレジスタの内容
が読み出され、セレクタ32Bの入力端子Bに供給され
る。また、この第3レジスタファイル30は、制御信号
生成回路35からの書込イネーブル信号WE3によって
書込可能にされる。制御信号生成回路35は、第2サブ
ルーチンが実行されている時に、即ち、信号SUB1が
「1」且つ信号SUB2が「1」である時に書込イネー
ブル信号WE3を「1」にする。
【0101】書込済みフラグ31の構成は、書込済みフ
ラグ14の構成と同じである。この書込済みフラグ31
の第1出力ポートからは、第1レジスタアドレスRA1
で指定されたフラグが読み出され、ANDゲート34A
に供給される。また、この書込済みフラグ14の第2出
力ポートからは、第2レジスタアドレスRA2で指定さ
れたフラグが読み出され、ANDゲート34Bに供給さ
れる。また、上記書込イネーブル信号WE3が「1」の
状態で書き込みを伴う命令が実行された場合に、書込済
みフラグ31内の、第2レジスタアドレスRA2で指定
されるフラグが「1」にセットされる。更に、書込済み
フラグ31を構成する全フラグは、信号CALL2が
「1」にされた時に一斉に「0」にクリアされる。制御
信号生成回路35は、第1サブルーチンでcall命令
が実行された時、即ち、信号SUB1が「1」、信号S
UB2が「0」、且つ命令デコーダ11から信号CAL
Lが出力された時に信号CALL2を「1」にする。
【0102】セレクタ32Aは、ANDゲート34Aか
らの選択信号に従って、第2レジスタファイル13の第
1出力ポートからのデータ及び第3レジスタファイル3
0の第1出力ポートからのデータの何れかを選択し、セ
レクタ15Aの入力端子Bに供給する。ここで、AND
ゲート34Aには、第2サブ実行中フラグ33からの信
号SUB2と書込済みフラグ31の第1出力ポートから
の信号とが入力されるようになっている。
【0103】同様に、セレクタ32Bは、ANDゲート
34Bからの選択信号に従って、第2レジスタファイル
13の第2出力ポートからのデータ及び第3レジスタフ
ァイル30の第2出力ポートからのデータの何れかを選
択し、セレクタ15Bの入力端子Bに供給する。ここ
で、ANDゲート34Bには、第2サブ実行中フラグ3
3からの信号SUB2と書込済みフラグ31の第2出力
ポートからの信号とが入力されるようになっている。
【0104】また、サブ実行中フラグ17は、第1サブ
ルーチン及び第2サブルーチンが実行されている間は
「1」にセットされ、メインルーチンが実行されている
間は「0」にクリアされる。具体的には、このサブ実行
中フラグ17は、上記信号CALL1によって「1」に
セットされ、信号RET1によって「0」にクリアされ
る。制御信号生成回路35は、第1サブルーチンでRE
T命令が実行された時、即ち、信号SUB1が「1」で
あり、信号SUB2が「0」であり、且つ命令デコーダ
11から信号RETが出力された時に信号RET1を
「1」にする。
【0105】第2サブ実行中フラグ33は、第2サブル
ーチンを実行中であるかどうかを記憶する。この第2サ
ブ実行中フラグ33は、第2サブルーチンが実行されて
いる間は「1」にセットされ、メインルーチン及び第1
サブルーチンが実行されている間は「0」にクリアされ
る。具体的には、この第2サブ実行中フラグ33は、上
記信号CALL2によって「1」にセットされ、信号R
ET2によって「0」にクリアされる。制御信号生成回
路35は、第2サブルーチンでRET命令が実行された
時、即ち、信号SUB2が「1」であり且つ命令デコー
ダ11から信号RETが出力された時に信号RET2を
「1」にする。この第2サブ実行中フラグ33からの信
号SUB2は、ANDゲート34A及34Bに供給され
る。
【0106】ANDゲート34Aは、書込済みフラグ3
1の第1出力ポートからの信号と、第2サブ実行中フラ
グ33からの信号SUB2との論理積をとり、結果をセ
レクタ32Aのセレクト端子S及びORゲート36Aに
供給する。第1サブルーチンを実行中は第2サブ実行中
フラグ33からの信号SUB2は「0」になるので、A
NDゲート34Aは「0」を出力する。これにより、セ
レクタ32Aの入力端子Aが選択されるので、第1サブ
ルーチンを実行中は、第2レジスタファイル13の第1
出力ポートからのデータが第1オペランドのデータとし
てセレクタ15Aを経由して演算ユニット18に供給さ
れる。
【0107】一方、第2サブルーチンを実行中は第2サ
ブ実行中フラグ33からの信号SUB2は「1」である
ので、ANDゲート34Aの出力は、書込済みフラグ3
1の第1出力ポートからの信号によって決定される。即
ち、書込済みフラグ31の第1出力ポートからの信号が
「0」(未書込)であればANDゲート34Aは「0」
を出力する。これにより、セレクタ32Aの入力端子A
が選択されるので、第2レジスタファイル13の第1出
力ポートからのデータが第1オペランドのデータとして
セレクタ15Aを経由して演算ユニット18に供給され
る。一方、書込済みフラグ31の第1出力ポートからの
信号が「1」(書込済み)であればANDゲート34A
は「1」を出力する。これにより、セレクタ32Aの入
力端子Bが選択されるので、第3レジスタファイル30
の第1出力ポートからのデータが第1オペランドのデー
タとしてセレクタ15Aを経由して演算ユニット18に
供給される。
【0108】同様に、ANDゲート34Bは、書込済み
フラグ33の第2出力ポートからの信号と、第2サブ実
行中フラグ33からの信号SUB2との論理積をとり、
結果をセレクタ32Bのセレクト端子Sに供給する。第
1サブルーチンを実行中は第2サブ実行中フラグ33か
らの信号SUB2は「0」になるので、ANDゲート3
4Bは「0」を出力する。これにより、セレクタ32B
の入力端子Aが選択されるので、第1サブルーチンを実
行中は、第2レジスタファイル13の第2出力ポートか
らのデータがセレクタ15Bを経由して演算ユニット1
8に供給される。
【0109】一方、第2サブルーチンを実行中は第2サ
ブ実行中フラグ33からの信号SUB2は「1」である
ので、ANDゲート34Bの出力は、書込済みフラグ3
1の第2出力ポートからの信号によって決定される。即
ち、書込済みフラグ31の第2出力ポートからの信号が
「0」(未書込)であればANDゲート34Bは「0」
を出力する。これにより、セレクタ32Bの入力端子A
が選択されるので、第2レジスタファイル13の第2出
力ポートからのデータが第2オペランドのデータとして
セレクタ15Aを経由して演算ユニット18に供給され
る。一方、書込済みフラグ31の第2出力ポートからの
信号が「1」(書込済み)であればANDゲート34B
は「1」を出力する。これにより、セレクタ32Bの入
力端子Bが選択されるので、第3レジスタファイル30
の第2出力ポートからのデータが第2オペランドのデー
タとしてセレクタ15Aを経由して演算ユニット18に
供給される。
【0110】次に、以上のように構成される情報処理装
置の動作を説明する。メインルーチンから第1サブルー
チンをコールし、その後メインルーチンへ戻るという動
作は、上述した実施の形態1の場合と同じであるので、
以下では、第1サブルーチンでcall命令を実行する
ことにより第2サブルーチンをコールし、第2サブルー
チンでadd命令「add r20,r30」を実行
し、その後第1サブルーチンに戻るという動作を例に挙
げて説明する。
【0111】命令フェッチ機構によって主記憶からca
ll命令が読み出され、命令レジスタ10に格納される
と、先ず、上記実施の形態1で説明したように、関数戻
り値を格納するレジスタを指定するための第2レジスタ
アドレスRA2を退避データレジスタに格納する処理及
び次の命令の命令アドレスを退避アドレスレジスタに格
納する処理が行われる。
【0112】また、命令デコーダ11は、命令レジスタ
10に記憶されている命令のオペレーションコード部を
デコードすることによりcall命令を表す信号CAL
Lを生成して制御信号生成回路35に供給する。制御信
号生成回路35は、これに応答して信号CALL2を生
成し、書込済みフラグ31及び第2サブ実行中フラグ3
3に供給する。これにより、書込済みフラグ31内の全
フラグは、「0」にクリアされる。また、第2サブ実行
中フラグ33は、「1」にセットされる。以上により、
call命令の実行が完了し、次の命令サイクルから第
2サブルーチンの実行が開始される。
【0113】第2サブルーチンでは、命令フェッチ機構
によって主記憶からadd命令「add r20,r3
0」が読み出され、命令レジスタ10に格納される。命
令デコーダ11は、命令レジスタ10に格納されている
命令の第1オペランド指定部をデコードすることにより
レジスタr20を指定する第1レジスタアドレスRA1
を生成し、第1レジスタファイル12、第2レジスタフ
ァイル13、第3レジスタファイル30、書込済みフラ
グ14及び書込済みフラグ31に供給する。これによ
り、第1レジスタファイル12、第2レジスタファイル
13及び第3レジスタファイル30の各第1出力ポート
からレジスタr20の内容が読み出され、それぞれセレ
クタ15Aの入力端子A、セレクタ32Aの入力端子A
及びセレクタ32Aの入力端子Bに供給される。また、
書込済みフラグ14及び書込済みフラグ31の各第1出
力ポートからフラグf20が読み出され、それぞれOR
ゲート36A及びANDゲート34Aに供給される。
【0114】同様に、命令デコーダ11は、命令レジス
タ10に格納されている命令の第2オペランド指定部を
デコードすることによりレジスタr30を指定する第2
レジスタアドレスRA2を生成し、第1レジスタファイ
ル12、第2レジスタファイル13、第3レジスタファ
イル30、書込済みフラグ14及び書込済みフラグ31
に供給する。これにより、第1レジスタファイル12、
第2レジスタファイル13及び第3レジスタファイル3
0の各第2出力ポートからレジスタr30の内容が読み
出され、それぞれセレクタ15Bの入力端子A、セレク
タ32Bの入力端子A及びセレクタ32Bの入力端子B
に供給される。また、書込済みフラグ14及び書込済み
フラグ31の各第2出力ポートからフラグf30が読み
出され、それぞれORゲート36B及びANDゲート3
4Bに供給される。
【0115】ここで、第1オペランド及び第2オペラン
ドのデータは次のようにして得られる。即ち、第3レジ
スタファイル30にデータが格納されたか否か(書込済
みフラグ31が「1」か否か)によって第2レジスタフ
ァイル13からのデータを選択するかどうかが決定さ
れ、第2レジスタファイル13及び第3レジスタファイ
ル30の何れにもデータが格納されていない場合(書込
済みフラグ14及び31の何れもが「0」の場合)に第
1レジスタファイル12からのデータが選択され、以て
第1オペランド及び第2オペランドのデータが生成され
る。
【0116】具体的には、サブ実行中フラグ17及び3
3は双方とも「1」であるので、書込済みフラグ14の
第1出力ポートからのフラグf20及び書込済みフラグ
31の第1出力ポートからのフラグf20の双方が
「0」であれば、ANDゲート16Aは「0」を出力す
るので、セレクタ15Aの入力端子A側が選択される。
その結果、第1レジスタファイル12の第1出力ポート
から読み出されたレジスタr20の内容が第1オペラン
ドのデータとして演算ユニット18に供給される。な
お、第2レジスタファイル13及び第3レジスタファイ
ル30の各レジスタr20から読み出されたデータは無
視される。
【0117】また、書込済みフラグ14の第1出力ポー
トからのフラグf20が「1」であれば、書込済みフラ
グ31の第1出力ポートからのフラグf20の状態に拘
わらず、ORゲート36Aが「1」を出力することによ
りANDゲート16Aは「1」を出力する。これによ
り、セレクタ15Aの入力端子B側が選択される。ま
た、ANDゲート34Aは「1」を出力するので、セレ
クタ32Aの入力端子A側が選択される。その結果、第
2レジスタファイル13の第1出力ポートから読み出さ
れたレジスタr20の内容が、セレクタ32A及び15
Aを経由して、第1オペランドのデータとして演算ユニ
ット18に供給される。
【0118】更に、書込済みフラグ14の第1出力ポー
トからのフラグf20が「0」であり、且つ書込済みフ
ラグ31の第1出力ポートからのフラグf20が「1」
であれば、ANDゲート34Aが「1」を出力するので
セレクタ32Aの入力端子B側が選択される。また、A
NDゲート34Aが「1」を出力することによりORゲ
ート36Aは「1」を出力する。これにより、ANDゲ
ート16Aは「1」を出力するので、セレクタ15Aの
入力端子B側が選択される。その結果、第3レジスタフ
ァイル30の第1出力ポートから読み出されたレジスタ
r20の内容が、セレクタ32A及び15Aを経由し
て、第1オペランドのデータとして演算ユニット18に
供給される。
【0119】以上は第1オペランドのデータを得る場合
の動作であるが、第2オペランドのデータも上記と全く
同様の方法で得られる。
【0120】演算ユニット18は、セレクタ15Aから
のデータとセレクタ15Bからのデータとを加算し、結
果を第1レジスタファイル12、第2レジスタファイル
13及び第3レジスタファイル30の各入力端子に供給
する。この際、サブ実行中フラグ17は「1」であり且
つ第2サブ実行中フラグ31は「1」であるので、制御
信号生成回路35からの書込イネーブル信号WE3が
「1」にされる。これにより、上記演算結果は、第3レ
ジスタファイル30内の、第2レジスタアドレスRA2
で指定されるレジスタr30に書き込まれる。同時に、
書込済みフラグ31内のフラグf30が「1」にセット
される。
【0121】以上により、第1オペランドデータが第1
レジスタファイル12のレジスタr20から読み出さ
れ、第2オペランドデータが第2レジスタファイル13
のレジスタr30から読み出されたとすれば、第1レジ
スタファイル12内のレジスタr20の内容と第2レジ
スタファイル13内のレジスタr30の内容とが加算さ
れ、結果が第3レジスタファイル30内のレジスタr3
0に格納され、add命令「add r20,r30」
の実行が完了する。
【0122】一方、第3レジスタファイル30内のレジ
スタr30に既に書き込みが行われていれば、書込済み
フラグ33内のフラグf30は「1」にセットされてい
る。この場合、ANDゲート34Bから「1」が出力さ
れるので、セレクタ32Bの入力端子Bが選択される。
その結果、第3レジスタファイル30のレジスタr30
からのデータがセレクタ32Bによって選択され、第2
オペランドのデータとしてセレクタ15Bを経由して演
算ユニット18に供給される。
【0123】演算ユニット18は、上記と同様にして演
算を実行する。そして、このadd命令の演算結果を、
第3レジスタファイル30内の、第2レジスタアドレス
RA2で指定されるレジスタr30に書き込む。以上に
より、第1レジスタファイル12内のレジスタr20の
内容と第3レジスタファイル30内のレジスタr30の
内容とが加算され、結果が第3レジスタファイル30内
のレジスタr30に格納され、add命令「add r
20,r30」の実行が完了する。
【0124】次に、命令フェッチ機構によって主記憶か
らret命令が読み出され、命令レジスタ10に格納さ
れと、命令デコーダ11は、命令レジスタ10に記憶さ
れている命令のオペレーションコード部をデコードする
ことによりret命令を表す信号RETを生成し、制御
信号生成回路35に供給する。制御信号生成回路35
は、これに応答して信号RET2を生成し、第2サブ実
行中フラグ33に供給する。これにより、第3サブ実行
中フラグ33は、「0」にクリアされる。以上により、
ret命令の実行が完了し、次の命令サイクルから第1
サブルーチンの実行が開始されると共に、第2レジスタ
ファイル13が使用されることになる。
【0125】なお、上述した実施の形態3に係る情報処
理装置は、図6に示すように変形できる。図6に示した
情報処理装置では、図5に示したORゲート36A及び
36Bが削除され、代わりにORゲート37A及び37
Bが追加されている。この場合も、図5に示した情報処
理装置と同様の機能を実現できる。
【0126】以上説明した実施の形態3に係る情報処理
装置によれば、3個のレジスタファイルを、少ないオー
バーヘッドで切り替えることができるので、高速なデー
タ処理が可能になる。
【0127】なお、上記実施の形態3では、3個のレジ
スタファイルを有する情報処理装置について説明した
が、レジスタファイル、セレクタ、ANDゲート及びサ
ブ実行中フラグを適宜追加することにより、4個以上の
レジスタファイルを有する情報処理装置を構成できる。
【0128】また、上述した実施の形態1〜3では、2
オペランド命令を処理する情報処理装置を例に挙げて説
明したが、本発明は、1オペランド形式及び3オペラン
ド形式の命令を処理する情報処理装置にも適用できる。
また、上述した実施の形態1〜3では、レジスタファイ
ルとしてデュアルポートRAMを例に挙げて説明した
が、本発明は、1又は3以上のポートを有するRAMに
も適用できる。この場合、ポート数に応じてセレクタや
ANDゲートの数を決定することができる。また、レジ
スタファイルはRAMに限らず、通常のレジスタやフリ
ップフロップ等で構成してもよい。更に、各命令の実行
は、逐次処理やパイプライン処理等様々な処理形態で行
うことができる。
【0129】
【発明の効果】以上詳述したように、本発明によれば、
受け渡すべきパラメータの数に影響されずに、レジスタ
ファイルを迅速に切り替えることができる情報処理装置
及びそのレジスタファイル切替方法を提供できる。
【図面の簡単な説明】
【図1】本発明の実施の形態1に係る情報処理装置の主
要部の構成を示すブロック図である。
【図2】本発明の実施の形態1に係る情報処理装置の動
作を説明するためのプログラム例を示す図である。
【図3】本発明の実施の形態1に係る情報処理装置の変
形例の構成を示すブロック図である。
【図4】本発明の実施の形態2に係る情報処理装置の構
成を示すブロック図である。
【図5】本発明の実施の形態3に係る情報処理装置の構
成を示すブロック図である。
【図6】図5に示した情報処理装置の変形例を示すブロ
ック図である。
【図7】従来の情報処理装置の構成を示すブロック図で
ある。
【図8】従来のレジスタウインドウ技術を説明するため
の図である。
【符号の説明】
10 命令レジスタ 11 命令デコーダ 12 第1レジスタファイル 13 第2レジスタファイル 14 書込済みフラグ 15A、15B セレクタ 16A、16B ANDゲート 17 サブ実行中フラグ 18 演算ユニット 19 インバータ

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】第1命令の実行時に使用される第1レジス
    タファイルと、 第2命令の実行時に使用される第2レジスタファイル
    と、 前記第1命令から前記第2命令が呼び出された時に、前
    記第1レジスタファイルが使用される状態から前記第2
    レジスタファイルが使用される状態に切り替える制御部
    と、 前記第2命令の実行時に、該第2命令で使用するデータ
    が前記制御部によって切り替えられた前記第2レジスタ
    ファイルに書き込まれていなければ、前記第1レジスタ
    ファイルから該データを入手する第1経路と、 前記第2命令の実行時に、該第2命令で使用するデータ
    が前記制御部によって切り替えられた前記第2レジスタ
    ファイルに書き込まれていれば、前記第2のレジスタフ
    ァイルから該データを入手する第2経路と、 前記第1経路及び前記第2経路の何れかから入手された
    データに基づき前記第2命令を実行した結果を前記第2
    レジスタファイルに書き込む第3経路、とを有する情報
    処理装置。
  2. 【請求項2】前記第2命令を実行した結果が前記第2レ
    ジスタファイルに書き込まれた場合にセットされる書込
    済みフラグを更に備え、 前記書込済みフラグがセットされていない場合に前記第
    1経路から、前記書込済みフラグがセットされている場
    合に前記第2経路から、それぞれ前記第2命令で使用す
    るデータを入手する請求項1に記載の情報処理装置。
  3. 【請求項3】前記書込済みフラグは、前記第1命令から
    前記第2命令が呼び出された時にクリアされる請求項1
    又は2に記載の情報処理装置。
  4. 【請求項4】前記第1レジスタファイルに含まれるレジ
    スタの数は前記第2レジスタファイルに含まれるレジス
    タの数と同じである請求項1乃至3の何れか1項に記載
    の情報処理装置。
  5. 【請求項5】前記第1レジスタファイルは、前記第2命
    令の実行時に参照されない第1のレジスタ領域と前記第
    2命令の実行時に参照可能な第2のレジスタ領域とを有
    し、 前記第2レジスタファイルは、前記第2レジスタ領域に
    対応するレジスタ領域を有する請求項1乃至3の何れか
    1項に記載の情報処理装置。
  6. 【請求項6】前記第1レジスタファイル及び前記第2レ
    ジスタファイルはRAMで構成される請求項1乃至5の
    何れか1項に記載の情報処理装置。
  7. 【請求項7】前記第1経路及び前記第2経路の何れかか
    ら入手されたデータに基づき前記第2命令を実行した結
    果を前記第1レジスタファイルに書き込む第4経路を更
    に備えた請求項1乃至6の何れか1項に記載の情報処理
    装置。
  8. 【請求項8】少なくとも3つの命令のそれぞれに対応
    し、各命令を実行するために使用される少なくとも3個
    のレジスタファイルと、 所定の命令から他の命令が呼び出された時に、前記所定
    の命令に対応する所定のレジスタファイルが使用される
    状態から前記他の命令に対応する他のレジスタファイル
    ファイルが使用される状態に切り替える制御部と、 前記他の命令の実行時に、該他の命令で使用するデータ
    が前記制御部によって切り替えられた前記他のレジスタ
    ファイルに書き込まれていなければ、前記他のレジスタ
    ファイル以外のレジスタファイルから該データを入手す
    る第1経路と、 前記他の命令の実行時に、該他の命令で使用されるデー
    タが前記制御部によって切り替えられた前記他のレジス
    タファイルに書き込まれていれば、前記他のレジスタフ
    ァイルから該データを入手する第2経路と、 前記第1経路及び前記第2経路の何れかから入手された
    データに基づき前記他の命令を実行した結果を前記他の
    レジスタファイルに書き込む第3経路、とを備えた情報
    処理装置。
  9. 【請求項9】前記他の命令を実行した結果が前記他のレ
    ジスタファイルに書き込まれた場合にセットされる書込
    済みフラグを更に備え、 前記書込済みフラグがセットされていない場合に前記第
    1経路から、前記書込済みフラグがセットされている場
    合に前記第2経路から、それぞれ前記他の命令で使用す
    るデータを入手する請求項8に記載の情報処理装置。
  10. 【請求項10】前記書込済みフラグは、前記所定の命令
    から前記他の命令が呼び出された時にクリアされる請求
    項8又は9に記載の情報処理装置。
  11. 【請求項11】第1命令の実行時に使用される第1レジ
    スタファイルと、第2命令の実行時に使用される第2レ
    ジスタファイルとを備えた情報処理装置のレジスタファ
    イル切替方法であって、 (a)前記第1命令から前記第2命令が呼び出された時
    に、前記第1レジスタファイルが使用される状態から前
    記第2レジスタファイルが使用される状態に切り替える
    ステップと、 (b)前記第2命令の実行時に、該第2命令で使用する
    データが前記ステップ(a)で切り替えられた前記第2
    レジスタファイルに書き込まれていなければ、前記第1
    レジスタファイルから該データを入手するステップと、 (c)前記第2命令の実行時に、該第2命令で使用する
    データが前記ステップ(a)で切り替えられた前記第2
    レジスタファイルに書き込まれていれば、前記第2のレ
    ジスタファイルから該データを入手するステップと、 (d)前記ステップ(b)及び前記ステップ(c)の何
    れかで入手されたデータに基づき前記第2命令を実行し
    た結果を前記第2レジスタファイルに書き込むステッ
    プ、とを有する情報処理装置のレジスタファイル切替方
    法。
  12. 【請求項12】前記第2命令を実行した結果が該第2レ
    ジスタファイルに書き込まれた場合に書込済みフラグを
    セットするステップを更に備え、 前記書込済みフラグがセットされていない場合は前記ス
    テップ(b)で入手されたデータを、前記書込済みフラ
    グがセットされている場合は前記ステップ(c)で入手
    されたデータを、それぞれ前記第2命令で使用する請求
    項11に記載の情報処理装置のレジスタファイル切替方
    法。
  13. 【請求項13】前記書込済みフラグは、前記第1命令か
    ら前記第2命令が呼び出された時にクリアされる請求項
    11又は12に記載の情報処理装置のレジスタファイル
    切替方法。
  14. 【請求項14】前記ステップ(b)及び前記ステップ
    (c)の何れかで入手されたデータに基づき前記第2命
    令を実行した結果を前記第1レジスタファイルに書き込
    むステップを更に備えた請求項11乃至13の何れか1
    項に記載の情報処理装置レジスタファイル切替方法。
  15. 【請求項15】少なくとも3つの命令のそれぞれに対応
    し、各命令を実行するために使用される少なくとも3個
    のレジスタファイルを備えた情報処理装置のレジスタフ
    ァイル切替方法であって、 (a)所定の命令から他の命令が呼び出された時に、前
    記所定の命令に対応する所定のレジスタファイルが使用
    される状態から前記他の命令に対応する他のレジスタフ
    ァイルファイルが使用される状態に切り替えるステップ
    と、 (b)前記他の命令の実行時に、該他の命令で使用する
    データが前記ステップ(a)で切り替えられた前記他の
    レジスタファイルに書き込まれていなければ、前記他の
    レジスタファイル以外のレジスタファイルから該データ
    を入手するステップと、 (c)前記他の命令の実行時に、該他の命令で使用され
    るデータが前記ステップ(a)で切り替えられた前記他
    のレジスタファイルに書き込まれていれば、前記他のレ
    ジスタファイルから該データを入手するステップと、 (d)前記ステップ(b)及び前記ステップ(c)の何
    れかで入手されたデータに基づき前記他の命令を実行し
    た結果を前記他のレジスタファイルに書き込むステッ
    プ、とを備えた情報処理装置のレジスタファイル切替方
    法。
  16. 【請求項16】前記他の命令を実行した結果が前記他の
    レジスタファイルに書き込まれた場合に書込済みフラグ
    をセットするステップを更に備え、 前記書込済みフラグがセットされていない場合は前記ス
    テップ(b)で入手されたデータを、前記書込済みフラ
    グがセットされている場合は前記ステップ(c)で入手
    されたデータを、それぞれ前記他の命令で使用する請求
    項15に記載の情報処理装置のレジスタファイル切替方
    法。
  17. 【請求項17】前記書込済みフラグは、前記所定の命令
    から前記他の命令が呼び出された時にクリアされる請求
    項15又は16に記載の情報処理装置レジスタファイル
    切替方法。
JP11162784A 1999-06-09 1999-06-09 情報処理装置及びそのレジスタファイル切替方法 Pending JP2000353092A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP11162784A JP2000353092A (ja) 1999-06-09 1999-06-09 情報処理装置及びそのレジスタファイル切替方法
EP00112075A EP1059579A3 (en) 1999-06-09 2000-06-05 Information processor and method for switching register files
US09/589,963 US6704858B1 (en) 1999-06-09 2000-06-08 Information processor and method for switching those register files

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11162784A JP2000353092A (ja) 1999-06-09 1999-06-09 情報処理装置及びそのレジスタファイル切替方法

Publications (1)

Publication Number Publication Date
JP2000353092A true JP2000353092A (ja) 2000-12-19

Family

ID=15761152

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11162784A Pending JP2000353092A (ja) 1999-06-09 1999-06-09 情報処理装置及びそのレジスタファイル切替方法

Country Status (3)

Country Link
US (1) US6704858B1 (ja)
EP (1) EP1059579A3 (ja)
JP (1) JP2000353092A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011154534A (ja) * 2010-01-27 2011-08-11 Fujitsu Semiconductor Ltd リコンフィギュラブル回路および半導体集積回路

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024663B2 (en) * 2002-07-10 2006-04-04 Micron Technology, Inc. Method and system for generating object code to facilitate predictive memory retrieval
US6954836B2 (en) * 2002-07-11 2005-10-11 Micron Technology, Inc. System and method for processor with predictive memory retrieval assist
AU2003292451A1 (en) * 2002-12-04 2004-06-23 Koninklijke Philips Electronics N.V. Register file gating to reduce microprocessor power dissipation
JP5028774B2 (ja) * 2005-09-22 2012-09-19 富士通株式会社 演算処理装置,情報処理装置,及びレジスタファイルの制御方法
JP5130757B2 (ja) * 2007-03-16 2013-01-30 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US8862836B2 (en) * 2011-06-14 2014-10-14 Texas Instruments Incorporated Multi-port register file with an input pipelined architecture with asynchronous reads and localized feedback
US8862835B2 (en) * 2011-06-14 2014-10-14 Texas Instruments Incorporated Multi-port register file with an input pipelined architecture and asynchronous read data forwarding
US11243905B1 (en) * 2020-07-28 2022-02-08 Shenzhen GOODIX Technology Co., Ltd. RISC processor having specialized data path for specialized registers

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4215396A (en) * 1978-08-24 1980-07-29 Texas Instruments Incorporated Intelligent programmable process control system
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
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
JPS63156236A (ja) 1986-12-19 1988-06-29 Toshiba Corp レジスタ装置
JPH0630063B2 (ja) * 1989-02-17 1994-04-20 株式会社東芝 マイクロプロセッサ
JPH0335324A (ja) 1989-06-30 1991-02-15 Sharp Corp マイクロコンピュータ
US5226142A (en) * 1990-11-21 1993-07-06 Ross Technology, Inc. High performance register file with overlapping windows
US5448707A (en) * 1991-10-29 1995-09-05 Intel Corporation Mechanism to protect data saved on a local register cache during inter-subsystem calls and returns
JPH0764857A (ja) 1993-08-24 1995-03-10 Matsushita Electric Ind Co Ltd データ記憶装置
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor
US5870597A (en) * 1997-06-25 1999-02-09 Sun Microsystems, Inc. Method for speculative calculation of physical register addresses in an out of order processor
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US6408325B1 (en) * 1998-05-06 2002-06-18 Sun Microsystems, Inc. Context switching technique for processors with large register files
US6282633B1 (en) * 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011154534A (ja) * 2010-01-27 2011-08-11 Fujitsu Semiconductor Ltd リコンフィギュラブル回路および半導体集積回路

Also Published As

Publication number Publication date
US6704858B1 (en) 2004-03-09
EP1059579A3 (en) 2004-04-28
EP1059579A2 (en) 2000-12-13

Similar Documents

Publication Publication Date Title
JP4829541B2 (ja) マルチレベル・レジスタ・ファイルを有するディジタル・データ処理装置
JP3120152B2 (ja) コンピューターシステム
US7533246B2 (en) Application program execution enhancing instruction set generation for coprocessor and code conversion with marking for function call translation
US5617553A (en) Computer system which switches bus protocols and controls the writing of a dirty page bit of an address translation buffer
JP3209205B2 (ja) プロセッサにおけるレジスタ内容の継承装置
EP0148478A2 (en) A data processor with control of the significant bit lenghts of general purpose registers
JPH08278918A (ja) エンディアンタスクを実行するシステム及び方法
JPH03129433A (ja) 並列処理装置および並列処理方法
JP2004512599A (ja) ディジタル信号処理装置
KR20100036279A (ko) 복수의 프로세서들을 포함하는 시스템 및 그 동작 방법
CA1202425A (en) Multiprocessor system including firmware
GB2443298A (en) Cache memory with tag memory bypass circuit
JP2000353092A (ja) 情報処理装置及びそのレジスタファイル切替方法
US20110231637A1 (en) Central processing unit and method for workload dependent optimization thereof
JP2000284964A (ja) Vliwプロセッサにおける効率的なサブ命令エミュレーション
US6233675B1 (en) Facility to allow fast execution of and, or, and test instructions
JP3670646B2 (ja) レジスタ転送オペレーション
JPH03204030A (ja) コンピュータ用プロセツサ
CN113961452A (zh) 硬中断方法和相关装置
KR19980058221A (ko) 파이프라인 정지회로를 구비한 프로세서
US5893928A (en) Data movement apparatus and method
CN117083594B (zh) 用于在矢量处理器中进行去同步化执行的方法和设备
JPH09305401A (ja) コンピュータ及びコンパイラ
JP2883465B2 (ja) 電子計算機
JPS6220034A (ja) プログラム状態語切換制御方式

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20020306