JPH10177481A - 改善された分岐予測機能を有するマイクロプロセッサ及びその動作方法 - Google Patents

改善された分岐予測機能を有するマイクロプロセッサ及びその動作方法

Info

Publication number
JPH10177481A
JPH10177481A JP9339932A JP33993297A JPH10177481A JP H10177481 A JPH10177481 A JP H10177481A JP 9339932 A JP9339932 A JP 9339932A JP 33993297 A JP33993297 A JP 33993297A JP H10177481 A JPH10177481 A JP H10177481A
Authority
JP
Japan
Prior art keywords
branch
instruction
history
address
prediction
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.)
Pending
Application number
JP9339932A
Other languages
English (en)
Inventor
Jonathan H Shiell
エィチ.シエル ジョナサン
George Z N Cai
ゼット.エヌ.カイ ジョージ
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JPH10177481A publication Critical patent/JPH10177481A/ja
Pending 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
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

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)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 類似分岐履歴を起こす他の型式のプログラム
の分岐命令による相違分岐挙動から干渉されずかつ記憶
チップ面積を増大することなく分岐予測する。 【解決手段】 取出し装置26は、分岐目標バッファ5
6及び複数のパターン履歴テーブル53を含む。選択論
理80は、各分岐命令毎に、各分岐命令を含むプログラ
ムの型式(命令の特権レベル、例えば、ユーザ・レベル
又はスーパバイザ・レベル)を表示する信号を線路U/
Sを通して受け取りかつ、各分岐命令のアドレスに相当
する分岐目標バッファ56のエントリ63内の分岐履歴
フィールドBHの部分に応答して、予測コード発生に使
用されるパターン履歴テーブル53の1つを選択する。
この選択に当たって、分岐命令がアドレス範囲内にある
かどうか範囲レジスタ装置75が判定する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロプロセッ
サの分野、特にパイプライン・マイクロプロセッサ内の
分岐命令予測技術に関する。
【0002】
【従来の技術】マイクロプロセッサ及び他のプログラマ
ブル論理装置の分野では、最近数年の間に多くの改善が
施され、これがかなりの性能改善をもたらした。1つの
このような改善はパイプライン・アーキテクチャの実現
であって、このアーキテクチャでは多数のマイクロプロ
セッサ命令が実行の種々の段に沿って同時に処理され、
したがって後続の命令の処理がこれらより早期の命令の
完遂に先だって開始する。パイプライン方式を採るゆえ
に、たとえ各個々の命令の処理が取出し(fetch)
から実行にわたり多数のマシン・サイクルを必要として
も、マイクロプロセッサが命令を実行する実効速度を単
一パイプライン・マイクロプロセッサ内で1命令毎マシ
ン・サイクルに接近させることができる。いわゆるスー
パスカラ・アーキテクチャは、現に、並列に動作する多
数のパイプライン動作を有し、高い論理的性能レベルを
確かに提供する。
【0003】もちろん、分岐命令はほとんどの従来コン
ピュータ・プログラム及びマイクロプロセッサ・プログ
ラムでは当然のことである。分岐命令は、この分岐命令
の後に実行される次の命令がプロブラム順序中の必ずし
も次の命令であるとは限らないと云うように、プログラ
ムの流れを変更する。分岐命令は、JUMP(飛越し)
命令、サブルーチン呼出し、及びサブルーチン復帰のよ
うな無条件命令であることがある。分岐が先行の論理命
令又は演算命令の結果に依存する際は、或るいくつかの
分岐命令は条件付きである。
【0004】条件付き分岐命令は、パイプライン・アー
キテクチャのマイクロプロセッサ内に複雑さをもたら
す。それは、分岐を左右する条件が取出しの後数サイク
ルを経ることがある実行まで知られないからである。こ
れらの状況では、マイクロプロセッサは、その条件が解
かれるまでは分岐後に命令を取り出すのを止めて、パイ
プライン内へ空き段の「バブル(bubble)」(す
なわち、潜在的命令処理スロット)を導入しなけばなら
ないか、又は、代わりに、もし推論が正しくないと判定
されるならば、その現命令についてパイプラインを「フ
ラッシュ」しなければならない危険を冒して、パイプラ
インを満たしておくために(実際にはその条件を推量し
て)その命令を推論的に取り出さなければならないかの
どちらかである。
【0005】特に、長いパイプライン又は多数のパイプ
ラインを備えるアーキテクチャでは、パイプラインを満
たしておいて命令を推論的に実行することの利益は、推
論的実行の成功率が所望性能利益を達成するのに充分で
ある限り、典型的には、パイプライン・フラッシュと云
う性能劣化を補って余りある。したがって、多くの最近
のマイクロプロセッサは、条件付き分岐命令の挙動(b
ehavior)を或る精度で予測すると云ってよい分
岐予測技術の或る型式に従う。分岐予測の1型式は、そ
の予測が時間又は履歴(history)にわたって変
化しないので、「静的」予測と称される。簡単な静的予
測アプローチは、「採用(taken)」される全ての
条件付き分岐を単に予測する。改善された静的分岐予測
アプローチは、例えば、「不採用(not take
n)」になる順方向の全ての条件付き分岐を予測しかつ
「採用」される全ての条件付き逆方向分岐(例えば、D
O(ドウ)ループ内のLOOP(ループ)命令)を予測
することによって、分岐方向に従って予測する。
【0006】動的分岐予測は、次の分岐の結果を予測す
るために過去の分岐の結果を使用する分岐予測について
の既知の技術を称する。簡単な周知の動的予測技術は、
現分岐命令の方向を予測するために極最近(most
recent)の1つ又は2つの条件付き命令の結果を
単に使用する。
【0007】より精確な動的分岐予測アプローチは、分
岐命令の方向を、他の命令の分岐結果ではなくて、その
命令自体の分岐履歴によって予測する。このアプローチ
は、一般に、分岐目標バッファを介して最近のマイクロ
プロセッサ内に組み入れられている。従来の分岐目標バ
ッファ(branch target buffer)
すなわち、BTBはエントリ(entries)で構
成されるキャッシュに似たテーブルであって、これらの
エントリの各々が最近出会った分岐命令に対する識別子
(「タグ」)、分岐を行うに当たっての分岐履歴関連コ
ード、及び、もしその分岐が採用と予測されるならば、
取り出される次の命令の目標アドレス(次の順番のアド
レスは「不採用」予測に対して取り出されるアドレスで
ある)を記憶する。分岐命令が取り出されるとき、この
命令に先に出会ったかどうかを判定するためにこの命令
のアドレスを分岐目標バッファ内のタグと照合(mat
ch)する。もしこのアドレスとタグが符合(matc
h)するならば、次の命令が同命令に対して分岐目標バ
ッファ内に表示された予測コードに従って取り出され
る。新たに出会った分岐命令は、分岐目標バッファ内に
履歴が存在しないので、統計的に予測される。命令の実
行及び完遂の際、分岐目標バッファエントリが、その分
岐命令が次に起こるときに使用されるに当たって、この
分岐命令の実際の結果を反映するように(典型的には、
採用分岐のみに対して)作成されるか又は(既に分岐目
標バッファエントリを有する分岐に対して)修正され
る。
【0008】これに代わり、極最近(most rec
ently)実行された分岐に基づいて又は同じ命令の
分岐履歴に基づいて分岐を予測する種々の従来の実際予
測アリゴリズムが、技術上知られている。周知の簡単な
予測アルゴリズムは、4状態ステートマシンに従い、か
つ2つの極最近の分岐事象を使用して、次に起こる分岐
が採用か又は不採用かどうか予測する。これらの4状態
は、「強採用(storongly taken)」、
「採用(taken)」、「不採用(nottake
n)」、及び「強不採用(strongly not
taken」と称される。「強」状態は、場合により既
に採用された又は未だ不採用の(その実現に依存して、
一般的にか又は特定命令に対するかのどちらかの)最新
の少なくとも2つの分岐に相当する。採用状態及び不採
用状態(すなわち、「強」状態でない)は、次の分岐結
果が他の結果から予測を変化するか、又は予測を維持す
るがしかし「強」状態で維持すると云うように、異なる
結果を有する最新の2つの分岐に相当する。
【0009】分岐予測アルゴリズムにおける最近の進歩
は、分岐挙動の予測を発生するに当たって、分岐履歴結
果を使用するだけでなく、また分岐パターン情報を使用
する。例えば、或る決まった分岐命令は、その分岐履歴
が採用−採用−不採用パターンに繰り返し従うと云うよ
うな、3パスのループであってよい。簡単な2ビット、
すなわち、4状態予測機構の使用は、命令の分岐を、た
とえその挙動が全面的に予測可能であっても、正しくは
予測しない。イェー及びパット、「2レベル適応分岐予
測」、マイクロアーキテクチャに関する第24回国際シ
ンポジウム資料(ACM/IEEE、1991年11
月)、51〜61ぺージ(Yeh & Patt、”T
wo−Level Adaptive Branch
Prediction”,Proceedings o
f the 24th International
Symposium on Microarchite
cture,(ACM/IEEE,November
1991),pp.51−61)に説明された周知の2
レベル適応分岐予測機構は、分岐命令の結果を予測する
ために分岐履歴情報及び分岐パターン情報の両方を使用
する。イェー及びパットのアプローチを使用する分岐予
測は、1995年7月12日に公告された英国特許出願
第2 285 526号に説明されたように、分岐目標
バッファを使用するマイクロプロセッサ・アーキテクチ
ャに応用されてきた。これに関しては、米国特許第5,
574,871号にもまた注意を払われたい。
【0010】上に参照したイェー及びパットの論文並び
に英国特許第2 285 526号に説明されたアプロ
ーチに従って、各特有の分岐パターン毎にパターン履歴
が維持されかつ更新される。このアプローチでは、パタ
ーン履歴は上に述べた4状態ステートマシンモデルから
なり、このモデルでは各分岐パターン毎の2つの極最近
の分岐事象が同じ分岐パターンを有する分岐が次に起こ
るときこれが採用か不採用かどうか(その「強」属性と
一緒に)予測する。動作中、分岐目標バッファ内のエン
トリを有する分岐命令が検出されると、その命令に対す
る分岐履歴に含まれた分岐パターンがパターン履歴テー
ブル内へ索引付けを行い(indexinto)、この
テーブルから予測が得られる。分岐が解決されると、そ
の特定命令に対する分岐履歴フィールド及びそれの先行
のパターン(すなわち、予測に使用された分岐パター
ン)の両方が更新される。次いで、更新されたパターン
履歴が、分岐目標バッファのその分岐履歴フィールド内
のその関連した分岐パターンを有する次の分岐命令の成
果を予測するに当たって使用に供される。それゆえ、こ
のアプローチによるパターン履歴テーブルは、分岐予測
が、命令の一致性(identity)に無関係に、同
じ分岐履歴パターンを有するどの分岐命令に対しても発
生されると云う意味において、「大域的(globa
l)」である。したがって、特定分岐パターンに対する
パターン履歴は、その分岐履歴を有するどれかの分岐命
令に対する分岐予測結果に基づいて定義されかつ更新さ
れる。それゆえ、所与の命令に対する分岐予測は、この
基本的2レベル技術によれば、他の、相違する命令の分
岐結果に基づいて決定される。
【0011】イェー及びパット、「2レベル適応分岐予
測の代替実現」、コンピュータ・アーキテクチャに関す
る第19回年次国際シンポジウム会議資料(ACM、1
992年5月)、124〜134ぺージ(Yeh &
Patt、”Alternative Impleme
ntations of Two−Level Ada
ptive Branch Prediction”,
ConferenceProceedings of
the 19th Annual Internati
onal Symposiumon on Compu
ter Architecture,(ACM,May
1991),pp.124−134)に説明されたよ
うに、2レベル分岐予測の代替実現がこの限界に取り組
んでいる。この代替実現は、この論文の図3に示された
ように、分岐目標バッファ内の各エントリがその固有の
パターン履歴テーブルを有すると云うように、アドレス
−特定パターン(address−specific
pattern)履歴テーブルを提供する。したがっ
て、或る1つの分岐命令に対する分岐予測は、その固有
の過去の履歴によって発生されかつ修正されたパターン
履歴に基づいて行われ、類似の分岐パターンを有する他
の分岐命令に対する分岐結果に依存しない。
【0012】アドレス−特定履歴パターンの使用はその
分岐予測へのこれと同じ分岐パターンを有する他の分岐
命令からの干渉を除去するが、実現に要する費用は極め
て高くなり得る。例えば、最近のマイクロプロセッサ
は、4k程に及ぶ多くのエントリを備える分岐目標バッ
ファを有することがある。アドレス−特定パターン履歴
テーブル内へ4ビットの分岐履歴の索引を使用すること
は、それゆえ4kパターン履歴テーブルを必要とし、こ
れらのテーブルの各々が2ビット幅の16エントリを備
え、この結果128kビットの記憶容量を占めることに
なる。それゆえ、このアプローチの実現に必要とされる
チップ面積は、極めて広い。しかしながら、この費用
は、パターン履歴テーブルに対する索引のような追加の
分岐履歴ビットの使用を通して分岐予測を改善しようと
努めるに従って、急速に増大する。例えば、6分岐履歴
ビットを使用すると512kビットのパターン履歴記憶
容量を必要とするであろう。マイクロプロセッサが益々
多くのかつ各々がますます段数に関して深いパイプライ
ンを有する傾向を続け、その結果、分岐誤り予測(br
anch misprediction)に対する罰
(penalty)はますます苛しく、それゆえ、精確
な分岐予測への評価(premium)がますます高く
なるに従い、アドレス−特定パターン履歴費用は更に一
層かさむようになる。
【0013】更に背景として、異なる型式のマイクロプ
ロセッサ・プログラムはその型式内で分岐挙動の類似性
を有し、かついくつかの型式を横断しては相違性を有す
ることが観察されている。例えば、カルダー及びグルン
ワルド、「ライブラリにおける分岐の確率」、マイクロ
アーキテクチャに関する第28回国際シンポジウム資料
(ACM/IEEE、1995年11月)、24〜34
ぺージ(Calder& Grudwald、”The
Predicability of Branche
s in Libraries”,Poceeding
s ofthe 28th Internationa
l Symposium on Microarchi
tecture,(ACM/IEEE,Novembe
r 1995),pp.24−34)に説明されている
ように、普通使用されているUNIXライブラリ・サブ
ルーチンは、予測可能な分岐挙動を有する傾向があり、
かつ種類(class)又は型式としては、非ライブラ
リ・プログラムと異なる分岐挙動を有する傾向がある。
【0014】更に背景として、分岐履歴及び分岐目標バ
ッファのタグ・フィールドの部分の両方を使用して大域
パターン履歴テーブル内へ索引付けを行うことが知られ
ている。
【0015】
【発明が解決しようとする課題】本発明の目的は、プロ
グラム型式に基づいているマイクロプロセッサ内で分岐
予測を提供することにある。
【0016】本発明の更に目的は、相違する分岐命令が
分岐パターン履歴テーブルを修正しないこのような分岐
予測を提供することにある。
【0017】本発明の更に目的は、類似の分岐命令が新
たに出会う分岐命令に対して分岐パターン履歴を設定す
ることができ、それゆえ分岐命令の始めのインスタンス
(instance)で分岐予測を改善するこのような
分岐予測を提供することにある。
【0018】本発明の他の目的及び利点は、次の説明を
その添付図面と共に参照したならば技術の通常の習熟者
に明白になるはずである。
【0019】
【課題を解決するための手段】本発明は、多数の大域パ
ターン履歴テーブルを備えることによってマイクロプロ
セッサ内に実現される。これらのパターン履歴テーブル
は、これらの各エントリに対するパターン履歴が多数の
分岐命令の結果によって発生されかつ更新されると云う
意味において大域的である。これらのパターン履歴テー
ブルの各々は、異なるソースからの分岐命令、例えば、
x86アーキテクチャ・マイクロプロセッサ内のスーパ
バイザ・コード又はユーザ・コードからの、メモリ空間
の選択された窓内に駐在する命令からの、これらの命令
がそこから取り出されたメモリ内のページ・フレームに
対するページ・テーブルエントリ内の大域ビットの状態
からの、又はこれらの命令を含むプログラムの型式に相
当する他の制御情報からの分岐命令に相当する。それゆ
え、大域パターン履歴テーブルの各々はそのテーブルに
対する型式のプログラムからの分岐命令についての予測
情報を提供する。これは、類似型式のプログラムに対す
る分岐挙動の類似性を利用し、かつ異なる型式のプログ
ラムの分岐命令からの相違する分岐挙動による干渉を減
少させるためである。
【0020】
【発明の実施の形態】図1は本発明がその内部で実現さ
れるスーパスカラ・マイクロプロセッサ10を含むデー
タ処理システム300をいずれも例証として示す。これ
について説明する。云うまでもなく、本発明は種々のア
ーキテクチャのマイクロプロセッサに利用されると考え
られるので、システム300の及びマイクロプロセッサ
10のアーキテクチャはただ例としてここに説明され
る。したがって、本明細書を参照するならば技術の通常
の習熟者はこのような他のマイクロプロセッサ・アーキ
テクチャで本発明を容易に実現することができると考え
られる。本発明は、シリコン基板、絶縁物上シリコン
(silicon−on−insulator)、ガリ
ウムひ素で完成される集積回路の製造技術及びその他の
製造技術を用いて、及びMOS、CMOS、双極性、B
iMOSデバイス、又はその他のデバイス実現を使用し
て、単一チップ・マイクロプロセッサ、マイクロコンピ
ュータ内に、又は多数チップ実現内で実施されると考え
られる。
【0021】図1に示されたマイクロプロセッサ10
は、外部バスBUSを通して他のシステム・デバイスに
接続される。外部バスBUSは、例えば、単一バスとし
て示されているが、PCIローカル・バス・アーキテク
チャを利用する従来のコンピュータにおいて知られてい
るように、外部バスBUSは異なる速度及びプロトコル
を有する多重バスを表すと、もちろん、考えられる。シ
ステム300は、通信ポート303(モデム・ポート及
びモデム、ネットワーク・インタフェースの類を含
む)、グラフィック・ディスプレイ・システム304
(ビデオ・メモリ、ビデオ・プロセッサ、グラフィック
・モニタを含む)、ダイナミック・ランダム・アクセ・
メモリ(DRAM)として典型的に実現されかつメモリ
・スタック307を含むことがある主メモリ305、入
力装置306(キー・ボード、位置決め装置(poin
ting device)、及びこの装置のためのイン
タフェース電子回路を含む)、及びディスク装置308
(ハードディスク駆動機構、フロッピーディスク駆動機
構、及びCD−ROM駆動機構を含むことがある)のよ
うな従来のサブシステムを含む。したがって、図1のシ
ステム300は、いま普及している従来のデスクトップ
・コンピュータ又はワークステーションに相当すると技
術上考えられる。もちろん、技術の通常の習熟者に認め
るられるように、マイクロプロセッサ10の他のシステ
ム実現もまた本発明から利益を受けることができる。
【0022】マイクロプロセッサ10は外部バスBUS
に接続されたインタフェース装置(BIU)12を含
み、この装置はマイクロプロセッサ10とシステム30
0内の他の構成要素との間の伝達を制御しかつ実施す
る。インタフェース装置12は、この機能を遂行するた
めに適当な制御及びクロック電子回路を含み、動作速度
を向上するための書込みバッファを含み、及び内部マイ
クロプロセッサ動作の結果をバスBUSタイミング制約
と同期させるようにタイミング電子回路を含む。マイク
ロプロセッサ10はまた、クロック発生及び制御電子回
路20を含み、この電子回路はシステム・クロックSY
SCLKに基づいてクロック位相を発生する。この例で
は、クロック発生及び制御電子回路20は、システム・
クロックSYSCLKかバス・クロックBCLK及びコ
ア・クロックPCLKを発生する。
【0023】図1で明らかなように、マイクロプロセッ
サ10は内部キャッシュ・メモリの3つのレベルを有
し、これらのレベルのうちの最高のものはレベル2キャ
ッシュ11であって、内部バスを通してインタフェース
装置12に接続される。この例では、レベル2キャッシ
ュ11は、統一キャッシュであって、かつマイクロプロ
セッサ10によって提供されるバス・トラフィックの多
くがレベル2キャッシュ11を経由して完遂されるよう
に、バスBUSからインタフェース装置12を経由して
全てのキャッシュ可能データ及びキャッシュ可能命令を
受け取るように構成されている。マイクロプロセッサ1
0はまた、或る決まったバス読出し及び書込みを「キャ
ッュ可能でない」として取り扱うことによってキャッシ
ュ11の周りのバス・トラフィックを実施することがあ
る。図2に示されたように、レベル2キャッシュ11は
2つのレベル1キャッシュ16に接続される。レベル1
キャッシュ16d はデータに専用されるのに対して、レ
ベル1キャッシュ16i は命令に専用される。マイクロ
キャッシュ18は、この例では、完全デュアル・ポート
付き(fully dual−ported)レベル0
データ・キャッシュである。主変換索引バッファ(ma
in translation look−aside
buffer;TLB)19は、レベル2キャッシュ
11へのアクセス及びインタフェース装置12を経由し
ての主メモリへのアクセスを制御する。このような制御
は、アドレス変換のためにメモリ内のページ・テーブル
へのアクセスの順序付けを含む。主変換索引バッファ1
9はまた、ページ・テーブル用キャッシュとして働く。
命令マイクロ変換索引バッファ(instructio
nmicrotranslation lookasi
de buffer;以下、命令μTLB)22及びデ
ータ・マイクロ変換索引バッファ(以下、データμTL
B)38は、従来のようにして、それぞれ、レベル1キ
ャッシュ16i及びレベル1キャッシュ16d にアクセ
スするために論理データ・アドレスを物理アドレスに変
換するために備わる。
【0024】図1に示されたように、マイクロプロセッ
サ10はスーパスカラ型式のものであり、それゆえ、多
数の実行装置を含む。これらの実行装置には、条件付き
分岐動作、整数演算、及び論理演算を処理する2つの論
理演算装置(以下、ALU)420 、421 、浮動小数
点装置(floating point unit;F
PU)31、2つのロード及びストア装置400 、40
1 、及びマイクロシーケンサ48がある。2つのロード
及びストア装置40は、マイクロキャッシュ18への2
つの真の並列アクセスのために、このマイクロ・キャッ
シュへの2つのポートを使用し、かつまたレジスタ・フ
ァイル39内のレジスタへのロード及び記憶動作を遂行
する。技術上従来のように、レジスタ・ファイル39
は、プログラマ用途に利用可能である汎用レジスタを含
み、かつまたコード・セグメント・レジスタCSを有す
る制御レジスタを含む。
【0025】これらの多数の実行装置は、ライトバック
(write−back)を伴う、各々7段の多数のパ
イプラインを通して制御される。これらのパイプ段は、
次の通りである。
【0026】 F 取出し: この段は、命令アドレスを発生しかつ命令キャッシュ又 はメモリから命令を読み出す。 PD0 プリデコード段0: この段は、3つまでのx86型命令の長さ及 び開始位置を判定する。 PD1 プリデコード段1: この段は、x86命令バイトを抽出し、かつ デコードするためこれらを固定長フォーマットで記録する。 DC デコード: この段は、x86命令をアトミック演算(AOp)に 変換する。 SC スケジュール: この段は、4つまでのAOpを適当な実行装置( FPU31を含む)に割り当てる。 OP オペランド: この段は、AOpによって表示されたレジスタ・オ ペランドを検索する。 EX 実行: この段は、AOp及び検索されたオペランドに従って実行 装置をランさせる。 WB ライトバック: この段は、実行の結果をレジスタ又はメモリに記 憶する。
【0027】このパイプラインは、「整数パイプライン
(integer pipeline)」と以下に称さ
れ、本発明の好適実施例に従って浮動少数点装置(FP
U31)の浮動小数点パイプラインと組み合わさって動
作する。
【0028】図1に戻って参照すると、上に挙げたパイ
プライン段は、マイクロプロセッサ10内の種々の機能
ブロックによって遂行される。取出し装置26は、命令
μTLB22を経由して命令ポインタから命令アドレス
を発生し、レベル1命令キャッシュ16i に供給し、下
になお詳細に説明されるように分岐予測技術に従う種々
の機能を含む。更に、下に詳細に説明されるように、取
出し装置26は、コード・セグメント・レジスタCSか
らの線路U/Sを通して取出し装置26における現命令
のプログラム型式又は種類を表示する信号を受け取る。
命令キャッシュ16i は命令データの流れを発生して取
出し装置26へ送り、後者は、立ち代わって、命令コー
ドを所望の順序に従ってプリデコード0段28及びプリ
デコード1段32へ転送する。これら2つの段は分離パ
イプライン段として動作し、かつ3つまでのx86命令
を位置決めしかつこれらをデコーダ34に供給するよう
に一緒に動作する。プリデコード0段28は3つだけの
可変長x86命令の寸法及び位置を決定するのに対し
て、プリデコード1段32は、デコーディングを容易に
するために、多数バイト命令を固定長フォーマットで記
録する。デコーダ34は、この例では、4つの命令デコ
ーダを含み、これらの各々はプリデコード1段32から
固定長x86命令を受け取りかつ1つから3つのアトミ
ック演算(Atomic operation; AO
p)を発生する能力を有し、これらの演算はRISC命
令と実質的に等価である。スケジューラ36は、デコー
ダ34の出力におけるデコード待ち行列から4つまでの
アトミック演算を読み出し、かつこれらのアトミック演
算を適当な実行装置に割り当てる。オペランド装置44
は、マルチプレクサ45を経由してスケジューラ36及
びまたマイクロコードROM46から入力を受け取り、
かつ命令の実行に使用されるレジスタ・オペランドを取
り出す。更に、この例によれば、オペランド装置44は
また、記憶する準備を整えたレジスタへ結果を送るため
にオペランド転送を遂行し、かつまたロード及びストア
型のアトミック演算に対するアドレス発生を遂行する。
【0029】マイクロシーケンサ48及びマイクロコー
ドROM46はマイクロコードエントリアトミック演算
の実行に当たってALU(論理演算装置)42、及びロ
ード/記憶装置40を制御する。これらのアトミック演
算は、一般に、或る1つのサイクル中に実行する最新ア
トミック演算である。この例では、マイクロシーケンサ
48は、マイクロコードROM46に記憶されたマイク
ロ命令を通してシーケンスして、複雑なx86命令又は
稀に使用されるx86命令、例外及び割込みを取り扱う
セグメント・レジスタ又は制御レジスタを修正するx8
6命令、及び(REP命令、及び全てのレジスタをPU
SH(プッシュ)及びPOP(ポップ)する命令のよう
な)多サイクル命令のようなマイクロコード化マイクロ
命令に応答して、制御を実施する。
【0030】マイクロプロセッサ10はまた、製造の完
了の際、及びリセット及び他の事象の際にマイクロプロ
セッサ10の演算の有効性を保証するJTAG走査試
験、及び或る決まった組込み自己試験(BIST)機能
を制御する電子回路24を含む。
【0031】図2は、本発明の好適実施例による取出し
装置26の構成及び動作を示す。これについて説明す
る。上に挙げたように、取出し装置26は、デコードす
るために取り出される次の命令のアドレスを決定する機
能を遂行する。そのようなものとして、取出し装置26
は、命令がマイクロプロセッサ10のパイプライン内に
ロードされる順序を決定し、かつ、本発明のこの実施例
では、アドレスの推論的(speculative)実
行を、特に分岐予測を通して制御する。
【0032】取出し装置26の動作は、マルチプレクサ
52によって選択されたいくつかの方法の1つに従って
発生される論理取出しアドレスFAに基づいてる。取出
しアドレスFAは、次の順番のアドレスをデコードする
ために取り出そうとしている場合には、取出し装置26
内の取出しポインタ50の内容から単に発生されてよ
い。図2に示されたように、取出しポインタ50は、取
出し装置26内のレジスタであって、このレジスタはマ
ルチプレクサ52の1つの入力及びまた増分器51に接
続された出力を有する。増分器51は、取出しアドレス
の値を次の論理命令へ前進させ(スーパスカラマシンの
場合、次の論理命令は必ずしも次の順番の命令であると
は限らない)、かつ前進させた取出しアドレスをマルチ
プレクサ58の入力に供給して、この値を可能ならば取
出しポインタ50内に記憶させかつ次の取出しに使用さ
せる。マルチプレクサ58は、次のアクセスに対して取
出しポインタ50の更新された内容のソースを選択する
ために備わる。取出しアドレスFAを発生する第2の方
法は、例えば、取出し装置26によって予測されない採
用分岐の場合、又は予測誤りされた分岐の場合、マルチ
プレクサ52に対する実行装置の1つ(例えば、マイク
ロシーケンサ48)によって行われる。このアドレスの
値もまた、マルチプレクサ58の入力に供給され、適当
であるならば取出しポインタ50内に記憶される。
【0033】取出し装置26はまた、プログラム・シー
ケンスからの次の取出しアドレスFAを発生する電子回
路を含む。図2に示されたように、取出し装置26は復
帰アドレス・スタック55を含み、このスタックは後入
れ先出し(last−in−first−out; L
IFO)メモリであって、その有するいくつかの位置に
サブルーチン呼出し及びサブルーチン復帰用復帰アドレ
スが記憶されて、サブルーチンの推論的実行に使用され
る。本発明のこの実施例では、取出し装置26はまた分
岐目標バッファ56を含む。分岐目標バッファ56はエ
ントリのキャッシュに似た構成であって、これらのエン
トリは分岐命令の現インスタンスをそこから予測する分
岐についてのいままでの履歴を表示するデータを記憶す
ると共に、これらと一緒に取出しアドレスFAとして使
用される分岐命令の目標アドレスを記憶し、こうするこ
とによってそのパイプラインは可能限り頻繁に満たされ
た状態に維持される。本発明のこの実施例では、分岐目
標バッファ56は、2レベル型式であるので、このよう
なものとして分岐履歴情報によって呼び出される予測コ
ードを記憶する多数のパターン履歴テーブル53との組
合わせで動作する。本発明の好適実施例に関して下に更
に詳細に説明されるように、特定アドレスに対する分岐
予測の発生に使用しようとしているパターン履歴テーブ
ル53のうちの適当な1つが、分岐命令を含むプログラ
ムの型式に従って選択論理80によって選択される。図
2に示されたように、選択論理80は、コード・セグメ
ント・レジスタCSから導出される線路U/Sを通して
伝達されるような現分岐命令を含むプログラム型式に関
する情報に応答して、パターン履歴テーブル53の中か
ら選択する。更に、図示されたように、実際の取出しア
ドレスFAは、このアドレスに相当する分岐命令のメモ
リ位置に基づいて適当なパターン履歴テーブル53を選
択するのに使用されてよい。このようにして、同じ型式
のプログラム(例えば、応用プログラム、共用ライブラ
リ、オペレーティング・システム機能)によって演じら
れる分岐挙動の類似性を利用することによって分岐予測
成功率を改善する。
【0034】パターン履歴テーブル53内の相当する予
測コードに基づく分岐予測に応答して、分岐目標バッフ
ァ56は、バスBR TRGを通してマルチプレクサ5
7へ目標命令アドレスを供給する。復帰アドレス・スタ
ック55は、バスRAを通してマルチプレクサ57へ復
帰命令アドレスを供給する。マルチプレクサ57の出力
はマルチプレクサ52の第3入力及びマルチプレクサ5
8に接続され、それによって取出しカウンタ50が更新
される。マルチプレクサ52の3つの入力は、それゆえ
次の取出しアドレスFAに対する3つのソースを供給
し、このアドレスは物理アドレスではなくて論理アドレ
スである。
【0035】分岐予測の結果は、適当な実行装置から線
路UPDを通して更新論理70へ伝達される。下に更に
詳細に説明するように、更新論理70は、実行中に評価
された分岐予測の成功又は失敗に応答して、分岐目標バ
ッファ56のエントリ内の分岐履歴を更新し、かつまた
パターン履歴テーブル53内に記憶された予測コードを
更新する。
【0036】取出しアドレスFAは、デコーディングに
対する次の命令の取出しを制御するために取出し装置2
6内の種々の機能に供給される。例えば、取出し装置2
6は命令μTLB22と連絡しており、後者はもし論理
取出しアドレスFAが先に変換された位置を指すならば
このアドレスに符合する物理アドレスを復帰させる。こ
れに代わりに、論理取出しアドレスFAは、取出し装置
26の外部である主変換装置(図示されていない)によ
って物理アドレスに変換される。いずれにしても、レベ
ル1命令キャッシュ16i から命令コードの線路を検索
するために、取出し装置26によって命令線路アドレス
IAがこのキャッシュに供給される。もちろん、もしレ
ベル1命令キャッシュ16i にキャッシュ・ミスが起こ
るならば、物理アドレスが統一レベル2キャッシュ11
に供給され、かつこのレベルでキャッシュ・ミスがある
場合、主メモリに供給される。命令線路アドレスIAに
応答して、レベル1命令キャッシュ16i は命令コード
・シーケンスCODEの或る1つの線路を取出し装置2
6内の命令バッファ及び制御装置60に供給し、最終的
にプリデコード0段28に供給する。各命令線路アドレ
スIAが16バイトのブロックをアドレス指定するのに
使用されるこの場合、命令バッファ及び制御装置60は
少なくとも16バイトの容量を有する。
【0037】取出し装置26はまた、中断(brea
k)として識別された命令に対する追加の取出しを停止
させる命令中断検査回路62のような、他の従来機能を
含む。取出し装置26はまた、論理取出しアドレスFA
が現コード・セグメントの上下限(bounds)なる
制限の外側のアドレスを指すかどうか判定するコード・
セグメント制限検査回路64を含む。
【0038】論理取出しアドレスFAは分岐目標バッフ
ァ56の入力に接続され、この分岐目標バッファは取出
しアドレスFAが最近取り出された分岐命令を指すかど
うか判定し、かつ推論的実行に使用される分岐履歴を記
憶することがある。技術上知られているように、図1の
スーパスカラ・マイクロプロセッサ10のような深くパ
イプラインされたマイクロプロセッサでは、誤り予測さ
れた分岐(又は条件付き分岐の結果を待機するパイプラ
イン機能停止(stall))は喪失実行機会で測った
苛しい罰を受けるに至るので、推論的実行は重要な性能
強化である。分岐目標バッファ56は、キャッシュに似
た形態、例えば、512エントリ、4路セット・アソシ
エイティブ(four−way set−associ
ative)のような形態に構成されたメモリである。
もちろん、分岐目標バッファ56は、直接マップ式(d
irectmapped)から完全アソシエイティブま
でどのようにして組織してもよい。図3は、選択論理8
0及び多数パターン履歴テーブル53との組合わせで、
分岐目標バッファ56の構造を示す。これについて説明
する。
【0039】上に挙げたように、この例では、分岐目標
バッファ56は、多数エントリ63を有する4路セット
・アソシエイティブ・キャッシュ・メモリであり、明瞭
のために、図3にはその1路のみが示されている。分岐
目標バッファ56はセレクタ61を含み、このセレクタ
は線路を通して取出しアドレスFAを受け取るように及
び取出しアドレスが指す適当なエントリ63を選択する
ように結合される。セレクタ61は、取出しアドレスか
ら分岐目標バッファ56内のエントリ36を選択するた
めに、デコーダ、タグ比較器、又は簡単なマルチプレク
サによる等のように、なんらかの従来技術に従って構成
されてよい。分岐目標バッファ56内の各エントリ63
はタグ・フィールドTAGを有し、タグ・フィールドは
そのエントリを特定分岐命令の論理取出しアドレスFA
を用いて識別するために使用され、特定分岐命令に対し
てセレクタ61は入力論理取出しアドレスFAの部分を
比較する。タグ・フィールドTAGは、技術上知られて
いるように、それに相当する分岐命令の論理取出しアド
レスFAの選択されたビットを直接記憶してよく、又は
代わりにこれらの選択された論理アドレス・ビットの論
理組合わせに相当してよい。典型的に、タグ・フィール
ドTAGは、線路アドレス及びその取出し線路内の命令
のバイト・オフセットを表示するオフセットを含む。分
岐目標バッファ56内の各エントリ63はまた、分岐命
令目標アドレスの論理アドレスを含む目標フィールドT
ARGETを含む。上に挙げたように、採用として予測
された分岐命令と符合するエントリ63の目標フィール
ドTARGET内の目標アドレスは分岐目標バッファ入
出力論理69によってバスBR TRGを通してマルチ
プレクサ57に供給されることになる。もし分岐が不採
用ならば、単に次の順番の論理アドレス(すなわち、取
出しポインタ50の内容)が、次の論理取出しアドレス
FAとしてマルチプレクサ57によって選択されること
になる。
【0040】本発明のこの実施例によれば、各エントリ
63はまたmビット分岐履歴フィールドBHを含み、こ
のフィールドはタグ・フィールドTAGに相当する分岐
命令に対する分岐履歴を記憶する。分岐履歴フィールド
BHに記憶された分岐履歴は、その命令の実行の完了の
際に判定された関連分岐命令の実際の分岐履歴及びその
分岐命令の実行をまだ完了していない分岐命令のインス
タンスに対する予測結果からなる推論的分岐履歴の両方
を含む。更に、列挙することによってその内容が本明細
書に組み入れられた1996年6月28日に出願された
同時係属米国仮特許出願第60/020,844号に説
明されたように、分岐目標バッファ56の各エントリ6
3はカウンタを含み、このカウンタは、誤り予測からの
回復に当たって使用されるように、分岐履歴フィールド
BH内の推論的分岐履歴ビットの数を表示する。分岐目
標バッファ56の各エントリ63はまた、標識(ind
icator)TYPEを含み、この標識は分岐を予測
するに当たって使用されるように、その関連命令につい
ての分岐命令型式(すなわち、条件付き分岐、CALL
(呼出し)、JUMP、又はRETURN(復帰))を
表示する。CALL、JUMP、及びRETURNのよ
うな無条件分岐は、常時、採用として予測される。LR
U(最低使用頻度)ビット、有効ビット、及びその他の
制御ビット(図示されていない)もまた分岐目標バッフ
ァ56の各エントリ内に備わる。
【0041】図2に関して上に挙げたように、多数パタ
ーン履歴テーブル53は、選択された分岐目標バッファ
のエントリ63に対する分岐履歴フィールドBHの極最
近のkビットに基づいて条件付き分岐の挙動を予測する
ために使用される。本発明のこの実施例によれば、分岐
履歴フィールドBHがパターン履歴テーブル53のどの
1つにもアクセスできると云うように、各パターン履歴
テーブル53は特定型式のプログラムと関連している
が、しかし、ここでは予測コードは、その命令がそこか
ら取り出された型式のプログラムに対して適当なパター
ン履歴テーブル53の1つのみから選択される。図2は
パターン履歴テーブル53が分岐目標バッファ56から
物理的に分離された電子回路として実現されているが、
もちろん云うまでもなく、パターン履歴テーブル53は
望まれるに従って分岐目標バッファ56内に含まれてよ
い。4つのパターン履歴テーブル533 から530 が分
岐目標バッファ56との組合わせで実現されている。
【0042】各パターン履歴テーブル53は簡単なルッ
クアップ・メモリであり、各々がセレクタ67を有しこ
のセレクタが分岐目標バッファ56の選択されたエント
リ63からk分岐履歴ビットを受け取りかつこのエント
リに相当するテーブル53の2k 予測エントリPRDの
1つを選択する。セレクタ67は、この機能を遂行する
ために、デコーダ又はマルチプレクサとして実現されて
よい。図3に示されたように、パターン履歴テーブル5
3 から530 の各々は選択されたエントリ63からk
分岐履歴ビットを受け取り、かつそのパターン履歴テー
ブルに供給されるk分岐履歴ビットに相当する予測エン
トリPRDの内容に相当するパターン履歴線路のそれぞ
れの集合PRE3 からPRE0 上にパターン履歴コード
を供給する。パターン履歴テーブル53のうちの選択さ
れた1つ内へ索引付けするに当たって、或る決まったア
ドレス・ビット及びまた制御情報のような、他の情報が
分岐履歴フィールドBHのこれらのkビットと組み合わ
せられることがある。本発明のこの実施例では、4状態
分岐予測モデル(すなわち、強採用、採用、不採用、及
び強不採用)の下に従来のようにして2ビット・パター
ン履歴コードを伝達するために、2線路が各集合PRE
に含まれる。
【0043】本発明のこの実施例によれば、選択論理8
0は、パターン履歴テーブル53のうちの選択された1
つの出力を分岐目標バッファ56に伝達する電子回路を
含む。もちろん、選択論理80は、これに代えて、多数
のパターン履歴テーブル53のうちの適当な1つを選択
的にアドレス指定するように実現されてよい。この例で
は、パターン履歴テーブル533 から530 からの、そ
れぞれ、パターン履歴線路の集合PRE3 からPRE0
は、マルチプレクサ68の入力へ接続される。マルチプ
レクサ68は、パターン履歴線路の集合PRE3 からP
RE0 の1つを選択して線路TNTを通して分岐目標バ
ッファ入出力論理69に接続し、これから適当な分岐予
測が行われることになる。本発明のこの実施例では、マ
ルチプレクサ68は範囲レジスタ装置75によって発生
された線路IN/OUT上の信号に応答してかつ線路U
/S上の信号に従って制御され、線路U/S上の信号
は、この例では、x86アーキテクチャに従って構成さ
れている、マイクロプロセッサ10のコード・セグメン
トCSレジスタに含まれた現特権レベルCPL(cur
ret plivilege level)の状態に相
当する。次の説明から明らかなように、マルチプレクサ
68は、分岐命令が発するプログラムの型式又は種類に
従って、分岐予測を行うのに使用される線路の適当な集
合PRE3 からPRE0 を選択する。これについて説明
する。
【0044】x86アーキテクチャに従って、マイクロ
プロセッサ10によって実行されるプログラムは、核
(kernel)(最高特権)から応用(最低特権)ま
での異なる特権レベルに従って分類されてよい。このよ
うなものとして、個々の命令がメモリの部分に駐在し、
これらに対するアクセスが種々の特権レベルに従って保
護される。この動作は、或る決まったプログラム及びサ
ブルーチンが多重タスキング環境内で動作する多重応用
プログラムによって共用されるのを可能にする。メモリ
のこれらの部分は、x86アーキテクチャのメモリ・ペ
ージング保護機構内でユーザ・レベル及びスーパバイザ
・レベルと称される。ユーザ保護レベル(CPL=3)
は応用プログラムを記憶しているメモリ位置に割り当て
られるに対して、スーパバイザ保護レベル(CPL=0
から2)はオペレーティング・システム拡張、ドライ
バ、及び核を駐在させているメモリ位置に割り当てられ
る。したがって、線路U/S上の信号は、この例によれ
ば、コード・セグメントCS内の現特権レベルの値に基
づいており、かつ現分岐命令を含むプログラムの特権レ
ベルを表示する。
【0045】もちろん、現分岐命令と関連するプログラ
ムの型式は、x86アーキテクチャ内の現特権レベルに
相当する多重信号線路を経由するか、又は他のアーキテ
クチャに従うマイクロプロセッサ内の信号の他の型式に
よるかのような、他の方法で表示されてよい。いずれに
しても、マルチプレクサ68は現プログラム型式に相当
する少なくとも1つの信号に従って制御され、ここで分
岐挙動は異なる型式のプログラムの分岐命令に対しては
異なることがある。本発明のこの好適実施例によれば、
分岐目標バッファ56及びパターン履歴テーブル53
は、応用プログラム内の分岐命令に対する分岐挙動の類
似性(命令はユーザ・レベル・メモリに駐在する)、オ
ペレーティング・システムでの分岐命令に対する分岐挙
動の類似性(命令はスーパバイザ・レベル・メモリに駐
在する)、及びこれらどちらかのレベルの共用ルーチン
内の命令に対する分岐挙動の類似性と一緒に、これら異
なる型式のプログラム内の分岐命令間の分岐挙動の非類
似性を利用して、実現される。これは、本発明のこの好
適実施例によれば、ユーザ・レベル分岐命令に関連した
使用にパターン履歴テーブル53の少なくとも1つを割
り当てかつスーパバイザ・レベル分岐命令に関連した使
用に他のパターン履歴テーブル53の少なくとも1つを
割り当てることによって、実現される。この実現によれ
ば、2つのパターン履歴テーブル53がユーザ・レベル
分岐命令に割り当てられ、かつ他の2つのパターン履歴
テーブル53がスーパバイザ分岐命令に割り当てられ
る。本発明のこの実施例では、このような制御を実施す
るために線路U/S上の信号がマルチプレクサ68の制
御入力の1つに供給される。
【0046】本発明のこの実施例によれば、パターン履
歴テーブル53のうちの適当な1つの選択はまた、その
命令がメモリ・アドレスのユーザ定義可能範囲内に現れ
るかどうかに従って行われてよく、ここでは、特定の応
用又はサブルーチンがその同じ(例えば、ユーザ・レベ
ル又はスーパバイザ・レベル)型式の他のプログラムと
明確に異なる分岐挙動を有することが知られている。例
えば、上に参照したカルダ−及びグルンワルドの論文に
説明されたように、メモリの特定領域に位置しているラ
イブラリ・ルーチンは、他の型式のプログラムと異なる
分岐挙動を有することが観察されている。本発明のこの
実施例によれば、範囲レジスタ装置75が備わり、分岐
目標バッファ56に供給されかつ分岐予測を行いつつあ
る分岐命令の取出しアドレスがユーザ定義された窓内に
あるかどうか判定する。この判定の結果は、図3に示さ
れたように、線路IN/OUTを通してマルチプレクサ
68に供給される。
【0047】範囲レジスタ装置75は、ユーザ範囲レジ
スタ77u 及びスーパバイザ範囲レジスタ77s を含
み、これらの各々はメモリ・アドレスを書き込まれてよ
い。それゆえ、ユーザ範囲レジスタ77u は、ユーザ範
囲最小アドレス値及びユーザ範囲最大アドレス値を記憶
する。同様に、スーパバイザ範囲レジスタ77s は、ス
ーパバイザ範囲最小アドレス値及びスーパバイザ範囲最
大アドレス値を記憶する。これらの範囲レジスタ77
は、プログラマによる制御の下で、書込み可能レジスタ
である。例えば、範囲レジスタ77は、オペレーティン
グ・システムの既知のメモリ・マップ特性に従ってユー
ザ・レベル・プログラムを介して活性化することもで
き、又は、代わりに、分岐挙動がその特権レベルの他の
プログラムと異なることが知られている各型式の特定プ
ログラムの上下限を書き込まれてよい。ユーザ範囲レジ
スタ77u の内容は比較器78u の2つの入力に供給さ
れ、これと同様に取出しアドレスFA(又はその少なく
とも部分)が比較器78u の入力に供給される。同様
に、スーパバイザ範囲レジスタ77s の内容及び取出し
アドレスFA(又は、やはりその部分)が比較器78s
の入力に供給される。比較器78u 、78s は各々、取
出しアドレスFAの値とそれらのそれぞれの範囲レジス
タ77u 、77s の内容とをそれぞれ比較し、かつ取出
しアドレスが相当する範囲レジスタ77u 、77s によ
って表示されたメモリ・アドレス範囲の内又は外にある
かどうかに相当する信号をこれらの比較器の出力に発生
する。比較器78u 、77s の出力はマルチプレクサ7
9に供給され、後者は線路U/Sの状態によって選択さ
れた比較器78u 、78s の1つの出力に相当する信号
をその線路IN/OUT上に供給する。ユーザ・レベル
・メモリに関する取出しに対して、線路U/Sはマルチ
プレクサ79を制御して比較器78u の出力を線路IN
/OUTへ供給させる。スーパバイザ・レベル・メモリ
に関する取出しに対して、線路U/Sはマルチプレクサ
79を制御して比較器78s の出力を線路IN/OUT
へ供給させる。線路IN/OUTは、マルチプレクサ6
8の第2制御入力に接続され、現アドレスの分岐予測に
使用されるパターン履歴テーブル53のうちの適当な1
つの選択を助援する。
【0048】本発明の好適実施例に従ってのマルチプレ
クサ68によるパターン履歴テーブル(PHT)533
から530 の選択の真理表の例を表1に示す。
【0049】
【表1】
【0050】上に挙げたように、ユーザ・レベル・プロ
グラムに対する範囲レジスタ窓は範囲レジスタ77u の
内容によって指定されるのに対して、スーパバイザ・レ
ベル・プログラムに対する範囲レジスタ窓は範囲レジス
タ77s の内容によって指定される。かくして、ユーザ
・レベル・プログラム及びスーパバイザ・レベル・プロ
グラムの各々に対するプログラム型式の2つの選択が本
発明の好適実施例によれば分岐予測にとって利用可能で
ある。
【0051】上に挙げたように、マルチプレクサ68の
出力は、線路TNTを通して分岐目標バッファ入出力論
理69に供給される。分岐目標バッファ入出力論理69
は、これに供給される線路TNT上の予測コードが予測
された採用分岐(predicted−taken b
ranch)を表示する場合、分岐目標バッファ内の現
エントリ63の目標フィールドTARGET部分に相当
する有効分岐目標アドレスを供給する。分岐目標バッフ
ァ入出力論理69はまた、線路ATRを通して命令バッ
ファ及び制御装置60に、現命令についての分岐予測を
表示する。更に、分岐目標バッファ入出力論理69は、
実行装置から線路NEWNを通して新たに出会う分岐命
令についての適当なタグ、目標、オフセット、型式、及
び履歴情報を受け取り、かつ、従来のように、この情報
を選択されたエントリ63に書き込む。技術上知られた
ように、LRU(最低使用頻度)ビットの類のような制
御ビットが、新命令についての情報を書き込まれること
になるエントリ63の選択に使用される。
【0052】分岐目標バッファ56はまた更新論理70
を含み、この論理は、実行装置(例えば、ALU42)
からバスUPDを通して、先に予測された分岐命令の結
果を表示する信号を受け取る。更新論理70は、関連し
た分岐が成功した予測か又は誤り予測されたかに従って
分岐目標バッファ56内のエントリ63の内容を更新す
る電子回路として従来のように構成される。更に、パタ
ーン履歴テーブル53が適応性質を有することを考える
ならば、更新論理70はまたパターン履歴テーブル53
への線路PHUを通して、実行された分岐命令の予測の
結果に従って予測コードエントリPRDの内容を、従来
のように、更新する。しかしながら、本発明の好適実施
例によれば、更新論理70によって発生された線路PH
U上の信号は、完了した分岐に対して更新しようとする
多数パターン履歴テーブル53のうちの適当な1つを選
択することになる。パターン履歴テーブルの適応更新
は、例えば、上に参照したイェー及びパットの論文に説
明されたように、技術上知られている。
【0053】本発明の好適実施例による多数大域パター
ン履歴テーブル53と組合わせての分岐目標バッファ5
6の動作を図3に関して説明する。もちろん、分岐目標
バッファ56は、論理取出しアドレスFAによって取り
出される非分岐命令に対しては動作可能でない。最近出
会っていない(かつしたがってそのときに分岐命令に割
り当てられた分岐目標バッファ56内に有効エントリ6
3を有さない)分岐命令に対しては、セレクタ61は、
エントリ63のタグ・フィールドTAGのどれにも符合
するタグを見付けることはなく、かつ線路ATRを通し
て命令バッファ及び制御装置60へミス(miss)信
号又は「フォール・スルー(fall−throug
h)」信号を返すことになる。この場合、有効分岐目標
アドレスはバスBR TRGを通してマルチプレクサ5
7に供給されず、マルチプレクサ52は次の論理取出し
アドレスFAに対する他のソース(典型的に取出しポイ
ンタ50)を選択することになる。この分岐命令を実行
段が完遂すると、分岐目標バッファ56は、従来のよう
に、分岐目標バッファ入出力論理69によってこれに供
給された情報を使用して、更新されることになり、その
結果、有効エントリ63がこの分岐命令に割り当てられ
る。
【0054】相当するエントリ63の標識TYPE部分
によって表示されるように、先に出会ったかつしたがっ
て分岐目標バッファ56内の相当するエントリ63を有
する(すなわち、取出しアドレスFAの部分がエントリ
63のタグ・フィールドTAGと符合する)無条件分岐
命令に対しては、従来のように、分岐目標バッファ56
は線路ATRを通して命令バッファ及び制御装置60に
「採用」予測を供給し、かつこのエントリ63の目標フ
ィールドTARGETからの目標アドレスをバスBR
TRGを通してマルチプレクサ57に供給し、次の命令
アドレスのソースとしてマルチプレクサ52の使用に供
することになる。やはりまた無条件分岐命令であるサブ
ルーチンRETURN命令の場合、従来のように、マル
チプレクサ57は、復帰アドレス・スタック55から線
路RAを通して適当な復帰アドレスを選択して、マルチ
プレクサ52に次の命令アドレスのソースとして供給す
る。
【0055】もし分岐目標バッファ56のセレクタ61
が、現取出しアドレスFAは有効エントリ63を有する
条件付き分岐命令に相当すると判定するならば、分岐目
標バッファ56はその有効エントリ63の分岐履歴フィ
ールドBHのkビットをパターン履歴テーブル533
ら530 の各々へ転送する。これらのkビットは、その
分岐命令に対するk極最近の予測に相当し、これらの予
測は実際の分岐結果のみを含むことがあるか、又はまだ
評価されていない推論的分岐予測をもまた含むことがあ
る。選択されたエントリ63の分岐履歴フィールドBH
からのkビットは、現分岐命令に対する現分岐パターン
と、普通、称される。本発明のこの好適実施例によれ
ば、パターン履歴テーブル533 から530 の各々内の
セレクタ67は、現分岐パターンに符合する適当な予測
コードエントリPRDを選択するためにこれらのkビッ
トをデコードし、かつ選択された予測コードエントリP
RDの内容を関連した出力線路の集合PRE3 からPR
0 を通してマルチプレクサ68へ転送する。各予測コ
ードエントリPRDは、好適には、採用、不採用、強採
用、及び強不採用なる4つの可能な予測状態の1つを表
示する2ビット・コードを含む。
【0056】他方、取出しアドレスFAの部分は、現分
岐命令がユーザ・レベル・コード又はスーパバイザ・レ
ベル・コードであるかどうか表示する線路U/S上の信
号と一緒に範囲レジスタ装置75へ転送される。取出し
アドレスFA信号は、比較器78u によってユーザ範囲
レジスタ77u の内容と比較され、かつ比較器78sに
よってスーパバイザ範囲レジスタ77s の内容と比較さ
れて、現取出しアドレスがこれらの内容によって指定さ
れたアドレス範囲内又は外にあるかどうか検出する。次
いで、線路U/Sの状態によって表示された比較器78
u 、78s のうちの1つの結果が、マルチプレクサ79
によって線路IN/OUTに供給される。線路IN/O
UTの状態及び線路U/Sの状態はまた、マルチプレク
サ68を制御して、出力線路の集合PRE3 からPRE
0 の1つを選択させて、線路TNTを経由して分岐目標
バッファ56の分岐目標バッファ入出力論理69に接続
させる。上に挙げたように、線路TNTは、好適には、
採用、不採用、強採用、及び強不採用予測状態の1つを
表示する2ビット・コードを伝達する。次いで、分岐目
標バッファ入出力論理69は、線路TNT上のコードに
基づいて予測を導出し、かつこの予測(「採用」又は
「不採用」)を線路ATRを通して命令バッファ及び制
御装置60へ転送する。もし予測が「採用」であるなら
ば、相当するエントリ63の目標フィールドTARGE
TがバスBR TRGを通して供給されて、マルチプレ
クサ57及び52によって次の論理取出しアドレスFA
として選択される。もし予測が「不採用」であるなら
ば、有効目標アドレスがバスBRTRGを通して供給さ
れず、かつマルチプレクサ52は、取り出される次の命
令に対するアドレスとして取出しポインタ50の増分さ
れた出力を選択するように制御される。予測の発生に続
いて、かつ分岐目標バッファ56がエントリ63の分岐
履歴フィールドBH内の推論的分岐履歴を記憶している
場合、更新論理70は、現命令に相当するエントリ63
内の分岐履歴フィールドBHを更新することになる。現
分岐命令についての予測情報と一緒に、その命令に対す
る識別情報、及び分岐目標バッファ56内及びその予測
の発生に使用された適当なパターン履歴テーブル53の
エントリについての識別情報がまた、パイプラインに沿
ってその命令と一緒に転送されることになる。これに代
えて、現命令に対する小標識がパイプラインに沿って転
送されてよく、ここでは、この標識は、分岐目標バッフ
ァ56及びパターン履歴テーブル53のうちの適当な1
つを更新するために使用されることになる取出し装置2
6内又はこれの近くの局所記憶内の位置を指す。
【0057】分岐命令の完遂の際、適当な実行装置が分
岐の実際の結果を線路UPDを通して更新論理70へ転
送することになる。次いで、更新論理70は、完遂され
た命令に相当する分岐目標バッファ56のエントリ63
内の分岐履歴フィールドBHに対して適当な信号を発生
して、相当する予測が正しいか又は正しくないか検査す
る。更に、更新論理70は、線路PHU(適正なパター
ン履歴テーブル53及びこれ内の適当なエントリPRD
を選択するために必要な信号を必然的に通す)を介し
て、分岐の実際結果に従ってパターン履歴テーブル53
のうちの適当な1つ内の適当な予測コードエントリPR
Dを更新する。
【0058】本発明の好適実施例の結果として、典型的
マイクロプロセッサ・プログラムに対する分岐予測率の
かなりの改善が施される。第一に、特定型式のプログラ
ムに対する分岐挙動の類似性を使用することによって、
パターン履歴テーブルが分岐目標バッファ内の全てのエ
ントリにとって利用可能にされるが、しかし特定型式の
命令に個々に割り当てられると云う利点がもたらされ
る。これによって、特定型式の命令に対する分岐予測
が、同じ分岐履歴パターンを有するがしかし異なる型式
のプログラムからの分岐命令の結果によって汚染されな
いことが保証される。分岐予測のこの改善は、好適に
は、プログラムの比較的少数の型式に対して、パターン
履歴テーブルの小寸法しか再生されないので、比較的妥
当なチップ面積費用で達成される。更に、分岐予測コー
ドがプログラム型式に従って分岐履歴に割り当てられる
(かつ分岐目標バッファエントリ毎に専用されない)と
云う理由から、新分岐命令との「コールド(col
d)」出会の際に、これと類似のプログラム内の命令に
よって発生された同じ分岐履歴に対するパターン履歴テ
ーブルからの予測コードを検索することができ、それゆ
え、新たに出会う分岐に対して比較的高信頼性の予測を
行うことができる。
【0059】本発明の実現には、特にパターン履歴テー
ブルを選択する方法には、種々の代替実施例が考えられ
る。図4は、本発明の代替実施例を示し、上述と類似の
機能を有するものは同一符号が付けてある。これについ
て説明する。
【0060】図4に示されたように、パターン履歴テー
ブル533 から530 が、前と同じように備わり、出力
線路の集合PRE3 からPRE0 の相当する対を通し
て、分岐目標バッファ56のエントリ63内の分岐履歴
フィールドBHのkビットに応答して、そのセレクタ6
7によって選択された予測コードエントリPRDの内容
を供給する。本発明のこの実施例における選択論理8
0’はマルチプレクサ68’を含み、このマルチプレク
サはその制御端子に供給される信号の制御の下に線路の
集合PRE3 からPRE0 の1つを選択する。
【0061】本発明のこの実施例によれば、マルチプレ
クサ68’に供給される制御信号は、現取出しアドレス
に相当するページ・テーブルエントリPTEi 内の2ビ
ットの内容に相当する。マイクロプロセッサ分野で周知
のようにかつ上に挙げたように、ページ・テーブルエン
トリは、論理アドレスから物理アドレスへのアドレス変
換を実施するために使用される。上に述べたように、マ
イクロプロセッサ10内で、主変換索引バッファ19は
ページ・テーブルエントリPTEのキャッシュとして働
き、これらのエントリの各々は現アドレスでマップされ
るページ・フレーム・アドレスを含むだけでなく、また
そのアドレスが指すメモリのページ・フレームに属する
技術上知られた或る決まった制御情報を含むことがあ
る。
【0062】図4の実施例では、ページ・テーブルエン
トリPTEi の2ビットは、その相当するメモリ・ペー
ジ・フレームから取り出される分岐命令に対するパター
ン履歴テーブル53のうちの適当な1つを選択するため
に使用されるコードを含む。例えば、従来のページ・テ
ーブルエントリは、オペレーティング・システムに利用
可能にされているビットを既に含んでいるか、又はそう
でなければ、予約される。これに代えて、マイクロプロ
セッサ10を、この情報に対するビットの追加の対を供
給するように構成することもできる。動作中、マイクロ
プロセッサ10を動作させるオペレーティング・システ
ムは、本発明のこの実施例によれば、多数のパターン履
歴テーブル53の利用性を理解し、かつパターン履歴テ
ーブル選択コード(すなわち、マルチプレクサ68’に
供給される制御信号の状態)をメモリがアクセスされる
に従ってページ・テーブルエントリPTEに書き込むこ
とになる。このようにして、分岐予測に使用される適当
なパターン履歴テーブルの直接アドレス指定を、オペレ
ーティング・システムによって行うこともできる。この
代替実施例によれば、範囲レジスタ装置75は必要でな
いことになる。
【0063】更に、図4の代替実施例では、適当なパタ
ーン履歴テーブルPHT53を選択するために、ページ
・テーブルエントリPTEi との組合わせで他の制御フ
ラグ及びビットを使用してよい。例えば、列挙すること
によってその内容が本明細書に組み入れられたペンティ
アムTM プロ・ファミリー・デベロッパのマニュアル、
巻3、オペレーティング・システム・ライタの案内(イ
ンテル社、1996)(PentiumTM Pro F
amily Developer’s Manual,
Volume 3: Operating Syste
m Writer’s Guide(Intel,19
96))の3−21から3−26ページに説明されたよ
うに、PENTIUM PROマイクロプロセッサのア
ーキテクチャに従うページ・テーブルエントリは大域
(ページ)ビットGを含み、このビットは、セットされ
るとき、変換索引バッファ(translation
loookaside buffer)がタスク・スイ
ッチの際にクリアされることになっていないことを表示
する。これが、いくつかのタスクによってアクセス可能
なメモリの共通ページの割当てを可能にする。例えば、
++言語でのプログラム用ライブラリ・サブルーチン
を、多数のC++タスクによってアクセスするために大域
メモリ・ページに記憶してよい。カルダー及びグルンワ
ルドの論文に関して上に挙げたように、ライブラリ・ル
ーチンは、他の型式のプログラムと異なる分岐挙動を有
することが観察されている。したがって、適当なパター
ン履歴テーブル53の選択に当たって、大域ビットがそ
れらのページ・テーブルエントリ内にこのようなビット
を有するマイクロプロセッサ内に有益に使用されると云
ってよい。
【0064】図5は、本発明の他の代替実施例を示す。
これについて説明する。本発明のこの実施例によれば、
出力線路の集合PRE3 からPRE0 が、やはり、分岐
目標バッファ56のエントリ63内の分岐履歴フィール
ドBHからのkビット分岐履歴に応答して、パターン履
歴テーブル533 から530 によって発生され、かつ選
択論理80”のマルチプレクサ68”の入力に供給され
る。しかしながら、本発明のこの実施例では、出力線路
の集合PRE3 からPRE0 上の適当な予測コードの選
択は、セグメント記述子DESC内に定義されたビット
PH0、PH1の対に応答して行われ、これらの記述子
は、x86アーキテクチャのマイクロプロセッサの被保
護モード動作中にセグメント・セレクタによって検索さ
れる大域記述子テーブル又は局所記述子テーブルのどち
らか内のエントリである。ビットPH0、PH1は、現
在定義されていない或る決まったビットであってよく、
又は、これに代えて、このセグメント記述子を拡張して
これらの追加ビットをパターン履歴テーブル53対する
選択コードとして使用するようにマイクロプロセッサ1
0を構成してよい。
【0065】図6は、本発明の他の代替実施例の構成及
び動作を示す。これについて説明する。本発明のこの実
施例によれば、マイクロプロセッサ10は、6つのパタ
ーン履歴テーブル535 から530 を備え、可能な分岐
挙動型式の広い範囲にわたって分岐予測を行う。パター
ン履歴テーブル53の各々は、上に述べたように、分岐
目標バッファ56によってこのテーブルに供給された分
岐履歴のkビットに応答して、出力線路の集合PREを
通して2ビット予測コードを供給する。本発明のこの実
施例によれば、出力線路の集合PRE5 からPRE0
8対がマルチプレクサ88に接続され、後者は、立ち代
わって、現分岐命令が駐在するプログラムの型式に基づ
いてセレクタ80’”内の組合わせ論理90によって発
生された3つの制御信号に応答して、所望のPRE対を
選択して線路TNTに供給する。3つの制御信号がマル
チプレクサ88に供給されることを考ると、もし望むな
らば、2つの追加のパターン履歴テーブル537 及び5
6 (図6に破線で示される)を含ませることもでき
る。
【0066】本発明のこの実施例によれば、ページ・テ
ーブルエントリPTEi 内の大域ビットG(上に述べた
ように、そのページエントリがタスク・スイッチの際に
主変換索引バッファ19からクリアされることになって
いるかどうか表示する)が組合わせ論理90の1つの入
力へ転送され、上に述べたようにコード・セグメントC
Sからの線路U/S上の信号も同様に転送される。組合
わせ論理90の第3入力は、セグメント記述子DESC
内に定義されたプログラムされたパターン履歴テーブル
選択コードPH0の状態を受け取り、記述子DESC
は、上に述べたように、x86アーキテクチャのマイク
ロプロセッサの被保護モード動作中セグメント・セレク
タによって検索される大域記述子テーブル又は局所記述
子テーブルのどちらか内のエントリである。
【0067】動作中、組合わせ論理90は、パターン履
歴テーブル535 から530 のうちのどれが分岐予測を
制御することになっているかを、相当するページ・テー
ブルエントリPTEi 内の大域ビットG及びセグメント
記述子DESC内のプログラムされたパターン履歴テー
ブル選択ビットPH0の状態と組合わせての線路U/S
上の信号の状態に従って、選択する。本発明のこの代替
実施例によれば、プログラムされたパターン履歴テーブ
ル選択ビットPH0の状態は、スーパバイザ・レベル・
コードに対しては不適当であるが、ユーザ・レベル・コ
ードに対するパターン履歴テーブル(PHT)53の選
択については決定力を有する。本発明のこの実施例によ
る選択コーディングの例を表2に示す。
【0068】
【表2】
【0069】したがって、本発明のこの代替実施例によ
れば、分岐予測は、スーパバイザ・レベル・コードが大
域メモリに含まれているか否かに従って、又はユーザ・
レベル・コードが大域メモリに含まれているか否かかつ
プログラマの制御下にあるかどうかに従って行われてよ
い。したがって、本発明のこの実施例によれば、プログ
ラムの種々の型式に対する分岐挙動に依存して精密細分
性(fine granularity)が提供される
と云ってよい。
【0070】図7は、本発明の他の実施例の構成及び動
作を示す。これについて説明する。本発明のこの実施例
によれば、大域分岐履歴(global branch
history; GBH)バッファ156が、取出
し装置26が出会う全ての条件付き分岐命令の分岐履歴
を記憶しかつ維持するために使用される。上に参照した
イェー及びパットの論文に説明されたように、大域分岐
履歴バッファ156は、実行される分岐命令の一致性に
かかわらず分岐履歴を維持する。このようなものとし
て、大域分岐履歴バッファ156は、分岐命令のアドレ
ス・タグが分岐予測又は分岐履歴の更新のどちらかに無
関係であるので、かつ分岐の目標アドレスが命令と一緒
に維持されるので、アドレス・タグ・フィールドTAG
又は目標フィールドTARGETを含まなくて済む。
【0071】本発明のこの実施例ではまた、多数のパタ
ーン履歴テーブル533 から530が個々の分岐予測コ
ードPRDを記憶し、これらのコードは大域分岐履歴バ
ッファ156に記憶された分岐履歴のk極最近ビットに
従って選択可能である。本発明のこの実施例によれば、
パターン履歴テーブル53のうちの適当な1つの選択は
種々の制御信号に応答して選択論理80IVによって行わ
れる。選択論理80IVは、前のように、コード・セグメ
ントCSから導出された線路U/S上の信号と一緒に、
範囲レジスタ装置75(図示されていない)からの線路
IN/OUT上の信号のような他の制御信号及び命令用
記述子からの大域ビットGを受け取る。更に、選択論理
80IVはまた、どの分岐予測を行うかに応答して、命令
に対する取出しアドレスのmビットを(線路TAGを通
して)受け取る。もちろん、本発明のこの好適実施例に
より選択論理80IVに供給される種々の信号はただ例と
して示されており、現分岐命令を含むプログラムの型式
を表示するこれより多い、少ない、又は異なる信号が使
用されてよい。いずれにしても、選択論理80IVは、分
岐予測を行うのに使用される多数のパターン履歴テーブ
ル53の1つを選択する選択信号を発生する。
【0072】このようなものとして、パターン履歴テー
ブル53は、実質的に、単一メガテーブル(megat
able)に構成された多数のパターン履歴テーブル5
3として、図7に示されている。もちろん、パターン履
歴テーブル53の物理的構成は、この図に示されたもの
と異なってよく、例えば、互いにインタリーブされたパ
ターン履歴テーブル53の種々のものからの予測コード
エントリPRDを有する構成であってよい。
【0073】動作中、現取出しアドレスFAが条件付き
分岐命令に相当することを取出し装置26が検出する
と、その条件付き分岐命令に対する相当する制御信号が
選択論理80IVの入力に供給され、この論理は、立ち代
わって、受け取った制御信号の論理組合わせに従ってパ
ターン履歴テーブル53のセレクタ67’に選択信号を
供給する。更に、大域分岐履歴バッファ156が大域分
岐履歴のk極最近ビットをセレクタ67’に供給する。
それゆえ、本発明のこの実施例では、セレクタ67’
は、選択論理80IVによって選択されたパターン履歴テ
ーブル533 の1つから、分岐履歴のkビットに従って
適当な予測コードエントリPRDを選択し、かつ予測コ
ードを線路TNT上へ供給し、このコードは大域分岐履
歴入出力論理169へ伝達される。大域分岐履歴入出力
論理169は、立ち代わって、大域分岐履歴バッファ1
56及びパターン履歴テーブル53の選択された1つに
よって発生された分岐予測に基づいて、線路ATR上に
信号を発生し、この信号を命令バッファ及び制御装置6
0(この図に示されていない)又は次の取出しアドレス
の判定に使用される他の適当な論理へ供給する。
【0074】前のように、分岐目標バッファ/パターン
履歴テーブル更新論理70は、実行段からバスUPDを
通して更新情報を受け取り、かつ、従来のように、分岐
命令の実行の際に得られた実際の分岐結果で以て、大域
分岐履歴バッファ156及びパターン履歴テーブル53
のうちの適当な1つ内の適当な予測コードエントリPR
Dの両方を更新する。
【0075】図7に示された本発明の実施例に例示され
た制御信号及びアドレス信号の種々の組合わせを、もち
ろん、もし望むならば、図3から図7に関して以上に説
明されたように、多数のエントリ分岐目標バッファ構成
内の多数のパターン履歴テーブルの1つを選択するのに
使用してよい。
【0076】図7に例証として示された本発明のこの実
施例によれば、分岐命令を含むプログラムの型式に従っ
て行われる分岐予測の利益は、上に参照したイェー及び
パットの論文に説明されたような、簡単な分岐予測電子
回路に関連しても得られる。このような分岐予測は、分
岐挙動が各個々の命令の分岐履歴に依存するよりも分岐
命令を含むプログラムの型式に多く依存するアーキテク
チャにおいて特に適当であろう。更に、本発明がここに
説明された以外の他の分岐予測構成に有益に応用される
ことが、もちろん、更に考えられる。
【0077】それゆえ、本発明のこれら種々の代替実施
例の全てに従って、種々の型式の分岐命令に対して、別
々に分岐履歴情報に基づいて予測コードを発生すること
によって、改善された分岐予測率が得られる。したがっ
て、分岐予測は、同じ分岐履歴を有するように起こる他
のタスクからの分岐命令の相違する分岐挙動によって汚
染されず、しかしこれに伴って毎アドレス・パターン履
歴テーブルによって必要とされるようなチップ面積にば
く大な投資を必要としない。パターン履歴テーブルを定
義する上での高い融通性が本発明の種々の実施例によっ
てまた得られる。
【0078】本発明はその好適実施例で説明されたが、
これらの実施例の修正実施例及び代替実施例、すなわ
ち、本発明の利益及び利点をもたらすこのような修正実
施例及び代替施例は、本明細書及びその図面を参照した
ならば技術の習熟者に明らかであると、もちろん、考え
られる。このような修正実施例及び代替実施例は、前記
の特許請求の範囲に包含されると考えられる。
【0079】以上の説明に関して更に以下の項を開示す
る。
【0080】(1) 複数のプログラム型式に従って命
令を実行する実行装置と、命令の命令コードを記憶する
メモリと、前記実行装置による実行のための命令コード
を検索するために前記メモリをアドレス指定する取出し
装置であって、前記実行装置によって実行された分岐命
令の一連の結果を記憶する分岐履歴回路と、前記分岐履
歴回路に結合された複数のパターン履歴テーブルであっ
て、各前記テーブルが複数の検索される予測コードエン
トリを有し、かつ各前記テーブルが前記分岐履歴回路か
らの分岐履歴フィールドに相当する予測コードエントリ
の1つの内容を供給する出力を有する前記複数のパター
ン履歴テーブルと、取り出された命令に対するアドレス
を選択するアドレス指定回路と、プログラム型式標識を
受け取るように結合された選択論理であって、前記アド
レス指定回路へ前記プログラム型式標識に相当する前記
複数のパターン履歴テーブルの1つの出力を選択的に転
送する前記選択論理とを含む前記取出し装置とを包含す
るマイクロプロセッサ。
【0081】(2) 第1項記載のマイクロプロセッサ
において、前記分岐履歴回路が大域分岐履歴バッファを
含むマイクロプロセッサ。
【0082】(3) 第1項記載のマイクロプロセッサ
において、前記分岐履歴回路が、複数のエントリを含む
分岐目標バッファであって、各エントリ目が関連した分
岐命令の分岐アドレスに相当するタグ・フィールドと前
記関連した分岐命令の一連の先行分岐を記憶するための
分岐履歴フィールドとを有する前記分岐目標バッファを
含むマイクロプロセッサ。
【0083】(4) 第3項記載のマイクロプロセッサ
において、前記分岐目標バッファ内の前記複数のエント
リが分岐目標アドレスを記憶するための目標フィールド
を更に含み、及び前記アドレス指定回路が、分岐採用予
測に相当する出力を転送する前記選択論理に応答して、
前記関連した分岐命令に相当する前記エントリの前記分
岐目標アドレスに相当するアドレスを選択するマイクロ
プロセッサ。
【0084】(5) 第1項記載のマイクロプロセッサ
において、分岐命令の前記プログラム型式標識が前記分
岐命令を含むプログラムに相当する特権レベル標識を含
むマイクロプロセッサ。
【0085】(6) 第5項記載のマイクロプロセッサ
において、前記特権レベル標識が前記分岐命令に相当す
るコード・セグメント・レジスタのビットを含むマイク
ロプロセッサ。
【0086】(7) 第1項記載のマイクロプロセッサ
において、分岐命令の前記プログラム型式標識が前記分
岐命令を含むメモリの部分に対するページ・テーブルエ
ントリの少なくとも1ビットを含むマイクロプロセッ
サ。
【0087】(8) 第1項記載のマイクロプロセッサ
において、分岐命令の前記プログラム型式標識が前記分
岐命令を含むメモリの部分に対するセグメント記述子の
少なくとも1ビットを含むマイクロプロセッサ。
【0088】(9) 第1項記載のマイクロプロセッサ
において、分岐命令の前記プログラム型式標識が前記分
岐命令の命令アドレスの少なくとも1ビットを含むマイ
クロプロセッサ。
【0089】(10) 第1項記載のマイクロプロセッ
サにおいて、前記選択論理が、前記分岐履歴回路に転送
する前記複数のパターン履歴テーブルの1つを選択する
ために、前記複数のパターン履歴テーブルの各々からの
出力を受け取る入力と前記分岐履歴回路に結合された出
力とを有するマルチプレクサを含むマイクロプロセッ
サ。
【0090】(11) 第10項記載のマイクロプロセ
ッサにおいて、前記分岐命令に対するプログラム型式標
識が前記分岐命令を含むプログラムに相当する特権レベ
ル標識を含み、及び前記選択論理の前記マルチプレクサ
が前記特権レベル標識を受け取るように結合された制御
入力を有するマイクロプロセッサ。
【0091】(12) 第11項記載のマイクロプロセ
ッサにおいて、前記選択論理が、前記特権レベル標識の
論理組合わせと前記分岐命令を含むメモリの部分に対す
るページ・テーブルエントリの大域ビットとに応答して
前記マルチプレクサへの制御信号を発生する論理を更に
含むマイクロプロセッサ。
【0092】(13) 第1項記載のマイクロプロセッ
サにおいて、前記選択論理が、それぞれ、最大アドレス
値、最小アドレス値を記憶するための範囲レジスタの第
1対と、分岐命令の命令アドレスの部分を前記範囲レジ
スタの第1対の内容と比較する第1比較器とを含み、前
記プログラム型式標識が前記第1比較器によって遂行さ
れた比較の結果を含むマイクロプロセッサ。
【0093】(14) 第13項記載のマイクロプロセ
ッサにおいて、前記選択論理が、それぞれ、最大アドレ
ス値、最小アドレス値を記憶するための範囲レジスタの
第2対と、前記分岐命令の命令アドレスの部分を前記範
囲レジスタの第2対の内容と比較する第2比較器と、前
記分岐命令を含むプログラムに相当する特権レベル標識
の状態に応答して選択された、前記第1比較器と前記第
2比較器のうちの選択された1つの結果に相当する入出
力信号を発生する論理とを更に含むマイクロプロセッ
サ。
【0094】(15) 第14項記載のマイクロプロセ
ッサにおいて、前記プログラム型式標識が前記入出力信
号の状態と前記特権レベル標識との組合わせを含むマイ
クロプロセッサ。
【0095】(16) 第15項記載のマイクロプロセ
ッサにおいて、前記選択論理が、前記複数のパターン履
歴テーブルの各々からの出力を受け取る入力と、前記分
岐目標バッファに結合された出力と、前記入出力信号と
前記特権レベル標識とを受け取るように結合された制御
入力とを有するマルチプレクサを含むマイクロプロセッ
サ。
【0096】(17) マイクロプロセッサ命令のプロ
グラム内の分岐命令を推論的に実行するパイプライン・
マイクロプロセッサを動作させる方法であって、前記パ
イプライン・マイクロプロセッサの取出し段で分岐命令
を検出するステップと前記検出するステップに応答し
て、分岐履歴フィールドの少なくとも部分を検索するス
テップと、前記分岐命令に相当するプログラム型式を判
定するステップと、前記プログラム型式に従って選択さ
れた複数のパターン履歴テーブルの1つから前記分岐履
歴フィールドの検索された部分に相当する分岐予測を発
生するステップとを包含する方法。
【0097】(18) 第17項記載の方法であって、
前記検出するステップに応答して、分岐目標バッファに
命令アドレスを供給するステップであって、前記分岐目
標バッファが複数のエントリを含み、各エントリが命令
識別子を記憶するためのタグ・フィールドと、分岐結果
を記憶するための分岐履歴フィールドとを有する前記命
令アドレスを供給するステップを更に包含し、前記検索
するステップが前記複数のエントリの1つのタグ・フィ
ールドに符合する前記供給された分岐命令アドレスの部
分に応答して遂行される方法。
【0098】(19) 第17項記載の方法において、
前記判定するステップが、前記検出された分岐命令を含
むプログラムに相当する特権レベル標識の状態を問い合
わせるステップを含む方法。
【0099】(20) 第19項記載の方法において、
前記特権レベル標識が前記検出された分岐命令に相当す
るコード・セグメント・レジスタのビットを含む方法。
【0100】(21) 第17項記載の方法において、
前記判定するステップが、前記検出された分岐命令を含
むメモリの部分に対するページ・テーブルエントリの少
なくとも1ビットを問い合わせるステップを含む方法。
【0101】(22) 第17項記載の方法において、
前記判定するステップが、前記検出された分岐命令を含
むメモリの部分に対するセグメント記述子の少なくとも
1ビットを問い合わせるステップを含む方法。
【0102】(23) 第17項記載の方法において、
前記判定するステップが、前記検出された分岐命令のア
ドレスが範囲レジスタの第1対の内容によって指定され
た範囲内にあるかどうか判定するために前記検出された
分岐命令のアドレスを前記範囲レジスタの第1対の内容
と比較するステップを含む方法。
【0103】(24) 第23項記載の方法において、
前記判定するステップが、前記検出された分岐命令のア
ドレスが範囲レジスタの複数の対の内容によって指定さ
れた範囲内にあるかどうか判定するために前記検出され
た分岐命令のアドレスを前記範囲レジスタの複数の対の
内容と比較するステップと、前記検出された分岐命令を
含むプログラムに相当する特権レベル標識の状態を問い
合わせるステップと、前記特権レベル標識の状態と前記
特権レベル標識の状態に応答して選択された前記範囲レ
ジスタの複数の対の1つによって遂行された前記比較す
るステップの結果とに応答して前記複数のパターン履歴
テーブルの1つを選択するステップとを更に含む方法。
【0104】(25) 分岐命令を含むプログラムの型
式に応答して分岐予測を実施するマイクロプロセッサ及
び該マイクロプロセッサを含むシステムが開示される。
取出し装置26は、分岐目標バッファ56及び複数のパ
ターン履歴テーブル53を含む。選択論理80は、各分
岐命令毎に前記命令を含むプログラムの型式を表示する
信号を受け取り、かつ、前記命令のアドレスに相当する
分岐目標バッファ56のエントリ63内の分岐履歴フィ
ールドBHの部分に応答して、予測コードを発生するの
に使用される前記パターン履歴テーブル53の1つを選
択する。前記パターン履歴テーブル53を選択するのに
使用される信号の開示された例は、前記命令の特権レベ
ル(例えば、ユーザ・レベル又はスーパバイザ・レベ
ル)の表示(U/S)を含む。前記命令がアドレス範囲
内にあるかどうか判定する範囲レジスタ装置75がま
た、前記パターン履歴テーブル53の選択に使用される
としてまた開示される。
【図面の簡単な説明】
【図1】本発明の好適実施例により構成されたマイクロ
プロセッサ及びシステムのブロック電気回路図。
【図2】本発明の好適実施例による図1のマイクロプロ
セッサ内の取出し装置のブロック電気回路図。
【図3】本発明の第1好適実施例による図1のマイクロ
プロセッサ内の分岐目標バッファ、パターン履歴テーブ
ル、及び関連した電子回路の概略ブロック電気回路図。
【図4】本発明の第2好適実施例による図1のマイクロ
プロセッサ内の分岐目標バッファ、パターン履歴テーブ
ル、及び関連した電子回路の概略ブロック電気回路図。
【図5】本発明の第3好適実施例による図1のマイクロ
プロセッサ内の分岐目標バッファ、パターン履歴テーブ
ル、及び関連した電子回路の概略ブロック電気回路図。
【図6】本発明の第4好適実施例による図1のマイクロ
プロセッサ内の分岐目標バッファ、パターン履歴テーブ
ル、及び関連した電子回路の概略ブロック電気回路図。
【図7】本発明の第5好適実施例による図1のマイクロ
プロセッサ内の分岐目標バッファ、パターン履歴テーブ
ル、及び関連した電子回路の概略ブロック電気回路図。
【符号の説明】
10 マイクロプロセッサ 11 レベル2キャッシュ 16i レベル1命令キャッシュ 19 主変換索引バッファ 22 命令マイクロ変換索引バッファ 26 取出し装置 31 浮動小数点装置 39 レジスタ・ファイル 400 、401 ロード/ストア装置 420 、421 ALU 48 マイクロシーケンサ 50 取出しポインタ 51 増分器 52 マルチプレクサ 53、537 〜530 パターン履歴テーブル 55 復帰アドレス・スタック 56 分岐目標バッファ 57 マルチプレクサ 58 マルチプレクサ 60 命令バッファ及び制御装置 61 セレクタ 63 エントリ 67、67’ セレクタ 68 マルチプレクサ 69 分岐目標バッファ入出力論理 70 更新論理 75 範囲レジスタ装置 77s スーパバイザ範囲レジスタ 77u ユーザ範囲レジスタ 78s 、78u 比較器 79 マルチプレクサ 80、80’〜80IV 選択論理 88 マルチプレクサ 90 組合わせ論理 156 大域分岐履歴バッファ 300 システム 305 主メモリ BH 分岐履歴フィールド DESC セグメント記述子 FA 論理取出しアドレス G 大域ビット IA 命令線路アドレス PRD 予測エントリ PTEi ページ・テーブルエントリ TAG タグ・フィールド TARGET 目標フィールド TYPE 標識

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 複数のプログラム型式に従って命令を実
    行する実行装置と、 命令の命令コードを記憶するメモリと、 前記実行装置による実行のための命令コードを検索する
    ために前記メモリをアドレス指定する取出し装置であっ
    て、 前記実行装置によって実行された分岐命令の一連の結果
    を記憶する分岐履歴回路と、 前記分岐履歴回路に結合された複数のパターン履歴テー
    ブルであって、各前記テーブルが複数の検索される予測
    コードエントリを有し、かつ各前記テーブルが前記分岐
    履歴回路からの分岐履歴フィールドに相当する予測コー
    ドエントリの1つの内容を供給する出力を有する前記複
    数のパターン履歴テーブルと、 取り出された命令に対するアドレスを選択するアドレス
    指定回路と、 プログラム型式標識を受け取るように結合された選択論
    理であって、前記アドレス指定回路へ前記プログラム型
    式標識に相当する前記複数のパターン履歴テーブルの1
    つの出力を選択的に転送する前記選択論理とを含む前記
    取出し装置とを包含するマイクロプロセッサ。
  2. 【請求項2】 マイクロプロセッサ命令のプログラム内
    の分岐命令を推論的に実行するパイプライン・マイクロ
    プロセッサを動作させる方法であって、 前記パイプライン・マイクロプロセッサの取出し段で分
    岐命令を検出するステップと前記検出するステップに応
    答して、分岐履歴フィールドの少なくとも部分を検索す
    るステップと、 前記分岐命令に相当するプログラム型式を判定するステ
    ップと、 前記プログラム型式に従って選択された複数のパターン
    履歴テーブルの1つから前記分岐履歴フィールドの検索
    された部分に相当する分岐予測を発生するステップとを
    包含する方法。
JP9339932A 1996-12-10 1997-12-10 改善された分岐予測機能を有するマイクロプロセッサ及びその動作方法 Pending JPH10177481A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US3254996P 1996-12-10 1996-12-10
US032549 1996-12-10

Publications (1)

Publication Number Publication Date
JPH10177481A true JPH10177481A (ja) 1998-06-30

Family

ID=21865530

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9339932A Pending JPH10177481A (ja) 1996-12-10 1997-12-10 改善された分岐予測機能を有するマイクロプロセッサ及びその動作方法

Country Status (4)

Country Link
US (1) US5935241A (ja)
EP (1) EP0848323B1 (ja)
JP (1) JPH10177481A (ja)
DE (1) DE69727773T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013250593A (ja) * 2012-05-30 2013-12-12 Renesas Electronics Corp 半導体装置
JP2016525252A (ja) * 2014-01-27 2016-08-22 ヴィア アライアンス セミコンダクター カンパニー リミテッド オペレーティング・システム・ルーチンのための予測履歴ストレージのフラクショナルな使用

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6292879B1 (en) * 1995-10-25 2001-09-18 Anthony S. Fong Method and apparatus to specify access control list and cache enabling and cache coherency requirement enabling on individual operands of an instruction of a computer
US6108775A (en) * 1996-12-30 2000-08-22 Texas Instruments Incorporated Dynamically loadable pattern history tables in a multi-task microprocessor
US6175898B1 (en) * 1997-06-23 2001-01-16 Sun Microsystems, Inc. Method for prefetching data using a micro-TLB
US6490658B1 (en) * 1997-06-23 2002-12-03 Sun Microsystems, Inc. Data prefetch technique using prefetch cache, micro-TLB, and history file
US6253276B1 (en) * 1998-06-30 2001-06-26 Micron Technology, Inc. Apparatus for adaptive decoding of memory addresses
US6260121B1 (en) * 1998-06-30 2001-07-10 Micron Technology, Inc. Method for adaptive decoding of memory addresses
US6223280B1 (en) 1998-07-16 2001-04-24 Advanced Micro Devices, Inc. Method and circuit for preloading prediction circuits in microprocessors
US6233678B1 (en) * 1998-11-05 2001-05-15 Hewlett-Packard Company Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data
US6272623B1 (en) * 1999-01-25 2001-08-07 Sun Microsystems, Inc. Methods and apparatus for branch prediction using hybrid history with index sharing
JP2001067335A (ja) * 1999-06-23 2001-03-16 Denso Corp マイクロコンピュータ
US6351796B1 (en) * 2000-02-22 2002-02-26 Hewlett-Packard Company Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
US6470438B1 (en) * 2000-02-22 2002-10-22 Hewlett-Packard Company Methods and apparatus for reducing false hits in a non-tagged, n-way cache
US7000096B1 (en) * 2000-08-03 2006-02-14 International Business Machines Corporation Branch prediction circuits and methods and systems using the same
US6990571B2 (en) * 2001-04-25 2006-01-24 Intel Corporation Method for memory optimization in a digital signal processor
JP4027620B2 (ja) * 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US7024663B2 (en) 2002-07-10 2006-04-04 Micron Technology, Inc. Method and system for generating object code to facilitate predictive memory retrieval
US6954836B2 (en) 2002-07-11 2005-10-11 Micron Technology, Inc. System and method for processor with predictive memory retrieval assist
US7370183B2 (en) * 2003-04-11 2008-05-06 Board Of Regents, The University Of Texas System Branch predictor comprising a split branch history shift register
US7752426B2 (en) * 2004-08-30 2010-07-06 Texas Instruments Incorporated Processes, circuits, devices, and systems for branch prediction and other processor improvements
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7890738B2 (en) * 2005-01-20 2011-02-15 International Business Machines Corporation Method and logical apparatus for managing processing system resource use for speculative execution
US7447885B2 (en) * 2005-04-20 2008-11-04 Arm Limited Reading prediction outcomes within a branch prediction mechanism
JP2007052481A (ja) * 2005-08-15 2007-03-01 Matsushita Electric Ind Co Ltd Icカード用lsi
US20070061554A1 (en) * 2005-09-09 2007-03-15 Lsi Logic Corporation Branch predictor for a processor and method of predicting a conditional branch
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
US20080189495A1 (en) * 2007-02-02 2008-08-07 Mcbrearty Gerald Francis Method for reestablishing hotness of pages
US7779241B1 (en) * 2007-04-10 2010-08-17 Dunn David A History based pipelined branch prediction
US7779232B2 (en) * 2007-08-28 2010-08-17 International Business Machines Corporation Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches
US8924693B2 (en) * 2011-01-21 2014-12-30 Apple Inc. Predicting a result for a predicate-generating instruction when processing vector instructions
WO2013101152A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Embedded branch prediction unit
US9032191B2 (en) 2012-01-23 2015-05-12 International Business Machines Corporation Virtualization support for branch prediction logic enable / disable at hypervisor and guest operating system levels
US8935694B2 (en) 2012-01-23 2015-01-13 International Business Machines Corporation System and method for selectively saving and restoring state of branch prediction logic through separate hypervisor-mode and guest-mode and/or user-mode instructions
US9229723B2 (en) * 2012-06-11 2016-01-05 International Business Machines Corporation Global weak pattern history table filtering
US9395984B2 (en) 2012-09-12 2016-07-19 Qualcomm Incorporated Swapping branch direction history(ies) in response to a branch prediction table swap instruction(s), and related systems and methods
US9513924B2 (en) * 2013-06-28 2016-12-06 Globalfoundries Inc. Predictor data structure for use in pipelined processing
US9619230B2 (en) 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
US9983878B2 (en) 2014-05-15 2018-05-29 International Business Machines Corporation Branch prediction using multiple versions of history data
US10534611B2 (en) 2014-07-31 2020-01-14 International Business Machines Corporation Branch prediction using multi-way pattern history table (PHT) and global path vector (GPV)
US9477516B1 (en) 2015-03-19 2016-10-25 Google Inc. Concurrent in-memory data publication and storage system
US9934041B2 (en) 2015-07-01 2018-04-03 International Business Machines Corporation Pattern based branch prediction
GB201802815D0 (en) * 2018-02-21 2018-04-04 Univ Edinburgh Branch target buffer arrangement for instruction prefetching
US10740140B2 (en) * 2018-11-16 2020-08-11 International Business Machines Corporation Flush-recovery bandwidth in a processor
US11449343B2 (en) 2018-12-14 2022-09-20 Apple Inc. Indirect branch predictor storing encrypted branch information fields and security tag for security protection
US11321095B2 (en) 2018-12-14 2022-05-03 Apple Inc. Indirect branch predictor security protection
US11687343B2 (en) * 2020-09-29 2023-06-27 Arm Limited Data processing apparatus and method for providing candidate prediction entries
CN113504943B (zh) * 2021-09-03 2021-12-14 广东省新一代通信与网络创新研究院 用于降低资源使用的混合分支预测装置实现方法及系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8728493D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Jump prediction
US5577217A (en) * 1993-05-14 1996-11-19 Intel Corporation Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013250593A (ja) * 2012-05-30 2013-12-12 Renesas Electronics Corp 半導体装置
JP2016525252A (ja) * 2014-01-27 2016-08-22 ヴィア アライアンス セミコンダクター カンパニー リミテッド オペレーティング・システム・ルーチンのための予測履歴ストレージのフラクショナルな使用

Also Published As

Publication number Publication date
EP0848323A3 (en) 1999-02-10
DE69727773T2 (de) 2004-12-30
EP0848323A2 (en) 1998-06-17
US5935241A (en) 1999-08-10
EP0848323B1 (en) 2004-02-25
DE69727773D1 (de) 2004-04-01

Similar Documents

Publication Publication Date Title
US5935241A (en) Multiple global pattern history tables for branch prediction in a microprocessor
US6108775A (en) Dynamically loadable pattern history tables in a multi-task microprocessor
US6119222A (en) Combined branch prediction and cache prefetch in a microprocessor
US7437543B2 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
JP5837126B2 (ja) 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
US5864697A (en) Microprocessor using combined actual and speculative branch history prediction
EP0465321B1 (en) Ensuring data integrity in multiprocessor or pipelined processor system
US5553255A (en) Data processor with programmable levels of speculative instruction fetching and method of operation
US6477639B1 (en) Branch instruction mechanism for processor
US6279105B1 (en) Pipelined two-cycle branch target address cache
US7111126B2 (en) Apparatus and method for loading data values
US7203827B2 (en) Link and fall-through address formation using a program counter portion selected by a specific branch address bit
US7783870B2 (en) Branch target address cache
EP0463978A2 (en) Granularity hint for translation buffer in high performance processor
US20020091915A1 (en) Load prediction and thread identification in a multithreaded microprocessor
CA2045833A1 (en) Performance in reduced instruction set processor
US6564315B1 (en) Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction
JPH06110685A (ja) 高性能プロセッサにおける分岐予想方法
US6721877B1 (en) Branch predictor that selects between predictions based on stored prediction selector and branch predictor index generation
CA2045791A1 (en) Branch performance in high speed processor
WO2001050253A1 (en) Scheduler capable of issuing and reissuing dependency chains
US6647490B2 (en) Training line predictor for branch targets
JP2006520964A (ja) 分岐ターゲットに基づいて分岐予測をするための方法および装置
US5740418A (en) Pipelined processor carrying out branch prediction by BTB
US5878252A (en) Microprocessor configured to generate help instructions for performing data cache fills

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051025

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060324