JPH09185506A - プロセッサ内で命令を実行する方法およびシステム - Google Patents

プロセッサ内で命令を実行する方法およびシステム

Info

Publication number
JPH09185506A
JPH09185506A JP8279749A JP27974996A JPH09185506A JP H09185506 A JPH09185506 A JP H09185506A JP 8279749 A JP8279749 A JP 8279749A JP 27974996 A JP27974996 A JP 27974996A JP H09185506 A JPH09185506 A JP H09185506A
Authority
JP
Japan
Prior art keywords
instruction
branch
instructions
sequential
processor
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
JP8279749A
Other languages
English (en)
Inventor
Carl D Dietz
カール・ディー・ディーツ
Robert T Golla
ロバート・ティー・ゴラ
Christopher H Olson
クリストファー・エイチ・オルソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH09185506A publication Critical patent/JPH09185506A/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

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

Abstract

(57)【要約】 (修正有) 【課題】 プロセッサが、各プロセッサ・サイクル中に
実行のためディスパッチできる命令の最大個数を有する
場合に、メモリに記憶された複数の命令の中から選択さ
れた命令を実行する。 【解決手段】 命令のサブセットが実行のためメモリか
ら取り出される。その命令の組に未解決の分岐命令が含
まれるなら、その分岐命令によって示される分岐が実行
されるか否かを予測し、予測される場合は、その分岐命
令によって示される非順次分岐先命令をメモリから取り
出し、順次実行経路内の命令をディスパッチせずに、分
岐予測の後のプロセッサ・サイクル中に最大個数の命令
を実行のためにディスパッチできるかどうかを判定す
る。最大個数未満で命令をディスパッチできる場合は順
次実行経路内の命令を投機的にディスパッチする。分岐
予測が覆されたときは、非順次分岐先命令の取出しを取
り消し、順次実行経路内の命令を実行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、全般的にはデータ
処理システムの方法およびシステムに関し、具体的に
は、プロセッサ内で命令を実行する方法およびシステム
に関する。さらに具体的に言うと、本発明は、分岐が行
われると誤って予測した時に被る分岐誤予測ペナルティ
を最小にする、プロセッサ内で命令を実行する方法およ
びシステムに関する。
【0002】
【従来の技術】通常の高性能プロセッサには、命令を記
憶するための命令キャッシュ、実行のため命令キャッシ
ュから取り出された命令を一時的に記憶するための命令
バッファ、順次命令を実行するための複数の実行ユニッ
ト、分岐命令を実行するための分岐処理ユニット、命令
バッファから実行ユニットのうちの特定の1つに順次命
令をディスパッチするためのディスパッチ・ユニット、
および、実行を終了したが完了していない命令を一時的
に記憶するための完了バッファが含まれる。
【0003】当技術分野で周知の通り、命令待ち行列か
ら取り出された順次命令は、命令バッファに記憶され、
実行ユニットへのディスパッチを保留される。対照的
に、命令キャッシュから取り出された分岐命令は、通常
は実行のため分岐処理ユニットに直接転送される。場合
によっては、条件分岐命令が依存する条件レジスタの値
を、分岐命令実行の前に確認することができる、すなわ
ち、実行の前に分岐を解決できる。実行の前に分岐が行
われるものとして解決される場合、分岐命令の分岐先ア
ドレスにある命令が、プロセッサによって取り出され、
実行される。さらに、事前取出しされた、分岐命令に続
く順次命令があれば、すべて破棄される。しかし、分岐
命令の結果は、条件レジスタ依存性が原因で、その分岐
命令を実行する前に判定できないことがしばしばであ
る。分岐命令が実行時に未解決のままである時には、分
岐処理ユニットは、分岐ヒストリ・テーブルなどの予測
機構を利用して、どの実行経路を通るかを予測する。通
常のプロセッサでは、実行されると予測された分岐に続
く順次命令のディスパッチは、停止され、次のプロセッ
サ・サイクルの間には、投機分岐先命令ストリーム内の
命令が取り出される。実行されると予測された分岐が誤
予測として解決される場合、その分岐命令に続く順次実
行ストリームを復元するのに必要なサイクル・タイムが
原因で、プロセッサが誤予測ペナルティを被る。
【0004】ここで図5および図6を参照すると、分岐
が行われるものとして分岐命令が誤って予測された時に
被る誤予測ペナルティを示す例が示されている。図5で
は、比較命令(CMP)によって生成される条件レジス
タ値に基づいて分岐先命令(T0)へ分岐する条件分岐
命令(BC)を含む命令シーケンスが示されている。図
5に示された命令シーケンスには、4つの順次命令S0
ないしS3も含まれる。4命令の取出し帯域幅と2命令
のディスパッチ帯域幅を有する通常のプロセッサ内での
この命令シーケンスの実行を示すタイミング図を、図6
に示す。
【0005】図6のサイクル1では、命令S0、CM
P、S1およびBCが、命令キャッシュから取り出さ
れ、命令バッファ内に記憶される。サイクル2の間に、
4つの後続の順次命令(S2、S3、S4およびS5)
が取り出され、命令S0およびCMPが、実行のため実
行ユニットにディスパッチされる。さらに、条件分岐B
Cは、サイクル2で実行されるものとして予測される。
その結果、サイクル3で分岐先命令T0およびT1が取
り出される。サイクル3の間に、CMPが実行を終了す
るので、この分岐命令は予測と違う形で解決される。B
Cは、サイクル2で実行されるものとして予測されたの
で、BCに先行する順次命令だけがサイクル3でディス
パッチされる。現在の正しい取出しアドレスは、サイク
ル4まで復元されないので、正しい順次命令は、サイク
ル6になるまで実行ユニットによって実行することがで
きない。したがって、図6に示されているように、この
プロセッサは、順次命令S1の実行と順次命令S2およ
びS3の実行の間に誤予測ペナルティを被る。この誤予
測ペナルティは、実行ユニットが遊休状態であるか誤っ
て予測された経路内の命令を実行しているサイクル数と
して定義されるが、これによってS2の実行が2サイク
ル、S3の実行が1サイクル遅延し、1.5サイクルの
平均誤予測ペナルティがもたらされる。サイクル4の間
に2つの命令を実行できるはずなのに、そのうちの1つ
しか実行されないので、サイクル4では1/2サイクル
のペナルティを被る。
【0006】実行されるものとしての未解決分岐の誤予
測に関連する性能ペナルティがあるので、分岐が実行さ
れると誤って予測される場合に被る分岐誤予測ペナルテ
ィを最小にする、命令実行の改良された方法およびシス
テムを提供することが望ましい。
【0007】
【発明が解決しようとする課題】したがって、本発明の
目的は、データ処理のための改良された方法およびシス
テムを提供することである。
【0008】本発明のもう1つの目的は、プロセッサ内
で命令を実行するための改良された方法およびシステム
を提供することである。
【0009】本発明のもう1つの目的は、分岐が実行さ
れるものとして誤って予測された時に被る分岐誤予測ペ
ナルティが最小になる、命令を実行するための改良され
た方法およびシステムを提供することである。
【0010】
【課題を解決するための手段】前述の目的は、これから
説明する形で達成される。プロセッサが、各プロセッサ
・サイクル中に実行のためディスパッチできる命令の最
大個数を有する場合に、メモリに記憶された複数の命令
の中から選択された命令を実行するための、プロセッサ
内の方法およびシステムを開示する。命令のサブセット
が、実行のためメモリから取り出される。その後、その
命令の組に未解決の分岐命令が含まれるかどうかを判定
する。命令の組に未解決の分岐命令が含まれると判定さ
れることに応答して、その分岐命令によって示される分
岐が実行されるか否かを予測する。分岐が実行されると
いう予測に応答して、その分岐命令によって示される非
順次分岐先命令が、メモリから取り出される。順次実行
経路内の命令をディスパッチせずに、分岐予測の後のプ
ロセッサ・サイクル中に最大個数の命令を実行のために
ディスパッチできるかどうかを判定する。順次実行経路
内の命令をディスパッチせずに分岐予測の後のプロセッ
サ・サイクルで最大個数未満の分岐先命令をディスパッ
チできるという判定に応答して、順次実行経路内の命令
を、実行のため投機的にディスパッチする。分岐予測が
覆されたことに応答して、非順次分岐先命令の取出しを
取り消し、順次実行経路内の命令を実行し、これによっ
て、誤って予測された分岐に起因する、プロセッサが被
る性能ペナルティを最小にする。
【0011】本発明の上記ならびに追加の目的、特徴お
よび長所は、以下の詳細に記述された説明で明らかにな
ろう。
【0012】
【発明の実施の形態】ここで図面、具体的には図1を参
照すると、全体として符号10で示される、本発明の好
ましい実施例に従って情報を処理するためのプロセッサ
のブロック図が示されている。図示の実施例では、プロ
セッサ10に、単一の集積回路スーパースカラー・マイ
クロプロセッサが含まれる。したがって、下でさらに述
べるように、プロセッサ10には、さまざまな実行ユニ
ット、レジスタ、バッファ、メモリ、および他の機能ユ
ニットが含まれ、これらのすべてが集積回路によって形
成される。本発明の好ましい実施例では、プロセッサ1
0に、縮小命令セット・コンピュータ(RISC)技法
に従って動作するPowerPC(商標)系列のマイク
ロプロセッサの1つが含まれる。図1に示されるよう
に、プロセッサ10は、プロセッサ10内のバス・イン
ターフェース・ユニット(BIU)12を介してシステ
ム・バス11に結合される。BIU12は、プロセッサ
10と、主記憶(図示せず)など、システム・バス11
に結合された他の装置との間での情報の転送を制御す
る。プロセッサ10、システム・バス11およびシステ
ム・バス11に結合された他の装置が、ホスト・データ
処理システムを形成する。
【0013】BIU12は、プロセッサ10内の命令キ
ャッシュ14およびデータ・キャッシュ16に接続され
る。命令キャッシュ14やデータ・キャッシュ16など
の高速キャッシュを用いると、前に主記憶から命令キャ
ッシュ14またはデータ・キャッシュ16に転送された
データまたは命令のサブセットへの比較的高速のアクセ
ス時間をプロセッサ10が達成できるようになり、した
がって、ホスト・データ処理システムの動作速度が向上
する。命令キャッシュ14は、さらに、実行のため各サ
イクル中に命令キャッシュ14から命令を取り出すシー
ケンシャル・フェッチャ17に結合される。シーケンシ
ャル・フェッチャ17は、命令キャッシュ14から取り
出した分岐命令は実行のため分岐処理ユニット(BP
U)18に送るが、順次命令は、プロセッサ10内の他
の実行回路による実行のため命令待ち行列19に記憶す
る。
【0014】図示の実施例では、BPU18に加えて、
プロセッサ10の実行回路に、固定小数点ユニット(F
XU)22、ロード/ストア・ユニット(LSU)28
および浮動小数点ユニット(FPU)30が含まれる。
コンピュータ技術の当業者に周知の通り、FXU22、
LSU28およびFPU30のそれぞれは、各プロセッ
サ・サイクル中に順次命令の特定の種類に含まれる1つ
または複数の命令を実行する。たとえば、FXU22
は、指定された汎用レジスタ(GPR)32から受け取
るソース・オペランドを使用して、加算、減算、AN
D、OR、XORなどの固定小数点数学演算を実行す
る。固定小数点命令の実行の後に、FXU22は、その
命令のデータ結果をGPRリネーム・バッファ33に出
力する。GPRリネーム・バッファ33は、結果データ
をGPRリネーム・バッファ33からGPR32のうち
の1つまたは複数へ転送することによって命令が完了す
るまで、結果データの一時記憶域となる。逆に、FPU
30は、浮動小数点レジスタ(FPR)36から受け取
るソース・オペランドに対して、浮動小数点乗除算など
の浮動小数点演算を実行する。FPU30は、浮動小数
点命令の実行から生じるデータを、選択されたFPRリ
ネーム・バッファ37に出力し、このFPRリネーム・
バッファ37は、結果データをFPRリネーム・バッフ
ァ37から選択されたFPR36に転送することによっ
て命令が完了するまで、結果データを一時的に記憶す
る。名前からわかるように、LSU28は、メモリ(す
なわちデータ・キャッシュ16または主記憶)から選択
されたGPR32またはFPR36へデータをロードす
るか、選択されたGPR32またはFPR36からメモ
リへデータをストアする浮動小数点命令および固定小数
点命令を実行する。
【0015】プロセッサ10は、命令のパイプライン化
と非整順実行の両方を使用して、そのスーパースカラー
・アーキテクチャの性能をさらに向上させる。したがっ
て、命令は、データ依存性が監視される限り、FXU2
2、LSU28およびFPU30によって任意の順序で
実行できる。さらに、命令は、FXU22、LSU28
およびFPU30のそれぞれによって、パイプライン・
ステージのシーケンスで処理される。高性能プロセッサ
に典型的であるとおり、各命令は、5つの別個のステー
ジすなわち、取出し、復号/ディスパッチ、実行、終了
および完了の各ステージで処理される。
【0016】取出しステージの間に、シーケンシャル・
フェッチャ17は、命令キャッシュ14から1つまたは
複数のメモリ・アドレスに関連する1つまたは複数の命
令を取り出す。命令キャッシュ14から取り出された順
次命令は、シーケンシャル・フェッチャ17によって、
命令待ち行列19に格納される。対照的に、分岐命令
は、シーケンシャル・フェッチャ17によって命令スト
リームから除去され、実行のためBPU18に転送され
る。本発明によれば、BPU18には分岐予測機構が含
まれ、この機構は、好ましい実施例では分岐ヒストリ・
テーブルなどの動的予測機構を含み、分岐が実行される
かどうかを予測することによって未解決の条件分岐命令
をBPU18が投機的に実行できるようにする。その代
わりに、本発明の他の実施例では、静的なコンパイラ・
ベースの予測機構を実施することができる。下で詳細に
説明するように、本発明は、分岐が実行されると誤って
予測された場合にプロセッサ10が被る分岐誤予測ペナ
ルティを最小にする。
【0017】復号/ディスパッチ・ステージの間に、デ
ィスパッチ・ユニット20が、命令待ち行列19からの
1つまたは複数の命令を復号し、FXU22、LSU2
8およびFPU30のうちの適当な1つにディスパッチ
する。また、復号/ディスパッチ・ステージの間に、デ
ィスパッチ・ユニット20は、ディスパッチされた命令
のそれぞれの結果データのために、GPRリネーム・バ
ッファ33またはFPRリネーム・バッファ37内のリ
ネーム・バッファを割り振る。本発明の好ましい実施例
によれば、プロセッサ10は、プログラム順で命令をデ
ィスパッチし、独自の命令識別子を利用して、非整順実
行中にディスパッチされた命令のプログラム順を追跡す
る。命令識別子に加えて、プロセッサ10の実行パイプ
ライン内の各命令には、その命令が有効であるかどうか
を示す有効ビットと、その命令が投機実行経路に含まれ
るかどうかを示す投機ビットが関連付けられる。投機実
行経路が不正として解決される場合、投機経路内の命令
は、セットされた投機ビットを有する命令に関連する有
効ビットをクリア(リセット)することによって、プロ
セッサ10からフラッシュされる。
【0018】実行ステージの間には、FXU22、LS
U28およびFPU30が、指示された動作のソース・
オペランドが使用可能になると同時に、ディスパッチ・
ユニット20から受け取った命令を実行する。実行が終
了した後に、FXU22、LSU28およびFPU30
は、命令のタイプに応じてGPRリネーム・バッファ3
3またはFPRリネーム・バッファ37のいずれかにデ
ータ結果を格納する。その後、FXU22、LSU28
およびFPU30は、実行ユニットが命令を終了したこ
とを完了ユニット40に伝える。最後に、結果データを
GPRリネーム・バッファ33からGPR32へまたは
FPRリネーム・バッファ37からFPR36へ転送す
ることによって、プログラム順で命令を完了する。
【0019】ここで図2を参照すると、分岐が実行され
ると誤って予測された時に被る分岐誤予測ペナルティを
最小にする、本発明による命令実行の方法の流れ図が示
されている。図2に示された方法を、図3および図4を
参照して説明する。図3は命令のシーケンスの例を示す
図であり、図4はその命令の実行のタイミング図であ
る。図3に示された命令のシーケンスは、図5に示され
た従来技術の命令のシーケンスと同一であり、したがっ
て、この比較によって本発明の利益が例示される。
【0020】まず図2を参照すると、処理は、ブロック
50で開始され、その後、ブロック52に進み、シーケ
ンシャル・フェッチャ17が、命令キャッシュ14から
命令の次のグループを取り出す。ブロック52で行われ
る取出しは、図4のサイクル1に示されており、ここで
は、命令S0、CMP、S1および分岐命令BCが取り
出されている。次に、処理はブロック54に進み、ブロ
ック52で取り出された命令の組に未解決の分岐命令が
含まれるかどうかを判定する。そうでない場合には、ブ
ロック56で、ブロック52で取り出した命令の組に解
決済みの分岐命令が含まれるかどうかを判定する。命令
の組に未解決の分岐命令も解決済みの分岐命令も含まれ
ない場合には、処理はブロック76に進み、順次命令の
取出し、ディスパッチおよび実行を継続する。しかし、
ブロック56で、命令の組に解決済みの実行される分岐
命令が含まれると判定された場合には、処理はブロック
58に進み、プロセッサ10が、解決済みの分岐命令に
先行する順次命令を実行した後に、分岐先命令ストリー
ム内の命令を取り出し、実行する。その後、処理はブロ
ック78で終了する。
【0021】ブロック54に戻って、図4のサイクル1
の間に取り出される組のように命令キャッシュ14から
取り出した命令の組に未解決の分岐命令が含まれる場
合、シーケンシャル・フェッチャ17は、この未解決の
分岐命令をBPU18に転送する。次に、処理はブロッ
ク60に進み、BPU18が、その分岐が実行されるか
否かを予測する。図4に戻ると、この分岐命令は、実行
されるとサイクル2の間に予測される。サイクル2で
は、4つの後続順次命令(S2ないしS5)も取り出さ
れる。図2に戻って、分岐が実行されないと予測される
場合には、処理はブロック60からブロック62を介し
てブロック64に進み、その分岐命令が後に不正として
解決されない限り、プロセッサ10が、分岐に続く順次
命令を実行する。その後、処理はブロック78で終了す
る。
【0022】しかし、図3および図4に示されるよう
に、分岐が実行されると予測される場合、処理は、ブロ
ック60からブロック62を介してブロック66に進
み、分岐命令によって指示される分岐先命令を取り出
し、前に取り出した順次命令をFXU22、LSU28
およびFPU30にディスパッチしなければこれらが遊
休状態になる場合には、前に取り出した順次命令を投機
的にディスパッチする。通常、図1のプロセッサ10な
どの高性能プロセッサは、80%ないし90%の精度で
分岐予測を達成する。予測された分岐が正しく解決され
る確度が非常に高いので、従来技術のプロセッサは、実
行ユニットが遊休状態になる場合であっても、図5およ
び図6に示されるように、予測された分岐の後の、取り
出された順次命令をフラッシュする。対照的に、本発明
によれば、分岐命令に続く、既に取り出されている順次
命令は、投機的にディスパッチしなければ実行ユニット
が遊休状態になる場合には、実行ユニットに投機的にデ
ィスパッチされる。したがって、本発明では、成功裡に
実行される確率が10%ないし20%の命令を、分岐の
解決を保留されたままでディスパッチすることができ、
これによって、遊休状態の実行ユニット・サイクルを削
除することができる。当業者に了解されるとおり、命令
待ち行列19が大きくなるにつれて、命令待ち行列19
の先頭付近で予測される分岐の比率が高まる。命令待ち
行列19の先頭付近の分岐を予測すると、プロセッサ1
0が、命令待ち行列19から分岐の後の順次命令を取り
除き、その順次命令を分岐先命令に置換するのに十分な
サイクル・タイムがもたらされる。したがって、大きな
命令待ち行列を使用するプロセッサでは、実行ユニット
が命令キャッシュ14から分岐先命令が取り出されるの
を待つ間遊休状態になることがなくなるので、本発明に
従って投機的にディスパッチされる順次命令の数が少な
くなる。
【0023】図4のサイクル3を参照すると、分岐先命
令はまだ取り出されていないので、順次命令S2が、F
XU22、LSU28およびFPU30のうちの1つに
よる実行のために投機的にディスパッチされる。さら
に、分岐先命令T0およびT1が、命令キャッシュ14
から取り出される。さらに、分岐命令BCは、比較命令
CMPが実行を終了し、これによってBCの解決に使用
される条件レジスタ値が与えられるので、サイクル3の
間に誤予測として解決される。
【0024】図2に戻って、処理は、ブロック66から
ブロック68に進み、分岐命令が正しく解決されたかど
うかを判定する。分岐命令が正しく解決された場合、処
理はブロック70に進み、投機ビットをセットされた順
次命令に関連する有効ビットをクリアすることによって
FXU22、LSU28およびFPU30から投機順次
命令をフラッシュし、追加の順次命令のディスパッチを
停止させる。その後、処理はブロック72に進み、ディ
スパッチ・ユニット20が、次のサイクルに分岐先命令
ストリームをディスパッチする。その後、処理はブロッ
ク78で終了する。
【0025】ブロック68に戻って、分岐命令が誤予測
として解決される場合、処理は、ブロック74に進み、
分岐先命令の取出しを取り消し、投機的にディスパッチ
された順次命令を実行する。この順次命令は、もはや投
機実行経路に存在しないので、順次命令に関連する投機
ビットもブロック74でクリアされる。その後、処理は
ブロック76に進み、順次実行ストリームを継続する。
その後、処理はブロック78で終了する。図4に戻る
と、ブロック68ないしブロック76に示されたステッ
プは、サイクル4ないしサイクル6に示されている。図
6と比較して、命令S1およびS2がサイクル4の間に
実行され、順次経路内の2つの命令が、後続サイクルの
それぞれで実行されることが重要であるので留意された
い。したがって、図4に示された例では、本発明によっ
て、分岐誤予測ペナルティが除去される。
【0026】上で説明したように、本発明は、分岐が実
行されると誤って予測される時に被る分岐誤予測ペナル
ティが最小になるように命令を実行するための方法およ
びシステムを提供し、改善する。本発明によれば、実行
されると予測される分岐命令に続く順次命令は、投機的
にディスパッチされなければ実行ユニットが遊休状態に
なる場合には実行ユニットに投機的にディスパッチさ
れ、したがって、分岐命令が不正に解決された場合に順
次実行経路を回復するのに必要なサイクル数が最小にな
る。本発明は、既に使用可能な資源の利用度を高めるの
で、本発明は、わずかな追加のハードウェア・コストま
たは処理オーバーヘッドでプロセッサ性能を高める。
【0027】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0028】(1)プロセッサ内で命令を実行する方法
において、前記プロセッサが、シーケンス順に配置され
た複数の命令を記憶するメモリを有し、前記プロセッサ
が、各プロセッサ・サイクル中に実行のためディスパッ
チすることのできる命令の所定の最大個数を有すること
を特徴とし、前記プロセッサによる実行のため前記メモ
リから前記複数の順次命令のサブセットを取り出すステ
ップと、前記複数の順次命令の前記サブセットに未解決
の分岐命令が含まれるかどうかを判定するステップと、
前記複数の順次命令の前記サブセットに未解決の分岐命
令が含まれると判定されたことに応答して、前記分岐命
令によって示される分岐が実行されるかどうかを予測す
るステップと、前記予測に応答して、前記分岐命令によ
って示される少なくとも1つの非順次分岐先命令を前記
メモリから取り出すステップと、前記シーケンス順で前
記分岐命令の後に続く順次命令をディスパッチすること
なく、前記分岐命令および前記少なくとも1つの分岐先
命令に先行する順次命令の中から、前記分岐予測に続く
プロセッサ・サイクル中に実行のために前記所定の最大
個数の命令をディスパッチできるか否かを判定するステ
ップと、前記分岐命令に続く順次命令をディスパッチす
ることなく、前記分岐命令および前記少なくとも1つの
分岐先命令に先行する順次命令の中から、前記分岐予測
に続く前記プロセッサ・サイクル中に前記所定の最大個
数の命令をディスパッチできると判定されたことに応答
して、実行のため前記所定の最大個数の命令をディスパ
ッチするステップと、前記分岐命令に続く順次命令をデ
ィスパッチすることなく、前記分岐予測に続く前記プロ
セッサ・サイクル中に前記所定の最大個数の命令をディ
スパッチできないと判定されたことに応答して、前記分
岐命令に続く順次命令を実行のため投機的にディスパッ
チするステップと、前記分岐予測の誤りに応答して、前
記分岐先命令の前記取出しを取り消すステップと、前記
分岐命令に続く前記順次命令を実行するステップとを含
み、誤って予測された分岐に関する性能ペナルティが最
小化されることを特徴とする方法。 (2)投機的にディスパッチされる命令のそれぞれが、
関連する投機標識の状態によって識別され、前記方法が
さらに、前記分岐予測の誤りに応答して、前記分岐命令
に続く前記順次命令に関連する投機標識をリセットする
ステップを含むことを特徴とする、上記(1)に記載の
プロセッサ内で命令を実行する方法。 (3)前記方法がさらに、前記分岐の誤りに応答して、
前記シーケンス順に従って追加の順次命令を取り出すス
テップを含むことを特徴とする、上記(1)に記載のプ
ロセッサ内で命令を実行する方法。 (4)前記方法がさらに、前記分岐が実行されるものと
して解決されることに応答して、前記分岐命令経路に続
く前記順次命令を取り消すステップと、後続の順次命令
のディスパッチを停止させるステップとを含むことを特
徴とする、上記(1)に記載のプロセッサ内で命令を実
行する方法。 (5)前記方法がさらに、前記少なくとも1つの分岐先
命令を取り出すプロセッサ・サイクル中に前記分岐予測
を解決できないことに応答して、前記分岐命令に続く前
記順次命令を取り消すステップと、後続の順次命令のデ
ィスパッチを停止させるステップとを含むことを特徴と
する、上記(1)に記載のプロセッサ内で命令を実行す
る方法。 (6)前記予測するステップが、動的分岐予測を含むこ
とを特徴とする、上記(1)に記載のプロセッサ内で命
令を実行する方法。 (7)プロセッサ内で命令を実行するシステムにおい
て、前記プロセッサが、シーケンス順に配置された複数
の命令を記憶するメモリを有し、前記プロセッサが、各
プロセッサ・サイクル中に実行のためディスパッチする
ことのできる命令の所定の最大個数を有することを特徴
とし、前記プロセッサによる実行のため前記メモリから
前記複数の順次命令のサブセットを取り出す手段と、前
記複数の順次命令の前記サブセットに未解決の分岐命令
が含まれるかどうかを判定する手段と、前記複数の順次
命令の前記サブセットに未解決の分岐命令が含まれると
判定されたことに応答して、前記分岐命令によって示さ
れる分岐が実行されるかどうかを予測する手段と、前記
予測に応答して、前記分岐命令によって示される少なく
とも1つの非順次分岐先命令を前記メモリから取り出す
手段と、前記シーケンス順で前記分岐命令の後に続く順
次命令をディスパッチすることなく、前記分岐命令およ
び前記少なくとも1つの分岐先命令に先行する順次命令
の中から、前記分岐予測に続くプロセッサ・サイクル中
に実行のために前記所定の最大個数の命令をディスパッ
チできるか否かを判定する手段と、前記分岐命令に続く
順次命令をディスパッチすることなく、前記分岐命令お
よび前記少なくとも1つの分岐先命令に先行する順次命
令の中から、前記分岐予測に続く前記プロセッサ・サイ
クル中に前記所定の最大個数の命令をディスパッチでき
ると判定されたことに応答して、実行のため前記所定の
最大個数の命令をディスパッチする手段と、前記分岐命
令に続く順次命令をディスパッチすることなく、前記分
岐予測に続く前記プロセッサ・サイクル中に前記所定の
最大個数の命令をディスパッチできないと判定されたこ
とに応答して、前記分岐命令に続く順次命令を実行のた
め投機的にディスパッチする手段と、前記分岐予測の誤
りに応答して、前記分岐先命令の前記取出しを取り消す
手段と、前記分岐命令に続く前記順次命令を実行する手
段とを含み、誤って予測された分岐に関する性能ペナル
ティが最小化されることを特徴とするシステム。 (8)投機的にディスパッチされる命令のそれぞれが、
関連する投機標識の状態によって識別され、前記システ
ムがさらに、前記分岐予測の誤りに応答して、前記分岐
命令に続く前記順次命令に関連する投機標識をリセット
する手段を含むことを特徴とする、上記(7)に記載の
プロセッサ内で命令を実行するシステム。 (9)前記システムがさらに、前記シーケンス順に従っ
て追加の順次命令を取り出す手段を含むことを特徴とす
る、上記(7)に記載のプロセッサ内で命令を実行する
システム。 (10)前記システムがさらに、前記分岐が実行される
ものとして解決されることに応答して、前記分岐命令に
続く前記順次命令を取り消す手段と、後続の順次命令の
ディスパッチを停止させる手段とを含むことを特徴とす
る、上記(7)に記載のプロセッサ内で命令を実行する
システム。 (11)前記システムがさらに、前記分岐先命令を取り
出すプロセッサ・サイクル中に前記分岐予測を解決でき
ないことに応答して、前記分岐命令に続く前記順次命令
を取り消す手段と、後続の順次命令のディスパッチを停
止させる手段とを含むことを特徴とする、上記(7)に
記載のプロセッサ内で命令を実行するシステム。 (12)前記予測手段が、動的分岐予測機構を含むこと
を特徴とする、上記(7)に記載のプロセッサ内で命令
を実行するシステム。 (13)シーケンス順に配置された複数の命令を記憶す
るメモリと、各プロセッサ・サイクル中に実行のためデ
ィスパッチできる命令の所定の最大個数を有するプロセ
ッサとを有し、前記プロセッサが、前記プロセッサによ
る実行のため前記メモリから前記複数の順次命令のサブ
セットを取り出す手段と、前記複数の順次命令の前記サ
ブセットに未解決の分岐命令が含まれるかどうかを判定
する手段と、前記複数の順次命令の前記サブセットに未
解決の分岐命令が含まれると判定されたことに応答し
て、前記分岐命令によって示される分岐が実行されるか
どうかを予測する手段と、前記予測に応答して、前記分
岐命令によって示される少なくとも1つの非順次分岐先
命令を前記メモリから取り出す手段と、前記シーケンス
順で前記分岐命令の後に続く順次命令をディスパッチす
ることなく、前記分岐命令および前記少なくとも1つの
分岐先命令に先行する順次命令の中から、前記分岐予測
に続くプロセッサ・サイクル中に実行のために前記所定
の最大個数の命令をディスパッチできるか否かを判定す
る手段と、前記分岐命令に続く順次命令をディスパッチ
することなく、前記分岐命令および前記少なくとも1つ
の分岐先命令に先行する順次命令の中から、前記分岐予
測に続く前記プロセッサ・サイクル中に前記所定の最大
個数の命令をディスパッチできると判定されたことに応
答して、実行のため前記所定の最大個数の命令をディス
パッチする手段と、前記分岐命令に続く順次命令をディ
スパッチすることなく、前記分岐予測に続く前記プロセ
ッサ・サイクル中に前記所定の最大個数の命令をディス
パッチできないと判定されたことに応答して、前記分岐
命令に続く順次命令を実行のため投機的にディスパッチ
する手段と、前記分岐予測の誤りに応答して、前記分岐
先命令の前記取出しを取り消す手段と、前記分岐命令に
続く前記順次命令を実行する手段とを含み、誤って予測
された分岐に関する性能ペナルティが最小化されること
を特徴とするシステム。 (14)投機的にディスパッチされる命令のそれぞれ
が、関連する投機標識の状態によって識別され、前記デ
ータ処理システムがさらに、前記分岐予測の誤りに応答
して、前記分岐命令に続く前記順次命令に関連する投機
標識をリセットする手段を含むことを特徴とする、上記
(13)に記載のシステム。 (15)前記データ処理システムがさらに、前記シーケ
ンス順に従って追加の命令を取り出す手段を含むことを
特徴とする、上記(13)に記載のシステム。 (16)前記データ処理システムがさらに、前記分岐が
実行されるものとして解決されることに応答して、前記
分岐命令に続く前記順次命令を取り消す手段と、後続の
順次命令のディスパッチを停止させる手段とを含むこと
を特徴とする、上記(13)に記載のシステム。 (17)前記データ処理システムがさらに、実行される
ものとしての前記分岐の解決に応答して、前記分岐命令
に続く前記順次命令を取り消す手段と、後続の順次命令
のディスパッチを停止させる手段とを含むことを特徴と
する、上記(13)に記載のシステム。 (18)前記予測手段が、動的分岐予測機構を含むこと
を特徴とする、上記(13)に記載のシステム。
【図面の簡単な説明】
【図1】本発明の方法およびシステムを使用するプロセ
ッサの好ましい実施例のブロック図である。
【図2】分岐が実行されるものとして誤って予測された
時に被る分岐誤予測ペナルティが最小になる、命令を実
行するための本発明による方法を示す流れ図である。
【図3】条件分岐命令を含む命令のシーケンスの例を示
す図である。
【図4】本発明の方法およびシステムによって分岐が実
行されると誤って予測された時に発生する分岐誤予測ペ
ナルティが最小にされる、条件分岐命令を含む命令のシ
ーケンスの実行の例を示す図である
【図5】条件分岐命令を含む命令のシーケンスの例を示
す図である。
【図6】命令のシーケンスを実行するプロセッサが分岐
誤予測ペナルティを被る、条件分岐命令を含む命令のシ
ーケンスの実行の従来技術の例を示す図である。
【符号の説明】
10 プロセッサ 11 システム・バス 12 バス・インターフェース・ユニット(BIU) 14 命令キャッシュ 16 データ・キャッシュ 17 シーケンシャル・フェッチャ 18 分岐処理ユニット(BPU) 19 命令待ち行列 20 ディスパッチ・ユニット 22 固定小数点ユニット(FXU) 28 ロード/ストア・ユニット(LSU) 30 浮動小数点ユニット(FPU) 32 汎用レジスタ(GPR) 33 GPRリネーム・バッファ 36 浮動小数点レジスタ(FPR) 37 FPRリネーム・バッファ 40 完了ユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ロバート・ティー・ゴラ アメリカ合衆国75023 テキサス州プラー ノ レガシー・ドライブ 300 ナンバー 2222 (72)発明者 クリストファー・エイチ・オルソン アメリカ合衆国78730 テキサス州オース チン ラーンチ・クリーク・ドライブ 3649

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】プロセッサ内で命令を実行する方法におい
    て、前記プロセッサが、シーケンス順に配置された複数
    の命令を記憶するメモリを有し、前記プロセッサが、各
    プロセッサ・サイクル中に実行のためディスパッチする
    ことのできる命令の所定の最大個数を有することを特徴
    とし、 前記プロセッサによる実行のため前記メモリから前記複
    数の順次命令のサブセットを取り出すステップと、 前記複数の順次命令の前記サブセットに未解決の分岐命
    令が含まれるかどうかを判定するステップと、 前記複数の順次命令の前記サブセットに未解決の分岐命
    令が含まれると判定されたことに応答して、前記分岐命
    令によって示される分岐が実行されるかどうかを予測す
    るステップと、 前記予測に応答して、前記分岐命令によって示される少
    なくとも1つの非順次分岐先命令を前記メモリから取り
    出すステップと、 前記シーケンス順で前記分岐命令の後に続く順次命令を
    ディスパッチすることなく、前記分岐命令および前記少
    なくとも1つの分岐先命令に先行する順次命令の中か
    ら、前記分岐予測に続くプロセッサ・サイクル中に実行
    のために前記所定の最大個数の命令をディスパッチでき
    るか否かを判定するステップと、 前記分岐命令に続く順次命令をディスパッチすることな
    く、前記分岐命令および前記少なくとも1つの分岐先命
    令に先行する順次命令の中から、前記分岐予測に続く前
    記プロセッサ・サイクル中に前記所定の最大個数の命令
    をディスパッチできると判定されたことに応答して、実
    行のため前記所定の最大個数の命令をディスパッチする
    ステップと、 前記分岐命令に続く順次命令をディスパッチすることな
    く、前記分岐予測に続く前記プロセッサ・サイクル中に
    前記所定の最大個数の命令をディスパッチできないと判
    定されたことに応答して、前記分岐命令に続く順次命令
    を実行のため投機的にディスパッチするステップと、 前記分岐予測の誤りに応答して、 前記分岐先命令の前記取出しを取り消すステップと、 前記分岐命令に続く前記順次命令を実行するステップと
    を含み、誤って予測された分岐に関する性能ペナルティ
    が最小化されることを特徴とする方法。
  2. 【請求項2】投機的にディスパッチされる命令のそれぞ
    れが、関連する投機標識の状態によって識別され、 前記方法がさらに、前記分岐予測の誤りに応答して、前
    記分岐命令に続く前記順次命令に関連する投機標識をリ
    セットするステップを含むことを特徴とする、請求項1
    に記載のプロセッサ内で命令を実行する方法。
  3. 【請求項3】前記方法がさらに、前記分岐の誤りに応答
    して、前記シーケンス順に従って追加の順次命令を取り
    出すステップを含むことを特徴とする、請求項1に記載
    のプロセッサ内で命令を実行する方法。
  4. 【請求項4】前記方法がさらに、 前記分岐が実行されるものとして解決されることに応答
    して、前記分岐命令経路に続く前記順次命令を取り消す
    ステップと、 後続の順次命令のディスパッチを停止させるステップと
    を含むことを特徴とする、請求項1に記載のプロセッサ
    内で命令を実行する方法。
  5. 【請求項5】前記方法がさらに、 前記少なくとも1つの分岐先命令を取り出すプロセッサ
    ・サイクル中に前記分岐予測を解決できないことに応答
    して、前記分岐命令に続く前記順次命令を取り消すステ
    ップと、 後続の順次命令のディスパッチを停止させるステップと
    を含むことを特徴とする、請求項1に記載のプロセッサ
    内で命令を実行する方法。
  6. 【請求項6】前記予測するステップが、動的分岐予測を
    含むことを特徴とする、請求項1に記載のプロセッサ内
    で命令を実行する方法。
  7. 【請求項7】プロセッサ内で命令を実行するシステムに
    おいて、前記プロセッサが、シーケンス順に配置された
    複数の命令を記憶するメモリを有し、前記プロセッサ
    が、各プロセッサ・サイクル中に実行のためディスパッ
    チすることのできる命令の所定の最大個数を有すること
    を特徴とし、 前記プロセッサによる実行のため前記メモリから前記複
    数の順次命令のサブセットを取り出す手段と、 前記複数の順次命令の前記サブセットに未解決の分岐命
    令が含まれるかどうかを判定する手段と、 前記複数の順次命令の前記サブセットに未解決の分岐命
    令が含まれると判定されたことに応答して、前記分岐命
    令によって示される分岐が実行されるかどうかを予測す
    る手段と、 前記予測に応答して、前記分岐命令によって示される少
    なくとも1つの非順次分岐先命令を前記メモリから取り
    出す手段と、 前記シーケンス順で前記分岐命令の後に続く順次命令を
    ディスパッチすることなく、前記分岐命令および前記少
    なくとも1つの分岐先命令に先行する順次命令の中か
    ら、前記分岐予測に続くプロセッサ・サイクル中に実行
    のために前記所定の最大個数の命令をディスパッチでき
    るか否かを判定する手段と、 前記分岐命令に続く順次命令をディスパッチすることな
    く、前記分岐命令および前記少なくとも1つの分岐先命
    令に先行する順次命令の中から、前記分岐予測に続く前
    記プロセッサ・サイクル中に前記所定の最大個数の命令
    をディスパッチできると判定されたことに応答して、実
    行のため前記所定の最大個数の命令をディスパッチする
    手段と、 前記分岐命令に続く順次命令をディスパッチすることな
    く、前記分岐予測に続く前記プロセッサ・サイクル中に
    前記所定の最大個数の命令をディスパッチできないと判
    定されたことに応答して、前記分岐命令に続く順次命令
    を実行のため投機的にディスパッチする手段と、 前記分岐予測の誤りに応答して、 前記分岐先命令の前記取出しを取り消す手段と、 前記分岐命令に続く前記順次命令を実行する手段とを含
    み、誤って予測された分岐に関する性能ペナルティが最
    小化されることを特徴とするシステム。
  8. 【請求項8】投機的にディスパッチされる命令のそれぞ
    れが、関連する投機標識の状態によって識別され、 前記システムがさらに、前記分岐予測の誤りに応答し
    て、前記分岐命令に続く前記順次命令に関連する投機標
    識をリセットする手段を含むことを特徴とする、請求項
    7に記載のプロセッサ内で命令を実行するシステム。
  9. 【請求項9】前記システムがさらに、前記シーケンス順
    に従って追加の順次命令を取り出す手段を含むことを特
    徴とする、請求項7に記載のプロセッサ内で命令を実行
    するシステム。
  10. 【請求項10】前記システムがさらに、 前記分岐が実行されるものとして解決されることに応答
    して、前記分岐命令に続く前記順次命令を取り消す手段
    と、 後続の順次命令のディスパッチを停止させる手段とを含
    むことを特徴とする、請求項7に記載のプロセッサ内で
    命令を実行するシステム。
  11. 【請求項11】前記システムがさらに、 前記分岐先命令を取り出すプロセッサ・サイクル中に前
    記分岐予測を解決できないことに応答して、前記分岐命
    令に続く前記順次命令を取り消す手段と、 後続の順次命令のディスパッチを停止させる手段とを含
    むことを特徴とする、請求項7に記載のプロセッサ内で
    命令を実行するシステム。
  12. 【請求項12】前記予測手段が、動的分岐予測機構を含
    むことを特徴とする、請求項7に記載のプロセッサ内で
    命令を実行するシステム。
  13. 【請求項13】シーケンス順に配置された複数の命令を
    記憶するメモリと、 各プロセッサ・サイクル中に実行のためディスパッチで
    きる命令の所定の最大個数を有するプロセッサとを有
    し、前記プロセッサが、 前記プロセッサによる実行のため前記メモリから前記複
    数の順次命令のサブセットを取り出す手段と、 前記複数の順次命令の前記サブセットに未解決の分岐命
    令が含まれるかどうかを判定する手段と、 前記複数の順次命令の前記サブセットに未解決の分岐命
    令が含まれると判定されたことに応答して、前記分岐命
    令によって示される分岐が実行されるかどうかを予測す
    る手段と、 前記予測に応答して、前記分岐命令によって示される少
    なくとも1つの非順次分岐先命令を前記メモリから取り
    出す手段と、 前記シーケンス順で前記分岐命令の後に続く順次命令を
    ディスパッチすることなく、前記分岐命令および前記少
    なくとも1つの分岐先命令に先行する順次命令の中か
    ら、前記分岐予測に続くプロセッサ・サイクル中に実行
    のために前記所定の最大個数の命令をディスパッチでき
    るか否かを判定する手段と、 前記分岐命令に続く順次命令をディスパッチすることな
    く、前記分岐命令および前記少なくとも1つの分岐先命
    令に先行する順次命令の中から、前記分岐予測に続く前
    記プロセッサ・サイクル中に前記所定の最大個数の命令
    をディスパッチできると判定されたことに応答して、実
    行のため前記所定の最大個数の命令をディスパッチする
    手段と、 前記分岐命令に続く順次命令をディスパッチすることな
    く、前記分岐予測に続く前記プロセッサ・サイクル中に
    前記所定の最大個数の命令をディスパッチできないと判
    定されたことに応答して、前記分岐命令に続く順次命令
    を実行のため投機的にディスパッチする手段と、 前記分岐予測の誤りに応答して、 前記分岐先命令の前記取出しを取り消す手段と、 前記分岐命令に続く前記順次命令を実行する手段とを含
    み、誤って予測された分岐に関する性能ペナルティが最
    小化されることを特徴とするシステム。
  14. 【請求項14】投機的にディスパッチされる命令のそれ
    ぞれが、関連する投機標識の状態によって識別され、 前記データ処理システムがさらに、前記分岐予測の誤り
    に応答して、前記分岐命令に続く前記順次命令に関連す
    る投機標識をリセットする手段を含むことを特徴とす
    る、請求項13に記載のシステム。
  15. 【請求項15】前記データ処理システムがさらに、前記
    シーケンス順に従って追加の命令を取り出す手段を含む
    ことを特徴とする、請求項13に記載のシステム。
  16. 【請求項16】前記データ処理システムがさらに、 前記分岐が実行されるものとして解決されることに応答
    して、前記分岐命令に続く前記順次命令を取り消す手段
    と、 後続の順次命令のディスパッチを停止させる手段とを含
    むことを特徴とする、請求項13に記載のシステム。
  17. 【請求項17】前記データ処理システムがさらに、 実行されるものとしての前記分岐の解決に応答して、前
    記分岐命令に続く前記順次命令を取り消す手段と、 後続の順次命令のディスパッチを停止させる手段とを含
    むことを特徴とする、請求項13に記載のシステム。
  18. 【請求項18】前記予測手段が、動的分岐予測機構を含
    むことを特徴とする、請求項13に記載のシステム。
JP8279749A 1995-11-09 1996-10-22 プロセッサ内で命令を実行する方法およびシステム Pending JPH09185506A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/555,819 US5634103A (en) 1995-11-09 1995-11-09 Method and system for minimizing branch misprediction penalties within a processor
US08/555819 1995-11-09

Publications (1)

Publication Number Publication Date
JPH09185506A true JPH09185506A (ja) 1997-07-15

Family

ID=24218748

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8279749A Pending JPH09185506A (ja) 1995-11-09 1996-10-22 プロセッサ内で命令を実行する方法およびシステム

Country Status (3)

Country Link
US (1) US5634103A (ja)
JP (1) JPH09185506A (ja)
KR (1) KR100234648B1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6851043B1 (en) 1998-12-17 2005-02-01 Fujitsu Limited Branch instruction execution control apparatus
JP2008242647A (ja) * 2007-03-26 2008-10-09 Telefon Ab L M Ericsson プロセッサ
JP2008544353A (ja) * 2005-06-10 2008-12-04 クゥアルコム・インコーポレイテッド マイクロプロセッサの命令パイプライン内の命令フラッシングを管理する方法及び装置
US8122223B2 (en) 2008-04-18 2012-02-21 International Business Machines Corporation Access speculation predictor with predictions based on memory region prior requestor tag information
US8122222B2 (en) 2008-04-18 2012-02-21 International Business Machines Corporation Access speculation predictor with predictions based on a scope predictor
US8127106B2 (en) 2008-04-18 2012-02-28 International Business Machines Corporation Access speculation predictor with predictions based on a domain indicator of a cache line
US8131974B2 (en) 2008-04-18 2012-03-06 International Business Machines Corporation Access speculation predictor implemented via idle command processing resources

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5850542A (en) * 1995-09-15 1998-12-15 International Business Machines Corporation Microprocessor instruction hedge-fetching in a multiprediction branch environment
US5799180A (en) * 1995-10-31 1998-08-25 Texas Instruments Incorporated Microprocessor circuits, systems, and methods passing intermediate instructions between a short forward conditional branch instruction and target instruction through pipeline, then suppressing results if branch taken
US5832260A (en) * 1995-12-29 1998-11-03 Intel Corporation Processor microarchitecture for efficient processing of instructions in a program including a conditional program flow control instruction
US5752014A (en) * 1996-04-29 1998-05-12 International Business Machines Corporation Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction
US6092186A (en) * 1996-05-07 2000-07-18 Lucent Technologies Inc. Apparatus and method for aborting un-needed instruction fetches in a digital microprocessor device
US5860017A (en) * 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US5805876A (en) * 1996-09-30 1998-09-08 International Business Machines Corporation Method and system for reducing average branch resolution time and effective misprediction penalty in a processor
US5918044A (en) * 1996-10-31 1999-06-29 International Business Machines Corporation Apparatus and method for instruction fetching using a multi-port instruction cache directory
US6021488A (en) * 1997-09-23 2000-02-01 International Business Machines Corp. Data processing system having an apparatus for tracking a status of an out-of-order operation and method thereof
US6012134A (en) * 1998-04-09 2000-01-04 Institute For The Development Of Emerging Architectures, L.L.C. High-performance processor with streaming buffer that facilitates prefetching of instructions
US6370415B1 (en) 1998-04-10 2002-04-09 Medi-Physics Inc. Magnetic resonance imaging method
US6260138B1 (en) 1998-07-17 2001-07-10 Sun Microsystems, Inc. Method and apparatus for branch instruction processing in a processor
US6338133B1 (en) 1999-03-12 2002-01-08 International Business Machines Corporation Measured, allocation of speculative branch instructions to processor execution units
US6643770B1 (en) 1999-09-16 2003-11-04 Intel Corporation Branch misprediction recovery using a side memory
US6760835B1 (en) * 2000-11-22 2004-07-06 Lsi Logic Corporation Instruction branch mispredict streaming
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US7165169B2 (en) * 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
KR20020096252A (ko) * 2001-06-19 2002-12-31 인터내셔널 비지네스 머신즈 코포레이션 프로세서에서의 명령 실행 방법, 컴퓨터 시스템에사용하기 위한 프로세서 및 데이터 처리 시스템
US6823444B1 (en) * 2001-07-03 2004-11-23 Ip-First, Llc Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US7203824B2 (en) * 2001-07-03 2007-04-10 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7234045B2 (en) * 2001-07-03 2007-06-19 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7159097B2 (en) * 2002-04-26 2007-01-02 Ip-First, Llc Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
US7434036B1 (en) * 2002-08-30 2008-10-07 Verisilicon Holdings Co. Ltd. System and method for executing software program instructions using a condition specified within a conditional execution instruction
US7143269B2 (en) * 2003-01-14 2006-11-28 Ip-First, Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7152154B2 (en) * 2003-01-16 2006-12-19 Ip-First, Llc. Apparatus and method for invalidation of redundant branch target address cache entries
US7185186B2 (en) 2003-01-14 2007-02-27 Ip-First, Llc Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
US7178010B2 (en) * 2003-01-16 2007-02-13 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US10901743B2 (en) * 2018-07-19 2021-01-26 International Business Machines Corporation Speculative execution of both paths of a weakly predicted branch instruction
CN111324948B (zh) * 2020-02-10 2023-04-25 上海兆芯集成电路有限公司 模拟方法及模拟系统
US20220308888A1 (en) * 2021-03-27 2022-09-29 Redpine Signals, Inc. Method for reducing lost cycles after branch misprediction in a multi-thread microprocessor
US20220308887A1 (en) * 2021-03-27 2022-09-29 Redpine Signals, Inc. Mitigation of branch misprediction penalty in a hardware multi-thread microprocessor

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1985000453A1 (en) * 1983-07-11 1985-01-31 Prime Computer, Inc. Data processing system
US4833599A (en) * 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
US4881194A (en) * 1987-11-16 1989-11-14 Intel Corporation Stored-program controller for equalizing conditional branch delays
US5165025A (en) * 1988-10-06 1992-11-17 Lass Stanley E Interlacing the paths after a conditional branch like instruction
US5127091A (en) * 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
US5072364A (en) * 1989-05-24 1991-12-10 Tandem Computers Incorporated Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5283873A (en) * 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
US5394530A (en) * 1991-03-15 1995-02-28 Nec Corporation Arrangement for predicting a branch target address in the second iteration of a short loop
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
AU3776793A (en) * 1992-02-27 1993-09-13 Intel Corporation Dynamic flow instruction cache memory
US5784604A (en) * 1992-10-09 1998-07-21 International Business Machines Corporation Method and system for reduced run-time delay during conditional branch execution in pipelined processor systems utilizing selectively delayed sequential instruction purging
US5519841A (en) * 1992-11-12 1996-05-21 Digital Equipment Corporation Multi instruction register mapper
IE940855A1 (en) * 1993-12-20 1995-06-28 Motorola Inc Data processor with speculative instruction fetching and¹method of operation

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6851043B1 (en) 1998-12-17 2005-02-01 Fujitsu Limited Branch instruction execution control apparatus
JP2008544353A (ja) * 2005-06-10 2008-12-04 クゥアルコム・インコーポレイテッド マイクロプロセッサの命令パイプライン内の命令フラッシングを管理する方法及び装置
JP2008242647A (ja) * 2007-03-26 2008-10-09 Telefon Ab L M Ericsson プロセッサ
US8122223B2 (en) 2008-04-18 2012-02-21 International Business Machines Corporation Access speculation predictor with predictions based on memory region prior requestor tag information
US8122222B2 (en) 2008-04-18 2012-02-21 International Business Machines Corporation Access speculation predictor with predictions based on a scope predictor
US8127106B2 (en) 2008-04-18 2012-02-28 International Business Machines Corporation Access speculation predictor with predictions based on a domain indicator of a cache line
US8131974B2 (en) 2008-04-18 2012-03-06 International Business Machines Corporation Access speculation predictor implemented via idle command processing resources

Also Published As

Publication number Publication date
KR970029034A (ko) 1997-06-26
KR100234648B1 (ko) 1999-12-15
US5634103A (en) 1997-05-27

Similar Documents

Publication Publication Date Title
US5634103A (en) Method and system for minimizing branch misprediction penalties within a processor
US5611063A (en) Method for executing speculative load instructions in high-performance processors
JP3397081B2 (ja) 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を推測的に実行するためのプロセッサ、データ処理システム及び方法
JP3093684B2 (ja) 命令ループを投機的に実行するプロセッサ及び方法
US6079014A (en) Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
EP0605872B1 (en) Method and system for supporting speculative execution of instructions
US6189091B1 (en) Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection
US9361111B2 (en) Tracking speculative execution of instructions for a register renaming data store
US5956495A (en) Method and system for processing branch instructions during emulation in a data processing system
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
JP2001166935A (ja) プロセッサにおける分岐予測方法及びプロセッサ
US5974240A (en) Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution
US5537560A (en) Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
US5872948A (en) Processor and method for out-of-order execution of instructions based upon an instruction parameter
US6742112B1 (en) Lookahead register value tracking
US5875325A (en) Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US6662360B1 (en) Method and system for software control of hardware branch prediction mechanism in a data processor
JP2001243071A (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
JP3122420B2 (ja) プロセッサおよび条件コード・ビット計算方法
JPH10143366A (ja) 非プログラム順命令発行を利用する高性能データプロセッシングシステムにおいて早期データ依存解析メカニズムをインプリメントする方法およびシステム
US5913050A (en) Method and apparatus for providing address-size backward compatibility in a processor using segmented memory
EP0762271A2 (en) Early completion of floating-point operations during load/store multiple operations
JP3721002B2 (ja) メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法
US5764940A (en) Processor and method for executing a branch instruction and an associated target instruction utilizing a single instruction fetch