JPH07281892A - 情報処理装置 - Google Patents

情報処理装置

Info

Publication number
JPH07281892A
JPH07281892A JP6068499A JP6849994A JPH07281892A JP H07281892 A JPH07281892 A JP H07281892A JP 6068499 A JP6068499 A JP 6068499A JP 6849994 A JP6849994 A JP 6849994A JP H07281892 A JPH07281892 A JP H07281892A
Authority
JP
Japan
Prior art keywords
register
instruction
address
value
link
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
JP6068499A
Other languages
English (en)
Inventor
Shigeya Tanaka
成弥 田中
Takashi Hotta
多加志 堀田
Masashi Yoshida
昌司 吉田
Kotaro Matsuo
康太郎 松尾
Hiroji Saitou
拡二 齋藤
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP6068499A priority Critical patent/JPH07281892A/ja
Publication of JPH07281892A publication Critical patent/JPH07281892A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【目的】 小さなハ−ドウエアで効率的に復帰アドレス
を保持し、かつペナルティを減らすこと。 【構成】 Linkアドレスを保持する第1のレジスタ
(101)と、それを命令アドレスとして切り換える第
1の切り換え手段(102)と、全ての命令において書
き込み先が汎用レジスタ内のLink用レジスタに書き
込む値を第1のレジスタへ書き込む手段(153)と、
復帰命令を汎用レジスタ内のLinkレジスタから読み
出した第2のレジスタ(123)と、それを命令アドレ
スとして切り換える第2の手段(114)と、第1と第
2のレジスタの値を比較する比較回路(103)を有
し、復帰命令を解読すると、第1の切り換え手段(10
2)で次の命令アドレスを切り換え、その後比較回路
(103)により比較した結果、不一致の場合、第2の
切り換え手段(114)で次の命令アドレスを切り換
え、第1の切り換え手段(102)により指定された命
令を無効化するように制御手段により制御される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は情報処理装置に係り、特
に分岐命令の処理の高速化を図った情報処理装置に関す
る。
【0002】
【従来の技術】一般のプログラムは、通常図2に示す動
作を頻繁に行なう。すなわち、プログラム1が別のプロ
グラム2を呼出し、実行途中にさらにプログラム3を呼
出し、実行途中にさらにプログラム4を呼び出して実行
し、プログラム4が完了するとプログラム3の途中へ戻
り実行し、プログラム3が完了するとプログラム2の途
中に戻り実行し、プログラム2が実行するとプログラム
1に戻り実行する。
【0003】このように、別のプログラムへ移るとき、
レジスタの退避、回復が生じる。レジスタ退避、回復
は、別のプログラムへ移るときに、前のプログラムのプ
ロセッサ処理状態が壊されてしまうレジスタを退避する
こと、及び、復帰するアドレス(Linkアドレスと呼
ぶ)を退避することと、また、前のプログラムのプロセ
ッサ処理状態に戻るとき、破壊されるために退避したレ
ジスタや前のプログラムに復帰するためのアドレスを回
復することのために必要な処理である。
【0004】Linkレジスタを中心に説明すると、プ
ログラム1のBL命令(Branch and Lin
k)命令は、プログラム2の先頭アドレスへのJump
と戻りアドレス(一般にBL命令の次の命令のアドレ
ス)をレジスタファイル内の特定のLinkレジスタへ
セットする。プログラム2は、Linkアドレスの格納
されている特定のLinkレジスタをメモリに格納す
る。なぜなら、プログラム2中にBL命令が発行される
と特定のLinkレジスタ上の値が書き替えられてしま
い、プログラム1への戻りアドレスを失うためである。
このメモリに格納する動作は、図2の例ではプログラム
2、プログラム3の先頭アドレス付近にあるストア命令
で見られる。プログラム4のように、このプログラムか
ら次のプログラムを呼び出さないことが自明の場合は、
メモリに格納する処理を省くことも可能である。
【0005】プログラム4は、BV(Branch V
ector)命令によってLinkレジスタの値をアド
レスとしてJumpする。このアドレスは、プログラム
3のBL命令の次の命令を指しており、プログラム3へ
復帰することを意味する。プログラム3は、プログラム
2へ復帰するためにメモリに格納したプログラム2の戻
り(Link)アドレスを読み出してロ−ドしてLin
kレジスタへ格納する。その後、プログラム3はBV命
令によってLinkレジスタの値をアドレスとしてJu
mpする。このアドレスは、プログラム2のBL命令の
次を指しており、プログラム2へ復帰することを意味す
る。
【0006】同様にしてプログラム2はプログラム1へ
復帰するためにメモリに格納したプログラム1の戻り
(Link)アドレスを読み出してLinkレジスタへ
格納する。その後プログラム2は、BV命令によってL
inkレジスタの値をアドレスとしてJumpする。こ
のアドレスはプログラム1のBL命令の次の命令を指し
ており、プログラム1へ復帰することを意味する。その
後プログラム1の残りを実行して一連のプログラムが終
了する。
【0007】このように、代表的なプログラムはいくつ
かのプログラムを呼出し/復帰を任意に繰り返して目的
とする一連の処理を実行する。
【0008】呼出し命令であるBL命令は、一般にPC
相対命令であるが復帰命令であるBV命令はレジスタ相
対分岐である。従来例1として、BV命令の一般的なパ
イプライン処理を図3と図4に示す。(図4のブロック
図の動作説明は後述の実施例で示す。)ここで示すパイ
プラインはPC,IF,D,E,A,N,Wの7段で構
成されていると仮定する。ここで、PCはプログラムカ
ウンタステージ、IFはインストラクションフェッチス
テージ、Dはデコードステージ、Eはエグゼクションス
テージ、Aはアソシエーションステージ、Nはヌルステ
ージ、Wはライトステージをそれぞれ示している。BV
命令は、Dステ−ジでレジスタを読み出し、Eステ−ジ
でPCを切り換える(いわいるJumpする)動作を行
なう。これによってBV命令のペナルティは2となる。
このように一般的なレジスタ相対分岐命令のパイプライ
ンについては例えば特開平02−130634に記載さ
れている。
【0009】復帰する分岐命令の従来例2として、日経
エレクトロニクス1993.9−13 No.590
P211〜P217や特開平5−120013の「分岐
命令バッファを有するデ−タプロセッサ」に書かれてい
るようにリタ−ンバッファをもつ手法がある。
【0010】リタ−ンバッファは、プログラム読み出し
時の復帰アドレスを多段保持するものである。図2でプ
ログラム1のBL命令を実行したとき、Linkアドレ
スをリタ−ンバッファに登録する。プログラム2、プロ
グラム3、プログラム4と実行が進むと、それぞれのプ
ログラム中のBL命令が実行され、リタ−ンバッファは
プログラム1、プログラム2、プログラム3のLink
アドレスを保持する。プログラム4の復帰命令であるB
V命令がDステ−ジを実行すると、復帰アドレスをリタ
−ンバッファから最後に登録されたLinkアドレスを
読み出す。これによって、前記従来例1に比べ、1サイ
クル早いステ−ジで復帰アドレスを切り換えられるの
で、1つペナルティが減少し、高速化される。BV命令
が実行されると、リタ−ンバッファはそのアドレスを保
持しないので、プログラム3のBV命令が実行されると
リタ−ンバッファから読みだされるアドレスは、プログ
ラム2の復帰アドレスとなる。以下同様にして復帰アド
レスをリタ−ンバッファからの読み出しという形で実行
可能される。
【0011】
【発明が解決しようとする課題】上述した従来例1で
は、ペナルティが大きいという問題があった。復帰命令
の処理を高速化するにはこのペナルティを減らす必要が
ある。
【0012】また従来例2で、ハ−ドウエア物量が増大
するという問題があった。一般にリタ−ンバッファは、
4〜16プログラム分、持っているため、32ビットア
ドレス×(4〜16)の保持レジスタが必要となる。
【0013】また、プログラム実行中に、タスクが切り
替わると、そのプログラムのリタ−ンバッファが保証さ
れずオ−バ−ヘッドになること等が考えられる。
【0014】本発明はこのような事情に鑑みてなされた
ものであり、小さなハ−ドウエアで効率的に復帰アドレ
スを保持し、かつ、ペナルティを減らすことができる情
報処理装置を提供することを目的とする。
【0015】
【課題を解決するための手段】本発明の情報処理装置
は、復帰命令を含む命令を実行する情報処理装置におい
て、Linkアドレスを保持する第1のバッファレジス
タと、全ての命令において書き込み先が汎用レジスタ内
の予めLink用に定められたレジスタに書き込みを行
なうことを検出して書き込むべき値を前記第1のバッフ
ァレジスタへ書き込む書き込み手段と、前記第1のバッ
ファレジスタの値を次の命令読み出し用アドレスとして
切り換える第1の切り換え手段と、復帰命令を汎用レジ
スタ内の予めLink用に定められたレジスタから読み
出し正しく実行して求めた第2のアドレスレジスタと、
前記第2のアドレスレジスタの値を次の命令読み出し用
アドレスとして切り換える第2の切り換え手段と、前記
第1のバッファレジスタの値と第2のアドレスレジスタ
の値を比較する比較回路と、復帰命令を解読すると、第
1の切り換え手段により第1のバッファレジスタの値を
次の命令読み出し用アドレスとして切り換え、その後比
較回路により比較した結果、不一致の場合、第2の切り
換え手段により第2のアドレスレジスタの値を次の命令
読み出し用アドレスとして切り換え、第1の切り換え手
段により読み出した命令を無効化するように制御する制
御手段とを有することを特徴とする。
【0016】本発明の情報処理装置は、復帰命令を含む
命令をパイプライン実行する情報処理装置において、L
inkアドレスを保持する第1のバッファレジスタと、
全ての命令において書き込み先が汎用レジスタ内の予め
Link用に定められたレジスタに書き込みを行なうこ
とを検出して書き込むべき値をその命令が汎用レジスタ
内の予めLink用に定められたレジスタに書き込みを
行なう前にバイパスして前記第1のバッファレジスタへ
書き込む書き込み手段と、前記第1のバッファレジスタ
の値を次の命令読み出し用アドレスとして切り換える第
1の切り換え手段と、復帰命令を汎用レジスタ内の予め
Link用に定められたレジスタから読み出し正しく実
行して求めた第2のアドレスレジスタと、前記第2のア
ドレスレジスタの値を次の命令読み出し用アドレスとし
て切り換える第2の切り換え手段と、前記第1のバッフ
ァレジスタの値と第2のアドレスレジスタの値を比較す
る比較回路と、復帰命令を解読すると、第1の切り換え
手段により第1のバッファレジスタの値を次の命令読み
出し用アドレスとして切り換え、その後比較回路により
比較した結果、不一致の場合、第2の切り換え手段によ
り第2のアドレスレジスタの値を次の命令読み出し用ア
ドレスとして切り換え、第1の切り換え手段により読み
出した命令を無効化するように制御する制御手段とを有
することを特徴とする。
【0017】本発明の情報処理装置は復帰命令を含む命
令を実行する情報処理装置において、Linkアドレス
を保持する第1のバッファレジスタと、全ての命令にお
いて書き込み先が汎用レジスタ内の予めLink用に定
められたレジスタに書き込みを行なうことを検出して書
き込むべき値を前記第1のバッファレジスタへ書き込む
書き込み手段と、前記第1のバッファレジスタの値を次
の命令読み出し用アドレスとして切り換える第1の切り
換え手段と、復帰命令を汎用レジスタ内の予めLink
用に定められたレジスタから読み出し正しく実行して求
めた第2のアドレスレジスタと、前記第2のアドレスレ
ジスタの値を次の命令読み出し用アドレスとして切り換
える第2の切り換え手段と、復帰命令を解読すると、第
1の切り換え手段により第1のバッファレジスタの値を
次の命令読み出し用アドレスとして切り換え、該切り換
え後、復帰命令を実行して求めたアドレスを前記第2の
アドレスレジスタに設定するまでに前記第1のバッファ
レジスタの内容が書き換えられたか否かを検出し、前記
第1のバッファレジスタの内容が書き換えられた場合に
は、第2の切り換え手段により第2のアドレスレジスタ
の値を次の命令読み出し用アドレスとして切り換え、第
1の切り換え手段により読み出した命令を無効化するよ
うに制御する制御手段とを有することを特徴とする。
【0018】本発明の情報処理装置は、書き込み先が汎
用レジスタ内の予めLink用に定められたレジスタに
書き込みを行なう命令を検出して書き込むべき値を第1
のバッファレジスタへ書き込む前記処理は、少なくとも
ロ−ド命令で行なうことを特徴とする。
【0019】本発明の情報処理装置は、書き込み先が汎
用レジスタ内の予めLink用に定められたレジスタに
書き込みを行なう命令を検出して書き込むべき値を第1
のバッファレジスタへ書き込む処理は、少なくとも演算
命令、移動命令、分岐命令で行なうことを特徴とする。
【0020】本発明の情報処理装は、第1のバッファレ
ジスタは、常に汎用レジスタ内の予めLink用に定め
られたレジスタに最も新たに書き込みされた命令のLi
nkレジスタの値のみ保持することを特徴とする。
【0021】
【作用】上記構成の情報処理装置では、復帰命令を解読
すると、第1の切り換え手段により第1のバッファレジ
スタの値を次の命令読み出し用アドレスとして切り換
え、その後、比較回路により第1のバッファレジスタの
値と第2のアドレスレジスタの値とを比較した結果、不
一致の場合、第2の切り換え手段により第2のアドレス
レジスタの値を次の命令読み出し用アドレスとして切り
換え、第1の切り換え手段により読み出した命令を無効
化するように制御される。
【0022】これによって、第1のバッファレジスタ
は、常に汎用レジスタ内の予めLink用に定められた
レジスタに最も新たに書き込みされた命令のLinkレ
ジスタの値のみ保持することが可能となり、小さなハ−
ドウエアで効率的に復帰アドレスを保持することができ
る。
【0023】また上記構成の情報処理装置では、復帰命
令を解読すると、第1の切り換え手段により第1のバッ
ファレジスタの値を次の命令読み出し用アドレスとして
切り換えるので、第1のバッファレジスタの値と第2の
アドレスレジスタの値が一致した場合、復帰命令を汎用
レジスタ内の予めLink用に定められたレジスタから
読み出し正しく実行するよりも早いステ−ジでアドレス
を切り換えられる。
【0024】これにより第1のバッファレジスタの値と
第2のアドレスレジスタの値が一致した場合、ペナルテ
ィを減らすことができる。
【0025】更に上記構成の情報処理装置では、復帰命
令を解読すると、第1の切り換え手段により第1のバッ
ファレジスタの値を次の命令読み出し用アドレスとして
切り換え、該切り換え後、復帰命令を実行して求めたア
ドレスを第2のアドレスレジスタに設定するまでに第1
のバッファレジスタの内容が書き込まれたか否かを検出
し、書き込まれた場合には、第2の切り換え手段により
第2のアドレスレジスタの値を次の命令読み出し用アド
レスとして切り替え、第1の切り換え手段により読み出
した命令を無効化するように制御される。
【0026】これにより第1のバッファレジスタの値と
第2のアドレスレジスタの値を比較するための比較回路
及びラッチが不要となるので、ハードウエアの物量をよ
り低減することが出来る。
【0027】
【実施例】以下、本発明の実施例の図面を参照して説明
する。図1、図5に本発明に係る実施例の一実施例の構
成を、図6にパイプライン動作をそれぞれ示す。
【0028】まず始めに、本実施例の中で使用する復帰
命令の命令仕様について述べる。
【0029】BV命令は、汎用的なレジスタ相対命令と
定義する。
【0030】動作は、 PCnext ← GR(i)+GR(X) である。
【0031】つまり、GR(i)とGR(X)を加算し
たものが次のアドレスとなる。復帰命令は、このBV命
令のX=0つまりゼロ番地のレジスタを指す。ゼロ番目
のレジスタは、オ−ル0の値が常に入っているので、復
帰時に使うBV命令の動作は 、 PCnext ← GR(i) となる。
【0032】このi番目のレジスタに戻り、アドレスを
格納しておくことにより図2で示すプログラムの復帰ア
ドレス動作が可能になる。なお、コンパイラ、OS等の
ソフトウエアとの約束により、常にi番目のレジスタを
Link用レジスタとして定義しておく。
【0033】BL命令は、一般のPC相対命令と定義す
る。(PC相対か否かは本発明とは独立事象である。)
動作は、 PCnext ← PC+ディスプレ−スメント GR(i) ← PC+4 である。
【0034】Link先は、BL命令の次の命令アドレ
スであり、BL命令により指されたGR(i)へ格納す
る。i番目へ格納するのはソフトウエアとの約束された
Link用レジスタとして使用するためである。
【0035】さて、図1に戻って、本発明に係る情報処
理装置の一実施例の構成を説明する。同図において情報
処理装置は、命令キャッシュ110、デコ−ダ111、
レジスタファイル112、演算器113、アドレス切り
換えバスドライバ114、次の.アドレス(PC+4)
を計算する演算器115、その結果を出力するバスドラ
イバ116、パイプライン動作するためのラッチ12
0、121、122、123、さらに、本発明の構成要
素であるLinkバッファアドレスレジスタ101、ア
ドレスバッファ101によりアドレスを切り換えるバス
ドライバ102、Linkバッファアドレスレジスタ1
01とレジスタファイル112内の復帰アドレスを比較
するための比較回路103、パイプライン動作するため
のラッチ104、105より構成される。
【0036】なお、従来のマイクロプロセッサでは、ア
ドレスを切り換える手段として、例えば割込みによるア
ドレス、条件分岐実行によるアドレス、BL命令のため
のアドレスがアドレスバス152に対して出力されるが
本発明の部分だけ図式化しており、これらの構成は省略
している。
【0037】続いて、この動作を説明する。一般に連続
したアドレスが読み出される時、演算器115で計算さ
れた演算結果(PC+4)が常にアドレスバス152に
バスドライバ116を通して出力される。
【0038】ここで(PC+4)はバイトアドレスを示
しており、固定長命令セットの場合、次の命令のアドレ
スを意味する。もし、分岐命令がアドレスを切り換える
とバスドライバ116はハイインピ−ダンスになり、切
り換えアドレスすべきバスドライバ(102又は11
4)がアドレスバス152へアドレスを出力する。これ
らの処理は、PCステ−ジで実行される。
【0039】PCステ−ジで確定された命令アドレス
は、IFステ−ジで命令キャッシュ110より命令を読
み出す。読み出された命令はDステ−ジでラッチ120
に格納され、デコ−ダ111で命令解析が行なわれる。
【0040】さらに、レジスタファイル112から読み
出しが行なわれる。レジスタファイル112から読み出
された値は、Eステ−ジでラッチ122に格納され演算
を実行する。
【0041】一般的なBV命令(復帰命令でない場合)
では、160にGR(i)の値が、161にGR(X)
の値が現れる。このBV命令は従来通り、アドレスを切
り換えるアドレスがラッチ123に格納され、デコ−ダ
からの制御信号162によって、図4の従来例と同様
(従来例はBV命令全てがこのステ−ジでアドレスを切
り換える)にEステ−ジでアドレスを切り換える。な
お、破線で示している制御信号は図中ではパイプライン
用のラッチを省略して書かれている。
【0042】続いて、本発明の構成要素の動作を示す。
Dステ−ジでデコ−ダ111が復帰命令であると解読す
ると信号150がハイレベルになり、信号162はロー
レベルになる。信号150がハイレベルになると、Dス
テ−ジでLink用バッファアドレスレジスタ101の
値をバスドライバ102を通してアドレスバス152へ
出力し、アドレスが切り換わる。この動作をパイプライ
ン的に示したものが図6である。
【0043】BV命令は本発明の構成要素と独立に、E
ステ−ジで従来例と同様に正しく演算を行なう。つま
り、復帰用BV命令のレジスタからの読み出しは160
にGR(i)が、もう一方には、オ−ル0の値が現れ
る。この結果、従来どおりアドレスを切り換えるアドレ
スがラッチ123に格納される。
【0044】この演算と並行して、Dステ−ジでPCス
テ−ジに対してアドレスを切り換えたアドレスを格納す
るラッチ105と、実際にレジスタファイル112から
読み出されたGR(i)の値を格納するラッチ104を
比較回路103で比較する。比較した結果、一致してい
た場合は、Dステ−ジで実行したアドレス切り換えが正
しかったことを意味しており、図6(a)のパイプライ
ンとなる。
【0045】一方、ラッチ105の内容とラッチ104
の内容が不一致である場合は、Dステ−ジでの先行アド
レス切り換えが正しくなかったことを意味するため、制
御信号151がハイレベルになり、ラッチ123に格納
された正しいアドレスがバスドライバ114を通してア
ドレスバス152へ出力される。これと同様に、Dステ
−ジでアドレスを切り換えて読み出された命令を無効化
する。この一連の動作をパイプライン図で示したものが
図6(b)である。
【0046】このように、Linkバッファアドレスレ
ジスタの値を使用すると値が正しいときに従来例1に比
べペナルティを減少することができる。
【0047】さて、次にLinkバッファアドレスレジ
スタの登録について図5を参照して説明する。図5は、
プロセッサの構成を示したもので、同図において情報処
理装置としてのプロセッサは、IFユニット501、D
ユニット502、Eユニット503、Aユニット50
4、Nユニット505、Wユニット506、DFユニッ
ト507、CHECKユニット508、及び、本発明の
構成要素であるLinkバッファアドレスレジスタ10
1、バスドライバ102、114から構成される。
【0048】Linkバッファアドレスレジスタ101
への登録は、大きく分けて2つに分けられる。一つは、
ロ−ド命令からの登録であり、もう一つは、演算命令、
移動命令、分岐命令からの登録である。
【0049】ロ−ド命令からの登録を図5を参照して説
明する。ロ−ド命令は、Dユニットで命令を解読し、E
ユニットでアドレスを計算する。DFユニットでデ−タ
キャッシュからデ−タを読み出し、CHECKユニット
でヒット判定を実行する。読み出した値はNユニットを
通してWユニットで命令により指されたレジスタに書き
込む。DFユニット507によりロ−ド命令のレジスタ
ファイルの書き込み先がLinkレジスタであることを
検出すると、パス511を通してLinkバッファアド
レスレジスタ101に格納する。これは、Linkバッ
ファアドレスレジスタ101の値が最も最近のロ−ド命
令によりレジスタファイルのLinkレジスタに格納さ
れる値に更新されたことを意味する。
【0050】もう一つの演算命令、移動命令、分岐命令
からの登録を図5を使って説明する。演算命令、移動命
令は、Dユニットで命令を解読し、Eユニット503で
演算を実行する。
【0051】分岐命令は、Eユニット503でLink
のためのPC+4を計算する。その後A、Nユニットを
通してWユニットで命令により指されたレジスタに書き
込む。これらの命令のレジスタファイルの書き込み先が
Eユニット503によりLinkレジスタであることを
検出すると、パス510を通してLinkバッファアド
レスレジスタ101に格納する。これは、Linkバッ
ファアドレスレジスタ101の値が最も最近の演算命
令、移動命令、分岐命令によりレジスタファイルのLi
nkレジスタに格納される値に更新されたことを意味す
る。
【0052】以上、Linkレジスタに更新する全ての
命令に対して、レジスタファイルの書き込み先がLin
kレジスタであることを検出すると、パス511又はパ
ス510を通してLinkバッファアドレスレジスタ1
01に格納する。これは、常に、最も最近書き込み先が
汎用レジスタ内の予めLink用に定められたレジスタ
に書き込みされた命令のLinkレジスタの値を保持す
ることを意味する。
【0053】以下具体的な例を示す。
【0054】ロ−ド命令によるLinkバッファレジス
タの書き込みの例を図7に示す。図7(a)は、「バッ
ファアドレス=真のアドレス」である場合のタイミング
図であり、そのプログラム例を図8(a)に示す。ロ−
ド命令から2命令離して3命令目にBV命令が現れた例
である。図7(a)で、Linkバッファアドレス10
1はロ−ド命令のNステ−ジでパス511を通して登録
される。BV命令のDステ−ジで信号150がハイレベ
ルになるため、Linkバッファアドレス101の値が
同一時刻のPCステ−ジでアドレスを切り換える。BV
命令のレジスタからの読まれた値(正しくは、ロ−ド命
令からレジスタ読み出しのためにバイパスされた値)と
同一であり、比較回路103による比較結果は一致する
ので信号151はローレベルになる。
【0055】続いて、図8(b)に示すように、ロ−ド
命令の次にすぐBV命令が来た場合の動作を示す。図7
(b)で、Linkバッファアドレス101はロ−ド命
令のNステ−ジでパス511を通して登録される。BV
命令のDステ−ジで信号150がハイレベルになるた
め、Linkバッファアドレス101の値が同一時刻の
PCステ−ジでアドレスを切り換える。この時、ロ−ド
命令からパス511を通して登録されるタイミングとア
ドレスを切り換えるタイミングがずれているためロ−ド
命令により登録される前のLinkアドレスを用いてア
ドレスを切り換える。
【0056】ここでBV命令のレジスタからの読まれた
値(正しくは、ロ−ド命令からレジスタ読み出しのため
にバイパスされた値)と切り換えたアドレスは異なるた
め、比較回路103による比較結果は不一致となり信号
151はハイレベルになる。このため、BV命令のEス
テ−ジでバスドライバ114によりアドレスを切り換
え、Dステ−ジで切り換えたアドレスにより読みだされ
た命令を無効化する。
【0057】このように、ロ−ド命令とBV命令の命令
距離により、BV命令のペナルティが換わるので、コン
パイラによりロ−ド命令から2命令以上離れてBV命令
を発行するように命令スケジュ−リングするとペナルテ
ィが減少できる。ここで命令距離とは、ある命令が出力
された時点から他の命令が出力される時点までに要する
マシンサイクルを意味するものとする。
【0058】もう一つの具体例として、演算命令、移動
命令、分岐命令の代表としてMOVE命令を示す。MO
VE命令によるLinkバッファレジスタ書き込みの例
を図9に示す。図9(a)は、「バッファアドレス=真
のアドレス」である場合のタイミング図であり、そのプ
ログラム例を図10(a)に示す。MOVE命令から2
命令目にBV命令が現れた例である。図9(a)で、L
inkバッファアドレス101はMOVE命令のAステ
−ジでパス510を通して登録される。
【0059】次にBV命令のDステ−ジで信号150が
ハイレベルになるため、Linkバッファアドレス10
1の値が同一時刻のPCステ−ジでアドレスを切り換え
る。BV命令のレジスタからの読まれた値(正しくは、
MOVE命令からレジスタ読み出しのためにバイパスさ
れた値)と同一であり、比較回路103による比較結果
は一致するので信号151はローレベルになる。
【0060】次に、図10(b)に示すように、MOV
E命令の次にすぐBV命令がきた場合の動作を示す。図
9(b)で、Linkバッファアドレス101はMOV
E命令のAステ−ジでパス510を通して登録される。
BV命令のDステ−ジで信号150がハイレベルになる
ため、Linkバッファアドレス101の値が同一時刻
のPCステ−ジでアドレスを切り換える。この時、MO
VE命令からパス511を通して登録されるタイミング
とアドレスを切り換えるタイミングがずれているためM
OVE命令により登録される前のLinkアドレスを用
いてアドレスを切り換える。BV命令のレジスタからの
読まれた値(正しくは、MOVE命令からレジスタ読み
出しのためにバイパスされた値)と切り換えたアドレス
は異なるため、比較回路103による比較結果は不一致
となり、信号151はハイレベルになる。このため、B
V命令のEステ−ジで114によりアドレスを切り換
え、Dステ−ジで切り換えたアドレスにより読みだされ
た命令を無効化する。
【0061】このように、MOVE命令とBV命令の命
令距離により、BV命令のペナルティが変わるので、コ
ンパイラによりMOVE命令から1命令以上離れてBV
命令を発行するように命令スケジュ−リングするとペナ
ルティが減少できる。
【0062】本発明の実施例の改良として図11にプロ
セッサのブロック図を示す。図5からの改良ポイントは
バイパス510、511の接続である。この接続は、W
ステ−ジでレジスタファイルと同一タイミングでLin
k用バッファアドレスレジスタ101に書き込むことを
意味している。第1の実施例では、バイパス接続してい
るため、パイプライン処理の完了までに無効化される可
能性があり、書いたアドレスに対する精度が落ちるケ−
スがある。これに対して、本実施例の改良は、レジスタ
ファイルの制御と同様に、その命令が本当に実行したと
きのみバッファアドレスレジスタ101に値を書くこと
になり、書いたアドレスに対する精度が向上する。しか
しながら、Linkレジスタに書くべき命令とBV命令
との命令距離を、第1の実施例より多く空けなければな
らない。
【0063】尚、上記実施例では第1のバッファレジス
タとしてのLinkバッファアドレスレジスタ101の
値と第2のアドレスレジスタとしてのレジスタファイル
112の値とをラッチ105、104を介して比較器1
03により比較し、その比較結果に基づいてアドレスの
切り換えを行なっているが、バスドライバ102(第1
の切り換え手段)によりLinkバッファアドレスレジ
スタ101の値を命令読み出し用アドレスとして切り換
え、この切り換え後、復帰命令を実行して求めたアドレ
スをラッチ123に設定するまでにLinkバッファア
ドレスレジスタ101を書き換えたか否かを例えば、ラ
イトネーブル信号等の存在の有無により検出することに
より、命令読み出し用アドレスの切り換えを行なうよう
にしてもよい。この構成では比較回路103、ラッチ1
04、105が不要となりハードウエアの物量がより低
減できる効果がある。
【0064】以上、一実施例として説明してきたが復帰
用分岐命令は、いろいろなバリエ−ションが実際には存
在する。これらのバリエ−ションに対しても本発明は容
易に展開可能である。さらに、分岐命令関係のア−キテ
クチャとしてディレイド分岐等が存在しているが、これ
らに対しても本発明は容易に展開可能である。
【0065】
【発明の効果】本発明によれば、第1のバッファレジス
タは、常に汎用レジスタ内の予めLink用に定められ
たレジスタに最も新たに書き込みされた命令のLink
レジスタの値のみ保持することが可能となり、復帰アド
レスを保持するためのハ−ドウエアが小型化できる。
【0066】また本発明によれば、復帰命令を解読する
と、第1の切り換え手段により第1のバッファレジスタ
の値を次の命令フェッチ用アドレスとして切り換えるの
で、第1のバッファレジスタの値と第2のアドレスレジ
スタの値が一致した場合、復帰命令を汎用レジスタ内の
予めLink用に定められたレジスタから読み出し、正
しく実行するよりも早いステ−ジ(早い時刻)でアドレ
スを切り換えられる。これにより第1のバッファレジス
タの値と第2のアドレスレジスタの値が一致した場合ペ
ナルティを減らすことができるので復帰命令のオ−バ−
ヘッドが減少し、性能が向上する。
【0067】更に本発明によれば、復帰命令を解読する
と、第1の切り換え手段により第1のバッファレジスタ
の値を次の命令読み出し用アドレスとして切り換え、該
切り換え後、復帰命令を実行して求めたアドレスを第2
のアドレスレジスタに設定するまでに第1のバッファレ
ジスタの内容が書き込まれたか否かを検出し、書き込ま
れた場合には、第2の切り換え手段により第2のアドレ
スレジスタの値を次の命令読み出し用アドレスとして切
り換えられる。
【0068】これにより第1のバッファレジスタの値と
第2のアドレスレジスタの値を比較するための比較回路
及びラッチが不要となるので、ハードウエアの物量をよ
り低減することが出来る。
【図面の簡単な説明】
【図1】本発明に係る情報処理装置の一実施例の構成を
示すブロック図である。
【図2】プログラムの動作例を示す説明図である。
【図3】従来の情報処理装置によるパイプライン動作の
一例を示す説明図である。
【図4】従来の情報処理装置の構成例を示すブロック図
である。
【図5】図1に示す情報処理装置を命令の処理段階を考
慮してブロック化した構成図である。
【図6】本発明に係る情報処理装置のパイプライン動作
の一例を示す説明図である。
【図7】ロ−ド命令によるLinkバッファレジスタの
書き込み動作の一例を示す説明図である。
【図8】図7のプログラム例を示す説明図である。
【図9】MOVE命令によるLinkバッファレジスタ
の書き込み動作例を示す説明図である。
【図10】図9のプログラム例を示す説明図である。
【図11】本発明に係る情報処理装置としてのプロセッ
サの他の実施例を示すブロック図である。
【符号の説明】
110 命令キャッシュ 111 デコ−ダ 112 レジスタファイル 113 演算器 114 アドレス切り換えバスドライバ 115 演算器 116 バスドライバ 120 ラッチ 121 ラッチ 122 ラッチ 123 ラッチ 101 Linkバッファアドレスレジスタ 102 バスドライバ 103 比較回路 104 ラッチ 105 ラッチ 501 IFユニット 502 Dユニット 503 Eユニット 504 Aユニット 505 Nユニット 506 Wユニット 507 DFユニット 508 CHECKユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 松尾 康太郎 東京都青梅市今井町2326番地 株式会社日 立製作所デバイス開発センタ内 (72)発明者 齋藤 拡二 神奈川県秦野市堀山下1番地 株式会社日 立製作所汎用コンピュータ事業部内

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 復帰命令を含む命令を実行する情報処理
    装置において、 Linkアドレスを保持する第1のバッファレジスタ
    と、 全ての命令において書き込み先が汎用レジスタ内の予め
    Link用に定められたレジスタに書き込みを行なうこ
    とを検出して書き込むべき値を前記第1のバッファレジ
    スタへ書き込む書き込み手段と、 前記第1のバッファレジスタの値を次の命令読み出し用
    アドレスとして切り換える第1の切り換え手段と、 復帰命令を汎用レジスタ内の予めLink用に定められ
    たレジスタから読み出し正しく実行して求めた第2のア
    ドレスレジスタと、 前記第2のアドレスレジスタの値を次の命令読み出し用
    アドレスとして切り換える第2の切り換え手段と、 前記第1のバッファレジスタの値と第2のアドレスレジ
    スタの値を比較する比較回路と、 復帰命令を解読すると、第1の切り換え手段により第1
    のバッファレジスタの値を次の命令読み出し用アドレス
    として切り換え、その後比較回路により比較した結果、
    不一致の場合、第2の切り換え手段により第2のアドレ
    スレジスタの値を次の命令読み出し用アドレスとして切
    り換え、第1の切り換え手段により読み出した命令を無
    効化するように制御する制御手段とを有することを特徴
    とする情報処理装置。
  2. 【請求項2】 復帰命令を含む命令をパイプライン実行
    する情報処理装置において、 Linkアドレスを保持する第1のバッファレジスタ
    と、 全ての命令において書き込み先が汎用レジスタ内の予め
    Link用に定められたレジスタに書き込みを行なうこ
    とを検出して書き込むべき値をその命令が汎用レジスタ
    内の予めLink用に定められたレジスタに書き込みを
    行なう前にバイパスして前記第1のバッファレジスタへ
    書き込む書き込み手段と、 前記第1のバッファレジスタの値を次の命令読み出し用
    アドレスとして切り換える第1の切り換え手段と、 復帰命令を汎用レジスタ内の予めLink用に定められ
    たレジスタから読み出し正しく実行して求めた第2のア
    ドレスレジスタと、 前記第2のアドレスレジスタの値を次の命令読み出し用
    アドレスとして切り換える第2の切り換え手段と、 前記第1のバッファレジスタの値と第2のアドレスレジ
    スタの値を比較する比較回路と、 復帰命令を解読すると、第1の切り換え手段により第1
    のバッファレジスタの値を次の命令読み出し用アドレス
    として切り換え、その後比較回路により比較した結果、
    不一致の場合、第2の切り換え手段により第2のアドレ
    スレジスタの値を次の命令読み出し用アドレスとして切
    り換え、第1の切り換え手段により読み出した命令を無
    効化するように制御する制御手段とを有することを特徴
    とする情報処理装置。
  3. 【請求項3】 復帰命令を含む命令を実行する情報処理
    装置において、 Linkアドレスを保持する第1のバッファレジスタ
    と、 全ての命令において書き込み先が汎用レジスタ内の予め
    Link用に定められたレジスタに書き込みを行なうこ
    とを検出して書き込むべき値を前記第1のバッファレジ
    スタへ書き込む書き込み手段と、 前記第1のバッファレジスタの値を次の命令読み出し用
    アドレスとして切り換える第1の切り換え手段と、 復帰命令を汎用レジスタ内の予めLink用に定められ
    たレジスタから読み出し正しく実行して求めた第2のア
    ドレスレジスタと、 前記第2のアドレスレジスタの値を次の命令読み出し用
    アドレスとして切り換える第2の切り換え手段と、 復帰命令を解読すると、第1の切り換え手段により第1
    のバッファレジスタの値を次の命令読み出し用アドレス
    として切り換え、該切り換え後、復帰命令を実行して求
    めたアドレスを前記第2のアドレスレジスタに設定する
    までに前記第1のバッファレジスタの内容が書き換えら
    れたか否かを検出し、前記第1のバッファレジスタの内
    容が書き換えられた場合には、第2の切り換え手段によ
    り第2のアドレスレジスタの値を次の命令読み出し用ア
    ドレスとして切り換え、第1の切り換え手段により読み
    出した命令を無効化するように制御する制御手段とを有
    することを特徴とする情報処理装置。
  4. 【請求項4】 書き込み先が汎用レジスタ内の予めLi
    nk用に定められたレジスタに書き込みを行なう命令を
    検出して書き込むべき値を第1のバッファレジスタへ書
    き込む前記処理は、少なくともロ−ド命令で行なうこと
    を特徴とする請求項1乃至3のいずれかに記載の情報処
    理装置。
  5. 【請求項5】 書き込み先が汎用レジスタ内の予めLi
    nk用に定められたレジスタに書き込みを行なう命令を
    検出して書き込むべき値を第1のバッファレジスタへ書
    き込む処理は、少なくとも演算命令、移動命令、分岐命
    令で行なうことを特徴とする請求項1乃至3のいずれか
    に記載の情報処理装置。
  6. 【請求項6】 第1のバッファレジスタは、常に汎用レ
    ジスタ内の予めLink用に定められたレジスタに最も
    新たに書き込みされた命令のLinkレジスタの値のみ
    保持することを特徴とする請求項1乃至3のいずれかに
    記載の情報処理装置。
JP6068499A 1994-04-06 1994-04-06 情報処理装置 Pending JPH07281892A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6068499A JPH07281892A (ja) 1994-04-06 1994-04-06 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6068499A JPH07281892A (ja) 1994-04-06 1994-04-06 情報処理装置

Publications (1)

Publication Number Publication Date
JPH07281892A true JPH07281892A (ja) 1995-10-27

Family

ID=13375459

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6068499A Pending JPH07281892A (ja) 1994-04-06 1994-04-06 情報処理装置

Country Status (1)

Country Link
JP (1) JPH07281892A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011503718A (ja) * 2007-11-02 2011-01-27 クゥアルコム・インコーポレイテッド プロシージャリターンシーケンスを加速するための方法およびシステム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011503718A (ja) * 2007-11-02 2011-01-27 クゥアルコム・インコーポレイテッド プロシージャリターンシーケンスを加速するための方法およびシステム
JP2013211023A (ja) * 2007-11-02 2013-10-10 Qualcomm Inc プロシージャリターンシーケンスを加速するための方法およびシステム
JP2015133126A (ja) * 2007-11-02 2015-07-23 クゥアルコム・インコーポレイテッドQualcomm Incorporated プロシージャリターンシーケンスを加速するための方法およびシステム

Similar Documents

Publication Publication Date Title
US6848044B2 (en) Circuits and methods for recovering link stack data upon branch instruction mis-speculation
EP2220556B1 (en) A method and a system for accelerating procedure return sequences
US20010023479A1 (en) Information processing unit, and exception processing method for specific application-purpose operation instruction
JP4243271B2 (ja) データ処理装置およびデータ処理方法
JPH0673105B2 (ja) 命令パイプライン方式のマイクロプロセッサ
US6983359B2 (en) Processor and method for pre-fetching out-of-order instructions
JPH1196006A (ja) 情報処理装置
JPH07281892A (ja) 情報処理装置
JPH05241827A (ja) 命令バッファ制御装置
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
JP2000029690A (ja) デ―タ処理の方法および装置
JPH0954694A (ja) パイプラインプロセッサおよびその処理方法
JP3748191B2 (ja) 計算機とその制御方法
JPH07182165A (ja) コミット条件付き命令の処理方法およびその装置
JP2574918B2 (ja) 割り込み復帰処理方式
JP3762597B2 (ja) 計算機とその制御方法
JPH06301537A (ja) 命令フェッチ回路
JPH0535499A (ja) データ処理装置及びデータ処理方法
JP2856703B2 (ja) プロセッサ
JP2878526B2 (ja) プリフェッチ制御方式
JPH05307483A (ja) レジスタ書き込み制御方法および回路
JPH027128A (ja) 情報処理装置
JPH05250161A (ja) マイクロコンピュータ装置
JPH04290130A (ja) プロセッサのエラー管理方式
JPS62219128A (ja) デ−タ処理装置

Legal Events

Date Code Title Description
A521 Written amendment

Effective date: 20050408

Free format text: JAPANESE INTERMEDIATE CODE: A523