JP3108512B2 - 分岐予測装置 - Google Patents

分岐予測装置

Info

Publication number
JP3108512B2
JP3108512B2 JP04082482A JP8248292A JP3108512B2 JP 3108512 B2 JP3108512 B2 JP 3108512B2 JP 04082482 A JP04082482 A JP 04082482A JP 8248292 A JP8248292 A JP 8248292A JP 3108512 B2 JP3108512 B2 JP 3108512B2
Authority
JP
Japan
Prior art keywords
instruction
branch
instructions
fetched
entry
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
JP04082482A
Other languages
English (en)
Other versions
JPH05158689A (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.)
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)

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 分岐予測部
フロントページの続き (56)参考文献 特開 平4−205625(JP,A) 特開 昭61−109147(JP,A) 原哲也、外3名、“SIMP(単一命 令流/多重命令パイプライン)方式に基 づくスーパースカラ・プロセッサ『新 風』の命令供給機構”、情報処理学会研 究報告、社団法人情報処理学会、1990年 1月26日、Vol.90,No.7(90− ARC−80)、P49−56 (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (13)

    (57)【特許請求の範囲】
  1. 【請求項1】 複数命令を同時に実行可能なプロセッサ
    手段と、 予測分岐命令を含んだ複数命令の格納位置を示す分岐元
    アドレスと、該予測分岐命令の分岐先の格納位置を示す
    分岐先アドレスと、該分岐元アドレスによって示される
    複数命令内における該予測分岐命令の相対的位置を示す
    命令位置とを書き込む領域を含むエントリーを登録する
    分岐予測テーブルと、所定の 処理タイミングにおいてフェッチ中の複数命令に
    ついての予測分岐命令であって、前記所定の処理タイミ
    ングにおいてフェッチ中の複数命令の格納位置を示す
    ドレスと一致する分岐元アドレスを有する前記分岐予測
    テーブルのあるエントリーに登録されている予測分岐命
    令の、分岐先アドレスによって示される複数命令を、
    記所定のタイミングの次の処理タイミングにおいてフェ
    ッチすることによって、前記プロセッサ手段によって同
    時に実行される複数命令をフェッチする命令フェッチ手
    段と、 前記所定の処理タイミングにおいてフェッチ中の複数命
    令の実際の実行において前記予測分岐命令に実際に遭遇
    した時に、前記所定の処理タイミングにおいてフェッチ
    中の複数命令についての前記予測分岐命令を正しいと判
    定する予測判定手段と、前記所定の処理タイミングにおいてフェッチ中の複数命
    令の実際の実行において前記予測分岐命令に実際に遭遇
    せず 前記予測判定手段が前記予測分岐命令を正しいと判
    定しない時に、前記次の処理タイミングにおいて前記命
    令フェッチ手段によってフェッチされる複数命令を無効
    化する予測命令無効化手段とを有することを特徴とする
    分岐予測装置。
  2. 【請求項2】 前記予測判定手段は、前記所定の処理タ
    イミングにおいてフェッチ中の複数命令の格納位置を示
    アドレスと一致する分岐元アドレスを有する前記分岐
    予測テーブルのエントリーに登録された命令位置を、前
    所定の処理タイミングにおいてフェッチ中の複数命令
    の実際の実行において遭遇する実際の分岐命令の実際の
    命令位置と比較する比較器を有することを特徴とする請
    求項1記載の分岐予測装置。
  3. 【請求項3】 前記分岐予測テーブルのエントリーを書
    き換えるためのテーブル登録手段であって、前記所定の
    処理タイミングにおいてフェッチ中の複数命令の実際の
    実行において遭遇する実際の分岐命令の実際の命令位置
    が前記所定の処理タイミングにおいてフェッチ中の複数
    命令についての予測分岐命令の命令位置と異なり、該実
    際の分岐命令が実際には実行されない時には、前記所定
    処理タイミングにおいてフェッチ中の複数命令の実際
    の実行において該実際の分岐命令より後に他の分岐命令
    に遭遇しない限り、前記所定の処理タイミングにおいて
    フェッチ中の複数命令の全ての実行が終了するまで、前
    記分岐予測テーブルのエントリーを書き換えないように
    制御されたテーブル登録手段を更に有することを特徴と
    する請求項1記載の分岐予測装置。
  4. 【請求項4】 前記命令フェッチ手段により前記所定の
    処理タイミングにおいてフェッチ中の複数命令の前記プ
    ロセッサ手段による実際の実行前に、前記所定の処理タ
    イミングにおいてフェッチ中の複数命令の内、前記分岐
    予測テーブルに基づく、前記所定の処理タイミングにお
    いてフェッチ中の複数命令についての予測分岐命令の命
    令位置より後に位置する命令を無効化する現命令無効化
    手段を更に有することを特徴とする請求項1記載の分岐
    予測装置。
  5. 【請求項5】 前記所定の処理タイミングにおいてフェ
    ッチ中の複数命令の実際の実行において遭遇する全ての
    分岐命令が実際には実行されない場合、及び、前記所定
    処理タイミングにおいてフェッチ中の複数命令の実行
    において分岐命令に全く遭遇しない場合を検出して前記
    命令フェッチ手段に通知する検出手段を更に有し、前記
    命令フェッチ手段は、該検出手段からの通知を受けると
    前記次の処理タイミングにおいて、前記現命令無効化手
    段によって無効化される命令をフェッチすることを特徴
    とする請求項4記載の分岐予測装置。
  6. 【請求項6】 前記命令フェッチ手段によってフェッチ
    される複数命令が、前記所定の処理タイミングにおいて
    フェッチ中の複数命令についての予測分岐命令の命令位
    置より後に位置していても前記現命令無効化手段によっ
    て無効化できない遅延命令を含み、該遅延命令が実際に
    は分岐命令である事を検出して前記命令フェッチ手段に
    通知する検出手段を更に有し、前記命令フェッチ手段
    は、該検出手段からの通知を受けると前記次の処理タイ
    ミングにおいて、実際には分岐命令である該遅延命令
    と、前記所定の処理タイミングにおいてフェッチ中の複
    数命令の内で実際には分岐命令である該遅延命令より後
    に位置する全ての命令とをフェッチすることを特徴とす
    る請求項4記載の分岐予測装置。
  7. 【請求項7】 前記所定の処理タイミングにおいてフェ
    ッチ中の複数命令のアドレスが他のアドレスから生じ、
    前記分岐予測テーブルの前記あるエントリーに登録され
    ている前記所定の処理タイミングにおいてフェッチ中の
    複数命令についての予測分岐命令が前記所定の処理タイ
    ミングにおいてフェッチ中の複数命令のアドレスと一致
    する分岐元アドレスを有し、前記所定の処理タイミング
    においてフェッチ中の複数命令のアドレスと一致する分
    岐元アドレスに対応する登録命令位置が、前記所定の
    理タイミングにおいてフェッチ中の複数命令のアドレス
    の生成元である該他のアドレスの命令位置より前にある
    場合を検出して前記命令フェッチ手段に通知する検出手
    段を更に有し、前記命令フェッチ手段は、該検出手段か
    らの通知を受けると複数命令を命令のアドレスに従って
    順次フェッチすることを特徴とする請求項1記載の分岐
    予測装置。
  8. 【請求項8】 複数命令を同時に実行可能なプロセッサ
    のための分岐予測方法であって、 予測分岐命令を含んだ複数命令の格納位置を示す分岐元
    アドレスと、該予測分岐命令の分岐先の格納位置を示す
    分岐先アドレスと、該分岐元アドレスによって示される
    複数命令内における該予測分岐命令の相対的位置を示す
    命令位置とを書き込む領域を含むエントリーを登録する
    分岐予測テーブルを設けるステップと、所定の 処理タイミングにおいてフェッチ中の複数命令に
    ついての予測分岐命令であって、前記所定の処理タイミ
    ングにおいてフェッチ中の複数命令の格納位置を示す
    ドレスと一致する分岐元アドレスを有する前記分岐予測
    テーブルのあるエントリーに登録されている予測分岐命
    令の、分岐先アドレスによって示され、前記プロセッサ
    によって同時に実行される複数命令を、前記所定の処理
    タイミングの次の処理タイミングにおいてフェッチする
    ステップと、 フェッチされた複数命令を同時に前記プロセッサによっ
    て実際に実行するステップと、 前記所定の処理タイミングにおいてフェッチ中の複数命
    令の実際の実行において前記予測分岐命令に実際に遭遇
    した時に、前記所定の処理タイミングにおいてフェッチ
    中の複数命令についての前記予測分岐命令を正しいと判
    定するステップと、前記所定の処理タイミングにおいてフェッチ中の複数命
    令の実際の実行において前記予測分岐命令に実際に遭遇
    せず 前記予測分岐命令が正しいと判定されない時に、
    次の処理タイミングにおいてフェッチされる複数命令
    を無効化するステップと、 を有することを特徴とする分岐予測方法。
  9. 【請求項9】 命令を実行するためのプロセッサ手段
    と、 連想メモリによって形成される分岐予測テーブルであっ
    て、予測分岐命令を含んだ同時に実行される命令の格納
    位置を示す分岐元アドレスと、該分岐予測テーブルの連
    想メモリにおける各エントリーの位置を示すエントリー
    アドレスとを書き込む領域を含むエントリーを登録する
    分岐予測テーブルと、所定の 処理タイミングにおいてフェッチ中の命令につい
    ての予測分岐命令であって、前記所定の処理タイミング
    においてフェッチ中の命令の格納位置を示すアドレスと
    一致する分岐元アドレスを有する前記分岐予測テーブル
    のあるエントリーに登録されている予測分岐命令の、分
    岐先アドレスによって示される命令を、前記所定の処理
    タイミングの次の処理タイミングにおいてフェッチする
    ことによって、前記プロセッサ手段によって同時に実行
    される命令をフェッチする命令フェッチ手段と、 前記所定の処理タイミングにおいてフェッチ中の命令の
    実際の実行において前記予測分岐命令に実際に遭遇した
    時に、前記所定の処理タイミングにおいてフェッチ中の
    命令についての前記予測分岐命令を正しいと判定する予
    測判定手段と、前記所定の処理タイミングにおいてフェッチ中の命令の
    実際の実行において前記予測分岐命令に実際に遭遇せず
    前記予測判定手段が前記予測分岐命令を正しいと判定し
    ない時に、前記次の処理タイミングにおいて前記命令フ
    ェッチ手段によってフェッチされる命令を無効化する予
    測命令無効化手段と、前記所定の処理タイミングにおいてフェッチ中の命令の
    実際の実行において前記予測分岐命令に実際に遭遇せず
    前記予測判定手段が前記予測分岐命令を正しいと判定し
    ない時に、前記所定の処理タイミングにおいてフェッチ
    中の命令についての前記予測分岐命令を登録するエント
    リーのエントリーアドレスを用いて、前記分岐予測テー
    ブルにおいて前記所定の処理タイミングにおいてフェッ
    チ中の命令についての前記予測分岐命令を登録している
    エントリーを書き換えるテーブル登録手段と、 を有することを特徴とする分岐予測装置。
  10. 【請求項10】 前記所定の処理タイミングにおいてフ
    ェッチ中の命令の実際の実行において遭遇する実際の分
    岐予測が前記分岐予測テーブルに登録されていない時に
    は、前記テーブル登録手段はさらに、前記所定の処理タ
    イミングにおいてフェッチ中の命令についての実際の分
    岐命令を新たなエントリーとして前記分岐予測テーブル
    に登録し、該新たなエントリーは、前記分岐予測テーブ
    ルにおいて現在用いられていない新たなエントリーアド
    レスを用いて、または、前記分岐予測テーブルの各エン
    トリーの中に該エントリーが有効であるか無効であるか
    を示す値を書き込む領域であるバリッドビットを含む場
    合にはバリッドビットが無効であることを示しているエ
    ントリーに上書きすることによって、登録されることを
    特徴とする請求項9記載の分岐予測装置。
  11. 【請求項11】 前記テーブル登録手段による前記分岐
    予測テーブルのエントリーの書換えを監視し、前記所定
    処理タイミングにおいてフェッチ中の命令についての
    予測分岐命令を登録するエントリーの書換えが前記テー
    ブル登録手段によって実行されるまで、前記所定の処理
    タイミングにおいてフェッチ中の命令についての予測分
    岐命令を登録するエントリーのエントリーアドレスを保
    持して、前記所定の処理タイミングにおいてフェッチ中
    の命令についての予測分岐命令を登録するエントリーの
    エントリーアドレスを前記テーブル登録手段に供給する
    手段を、更に有することを特徴とする請求項9記載の分
    岐予測装置。
  12. 【請求項12】 前記プロセッサ手段は複数命令を同時
    に実行し、前記命令フェッチ手段は、複数命令を各処理
    タイミングでフェッチし、前記分岐予測テーブルにおけ
    る各エントリーは更に、分岐元アドレスによって示され
    る複数命令における予測分岐命令の相対的位置を示す
    命令位置を書き込む領域を含むことを特徴とする請求項
    9記載の分岐予測装置。
  13. 【請求項13】 連想メモリによって形成される分岐予
    測テーブルであって、予測分岐命令を含んだ同時に実行
    される命令の格納位置を示す分岐元アドレスと、該分岐
    予測テーブルの連想メモリにおける各エントリーの位置
    を示すエントリーアドレスとを書き込む領域を含むエン
    トリーを登録する分岐予測テーブルを設けるステップ
    と、所定の 処理タイミングにおいてフェッチ中の命令につい
    ての予測分岐命令であって、前記所定の処理タイミング
    においてフェッチ中の命令の格納位置を示すアドレスと
    一致する分岐元アドレスを有する前記分岐予測テーブル
    のあるエントリーに登録されている予測分岐命令の、分
    岐先アドレスによって示されている、プロセッサによっ
    て同時に実行される命令を前記所定の処理タイミングの
    次の処理タイミングにおいてフェッチするステップと、 フェッチされた命令を同時に前記プロセッサによって実
    際に実行するステップと、 前記所定の処理タイミングにおいてフェッチ中の命令の
    実際の実行において前記予測分岐命令に実際に遭遇した
    時に、前記所定の処理タイミングにおいてフェッチ中の
    命令についての前記予測分岐命令を正しいと判定するス
    テップと、前記所定の処理タイミングにおいてフェッチ中の命令の
    実際の実行において前記予測分岐命令に実際に遭遇せず
    前記予測分岐命令が正しいと判定されない時に、前記
    の処理タイミングにおいてフェッチされる命令を無効化
    するステップと、前記所定の処理タイミングにおいてフェッチ中の命令の
    実際の実行において前記予測分岐命令に実際に遭遇せず
    前記予測分岐命令が正しいと判定されない時に、前記
    定の処理タイミングにおいてフェッチ中の命令について
    の前記予測分岐命令を登録するエントリーのエントリー
    アドレスを用いて、前記分岐予測テーブルにおいて前記
    所定の処理タイミングにおいてフェッチ中の命令につい
    ての予測分岐命令を登録しているエントリーを書き換え
    るステップと、 を有することを特徴とする分岐予測方法。
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
JP7332991 1991-04-05
JP3-73329 1991-04-05
JP04082482A JP3108512B2 (ja) 1991-04-05 1992-04-03 分岐予測装置

Publications (2)

Publication Number Publication Date
JPH05158689A JPH05158689A (ja) 1993-06-25
JP3108512B2 true 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)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10133874A (ja) * 1996-11-01 1998-05-22 Mitsubishi Electric Corp スーパスカラプロセッサ用分岐予測機構
US7500088B2 (en) 2004-07-08 2009-03-03 Sony Computer Entertainment Inc. Methods and apparatus for updating of a branch history table

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
原哲也、外3名、"SIMP(単一命令流/多重命令パイプライン)方式に基づくスーパースカラ・プロセッサ『新風』の命令供給機構"、情報処理学会研究報告、社団法人情報処理学会、1990年1月26日、Vol.90,No.7(90−ARC−80)、P49−56

Also Published As

Publication number Publication date
JPH05158689A (ja) 1993-06-25

Similar Documents

Publication Publication Date Title
US5414822A (en) Method and apparatus for branch prediction using branch prediction table with improved branch prediction effectiveness
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US5210831A (en) Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations
US7178010B2 (en) Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack
US4763245A (en) Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table
KR100411529B1 (ko) 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치
US7159103B2 (en) Zero-overhead loop operation in microprocessor having instruction buffer
US5530825A (en) Data processor with branch target address cache and method of operation
US5805877A (en) Data processor with branch target address cache and method of operation
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
US9250912B2 (en) Fast index tree for accelerated branch prediction
JPH08234980A (ja) 分岐先バッファを用いた分岐予測システム
JPH0820950B2 (ja) マルチ予測型分岐予測機構
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
US6912650B2 (en) Pre-prefetching target of following branch instruction based on past history
JP3486690B2 (ja) パイプライン方式プロセッサ
US20040225866A1 (en) Branch prediction in a data processing system
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
JP3108512B2 (ja) 分岐予測装置
JP2002278752A (ja) 命令の実行結果予測装置
JP3741945B2 (ja) 命令フェッチ制御装置
US9250909B2 (en) Fast index tree for accelerated branch prediction
EP0912927B1 (en) A load/store unit with multiple pointers for completing store and load-miss instructions
US7343481B2 (en) Branch prediction in a data processing system utilizing a cache of previous static predictions
KR100251992B1 (ko) 분기 예측 장치

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