JPH0318211B2 - - Google Patents

Info

Publication number
JPH0318211B2
JPH0318211B2 JP61032060A JP3206086A JPH0318211B2 JP H0318211 B2 JPH0318211 B2 JP H0318211B2 JP 61032060 A JP61032060 A JP 61032060A JP 3206086 A JP3206086 A JP 3206086A JP H0318211 B2 JPH0318211 B2 JP H0318211B2
Authority
JP
Japan
Prior art keywords
branch
segment
address
bht
instruction
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
JP61032060A
Other languages
English (en)
Other versions
JPS61250738A (ja
Inventor
Haabaato Homerin Jeemuzu
Robaatsu Puzatsuku Toomasu
Nasan Rehitoshatsufuen Rudorufu
Ruisu Roozenfuerudo Fuiritsupu
Jon Suparashio Furanku
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 JPS61250738A publication Critical patent/JPS61250738A/ja
Publication of JPH0318211B2 publication Critical patent/JPH0318211B2/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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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, 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

Description

【発明の詳細な説明】 (A) 産業上の利用分野 本発明はデータ処理の分野に関するもので、特
に計算機における分岐命令の処理に関するもので
ある。
(B) 開示の概要 分岐活動記録テーブル(BHT)は、これを2
つの部分、すなわち活動域とバツクアツプ域とに
分割することにより、かなり改善される。活動域
には、プロセツサが近い将来に直面する少数の分
岐のための入力が含まれ、バツクアツプ域には、
その他のすべての分岐項目が含まれる。プロセツ
サがこれらの項目を使用する時期に先んじて、バ
ツクアツプ域からの項目を活動域に移す手段が設
けられている。項目が必要でなくなつたときは、
すでにバツクアツプ域になければ、項目は活動域
からバツクアツプ域に戻される。近い将来のため
の新しい項目が導入され、その結果、活動域は小
さいにもかかわらず、プロセツサが必要とする分
岐情報をほとんど常時含むことになる。
活動域が小さいため、高速で、プロセツサのレ
イアウト上、最適な位置に置くことができる。バ
ツクアツプ域は、レイアウトの重要な部分の外側
に位置し、したがつて、標準のBHTのものより
大きくすることができる。
(C) 従来技術 高性能のプロセツサでは、命令を、それぞれ異
なるステツプ処理ユニツトにより実行されるいく
つかのステツプに分解するのがふつうである。こ
れらの各ユニツトは、サイクルごとに、後続の命
令のための特定のステツプを受取る能力を有す
る。これにより、サイクルごとに命令を実行する
際、連続したステツプを、1サイクルだけオフセ
ツトさせて、後続の各命令にオーバラツプさせる
ことが一般に行われている。理想的には、これに
より、いかなる所定の命令も、完了までに数サイ
クルを要するとしても、各サイクルで1つの命令
が処理される。
この理想的なオーバラツプは、いくつかの理由
により、常に可能であるとは限らない。主な理由
は、頻繁に分岐命令があることである。分岐命令
には2つの著しい属性がある。すなわち、分岐は
とつてもとらなくてもよく、2つの命令のうち、
いずれが次に来るかに関して一時的な不確実性を
持つこと、および分岐をとつた場合次の命令は、
通常その分岐内に指定されるアドレスから得なけ
ればならないことである。
分岐予報機構に関するいくつかの特許がある
が、いずれも利点および欠点を有する。たとえ
ば、Smithの米国特許第4370711号明細書(特開
昭57−76638号)には、コンピユータ・システム
内の条件付分岐命令の結果を予報する分岐予報装
置が開示されている。システムの基本となる原理
は、条件付分岐命令は、最近に実行された命令と
同じ方法で決められるのであろうというものであ
る。
Kindellらの米国特許第4251864号明細書には、
信号群記憶空間の境界と一致しない境界を有する
信号群の操作のための分岐予測装置を開示してい
る。オペランド境界を含む語が、中央処理装置に
転送されると、非オペランド・データもその語と
ともに転送される。境界語に含まれる非オペラン
ド・データは、オペランド信号群から除去され、
中央処理装置に記憶される。オペランドが中央処
理装置で操作された後、非オペランド・データは
境界語の、以前信号が占めていた位置に再挿入さ
れ、操作を含む語群、または得られたオペランド
が、当初それらが除去された記憶位置に記憶され
る。
Cockeらの米国特許第3800291号明細書(特公
昭52−41131号)には、分岐命令が同一または他
のページの情報のアドレスに分岐できる分岐予報
機構が開示されている。この分岐命令には、分岐
アドレスが同一または他のページの物理的アドレ
スであるか、それとも他のページの仮想アドレス
であるかを示す標識が含まれている。
Forsterらの米国特許第4181942号明細書(特公
昭57−32814号)には、計算システムに使用され
る特殊な分岐命令が、内部レジスタの状態によ
り、条件付き分岐または無条件分岐となるプログ
ラム分岐方法および装置が開示されている。この
特殊分岐命令は、プログラム・ループ内または終
端部の条件付き分岐、もしくは上記ループ外の無
条件分岐に用いられる。
Stephensの米国特許第3325785号明細書には、
制御記憶およびそのアクセス制御を効率的に利用
する分岐予報機構が開示されている。分岐を扱う
簡単な方法は、分岐が完全に終了するまで、すな
わち分岐をとるかとらないか解決するまで、オー
バラツプを中断することである。分岐をとつた場
合は目的命令がメモリからフエツチされる。しか
し、この方法によると、1分岐当たり数サイクル
を要し、それが理想的なオーバーラツプから失な
われる。もう1つの方法は、分岐の種類、および
分岐がとられたかどうかについての統計的経験に
基づいて固定した選択を行うことである。選択
が、とられていないことを示す場合は、通常のオ
ーバーラツプが条件付きで実際の結果が出るまで
続けられる。選択が正しくないことが立証された
場合は、条件付きで開示された命令は中止され、
目的命令がフエツチされる。条件付き命令を行つ
たサイクルも、目的(命令)をフエツチするサイ
クルも失なわれる。しかし、後者は、分岐が解号
(以下「復号」ともいう)される時に目的をプリ
フエツチすることにより回避されることが多い。
さらに効果的な方法がSussenguthの米国特許
第3559183号明細書(特公昭50−22384号)に記載
されている。この特許は本発明の譲受入に譲渡さ
れたものである。この方法は、ほとんどの分岐
は、単独に考えた場合、一貫して、とられたか、
とられないかのいずれかであり、とられた場合は
不変の目的アドレスを有するという観察に基づく
ものである。この方法では、とられる分岐のテー
ブルが構成される。テーブルの各項目は、とられ
る分岐のアドレスからなり、分岐の目的アドレス
がこれに続く。このテーブルは、ハードウエアに
よるもので、したがつてあらかじめ決められた大
きさを有し、通常1024から4096個の項目がある。
各項目は、それがぶつかるとられた分岐に対して
のみ作成される。テーブルが一ぱいのときは、新
しい項目を作るために古い項目を置換しなければ
ならない。このことはキヤツシユの場合と同じ
く、LRU法で実施できる。
原則として、実行される命令の流れの中の各分
岐は、テーブル内で、そのアドレスにより調べる
ことができ、見出された場合はその目的がフエツ
チされ、流れの中の次の命令となる。テーブル内
に分岐がない場合は、分岐がとられていないとみ
なされる。テーブルに基づくアクシヨンはすべ
て、命令の実行が進むにつれてチエツクされる。
テーブルに誤りが発見された場合は補正が行われ
る。とられると予測された分岐がとられていない
場合は、テーブルの項目が削除される。とられて
いないと予測された分岐がとられている場合は、
そのための新しい項目が作られる。予測された目
的アドレスが違う場合は、正しいアドレスを入力
する。
実際には、上記のことは幾分修正されている。
目的が必要になる前に、または少くとも必要にな
つて直ちにフエツチすることができるように、と
られる分岐を発見し、パイプラインに遅れを生じ
ないようにすることが望ましい。この条件は通
常、分岐が行われ、確認された後にはじめてテー
ブルをアクセスしたのでは充たされない。したが
つて、テーブルは通常、機械の命令フエツチ・パ
ケツトに基づいて構成され、アドレスされる。最
近では、このパケツトは二重語(DW)である。
実際的な手順は次のとおりである。機械が二重語
を命令バツフアにフエツチすると、DWアドレス
もテーブルに供給される。項目が存在すると、目
的(DW)はキヤツシユの優先度が許す限り早く
取出される。この目的DWがテーブルに供給さ
れ、処理が続けられる。
(D) 発明が解決しようとする問題点 上記の従来技術は分岐活動記録テーブル
(BHT)と称するもので、大部分の分岐を満足に
処理するが、これが誤つている場合は数サイクル
の遅れを生じる。実用サイズのテーブル(たとえ
ば256項目すなわち約2Kバイト)の場合、この遅
れにより、これを用いる利点が相殺されてしま
う。これにより大きいテーブル(4K項目すなわ
ち約32Kバイト)を用いれば、誤つた予測、つま
り遅れのパーセンテージを減らすことができる
が、問題はテーブル・ハードウエアが、機械の中
で速度が重要な命令フエツチおよび生成部にパツ
ケージされなければならないことである。このエ
リアのテーブル・ハードウエアを増やさずに、む
しろ減らすことのほうが重要である。それは、こ
のエリアに多くのハードウエアを置かなければな
らないと、配線距離が長くなり、サイクル時間を
決めるクリテイカル・パスで考慮に入れなければ
ならない論理遅延の数が多くなるためである。も
ちろん、そうすればサイクル時間が長くなり、サ
イクル時間が長くなると機械の速度が低下するこ
とになる。それによるサイクル時間の増大の大部
分を相殺するような組織的な改良は、BHTを含
めてほとんど行われていない。したがつて、この
クリテイカル・エリアに多くのハードウエアを置
かない改良が望まれている。
(E) 問題点を解決するための手段 本発明の目的は、改良された分岐活動記録テー
ブルを提供することにある。
本発明の他の目的は、改良されたページ可能分
岐活動記録テーブル(PBHT)を提供すること
にある。
さらに本発明の他の目的は、n個のメモリ・セ
グメントの1つで分岐命令を処理する活性の高速
部分と、残りの項目が記憶される低速部分とに分
けられた、改良されたページ可能分岐活動記録テ
ーブルを提供することにある。活性部分は常に将
来の作用が予想される分岐命令を含む次の命令セ
グメントに基づいて、低速部分から更新される。
本発明によれば、ページ可能分岐活動記録テー
ブル(PBHT)が提供される。これは重要な部
分にハードウエアを追加せず、むしろ減少させる
ものである。表面的には、キヤツシユ記憶装置と
主記憶装置との関係に類似している。BHT全体
を(そのまま)主記憶装置に記憶させ、PBHT
をキヤツシユ記憶装置に記憶させる。小さいキヤ
ツシユ(PBHT)だけ速度の重要な領域に置け
ば、主記憶装置は別の場所に置くことができる。
ここで重要なことは、BHT全体が、ハードウエ
アまたはサイクル時間を考慮して、寸法が制限さ
れることがなくなることである。BHTは利点を
生ずるだけの十分な大きさにすることができる。
しかし、PBHTを表面的なキヤツシユ類似の
ものと区別する2つのものがある。その1つは
PBHTの内容が、キヤツシユのように過去の参
照の新しさに基づくものでなく、将来の使用の相
対的確実性に基づくことである。PBHT制御機
構は、タイムリーに将来の分岐に関する情報をフ
エツチするための分岐活動に関するこれより大き
いBHT内に保持された情報を使用する。プロセ
ツサは、処理されている現在の命令に(論理的
に)非常に近似した分岐のみ速くアクセスするこ
とを必要とする。これは、BHT全体に含まれる
すべての分岐情報のうちの、わずかな部分だけを
示す。BHT全体は、多くの分岐に関する情報を
保持する能力により、その高密度を保証するので
必要である。PBHTはこの情報により管理され、
関連の非常に深い小さいサブセツトに速くアクセ
スすることができる。
キヤツシユと区別されるPBHTの第2の点は、
その自発的制御の方法である。プロセツサの活動
によつてのみ駆動され、純粋な機会に基づく関連
性を維持するキヤツシユと異なり、PBHT活動
は、プロセツサから独立してその内容を管理し、
その関連性を保証する。PBHTは、それ自信プ
ロセツサが出会う次の分岐を常に取込むことによ
り、それ自身の関連性を維持する。
(F) 実施例 本発明によるページ可能分岐活動記録テーブル
(PBHT)の動作について説明する前に、標準の
分岐活動記録テーブル(BHT)の動作について
説明する。第1に、BHTのない典型的な高性能
プロセツサにおいて、命令がどのように取出され
るかについて説明し、次に、BHTによる命令の
取出しについて述べる。その後、BHTの構造お
よび動作について詳細に説明する。第1図は
BHTを持たない典型的な高性能プロセツサの主
な特徴を示す。説明のため、この図は命令部を強
調し、完全なプロセツサの設計に必要な他の多く
の特徴は強調せず、または省略されている。
プロセツサのデータおよび命令は、主記憶装置
103により通常の方法でバツク・アツプされた
キヤツシユ101に記憶されていると仮定する。
説明のため、命令復号レジスタ105に入れられ
たばかりの命令と、その点から遅れずに追跡され
ている事象を考える。
復号レジスタ105に新しい命令が現れると、
3つの動作が平行して行われる。第1の動作は、
命令長情報(IBM S/370アーキテクチヤでは
最左端の2ビツト)を加算器107に送り、ここ
で命令カウンタ109の現在値に加算することで
ある。この時点での現在値は、復号レジスタ10
5の命令のアドレスである。この第1の動作が最
も重要なものであるため、他の動作の説明の後も
う1回ふれることにする。
第2の動作は、命令のオペランド・アドレス情
報(ある場合)をアドレス発生機構111に送
り、ここでアドレスが発生し、キヤツシユ101
に取出し要求として送ることである。IBM S/
370のアドレス発生の全手順については、この説
明には不要であるため、ここでは示さない。キヤ
ツシユへの取出し要求は、データのものでも、他
の命令のものでもよい。ここでは、取出し要求は
データのためのものと仮定する。
第3の動作は、命令からの実行情報を、実行お
よびプツトアウエイ機構113に送り、ここで必
要なデータ(アドレス発生機構111に要求され
た)が、キヤツシユ101から実行およびプツト
アウエイ機構113に戻されるまで保持されるこ
とである。必要なデータが得られれば、命令は実
行され、結果は特定の命令の要求に従つて片付け
られる。最後に、エンドオプ機能すなわち信号1
15が発せられ、命令が完了したときに点をマー
クする。
第1の動作の説明に戻ると、加算器107の出
力は、現在解号レジスタ105で解号されている
命令の次の命令のアドレスである。この次の命令
のアドレスは、更新命令カウンタ・レジスタ11
7、命令バツフア(IB)119、および順次事
前取出し制御装置(SPC)121に送られる。
S・PCの機能は、IBに現在解号されている命令
に後続するN個の命令がロードされたままにする
ことである。(Nの値は通常4、6または8であ
る。)IBの機能は、これらN個の命令を保持し、
要求によつて急速に命令解号部に与えることであ
る。この要求は、次命令のアドレスにより作ら
れ、選択された次命令は、IBから次命令レジス
タ123に読み出される。命令解号レジスタ10
5が、次命令のための準備ができると、次命令は
レジスタ123からゲートされる。同時に、更新
命令カウンタの値がレジスタ117から命令カウ
ンタ109へゲートされる。その後、新しい命令
について上記の命令が繰返される。
命令がIBから引出されると、他の命令のため
のスペースができる。スペースができると、IB
119からSPC121へ「Iバツフアに空きあり
(I Buffer Not Full)」という信号が出され
る。この信号が出されると、SPCはキヤツシユ1
01から前に要求された以外の、次の1つまたは
2つ以上の(IBエントリの大きさにより)連続
した命令を要求する。
簡単のため、これまでの説明には分岐命令の効
果についてふれていない。今後は、解号レジスタ
105で現在解号されている命令が分岐命令であ
り、分岐がとられていると仮定する。この場合、
アドレス発生機構111により発生されたアドレ
スは、分岐目的アドレスである。分岐目的(すな
わち命令)は、キヤツシユ101から取出され、
目的命令はキヤツシユから次命令レジスタ123
にロードされる。この径路を第2図中の太線12
0で示す。目的アドレスも、太線122および1
24でそれぞれ示すように、更新ICレジスタ1
17およびSPC121に送られる。
これらは分岐がとられたことがわかつている場
合の適切な動作である。条件付分岐については、
とる・とらないの決定はどちらでもよく、分岐目
的および次の連続命令の両方が、とる・とらない
の決定が次に行われるときに選択する用意ができ
ているように、2つの次命令レジスタおよび2つ
の更新ICレジスタを設けるのがふつうである。
分岐がとられた場合は、SPC121はIB119
分岐目的に続く次の連続命令をロードする。IB
内の、とらない場合の径路を下る事前取出しが行
われた命令はいずれも、バツフア管理方式によ
り、ボイドとしてもしなくてもよい。
分岐活動記録テーブルが命令取出しの制御のた
めに用いられる場合は、BHTは前述の順次事前
取出制御装置の役割り行う。これは第2図と第3
図を比較すればわかる。この2つの図は、第3図
において、BHT125がSPC121の代りに用
いられ、2つの信号径路が加えられ、1つが削除
されている以外は同じである。
ここで、はじめにBHTの動作の一般的な説明
を行い、続いて詳細な説明を行う。主として、
BHTはSPCよりも完全な命令事前取出し作業を
行う。それは、BHTは次に連続する事前取出し
を行うだけでなく、ほとんどのとられた分岐の目
的の事前取出しを行うからである。
これは2段階の方法である。第3図で、BHT
125は、IB119に近い将来プロセツサが必
要とする命令をロードするため、キヤツシユ10
1に適切な、次に続く、分岐目的取出しの連続的
要求を発しなければならない。これは次に続く命
令と同時に分岐目的取出しを含む以外は、SPC1
21(第1図)の機能と類似のものである。
第2に、BHT125は、径路127を通じて
IBに、次命令レジスタ123が、次に続く命令
であつても分岐目的であつても、適切な次命令を
ロードすることを指令し、これにより命令の処理
が円滑に、時間をロスせずに行えるようにしなけ
ればならない。
BHT125は非常に正確であつても、時によ
つて誤つた決定をすることがある。誤つた決定は
通常実行およびプツトアウエイ機構113内で発
見され、必要な修正のための信号がBHT125
への径路129に出される。
BHTの構造および動作について次に説明する。
BHTには多くの設計があることに注意しなけれ
ばならない。ここに示すものは、最適な設計とい
うよりはむしろ説明を簡単にするために選んだも
のである。たとえば、実際の装置で多く用いられ
るセツト連想登録簿でなく、完全連想登録簿を仮
定する。
前に述べたように、BHT125の目的は命令
を必要になるより前にキヤツシユから取出し、遅
れずに解号する用意をするためである。命令は個
別に取出されるかもしれないが、より多くのキヤ
ツシユ・アクセスを、オペランドのために残して
おくため、取出しごとにいくつかの命令を得るこ
とが望ましい。1回の取出しで得た命令群を、
「ブロツク」と名付ける。最近では1ブロツクは
通常ダブル・ワード(DW、8バイト)である
が、将来の機械ではカドワード(QW、16バイ
ト)となるであろう。
次にブロツク概念について、第4図を参照して
詳細に説明する。第4図は、いくつかの分岐を含
む代表的な命令の順序を示す。カラム1は、各命
令のある記憶装置のアドレスを16進数で表わす。
カラム2は命令簡易記憶名を表わす。カラム3は
√印によりどの分岐がとられたかを示し、カラム
4は相当する目的アドレスを示す。この目的アド
レスは、カラム4の各記入と、カラム1の1行下
の記入を比較するとわかるように、とられた分岐
の後実行される次の命令のアドレスである。最後
に、カラム5は各命令のカドワードの位置を示
す。QWは以降ブロツクの大きさとして使用す
る。
第5図は、それぞれのQWブロツク内に正しく
位置した同じ命令の順序を示す。1つのブロツク
から他のブロツクへの移行は2つの方法で行われ
る。上から始めて、第1の移行は分岐(BAL)
によつて起り、第2の移行は次の連続するブロツ
ク(NS)によつて起る。第3の移行は分岐
(BC)によつて起り、第4の移行は再び次の連続
したブロツクにより起る。命令、例えばLAは、
一部は1つのブロツクに、一部は次のブロツクに
ある。
第5図はまた、ブロツク順序の概念も示してい
る。この図は第4図の命令例を実行するのに必要
な実際のブロツク順序を示す。BHTのないプロ
セツサでは、プロセツサがとられた各分岐に出会
うたびに、ブロツクごとにこの順序が決められ
る。この順序は前もつてわかつていないため、プ
ロセツサは通常とられた各分岐のあと、次のブロ
ツクがキヤツシユから取出される間、遅れを生ず
る。
BHTのあるプロセツサでは、BHTの仕事は必
要なブロツクが前もつて取出され、プロセツサの
遅れがさけられるように、前もつてブロツク順序
を予測することである。さらに第5図を参照する
と、順序はブロツクAを取出し、同時にAの
(QW)アドレスによりBHTにアクセスすること
により始まる。ブロツクAにはとられた分岐があ
り、したがつてBHTにブロツクAのための記入
(項目)がなければならない。この記入は分岐の
位置(バイト・アドレス=8)と、分岐の目的ア
ドレスを含む。ブロツクBはこの目的アドレスを
含むので、ブロツクBが取出され、同時にBのア
ドレスによりBHTがアクセスされる。Bにはと
られた分岐がないため、BHTにはBのための記
入がない。その代り、BHTは「ミス」の指示に
戻る。このミスは、次のブロツクCがそのままB
に続く次のブロツクでなければならないことを示
す。次にブロツクCが取出され、BHTが問合わ
せられる。Cにはとられた分岐があるため、
BHTは位置目的アドレスを戻し、これがブロツ
クD等を取出すのに用いられる。
このプロセスは原則的に無限に続けられ、プロ
セツサが現在実行しているブロツクよりはるか遠
くにまで到達する。この限界を設定するのに、2
つの実際的な考慮がなされる。その1つは命令バ
ツフア119(第3図参照)の大きさであり、第
2はブロツク連鎖中の一部の分岐がBHTにより
正しくない予測がなされる可能性が増大すること
である。この場合には、その分岐を超えて事前取
出しされるすべてのブロツクが正しくなく、使用
不能となる。
これまでの説明は、ブロツク順序の概念を強調
するには幾分不完全である。省略された詳細はと
られた分岐の目的である各ブロツク内の目的バイ
ト・アドレスを識別する必要性についてである。
カドワード・ブロツクについて、目的バイト・ア
ドレスは、分岐目的アドレスの下位の4ビツトで
ある。第5図中の矢印は、目的バイト・アドレス
を示すものである。もちろんNSの移行は常に次
に続くブロツクのバイト0から始まる。
1つのブロツクには1つ以上のとられた分岐が
あるため、BHTは目的バイトを必要とする。た
とえば、ブロツクDでは、示された入口点の左に
分岐をとることができる。このとられる可能性の
ある分岐は、第5図には示されておらず、命令順
序の例には含まれていない。しかし、プロセツサ
が前に出会つている可能性のある他の命令順序の
一部である。したがつて、BHTはそのための有
効な項目(エントリ)を持つことができる。
BHTは、入口点のあと最初にとられた分岐を選
択するため、ブロツク入口点を示す目的バイド・
アドレスを用いなければならない。この例では、
ブロツクDにはこのような分岐はなく、次にとら
れた分岐はブロツクEにある。
目的バイト・アドレスはまた、とられた分岐の
あと、命令バツフア119から次命令レジスタ1
23(第3図)へ移動させる正しい次命令を選択
するためにプロセツサが必要とする。
BHTの一般的な説明は以上のとおりである。
次に、上述の機能を持つBHTの特定なハードウ
エアの実施例について述べる。この実施例は、ほ
とんどの装置とは多少異なるが、後述のページ可
能BHTの説明の基礎となるものである。
取られた分岐を含むブロツクのみがBHT配列
135中に項目を有する。
第6図はBHT登録簿133およびBHT配列1
35を示す。配列の項目はブロツク・ベースであ
り、ここではブロツクは取出しごとに記憶装置か
ら得られる命令群である。ブロツク項目のアドレ
スは、付随するブロツクのアドレスであり、これ
らのアドレスは、連想登録簿133に含まれてい
る。BHT登録簿/配列131は、径路137を
経てブロツク・アドレスによりアクセスされ、ア
クセス・アドレスは登録簿内のすべてのアドレス
と比較される。多くて1つの一致があり、突き合
せアドレスを有するブロツク項目が径路139上
の配列135から読み出される。一致がない場合
は、「ミス」の信号が径路139上に送られる。
登録簿/配列131の動作は、配列のブロツク
項目が命令のブロツクではないことを除いては、
キヤツシユによく似ているが、命令のブロツクに
ある可能性のあるとられた分岐に関する情報を含
んでいる。ブロツクXの項目を考えると、第6図
の141に示すように、Xに等しいアドレス値を
有し、ブロツク項目143に相当する。
第7図はブロツク項目の様式を示す。2バイト
を超える大きさのブロツク内には、1つ以上の分
岐をとり得るので、様式には1つ以上のとられた
分岐の情報が示される。4は現在論じているQW
ブロツクの大きさのため適当な許容値を超える。
各分岐サブエントリは、分岐アドレス(BA)、
その目的アドレス(TA)および有効なサブエン
トリ(V)を示すビツトからなる。分岐のブロツ
ク・アドレスはXであることがわかつているの
で、BAはブロツク内の位置を示すだけでよく、
QWブロツクのため3ビツトをとる(命令は370
アーキテクチヤのハーフワード境界上だけにあ
る)。目的はどのブロツクにもあり得るため、
TAは全命令アドレスでなければならない。しか
し、QWより大きいブロツクについては、目的が
同じブロツクにある良好な変化があり、この場合
にはTAは実際の設計中では省略することができ
ることがわかる。
所定のブロツクには4つより少ない分岐がとら
れることがあり、この場合、1つ以上のサブエン
トリが有効な情報を持たないため、有効性ビツト
16が必要となる。また、所定のブロツクに4つ
を超える分岐がとられることがあるため、ユーセ
ージ・ビツトが必要となる。4つのサブエントリ
がすべて有効で、同じブロツクのために5番目の
とられた分岐を入力すると仮定する。既存のサブ
エントリの1つは、新しいサブエントリのための
余地をつくるために削除されなければならない。
ユーセージ・ビツトは、既存のどのサブエントリ
が最近使われなかつたか、したがつて置換の最有
力候補であるかを示す。
上記から、基本BHTを構成するための十分な
情報が蓄積される。これは事象の流れを明らかに
するため、ステツプ・バイ・ステツプ方式で行わ
れる。
第8図は、BHT配列/登録簿131へのアク
セスの開始を示す。全命令アドレスX)は、2つ
の部分145および147に分割して示される径
路137に供給される。部分147は、ブロツク
内の開始位置を指定し、すぐには必要なく、後で
用いられる。
第9図では、BHT配列のアクセスは完了して
「ミス」または「ヒツト」のいずれかの結果を生
じ、いずれも径路139上に報告される。「ミス」
の場合は、このブロツクにはとられた分岐がない
ことになり、制御装置149は径路145上で次
に続くブロツクのアドレスX+1によりアクセス
を開始し、第8図の状態に戻る。「ヒツト」の場
合は、選択されたブロツクの項目は制御装置14
9に送られ、レジスタ151に一時的に保持され
る。
第10図は制御装置149の一部を詳細に示し
たもので、特に正しいサブエントリが、レジスタ
151のブロツク項目からいかに選択されるかを
示す。望ましいことは、第1のとられた分岐のた
めのサブエントリに、このブロツク内の開始位置
の後に出会うことである。選択は述べた規則に従
つて選択論理153により行われる。選択された
BAとTAの対は、選択ゲート155からゲー
ト・アウトされる。全BAは、径路145からの
ブロツク・アドレスを付加することにより与えら
れる。
選択されたBAとTAの対は3つの場所へ行く。
第1に、TA(目的アドレス)部は、新しいブロ
ツクの取出しと、BHTのアクセス(Iバツフア
が一ぱいでない場合)を開始させるのに用いる。
第2に、TAは次に続く制御装置をリセツトす
る。第3に、BAおよびTAは、次命令の後の選
択をIバツフア119から次命令レジスタ123
(第3図参照)へガイドするため、BHT制御装置
内に保管されなければならない。
第11図はこれらの動作を詳細に示したもので
ある。第10図から選択されたBAとTAの対は、
BHTの「ヒツト」により活性化されるゲート1
59に供給される。ゲート159からのTA出力
はゲート165に行き、Iバツフアが一ぱいでな
い場合は、TAをブロツク・アドレスとして使用
して次ブロツクの取出しと、新しいBHTのアク
セスを行う。TA出力はまた、連続ブロツク取出
し制御装置163へも行き、次に続くブロツクが
呼出された場合はTA+1となるよう、最終ブロ
ツク取出しレジスタに入力される。次に続くブロ
ツクは、BHTがゲート161を通じて「ミス」
になつてときに呼出される。
ゲート159からのBAおよびTA出力はまた、
命令をIバツフアから次命令レジスタへの事前ロ
ードをガイドするため、スタツク167に入力さ
れる。スタツク内の最も古い入力のBA部は、次
命令アドレス108(第3図)と比較される。比
較169が「同一」を示した場合、すなわち、次
命令アドレスがBAである場合は、次の次命令ア
ドレスはTAである。機能171はこの目的で
TAを保持し、信号選択ユニツト173は現在の
次命令アドレスを、径路127からIバツフア
へ、またTAを次の次命令アドレスとして発生さ
せる。BAとTAの対は、その後スタツク167
から除去され、処理は次に古い対について続けら
れる。
上記の効果は第3図を参照して理解することが
できる。解号レジスタ105内の命令が、BA/
TAスタツク167中の最も古い入力を持つとら
れた分岐の直前であると仮定する。この場合、加
算器107により発生され、径路108から
BHTに送られる次命令アドレスは、BAと比較
される。選択ユニツト173はこの次命令アドレ
スを径路127上に発生させ、Iバツフア119
に(BA中にある)分岐命令を次命令レジスタ1
23にロードさせる。分岐命令がレジスタ123
から解号レジスタ105に移動すると、機能17
1の制御により選択173は径路127上にTA
を発生させ、Iバツフアにある分岐目的命令を次
命令レジスタ123にロードさせる。その間プロ
セツサの制御装置は分岐がとられたと仮定し
(BHTに基づいて)、更新ICレジスタ117はア
ドレス発生機構111からの目的アドレスがロー
ドされる。次に連続命令取出しが目的アドレスか
ら、他のとられた分岐に出会うまで進められる。
アドレス発生機構111からの実際の目的アド
レスはまた、径路108からBHTへも行き、こ
こでBA/TAスタツク167からの予測目的ア
ドレスTAと比較される。これは比較ユニツト1
70により行われる。これらの2つのアドレスが
一致しない場合は、誤つたTA信号が径路172
上に発生し、実際のTAが径路168上の予測
TAに代り、修正処理スタツク175(第12
図)へ移動する。
BHTは、とられない分岐をとられたと予測し
たり、とられた分岐を予測しなかつたりする誤り
をすることがある。後者の誤りは、分岐がその挙
動を変える場合や、新しい分岐に出会う場合に生
じる。
次にBHTのロードおよび修正について説明す
る。BHTの修正の必要性は、通常付随する分岐
命令が実行およびプツトアウエイ機能113(第
3図参照)に到達したときに決定される。これは
分岐が解号された数サイクル後でよく、その間に
他の命令(これも分岐でよい)が解号される。付
随する分岐上のBA/TA情報は、これらの他の
可能な分岐とともに、前述のデータ・スタツク1
67から除去されている。この情報は、修正が必
要な場合は一時保存されなければならない。
第12図は、径路168を通じてBA/TAス
タツクから除去されているBAとTAの対を受け
る修正処理スタツク175を示す。前述のよう
に、誤つたTAが検出されると、径路168にあ
るのは正しいTAである。また、修正スタツクに
入力されるのは他の分岐のためのBA/TA情報
であり、すなわちBHTにより、とられたと予測
されなかつたものである。これにより、解号レジ
スタ105とエンドオプ機能115の間のプロセ
ツサのパイプラインのある段階にあるすべての分
岐のための修正スタツクに確実に入力があること
になる(第3図参照)。分岐が正しくBHTにより
予測されている場合は、とられている場合も、と
られていない場合も、分岐はエンドオプに進み、
修正スタツクへの入力は除去される。しかし、
BHTの誤りがパイプラインのある点で発見され
た場合は、BHTを訂正するのに必要な情報が正
しいスタツクにある。
訂正プロセスを第12図に示す。訂正の必要
は、分岐実行の2つの時点で検出できる。分岐目
的アドレスがアドレス生成機能111で生成され
た後に、誤つた目的アドレス(TA)が早期に検
出される。誤つたTA信号は、経路172に現わ
れ、2つのことを行う。まず、選択装置177に
訂正処理スタツク175から適切なBA/TA対
が選択される。BA部分は、BHTアレイ(配列)
およびデイレクトリー131にアクセスしてその
項目を変更するのに使われる。第2に、訂正制御
装置179に正しいTAをその項目に挿入させ、
項目をBHTアレイの同じ位置にストア・バツク
させる。
とられる/とられないの予測エラーは、通常は
分岐の前の命令の完了に依存するので、後で検出
される。このエラーは、経路129で合図され、
誤つたTA信号と同じアクシヨンを起こすが、若
干の違いがある。そのエラーが実際にはとられな
かつた分岐をとると予想するものだつた場合、
BHT中の当該の副項目(サブエントリ)が削除
される(すなわち、その有効ビツトが無効に変わ
る)。エラーがとられる分岐を予想しそこなつた
場合、BHTに新しい副項目を追加しなければな
らない。この新しい副項目は、既存の項目に属す
るものでも、新しい項目に属するものでもよい
(第7図に関する考察を参照のこと)。それが既存
の項目に属する場合、空の副項目があればそこに
入力され、そうでなければ最も以前に使用された
副項目を置換してそこに入力される。副項目が新
しい項目に属する場合、新しい項目は空のアレイ
位置があればそこに入り、そうでなければ最も以
前に使用された項目が置換されてそこに入る。
次に、なぜページ可能分岐活動記録テーブル
(PBHT)が標準のBHTより利点があるかにつ
いて説明する。PBHT全体の概念および動作に
ついて詳細に述べる。
BHTが効果的であるために、ほとんどのとら
れた分岐を正しく予測しなければならない。この
レベルの正確さのためには少くとも1000の記入項
目を持つテーブルが必要で、これは物理的に認め
られる大きさである。前の説明でわかるように、
BHTはプロセツサの速度が重要な部分に、すな
わち信号の遅れを減少させるためにできるだけ小
型にしておくべき領域内に直接収められている。
PBHTの1つの利点は、BHTと同じ働きをする
が、速度が重要な領域には比較的少いハードウエ
アしか必要としないことである。第2の利点は第
1の利点と関連するが、PBHTの有効寸法は、
速度が重要な領域に入り込むことなく必要なだけ
大きくできることである。
PBHTとキヤツシユは、概念的には類似点が
あるが、また重要な違いもある。これらの類似点
と相違点を説明すると有益であろう。キヤツシユ
は、主記憶装置が必要なプロセツサの速度をサポ
ートするのに十分な速度がない場合に用いられ
る。キヤツシユは、主記憶装置よりはるかに小さ
く、高速技術を用いて作成することができるた
め、主記憶装置より高速である。キヤツシユは主
記憶装置の内容の一部(たとえば数百万バイトの
うち64Kバイト)しか保持できないが、プロセツ
サの記憶装置への要求の大部分を充足させること
ができる。また、要求された項目がキヤツシユに
ない、いわゆる「ミス」と呼ばれる事象が起る確
率が小さいが、決して0ではない。現在のキヤツ
シユの設計では、これらのミスは予想することは
できず、ある項目に対するプロセツサの要求がミ
スを引出してはじめて知ることができる。したが
つて、プロセツサの要求によつてのみ新しい項目
がキヤツシユ入れられ、プロセツサは通常その項
目が主記憶装置から戻るのを待つ間遅れを生ず
る。
PBHTは、標準のBHTと同じ、またはそれよ
り大きい分岐情報の記憶域によりバツクアツプさ
れた分岐情報のリスト量を保持する小さい記憶装
置からなる。この小型の記憶装置を以下に活性域
と称するが、プロセツサがプログラムの現在の実
行点から到達することができるすべての分岐に関
する情報を含んでいる。これらの到達可能な分岐
は、標準BHT内の分岐のごく小部分であり、こ
れが活性域を小さくすることのできる理由であ
る。活性域だけをプロセツサの速度が重要な領域
に置けば、バツクアツプ用の記憶域は他の場所に
置くことができる。この意味で、活性域はキヤツ
シユに類似し、バツクアツプ記憶域は主記憶装置
に類似している。
しかし、キヤツシユと異なり、活性域はセル
フ・ローデイングである。PBHT内の分岐情報
は、プロセツサがプログラムを通じて処理を進め
るにつれて到達可能になる分岐に関する情報を、
活性域にもたらすため連続的に用いられる。次に
何が行なわれるかを示す例について述べる。
第13図は、前に第5図を参照して説明したプ
ログラムの例におけるQW(ブロツク)の順序を
示す。プロセツサは現在いちばん上のブロツクの
BAL命令を実行していると仮定する。この点か
ら到達できる次の4つの分岐は斜線で示してあ
る。プログラム内には他の多くの分岐があり得る
が、これら4つの分岐だけがただちに到達可能で
あるとする。したがつて、活性域が次のいくつか
の到達可能の分岐に関する情報のみを含むとして
も、なお前述の全BHTと同じ機能を与える。
第13図からはさらに2つの有用な例が引出さ
れる。第1に、2つのブロツク(カドワード)を
保持する活性域のステツプ・バイ・ステツプ動作
について述べる。これは説明のためのみで実際に
は多少大きいものが用いられる。第2に、ブロツ
クは必ずしも活性域における記入の最良の寸法で
はなく、概念は好ましい活性域の記入項目として
数ブロツクからなるセグメントのために導入され
たものである。
第14図は、第13図のプログラム順序の活性
域の連続する内容を示す。内容は9点において示
されている。図のいちばん上は、第13図のいち
ばん上からプロセツサがプログラム順序を開始し
たときの2ブロツクの活性域の内容である。活性
域への最初の記入項目は、分岐#1(BAL)の
ためのもので、この項目は第14図の最初の(上
部の)ブロツク内にある。この記入項目は、ブロ
ツク内の分岐の位置8および目的アドレス
(02E104)を示す。第2の記入項目は空白の項目
で、PBHTと前述のBHTとの違いがここにある
ため、次に説明を行う。
BHTはとられた分岐のみの記入項目を含む。
BHTに特定のブロツクの記入がない場合は、そ
のブロツクには分岐がとられていないと仮定す
る。この仮定は通常正しいが、このブロツクが新
しい場合(前に出会つていない場合)、またはそ
のブロツク内の分岐が、「とられない」から「と
られた」に動作を変えた場合は誤りとなる可能性
がある。
同じ仮定は、PBHTのバツクアツプ域につい
ても行われ、PBHTの活性域についても行われ
ることがある。しかしこれは、活性域における制
御回路の一部を複雑にする不明瞭さの原因となり
得る。活性域にはバツクアツプ域の内容の小部分
のみを含むことは前述のとおりであり、したがつ
て、バツクアツプ域からまだ導入されていないと
いう理由だけで、記入項目が活性域に発見されな
いことがある。ブロツクがとられた分岐を持たな
い場合に活性域に記入項目がない場合は、記入が
ないことをどう解釈してよいかをただちに知るこ
とはできない。これは、ブロツクにはとられた分
岐がないことも意味し、また、ブロツクのための
項目がバツクアツプ域からまだ導入されていない
ことも意味する。この不明瞭さは、活性域に空白
の項目を設けることによりさけることができる。
バツクアツプが「ミス」を発生した場合はいつで
も、空白の項目は活性域に戻され、このミスを発
生させたブロツク・アドレスにより識別される。
この説明により、第14図のいちばん上の空白
の第2の項目は、第1の項目により指示されたブ
ロツク(02E10)は、とられた分岐を含まないこ
とを意味する。したがつて、第13図のブロツク
(02E10)のうち入口点の右側にある命令はすべ
て実行され、次命令が次に続くブロツク
(02E11)から来る。
第14図に戻つて、プロセツサが分岐#1
(BAL)を実行し終ると、活性域に分岐#1の記
入(ブロツク02DE2)を残しておく必要がなくな
るので、除去して新しい記入のための余地を作
る。新しい記入項目を選択するため、PHBT制
御装置は分岐#1の目的アドレス(TA)を使用
し、目的ブロツク(02E10)のための記入項目が
あるかどうか、活性域の登録簿を見る。記入項目
はあるが、そのブロツクにはとられた分岐がない
ため、空白になつている。次に制御装置は次に続
くブロツク(02E11)の登録簿をチエツクして、
記入のないこと(この例の活性域には2つの記入
項目の余地しかないので)を見出だす。次に制御
装置はバツクアツプ域をしらべ、ブロツク02E11
の記入項目を見出だす。この項目は、第14図の
上から2番目の枠に示すように、活性域に書き込
まれる。バツクアツプ域は第15図に示す。
プロセツサがブロツク02E10内の最後の命令を
実行し終ると、ブロツクの記入項目は活性域から
除去され、他の新しい項目のための余地ができ
る。PBHT制御装置は最初に活性域(記入なし)
を、次にバツクアツプ域(記入なし)をアクセス
するため、分岐#2(ブロツク02E11中の)の目
的アドレスを使用する。目的ブロツク02E17には
とられた分岐がなく、3番目の枠に示すように、
空白の項目を活性域に戻すと仮定する。
活性域での削除および記入は、上述の方法でさ
らに行われる。活性域に3ブロツク以上、たとえ
ばNブロツクが含まれる場合は、この手順は、N
個のブロツクが満たされるまで続けられる。活性
域に記入のある最初の分岐がプロセツサにより実
行されると、その記入項目は除去され、上述のよ
うに新しい項目が記入される。このように、活性
域は常に、プロセツサが出会う次のNブロツク
(予測された)までの項目を有する。
この例で、説明を要する設計の選択が行われて
いる。分岐がプロセツサにより実行された後、活
性域の分岐の記入の削除により、必要があればま
だ活性域にあるうちに項目の修正を行う機会が得
られる。しかし、異なる選択も可能である。
BHTは主として予測された命令順序を命令バツ
フアに事前ロードするのに用いることは前述のと
おりである。したがつて、記入項目は事前取出し
に用いた直後に削除することができ、これは、プ
ロセツサが相当する分岐を実行するより十分以前
に行われる。このような早期の削除の利点は、活
性域中の空間を速く自由にすることで、その欠点
は、修正が必要な場合は記入項目を再呼び出しし
なければならないことである。
次にセグメントの概念について説明する。これ
までは、ブロツクの概念を利用してきた。ブロツ
クとは単位として処理される連続したバイトの1
群である。たとえば、命令は一時に1ブロツクず
つ記憶装置から取出され、命令バツフアは通常4
ないし16ブロツクを保持し、BHT/PBHTはブ
ロツクに基づいて説明された。すなわち記入項目
はブロツクごとで、各サブエントリは後続ブロツ
クを指示である。しかし、BHT/PBHTは、ブ
ロツクより大きい、または小さいバイトの群に基
づくことができる。
PBHTについては、ブロツクより大きいバイ
トの群に基づく記入をすることに、いくつかの利
点がある。これらの大きい群を「セグメント」と
名付ける。第16図は、第5図のプログラム順序
が各64バイト(4カドワード)のセグメントとし
て現れたものを示す。第5図の11QWがここでは
6セグメントに相当する。セグメント・ベースで
は、QW(ブロツク)ベースよりも活性域の削
除・挿入は少い。これにより、削除・挿入に長い
時間がかけられ、これが有益になる。この時間は
2つの理由により生じる。それは(1)とられた分岐
はその目的をセグメント内に見出し、アクセスす
べき新しいセグメントを必要としないこと、およ
び(2)セグメント内での次に続くブロツクの事前取
出しは、バツクアツプ域を参照しなくても処理で
きるためである。
おそらく、もつと重要なことは、PBHTのサ
ブエントリ内の目的アドレス(TA)の一部を省
略し、これにより活性およびバツクアツプ域の大
きさを小さくする機会が得られることである。た
とえば第16図のいちばん下のセグメント中の分
岐は、同じセグメント中に目的を有し、したがつ
てアドレス全体を必要とせず、5ビツトで十分で
ある(そのアドレスが省略されていることを示す
のに1または2ビツトが必要)。これより明らか
ではないものに、省略のもう1つの機会がある。
第1の分岐以外の分岐はすべて、次に続くセグメ
ント中に目的があり、これは1ビツトの追加で示
されるため、アドレス全体は不要である。
この時点から先は、PBHTの記入項目はセグ
メント・ベースと仮定する。
次に、セグメント順序およびセグメントの交さ
について説明する。セグメント順序の概念につい
ては第16図に説明されている。プログラム例は
セグメント02DE0のいちばん上から始まる。プロ
グラムはBAL命令のあとこのセグメントからセ
グメント02E10へ「交さ」する。同様に、BC命
令等のあと、プログラムはセグメント02E10から
セグメント02E14へ交さする。一般に、どの期間
内でも、プロセツサにより実行される命令は、実
行されている連続する命令を含むセグメントの順
序として表わされる。この順序が前もつてわかつ
ていれば、セグメントを命令バツフアに事前取出
しを行う完全な仕事を行うことが可能となり、プ
ロセツサは記憶装置から命令が取出されるのを待
つための時間のロスがなくなる。
もちろん実際のセグメントの順序を前もつて知
ることはできないが、セグメントの順序を予測す
るためにPBHTを用いることができる。広汎な
シミユレーシヨンにより、予測した順序は実際の
ものと非常に近いが、時に誤りがあることがわか
る。誤りがあつた後、それが修正されるまで、そ
れ以上の予測は無駄になる。予測する期間が長く
なるほど誤りの確率は高くなるので、実行から
先、どこまで予測ができるかという実際的な限度
がある。
次に、PBHTの要素のいくつかをもう少し詳
細に述べる。先ず、分岐予測情報をプロセツサに
与える要素について説明する。これらの機能は、
先に述べたBHTと同様で、活性域と活性域登録
簿を含む。残りの要素は、常に適切な分岐情報が
活性域にあるように、活性域のセルフ・ローデイ
ングを行うもので、これについて説明する。
第17図は活性域および活性域登録簿を示す。
プロセツサの立場から、これは前に第6図に示し
たBHT登録簿および配列と同等である。しかし、
もう一度強調しなければならない2つの相違点が
ある。BHT配列は大きく、少くとも1000の記入
項目、おそらく4000もの記入項目を有するのに対
し、活性域は小さい。すなわち8つの項目が示さ
れ、シミユレーシヨンの結果、これは適当な数で
あることが立証されている。他の相違点は、活性
域および登録簿には、ブロツクよりもセグメント
の記入項目を有することである。これはすでに行
つたBHTの説明を変えるものではなく、明らか
な方法でハードウエアーの一部の詳細設計に影響
を与えるかも知れないがこれ以上論じないことに
する。
活性域とBHTは、プロセツサの通常の動作で
は同等であるので、第6図の番号はそのまま第1
7図でも使用する。活性域135は(たとえば)
8つの項目を含み、登録簿にアクセスが行われる
とそのうちの1つが読出され、または1つも読出
されない。両方の出力は径路139に示すとおり
である。活性域に与えられたセルフローデイング
機構のため、アクセスの大部分がアクセスに成功
すると考えることができる。
第17図で、活性域登録簿133は、活性域の
各項目のセグメント・アドレスを保持する。説明
を容易するため、この登録簿は各アクセス・セグ
メント・アドレスに対する連想突合わせを行うと
仮定する。一致が検出されると、相当する配列記
入項目135が径路139上に読出され、そうで
ない場合はミスの信号が出される。実際の装置で
は、おそらくキヤツシユの文献に十分に示されて
いるように、セツト連想機構を用いていることが
わかる。径路137に出されたアクセス・セグメ
ント・アドレスはアドレスXであると仮定する。
ここで示されているように、登録簿にアドレス記
入項目141との一致があり、径路139上に配
列記入項目143が読出される。
第18図は配列記入目の様式を示す。これは、
今回はセグメントである。これを第7図と比較す
ると、セグメントの概念がブロツクに変つている
以外、違いはない。4つまでのとらえた分岐の記
入が、ここではブロツク当たりでなく、セグメン
ト当りの数として許容されることが示されてい
る。シミユレーシヨンの結果、64バイトのセグメ
ントに対し、4つの記入項目で実際上十分である
ことがわかる。たとえば、128バイトの大きいセ
グメントについては、8つの記入項目が必要であ
る。
選択されたセグメント記入項目143は、製御
装置149(第9図)への径路139上に送ら
れ、レジスタ151に記憶される。BHTおよび
第10図について前に述べたように、適切な
BA/TAが選択ゲート155によるセグメント
記入項目から選択される。これ以後、PBHTの
動作は前にBHTについて述べたものと全く同じ
で、ここでは繰り返して説明しない。あとは、
PBHTのセルフローテイング動作について説明
する。
PBHTのセルフローデイングは、すでに説明
したBHTの動作とは全く独自のものである。完
全な予測を行なうPBHTについて、唯一必要な
対話は、プロセツサの実行動作が1つのセグメン
トから他のセグメントへ移動したことを通知す
る、セルフローデイング制御装置に対する信号で
ある。この信号は、セルフローデイング制御装置
がその予測したセグメント順序を1セグメント以
上進めるのに用いる。また、予測は完全でないた
め、セルフローデイング制御装置は予測の誤りが
発見されたことを通知されなければならない。こ
れは予測された順序が予測の誤りの時点後に修正
されなければならないためである。
最初にセルフローデイング動作の一般的説明を
行う。これには3つの相がある。すなわち、活性
域にもバツクアツプ域にも有効な記入項目がない
場合の始動、一部有効な項目がある場合の移行、
およびほとんど、またはすべての項目が有効で、
分岐予測の正確さが最良である場合の平衡であ
る。まず始動動作について、次に平衡動作につい
て述べる。移行動作は始動および平衡動作の混合
であるため、始動および平衡の説明により理解で
きる。
繰返すと、始動の場合は活性域にもバツクアツ
プ域にも有効な記入項目がない。プロセツサは始
動最初にとらえた分岐に出会い、PBHTには記
入項目がないため、予測の誤りを示す信号を出
す。前述のように、この分岐のセグメント・アド
レスは活性域内に探され、見出されない。したが
つて、新しい項目がオンにセツトされた「変更ビ
ツト」311(第17図参照)により活性域に記
入される。プロセツサはすでにこの分岐を実行し
ているため、その項目を活性域に残しておく必要
がないので、変更された項目はただちに径路30
9および303を経てセルフローデイング制御装
置によりバツクアツプ域にコピーされ、項目は活
性域から除去される。次に、この分岐の目的から
始めて、セルフローデイング制御装置は活性域に
次のいくつかのとられた分岐を事前にロードしよ
うとする(もちろん、始動直後には項目は発見さ
れない)。
第19図を参照すると、予測の誤りは径路12
9上に信号として出され、予測の違つた分岐の分
岐アドレス(BA)および目的アドレス(TA)
を含む。セルフローデイング制御装置は、径路3
03上のTAセグメント・アドレスによりバツク
アツプ域にアクセスし、記入項目を発見しない。
記入項目はとらえた分岐についてのみ作られるか
ら、項目を発見しないことは、アクセスしたセグ
メントが前に見られ、とらえた分岐を含まない
か、またはアクセスしたセグメントが前に見られ
なかつたいずれかを意味する。第2の意味は有用
でないため、常に第1のものであると仮定する。
前に説明したように、バツクアツプ域のミスは、
空白セグメントを活性域に戻す。次に制御装置は
次に続くセグメントのアドレス(TA+1)をア
クセスし、再び項目がないことを見出す。これ
は、TA+2、TA+3等により、他の予測の誤
りを示す信号が径路129に達するまで続けら
れ、その時点で上記は新しいTAにより繰返され
る。
活性域はすぐにほとんど空白のセグメントによ
り埋められ、これらはプロセツサの実行が進むに
つれて、修正されたセグメントに変えられる。プ
ロセツサが新しいとられた分岐に出合い続ける
と、項目がバツクアツプ域に記入され、このよう
にしてバツクアツプ域は容量一ぱいまで満たされ
る。活性域はまた、セルフローデイング制御装置
がバツクアツプ域に記入項目を見出し始めると、
径路305をセルフローデイング制御装置へ、次
に径路307を活性域に戻る記入項目により満た
される。活性域へのロードは、活性域が一ぱいに
なると止まる。これは、下に述べるように、空間
が利用可能になるといつも再び続けられる。
次に、バツクアツプ域が平衡になつたとき、す
なわち満ぱいになつたときのセルフローデイング
の動作について述べる。この時、活性域もロード
される。まず、予測に誤りがない場合について考
える。この場合、動作は非常に簡単である。プロ
セツサが分岐を実行し、修正が必要ない場合は、
活性域の相当する項目は除去され、セルフローデ
イング制御装置はバツクアツプ域から予測したセ
グメント順序中の1つの項目を取出すことができ
る。プログラム内にループがある場合には、所定
のセグメントが短時間のうちに再記入されること
があるため、実際の動作はこれほど簡単ではな
い。たとえばセグメントA、B、C等を考える
と、プロセツサが行うプログラムは
ABCABCABCDEF……の順序で行われる。活性
域(8セグメントの)はセグメント
ABCABCABにより満たされ、これは予測した
順序を正しく反映するが、これには2つの欠点が
ある。第1に、活性域の空間は同じセグメントの
余分なコピーを記憶するため無駄になり、第2
に、セグメントが必要とする修正をすべてのコピ
ーについて行わなければならないことでる。
活性域には1つだけのコピーを許容する設計が
好ましい。上記セグメントの再使用を許容するた
め、活性域のための登録簿記入項目内にカウン
ト・フイールドを導入する。第17図で、このカ
ウント・フイールド313はセグメントの最初の
項目のため0から開始し、セルフローデイング制
御装置がこのセグメントの再記入を予測するたび
に、カウント・フイールドは1つだけ進む。この
設計で、活性域の記入項目の削除は次のとおりで
ある。プロセツサが分岐を実行し、修正が不要の
場合は、活性域の相当する項目は1だけ減じたカ
ウント・フイールドを有する。結果が負(0未
満)の場合は、記入項目は削除され、それ以外の
場合は削除されない。
記入項目が修正されなければならないときは、
そのカウント・フイールドは無視され、項目が修
正され、バツクアツプ域にコピーされた後削除さ
れる。活性域内の他の項目はすべて、少くともそ
のカウント・フイールドが0にリセツトされ、ま
たは無効とマークされる。いずれの場合も、セル
フローデイング制御装置は、修正された分岐の目
的から始めて活性域を再充填または再確認する。
セルフローデイング制御装置の、全体の動作を
示すために、全般的な説明を行つた。どのセグメ
ントが活性域にロードされるかという知識が仮定
された。この知識がいかにアナライザにより得ら
れ、活性域のロードのため、いかにステージヤに
より用いられるかを以下に述べる。
アナライザを設ける理由は、まずプログラム例
のセグメントを示す第16図を参照すると理解す
ることができる。これらのセグメントには時には
異なるセグメントを指し(たとえばいちばん上の
セグメント02DE0はセグメント02E10中の開始ア
ドレス02E104を指す)、時には同じセグメントを
指す(たとえばいちばん下のセグメントのBCは
同じセグメントアドレス02E234を指す)とられ
た分岐がある。また、セグメントは、その入口点
の後に、とられた分岐を持たないこともあり、こ
の場合は次のセグメントは次に続くセグメント
(たとえば上から3番目のセグメント02E14は、
後に次に続くセグメント02E18が続く)である。
これらの例に見られるように、セグメントの順
序は予測できるが、各連続セグメントを分析しな
ければ予測することはできない。根本的な問題
は、セグメントへの入口点から始めて各セグメン
トを観察し、入口点後のセグメントにあるすべて
のとられた分岐の正味の影響を決定することであ
る。これは通常第16図の例に見られるように、
それほど複雑ではない。しかし、起る可能性のす
べてが与えられなければならない。第20図は4
つのとられた分岐を含む可能なセグメントを示
し、このうち2つは同じセグメント内に目的を有
し、他の2つはそれぞれ異なるセグメントAおよ
びBに目的を有する。
この図では、すべての図と同様に、命令の実行
は左から右へ行われる。図の上部は4つのとられ
た分岐の位置を示し、各分岐からの矢印は、分岐
の目的を示す。前に述べたように、分岐の2つは
セグメント内に目的を持つ。すなわち分岐#1は
目的をその前方に、分岐#3は目的のその後方に
有する。分岐#2は外部目的セグメントAを、分
岐#4は外部目的セグメントBを有する。
図の下部は、このセグメントへのアドレスがあ
る5つの領域P、Q、R、SおよびTを示す。こ
れらの領域を次に試験する。
領域Pへ入りが行われると、分岐#1は、次に
続くセグメントに出口を有する領域Tへ行く。
入りが領域Qに行われると、分岐#2はセグメ
ントAに出る。
入りが領域Rに行われると、分岐#3は領域P
に戻り、次に分岐#1が、次に続くセグメントに
出口を有する領域Tへ行く。
入り領域Sに行われると、分岐#4はセグメン
トBに出る。
入りが領域Tに行われると、出口は次に続くセ
グメントである。
これらの出力は、第21図のセグメント入口・
セグメント出口表に要約されている。
第20図から、入口領域は入口アドレスにより
識別されることがわかる。特に、 入口アドレスがBA1(分岐#1のアドレス)
に等しい小さい場合は領域P。これらのアドレス
はこのセグメント内またはこのセグメントに関係
するものであり、記憶装置アドレス全体ではな
い。
入口アドレスがBA1より大きく、BA2より
小さいかBA2に等しい場合は領域Q。
入口アドレスがBA2より大きく、BA3より
小さいかBA3に等しい場合は領域R。
入口アドレスがBA3より大きく、BA4より
小さいかBA4に等しい場合は領域S。
入口アドレスがBA4より大きい場合は領域
T。
とられた分岐のアドレスは、もちろん、セグメ
ントの記入項目から得られ(第18図参照)、入
口アドレスは前のセグメントの出口アドレスであ
る。アナライザの仕事は、上に述べた規則および
情報を用いて、そのセグメントへの入口アドレス
に基づいて各後続セグメントの出口アドレスを計
算することである。ステージヤの仕事は、アナラ
イザの仕事に基づいて、予測したセグメント記入
項目の順序で活性域を満たしたままにすることで
ある。この全体の流れを第22図に示す。
アナライザの流れ図を第23図および第24図
に示す。新しいセグメントの出口分析は、領域を
識別することにより始められる。これらはセグメ
ント内のとられた分岐により限界が定められる。
たとえば、第20図において、BR#1はセグメ
ントPの限界を定め、BR#2はセグメントQの
限界を定める。最後のセグメントTは、セグメン
トの終端により限界が定められる。
領域の限界を定める分岐は、その領域の最終出
口アドレスを決定する。その分岐が外部目的アド
レス(すなわち他のセグメントへの)を有する場
合は、この外部目的アドレスは、ただちにその領
域の出口アドレスとして割当てられる。この割当
ては、出口分析の第1相で行われる。
分岐が内部目的アドレス(すなわちセグメント
内)を有する場合、最終の出口アドレスはただち
に明らかにはならず、第1相で割当てられたよう
な外部出口アドレスを持つ領域に入るまで、領域
ごとにトレースされなければならない。第20図
におけるこのような外部出口アドレスを有する領
域はQ、SおよびTである。このトレースは出口
分析の第2相で行われる。分析が進むにつれて、
所定の領域の出口アドレスは3つの段階をとる。
すなわち 1 出口アドレスがない 2 出口アドレス処理中(すべて1で示される) 3 最終出口アドレス の3つである。
最終出口アドレスば外部で、セグメント内を循
環する分岐ループの可能性を除き、次に続くセグ
メントのアドレスを含む。このようなループは最
初には分岐活動の変化の結果として現われ、この
変化は予測できるが、予測することは重要ではな
い。代替方法は予測の誤りを受け入れることであ
る。
前に述べたように、ステージヤの仕事は、アナ
ライザの仕事に基づいて、活性域を予測したセグ
メント記入項目の順序で満たしておくことであ
る。この目的は、活性域に常にプロセツサが使用
しており、または状来使用するセグメントを含ま
せておくことである。ステージヤは活性域に空間
がある場合のみ新しいセグメントを導入し、空間
はプロセツサがセグメント内の活動を終了して、
その記入項目が削除されたときのみ利用できるよ
うになる。このようにして、ステージヤはプロセ
ツサよりいくつも先のセグメントを処理できるか
無限に先のものは処理できない。8セグメントの
活性域については、ステージヤはプロセツサより
7セグメント先、または8セグメント中のいくつ
かが再記入される場合は恐らくもう少し先のセグ
メントまで処理できる。このことは第19図の付
随するカウント値313に示されている。
ステージヤの動作は、第22図の要素409,
411,401,403および405で示され
る。決定要素411は、活性域が満ぱいのときは
ステージヤを停止させる。その他の場合は、アナ
ライザからの出口アドレス409は、分析403
のための次のセグメントを得る入口アドレス40
1としてステージヤにより使用される。次のセグ
メントは、活性域にすでにあつてもなくてもよ
い。次のセグメントが活性域にある場合は、取出
されて分析のためにアナライザに送られ、すでに
分析されている場合は、その出口アドレスがステ
ージヤに送られる。ない場合は、バツクアツプ域
から取出されてアナライザと活性域の両方に送ら
れる。次のセグメントがバツクアツプ域にない場
合は、空白セグメントが活性域に戻され、それ以
上の分析を行うには、プロセツサが空白セグメン
トに到達し、その出口アドレスを決定するまで待
たなければならない。
【図面の簡単な説明】
第1図は命令取出し機構のブロツク・ダイヤグ
ラム、第2図は分岐命令の事前取出しを含む命令
取出し機構のブロツク・ダイヤグラム、第3図は
分岐活動記録テーブル(BHT)を含む命令取出
し機構のブロツク・ダイヤグラム、第4図は命令
順序の1例を示す図、第5図はカドワード順序を
示す図、第6図はBHT登録簿およびBHT配列を
示す図、第7図はブロツク項目様式を示す図、第
8図はBHT配列/登録簿へのアクセスの開始を
示す図、第9図は「ヒツト」か「ミス」のいずれ
かのためのBHT配列アクセスの完了を示す図、
第10図は、第9図に示す制御ブロツク149の
詳細なブロツク・ダイヤグラム、第11図は本発
明による取出し機構を説明するブロツク・ダイヤ
グラム、第12図はBHTのロードおよび修正機
構のブロツク・ダイヤグラム、第13図は取られ
た分岐を強調した第5図のカドワード順序を示す
図、第14図は2ブロツクからなる活動区域の連
続する内容を説明する図、第15図はシステムの
活動区域のバツクアツプ区域の構造を示す図、第
16図はそれぞれ64バイト(4カドワード)のセ
グメントとして現れる第5図のプログラム順序を
示す図、第17図は活動区域および活動区域登録
簿を示す図、第18図はアレイ入力のセグメント
様式を示す図、第19図は自己ローデイング
BHT操作を示すシステムのブロツク・ダイヤグ
ラム、第20図はセグメント内の分岐活動の説明
図、第21図はセグメント入口/セグメント出口
テーブルを示す図、第22図はステイジヤ/アナ
ライザ/ステイジヤの流れ図、第23図および第
24図はアナライザの流れ図である。

Claims (1)

  1. 【特許請求の範囲】 1 連続したバイトからなる複数のセグメントへ
    分割された命令群の分岐情報を、各セグメントに
    含まれる分岐命令の分岐アドレス及び目的アドレ
    スからなるセグメント記入項目としてそれぞれ記
    録する分岐活動記録テーブルにおいて、n個(n
    は1より大きい正の整数)のセグメント記入項目
    を記憶し、かつ該セグメント記入項目内の分岐情
    報を処理する手段を含む活性高速部と、 上記の分岐活動記録テーブルの残りのセグメン
    ト記入項目を記憶する上記の活性高速部より低速
    大容量のバツクアツプ部と、 上記活性高速部内の各セグメントの出口アドレ
    スが上記バツクアツプ部に記憶されている次のセ
    グメント記入項目の目的アドレスに相当するか否
    かを決定し、相当する場合には該次のセグメント
    記入項目を上記バツクアツプ部から上記活性高速
    部へ更新するローデイング制御装置を有すること
    を特徴とする分岐活動記録テーブル。
JP61032060A 1985-04-29 1986-02-18 分岐活動記録テ−ブル Granted JPS61250738A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/728,424 US4679141A (en) 1985-04-29 1985-04-29 Pageable branch history table
US728424 1985-04-29

Publications (2)

Publication Number Publication Date
JPS61250738A JPS61250738A (ja) 1986-11-07
JPH0318211B2 true JPH0318211B2 (ja) 1991-03-12

Family

ID=24926799

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61032060A Granted JPS61250738A (ja) 1985-04-29 1986-02-18 分岐活動記録テ−ブル

Country Status (5)

Country Link
US (1) US4679141A (ja)
EP (1) EP0199947B1 (ja)
JP (1) JPS61250738A (ja)
CA (1) CA1244554A (ja)
DE (1) DE3682700D1 (ja)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4763245A (en) * 1985-10-30 1988-08-09 International Business Machines Corporation Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table
EP0258453B1 (en) * 1986-02-28 1993-05-19 Nec Corporation Instruction prefetch control apparatus
US5440704A (en) * 1986-08-26 1995-08-08 Mitsubishi Denki Kabushiki Kaisha Data processor having branch predicting function
JPS6393041A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
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
US4942520A (en) * 1987-07-31 1990-07-17 Prime Computer, Inc. Method and apparatus for indexing, accessing and updating a memory
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
JP2723238B2 (ja) * 1988-01-18 1998-03-09 株式会社東芝 情報処理装置
US5522053A (en) * 1988-02-23 1996-05-28 Mitsubishi Denki Kabushiki Kaisha Branch target and next instruction address calculation in a pipeline processor
JPH01271838A (ja) * 1988-04-22 1989-10-30 Fujitsu Ltd マイクロプログラム分岐方法
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
US5127091A (en) * 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
US5689670A (en) * 1989-03-17 1997-11-18 Luk; Fong Data transferring system with multiple port bus connecting the low speed data storage unit and the high speed data storage unit and the method for transferring data
DE69030931T2 (de) * 1989-04-24 1998-01-15 Ibm Mehrfachsequenzprozessorsystem
US5093777A (en) * 1989-06-12 1992-03-03 Bull Hn Information Systems Inc. Method and apparatus for predicting address of a subsequent cache request upon analyzing address patterns stored in separate miss stack
JP2508280B2 (ja) * 1989-07-28 1996-06-19 日本電気株式会社 分岐ヒストリテ―ブル制御方式
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
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
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
WO1991013402A1 (en) * 1990-02-26 1991-09-05 Nexgen Microsystems Two-level branch prediction cache
US5093778A (en) * 1990-02-26 1992-03-03 Nexgen Microsystems Integrated single structure branch prediction cache
EP0463965B1 (en) * 1990-06-29 1998-09-09 Digital Equipment Corporation Branch prediction unit for high-performance processor
US5226138A (en) * 1990-11-27 1993-07-06 Sun Microsystems, Inc. Method for selectively transferring data instructions to a cache memory
JPH04328634A (ja) * 1991-04-26 1992-11-17 Nec Corp マイクロプログラム制御装置
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
EP0628184B1 (en) * 1992-02-27 1998-10-28 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
JP3644959B2 (ja) * 1992-09-29 2005-05-11 セイコーエプソン株式会社 マイクロプロセッサシステム
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
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 피터 엔. 데트킨 분기목표버퍼의추측기록메카니즘
AU6701794A (en) * 1993-05-14 1994-12-12 Intel Corporation Speculative history mechanism in a branch target buffer
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
EP0649084A1 (en) * 1993-10-18 1995-04-19 Cyrix Corporation Microprocessor branch processing
JP2801135B2 (ja) * 1993-11-26 1998-09-21 富士通株式会社 パイプラインプロセッサの命令読み出し方法及び命令読み出し装置
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US5740416A (en) * 1994-10-18 1998-04-14 Cyrix Corporation Branch processing unit with a far target cache accessed by indirection from the target cache
US5634119A (en) * 1995-01-06 1997-05-27 International Business Machines Corporation Computer processing unit employing a separate millicode branch history table
JP3494736B2 (ja) * 1995-02-27 2004-02-09 株式会社ルネサステクノロジ 分岐先バッファを用いた分岐予測システム
US6185674B1 (en) 1995-04-05 2001-02-06 International Business Machines Corporation Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor
US5699536A (en) * 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting
US5649178A (en) * 1995-06-07 1997-07-15 International Business Machines, Corporation Apparatus and method for storing and initializing branch prediction with selective information transfer
US5905881A (en) * 1995-11-30 1999-05-18 Unisys Corporation Delayed state writes for an instruction processor
US5742805A (en) * 1996-02-15 1998-04-21 Fujitsu Ltd. Method and apparatus for a single history register based branch predictor in a superscalar microprocessor
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
EP0798632B1 (en) * 1996-03-25 2002-09-11 Sun Microsystems, Inc. Branch prediction method in a multi-level cache system
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
US5774710A (en) * 1996-09-19 1998-06-30 Advanced Micro Devices, Inc. Cache line branch prediction scheme that shares among sets of a set associative cache
US5954816A (en) * 1996-11-19 1999-09-21 Advanced Micro Devices, Inc. Branch selector prediction
US5978906A (en) * 1996-11-19 1999-11-02 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US6253316B1 (en) 1996-11-19 2001-06-26 Advanced Micro Devices, Inc. Three state branch history using one bit in a branch prediction mechanism
US5995749A (en) 1996-11-19 1999-11-30 Advanced Micro Devices, Inc. Branch prediction mechanism employing branch selectors to select a branch prediction
US5838962A (en) * 1997-04-09 1998-11-17 Hewlett-Packard Company Interrupt driven dynamic adjustment of branch predictions
US5956495A (en) * 1997-09-22 1999-09-21 International Business Machines Corporation Method and system for processing branch instructions during emulation in a data processing system
US6108774A (en) * 1997-12-19 2000-08-22 Advanced Micro Devices, Inc. Branch prediction with added selector bits to increase branch prediction capacity and flexibility with minimal added bits
US6289441B1 (en) * 1998-01-09 2001-09-11 Sun Microsystems, Inc. Method and apparatus for performing multiple branch predictions per cycle
US6314493B1 (en) * 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
US6189091B1 (en) 1998-12-02 2001-02-13 Ip First, L.L.C. Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection
US6499101B1 (en) 1999-03-18 2002-12-24 I.P. First L.L.C. Static branch prediction mechanism for conditional branch instructions
US6912650B2 (en) * 2000-03-21 2005-06-28 Fujitsu Limited Pre-prefetching target of following branch instruction based on past history
US6546481B1 (en) 1999-11-05 2003-04-08 Ip - First Llc Split history tables for branch prediction
US6502188B1 (en) 1999-11-16 2002-12-31 Advanced Micro Devices, Inc. Dynamic classification of conditional branches in global history branch prediction
US7493480B2 (en) * 2002-07-18 2009-02-17 International Business Machines Corporation Method and apparatus for prefetching branch history information
US7337271B2 (en) * 2003-12-01 2008-02-26 International Business Machines Corporation Context look ahead storage structures
JP2006048132A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 分岐予測装置、分岐予測装置の制御方法、情報処理装置
US7461209B2 (en) 2005-12-06 2008-12-02 International Business Machines Corporation Transient cache storage with discard function for disposable data
US20080088619A1 (en) * 2006-10-17 2008-04-17 Robert Allen Shearer Branch Prediction for Acceleration Data Structure Traversal
EP2243098A2 (en) * 2008-02-11 2010-10-27 Nxp B.V. Method of program obfuscation and processing device for executing obfuscated programs
US8131982B2 (en) * 2008-06-13 2012-03-06 International Business Machines Corporation Branch prediction instructions having mask values involving unloading and loading branch history data
US10338923B2 (en) * 2009-05-05 2019-07-02 International Business Machines Corporation Branch prediction path wrong guess instruction
US8521999B2 (en) * 2010-03-11 2013-08-27 International Business Machines Corporation Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history
US9032191B2 (en) 2012-01-23 2015-05-12 International Business Machines Corporation Virtualization support for branch prediction logic enable / disable at hypervisor and guest operating system levels
US8935694B2 (en) 2012-01-23 2015-01-13 International Business Machines Corporation System and method for selectively saving and restoring state of branch prediction logic through separate hypervisor-mode and guest-mode and/or user-mode instructions
US9146739B2 (en) * 2012-06-14 2015-09-29 International Business Machines Corporation Branch prediction preloading
US20140025894A1 (en) * 2012-07-18 2014-01-23 Electronics And Telecommunications Research Institute Processor using branch instruction execution cache and method of operating the same
US9507597B2 (en) 2013-06-10 2016-11-29 Via Alliance Semiconductor Co., Ltd. Selective accumulation and use of predicting unit history
US9891918B2 (en) 2014-01-27 2018-02-13 Via Alliance Semiconductor Co., Ltd. Fractional use of prediction history storage for operating system routines
US20150268961A1 (en) * 2014-03-21 2015-09-24 Samsung Electronics Co., Ltd. Decoupling l2 btb from l2 cache to accelerate search for miss after miss

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4453230A (en) * 1977-12-29 1984-06-05 Tokyo Shibaura Electric Co., Ltd. Address conversion system
US4370711A (en) * 1980-10-21 1983-01-25 Control Data Corporation Branch predictor using random access memory
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions

Also Published As

Publication number Publication date
EP0199947A3 (en) 1988-12-21
EP0199947B1 (en) 1991-12-04
DE3682700D1 (de) 1992-01-16
US4679141A (en) 1987-07-07
EP0199947A2 (en) 1986-11-05
CA1244554A (en) 1988-11-08
JPS61250738A (ja) 1986-11-07

Similar Documents

Publication Publication Date Title
JPH0318211B2 (ja)
US6055621A (en) Touch history table
US4725947A (en) Data processor with a branch target instruction storage
US5623614A (en) Branch prediction cache with multiple entries for returns having multiple callers
EP0227892B1 (en) Updates to branch history table in a pipeline processing system
US6351796B1 (en) Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
US5603004A (en) Method for decreasing time penalty resulting from a cache miss in a multi-level cache system
US4583165A (en) Apparatus and method for controlling storage access in a multilevel storage system
US5276882A (en) Subroutine return through branch history table
JP3659340B2 (ja) 命令履歴キャッシングを使用して推測的に命令を実行する回路、製品、およびそのための方法
KR100333470B1 (ko) 세트 예측을 사용하여 세트 연상 캐시에서 대기 시간을감소시키기 위한 방법 및 장치
US5790823A (en) Operand prefetch table
US5805879A (en) In a pipelined processor, setting a segment access indicator during execution stage using exception handling
US5297281A (en) Multiple sequence processor system
EP0480193A2 (en) Multi-prediction branch prediction mechanism
EP0375950A2 (en) Method and hardware implementation of complex data transfer instructions
KR100335672B1 (ko) 메모리페이지크로싱예측주석을사용하는실제주소지정데이타기억구조로부터의빠른데이타검색
US5930832A (en) Apparatus to guarantee TLB inclusion for store operations
KR20010074978A (ko) 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치
JPH02206837A (ja) パイプライン方式のコンピューターシステムにおける色々な個数の潜在的メモリーアクセス矛盾を解決する方法及び装置
JPH02208729A (ja) マイクロコード式実行装置での並列動作による複数機能装置の制御
WO1996017299A1 (en) Scalar data cache for a vector processor
JP3641031B2 (ja) 命令装置
US5434986A (en) Interdependency control of pipelined instruction processor using comparing result of two index registers of skip instruction and next sequential instruction
US5794027A (en) Method and apparatus for managing the execution of instructons with proximate successive branches in a cache-based data processing system