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

データ処理装置

Info

Publication number
JPH04348430A
JPH04348430A JP3042891A JP3042891A JPH04348430A JP H04348430 A JPH04348430 A JP H04348430A JP 3042891 A JP3042891 A JP 3042891A JP 3042891 A JP3042891 A JP 3042891A JP H04348430 A JPH04348430 A JP H04348430A
Authority
JP
Japan
Prior art keywords
instruction
branch
address
return
associative memory
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
JP3042891A
Other languages
English (en)
Inventor
Hidetsugu Maekawa
英嗣 前川
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 JP3042891A priority Critical patent/JPH04348430A/ja
Publication of JPH04348430A publication Critical patent/JPH04348430A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、分岐命令を含むプログ
ラムを処理するデータ処理装置に関する。
【0002】
【従来の技術】分岐命令の処理を高速化したデータ処理
装置として、特開昭63−61332号公報に示される
ように、分岐命令のアドレスと分岐先の命令のアドレス
や分岐先命令語等の分岐先情報とを対にして連想記憶部
に格納しておき、分岐命令の解読前に連想記憶部から分
岐先情報を先行的に取り出すものが知られている。この
装置によれば、プログラムの制御フローが変わっても分
岐先の命令を高速にフェッチすることができ、分岐命令
の実行を高速化することができる。
【0003】条件分岐命令の分岐の過去の成立/不成立
に関する情報すなわち分岐の履歴情報を連想記憶部に保
持しておき、この履歴情報に基づいて分岐予測制御を実
行することによって分岐命令の処理を高速化する試みも
なされている。
【0004】
【発明が解決しようとする課題】連想記憶を用いて分岐
先情報を先取りする前記従来の分岐実行制御方式は、分
岐命令がプログラムカウンタ(以下、PCと記す。)相
対のアドレッシングモードであることを前提としている
。PC相対のアドレッシングモードでは、分岐命令で指
定される分岐先が常に一定であるため、連想記憶部に記
憶された分岐先情報がそのまま利用できるのである。 しかしながら、レジスタ相対アドレッシングモード等の
PC相対以外のアドレッシングモードでは連想記憶部に
記憶された分岐先情報が常に利用可能であるとは限らな
い。その代表的な例としてサブルーチンからのリターン
命令がある。サブルーチンは、複数のルーチンから各々
コール命令で呼ばれる。通常、コールしたルーチンの命
令アドレスすなわちリターンアドレスが特定のレジスタ
に格納されるが、該レジスタで指定されるリターンアド
レスがサブルーチンコールの度に変化するのである。そ
のため、従来のデータ処理装置では、連想記憶部にPC
相対のアドレッシングモードのみの分岐先情報を格納す
る方式や、分岐先情報が正しいかどうかを検出する検出
部を設けて正しいときだけ連想記憶部から得られた分岐
先情報を使用する方式等を採用せざるを得ず、リターン
命令の実行にかかるオーバーヘッドを軽減することがで
きない問題があった。
【0005】また、条件分岐命令の分岐の履歴情報を連
想記憶部に保持しておき、該履歴情報に基づいて分岐予
測制御を実行する従来の方式では、分岐予測制御のため
のハードウェアが大がかりになる問題があった。
【0006】本発明は、連想記憶を用いて分岐先情報を
先行的にフェッチするデータ処理装置において、ハード
ウェアの増大を抑制しながら分岐命令の処理をさらに高
速化することを目的とする。
【0007】
【課題を解決するための手段】本発明のデータ処理装置
はいずれも、条件分岐命令、コール命令、リターン命令
等の分岐命令を含む命令列を取り出して解読し、この解
読結果に従って各命令の実行を行うことを前提としたも
のであって、以下のリターン命令に関する分岐実行制御
方式と条件分岐命令に関する分岐予測制御方式とを採用
している。
【0008】まず、本発明におけるリターン命令に関す
る分岐実行制御方式は、分岐命令のアドレスに加えて該
分岐命令がリターン命令であるか否かを示す情報を連想
記憶部に記憶しておくとともに、サブルーチンコールの
度に変化するサブルーチンからのリターンアドレスをプ
ッシュダウンスタックに順次格納しあるいはサブルーチ
ンコールの度に個別に記憶しておくことによって、連想
記憶部に記憶されたリターン命令であるか否かを示す情
報を手掛りとしてリターンアドレスを先行的に得るもの
である。
【0009】具体的に説明すると、請求項1の発明に係
るデータ処理装置は、分岐命令のアドレスと該分岐命令
がリターン命令であるか否かを示す情報とを対にして記
憶するための連想記憶部と、コール命令の実行の際にサ
ブルーチンからのリターンアドレスが格納されるプッシ
ュダウンスタックと、取り出した命令のアドレスが連想
記憶部に記憶された分岐命令のアドレスのいずれかと一
致し、かつ該分岐命令がリターン命令であることを示す
情報が連想記憶部に記憶されているときに、プッシュダ
ウンスタックからリターンアドレスをポップアップし、
該リターンアドレスで指示される分岐先の命令列を先行
的に取り出すように制御する分岐実行制御手段とを備え
たものである。
【0010】請求項2の発明に係るデータ処理装置は、
サブルーチンのコール時およびリターン時に切り替えら
れる複数のレジスタウインドウと、分岐命令のアドレス
と該分岐命令がリターン命令であるか否かを示す情報と
を対にして記憶するための連想記憶部と、コール命令の
実行の際にサブルーチンからのリターンアドレスを各々
使用中のレジスタウインドウに対応付けてレジスタウイ
ンドウ毎に記憶するための記憶手段と、取り出した命令
のアドレスが連想記憶部に記憶された分岐命令のアドレ
スのいずれかと一致し、かつ該分岐命令がリターン命令
であることを示す情報が連想記憶部に記憶されていると
きに、分岐先ルーチンで使用されるレジスタウインドウ
に対応付けられたリターンアドレスを記憶手段から読み
出し、該リターンアドレスで指示される分岐先の命令列
を先行的に取り出すように制御する分岐実行制御手段と
を備えたものである。
【0011】また、本発明における条件分岐命令に関す
る分岐予測制御方式は、条件分岐命令の分岐が成立した
ときは該条件分岐命令について分岐が続けて成立する場
合が多く、条件分岐命令の分岐が成立しなかったときは
該条件分岐命令については分岐が続けて成立しない場合
が多いという性質に基づいている。この性質から本発明
では、条件分岐命令のうち分岐が成立したもののみのア
ドレスと該条件分岐命令によって指定される分岐先の命
令のアドレスとを対にして連想記憶部に記憶しておき、
(1) 実行のために取り出した条件分岐命令のアドレ
スが連想記憶部に記憶された条件分岐命令のアドレスの
いずれかと一致した場合すなわち実行のために取り出し
た条件分岐命令の分岐が直前に成立していた場合は、該
取り出した条件分岐命令について今回も分岐が成立する
ものとして分岐予測制御を実行し、(2) 連想記憶部
に記憶された条件分岐命令のアドレス中に実行のために
取り出した条件分岐命令のアドレスと一致するものがな
い場合すなわち実行のために取り出した条件分岐命令の
分岐が直前に不成立になっていた場合は、該取り出した
条件分岐命令について今回も分岐が成立しないものとし
て分岐予測制御を実行するものである。
【0012】具体的に説明すると、請求項3の発明に係
るデータ処理装置は、条件分岐命令のうち分岐が成立し
たもののみのアドレスと該条件分岐命令によって指定さ
れる分岐先の命令のアドレスとを対にして記憶するため
の連想記憶部と、取り出した命令を解読するための命令
解読部と、前記取り出した命令のアドレスが連想記憶部
に記憶された条件分岐命令のアドレスのいずれかと一致
し、かつ命令解読部により前記取り出した命令が条件分
岐命令であると解読され、しかも該取り出した命令の分
岐が成立するか否かが判明していないことを条件として
、連想記憶部から読み出した前記取り出した命令に対応
する分岐先の命令のアドレスで指示される分岐先の命令
列を先行的に取り出すように分岐予測制御を行う分岐予
測制御手段とを備えたものである。
【0013】請求項4の発明に係るデータ処理装置は、
請求項3の発明に係る分岐予測制御手段がさらに、連想
記憶部に記憶された条件分岐命令のアドレス中に前記取
り出した命令のアドレスと一致するものがなく、かつ命
令解読部により前記取り出した命令が条件分岐命令であ
ると解読され、しかも該取り出した命令の分岐が成立す
るか否かが判明していないことを条件として、前記取り
出した命令のアドレスに続くアドレスの命令列を先行的
に取り出すように分岐予測制御を行うものである。
【0014】
【作用】請求項1の発明によれば、コール命令の実行の
度にサブルーチンからのリターンアドレスがプッシュダ
ウンスタックに順次格納される。サブルーチンにおいて
リターン命令の実行時に分岐すべきアドレスは常に最後
に実行したコール命令のアドレスの次の命令アドレスで
あるので、最後にプッシュされたリターンアドレスがす
ぐに読み出せるようになっている。また、サブルーチン
の処理が進んでリターン命令が取り出された際に該リタ
ーン命令のアドレスが分岐命令のアドレスとして連想記
憶部に記憶されていない場合は、実行のために取り出さ
れた該リターン命令のアドレスと該命令がリターン命令
であることを示す情報とが連想記憶部に新たに記憶され
る。このようにしてリターン命令のアドレスと該命令が
リターン命令であることを示す情報とが連想記憶部に記
憶されたうえで次に該リターン命令が実行のために取り
出されたときは、該命令がレジスタ相対アドレッシング
モードであっても該命令のアドレスが分岐命令のアドレ
スとして連想記憶部に記憶されており、かつ該命令がリ
ターン命令であることを示す情報が連想記憶部に記憶さ
れているので、プッシュダウンスタックからリターンア
ドレスがポップアップされ、該リターンアドレスで指示
される分岐先の命令列が先行的に取り出される。したが
って、リターン命令がレジスタ相対アドレッシングモー
ドであっても該命令の処理が高速化される。しかも、リ
ターンアドレス格納用のプッシュダウンスタックを新設
するとともにリターン命令であるか否かを示す情報の記
憶用に従来の連想記憶部を最低1ビット拡張するだけで
良く、分岐実行制御のためのハードウェアが大きくなら
ない。
【0015】請求項2の発明によれば、コール命令の実
行の際に、使用中のレジスタウインドウ上の特定のレジ
スタにリターンアドレスが退避されるだけでなく、該リ
ターンアドレスが使用中のレジスタウインドウに対応付
けて記憶手段中にレジスタウインドウ毎に記憶される。 次に、コールされた側のルーチンすなわちサブルーチン
がレジスタウインドウを1つ切り替えることにより、該
サブルーチンで使用するレジスタウインドウが新たに確
保される。サブルーチンの処理が進んでリターン命令が
取り出された際に該リターン命令のアドレスが分岐命令
のアドレスとして連想記憶部に記憶されていない場合は
、実行のために取り出された該リターン命令のアドレス
と該命令がリターン命令であることを示す情報とを連想
記憶部に新たに記憶するとともに、サブルーチン側でレ
ジスタウインドウを1つもとに戻して、コールした側の
ルーチンが使用するレジスタウインドウへと切り替える
。そして、コールした側のルーチンで退避していたリタ
ーンアドレスを用いてコール命令のアドレスの次のアド
レスの命令に分岐する。以上のようにしてリターン命令
のアドレスと該命令がリターン命令であることを示す情
報とが連想記憶部に記憶されたうえで次に該リターン命
令が実行のために取り出されたときは、該命令がレジス
タ相対アドレッシングモードであっても該命令のアドレ
スが分岐命令のアドレスとして連想記憶部に記憶されて
おり、かつ該命令がリターン命令であることを示す情報
が連想記憶部に記憶されているので、サブルーチンコー
ルした側のルーチンで使用されるレジスタウインドウに
対応付けて記憶されているリターンアドレスが記憶手段
から読み出され、該リターンアドレスで指示される分岐
先の命令列が先行的に取り出される。したがって、リタ
ーン命令がレジスタ相対アドレッシングモードであって
も該命令の処理が高速化される。しかも、複数のレジス
タウインドウに各々対応付けられたリターンアドレス格
納用の記憶手段を新設するとともにリターン命令である
か否かを示す情報の記憶用に従来の連想記憶部を最低1
ビット拡張するだけで良く、分岐実行制御のためのハー
ドウェアが大きくならない。
【0016】請求項3の発明によれば、条件分岐命令の
うち分岐が成立したもののみのアドレスと該条件分岐命
令によって指定される分岐先の命令のアドレスとが対の
形のエントリとして連想記憶部に記憶されている。つま
り、分岐が成立した条件分岐命令のアドレスが連想記憶
部に記憶されていない場合に該条件分岐命令のアドレス
と該命令によって指定される分岐先の命令のアドレスと
が連想記憶部に新たなエントリとして記憶されるだけで
なく、分岐が成立しなかった条件分岐命令については該
条件分岐命令のアドレスと該命令によって指定される分
岐先の命令のアドレスとが対の形で削除され、この結果
直前に分岐が成立した条件分岐命令に関するエントリだ
けが残っている。このようにして直前に分岐が成立した
条件分岐命令のアドレスと該条件分岐命令によって指定
される分岐先の命令のアドレスとが連想記憶部に記憶さ
れたうえで次に該条件分岐命令が実行のために取り出さ
れたときは、該条件分岐命令のアドレスが連想記憶部に
記憶されており、該命令が命令解読部により条件分岐命
令であると解読されるので、該命令の分岐が成立するか
否かが判明していないことを条件として、連想記憶部か
ら読み出した分岐先の命令のアドレスで指示される分岐
先の命令列が先行的に取り出される。つまり、該条件分
岐命令の分岐が成立するものと予測して分岐先の命令列
を先行的に取り出すのである。前記のように条件分岐命
令の分岐が成立したときは該条件分岐命令について分岐
が続けて成立する場合が多いので、該予測の成功確率は
高く、条件分岐命令の処理が高速化される。しかも、従
来とは違って分岐の履歴情報を保持するハードウェアを
有しない構成を採用したので、分岐予測制御のためのハ
ードウェアが大きくならない。
【0017】請求項4の発明によれば、実行のために取
り出した条件分岐命令のアドレスが連想記憶部に記憶さ
れている場合に該条件分岐命令の分岐が成立するものと
予測して分岐先の命令列を先行的に取り出すだけでなく
、実行のために取り出した条件分岐命令のアドレスが連
想記憶部に記憶されていない場合には、該条件分岐命令
の分岐が成立しないものと予測して該条件分岐命令のア
ドレスに続くアドレスの命令列を先行的に取り出す。 前記のように条件分岐命令の分岐が成立しなかったとき
は該条件分岐命令について分岐が続けて成立しない場合
が多いので、該予測の成功確率も高く、条件分岐命令の
処理がさらに高速化される。従来とは違って分岐の履歴
情報を保持するハードウェアを有しない構成を採用した
ので分岐予測制御のためのハードウェアが大きくならな
い点は、請求項3の発明と同様である。
【0018】
【実施例】まず、本発明の第1の実施例におけるデータ
処理装置について説明する。ただし、説明の都合上、本
データ処理装置が処理する命令セットアーキテクチャを
次のように定義する。命令は32ビットの固定長命令で
ある。分岐命令は条件分岐命令、サブルーチンへのコー
ル命令、サブルーチンからのリターン命令からなり、こ
れらの分岐命令のアドレッシングモードは、条件分岐命
令・・PC相対 コール命令・・・PC相対 リターン命令・・レジスタ相対 とする。さらに、コール命令ではサブルーチンからの戻
り番地すなわちリターンアドレスを特定のレジスタへ格
納する。本命令セットアーキテクチャでは遅延分岐の定
義はない。
【0019】次に、本発明の第1の実施例におけるデー
タ処理装置の構成について説明する。図1は、このデー
タ処理装置のブロック図である。同図において、1はこ
のデータ処理装置が処理すべき命令やデータを格納した
メインメモリ、2はプログラムカウンタ(PC)を内蔵
し、命令フェッチアドレス等を生成するPC部、3は分
岐命令自身のアドレスとその分岐先命令アドレスとを対
にして記憶し、分岐命令アドレスをタグとして分岐先命
令アドレスを読み出す連想記憶部、4は後入れ先出し型
のLIFOメモリで構成されたスタックメモリ、5は加
算器を備え、分岐命令実行時に分岐先命令アドレスを生
成するアドレス生成部、6は命令を解読する命令解読部
、7は分岐命令時にその制御を司どる分岐制御部、8は
ALU、レジスタ等を備え、命令を実行する実行部であ
る。10はPC部2からメインメモリ1と連想記憶部3
とにフェッチすべき命令のアドレスを送る命令フェッチ
アドレスバス、11は連想記憶部3がヒットしたときに
連想記憶部3からPC部2へ分岐先命令アドレスを送る
第1分岐先命令アドレスバス、12はスタックメモリ4
のトップに格納しているアドレスをPC部2に送る第2
分岐先命令アドレスバス、13はPC部2からスタック
メモリ4へサブルーチンからのリターンアドレスを送る
リターンアドレスバス、14はPC部2からアドレス生
成部5へPC相対アドレス計算を行うための命令アドレ
スを送る命令アドレスバス、15は命令バス、16はP
C相対アドレス計算を行うための変位を送る即値データ
バス、17はレジスタ相対アドレス計算を行うためのレ
ジスタデータを送るレジスタデータバス、18はアドレ
ス生成部5からPC部2と連想記憶部3とに分岐先命令
のアドレスを送る第3分岐先命令アドレスバスである。 さらに、このデータ処理装置が分岐命令を実行する際に
、分岐制御部7が全体の制御を集中管理するため、各ユ
ニットと必要な情報を交換しあう必要がある。それらは
、各制御信号20〜27で行う。
【0020】図2は、図1におけるPC部2の内部構成
を示すブロック図である。図2において、201はプロ
グラムカウンタ(PC)、202は分岐先命令アドレス
を保持するtargetPC、203は一定値4を加算
する加算器である。204は2入力1出力のマルチプレ
クサ、205、206は、それぞれアドレスラッチ、2
07はPC部2全体の制御を行うコントロール部である
。10、11、12、13、14および18は各々図1
における同じ符号のバスを表わし、20は図1中の同じ
符号の制御信号を表わす。210〜214はコントロー
ル部207からの制御信号である。
【0021】図2を用いてPC部2の動作を簡単に説明
する。PC部2は、分岐しない場合の通常の命令列に対
応するPC201と、分岐する場合の命令列に対応する
targetPC202との2つのプログラムカウンタ
を内蔵する。分岐命令の実行時には、このデータ処理装
置内の他の手段により生成された分岐先命令アドレスを
targetPC202にラッチし、必要に応じて分岐
先命令列の先行フェッチおよび実行ができるようにして
いる。例として、条件分岐命令で連想記憶部3がヒット
し、分岐が成立するか不成立であるかが判明していない
場合には、後述するように分岐するものとして分岐予測
制御を行うが、このときtargetPC202が選択
されるようにマルチプレクサ204を制御し分岐先命令
列を命令フェッチアドレスとして生成できる。そして、
分岐することが判明した時点でPC201を分岐先命令
列のアドレスに更新する。この点は、後に詳述する。ア
ドレスラッチ206は、命令フェッチアドレスを保持す
るためのラッチである。これは、命令アドレスバス14
に1サイクル後れの命令フェッチアドレスを送るために
存在し、アドレス生成部5がこの命令フェッチアドレス
からPC相対アドレス計算に使用する分岐命令のアドレ
スを得る。最後にアドレスラッチ205は、命令フェッ
チアドレス+4を保持するためのラッチである。これは
、リターンアドレスバス13に命令フェッチアドレス+
4をリターンアドレスとして1サイクル後れで送るため
に存在し、スタックメモリ4と実行部8とがリターンア
ドレスを得る。
【0022】図3は、図1における連想記憶部3の内部
構成を示すブロック図である。図3において、301は
連想記憶であって、分岐命令アドレスをタグとして分岐
先命令アドレスとその分岐命令がリターン命令であるか
どうかを示す情報(リターンビット)とを記憶する。3
02は連想記憶301がヒットするかどうかを検出する
比較器、303は命令フェッチアドレスを保持するラッ
チ、304は分岐先命令アドレスを保持するラッチであ
る。305はリターン命令であるかどうかの情報を保持
するラッチ、306は連想記憶部3全体を制御するコン
トロール部である。10、11および18は各々図1に
おける同じ符号のバスを表わし、21および22は各々
図1中の同じ符号の制御信号を表わす。310は比較器
302のヒット信号、311は連想記憶301の出力で
リターン命令であるかどうかを示すリターン信号、31
2および313はコントロール部306から出力される
他の制御信号である。
【0023】図3を用いて連想記憶部3の動作を簡単に
説明する。ラッチ303が命令フェッチアドレスバス1
0に送られた命令フェッチアドレスをラッチすると、直
ちに連想記憶301が探索される。分岐命令アドレス中
に一致するものが存在すれば、比較器302からヒット
信号310が送られ、また連想記憶301から第1分岐
先命令アドレスバス11に分岐先命令アドレスが読み出
され、リターンビットがリターン信号311として読み
出される。ただし、連想記憶部3がロックされている状
態では、ラッチ303の更新および連想記憶301の探
索が禁止される。連想記憶301への書き込み動作は、
制御信号312を通じて行われる。このときタグ部であ
る分岐命令アドレスとしてラッチ303のアドレスが、
メモリ部である分岐先命令アドレスおよびリターンビッ
トとしてそれぞれラッチ304、305の情報が書き込
まれる。
【0024】以上のように構成された本発明の第1実施
例におけるデータ処理装置の分岐命令実行時の動作につ
いて、まずその基本を簡単に説明する。このデータ処理
装置は前述した命令セットアーキテクチャ上で分岐命令
の処理を行う。分岐先命令アドレスがPC相対のアドレ
ッシングモードで与えられる条件分岐命令とサブルーチ
ンのコール命令においては、連想記憶部3がヒットした
場合ここから分岐先命令アドレスが獲得される。これは
、PC相対のアドレッシングモードの場合、分岐先命令
アドレスは何度実行しても変わらないため、一度連想記
憶部3に記憶したアドレスは再利用可能であるという性
質を利用している。しかしながら条件分岐命令の場合、
実際に分岐先命令アドレスにジャンプするかどうかは分
岐判定結果を得るまではわからない。そのため、このデ
ータ処理装置は分岐判定結果が判明するまでの間、分岐
予測の制御を用いて先行的に命令フェッチを続ける。た
だし、分岐判定結果がすでに得られている場合には、分
岐予測の制御は不要であるため行わない。この結果、予
測が成功した場合には分岐命令によるペナルティが発生
しない。本実施例における分岐予測制御方式は、(1)
 連想記憶部3がヒットした場合は分岐するものとして
予測制御し、(2) 連想記憶部3がミスヒットした場
合は分岐しないものとして予測制御することを基本とす
る。これは、条件分岐命令が最後に分岐した場合、続け
て分岐する確率が高いという性質に基づいている。連想
記憶部3には最後に分岐した命令のみを記憶することで
これを実現し、分岐の履歴情報を保持するハードウェア
は不要である。
【0025】前記定義のとおりサブルーチンからのリタ
ーン命令は、分岐先命令アドレスがレジスタ相対のアド
レッシングモードで与えられる分岐命令である。リター
ン命令の分岐先命令アドレスすなわちリターンアドレス
は、最後に実行したコール命令の次の命令アドレスであ
る。本実施例のデータ処理装置は、この性質を利用し、
連想記憶部3とスタックメモリ4とを用いてリターン命
令の分岐先命令アドレスを獲得する。サブルーチンのコ
ール命令を実行すると、リターンアドレスがスタックメ
モリ4にプッシュされる。そしてリターン命令を実行す
る際、スタックメモリ4からリターンアドレスをポップ
し、これを分岐先命令アドレスとする。このとき同時に
連想記憶部3をアクセスし、もし連想記憶部3がヒット
すると、連想記憶部3に保持しているリターン命令であ
るという情報でスタックメモリからリターンアドレスを
ポップする。連想記憶部3がヒットする場合リターン命
令によるペナルティは発生しない。このため、連想記憶
部3には前記のようにリターン命令であるかどうかを示
すリターンビットを1ビット付加しており、リターン命
令で連想記憶部3を更新する時に、該リターンビットが
セットされる。
【0026】次に、本発明の第1の実施例におけるデー
タ処理装置の分岐命令実行時の動作について詳細に説明
する。図4および図5は、本発明の第1の実施例におけ
るデータ処理装置の分岐命令実行時の動作に関するフロ
ーチャート図である。これらの図と図1〜図3のブロッ
ク図とを用いてその動作をステップごとに詳細に説明す
る。
【0027】ステップ401 このステップは、命令フェッチを開始するための最初の
動作である。PC部2は生成した命令フェッチアドレス
を命令フェッチアドレスバス10を介してメインメモリ
1および連想記憶部3へ送る。
【0028】ステップ402 連想記憶部3は命令フェッチアドレスバス10を通して
送られた命令フェッチアドレスをラッチ303にラッチ
し、直ちにそのアドレスで連想記憶301を探索する。 ヒット/ミスヒットの結果は制御信号22を介して分岐
制御部7へ伝達される。もし連想記憶301がヒットす
ると分岐命令であったことが判明するが、ミスヒットし
た場合にはこの段階で分岐命令であるかどうかは判定で
きない。
【0029】ステップ403 連想記憶部3がヒットした場合、連想記憶301の対応
エントリから第1分岐先命令アドレスバス11に分岐先
命令アドレスが読み出されると同時にリターン信号31
1が読み出される。このときリターン信号311がセッ
トされていればリターン命令であることが判明する。リ
ターン信号311は、コントロール部306へ送られ、
さらに制御信号22として分岐制御部7へ伝達される。 ステップ402とステップ403とは、連想記憶部3に
おける1サイクル内の一連の動作として実現される。
【0030】ステップ404 このステップは、連想記憶部3がリターン命令でヒット
した場合の処理である。この場合、分岐制御部7はスタ
ックメモリ4からポップした分岐先アドレスを次サイク
ルの命令フェッチアドレスとしてPC部2が出力するよ
うに制御する。PC部2は制御信号20の情報により、
スタックメモリ4のトップに格納されているリターンア
ドレスを第2分岐先命令アドレスバス12を通してta
rgetPC202にラッチし、さらにtargetP
C202の内容を出力すべくマルチプレクサ204をセ
レクトする。こうして命令フェッチアドレスバス10に
次サイクルの命令フェッチアドレスとしてリターンアド
レスが送られる。これら一連の制御は、制御信号20の
指令を受けたコントロール部207からの制御信号21
1および212で行う。さらにスタックメモリ4は、分
岐制御部7からの制御信号23の指令でスタックのトッ
プを1つデクリメントする。
【0031】ステップ405 連想記憶部3が条件分岐命令またはコール命令でヒット
した場合には、ステップ403からステップ405に進
む。ステップ405では、分岐制御部7は連想記憶部3
が出力した分岐先命令アドレスを次サイクルの命令フェ
ッチアドレスとしてPC部2が出力するように制御する
。PC部2は制御信号20の情報により、連想記憶部3
が出力した分岐先命令アドレスを第1分岐先命令アドレ
スバス11からtargetPC202にラッチし、さ
らにtargetPC202の内容を出力すべくマルチ
プレクサ204をセレクトする。こうして命令フェッチ
アドレスバス10に次サイクルの命令フェッチアドレス
として分岐先命令アドレスが送られる。これら一連の制
御は、制御信号20の指令を受けたコントロール部20
7からの制御信号211および212で行う。ここで注
意すべきは、条件分岐命令、コール命令のいずれの場合
でも、このステップが実行されることである。ただし、
条件分岐命令の場合には、前述したように分岐するもの
として分岐予測の制御を行っているのである。
【0032】ステップ406 これは、分岐命令実行における2サイクル目の処理であ
る。メインメモリ1は命令バス15を介して命令解読部
6へ命令を送出するが、ステップ406においてはこの
命令は条件分岐命令かコール命令かのいずれかである。 命令解読部6は命令を解読し、その解読結果を制御信号
24および制御信号26として送る。制御信号24は分
岐命令の種類を表わし、制御信号26は実行部8に対す
る制御を表わす。分岐制御部7は制御信号24の情報か
ら、前サイクルで連想記憶部3がヒットした命令が条件
分岐命令であるかどうかを知ることができる。
【0033】ステップ407 連想記憶部3でヒットした命令がコール命令であった場
合には、ステップ407に進む。このとき分岐制御部7
は、リターンアドレスをスタックメモリ4へプッシュす
ると同時に、リターンアドレスを実行部8内に存在する
特定のレジスタに格納すべく制御する。つまり、分岐制
御部7は、PC部2に制御信号20を与えてリターンア
ドレスバス13にリターンアドレスを送出させ、制御信
号23を通じて該リターンアドレスをスタックメモリ4
にプッシュして格納すると同時に、制御信号25を通し
て該リターンアドレスを実行部8内の特定のレジスタに
格納する。
【0034】ステップ408 連想記憶部8でヒットした命令が条件分岐命令であった
場合には、ステップ408に進む。
【0035】分岐制御部7は、もし分岐が成立するか不
成立であるかが判明していない場合には、通常状態から
分岐予測制御状態へ移行する。しかも、連想記憶部3が
ヒットしたことに基づいて、分岐するものとして先行的
に分岐予測制御をする。まず分岐制御部7は、分岐予測
制御中に次の分岐命令の処理に移ることを禁止するため
に、制御信号21を介して連想記憶部3をロックする。 さらに分岐制御部7はPC部2に対し、分岐先命令アド
レスから続く命令列をフェッチできるようにマルチプレ
クサ204のtargetPC202側をセレクトして
命令フェッチアドレスを先行的に生成させ、予測命令フ
ェッチを実行させる。そして、実行部8から分岐判定結
果が出るのを待つ。
【0036】一方、この段階で分岐の成立/不成立が既
に判明している場合には、連想記憶部3のロックおよび
予測命令フェッチの動作を内容とする分岐予測制御状態
に入らずにステップ409へ移行する。
【0037】ステップ409 分岐制御部7は、実行部8から制御信号27を通して分
岐判定結果を受け取った時にはじめて分岐の成立/不成
立を知る。
【0038】まず、分岐制御部7がステップ408で一
旦分岐予測制御状態に入った後に分岐判定結果が出るの
を待ってステップ409に移行した場合について説明す
る。この場合には分岐制御部7は、制御信号21を介し
て連想記憶部3のロック状態を解除し、分岐予測制御状
態から通常状態に戻す。もし分岐が成立していた場合に
は、分岐するとして進めた分岐予測制御の前提が満たさ
れる(分岐予測成功)ので、ステップ410以降の処理
は実行されず、分岐制御部7は制御信号20を介してP
C部2にPC201を分岐先命令アドレスに更新するよ
う制御して分岐予測どおりの処理を続行する。分岐不成
立の場合、すなわち分岐するとして進めた分岐予測制御
の前提が満たされない場合(分岐予測不成功)は、ステ
ップ410以降の処理を実行する。
【0039】次に、分岐制御部7がステップ408で分
岐予測制御状態に入らなかった場合について説明する。 分岐成立の場合は、分岐制御部7は制御信号20を介し
てPC部2にPC201を分岐先命令アドレスに更新す
るよう制御して処理を続行する。分岐不成立の場合は、
ステップ410以降の処理を実行する。
【0040】ステップ410 このステップに進んだ場合は、分岐しないほうの命令列
から改めて命令フェッチをやり直す。このために、分岐
制御部7は制御信号20を介して、分岐しないほうの命
令アドレスを次サイクルの命令フェッチアドレスとして
送るようにPC部2のマルチプレクサ204をPC20
1側に切り替える。これにより、PC部2はPC201
に保持していた分岐しない場合の命令アドレスを命令フ
ェッチアドレスバス10へ送る。
【0041】ステップ411 このステップでは、先行的にフェッチし、かつ実行して
いた命令の処理を無効化する。分岐制御部7は制御信号
25を介して命令解読部6および実行部8に対して先行
的に実行していた命令を無効化するよう制御する。この
情報により命令解読部6は解読した命令を無効化し、実
行部8は条件分岐命令以降に実行した命令を無効化する
【0042】ステップ412 このステップでは、連想記憶部3でヒットしたにもかか
わらず分岐不成立になった条件分岐命令に対応するエン
トリを連想記憶部3から削除する。分岐制御部7は、制
御信号21を介して連想記憶部3でヒットした分岐命令
のエントリを連想記憶301から削除するように制御す
る。連想記憶部3は、コントロール部306の制御信号
312を通じて、ラッチ303に保持している分岐命令
アドレスでヒットしたエントリを削除する。なお、ステ
ップ410からステップ412までは同一サイクル内で
並行して処理される。
【0043】ステップ501 これは、分岐命令の実行における2サイクル目の処理で
ある。命令解読部6は命令を解読し、解読結果を制御信
号24および制御信号26として送る。分岐制御部7は
分岐命令であるかどうかを制御信号24から知ることが
できる。分岐命令でない場合は、ステップ502以降の
処理を実行しない。
【0044】ステップ502 前サイクルで連想記憶部3がミスヒットした命令が分岐
命令であった場合には、ステップ502に進む。ステッ
プ502ではステップ406と同様に、分岐制御部7が
制御信号24の情報を通じて条件分岐命令かどうかを判
断する。
【0045】ステップ503 連想記憶部3でミスヒットした命令がコール命令または
リターン命令であった場合には、ステップ502からス
テップ503に進む。ステップ502と同様、分岐制御
部7は制御信号24の情報を通じて命令の種類を判断す
る。
【0046】ステップ504 連想記憶部3でミスヒットした命令がリターン命令であ
った場合は、ステップ503からステップ504に進ん
でスタックメモリ4からリターンアドレスを得る。具体
的な制御はステップ404の場合と同様である。
【0047】ステップ505 連想記憶部3でミスヒットした命令がコール命令であっ
た場合は、ステップ503からステップ505に進む。 このときの分岐先命令アドレスはアドレス生成部5が生
成する。まず、命令解読部6が分岐命令中に指定された
変位を即値データバス16に送出し、アドレス生成部5
が命令アドレスバス14に送られた分岐命令自身の命令
アドレス(PC)と前記変位との和をとることで、分岐
先命令アドレスを生成する。生成された分岐先命令アド
レスは第3分岐先命令アドレスバス18を介してPC部
2および連想記憶部3へ送られる。PC部2は送られた
分岐先命令アドレスを次の命令フェッチアドレスとする
。また、連想記憶部3は、分岐制御部7からの制御信号
21を通じて、この分岐先命令アドレスをラッチ304
にラッチし、後述のステップ507の動作に備える。
【0048】ステップ506 スタックメモリ4内および実行部8内の特定のレジスタ
にリターンアドレスを格納する。具体的な制御はステッ
プ407の場合と同様である。
【0049】ステップ507 連想記憶部3でミスヒットした命令がコール命令であっ
た場合にはステップ506からステップ507に進み、
連想記憶部3でミスヒットした命令がリターン命令であ
った場合にはステップ504からステップ507に進む
。ステップ507では連想記憶部3にミスヒットした分
岐命令(コール命令またはリターン命令)の命令アドレ
スに関するエントリを追加更新する。その命令がコール
命令であった場合には、連想記憶301の分岐先命令ア
ドレスを更新するとともにリターンビットをリセットす
る。リターン命令であった場合にはリターンビットのみ
セットする。つまり、コール命令であった場合には、分
岐制御部7は連想記憶部3に対し、ステップ505でラ
ッチしておいた分岐先命令アドレスを連想記憶301の
対応するエントリに格納するよう制御する。リターン命
令の場合には、分岐制御部7は連想記憶部3に対し、連
想記憶301の対応するエントリのリターンビットをセ
ットするように制御する。いずれも分岐制御部7からの
制御信号21によって制御される。
【0050】ステップ508 連想記憶部8でミスヒットした命令が条件分岐命令であ
った場合には、ステップ508に進む。
【0051】分岐制御部7は、もし分岐が成立するか不
成立であるかが判明していない場合には、通常状態から
分岐予測制御状態へ移行する。しかも、連想記憶部3が
ミスヒットしたことに基づいて、分岐しないものとして
先行的に分岐予測制御をする。まず、分岐制御部7は、
分岐予測制御中に次の分岐命令の処理に移ることを禁止
するために、制御信号21を介して連想記憶部3をロッ
クする。さらに分岐制御部7はPC部2に対し、分岐命
令アドレスから続く命令列をフェッチできるようにマル
チプレクサ204のPC201側をセレクトして命令フ
ェッチアドレスを先行的に生成させ、予測命令フェッチ
を実行させる。また、同時に後の処理に備えて、ステッ
プ505の場合と同様に分岐先命令アドレスを生成し、
該分岐先命令アドレスをPC部2および連想記憶部3に
ラッチさせておく。
【0052】一方、この段階で分岐の成立/不成立が既
に判明している場合には、連想記憶部3のロックおよび
予測命令フェッチの動作を内容とする分岐予測制御状態
に入らずにステップ509へ移行する。
【0053】ステップ509 分岐制御部7は、実行部8から制御信号27を通して分
岐判定結果を受け取った時にはじめて分岐の成立/不成
立を知る。
【0054】まず、分岐制御部7がステップ508で一
旦分岐予測制御状態に入った後に分岐判定結果が出るの
を待ってステップ509に移行した場合について説明す
る。分岐制御部7が制御信号21を介して連想記憶部3
のロック状態を解除し、分岐予測制御状態から通常状態
に戻すのは、ステップ409の場合と同様である。分岐
不成立の場合は、分岐しないとして進めた分岐予測制御
の前提が満たされる(分岐予測成功)ので、ステップ5
10以降の処理は実行されず、分岐予測どおりの処理を
続行する。分岐成立の場合、すなわち分岐しないとして
進めた分岐予測制御の前提が満たされない場合(分岐予
測不成功)は、ステップ510以降の処理を実行する。
【0055】次に、分岐制御部7がステップ508で分
岐予測制御状態に入らなかった場合について説明する。 分岐不成立の場合は、そのまま処理を続行する。分岐成
立の場合は、ステップ510以降の処理を実行する。
【0056】ステップ510 このステップに進んだ場合は、分岐するほうの命令列か
ら改めて命令フェッチをやり直す。このために、分岐制
御部7は制御信号20を介して、分岐するほうの命令ア
ドレスを次サイクルの命令フェッチアドレスとして送る
ようにPC部2のマルチプレクサ204をtaeget
PC202側に切り替える。これにより、PC部2はt
argetPC202に保持していた分岐する場合の命
令アドレスを命令フェッチアドレスバス10へ送る。
【0057】ステップ511 このステップでは、先行的にフェッチし、かつ実行して
いた命令の処理を無効化する。具体的な制御はステップ
401の場合と同様であるため、詳細な説明は省略する
【0058】ステップ512 このステップでは、連想記憶部3でミスヒットした条件
分岐命令を連想記憶部3に追加する。連想記憶部3は、
連想記憶301の分岐先命令アドレスを更新するととも
にリターンビットをリセットする。分岐制御部7は制御
信号21を通して連想記憶部3に対し、ステップ508
でラッチしておいた分岐先命令アドレスを連想記憶30
1の対応するエントリに格納するよう制御する。なお、
ステップ510からステップ512までは同一サイクル
内で並行して処理される。
【0059】以上、図4および図5に示すステップごと
に本発明の第1の実施例におけるデータ処理装置の分岐
命令実行時の動作を説明した。さらに、図6〜図13に
各々そのタイミングチャート図(A)と命令列の例(B
)とを示す。図6〜図13に関する説明は、図4および
図5に示される動作シーケンスとの対応のみにとどめ、
詳細な説明は省略する。
【0060】図6は、コール命令で連想記憶部3がヒッ
トした場合を示す。図4における ステップ401→402→403→405→406→4
07 のシーケンスに対応する。
【0061】図7は、条件分岐命令で連想記憶部3がヒ
ットし、かつ分岐が成立した場合(予測成功)を示す。 図4における ステップ401→402→403→405→406→4
08→409 のシーケンスに対応する。
【0062】図8は、条件分岐命令で連想記憶部3がヒ
ットし、かつ分岐不成立になった場合(予測不成功)を
示す。図4における ステップ401→402→403→405→406→4
08→409→410→411→412のシーケンスに
対応する。
【0063】図9は、リターン命令で連想記憶部3がヒ
ットした場合を示す。図4における ステップ401→402→404 のシーケンスに対応する。
【0064】図10は、コール命令で連想記憶部3がミ
スヒットした場合を示す。図4および図5におけるステ
ップ401→402→501→502→503→505
→506→507 のシーケンスに対応する。図6と図10との比較から、
連想記憶部3がコール命令でヒットすればミスヒットの
場合に比べて命令実行時間が2サイクル短くなることが
わかる。
【0065】図11は、条件分岐命令で連想記憶部3が
ミスヒットし、かつ分岐不成立になった場合(予測成功
)を示す。図4および図5における ステップ401→402→501→502→508→5
09 のシーケンスに対応する。
【0066】図12は、条件分岐命令で連想記憶部3が
ミスヒットし、かつ分岐が成立した場合(予測不成功)
を示す。図4および図5における ステップ401→402→501→502→508→5
09→510→511→512 のシーケンスに対応する。図7、図8、図11および図
12の比較から、条件分岐命令の分岐予測が成功すれば
予測不成功の場合に比べてプログラムの実行が大幅に高
速化されることがわかる。
【0067】図13は、リターン命令で連想記憶部3が
ミスヒットした場合を示す。図4および図5におけるス
テップ401→402→501→502→503→50
4 のシーケンスに対応する。図9と図13との比較から、
連想記憶部3がリターン命令でヒットすればミスヒット
の場合に比べて命令実行時間が1サイクル短くなること
がわかる。
【0068】以上説明してきたように、本発明の第1の
実施例によれば、連想記憶部3がリターン命令でヒット
し条件分岐命令の分岐予測が成功する限り、従来に比べ
て分岐命令の処理が大幅に高速化されるのである。
【0069】次に、本発明の第2の実施例におけるデー
タ処理装置について説明する。第1の実施例との相違の
第1の点は、このデータ処理装置が処理すべき命令セッ
トアーキテクチャにある。以下、第2の実施例における
命令セットアーキテクチャについて説明する。
【0070】この命令セットアーキテクチャはレジスタ
ウインドウと呼ばれる複数組のレジスタセットを備え、
サブルーチンのコール/リターン時にレジスタウインド
ウを切り替えることによって、コール/リターン時に発
生するレジスタ上のデータのメモリスタックへの退避/
復帰が不要になっている。これにより高速なサブルーチ
ンの切り替えが可能となる。簡単にサブルーチンのコー
ル/リターン時の動作を説明する。
【0071】(1) サブルーチンのコール時まず、コ
ール命令は、そのルーチンが使用しているレジスタウイ
ンドウ上の特定のレジスタにリターンアドレスを退避す
る。次に、呼ばれた側のルーチンがレジスタウインドウ
切替命令の実行によりレジスタウインドウを1つ切り替
えて、後者のルーチンが使用するレジスタウインドウを
新たに確保する。
【0072】(2) サブルーチンからのリターン時ま
ず、呼ばれた側のルーチンでレジスタウインドウ切替命
令の実行によりレジスタウインドウを1つもとに戻して
、呼んだ側のルーチンが使用するレジスタウインドウへ
と切り替える。次に、リターン命令を発行し、呼んだ側
のルーチンで退避していたリターンアドレスを用いてコ
ール命令の次の命令に分岐する。
【0073】以上のように本命令セットアーキテクチャ
では、各レジスタウインドウ上の特定のレジスタに1つ
ずつリターンアドレスを退避しておき、サブルーチンか
らのリターン時に該リターンアドレスを用いて分岐する
。その他の分岐命令については、アドレッシングモード
も含めて、第1の実施例における命令セットアーキテク
チャと同様とする。
【0074】図14に本発明の第2の実施例におけるデ
ータ処理装置のブロック図を示す。第1の実施例との違
いのみを説明し、詳細な説明は省略する。同図において
、1401は、実装するレジスタウインドウの数だけリ
ターンアドレスを専用に保持するためのレジスタの集合
からなるリターンアドレスウインドウである。1410
は、分岐制御部7からリターンアドレスウインドウ14
01に送る制御信号、1411は、実行部8から分岐制
御部7に送る制御信号であって、使用しているレジスタ
ウインドウを指示する。
【0075】以上のように構成された本発明の第2の実
施例におけるデータ処理装置の動作について、以下説明
する。分岐予測制御等の分岐処理の方式については第1
の実施例と全く同様であるため、説明を繰り返さない。 第1の実施例との違いは、第1の実施例におけるステッ
プ404、407、504および506のプッシュ/ポ
ップ動作部分のみである。前述したように本データ処理
装置の命令セットアーキテクチャでは、コール命令時に
リターンアドレスが、そのルーチンが使用しているレジ
スタウインドウ上の特定のレジスタに退避される。本デ
ータ処理装置はリターンアドレスウインドウ1401を
備えており、コール命令時に該リターンアドレスウイン
ドウ1401にリターンアドレスバス13を通じてリタ
ーンアドレスが送られる。リターンアドレスウインドウ
1401は送られてきたリターンアドレスを制御信号1
410の制御のもとに、使用しているレジスタウインド
ウに対応するレジスタへ格納する。また、リターン命令
時には、リターンアドレスウインドウ1401からリタ
ーンアドレスを読み出し、PC部2が分岐先アドレスを
生成する。このため制御信号1410として、使用して
いるレジスタウインドウを示す情報と書き込み/読み出
しのタイミングを示す情報とが送られる。第1の実施例
ではスタックメモリ4にリターンアドレスをプッシュ/
ポップしていたが、第2の実施例ではリターンアドレス
ウインドウ1401についてリターンアドレスの書き込
み/読み出しをする点が異なる。
【0076】なお、本発明の第2の実施例では実行部8
内に実装するレジスタウインドウとは別にリターンアド
レスウインドウ1401を設けたが、これはレジスタ読
み出しのサイクルよりも前のサイクルでリターンアドレ
スを読み出せるようにするためである。しかしながら、
リターンアドレスを退避しているレジスタだけ2ポート
化してリターンアドレスを常に読み出せるようにしても
良い。
【0077】
【発明の効果】以上説明してきたように、請求項1の発
明によれば、分岐命令のアドレスに加えて該分岐命令が
リターン命令であるか否かを示す情報を連想記憶部に記
憶しておくとともにサブルーチンコールの度に変化する
サブルーチンからのリターンアドレスをプッシュダウン
スタックに順次格納することによって、連想記憶部に記
憶されたリターン命令であるか否かを示す情報を手掛り
としてプッシュダウンスタックからリターンアドレスを
先行的に得る構成を採用したので、リターン命令がレジ
スタ相対アドレッシングモードであっても該命令の分岐
先情報を高速に取り出すことができ、リターン命令の実
行にかかるオーバーヘッドが軽減されて命令実行の高速
化が図られる。しかも、リターンアドレス格納用のプッ
シュダウンスタックを新設するとともにリターン命令で
あるか否かを示す情報の記憶用に従来の連想記憶部を最
低1ビット拡張するだけで良く、分岐実行制御のための
ハードウェアを小さくすることができる。
【0078】請求項2の発明によれば、サブルーチンの
コール時およびリターン時に切り替えられる複数のレジ
スタウインドウを備える構成を採用し、しかも分岐命令
のアドレスに加えて該分岐命令がリターン命令であるか
否かを示す情報を連想記憶部に記憶しておくとともにコ
ール命令の実行の際にサブルーチンからのリターンアド
レスを各々使用中のレジスタウインドウに対応付けてレ
ジスタウインドウ毎に記憶手段中に記憶しておくことに
よって、連想記憶部に記憶されたリターン命令であるか
否かを示す情報を手掛りとして記憶手段からリターンア
ドレスを先行的に得る構成を採用したので、リターン命
令がレジスタ相対アドレッシングモードであっても該命
令の分岐先情報を高速に取り出すことができ、リターン
命令の実行にかかるオーバーヘッドが軽減されて命令実
行の高速化が図られる。しかも、複数のレジスタウイン
ドウに各々対応付けられたリターンアドレス格納用の記
憶手段を新設するとともにリターン命令であるか否かを
示す情報の記憶用に従来の連想記憶部を最低1ビット拡
張するだけで良く、分岐実行制御のためのハードウェア
を小さくすることができる。
【0079】請求項3の発明によれば、条件分岐命令の
うち分岐が成立したもののみのアドレスと該条件分岐命
令によって指定される分岐先の命令のアドレスとを対に
して連想記憶部に記憶しておき、実行のために取り出し
た条件分岐命令のアドレスが連想記憶部に記憶された条
件分岐命令のアドレスのいずれかと一致した場合すなわ
ち実行のために取り出した条件分岐命令の分岐が直前に
成立していた場合に該取り出した条件分岐命令について
今回も分岐が成立するものとして分岐予測制御を実行す
る構成を採用したので、従来とは違って連想記憶部に条
件分岐命令の分岐の履歴情報を保持することなしに分岐
予測制御を効率的に行うことができ、分岐予測制御のた
めのハードウェアを小さくすることができる。
【0080】最後に請求項4の発明によれば、条件分岐
命令のうち分岐が成立したもののみのアドレスと該条件
分岐命令によって指定される分岐先の命令のアドレスと
を対にして連想記憶部に記憶しておき、実行のために取
り出した条件分岐命令のアドレスが連想記憶部に記憶さ
れた条件分岐命令のアドレスのいずれかと一致した場合
すなわち実行のために取り出した条件分岐命令の分岐が
直前に成立していた場合に該取り出した条件分岐命令に
ついて今回も分岐が成立するものとして分岐予測制御を
実行する構成を採用するだけでなく、連想記憶部に記憶
された条件分岐命令のアドレス中に実行のために取り出
した条件分岐命令のアドレスと一致するものがない場合
すなわち実行のために取り出した条件分岐命令の分岐が
直前に不成立になっていた場合は、該取り出した条件分
岐命令について今回も分岐が成立しないものとして分岐
予測制御を実行する構成を採用したので、請求項3の発
明に比べて条件分岐命令の処理がさらに高速化される。 しかも、従来とは違って分岐の履歴情報を保持するハー
ドウェアを有しないので分岐予測制御のためのハードウ
ェアを小さくすることができる。
【図面の簡単な説明】
【図1】  本発明の第1の実施例であるデータ処理装
置のブロック図である。
【図2】  図1中のPC部の内部構成を示すブロック
図である。
【図3】  図1中の連想記憶部の内部構成を示すブロ
ック図である。
【図4】  図1のデータ処理装置の分岐命令実行時の
動作を示すフローチャート図である。
【図5】  図4に続く動作を示すフローチャート図で
ある。
【図6】  (A)は図1のデータ処理装置の分岐命令
実行時の動作を示すタイミングチャート図、(B)は命
令列の例を示す説明図であって、コール命令で連想記憶
部がヒットした場合に関するものである。
【図7】条件分岐命令で連想記憶部がヒットし、かつ分
岐が成立した場合(予測成功)に関する図6と同様の図
である。
【図8】条件分岐命令で連想記憶部がヒットし、かつ分
岐不成立になった場合(予測不成功)に関する図6と同
様の図である。
【図9】リターン命令で連想記憶部がヒットした場合に
関する図6と同様の図である。
【図10】コール命令で連想記憶部がミスヒットした場
合に関する図6と同様の図である。
【図11】条件分岐命令で連想記憶部がミスヒットし、
かつ分岐不成立になった場合(予測成功)に関する図6
と同様の図である。
【図12】条件分岐命令で連想記憶部がミスヒットし、
かつ分岐が成立した場合(予測不成功)に関する図6と
同様の図である。
【図13】リターン命令で連想記憶部がミスヒットした
場合に関する図6と同様の図である。
【図14】  本発明の第2の実施例であるデータ処理
装置のブロック図である。
【符号の説明】
2…PC部 3…連想記憶部 4…スタックメモリ(プッシュダウンスタック)6…命
令解読部 7…分岐制御部(分岐実行制御手段、分岐予測制御手段
) 8…実行部 10…命令フェッチアドレスバス 11…第1分岐先命令アドレスバス 12…第2分岐先命令アドレスバス 1401…リターンアドレスウインドウ(記憶手段)1
411…使用中のレジスタウインドウを指示する制御信

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】  分岐命令を含む命令列を取り出して解
    読し、この解読結果に従って各命令の実行を行うデータ
    処理装置であって、分岐命令のアドレスと該分岐命令が
    リターン命令であるか否かを示す情報とを対にして記憶
    するための連想記憶部と、コール命令の実行の際にサブ
    ルーチンからのリターンアドレスが格納されるプッシュ
    ダウンスタックと、取り出した命令のアドレスが前記連
    想記憶部に記憶された分岐命令のアドレスのいずれかと
    一致し、かつ該分岐命令がリターン命令であることを示
    す情報が該連想記憶部に記憶されているときに、前記プ
    ッシュダウンスタックからリターンアドレスをポップア
    ップし、該リターンアドレスで指示される分岐先の命令
    列を先行的に取り出すように制御する分岐実行制御手段
    とを備えたことを特徴とするデータ処理装置。
  2. 【請求項2】  分岐命令を含む命令列を取り出して解
    読し、この解読結果に従って各命令の実行を行うデータ
    処理装置であって、サブルーチンのコール時およびリタ
    ーン時に切り替えられる複数のレジスタウインドウと、
    分岐命令のアドレスと該分岐命令がリターン命令である
    か否かを示す情報とを対にして記憶するための連想記憶
    部と、コール命令の実行の際にサブルーチンからのリタ
    ーンアドレスを各々使用中のレジスタウインドウに対応
    付けてレジスタウインドウ毎に記憶するための記憶手段
    と、取り出した命令のアドレスが前記連想記憶部に記憶
    された分岐命令のアドレスのいずれかと一致し、かつ該
    分岐命令がリターン命令であることを示す情報が該連想
    記憶部に記憶されているときに、分岐先ルーチンで使用
    されるレジスタウインドウに対応付けられたリターンア
    ドレスを前記記憶手段から読み出し、該リターンアドレ
    スで指示される分岐先の命令列を先行的に取り出すよう
    に制御する分岐実行制御手段とを備えたことを特徴とす
    るデータ処理装置。
  3. 【請求項3】  分岐命令を含む命令列を取り出して解
    読し、この解読結果に従って各命令の実行を行うデータ
    処理装置であって、条件分岐命令のうち分岐が成立した
    もののみのアドレスと該条件分岐命令によって指定され
    る分岐先の命令のアドレスとを対にして記憶するための
    連想記憶部と、取り出した命令を解読するための命令解
    読部と、前記取り出した命令のアドレスが前記連想記憶
    部に記憶された条件分岐命令のアドレスのいずれかと一
    致し、かつ前記命令解読部により前記取り出した命令が
    条件分岐命令であると解読され、しかも該取り出した命
    令の分岐が成立するか否かが判明していないことを条件
    として、前記連想記憶部から読み出した前記取り出した
    命令に対応する分岐先の命令のアドレスで指示される分
    岐先の命令列を先行的に取り出すように分岐予測制御を
    行う分岐予測制御手段とを備えたことを特徴とするデー
    タ処理装置。
  4. 【請求項4】  前記分岐予測制御手段が、前記連想記
    憶部に記憶された条件分岐命令のアドレス中に前記取り
    出した命令のアドレスと一致するものがなく、かつ前記
    命令解読部により前記取り出した命令が条件分岐命令で
    あると解読され、しかも該取り出した命令の分岐が成立
    するか否かが判明していないことを条件として、前記取
    り出した命令のアドレスに続くアドレスの命令列を先行
    的に取り出すように分岐予測制御を行うことを特徴とす
    る請求項3記載のデータ処理装置。
JP3042891A 1991-02-25 1991-02-25 データ処理装置 Pending JPH04348430A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3042891A JPH04348430A (ja) 1991-02-25 1991-02-25 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3042891A JPH04348430A (ja) 1991-02-25 1991-02-25 データ処理装置

Publications (1)

Publication Number Publication Date
JPH04348430A true JPH04348430A (ja) 1992-12-03

Family

ID=12303681

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3042891A Pending JPH04348430A (ja) 1991-02-25 1991-02-25 データ処理装置

Country Status (1)

Country Link
JP (1) JPH04348430A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5729707A (en) * 1994-10-06 1998-03-17 Oki Electric Industry Co., Ltd. Instruction prefetch circuit and cache device with branch detection
WO2012023185A1 (ja) * 2010-08-18 2012-02-23 富士通株式会社 試験方法、演算処理装置、試験プログラム、試験プログラム生成方法、試験プログラム生成装置、及び試験プログラム生成プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5729707A (en) * 1994-10-06 1998-03-17 Oki Electric Industry Co., Ltd. Instruction prefetch circuit and cache device with branch detection
WO2012023185A1 (ja) * 2010-08-18 2012-02-23 富士通株式会社 試験方法、演算処理装置、試験プログラム、試験プログラム生成方法、試験プログラム生成装置、及び試験プログラム生成プログラム
JP5549734B2 (ja) * 2010-08-18 2014-07-16 富士通株式会社 試験方法、演算処理装置、試験プログラム、試験プログラム生成方法、試験プログラム生成装置、及び試験プログラム生成プログラム

Similar Documents

Publication Publication Date Title
US5507028A (en) History based branch prediction accessed via a history based earlier instruction address
US4847753A (en) Pipelined computer
US5276882A (en) Subroutine return through branch history table
US4942520A (en) Method and apparatus for indexing, accessing and updating a memory
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US5265213A (en) Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
US4894772A (en) Method and apparatus for qualifying branch cache entries
EP0084114A1 (en) Instruction prefetching data processing apparatus including a conditional branch instruction predictor
JP2000029701A (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
JPH08249181A (ja) ブランチ予測式データ処理装置および動作方法
US20040186985A1 (en) Method and apparatus for branch prediction based on branch targets
EP0655679B1 (en) Method and apparatus for controlling instruction in pipeline processor
US5634119A (en) Computer processing unit employing a separate millicode branch history table
US5740418A (en) Pipelined processor carrying out branch prediction by BTB
US5822576A (en) Branch history table with branch pattern field
US6108776A (en) Globally or selectively disabling branch history table operations during sensitive portion of millicode routine in millimode supporting computer
JPH1040104A (ja) 分岐命令の結果予測装置及び方法
KR930003124B1 (ko) 파이프라인방식의 분기명령제어장치
JPH0773104A (ja) キャッシュ・システム
US6125444A (en) Millimode capable computer system providing global branch history table disables and separate millicode disables which enable millicode disable to be turned off for some sections of code execution but not disabled for all
JPH0650465B2 (ja) 分岐制御回路
US6237087B1 (en) Method and apparatus for speeding sequential access of a set-associative cache
JPH04348430A (ja) データ処理装置
US6532534B1 (en) Information processing apparatus provided with branch history with plurality of designation ways
JP2508021B2 (ja) デ−タ処理装置