JPH0557617B2 - - Google Patents

Info

Publication number
JPH0557617B2
JPH0557617B2 JP2273506A JP27350690A JPH0557617B2 JP H0557617 B2 JPH0557617 B2 JP H0557617B2 JP 2273506 A JP2273506 A JP 2273506A JP 27350690 A JP27350690 A JP 27350690A JP H0557617 B2 JPH0557617 B2 JP H0557617B2
Authority
JP
Japan
Prior art keywords
branch
branch instruction
bht
entry
ddbt
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 - Lifetime
Application number
JP2273506A
Other languages
English (en)
Other versions
JPH03147022A (ja
Inventor
Jooji Ema Fuiritsupu
Uiruson Naito Joshua
Haabaato Hoomareen Jeemusu
Naazan Rechesuchafuen Radorufu
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 JPH03147022A publication Critical patent/JPH03147022A/ja
Publication of JPH0557617B2 publication Critical patent/JPH0557617B2/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
    • 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/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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers

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

【発明の詳細な説明】 A 産業上の利用分野 本発明は、一般にデータ処理の分野及び計算機
内の分岐命令の処理に関する。さらに詳しくは、
本発明は、結果とテスト・オペランド位置の双方
において変化できる条件付分岐を含む、条件付分
岐命令を処理するための改善された方法と装置に
関する。
B 従来の技術及び課題 高性能プロセツサでは1つの命令を分解して、
各ステツプが複数の異なるステツプ処理装置の1
つで実行される複数のステツプにすることが一般
に実用化されている。各ステツプ処理装置は主
に、連続命令の特定のステツプを各サイクルで受
け入れる能力を有する。
たとえば、パイプラインを考えると、このパイ
プラインのステージは、(i)命令復合(DEC)、(ii)
オペランド・アドレス(または分岐命令の場合、
分岐先アドレス)のアドレス生成(AGEN)、(iii)
オペランドを取り出す(または分岐命令の場合、
分岐先の命令を取り出す)ためのキヤツシユ・ア
クセス(CACHE)、及び(iv)命令によつて指定さ
れた入力オペランドに対する機能動作を行なうた
めの実行(EXEC)である。分岐命令がなけれ
ば、プロセツサは各サイクル毎に新しい命令を復
合できる。したがつて、模範的なパイプラインで
は、4つの命令が同時になんらかの動作段階にあ
ることが可能である。
1サイクル毎に1つの命令を実行することを前
提に、引き続く命令を1サイクルずつずらした状
態において、連続したステツプをオーバーラツプ
させることが一般に実用化されている。理想的に
は、これによつて、所与の命令のすべてが完了に
数サイクルを要する場合でも、各サイクル毎に1
つの命令を取り扱うことが可能になる。
この理想的なオーバーラツプは、いくつかの理
由で常に可能なわけではない。主な理由は分岐命
令の頻繁な発生である。
分岐命令が復号されると、分岐先アドレスを計
算(ACEN)しなければならず、また分岐先の
命令がパイプラインに入るためにはその前にそれ
を取り出(CACHE)さなければならないため、
それ以上の復号は停止する。したがつて、その分
岐が無条件分岐であつても、処理継続可能となる
前に少なくとも2サイクルが「浪費」され、その
結果プロセツサ性能が低下する。
前記の例で述べた無条件分岐は、分岐に関して
プロセツサ性能に与える影響が、最も少ない。無
条件分岐は分岐命令からの分岐先の命令(以下
TARGと略す)へと制御を移す。すなわち、分
岐命令が復合された時点で、(TARGへの)制御
の移動が起こることは既知である。(性能に関し
て)より高くつく分岐命令は条件付分岐である。
この命令は、ある条件(以前の命令の結果によつ
て決定される)が成立した場合に限つてTRAG
へ制御を移すことを指定する。
条件付分岐命令は、模範的なパイプラインに1
つの追加サイクルという(名目上の)ペナルテイ
を引き起こす。これは、制御がTARGに移るべ
きか否かを判定するために条件付分岐が実行
(EXEC)を完了しなければならないからである。
制御をTARGに移さないと判定した場合、この
分岐命令に続いて復号される命令は、アドレス上
この分岐命令に続く次の命令である。従つて、条
件付分岐命令が分岐しなくても、この分岐に関連
する3サイクル(この例の場合)の名目上の遅れ
が存在する。
明らかに、条件付分岐命令が実際に分岐しない
と復号の時点で判定できる場合には、この命令に
関連したペナルテイは存在しない、すなわち、分
岐命令の復号に続いて即座に続く次の命令を復号
できる。しかし、この分岐命令が分岐すると復号
の時点で判定された場合、この分岐に関連した2
サイクルのペナルテイが存在する。すなわち、分
岐先アドレスを生成しなければならず、また分岐
先の命令を取り出さなければならない。(ただし、
分岐が実行(EXEC)される分の追加サイクルは
この場合節約される。) 多くの特許が分岐予測機構を目的としている
が、各々いくつかの利点と欠点とを有する。たと
えば、米国特許第4370711号はコンピユータ・シ
ステム内の条件付分岐命令の結果を前もつて予測
する分岐予測装置を開示している。このシステム
の原理は、条件付分岐命令が最も最近に実行され
たその命令と同じ方法で決定されやすい、という
ことである。
米国特許第4477872号や米国特許第4430706号な
どの他の特許は、復号時予測機構を記載してい
る。復号履歴表(DHT)などの復号時予測機構
は、(予測が正しい場合)模範的なパイプライン
で実際に分岐しなかつた分岐命令に対して3サイ
クル、実際に分岐した分岐命令に対して1サイク
ルを節約する。
DHTは、分岐命令のアドレスを構成するビツ
トを変換したもの(ハツシユ法または下位ビツト
切捨てによる)に基づいてアクセスされるエント
リの表である。このエントリ自体は1つのビツト
からなる。このビツトは、対応する分岐命令が最
後に実行された時に実際に分岐したならばセツト
され、さもなければセツトされない。
条件付分岐命令が復号されると、DHTはその
分岐命令のアドレスを用いてアスセスされる。
DHTエントリがセツトされている場合、この命
令は分岐すると推測される。すなわち、分岐先ア
ドレスが生成され、分岐先命令が取り出され、分
岐命令の復号に続く3番目のサイクルで分岐先命
令が復号される(これによつて遅れの1サイクル
を節約する)。DHTエントリがセツトされていな
い場合、この命令は分岐しないと推測され、分岐
命令の復号に続くサイクルで次の順次命令が復合
される(これによつて遅れの3サイクルを節約す
る)。DHTの予測が誤りであつた(すなわち、予
測がEXECで計算された分岐結果と一致しない)
場合、対応するエントリが修正される。
復号時予測機構は、行なわれない分岐に対する
ペナルテイのすべてと、実行される分岐の実行時
ペナルテイ(典型的には1サイクル)とを回避す
る機会を提供する。復号時機構の変形は、より正
確な予測を通じて分岐のペナルテイを減少するこ
とだけが可能である。しかし、極限(すなわち
100%の精度)においてさえ、復号時機構がすべ
ての分岐ペナルテイを除去できるわけではない。
すなわち、実行される分岐が存在する場合は必
ず、分岐先アドレスを生成して分岐先の命令を取
り出す時間に等しいペナルテイが存在する。この
原因は、DHTのような復号時機構が条件付分岐
命令の活動を待ち行列に登録する方法を提供する
が、分岐先は登録しないことである。したがつ
て、分岐ペナルテイをさらに減少させる唯一の方
法は、実行される分岐を予見し、その分岐命令に
実際に出会う(復号する)以前に分岐先命令を取
り出すことである。いわゆる「事前取出し時予測
機構」は、これを行なうことを意図している。
この分岐ペナルテイのさらなる減少を達成する
ためには、自律的な命令事前取出し「エンジン」
が存在しなければならない。事前取出し時予測機
構自体が存在しない状態では、単純な事前取出し
エンジンは、(i)順次命令アドレスを通じて「ステ
ツプ」させるために使用される増分機構と(ii)復号
器によつて「消費」される順次命令を保持するた
めの命令バツフアと、(iii)増分機構によつて生成さ
れた順次アドレスを使用して、キヤツシユから順
次命令ブロツクを取り出してこれを前記の命令バ
ツフアに置く手段、及び(iv)分岐命令が実行される
場合にプロセツサが増分機構に新しい開始アドレ
ス(分岐先アドレス)を供給する手段から構成で
きる。「自律的」とは、前記エンジンが拘束され
ずに稼働中(復号機構とは独立に)である場合
に、前記命令バツフアは(行なわれる分岐が存在
しない場合)常に復号機構によつて消費される次
の順次命令を実行していることを意味する。(し
たがつて、実行されない条件付分岐が正しく推測
された場合にはペナルテイはない。) 事前取出し時予測機構は、(復号器と共に動作
する復合時機構に対して)事前取出しエンジンに
組み込まれた機構である。事前取出し時機構は、
分岐命令が復合された時点で命令バツフアが分岐
先命令を含んでいることを保証する。この努力が
成功した場合、分岐先命令は分岐命令の復合に続
いて即座に復合できる。したがつて、事前取出し
時機構は、その予測が正しい場合、実際に分岐す
る命令も含めてすべての分岐ペナルテイを除去す
る。
(すべてではないにせよ、)ほとんどの事前取
出し時予測機構は「分岐履歴表」(BHT)の変形
である。米国特許第3559183号に初めて記載され
たが、この特許は本発明の出願人に譲渡された。
前記の米国特許第3559183号で教示された戦略
は、ほとんどの分岐命令は、個々に見ると分岐す
るか否かに関して一貫しており、実際に分岐する
場合には一貫した分岐先アドレスを有するという
観察に基づいている。この戦略は下に、実際に分
岐した命令の一覧表が構築される。この表の各エ
ントリは実際に分岐した命令のアドレスと分岐先
アドレスとから構成される。この表はハードウエ
ア構成であり、そのため所定の大きさを有する
が、これは代表的には1024エントリから4096エン
トリである。エントリは行なわれた分岐のみにつ
いて構成され、分岐の出現順に並ぶ。表が満杯に
なると、新規エントリの作成には古いエントリを
置き換える必要がある。これはキヤツシユにおけ
ると同様のLRU法を基にして達成できる。
BHTは事前取出し時における復合履歴表
(DHT)の類似物である。すなわち、BHTエン
トリは、事前取出しされている命令ブロツクのア
ドレスを構成するビツトを変換したもの(ハツシ
ユ法または下位ビツト切捨てによる)に基づいて
アクセスされる。このエントリ自体はDHTエン
トリよりもはるかに複雑である。なぜならば、
BHTは事前取出し時に「盲目的に」動作してい
る、すなわち、BHTは命令ブロツクの内容を検
査可能であるという利益を得ることなく単にブロ
ツクを取出しているためである。
BHTエントリは、関連する命令ブロツクが
(ブロツク内で実行された分岐に以前に出会つた
プロセツサに基づいて)行なわれた分岐を含む、
ということを識別できなければならない。さらに
BHTエントリは、そのブロツク内のどこに実行
された分岐があるかを識別できなければならな
い。これは、制御がそのブロツクのどこに移行し
たかによつて(すなわち現在の分岐活動によつ
て)、特定の分岐命令が現在の命令取出し作業に
関連している場合も関連していない場合もあるた
めである。最後に、BHTエントリは分岐先アド
レスを指定しなければならず、これによつて、特
定の分岐が現在の事前取出し活動に関連している
場合に、分岐先経路に向かつて事前取出しを即座
に方向変更することができる。周知のBHTはこ
れらの能力を有する。
従来の技術によれば、プロセツサが分岐命令に
出会い、これが実行されるとわかると、プロセツ
サはこの分岐のアドレスに基づいてBHTエント
リを作成する(このエントリ自身は分岐先アドレ
スを保持することになる)。コードの特定部分
(分岐を含む)が以前にも出会つたことがある場
合、分岐命令が事前取出しされる時点でこの
BHTエントリは事前取出しの方向変更を起こさ
せることができる。BHTが事前取出しを方向変
更する時、それは同時にこの行動に関する情報
(たとえば、実行される分岐が存在するとBHTが
「信じる」アドレスと、その分岐先アドレスと)
をプロセツサの待ち行列に登録する。続いてプロ
セツサが事前取出しされたコードを実行する際、
プロセツサはBHTが正しいか否かを判定する3
つの機会を有する。BHTが分岐を正しく予見し
ていた場合、この分岐に関連するペナルテイはな
い。さもなければ、誤つて「推測」されたことに
関連する重大なペナルテイが存在するかもしれな
い。BHTの誤りが発見され得る3つの機会は次
の通りである。
第1の機会は復合時(DEC)であり、このと
き「分岐誤予測」(BWG)が2つの方法のいず
れかで出現し得る。第1に、復合機構が無条件に
実行される分岐に出会い、そしてBHTがこの分
岐の指示を与えなかつた場合、BHTは誤つてい
ることがわかる。この時点での適切な行動は、標
準的な方法でこの分岐命令を実行し、そして、こ
の分岐の存在を示す新しいBHTエントリを生成
することである。第2に、BHTが所与のアドレ
スに実行された分岐を示しており、そしてこのア
ドレスで復号された命令が分岐命令ではない場
合、BHTが誤りであることが知られる。この時
点での適切な行動は、誤つたエントリをBHTか
ら削除し、このエントリの存在によつて影響され
た命令事前取出しの方向変更を打ち切ることであ
る。(後者の場合、BHTは、コード内に分岐命令
が存在しなかつた時、命令事前取出しの方向変更
によつて、複数のサイクルのペナルテイを引き起
こす原因になつた可能性があることに留意の事。) BWGを検出する第2の機会はアドレス生成
(AGEN)時である。生成された分岐先アドレス
が予測された(BHTによつてプロセツサの待ち
行列に登録された)分岐先アドレスと同一でない
場合に、BWGが出現する。この時点での適切な
行動は、BHTエントリ内の分岐先アドレスを修
正し、誤つた分岐先経路に向けられた命令事前取
出しを打ち切り、正しい分岐先経路に向けて命令
事前取出しを方向変更することである。
BWGを検出する第3の(最後の)機会は、実
行時(EXEC)である。この時点でBWGを発生
する可能性がある唯一の分岐は、分岐条件の決定
がEXEC中に実行されるので、条件付分岐であ
る。BHTが分岐すると示さなかつた時に、に
EXECが分岐が行なわれていると判定した場合、
またはBHTが分岐すると示している時にEXEC
が分岐が行なわれないと判定した場合に、BWG
が発生する。いずれの場合でも、適切な行動は、
分岐の新しい行動を示すようにBHTを更新し、
その新しい行動に従つて命令事前取出しを方向変
更することである。
これら3つの異なる時点でのBWGの主な原因
は以下に示すものである。
(1) DEC時点でのBWG発生には3つの理由があ
る。第1に、以前に1度も出会わなかつたコー
ドでは、このコードに利用可能な履歴は存在し
ない。したがつて無条件に実行される分岐は
BHTに知られていない。この部類のBWGを取
り除く方法はない。すなわち履歴が存在しない
場合には、分岐を予見する方法はない。第2
に、BHTはなんらかの置換アルゴリズムによ
つて制御される有限ハツシユ・テーブルである
ため、有効な履歴がそれより後に作成されたエ
ントリによつて重ね書きされることができる。
第3に、BHTは有限ハツシユ・テーブルであ
るため、また(多分)複数のアドレスが同じ
BHTエントリに写像されるため、現在コード
に分岐は存在しないが、現在コードと共用され
ているエントリにたまたま写像される他のアド
レスに分岐命令が存在する時に「誤つたヒツ
ト」が発生する。第2及び第3の形式の誤り
は、BHTを拡大し、ハツシユ機能をより正確
にすることによつて減少できる。これは率直な
解決法である。
(2) 分岐命令のサブセツトには、常に同じアドレ
スに分岐すると限らないものもあるため、
AGEN時にBWGが発生する。
(3) 最後に、BHTは履歴駆動の機構である(す
なわち、BHTは分岐命令が常に最後に実行し
たことを行なうと予測する)が、条件付分岐命
令は常にこのように振舞うとは限らないので、
EXEC時にBWGが発生する。ある分岐が条件
付であるということはすなわち、たとえ条件の
集合の1つがあり得ない場合であつても、その
分岐を実行させる(可能な)条件と実行させな
い(可能な)条件とが存在することを示してい
る。
特許第4763445号は、本発明の出願人に譲渡さ
れたが、前記の誤りの最後の形態を減少する機構
を教示している。米国特許第4763445号は参照と
して本出願書に編入されている。
前記の編入された特許で教示された分岐予測機
構は、「データ依存分岐表」(DDBT)と称する
オペランド感知可能分岐表を用いて更新される
BHTを採用している。その原理を以下の例によ
つて説明する。連続して(時間的に隣接する必要
はない)数回実行されるコードの一部分を考え
る。DHTやBHTなど履歴に基づく機構は、この
コード内の個々の分岐命令がそれぞれ、このコー
ドが実行されるたびごとに全く同じ動作(分岐す
るか否か)を行なうと予測する。この形式の推測
は、コード内の多くの特定の分岐について非常に
良好に機能するが、これが非常に悪い予測しか行
なえない特定の分岐もいくらかは存在する。ある
分岐の所与の属性(たとえば分岐するか否か)が
不変ではない場合、履歴に基づく予測機構はこの
所与の属性に根拠をおくことはできない。したが
つて、履歴に基づく予測機構を構築するために
は、分岐の属性の内で不変であるものを識別する
ことと、その属性を予測機構の根拠とすることが
必要である。
前記参照特許に教示されたDDBTは、条件付
分岐命令の代表的な論理操作について予測され
る。まず、分岐命令に先行するなんらかの命令が
存在する。この先行命令はあるオペランド(たと
えば記憶装置内の1バイト)に対している操作
(たとえばテスト)を実行し、この操作の結果に
基づいてプロセツサ内の条件コードをセツトす
る。次に、前記の分岐命令がプロセツサ内の条件
コードの状態を検査し、この状態に基づいて分岐
(または分岐せずに通過)する。したがつて、特
定の分岐命令が最初は分岐し、その次には分岐し
ないことが観察された場合、この変化についてあ
り得る理由は次の2つだけである。すなわち、(1)
先行命令によつてテストされたオペランドが、こ
の分岐命令に前回出会つた時以後に記憶命令によ
つて変化した、または(2)先行命令が(たとえばオ
ペランドのアドレスが変化した)新しいオペラン
ド位置についてテストを行なつている。DDBT
は上述の理由の(1)に基づいて予測される。すなわ
ち、それはオペランド位置の不変性に基づく。
参照として編入された特許の中で説明されてい
るように、DDBTは、条件付分岐命令に影響す
ることが既知であるオペランドの位置を追跡する
表てある。既知のオペランド位置の各々に対し
て、DDBTは影響される分岐のアドレスを示し、
同時に、分岐が影響される方法(たとえば、オペ
ランドについて実施されるテスト、及び分岐条
件)と、分岐結果の最も最近の履歴とを示す。プ
ロセツサによつて記憶動作が実施される場合には
いつでも、DDBTは探索されて、記憶が指示さ
れた位置がDDBT内のオペランド位置のどれか
と一致するか否かが判定される。この探索が「ヒ
ツト」した(すなわち、そのようなエントリが見
つかつた)場合、記憶されつつある新しい値が
(DDBTからの)テストの対象となり、新しいオ
ペランド値が分岐結果を変更する否かを判定する
条件となる。この記憶の結果として分岐結果が変
更されると判定された場合、これを反映するため
対応するBHTエントリが変更される。対応する
分岐命令に引き続いて出会うと、テストされるオ
ペランドの位置が実際に不変である場合には、
BHTは正しい予測を行なう。さもなければ、予
測が正しいか否かは判定できない。
編入された特許は、BHTの前記の部分にBWG
が発生した時点におけるDDBTエントリの作成
を教示している。すなわち、分岐結果が不変では
ないことが知られる最も早い可能性のある時点で
このエントリが作成される。BWG以前の分岐に
対してはなんらか特別な注意が払われていないた
め、分岐に影響するオペランド位置が不変である
ことは実際に知られていない。すなわち、
DDBTエントリ作成の行動は、分岐がこの方法
で予測できると「推測」するに過ぎない。この推
測は結果が不変ではない分岐の多くについて正し
いけれども、結果とテスト・オペランド位置との
両方において変化する分岐がいくつかある。これ
らの分岐のためのテスト命令は、実行されるたび
ごとに新しい位置からのオペランドをテストす
る。したがつて、ある特定の位置に集中すること
は、続く分岐結果を実際に決定することになるオ
ペランドとは無関係の分岐推測を行なう。基本的
に、分岐がこの属性を有し、かつDDBTが予測
を補助しようと試みる場合には、続く分岐の推測
はでたらめである。
したがつて、DDBTに不適切ないくつかの分
岐サブセツトが存在し、それにも関わらず、前記
の編入された特許で説明されたようなDDBTは
不可避的にこれらを予測することを試みる。さら
に、これらの分岐の大部分はBHT(またはDHT)
を通じて(完全ではないが)ほとんど予想可能で
ある。したがつて、特定の分岐命令の予測に対し
てDDBTが適切な機構ではないことが、いつた
ん知られると、DDBTが出す「修正」を無視す
ることが望ましく、またBWG発生について前記
の特定の分岐が新しいDDBTエントリを作成す
ることを抑制することが望ましい。不適切な予測
と比較して精度の損失が許容できる場合であつて
も、これらの分岐は多数の(不適切な)DDBT
エントリを作成するという影響を有しており、こ
れによつて多くの有用なエントリを重ね書きし他
の分岐に関するDDBTの有効性に影響を与える。
これらのエントリに関する更に別の問題は(こ
のエントリに影響される更新を「無視」するよう
に履歴表を作成できる場合であつても)、BHT
(またはDHT)がそれを無視するための時間を要
することである。すなわち、不適切な更新が
DDBTによつて出された時、それが原因で、た
とえばBHTが探索され、このことがBHT内の余
分な通信量を発生させてBHTが正確に事前取出
しを指示する際の即時性に影響を及ぼす。したが
つて、履歴表を通じて余分な通信量を制限するよ
うに、誤つたエントリをDDBTから消去するこ
とも望ましい。
特定のDDBTエントリは望ましくないものに
するこの属性は、同時にその特定のエントリの消
去を困難にする属性である。特に、DDBTは通
信量を記憶するために応答しなければならない
(すなわちDDBTは、記憶されつつあるオペラン
ドが所与の分岐に影響するか否かを知るため探索
される)ため、エントリはオペランドのアドレス
に基づいてDDBT内に位置決めされる。(分岐に
先行する)テスト命令が異なつたオペランド位置
についてテストすることが判明すると、DDBT
エントリは無効であることがわかる。したがつ
て、これが判明する時まで、その分岐に関連した
新しいオペランド位置は古いオペランド位置と何
の関係も持たない(すなわち、古いオペランド位
置を指示する分岐に関連した記録が存在しない)
が、それでもこの誤つたエントリが古いオペラン
ド・アドレスに基づいてDDBT内に記憶される。
すなわち、この時点でDDBT内に誤つたエント
リが位置することは既知であるが、その誤つたエ
ントリの位置は未知である。このことがこのエン
トリの消去を困難にしている。
C 発明の概要及び解決課題 本発明の1つの目的は、「移動目標」オペラン
ドのためにDDBT更新に対してBHT(または
DHT)を不感性にすることにより、(編入された
特許で教示された)DDBTを分岐行動結果の予
測に利用する(BHTまたはDHTのような)分岐
予測機構を改善することである。このようなオペ
ランドは、たとえば、制御ブロツクを通じて連鎖
を行なうときに典型的なものである。
本発明のもう1つの目的は、分岐動作結果を判
定するためにテストされるオペランドに感知可能
で、またオペランド位置に感知可能な、改善の分
岐予測移行を提供することである。この追加の
(オペランド位置に対する)感度を用いて、分岐
予測操作での補助に使用されているDDBTが、
それ自体が変数である分岐オペランド位置にかか
わらず動作するときに結果的に発生する、でたら
めの分岐推測を避けることができる。
さらに、DDBTが特定の分岐を予測するため
に適当な機構ではない時を識別すること、及びこ
のような状況でDDBTが出した「修正」または
更新を無視できることも、本発明の1つの目的で
ある。
さらに、このような分岐がBWG発生時に新規
DDBTエントリを作成することを防止すること
も、本発明の1つの目的である。
さらに、DDBTが特定の分岐を予測するのに
適当な機構ではないことがいつたん知られると、
可変オペランド位置に関連するDDBTエントリ
を消去できることも、本発明の1つの目的であ
る。この特徴は、DDBTが出す前述の不適切な
更新によつて引き起こされる、BHT(または
DHT)を通す余分な通信量を制限する。
本発明による方法と装置とを説明するが、これ
らは、不適切なDDBTエントリを識別するため
に、誤つた分岐予測とDDBTによつて使用され
るオペランド・アドレスに感知可能である。
本発明の好ましい実施例は、分岐予測機構内に
不適切なDDBTエントリが作られることを、状
態ビツトを用いて識別することが要求するが、こ
の状態ビツトは、セツトされると、次の2つの状
態を示す。すなわち、(1)所与のBHTエントリが
DDBTによつて更新された。(2)この更新に続い
て誤つた予測が発生したためこれ以上のDDBT
更新は不適切となつた。いつたんDDBTエント
リが不適切であると判定されると、それによる予
測機構の更新は阻止される。
本発明はまた、DDBT内の不適切なエントリ
の位置を突き止めて、DDBTからこれを消去す
る方法と装置を提供する。DDBTによつて履歴
に基づく予測機構に送られた更新パケツト(編入
された特許に記載されている)は、DDBTによ
つて実際に使用されるテスト・オペランド・アド
レスを含むために拡張されている。この更新要求
の結果、両方のビツトのセツトを有するエントリ
にBHT(またはDHT)がヒツトした場合には、
不適切なDDBTエントリの位置を突き止めて消
去するために、このオペランド・アドレスを使用
できる。これは、DDBT自体がオペランド・ア
ドレスに基づいて組織されているためである。さ
らに本発明は、所与の予測機構エントリに対する
DDBT更新に続いてBWG事象が発生した場合
に、それ以上のDDBTエントリの作成を抑止す
ることを提供する。
本発明の前記及びその他の目的ならびに特徴
は、添付図面と共に以下の詳細な説明を考察すれ
ば当業者に対して明白となろう。
D 実施例 前述の編入された特許はDDBTを詳細に説明
するが、このDDBTは直接関係する(不変オペ
ランド位置にあると推定され得る)データに対し
てなされた記憶を監視し、このような記憶が依存
関係のある分岐命令の行動を変化させる場合に
は、BHTを更新する。より詳しくは、編入され
た特許は、BHT更新計画、模範的なDDBT構
造、更新ハードウエアを通じてDDBTをBHTに
結合する方法、及びDDBTにエントリを追加ま
たは削除する方法を教示している。
従来の技術のDDBTと分岐予測機構の組合せ
の動作は、(本発明を用いて)改善されるが、こ
れは、所与のBHTエントリに関連するテスト・
オペランドが可変であるときにトリガされる
DDBT更新に対して(BHTなどの)分岐予測機
構を不感性にすることによつてなされる。
説明の都合上、本発明の説明をDDBTとBHT
の組合せに関連して記述する。しかし、これは本
発明の主旨の範囲を制限する意図ではない。それ
は、これから説明しようとする原理が、DHTと
同様に他の履歴に基づく分岐予測機構に適用可能
であることが、当業者には容易に理解されるから
である。
BHTと共に動作する、編入された特許に記載
されているDDBTは、 (1) 直接関係するバイトの各々について、 (a) そのバイトのアドレスと、 (b) 動作がそのバイトによつて決定される分岐
命令のアドレスと、 (c) 分岐する場合の分岐先アドレスと、 (d) 特定の分岐に対して分岐動作を決定するた
め直接関係のあるバイトをテストする手段を
指定する符号化と、 (e) この関係バイトの最新の実体に関する分岐
テストの結果を指定する動作ビツトと、 からなるエントリを含み、 (2) 各記憶動作ごとに、その記憶がDDBT内の
前記バイトの1つに対して行なわれているかど
うか(上記(a)に一致するか否かによつて)決定
するため探索され、そして一致が発見された場
合には、 (3) 記憶されつつあるバイトの新しい実体と共に
上記(d)を使用することによつて新しい分岐結果
を発生する能力を有し、そして新しい分岐結果
を上記(e)と比較することによつて、 (4) 上記(b)によつて指定された分岐の次の実行
が、仮に分岐するとして、以前の実行時と同じ
動作を行なうか否かを判定する能力を有し、そ
して同じ動作を行なわないと判定された場合、 (5) 上記(b)及び(c)を用いて、BHT内のエントリ
を作成または削除(いずれか適当なものを実
行)して、この分岐の次の発生時にBHTが正
しい予測を行なうようにする。
要するに、DDBTはオペランドと分岐との間
の対応を確立する表であり、そこではオペランド
と分岐とがアドレスによつて識別される。
DDBTがオペランド・アドレスに基づいて組織
される、また先に示したように、各エントリが少
なくとも分岐アドレスと、その分岐が行なつた行
動と、テストの方法の指示とを含むことが好まし
い。
従来の技術によるBHTは、分岐アドレスに基
づいて組織され、少なくとも(テーブル集合連想
構造に固有の)分岐アドレス・タグと、実行され
た分岐の分岐先アドレスと、先行分岐行動の標識
(実行されたか否か)とを含む。
本発明によつてもたらされた改善を理解するた
め、まず第5図を参照する。
第5図は、編入された特許の中で説明された従
来の技術の分岐予測機構とDDBTとの組合せの
高水準表現である。説明の都合上、分岐予測機構
はBHTとして示す。
第5図の2本の破線で囲まれた部分は、プロセ
ツサ、記憶装置(主記憶装置及びキヤツシユ)及
びBHTの組合せを図示する。
記憶装置、キヤツシユ、及びCPUは装置10
0として示す。BHTは装置101として示す。
プロセツサが分岐命令に出会い、最初に実行さ
れる分岐が発生した場合、まずBHTエントリが
経路170,171及び151を通じて生成され
る。分岐命令アドレスBA及び分岐先アドレス
TAは経路151を通じてBHT101に「入力」
される。BHTはBAに基づいて組織される。各
エントリは「有効」ビツトと共に記憶されるTA
を含む。この有効ビツトは「実行された分岐」行
動の表示としても見ることができる。行動の次の
変化は有効ビツトをリセツトすることによつて表
示でき、BHTからエントリを効果的に消去する。
図中破線に囲まれた従来の技術の事前取出し機
構は、オペランドの値またはオペランドのテスト
位置のいずれかの変化に無関係に、この次の分岐
が発生すると推測する。
編入された特許で教示される改善(第5図に図
示された組合せの残りの部分)は、DDBT10
2と信号経路152,154,155,157,
159及び160とを利用して所与のオペラン
ド・アドレスOAに対する記憶を監視し、適切で
ある場合にはBHT101を更新する。初期状態
でDDBT102は空である。編入された特許で
教示されるように、DDBTエントリは(BA及び
OAに関連して示されている)BWG発生時に経
路155及び157を通じて生成される。
続いて、装置100によるOAに対する記憶が
発生した場合、OAとオペランド自身の双方が経
路152及び154を通じてDDBT102に供
給される。(オペランド・アドレスに基づいて組
織される)DDBT102がこのOAに対応するエ
ントリを含んでいる場合、編入された特許で教示
されるように、このオペランドは関係するテスト
条件の対象となり、分岐行動が変化するか否かの
判定が行なわれる。
分岐行動に変化がない場合、BHT更新は不要
である。事前取出し分岐予測機構は正しく動作す
る。分岐行動が変化する場合、BHTは更新され
なければならない(エントリを消去する)。(経路
159及び160経由の)BAは、BHTから関
係エントリを除去するために使用されるが、これ
はたとえば、そのエントリに関連する有効ビツト
をリセツトすることによつて行なわれる。
第5図に図示した従来の技術の分岐予測システ
ムは、所与の分岐命令に関連したオペランド・ア
ドレスが不変である場合には、良好に動作する。
しかし、先に示したように、このオペランド・ア
ドレスが不変でない場合には問題が発生し得る。
第2図は、第5図の従来の技術のDDBTと
BHTの組合せを説明する上で有用な命令順序を
図示するが、この命令順序はまた、この組合せを
可変オペランド位置に対して使用する際に発生す
る問題を説明するためにも使用できる。
第5図のプロセツサ100が、記憶装置内の位
置1000の記憶命令に応答して、あるオペランド値
xをオペランド・アドレスAに記憶する場合を考
える。典型的には、第2図に示すように、位置A
のオペランドの値に基づいたテストが条件付分岐
命令に先行する。このテストは通常前記のオペラ
ンド位置に対する記憶よりも遅く実行され、両者
の間には多くの命令が存在する。(第2図の図示
ではこのテストが命令アドレス2100000で発生す
る。) DDBTとBHTの組合せを使用する第5図に示
したシステムは、参照特許に記載されるように、
Aに対する記憶の後すぐに分岐結果を判定でき
る。A自身が可変値ではないと仮定すると、従来
の技術のシステムは良好に動作する。
しかし、Aが可変値である場合、命令位置1000
に示すAに対する記憶と、第5図のBHTと
DDBTの組合せによつてそれに続いて計算され
るテスト及び分岐の結果の計算とは、分岐結果と
無関係な場合がある。たとえば、当面の問題に関
係するオペランドの位置がアドレスBであり、か
つA(変数オペランド・アドレス)が命令2100000
の前にBに変更された場合には、明らかに前記の
状況が成立する。この場合、事前取出しは誤つた
オペランド位置(BではなくA)に位置する値に
ついて実行される。
これが発生し得る(また、頻繁に発生する)状
況を第3図に図示する。この図では、たとえば従
業員名、年齢、社会保険番号などを含む複数のレ
コード(レコード1〜n)が、各レコードの末尾
のポインタ(A1〜An)によつて連結された状態
を示す。
特定の社会保険番号を調べる場合、番号を求め
てレコードを探索するための典型的なコードは以
下のようなものであろう。(1)新しいポインタの値
のLOAD(ロード)し、(2)社会保険番号が指定さ
れた値に一致する場合には、GO TO FOUND
(発見時の処理に移行)し、(3)ELSE(さもなけれ
ば)、次のテコードに移り(すなわち、新しポイ
ンタ値のLOADに戻る)、動作を継続する。図示
のレコード構造に基づいて、検査される社会保険
番号の実アドレスは常に変化している。レコード
番号2では、社会保険番号はオペランド・アドレ
スA1+2にあり、レコード番号3では、番号は
オペランド・アドレスA2+2にある。
第5図のシステムを使用すると、この形式のコ
ードは多数のBWG事象に発生させる傾向があ
り、前述のように、DDBTが役に立たないデー
タで満たされる結果となる。
本発明の好ましい実施例は、テストされるオペ
ランドのアドレス自体が可変値である場合には、
分岐行動の判定に関連した問題を回避する。
本発明によつて、2つの状態ビツトが各BHT
エントリに関連する。これらのビツトの好ましい
意味とそれにもつて表現できる状態を第4図に図
示する。
第4図のビツト0(前記の2つのビツトのうち
1つ)を示すが、所与のBHTエントが作成され
る時点で、当初0である。ビツト0は、所与の
BHTエントリへのDDBTの更新の後にBWG事
象が発生すると、(所与のBHTエントリに関す
る)BWG事象の発生に基づいて1にセツトされ
る。ビツト1(他方のビツト)は当初0であり、
BHTがDDBTを通じて更新されていないことを
示すために用いられる。DDBTの助けによつて
BHTエントリが更新されるといつでも、ビツト
1が1にセツトされる。
本発明の好ましい実施例によつて、下記の3つ
の状態が定義され、第4図に要約されている。
(1) 新たに出会つた分岐が実行されて、新しい
BHTエントリが生成されると、このBHTエン
トリは状態0に設定される。
(2) 「状態0」の分岐エントリがBWGを発生す
る場合には、DDBTエントリが生成される。
(このBHTエントリは「状態0」のままであ
る。) (3) DDBTにBHTを更新させる記憶が発生する
と、対応するBHTエントリは(状態0または
状態1であれば)状態1になる。(状態2の分
岐はDDBTの更新を無視するものと見なされ
る。) (4) 状態1のBHTエントリがBWGを発生した場
合には、状態2に移行し、これ以降このBHT
エントリに対応するDDBTエントリ生成を抑
制する。
(5) 最後に、状態2のBHTエントリが更新を受
ける場合には、この更新は無視され、この更新
を発行したDDBTエントリが削除される。
第5図のシステムに対して本発明を実現するた
め必要な変更を第1図に図示する。これらの変更
は、編入された特許に説明された組合せに対する
変更法の説明と併用して、当業者が本発明の好ま
しい実施例を実施できるようにする。
第1図は、経路501,502及び503を追
加した以外は第5図と同等である。概念上、新し
い点は、行動が変化した分岐を表示するBAに加
えて、その変化に影響したオペランドのアドレス
OAが経路501及び502上のDDBT102の
出力パケツトの一部であることである。BHTが
内部でOAを利用しないにも関わらず、DDBT1
02からのデータ・パケツトの一部としてのOA
は、BHT101が状態2である場合に(経路5
03に通じて)誤つたエントリに戻つてDDBT
からこれを除去することが本発明に可能となる手
段である。
本発明の好ましい実施例で利用されている2つ
のビツトは、第1図に示されていないが、実際に
はBHT101の各エントリに関連しており、本
発明を実施するため先に説明したように使用され
ている。
本発明の実施例の代案として、更新パケツト内
でOAはBHTに送らずに、OAに対してなんらか
の形式の緩衝機構を使用することもできる。本発
明のさらに別の実施例として、所与のエントリと
の関連を保ちながら状態ビツトをBHTの外部に
位置させることもできる。このような代替案は好
ましい実施例より多くのハードウエア・オーバヘ
ツドとシステム・オーバヘツドとを必要とする。
先に示されるように、経路503は、状態2の
BHTエントリに対する更新が発生した場合に、
所与のDDBTエントリを消去(除去)するため
に利用される。除去すべき適当なDDBTエント
リは、DDBTのオペランド・アドレス組織と更
新パケツト経由で供給されるOAとに基づいて既
知となる。ここで行なうべきことは、たとえば、
所与のDDBTエントリに関連した有効ビツトを
リセツトすることである。この有効ビツトは編入
された特許の第2A図の配列64に記憶されてい
る。
好ましい実施例にすべて組み込まれた本発明の
その他の目的を理解するには、編入された特許の
第5図及び第1B図を参照する必要がある。
本発明にとつては、(1)所与のBHTエントリが
状態1または状態2である場合に、(すなわち、
あるBHTエントリがDDBTによつて更新された
後にBWG事象が発生した場合)そのBHTエント
リに対するBWG事象が発生した時の新規DDBT
エントリを抑制することが好ましく、また(2)状態
2であるBHTエントリ(すなわち、DDBTによ
る更新に引き続いて誤つた推測を行なつたBHT
エントリ)に対するDDBT更新を無視すること
が好ましいことを想起されたい。
この第1の特徴(新規DDBTエントリの抑制)
を実現するためには、状態1または状態2の
BHTエントリに関してBWGが発生するといつで
も、編入された特許の第5図に示すANDゲート
192を抑制することが必要である。
第2の特徴(DDBT更新の無視)を実現する
には、編入された特許の第1B図に示すリンク6
2上の更新を同図の修正制御回路60を通じて抑
制することのみが必要である。
編入された特許で教示された方法と装置とに対
して先に説明した変更を行なうことによつて、本
発明の目的、特徴及び利点のすべての実現可能で
ある。
これまでに説明してきたのは、可変テスト・オ
ペランド位置に起因するデータ依存分岐表の更新
から分岐予測機構を隔離する方法と装置とであ
り、前述の全目的に合致する方法と装置とであ
る。新案の方法と装置に対する前述の説明は、図
示と説明のみを目的として提示したことが、当業
者には理解されよう。またこのことは、本発明を
余すところのなく網羅したり開示された正確な形
態に制限する意図はなく、明らかに前記の教示の
下に多くの修正と変更とが可能である。
たとえば、先に示したように、DDBTは履歴
に基づく分岐予測機構を補足する機構であるた
め、また本出願書の教示は復合時機構であるか事
前取出し時機構であるかに関係なく、履歴に基づ
く機構に当てはまるため、本発明はBHTと
DDBTの組合せを有するプロセツサに対しても、
DHTとDDBTの組合せを有するプロセツサに対
しても、使用可能である。
本出願書で述べた実施例と例示は、本発明の原
理とその実用的な応用分野とを最も良く説明する
ため提示されたものであり、これによつて当業他
者が種々の実施と意図された特定の用途に適合す
るような種々の変更とによつて、本発明の最も良
く利用可能となることを目的としている。
E 発明の効果 本発明によれば、DDBT更新に対してBHTを
分離することにより、分岐予測が適切に実行さ
れ、処理速度の向上が図れる。
【図面の簡単な説明】
第1図は、本発明を支援するハードウエアの構
成を示す図であり、詳しくは、第5図に示す
BHTとDDBTの組合せに関連して本発明を実現
するために必要な追加信号経路を指摘する図であ
る。第2図は、第5図のDDBTとBHTの組合せ
の動作法を説明し、またこの組合せが可変オペラ
ンド位置を伴う分岐動作の決定に使用された場合
に問題を生じる理由を説明する上で有用な命令の
並びを示す図である。第3図は、テスト・オペラ
ンドの位置が不変ではない1組の制御ブロツクを
通じて連鎖するために使用される、連係例を示す
図である。第4図は、本発明によつて、分岐予測
機構エントリ(たとえばBHTエントリ)に関連
し、またオペランド位置が変わるため不適切であ
るDDBTエントリを識別するのに有用な、可能
な状態の集合を示す図である。第5図は、編入さ
れた特許で説明した従来の技術の分岐予測機構と
DDBTとの組合せの構成図である。 100……記憶装置、キヤツシユ及びCPU、
101……BHT、102……DDBT。

Claims (1)

  1. 【特許請求の範囲】 1 計算機において、結果とテスト・オペランド
    位置の両方が変り得る分岐命令を含む分岐命令結
    果の予測をするための装置であつて、 (a) プロセツサと、 (b) 前記プロセツサによつて処理される、前記情
    報は命令とオペランドを含む情報を記憶するた
    めの記憶装置と、 (c) 前記プロセツサに結合され、履歴に基づいた
    分岐予測を実行するためであつて、前記プロセ
    ツサによつて処理された分岐命令の先行する分
    岐行動を記憶する手段を含む、第1手段と、 (d) 前記プロセツサと前記第1手段の両方に結合
    した第2手段であつて、特定のオペランド・ア
    ドレスを特定の分岐命令に関連させることと、
    前記プロセツサによる前記オペランド・アドレ
    スに対する記憶動作を監視することと、分岐命
    令の先行分岐行動を前記記憶動作に基づいた結
    果生ずる分岐行動と比較することと、前記の比
    較を通じて分岐不正予測(BWG)が予期され
    るときはいつでも更新データ・パケツトの生成
    を通じて前記第1手段を更新すること、によつ
    て前記第1手段のBWG事象を予見するための
    前記第2手段と、 (e) 所与のエントリが前記第2手段によつて更新
    されるときはいつでも第1信号を発生し、また
    前記第2手段による所与のエントリの更新に続
    いて前記エントリに関してBWG事象が発生す
    るときはいつでも第2信号を発生するため、前
    記第1手段内に記憶された分岐行動エントリの
    各々に関連した第3手段であつて、所与の分岐
    行動エントリに対する前記の第1信号及び第2
    信号の提示が結果とテスト・オペランド位置と
    の両方が変化する分岐命令を示す、前記第3手
    段 を含む分岐命令処理装置。 2 前記第2手段が、前記データ・パケツトの一
    部として、結果的に予期されたBWG事象となる
    記憶動作のオペランド・アドレスを提供する、請
    求項1に記載の分岐命令処理装置。 3 前記第1手段が分岐履歴表(BHT)である、
    請求項2に記載の分岐命令処理装置。 4 前記第3手段がさらに各BHTエントリに関
    連した1対の状態ビツトを含み、前記ビツト対の
    第1ビツトをセツトすることが前記第1信号に対
    応し、前記ビツト対の第2ビツトをセツトするこ
    とが前記第2信号に対応する、請求項3に記載の
    分岐命令処理装置。 5 前記第2手段がオペランド・アドレスに基づ
    いて組織されたエントリを有するデータ依存分岐
    表(DDBT)である、請求項4に記載の分岐命
    令処理装置。 6 前記の第2手段及び第3手段に結合した第4
    手段をさらに含み、この第4手段は、前記状態ビ
    ツトの双方がセツトされるときはいつでも、前記
    データ・パケツト内のオペランド・アドレスに対
    応するDDBTエントリを除去するため前記オペ
    ランド・アドレスに応答する、請求項5に記載の
    分岐命令処理装置。 7 前記状態ビツトの両方がセツトされるときは
    いつでも、前記第1手段が前記第2手段によつて
    生成された更新データ・パケツトに応答しない、
    請求項5に記載の分岐命令処理装置。 8 前記状態ビツトの両方がセツトされていると
    きにはいつでも、通常所与のBHTエントリに関
    するBWG事象発生時に生成される新しいDDBT
    エントリの生成を抑制する、請求項5に記載の分
    岐命令処理装置。 9 前記第1手段が復号履歴表(DHT)である、
    請求項2に記載の分岐命令処理装置。 10 計算機において、結果とテスト・オペラン
    ド位置の両方が変り得る分岐を含む分岐命令の結
    果の予測するための装置であつて、 (a) プロセツサと、 (b) 前記プロセツサによつて処理される、命令と
    オペランドとを含む情報を記憶するための記憶
    装置と、 (c) 前記プロセツサによつて処理される分岐命令
    の先行分岐行動を記憶するための分岐履歴表
    (BHT)と、 (d) 前記オペランド中の特定のものの発生を、前
    記分岐命令中の特定のもの、及び前記分岐命令
    の前記先行行動と関連させる手段と、 (e) 前記分岐命令の特定の発生を決定し、また前
    記分岐命令の前記の特定の発生の結果生じた前
    記先行行動を決定する手段と、 (f) オペランド中の前記の特定のもの、前記分岐
    命令中の前記の特定のもののアドレス、及び前
    記分岐行動と共に、前記分岐命令の前記の特定
    の発生と前記の結果的行動とを記憶するための
    データ依存分岐表(DDBT)と、 (g) 前記プロセツサによつて前記記憶装置内のオ
    ペランドになされる記憶動作を監視し、記憶さ
    れつつある所与のオペランドが前記DDBT内
    に記憶された前記の特定のオペランドの1つで
    あるか否かを判定するための第1手段と、 (h) 前記DDBT内の所与の分岐命令の引き続く
    分岐行動が前記の所与の分岐命令の前記BHT
    内の分岐行動と異なるか否かを判定するため、
    分岐命令の前記の特定の発生及び前記の結果的
    行動に応答する第2手段と、 (i) 前記の分岐行動が異なる場合に、前記BHT
    内での前記所与の分岐命令の分岐行動を更新す
    るための第3手段と、 (j) 前記DDBTによつて所与のBHTエントリが
    更新される場合に第1信号を記憶し、また前記
    第1信号の記憶に続いて、前記所与のBHTエ
    ントリに関して誤つた予測が発生した場合に第
    2信号を記憶するための第4手段 を含む分岐命令処理装置。 11 所与のBHTエントリに対して前記第4手
    段内に前記第1信号及び前記第2信号の両者が記
    憶されているときはいつでも、前記所与のBHT
    エントリに関して前記第3手段を抑制する手段を
    さらに含む、請求項10に記載の分岐命令処理装
    置。 12 所与のBHTエントリに対して前記第4手
    段内に前記第1信号及び前記第2信号の両者が記
    憶されているときはいつでも、前記所与のBHT
    エントリに対するDDBTエントリを除去する手
    段をさらに含む、請求項10に記載の分岐命令処
    理装置。 13 所与のBHTエントリに対して前記第4手
    段内に前記第1信号及び前記第2信号のいずれか
    が記憶されているときはいつでも、通常所与の
    BHTエントリに関する分岐不正予測(BWG)事
    象発生時に生成される新しいDDBTエントリの
    生成を抑制するための手段をさらに含む、請求項
    10に記載の分岐命令処理装置。 14 計算機内の分岐命令を処理する方法であつ
    て、前記計算機はプロセツサ、前記プロセツサに
    よつて処理される、命令とオペランドとを含む情
    報を記憶するための記憶装置、前記プロセツサに
    よつて処理される命令の先行分岐行動を記憶する
    ための分岐履歴表(BHT)、及びデータ依存分岐
    表(DDBT)を含み、前記データ依存分岐表は
    オペランドのアドレス、分岐命令のアドレス、前
    記分岐命令の分岐行動、前記オペランド中の特定
    のものと前記分岐命令中の特定のものとの間の関
    連、及び前記分岐命令の前記先行行動を記憶し、
    さらに前記方法が、 (a) 前記オペランド中の特定のものの発生を前記
    分岐命令中の特定のもの及び前記分岐命令の前
    記先行行動と関連させるステツプと、 (b) 前記分岐命令の特定の発生を決定し、また前
    記分岐命令の特定の発生の結果の前記先行行動
    を決定するステツプと、 (c) 前記記憶装置内に記憶されたオペランドに対
    して前記プロセツサによつてなされる記憶操作
    をすべて監視して、記憶されている操作を受け
    る所与のオペランドが前記DDBT内に記憶さ
    れた前記の特定のオペランド中の1個であるか
    どうかを決定するステツプと、 (d) 分岐命令の前記の特定の発生と前記の結果の
    行動とに応答して、前記DDBT内の所与の分
    岐命令の続く分岐行動が前記BHT内での前記
    所与の分岐命令の分岐行動と異なるか否かを判
    定するステツプと、 (e) 前記の分岐行動が異なる場合に、前記の所与
    の分岐命令の前記BHT内の分岐行動を更新す
    るステツプと、 (f) 前記所与の分岐命令に対応するBHTエント
    リが前記DDBTによつて以前に更新されたこ
    とを示す第1信号を前記BHT内に記憶するス
    テツプと、 (g) 前記所与の分岐命令に対応するBTHエント
    リが、前記第1信号の記憶に続いて、前記
    BHTによつて誤つて予測されたことを示す第
    2信号を前記BHT内に記憶するステツプ を含む分岐命令処理方法。 15 前記の第1信号及び第2信号の両者が所与
    の分岐命令に関して前記BHT内に記憶されてい
    るときはいつでも、前記所与の分岐命令の分岐行
    動を更新する前記のステツプを抑制するステツプ
    をさらに含む、請求項14に記載の分岐命令処理
    方法。 16 前記の第1信号及び第2信号の両者が前記
    所与の分岐命令に関して前記BHT内に記憶され
    ているときはいつでも、前記の所与の分岐命令に
    対するDDBTエントリを除去するステツプをさ
    らに含む、請求項14に記載の分岐命令処理方
    法。 17 前記の第1信号または第2信号のいずれか
    が所与の分岐命令に対して前記BHT内に記憶さ
    れているときはいつでも、通常所与のBHTエン
    トリに関する分岐不正予測(BWG)事象発生時
    に生成される新しいDDBTエントリの生成を抑
    制するステツプをさらに含む、請求項14に記載
    の分岐命令処理方法。 18 計算機内の分岐命令を処理する方法であつ
    て、前記計算機が、プロセツサ、前記プロセツサ
    によつて処理される、命令とオペランドとを含む
    情報を記憶するための記憶装置、前記プロセツサ
    によつて処理される命令の先行分岐行動を記憶す
    るための分岐履歴表(BHT)、及びデータ依存分
    岐表(DDBT)を含み、前記データ依存分岐表
    はオペランドのアドレス、分岐命令のアドレス、
    前記分岐命令の分岐行動、前記オペランド中の特
    定のものと前記分岐命令中の特定のものとの間の
    関連、及び前記分岐命令の前記先行行動を記憶
    し、さらに前記方法が、 (a) 新たに出会つた分岐実行されるときはいつで
    も新規BHTエントリを生成するステツプと、 (b) 新たに生成された各BHTエントリに対して
    第1状態信号を関連させるステツプと、 (c) 自身に関連した前記第1状態信号を有する
    BHTエントリが分岐不正予測(BWG)事象を
    発生するときはいつでも新しいDDBTエント
    リを生成するステツプと、 (d) 所与のDDBTエンオリにその関連BHTエン
    トリを更新させる記憶動作が発生したときはい
    つでも前記第1状態信号を第2状態信号に変化
    させるステツプと、 (e) 前記間連BHTエントリに対する続くDDBT
    更新時に、前記関連BHTエントリがBWG事象
    を発生しない限り、前記第2状態信号を保持す
    るステツプと、 (f) 自身に関連した前記第2状態信号を有する前
    記間連BHTエントリが、BWG事象を発生する
    ときはいつでも前記第2状態信号を第3状態信
    号に変化させるステツプと、 (g) 自身に関連した前記第3状態信号を有するす
    べてのBHTエントリに対するそれ以上の
    DDBT更新を抑制するステツプ を含む分岐命令処理方法。 19 自身に関連した前記第2状態信号を有する
    すべてのBHTエントリに関する新しいDDBTエ
    ントリの生成を抑制するステツプをさらに含む、
    請求項18に記載の分岐命令処理方法。 20 自身に関連した前記第3状態信号を有する
    すべてのBHTエントリに関する新しいDDBTエ
    ントリの生成を抑制するステツプをさらに含む、
    請求項18に記載の分岐命令処理方法。 21 自身に関連した前記第3状態信号を有する
    すべてのBHTエントリに関連したDDBTエント
    リを除去するステツプをさらに含む、請求項19
    に記載の分岐命令処理方法。
JP2273506A 1989-10-30 1990-10-15 分岐命令処理装置および処理方法 Granted JPH03147022A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US429922 1989-10-30
US07/429,922 US5210831A (en) 1989-10-30 1989-10-30 Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations

Publications (2)

Publication Number Publication Date
JPH03147022A JPH03147022A (ja) 1991-06-24
JPH0557617B2 true JPH0557617B2 (ja) 1993-08-24

Family

ID=23705276

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2273506A Granted JPH03147022A (ja) 1989-10-30 1990-10-15 分岐命令処理装置および処理方法

Country Status (3)

Country Link
US (1) US5210831A (ja)
EP (1) EP0429790A3 (ja)
JP (1) JPH03147022A (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
DE4206652A1 (de) * 1992-03-03 1993-09-09 Siemens Ag Optisches kabel und verfahren zu dessen herstellung
AU6701794A (en) * 1993-05-14 1994-12-12 Intel Corporation Speculative history mechanism in a branch target buffer
KR100310581B1 (ko) * 1993-05-14 2001-12-17 피터 엔. 데트킨 분기목표버퍼의추측기록메카니즘
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US6123405A (en) * 1994-03-16 2000-09-26 Xaar Technology Limited Method of operating a multi-channel printhead using negative and positive pressure wave reflection coefficient and a driving circuit therefor
US5781758A (en) * 1995-03-23 1998-07-14 Apple Computer, Inc. Software emulation system with reduced memory requirements
US5740417A (en) * 1995-12-05 1998-04-14 Motorola, Inc. Pipelined processor operating in different power mode based on branch prediction state of branch history bit encoded as taken weakly not taken and strongly not taken states
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
KR100445054B1 (ko) * 1996-06-29 2004-11-02 주식회사 하이닉스반도체 마이크로프로세서의브랜치처리를위한방법
US5867699A (en) * 1996-07-25 1999-02-02 Unisys Corporation Instruction flow control for an instruction processor
US7644282B2 (en) 1998-05-28 2010-01-05 Verance Corporation Pre-processed information embedding system
US6430682B1 (en) * 1998-09-11 2002-08-06 Agere Systems Guardian Corp. Reliable branch predictions for real-time applications
US6546481B1 (en) * 1999-11-05 2003-04-08 Ip - First Llc Split history tables for branch prediction
US6737957B1 (en) 2000-02-16 2004-05-18 Verance Corporation Remote control signaling using audio watermarks
US20030131345A1 (en) * 2002-01-09 2003-07-10 Chris Wilkerson Employing value prediction with the compiler
JP3843048B2 (ja) * 2002-06-28 2006-11-08 富士通株式会社 分岐予測機構を有する情報処理装置
CA2499967A1 (en) 2002-10-15 2004-04-29 Verance Corporation Media monitoring, management and information system
US20060239501A1 (en) 2005-04-26 2006-10-26 Verance Corporation Security enhancements of digital watermarks for multi-media content
US7369677B2 (en) 2005-04-26 2008-05-06 Verance Corporation System reactions to the detection of embedded watermarks in a digital host content
US20070039018A1 (en) * 2005-08-09 2007-02-15 Verance Corporation Apparatus, systems and methods for broadcast advertising stewardship
US9055239B2 (en) * 2003-10-08 2015-06-09 Verance Corporation Signal continuity assessment using embedded watermarks
JP2006048132A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 分岐予測装置、分岐予測装置の制御方法、情報処理装置
US8020004B2 (en) 2005-07-01 2011-09-13 Verance Corporation Forensic marking using a common customization function
US8781967B2 (en) * 2005-07-07 2014-07-15 Verance Corporation Watermarking in an encrypted domain
US8639913B2 (en) * 2008-05-21 2014-01-28 Qualcomm Incorporated Multi-mode register file for use in branch prediction
US8259938B2 (en) 2008-06-24 2012-09-04 Verance Corporation Efficient and secure forensic marking in compressed
US8838977B2 (en) 2010-09-16 2014-09-16 Verance Corporation Watermark extraction and content screening in a networked environment
US8615104B2 (en) 2011-11-03 2013-12-24 Verance Corporation Watermark extraction based on tentative watermarks
US8533481B2 (en) 2011-11-03 2013-09-10 Verance Corporation Extraction of embedded watermarks from a host content based on extrapolation techniques
US8923548B2 (en) 2011-11-03 2014-12-30 Verance Corporation Extraction of embedded watermarks from a host content using a plurality of tentative watermarks
US8682026B2 (en) 2011-11-03 2014-03-25 Verance Corporation Efficient extraction of embedded watermarks in the presence of host content distortions
US8745403B2 (en) 2011-11-23 2014-06-03 Verance Corporation Enhanced content management based on watermark extraction records
US9547753B2 (en) 2011-12-13 2017-01-17 Verance Corporation Coordinated watermarking
US9323902B2 (en) 2011-12-13 2016-04-26 Verance Corporation Conditional access using embedded watermarks
US9571606B2 (en) 2012-08-31 2017-02-14 Verance Corporation Social media viewing system
US9106964B2 (en) 2012-09-13 2015-08-11 Verance Corporation Enhanced content distribution using advertisements
US8869222B2 (en) 2012-09-13 2014-10-21 Verance Corporation Second screen content
US8726304B2 (en) 2012-09-13 2014-05-13 Verance Corporation Time varying evaluation of multimedia content
US9262793B2 (en) 2013-03-14 2016-02-16 Verance Corporation Transactional video marking system
US9251549B2 (en) 2013-07-23 2016-02-02 Verance Corporation Watermark extractor enhancements based on payload ranking
US9208334B2 (en) 2013-10-25 2015-12-08 Verance Corporation Content management using multiple abstraction layers
JP2017514345A (ja) 2014-03-13 2017-06-01 ベランス・コーポレイション 埋め込みコードを用いた対話型コンテンツ取得

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3559183A (en) * 1968-02-29 1971-01-26 Ibm Instruction sequence control
JPS56127908A (en) * 1980-03-10 1981-10-07 Victor Co Of Japan Ltd Wrong-correction preventing system for digital signal reproducer
US4370711A (en) * 1980-10-21 1983-01-25 Control Data Corporation Branch predictor using random access memory
US4430706A (en) * 1980-10-27 1984-02-07 Burroughs Corporation Branch prediction apparatus and method for a data processing system
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
JPS60125053A (ja) * 1983-12-12 1985-07-04 Canon Inc デ−タ通信方式
US4764861A (en) * 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
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
DE3785897T2 (de) * 1986-02-28 1993-09-30 Nippon Electric Co Steuervorrichtung zum vorabruf von befehlen.
GB8628821D0 (en) * 1986-12-02 1987-01-07 Plessey Co Plc Data transmission systems
US5031179A (en) * 1987-11-10 1991-07-09 Canon Kabushiki Kaisha Data communication apparatus
US5058115A (en) * 1989-03-10 1991-10-15 International Business Machines Corp. Fault tolerant computer memory systems and components employing dual level error correction and detection with lock-up feature
US5056092A (en) * 1989-05-01 1991-10-08 Motorola, Inc. Computer system monitor and controller

Also Published As

Publication number Publication date
EP0429790A2 (en) 1991-06-05
EP0429790A3 (en) 1993-03-10
US5210831A (en) 1993-05-11
JPH03147022A (ja) 1991-06-24

Similar Documents

Publication Publication Date Title
JPH0557617B2 (ja)
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US5276882A (en) Subroutine return through branch history table
US5553255A (en) Data processor with programmable levels of speculative instruction fetching and method of operation
US4763245A (en) Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table
US7657726B2 (en) Context look ahead storage structures
US5790823A (en) Operand prefetch table
JP2889955B2 (ja) 分岐予測の方法とそのための装置
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
JP3004013B2 (ja) サブル―チン呼び出しおよび復帰動作を実行するための装置および方法
US7516312B2 (en) Presbyopic branch target prefetch method and apparatus
US5930832A (en) Apparatus to guarantee TLB inclusion for store operations
JPH08305565A (ja) 命令及びデータのフェッチ制御方法及びシステム
JP2744882B2 (ja) キューにより命令の実行を制御する装置及び方法
US5634119A (en) Computer processing unit employing a separate millicode branch history table
JPH06168119A (ja) データ先読み制御装置
KR20090042303A (ko) 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련
JP3486690B2 (ja) パイプライン方式プロセッサ
JP2596712B2 (ja) 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US9086886B2 (en) Method and apparatus to limit millicode routine end branch prediction
US6978361B2 (en) Effectively infinite branch prediction table mechanism
EP0666538A2 (en) Data processor with branch target address cache and method of operation
US11151054B2 (en) Speculative address translation requests pertaining to instruction cache misses
JP2542565B2 (ja) 分岐予測制御方式
JP2001505327A (ja) 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法