JPH0769816B2 - データ処理装置 - Google Patents

データ処理装置

Info

Publication number
JPH0769816B2
JPH0769816B2 JP63309459A JP30945988A JPH0769816B2 JP H0769816 B2 JPH0769816 B2 JP H0769816B2 JP 63309459 A JP63309459 A JP 63309459A JP 30945988 A JP30945988 A JP 30945988A JP H0769816 B2 JPH0769816 B2 JP H0769816B2
Authority
JP
Japan
Prior art keywords
instruction
return
call
address
stack
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
Application number
JP63309459A
Other languages
English (en)
Other versions
JPH02155038A (ja
Inventor
幸伸 西川
正人 鈴木
雅士 出口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP63309459A priority Critical patent/JPH0769816B2/ja
Publication of JPH02155038A publication Critical patent/JPH02155038A/ja
Publication of JPH0769816B2 publication Critical patent/JPH0769816B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】 産業上の利用分野 本発明はデータ処理装置に係わり、特にサブルーチンの
コール、リターンを高速に処理するための機構を備えた
データ処理装置に関するものである。
従来の技術 従来のデータ処理装置としては、例えば特開昭62-28514
0号公報に示されている。第4図は従来のデータ処理装
置の構成を示すものである。100はスタック制御部、101
はアドレススタック、102は命令スタック、103は次命令
アドレスレジスタ、104はアドレスセレクタ、105は先行
フェッチによって複数の命令を保持している命令バッフ
ァ、106は命令セレクタ、107は命令アドレスを加算する
インクリメンタ、108は命令バッファ105から命令を切り
出すアライナ、109は命令レジスタ、110はレジスタファ
イル、111は比較器、112はキャッシュ、113は命令をデ
コードするデコーダである。
以上のように構成された従来のデータ処理装置における
動作を以下に説明する。
命令バッファ105にはキャッシュ112から先行フェッチさ
れた命令列が保持されている。この命令バッファ105か
ら、次命令アドレスレジスタ103の値で制御されるアラ
イナ108によって命令を切り出し、命令レジスタ109に供
給する。命令レジスタ109に格納された命令をデコーダ1
13でデコードして命令実行を制御する。次命令アドレス
レジスタ103の値は、インクリメンタ107によって加算さ
れ、次の命令アドレスを示すようになっている。
デコーダ113はサブルーチン・コールを行うコール命令
を検出すると、スタック制御部100にコール命令の検出
を通知し、スタック制御部100によって、命令バッファ1
05の内容が命令スタック102に、次命令アドレス103の値
がアドレススタック102にプッシュされ、コール命令に
後続する命令を含む命令列とその命令列の先頭を示すア
ドレスが命令スタック102とアドレススタック101に退避
される。
コール命令を検出する度に命令列とアドレスを命令スタ
ック102とアドレススタック101にプッシュし、スタック
の容量を越えるとボトムの方から捨てるようになってい
る。即ち、スタックの容量で決まるネスト数分だけ命令
列とアドレスの組を保持している。また、コール命令実
行時にレジスタファイル110にリターンアドレスを格納
する。
デコーダ113でサブルーチン・リターンを行うリターン
命令を検出すると、スタック制御部100にリターン命令
の検出を通知する。スタック制御部100は、アドレスス
タック101のスタックトップからアドレスを読出し、そ
のアドレスがレジスタファイル110に格納されたアドレ
スと一致するかどうかを比較器111で判定する。一致し
た場合にはリターン先の命令列が命令スタック102のス
タックトップに保持されているため、命令スタック102
のスタックトップから命令バッファ105に命令列がポッ
プされ、アドレススタック101のスタックトップから次
命令アドレスレジスタ103に次命令アドレスがポップさ
れる。このようにして、サブルーチン・コール時に退避
したコール命令に後続する命令を含む命令列をサブルー
チン・リターン時に命令バッファ105に復帰し、同様に
復帰した次命令アドレス103の値を使ってコール命令に
よって中断された命令列の実行が可能になる。
以上のような動作によって、サブルーチンのコール・リ
ターン処理の高速化を図っている。
発明が解決しようとする課題 しかしながら上記のような構成では、コール命令実行に
よる命令分岐の高速化には効果がないうえ、デコーダ11
3でリターン命令の検出を行うため、どんなに高速化し
てもリターン命令の実行に1クロック以上を要するとい
う問題点を有していた。
本発明はかかる点に鑑み、コール命令とリターン命令を
0クロックで実行することにより極めて高速にサブルー
チンのコール・リターン処理を行うデータ処理装置を提
供することを目的とする。。
課題を解決するための手段 本発明は、命令の実行をパイプライン処理するデータ処
理装置において、コール命令またはリターン命令で分岐
した先の分岐先命令と、分岐先次命令アドレスと、コー
ル命令またはリターン命令実行後のスタックポインタの
値とからなる分岐先情報を保持し、分岐先情報を検索す
るキーとしてプログラムカウンタの値とスタックポイン
タの値を有する分岐先情報保持手段を備え、保持した分
岐先情報をコール命令またはリターン命令が実行処理さ
れるサイクルよりも1サイクル以上前のサイクルのプロ
グラムカウンタとスタックポインタの値をキーとして検
索し、コール命令またはリターン命令の実行処理を待た
ずに前記分岐先情報保持手段から分岐先情報を供給する
ことを特徴とするデータ処理装置である。
作用 本発明は前記した手段により、分岐先情報保持手段の検
索を行なって、コール命令およびリターン命令をデコー
ドせずにサブルーチン・コールによる分岐先命令列の情
報およびサブルーチン・リターンによる戻り先命令列の
情報を得ることができ、コール命令とリターン命令を実
効的に0クロックで実行することを可能にする。分岐先
情報保持手段の検索をプログラムカウンタとスタックポ
インタのペアで行うことによって、リカーシブ・コール
にも対処可能である。
実施例 第1図は本発明の実施例におけるデータ処理装置の構成
図である。第1図において1は命令キャッシュ、2は命
令レジスタ、3はデコーダ、4は命令実行部、5は命令
キャッシュからフェッチする命令のアドレスを示すプリ
フェッチカウンタ(PFC)、6はPFCを加算するインクリ
メンタ、7は命令レジスタに格納された命令のアドレス
を示すデコード部のプログラムカウンタ(PCD)、8は
スタックポインタ(SP)、9はスタックポインタのコピ
ー(SPD)、10はスタックポインタのコピーの更新を制
御するSPD制御部、11は比較器、12はコールあるいはリ
ターンで分岐した時の分岐先の先頭命令と後続する命令
のアドレスと分岐時のSPDを保持し、PCDとSPDとで検索
するコール・リターンバッファ、13はリターンアドレス
書換え検出部、14、15、16は、コール・リターンバッフ
ァ12からのデータに切り換えるためのセレクタ、17は汎
用レジスタである。
以上のように構成された本実施例について、以下その動
作を説明する。
本実施例におけるデータ処理装置では、命令の実行を命
令フェッチ(IF)、デコード(DEC)、データリード
(R)、実行(EX)、データライト(W)のパイプライ
ンで処理する。即ち、命令フェッチ・ステージで命令キ
ャッシュ1からPFC5で示されるアドレスの命令をフェッ
チしてセレクタ15を通して命令レジスタ2に送出し、次
のデコード・ステージで命令レジスタ2の命令をデコー
ドして実行部4を制御する。実行部4ではデータリード
・ステージで汎用レジスタ17からデータを読出し、実行
ステージで演算し、データライト・ステージで結果の書
込みを行う。メモリアクセスの場合には実行ステージで
アドレス計算を行って、データライト・ステージでメモ
リアクセスを行う。
SPD9はスタックポインタSP8のコピーであり、SPD制御部
10によってSPD9の更新を制御する。SPD制御部10は、SPD
9にSP8の値を書込むかコール・リターンバッファ12から
の値を書込むかの制御に加えて、コール・リターンバッ
ファ12からの値を書込んだ時には一定サイクルSPDの更
新を抑止する制御も行う。
デコード・ステージでは命令のデコードと並行して、SP
D9の値とPCD7の値とでコール・リターンバッファを検索
する。コール・リターンバッファがヒットした時には、
セレクタ15、14、16を制御して、コール・リターンバッ
ファ12から分岐先命令を命令レジスタ2に、分岐先次命
令アドレスをPFC5に、分岐先SPDの値をSPD9に送出す
る。即ち、過去にコール命令やリターン命令が実行され
てコール・リターンバッファ12に登録されており、再び
同じコール命令やリターン命令が実行される時には、直
前命令のデコード時にコール・リターンバッファ12を検
索することにより、コール命令やリターン命令自身を実
行することなしに、コール命令やリターン命令によって
分岐する分岐先命令列の情報を供給することができる。
以下にこの動作をさらに詳細に説明する。
本実施例においては、コール・リターンシーケンスの例
として、ルーチンAからbsr命令でルーチンBをコール
し、ルーチンBを実行した後rts命令でルーチンAにリ
ターンする場合を挙げる。
第2図にルーチンBからリターンする場合を例として、
コール・リターンバッファに分岐先情報がない場合の動
作タイミングを示す。命令B2のデコードと並行して命令
B2のアドレスであるPCD7の値とその時のSPD9の値でコー
ル・リターンバッファ12を検索する。コール・リターン
バッファ12がミスヒットすると、命令キャッシュ1から
送出されているrts命令をセレクタ15で選択して命令レ
ジスタ2に格納してデコード・ステージ以下に流す。rt
s命令がスタックからリターンアドレスをポップしてPFC
5にリターンアドレスを格納することにより、リターン
先の命令処理をすることができる。この間SPD制御部10
は、SP9の値をマシンサイクルごとに、SPD9にコピーし
ている。コール・リターンバッファ12はミスヒットした
時、検索に使用したSPDとPCDの値をタグとするエントリ
を生成し、そのエントリのデータ部にリターン先命令A
1、リターン先次命令A2のアドレスおよびリターン先命
令A1をデコードしている時のPCD7の値をそれぞれが確定
していくごとに格納していく。
次にコール・リターンバッファ12がヒットした場合の動
作を第3図に示す。コール・リターンバッファ12には第
2図で示した動作でリターン先の情報が登録されてい
る。命令B2のデコードと並列して命令B2のアドレスであ
るPCD7の値とその時のSPD9の値でコール・リターンバッ
ファ12を検索する。コール・リターンバッファ12がヒッ
トすると、セレクタ15、14、16を制御して、コール・リ
ターンバッファ12からリターン先命令A1を命令レジスタ
2に、リターン先次命令A2のアドレスをPFC5に、リター
ン先命令A1のデコード時のSPDの値をSPD9に送出する。
従って、命令の流れとしてはルーチンBにおけるリター
ン命令の直前命令B2の次にリターン先命令A1が実行され
る。即ち、リターン命令rtsは実効的に0クロックで実
行されたことになる。ここで、SPD9の更新はリターン先
命令A1の実行が終わるまでSPD制御部10によって抑止さ
れる。これは、コール・リターンバッファ12がミスヒッ
トした時のSPD9の変化との整合をとるためである。
ここでは、コール・リターンバッファ12の動作をリター
ン命令の場合を例として説明したが、同様にコール命令
の場合においても実効的に0クロックで実行することが
可能である。但し、コール命令の場合にはコール・リタ
ーンバッファ12への登録時の処理として、リターン命令
の場合の処理に加えて、リターンアドレス書換え検出部
13にリターンアドレスを格納するスタックのアドレスを
登録する。リターンアドレス書換え検出部13は、スタッ
クへの書込みを監視しており、リターンアドレス格納場
所への書込みを検出した時にはコール・リターンバッフ
ァ12の全パージを行うことにより、プログラムの暴走を
防止する。
以上のように本実施例によれば、コール・リターンバッ
ファ12にコール命令やリターン命令によって分岐する分
岐先命令列の情報を登録することによって、同じコール
・リターンシーケンスが行われる時には、コール命令や
リターン命令を0クロックで実行することができ、コー
ル・リターンを高速に処理できる。また、コール・リタ
ーンバッファ12を検索する情報として、プログラムカウ
ンタとスタックポインタのコピーを用いるため、リカー
シブ・コールに対しても対処可能である。
発明の効果 以上説明したように、本発明によれば、リカーシブ・コ
ールなどコール・リターンシーケンスの形態に係わら
ず、一度実行されたコール命令やリターン命令を再び実
行する時に、分岐先情報保持手段に格納されてさえいれ
ば、その情報を使用することによって、リターン命令や
コール命令を実効的に0クロックで実行することができ
るため、コールシーケンスやリターンシーケンスを高速
に処理することができ、その実用的効果は大きい。
【図面の簡単な説明】 第1図は本発明の実施例の構成を示すブロック図、第2
図、第3図は同実施例の動作を説明するタイミング図、
第4図は従来例の構成図である。 1……命令キャッシュ、2……命令レジスタ、3……デ
コーダ、4……実行部、5……プリフェッチカウンタ
(PFC)、6……インクリメンタ、7……プログラムカ
ウンタ、8……スタックポインタ(SP)、9……スタッ
クポインタのコピー(SPD)、10……SPD制御部、11……
比較器、12……コール・リターンバッファ、13……リタ
ーンアドレス書換え検出部、14、15、16……セレクタ、
17……汎用レジスタ、100……スタック制御部、101……
アドレススタック、102……命令スタック、103……次命
令アドレスレジスタ、104……アドレスセレクタ、105…
…命令バッファ、106……命令セレクタ、107……インク
リメンタ、108……アライナ、109……命令レジスタ、11
0……レジスタファイル、111……比較器、112……キャ
ッシュ、113……デコーダ。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】命令の実行をパイプライン処理するデータ
    処理装置において、コール命令またはリターン命令で分
    岐した先の分岐先命令と、分岐先次命令アドレスと、コ
    ール命令またはリターン命令実行後のスタックポインタ
    の値とからなる分岐先情報を保持し、分岐先情報を検索
    するキーとしてプログラムカウンタの値とスタックポイ
    ンタの値を有する分岐先情報保持手段を備え、保持した
    分岐先情報をコール命令またはリターン命令が実行処理
    されるサイクルよりも1サイクル以上前のサイクルのプ
    ログラムカウンタとスタックポインタの値をキーとして
    検索し、コール命令またはリターン命令の実行処理を待
    たずに前記分岐先情報保持手段から分岐先情報を供給す
    ることを特徴とするデータ処理装置。
JP63309459A 1988-12-07 1988-12-07 データ処理装置 Expired - Fee Related JPH0769816B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63309459A JPH0769816B2 (ja) 1988-12-07 1988-12-07 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63309459A JPH0769816B2 (ja) 1988-12-07 1988-12-07 データ処理装置

Publications (2)

Publication Number Publication Date
JPH02155038A JPH02155038A (ja) 1990-06-14
JPH0769816B2 true JPH0769816B2 (ja) 1995-07-31

Family

ID=17993246

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63309459A Expired - Fee Related JPH0769816B2 (ja) 1988-12-07 1988-12-07 データ処理装置

Country Status (1)

Country Link
JP (1) JPH0769816B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2857600B2 (ja) * 1995-05-11 1999-02-17 松下電器産業株式会社 プロセッサ及びプログラム翻訳装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6393042A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp デ−タ処理装置

Also Published As

Publication number Publication date
JPH02155038A (ja) 1990-06-14

Similar Documents

Publication Publication Date Title
JP3004013B2 (ja) サブル―チン呼び出しおよび復帰動作を実行するための装置および方法
US5790823A (en) Operand prefetch table
JP2504830Y2 (ja) デ―タ処理装置
EP0394624B1 (en) Multiple sequence processor system
JPH03147022A (ja) 分岐命令処理装置および処理方法
JPH11212788A (ja) プロセッサのデータ供給装置
EP0655679B1 (en) Method and apparatus for controlling instruction in pipeline processor
JP2596712B2 (ja) 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US5740391A (en) Preventing premature early exception signaling with special instruction encoding
JPH077356B2 (ja) パイプライン方式のマイクロプロセッサ
US5841999A (en) Information handling system having a register remap structure using a content addressable table
JPH0769816B2 (ja) データ処理装置
EP0156307A2 (en) Pipelined processor having dual cache memories
WO1998011484A1 (fr) Processeur de commande a memoire d'historique
JP2001306334A (ja) エミュレーション装置
JP2534662B2 (ja) 命令キヤツシユ制御方法
JP3765111B2 (ja) 分岐登録命令を有するプロセッサ
JPH06301537A (ja) 命令フェッチ回路
US7983894B2 (en) Data processing
JP2902847B2 (ja) 自己変更コード実行方式
JPH05113931A (ja) アドレス変換処理方式
JPH01193938A (ja) 命令先読み装置
JPH08161226A (ja) データ先読み制御方法,キャッシュ制御装置およびデータ処理装置
JPH0760387B2 (ja) 情報処理装置
JP3015565B2 (ja) 複数命令の並列実行機能を持つ情報処理装置

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees