JPH0427573B2 - - Google Patents

Info

Publication number
JPH0427573B2
JPH0427573B2 JP57222203A JP22220382A JPH0427573B2 JP H0427573 B2 JPH0427573 B2 JP H0427573B2 JP 57222203 A JP57222203 A JP 57222203A JP 22220382 A JP22220382 A JP 22220382A JP H0427573 B2 JPH0427573 B2 JP H0427573B2
Authority
JP
Japan
Prior art keywords
address
instruction
conditional branch
branch instruction
branch
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
Application number
JP57222203A
Other languages
English (en)
Other versions
JPS58125148A (ja
Inventor
Jan Rosuku Jatsuku
Seshajiri Rao Gururaji
Edowaado Satsuchaa Hawaado
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPS58125148A publication Critical patent/JPS58125148A/ja
Publication of JPH0427573B2 publication Critical patent/JPH0427573B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】 本発明の技術分野 本発明はデータ処理の技術分野に属し、具体的
にはブランチ命令の予測に関している。更に具体
的には、本発明は計算システムにおいて条件付き
ブランチ命令の結果に対する予測を、以前に実行
された条件付ブランチ命令の履歴に基づいて正確
に行うとともに履歴のアクセスも極めて簡単に行
えるようにするものである。
背景の技術 大部分のプロセツサにおいて、条件付きブラン
チ命令は実行(E)ユニツトで分解される。かく
て、条件付きブランチ命令のデコーデイングとそ
の実行/分解との間には、数サイクルの遅れが存
在する。これらサイクルの潜在的損失を克服する
試みとして、デコーダは次にどの命令をデコード
すべきかについて予測する。多くのパイプライン
式プロセツサは、命令フイールドに従つてブラン
チ命令がデコードされる時、ブランチ命令の結果
が、その種類に基いて予測される。
既知の計算システムにおいて、命令のプリフエ
ツチについて履歴をとることにより、ブランチの
不利点を減少させようとする試みがなされた。ブ
ランチ履歴テーブル(BHT)は、テーブルにア
クセスするため、プイフエツチされている命令ス
トリームのアドレスを使用する。もし取られたブ
ランチが前にそのアドレスで遭遇されていれば、
テーブルはその事実を表示し、更にその前の実行
におけるブランチの目標アドレスを与える。ブラ
ンチはその過去の行動を繰返す可能性が高いから
上記の目標アドレスは命令のプリフエツチを再び
実行させるために使用される。このような解決法
の利点は、それがブランチに関連した全ての遅延
を除去する可能性を有することである。しかし、
ブランチの不正確な予測に起因する遅延や、ブラ
ンチ目標のためにキヤツシユ・アクセス時間に起
因する遅延が存在する。BHTのサイズは、予測
の正確性が80%のオーダーに達するほど大きいこ
とを必要とする。テーブルは、そのような正確度
を達成するため(特に営利的環境においては)、
多数のエントリイを含まなければならない。更
に、そのようなエントリイの幅は大きい。何故な
らば、それは命令アドレス(テーブルにアクセス
するために使用される)と比較するための一致フ
イールドと、目標アドレスの全体を含むからであ
る。
先行技術において、いくつかの命令プリフエツ
チ機構が知られている。それらの各々は利点及び
欠点を有する。Sussenguthによる米国特許
3559183はBHTを使用した命令プリフエツチ機構
を開示している。この特許によれば、命令ストリ
ーム中で特定の命令が生じたことを認識し、その
命令ストリームを変更する装置が設けられる。ま
た、メイン・メモリからの命令を受取るフエツ
チ・レジスタが設けらえる。更に、特定の命令の
アドレス、及びフエツチされるべき次の命令のア
ドレスを含むプリフエツチ・シーケンス制御レジ
スタが設けられる。フエツチ・レジスタにある命
令アドレスと、プリフエツチ・シーケンス制御レ
ジスタにある命令アドレスは、連続的に比較され
る。これらの命令アドレスが一致すると、プリフ
エツチ・シーケンス制御レジスタから第2のアド
レスがフエツチ・レジスタへ転送され、メモリか
ら命令が引出される。プリフエツチ・シーケンス
制御レジスタにあるアドレスと、他の関連レジス
タにあるアドレスが一致すると、上記の動作を禁
止して、関連レジスタからフエツチ・レジスタへ
アドレスを与える手段が設けられている。
Hughesその他による米国特許4200927は、命令フ
イールドに基いて追加的ブランチ命令の結果を予
測するマルチ命令ストリーム・ブランチ処理機構
を開示している。
Horikoshiその他による米国特許3940741は、
ブランチ命令を含む複数の命令を処理するための
情報処理装置を開示している。複数のブランチ命
令及びブランチ目標命令のブランチ目標アドレス
を、ブランチ目標アドレスと対応した関係で記憶
するルート・メモリが設けられ、このルート・メ
モリは、所与の命令の中にあるアドレスによつて
参照される。それによつて、対応するブランチ目
標アドレスにあるブランチ目標命令が読出され
る。即ち、Horikoshiその他による特許は、予測
目的のために、ブランチ命令の目標のアドレスを
利用する。複数の異つたブランチ命令が同一のブ
ランチ目標アドレスを有してよいから、所与のブ
ランチ命令の結果の予測は、異つたブランチ命令
の結果に基いてなされてよいことがわかる。
本発明に従えば、ブランチ命令の命令フイール
ドではなく、その前の実行に基いて条件付きブラ
ンチ命令の結果を予測する装置が実現される。即
ち、予測はブランチ命令それ自体のアドレスに基
いて行われ、ブランチ命令の目標のアドレスに基
いて行われるのではない。条件付きブランチ命令
の結果の予測は、所与のメモリ・ロケーシヨンに
ブランチの結果の履歴を記録しているテーブルを
使用して実行される。ブランチ履歴テーブル
(BHT)ではなく、デコード時間履歴テーブル
(DHT)が使用される。DHTは条件付きブラン
チ命令の結果のみを予測し、その目標アドレスを
予測しない。かくて、それは、目標アドレスが利
用可能である時、デコード時間におけるブランチ
結果を予測するために使用させることができるだ
けである。条件付きブランチ命令のデコーデイン
グの間、テーブルはそのメモリ・アドレス又はブ
ランチ命令それ自体の或る部分を使用してアクセ
スされる。テーブルは、ブランチの結果の履歴を
テーブル・サイズの大きさに至るまでのメモリ・
ロケーシヨンに記録する。組合せ回路は、テーブ
ルによつて与えられたブランチ履歴から予測を決
定する。このメカニズムの簡単なものは、それぞ
れのブランチ・ロケーシヨンの最後の結果のみを
記憶することである。この場合、テーブルからの
出力は、そのまま予測として使用される。もしテ
ーブルによつて、ブランチが最後にとられたこと
又は失敗したことが示されると、予測はそれぞれ
ブランチが成功したか又は成功しなかつたかを推
量することである。テーブルは、ブランチ命令の
最後の実行時における結果を常に反映するため、
更新される。テーブルは、省略予測を与えるため
初期設定される。BHTと対比して、DHTは命令
のデコードサイクルの間にアクセスされ(第1図
のステージ)、ブランチ結果のみ(目標アドレ
スではなく)を予測する。ブランチ予測の正確性
を増すことのみが意図されており、プリフエツチ
のための目標アドレスを与えることは意図されて
いない。
本発明の要約 所与の条件付きブランチ命令の結果を予測する
装置を含む計算システムが実現される。各条件付
きブランチ命令がデコードされ、命令のデコー
ド・サイクルの間、ブランチ命令それ自体のメモ
リ・アドレスの1部分(アクセス用部分)を使用
して、デコード時間履歴テーブルがアクセスされ
る。デコード時間履歴テーブルは、そのメモリ・
ロケーシヨンに、各条件付きブランチ命令の結果
の履歴を記録する。デコード時間履歴テーブル
は、各条件付きブランチ命令の前の実行時におけ
る結果を反映するために更新される。所与の条件
付きブランチ命令の結果は、デコード時間履歴テ
ーブルに記録されるように、デコード・サイクル
の間にアクセスされた時、ブランチ命令がその前
に実行段階でとられたかとられなかつたかに基い
て予測される。
とくに本発明ではデコード時間履歴テーブルに
条件付きブランチ命令の以前の結果のみでなく、
そのブランチ命令の1部分(上述アクスセ用部分
以外の部分を少なくとも有するもの;照合用部
分)をも記憶するようにしている。ブランチ命令
のアクセス用部分を用いてデコート時間履歴テー
ブルをアクセスするので、テーブルのコケーシヨ
ン数を膨大にする必要がなく、しかも照合用部分
でデコード中の条件付ブランチ命令の照合を行う
ので誤つて他の条件付ブランチ命令の履歴を用い
ることない。
さらに本発明では条件付きブランチ命令がデコ
ードされたのち実行されるまでの間その条件付き
ブランチ命令のアドレスを保持するアドレス待行
列と、同様の期間、その条件付きブランチ命令に
関連する、結果の履歴を表示するビツトを保持す
る結果表示ビツト待行列とを設けている。このよ
うな構成により、条件付きブランチ命令の実行後
判明する予測の成功、不成功をデコード時間履歴
テーブルに簡易に反映させることができる。
実施例の説明 本発明に従うDHTと米国特許3559183に説明さ
れるようなBHTの概念的差異を簡単に説明する。
2つのテーブル間の最も重要な区別だけを示す。
第1図に示されるように、中能率中央処理ユニツ
ト(CPU)における主たる命令処理ステツプは、
命令のプリフエツチ(ステージ)、命令のデコ
ード及びオペランド・アドレスの発生(ステージ
)、オペランドのプリフエツチ(ステージ)、
命令の実行(ステージ)、結果の記憶(ステー
ジ)である。BHTを介してブランチ履歴を使
用するCPUは、プリフエツチされようとしてい
る命令ダブル・ワード中に前に実行されかつブラ
ンチを生じたブランチ命令があるかどうかを検出
する。これは命令プリフエツチ・アドレス(プリ
フエツチされつつある命令ダブル・ワードのアド
レス)でBHTをアクセスすることによつてなさ
れる。テーブル・エントリイは2つの部分を有す
る。即ち、命令ダブル・ワード・アドレスと、ダ
ブル・ワードが前に使用された場合に、そのダブ
ル・ワードにおいて取られたブランチの目標に対
するダブル・ワード・アドレスである(第2図参
照)。もしプリフエツチされつつある命令ダブ
ル・ワードのアドレスがテーブル中に存在すれ
ば、テーブルは、テーブル中の関連した目標アド
レスを、命令プリフエツチ・ユニツトへ与える。
このアドレスは、ブランチ命令が前に実行された
時と同じように動作する(ブランチがとられる
か、とられないか)という仮定の下で、次の命令
ダブル・ワードをプリフエツチするために使用さ
れる。即ち、BHTは、ブランチがステージで
検出(デコード)される前に、ステージで目標
アドレス及びブランチ(条件付き及び無条件の)
の結果を予測する。これに対して、DHTの内容
は異つている。それは、ブランチがステージで
検出(デコード)された後、条件付きブランチの
結果だけを予測する。これについては、第3図乃
至第5図を参照して、詳細に説明する。
ここで、本発明に従うDHTのブロツク図であ
る第3図を参照する。命令アドレス・レジスタ2
は、現在デコードされつつある条件付きブランチ
命令を含む。このレジスタはプログラム・メモリ
(図示せず)から初期設定され、続いてデコード
されつつある命令のアドレスを示すために更新さ
れる。例えば、アドレスは3バイトの幅であり、
第1及び第2のバイト(マツチ・フイールド)は
アドレス待ち行列4の左方部分へ与えられ、バイ
ト3(DHT読出アドレス)は、待ち行列4の右
方部分へ与えられかつ読出アドレスとして履歴テ
ーブル6へ与えられる。アドレス待ち行列4及び
履歴テーブル6は、任意の標準的記憶装置(例え
ばレジスタ)であつてもよい。例えば、テーブル
6は266個のエントリイを有するテーブルである
とする。アドレス待ち行列4は十分のステージを
有し、待ち行列の最下部にあるアドレスは、現在
実行されつつあるブランチ・アドレスに対応す
る。書込アドレス信号はテーブル6への線8上に
与えられ、マツチ(MATCH)フイールド信号
は、現在実行されつつある条件付きブランチ命令
を更新するため、線10を介してテーブル6へ与
えられる。
テーブル6はマツチ・フイールド部分と履歴ビ
ツト部分とを含む。線11上のマツチ・フイール
ドの出力は、比較回路12の第1入力へ与えられ
る。マツチ・フイールド(命令アドレス・レジス
タのバイト1および2)は、線14を介して比較
回路12の第2入力へ与えられる。テーブル6か
らの履歴ビツトは、線16を介して組合せ回路1
8及び履歴待ち行列20へ与えられる。待ち行列
20は、レジスタの如き任意の記憶形の装置であ
つてよい。履歴待ち行列の出力は線22を介して
訂正回路24の等1入力へ与えられる。訂正回路
24は、線26を介して実行ユニツト(図示せ
ず)からブランチ予測エラー信号を与えられる。
不一致信号及び一致信号は、比較回路12から
線28及び30を介して、それぞれANDゲート
32及び34へ与えられる。ANDゲート32は、
命令デコード・ユニツト(図示せず)から線36
を介してその第2入力へ省略ブランチ予測信号を
与えられる。ANDゲート32の第3入力、及び
ANDゲート34の第2入力へは、命令デコー
ド・ユニツト(図示せず)からの条件付きブラン
チ・デコード信号が、ゲート信号として与えられ
る。ANDゲート34への第3入力は、線40を
介して組合せ回路18の出力から来る。ANDゲ
ート32及び34からの信号出力は、それぞれ線
42及び44を介してORゲート46の第1及び
第2入力へ与えられる。ORゲート46の出力
は、線48を介して命令フエツチ・ユニツト(図
示せず)へブランチ結果予測信号として与えられ
る。それは、デコードされつつある条件付きブラ
ンチ命令の結果を予測するためである。
アドレス待ち行列4及び履歴待ち行列20は、
先入れ先出し待ち行列であり、命令ユニツトによ
つて成功裡にデコードされたが実行を完了してい
ない条件付きブランチ命令に関連した情報を含
む。情報はこれらの待ち行列の一端か入り、低い
ポジシヨンにある情報と重なることなく、各サイ
クルで1ポジシヨンだけ下方へシフトする。待ち
行列の最下部にある情報は、関連した条件付きブ
ランチが分解される時(典型的にはEユニツトに
おいて)除去される。これら持ち行列の中にある
ポジシヨンの数は、Iユニツトが成功裡にデコー
ドする事のできる未決定の(分解されていない)
条件付ブランチ命令の数である。前述したよう
に、待ち行列はレジスタの如き任意の記憶装置か
ら構成されてよい。
テーブル6のエントリイは2つの部分を有す
る。履歴ビツト部分は、条件付きブランチ命令の
履歴を記録する。上記ブランチ命令の命令アドレ
スはそのエントリイヘマツプされる。マツチ・フ
イールド部分は、エントリイがテーブルで作られ
た時、マツピングで使用されない命令アドレス・
ビツトを含む。テーブルのマツチ・フイールドに
は、或るビツトのみを保存することが可能であ
り、またビツトを保存しないことも可能である。
エントリイ・アドレスがテーブルへ与えられ、か
つ読出アクセスがなされる時、エントリイ中のマ
ツチ・フイールド及び履歴ビツトが読出される。
マツチ・フイールド及び履歴ビツトの数は任意で
あり、装置の動作の影響を及ぼさない。保存しか
つ使用する最も単純な履歴ビツトは1ビツトを含
み、その2進の1はブランチがとられたことを示
し、2進の0はブランチがとられなかつたことを
示す。図示された実施例では、便宜上、テーブル
は1サイクルで2度アクセスされるものと仮定す
る。最初の半サイクルは予測のための読出アクセ
スに使用され、次の半サイクルは訂正のための書
込アクセスに使用される。
以下の説明において、全ての条件付きブランチ
はDHTを使用するものと仮定する。もし予測さ
れる条件付きブランチのサブセツトのみがDHT
を使用するならば、DHTを使用する条件付きブ
ランチは、命令ユニツトによつてマークされる必
要があり、それによつて、もしDHTを使用しな
いブランチが誤つて予測されるならば、DHTは
訂正されない。マツチ・フイールドはゼロ・ビツ
トの幅でよい。
これから説明する全ての動作は、各サイクル
(特に、条件付きブランチ命令がデコードされる
サイクル)で起る。もし命令がデコードするのに
1サイクルよりも多いサイクルを取れば、これら
の動作は各サイクルで反復される。命令アドレス
の低順位のビツトは、テーブル6におけるエント
リイ・アドレスを与えるために使用される。命令
アドレスをテーブル中のエントリイ・アドレスへ
マツプするため、複雑なマツピング・アルゴリズ
ムを使用することが可能である。読出アクセスは
テーブルのエントリイ・アドレスへなされ、その
エントリイ・アドレスにある履歴ビツト及びマツ
チ・フイールドが読出される。エントリイ・アド
レスを形成するために使用されなかつた命令アド
レス・ビツトは、マツチ・フイールドのビツトと
比較される。もしそれらが一致すれば、履歴ビツ
トが使用されて、ブランチ結果の予測(ブランチ
予測)が、テーブル6から読出されたばかりの履
歴ビツトを使用して、組合せ回路18によつて決
定される。最も単純な場合(1ビツトの履歴)、
ブランチは、それが前に行つたことを履歴ビツト
が表示するように行うであろうことを予測され
る。もし一致が存在しなければ、後に詳細に説明
するように、省略ブランチ予測の使用は任意であ
る。もし条件付きブランチ命令がこのサイクル中
成功裡にデコードされるならば、ブランチの結果
を予測するため、ブランチ予測が使用される。更
に、履歴待ち行列20の最上部に履歴ビツトがセ
ツトされ、命令アドレス・レジスタ2のバイト
1,2,3にある命令アドレス・ビツトがアドレ
ス待ち行列4の頂部にセツトされる。それは、後
にデコードされたばかりのブランチの履歴を記録
するためテーブル6へ書込むためである。もし条
件付きブランチがデコードされないか、又は命令
が成功裡にデコードされなかつた場合、待ち行列
はセツトされず、ブランチ予測は使用されない。
ブランチ結果の予測は、ブランチのデコード時に
条件付きブランチの結果を予測する他のパイプラ
イン式マシン(例えば米国特許4200927のマシン)
の場合と同じように使用される。
条件付きブランチが分解されようとしている時
(典型的には実行段階において)、アドレス待ち行
列の最低位置はその命令アドレスを含み、履歴待
ち行列の最低位置は、ブランチがデコードされた
時テーブル6から読出された履歴ビツトを含む。
このパラグラフで説明される全ての動作は、条件
付きブランチが分解されるサイクルで起る。分解
されたばかりのブランチの正しい履歴が先ず記録
される。待ち行列4の最下部にある命令アドレス
は、デコード時間における読出アクセスと同じプ
ロセスを使用して、DHT中で書込エントリイ・
アドレスを発生するために使用される。エントリ
イ・アドレス中で使用されないビツトは、テーブ
ル中のこのエントリイに対するマツチ・フイール
ドとなる。待ち行列20の最低部にある履歴ビツ
トは、もし必要ならば訂正回路24によつて訂正
される。訂正された履歴ビツト及びマツチ・フイ
ールドは、テーブル中の書込エントリイ・アドレ
スに書込まれる。もしブランチ予測が誤つていれ
ば、予測エラー・ブランチの通常の処理が実行ユ
ニツト中で起る。更に、待ち行列4及び20がク
リア(リセツト)される。もしブランチ予測が正
しければ、実行ユニツト中で通常のブランチ処理
がとられる外に、待ち行列4及び20が1つのポ
ジシヨンだけ下方へシフトされる。従つて、分解
されたばかりの正しく予測されたブランチに関連
した待ち行列情報は、待ち行列から除去される。
テーブルに対して1サイクルで1回だけのアク
セスが許される場合(読出し又は書込み)、予測
のための読出アクセスよりもテーブルの訂正が優
先順位を与えられる。この場合、条件付きブラン
チのデコーデイング及び訂正サイクルが禁止され
るか、又は、デコーデイングは許されるが、ブラ
ンチはDHTによつて予測されず、また待ち行列
4又は20に入れられない。
ここで履歴テーブルの1つの動作サイクルを考
察する。現在デコードされつつある条件付きブラ
ンチ命令のアドレスは、命令アドレス・レジスタ
2に記憶される。命令アドレスの3つのバイトは
アドレス待ち行列4の最上部へシフトされ、バイ
ト1及び2(マツチ・フイールド)は比較回路1
2の1つの入力へ与えられ、読出エントリイ・ア
ドレスである第3バイトは、アドレス及び関連し
た履歴情報を読出すため、テーブル6のマツチ・
フイールドへ印加される。読出されたアドレス情
報は線11を介して比較回路12の他の入力へ与
えられ、履歴ビツトは線16を介して組合せ回路
18及び履歴待ち行列20の最上部へ与えられ
る。組合せ回路18は、実施の態様に応じたアル
ゴリズムに基いて、線40上にブランチ結果予測
ビツトを形成するため、線16上の履歴ビツトを
組合せる。例として、具体的なアルゴリズムを後
に説明する。もし命令アドレス・レジスタ2から
の2つのバイトが、テーブル6のマツチ・フイー
ルドにある2つのバイトと一致すると(線11に
よつて示される)、比較回路12は2進の1信号
をANDゲート34の最初の入力へ与える。この
時点はデコードされつつあるから、線38上の条
件付きブランチ・デコード信号は2進の1レベル
にあり、ANDゲート34は、組合せ回路18に
よつて線40上に形成されたブランチ結果予測ビ
ツト信号を通す。もし命令が実行された最後の時
点でブランチがとられたならば、線40上の信号
は2進の1であり、もしブランチがとられなかつ
たならば、信号は2進の0である。従つて、OR
ゲート46は、線40上の予測ビツト信号を、命
令フエツチ・ユニツトに対するブランチ結果予測
信号として、出力線48へ与える。もし予測ビツ
ト信号が2進の1レベルにあつたならば、命令ユ
ニツトはブランチ目標命令ストリームをフエツチ
し、もしそれが2進の0レベルにあつたならば、
ブランチ目標命令ストリームはフエツチされな
い。
次にシスセム初期設定時間であつた場合、又は
レジスタ2にある命令アドレスがテーブル6にあ
るアドレスのいずれとも一致しなかつた場合を考
察する。この場合、比較回路12から出る線28
上の不一致信号は2進の1レベルにある。もし条
件付きブランチ命令がデコードされつつあれば、
線38上の条件付きブランチ・デコード信号は、
2進の1レベルにある。もしコンピユータ内の他
のユニツトによつて、省略ブランチ予測信号が線
36上に与えられるならば、この信号は線42を
介してORゲート46へ与えられ、ブランチ結果
予測信号として命令フエツチ・ユニツトへ与えら
れる。もし線36上に省略ブランチ予測信号が存
在しなければ、ANDゲート32から出る線42
上にはゼロ出力が存在し、ブランチ結果予測信号
は2進の0となり、ブランチ目標命令ストリーム
はフエツチされない。これは、そのようなブラン
チ命令で、ブランチがとられなかつたものと推量
することに等しい。
動作の第2半サイクルで、待ち行列を最低部か
ら出る線8の上にある書込エントリイ・アドレス
がテーブル6へ印加される。それは現在実行され
つつあるブランチ命令のマツチ・フイールド(待
ち行列の最下部にある)をゲート・インし、それ
がテーブル6のマツチ・フイールドへ行く線10
上に与えられ、テーブル6の書込エントリイ・ア
ドレスに記憶されるようにするためである。同時
に、この命令アドレスに履歴ビツトは履歴待ち行
列20の最下部から訂正回路24へ読出される。
もし線26上のブランチ予測エラー信号が2進の
1レベルにあれば(これは、実行されつつあるブ
ランチ命令についての誤つた予測を示す)、線2
2上の履歴ビツトは訂正回路24によつて訂正さ
れ、テーブル6の書込エントリイ・アドレスのと
ころにある履歴ビツト部分へ与えられる。訂正回
路24における訂正動作は、組合せ回路18で履
歴ビツトを組合せるために使用されるアルゴリズ
ムに依存し、従つて実施態様によつて異なる。訂
正回路24の具体的な訂正動作は後に説明する。
他方、もしブランチ予測が正しければ(2進の0
レベル)、線22上の履歴ビツトは訂正されず、
そのままテーブル6の履歴ビツト部分へ与えられ
る。
ここで、履歴が1ビツト幅である時の、デコー
ド履歴テーブルの1部を示す第4図を参照する。
第4図では、組合せ回路18は追加的論理回路を
含まず、線16から線40へストレートに接続が
なされ、そのままANDゲート34へ接続される。
前述したように、条件付きブランチ命令がデコー
ドされている時、線38上の条件付きブランチ・
デコード信号は2進の1レベルにあり、線30上
の一致信号は、もし命令アドレス・レジスタ2
(第3図参照)のアドレスがテーブル6のマツ
チ・フイールドと一致すれば、2進の1レベルに
あり、履歴ビツトは線48へ通されて、ブランチ
結果予測信号として命令フエツチ・ユニツトへ与
えられる。
履歴ビツトが1ビツト幅である時、訂正回路2
4は排他的ORゲート50を含む。ブランチ予測
が正しい時、線26は2進の0レベルにあるの
で、線22上の信号は排他的ORゲート50の出
力線52上に再生される。ブランチ予測が、線2
6上の2進の1信号によつて示されるように誤つ
ている時、線22上の信号は反転さる。前述した
ように、線52上のビツトは、実行されたばかり
の条件付きブランチ命令の履歴を更新するために
使用される。
ここで第5図を参照する。第5図は、3ビツト
の履歴を処理するため、それを含むテーブル6、
組合せ回路18、及び訂正回路24を含む。テー
ブル6において、ビツト1は最新の履歴ビツトで
あり、ビツト3は最古の履歴ビツトである。3個
の履歴ビツトは、バス16(第3図参照)を介し
て組合せ回路18及び履歴待ち行列20へ与えら
れる。
履歴は3ビツトより成るので、組合せ回路18
は多数決回路を含む。多数決回路はANDゲート
54,56,58及びORゲート60を含む。多
数決回路は、3個の履歴ビツトのうちの2個が2
進の1レベルにあれば、組合せ回路18は、ブラ
ンチがとられることを予測されるべきであつたこ
とを示す2進の1信号を線40上に与えるように
動作する。他方、2個より少ない履歴ビツトが2
進の1レベルにあれば、組合せ回路18は、ブラ
ンチがとられないことを予測されるべきであるこ
とを示す2進の0信号を線40上に与える。
ANDゲート54はその入力に履歴ビツト1及
び2を受取り、ANDゲート56はその入力に履
歴ビツト2及び3を受取り、ANDゲート58は
その入力に履歴ビツト1及び3を受取る。これら
のANDゲートのいずれかが2つの入力で2進の
1レベルを有すれば、それはORゲート60へ2
進の1出力信号を与える。ORゲート60は2進
の1信号をブランチ結果予測ビツトとしてAND
ゲート34へ通す。ANDゲート34の動作は前
に説明した。
履歴待ち行列は、動作の第2半サイクルで、待
ち行列の最低部から訂正回路24へ3個の履歴ビ
ツトを与える。訂正回路24は、組合せ回路18
にある多数決回路と同じように働く多数決回路6
2を含む。即ち、3個の履歴ビツトの任意の2個
が2進の1レベルにあれば、2進の1レベルの信
号が、多数決回路62の出力に与えられ、それが
排他的ORゲート64の第1入力へ与えられる。
排他的ORゲート64は、その第2入力の線26
上のブランチ予測エラー信号を与えられる。排他
的ORゲート64は、第4図に示される排他的
ORゲート50と同じように動作する。即ち、多
数決回路62からの出力信号は、ブランチ予測エ
ラー信号が2進の0レベルにある時(予測が正し
い時)、排他的ORゲート64によつて反転され
ず、ブランチ予測エラー信号が2進の1レベルに
ある時(予測が正しくない時)、反転される。こ
の更新された最新の履歴ビツトは、線66を介し
て、テーブル6の履歴ビツト部分のビツト1ポジ
シヨンへ与えられる。履歴待ち行列20からの履
歴ビツト2は、線68を介してテーブル6の履歴
ビツト・ポジシヨン3へ与えられ、待ち行列20
からの履歴ビツト・ポジシヨン1のビツトは、線
70を介してテーブル6の履歴ビツト・ポジシヨ
ン2へ与えられる。従つて、待ち行列20からの
履歴ビツト1及び2は、それらがテーブル6でそ
れぞれビツト2及び3となるようにシフトされ、
線65の上にある最新の更新された履歴ビツト
は、テーブル6で履歴ビツト1になることがわか
る。
これまでの説明から明らかなように、条件付き
ブランチ命令がとれらるかとられないかの予測が
ブランチ命令それ自体のアドレスに基いており、
ブランチ命令の目標アドレスに基いていない条件
付きブランチ命令予測装置が実現される。
産業上の応用性 本発明の目的は、ブランチ命令に続いて命令を
フエツチするための改善された条件付きブランチ
命令処理装置を提供することである。
本発明の他の目的は、予測がブランチ命令それ
自体のアドレスに基く改善された条件付きブラン
チ命令処理装置を提供することである。
本発明の他の目的は、条件付きブランチ命令の
結果が、命令フイールドではなくブランチの前の
実行に基く改善された条件付きブランチ命令処理
装置を提供することである。
本発明の他の目的は、条件付きブランチ命令の
結果の予測がブランチの結果の履歴を所与のメモ
リ・ロケーシヨンに記録しているテーブルを使用
して行われる改善された条件付きブランチ命令処
理装置を提供することである。
【図面の簡単な説明】
第1図は高能率中央処理ユニツトのための主た
る命令処理ステツプを示すフローチヤート、第2
図はブランチ履歴テーブルのための命令プリフエ
ツチに対するテーブル・エントリイを示す図、第
3図はデコード履歴テーブルのブロツク図、第4
図は1ビツト履歴を有するデコード履歴テーブル
のために第3図の組合せ回路及び訂正回路を示し
たブロツク図、第5図は3ビツト履歴を有するデ
コード履歴テーブルのために第3図の組合せ回路
及び訂正回路を示したブロツク図である。 2……命令アドレス・レジスタ、4……アドレ
ス待ち行列、6……履歴テーブル、12……比較
回路、18……組合せ回路、20……履歴待ち行
列、24……訂正回路、32,34……ANDゲ
ート、46……ROゲート。

Claims (1)

  1. 【特許請求の範囲】 1 以前に実行された条件付きブランチ命令のア
    ドレスの第1の部分でアドレスされる記憶ロケー
    シヨンに、当該条件付きブランチ命令のアドレス
    の第2の部分または全部と当該条件付きブランチ
    命令の以前の結果を示す結果表示ヒツトとを記憶
    する履歴テーブル手段と、 デコード中の条件付きブランチ命令のアドレス
    を記憶するとともに、記憶中の条件付きブランチ
    命令のアドレスの第1の部分を上記履歴テーブル
    手段に供給して上記履歴テーブル手段をアクセス
    し、対応する条件付きブランチ命令のアドレスの
    第2の部分または全部と、対応する結果表示ビツ
    トとを読み出す命令アドレス・レジスタ手段と、 上記履歴テーブル手段から読み出された上記対
    応する条件付きブランチ命令のアドレスの第2の
    部分または全部を第1の比較入力として受け取
    り、上記命令アドレス・レジスタ手段からデコー
    ド中の条件付きブランチ命令のアドレスの第2の
    部分または全部を第2の比較入力として受け取
    り、第1の比較入力および第2の比較入力の比較
    を行う比較手段と、 上記履歴テーブル手段から上記結果表示ビツト
    を受け取つてデコード中の条件付きブランチ命令
    の結果を予想する信号を発生する結果予想信号発
    生手段と、 上記比較手段から一致信号が生じたときに上記
    結果予想信号発生手段からの信号をゲートして結
    果の予想を行わせるゲート手段と、 条件付きブランチ命令がデコードされるとき上
    記履歴テーブル手段から読み出される、当該条件
    付きブランチ命令に対応する結果表示ビツトを受
    け取り、当該条件付きブランチ命令がデコードさ
    れてから実行されるまでの間保持する結果表示ビ
    ツト待行列手段と、 条件付きブランチ命令が実行されたのち、当該
    条件付きブランチ命令に関する上記結果予想信号
    発生手段による結果の予想が正しかどうかを判別
    する結果予想真偽判別手段と、 条件付きブランチ命令が実行されたのち上記結
    果予想真偽判別手段からの判別信号に基づいて、
    上記結果表示ビツト待行列手段から出力されてく
    る、当該条件付きブランチ命令に対応する結果表
    示ビツトを訂正する訂正手段と、 条件付きブランチ命令がデコードされるとき上
    記命令アドレス・レジスタ手段から出力される当
    該条件付きブランチ命令のアドレスを受け取つ
    て、当該条件付きブランチ命令がデコードされて
    から実行される間保持するアドレス待行列手段
    と、 条件付きブランチ命令が実行されたのち当該条
    件付きブランチ命令のアドレスの第1の部分を上
    記アドレス待行列から受け取つて上記履歴テーブ
    ル手段に供給して上記履歴テーブル手段をアクセ
    スし、上記アドレス待行列から出力される当該条
    件付きブランチ命令の第2の部分または全部と、
    上記訂正手段からの対応する訂正ずみの結果表示
    ビツトとを上記履歴テーブル手段に書き込む書き
    込み手段とを有することを特徴とする条件付きブ
    ランチ命令の予測装置。
JP57222203A 1982-01-15 1982-12-20 条件付きブランチ命令の予測装置 Granted JPS58125148A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/339,561 US4477872A (en) 1982-01-15 1982-01-15 Decode history table for conditional branch instructions
US339561 1982-01-15

Publications (2)

Publication Number Publication Date
JPS58125148A JPS58125148A (ja) 1983-07-26
JPH0427573B2 true JPH0427573B2 (ja) 1992-05-12

Family

ID=23329604

Family Applications (1)

Application Number Title Priority Date Filing Date
JP57222203A Granted JPS58125148A (ja) 1982-01-15 1982-12-20 条件付きブランチ命令の予測装置

Country Status (5)

Country Link
US (1) US4477872A (ja)
EP (1) EP0084114B1 (ja)
JP (1) JPS58125148A (ja)
DE (1) DE3271063D1 (ja)
ES (1) ES8403221A1 (ja)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5742099A (en) * 1980-08-27 1982-03-09 Sharp Kk Voice informing device
US4604691A (en) * 1982-09-07 1986-08-05 Nippon Electric Co., Ltd. Data processing system having branch instruction prefetching performance
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
WO1985000453A1 (en) * 1983-07-11 1985-01-31 Prime Computer, Inc. Data processing system
US4764861A (en) * 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
JPS60168238A (ja) * 1984-02-10 1985-08-31 Hitachi Ltd パイプラインデータ処理装置
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
JPS6341932A (ja) * 1985-08-22 1988-02-23 Nec Corp 分岐命令処理装置
EP0258453B1 (en) * 1986-02-28 1993-05-19 Nec Corporation Instruction prefetch control apparatus
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
ATE57582T1 (de) 1986-03-21 1990-11-15 Siemens Ag Anordnung zur bearbeitung von sprungbefehlen innach dem fliessbandprinzip arbeitenden datenverarbeitungsanlagen.
JPH0731615B2 (ja) * 1986-04-18 1995-04-10 日本電気株式会社 情報処理装置
US5440704A (en) * 1986-08-26 1995-08-08 Mitsubishi Denki Kabushiki Kaisha Data processor having branch predicting function
US4722046A (en) * 1986-08-27 1988-01-26 Amdahl Corporation Cache storage priority
JP2603626B2 (ja) * 1987-01-16 1997-04-23 三菱電機株式会社 データ処理装置
US5175827A (en) * 1987-01-22 1992-12-29 Nec Corporation Branch history table write control system to prevent looping branch instructions from writing more than once into a branch history table
US5247627A (en) * 1987-06-05 1993-09-21 Mitsubishi Denki Kabushiki Kaisha Digital signal processor with conditional branch decision unit and storage of conditional branch decision results
US5134561A (en) * 1987-07-20 1992-07-28 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US4894772A (en) * 1987-07-31 1990-01-16 Prime Computer, Inc. Method and apparatus for qualifying branch cache entries
US4860197A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Branch cache system with instruction boundary determination independent of parcel boundary
US4860199A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Hashing indexer for branch cache
US4942520A (en) * 1987-07-31 1990-07-17 Prime Computer, Inc. Method and apparatus for indexing, accessing and updating a memory
US5247628A (en) * 1987-11-30 1993-09-21 International Business Machines Corporation Parallel processor instruction dispatch apparatus with interrupt handler
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
GB8728493D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Jump prediction
JPH081602B2 (ja) * 1988-02-23 1996-01-10 三菱電機株式会社 データ処理装置
JPH0769808B2 (ja) * 1988-02-23 1995-07-31 三菱電機株式会社 データ処理装置
US5522053A (en) * 1988-02-23 1996-05-28 Mitsubishi Denki Kabushiki Kaisha Branch target and next instruction address calculation in a pipeline processor
US5228131A (en) * 1988-02-24 1993-07-13 Mitsubishi Denki Kabushiki Kaisha Data processor with selectively enabled and disabled branch prediction operation
JPH081599B2 (ja) * 1988-02-24 1996-01-10 三菱電機株式会社 データ処理装置
US5136696A (en) * 1988-06-27 1992-08-04 Prime Computer, Inc. High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
JP2570859B2 (ja) * 1989-05-25 1997-01-16 日本電気株式会社 データ処理装置
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
EP0404068A3 (en) * 1989-06-20 1991-12-27 Fujitsu Limited Branch instruction executing device
US5210831A (en) * 1989-10-30 1993-05-11 International Business Machines Corporation Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
JPH0460720A (ja) * 1990-06-29 1992-02-26 Hitachi Ltd 条件分岐命令制御方式
EP0463965B1 (en) * 1990-06-29 1998-09-09 Digital Equipment Corporation Branch prediction unit for high-performance processor
JPH0820950B2 (ja) * 1990-10-09 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチ予測型分岐予測機構
US5265199A (en) * 1991-05-22 1993-11-23 Silicon Graphics, Inc. Method and apparatus for accomplishing Z-buffering by prediction
JPH0628184A (ja) * 1991-08-26 1994-02-04 Internatl Business Mach Corp <Ibm> ブランチ予測方法及びブランチプロセッサ
US5333283A (en) * 1991-10-29 1994-07-26 International Business Machines Corporation Case block table for predicting the outcome of blocks of conditional branches having a common operand
US5434986A (en) * 1992-01-09 1995-07-18 Unisys Corporation Interdependency control of pipelined instruction processor using comparing result of two index registers of skip instruction and next sequential instruction
AU665368B2 (en) * 1992-02-27 1996-01-04 Samsung Electronics Co., Ltd. CPU having pipelined instruction unit and effective address calculation unit with retained virtual address capability
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5463746A (en) * 1992-10-30 1995-10-31 International Business Machines Corp. Data processing system having prediction by using an embedded guess bit of remapped and compressed opcodes
US5367703A (en) * 1993-01-08 1994-11-22 International Business Machines Corporation Method and system for enhanced branch history prediction accuracy in a superscalar processor system
US5577217A (en) * 1993-05-14 1996-11-19 Intel Corporation Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions
KR100310581B1 (ko) * 1993-05-14 2001-12-17 피터 엔. 데트킨 분기목표버퍼의추측기록메카니즘
BR9406606A (pt) * 1993-05-14 1996-01-02 Intel Corp Mecanismo para história especulativa em um buffer objeto de ramificação
TW261676B (ja) * 1993-11-02 1995-11-01 Motorola Inc
US5634119A (en) * 1995-01-06 1997-05-27 International Business Machines Corporation Computer processing unit employing a separate millicode branch history table
US5905881A (en) * 1995-11-30 1999-05-18 Unisys Corporation Delayed state writes for an instruction processor
US5794024A (en) * 1996-03-25 1998-08-11 International Business Machines Corporation Method and system for dynamically recovering a register-address-table upon occurrence of an interrupt or branch misprediction
US5822577A (en) * 1996-05-01 1998-10-13 International Business Machines Corporation Context oriented branch history table
US5867699A (en) * 1996-07-25 1999-02-02 Unisys Corporation Instruction flow control for an instruction processor
US5875325A (en) * 1996-09-19 1999-02-23 International Business Machines Corporation Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history
US6484256B1 (en) * 1999-08-09 2002-11-19 International Business Machines Corporation Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
EP1236097A4 (en) 1999-09-01 2006-08-02 Intel Corp BRANCH COMMAND TO THE PROCESSOR
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
EP1442363A1 (en) * 2001-10-02 2004-08-04 Koninklijke Philips Electronics N.V. Speculative execution for java hardware accelerator
US7437724B2 (en) 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
GB2506462B (en) * 2013-03-13 2014-08-13 Imagination Tech Ltd Indirect branch prediction
US11194575B2 (en) * 2019-11-07 2021-12-07 International Business Machines Corporation Instruction address based data prediction and prefetching

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS549456B2 (ja) * 1972-07-05 1979-04-24
US3881173A (en) * 1973-05-14 1975-04-29 Amdahl Corp Condition code determination and data processing
CA1059639A (en) * 1975-03-26 1979-07-31 Garvin W. Patterson Instruction look ahead having prefetch concurrency and pipe line features
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4179738A (en) * 1978-06-23 1979-12-18 International Business Machines Corporation Programmable control latch mechanism for a data processing system
US4370711A (en) * 1980-10-21 1983-01-25 Control Data Corporation Branch predictor using random access memory
US4402042A (en) * 1980-11-24 1983-08-30 Texas Instruments Incorporated Microprocessor system with instruction pre-fetch

Also Published As

Publication number Publication date
JPS58125148A (ja) 1983-07-26
ES518983A0 (es) 1984-03-01
EP0084114B1 (en) 1986-05-07
EP0084114A1 (en) 1983-07-27
US4477872A (en) 1984-10-16
ES8403221A1 (es) 1984-03-01
DE3271063D1 (en) 1986-06-12

Similar Documents

Publication Publication Date Title
JPH0427573B2 (ja)
US5142631A (en) System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register
US5349651A (en) System for translation of virtual to physical addresses by operating memory management processor for calculating location of physical address in memory concurrently with cache comparing virtual addresses for translation
US9529595B2 (en) Branch processing method and system
US5805877A (en) Data processor with branch target address cache and method of operation
US5530825A (en) Data processor with branch target address cache and method of operation
US4521851A (en) Central processor
US4985825A (en) System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer
US5404467A (en) CPU having pipelined instruction unit and effective address calculation unit with retained virtual address capability
US5113515A (en) Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
US7437543B2 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
US5136697A (en) System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
EP2519874B1 (en) Branching processing method and system
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
JPH02206837A (ja) パイプライン方式のコンピューターシステムにおける色々な個数の潜在的メモリーアクセス矛盾を解決する方法及び装置
JP2006520964A (ja) 分岐ターゲットに基づいて分岐予測をするための方法および装置
JP3486690B2 (ja) パイプライン方式プロセッサ
US5748976A (en) Mechanism for maintaining data coherency in a branch history instruction cache
US6978361B2 (en) Effectively infinite branch prediction table mechanism
EP0666538A2 (en) Data processor with branch target address cache and method of operation
JP2001154845A (ja) キャッシュミスした後のメモリバスアクセス制御方式
JPH01296343A (ja) データ処理装置
IE901528A1 (en) Method and apparatus for controlling the conversion of¹virtual to physical memory addresses in a digital computer¹system
JPH11306019A (ja) 情報処理装置及びプロセッサ
IE901519A1 (en) Multiple instruction preprocessing system with data¹dependency resolution