JPH10198563A - マイクロプロセッサ内の動的にロード可能なパターン履歴表 - Google Patents

マイクロプロセッサ内の動的にロード可能なパターン履歴表

Info

Publication number
JPH10198563A
JPH10198563A JP10031921A JP3192198A JPH10198563A JP H10198563 A JPH10198563 A JP H10198563A JP 10031921 A JP10031921 A JP 10031921A JP 3192198 A JP3192198 A JP 3192198A JP H10198563 A JPH10198563 A JP H10198563A
Authority
JP
Japan
Prior art keywords
branch
task
instruction
history
microprocessor
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
JP10031921A
Other languages
English (en)
Inventor
H Shell Johnathan
エィチ.シエル ジョナサン
Z N Kai George
ゼット.エヌ.カイ ジョージ
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 JPH10198563A publication Critical patent/JPH10198563A/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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/3017Runtime instruction translation, e.g. macros
    • 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
    • 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/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
    • 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

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

Abstract

(57)【要約】 【課題】マルチタスク環境で動作するマイクロプロセッ
サの分岐命令を、自身の分岐パターン履歴に基づく予測
情報を保持して動的に予測する方法を提供する。 【解決手段】取出しユニット26は分岐ターゲットバッ
ファ56と、複数のパターン履歴表53を有する。選択
論理80は各分岐命令毎に、命令を含むプログラムの種
類を示す信号を受けて1つのパターン履歴表53を選択
し、これを用いて、命令アドレスに対応する、分岐ター
ゲットバッファ56のエントリ内の分岐履歴フィールド
BHに応じて、予測コードを生成する。タスク切替えの
場合は、1つ以上のパターン履歴表53の内容を、中断
されたタスクに対応するタスク状態セグメント90に記
憶し、新しいタスクのタスク状態セグメントからのエン
トリをパターン履歴表53にロードする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明はマイクロプロセッ
サの分野に関し、より特定すると、パイプライン化マイ
クロプロセッサにおける分岐予測法に関する。
【0002】
【従来の技術】マイクロプロセッサやその他のプログラ
マブル論理デバイスの分野では近年多くの改善が行わ
れ、性能が飛躍的に改善された。その一例はパイプライ
ン化アーキテクチャであって、多数のマイクロプロセッ
サ命令を種々の実行段階で同時に処理するので、前の命
令が完了する前に次の命令の処理が始まる。個々の命令
を処理するのに取出しから実行まで数マシンサイクルを
要するにも関わらず、パイプライン方式を用いると、単
一パイプラインマイクロプロセッサ内でマイクロプロセ
ッサが命令を実行する有効速度は、マシンサイクル当た
り1命令に近くなる。いわゆるスーパースカラアーキテ
クチャでは多数のパイプラインが並列に動作するので、
理論的な性能レベルは更に高い。
【0003】この技術で知られているように、多くの従
来のコンピュータ及びマイクロプロセッサのプログラム
では分岐命令が用いられる。分岐命令はプログラムの流
れを変える命令であって、分岐命令の後に実行する次の
命令は、必ずしもプログラムの順序における次の命令で
はない。分岐命令には、JUMP命令やサブルーチン呼
出しやサブルーチン復帰などの無条件分岐命令と、前の
論理や算術命令の結果に依存する条件付き分岐命令があ
る。
【0004】条件付き分岐命令があるとマイクロプロセ
ッサのパイプライン化アーキテクチャは複雑になる。そ
れは、分岐する条件は実行するまで分からず、実行は取
出してから数サイクル後になるからである。この状況で
は、マイクロプロセッサは分岐条件が分かるまで分岐後
の命令の取出しを中止し、その結果パイプラインに空虚
な段階である「バブル」(即ち、命令処理の穴)を生じ
るか、またはパイプラインを満たすために命令を推測に
より(実際には条件を憶測して)取り出して、もし推測
が間違ったことが分かると現在の命令のパイプラインを
「フラッシュ」するという危険を冒すか、のどちらかで
ある。
【0005】命令を推測により実行してパイプラインを
常に満たすことの利点は、特に長いまたは多数のパイプ
ラインアーキテクチャでは、推測による実行の成功率が
所望の性能を得るのに十分である限り、パイプラインの
フラッシュによる性能の低下を十分補うことである。し
たがって現在の多くのマイクロプロセッサは、条件付き
分岐命令の行動をある程度の正確さで予測できる何らか
の分岐予測法を用いている。分岐予測の種類の1つは、
予測が時間や履歴に従って変わらない「静的」予測であ
る。簡単な静的予測法は、単に全ての条件付き分岐を
「行う」として予測する。より進んだ静的分岐予測法は
分岐の方向に従って予測する。例えば全ての順方向の条
件付き分岐を「行わない」と予測し、全ての逆方向の分
岐(例えば、DOループ内のLOOP命令)を「行う」
と予測する。もちろん、無条件分岐の場合は必ず静的に
「行う」と予測する。
【0006】動的分岐予測は、過去の分岐の結果を用い
て次の分岐の結果を予測する、既に知られている分岐予
測法である。よく知られた簡単な動的予測法は、単に最
近の1つまたは2つの条件付き分岐の結果を用いて現在
の分岐命令の方向を予測する。
【0007】より正確な動的な分岐予測法は、他の命令
の分岐結果ではなく自分の分岐履歴を用いて分岐命令の
方向を予測する。この方法は最近のマイクロプロセッサ
では、一般的に分岐ターゲットバッファを用いて行われ
ている。従来の分岐ターゲットバッファBTBはキャッ
シュのエントリに似た表で、各エントリは最近出現した
分岐命令の識別子(「タグ」)と、予測を行うための分
岐履歴に関するコードと、分岐を行うと予測した場合に
取り出す次の命令のターゲットアドレス(その次の順次
のアドレスは「行わない」予測で取り出すアドレス)を
記憶する。分岐命令を取り出すと、そのアドレスをBT
B内のタグと比べて、この命令が前に出現したかどうか
判断する。出現した場合は、その命令についてBTB内
で示された予測コードに従って次の命令を取り出す。新
しく出現した分岐命令については履歴がBTB内にない
ので、静的に予測する。命令を実行して完了すると、B
TBエントリを作り(一般に、分岐を行ったものについ
てだけ)または修正して(すでにBTBエントリを持つ
分岐について)分岐命令の実際の結果を反映し、これを
次にその命令が起こったときに用いる。
【0008】最も近くに実行した分岐かまたは同じ命令
の分岐履歴に基づいて分岐を予測する種々の実際の予測
アルゴリズムが知られている。よく知られた簡単な分岐
アルゴリズムは4状態の状態機械モデルに従い、最も近
い2つの分岐事象を用いて次の分岐を行うか行わないか
を予測する。4状態とは、「強く行う」と、「行う」
と、「行わない」と、「強く行わない」である。「強
く」の状態は、少なくとも最後の2つの分岐が全て「行
う」だけか「行わない」だけの場合(実現したものに従
って、一般に、またはその特定の命令について)に対応
する。「行う」状態と「行わない」状態(即ち「強く」
の状熊でない)は最後の2つの分岐の結果が異なる場合
に対応し、次の分岐は、予測を逆の方向に変えるか、ま
たは予測の方向を保ちしかも「強く」にする。
【0009】最近の進んだ分岐予測アルゴリズムは、分
岐行動を予測するのに、分岐履歴だけでなく分岐パター
ン情報を用いる。例えば或る分岐命令は3回通るループ
で、その分岐履歴は行う・行う・行わない、というパタ
ーンを繰り返す。簡単な2ビット即ち4状態の予測法を
用いたのでは、その行動が完全に予測可能であってもこ
の命令の分岐を正しくは予測しない。よく知られた2レ
ベル適応分岐予測法が、Yeh とpattの「2レベ
ル適応分岐予測(Two−Level Adaptiv
e Branch Prediction)」、マイク
ロアーキテクチャに関する第24回国際シンポジウム議
事録(Proceedings ofthe 24th
International Symposium
onMicroarchitecture)(ACM/
IEEE、1991年11月)、51−61ページ、に
述べられている。この方法は、分岐履歴と共に分岐パタ
ーン情報を用いて分岐命令の結果を予測する。Yeh
とpattの方法を用いた分岐予測がBTBを用いるマ
イクロプロセッサアーキテクチャに適用され、英国特許
出願番号第2 285 526号、1995年7月12
日発行に述べられている。またこれについては、米国特
許番号第5,574,871号を参照のこと。
【0010】上記のYeh とpattの論文と英国特
許出願番号第2 285 526号に述べられている方
法では、特有の分岐パターン毎にパターン履歴を保持
し、また更新する。この方法では、パターン履歴は上述
の4状態の状態機械モデルから成り、分岐パターン毎に
最近の2つの分岐事象を用いて、同じ分岐パターンを持
つ次に発生する分岐が「行う」か「行わない」かを予測
する。(その「強く」という属性と共に)。動作を説明
すると、BTB内にエントリを持つ分岐命令を検出する
と、その命令の分岐履歴フィールドに含まれる分岐パタ
ーンを用いてパターン履歴表に指標を付け、そこから予
測を取り出す。分岐が決定すると、その特定の命令の分
岐履歴フィールドと前のパターンのパターン履歴(即
ち、予測に用いた分岐パターン)を更新する。この更新
されたパターン履歴を用いて、その関連する分岐パター
ンをBTBの分岐履歴フィールド内に持つ次の分岐命令
の結果を予測する。したがって、この方法によるパター
ン履歴表は「グローバル」である。その意味は、命令が
何かに関係なく、同じ分岐履歴パターンを持つ任意の分
岐命令について分岐予測を生成する、ということであ
る。したがって或る特定の分岐パターンについてのパタ
ーン履歴は、その分岐履歴を持つ任意の分岐命令の分岐
予測の結果に基づいて定義し更新する。このようこの基
本的な2レベル法では、別の命令の分岐結果に基づい
て、任意の所定の命令の分岐予測を決定する。
【0011】YehとPattの「2レベル適応分岐予
測の別の方法(Alternative Implem
entations of Two−Level Ad
aptive Branch Predictio
n)」、コンピュータアーキテクチャに関する第19回
年次国際シンポジウム議事録(Conference
Proceedings of the 19th A
nnual International Sympo
sium on Computer Architec
ture)、(ACM、1992年5月)、124−1
34ページ、に述べられているように、2レベル分岐予
測の別の方法はこの制限に対処する。この論文の図3に
示すように、この別の方法はアドレス特有のパターン履
歴表を作り、BTB内の各エントリは独自のパターン履
歴表を持つ。したがって、分岐命令の分岐予測は、自身
の過去の履歴から生成し修正したパターン履歴に基づい
て作り、同様の分岐パターンを持つ他の分岐命令の分岐
結果は用いない。
【0012】
【発明が解決しようとする課題】アドレス特有のパター
ン履歴表を用いると同じ分岐パターンを持つ他の分岐命
令から得た分岐予測に含まれる干渉はなくなるが、これ
を実現するコストは非常に大きい。例えば、現在のマイ
クロプロセッサが持つBTBは4kエントリにもなる。
したがってアドレス特有のパターン履歴表に4ビットの
分岐履歴の指標を用いると、それぞれが2ビット幅の1
6エントリを持つ4kのパターン履歴表が必要で、記憶
量は128kビットになる。したがってこの方法を実現
するのに必要なチップ面積は非常に大きい。しかも、パ
ターン履歴表の指標に分岐履歴ビットを追加して分岐予
測を改善しようとすると、このコストは急速に増える。
例えば、分岐履歴に6ビットを用いると512kビット
のパターン履歴の記憶が必要になる。それぞれの段階が
一層深い多くのパイプラインをマイクロプロセッサが持
つに従って、分岐の予測誤りによる損失はますます大き
くなり、正確な分岐予測にかかるプレミアムは更に高く
なり、アドレス特有のパターン履歴表を実現するコスト
は一層大きくなる。
【0013】更に別の背景として、種類が異なるマイク
ロプロセッサプログラムの分岐行動は、種類が同じであ
れば似ているが、別の種類の間では異なることが分かっ
た。例えば、Calder と Grunwaldの
「ライブラリ内の分岐の予測性(The Predic
tability of Branches in L
ibraries)」、マイクロアーキテクチャに関す
る第28回国際シンポジウム議事録(ACM/IEE
E、1995年11月)、24−34ページ、に述べら
れているように、普通使われているUNIXライブラリ
のサブルーチンは予測可能な分岐行動をとり、クラス即
ち種類としては非ライブラリプログラムとは異なる分岐
行動をとる。
【0014】更に背景として、分岐履歴とBTBのタグ
フィールドの一部を用いてグローバルパターン履歴表に
指標を付ける方法が知られている。
【0015】また別の背景として、現在のマイクロプロ
セッサはマルチタスクオペレーテイングシステムを支援
するようになり、マイクロプロセッサは複数のタスクの
間で動作を順次に切り替えて、あたかも多数のタスクを
並列に実行しているように見える。一般に、例えばよく
知られたx86アーキテクチャで作られたマイクロプロ
セッサでは、各タスクを短時間実行し、次にタスク切替
えと呼ぶ事象で中断した後、別のタスクを開始または再
開し、これを短時間実行し、また別のタスクに切り替え
るということを続ける。このようなマルチタスク動作を
行うには、各タスクのシステム文脈をタスクの中断のと
きに保存し、タスクの再開のときに復元しなければなら
ない。一般にはメモリの一部を確保し、これを各タスク
のシステム文脈の記憶と呼出しに用いる。x86アーキ
テクチャでは、タスク状態セグメント(TSS)と呼ぶ
システムセグメントを各タスクに割り当てて、タスク切
替えによる中断のときにその条件を記憶する。
【0016】
【課題を解決するための手段】したがってこの発明の目
的は、プログラムの種類に基づくマイクロプロセッサ内
の分岐予測を与えることである。
【0017】この発明の別の目的は、分岐パターン履歴
表をタスク毎に保持して、ある活動的なタスク内の分岐
活動が、中断されたタスクの分岐パターン履歴に影響を
与えないようにする、分岐予測を与えることである。こ
の発明のその他の目的や利点は、図面と共にこの明細書
を参照すれば当業者に明らかである。
【0018】この発明は、マルチタスクのマイクロプロ
セッサに1つ以上の動的に書換え可能なパターン履歴表
を与えることにより、マイクロプロセッサで実現するこ
とができる。マイクロプロセッサが実行する各タスクは
中断されたタスクの条件を記憶する状態セグメントをメ
モリ内に保持し、タスクを再開するときにその動作の条
件を検索する。この発明は、タスク切替えのときに、中
断されるタスクのタスク状態セグメント内のパターン履
歴表の内容を記憶することにより実現される。タスクを
再開するタスク切替えのときに、タスク状態セグメント
に記憶した内容でパターン履歴表を書き換える。
【0019】
【発明の実施の形態】図1は、この発明の好ましい実施
の形態を実現する例示のスーパースカラ・パイプライン
・マイクロプロセッサ10を備える、例示のデータ処理
システム300を示す。システム300とマイクロプロ
セッサ10のアーキテクチャは一例であって、この発明
は種々のアーキテクチャのマイクロプロセッサに用いて
よいものである。したがって当業者はこの明細書を参照
して、他のマイクロプロセッサアーキテクチャでこの発
明を容易に実現することができる。更に、この発明は単
一チップマイクロプロセッサやマイクロコンピュータや
多チップで実現してよく、これらの集積回路の製造は、
シリコン基板、シリコン・オン・インシュレータ、ガリ
ウム砒素、その他の製造技術により、またMOS、CM
OS、バーポーラ、BiCMOS、その他のデバイスを
用いて実現することができる。
【0020】図1に示すように、マイクロプロセッサ1
0は外部バスBUSにより他のシステムデバイスに接続
する。この例ではバスBUSを単一バスで示している
が、PCIローカルバスアーキテクチャを用いる従来の
コンピュータで知られているように、外部バスBUSは
異なる速度とプロトコルを持つ多重バスを表してよいこ
とは言うまでもない。システム300は、次の従来のサ
ブシステムを備える。即ち、通信ポート303(モデム
ポート及びモデム、網インターフェースなどを含む)、
グラフィックディスプレイ装置304(ビデオメモリ、
ビデオプロセッサ、グラフィックモニタを含む)、一般
にダイナミック・ランダムアクセスメモリ(DRAM)
で実現されまたメモリスタック307を含む主メモリサ
ブシステム305、入力デバイス306(キーボード、
位置決め装置、そのインターフェース回路を含む)、デ
ィスク装置308(ハードディスクドライブ、フロッピ
ディスクドライブ、CD ROMドライブを含む)など
である。したがって図1のシステム300は、現在では
普通になっている従来のデスクトップコンピュータやワ
ークステーションに対応すると考えてよい。当業者が認
めるように、マイクロプロセッサ10の他のシステム構
成もこの発明を有効に利用することができる。
【0021】マイクロプロセッサ10はバスインターフ
ェースユニット(BIU)12を備える。BIU12は
外部バスBUSに接続し、マイクロプロセッサ10とシ
ステム300内の他の構成要素との間の通信を制御し実
行する。BIU12はこの機能を実行するための制御及
びクロック回路を備える。例えば、動作速度を高めるた
めの書込みバッファや、内部マイクロプロセッサの動作
の結果とバスBUSのタイミング制約を同期させるタイ
ミング回路などである。またマイクロプロセッサ10
は、システムクロックSYSCLKに基づいてクロック
相を生成するクロック発生及び制御回路20を備える。
この例では、クロック発生及び制御回路20はバスクロ
ックBCLKとコアクロックPCLKをシステムクロッ
クSYSCLKから発生させる。
【0022】図1から明らかなように、マイクロプロセ
ッサ10は3レベルの内部キャッシュメモリを備える。
最高レベルはレベル2キャッシュ11で、内部バスによ
りBIU12に接続する。この例ではレベル2キャッシ
ュ11は統一キャッシュで、BIU12を経てバスBU
Sから全てのキャッシュ化可能なデータとキャッシュ化
可能な命令を受け、マイクロプロセッサ10が与えるバ
ストラフィックの多くはレベル2キャッシュ11により
行われる。またマイクロプロセッサ10はキャッシュ1
1の周りのバストラフィックを制御して、あるバス読取
り及び書込みを「キャッシュ化不可」にすることもでき
る。図1に示すように、レベル2キャッシュ11は2個
のレベル1キャッシュ16に接続する。レベル1データ
キャッシュ16はデータ専用であり、レベル1命令キ
ャッシュ16は命令専用である。マイクロキャッシュ
18は、この例では完全な二重ポートレベル0データキ
ャッシュである。主変換ルックアサイドバッファ(TL
B)19は、レベル2キャッシュ11へのメモリアクセ
スと、BIU12を経て主メモリへのメモリアクセスを
制御する。この制御は、メモリ内のアドレス変換用のペ
ージテーブルへのアクセスを整理する。TLB19はペ
ージテーブル用のキャッシュでもある。命令マイクロ変
換ルックアサイドバッファ(μTLB)22とデータマ
イクロ変換ルックアサイドバッファ(uTLB)38
は、レベル1命令キャッシュ16とレベル1データキ
ャッシュ16にそれぞれアクセスするために、従来の
方法で論理データアドレスを物理アドレスに変換する。
【0023】図1に示すように、マイクロプロセッサ1
0はスーパースカラ型であり、したがって多数の実行ユ
ニットを備える。これらの実行ユニットは、条件付き分
岐や整数や論理操作を処理する2個のALU42及び
42と、浮動小数点ユニット(FPU)31と、2個
のロード・記憶ユニット40及び40と、マイクロ
シーケンサ48を備える。2個のロード・記憶ユニット
40はマイクロキャッシュ18への2個のポートを用い
て真の並列アクセスを行い、またレジスタファイル39
内のレジスタへのロード及び記憶操作を行う。この技術
で知られているように、レジスタファイル39はプログ
ラマが用いる汎用レジスタを備え、またコードセグメン
トレジスタCSを含む制御レジスタを備える。
【0024】これらの多数の実行ユニットは書戻しの際
に、それぞれ7段階の多数のパイプラインにより制御さ
れる。パイプラインの段階は次の通り。 F 取出し: この段階は命令アドレスを生成し
て、命令キャッシュ即ちメモリから命令を読み取る。 PD0 前復号化段階0: この段階は最大3個の取り
出されたx86型の命令の長さと開始位置を決定する。 PD1 前復号化段階1: この段階はx86命令バイ
トを抽出して、復号化のために固定長書式に記録する。 DC 復号化: この段階はx86命令を最小単位動
作(AOps)に変換する。 SC スケジュール: この段階は該当する実行ユニ
ット(FPU31を含む)に最大4AOpsを割り当て
る。 OP オペランド: この段階はAOpsが示すレジ
スタオペランドを検索する。 EX 実行: この段階はAOpsと検索されたオペ
ランドに従って実行ユニットを実行させる。 WB 書戻し: この段階は実行の結果をレジスタま
たはメモリに記憶する。
【0025】図1に戻って、マイクロプロセッサ10内
の種々の機能ブロックは上に述べたパイプライン段階を
実行する。取出しユニット26は命令マイクロ変換ルッ
クアサイドバッファ(μTLB)22を用いて、後で説
明する分岐予測法などにより命令ポインタから命令アド
レスを生成し、レベル1命令キャッシュ16に与え
る。更に後で説明するように、取出しユニット26は線
U/Sを経てコードセグメントレジスタCSから、取出
しユニット26での現在の命令のプログラムの種類即ち
クラスを示す信号を受ける。更に後で説明するように、
取出しユニット26とロード・記憶ユニット40の片方
または両方との間にパターン履歴バスPHTBUSがあ
り、この発明の好ましい実施の形態の取出しユニット2
6内の1つ以上のパターン履歴表の読取り及び書込みを
行うことができる。これについては後で説明する。
【0026】命令キャッシュ16は取出しユニット2
6への命令データのストリームを作り、取出しユニット
26は前復号化0段階28と前復号化1段階32に、所
望のシーケンスで命令コードを与える。これらの2段階
は別個のパイプライン段階として動作し、また共に動作
して最大3個のx86命令を見つけてデコーダ34に与
える。前復号化0段階28は3個の可変長x86命令の
サイズと位置を決定し、前復号化1段階32は多バイト
命令を固定長書式に記録して復号化を容易にする。この
例では、復号化ユニット34は4個の命令デコーダを備
え、それぞれは前復号化1段階32から固定長のx86
命令を受けて、1ないし3個の最小単位動作(AOp
s)を作る。AOpsは実質的にRISC命令と同じで
ある。スケジューラ36は復号化ユニット34の出力の
復号化待ち行列から最大4つのAOpsを読んで、これ
らのAOpsを該当する実行ユニットに割り当てる。オ
ペランドユニット44はマルチプレクサ45を経てスケ
ジューラ36とマイクロコードROM46から入力を受
け、命令の実行に用いるレジスタオペランドを取り出
す。更にこの例では、オペランドユニット44はオペラ
ンド転送を行って記憶可能のレジスタに結果を送り、ま
たAOpsのためにロード及び記憶の種類のアドレスを
生成する。
【0027】マイクロシーケンサ48とマイクロコード
ROM46は、ALU42とロード・記憶ユニット40
が、一般に1サイクル内に実行する最後のAOpsであ
るマイクロコードエントリAOpsを実行するのを制御
する。この例では、マイクロシーケンサ48はマイクロ
コードROM46に記憶されているマイクロ命令を整理
して、マイクロコード化されたマイクロ命令に応じて制
御を行う。マイクロコード化されたマイクロ命令の例
は、複雑なまたは余り用いないx86命令や、セグメン
トすなわち制御レジスタを修正するx86命令や、例外
や割込みの処理や、多サイクル命令(例えばREP命令
や、全てのレジスタのPUSH及びPOP命令など)な
どである。
【0028】またマイクロプロセッサ10は回路24を
備える。回路24は、JTAG走査試験の動作やいくつ
かの内蔵自己試験(BIST)機能を制御し、製造が完
了したときやリセットなどの他の事象のときに、マイク
ロプロセッサ10の動作が確実であることを確認する。
【0029】次に図2を参照して、この発明の好ましい
実施の形態の取出しユニット26の構造と動作を説明す
る。上に述べたように、取出しユニット26は復号化の
ために取り出す次の命令のアドレスを決定する。したが
って、取出しユニット26は命令をマイクロプロセッサ
10のパイプラインに読み込むシーケンスを決定し、こ
の発明のこの実施の形態では、アドレスの推測的な実
行、特に分岐予測による実行を制御する。
【0030】取出しユニット26の動作は、いくつかの
方法の中からマルチプレクサ52が選択して生成した論
理取出しアドレスFAに基づいて行う。取出しアドレス
FAは、復号のために次の順次のアドレスを取り出すと
きに、単に取出しユニット26内の取出しポインタ50
の内容から生成する。図2に示すように、取出しポイン
タ50は取出しユニット26内のレジスタであって、そ
の出力はマルチプレクサ52の1入力と増分器51に接
続する。増分器51は取出しアドレスの値を進めて次の
論理命令の値にし(スーパースカラ機の場合は、次の論
理命令は必ずしも次の順次の命令ではない)、進めた取
出しアドレスをマルチプレクサ58の入力に与えて、取
出しポインタ50内に記憶して、またこれを次の取出し
に用いる。マルチプレクサ58は、次のアクセスで用い
る取出しポインタ50の更新された内容のソースを選択
する。取出しアドレスFAを生成する第2の方法では、
例えば取出しユニット26が予測しなかった行う分岐ま
たは予測を誤った分岐の場合に、実行ユニットの1つ
(例えばマイクロシーケンサ48)からマルチプレクサ
52に与える。この値もマルチプレクサ58の入力に与
えて、取出しポインタ50内に記憶する。
【0031】また取出しユニット26は、プログラムシ
ーケンスから次の取出しアドレスFAを生成する回路を
備える。図2に示すように、取出しユニットは復帰アド
レススタック55を備える。これはいくつかの位置を持
つ後入れ先出し(LIFO)メモリで、サブルーチン呼
出しとサブルーチン復帰のための復帰アドレスを記憶し
て、サブルーチンの推測的な実行に用いる。この発明の
この実施の形態では、取出しユニット26は分岐ターゲ
ットバッファ(BTB)56を更に備える。これはキャ
ッシュと同様なエントリの配置を持ち、分岐命令の現在
の段階を予測するのに用いる過去の分岐の履歴を示すデ
ータと、取出しアドレスFAとして用いる分岐命令のタ
ーゲットアドレスを記憶して、パイプラインをできるだ
けいつも充てん状態に保つ。この発明のこの実施の形態
では、BTB56は2レベル型であり、多数のパターン
履歴表(PHT)53と共に動作して、分岐パターン履
歴に基づく予測コードを記憶する。これは分岐履歴情報
により呼び出す。
【0032】この発明の好ましい実施の形態に関して後
で詳細に述べるように、選択論理80は、特定のアドレ
スの分岐予測を生成するのに用いる適当な1つのパター
ン履歴表53を、分岐命令を含むプログラムの種類に従
って選択する。図2に示すように、選択論理80は、現
在の分岐命令を含むプログラムの種類に関する情報に応
じて、パターン履歴表53の中から選択する。この情報
は、例えばコードセグメントレジスタCSからの線U/
Sにより、また対応する分岐命令のページテーブルエン
トリのグローバルビットからのグローバルビット線Gに
より送られる。このようにして、同じ種類のプログラム
(例えば、アプリケーションプログラム、共有ライブラ
リ、オペレーティングシステム機能)により示される分
岐行動の類似性を利用することにより、分岐予測の成功
率が高くなる。
【0033】この発明のこの実施の形熊では、取出しユ
ニット26は更にPHT読取り/書込み回路83を備え
る。回路83は、多数のPHT53のそれぞれと、また
バスPHTBUSと通信する。後で詳細に説明するよう
に、PHT読取り/書込み回路83はタスク切替えのと
きに、ロード・記憶ユニット40を経てPHT53の選
択された1つの内容をメモリとの間で授受する。この発
明の好ましい実施の形態では、パターン履歴表はタスク
切替えのときに動的に記憶及び書換えが可能なので、特
定のタスクの専用のパターン履歴を保持することができ
る。
【0034】パターン履歴表53内の対応する予測コー
ドに基づいて得られる分岐予測に応じて、BTB56は
バスBRTRGを通してマルチプレクサ57にターゲッ
ト命令アドレスを与える。復帰アドレススタック55は
バスRAを通してマルチプレクサ57に復帰命令アドレ
スを与える。マルチプレクサ57の出力はマルチプレク
サ52の第3入力に接続し、またマルチプレクサ58に
接続して取出しカウンタ50を更新する。このようにマ
ルチプレクサ52の3入力は次の取出しアドレスFAの
3つのソースを示す。これらは物理アドレスではなく論
理アドレスである。
【0035】分岐予測の結果は該当する実行ユニットか
ら線UPDを通して更新論理70に伝えられる。後で説
明するように、更新論理70はBTB56内のエントリ
の分岐履歴を更新し、また実行して評価された分岐予測
が成功か失敗かに応じて、パターン履歴表53に記憶さ
れている予測コードを更新する。
【0036】取出しアドレスFAは取出しユニット26
内の種々の機能に送られ、復号化のための次の命令の取
出しを制御する。例えば、取出しユニット26は命令μ
TLB22と通信する。命令μTLB22は、論理取出
しアドレスFAと一致する物理アドレスPAが前に変換
された位置を指す場合は、これを戻す。または論理取出
しアドレスFAは、取出しユニット26の外部にある主
変換ユニット(図示せず)により物理アドレスに変換さ
れる。どちらにしても、取出しユニット26は命令線ア
ドレスIAをレベル1命令キャッシュ16に与えて、
ここから一連の命令コードを検索する。もちろん、レベ
ル1命令キャッシュ16でキャッシュミスが起こった
場合は、物理アドレスを統一レベル2キャッシュ11に
与え、またキャッシュミスがこのレベルで起こった場合
は、主メモリに与える。命令線アドレスIAに応じて、
レベル1命令キャッシュ16は一連の命令コードシー
ケンスCODEを取出しユニット26内の命令バッファ
及び制御60に与え、最終的に前復号化0段階28に与
える。この場合は各命令線アドレスIAを用いて16バ
イトのブロックにアドレスするので、命令バッファ及び
制御60の容量は少なくとも16バイトである。
【0037】また取出しユニット26は、中断命令であ
ると識別された命令を更に取り出さないようにする命令
中断チェック回路62などの他の従来の機能も備える。
また取出しユニット26は、論理取出しアドレスFAが
現在のコードセグメントの境界の外のアドレスを指すか
どうか判断する、コードセグメント限界チェック回路6
4を備える。
【0038】論理取出しアドレスFAはBTB56の入
力に入る。BTB56は、取出しアドレスFAが最近取
り出した分岐命令を指しているか、また推測的な(sp
eculative)実行に用いる分岐履歴をBTB5
6内に記憶しているいるか、を判断する。この技術で知
られているように、推測的な実行は、図1のスーパース
カラ・マイクロプロセッサ10などのように深くパイプ
ライン化されたマイクロプロセッサの性能を高める重要
な方法である。それは、予測を誤って分岐すると(パイ
プラインは機能を停止して条件付き分岐の結果を待
つ)、実行機会が失われるので大きな損失を生じるから
である。BTB56はキャッシュに似た構成に配置され
たメモリで、例えば512エントリの、4通りのセット
アソシエイテイブ・キャッシュバッファである。もちろ
んBTB56は、直接マッピングからフル連想型まで、
任意の方法で構成することができる。次に図3を参照し
て、選択論理80及び多数のパターン履歴表53の例と
組み合わせて、BTB56の構造を説明する。
【0039】上に述べたように、この例のBTB56
は、多数のエントリ63を有する4通りのセットアソシ
エイテイブ・キャッシュメモリである。簡単のために、
図3では1通りだけを示している。BTB56はセレク
タ61を備える。セレクタ61は線FAを通して取出し
アドレスを受け、取出しアドレスが指すエントリ63を
選択する。セレクタ61は従来の任意の方法で作り、例
えばデコーダやタグ比較器や簡単なマルチプレクサによ
り、取出しアドレスからBTB56内のエントリ63を
選択する。BTB56内の各エントリ63は特定の分岐
命令の論理取出しアドレスFAにより各エントリ63を
識別するのに用いるタグフィールドTAGを持ち、セレ
クタ61はこれと入力する論理取出しアドレスFAの一
部とを比較する。この技術で知られているように、タグ
フィールドTAGは対応する分岐命令の論理取出しアド
レスFAの選択されたビットを直接記憶し、またはこれ
らの選択された論理アドレスビットの論理的組合わせに
対応する。一般にタグフィールドTAGは線アドレス
と、取出し線内の命令のバイトオフセットを示すオフセ
ットを含む。またBTB56内の各エントリ63は、分
岐命令ターゲットアドレスの論理アドレスを含むターゲ
ットフィールドTARGETを有する。上述のように、
「行う」と予測された分岐命令と一致する、エントリ6
3のTARGET部内のターゲットアドレスは、BTB
入出力論理69からバスBR TRGを通してマルチプ
レクサ57に送られる。分岐が「行わない」である場合
は、マルチプレクサ52は、単に次の順次の論理アドレ
ス(即ち、取出しポインタ50の内容)を次の論理取出
しアドレスFAとして選択する。
【0040】またこの発明のこの実施の形態の各エント
リ63は、タグフィールドTAGに対応する分岐命令の
分岐履歴を記憶するmビットの分岐履歴フィールドBH
を含む。分岐履歴フィールドBHに記憶される分岐履歴
は、命令の実行が終わったときに決定される関連する分
岐命令の実際の分岐履歴と、まだ実行が終わっていない
分岐命令の事例の予測結果から成る推測的な分岐履歴を
含む。更に、同時係属出願の米国仮出願番号第60/0
20,844号、1996年6月28日出願(ここに参
照することにより挿入する)に述べられているように、
BTB56内の各エントリ63は分岐履歴フィールドB
H内の推測的な分岐履歴ビットの数を示すカウンタも備
え、予測誤りから回復するのに用いる。またBTB56
内の各エントリ63は標識TYPEを含む。これはその
関連する命令の分岐命令の種類(即ち、条件付き分岐、
CALL、JUMP、RETURN)を記述するもの
で、分岐を予測するのに用いる。CALL、JUMP、
RETURNなどの無条件分岐は常に「行う」と予測す
る。LRUビットや有効ビットやその他の制御ビット
(図示せず)などの追加のビットもBTB56の各エン
トリ63内に与えられる。
【0041】図2に関して上に述べたように、多数のパ
ターン履歴表(PHT)53を用いて、選択されたBT
Bのエントリ63の分岐履歴フィールドBHの最新のk
ビットに基づいて条件付き分岐の行動を予測する。この
発明のこの実施の形態では、各PHT53は特定の種類
のプログラムに関連し、分岐履歴フィールドBHはPH
T53の任意の1つにアクセスすることができる。しか
し予測コードは、命令を取り出した種類のプログラムに
該当する1つのPHT53だけから選択する。図2では
PHT53とBTB56は物理的に別の回路で実現して
いるが、もちろん必要に応じてPHT53をBTB56
に含めてよい。図3で明らかなように、この例では4個
のPHT53から53をBTB56と組み合わせて
実現している。
【0042】各PHT53は簡単なルックアップメモリ
であって、それぞれはBTB56の選択されたエントリ
63からkビットの分岐履歴を受けるセレクタ67を備
え、これに対応する2個の予測エントリPRDの中の
1つを選択する。セレクタ67はデコーダまたはマルチ
プレクサで実現してこの機能を実行する。図3に示すよ
うに、PHT53から53はそれぞれ選択されたエ
ントリ63からkビットの分岐履歴を受け、与えられた
kビットの分岐履歴に対応するエントリPRDの内容に
対応する一組の線PREからPREを通してパター
ン履歴コードを出す。選択された1つのPHT53に指
標を付ける際に、例えばいくつかのアドレスヒットや制
御情報などの他の情報を、分岐履歴フィールドBHのこ
れらのkビットと組み合わせてよい。この発明のこの実
施の形態では、各組のPREは2線を用いて、4状態の
分岐予測モデル(即ち、強く行う、行う、行わない、強
く行わない)の下に、従来の方法で2ビットのパターン
履歴コードを送る。
【0043】この発明のこの実施の形態では、選択論理
80はBTB56に与えられる選択された1つのPHT
53の出力を送る回路を備える。もちろん選択論理80
は多数のPHT53の中の適当な1つに選択的にアドレ
スするようにして実現してよい。この例では、PHT5
乃至53からパターン履歴線PRE乃至PRE
をそれぞれマルチプレクサ68の入力に与える。マル
チプレクサ68はパターン履歴線PRE乃至PRE
の組の1つを選択して、線TNTを通してBTB入出力
論理69に与え、これから適当な分岐予測を行う。この
発明のこの実施の形態では、マルチプレクサ68は、現
在の分岐命令に対応するページテーブルエントリPTE
(後で詳細に説明する)内のグローバルビットGの状
態に応じて、また線U/S上の信号に従って制御され
る。この例では、線U/S上の信号は、マイクロプロセ
ッサ10のコードセグメントCSレジスタに含まれる現
在の特権レベル(CPL)の状態に対応する。この例で
は、マイクロプロセッサ10はx86アーキテクチャに
従って作る。後の説明から明らかなように、マルチプレ
クサ68は分岐予測を行うのに用いる線PRE乃至P
REの適当な組を、分岐命令を出すプログラムの種類
即ちクラスに従って選択する。これについては以下に説
明する。
【0044】x86アーキテクチャでは、マイクロプロ
セッサ10が実行するプログラムはカーネル(最高の特
権)からアプリケーション(最低の特権)まで、異なる
特権レベルに従って分類される。したがって、個々の命
令は、種々の特権レベルに従ってアクセスが保護される
メモリ部分に常駐する。これにより、マルチタスク環境
で動作する多数のアプリケーションプログラムはプログ
ラムやサブルーチンを共有することができる。x86ア
ーキテクチャのメモリページング保護機構では、メモリ
のこれらの部分をユーザ及びスーパーバイザレベルと呼
ぶ。ユーザ保護レベル(CPL=3)はアプリケーショ
ンプログラムが記憶されているメモリ位置に割り当て、
スーパーバイザ保護レベル(CPL=0からZ)はオペ
レーティングシステムや拡張やドライバやカーネルが常
駐するメモリ位置に割り当てる。したがってこの例で
は、線U/S上の信号は、コードセグメントCS内のC
PLの値に基づいて、現在の分岐命令を含むプログラム
の特権レベルを示す。
【0045】もちろん現在の分岐命令が関連するプログ
ラムの種類は、他の方法で、例えばx86アーキテクチ
ャ内のCPLに対応する多数の信号線により、または他
のアーキテクチャに従うマイクロプロセッサ内の他の種
類の信号により、示してよい。どちらにしても、マルチ
プレクサ68は現在のプログラムの種類に対応する少な
くとも1つの信号に従って制御され、分岐行動は異なる
種類のプログラムの分岐命令によって異なってよい。こ
の発明の好ましい実施の形態では、BTB56とパター
ン履歴表53は、アプリケーションプログラム内の分岐
命令(ユーザレベルのメモリに常駐している命令)の分
岐行動の類似性や、オペレーティングシステム内の分岐
命令(スーパーバイザレベルのメモリに常駐している命
令)の分岐行動の類似性や、両方のレベルの共有ルーチ
ン内の命令の分岐行動の類似性や、これらの異なる種類
のプログラム内の分岐命令間の分岐行動の非類似性など
を利用する。これを実現するために、この発明の好まし
い実施の形態では、少なくとも1つのPHT53をユー
ザレベルの分岐命令に関して用いるように、また少なく
とも1つの他のPHT53をスーパーバイザーレベルの
分岐命令に関して用いるように割り当てる。この実施の
形態では、2つのPHT53をユーザレベルの分岐に割
り当て、他の2つのPHTをスーパーバイザレベルの分
岐命令に割り当てる。この発明のこの実施の形態では、
線U/S上の信号をマルチプレクサ68の制御入力の1
つに与えてこの制御を行う。
【0046】上に述べたように、線U/Sの状態と他の
制御フラグ及びビットを組み合わせ、これを用いて適当
なPHT53を選択してよい。マイクロプロセッサの分
野でよく知られているように、また上に述べたように、
ページテーブルエントリを用いて論理アドレスから物理
アドレスへのアドレス変換を行う。上に述べたようにマ
イクロプロセッサ10では、TLB19はページテーブ
ルエントリPTEのキャッシュとして動作する。それぞ
れは、現在のアドレスが写像するページフレームアドレ
スを含むだけでなく、アドレスが指すメモリのページフ
レームに関するこの技術で知られているいくつかの制御
情報も含む。ペンティアム(R)プロファミリー・デベ
ロッパーズマニュアル(Pro Family Dev
eloper’s Manual)、第3巻、オペレー
ティングシステム・ライターズガイド(Operati
ng System Writer’s Guide)
(インテル、1996年)の3−21ページから3−2
6ページ(参照することによりここに挿入する)に述べ
られているように、PENTIUM PROマイクロプ
ロセッサのアーキテクチャに従うページテーブルエント
リはグローバル(ページ)ビットGを含む。このビット
が、セットされているときは、変換ルックアサイドバッ
ファ内のページエントリはタスク切替えのときにクリア
されないことを示す。これにより、いくつかのタスクか
らのアクセスが可能な、メモリの共通ページを割り当て
ることができる。
【0047】例えば、C++言語で書かれたプログラム
用のライブラリルーチンは、多数のC++タスクからア
クセスできるようにグローバルメモリページ内に記憶す
る。Calder と Grunwaldの論文に関し
て上に述べたように、ライブラリルーチンは他の種類の
プログラムとは異なる分岐行動を持つことが分かった。
したがって、適当なPHT53の選択にグローバルビッ
トを用いれば、ページテーブルエントリにグローバルビ
ットを持つマイクロプロセッサに有用である。この発明
のこの実施の形態では、ページテーブルエントリPTE
内のグローバルビットGの状態(上に述べたように、
タスク切替えのときにそのページエントリがTLB19
からクリアされるかどうかを示す)は、上に述べたコー
ドセグメントCSから線U/Sで送られて来る信号と共
に、マルチプレクサ68の制御入力に入る。
【0048】この発明の好ましい実施の形態の、マルチ
プレクサ68によるPHT53から53の選択の例
を次の真理値表に示す。
【表1】
【0049】この発明の好ましい実施の形態では、マル
チプレクサ68の制御は、線U/S上のユーザ/スーパ
ーバイザ状態と、グローバルビットGの状態に応じて行
うが、適当なPHT53を選択するのに他の制御信号ま
たは情報をこれらの代わりにまたは追加して用いてよ
い。例えば、線FA上の取出しアドレスの一部と書込み
可能な範囲レジスタの内容とを比較して、取出しアドレ
スが、範囲レジスタが示す範囲内か範囲外かを決定し、
適当なPHT53を選択する際のプログラムの種類の識
別子としてこれを用いてよい。または、ページテーブル
エントリPTE内のこれまで割り当てられていない他の
ビットを用いて、適当なPHT53の選択のプログラム
制御を行うことができる。更にまた、セグメント記述子
DESC内の1つ以上のビットの状態に従ってこの選択
を行ってもよい。セグメント記述子DESCは、x86
アーキテクチャのマイクロプロセッサの保護モード動作
中にセグメントセレクタが指標付けした、グローバルま
たはローカル記述子テーブル内のエントリである。これ
らのビットは、現在まだ定義されていないビットか、ま
たはセグメント記述子の拡張から得られたPHT53の
選択コードを与えるビットである。更にまた、上述の制
御信号と取出しアドレス自身の選択されたサブセットと
を組み合わせて、分岐予測に用いる適当なPHT53を
選択してよい。多数のPHT53から選択するこれらの
方法は、出願人の仮出願番号第 /号、1996年12
月10日出願、「マイクロプロセッサ内で分岐予測に用
いる多数のグローバルパターン履歴表(Multipl
e Global Pattern History
Tables for Branch Predict
ion in a Microprocessor)」
(代理人書類番号第TI−23791P)に詳細に述べ
られており、これを参照することによりここに挿入す
る。
【0050】図3に戻って、前に述べたように、線TN
T上のマルチプレクサ68の出力はBTB入出力論理6
9に与えられる。線TNT上の予測コードが「予測され
た行う」分岐を示す場合は、BTB入出力論理69はB
TB内の現在のエントリ63のTARGET部に対応す
る有効な分岐ターゲットアドレスを与える。またBTB
入出力論理69は命令バッファ及び制御60への線AT
Rに、現在の命令の対応する分岐予測を出す。更にBT
B入出力論理69は、実行ユニットからの線NEWNに
より、新しく出現した分岐命令の該当するタグ、ターゲ
ット、オフセット、種類、履歴情報を受け、選択された
エントリ63にこの情報を従来の方法で書き込む。この
技術で知られているように、LRUなどの制御ビットを
用いて、新しい命令の情報を書き込むエントリ63を選
択する。
【0051】またBTB56は更新論理70を備える。
更新論理70は、前に予測された分岐命令の結果を示す
実行ユニット(例えば、ALU42)からの信号をバス
UPDに受ける。更新論理70は従来の回路で、関連す
る分岐の予測が正しかったか誤りだったかに従って、B
TB56内のエントリ63の内容を更新する。更に、P
HT53が適応性を持つことを考慮して、更新論理70
はPHT53への線PHUを駆動して、従来の方法によ
り、実行された分岐命令の予測の結果に従って予測コー
ドエントリPRDの内容を更新する。しかしこの発明の
好ましい実施の形態では、更新論理70が生成した線P
HU上の信号は、多数のPHT53の中から、終わった
分岐について更新すべき適当なものを選択する。パター
ン履歴表の適応更新はこの技術で知られており、例えば
前に参照したYeh とpattの論文に述べられてい
る。
【0052】この発明の好ましい実施の形態のBTB5
6と多数のグローバルパターン履歴表53の動作を、図
3に関して以下に説明する。もちろん、BTB56は線
FAのアドレスで取り出された非分岐命令では動作しな
い。最近出現しなかった(そしてBTB56内に割り当
てられた有効なエントリ63をこの時点に持たない)分
岐命令については、セレクタ61はエントリ63のどの
TAGフィールドにも一致するタグを見出さないので、
誤り信号、即ち「失敗」信号を命令バッファ及び制御6
0への線ATRに返す。この場合は、有効な分岐ターゲ
ットアドレスはマルチプレクサ57へのバスBR TR
Gに与えられず、マルチプレクサ52は次の論理取出し
アドレスFAのために別のソース(一般に取出しポイン
タ50)を選択する。この分岐命令の実行段階が終わる
と、BTB56は線NEWNから得た情報を用いて、B
TB入出力論理69を経て従来の方法で更新され、有効
なエントリ63がこの分岐命令に割り当てられる。
【0053】前に出現した、したがって対応するエント
リ63をBTB56内に持つ(即ち、取出しアドレスF
Aの一部がエントリ63のTAGフィールドと一致し、
対応するエントリ63のTYPE部から分かる)無条件
分岐命令では、BTB56は命令バッファ及び制御60
への線ATRに「行う」予測を与え、またマルチプレク
サ57へのバスBR TRGにこのエントリ63のTA
RGETフィールドからターゲットアドレスを与え、マ
ルチプレクサ52はこれを次の命令アドレスのソースと
して、従来の方法で用いる。これも無条件分岐命令であ
るサブルーチンRETURN命令の場合は、マルチプレ
クサ57は復帰アドレススタック55からの線RA上の
適当な復帰アドレスを選択し、マルチプレクサ52に次
の命令アドレスのソースとして、従来の方法で与える。
【0054】BTB56のセレクタ61が、線FAで送
られる現在の取出しアドレスが有効なエントリ63を持
つ条件付き分岐命令に対応すると決定した場合は、BT
B56は有効なエントリ63のkビットの分岐履歴フィ
ールドBHを各PHT53から53に送る。これら
のkビットはその分岐命令の最近のk個の予測に対応
し、実際の分岐結果だけを含むこともあり、またはまだ
評価が済んでいない推測的な分岐予測も含むこともあ
る。選択されたエントリ63のこれらのkビットの分岐
履歴フィールドBHを、一般に現在の分岐命令の現在の
分岐パターンと呼ぶ。この発明の好ましい実施の形態で
は、各PHT53から53内のセレクタ67はこれ
らのkビットを復号して、現在の分岐パターンと一致す
る予測コードエントリPRDを選択し、選択された予測
コードエントリPRDの内容を、関連する出力線PRE
からPREによりマルチプレクサ68に送る。各予
測コードエントリPRDは好ましくは2ビットコードを
含み、行う、行わない、強く行う、強く行わない、の4
つの予測状態の中の1つを示す。
【0055】一方、分岐命令を含むメモリの対応する部
分に関するページテーブルエントリPTE内のグロー
バルビットGの状態と、線U/Sの状態は、マルチプレ
クサ68を制御して一組の出力線PREからPRE
を選択し、線TNTを経てBTB56のBTB入出力論
理69に与える。上に述べたように、線TNTは好まし
くは、行う、行わない、強く行う、強く行わない、の予
測状態の1つを示す2ビットコードを送る。次にBTB
入出力論理69は線TNT上のコードに基づいて予測を
得、この予測(「行う」または「行わない」)を線AT
Rで命令バッファ及び制御60に送る。予測が「行う」
の場合は、対応するエントリ63のTARGETフィー
ルドをバスBRTRGに与え、マルチプレクサ57と5
2はこれを次の論理取出しアドレスFAとして選択す
る。予測が「行わない」の場合は、バスBR TRGに
有効なターゲットアドレスを与えず、マルチプレクサ5
2は取出しポインタ50の増分された出力を次に取り出
す命令のアドレスとして選択する。予測を生成した後
で、かつBTB56がエントリ63の分岐履歴フィール
ドBH内に推測的な分岐履歴を記憶している場合は、更
新論理70は現在の命令に対応するエントリ63内の分
岐履歴フィールドBHを更新する。命令に関する識別情
報と、予測の生成に用いるBTB56内のエントリ及び
PHT53に関する識別情報と共に、現在の分岐命令に
関する予測情報も、パイプラインにより命令と共に送ら
れる。または現在の分岐命令の小さな識別子をパイプラ
インと共に送ってよい。この場合はこの識別子は、BT
B56と該当するPHT53を更新するのに用いる取出
しユニット26のまたはその近くのローカル記憶内の位
置を指す。
【0056】分岐命令が終わると、該当する実行ユニッ
トは分岐の実際の結果を線UPDを通して更新論理70
に送る。更新論理70は終わった命令に対応するBTB
56のエントリ63内の分岐履歴フィールドBHに向け
て適当な信号を生成して、対応する予測が正しいか正し
くないか検査する。更に更新論理70は分岐の実際の結
果に従って、線PHUにより、該当するPHT53の中
の該当する予測コードエントリPRDを更新する(必然
的に線PHUには正しいPHT53と該当するエントリ
PRDを選択するのに必要な信号が送られる)。
【0057】図3に示すようにこの発明の好ましい実施
の形態では、PHT読取り/書込み回路83の制御の下
に、PHT53はバスPHTBUSを経て読取り可能か
つ書込み可能である。この発明のこの実施の形態では、
PHT読取り/書込み回路83は双方向マルチプレクサ
82とPHTアクセス制御回路84を備える。マルチプ
レクサ82の片側はバスPHTBUSに接続し、その反
対側は個々のバスによりPHT53に接続する。この例
では、32ビットバスによりマルチプレクサ82とPH
T53を接続し、1つのPHT53の全内容を1動作で
送ることができる。またはより小さなバス(2ビットバ
スPREを含む)を用いて、複数の読取りまたは書込み
サイクルにより、選択されたPHT53の内容をマルチ
プレクサ82に送ってよい。この場合は、好ましくはマ
ルチプレクサ82と共に別のレジスタを設けて、選択さ
れたPHT53の全内容をバスPHTBUSのデータ線
に乗せる。
【0058】この例では、マルチプレクサ82は32ビ
ットバスにより各PHT53からPHT53に接続
する。上に述べたように、PHT53はスーパーバイ
ザレベルのプログラムに関連するがグローバルではな
い。したがってこの発明のこの実施の形態では、PHT
53は好ましくは書込み可能でない。それは、この性
質のプログラムの分岐パターン履歴に基づく予測コード
は、BTB56内に保持するのが好ましいからである。
もちろん別の方法として、図3に点線のバス線で示すよ
うに、PHT53をマルチプレクサ82に同様に接続
してよい。各PHT53からPHT53は書込み可
能であって、図3に示すようにマルチプレクサ82に接
続する。PHT53と53は、関連するユーザ特権
レベルを与えられた種々のタスクで動的に書き換えるの
に特に適している。更に、PHT53は、関連するグ
ローバルスーパーバイザレベルのプログラム(一般にラ
イブラリ)が共通の分岐行動を持つという特殊な場合だ
け書換えてよい。特に、PHT53の内容を保存した
り再ロードしたりするという特殊な場合は、ライブラリ
ルーチンの種類がタスクによって変わる場合に対応する
(例えば、C++タスクとCOBOLタスクの間で切り
替える)。
【0059】PHTアクセス制御回路84はマルチプレ
クサ82を制御して、バスPHTBUSのデータ線と読
み取りまたは書き込む選択されたPHT53を接続し、
また関連する読取り/書込み線R/Wを経て選択された
TPHT53を制御して、読取りまたは書込みを行わせ
る。PHT53の選択と、読取りと書込みのどちらを行
うかの選択は、バスPHTBUSの制御線によりPHT
アクセス制御回路84に伝えられる。この発明の好まし
い実施の形態では、PHTアクセス制御回路84は選択
された読取り/書込み線R/Wに該当する信号を出し、
選択されたPHT53は読取りか書込みかに従って、そ
の全内容をマルチプレクサ82に送り、またはマルチプ
レクサ82から新しい内容を受ける。またPHTアクセ
ス制御回路84はオペランドユニット44に適当なハン
ドシェーク信号を送り、バスPHTBU上のデータの送
信を制御する。
【0060】この発明の好ましい実施の形態では、1つ
以上のPHT53の内容の読取りと書込みは、好ましく
はタスク切替えのときに行う。マルチタスクのマイクロ
プロセッサの技術で基本的なことであるが、タスク切替
えは、現在の活動的なタスクを他のタスクにより中断す
る事象である。中断されたタスクはタスク切替えのとき
にその全ての条件を、一般にこの技術でタスク制御構造
と呼ぶ(またはタスク制御プロックとかタスク状態ブロ
ックとも呼ぶ)メモリの一部に保存する。特定すると、
上述のようにマイクロプロセッサ10を実現するx86
アーキテクチャでは、タスク制御構造は、中断されたタ
スクの条件を記憶するタスク状態セグメント(TSS)
を含む。タスク状態セグメントの特定の位置は変動して
よく、一般に主メモリ305内に常駐し、実行中の便宜
のためにその写しをレベル2キャッシュ11やその他の
キャッシュに記憶する。後でタスク切替えを行って前に
中断されたタスクを再開するときなどに、そのタスクの
TSSの内容を検索してマイクロプロセッサの適当なレ
ジスタや記憶に読み込み、タスクを再開する。この技術
でよく知られているように、任意の時点で活動的なタス
クは1つだけであるが、このようなマルチタスク動作を
行うとマルチ処理のように見える。
【0061】この発明の好ましい実施の形態では、タス
ク切替えのときに、1つ以上のPHT53の内容をTS
Sの一部に記憶し、タスクを再び活動的にするタスク切
替えのときにそこから検索して、対応するPHT53に
再び読み込む。このようにして、この発明の好ましい実
施の形態のマイクロプロセッサ10は、分岐パターン履
歴に基づく分岐予測情報をタスク毎に保持するので、よ
り正確に分岐予測を行うことができる。
【0062】図4を参照して、マイクロプロセッサ10
が実行する特定のタスクに関連する、この発明の好まし
い実施の形態の例示のTSS90のメモリマップを詳細
に説明する。もちろんマイクロプロセッサ10が実行す
る各タスクは自身のTSS90をメモリ内に持ち、各T
SS90は、図4に示すように、またこの発明の好まし
い実施の形態に従って説明するように配列される。TS
S90内の各語はTSSベースアドレスから或るオフセ
ットにある。この例では、TSS90はメモリの中の3
0語を占め、オフセットはTSS90のベースアドレス
から最大29語である。TSS90の内容の多くは、特
に25語以下のオフセットにあるTSS90の内容は、
インテル社製のPENTIUMマイクロプロセッサの機
能性を持つマイクロプロセッサでは従来からあるもので
ある。図4に示すように、TSS90は完全なオフセッ
ト及びセグメントレジスタの内容と、異なる特権レベル
(CPL0からCPL2)のスタックのESPポインタ
及びセグメントSSと、タスクのページディレクトリの
ベースアドレスを記憶するCR3レジスタの保存された
内容を含む。またTSS90は、I/Oマップベースエ
ントリを含む。これは、保護モードにおいてI/Oアド
レス空間の保護に用いるI/Oマップのアドレスであ
る。前のTSSに逆に連結するためのエントリはセグメ
ント記述子を含む。これは、タスクが互いに入れ子にな
っているときに前の中断されたタスクのTSSを参照す
るものである。Tビットはテバッグトラップビットで、
これがセットされると、タスク切替えの時にテバッグ例
外になる。TSS90の中のN/Uと示されているフィ
ールドは用いない。
【0063】上に述べた従来のTSSエントリの他に、
TSS90はこの発明の好ましい実施の形態の、分岐パ
ターン履歴に基づく予測情報の記憶と検索に用いる別の
エントリを含む。これらの別のエントリはTSSベース
アドレスから26語オフセットから始まる。TSSベー
スアドレスから26語オフセットの下位部分は、動的ロ
ード制御ビットDLBを有するエントリ92を含む。T
SSのエントリ92内のDLBのビット数は書込み可能
なPHT53の数に対応し、DLBの各ビットは1つの
PHT53に関連する。PHT53から53だけが
書込み可能(PHT53は書込み不可)である図3の
例では、エントリ92内に3ビットのDLBが与えられ
る。後で詳細に説明するように、DLBの各ビットは、
TSS90に関連するタスクにタスク切替えを行うとき
にその関連するPHT53に専用のパターン履歴データ
をロードするかどうかを示す。一般にDLBのビット
は、必要に応じてタスク自身による、またはオペレーテ
ィングシステムによる命令制御の下にセットされる。
【0064】またTSS90は、この例でTSS90内
の27語から29語オフセットにあるエントリ91
ら91を含む。これらは書換え可能なPHT53
ら53にそれぞれ対応する。この例でエントリ91は
32ビットのサイズを持ち、それぞれ関連するPHT5
3の内容を記憶する。その内容は、TSS90に関連す
るタスクを中断した最近のタスク切替えのときの条件で
ある。上に述べたように、この場合は分岐履歴の4ビッ
トをPHT53に指標付けし、また各PHT53はそれ
ぞれ各2ビットの16エントリを含んでいるので、1つ
のPHT53の全内容を記憶するには32ビットの記憶
で十分である。
【0065】26語オフセットにある語の高位部分のエ
ントリ94は、PHT53の内容を含むTSS90の部
分の、ベースアドレスに対応するフィールドを含む。し
たがって、エントリ91のベースアドレスはTSS90
のベースアドレスとエントリ94の内容の和のところで
ある。図4に示す例では、エントリ94の内容は27語
オフセットに対応する。または、エントリ91の位置は
TSS90の中の別の場所でよい。この場合は、エント
リ94の内容は、TSS90のベースアドレスに対する
エントリ91の位置を示す。
【0066】次に図5を参照して、この発明の好ましい
実施の形態のタスク切替えルーチンの一部の動作を説明
する。図5の動作は、タスク切替えに必要な適当なシス
テムレベルの動作、例えば中断されたタスクに関するT
SS内の機械条件の情報の記憶や、新たに活動化するタ
スクに必要なTSSからの機械条件の再ロードなど、を
行う一連のプログラム命令内に含まれる。したがって、
図5の動作はマイクロプロセッサ10内の制御及び実行
回路により行われる。これは従来のオペレーティングシ
ステムの命令シーケンスで一般的である。以下の説明の
便宜上、中断されたタスクをTSS90に関連したタ
スクiと呼び、新たに活動化するタスクをTSS90
に関連したタスクjと呼ぶ。
【0067】図5に示すタスク切替えプロセスの部分は
決定95から始まる。ここで、中断されるタスクiのT
SS90内のビットDLBの状態を調べる。上に述べ
たように、TSS90内のLBDのビットがセットさ
れているときは、DLBのセットされたビットで示され
るPHT53については、タスクiは活動的なときの分
岐予測に自身の分岐パターン履歴に基づく予測情報を用
いることを示す。したがって、専用の予測情報を他のタ
スクにより修正されるのを防ぐために、示されたPHT
53の現在の条件をTSS90に記憶する。したがっ
て、TSS90内のDLBの任意のビットがセットさ
れている(即ち、決定95がYESである)場合は、プ
ロセス96を行う。図3を参照すると、プロセス96で
PHTアクセス制御84はマルチプレクサ82を制御し
て、TSS90内のDLBのセットされているビット
により示されたPHT53を順次にバスPHTBUSに
接続し、また選択されたPHT53に関連するセレクタ
67を制御して、その関連するPHT53の内容を順次
に読み取る。これらの内容を順次にバスPHTBUSに
乗せ、メモリ内の、中断されたタスクiに関連するTS
S90の対応するエントリ91に記憶する(ロード・
記憶ユニット40の1つにより)。上に述べたように、
この情報を記憶するTSS90内のアドレスは、TS
Sベースアドレスと、エントリ94のPHTエリアベー
スの和から決定する。次に流れは決定97に進む。TS
S90内のDLBのどのビットもセットされていない
(即ち、決定95がNOである)場合も、流れは決定9
7に進む。
【0068】決定97では、開始(または再開)するタ
スクjのTSS90内のDLBのビットの状態を決定
する。TSS90内のDLBのどのビットもセットさ
れていない(決定97がNOである)という条件は、タ
スクjがPHT53の内容を現在の条件で用いることを
示す。したがって、どのPHT53も操作せずに流れは
タスク切替えルーチンに進む。TSS90内のDLB
の1つ以上のビットがセットされている(決定97がY
ESである)場合は、タスクjは自身の分岐パターン履
歴に基づく予測情報を持ち、これをその分岐命令の分岐
予測に用いる。この場合は、流れはプロセス98に進
む。
【0069】プロセス98で、ロード・記憶ユニット4
0の1つがタスクjのTSS90の対応するエントリ
91の内容をバスPHTBUSに乗せると同時に、PH
Tアクセス制御回路84は、決定97でDLBのビット
がセットされていると決定したPHT53のセレクタ6
7に書込み信号を順次出す。プロセス98で、PHTア
クセス制御回路84とマルチプレクサ82は、決定97
で示されたPHT53のそれぞれについて書込み動作を
繰り返す。各繰返しにおいて線R/Wを通して書込み信
号をセレクタ67に与えると、選択されたPHT53に
TSS90の対応するエントリ91の内容がロードさ
れ、タスクjを中断したタスク切替えのときに前に記憶
した分岐パターン履歴に基づく予測コードを持つ。多数
のPHT53をこのようにして書き換えるので、同じタ
スク内の異なるプログラムの種類(例えば、アプリケー
ションコードやライブラリ)の分岐命令は、タスク特有
の分岐パターン履歴に基づく予測情報に基づいて予測す
ることができる。プロセス98の後、流れは適当なタス
ク切替えルーチンに戻り、従来の方法でタスク切替えプ
ロセスを終わる。
【0070】したがってこの発明の好ましい実施の形態
の動作の結果、分岐パターン履歴に基づく予測情報は各
タスクの専用の形式で保持され、他のタスク内の命令の
分岐行動により予測情報が修正されるのを防ぐ。更にこ
の発明の好ましい実施の形態では、分岐パターン履歴に
基づく予測情報の記憶と検索はタスク切替えのときに自
動的に行われるので、プログラマがプログラム制御によ
り行わせる必要はない。このようにこの発明により分岐
予測性能が改善される。
【0071】この発明については種々の別の形態が考え
られる。例えば、多数のPHTを用いることが好ましい
が、この発明は、極端な場合は単一のグローバルPHT
を用い、また逆の極端な場合は各BTBエントリ毎に1
つのPHTを用いるなど、他のBTB構成で用いること
ができる。しかし単一のPHTを用いる場合は、タスク
の開始のときに分岐パターン履歴に基づく予測情報を与
える必要がある。このため、例えば新しいタスクへのタ
スク切替えのときにPHTの内容を記憶する。しかしそ
のタスクが分岐を予測するだけの十分な情報を持たない
場合はPHTの内容に上書きしない。
【0072】この発明の他の実施の形態も考えられる。
例えば、特にタスク状態セグメントを持たないアーキテ
クチャでは、タスク切替えのときにポインタを書き換え
て、PHTと同等のもの、即ち分岐パターン履歴に基づ
く予測情報、が与えられるメモリ内の位置を指すように
してよい。この例では、別のタスクはその疑似PHTと
は別の位置を持ち、タスク切替えのときに単にポインタ
を書き換える。この方法は、オペレーティングシステム
による命令制御の下で処理するのが最もよい。
【0073】更に別の方法は、上に述べたように1つ以
上のPHTをBTB内に設けて、機械状態レジスタ(M
SR)への読取り及び書込みと同様に、プログラム制御
の下でロード及び記憶の操作に用いることである。この
方法はオペレーティングシステムによる命令制御の下で
も同様に実行できる。
【0074】更に、任意の上述の実施の形態及びその代
替と組み合わせて、タスク切替えのときに分岐パターン
履歴に基づく予測情報の記憶やロードを選択的に可能に
また不可能にすることができる。例えば、MSRに可能
/不可能ビットを設けて、その状態により予測情報の記
憶及びロード動作が可能か不可能かを示す。この可能/
不可能ビットのセットとリセットはプログラム制御の下
で行う。
【0075】この発明について好ましい実施の形態を参
照して説明したが、当業者はこの明細書と図面を参照す
ることにより、この発明の特徴と利点を実現するこれら
の実施の形態の修正や代替を考えることができる。この
ような修正や代替はこの発明の特許請求の範囲内にある
ものである。
【0076】以上の説明に関して更に以下の項を開示す
る。 (1) 多重タスクモードで動作するマイクロプロセッ
サであって、第1及び第2のタスクに従って命令を実行
する少なくとも1つの実行ユニットと、前記第1及び第
2タスクのそれぞれに関連する部分を含み、また命令を
記憶する部分を含む、メモリと、メモリにアドレスして
前記実行ユニットが実行する命令コードを検索する取出
しユニットであって、前記実行ユニットが実行した分岐
命令の一連の結果を記憶する分岐履歴回路と、前記分岐
履歴回路に結合し、前記分岐履歴回路からの分岐履歴フ
ィールドに対応する予測情報を与える、パターン履歴回
路と、取り出す命令のアドレスを選択する、アドレス指
定回路と、を備える取出しユニットと、前記パターン履
歴回路と前記メモリに結合し、前記第1タスクから前記
第2タスクへのタスク切替えに応じて前記予測情報を修
正する、回路と、を備える、マイクロプロセッサ。
【0077】(2) 前記メモリは前記第1及び第2タ
スクにそれぞれ関連する第1及び第2タスク制御構造を
備え、前記パターン履歴回路は複数の指標付けされた予
測コードエントリを持ち、また前記分岐履歴回路の分岐
履歴フィールドに対応する予測コードエントリの1つの
内容を出す出力を持ち、また前記修正回路は、パターン
履歴回路からの予測コードエントリを前記メモリに送っ
て前記第1タスク制御構造内に記憶し、また前記第1タ
スクから前記第2タスクへのタスク切替えに応じて、予
測コードエントリを第2のタスク制御構造からパターン
履歴回路に送る、回路、を備える、第1項記載のマイク
ロプロセッサ。
【0078】(3) 前記少なくとも1つの実行ユニッ
トは前記メモリとの間でデータのロードと記憶を行うロ
ード・記憶ユニットを備え、また前記通信回路は前記パ
ターン履歴回路と前記ロード・記憶ユニットに結合する
バスを備える、第2項記載のマイクロプロセッサ。 (4) 前記分岐履歴回路は、複数のエントリを有し、
各エントリは関連する分岐命令の命令アドレスに対応す
るタグフィールドを持ち、またその関連する分岐命令の
一連の前の分岐を記憶する分岐命令フィールドを持つ、
分岐ターゲットバッファ、を備える、第2項記載のマイ
クロプロセッサ。 (5) 前記分岐ターゲットバッファ内の複数のエント
リは分岐ターゲットアドレスを記憶するターゲットフィ
ールドをそれぞれ有し、また前記アドレス指定回路は、
分岐を行う予測に対応する出力を前記選択論理が出すと
これに応じて、前記関連する分岐命令に対応するエント
リの分岐ターゲットアドレスに対応するアドレスを選択
する、第4項記載のマイクロプロセッサ。
【0079】(6) 前記パターン履歴回路は、前記分
岐履歴回路に結合し、それぞれ複数の指標付けされた予
測コードエントリを持ち、またそれぞれ前記分岐履歴回
路からの分岐履歴フィールドに対応する予測コードエン
トリの1つの内容を出す出力を持つ、複数のパターン履
歴表、を備え、前記実行ユニットは複数のプログラムの
種類に従って命令を実行し、また前記取出しユニット
は、プログラム種類標識を受けるように結合し、前記プ
ログラム種類標識に対応する前記複数のパターン履歴表
の1つの出力を前記アドレス指定回路に選択的に送る、
選択論理、を更に有する、第2項記載のマイクロプロセ
ッサ。
【0080】(7) 分岐命令のプログラム種類標識は
前記分岐命令を含むプログラムに対応する特権レベル標
識を備える、第6項記載のマイクロプロセッサ。 (8) 前記特権レベル標識は前記分岐命令に対応する
1ビットのコードセグメントレジスタを備える、第7項
記載のマイクロプロセッサ。 (9) 分岐命令のプログラム種類標識は、前記分岐命
令を含むメモリの一部として少なくとも1ビットのペー
ジテーブルエントリを有する、第6項記載のマイクロプ
ロセッサ。
【0081】(10) 前記タスク制御構造はそれぞ
れ、タスク切替えに応じて前記パターン履歴回路からの
予測コードを前記タスク制御構造からロードするかどう
かを示す状態を記憶する、動的ロード制御ビットと、前
記パターン履歴回路からの予測コードを記憶するメモリ
位置、を有する、第2項記載のマイクロプロセッサ。
【0082】(11) 前記パターン履歴回路は、前記
分岐履歴回路に結合し、それぞれ複数の指標付けされた
予測コードエントリを持ち、またそれぞれ前記分岐履歴
回路からの分岐履歴フィールドに対応する予測コードエ
ントリの1つの内容を出す出力を持つ、複数のパターン
履歴表、を備え、前記実行ユニットは複数のプログラム
の種類に従って命令を実行し、前記取出しユニットは、
プログラム種類標識を受けるように結合し、前記プログ
ラム種類標識に対応する前記複数のパターン履歴表の1
つの出力を前記アドレス指定回路に選択的に送る、選択
論理、を更に備え、また前記タスク制御構造はそれぞ
れ、タスク切替えに応じて前記複数のパターン履歴表の
関連する1つの予測コードを前記タスク制御構造からロ
ードするかどうかを示す状態を記憶する、複数の動的ロ
ード制御ビットと、前記複数のパターン履歴表の関連す
る1つからの予測コードをそれぞれ記憶する、複数のメ
モリ位置と、を備える、第2項記載のマイクロプロセッ
サ。
【0083】(12) 前記メモリは、前記マイクロプ
ロセッサの外部にある主メモリと、前記マイクロプロセ
ッサと共にオンチップであるキャッシュメモリと、を備
え、前記タスク制御構造は主メモリに記憶され、また前
記キャッシュメモリは前記タスク制御構造の写しを含
む、第2項記載のマイクロプロセッサ。 (13) パイプライン化マルチタスクのマイクロプロ
セッサを操作する方法であって、パイプライン化マイク
ロプロセッサの取出し段階で第1のタスクの分岐命令を
検出し、前記検出ステップに応じて、分岐履歴フィール
ドの少なくとも一部を検索し、前記分岐履歴フィールド
の前記検索された部分に対応する記憶された予測情報か
ら、分岐予測を生成し、前記第1タスクから第2のタス
クへのタスク切替えに応じて、前記予測情報を修正す
る、パイプライン化マルチタスクマイクロプロセッサを
操作する方法。
【0084】(14) 分岐予測を生成する前記ステッ
プは、前記検出された分岐命令の分岐履歴フィールドの
検索された部分に対応する、パターン履歴表内に記憶さ
れている予測情報を検索することを含み、前記修正する
ステップは、前記パターン履歴表からの予測情報を前記
第1タスクに関連するメモリの第1のタスク制御構造部
分に記憶し、前記第2タスクに関連するメモリの第2の
タスク制御構造部分から予測情報をロードする、第13
項記載のパイプライン化マルチタスクマイクロプロセッ
サを操作する方法。
【0085】(15) タスク切替えを行う前記ステッ
プは、メモリの前記第1タスク制御構造部分内の動的ロ
ードビットを調べる、ことを更に含み、また前記記憶す
るステップは、メモリの前記第1タスク制御構造部分内
の動的ロードビットが予測情報をメモリの前記第1タス
ク制御構造部分に記憶すべきことを示すと、これにに応
じて行う、第14項記載のパイプライン化マルチタスク
マイクロプロセッサを操作する方法。 (16) タスク切替えを行う前記ステップは、メモリ
の前記第2タスク制御構造部分内の動的ロードビットを
調べる、ことを更に含み、また前記ロードするステップ
は、メモリの前記第2タスク制御構造部分内の動的ロー
ドビットが、予測情報がメモリの前記第2タスク制御構
造部分にあることを示すと、これに応じて行う、第15
項記載のパイプライン化マルチタスクマイクロプロセッ
サを操作する方法。
【0086】(17) 分岐予測を生成する前記ステッ
プは、複数のパターン履歴表の中の選択された1つから
検索された分岐履歴フィールドの部分に対応して行い、
タスク切替えを行う前記ステップは、メモリの前記第1
及び第2タスク制御構造部分内の、それぞれ前記複数の
パターン履歴表の1つに関連する複数の動的ロードビッ
トを調べる、ことを更に含み、前記記憶するステップ
は、メモリの前記第1タスク制御構造部分内の1つ以上
の動的ロードビットが、前記複数のパターン履歴表の関
連するものについて予測情報をメモリの前記第1タスク
制御構造部分に記憶すべきことを示すと、これに応じて
行い、また前記ロードするステップは、メモリの前記第
2タスク制御構造部分内の1つ以上の動的ロードビット
が、前記複数のパターン履歴表の関連するものについて
予測情報がメモリの前記第2タスク制御構造部分にある
ことを示すと、これに応じて行う、第14項記載のパイ
プライン化マルチタスクマイクロプロセッサを操作する
方法。
【0087】(18) 前記分岐命令に対応するプログ
ラムの種類を決定することを更に含み、また分岐予測を
生成する前記ステップは、前記決定ステップで決定され
た前記プログラムの種類に従って選択された、複数のパ
ターン履歴表の1つから検索された前記分岐履歴フィー
ルドの部分に対応して行う、第14項記載のパイプライ
ン化マルチタスクマイクロプロセッサを操作する方法。 (19) 前記決定するステップは、前記検出された分
岐命令を含むプログラムに対応する特権レベル標識の状
態を調べる、ことを含む、第18項記載のパイプライン
化マルチタスクマイクロプロセッサを操作する方法。
【0088】(20) 前記特権レベル標識は、前記検
出された分岐命令に対応する1ビットのコードセグメン
トレジスタを備える、第19項記載のパイプライン化マ
ルチタスクマイクロプロセッサを操作する方法。 (21) 前記決定するステップは、前記検出された分
岐命令を含むメモリの一部について少なくとも1ビット
のページテーブルエントリの状態を調べる、ことを含
む、第18項記載のパイプライン化マルチタスクマイク
ロプロセッサを操作する方法。
【0089】(22) 前記第1及び第2タスクの予測
情報はメモリの第1及び第2部分にそれぞれ記憶され、
前記生成するステップは、前記分岐履歴フィールドの検
索された部分に対応するメモリの前記第1部分から予測
情報を検索することを含み、前記修正するステップは、
メモリの前記第2部分を指すようポインタを書き直し、
前記第2タスク内の分岐命令を検出すると、前記生成す
るステップはメモリの前記第2部分から予測情報を検索
するようにする、ことを含む、第13項記載のパイプラ
イン化マルチタスクマイクロプロセッサを操作する方
法。
【0090】(23) マイクロプロセッサとこれを含
むシステムであって、分岐命令を含むプログラムの種類
に応じて分岐予測を行う。取出しユニット(26)は分
岐ターゲットバッファ(56)と、複数のパターン履歴
表(53)を有する。選択論理(80)は各分岐命令毎
に、命令を含むプログラムの種類を示す信号を受けて1
つのパターン履歴表(53)を選択し、これを用いて、
命令アドレスに対応する分岐ターゲットバッファ(5
6)のエントリ内の分岐履歴フィールド(BH)の一部
に応じて予測コードを生成する。パターン履歴表(5
3)を選択するのに用いる信号の例として、命令の特権
レベル(即ち、ユーザレベルかスーパーバイザレベル)
の指標(U/S)がある。タスク切替えの場合は、1つ
以上のパターン履歴表(53)の内容を、中断されたタ
スクに対応するタスク状態セグメント(90)に記憶
し、新しいタスクのタスク状態セグメントからのエント
リをパターン履歴表(53)にロードする。このように
して、マイクロプロセッサをマルチタスク環境で動作さ
せるとき、各タスクは自身の分岐パターン履歴に基づく
予測情報を保持する。
【図面の簡単な説明】
【図1】この発明の好ましい実施の形態のマイクロプロ
セッサとシステムのブロック図。
【図2】この発明の好ましい実施の形態の図1のマイク
ロプロセッサ内の取出しユニットのブロック図。
【図3】この発明の好ましい実施の形態の図1のマイク
ロプロセッサ内の分岐ターゲットバッファとパターン履
歴表と関連する回路のブロック図。
【図4】この発明の好ましい実施の形態のタスク状態セ
グメントの配置を示すメモリマップ。
【図5】この発明の好ましい実施の形態のタスク切替え
ルーチンの一部を示す流れ図。
【符号の説明】
26 取出しユニット 53 パターン履歴表 56 分岐ターゲットバッファ 80 選択論理 90 タスク状態セグメント

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】多重タスクモードで動作するマイクロプロ
    セッサであって、 第1及び第2のタスクに従って命令を実行する少なくと
    も1つの実行ユニットと、 前記第1及び第2タスクのそれぞれに関連する部分を含
    み、また命令を記憶する部分を含む、メモリと、 メモリにアドレスして前記実行ユニットが実行する命令
    コードを検索する取出しユニットであって、 前記実行ユニットが実行した分岐命令の一連の結果を記
    憶する分岐履歴回路と、 前記分岐履歴回路に結合し、前記分岐履歴回路からの分
    岐履歴フィールドに対応する予測情報を与える、パター
    ン履歴回路と、 取り出す命令のアドレスを選択する、アドレス指定回路
    と、を備える取出しユニットと、 前記パターン履歴回路と前記メモリに結合し、前記第1
    タスクから前記第2タスクへのタスク切替えに応じて前
    記予測情報を修正する、回路と、を備える、マイクロプ
    ロセッサ。
  2. 【請求項2】パイプライン化マルチタスクマイクロプロ
    セッサを操作する方法であって、 パイプライン化マイクロプロセッサの取出し段階で第1
    のタスクの分岐命令を検出し、 前記検出ステップに応じて、分岐履歴フィールドの少な
    くとも一部を検索し、 前記分岐履歴フィールドの前記検索された部分に対応す
    る記憶された予測情報から、分岐予測を生成し、 前記第1タスクから第2のタスクへのタスク切替えに応
    じて、前記予測情報を修正する、パイプライン化マルチ
    タスクマイクロプロセッサを操作する方法。
JP10031921A 1996-12-30 1998-01-05 マイクロプロセッサ内の動的にロード可能なパターン履歴表 Pending JPH10198563A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US3439796P 1996-12-30 1996-12-30
US034397 1996-12-30

Publications (1)

Publication Number Publication Date
JPH10198563A true JPH10198563A (ja) 1998-07-31

Family

ID=21876136

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10031921A Pending JPH10198563A (ja) 1996-12-30 1998-01-05 マイクロプロセッサ内の動的にロード可能なパターン履歴表

Country Status (3)

Country Link
US (1) US6108775A (ja)
EP (1) EP0855646A3 (ja)
JP (1) JPH10198563A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7085920B2 (en) 2000-02-02 2006-08-01 Fujitsu Limited Branch prediction method, arithmetic and logic unit, and information processing apparatus for performing brach prediction at the time of occurrence of a branch instruction
JP2006285996A (ja) * 2005-04-01 2006-10-19 Arm Ltd 複数の命令セットデータ処理システム内の条件付分岐命令エンコーディング
JP2014501969A (ja) * 2010-11-18 2014-01-23 日本テキサス・インスツルメンツ株式会社 コンテキスト切替え方法及び装置
JP2016525252A (ja) * 2014-01-27 2016-08-22 ヴィア アライアンス セミコンダクター カンパニー リミテッド オペレーティング・システム・ルーチンのための予測履歴ストレージのフラクショナルな使用
US9891918B2 (en) 2014-01-27 2018-02-13 Via Alliance Semiconductor Co., Ltd. Fractional use of prediction history storage for operating system routines

Families Citing this family (49)

* 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
US6237065B1 (en) * 1999-05-14 2001-05-22 Hewlett-Packard Company Preemptive replacement strategy for a caching dynamic translator
US6438673B1 (en) * 1999-12-30 2002-08-20 Intel Corporation Correlated address prediction
US6877089B2 (en) * 2000-12-27 2005-04-05 International Business Machines Corporation Branch prediction apparatus and process for restoring replaced branch history for use in future branch predictions for an executing program
JP4027620B2 (ja) * 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US6970985B2 (en) 2002-07-09 2005-11-29 Bluerisc Inc. Statically speculative memory accessing
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
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US9489645B2 (en) * 2004-05-13 2016-11-08 International Business Machines Corporation Workflow decision management with derived scenarios and workflow tolerances
EP1628235A1 (en) * 2004-07-01 2006-02-22 Texas Instruments Incorporated Method and system of ensuring integrity of a secure mode entry sequence
US7380180B2 (en) * 2004-07-16 2008-05-27 Intel Corporation Method, system, and apparatus for tracking defective cache lines
JP4362096B2 (ja) * 2004-09-30 2009-11-11 富士通株式会社 情報処理装置,リプレース方法,リプレースプログラム及びリプレースプログラムを記録したコンピュータ読取可能な記録媒体
US20060155847A1 (en) * 2005-01-10 2006-07-13 Brown William A Deriving scenarios for workflow decision management
US20060155848A1 (en) * 2005-01-10 2006-07-13 Brown William A Workflow decision management including identifying user reaction to workflows
US20060156276A1 (en) * 2005-01-10 2006-07-13 Brown William A Workflow decision management with heuristics
US7437543B2 (en) * 2005-04-19 2008-10-14 International Business Machines Corporation Reducing the fetch time of target instructions of a predicted taken branch instruction
US20060277396A1 (en) * 2005-06-06 2006-12-07 Renno Erik K Memory operations in microprocessors with multiple execution modes and register files
JP2007052481A (ja) * 2005-08-15 2007-03-01 Matsushita Electric Ind Co Ltd Icカード用lsi
US20070100990A1 (en) 2005-11-01 2007-05-03 Brown William A Workflow decision management with workflow administration capacities
US7657636B2 (en) * 2005-11-01 2010-02-02 International Business Machines Corporation Workflow decision management with intermediate message validation
US8155119B2 (en) * 2005-11-01 2012-04-10 International Business Machines Corporation Intermediate message invalidation
US20070100884A1 (en) * 2005-11-01 2007-05-03 Brown William A Workflow decision management with message logging
US8010700B2 (en) * 2005-11-01 2011-08-30 International Business Machines Corporation Workflow decision management with workflow modification in dependence upon user reactions
US7565654B2 (en) * 2006-01-10 2009-07-21 National Instruments Corporation Programmatic control of tasks in a programmable logic controller
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
US8301890B2 (en) * 2006-08-10 2012-10-30 Inside Secure Software execution randomization
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US8341352B2 (en) * 2007-04-17 2012-12-25 International Business Machines Corporation Checkpointed tag prefetcher
US9519480B2 (en) * 2008-02-11 2016-12-13 International Business Machines Corporation Branch target preloading using a multiplexer and hash circuit to reduce incorrect branch predictions
US8131982B2 (en) * 2008-06-13 2012-03-06 International Business Machines Corporation Branch prediction instructions having mask values involving unloading and loading branch history data
US10338923B2 (en) * 2009-05-05 2019-07-02 International Business Machines Corporation Branch prediction path wrong guess instruction
US8521999B2 (en) * 2010-03-11 2013-08-27 International Business Machines Corporation Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history
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
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
US9507597B2 (en) * 2013-06-10 2016-11-29 Via Alliance Semiconductor Co., Ltd. Selective accumulation and use of predicting unit history
US9513924B2 (en) * 2013-06-28 2016-12-06 Globalfoundries Inc. Predictor data structure for use in pipelined processing
GB2534522B (en) * 2014-07-25 2016-12-28 Imagination Tech Ltd Conditional branch prediction using a long history
US9934041B2 (en) 2015-07-01 2018-04-03 International Business Machines Corporation Pattern based branch prediction
US10423418B2 (en) 2015-11-30 2019-09-24 International Business Machines Corporation Method for maintaining a branch prediction history table
CN105718241B (zh) * 2016-01-18 2018-03-13 北京时代民芯科技有限公司 一种基于sparc v8体系结构的分类式混合分支预测系统
US11709679B2 (en) * 2016-03-31 2023-07-25 Qualcomm Incorporated Providing load address predictions using address prediction tables based on load path history in processor-based systems
US10489296B2 (en) 2016-09-22 2019-11-26 International Business Machines Corporation Quality of cache management in a computer
US10754781B2 (en) 2017-02-27 2020-08-25 International Business Machines Corporation Heuristic method to control fetching of metadata from a cache hierarchy
GB2574042B (en) * 2018-05-24 2020-09-09 Advanced Risc Mach Ltd Branch Prediction Cache
US10705848B2 (en) * 2018-05-24 2020-07-07 Arm Limited TAGE branch predictor with perceptron predictor as fallback predictor
US11775202B2 (en) * 2021-07-12 2023-10-03 EMC IP Holding Company LLC Read stream identification in a distributed storage system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
DE69727773T2 (de) * 1996-12-10 2004-12-30 Texas Instruments Inc., Dallas Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7085920B2 (en) 2000-02-02 2006-08-01 Fujitsu Limited Branch prediction method, arithmetic and logic unit, and information processing apparatus for performing brach prediction at the time of occurrence of a branch instruction
JP2006285996A (ja) * 2005-04-01 2006-10-19 Arm Ltd 複数の命令セットデータ処理システム内の条件付分岐命令エンコーディング
JP2014501969A (ja) * 2010-11-18 2014-01-23 日本テキサス・インスツルメンツ株式会社 コンテキスト切替え方法及び装置
JP2016525252A (ja) * 2014-01-27 2016-08-22 ヴィア アライアンス セミコンダクター カンパニー リミテッド オペレーティング・システム・ルーチンのための予測履歴ストレージのフラクショナルな使用
US9891918B2 (en) 2014-01-27 2018-02-13 Via Alliance Semiconductor Co., Ltd. Fractional use of prediction history storage for operating system routines

Also Published As

Publication number Publication date
EP0855646A2 (en) 1998-07-29
US6108775A (en) 2000-08-22
EP0855646A3 (en) 2000-06-14

Similar Documents

Publication Publication Date Title
JPH10198563A (ja) マイクロプロセッサ内の動的にロード可能なパターン履歴表
US5935241A (en) Multiple global pattern history tables for branch prediction in a microprocessor
US7437543B2 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
US6119222A (en) Combined branch prediction and cache prefetch in a microprocessor
US6581151B2 (en) Apparatus and method for speculatively forwarding storehit data based on physical page index compare
US5864697A (en) Microprocessor using combined actual and speculative branch history prediction
US5748932A (en) Cache memory system for dynamically altering single cache memory line as either branch target entry or prefetch instruction queue based upon instruction sequence
EP0465321B1 (en) Ensuring data integrity in multiprocessor or pipelined processor system
US6266755B1 (en) Translation lookaside buffer with virtual address conflict prevention
US5511175A (en) Method an apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5826074A (en) Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register
US6351796B1 (en) Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
US5768574A (en) Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor
US5930832A (en) Apparatus to guarantee TLB inclusion for store operations
US10067875B2 (en) Processor with instruction cache that performs zero clock retires
JPH06119166A (ja) 簡略命令セットプロセッサでレジスタ内データ操作を行なう方法
JPH06131175A (ja) 高性能プロセッサのためのバイト比較操作方法
JPH06110685A (ja) 高性能プロセッサにおける分岐予想方法
JPH06103067A (ja) 高性能プロセッサにおける分岐予想方法
US5935238A (en) Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
KR20030010727A (ko) 변환 색인 버퍼 플러시 필터
US20110320789A1 (en) Method and Apparatus for High Performance Cache Translation Look-Aside Buffer TLB Lookups Using Multiple Page Size Prediction
US5964869A (en) Instruction fetch mechanism with simultaneous prediction of control-flow instructions
JPH08292886A (ja) ノン・フォルティング・ロード命令をインプリメントする方法及び装置
US5909566A (en) Microprocessor circuits, systems, and methods for speculatively executing an instruction using its most recently used data while concurrently prefetching data for the instruction