JPH05158689A - 分岐予測装置 - Google Patents

分岐予測装置

Info

Publication number
JPH05158689A
JPH05158689A JP4082482A JP8248292A JPH05158689A JP H05158689 A JPH05158689 A JP H05158689A JP 4082482 A JP4082482 A JP 4082482A JP 8248292 A JP8248292 A JP 8248292A JP H05158689 A JPH05158689 A JP H05158689A
Authority
JP
Japan
Prior art keywords
instruction
branch
address
entry
predicted
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.)
Granted
Application number
JP4082482A
Other languages
English (en)
Other versions
JP3108512B2 (ja
Inventor
Mitsuo Saito
光男 斉藤
Junji Mori
順治 森
Takeshi Aikawa
健 相川
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP04082482A priority Critical patent/JP3108512B2/ja
Publication of JPH05158689A publication Critical patent/JPH05158689A/ja
Application granted granted Critical
Publication of JP3108512B2 publication Critical patent/JP3108512B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 (修正有) 【目的】複数命令の同時実行が可能なスーパースケーラ
タイプの計算機にも適用可能で、二重登録の混乱を生じ
ない、連想メモリを使った分岐予測テーブルの提供。 【構成】プロセッサ部50と分岐予測部60とを備え、
プロセッサ部50は命令を格納するキャッシュメモリ
1、次に実行される命令格納する命令バッファ2、一部
を無効化する命令無効化ユニット3、命令を実行する演
算器群4等から成る。分岐予測部60は分岐予測テーブ
ル7を備え分岐元アドレスと分岐先アドレスを登録す
る。命令無効化ユニット3を制御し、適当な一部を無効
化する無効果制御ユニット10、実際に遭遇した分岐命
令の実際の命令位置と比較する比較器13、間違った分
岐予測の場合の命令実行時に、命令無効化ユニット3に
よるバッファ2に格納の命令の無効化、セレクタ9での
アドレス選択、予測テーブル7におけるエントリーの訂
正を制御する無効化実施ユニット14を備える。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、電子計算機に係り、特
に複数の命令を同時実行する電子計算機に関するもので
ある。
【0002】
【従来の技術】従来から、電子計算機を高速化する1つ
の方法として、分岐を高速化するためにいわゆる分岐予
測テーブル(分岐ターゲットバッファともいう)が効果
的であることが知られており、例えば、AMD社のAM
29000というマイクロプロセッサも備えている。
【0003】この原理は簡単で、分岐が発生した場合、
その分岐命令の位置と分岐先とをテーブルに登録してお
き、予測の条件を満たした際に、実際に分岐が行われる
以前に分岐先の命令を取り出しておく、または、テーブ
ル中に持っておくことにより、分岐を高速に行うように
するものである。
【0004】そのテーブルの有効性を高めるために、同
一の番地を任意の場所に登録できるフルアソシアティブ
メモリ、またはマルチウェイアソシアティブメモリを使
うことが望ましい。
【0005】
【発明が解決しようとする課題】しかしながら、この様
なタイプのメモリを使用すると、まったく同一のデータ
が複数の場所に登録され、いわゆるマルチエントリーを
発生し、混乱を引き起こし易くなってしまう。
【0006】又、最近、複数の命令を同時に実行でき
る、いわゆるVLIWタイプの計算機、あるいは、スー
パースケーラと呼ばれるタイプの計算機が出てきてい
る。このタイプの計算機では、複数命令を同時に実行す
るので、同時に実行される1つのグループの命令がグル
ープ中の1つの命令の番地を用いてひとまとめにしてフ
ェッチされ、グループ中に分岐があるときでも、このグ
ループの命令をフェッチするのに用いられる番地自体
は、必ずしもグループ中の分岐命令の番地を示さなくな
る。このため、単に上記のような通常の分岐予測テーブ
ルをこの様なスーパースケーラプロセッサに用いても、
適切な分岐予測を行うことは不可能であった。
【0007】又、計算機の分岐プロセスを高速化する他
の通常知られた方法として命令遅延と呼ばれる方法があ
り、この方法では、分岐命令の前に位置するが分岐命令
の実行の後に行ってもよい命令の実行は、まず、分岐命
令の実行後の処理タイミングに遅延されるが、スーパー
スケーラタイプのプロセッサは、この方法を採用するこ
とは困難である。これは、各分岐命令に必要とされる遅
延命令の数が実践するには余りにも多すぎるからであ
る。
【0008】本発明は、以上の状況を鑑みてなされたも
ので、スーパースケーラタイプの計算機においても、分
岐予測テーブルに連想メモリを利用可能にし、このタイ
プの計算機の高速化を図ろうとするものである。
【0009】[発明の構成]
【0010】
【課題を解決するための手段及び作用】上記目的を達成
するため、本発明は:1群の複数命令を同時に実行する
ためのプロセッサ手段と;予測される分岐命令を含む命
令群を示す分岐元アドレスと、該予測分岐命令の分岐先
アドレスと、該分岐元アドレスによって示される該命令
群中の該予測分岐命令の位置を示す命令位置と、を含む
エントリーを登録するための分岐予測テーブル手段と;
上記プロセッサ手段によって同時に実行される該命令群
をフェッチするための命令フェッチ手段であって、次の
処理タイミングにおいては、現在フェッチされている命
令群についての予測分岐命令であって上記分岐予測テー
ブルのエントリーに登録されており該現在フェッチ中命
令群のアドレスと一致する分岐元アドレスを有するよう
な当該予測分岐命令の分岐先アドレスによって示される
命令群をフェッチするものと;上記現在フェッチ中命令
群の実際の実行において上記予測分岐命令に実際に遭遇
した時に、該現在フェッチ中命令群についての該予測分
岐命令を正しいと判定するための予測判定手段と;上記
予測判定手段が上記予測分岐命令を正しいと判定しない
時に、上記次の処理タイミングにおいて上記命令フェッ
チ手段によってフェッチされるものであって上記現在フ
ェッチ中命令群についての上記予測分岐命令の分岐先ア
ドレスによって示されるものである命令群を無効化する
ための予測命令無効化手段と;を備えたことを特徴とす
る分岐予測装置である。
【0011】上記分岐予測装置において、予測判定手段
は、前記現在フェッチ中命令群のアドレスと一致する分
岐元アドレスを有し前記分岐予測テーブル手段のエント
リーに登録されている上記命令位置を、前記現在フェッ
チ中命令群の実際の実行において遭遇した実際の分岐命
令の実際の命令位置と比較するための比較器を有するの
が好ましい。
【0012】又、上記分岐予測装置は、更に、前記分岐
予測テーブル手段に登録されているエントリーを書き換
えるためのテーブル登録手段を備えると、より好まし
い。
【0013】更に、上記分岐予測装置については、現在
フェッチ中命令群の実行において遭遇した実際の分岐命
令の実際の命令位置が前記現在フェッチ中命令群につい
ての前記予測分岐命令の命令位置とは異なり、該実際の
分岐命令は実際には実行されないときに、前記現在フェ
ッチ中命令群の実際の実行において該実際の分岐命令の
後に他の分岐命令に遭遇しない限り、前記現在フェッチ
中命令群全ての実行が終わるまで前記テーブル登録手段
は前記分岐予測テーブル手段におけるエントリーを書き
換えないように構成することが好ましい。
【0014】又、上記分岐予測装置において、前記現在
フェッチ中命令群の実際の実行において遭遇した前記実
際の分岐命令が前記分岐予測テーブル手段に登録されて
いないとき、前記テーブル登録手段は、該現在フェッチ
中命令群についての前記実際の分岐命令を登録する新た
なエントリーをも分岐予測テーブル手段に登録するよう
に構成することも好ましい。
【0015】又、上記分岐予測装置は、更に、前記現在
フェッチ中命令群の命令の内、前記現在フェッチ中命令
群について予測される分岐命令の命令位置よりも後に位
置する命令を、その実行前に無効化するための現命令無
効化手段を備えるとよい。
【0016】更に、上記分岐予測装置において、前記現
在フェッチ中命令群の実際の実行において遭遇した全て
の分岐命令が実際には実行されない場合、及び、前記現
在フェッチ中命令群の実際の実行においては分岐命令に
全く遭遇しない場合に、前記命令フェッチ手段は、前記
現命令無効化手段によって無効化される命令を前記次の
処理タイミングにおいてフェッチするように構成すると
より好ましい。
【0017】更に、上記分岐予測装置において、前記命
令フェッチ手段によってフェッチされる命令群が、前記
現在フェッチ中命令群についての予測分岐命令の命令位
置より後に位置するときであっても現命令無効手段によ
って無効化できない遅延命令を含み、該遅延命令の1つ
は実際には分岐命令である場合、該命令フェッチ手段
は、前記次の処置タイミングにおいて、実際には分岐命
令である当該遅延命令の1つとそれより後に位置する現
在フェッチ中命令群の命令の全てとをフェッチする様に
構成すると更に好ましい。
【0018】又、上記分岐予測装置において、前記現在
フェッチ中命令群のアドレスが他のアドレスから生じ、
現在フェッチ中命令群の該アドレスと一致する分岐元ア
ドレスを有する分岐予測テーブル手段のエントリーに登
録されている前記現在フェッチ中命令群についての予測
分岐命令が存在し、且つ、該現在フェッチ中命令群のア
ドレスと一致する分岐元アドレスに対応する登録命令位
置が、該現在フェッチ中命令群のアドレスの生成元であ
る上記他のアドレスの命令位置より前にあるような場合
には、前記命令フェッチ手段は、分岐予測を無視して命
令のアドレスに従って順次命令群をフェッチするように
構成すると好ましい。
【0019】又は、上記分岐予測装置において、前記分
岐予測テーブル手段は連想メモリから成るのが好まし
い。
【0020】又、本発明は:命令を実行するためのプロ
セッサ手段と;連想メモリによって形成される分岐予測
テーブル手段であって、予測される分岐命令を含む同時
実行される命令を示す分岐元アドレスと、該予測分岐命
令の分岐先アドレスと、当該分岐予測テーブル手段の該
連想メモリにおける各エントリーの位置を示すエントリ
ーアドレスとを含むエントリーを登録するものと;上記
プロセッサ手段によって同時に実行される上記命令をフ
ェッチするための命令フェッチ手段であって、次の処理
タイミングにおいては、現在フェッチされている命令に
ついての予測分岐命令であって上記分岐予測テーブルの
エントリーに登録されており該現在フェッチ中命令のア
ドレスと一致する分岐元アドレスを有するような当該予
測分岐命令の分岐先アドレスによって示される命令をフ
ェッチするものと;上記現在フェッチ中命令の実際の実
行において上記予測分岐命令に実際に遭遇した時に、該
現在フェッチ中命令についての該予測分岐命令を正しい
と判定するための予測判定手段と;上記予測判定手段が
上記予測分岐命令を正しいと判定しない時に、上記次の
処理タイミングにおいて上記命令フェッチ手段によって
フェッチされているものであって、上記現在フェッチ中
命令についての上記予測分岐命令の分岐先アドレスによ
って示されるものである命令を無効化するための予測命
令無効化手段と;上記予測判定手段が上記予測分岐命令
を正しいと判定しない時に、上記分岐予測テーブル手段
における上記現在フェッチ中命令についての上記予測分
岐命令を登録しているエントリーを、上記現在フェッチ
中命令についての上記予測分岐命令を登録しているエン
トリーのエントリーアドレスを用いて書き換えるための
テーブル登録手段と;を備えたことを特徴とする分岐予
測装置である。
【0021】上記分岐予測装置においては、前記現在フ
ェッチ中命令の実際の実行において遭遇した実際の分岐
命令が前記分岐予測テーブル手段に登録されていなかっ
た場合、前記テーブル登録手段は、前記現在フェッチ中
命令についての実際の分岐命令を登録する新たなエント
リーをも前記分岐予測テーブル手段に登録し、該テーブ
ル登録手段は該新たなエントリーを該分岐予測テーブル
手段で現在使用していない新たなエントリーアドレスを
使って登録するように構成するのが好ましい。上記分岐
予測装置は、更に、前記現在フェッチ中命令についての
予測分岐命令を登録するエントリーの書換えを前記テー
ブル登録手段が行うまで、前記現在フェッチ中命令につ
いての予測分岐命令を登録するエントリーのエントリー
アドレスを保持し、当該エントリーアドレスを供給する
手段を備えるとより好ましい。
【0022】又、上記分岐予測装置において、前記予測
判定手段が予測分岐命令を正しいと判定しなかった場合
でも、前記現在フェッチ中命令の実際の実行中に遭遇し
た実際の分岐命令が前記テーブル登録手段による登録と
同一処理タイミングにおいてフェッチされた場合には、
前記テーブル登録手段は前記分岐予測テーブル手段中の
前記現在フェッチ中命令についての予測分岐命令を登録
するエントリーの書換えを行わないように構成するのが
好ましい。
【0023】又、上記分岐予測装置においては、前記分
岐予測テーブル手段の各エントリーは更に該エントリー
の有効性を示すバリッドビットを含むように構成するの
が好ましい。
【0024】更に、上記分岐予測装置においては、前記
予測テーブル手段中の各エントリーのバリッドビット
は、該エントリーの予測分岐命令が該予測分岐命令の実
行において実際に実行されなかった場合に該エントリー
が無効であることを示すように構成するのが好ましい。
【0025】又、上記分岐予測装置は更に、前記命令フ
ェッチ手段によってフェッチされる命令を記憶するキャ
ッシュメモリ手段を含み、前記分岐予測テーブル手段中
の各エントリーのバリッドビットは、該エントリーの分
岐元アドレスと一致するアドレスを持った命令が前記キ
ャッシュメモリに存在しないときに、該エントリーが無
効であることを示すように構成するのが好ましい。
【0026】又、上記分岐予測装置について、前記現在
フェッチ中命令の実際の実行において遭遇した実際の分
岐命令が前記分岐予測テーブル手段に登録されていなか
った場合、前記テーブル登録手段は、前記現在フェッチ
中命令についての実際の分岐命令を登録する新たなエン
トリーをも前記分岐予測テーブル手段に登録し、該テー
ブル登録手段は該新たなエントリーを前記バリッドビッ
トが無効であることを示しているエントリーに上書きし
て登録するように構成するのが好ましい。
【0027】又は、上記分岐予測装置において、前記プ
ロセッサ手段は、一群の複数命令を同時に実行し、前記
命令フェッチ手段は、該命令群を各処理タイミングにフ
ェッチし、前記分岐予測テーブル手段中の各エントリー
は更に分岐元アドレスによって示される予測分岐命令の
該命令群中の位置を示す命令位置を含む様に構成するこ
とが好ましい。
【0028】更に、上記分岐予測装置において、前記現
在フェッチ中命令のアドレスと一致する分岐元アドレス
を有し前記分岐予測テーブル内のエントリーに登録され
ている前記現在フェッチ中命令についての予測分岐命令
が存在し、且つ、該現在フェッチ中命令についての予測
分岐命令の分岐先アドレスによって示される命令が、該
現在フェッチ中命令についての該予測分岐命令の分岐先
アドレスの命令位置より前の命令位置を持つ分岐元アド
レスを有する他のエントリーが前記分岐予測テーブル手
段に登録されているような他の予測分岐命令を含まない
ような場合を除いては、前記命令フェッチ手段は、命令
のアドレスに従って順次命令をフェッチするように構成
することが好ましい。
【0029】又、本発明に係る命令群を同時実行可能な
プロセッサ用の分岐予測方法は:予測される分岐命令を
含む命令群を示す分岐元アドレスと、該予測分岐命令の
分岐先アドレスと、該分岐元アドレスによって示される
該命令群中の該予測分岐命令の位置を示す命令位置と、
を含むエントリーを登録するための分岐予測テーブルを
設ける工程と;次の処理タイミングにおいて、現在フェ
ッチされている命令群のアドレスと一致する分岐元アド
レスを有する分岐予測テーブル中のエントリーに登録さ
れている現在フェッチ中命令群についての分岐予測命令
の分岐先アドレスによって示されプロセッサによって同
時に実行される該命令群をフェッチする工程と;上記フ
ェッチ工程でフェッチされた命令群を同時にプロセッサ
によって実際に実行する工程と;上記実行工程で上記現
在フェッチ中命令群の実際の実行において上記予測分岐
命令に実際に遭遇した時に、該現在フェッチ中命令群に
ついての該予測分岐命令を正しいと判定する工程と;上
記判定工程において上記予測分岐命令を正しいと判定し
ない時に、上記次の処理タイミングにおいて上記フェッ
チ工程でフェッチされるものであって上記現在フェッチ
中命令群についての上記予測分岐命令の分岐先アドレス
によって示されるものである命令群を無効化する工程と
を含むことを特徴とする。
【0030】又、本発明に係る他の分岐予測方法は:連
想メモリによって形成され予測される分岐命令を含んだ
同時実行されるべき命令を示す分岐元アドレスと、該予
測分岐命令の分岐先アドレスと、当該分岐予測テーブル
の該連想メモリにおける各エントリーの位置を示すエン
トリーアドレスとを含むエントリーを登録するための分
岐予測テーブルを設ける工程と;次の処理タイミングに
おいて、現在フェッチされている命令のアドレスと一致
する分岐元アドレスを有する分岐予測テーブル中のエン
トリーに登録されている現在フェッチ中命令についての
予測分岐命令の分岐先アドレスによって示されプロセッ
サ手段によって同時に実行される命令をフェッチする工
程と;上記フェッチ工程でフェッチされた命令を同時に
プロセッサによって実際に実行する工程と;上記実行工
程で上記現在フェッチ中命令の実際の実行において上記
予測分岐命令に実際に遭遇した時に、該現在フェッチ中
命令についての該予測分岐命令を正しいと判定する工程
と;上記判定工程において上記予測分岐命令を正しいと
判定しない時に、上記次の処理タイミングにおいて上記
フェッチ工程でフェッチされているものであって上記現
在フェッチ中命令についての上記予測分岐命令の分岐先
アドレスによって示されるものである命令を無効化する
ための工程と;上記判定工程で上記予測分岐命令を正し
いと判定しない時に、上記現在フェッチ中命令について
の上記予測分岐命令を登録しているエントリーのエント
リーアドレスを用いて、上記分岐予測テーブル中の現在
フェッチ中命令についての上記予測分岐命令を登録して
いるエントリーを書き換える工程とを含むことを特徴と
する。
【0031】
【作用】上述の如く構成すれば、テーブルにヒットした
場合には、そのエントリー番号を覚えておいて登録の際
にその番号を使い、ヒットしなかった場合には、それが
確実でないと新規登録を行わないので、マルチエントリ
ーの発生防止が可能となる。
【0032】
【実施例】以下、本発明の実施例を図面に基づいて説明
する。
【0033】まず図1を参照して、本発明に係る分岐予
測装置の第1の実施例を説明する。この実施例は、複数
の命令を同時実行することができるスーパースケーラタ
イプのプロセッサに好適である。
【0034】第1実施例の装置の構成は、概略的には、
プロセッサ部50と分岐予測部60とを備えている。
【0035】更に、プロセッサ部50は、実行する命令
を格納するキャッシュメモリ1;キャッシュメモリ1か
らフェッチした次に実行される命令を格納する命令バッ
ファ2;命令バッファ2に格納された命令の適当な一部
を無効化する命令無効化ユニット3;実際に命令を実行
する演算器群4、命令無効化ユニット3で無効化されな
い命令の実行結果を監視する分岐監視ユニット5;及
び、キャッシュメモリ1から次にフェッチされる命令の
アドレスを特定するプログラムカウンタ6を有してい
る。
【0036】以下の記載においては、1つの実例とし
て、演算器群4がスーパースケーラタイプのプロセッサ
であり、一度に4つの命令を同時に実行でき、一度に命
令バッファ2に4つの命令を1つのグループとして取り
込むことができるものを仮定して説明する。ここで、同
時に取り込まれる各グループの命令は、その命令のグル
ープに属する命令のうちの最初のもののアドレスによっ
て指定されるので、<100>から<103>のアドレ
スの命令を同時にフェッチする時には、このグループの
命令は、グループに属する命令の最初のもののアドレス
<100>として規定される。
【0037】又、分岐予測部60は、分岐予測テーブル
エントリーを格納するフルアソシアティブメモリによっ
て形成される分岐予測テーブル7を備え、このテーブル
において、各エントリーは、分岐元アドレスと、分岐先
アドレスと、該分岐元アドレスによって規定されるグル
ープ命令におけるその分岐命令の位置を示す命令位置と
を含み、これらは、過去に実際にあった分岐命令に従っ
て分岐予測テーブル7に登録される。分岐予測部60
は、更に、4を1単位とする増分を最後にフェッチした
命令に加えるアドレス増加ユニット8;供給される各種
アドレスから適宜1つ選択し、選択したアドレスを次に
フェッチされる命令のアドレスとしてプログラムカウン
タ6に供給するセレクタ9;命令無効化ユニット3を制
御して命令フェッチの時に命令バッファ2に格納される
命令のうちの適当な一部を無効化する無効化制御ユニッ
ト10;分岐予測テーブル7から読み出す分岐先アドレ
スの伝達を遅延させる遅延器11;分岐予測テーブル7
から読み出す命令位置の伝達を遅延させる遅延器12;
遅延器11及び12からの分岐先アドレス及び命令位置
を、分岐監視ユニット5から伝えられる実際に次に進む
アドレス及び実際に遭遇した分岐命令の実際の命令位置
と比較する比較器13;及び、間違った分岐予測の場合
の命令実行時に、命令無効化ユニット3による命令バッ
ファ2に格納された命令の無効化、セレクタ9でのアド
レスの選択、及び分岐予測テーブル7におけるエントリ
ーの書替えあるいは削除を制御する無効化実施ユニット
14を備える。
【0038】図2〜図4は、図1の装置の実際の操作手
順を示したものである。以下に記載される操作は、命令
<100>〜<103>が現在フェッチされており、分
岐元アドレスとして<100>、対応する分岐先アドレ
スとして<202>、その命令位置として<2>を示す
エントリーに基づいて分岐予測が行われる状況を1つの
実例として説明したものである。
【0039】まず、命令フェッチの時の処理は図2のフ
ローチャートに従って、以下のように実行される。
【0040】ステップ101で、プログラムカウンタ6
は命令バッファ2で現在フェッチされているグループ命
令のアドレス<100>を分岐予測テーブル7及びアド
レス増加ユニット8に送る。これに応じて、アドレス増
加ユニット8は、現在フェッチされているグループ命令
のアドレス<100>に4を1単位とする増分を加え、
得られた新しいアドレス<104>はセレクタ9に送ら
れ、分岐が予測されない時にはセレクタ9によって選び
出されることになる。
【0041】次に、ステップ102において、分岐予測
テーブル7に登録された分岐元アドレスがチェックさ
れ、現在フェッチされているグループ命令のアドレス<
100>と一致する登録分岐元アドレスを見つけ出す。
【0042】この登録分岐元アドレスが次のステップ1
03で見つかると、分岐予測テーブル7は、ヒットを示
す信号をセレクタ9及び無効化制御ユニット10に送
り、操作はステップ104に進む。そうでない場合は、
分岐予測テーブル7は、ミスを示す信号をセレクタ9及
び無効化制御ユニット10に送り、次はステップ111
に進む。図1に示される状況においては、分岐元アドレ
ス<100>と、これに対応する分岐先アドレス<20
2>と、命令位置<2>とを有するエントリーがあり、
この様な状況ではステップ104が次に行われる。
【0043】ステップ104においては、分岐予測テー
ブル7をチェックして、ステップ103で捜し出された
分岐元アドレス<100>に対応する命令位置<2>の
方が、フェッチされた命令のアドレス<100>をプロ
グラムカウンタ6で発生させたアドレスの命令位置より
前かどうかを調べる。即ち、プログラムカウンタ6にお
いて、フェッチされた命令のアドレス<100>が例え
ばセレクタ9によって供給されたアドレス<101>か
ら生じたときは、このアドレス<101>の命令位置<
2>と分岐元アドレス<100>に対応する登録命令位
置<2>とが比較され、登録命令位置<2>の方が前で
あるかどうかを調べる。
【0044】ステップ105で登録命令位置<2>の方
が前であると判明すると、分岐予測テーブル7はミスを
示す信号をセレクタ9及び無効化制御ユニット10に送
り、次はステップ111に進む。そうでない場合は、分
岐予測テーブル7は、ヒットを示す信号をセレクタ9及
び無効化制御ユニット10に送り、次はステップ106
に進む。
【0045】このようなステップ104における登録命
令位置のチェックは、アドレス<100>のようにアド
レス<101>より前にあるアドレスからの分岐予測テ
ーブル7に基づいた望ましくない分岐を避けるために設
けられている。言い換えれば、分岐予測テーブル中の分
岐元アドレス<100>を有するエントリーの命令位置
が<1>である場合、それは実際の分岐元アドレスが<
100>であることを示している。そして、分岐予測テ
ーブル7は現在フェッチされている命令<100>〜<
103>についてのアドレス<100>によってアクセ
スされるので、プログラムカウンタ6においてセレクタ
9によって供給されるアドレス<101>から現在フェ
ッチされている命令のアドレス<100>が発生する場
合のように、アドレス<100>の命令を<100>〜
<103>の命令群の命令実行時に実行すべきではない
場合には、この命令位置<1>を有するエントリーに基
づいた分岐予測は禁止されなければならない。このチェ
ックは、現在フェッチされている命令群のアドレスをプ
ログラムカウンタ6に発生させた元のアドレス自体が以
前の別の分岐命令の分岐先アドレスであったときに重要
である。以下の記載から理解されるように、ステップ1
11に進んだ場合には分岐予測は行われず、そして、ス
テップ112においてカウンタ6から供給されるアドレ
ス<101>に従ってアドレス<100>の命令を無効
化するように命令無効化ユニット3が制御されることに
なる。
【0046】上述のステップ104においての登録命令
位置のチェックは以下のようなものに置き換えてもよ
い。即ち、分岐予測テーブル7は、ステップ103で見
つかった分岐元アドレス<100>に対応する分岐先ア
ドレス<202>が属するような登録分岐元アドレスで
あって、対応する命令位置がステップ103で見つかっ
た分岐元アドレス<100>に対応する分岐先アドレス
<202>の命令位置<3>より前にあるものを捜すよ
うにチェックしてもよい。図1の状況では、分岐予測テ
ーブル7のエントリーがチェックされ、当面の分岐元ア
ドレス<100>について予測される分岐先アドレス<
202>が属する分岐元アドレス<200>を有するエ
ントリーがあるかどうかを調べる。そして、そのような
エントリーが見つかると、そのような登録分岐元アドレ
ス<200>に対応する命令位置が、問題の分岐元アド
レス<100>に対応する分岐先アドレス<202>の
命令位置<3>の前にあるかどうか、つまり、登録分岐
元アドレス<200>に対応する登録命令位置が、<1
>又は<2>のいずれかであるか、又はそうでないか
が、チェックされる。
【0047】次にこのような登録分岐元アドレスがステ
ップ105で見つかると、分岐予測テーブル7はミスを
示す信号をセレクタ9及び無効化制御ユニット10に送
り、次はステップ111に進む。そうでない場合は、分
岐予測テーブル7は、ヒットを示す信号をセレクタ9及
び無効化制御ユニット10に送り、次はステップ106
に進む。
【0048】このようなステップ104における、問題
の分岐元アドレス<100>に対応する分岐先アドレス
<202>が属する登録分岐元アドレスであって対応す
る命令位置がステップ104で問題の分岐元アドレス<
100>に対応する分岐先アドレス<202>の命令位
置<3>より前にある登録分岐元アドレスのチェックに
よって、次のサイクルにおいて起こりうる分岐予測テー
ブル7に基づいたアドレス<200>又は<201>で
の望ましくない分岐を避けることができる。即ち、この
アドレス<200>及び<201>の命令は現在の分岐
予測に従ってフェッチされている<200>〜<203
>の命令群の命令実行時には実行されないものであっ
て、後述するように、命令無効化ユニット3がステップ
112においてプログラムカウンタ6から供給されるア
ドレス<202>に従ってアドレス<200>及び<2
01>の命令を無効化するようになっているので、これ
らのアドレスからの分岐予測は行われるべきではない。
以下に記載するように、このような場合にはステップ1
11に進むことによって分岐予測が実行されないことに
なる。
【0049】ステップ106では、次に、予測された分
岐先アドレス<202>が分岐予測テーブル7からセレ
クタ9へ送られ、一方、ステップ107では、予測分岐
先アドレス<202>は分岐予測テーブル7から遅延器
11へ送られる。遅延器11は、適切なタイミングま
で、つまり、実際に遭遇した分岐命令の結果生じる実際
に次に進むアドレスが分岐監視ユニット5から比較器1
3へ送られる時まで、予測分岐先アドレス<202>の
比較器13への伝達を遅延させる。
【0050】そして、ステップ108において、無効化
制御ユニット10は分岐予測テーブル7に登録された予
測分岐命令の命令位置<2>を読み込み、命令無効化制
御ユニット3を制御して、現在フェッチされている命令
<100>〜<103>のグループにおける命令のう
ち、命令位置が予測分岐命令の登録命令位置<2>より
大きいものを無効化する。つまり、図1の状況において
は、命令<102>及び<103>は、その命令位置<
3>及び<4>が予測分岐命令の登録命令位置<2>よ
り後であり、予測分岐命令が実際に生じたときには処理
は次はアドレス<202>に飛ぶため、これらの命令<
102>及び<103>は実行されるべきではないもの
なので、命令無効化ユニット3により無効化される。
【0051】この後、ステップ109において、登録命
令位置<2>は分岐予測テーブル7から遅延器12へ送
られる。遅延器12は比較器13への登録命令位置<2
>の伝達を、実際に遭遇した分岐命令の実際の命令位置
が分岐監視ユニット5から比較器13へ送られる時期ま
で適宜遅延させる。
【0052】そして、ステップ110において、セレク
タ9は、分岐予測テーブル7からのヒット信号に従って
予測分岐先アドレス<202>を選び出し、それを、次
にキャッシュメモリ1からフェッチする命令のアドレス
として、プログラムカウンタ6へ送る。
【0053】他方、操作がステップ111に進む時は、
分岐予測はなされないということを意味するので、セレ
クタ9は、分岐予測テーブル7からのミス信号に応じて
アドレス増加ユニット8から入ったアドレス<104>
を選び出し、それを、次にキャッシュメモリ1からフェ
ッチする命令のアドレスとしてプログラムカウンタ6に
送る。
【0054】最後に、ステップ112において、プログ
ラムカウンタ6はセレクタ9から受けたアドレス<20
2>又は<104>を1処理タイミングの間保持し、キ
ャッシュメモリ1で次に同時にフェッチされる命令グル
ープを特定するために、対応するフェッチアドレス<2
00>又は<104>を送る。ここで、図1の状況のよ
うに、同時にフェッチされる命令の数として4を用いた
場合、フェッチするアドレスは、単にセレクタ9から受
けるアドレスの最後の2ビットの値を落とすことによっ
て得られる。セレクタ9から受けたアドレスが予測分岐
先アドレス<202>である場合には、プログラムカウ
ンタ6は、アドレス<202>を命令無効化ユニット3
へ送り、次の命令実行時には実行されるべきではないア
ドレス<200>と<201>の命令を無効化するよう
にする。
【0055】次に、命令実行時の処理は図3及び図4の
フローチャートに従って以下のように行われる。
【0056】まず、ステップ201において、分岐監視
ユニット5は、命令バッファ2における有効命令の実行
結果を1つずつ実行が完了した順に監視し、実行中に遭
遇した実際の分岐命令の実際の命令位置及び実行中に遭
遇した実際の分岐命令から実際に次に進むアドレスを比
較器13に送る。
【0057】そして、ステップ202で、比較器13
は、分岐監視ユニット5から受ける実際に遭遇した分岐
命令の実際の命令位置を、遅延器12から受ける予測分
岐命令の登録命令位置<2>と比較し、分岐監視ユニッ
ト5から受ける実際に遭遇した分岐命令から実際に次に
進むアドレスを、遅延器11から受ける予測分岐先アド
レス<202>と比較する。
【0058】それから、ステップ203において、実際
に遭遇した分岐命令の実際の命令位置と予測分岐命令の
登録命令位置<2>が互いに一致するかどうかを比較器
13によって決定する。これらが互いに一致すると、そ
れは登録命令位置において実際に分岐命令に遭遇したこ
とを意味するので、次はステップ204に進む。そうで
ない場合は、登録命令位置より前の命令位置で分岐命令
に遭遇したことを意味し、次はステップ213に進む。
【0059】ステップ204において、実際の分岐命令
に実際に実行されたか否かが分岐監視ユニット5からの
報告に従って決定され、実際にそれが実行された場合
は、次はステップ205に進み、そうでない場合は、次
はステップ209に進む。
【0060】ステップ205において、実際に遭遇した
分岐命令から実際に次に進むアドレスと予測分岐先アド
レス<202>が互いに一致するかどうかを比較器13
によって決定する。それらが互いに一致すると、それは
分岐予測が正しかったことを意味し、操作は次の命令に
ついて処理が続けられ、そうでない場合は、分岐予測が
正しくないことを意味するので、次はステップ206へ
進む。
【0061】命令位置と分岐先アドレスの両方が一致す
ることがステップ204及び205で明らかになった
時、比較器13は一致を示す信号をセレクタ9及び無効
化実施ユニット14に送り、そうでない場合は、比較器
13は不一致を示す信号をセレクタ9及び無効化実施ユ
ニット14に送る。
【0062】ステップ206において、無効化実施ユニ
ット14は命令無効化ユニット3を制御して、正しくな
い分岐予測に従ってフェッチされた命令<200>〜<
203>を、比較器13からの不一致信号に従って無効
化する。
【0063】この場合、分岐命令は実際に実行されてい
るので、次のステップ207において、無効化実施ユニ
ット14は、分岐監視ユニット5から報告される実際の
分岐先アドレスをセレクタ9に送って、次に実際の分岐
先アドレスからフェッチを実行するようにする。
【0064】その後、ステップ208において、無効化
実施ユニット14は分岐予測テーブル7を制御して、分
岐予測テーブル7中の正しくないエントリーを書き替え
て、実際の分岐元アドレス、実際の分岐先アドレス及び
実際の命令位置を示す正しいエントリーにする。ここ
で、ステップ101においてプログラムカウンタ6から
分岐予測テーブル7へ供給されたアドレス<100>
は、適宜遅延され、分岐予測テーブル7の書換えに用い
られる。
【0065】他方、ステップ209に進んだ場合は、無
効化実施ユニット14は命令無効化ユニット3を制御し
て、正しくない分岐予測に従ってフェッチされた命令<
200>〜<203>を比較器13からの不一致信号に
従って無効化する。
【0066】この場合、分岐命令は実際には実行されて
いないので、次のステップ210において、無効化実施
ユニット14は、正しくない分岐予測により命令フェッ
チの時に無効化制御ユニット10によって間違って無効
化された命令のアドレスをセレクタ9に送り、次にその
間違って無効化された命令のフェッチを再度行うように
する。ここで、プログラムカウンタ6は、間違って無効
化された命令のアドレスを命令無効化ユニット3に送
り、次の命令実行時に再度実行されるべきではない間違
って無効化された命令以外の命令を無効化するようにす
る。
【0067】又、この場合、実際には実行された分岐命
令は存在しないので、次のステップ211において、無
効化実施ユニット14は分岐予測テーブル7を制御し
て、分岐予測テーブル中の正しくないエントリーを削除
する。ここで、ステップ101においてプログラムカウ
ンタ6から分岐予測テーブル7へ供給されたアドレス<
100>は適宜遅延され、分岐予測テーブル7中の間違
ったエントリーを削除するのに用いられる。
【0068】それから、ステップ212において、セレ
クタ9はステップ207又はステップ210で入力され
たアドレスを選び出し、それを、次にフェッチされる命
令のアドレスとしてプログラムカウンタ6に送る。一
方、分岐予測テーブル7及びアドレス増加ユニット8か
ら入った他のアドレスは無視し、処理は次の命令に関す
る処理に移行する。
【0069】他方、ステップ203からステップ213
へ進んだ場合は、実際の分岐命令が実際に実行されたか
否かを分岐監視ユニット5からの報告に従って決定す
る。実際に実行されたときは次は上記ステップ206に
進み、そうでない場合は次はステップ214に進む。
【0070】ステップ214において、命令バッファ2
中の有効命令の全てについて実行が完了したか否かが決
定される。全ての有効命令が実行完了されている場合
は、実際には分岐命令に遭遇しなかったことを意味する
ので、次は上記ステップ209に進む。そうでない場合
は、次は上記ステップ201に戻り、分岐監視ユニット
5によって次の有効命令の実行結果を監視する。
【0071】ここで、プロセッサ部50で実行される命
令が、それより前に位置する分岐命令が実際に実行され
るときでも実行されなければならないような、いわゆる
遅延命令をも含むものである場合は、上記の操作は以下
のように修正される。
【0072】まず最初に、命令フェッチの時に、無効化
制御ユニット10によりステップ108において無効化
される命令は、現在フェッチされる命令グループ<10
0>〜<103>の命令の内、命令位置が予測分岐命令
の登録命令位置<2>より1プラス所定遅延命令数だけ
後のものでなければならない。ここで、遅延命令数は前
もってプロセッサ部50に定められている一定数であ
り、この実施例においては1と仮定する。従って、例え
ば、図1の状況では、予測分岐命令の登録命令位置<2
>より2つ後の命令位置<4>にある命令<103>の
みが命令無効化ユニット3によって無効化される。
【0073】ここで、遅延命令が実際に実行されるかど
うかは命令フェッチの時にはわからず、命令がデコード
されるまでは確かめられないものである。
【0074】第2に、命令実行の際に、ステップ210
において特定され再フェッチされる命令は、間違った分
岐予測に従って命令フェッチの際に無効化制御ユニット
10によって間違って無効化された命令だけではなく、
実際に結果として分岐命令であった遅延命令及びこの遅
延命令の後に位置する全ての命令でなくてはならない。
【0075】上述したように、この第1実施例による
と、分岐予測での混乱を生じることなくスーパースケー
ラタイプのプロセッサに適用可能な分岐予測テーブルを
用いて分岐予測することが実現可能となり、高速でより
効率的に分岐予測を行うことができる。
【0076】次に、図5を参照して、本発明に係る分岐
予測装置の第2の実施例を詳細に説明する。この第2実
施例は、複数命令の同時実行が可能なスーパースケーラ
タイプのプロセッサを含むあらゆるタイプのプロセッサ
に適用可能である。以下の説明においては、説明を簡単
にするために、演算器群4は一度に1つの命令を実行で
きる通常のプロセッサで一度に1つの命令が命令バッフ
ァ2にフェッチされるものと仮定する。
【0077】この第2実施例においては、概略的には、
装置はプロセッサ部70と分岐予測部80とを備えてい
る。
【0078】更に、プロセッサ部70は、実行する命令
を格納するキャッシュメモリ31;キャッシュメモリ3
1からフェッチされ次に実行される命令を格納する命令
バッファ;間違った分岐予測に従ってフェッチされ命令
バッファ32に格納された命令を無効化する命令無効化
ユニット33;実際に命令を実行する演算器群34;命
令の実行結果を監視する分岐監視ユニット35;及び、
キャッシュメモリ1から次にフェッチされる命令のアド
レスを特定するプログラムカウンタ36を備えている。
【0079】又、分岐予測部80は、分岐予測テーブル
エントリーを格納するためのフルアソシアティブメモリ
によって形成される分岐予測テーブル37を備えてい
る。このテーブルにおいては、各エントリーは、過去に
行われた実際の分岐命令に従って分岐予測テーブル37
中に登録された分岐元アドレスとこれに対応する分岐先
アドレスとを含み、更に、フルアソシタティブメモリ中
でエントリーが登録されている位置を示すエントリーア
ドレスを伴っている。分岐予測部80は更に、最後にフ
ェッチされた命令のアドレスに1を1単位とする増分を
加えるアドレス増加ユニット38;供給された各種アド
レスの1つを適宜選び出し、選び出されたアドレスをプ
ログラムカウンタ36に、次にフェッチされる命令のア
ドレスとして供給するセレクタ39;分岐予測テーブル
37から読み出した分岐先アドレスの伝達を遅延させる
遅延器41;遅延器41から入力された分岐先アドレス
を、分岐監視ユニット35から報告される実際の分岐先
アドレスと比較する比較器43;分岐予測テーブル37
から入力されたエントリーアドレスを格納し、必要に応
じて新たなエントリーアドレスを生成させる、エントリ
ーアドレス生成ユニット45;及び、間違った分岐予測
がなされたときにエントリーアドレス生成ユニット45
から入力されたエントリーアドレスを用いて分岐予測テ
ーブル37中のエントリーを書き直すためのテーブル登
録制御ユニット46を備えている。
【0080】ここで、図5の装置による処理の、実際の
手順を詳細に説明する。以下においては、命令<100
>が現在フェッチされ、分岐元アドレスとして<100
>を、対応する分岐先アドレスとして<202>を、エ
ントリーアドレスとして<01>を示すエントリーに基
づいて分岐予測が行われる状況での操作を、具体例とし
て説明する。
【0081】まず、プログラムカウンタ36は、命令バ
ッファ32で現在フェッチされる命令のアドレス<10
0>を、分岐予測テーブル37及びアドレス増加ユニッ
ト38に送る。これに応じて、アドレス増加ユニット3
8は、現在フェッチされる命令のアドレス<100>
に、1を1単位とする増分を加え、得られた新しいアド
レス<101>はセレクター39に送れ、分岐予測がな
い時には、セレクタ39によって選び出されることにな
る。
【0082】一方、分岐予測テーブル37において、分
岐予測テーブル37に登録されている分岐元アドレスが
チェックされ、現在フェッチされている命令のアドレス
<100>と一致する登録分岐元アドレスが捜される。
【0083】そのような登録分岐元アドレスが見つかる
と、対応する予測分岐先アドレス<202>が分岐予測
テーブル37からセレクタ39へ送られ、遅延器41に
も送られる。一方、対応するエントリーアドレス<01
>は、エントリーアドレス生成ユニット45へ送られ
る。
【0084】遅延器41は、予測分岐先アドレス<20
2>の比較器43への伝達を、実際の分岐先アドレスが
分岐監視ユニット35から比較器43へ送られるまで、
適宜遅延させる。
【0085】その後、セレクタ39は、予測分岐先アド
レス<202>を選び出し、プログラムカウンタ36
へ、次にフェッチされる命令のアドレスとして送る。
【0086】他方、現在フェッチされている命令のアド
レスと一致する登録分岐元アドレスが分岐予測テーブル
37中に見つからない場合、セレクタ39はアドレス増
加ユニット38から入力されたアドレス<101>を選
び出し、それを、次にフェッチされる命令のアドレスと
して、プログラムカウンタ36へ送る。
【0087】そして、プログラムカウンタ36は、セレ
クタ39から受けたアドレス<202>または<101
>を1処理タイミングの間保持し、それを、次にフェッ
チされる命令のアドレスとして、キャッシュメモリ3へ
送る。
【0088】他方、分岐監視ユニット35は、命令バッ
ファ32において現在フェッチされている命令<100
>の実行結果を監視し、実際の命令分岐先アドレスを比
較器43へ送る。
【0089】それから、比較器43は、分岐監視ユニッ
ト35から受けた実際の分岐先アドレスを、遅延器41
から受けた予測分岐先アドレス<202>と比較し、ア
ドレスが一致するか否かを示す信号を、命令無効化ユニ
ット33、エントリーアドレス生成ユニット45及びテ
ーブル登録ユニット46へ出力する。
【0090】アドレスが一致すると、それは分岐予測が
正しかったことを意味するので、処理は次の命令に関す
る処理に移行する。
【0091】他方、アドレスが一致しないことを示す信
号を比較器43から受けたときは、それは分岐予測が正
しくなかったことを意味するので、命令無効化ユニット
33は、次の処理タイミングでフェッチされた命令、つ
まり、正しくない分岐予測に従って間違ってフェッチさ
れた命令<202>を無効化する。
【0092】その後、テーブル登録制御ユニット46
が、間違った分岐先アドレス<202>の上に分岐監視
ユニット35から報告される実際の分岐先アドレスを書
き込むことによってエントリーを書き換えて分岐予測テ
ーブル37中の分岐元アドレス<100>のエントリー
を書換える。この時、書換え操作は、エントリー生成ユ
ニット45から入力されるエントリーアドレス<01>
によって示される連想メモリにおける位置について行わ
れる。
【0093】ここで、エントリーアドレス生成ユニット
45は分岐予測テーブル37のフルアソシアティブメモ
リにおける該当するエントリーアドレスを格納している
ので、正しくない分岐予測テーブルエントリーの書換え
はすぐに実施出来る。更に、正しくない分岐予測テーブ
ルエントリーは、正しいエントリーによって直接上書き
されるので、分岐予測に混乱を生じさせるような、1つ
の分岐アドレスについての多重エントリーは避けられ
る。
【0094】上記の操作において、エントリーアドレス
生成ユニット45は図6に示されるフローチャートに従
って、以下のな処理をする。
【0095】まず、ステップ301において、比較器4
3が分岐監視ユニット35から受けた実際の分岐先アド
レスを遅延器41から入力された予測分岐先アドレスと
比較したか否かが決定される。
【0096】この比較が比較器43によって既になされ
ている場合、それは分岐命令が実際に予測分岐元位置で
起こっていることを意味するので、次にステップ302
において、分岐先アドレスが互いに一致するかどうか、
つまり、分岐予測が正しかったかあるいは間違っていた
かが決定される。
【0097】分岐先アドレスが互いに比較器43におい
て一致した場合は、分岐予測が正しかったことを意味す
るので、エントリーアドレス生成ユニット45の処理は
終了する。
【0098】他方、アドレスが互いに一致しないと、そ
れは分岐予測が間違っていたことを意味するので、分岐
予測テーブル37における対応するエントリーの書換え
が必要となる。そのような場合、次にステップ303に
おいて、エントリーアドレス生成ユニット45は、分岐
予測の時に分岐予測テーブル37から受けてエントリー
アドレス生成ユニット45に格納されている書換え用の
エントリーに対応するエントリーアドレスをテーブル登
録制御ユニット46に送り、テーブル登録制御ユニット
46が分岐予測テーブル37のフルアソシアティブメモ
リ中の適切な位置について適宜書き換え操作を行うこと
ができるようにする。
【0099】比較器43がステップ301において比較
を行わなかったときは、次にステップ304において、
分岐予測がなされたか否かが決定される。
【0100】分岐予測がなされているときには、それは
分岐命令が予測分岐元アドレスにおいて遭遇しなかった
ことを意味するので、予測分岐元アドレスに対応するエ
ントリーは正しくなく削除しなければならない。そのよ
うな場合、次にステップ305において、エントリーア
ドレス生成ユニット45が対応するエントリーアドレス
を、新しいエントリーの新登録に使用可能な空きエント
リーアドレスとして格納する。この場合、テーブル登録
制御ユニット46は分岐予測テーブル37中の対応する
エントリーを削除する。
【0101】分岐予測がなされていない時、それは分岐
命令に分岐予測テーブル37中の分岐元アドレスとして
登録されていないアドレスで遭遇したことを意味するの
で、実際に遭遇した分岐命令に対応するエントリーは存
在せず新たなエントリーが造られなければならない。そ
のような場合、次にステップ306において、エントリ
ーアドレス生成ユニット45は、エントリーアドレス生
成ユニット45に格納されている空きエントリーアドレ
ス、または、例えば乱数を用いて新しく生成させたエン
トリーアドレスを、テーブル登録制御ユニット46に送
り、テーブル登録制御ユニット46が分岐予測テーブル
37のフルアソシアティブメモリにおける使用可能な位
置について適宜登録操作を行えるようにする。
【0102】尚、図7に示されるように、テーブル登録
制御ユニット46によって分岐予測テーブル37の書換
えまたは新登録が行われる処理タイミングと同じ時に、
分岐監視ユニット35によって監視された命令I1 がフ
ェッチされた場合、正しく書き換えられたエントリーが
ステップ305で間違って空きエントリーとして処理し
てしまう可能性、正しい新しく登録されたエントリーが
ステップ306で2重に登録される可能性をなくすため
に、上記ステップ305と306は迂回しなければなら
ない。
【0103】故に、この第2実施例によると、分岐予測
での混乱を生じることなくフルアソシアティブメモリに
よって形成される分岐予測テーブルを用いて分岐予測す
ることが実現可能となり、高速でより効率的に分岐予測
を行うことができる。
【0104】次に、図8を参照して、本発明に係る分岐
予測装置の第3の実施例を詳細に説明する。この第3実
施例は、複数命令の同時実行が可能なスーパースケーラ
タイプのプロセッサに適するように上記第2実施例を応
用したものである。図8では、図7で説明した第2実施
例の上記各要素と実質的に等価な要素には同じ参照符合
を用い、それらについての説明は省略する。
【0105】この第3実施例においては、分岐予測テー
ブル37Aは図7における分岐予測テーブル37とは次
のような点で異なっている。即ち、分岐予測テーブル3
7Aにおける各エントリーは、前述の第1実施例の分岐
予測テーブルと同じように、分岐元アドレスによって規
定される命令グループにおける分岐命令の位置を示す命
令位置をも含んでいるものである。
【0106】従って、この命令位置を用いることによ
り、前述の第1実施例の場合と同様に、複数命令の同時
実行が可能なスーパースケーラタイプのプロセッサに対
処することが可能となる。
【0107】この場合、命令バッファ32は同時に複数
の命令をフェッチし、アドレス増加ユニット38が、同
時にフェッチされる命令の数、例えば4、を1単位とし
てアドレスを更新する。
【0108】この第3実施例においては、図6で説明し
た第2実施例について前述したものと同様の操作をエン
トリーアドレス生成ユニット45が実行する場合、前述
の第1実施例における図2のステップ104と同様に、
ステップ306においてまず登録されている分岐元アド
レスに対応する登録命令位置がフェッチされている命令
のアドレスをプログラムカウンタ6で発生させているア
ドレスの命令位置より前であるか、または、問題の分岐
元アドレスに対応する分岐先アドレスが属する登録分岐
元アドレスであって対応する命令位置が問題の分岐元ア
ドレスに対応する分岐先アドレスの命令位置より前にあ
るものがあるか、チェックする必要がある。登録命令位
置の方が前であるとわかるか、あるいはそのような登録
分岐元アドレスが見つかった場合は、第1実施例と同
様、分岐予測は実行されるべきではない。
【0109】従って、この第3実施例によると、分岐予
測での混乱を生じることなくスーパースケーラタイプの
プロセッサに適したフルアソシアティブメモリによって
形成される分岐予測テーブルを用いて分岐予測すること
が実現可能となり、高速でより効率的に分岐予測を行う
ことができる。
【0110】次に、図9を参照して、本発明に係る分岐
予測装置の第4の実施例を詳細に説明する。この第4実
施例は、前述の第2実施例の応用であり、分岐予測テー
ブルにおける空きエントリーの処理が改良されている。
図9では、図7で説明した第2実施例の上記各要素と実
質的に等価な要素には同じ参照符合を用い、それらにつ
いての説明は省略する。
【0111】この第4実施例においては、分岐予測テー
ブル37Bは図7の分岐予測テーブル37とは次の点で
異なっている。即ち、分岐予測テーブル37Bにおける
各エントリーは、エントリーが空きであるかないかを示
す有効ビット値をも含むものであり、この有効ビット値
が<0>である時は空きでないことを、<1>である時
は空きであることを示す。
【0112】加えて、分岐予測テーブル37B中の有効
ビット値を変えるための有効ビット制御ユニット47が
設けられている。
【0113】ここでは、分岐監視ユニット35は予測さ
れた分岐が実際に実際されたかどうかを有効ビット制御
ユニット47に伝え、予測された分岐が実際には実行さ
れなかったときには、有効ビット制御ユニット47は予
測分岐元アドレスについてエントリー中の有効ビット値
を<0>から<1>に変更して実際には実行されなかっ
た分岐についてのエントリーが空きであることを示すよ
うにする。
【0114】又、この第4実施例においては、プロセッ
サ部70は、キャッシュメモリ31及びメインメモリ4
9を制御してキャッシュメモリ31におけるキャッシュ
内容をメインメモリ49に格納されている他の内容に変
えるためのキャッシュ変更制御ユニット48を有してい
てもよい。この場合、キャッシュの変更をキャッシュ変
更制御ユニット48が有効ビット制御ユニット47に伝
え、キャッシュ変更によってキャッシュメモリ31から
除去された分岐元アドレスについて有効ビット制御ユニ
ット47がエントリーの有効ビット値を<0>から<1
>に変更してこれらのエントリーが空きであることを示
すようにする。
【0115】又、この第4実施例においては、エントリ
ーアドレス生成ユニット45が図6で説明した第2実施
例について前述した操作と同様の操作を行うときに、分
岐予測テーブル37Bのフルアソシアティブメモリのエ
ントリーアドレスがより効率よく使用されて新しいエン
トリーの登録がよりすばやく行われるように、ステップ
306においてエントリーアドレス生成ユニット45は
新たなエントリーアドレスを生成する前にエントリーの
アドレスを有効ビットの値が<0>であるエントリーの
エントリーアドレスをテーブル登録制御ユニット46へ
送るようにしてもよい。
【0116】従って、この第4実施例によると、分岐予
測での混乱を生じることなくフルアソシアティブメモリ
によって形成される分岐予測テーブルを用いて分岐予測
することが実現可能となり、高速でより効率的に分岐予
測を行うことができる。
【0117】次に、図10〜図20を参照して、上述の
各実施例の特徴をすべて組み込んだ本発明の分岐予測装
置の具体的回路構成について詳しく説明する。図中、図
10〜図15は分岐予測装置の回路についての分図であ
り、この回路はBTB回路と称する。ここでは、各図に
ある端子番号Tn (n=1, 2, ---)は他の図にある同一の端
子番号と接続されているものとする。又、図16〜図1
8は、図10〜図15のBTB回路に接続される制御回
路についての分図であり、各図にある端子番号Rn (n=1,
2, ---)は他の図にある同一の端子番号と接続されてい
るものとする。又、図19及び図20は、図10〜図1
5のBTB回路と図16〜図18の制御回路とを接続し
た構成についての分図であり、各図にある端子番号Sn
(n=1, 2,---)は他の図にある同一の端子番号と接続され
ているものとする。
【0118】まず、図16〜図18の制御回路について
詳しく説明する。この図16〜図18の制御回路は、F
ステージ20(フェッチ)、Dステージ21(デコー
ド)、Eステージ22(実行)及びMステージ23(メ
モリアクセス)の4つのステージを含んでおり、これら
のステージで行われる操作は以下の通りである。
【0119】Fステージ:データパス部からのBTBHIT_P
信号を受け取り、ステージの前後関係と分岐ユニットの
状態を見て本当に有効であるかチェックし、有効であれ
ばBTB のアドレスを有効にするための信号VALFを返す。
【0120】BTBHitは4命令単位のスロットを用いてヒ
ットを判断し、FPC の下位ビットを以前分岐命令のあっ
た4命令中の位置と比較してFPC が分岐命令の後にくる
場合には仮ヒットの状態を発生する。この操作は、連想
メモリに2重にエントリー登録が起きるのを防ぐために
設けられている。
【0121】Dステージ:以前分岐命令のあった4命令
中の位置をチェックして、これが4命令中最後の命令で
あった場合には、delayed-slotの扱いにする。そして、
VALD信号を発生させる。
【0122】Eステージ:BU(分岐ユニット)で実際に
分岐命令が実行されてFステージでBTBHitした際に発生
したアドレスが、BUで分岐命令の実際の実行によって生
成されたアドレスと一致するか比較し、BTBで予測した
アドレスの確認を行う。
【0123】その後、ECASE1-3の確認信号とBTB 動作を
キャンセルするCNCL_Pを発生する。
【0124】Mステージ:登録の形態は次の3つに分類
される。
【0125】(1) Fステージで有効なヒットがなく、E
ステージで分岐の発生が認められた際に、BTB に対して
新規登録信号SETBTBを発する。登録の際にはランダムな
エントリーアドレスを使うか、ヒットしたエントリーに
対して行うか(BTBFHITM)、または前回キャンセルしたア
ドレスを用いるか(INVTG) を発する。
【0126】(2) Fステージで有効なヒットが発生した
が、Eステージの確認の際に違うアドレスに飛んだよう
な場合(レジスタ間接分岐の場合)、ヒットしたエント
リーに対して新しい飛び先を登録する。
【0127】(3) FステージでBTBHitしたが、Eステー
ジで分岐の発生が認められなかった場合にはBTB のキャ
ンセルを行う(BTCNCLM) 。
【0128】又、図10〜図15に示したBTB回路に
おいて、A-1 は連想メモリ(CAM) で構成されたアドレス
の記憶場所である。アドレスを記憶するエントリー数は
32エントリーとしている。
【0129】A-1 は入力として27bit のCAM-Search-P
ort(CAMSP)とCAM-Write-Port(CAMWP) があり、CAM の検
索動作と登録動作が同時に行える。登録動作の際、書き
込むエントリーを指定するためのエントリーアドレスは
ENTIN<31:0> で指定する。またエントリーの有効性を示
す1bit のエントリー有効フラグBTBVALがあり、CAMでC
AMSP と内部のTAG がマッチしても、このValid-bit が
0であるとヒット信号は出ない。また、検索動作でCAMS
P と内部のTAG がマッチし、Valid-bit が1であると、
そのエントリーのRAM 部のデータが読み出される。
【0130】A-2 は上記のRAM 部を示す。RAM 部は、4
命令中、分岐命令が何番目に在ったかを示すBRPOS 部と
その分岐命令の分岐先を示すデータ部に分かれており、
各々、2bit 、32bit のフィールドを持つ。
【0131】このRAM 部の入力は、上記フィールドに対
応して、BUNUMM<1:0> とRAM-Write-Port(RAMWP)<31:0>
があり、CAM 部の登録動作と同時に同じエントリーに登
録される。検索動作でヒットが発生するとヒットしたエ
ントリーのRAM 部のデータが読み出される。RAM 部で
も、この登録動作の書き込みと検索動作の読み出しは、
同時に動作可能である。また、CAM 部でヒットしたエン
トリーはBTBENT<31:0>に出力される。
【0132】連想メモリA-2 の分岐先を示すデータ部出
力BTBDAT<31:0>は分岐先セレクタA-3 のD1入力に接続さ
れる。また同出力はパイプラインレジスタA-4 にも接続
されている。パイプラインレジスタA-4 の出力は更にパ
イプラインレジスタA-5 と分岐先セレクタA-3 のD0入力
に接続されている。これは連想するプロセッサのパイプ
ラインステージに依存するが、FステージでBTB のヒッ
ト検索を行い、A-4 はDステージのパイプラインステー
ジ、A-5 はEステージのパイプラインステージに当た
る。
【0133】分岐先セレクタA-3 は6つの入力を信号線
VALD, VALF, ECASE1, ECASE2, ECASE3によって切り替え
る。順にD0-D4 のデータを選択し、すべて0であればD5
のデータが出力Q<31:0> に出る。信号線VALFはFステー
ジで連想メモリの出力が有効であることを示す制御線
で、図14、図15に示す制御部で作られる信号であ
る。VALDはdelayed-slotを考慮した信号でdelayed-slot
を有効にしたい場合、この信号が1になる。ECASE1, EC
ASE2, ECASE3はEステージにおいてBTB の分岐先の確認
を行った際、誤ったアドレスをFステージで出していた
ことが判明したときの修正アドレスである。ECASE1はBT
B の予測が的中した場合、分岐ユニットでは分岐先のア
ドレスを出力するが実際には分岐は既に発生しているた
め、EPC のインクリメントを行う必要がある理由からで
ある。
【0134】ECASE2は4命令の分岐位置がずれているこ
とを考慮した信号である。ECASE3はBTB の予測が外れた
場合、delayed-slotにFPC を設定するための信号であ
る。
【0135】従って、上述したように、ECASE1, ECASE
2, ECASE3の信号がアサートされる各場合に合わせたア
ドレス計算を行うのがアドレス計算手段A-6 である。こ
れは各々の場合に応じて、FPC,EPCとBTB 登録時に4命
令中分岐命令のあった箇所を示すbrpos をA-4, A-5と同
様なパイプラインレジスタA-7, A-8でEステージへ送っ
た信号BRPOS_E<1:0>より計算する。
【0136】分岐先セレクタA-3 の出力Q<31:0> はBTBA
DRS<31:0> として分岐ユニットに送られ、上の信号線VA
LD, VALF, ECASE1, ECASE2, ECASE3のORとBTB 動作無効
信号CNCL_Pとの論理和として得られた信号BTBADVAL_Cが
BTBADRS の有効信号として同じく分岐ユニットに送られ
る。
【0137】A-9 は32bit 一致検出回路であり、分岐
ユニットから来る分岐先アドレスJUMPAD_P<31:0>とBTB
の分岐先をEステージにおいて確認を行うための回路で
ある。一致信号はBTBEQLとして制御部に送られる。
【0138】登録する際のエントリーアドレスはランダ
ムレジスタA-12か、ヒットしたエントリーを登録が行わ
れるMステージまでパイプラインレジスタA-13で送った
データか、前回キャンセルを行ったエントリーを記憶し
たA-14かの3つのエントリーアドレスの内から選ばれ
る。選択はBTB 制御ユニットから来るBTFHITM とINVTG
という信号によってセレクタA-15で行われる。
【0139】BTFHITM はBTB がヒットしたアドレスがE
ステージで外れていたことが判明したとき等にアサート
される信号で、BTB がヒットしたエントリーに登録を行
わないとダブルエントリーが発生する場合を考慮する制
御線である。INVTG はキャンセルが発生した場合にasse
rtされる信号で、次の登録が行われるまでアサートされ
続ける。
【0140】セレクタA-15はBTFHITM がアサートされた
場合、ヒットしたエントリーを登録が行われるMステー
ジまでパイプラインレジスタA-13で送ったデータを選択
し、BTFHITM が0でINVTG がアサートされている場合
は、前回キャンセルを行ったエントリーを記憶したA-14
のエントリーアドレスを選択し、どちらでもないときは
ランダムレジスタA-12の値を選択する。
【0141】連想メモリA-1, A-2は検索動作と登録動作
が同時に行えるような回路構成を取っているが、同じエ
ントリーに検索と登録が同時に発生した場合は、データ
の信頼性が問題になる場合もある。本構造では、上記の
場合を考慮して、検索と登録が同じエントリーに発生し
たことを検出する機能を持っている。
【0142】A-11の一致回路とA-10の論理回路は、検索
と登録が同じエントリーに発生したことを検出し、連想
メモリA-1, A-2のヒット信号をマスクする。
【0143】パイプラインレジスタはパイプラインを一
時凍結するSTALL_P 信号が立っていない時、書き込みが
有効になる。しかし、FステージとDステージの間に存
在するパイプラインレジスタA-14, A-7, A-13 の最初の
パイプラインレジスタは、4命令が全部実行し終わった
かどうかを示す信号ADEND_P の条件が加わる。分岐先セ
レクタA-3 の出力は、レジスタA-16にラッチされ、連想
メモリA-2 のRAM 部入力ポートRAMWP に接続されてい
る。
【0144】この様にして、本実施例では、従来例と比
較して分岐予測を著しく高速化することができ、また、
分岐の信頼性を向上することができる。また本発明は、
ここに示した実施例に限られるものではなく、例えば、
分岐テーブル中に分岐先の命令を保持していても良い。
又、キャッシュメモリと分岐予測テーブルを一体に形成
して、分岐先アドレスもキャッシュメモリに格納してフ
ェッチ時に特定できるような単一メモリデバイスとして
もよい。分岐の予測も単純に前回分岐したというだけで
なく、分岐の頻度などを考慮して決定してもよい。ま
た、分岐テーブルは、必ずしも登録を抹消する手段を持
たなくても良いし、フェッチ時のミスかどうか怪しい際
に登録を抑止するのではなく登録した直後のエントリー
と比較してミスかどうかを確実にしても良い。
【0145】
【発明の効果】以上説明したように、本発明によれば、
1命令ずつ実行するタイプの計算機であっても、より高
速な複数命令を同時実行するタイプの計算機であって
も、より効果の高いフルアソシアティブメモリまたはマ
ルチウェイアソシアティブメモリを使った分岐予測を行
うことが可能となり、少ない量のハードウエアで処理速
度の高速化を達成することができるという著しく飛躍的
且つ画期的な効果が得られる。
【図面の簡単な説明】
【図1】本発明に係る分岐予測装置の第1の実施例を示
すブロック図である。
【図2】命令をフェッチすむ際の、図1の分岐予測装置
の処理のフローチャートである。
【図3】命令を実行する際の、図1の分岐予測装置の処
理のフローチャートである。
【図4】図3のフローチャートの続図である。
【図5】本発明に係る分岐予測装置の第2の実施例を示
すブロック図である。
【図6】図5の分岐予測装置のエントリーアドレス生成
ユニットの処理のフローチャートである。
【図7】図5の分岐予測装置における処理を説明するた
めのプロセスフローの図である。
【図8】本発明に係る分岐予測装置の第3の実施例を示
すブロック図である。
【図9】本発明に係る分岐予測装置の第4の実施例を示
すブロック図である。
【図10】本発明の分岐予測装置の具体的回路構成にお
けるBTB回路の第1の分図である。
【図11】本発明の分岐予測装置の具体的回路構成にお
けるBTB回路の第2の分図である。
【図12】本発明の分岐予測装置の具体的回路構成にお
けるBTB回路の第3の分図である。
【図13】本発明の分岐予測装置の具体的回路構成にお
けるBTB回路の第4の分図である。
【図14】本発明の分岐予測装置の具体的回路構成にお
けるBTB回路の第5の分図である。
【図15】本発明の分岐予測装置の具体的回路構成にお
けるBTB回路の第6の分図である。
【図16】図10〜図15に示される分岐予測装置に接
続される制御回路の第1の分図である。
【図17】図10〜図15に示される分岐予測装置に接
続される制御回路の第2の分図である。
【図18】図10〜図15に示される分岐予測装置に接
続される制御回路の第3の分図である。
【図19】図10〜図15に示されるBTB回路と図1
6〜図18に示される制御回路との接続を示す第1の分
図である。
【図20】図10〜図15に示されるBTB回路と図1
6〜図18に示される制御回路との接続を示す第2の分
図である。
【符号の説明】
1 キャッシュメモリ 2 命令バッファ 3 命令無効化ユニット 4 演算器群 5 分岐監視ユニット 6 プログラムカウンタ 7 分岐予測テーブル 8 アドレス増加ユニット 9 セレクタ 10 無効化制御ユニット 11 遅延器 12 遅延器 13 比較器 14 無効化実施ユニット 31 キャッシュメモリ 32 命令バッファ 33 命令無効化ユニット 34 演算器群 35 分岐監視ユニット 36 プログラムカウンタ 37 分岐予測テーブル 37A 分岐予測テーブル 37B 分岐予測テーブル 38 アドレス増加ユニット 39 セレクタ 45 エントリーアドレス生成ユニット 46 テーブル登録制御ユニット 47 有効ビット制御ユニット 48 キャッシュ変更制御ユニット 49 メインメモリ 50 プロセッサ部 60 分岐予測部 70 プロセッサ部 80 分岐予測部

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 1群の複数命令を同時に実行するための
    プロセッサ手段と、 予測される分岐命令を含む命令群を示す分岐元アドレス
    と、該予測分岐命令の分岐先アドレスと、該分岐元アド
    レスによって示される該命令群中の該予測分岐命令の位
    置を示す命令位置と、を含むエントリーを登録するため
    の分岐予測テーブル手段と、 上記プロセッサ手段によって同時に実行される該命令群
    をフェッチするための命令フェッチ手段であって、次の
    処理タイミングにおいては、現在フェッチされている命
    令群についての予測分岐命令であって上記分岐予測テー
    ブルのエントリーに登録されており該現在フェッチ中命
    令群のアドレスと一致する分岐元アドレスを有するよう
    な当該予測分岐命令の分岐先アドレスによって示される
    命令群をフェッチするものと、 上記現在フェッチ中命令群の実際の実行において上記予
    測分岐命令に実際に遭遇した時に、該現在フェッチ中命
    令群についての該予測分岐命令を正しいと判定するため
    の予測判定手段と、 上記予測判定手段が上記予測分岐命令を正しいと判定し
    ない時に、上記次の処理タイミングにおいて上記命令フ
    ェッチ手段によってフェッチされるものであって上記現
    在フェッチ中命令群についての上記予測分岐命令の分岐
    先アドレスによって示されるものである命令群を無効化
    するための予測命令無効化手段と、を備える分岐予測装
    置。
  2. 【請求項2】 命令を実行するためのプロセッサ手段
    と、連想メモリによって形成される分岐予測テーブル手
    段であって、予測される分岐命令を含む同時実行される
    命令を示す分岐元アドレスと、該予測分岐命令の分岐先
    アドレスと、当該分岐予測テーブル手段の該連想メモリ
    における各エントリーの位置を示すエントリーアドレス
    とを含むエントリーを登録するものと、 上記プロセッサ手段によって同時に実行される上記命令
    をフェッチするための命令フェッチ手段であって、次の
    処理タイミングにおいては、現在フェッチされている命
    令についての予測分岐命令であって上記分岐予測テーブ
    ルのエントリーに登録されており該現在フェッチ中命令
    のアドレスと一致する分岐元アドレスを有するような当
    該予測分岐命令の分岐先アドレスによって示される命令
    をフェッチするものと、 上記現在フェッチ中命令の実際の実行において上記予測
    分岐命令に実際に遭遇した時に、該現在フェッチ中命令
    についての該予測分岐命令を正しいと判定するための予
    測判定手段と、 上記予測判定手段が上記予測分岐命令を正しいと判定し
    ない時に、上記次の処理タイミングにおいて上記命令フ
    ェッチ手段によってフェッチされているものであって、
    上記現在フェッチ中命令についての上記予測分岐命令の
    分岐先アドレスによって示されるものである命令を無効
    化するための予測命令無効化手段と、 上記予測判定手段が上記予測分岐命令を正しいと判定し
    ない時に、上記分岐予測テーブル手段における上記現在
    フェッチ中命令についての上記予測分岐命令を登録して
    いるエントリーを、上記現在フェッチ中命令についての
    上記予測分岐命令を登録しているエントリーのエントリ
    ーアドレスを用いて書き換えるためのテーブル登録手段
    と、を備える分岐予測装置。
  3. 【請求項3】 予測される分岐命令を含む命令群を示す
    分岐元アドレスと、該予測分岐命令の分岐先アドレス
    と、該分岐元アドレスによって示される該命令群中の該
    予測分岐命令の位置を示す命令位置と、を含むエントリ
    ーを登録するための分岐予測テーブルを設ける工程と;
    次の処理タイミングにおいて、現在フェッチされている
    命令群のアドレスと一致する分岐元アドレスを有する分
    岐予測テーブル中のエントリーに登録されている現在フ
    ェッチ中命令群についての分岐予測命令の分岐先アドレ
    スによって示されプロセッサによって同時に実行される
    該命令群をフェッチする工程と;上記フェッチ工程でフ
    ェッチされた命令群を同時にプロセッサによって実際に
    実行する工程と;上記実行工程で上記現在フェッチ中命
    令群の実際の実行において上記予測分岐命令に実際に遭
    遇した時に、該現在フェッチ中命令群についての該予測
    分岐命令を正しいと判定する工程と;上記判定工程にお
    いて上記予測分岐命令を正しいと判定しない時に、上記
    次の処理タイミングにおいて上記フェッチ工程でフェッ
    チされるものであって上記現在フェッチ中命令群につい
    ての上記予測分岐命令の分岐先アドレスによって示され
    るものである命令群を無効化する工程と;を含むことを
    特徴とする、命令群を同時実行可能なプロセッサ用の分
    岐予測方法。
  4. 【請求項4】 連想メモリによって形成され予測される
    分岐命令を含んだ同時実行されるべき命令を示す分岐元
    アドレスと、該予測分岐命令の分岐先アドレスと、当該
    分岐予測テーブルの該連想メモリにおける各エントリー
    の位置を示すエントリーアドレスとを含むエントリーを
    登録するための分岐予測テーブルを設ける工程と;次の
    処理タイミングにおいて、現在フェッチされている命令
    のアドレスと一致する分岐元アドレスを有する分岐予測
    テーブル中のエントリーに登録されている現在フェッチ
    中命令群についての予測分岐命令の分岐先アドレスによ
    って示されプロセッサによって同時に実行される該命令
    をフェッチする工程と;上記フェッチ工程でフェッチさ
    れた命令を同時にプロセッサによって実際に実行する工
    程と;上記実行工程で上記現在フェッチ中命令の実際の
    実行において上記予測分岐命令に実際に遭遇した時に、
    該現在フェッチ中命令についての該予測分岐命令を正し
    いと判定する工程と;上記判定工程において上記予測分
    岐命令を正しいと判定しない時に、上記次の処理タイミ
    ングにおいて上記フェッチ工程でフェッチされているも
    のであって上記現在フェッチ中命令についての上記予測
    分岐命令の分岐先アドレスによって示されるものである
    命令を無効化する工程と;上記判定工程で上記予測分岐
    命令を正しいと判定しない時に、上記現在フェッチ中命
    令についての上記予測分岐命令を登録しているエントリ
    ーのエントリーアドレスを用いて、上記分岐予測テーブ
    ル中の現在フェッチ中命令についての上記予測分岐命令
    を登録しているエントリーを書き換える工程と;を含む
    ことを特徴とする分岐予測方法。
JP04082482A 1991-04-05 1992-04-03 分岐予測装置 Expired - Fee Related JP3108512B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP04082482A JP3108512B2 (ja) 1991-04-05 1992-04-03 分岐予測装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP3-73329 1991-04-05
JP7332991 1991-04-05
JP04082482A JP3108512B2 (ja) 1991-04-05 1992-04-03 分岐予測装置

Publications (2)

Publication Number Publication Date
JPH05158689A true JPH05158689A (ja) 1993-06-25
JP3108512B2 JP3108512B2 (ja) 2000-11-13

Family

ID=26414482

Family Applications (1)

Application Number Title Priority Date Filing Date
JP04082482A Expired - Fee Related JP3108512B2 (ja) 1991-04-05 1992-04-03 分岐予測装置

Country Status (1)

Country Link
JP (1) JP3108512B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835754A (en) * 1996-11-01 1998-11-10 Mitsubishi Denki Kabushiki Kaisha Branch prediction system for superscalar processor
WO2006006613A1 (en) * 2004-07-08 2006-01-19 Sony Computer Entertainment Inc. Methods and apparatus for updating of a branch history table

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835754A (en) * 1996-11-01 1998-11-10 Mitsubishi Denki Kabushiki Kaisha Branch prediction system for superscalar processor
WO2006006613A1 (en) * 2004-07-08 2006-01-19 Sony Computer Entertainment Inc. Methods and apparatus for updating of a branch history table
US7500088B2 (en) 2004-07-08 2009-03-03 Sony Computer Entertainment Inc. Methods and apparatus for updating of a branch history table

Also Published As

Publication number Publication date
JP3108512B2 (ja) 2000-11-13

Similar Documents

Publication Publication Date Title
US5414822A (en) Method and apparatus for branch prediction using branch prediction table with improved branch prediction effectiveness
KR100411529B1 (ko) 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치
EP0689131B1 (en) A computer system for executing branch instructions
US5377336A (en) Improved method to prefetch load instruction data
US4858104A (en) Preceding instruction address based branch prediction in a pipelined processor
US5461722A (en) Parallel processing apparatus suitable for executing in parallel a plurality of instructions including at least two branch instructions
US20040193858A1 (en) Zero-overhead loop operation in microprocessor having instruction buffer
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
EP0125855B1 (en) Buffer-storage control system
JPH06324865A (ja) マルチ予測型分岐予測機構
JPH08234980A (ja) 分岐先バッファを用いた分岐予測システム
CN108885549B (zh) 分支指令
US5247691A (en) System for releasing suspended execution of scalar instructions following a wait instruction immediately upon change of vector post pending signal
EP0394624A2 (en) Multiple sequence processor system
JP2001243069A (ja) 分岐予測装置及び分岐予測方法
US20210303303A1 (en) Speculative execution following a state transition instruction
US5418917A (en) Method and apparatus for controlling conditional branch instructions for a pipeline type data processing apparatus
JP3486690B2 (ja) パイプライン方式プロセッサ
US6701425B1 (en) Memory access address comparison of load and store queques
US6108776A (en) Globally or selectively disabling branch history table operations during sensitive portion of millicode routine in millimode supporting computer
KR100317240B1 (ko) 분기 예측 정확도 히스토리를 이용한 분기 예측기
US20040225866A1 (en) Branch prediction in a data processing system
JP2000099325A (ja) ブランチ・ヒストリ・テ―ブル・ディセ―ブルを有するミリモ―ド・システム
JPH05158689A (ja) 分岐予測装置
EP0770955B1 (en) Cache memory

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070908

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080908

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080908

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090908

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090908

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100908

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110908

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees