JPH10133873A - 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を投機的に実行するためのプロセッサおよび方法 - Google Patents

複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を投機的に実行するためのプロセッサおよび方法

Info

Publication number
JPH10133873A
JPH10133873A JP9106128A JP10612897A JPH10133873A JP H10133873 A JPH10133873 A JP H10133873A JP 9106128 A JP9106128 A JP 9106128A JP 10612897 A JP10612897 A JP 10612897A JP H10133873 A JPH10133873 A JP H10133873A
Authority
JP
Japan
Prior art keywords
branch
prediction
instruction
branch prediction
dynamic
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
JP9106128A
Other languages
English (en)
Other versions
JP3397081B2 (ja
Inventor
Soummya Mallick
ソウムミヤ・マリック
Albert John Loper
アルバート・ジョン・ローパー
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 JPH10133873A publication Critical patent/JPH10133873A/ja
Application granted granted Critical
Publication of JP3397081B2 publication Critical patent/JP3397081B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • 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/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Eye Examination Apparatus (AREA)
  • Image Processing (AREA)

Abstract

(57)【要約】 【課題】 複数の分岐予測方式のうちの選択された1つ
を使用して、条件分岐命令を投機的に実行するための改
良されたプロセッサおよび方法を提供すること。 【解決手段】 選択された分岐予測方式を使用して分岐
命令を投機的に実行するためのプロセッサおよび方法を
開示する。プロセッサは、分岐命令を実行するための分
岐処理ユニットを含む、命令を実行するための1つまた
は複数の実行ユニットを有する。分岐処理ユニットに
は、複数の分岐予測方式のうちの1つを選択するための
選択論理機構と、選択された分岐予測方式を使用して条
件分岐命令の解決を予測するための分岐予測ユニットが
含まれる。分岐処理ユニットには、さらに、予測に基づ
いて条件分岐命令を投機的に実行するための実行機能が
含まれる。予測の結果に基づいて、選択論理機構は、後
続の条件分岐命令を予測するための分岐予測方式を選択
し、その結果、分岐予測精度が高まる。一実施例では、
複数の分岐予測方式に、静的分岐予測と動的分岐予測が
含まれる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明の技術分野は、全般的
にはデータ処理の方法およびシステムに関し、具体的に
は、分岐命令を実行するためのプロセッサおよび方法に
関する。さらに具体的には、本発明の技術分野は、複数
の分岐予測方式のうちの選択された1つを使用して条件
分岐命令を投機実行するためのプロセッサおよび方法に
関する。
【0002】
【従来の技術】現在のスーパースカラ・プロセッサに
は、通常は、命令を記憶するための命令キャッシュ、実
行のため命令キャッシュから取り出された命令を一時的
に記憶するための命令バッファ、順次命令を実行するた
めの1つまたは複数の実行ユニット、分岐命令を実行す
るための分岐処理ユニット(BPU)、命令バッファか
ら特定の実行ユニットへ順次命令をディスパッチするた
めのディスパッチ・ユニット、および、実行を終了した
が完了していない順次命令を一時的に記憶するための完
了バッファが含まれる。
【0003】スーパースカラ・プロセッサの分岐処理ユ
ニット(BPU)によって実行される分岐命令は、条件
分岐命令または無条件分岐命令のいずれかに分類でき
る。無条件分岐命令とは、プログラム実行の流れを順次
経路から指定された目標実行経路に変更する分岐命令で
あり、別の命令の実行によって供給される条件に依存し
ない分岐命令である。したがって、無条件分岐命令によ
って指定された分岐は、必ず採用される。対照的に、条
件分岐命令は、プログラム・フロー内で示された分岐
が、別の命令の実行によって供給される条件に依存して
採用される場合とされない場合がある分岐命令である。
条件分岐命令は、さらに、条件分岐命令が分岐処理ユニ
ット(BPU)によって評価される時に分岐が依存する
条件が使用可能であるか否かに基づいて、解決済みまた
は未解決のいずれかに分類できる。解決済み条件分岐命
令が依存する条件は、実行の前に既知であるから、解決
済み条件分岐命令は、通常は実行可能であり、目標実行
経路内の命令は、順次命令の実行の際に遅延がほとんど
または全くない状態で取り出すことができる。その一方
で、未解決条件分岐命令は、その分岐が依存する条件が
使用可能になり、分岐が解決されるまで順次命令の取出
が遅延される場合には、かなりの性能ペナルティをもた
らす可能性がある。
【0004】したがって、性能を強化するために、一部
のプロセッサは、示された分岐が採用されるか否かを予
測することによって、未解決の分岐命令を投機的に実行
する。予測の結果を使用すると、フェッチャは、分岐の
解決の前に投機実行経路内の命令を取り出せるようにな
り、これによって、分岐が予測通りに解決される場合に
実行パイプラインでのストールがなくなる。
【0005】分岐予測機構を有するプロセッサでは、通
常は、静的分岐予測方式または動的分岐予測方式のいず
れかが使用される。静的分岐予測の最も単純な実施態様
の1つが、後方分岐のすべてが採用され、前方分岐のす
べてが採用されないと推測することである。静的分岐予
測の別の実施態様では、あるプログラム内の分岐命令の
それぞれにYビットを関連付ける。このYビットは、プ
ログラム・コンパイラのプロファイリング動作に従っ
て、その分岐が採用されると予測すべきか否かを分岐処
理ユニット(BPU)に示すためにセットされる。した
がって、コンパイル中にプログラムから収集された情報
に基づいて、コンパイラが、投機的に実行する場合に各
分岐を採用されると予測するか否かを指示する。静的分
岐予測で使用されるソフトウェアに基づくアプローチと
は異なって、動的分岐予測では、特定の分岐命令の解決
を分岐履歴テーブル(BHT)に記録し、このテーブル
に記憶された前の解決を利用して後続の分岐を予測す
る。
【0006】静的分岐予測と動的分岐予測どちらもが、
かなり高い精度を有し、静的予測では平均60%から7
0%の間、動的予測では平均90%から97%の間の精
度になるが、単一の分岐予測方式を排他的に使用する
と、特定の命令シナリオが発生する時に深刻な性能ペナ
ルティがもたらされる可能性がある。たとえば、前方分
岐は採用されず、後方分岐は採用されると予測する静的
分岐予測では、前方分岐が必ず採用される命令シナリオ
の場合に100%誤予測がもたらされる。この特定のタ
イプのコード・シーケンスは、動的分岐予測には理想的
であるが、静的分岐予測は、他のコード・シーケンスに
ついては動的分岐予測より優秀である。たとえば、交番
カウント指標に基づいて採用される、ループに含まれる
分岐は、動的分岐予測を利用する時には100%誤予測
になるが、静的分岐予測を使用すると50%だけが誤予
測になる。誤りを含むコードに起因する動的分岐予測に
関する問題に加えて、プロセッサのコールド・スタート
の後には、使用可能な分岐履歴がないので、動的分岐予
測は予測精度が低下する可能性がある。同様に、動的分
岐予測を使用するプロセッサは、小さい分岐履歴テーブ
ルしか維持せず、したがって、分岐命令エイリアスの可
能性がある場合には、予測精度が低くなる可能性があ
る。
【0007】分岐予測の各タイプに固有の欠陥に対処す
るために、一部のプロセッサは、モード・ビットを備
え、このモード・ビットの状態に依存して、分岐処理ユ
ニット(BPU)が静的分岐予測機構または動的予測機
構のいずれかを使用できるようになっている。しかし、
このようなプロセッサでは、分岐処理ユニット(BP
U)が、分岐命令の特定の実例についてどの分岐予測方
式を使用するかを知的に選択することが許容されない。
その結果、条件分岐命令を投機的に実行するための、複
数の分岐予測方式のうちの1つを知的に選択するプロセ
ッサおよび方法が必要である。
【0008】
【発明が解決しようとする課題】本発明の目的は、デー
タ処理のための改良された方法およびシステムを提供す
ることである。
【0009】本発明のもう1つの目的は、分岐命令を実
行するための改良されたプロセッサおよび方法を提供す
ることである。
【0010】本発明のもう1つの目的は、複数の分岐予
測方式のうちの選択された1つを使用して、条件分岐命
令を投機的に実行するための改良されたプロセッサおよ
び方法を提供することである。
【0011】
【課題を解決するための手段】前述の目的は、下記に従
って達成される。選択された分岐予測方式を使用して分
岐命令を投機的に実行するためのプロセッサおよび方法
を開示する。プロセッサは、分岐命令を実行するための
分岐処理ユニットを含む、命令を実行するための1つま
たは複数の実行ユニットを有する。分岐処理ユニットに
は、複数の分岐予測方式のうちの1つを選択するための
選択論理機構と、選択された分岐予測方式を使用して条
件分岐命令の解決を予測するための分岐予測ユニットが
含まれる。分岐処理ユニットには、さらに、予測に基づ
いて条件分岐命令を投機的に実行するための実行機能が
含まれる。予測の結果に基づいて、選択論理機構は、後
続の条件分岐命令を予測するための分岐予測方式を選択
し、その結果、分岐予測精度が高まる。一実施例では、
複数の分岐予測方式に、静的分岐予測と動的分岐予測が
含まれる。
【0012】
【発明の実施の形態】ここで図面、具体的には図1を参
照すると、請求項に記載された本発明による情報処理の
ためのプロセッサ10の実施例のブロック図が示されて
いる。図示の実施例では、プロセッサ10に、単一の集
積回路スーパースカラ・マイクロプロセッサが含まれ
る。したがって、下でさらに説明するように、プロセッ
サ10には、さまざまな実行ユニット、レジスタ、バッ
ファ、メモリおよび他の機能ユニットが含まれ、これら
のすべてが集積回路によって形成される。プロセッサ1
0は、縮小命令セット・コンピュータ(RISC)技法
に従って動作する、IBM Microelectronics社が販売する
PowerPC(商標)系列のマイクロプロセッサの1つであ
ることが好ましいが、当業者であれば、他の適当なプロ
セッサを使用できることを諒解するであろう。図1から
わかるように、プロセッサ10は、プロセッサ10内の
バス・インターフェース・ユニット(BIU)12を介
してシステム・バス11に結合される。BIU12は、
プロセッサ10と、主記憶(図示せず)など、システム
・バス11に結合された他のデバイスとの間の情報の転
送を制御する。プロセッサ10、システム・バス11お
よび、システム・バス11に結合された他のデバイス
が、データ処理システムを形成する。
【0013】BIU12は、プロセッサ10内の命令キ
ャッシュ14およびデータ・キャッシュ16に結合され
る。命令キャッシュ14やデータ・キャッシュ16など
の高速キャッシュを用いると、プロセッサ10が、前に
主記憶から命令キャッシュ14またはデータ・キャッシ
ュ16に転送されたデータまたは命令のサブセットへの
比較的高速のアクセス時間を達成でき、したがって、デ
ータ処理システムの動作速度が向上する。命令キャッシ
ュ14は、さらに、シーケンシャル・フェッチャ17に
結合され、このシーケンシャル・フェッチャ17は、各
サイクル中に命令キャッシュ14から実行のため命令を
取り出す。シーケンシャル・フェッチャ17は、命令キ
ャッシュ14から取り出した命令を分岐処理ユニット
(BPU)18と命令キュー19の両方に伝送し、これ
らは、その命令が分岐命令か順次命令かを判定するため
に命令を復号する。分岐命令は、実行のためBPU18
に保存され、命令キュー19から取り消される。その一
方で、順次命令は、BPU18から取り消され、プロセ
ッサ10内の他の実行回路による後続の実行のため命令
キュー19内に記憶される。
【0014】図示の実施例では、BPU18に加えて、
プロセッサ10の実行回路に、順次命令用の複数の実行
ユニットが含まれ、これには、固定小数点ユニット(F
XU)22、ロード/ストア・ユニット(LSU)28
および浮動小数点ユニット(FPU)30が含まれる。
コンピュータ技術の技量を有する者には周知のとおり、
FXU22、LSU28およびFPU30のそれぞれ
は、通常は、各プロセッサ・サイクル中に特定のタイプ
の順次命令のうちの1つまたは複数の命令を実行する。
たとえば、FXU22は、加算、減算、AND、OR、
XORなどの固定小数点の算術演算および論理演算を実
行し、指定された汎用レジスタ(GPR)32またはG
PRリネーム・バッファ33から受け取るソース・オペ
ランドを使用する。固定小数点命令の実行の後に、FX
U22は、命令のデータ結果をGPRリネーム・バッフ
ァ33に出力し、GPRリネーム・バッファ33は、結
果データをGPRリネーム・バッファ33からGPR3
2のうちの1つまたは複数に転送することによって命令
を完了するまでその結果データの一時的な記憶を提供す
る。対照的に、FPU30は、通常は、浮動小数点レジ
スタ(FPR)36またはFPRリネーム・バッファ3
7から受け取るソース・オペランドに対して、浮動小数
点の乗除算などの単精度および倍精度の浮動小数点の算
術演算および論理演算を実行する。FPU30は、浮動
小数点命令の実行から生じるデータを、選択されたFP
Rリネーム・バッファ37に出力し、このFPRリネー
ム・バッファ37は、結果データをFPRリネーム・バ
ッファ37から選択されたFPR36に転送することに
よって命令を完了するまで結果データを一時的に記憶す
る。名前から示されるように、LSU28は、通常は、
メモリ(すなわち、データ・キャッシュ16または主記
憶)から選択されたGPR32またはFPR36にデー
タをロードするか、GPR32、GPRリネーム・バッ
ファ33、FPR36またはFPRリネーム・バッファ
37のうちの選択された1つからメモリへデータをスト
アする、浮動小数点命令および固定小数点命令を実行す
る。
【0015】プロセッサ10は、命令のパイプライン化
と順番外実行の両方を使用して、そのスーパースカラ・
アーキテクチャの性能をさらに高める。したがって、命
令は、データ依存性が観察される限り、FXU22、L
SU28およびFPU30によって任意の順序で適宜実
行できる。さらに、命令は、一連のパイプライン・ステ
ージで、FXU22、LSU28およびFPU30のそ
れぞれによって処理される。高性能プロセッサの多数で
典型的であるように、各命令は、5つの別個のパイプラ
イン・ステージ、すなわち、取出、復号/ディスパッ
チ、実行、終了および完了の各ステージで処理される。
【0016】取出ステージでは、シーケンシャル・フェ
ッチャ17が、命令キャッシュ14から、1つまたは複
数のメモリ・アドレスに関連する1つまたは複数の命令
を取り出す。上で述べたように、命令キャッシュ14か
ら取り出される順次命令は、シーケンシャル・フェッチ
ャ17によって命令キュー19に格納され、分岐命令
は、順次命令ストリームから除去(fold out)される。
図2に関して下で説明するように、分岐命令はBPU1
8によって実行されるが、BPU18には、複数の分岐
予測方式のうちの選択された1つを使用してBPU18
が未解決の条件分岐命令を投機的に実行できるようにす
る新規の分岐予測機構が含まれる。
【0017】復号/ディスパッチ・ステージ中には、デ
ィスパッチ・ユニット20が、命令キュー19からの1
つまたは複数の命令を復号し、FXU22、LSU28
およびFPU30にディスパッチする。また、復号/デ
ィスパッチ・ステージ中に、ディスパッチ・ユニット2
0は、ディスパッチされた命令のそれぞれの結果データ
のために、GPRリネーム・バッファ33またはFPR
リネーム・バッファ37内のリネーム・バッファを割り
振る。図示の実施例によれば、ディスパッチ・ユニット
20によってディスパッチされる命令は、完了ユニット
40内の完了バッファにも渡される。プロセッサ10
は、独自の命令識別子を使用して、順番外実行中にディ
スパッチされた命令のプログラム順を追跡する。
【0018】実行ステージ中には、指示された動作のオ
ペランドおよび実行資源が使用可能になった時に、FX
U22、LSU28およびFPU30が、ディスパッチ
・ユニット20から受け取った順次命令を適宜実行す
る。FXU22、LSU28およびFPU30のそれぞ
れは、オペランドまたは実行資源が使用可能になるまで
その実行ユニットにディスパッチされた命令を記憶する
リザベーション・ステーションを備えることが好まし
い。命令の実行が終了した後に、FXU22、LSU2
8またはFPU30は、その命令のデータ結果を、命令
のタイプに応じてGPRリネーム・バッファ33または
FPRリネーム・バッファ37のいずれかに格納する。
その後、FXU22、LSU28またはFPU30は、
完了ユニット40の完了バッファに記憶された命令のど
れが実行を終了したかを完了ユニット40に通知する。
最後に、命令は、完了ユニット40が命令のデータ結果
をプログラム順でGPRリネーム・バッファ33からG
PR32へまたはFPRリネーム・バッファ37からF
PR36へ転送することによって完了する。
【0019】ここで図2および図5を参照すると、プロ
セッサ10のBPU18を示す詳細なブロック図と、B
PU18内の分岐命令の実行の詳細を示す流れ図が示さ
れている。まず図5を参照すると、この処理は、ブロッ
ク200から始まり、その後、ブロック202およびブ
ロック204に進む。ブロック202およびブロック2
04には、シーケンシャル・フェッチャ17が、命令キ
ャッシュ14から順次命令の次の組を取り出すことと、
取り出された命令をBPU18および命令キュー19に
送ることが示されている。図2に示されるように、BP
U18は、各サイクルに2つまでの命令をシーケンシャ
ル・フェッチャ17から受け取り、命令レジスタ(I
R)50および52内に命令を記憶する。取り出された
命令をIR50および52内に記憶することが、図5の
ブロック206に示される、分岐復号ユニット54によ
る命令復号のトリガになる。
【0020】さらに図5を参照すると、ブロック208
でIR50および52のいずれかに記憶された命令が非
分岐命令であると判定されたことに応答して、ブロック
210に示されるように、その命令は単に破棄される。
その後、処理は、ブロック210からブロック270に
進み、破棄された命令の処理が終了する。その一方で、
ブロック208でIR50および52のいずれかに記憶
された命令が分岐命令であると判定される場合、ブロッ
ク220で、その命令が条件分岐命令であるか否かの判
定を行う。無条件分岐命令は、単に分岐選択ユニット5
6に渡され、この分岐選択ユニット56が、目標命令の
有効アドレス(EA)を計算する。ブロック222に示
されるように、分岐選択ユニット56は、その後、EA
を命令キャッシュ14に送って、目標アドレスにある順
次命令の取出を開始する。
【0021】ブロック220に戻って、取り出された命
令が分岐命令であることが分岐復号ユニット54のうち
の1つによって判定される場合、処理はブロック230
に進み、その分岐が依存する条件レジスタ(CR)のフ
ィールドが進行中の命令すなわち取り出されたがまだ完
了していない命令の目標であるか否かが判定される。ブ
ロック230に示された判定を行うために、命令が分岐
選択ユニット56に渡され、分岐選択ユニット56は、
分岐が依存するCRフィールドの表示を探索論理機構5
8および60に送る。分岐選択ユニット56から受け取
ったCRフィールド識別子を使用して、探索論理機構5
8は、命令キュー19内の命令を検査して、分岐が依存
するCRフィールドが命令キュー19内の1つまたは複
数の命令の目標であるかどうかを判定する。これと同時
に、問題のCRフィールドが、ディスパッチされたが完
了ユニット40の完了バッファ62内に格納されている
未完了の命令の目標であるかどうかの判定が、探索論理
機構60によって行われる。問題のCRフィールドが、
進行中の命令の目標ではない場合、その分岐命令は、す
でに解決されており、分岐が依存するCRフィールド
は、CRの時間的状態を記憶する図示されていないCR
特殊目的レジスタ(SPR)内に存在する。したがっ
て、処理は、ブロック230からブロック232に進
み、分岐決定ユニット64が、CR SPR内の問題の
CRフィールドを調べ、可能であれば条件分岐を解決す
る。その後、分岐命令の解決が、分岐選択ユニット56
に供給される。その後、ブロック222に示されるよう
に、分岐選択ユニット56が、目標命令のEAを計算
し、そのEAを命令キャッシュ14に送る。
【0022】ここでブロック230に戻って、問題のC
Rフィールドが進行中の命令の目標であることが探索論
理機構58または60によって判定された場合、処理は
ブロック240に進み、その命令によって供給されるC
Rビットが使用可能であるか否かの判定が、探索論理機
構60によって行われる。ある命令によって供給される
CRビットは、その命令が完了し、その命令の実行によ
って生成されたCRビットが完了バッファ62に格納さ
れている場合に使用可能である。CRビットが使用可能
な場合には、処理はブロック240からブロック242
に進み、分岐決定ユニット64が、命令に関連するCR
ビットを検査して、分岐を解決する。さらに、分岐決定
ユニット64は、条件分岐命令の解決を分岐選択ユニッ
ト56に供給し、分岐選択ユニット56は、ブロック2
22に示されるように、次に取り出す命令のEAを計算
し、そのEAを命令キャッシュ14に転送する。
【0023】ブロック240に戻って、CRビットがま
だ使用可能でない(すなわち、命令がまだディスパッチ
されていないか、実行を終了していない)場合には、処
理はブロック250ないしブロック260に進み、未解
決条件分岐命令の投機実行を行う。したがって、分岐決
定ユニット64は、CRビットが使用可能でないことを
選択論理機構66に通知し、その命令を予測によって投
機的に実行しなければならないことを示す。次に、ブロ
ック250に示されるように、選択論理機構66は、分
岐予測方式を選択する。本発明の重要な態様に従い、ま
た、図3および図4に関連して詳細に説明するように、
選択論理機構66は、分岐履歴テーブル(BHT)68
に格納された過去の予測の結果に基づいて分岐予測方式
を選択する。したがって、複数の分岐予測モードをサポ
ートする従来技術のプロセッサとは異なり、図1に示さ
れた実施例では、過去の予測の結果に基づいて知的かつ
動的に最適分岐予測方式が選択される。ブロック252
に示されるように、選択された分岐予測方式を使用し
て、分岐決定ユニット64は、分岐の採否を予測し、そ
の予測を分岐選択ユニット56に示す。その後、ブロッ
ク254に示されるように、分岐選択ユニット56は、
目標命令のEAを計算し、命令キャッシュ14に送る。
【0024】図5に示された処理は、ブロック254か
らブロック256に進み、条件分岐命令が予測通りに解
決されたかどうかが判定される。ブロック256に示さ
れた判定は、分岐決定ユニット64によって行われ、こ
の分岐決定ユニット64は、関連する命令の終了の後
に、分岐が依存するCRビットを探索論理機構60から
受け取る。分岐が誤予測されたことが分岐決定ユニット
64によって判定される場合、処理はブロック258に
進み、分岐決定ユニット64が、命令キュー19とFX
U22、LSU28およびFPU30から、誤予測され
た分岐命令の投機実行経路内の命令を取り消す。その
後、処理はブロック260に進む。当業者であれば、複
数レベルの投機を許容するプロセッサ実施態様の場合、
すべての投機命令を取り消す必要はなく、分岐の誤予測
に応答して取り出された投機命令だけを取り消せばよい
ことを諒解するであろう。ブロック256に戻って、分
岐が正しく予測されたとブロック256で判定される場
合、これに応答して、処理はブロック256からブロッ
ク260に進む。ブロック260では、必要があれば選
択論理機構66がBHT68を更新して、条件分岐命令
の後続の投機実行のために適当な分岐予測方式が選択さ
れるようにする。その後、この処理はブロック270で
終了する。
【0025】ここで図3を参照すると、BPU18のB
HT68を表す図が示されている。図からわかるよう
に、BHT68には、256個の項目80を含むテーブ
ルが含まれ、項目80のそれぞれは、指標82を使用し
てアクセスされる。図示の実施例では、指標82のそれ
ぞれに、分岐命令アドレスの最下位8ビットが含まれ
る。したがって、たとえば、00hで終わるアドレスを
有する命令の分岐履歴は、最初の項目80に格納され、
01hで終わるアドレスを有する分岐命令は、第2の項
目に格納され、以下同様である。図からわかるように、
各項目80には、3ビットが含まれ、これによって、後
続の条件分岐命令に関する7つの予測状態(8番目の可
能な状態は未使用)のうちの1つが指定される。従来の
分岐履歴テーブルと同様に、BHT68の項目80内に
格納される予測状態は、その分岐命令の後続の実行をよ
り正確に予測するために、関連する分岐の採否の解決の
後に更新される。
【0026】ここで図4を参照すると、分岐予測方式の
選択に使用される状態機械の実施例が示されている。状
態機械88には、4つの動的予測状態90、92、94
および96と、3つの静的予測状態98、100および
102を含む7つの状態が含まれる。図からわかるよう
に、予測状態90ないし102のそれぞれは、BHT6
8の各項目80の7つの可能な設定のうちの1つに対応
する。
【0027】まず、静的予測状態100を参照すると、
予測される分岐命令が、「000」に設定されたBHT
68の項目80にマッピングされる場合、分岐が採用さ
れるか否かの予測には、静的分岐予測が使用される。こ
の分岐が採用されて解決された場合(これを略語RTで
示す)、BHT68の項目80は、静的予測状態102
に示されるように「001」に更新される。状態機械8
8は、分岐が正しく予測されたか否かに無関係に、この
解決RTに応答して静的予測状態100から静的予測状
態102に進行することに留意することが重要である。
その条件分岐命令が次に予測される時には、静的予測状
態102によって指定されるように、やはり静的分岐予
測が使用される。その分岐がやはり採用されて解決され
た場合、BHT68の項目80は、「010」に更新さ
れ、動的予測状態90によって示されるように、次の予
測には動的分岐予測が使用されることが示される。
【0028】その後、状態機械88は、後続の分岐予測
がRTとして解決される限り、動的予測状態90にとど
まる。動的予測状態90のところに示されている「P
T」は、分岐予測が採用であること、すなわち分岐がと
られるものと予測されることを表している。しかし、分
岐が採用されずに解決されると(これを略語RNTで示
す)、これに応答して、状態機械88は、動的予測状態
90から動的予測状態92に進み、BHT68の項目8
0は、「011」に更新される。項目80が、動的予測
状態92に対応する「011」に設定される場合、項目
80にマッピングされる分岐命令は、状態90と同じ
く、採用されるものとして予測される。RTとしての分
岐の解決(すなわち正しい予測)に応答して、状態機械
88は、すでに説明した動的予測状態90に戻る。しか
し、分岐の解決がRNTの場合は、状態機械88は、動
的予測状態92から静的予測状態100に戻る。
【0029】もう一度静的予測状態100を参照する
と、分岐命令がRNTとして解決された場合には、状態
機械88は、静的予測状態100から静的予測状態98
に進み、項目80は「111」に更新される。この分岐
命令の次の出現がRTとして解決された場合には、状態
機械88は、静的予測状態98からすでに説明した静的
予測状態100に戻る。その一方で、分岐命令がRNT
として解決された場合には、状態機械88は、静的予測
状態98から動的予測状態96に進み、項目80は「1
10」に更新される。
【0030】条件分岐は、状態機械88が動的予測状態
96であり、項目80がそれに対応して「110」に設
定されている間は非採用として予測される(これを略語
PNTで示す)。予測された条件分岐が、RNTとして
解決された場合、状態機械88は、動的予測状態96に
とどまる。その代わりに、予測された条件分岐が、RT
として解決された場合、状態機械88は、動的予測状態
94に進む。これは、BHT設定「101」に対応す
る。状態機械88が動的予測状態94である時には、状
態96と同じく、条件分岐は非採用として予測される
(PNT)。動的予測状態94でRNTと予測された分
岐がRNTとして解決された場合、状態機械88は、す
でに説明した動的予測状態96に戻る。しかし、この分
岐がRTとして解決された場合には、処理は、すでに説
明した静的予測状態100に戻る。
【0031】図4の前述の説明からわかるように、状態
機械88が、静的予測状態98ないし102のうちのど
れかである間は、分岐解決の方向によって、予測機構の
次の状態が決定される。分岐が2回連続してRTまたは
RNTとして解決された後には、動的分岐予測方式が使
用される。同様に、状態機械88が、動的予測状態90
または96のいずれかである場合に、2回連続して分岐
誤予測が発生すると、分岐は、静的分岐予測を使用して
予測される。図4で状態機械88の実施例を示したが、
当業者であれば、分岐履歴に基づいて分岐予測方式を知
的に選択できるようにする、他の状態機械を実施できる
ことを諒解するであろう。さらに、当業者であれば、複
数のタイプの静的予測と動的予測を使用できることを諒
解するであろう。たとえば、BPU18は、示された分
岐が前方分岐か後方分岐かに基づいて分岐命令の解決を
予測する単純な静的分岐予測方式を実施することができ
る。その代わりに、プログラムのコンパイル中に学習し
た情報に基づいて分岐命令を予測する、より複雑な静的
分岐予測方式を使用することができる。
【0032】実施例を具体的に図示し、説明してきた
が、当業者であれば、実施例の趣旨および範囲から逸脱
することなく、形態と詳細においてさまざまな変更を行
えることを理解するであろう。
【0033】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0034】(1)命令を実行するための1つまたは複
数の実行ユニットを含み、前記1つまたは複数の実行ユ
ニットが、分岐命令を実行するための分岐処理ユニット
を含み、前記分岐処理ユニットが、複数の分岐予測方式
のうちの1つを選択するための選択手段と、選択された
分岐予測方式を使用して条件分岐命令の解決を予測する
ための分岐予測手段と、前記予測に従って前記分岐命令
を投機的に実行するための手段とを含み、前記選択手段
が、前記予測の結果に応答して後続の条件分岐命令の解
決を予測するための分岐予測方式を選択することを特徴
とするプロセッサ。 (2)前記複数の分岐予測方式に、動的分岐予測が含ま
れることを特徴とする、上記(1)のプロセッサ。 (3)前記動的分岐予測を使用する場合に分岐がとられ
るものと予測すべきか否かの表示を記憶する分岐履歴テ
ーブルをさらに含むことを特徴とする、上記(2)のプ
ロセッサ。 (4)前記複数の分岐予測方式に、静的分岐予測が含ま
れることを特徴とする、上記(3)のプロセッサ。 (5)前記選択手段が、動的分岐予測において誤予測が
所定回数生じた場合に静的分岐予測を選択するための手
段と、静的分岐予測において条件分岐命令の同じ解決が
所定回数生じた場合に動的分岐予測を選択するための手
段とを含むことを特徴とする、上記(4)のプロセッ
サ。 (6)バスと、実行される命令を記憶する、前記バスに
結合されたメモリと、前記バスを介して前記メモリに結
合された、前記メモリから命令を取り出すためのフェッ
チャと、分岐命令を実行するための分岐処理ユニットを
含む、取り出された命令を実行するための1つまたは複
数の命令ユニットとを含み、前記分岐処理ユニットが、
複数の分岐予測方式のうちの1つを選択するための選択
手段と、選択された分岐予測方式を使用して条件分岐命
令の解決を予測するための分岐予測手段と、前記予測に
従って前記分岐命令を投機的に実行するための手段とを
含み、前記予測の結果に基づいて、前記選択手段が、分
岐予測精度が高まるように後続の条件分岐命令の解決を
予測するための分岐予測方式を選択することを特徴とす
るデータ処理システム。 (7)前記複数の分岐選択方式に、動的分岐予測が含ま
れることを特徴とする、上記(6)のデータ処理システ
ム。 (8)前記動的分岐予測を使用する場合に分岐がとられ
るものと予測すべきか否かの表示を記憶する分岐履歴テ
ーブルをさらに含むことを特徴とする、上記(7)のデ
ータ処理システム。 (9)前記複数の分岐予測方式に、静的分岐予測が含ま
れることを特徴とする、上記(8)のデータ処理システ
ム。 (10)前記選択手段が、動的分岐予測において誤予測
が所定回数生じた場合に静的分岐予測を選択するための
手段と、静的分岐予測において条件分岐命令の同じ解決
が所定回数生じた場合に動的分岐予測を選択するための
手段とを含むことを特徴とする、上記(9)のデータ処
理システム。 (11)条件分岐命令の解決を予測するため複数の分岐
予測方式のうちの1つを選択するステップと、選択され
た分岐予測方式を使用して、採用または非採用として前
記条件分岐命令の解決を予測するステップと、前記予測
に従って前記条件分岐命令を投機的に実行するステップ
と、その後、採用または非採用として前記条件分岐命令
を解決するステップと、前記条件分岐命令の解決に応答
して、分岐予測の精度が高まるように、後続の条件分岐
命令の解決の予測のために分岐予測方式を選択するため
前記予測の結果を使用するステップとを含む、条件分岐
命令を投機的に実行するための方法。 (12)前記複数の分岐予測方式に、動的分岐予測が含
まれることを特徴とする、上記(11)の方法。 (13)さらに、動的分岐予測を使用して、前記後続の
条件分岐命令を採用または非採用として予測すべきか否
かの表示を記憶するステップを含む、上記(12)の方
法。 (14)前記複数の分岐予測方式に、静的分岐予測が含
まれることを特徴とする、上記(13)の方法。 (15)前記複数の分岐方式のうちの1つを選択するス
テップが、動的分岐予測において誤予測が所定回数生じ
た場合に静的分岐予測を選択するステップと、静的分岐
予測において分岐命令の同じ解決が所定回数生じた場合
に動的分岐予測を選択するステップとを含むことを特徴
とする、上記(14)の方法。
【図面の簡単な説明】
【図1】分岐処理ユニットを含むプロセッサの実施例を
示すブロック図である。
【図2】図1に示された分岐処理ユニットの詳細なブロ
ック図である。
【図3】図2に示された分岐処理ユニット(BPU)の
分岐履歴テーブル(BHT)を表す図である。
【図4】図2に示された分岐処理ユニットによって、投
機的に実行される条件分岐命令の解決の予測に使用され
る分岐予測方式を選択するのに使用される方法の状態図
である。
【図5】図1に示された実施例による、分岐命令を実行
する方法の流れ図である。
【符号の説明】
18 分岐処理ユニット(BPU) 19 命令キュー 50 命令レジスタ(IR) 52 命令レジスタ(IR) 54 分岐復号ユニット 56 分岐選択ユニット 58 探索論理機構 60 探索論理機構 64 分岐決定ユニット 66 選択論理機構 68 分岐履歴テーブル(BHT)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 アルバート・ジョン・ローパー アメリカ合衆国78613 テキサス州シーダ ー・パーク フォレスト・トレール 1003

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】命令を実行するための1つまたは複数の実
    行ユニットを含み、 前記1つまたは複数の実行ユニットが、分岐命令を実行
    するための分岐処理ユニットを含み、前記分岐処理ユニ
    ットが、 複数の分岐予測方式のうちの1つを選択するための選択
    手段と、 選択された分岐予測方式を使用して条件分岐命令の解決
    を予測するための分岐予測手段と、 前記予測に従って前記分岐命令を投機的に実行するため
    の手段とを含み、前記選択手段が、前記予測の結果に応
    答して後続の条件分岐命令の解決を予測するための分岐
    予測方式を選択することを特徴とするプロセッサ。
  2. 【請求項2】前記複数の分岐予測方式に、動的分岐予測
    が含まれることを特徴とする、請求項1のプロセッサ。
  3. 【請求項3】前記動的分岐予測を使用する場合に分岐が
    とられるものと予測すべきか否かの表示を記憶する分岐
    履歴テーブルをさらに含むことを特徴とする、請求項2
    のプロセッサ。
  4. 【請求項4】前記複数の分岐予測方式に、静的分岐予測
    が含まれることを特徴とする、請求項3のプロセッサ。
  5. 【請求項5】前記選択手段が、 動的分岐予測において誤予測が所定回数生じた場合に静
    的分岐予測を選択するための手段と、 静的分岐予測において条件分岐命令の同じ解決が所定回
    数生じた場合に動的分岐予測を選択するための手段とを
    含むことを特徴とする、請求項4のプロセッサ。
  6. 【請求項6】バスと、 実行される命令を記憶する、前記バスに結合されたメモ
    リと、 前記バスを介して前記メモリに結合された、前記メモリ
    から命令を取り出すためのフェッチャと、 分岐命令を実行するための分岐処理ユニットを含む、取
    り出された命令を実行するための1つまたは複数の命令
    ユニットとを含み、前記分岐処理ユニットが、 複数の分岐予測方式のうちの1つを選択するための選択
    手段と、 選択された分岐予測方式を使用して条件分岐命令の解決
    を予測するための分岐予測手段と、 前記予測に従って前記分岐命令を投機的に実行するため
    の手段とを含み、 前記予測の結果に基づいて、前記選択手段が、分岐予測
    精度が高まるように後続の条件分岐命令の解決を予測す
    るための分岐予測方式を選択することを特徴とするデー
    タ処理システム。
  7. 【請求項7】前記複数の分岐選択方式に、動的分岐予測
    が含まれることを特徴とする、請求項6のデータ処理シ
    ステム。
  8. 【請求項8】前記動的分岐予測を使用する場合に分岐が
    とられるものと予測すべきか否かの表示を記憶する分岐
    履歴テーブルをさらに含むことを特徴とする、請求項7
    のデータ処理システム。
  9. 【請求項9】前記複数の分岐予測方式に、静的分岐予測
    が含まれることを特徴とする、請求項8のデータ処理シ
    ステム。
  10. 【請求項10】前記選択手段が、 動的分岐予測において誤予測が所定回数生じた場合に静
    的分岐予測を選択するための手段と、 静的分岐予測において条件分岐命令の同じ解決が所定回
    数生じた場合に動的分岐予測を選択するための手段とを
    含むことを特徴とする、請求項9のデータ処理システ
    ム。
  11. 【請求項11】条件分岐命令の解決を予測するため複数
    の分岐予測方式のうちの1つを選択するステップと、 選択された分岐予測方式を使用して、採用または非採用
    として前記条件分岐命令の解決を予測するステップと、 前記予測に従って前記条件分岐命令を投機的に実行する
    ステップと、 その後、採用または非採用として前記条件分岐命令を解
    決するステップと、 前記条件分岐命令の解決に応答して、分岐予測の精度が
    高まるように、後続の条件分岐命令の解決の予測のため
    に分岐予測方式を選択するため前記予測の結果を使用す
    るステップとを含む、条件分岐命令を投機的に実行する
    ための方法。
  12. 【請求項12】前記複数の分岐予測方式に、動的分岐予
    測が含まれることを特徴とする、請求項11の方法。
  13. 【請求項13】さらに、動的分岐予測を使用して、前記
    後続の条件分岐命令を採用または非採用として予測すべ
    きか否かの表示を記憶するステップを含む、請求項12
    の方法。
  14. 【請求項14】前記複数の分岐予測方式に、静的分岐予
    測が含まれることを特徴とする、請求項13の方法。
  15. 【請求項15】前記複数の分岐方式のうちの1つを選択
    するステップが、 動的分岐予測において誤予測が所定回数生じた場合に静
    的分岐予測を選択するステップと、 静的分岐予測において分岐命令の同じ解決が所定回数生
    じた場合に動的分岐予測を選択するステップとを含むこ
    とを特徴とする、請求項14の方法。
JP10612897A 1996-04-29 1997-04-23 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を推測的に実行するためのプロセッサ、データ処理システム及び方法 Expired - Fee Related JP3397081B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/639577 1996-04-29
US08/639,577 US5752014A (en) 1996-04-29 1996-04-29 Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction

Publications (2)

Publication Number Publication Date
JPH10133873A true JPH10133873A (ja) 1998-05-22
JP3397081B2 JP3397081B2 (ja) 2003-04-14

Family

ID=24564688

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10612897A Expired - Fee Related JP3397081B2 (ja) 1996-04-29 1997-04-23 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を推測的に実行するためのプロセッサ、データ処理システム及び方法

Country Status (7)

Country Link
US (1) US5752014A (ja)
EP (1) EP0805390B1 (ja)
JP (1) JP3397081B2 (ja)
KR (1) KR100270003B1 (ja)
AT (1) ATE233414T1 (ja)
DE (1) DE69719235T2 (ja)
TW (1) TW344060B (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004503865A (ja) * 2000-06-12 2004-02-05 モトローラ・インコーポレイテッド 選択的分岐予測を有するプロセッサ
US6851043B1 (en) 1998-12-17 2005-02-01 Fujitsu Limited Branch instruction execution control apparatus
JP2008529191A (ja) * 2005-02-03 2008-07-31 クゥアルコム・インコーポレイテッド 電力的に効率的な命令プリフェッチ機構
JP2008532142A (ja) * 2005-02-24 2008-08-14 クゥアルコム・インコーポレイテッド ループ終結分岐により分岐履歴レジスタの更新を抑制すること
JP2013058135A (ja) * 2011-09-09 2013-03-28 Ritsumeikan 分岐予測器及びプロセッサ

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151672A (en) * 1998-02-23 2000-11-21 Hewlett-Packard Company Methods and apparatus for reducing interference in a branch history table of a microprocessor
US6374349B2 (en) * 1998-03-19 2002-04-16 Mcfarling Scott Branch predictor with serially connected predictor stages for improving branch prediction accuracy
US6115809A (en) * 1998-04-30 2000-09-05 Hewlett-Packard Company Compiling strong and weak branching behavior instruction blocks to separate caches for dynamic and static prediction
US6081887A (en) * 1998-05-13 2000-06-27 Compaq Computer Corporation System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction
US6247146B1 (en) * 1998-08-17 2001-06-12 Advanced Micro Devices, Inc. Method for verifying branch trace history buffer information
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
US6338133B1 (en) 1999-03-12 2002-01-08 International Business Machines Corporation Measured, allocation of speculative branch instructions to processor execution units
US6499101B1 (en) 1999-03-18 2002-12-24 I.P. First L.L.C. Static branch prediction mechanism for conditional branch instructions
US6546481B1 (en) 1999-11-05 2003-04-08 Ip - First Llc Split history tables for branch prediction
JP2001243070A (ja) * 2000-02-29 2001-09-07 Toshiba Corp プロセッサ及び分岐予測方法並びにコンパイル方法
US6678820B1 (en) 2000-03-30 2004-01-13 International Business Machines Corporation Processor and method for separately predicting conditional branches dependent on lock acquisition
US6658558B1 (en) * 2000-03-30 2003-12-02 International Business Machines Corporation Branch prediction circuit selector with instruction context related condition type determining
US6766442B1 (en) 2000-03-30 2004-07-20 International Business Machines Corporation Processor and method that predict condition register-dependent conditional branch instructions utilizing a potentially stale condition register value
US7404070B1 (en) * 2000-11-28 2008-07-22 Hewlett-Packard Development Company, L.P. Branch prediction combining static and dynamic prediction techniques
WO2005114441A2 (en) * 2004-05-19 2005-12-01 Arc International (Uk) Limited Microprocessor architecture
US8212823B2 (en) * 2005-09-28 2012-07-03 Synopsys, Inc. Systems and methods for accelerating sub-pixel interpolation in video processing applications
TW200739419A (en) * 2006-04-07 2007-10-16 Univ Feng Chia Prediction mechanism of a program backward jump instruction
US7533252B2 (en) * 2006-08-31 2009-05-12 Intel Corporation Overriding a static prediction with a level-two predictor
US7617387B2 (en) * 2006-09-27 2009-11-10 Qualcomm Incorporated Methods and system for resolving simultaneous predicted branch instructions
US7707396B2 (en) * 2006-11-17 2010-04-27 International Business Machines Corporation Data processing system, processor and method of data processing having improved branch target address cache
WO2009033425A1 (en) * 2007-09-11 2009-03-19 Daniel Shia System and gui for specifying composite predicates and dynamic systems
US8136103B2 (en) * 2008-03-28 2012-03-13 International Business Machines Corporation Combining static and dynamic compilation to remove delinquent loads
US8127106B2 (en) 2008-04-18 2012-02-28 International Business Machines Corporation Access speculation predictor with predictions based on a domain indicator of a cache line
US8122222B2 (en) 2008-04-18 2012-02-21 International Business Machines Corporation Access speculation predictor with predictions based on a scope predictor
US8122223B2 (en) 2008-04-18 2012-02-21 International Business Machines Corporation Access speculation predictor with predictions based on memory region prior requestor tag information
US8131974B2 (en) 2008-04-18 2012-03-06 International Business Machines Corporation Access speculation predictor implemented via idle command processing resources
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9274795B2 (en) * 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
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
US9384002B2 (en) 2012-11-16 2016-07-05 International Business Machines Corporation Speculative finish of instruction execution in a processor core
US9542290B1 (en) 2016-01-29 2017-01-10 International Business Machines Corporation Replicating test case data into a cache with non-naturally aligned data boundaries
US10169180B2 (en) 2016-05-11 2019-01-01 International Business Machines Corporation Replicating test code and test data into a cache with non-naturally aligned data boundaries
US10055320B2 (en) 2016-07-12 2018-08-21 International Business Machines Corporation Replicating test case data into a cache and cache inhibited memory
US10223225B2 (en) 2016-11-07 2019-03-05 International Business Machines Corporation Testing speculative instruction execution with test cases placed in memory segments with non-naturally aligned data boundaries
US10261878B2 (en) 2017-03-14 2019-04-16 International Business Machines Corporation Stress testing a processor memory with a link stack
US11086629B2 (en) * 2018-11-09 2021-08-10 Arm Limited Misprediction of predicted taken branches in a data processing apparatus
US11163577B2 (en) 2018-11-26 2021-11-02 International Business Machines Corporation Selectively supporting static branch prediction settings only in association with processor-designated types of instructions
CN113868899B (zh) * 2021-12-03 2022-03-04 苏州浪潮智能科技有限公司 一种分支指令处理方法、系统、设备及计算机存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5507028A (en) * 1992-03-30 1996-04-09 International Business Machines Corporation History based branch prediction accessed via a history based earlier instruction address
KR100310581B1 (ko) * 1993-05-14 2001-12-17 피터 엔. 데트킨 분기목표버퍼의추측기록메카니즘
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
TW261676B (ja) * 1993-11-02 1995-11-01 Motorola Inc
IE940855A1 (en) * 1993-12-20 1995-06-28 Motorola Inc Data processor with speculative instruction fetching and¹method of operation
JPH08241198A (ja) * 1995-03-06 1996-09-17 Fujitsu Ltd 分岐命令処理方法
US5634103A (en) * 1995-11-09 1997-05-27 International Business Machines Corporation Method and system for minimizing branch misprediction penalties within a processor

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6851043B1 (en) 1998-12-17 2005-02-01 Fujitsu Limited Branch instruction execution control apparatus
JP2004503865A (ja) * 2000-06-12 2004-02-05 モトローラ・インコーポレイテッド 選択的分岐予測を有するプロセッサ
JP2008529191A (ja) * 2005-02-03 2008-07-31 クゥアルコム・インコーポレイテッド 電力的に効率的な命令プリフェッチ機構
JP2012150824A (ja) * 2005-02-03 2012-08-09 Qualcomm Inc 電力的に効率的な命令プリフェッチ機構
US8661229B2 (en) 2005-02-03 2014-02-25 Qualcomm Incorporated Power efficient instruction prefetch mechanism
JP2008532142A (ja) * 2005-02-24 2008-08-14 クゥアルコム・インコーポレイテッド ループ終結分岐により分岐履歴レジスタの更新を抑制すること
JP2011100466A (ja) * 2005-02-24 2011-05-19 Qualcomm Inc ループ終結分岐により分岐履歴レジスタの更新を抑制すること
JP2013058135A (ja) * 2011-09-09 2013-03-28 Ritsumeikan 分岐予測器及びプロセッサ

Also Published As

Publication number Publication date
EP0805390A1 (en) 1997-11-05
TW344060B (en) 1998-11-01
KR100270003B1 (ko) 2000-10-16
DE69719235D1 (de) 2003-04-03
JP3397081B2 (ja) 2003-04-14
ATE233414T1 (de) 2003-03-15
DE69719235T2 (de) 2003-10-30
KR970071251A (ko) 1997-11-07
EP0805390B1 (en) 2003-02-26
US5752014A (en) 1998-05-12

Similar Documents

Publication Publication Date Title
JP3397081B2 (ja) 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を推測的に実行するためのプロセッサ、データ処理システム及び方法
JP3093684B2 (ja) 命令ループを投機的に実行するプロセッサ及び方法
US5634103A (en) Method and system for minimizing branch misprediction penalties within a processor
US5611063A (en) Method for executing speculative load instructions in high-performance processors
JP3565504B2 (ja) プロセッサにおける分岐予測方法及びプロセッサ
JP5917616B2 (ja) 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置
US5901307A (en) Processor having a selectively configurable branch prediction unit that can access a branch prediction utilizing bits derived from a plurality of sources
US6279105B1 (en) Pipelined two-cycle branch target address cache
JPH0863356A (ja) 分岐予測装置
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
JP2839075B2 (ja) 処理システムを動作させる方法及び処理システム
JP2009048633A (ja) 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法
US5875325A (en) Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history
JPH10111800A (ja) 分岐解決方法、プロセッサ、及びシステム
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
JP3611304B2 (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
US6237085B1 (en) Processor and method for generating less than (LT), Greater than (GT), and equal to (EQ) condition code bits concurrent with a logical or complex operation
US6035390A (en) Method and apparatus for generating and logically combining less than (LT), greater than (GT), and equal to (EQ) condition code bits concurrently with the execution of an arithmetic or logical operation
KR100305487B1 (ko) 특정유형의인스트럭션을동시에처리할수있는방법및데이터프로세싱시스템
US5913050A (en) Method and apparatus for providing address-size backward compatibility in a processor using segmented memory
JP3721002B2 (ja) メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法
WO2004068337A1 (ja) 情報処理装置
US5764940A (en) Processor and method for executing a branch instruction and an associated target instruction utilizing a single instruction fetch
US8285765B2 (en) System and method for implementing simplified arithmetic logic unit processing of value-based control dependence sequences
JPH11259295A (ja) プロセッサの命令スケジューリング装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080214

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090214

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees