JPS58125148A - 条件付きブランチ命令の予測装置 - Google Patents

条件付きブランチ命令の予測装置

Info

Publication number
JPS58125148A
JPS58125148A JP57222203A JP22220382A JPS58125148A JP S58125148 A JPS58125148 A JP S58125148A JP 57222203 A JP57222203 A JP 57222203A JP 22220382 A JP22220382 A JP 22220382A JP S58125148 A JPS58125148 A JP S58125148A
Authority
JP
Japan
Prior art keywords
instruction
branch
address
history
prediction
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
JP57222203A
Other languages
English (en)
Other versions
JPH0427573B2 (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.)
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)

Abstract

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

Description

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

Claims (1)

    【特許請求の範囲】
  1. 条件付きブランチ命令の結果を予測する装置であって、
    条件付きブランチ命令のデコード・サイクルの間に、上
    記命令のアドレスをアドレス・レジスタに記憶する手段
    と、前に実行された条件付きブランチ命令のアドレスを
    テーブルに記憶しておく手段と、条件付きブランチ命令
    のブランチが前にとられたかどうかを示す履歴ビットを
    上記アドレスに関連して記憶しておく手段と、上記デコ
    ード・サイクルの間に、上2アドレス・レジスタに記憶
    された条件付きブランチ命令のアドレスと上記テーブル
    中に記憶されたアドレスとを比較する手段と、−h記比
    較が一致したとき関連した履歴ビットをデコードされつ
    つある条件付きブランチ命令のブランチがとられるか否
    かを予測する表示として命令フェッチ機構へ与える手段
    とを具備する条件付きブランチ命令の予測装置。
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 true JPS58125148A (ja) 1983-07-26
JPH0427573B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01214931A (ja) * 1988-02-23 1989-08-29 Mitsubishi Electric Corp データ処理装置

Families Citing this family (64)

* 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
EP0150177A1 (en) * 1983-07-11 1985-08-07 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
US4942520A (en) * 1987-07-31 1990-07-17 Prime Computer, Inc. Method and apparatus for indexing, accessing and updating a memory
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
US4894772A (en) * 1987-07-31 1990-01-16 Prime Computer, Inc. Method and apparatus for qualifying branch cache entries
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
US5522053A (en) * 1988-02-23 1996-05-28 Mitsubishi Denki Kabushiki Kaisha Branch target and next instruction address calculation in a pipeline processor
JPH081602B2 (ja) * 1988-02-23 1996-01-10 三菱電機株式会社 データ処理装置
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
CA2124333A1 (en) * 1992-02-27 1993-09-02 John A. Saba 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
KR100310581B1 (ko) * 1993-05-14 2001-12-17 피터 엔. 데트킨 분기목표버퍼의추측기록메카니즘
AU6701794A (en) * 1993-05-14 1994-12-12 Intel Corporation Speculative history mechanism in a branch target buffer
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
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
EP1236097A4 (en) 1999-09-01 2006-08-02 Intel Corp BRANCH COMMAND TO THE PROCESSOR
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
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
CN1266591C (zh) * 2001-10-02 2006-07-26 皇家飞利浦电子股份有限公司 用于java硬件加速器的猜测执行的方法和装置
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01214931A (ja) * 1988-02-23 1989-08-29 Mitsubishi Electric Corp データ処理装置

Also Published As

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

Similar Documents

Publication Publication Date Title
JPS58125148A (ja) 条件付きブランチ命令の予測装置
US5142631A (en) System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
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
US5121473A (en) Pipelined system includes correction mechanism operated on history information identifying conditional jump instructions for which the jump prediction was incorrect on previous instances of execution of those instructions
US4775927A (en) Processor including fetch operation for branch instruction with control tag
JPH02206837A (ja) パイプライン方式のコンピューターシステムにおける色々な個数の潜在的メモリーアクセス矛盾を解決する方法及び装置
JPH0429093B2 (ja)
JPH06119166A (ja) 簡略命令セットプロセッサでレジスタ内データ操作を行なう方法
JPH0334024A (ja) 分岐予測の方法とそのための装置
JPS61243536A (ja) デ−タ処理装置における先行制御装置
US5327536A (en) Microprocessor having branch prediction function
JP2006520964A5 (ja)
KR100385495B1 (ko) 워드정렬브랜치타겟을가지는처리시스템
JP3486690B2 (ja) パイプライン方式プロセッサ
US5146570A (en) System executing branch-with-execute instruction resulting in next successive instruction being execute while specified target instruction is prefetched for following execution
EP0550289A2 (en) A mechanism to detect stores into the instruction stream
US6978361B2 (en) Effectively infinite branch prediction table mechanism
US5765221A (en) Method and system of addressing which minimize memory utilized to store logical addresses by storing high order bits within a register
JP2534662B2 (ja) 命令キヤツシユ制御方法
JPH0248733A (ja) 情報処理装置
WO1996035165A1 (en) Instruction memory limit check in microprocessor
JPS61198335A (ja) 分岐予測制御方式
IE901528A1 (en) Method and apparatus for controlling the conversion of¹virtual to physical memory addresses in a digital computer¹system
IE901519A1 (en) Multiple instruction preprocessing system with data¹dependency resolution