JPH03147022A - 分岐命令処理装置および処理方法 - Google Patents

分岐命令処理装置および処理方法

Info

Publication number
JPH03147022A
JPH03147022A JP2273506A JP27350690A JPH03147022A JP H03147022 A JPH03147022 A JP H03147022A JP 2273506 A JP2273506 A JP 2273506A JP 27350690 A JP27350690 A JP 27350690A JP H03147022 A JPH03147022 A JP H03147022A
Authority
JP
Japan
Prior art keywords
branch
bht
entry
branch instruction
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.)
Granted
Application number
JP2273506A
Other languages
English (en)
Other versions
JPH0557617B2 (ja
Inventor
Philip G Emma
フイリツプ、ジヨージ・エマ
Joshua W Knight
ジヨシユア、ウイルソン・ナイト
James H Pomerene
ジエームス、ハーバート・ポーマレーン
Rudolph N Rechtschaffen
ラドルフ、ナーザン・レチエスチヤフエン
Frank J Sparacio
フランク、ジヨン・スパラシオ
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, 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, 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers

Abstract

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

Description

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

Claims (21)

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

Publications (2)

Publication Number Publication Date
JPH03147022A true JPH03147022A (ja) 1991-06-24
JPH0557617B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Families Citing this family (44)

* 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
DE4493224T1 (de) * 1993-05-14 1996-04-25 Intel Corp Spekulative-Vorgeschichte-Mechanismus in einem Verzweigungszielpuffer
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
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 富士通株式会社 分岐予測機構を有する情報処理装置
AU2003282763A1 (en) 2002-10-15 2004-05-04 Verance Corporation Media monitoring, management and information system
US9055239B2 (en) * 2003-10-08 2015-06-09 Verance Corporation Signal continuity assessment using embedded watermarks
US20070039018A1 (en) * 2005-08-09 2007-02-15 Verance Corporation Apparatus, systems and methods for broadcast advertising stewardship
US7369677B2 (en) 2005-04-26 2008-05-06 Verance Corporation System reactions to the detection of embedded watermarks in a digital host content
US20060239501A1 (en) 2005-04-26 2006-10-26 Verance Corporation Security enhancements of digital watermarks for multi-media content
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
US9607131B2 (en) 2010-09-16 2017-03-28 Verance Corporation Secure and efficient content screening in a networked environment
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
US8615104B2 (en) 2011-11-03 2013-12-24 Verance Corporation Watermark extraction based on 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
US9323902B2 (en) 2011-12-13 2016-04-26 Verance Corporation Conditional access using embedded watermarks
US9547753B2 (en) 2011-12-13 2017-01-17 Verance Corporation Coordinated watermarking
US9571606B2 (en) 2012-08-31 2017-02-14 Verance Corporation Social media viewing system
US8726304B2 (en) 2012-09-13 2014-05-13 Verance Corporation Time varying evaluation of multimedia content
US8869222B2 (en) 2012-09-13 2014-10-21 Verance Corporation Second screen content
US20140075469A1 (en) 2012-09-13 2014-03-13 Verance Corporation Content distribution including advertisements
WO2014153199A1 (en) 2013-03-14 2014-09-25 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
EP0258453B1 (en) * 1986-02-28 1993-05-19 Nec Corporation Instruction prefetch control apparatus
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JPH03147022A (ja) 分岐命令処理装置および処理方法
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US5276882A (en) Subroutine return through branch history table
US4763245A (en) Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
JP2746549B2 (ja) コンピュータシステム及びその動作方法
US5507028A (en) History based branch prediction accessed via a history based earlier instruction address
US7657726B2 (en) Context look ahead storage structures
JP2504830Y2 (ja) デ―タ処理装置
EP0106667A2 (en) Central processing unit
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
KR20000076502A (ko) 세트 예측을 사용하여 세트 연상 캐시에서 대기 시간을감소시키기 위한 방법 및 장치
JPS6341093B2 (ja)
JP2596712B2 (ja) 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US9086886B2 (en) Method and apparatus to limit millicode routine end branch prediction
US6978361B2 (en) Effectively infinite branch prediction table mechanism
JP2534662B2 (ja) 命令キヤツシユ制御方法
JP3108512B2 (ja) 分岐予測装置
JP2008191824A (ja) プリフェッチ方法、及びキャッシュ機構用ユニット
JPH08161226A (ja) データ先読み制御方法,キャッシュ制御装置およびデータ処理装置
JP2902847B2 (ja) 自己変更コード実行方式
JPH06301538A (ja) 条件分岐命令処理装置
JP2001505327A (ja) 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法
JPH07219838A (ja) データ先読み制御装置
EP0912929A1 (en) A data address prediction structure and a method for operating the same