JPH10111800A - 分岐解決方法、プロセッサ、及びシステム - Google Patents

分岐解決方法、プロセッサ、及びシステム

Info

Publication number
JPH10111800A
JPH10111800A JP9259838A JP25983897A JPH10111800A JP H10111800 A JPH10111800 A JP H10111800A JP 9259838 A JP9259838 A JP 9259838A JP 25983897 A JP25983897 A JP 25983897A JP H10111800 A JPH10111800 A JP H10111800A
Authority
JP
Japan
Prior art keywords
branch
instruction
logic
processor
branch instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP9259838A
Other languages
English (en)
Other versions
JP3163045B2 (ja
Inventor
Boss Pradip
プラディプ・ボース
S Chan Kin
キン・エス・チャン
Kyuu Re Fun
フン・キュー・レ
E Wasmut Robert
ロバート・イー・ワスムート
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 JPH10111800A publication Critical patent/JPH10111800A/ja
Application granted granted Critical
Publication of JP3163045B2 publication Critical patent/JP3163045B2/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
    • 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
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 高性能スーパスカラ・プロセッサ内で条件付
き分岐命令の高速解決を可能にする論理回路を提供す
る。 【解決手段】 この論理回路は、全体的な分岐処理論理
がサイクル境界と交差せずにこのような分岐用の履歴テ
ーブルベースの予測論理を迂回できるようにするため
に、プロセッサ内の基本命令バッファの第1の位置内に
位置する条件付き分岐のサブセットの早期(高速)解決
を促進する。したがって、条件付き分岐のこのサブセッ
トに関して起こりうる予測外れに関連するペナルティが
回避される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般には、データ
処理システムに関し、より具体的には、マイクロプロセ
ッサ内での分岐命令の解決に関する。
【0002】
【従来の技術】パイプライン化アーキテクチャによって
実施されたマイクロプロセッサは、クロック・サイクル
につき、様々な実行ステージの複数の命令を有すること
ができる。特に、パイプライン化スーパスカラ・アーキ
テクチャを備えたマイクロプロセッサは、メモリから複
数の命令を取り出し、並列実行のためにマイクロプロセ
ッサ内の様々な実行ユニットに複数の命令をディスパッ
チすることができる。
【0003】このようなアーキテクチャに関する問題
は、実行中のプログラムが分岐命令を含む場合が多いこ
とであり、その分岐命令は通常は何らかの条件に基づい
て別の命令に移行するマシンレベルの命令である(すな
わち、それは、特定の条件が真または偽の場合に移行す
る)。分岐命令がデータ依存性を検出すると、依存性が
解決されるまで命令発行を停止するのではなく、マイク
ロプロセッサはその分岐命令がどのパスをたどる可能性
があるかを予測し、そのパスに沿って命令が取り出され
実行される。前述の分岐の解決のためにデータ依存性が
使用可能である場合、分岐が評価される。予測したパス
が正しい場合、プログラムの流れはそのパスに沿って中
断されずに続行する。そうではない場合、プロセッサは
バックアップを行い、プログラムの流れは正しいパスに
沿って再開する。
【0004】どの分岐をたどるかを予測する際の問題
は、実際上の分岐予測外れのペナルティの増加であり、
それによりマイクロプロセッサは、予測が外れたパスに
沿ったすべての命令を除去し、たどったパスに関係する
命令を取り出さなければならないことである。IBM製
のハイエンドPowerPCファミリのプロセッサな
ど、このようなプロセッサでは、マイクロプロセッサ内
の汎用分岐解決論理が十分複雑なので、走査した条件付
き分岐に関する解決信号が走査サイクル内に入手できな
い場合が多い。これは、ディスパッチ時に解決可能な条
件付き分岐の場合も当てはまる。分岐履歴テーブル(B
HT)参照による分岐予測の方が素早く入手できるの
で、このようなすべての分岐について、BHT予測から
初期分岐方向が推測される。分岐解決論理の遅さの程度
に応じて、予測外れのペナルティが非常に高くなる可能
性があり、これは、命令バッファ内のその位置及び依存
条件コードの状況とは無関係に、すべての予測外れ走査
分岐に応用することができる。これは、いずれの場合で
も完全な解決論理が呼び出されるからである。
【0005】
【発明が解決しようとする課題】上記の結果として、当
技術分野には、プロセッサ内の実際上の分岐予測外れの
ペナルティを低減するために全体的な分岐解決論理を改
善する必要性が存在する。
【0006】
【課題を解決するための手段】上記の必要性は、マイク
ロプロセッサの分岐処理ユニット内に追加の「高速」解
決論理を含む本発明によって対処する。本発明は、汎用
分岐依存性検査及び解決回路の呼出しにより1サイクル
内に解決不能な条件付き分岐の大規模サブセットの高速
(1サイクル)解決のために余分な(並列)ハードウェ
ア論理を追加するものである。本発明に記載する全体的
な(変更済み)マルチステージ・パイプライン化分岐解
決回路の結果、条件付き分岐命令の平均解決時間が短縮
される。このような解決の高速化に適格な分岐のサブセ
ット(以下「適格」分岐という)としては、最初に検出
したときに命令バッファ内の第1のディスパッチ可能位
置にあるものがある。適格分岐は、分岐条件がすでに条
件レジスタ(CR)内にあることを確認するために、追
加の検査(解決回路に取り入れられている)にも合格し
なければならない。このような適格分岐は他の分岐より
素早く解決することができる。というのは、依存性検査
を完了するために必要な比較の数がより少なくなるから
である。たとえば、ディスパッチ・ウィンドウ内の第1
のディスパッチ可能命令より前に他の命令は一切ないの
で、この特殊な場合の解決論理は小さくなり、その結
果、高速分岐解決パスを提供する。
【0007】本発明の利点は、条件付き分岐のサブセッ
ト(適格走査分岐の頻度による)は分岐処理ユニット内
の汎用解決論理の独占使用によって発生する、大きい予
測外れのペナルティを償う必要がないことである。
【0008】本発明の実施態様では、分岐処理ユニット
内の分岐走査論理が命令バッファ内の分岐を走査する
と、走査分岐命令をただちに解決できるかどうかを判定
するために早期解決論理が実施される。解決できる場
合、そのアドレスから取出しシーケンスを開始するため
に分岐ターゲット・アドレスを命令取出しユニット
(「IFU」)に伝送すべきかどうかを判断する際に、
解決済み分岐方向情報を使用してBHT予測パスを無効
にする。
【0009】上記の説明は、以下に示す本発明の詳細な
説明を十分に理解できるように、本発明の特徴及び技術
的な利点についてかなり広く概要を示している。本発明
の請求の範囲の主題を形成する本発明の追加の特徴及び
利点については、以下に説明する。
【0010】
【発明の実施の形態】以下の説明では、本発明を完全に
理解するために、具体的なワードまたはバイト長など、
数多くの具体的な詳細を示す。しかし、本発明はこのよ
うな具体的な詳細がなくても実施可能であることは、当
業者には明らかになるだろう。他の実例では、不必要な
ほど詳細にわたって本発明を分かりにくくしないよう
に、周知の回路がブロック図形式で示されている。ほと
んどの部分では、このような詳細が本発明を完全に理解
するために不要であり、関連技術の当業者の技能の範囲
内である限り、タイミング上の考慮事項などに関する詳
細は省略されている。
【0011】次に、添付図面を参照するが、これらの図
では図示した諸要素は必ずしも一定の縮尺で示されてお
らず、同じまたは同様の要素は複数の図にわたって同じ
参照番号で示されている。
【0012】図1ないし図2を参照すると、同図には、
アドレス・バス102とデータ・バス101とを含むバ
ス712に結合されたプロセッサ100が示されてい
る。プロセッサ100は、任意の既知の中央演算処理装
置(たとえば、IBM製のPowerPCプロセッサ)
にすることができ、図1ないし図2に示す回路の一部ま
たは全部を含む。
【0013】バス712は、バス・インタフェース・ユ
ニット(「BIU」)103に結合されている。命令キ
ャッシュ(「Iキャッシュ」)106は、BIU103
と、命令取出しユニット(「IFU」)110とに結合
されている。命令キャッシュ106は、タグ・ビットを
含むことができるが、命令メモリ管理ユニット(「I−
MMU」)107にも結合されている。
【0014】また、プロセッサ100は、分岐処理ユニ
ット(「BPU」)120と、基本命令バッファ(「P
IB」)111と、命令ディスパッチ・ユニット(「I
DU」)112も含む。
【0015】BPU120は、分岐走査論理121と、
分岐アドレス生成器(「AGEN」)123と、BHT
122とを含む。
【0016】典型的な実施態様では、データは、BIU
103によってデータ・バス101から受け取られ、デ
ータ・キャッシュ(「Dキャッシュ」)104を介して
ロード/ストア・ユニット115に転送される。命令キ
ャッシュ106は、BIU103から命令を受け取り、
それをIFU110上に渡す。
【0017】BPU120は、分岐命令を受け取り、条
件付き分岐について先読み動作を実行してそれらを早期
に解決するように動作可能である。PIB111は、I
FU110から命令を受け取り、それらをIDU112
上に渡す。IDU112は、ロード/ストア・ユニット
(「LSU」)115、浮動小数点ユニット(「FP
U」)117、固定小数点整数ユニット(「FXU」)
113などの複数の実行ユニットのうちのいずれか1つ
に命令をディスパッチするように動作可能である。これ
らの実行ユニットは完了ユニット118にも結合され、
このユニットはディスパッチから実行まで命令を追跡
し、その後、退くすなわちプログラムの順序でそれらを
「完了する」。完了ユニット118は、再順序付けバッ
ファとまとめて呼ばれる、1列の完了バッファを含む。
完了ユニット118はIFU110にも結合されてい
る。
【0018】また、FPU117には、FPRファイル
及び名前変更バッファ116も結合されている。
【0019】FXU113には、汎用レジスタ(「GP
R」)ファイル114と、関連の汎用(「GP」)名前
変更レジスタ・バッファが結合されている。また、BP
U120には、CR処理ユニット(「CRPU」)10
8も結合されている。
【0020】プロセッサ100は、サイクルごとに複数
の命令を発行可能な高性能スーパスカラ・プロセッサに
することができる。各クロック・サイクル中、IFU1
10は、命令取出しアドレス・レジスタ(「IFA
R」)内に格納されている現行の「命令取出しアドレ
ス」(「IFA」)を使用して一度に複数の命令を取り
出そうと試みる。デフォルトのIFAは、前のサイクル
で取り出された最後の命令に続く、次の順次アドレスで
ある。しかし、走査分岐が「分岐する」と解決(または
予測)された場合、IFAはBPU120によって変更
することができる。また、IFAは、検出した予測外れ
に続く真の(解決済み)分岐パス・アドレスにリセット
することが必要な場合もある。
【0021】プロセッサ100は、一部の実施態様で
は、PIB111に加え、バックアップ命令バッファ
(「BIB」)109を含むことができる。これは、p
個の予測分岐パスより下に推測実行を制限することにな
るはずであり、pはBIB109内の個別のバッファの
数である。
【0022】次に図3を参照すると、BPU120がよ
り詳しく示してある。BPU120は分岐走査論理12
1、分岐アドレス生成機構(分岐AGEN)123、依
存条件コード201及びBHTベースの分岐予測論理1
22を含む。
【0023】すべてのクロック・サイクルで、分岐を検
出し、分岐命令内の分岐命令ビットによって指定した関
連条件レジスタ・フィールドについてその依存性を解決
しようと試みる際に、分岐走査論理121によって基本
命令バッファ(PIB)111の最初のN個の位置(N
は正の整数であり、この例ではN=5)が走査される。
【0024】分岐走査論理121は、ディスパッチ・サ
イクル中に第1の分岐命令(ここでは「分岐」ともい
う)について(第5の位置まで)PIB111を走査す
る。以下に詳述するように、第1の走査分岐に対応する
命令アドレスのサブフィールドはBHTベースの分岐予
測論理122に送られ、その論理は分岐するかどうかに
関する予測を行うプロセスをただちに開始する。この予
測は、当技術分野で周知のいくつかの様々なアルゴリズ
ムに基づいて行うことができる。さらに、分岐解決論理
200は、依存条件コード201の状態を監視すること
により、分岐を解決する試みを開始する。(依存条件コ
ード(「CC」)は最終的に条件レジスタ(「CR」)
の1つのフィールドで得られる。)CR名前変更が実施
されるマシンでは、分岐が処理される時点にCCが名前
変更バッファで得られる可能性があり、あるいは、関連
のCC生成命令がそのサイクル中に終了する可能性があ
るという意味でCC値が「使用中」である可能性があ
り、あるいは、生成命令がまだディスパッチまたは実行
されていないので、CCが現行の分岐走査/プロセス・
サイクル中に得られない可能性がある。以下に明らかに
するように、本発明で提案する分岐解決論理(「BR
L」)200は2つの部分から構成されている。すなわ
ち、(a)(正味遅延の点で)マシン100の通常のサ
イクル境界に及ぶかまたはそれを超える汎用解決論理
と、(b)上記(a)と並列に動作するが、その出力信
号アサートが通常はマシンのサイクル境界内に十分入る
ように、より少ないレベルの論理回路で構築された早期
解決論理である。この方式の正味効果は、平均分岐解決
時間を高速化することである。ということは、監視した
分岐の大規模サブセットが早期解決論理によってカバー
されるからである。いずれの場合も、全体的な分岐解決
論理200は、マルチプレクサ(「MUX」)203を
制御するゲート信号「Branch_Resolve_Early」と、「Br
anch_Resolve_Late」信号と、「Branch_Resolve_Earl
y」及び「Branch_Resolve_Late」のそれぞれに関連する
2つの分岐/非分岐(「T/NT」)フラグ(T/NT-BRL
early及びT/NT-BRLl ate)という5つの出力を有する。
T/NTフラグのアサートはその分岐が「分岐する」
(「T」)ものとして解決されたことを意味し、否定は
「分岐しない」(NT」)ことを意味する。さらに、
「Branch_Resolve_Late」出力信号は、解決済み分岐の
mビットの命令id(「IID」)を示す関連出力を有
し、マシン内の有効命令の最大数はせいぜい2mであ
る。この情報は、PIB111からディスパッチされた
可能性のある対応する処理済み分岐にその解決を関連付
けるものである。
【0025】分岐走査の所与のサイクルでは、依存CC
を発生する命令がまだディスパッチまたは実行されてい
ないので分岐が解決不能であると見なされた場合、この
特定の分岐命令用の分岐解決のその後のステップが禁止
され、分岐予測に依存する。このPIB常駐分岐には、
PIB項目の一部である2ビットの属性フィールドを設
定することにより、「処理済み−予測済み」というマー
クが付けられる。(可能な修飾子は、「未処理」、「処
理済み;予測済み」、「処理済み;解決済み」、「処理
済み:予測済み、後で解決」である。)その後のサイク
ル(複数も可)では、走査後に、この「処理済み;予測
済み」分岐の解決論理がもう一度呼び出される。一般
に、分岐走査は、「未処理」または「処理済み:予測済
み」のいずれかである第1の分岐(走査ウィンドウ内の
もの、この例では5つ)を検出するために「解決済み」
(すなわち、「解決済み」または「予測済み、後で解
決」のいずれか)というマークが付けられた分岐を超え
て続行される。「処理済み」(3通りのタイプのいずれ
か)というマークが付けられた分岐は発行幅(たとえ
ば、この例のプロセッサでは3)内のディスパッチに適
格なものである。しかし、まだ未解決(「処理済み:予
測済み」)である分岐に関する関連情報だけが個別の分
岐ターゲット・アドレス・テーブル(「BTAT」)1
24でディスパッチ後に保持される。BTAT124の
各項目ごとに、たとえば、命令識別子(「IID」)、
有効(「V」)ビットなどの他の情報とともに、予測済
みパス・アドレスと代替パス・アドレスの両方が維持さ
れる。「解決済み」分岐は、完了ユニット118の内部
にあるメカニズム(当技術分野では周知のもの)である
再順序付け(完了)バッファに入力された情報を除き、
ディスパッチ後に廃棄される。これは、順序通りの完了
及び精密割込み機構のためのプログラム命令順序状態を
維持するために使用する。BTAT124のサイズ(項
目数)は、ハードウェアによってサポートされる未解決
(予測済みであるが、まだ解決されていない)分岐の数
の上限として機能する。また、BTAT124は、予測
外れの検出時に正しい分岐点からプログラム実行を再開
するというタスクでも機能する。予測外れのパス内の命
令の取消し、パイプライン・フラッシュ、再順序付けバ
ッファ及びBTAT124内の情報の更新により、この
ような後戻りがどのように達成されるかに関する詳細に
ついては、本明細書では省略する。ここでは、平均分岐
解決時間が増すにつれて、マシン・サイクルにおける平
均的な予測外れのペナルティも増すと言うだけで十分で
ある。したがって、本発明は、平均分岐解決時間を短縮
する際に、パフォーマンスの向上に役立つものである。
【0026】おそらく所与の分岐に必要なマルチサイク
ル解決は、走査サイクルnで開始できるが、サイクルn
+p(p≧1)で終了することができ、その時点で分岐
は依然としてPIB111(おそらく他の位置にある)
にある可能性があるか、またはその記述子がBTAT1
24に保持されている可能性がある。BTAT124の
構成と、処理済み分岐がBTAT124に移行した後で
マルチサイクル分岐解決がどのように続行するかに関す
る詳細説明については、本明細書には記載しない。とい
うのは、それは、本発明の使い方及び実施態様と密接な
関係がないからである。
【0027】所与のサイクルnでは、T/NT-BHTをアサー
トすることにより分岐が行われると予測すると、分岐予
測論理122は、禁止されていなければ、IFU110
への分岐ターゲット・アドレスの伝送を可能にするの
で、IFU110は後続サイクル(n+1)でターゲッ
ト・アドレスから始まる1組命令の取出しを開始するこ
とができる。しかし、分岐予測論理122からの上記の
イネーブル信号は、分岐解決論理200が生成した「Br
anch_Resolve_Early」信号の(サイクルnにおける)早
期アサートの場合に禁止される。(「Branch_Resolve_E
arly」のアサートは、分岐が解決されたことを示し、そ
の場合、IFU110に分岐ターゲット・アドレスを伝
送するためにAND論理204に送られる潜在的なイネ
ーブル信号として動作するように、分岐解決論理200
からのT/NT-BRLearly信号はMUX203によって選択
されている。)
【0028】ただし、「Branch_Resolve」信号(早期ま
たは遅延あるいはその両方)は、本発明とは無関係の目
的のためにマシン100の他の部分(完了ユニット11
8など)にも送ることができることに留意されたい。こ
のため、このようなパスは図3に明示的に示していな
い。
【0029】その対をなす「T/NT-BRLlate」フラグとと
もに「Branch_Resolve_Late」が対応する重要な制御目
的の1つは、分岐予測外れの影響を訂正することであ
る。たとえば、所与のマシン・サイクルnでは、BHT
ベースの分岐予測論理122は「分岐する」(「T」)
と予測した可能性があり、「Branch_Resolve_Early」信
号はまだアサートされていない。したがって、後続サイ
クル(n+1)でターゲット・アドレスが取り出され、
ターゲット・アドレス・ストリームからの命令は順次
(n+2)ディスパッチされた可能性がある。最終的に
は、たとえば、サイクルn+2で「Branch_Resolve_Lat
e」信号がアサートされる。対応するT/NT-BRLlateフラ
グが「T」をアサートした場合、訂正アクションは一切
不要である。そうではなく、T/NT-BRLlateフラグが否定
して「NT」(分岐しない)を意味する場合、「飛行中
(in flight)」または間違った(予測が外れた)分岐
パス内の実行済み命令を取り消すために訂正アクション
論理が使用可能になり、マシン100は正しい分岐パス
から再取出しを行った後で実行を再開する。これは、早
期解決が不可能だったので汎用解決論理の呼出しのため
に分岐解決が遅延された状況の例である。
【0030】次に図4ないし図5を参照すると、同図に
は、走査分岐命令を解決できるかどうかを判定するため
に呼び出される初期(すなわち、第1ステージ)分岐依
存性論理が示されている。この論理は、分岐が走査され
るサイクル中にただちに呼び出される。分岐走査論理1
21は、PIB111の最初の5つの位置を走査する
(操作手順は破線で示す)。本発明を他のシステムにも
適用できる可能性を制限することを意図しているわけで
はないが、PIB111の各項目は完全な32ビットの
PowerPC命令と追加の事前コード・ビット(7ま
たは8)を有し、これらのビットはその後のデコードを
より容易にするために広いタイプに命令を事前分類す
る。命令フィールドのビット0・・・5(6ビット)は
基本命令コードを含む。比較命令の場合は、ビット6・
・・8(3ビット)が条件レジスタ(「CR」)内のフ
ィールド(8つのうちの1つ)用の指定子を保持し、比
較の実行後にそのレジスタが設定される。他の機能動作
の場合、基本命令コード自体は、それがCR変更であれ
ば、どのCRフィールドが分岐命令のターゲットになる
かをデコードするのに十分である。論理ブロック301
〜304内の「CRデコード」論理は、PIB111内
でディスパッチを待っている所与の命令について、変更
のターゲットになるCRの3ビット・フィールドを暗号
解読する。
【0031】分岐走査論理121は、第1の未処理分岐
を探すためにPIB111の最初の5つの位置に入って
いる命令を走査する。このようにする際に、信号bp1
・・・bp5のうちの多くても1つをアサートする。た
とえば、検出された第1の分岐がPIB111の位置3
に入っている場合、bp3がアサートされる。走査分岐
命令のBIフィールド(ビット11:15、5ビット)
は、条件比較を行う際に監視する必要があるCR内の特
定のビットを指定する。各比較器305〜308は、そ
れぞれCRデコード論理ブロック301〜304からの
3ビットのCRフィールド指定子と、5ビットの固有の
CRビット指定子(「BI」)とを取り、それらがとも
に同じフィールドを示しているかどうかを確認する。1
つまたは複数の位置で一致が存在する場合、信号a、
b、c、dのうちの1つまたは複数がアサートされる。
【0032】信号aは、ANDゲート309と、ORゲ
ート310、312、314とによって受け取られる。
信号bは、ORゲート310、312、314によって
受け取られ、信号cは、ORゲート312及び314に
よって受け取られ、信号dはORゲート314によって
受け取られる。信号bp2・・・bp5は、ANDゲー
ト309、311、313、315によってそれぞれ受
け取られる。
【0033】ANDゲート309、311、313、3
15は、走査分岐がPIB111内でディスパッチを待
ちながら、その先行命令の1つによって設定すべき条件
コードに依存するかどうかを示すインジケータとして、
信号X1、X2、X3、X4をそれぞれ出力する。すな
わち、信号X1、X2、X3、X4の1つが走査/ディ
スパッチ・サイクル中にアサートされた場合、その依存
CR変更命令がまだディスパッチされていないのでただ
ちに解決できない分岐命令が走査されたことが分かる。
ORゲート316は、信号X1、X2、X3、X4を受
け取り、信号X1、X2、X3、X4のうちのいずれか
1つがアサートされた場合に信号X=「Inhibit_Furthe
r_Resolution」を出力する。
【0034】次に図6を参照すると、同図には、サイク
ルn+1中に(所与の分岐命令について)分岐依存性検
査を行うための追加の論理回路が示されている。この場
合、nは分岐走査のサイクルである。この特定の論理
は、サイクルn中に特定の分岐についてX(=Inhibit_
Further_Resolution)が0(否定アサート)であった場
合にのみ呼び出される。これは、図6の最終NORゲー
ト416用のイネーブル信号として入力X(図4ないし
図5から)を含むことによって暗示される。実際には、
サイクルn+1のX値はサイクルnで生成されたXのラ
ッチ値である。名目上、ゲート416の他の入力(Y1
〜Y4)の値とは無関係に、NORゲート416のX入
力値はハイであり、出力Yを0に保持する。サイクルn
のXのラッチ値からサイクルn+1で生成されたX値が
0であると、サイクルn+1の依存性検査論理の結果を
出力Yにゲートすることができる。
【0035】CRリネーミングが存在すると想定する
と、最高k個(図6では4)のCR変更終了または終了
済み命令に関するCR変更情報を保持するために、CR
リネーム・バッファ・テーブル401(この例では4項
目のテーブル)が存在するはずである。CRリネーム・
バッファ・テーブル104は、物理的にはCRPU10
8(図1)内に位置する。CRリネーム・バッファ・テ
ーブル401の4つの項目のそれぞれに対応して、4組
の同一論理が存在し、並行して動作し、その出力をNO
Rゲート416に供給する。図6には、簡潔にするため
に含まれていない複製部分を示す省略記号(・・・)に
よって分離されて、このような論理の組のうちの2組が
示されている。CRリネーム・バッファ・テーブル40
1は、比較器402〜406・・・407〜411と4
つのNORゲート412・・・413のうちの様々なも
のによってサンプリングされる項目を内部に有する。4
つのANDゲート414・・・415はその出力Y1〜
Y4をORゲート416に供給し、そのORゲートは前
述のX信号も受け取る。分岐走査論理121は4つの比
較器406・・・411にBI信号を供給する。(Xの
ように、サイクルn+1のこのBI値は実際には分岐走
査サイクルnでラッチされた値である。)命令識別子
(IID)は、完了ユニット118内の再順序付けバッ
ファ内の項目位置によって記録されたように、プロセッ
サ100内のすべての有効命令に関連付けられた固有の
タグに対応する。宛先(DEST)フィールドは、所与
の保留命令による変更のターゲットになるCRのフィー
ルドを指定する。終了(F)フィールドは、その命令の
状況(終了済み/完了待ち、対、保留中)を指定する。
CCフィールドは条件比較の値(結果)を格納するが、
この値は命令完了時にアーキテクチャCRを更新するた
めに使用される。
【0036】テーブル401の4つの項目のそれぞれに
ついて、対応する1組の比較器(たとえば、項目1用の
402〜406)を使用して、「このサイクル」を終了
する命令のいずれかが走査分岐の依存対象であるCRフ
ィールドを設定しているかどうかを検査する。FX、L
S、FP、LCRは、FXU113、LSU115、F
PU117、CRPU108から出て終了するCR変更
命令のIIDをそれぞれ表す。(このような様々な機能
ユニットによる「終了済み」IIDの出力は、CRPU
108を介してBPU120に物理的に経路指定され
る。図1ないし図2を参照。)4つの「終了済み」ビッ
トF1〜F4はNORゲート412・・・413内でも
使用する。最終NORゲート416は、サイクルn+1
中に依存条件コードを解決できない場合をカバーするA
NDゲート414・・・415からの出力に加え、X信
号を受け取るが、この場合、nは分岐走査サイクルであ
る。したがって、NORゲート416への入力のいずれ
かが肯定的にアサートされた場合、出力Yは否定された
状態で保持され、走査分岐が早期に、すなわち、現行サ
イクル(n+1)で解決不能であることを通知する。し
たがって、論理的に言えば、Yは
【数1】 と等価である。サイクルn+1でXが0に低下した状態
でYが肯定的にアサートされた場合、それはこのサイク
ルでの分岐解決のその後のステップを使用可能にするた
めに使用する。Yが否定された状態で保持されている場
合、このサイクル(n+1)について候補分岐命令の解
決の追加ステップが禁止され、同じ分岐について後続サ
イクルで実行時依存性検査及び解決試行(図12の論理
ブロック1004と後述する関連説明を参照)が繰り返
される。サイクルn+1で否定的にアサートされたY
は、サイクルn+2で分岐走査プロセスを使用禁止にす
るためにも使用する。すなわち、マルチサイクル解決が
保留(まだ解決すべき)分岐を解決できるまで、2ステ
ージ(走査−解決)パイプラインが停止される。
【0037】次に図7を参照すると、同図には、この場
合も、本発明で平均分岐解決論理の低減に役立つ早期解
決論理とともにCRリネーム・バッファ・テーブル40
1が示されている。この早期解決論理は、大規模クラス
のケースについて走査サイクル(たとえば、サイクル
n)で走査した分岐を解決することができる。このよう
なケースは、PIB111内の位置i(1≦i≦5)で
分岐(「未処理」または「処理済み:予測済み」)を走
査し、位置1〜i−1に他の分岐が一切なく、それに関
する依存CCがアーキテクチャCRですでに得られてい
るときに発生する。図7では(図4ないし図5のよう
に)、分岐走査サイクル(たとえば、マシン・サイクル
n)で分岐走査論理121によって生成されたブール・
フラグbp1〜bp5は、PIB111の位置1〜5
(のそれぞれ)で分岐が検出されたことを示している。
信号a、b、c、dは図4ないし図5の比較器305〜
308の出力として得られたものと同一である。論理ブ
ロック517は、「PIB独立性検査論理」と示されて
いるが、PIB121内でディスパッチを待っている以
前の命令のいずれにも走査分岐が依存していない場合に
「1」というブール出力をアサートする。ANDゲート
506へのもう一方の入力、すなわち、NORゲート5
05の出力(Zとして示す)は、CRリネーム・バッフ
ァ・テーブル401の宛先(「DEST」)フィールド
項目のいずれも走査分岐命令内に指定されたBIフィー
ルドと一致しない場合に「1」をアサートする。NOR
ゲート505への入力(Z1〜Z4)は比較器501〜
504(のそれぞれ)の出力から得られる。一例とし
て、Z1は、PIB111の第1の項目のDESTフィ
ールドがBIフィールドによって暗示される指定とは異
なる場合に「0」になる。したがって、Z1〜Z4がい
ずれも否定的にアサートされた(「0」)ままである場
合、すでにディスパッチされた場合に依存CCを伴う命
令を完了しなければならず、したがって、必要な依存C
C値はアーキテクチャCRで得られることを確信するこ
とができる。PIB111からのディスパッチ時にCR
変更命令によってCRリネーム・バッファ・テーブル4
01内に1つの項目が予約されるので、この推論は真で
ある。(このような空き項目が得られない場合、そのサ
イクルについてディスパッチは禁止される。)したがっ
て、Branch_Resolve_Early(ANDゲート506の出
力)は、依然としてディスパッチを待っている以前の命
令に走査分岐が依存していない場合であって、しかも依
存CCがすでにCR内にあると判別された場合に、肯定
的にアサートされる。
【0038】Branch_Resolve_Earlyが分岐走査のサイク
ルで肯定的にアサートされる場合、それはBIが指定し
たCRのフィールドの読取りを可能にするために使用す
る。同じく走査分岐命令から得られるBOフィールド
は、テストした条件が真であると分かった場合に分岐を
「分岐する」ものとして解決すべきかまたは「分岐しな
い」ものとして解決すべきかを指定する。したがって、
論理ブロック518は、前述のようにBHT生成予測を
無効にするために使用する信号T/NT-BRLearlyを出力す
ることができる。ただし、Branch_Resolve_Earlyとその
関連T/NT-BRLearl yは、対応する分岐が走査された同じ
サイクル(n)内で十分安定するように設計されている
ことに留意されたい。図8は、論理ブロック518が実
施する論理の流れ図を示している。
【0039】次に図9を参照すると、同図には、PIB
独立性検査論理ブロック517(図7)の2通りの実施
態様例が示されている。(a)には、ブール式
【数2】 が実施される最も積極的な論理を示す。これは、PIB
111で待っているまだディスパッチすべき以前の命令
のいずれにも走査分岐が依存しないすべてのケースを捕
捉するはずである。しかし、この部分の論理が図7の1
サイクル早期解決回路のクリティカル・パス内にある場
合、あまり積極的ではない独立性検査を使用することが
できる。図9(b)に示す最も時間依存性が低い実施態
様は、当然のことながら、フラグbp1だけを使用する
場合である。この場合、分岐走査サイクル中にPIB1
11の位置1にたまたま入っている分岐についてのみ早
期解決が可能になる。PIB111内にそれより先行す
る他の命令が一切ないので、位置1の分岐はまだディス
パッチすべき分岐に対する依存性がない。
【0040】次に図10を参照すると、同図には、可能
な場合に分岐を解決するために実行時(マシン・サイク
ルn+1から始まるが、nは所与の分岐が走査され処理
されたサイクルである)に呼び出される論理の一部が示
されている。この場合もCRリネーム・バッファ・テー
ブル401を示す。図示の論理は、このテーブル(40
1)内の項目の1つが解決すべき分岐の依存対象である
CCをすでに有するかどうかを検出しようと試みる。基
本的に、この項目探索は、最も古い項目(IID1に対
応する)から始まり、最新の項目(IID4に対応す
る)まで行わなければならない。各比較器(801〜8
04)は、対応する宛先フィールドと走査分岐のBIビ
ットが暗示するフィールドとの間に一致が存在するかど
うかをテストする。一致が存在する場合であって、しか
も対応するCR生成命令がすでに終了している場合
(「F」フィールドが示す)、対応するCC項目は真の
依存CCとして選択するための存続可能な候補である。
(当然のことながら、このような推論は、図4ないし図
5からのX信号が前のサイクルnで否定的にアサートさ
れた場合のみ有効なはずである。このため、前のサイク
ルで生成された対応するラッチ値から得られる入力
【数3】 を有する各ANDゲート805〜808を示す。)図示
の論理は、4つの「Select」信号(ANDゲート80
5、809、810、811)のうち、1つだけを肯定
的にアサートできることを保証する。たとえば、Select
2が査定された唯一のものである場合、存続可能な一致
が検出されたテーブル(401)内の最も古い項目が項
目番号2であることを意味するはずである。Select信号
のいずれも肯定的にアサートされない場合、依存CCが
CRリネーム・バッファ・テーブルで得られないことを
通知するはずである。これは、CR変更命令が依然とし
て終了していないか、またはそれがすでに完了している
からであり、その場合、CCはアーキテクチャ・レジス
タから読み取らなければならない。(後者のケースは、
次の段落で説明するように図11に示す追加の遅延解決
論理によって処理される。)マルチプレクサ・ボックス
812は、使用可能な項目CC1〜CC4から正しい条
件コード・フィールドを選択するために使用する。マル
チプレクサ選択判断は、同じサイクル(n+1)で生成
したY(図6から)によって可能になっていなければな
らない。というのは、まず、前の依存性検査に基づい
て、その分岐が実際にこのサイクルで解決可能であるこ
とを保証しなければならないからである。ただし、Sele
ct制御信号(Select1〜Select4)のいずれも肯定的にア
サートされない場合、出力信号Branch_Resolve_Lateは
否定されたままになり、Select信号の1つが肯定的にア
サートされた場合のみ、Branch_Resolve_Lateは肯定的
にアサートする。すなわち、図10のBranch_Resolve_L
ateはMUX812内部では論理的に
【数4】 として得られる。(実際には、MUX812の機能は、
このマシン・サイクル(n+1)内でBranch_Resolve_L
ate信号を安定させるために下位レベル回路設計技法に
よりSelect信号自体の生成と統合することができる。こ
こでは、このようなトランジスタレベルの回路設計の詳
細は記載せず、解決論理の論理ステップと区分について
のみ示す。)
【0041】正しいCCフィールドが選択され、Branch
_Resolve_Lateがアサートされると、最終解決論理81
3を使用して、出力フラグT/NT-BRLlateにより解決した
方向(分岐する/分岐しない)を設定する。この論理
は、図8で前に示した破線の判断ボックスを実現するた
めに実施したものと同じである。このため、これについ
てはもう一度説明しない。
【0042】次に図11を参照すると、同図には、依存
CCがすでにアーキテクチャCRで得られていると判定
された場合に解決を可能にするために、図10に示す論
理と並行して(すなわち、サイクルn+1で)呼び出さ
れる追加の遅延解決論理が示されている。対応する宛先
項目(DEST)がBIの指定が暗示するものと一致し
ない場合に、比較器901〜904はそれぞれ「0」を
出力する。いずれの項目も一致しない場合、ANDゲー
ト905はBranch_Resolve_Late信号を肯定的にアサー
トし、この信号により、論理ブロック906の動作で有
効なT/NT-BRLla te信号を生成することができる。ブロッ
ク906内の論理は図7のブロック518内のものと同
一であり(図8に示す流れ図)、このコンテキストでも
う一度詳述することはしない。ANDゲート905は、
依然として前のサイクルでディスパッチを待っている命
令によって依存CCが生成されないことを確認するため
に、余分な入力
【数5】 (図4ないし図5、前のサイクルの値)を有する。(た
だし、解決論理によって生成されたBranch_Resolve_Lat
e信号全体は図10及び図11に示す論理によって生成
された対応する信号の論理的排他ORであることに留意
されたい。この余分な排他ORゲートは図示しないが、
この説明により暗示される。同様に、対をなすT/NT-BRL
late出力は、上記の遅延解決信号のうちのどちらがアサ
ートしたかに応じて最終的に多重化される。この説明に
より、図10の論理または図11の論理の両方ではな
く、いずれか一方がサイクルn+1で遅延解決信号を生
成できることは明らかになるはずである。)
【0043】次に図12を参照すると、同図には、全体
的な分岐処理及び解決方式を要約した高レベル形式で示
す、本発明の全体的なブロック図が示されている。前述
のように、分岐走査論理121は、PIB111の最初
の5つの位置を走査し、bp1・・・bp5、BI及び
BOフィールドを生成する。BI値とBO値は、有効で
あれば、PIB111内の第1の走査分岐を指し示す。
信号/値bp1・・・bp5とBIは、図4ないし図5
に詳細に示す論理回路1001に送達される。論理回路
1001は、走査命令からのビット0・・・8も受け取
る。論理回路1001はX(=「Inhibit_Further_Reso
lution」)信号を生成するように動作し、この信号は、
図6、図10、図11のコンテキストで詳細に説明した
論理回路1004に供給される。論理回路1004は、
分岐走査論理121からのbp1・・・bp5、BI及
びBO信号も受け取り、リネーム・バッファ・テーブル
401からの所与のフィールドを監視する。論理回路1
004は、「Branch_Resolve_Late」信号とT/NT-BRL
late信号を生成するが、これらは必要であれば予測が外
れたプログラムの流れを訂正するために最終解決信号と
して使用する。これは、分岐がまだ解決できていないた
めに、次のサイクルでもう一度論理回路1004を呼び
出す必要があるかどうかを判定するために使用する信号
Y(=Branch_not_resolvable_early)信号も生成す
る。マルチサイクル解決が必要であると見なされた場
合、Y信号は、後続サイクルで分岐走査のプロセスを禁
止するためにも使用する。
【0044】論理回路1003は、図7、図8、図9に
関連した詳細に説明した早期分岐解決論理である。最も
一般的な形式では、論理回路1003はbp1・・・b
p5信号のすべてとBI及びBOを分岐走査論理121
から受け取る。また、これはリネーム・バッファ・テー
ブル401内の所与のフィールドも監視する。論理回路
1003からの出力はT/NT-BRLearly信号とBranch_Reso
lve_Early信号であり、後者は、BHT予測と早期分岐
解決とを選択するための選択信号として図3に示すMU
X203に供給される。図9に関連して述べたように、
論理回路1003は、実施態様固有のマシン・サイクル
時間制約を満たすために、PIB独立性検査論理517
(図7)のあまり積極的ではないバージョンを実施する
ためにbp1・・・bp5信号のサブセットのみを使用
することができる。最も単純な実施態様ではbp1のみ
を使用するはずであるが(図9(b)を参照)、図9
(a)に示すより一般的な解決策と比較して、早期解決
の利点をもたらす際に分岐数がかなり少なくなる場合を
カバーするはずである。
【0045】図12には、分岐解決回路に関する上記の
説明で暗示するマシン・サイクル境界も示す。本質的
に、この説明では、分岐解決プロセスを2ステージ・パ
イプライン化プロセスとして示している。第1のステー
ジ(サイクルn)は、分岐走査論理121を使用してP
IB111で第1の分岐を走査することと、論理回路1
001を使用するディスパッチ時依存性検査と、論理回
路1003による早期分岐解決とから構成される。第2
のステージ(サイクルn+1)では、実行時依存性検査
及び解決を行う。分岐解決は、早期解決が可能であれば
1サイクルのみを要し、その場合、第2のステージ(論
理回路1004)の使用はその分岐について禁止され
る。早期解決が不可能であれば、分岐解決プロセスは第
2のステージ(論理回路1004)を使用する際に少な
くとももう1つのサイクルを要する。したがって、各分
岐解決ごとに1または2サイクルが必要である場合、全
体的な論理は、すべてのサイクルについて最高1つの明
確な分岐を走査/処理することができる。しかし、第2
のステージ(論理ブロック1004)の単一使用により
分岐を解決できない場合、論理回路1004の呼出しを
繰り返すことにより、その解決を完了するために1つま
たは複数の追加サイクルを費やすことが必要になる可能
性がある。このような追加サイクル中、2ステージ・パ
イプラインの流れの所望の制御を維持するために、分岐
走査プロセスは(制御信号Yを使用して)禁止される。
【0046】次に図13を参照すると、同図には、BH
Tベースの予測を克服する際に(論理回路1004か
ら)分岐走査のサイクル中に得られる場合に早期解決信
号を使用するためのプロセスの流れ図が示されている。
ステップ1101では、PIB111内の分岐走査を行
う。ステップ1102では、走査した第1の分岐に関し
て分岐ターゲット・アドレス計算及び分岐結果予測を開
始する。並列ステップ1103では、早期分岐解決プロ
セスを開始する。その後、ステップ1104で、分岐が
分岐すると予測されたかどうかの判定を行う。ほぼ同時
に、早期解決信号が活動状態であるかどうかを判定す
る。それが活動状態である場合、分岐予測の推論を無視
し、解決済みの分岐方向を使用して、計算済みアドレス
をIFUに送る(ステップ1107)か、そのアドレス
を送らない(ステップ1109)かを判断する。早期解
決信号が活動状態ではない場合、分岐方向に関する分岐
予測の推論を使用して、必要に応じてステップ1107
またはステップ1109のいずれかを呼び出す。早期解
決信号が分岐走査サイクルで活動状態ではない場合、次
にサイクルについて遅延解決のその後のステップを起動
する(ステップ1106)。
【0047】本発明を実施するための代表的なハードウ
ェア環境を図14に示すが、同図は、従来のマイクロプ
ロセッサなどの中央演算処理装置(CPU)100と、
システム・バス1212により相互接続されたいくつか
の他のユニットとを有する、本発明によるワークステー
ション1213の典型的なハードウェア構成を示してい
る。ワークステーション1213は、ランダム・アクセ
ス・メモリ(RAM)1214と、読取り専用メモリ
(ROM)1216と、ディスク・ユニット1220及
びテープ・ドライブ1240などの周辺装置をバス12
12に接続するための入出力(I/O)アダプタ121
8と、キーボード1224、マウス1226、タッチ画
面装置(図示せず)などのその他のユーザ・インタフェ
ース装置をバス1212に接続するためのユーザ・イン
タフェース・アダプタ1222と、ワークステーション
1213をデータ処理ネットワークに接続するための通
信アダプタ1234と、バス1212をディスプレイ装
置1238に接続するためのディスプレイ・アダプタ1
236とを含む。CPU100は、単一集積回路上に位
置することもできる。
【0048】本発明及びその利点を詳細に説明してきた
が、請求の範囲に定義する本発明の精神及び範囲を逸脱
せずに様々な変更、代用、代替態様が可能であることに
留意されたい。
【0049】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0050】(1)プロセッサ内で、分岐命令を探して
命令バッファを走査するステップと、前記分岐命令に関
連するターゲット・アドレスを生成するステップと、前
記分岐命令の結果を予測するステップと、前記分岐命令
が解決可能であるときに命令取出しユニットへの前記タ
ーゲット・アドレスの分岐予測方向付け伝送を禁止する
ステップとを含むことを特徴とする方法。 (2)前記走査ステップ中に前記分岐命令が走査された
ときに前記分岐命令が前記命令バッファの第1のディス
パッチ可能位置に位置することを特徴とする、上記
(1)に記載の方法。 (3)前記禁止ステップが、リネーム・テーブル内の宛
先条件レジスタ・フィールドがいずれも前記分岐命令に
指定した依存条件レジスタと一致しないことを判定する
ステップをさらに含むことを特徴とする、上記(2)に
記載の方法。 (4)前記分岐命令が分岐走査サイクル内で解決される
ことを特徴とする、上記(3)に記載の方法。 (5)アーキテクチャ条件レジスタが依存条件コードに
よって更新されていることを特徴とする、上記(3)に
記載の方法。 (6)前記プロセッサが動的分岐予測機能を有すること
を特徴とする、上記(3)に記載の方法。 (7)前記プロセッサが、前記プロセッサ内の分岐予測
機構によって投機実行が制御される、パイプライン化プ
ロセッサまたはスーパスカラ・プロセッサあるいはその
両方であることを特徴とする、上記(6)に記載の方
法。 (8)前記分岐命令が前記分岐命令より前の前記命令バ
ッファのいずれかの位置に位置するまだディスパッチす
べき命令に依存しないような前記命令バッファ内の位置
に前記分岐命令が位置することを特徴とする、上記
(1)に記載の方法。 (9)前記分岐命令が、前記命令バッファの第1のディ
スパッチ可能位置以外の前記命令バッファの任意の位置
に位置することを特徴とする、上記(8)に記載の方
法。 (10)前記分岐命令の解決が、リネーム・テーブル内
の宛先条件レジスタ・フィールドがいずれも前記分岐命
令に指定した依存条件レジスタと一致しないことを判定
するステップを含むことを特徴とする、上記(8)に記
載の方法。 (11)前記分岐命令が1つのプロセッサ・サイクル内
で解決されることを特徴とする、上記(10)に記載の
方法。 (12)メモリから取り出したN個の命令を格納できる
ようになっている命令バッファと、分岐命令を探して前
記命令バッファのM個の位置を走査できるようになって
いる分岐走査論理であって、M≦Nである分岐走査論理
と、前記分岐命令に関連するターゲット・アドレスを生
成できるようになっている分岐アドレス生成器と、前記
分岐命令を分岐するかどうかを予測できるようになって
いる分岐予測論理であって、前記分岐命令が分岐するも
のとして予測されたときに、通常、前記ターゲット・ア
ドレスが命令取出しユニットに送られる分岐予測論理
と、前記分岐命令が解決可能であるときに前記命令取出
しユニットへの前記ターゲット・アドレスの送信を禁止
できるようになっている論理回路とを含むことを特徴と
するプロセッサ。 (13)前記分岐走査論理によって前記分岐命令が走査
されたときに前記分岐命令が前記命令バッファの第1の
ディスパッチ可能位置に位置することを特徴とする、上
記(12)に記載のプロセッサ。 (14)前記禁止論理回路が、リネーム・テーブル内の
宛先条件レジスタ・フィールドがいずれも前記分岐命令
に指定した依存条件レジスタと一致しないことを判定す
るための回路をさらに含むことを特徴とする、上記(1
3)に記載のプロセッサ。 (15)前記分岐命令が1つのプロセッサ・サイクル内
で解決されることを特徴とする、上記(12)に記載の
プロセッサ。 (16)アーキテクチャ条件レジスタが依存条件コード
によって更新されていることを特徴とする、上記(1
4)に記載のプロセッサ。 (17)前記プロセッサが動的分岐予測機能を有するこ
とを特徴とする、上記(13)に記載のプロセッサ。 (18)前記プロセッサがスーパスカラ・プロセッサで
あることを特徴とする、上記(17)に記載のプロセッ
サ。 (19)前記禁止論理回路が、前記分岐命令が「分岐す
る」と解決された場合に前記ターゲット・アドレスの送
信を可能にすることができるようになっていることを特
徴とする、上記(12)に記載のプロセッサ。 (20)前記分岐命令が前記分岐命令より前に前記命令
バッファからディスパッチすべき命令に依存しないよう
な前記命令バッファ内の位置に前記分岐命令が位置する
ことを特徴とする、上記(12)に記載のプロセッサ。 (21)スーパスカラ・プロセッサと、メモリ装置と、
バスによってまとめて結合された入出力装置とを含むデ
ータ処理システムにおいて、前記プロセッサが、前記メ
モリ装置から取り出したN個の命令を格納できるように
なっている命令バッファと、分岐命令を探して前記命令
バッファのM個の位置を走査できるようになっている分
岐走査論理であって、M≦Nであり、前記分岐走査論理
によって前記分岐命令が走査されたときに前記分岐命令
が前記命令バッファの第1のディスパッチ可能位置に位
置する分岐走査論理と、前記分岐命令に関連するターゲ
ット・アドレスを生成できるようになっている分岐アド
レス生成器と、前記分岐命令を分岐するかどうかを予測
できるようになっている分岐予測論理であって、前記分
岐命令が分岐するものとして予測されたときに、通常、
前記ターゲット・アドレスが命令取出しユニットに送ら
れる分岐予測論理と、前記分岐命令が解決可能であると
きに前記命令取出しユニットへの前記ターゲット・アド
レスの送信を禁止できるようになっている論理回路とを
含むことを特徴とするデータ処理システム。 (22)前記禁止論理回路が、リネーム・テーブル内の
宛先条件レジスタ・フィールドがいずれも前記分岐命令
に指定した依存条件レジスタと一致しないことを判定す
るための回路をさらに含むことを特徴とする、上記(2
1)に記載のシステム。
【図面の簡単な説明】
【図1】本発明により構成されたマイクロプロセッサを
ブロック図形式で示す図である。
【図2】本発明により構成されたマイクロプロセッサを
ブロック図形式で示す図である。
【図3】図1及び図2に示すマイクロプロセッサの分岐
処理ユニットの詳細をブロック図形式で示す図である。
【図4】分岐依存性検査論理回路を示す図である。
【図5】分岐依存性検査論理回路を示す図である。
【図6】実行時の条件レジスタでの分岐依存性検査を示
す図である。
【図7】高速分岐解決論理を示す図である。
【図8】本発明による流れ図を示す図である。
【図9】PIB独立性検査論理を示す図である。
【図10】実行時に呼び出される論理を示す図である。
【図11】遅延解決論理を示す図である。
【図12】本発明の全体的なブロック図である。
【図13】本発明による流れ図を示す図である。
【図14】本発明を使用する代表的なハードウェア・シ
ステムを示す図である。
【符号の説明】
111 基本命令バッファ(PIB) 121 分岐走査 122 BHTベースの分岐予測 123 分岐AGEN 124 BTAT 200 分岐解決論理 201 依存条件コードCCレジスタ(CR) 202 リンク・レジスタ(LR) カウント・レジスタ(CTR) SPLレジスタ(SPR) 203 MUX 204 AND論理
フロントページの続き (72)発明者 キン・エス・チャン アメリカ合衆国78729 テキサス州オース チン パートリッジ・ベンド・ドライブ 13009 (72)発明者 フン・キュー・レ アメリカ合衆国78717 テキサス州オース チン ドーマン・ドライブ 16310 (72)発明者 ロバート・イー・ワスムート アメリカ合衆国78731 テキサス州オース チン バルコンズ・ドライブ 4516

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】プロセッサ内で、 分岐命令を探して命令バッファを走査するステップと、 前記分岐命令に関連するターゲット・アドレスを生成す
    るステップと、 前記分岐命令の結果を予測するステップと、 前記分岐命令が解決可能であるときに命令取出しユニッ
    トへの前記ターゲット・アドレスの分岐予測方向付け伝
    送を禁止するステップとを含むことを特徴とする方法。
  2. 【請求項2】前記走査ステップ中に前記分岐命令が走査
    されたときに前記分岐命令が前記命令バッファの第1の
    ディスパッチ可能位置に位置することを特徴とする、請
    求項1に記載の方法。
  3. 【請求項3】前記禁止ステップが、 リネーム・テーブル内の宛先条件レジスタ・フィールド
    がいずれも前記分岐命令に指定した依存条件レジスタと
    一致しないことを判定するステップをさらに含むことを
    特徴とする、請求項2に記載の方法。
  4. 【請求項4】前記分岐命令が分岐走査サイクル内で解決
    されることを特徴とする、請求項3に記載の方法。
  5. 【請求項5】アーキテクチャ条件レジスタが依存条件コ
    ードによって更新されていることを特徴とする、請求項
    3に記載の方法。
  6. 【請求項6】前記プロセッサが動的分岐予測機能を有す
    ることを特徴とする、請求項3に記載の方法。
  7. 【請求項7】前記プロセッサが、前記プロセッサ内の分
    岐予測機構によって投機実行が制御される、パイプライ
    ン化プロセッサまたはスーパスカラ・プロセッサあるい
    はその両方であることを特徴とする、請求項6に記載の
    方法。
  8. 【請求項8】前記分岐命令が前記分岐命令より前の前記
    命令バッファのいずれかの位置に位置するまだディスパ
    ッチすべき命令に依存しないような前記命令バッファ内
    の位置に前記分岐命令が位置することを特徴とする、請
    求項1に記載の方法。
  9. 【請求項9】前記分岐命令が、前記命令バッファの第1
    のディスパッチ可能位置以外の前記命令バッファの任意
    の位置に位置することを特徴とする、請求項8に記載の
    方法。
  10. 【請求項10】前記分岐命令の解決が、リネーム・テー
    ブル内の宛先条件レジスタ・フィールドがいずれも前記
    分岐命令に指定した依存条件レジスタと一致しないこと
    を判定するステップを含むことを特徴とする、請求項8
    に記載の方法。
  11. 【請求項11】前記分岐命令が1つのプロセッサ・サイ
    クル内で解決されることを特徴とする、請求項10に記
    載の方法。
  12. 【請求項12】メモリから取り出したN個の命令を格納
    できるようになっている命令バッファと、 分岐命令を探して前記命令バッファのM個の位置を走査
    できるようになっている分岐走査論理であって、M≦N
    である分岐走査論理と、 前記分岐命令に関連するターゲット・アドレスを生成で
    きるようになっている分岐アドレス生成器と、 前記分岐命令を分岐するかどうかを予測できるようにな
    っている分岐予測論理であって、前記分岐命令が分岐す
    るものとして予測されたときに、通常、前記ターゲット
    ・アドレスが命令取出しユニットに送られる分岐予測論
    理と、 前記分岐命令が解決可能であるときに前記命令取出しユ
    ニットへの前記ターゲット・アドレスの送信を禁止でき
    るようになっている論理回路とを含むことを特徴とする
    プロセッサ。
  13. 【請求項13】前記分岐走査論理によって前記分岐命令
    が走査されたときに前記分岐命令が前記命令バッファの
    第1のディスパッチ可能位置に位置することを特徴とす
    る、請求項12に記載のプロセッサ。
  14. 【請求項14】前記禁止論理回路が、 リネーム・テーブル内の宛先条件レジスタ・フィールド
    がいずれも前記分岐命令に指定した依存条件レジスタと
    一致しないことを判定するための回路をさらに含むこと
    を特徴とする、請求項13に記載のプロセッサ。
  15. 【請求項15】前記分岐命令が1つのプロセッサ・サイ
    クル内で解決されることを特徴とする、請求項12に記
    載のプロセッサ。
  16. 【請求項16】アーキテクチャ条件レジスタが依存条件
    コードによって更新されていることを特徴とする、請求
    項14に記載のプロセッサ。
  17. 【請求項17】前記プロセッサが動的分岐予測機能を有
    することを特徴とする、請求項13に記載のプロセッ
    サ。
  18. 【請求項18】前記プロセッサがスーパスカラ・プロセ
    ッサであることを特徴とする、請求項17に記載のプロ
    セッサ。
  19. 【請求項19】前記禁止論理回路が、前記分岐命令が
    「分岐する」と解決された場合に前記ターゲット・アド
    レスの送信を可能にすることができるようになっている
    ことを特徴とする、請求項12に記載のプロセッサ。
  20. 【請求項20】前記分岐命令が前記分岐命令より前に前
    記命令バッファからディスパッチすべき命令に依存しな
    いような前記命令バッファ内の位置に前記分岐命令が位
    置することを特徴とする、請求項12に記載のプロセッ
    サ。
  21. 【請求項21】スーパスカラ・プロセッサと、メモリ装
    置と、バスによってまとめて結合された入出力装置とを
    含むデータ処理システムにおいて、前記プロセッサが、 前記メモリ装置から取り出したN個の命令を格納できる
    ようになっている命令バッファと、 分岐命令を探して前記命令バッファのM個の位置を走査
    できるようになっている分岐走査論理であって、M≦N
    であり、前記分岐走査論理によって前記分岐命令が走査
    されたときに前記分岐命令が前記命令バッファの第1の
    ディスパッチ可能位置に位置する分岐走査論理と、 前記分岐命令に関連するターゲット・アドレスを生成で
    きるようになっている分岐アドレス生成器と、 前記分岐命令を分岐するかどうかを予測できるようにな
    っている分岐予測論理であって、前記分岐命令が分岐す
    るものとして予測されたときに、通常、前記ターゲット
    ・アドレスが命令取出しユニットに送られる分岐予測論
    理と、 前記分岐命令が解決可能であるときに前記命令取出しユ
    ニットへの前記ターゲット・アドレスの送信を禁止でき
    るようになっている論理回路とを含むことを特徴とする
    データ処理システム。
  22. 【請求項22】前記禁止論理回路が、 リネーム・テーブル内の宛先条件レジスタ・フィールド
    がいずれも前記分岐命令に指定した依存条件レジスタと
    一致しないことを判定するための回路をさらに含むこと
    を特徴とする、請求項21に記載のシステム。
JP25983897A 1996-09-30 1997-09-25 分岐解決方法及びプロセッサ Expired - Fee Related JP3163045B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/723171 1996-09-30
US08/723,171 US5805876A (en) 1996-09-30 1996-09-30 Method and system for reducing average branch resolution time and effective misprediction penalty in a processor

Publications (2)

Publication Number Publication Date
JPH10111800A true JPH10111800A (ja) 1998-04-28
JP3163045B2 JP3163045B2 (ja) 2001-05-08

Family

ID=24905161

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25983897A Expired - Fee Related JP3163045B2 (ja) 1996-09-30 1997-09-25 分岐解決方法及びプロセッサ

Country Status (2)

Country Link
US (1) US5805876A (ja)
JP (1) JP3163045B2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5999738A (en) * 1996-11-27 1999-12-07 Hewlett-Packard Company Flexible scheduling of non-speculative instructions
US6256729B1 (en) * 1998-01-09 2001-07-03 Sun Microsystems, Inc. Method and apparatus for resolving multiple branches
US6061785A (en) * 1998-02-17 2000-05-09 International Business Machines Corporation Data processing system having an apparatus for out-of-order register operations and method therefor
US6341348B1 (en) * 1998-12-03 2002-01-22 Sun Microsystems, Inc. Software branch prediction filtering for a microprocessor
US6496975B1 (en) 1999-10-15 2002-12-17 International Business Machines Corporation Method, system, and program for performing conditional program operations
US6598153B1 (en) * 1999-12-10 2003-07-22 International Business Machines Corporation Processor and method that accelerate evaluation of pairs of condition-setting and branch instructions
US6757816B1 (en) * 1999-12-30 2004-06-29 Intel Corporation Fast branch misprediction recovery method and system
US20060248319A1 (en) * 2002-02-05 2006-11-02 Sun Microsystems, Inc. Validating branch resolution to avoid mis-steering instruction fetch
US7010676B2 (en) 2003-05-12 2006-03-07 International Business Machines Corporation Last iteration loop branch prediction upon counter threshold and resolution upon counter one
TW200602974A (en) 2004-05-19 2006-01-16 Arc Internat Uk Ltd Microprocessor architecture
WO2007049150A2 (en) 2005-09-28 2007-05-03 Arc International (Uk) Limited Architecture for microprocessor-based systems including simd processing unit and associated systems and methods
US9304773B2 (en) * 2006-03-21 2016-04-05 Freescale Semiconductor, Inc. Data processor having dynamic control of instruction prefetch buffer depth and method therefor
US8145890B2 (en) * 2009-02-12 2012-03-27 Via Technologies, Inc. Pipelined microprocessor with fast conditional branch instructions based on static microcode-implemented instruction state
US8521996B2 (en) * 2009-02-12 2013-08-27 Via Technologies, Inc. Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution
US8423751B2 (en) * 2009-03-04 2013-04-16 Via Technologies, Inc. Microprocessor with fast execution of call and return instructions
US10331891B2 (en) * 2012-02-06 2019-06-25 Microsoft Technology Licensing, Llc Branch target computation in secure start-up using an integrity datum and an adjustment datum
US9250909B2 (en) 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US9250912B2 (en) * 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US10747539B1 (en) * 2016-11-14 2020-08-18 Apple Inc. Scan-on-fill next fetch target prediction
US11599361B2 (en) * 2021-05-10 2023-03-07 Arm Limited Flushing a fetch queue using predecode circuitry and prediction information

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0229619B1 (en) * 1986-01-07 1997-08-06 Nec Corporation Instruction prefetching device comprising a circuit for checking prediction for a branch instruction before the instruction is executed
US5522053A (en) * 1988-02-23 1996-05-28 Mitsubishi Denki Kabushiki Kaisha Branch target and next instruction address calculation in a pipeline processor
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
US5537560A (en) * 1994-03-01 1996-07-16 Intel Corporation Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
US5530825A (en) * 1994-04-15 1996-06-25 Motorola, Inc. Data processor with branch target address cache and method of operation
US5634103A (en) * 1995-11-09 1997-05-27 International Business Machines Corporation Method and system for minimizing branch misprediction penalties within a processor

Also Published As

Publication number Publication date
US5805876A (en) 1998-09-08
JP3163045B2 (ja) 2001-05-08

Similar Documents

Publication Publication Date Title
JP3163045B2 (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
JP5059623B2 (ja) プロセッサ及び命令プリフェッチ方法
US8635437B2 (en) Pipelined microprocessor with fast conditional branch instructions based on static exception state
JP3397081B2 (ja) 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を推測的に実行するためのプロセッサ、データ処理システム及び方法
US7809933B2 (en) System and method for optimizing branch logic for handling hard to predict indirect branches
JP3857400B2 (ja) 自己変更コードの競合を検出するマイクロプロセッサ及びこのマイクロプロセッサを動作させる方法
US6189091B1 (en) Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection
US9361111B2 (en) Tracking speculative execution of instructions for a register renaming data store
US7032097B2 (en) Zero cycle penalty in selecting instructions in prefetch buffer in the event of a miss in the instruction cache
US5901307A (en) Processor having a selectively configurable branch prediction unit that can access a branch prediction utilizing bits derived from a plurality of sources
US10817298B2 (en) Shortcut path for a branch target buffer
JP2008530714A5 (ja)
US20040044884A1 (en) Evaluation of condition codes in a data processing apparatus
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
JPH096611A (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
US6883090B2 (en) Method for cancelling conditional delay slot instructions
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US7219216B2 (en) Method for identifying basic blocks with conditional delay slot instructions
JP3611304B2 (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
US6473850B1 (en) System and method for handling instructions occurring after an ISYNC instruction
JP3721002B2 (ja) メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法
US5764940A (en) Processor and method for executing a branch instruction and an associated target instruction utilizing a single instruction fetch

Legal Events

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

Free format text: PAYMENT UNTIL: 20080223

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090223

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees