JPH06236270A - スーパースカラ・プロセッサ・システムにおいてブランチ・ヒストリ予測精度を向上させる方法およびシステム - Google Patents

スーパースカラ・プロセッサ・システムにおいてブランチ・ヒストリ予測精度を向上させる方法およびシステム

Info

Publication number
JPH06236270A
JPH06236270A JP5319303A JP31930393A JPH06236270A JP H06236270 A JPH06236270 A JP H06236270A JP 5319303 A JP5319303 A JP 5319303A JP 31930393 A JP31930393 A JP 31930393A JP H06236270 A JPH06236270 A JP H06236270A
Authority
JP
Japan
Prior art keywords
instructions
branch
instruction
branch history
superscalar 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.)
Granted
Application number
JP5319303A
Other languages
English (en)
Other versions
JP2531495B2 (ja
Inventor
David S Levitan
デーヴィッド・エス・レヴィタン
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 JPH06236270A publication Critical patent/JPH06236270A/ja
Application granted granted Critical
Publication of JP2531495B2 publication Critical patent/JP2531495B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

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つの技
法は、サイクル・タイムを短くし、1命令当たりサイク
ル(CPI)率を下げることである。このような技法を
拡張データ処理システムに巧みに応用した例に、インタ
ーナショナル・ビジネス・マシーンズ・コーポレーショ
ン(IBM)のRISCシステム/6000(RS/6
000)コンピュータがある。RS/6000システム
は、数値中心の科学技術の応用分野およびマルチユーザ
商業環境でうまく機能するように設計されている。RS
/6000プロセッサは、スーパースカラ実施態様を使
用する。すなわち、複数の命令が同時に発行され実行さ
れる。
【0003】複数の命令を同時に発行して実行するに
は、高命令帯域幅で同時に実行できる独立した機能ユニ
ットが必要である。RS/6000システムは、本来的
にパイプライン式の別々のブランチ処理ユニット、固定
小数点処理ユニット、および浮動小数点処理ユニットを
使ってこれを実現している。そのようなシステムでいわ
ゆる「条件付きブランチ」命令を実行すると、重大なパ
イプライン遅延が発生することがある。条件付きブラン
チ命令とは、他の1つまたは複数の命令の処理の特定の
結果に応じて、アプリケーション内の指定された条件付
きブランチをとることを指令する命令である。したがっ
て、条件付きブランチ命令がパイプラン待ち行列中を待
ち行列内の実行位置まで伝播するまでに、条件付きブラ
ンチを解決する前に条件付きブランチ命令の後にある待
ち行列に命令をロードしておき、実行時遅延を避ける必
要がある。
【0004】パイプライン式プロセッサ・システムにお
けるこの実行時遅延を最小限にする1つの試みは、代替
命令待ち行列を設けるものである。主命令待ち行列内で
条件付きブランチ命令が検出されると、待ち行列内の条
件付きブランチ命令の次の順次命令がただちにパージさ
れて、代替命令待ち行列にロードされる。次に、予測さ
れた条件付きブランチのターゲット命令が取り出され
て、主命令待ち行列にロードされる。予測された条件付
きブランチが発生しない場合、代替命令待ち行列から順
次命令が取り出され、主命令待ち行列にロードされる。
この技法では実行時遅延が最小限になるが、代替命令待
ち行列を設ける必要があり、それに伴ってハードウェア
資源を増設する必要もある。
【0005】パイプライン式プロセッサ・システムの実
行時遅延を最小限にする他の試みは、コンパイラを使用
して、条件付きブランチ命令と、条件付きブランチを開
始する結果を生成する命令との間の待ち行列に多数の命
令を挿入するものである。この技法では、条件付きブラ
ンチ命令を実行する前に、条件付きブランチを開始する
結果を発生させる命令を実行してから条件付きブランチ
命令を実行するまでの間の遅延中に、条件付きブランチ
を解決し、ターゲット命令または順次命令を命令待ち行
列に入れようと試みる。理論上、この技法は、代替命令
待ち行列を設けなくても実行時遅延を最小限にする。し
かし、必要な遅延を実現するのに十分な数の命令を待ち
行列に挿入するのは困難である場合が多い。
【0006】したがって、アプリケーションが、ブラン
チ命令の発生に応じて、指定された条件付きブランチに
分岐するか否かを正確に予測することにより、データ処
理システムの効率を上げることができる。特定のブラン
チが「選択される」か「選択されない」かを予測する1
つの技法は、いわゆる「ブランチ・ヒストリ・テーブル
(BHT)」を使用することである。ブランチ・ヒスト
リ・テーブルは、特定のブランチ命令を実行した場合
に、1組の命令内にブランチが生じるか否かを正確に予
測するために、その命令の最近のヒストリを記憶するの
に使用される。ブランチ・ヒストリ・テーブルを設ける
と、実行時遅延を最小限にする比較的単純な技法が提供
されるが、1回のアクセスで複数の命令が取り出され
る、スーパースカラ・プロセッサ・システムでは問題が
ある。すなわち、そのようなシステムのパイプラインに
応じて、ターゲット・アドレスを計算するまでブランチ
・アドレスを知ることができない。ターゲット・アドレ
スを計算するまでブランチ・アドレスが分からず、かつ
ブランチ予測がアドレスの計算と並列に行われる場合、
ブランチ・ヒストリ・テーブルへのアクセスが極めて困
難になる。
【0007】したがって、ブランチ・ヒストリ・テーブ
ルを使用してブランチ命令の結果を予測する改良された
方法およびシステムが必要なことは明らかである。
【0008】
【発明が解決しようとする課題】本発明の一目的は、改
良されたデータ処理システムを提供することである。
【0009】本発明の他の目的は、データ処理システム
における改良されたブランチ・ヒストリ予測の方法およ
びシステムを提供することである。
【0010】本発明の他の目的は、複数の命令を同時に
ディスパッチすることのできるスーパースカラ・データ
処理システムにおいて、ブランチ・ヒストリ予測を改善
する改良された方法およびシステムを提供することであ
る。
【0011】
【課題を解決するための手段】前述の目的は、以下のよ
うにして達成される。本発明の方法およびシステムを使
用すると、複数命令アクセス内の各命令取出し位置ごと
に別々のブランチ・ヒストリを含むブランチ・ヒストリ
・テーブルを維持することによって、スーパースカラ・
プロセッサ・システムにおけるブランチ・ヒストリ予測
精度を向上させることができる。複数の命令に同時にア
クセスすることのできるスーパースカラ・プロセッサ・
システムにおいて、複数命令アクセス中の可能な各命令
取出し位置用の予測フィールドを含むブランチ・ヒスト
リ・テーブルを確立する。ブランチ・ヒストリ・テーブ
ル内で下位アドレス・ビットなど命令取出しアドレスの
一部分を使用して各予測フィールド・グループにアクセ
スする。次に、命令取出し中のブランチ命令の位置に対
応する、グループ内の特定の予測フィールドを選択す
る。次に、選択した予測フィールドの内容を使用して、
対応するブランチ命令についてブランチが選択されるか
否かを予測する。各予測フィールドは、ブランチが「選
択される」か、それとも「選択されない」かに応じて増
分または減分された後、ブランチ・ヒストリ・テーブル
に再び記憶される、2ビットの2進カウンタを備えるこ
とが好ましい。
【0012】前記その他の目的、特徴、および利点は、
以下の詳細な説明で明らかになろう。
【0013】
【実施例】図面、特に図1を参照すると、本発明の方法
およびシステムを実施するために使用できるスーパース
カラ・コンピュータ・システム10の高水準ブロック図
が示されている。図のように、スーパースカラ・コンピ
ュータ・システム10は、データ、命令などを記憶する
ために使用されるメモリ18を含むことが好ましい。メ
モリ18内に記憶されるデータまたは命令は、当業者に
周知の方法でキャッシュ/メモリ・インタフェース20
を使用してアクセスすることが好ましい。キャッシュ・
メモリ・システムのサイズ設定および使用法は、データ
処理技術分野内の周知の一部門であり、本発明では取り
上げない。しかし、最新の連想式キャッシュ技術を使用
すれば、キャッシュ/メモリ・インタフェース20内に
一時的に記憶されたデータを使用して高率のメモリ・ア
クセスを実現できることが、当業者には理解されよう。
【0014】キャッシュ/メモリ・インタフェース20
からの命令は通常、好ましくは複数の待ち行列位置を含
む命令待ち行列22にロードされる。スーパースカラ・
コンピュータ・システムの典型的な実施例では、命令待
ち行列は8個の待ち行列位置を含むことができ、したが
って所与のサイクル中に、キャッシュ/メモリ・インタ
フェース20によって渡される有効な命令の数と、命令
待ち行列22内で利用可能な空間の量に応じて、命令待
ち行列22に0ないし8個の命令をロードすることがで
きる。
【0015】そのようなスーパースカラ・コンピュータ
・システムは普通であるが、命令待ち行列22は、複数
の実行ユニットに命令をディスパッチするために使用さ
れる。図1に示すように、コンピュータ・システム10
は、浮動小数点処理ユニット24、固定小数点処理ユニ
ット26、およびブランチ処理ユニット28を含む。し
たがって、命令待ち行列22は、単一のサイクル中に、
0ないし3個の命令を各実行ユニットに1個ずつディス
パッチすることができる。
【0016】命令待ち行列22からディスパッチされた
順次命令だけでなく、いわゆる「条件付きブランチ命
令」も、ブランチ・プロセッサで実行するために、命令
待ち行列22にロードすることができる。条件付き命令
とは、1つまたは複数の順次命令の処理の特定の結果に
応じて、アプリケーション内で選択される関連する条件
付きブランチを指定する命令である。スーパースカラ・
コンピュータ・システム10などのパイプライン式プロ
セッサ・システムの実行時遅延を最小限にするために、
命令待ち行列内の条件付きブランチ命令の存在を検出
し、条件付きブランチの結果を予測する。当業者には明
らかなように、条件付きブランチが「選択されない」と
予測されると、命令待ち行列内の順次命令は単に現経路
に沿って継続し、命令は変更されない。しかし、ブラン
チの発生に関する予測が誤っている場合、プログラムの
順序で条件付きブランチ命令の次にくる順次命令を命令
待ち行列からパージし、ターゲット命令を取り出す必要
がある。あるいは、条件付きブランチが「選択される」
と予測され、予測が正しいことがわかった場合は、ター
ゲット命令を取り出し、それらの命令を使用して条件付
きブランチをたどる。言うまでもなく、「選択される」
という予測が誤っている場合は、ターゲット命令をパー
ジし、プログラムの順序で条件付きブランチ命令の次に
くる順次命令を取り出す必要がある。
【0017】図示したように、スーパースカラ・コンピ
ュータ・システム10はまた、条件レジスタ32を含む
ことが好ましい。条件レジスタ32は、コンピュータ・
システム10内で処理される順次命令の結果を使用して
行われる様々な比較の結果を一時的に記憶するために使
用される。したがって、浮動小数点処理ユニット24、
固定小数点処理ユニット26、およびブランチ処理ユニ
ット28はすべて、条件レジスタ32に結合される。条
件レジスタ32内の特定の条件の状況を検出し、それを
ブランチ処理ユニット28に結合して、ターゲット・ア
ドレスを生成することができる。次いでこのターゲット
・アドレスを使用して、ブランチを開始する条件の発生
に応じて、ターゲット命令を取り出す。
【0018】次に、ブランチ処理ユニット28は、ター
ゲット・アドレスを取出し機構30に結合する。取出し
機構30は、条件付きブランチをたどるのに必要なター
ゲット命令の取出しアドレスを計算し、それらの取出し
アドレスをキャッシュ/メモリ・インタフェース20に
結合する。当業者には明らかなように、それらの取出し
アドレスと関連するターゲット命令がキャッシュ/メモ
リ・インタフェース20内に存在する場合、それらのタ
ーゲット命令は命令待ち行列22にロードされる。ある
いは、ターゲット命令をメモリ18から取り出し、それ
らのターゲット命令の取出しに必要な遅延の後、キャッ
シュ/メモリ・インタフェース20から命令待ち行列2
2にロードすることもできる。
【0019】図2および3を参照すると、本発明の方法
およびシステムによる複数の命令の同時取出しを示す、
命令待ち行列の2つの例の概略図が示されている。図2
に示すように、取出しアドレス38を使用して、命令キ
ャッシュ40から、順序付けられた一連の命令を取り出
すことができる。次にこれらの命令は、図示したように
命令待ち行列42にロードされる。したがって、選択さ
れた取出しアドレス38について、命令1、2、3、4
を正しい順序で命令待ち行列42の位置44、46、4
8、50にロードすることができる。
【0020】図3を参照すると、代替取出しアドレスを
使用する複数命令取出しにより、順序付けられた一連の
命令が命令キャッシュ40から命令待ち行列42にロー
ドされ、命令3、4、5、6が命令待ち行列42の位置
44、46、48、50にロードされることが分かる。
したがって、命令3および4は、図2では命令待ち行列
42の位置48および50にロードされるが、代替取出
しアドレスを使用して順序付けられた一連の命令にアク
セスすると、命令3および4が命令待ち行列42の位置
44および46にロードされることがわかる。
【0021】本発明者は、複数命令アクセス中の命令の
相対位置が変わると、多くの場合、その位置にあるブラ
ンチ命令の予測方法に重大な影響が及ぶことを発見し
た。したがって、本発明の方法およびシステムによれ
ば、各命令ごとに別々のエントリがブランチ・ヒストリ
・テーブル内に提供される。そのエントリは、複数命令
アクセス中の他の命令に対する当該命令の相対位置の変
化に応じて変化する。
【0022】ブランチ・ヒストリ予測におけるこの変化
は、図4に最もよく示されている。図4は、本発明の方
法およびシステムによる、各エントリが複数の予測フィ
ールドを含むブランチ・ヒストリ・テーブルの概略図を
示している。図には、ブランチ・ヒストリ・テーブル6
0が示されている。ブランチ・ヒストリ・テーブル60
は、命令キャッシュ40(図2および3参照)における
一群の命令にアクセスするために使用される取出しアド
レスの一部分、たとえば取出しアドレスの下位ビットを
使用してアクセスすることが好ましい。取出しアドレス
・ビット56を使用してブランチ・ヒストリ・テーブル
60にアクセスすると、複数の予測フィールドがアクセ
スされる。したがって、図示したように、予測フィール
ドA、B、C、Dは、それぞれブランチ・ヒストリ・テ
ーブル60内の位置62、64、66、68からアクセ
スされる。したがって、図示したように、4つの命令に
同時にアクセスし、それらをディスパッチできるシステ
ムでは、ブランチ・ヒストリ・テーブル60内の各エン
トリは、別々の4個の予測フィールドを含む。これらの
予測フィールドはそれぞれ、アクセスされた4個の命令
のグループ内の対応する位置にある命令に関連する。
【0023】したがって、符号58で示す代替取出しア
ドレスを使用すると、完全に異なる一群の予測フィール
ドがアクセスされる。すなわち、ブランチ・ヒストリ・
テーブル60内の位置70、72、74、76から予測
フィールドL、M、N、Oがアクセスされる。
【0024】本明細書で説明するようにして、ブランチ
・ヒストリ・テーブル60内の各エントリは一群の予測
フィールドを含み、図2および3に示すように、各予測
フィールドは、複数命令アクセス中の特定の命令位置に
対応する。このようにして、各命令ごとに、複数命令ア
クセス中の命令の位置と相関する別々のブランチ・ヒス
トリを維持することができる。というのは、複数命令ア
クセス中の命令の相対位置は、その命令のもっともらし
いブランチ予測の重要な機能を示すことが多いからであ
る。
【0025】図5を参照すると、図4のブランチ・ヒス
トリ・テーブル60内の各予測フィールドの内容を示す
表が示されている。図示した本発明の実施例では、図4
のブランチ・ヒストリ・テーブル内の一群の予測フィー
ルド内の各予測フィールドは、当技術分野で普通のやり
方で、条件付きブランチ命令の実行によりブランチが
「選択される」か「選択されない」かに応じて選択的に
増分または減分される、2ビット・カウンタを備えるこ
とができる。欄92に示すように、可能な予測フィール
ドの内容が4つある。予測フィールドが2進値"00"を
含む場合、予測は、ブランチが「選択されない」という
強い予測である。予測フィールドの内容が2進値の"0
1"である場合、これは、ブランチ命令を実行しても、
ブランチが「選択されない」という弱い予測である。欄
92を先に進むと、予測フィールド内の2進内容の"1
0"は、ブランチ命令の結果ブランチが「選択される」
という弱い予測であり、2進値の"11"は、ブランチ命
令を実行すると、ブランチが「選択される」という強い
予測である。
【0026】したがって、以下に詳細に説明するよう
に、個々の予測フィールドの内容を選択的に増分または
減分することにより、その予測フィールドと相関するブ
ランチ命令に関連するブランチが「選択される」かそれ
とも「選択されない」かの予測を、そのブランチ命令で
の実際の経験を反映するように選択的に変更することが
可能である。
【0027】最後に、図6を参照すると、本発明の方法
およびシステムによるブランチ予測のプロセスを示す論
理フローチャートが示されている。図示したように、プ
ロセスはブロック100から開始し、次にブロック10
2に進む。ブロック102で、命令の取出しが行われた
か否か判定する。行われていない場合は、たとえば命令
の取出しが行われる時まで、プロセスが単に繰り返され
る。次に、再度ブロック102を参照すると、複数命令
取出しが行われた場合、ブロック104に進む。ブロッ
ク104で、下位取出しアドレス・ビットを使用してブ
ランチ・ヒストリ・テーブル60(図4参照)にアクセ
スする。次にブロック106に進む。ブロック106
で、ブランチ・ヒストリ・テーブル60内の一群の予測
フィールドから下位取出しアドレス・ビットで示される
点で読取りを行う。
【0028】次にブロック108に進む。ブロック10
8では、下位取出しアドレス・ビットを使用してアクセ
スされる一群の予測フィールドから特定の予測フィール
ドを選択する。前述のように、選択される予測フィール
ドは、命令待ち行列内の複数の命令中のブランチ命令の
相対位置に対応する予測フィールドである。したがっ
て、たとえば、ブランチ命令が命令待ち行列内の最初の
位置に取り出されている場合は、第1の予測フィールド
が使用される。同様に、ブランチ命令が命令待ち行列内
の第3の位置に取り出されている場合は、第3の予測フ
ィールドが使用される。
【0029】次に、ブロック110に進んでブランチの
予測を行う。ブランチの予測は、図5に示すように、予
測フィールドの内容に関連する予測を使用して、ブラン
チ命令を実行するとブランチが「選択される」かそれと
も「選択されない」かに対して予測を割り当てることに
よって行う。次にブロック112に進む。ブロック11
2で、ブランチ命令の実行によってブランチが実際に
「選択された」か否か判定する。実際に選択された場
合、ブロック114に進む。ブロック114で、予測フ
ィールド値を増分し、ブランチ・ヒストリ・テーブルに
予測フィールドの新規の値を書き込む。あるいは、ブラ
ンチ命令を実行してもブランチが「選択されなかった」
場合は、ブロック116に進む。ブロック116で、予
測フィールド値を減分し、ブランチ・ヒストリ・テーブ
ルに予測フィールドの新規の値を書き込む。次に、また
は予測フィールド値を増分した後に、ブロック118に
進み、リターンして次の命令取出しを待つ。言うまでも
なく、予測フィールド値を増分または減分しても、その
フィールドの内容がすでに最大値または最小値である場
合は、影響がない。
【0030】前述の内容を参照すれば、ブランチが「選
択される」可能性は、複数命令アクセス中のブランチ命
令の相対位置を変更する状況の影響を受けるという本発
明者の発見にかんがみ、複数命令取出し中の各相対命令
位置に関連する別々の予測フィールドを提供することに
よって、ブランチ・ヒストリ予測の精度を大幅に向上で
きることが、当業者には理解されよう。
【図面の簡単な説明】
【図1】本発明の方法およびシステムを実施するために
使用できるスーパースカラ・データ処理システムの高水
準ブロック図である。
【図2】本発明の方法およびシステムによる複数の命令
の同時取出しの2つの例を示す命令待ち行列の概略図で
ある。
【図3】本発明の方法およびシステムによる複数の命令
の同時取出しの2つの例を示す命令待ち行列の概略図で
ある。
【図4】本発明の方法およびシステムによる、各エント
リが複数の予測フィールドを含むブランチ・ヒストリ・
テーブルの概略図である。
【図5】図4のブランチ・ヒストリ・テーブル内の可能
な各予測フィールドの内容および関連する予測を示す表
である。
【図6】本発明の方法およびシステムによるブランチ予
測のプロセスを示す論理フローチャートである。
【符号の説明】
10 スーパースカラ・データ処理システム 18 メモリ 20 キャッシュ/メモリ・インタフェース 22 命令待ち行列 24 浮動小数点処理ユニット 26 固定小数点処理ユニット 28 ブランチ処理ユニット 32 条件レジスタ 38 取出しアドレス 40 命令キャッシュ 42 命令待ち行列 56 取出しアドレス・ビット 60 ブランチ・ヒストリ・テーブル

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】最大N個の命令を同時にフェッチし且つデ
    ィスパッチすることのできるスーパースカラ・プロセッ
    サ・システムにおいて、ブランチ・ヒストリ予測精度を
    向上させる方法であって、 それぞれ特定の関連命令を実行したときに1組の実行命
    令中でブランチが選択される可能性を示すデータを含む
    複数の予測フィールドを含む、ブランチ・ヒストリ・テ
    ーブルを確立するステップと、 前記スーパースカラ・プロセッサ・システム内の順序付
    けられた一連のM個の命令にアクセスするために使用さ
    れる取出しアドレスの少なくとも一部分を使用して、前
    記ブランチ・ヒストリ・テーブル内の選択された点にア
    クセスするステップと、 それぞれ前記順序付けられた一連のM個の命令中の対応
    する位置にある特定の命令に関連する前記順序付けられ
    た一連のM個の予想フィールドを、前記ブランチ・ヒス
    トリ・テーブル内の前記選択された点から読み出すステ
    ップと、 前記M個の予測フィールドのうちの関連する1つを使用
    して、前記順序付けられた一連のM個の命令内の対応す
    る命令を実行した結果、前記1組の実行命令中でブラン
    チが選択されるか否かを判定するステップとを含み、 前記順序付けられた一連のM個の命令内の命令の相対位
    置が変化すると、代替予測フィールドが使用され、それ
    によって予測精度が向上することを特徴とする方法。
  2. 【請求項2】複数の予測フィールドを含むブランチ・ヒ
    ストリ・テーブルを確立する前記ステップが、それぞれ
    2ビットの2進カウンタを備える、複数の予測フィール
    ドを含むブランチ・ヒストリ・テーブルを確立するステ
    ップを含む請求項1に記載のスーパースカラ・プロセッ
    サ・システムのブランチ・ヒストリ予測精度を向上させ
    る方法。
  3. 【請求項3】前記スーパースカラ・プロセッサ・システ
    ム内で順序付けられた一連のM個の命令へのアクセスに
    使用される取出しアドレスの少なくとも一部分を使用し
    て、前記ブランチ・ヒストリ・テーブル内の選択された
    点にアクセスする前記ステップが、前記スーパースカラ
    ・プロセッサ・システム内で順序付けられた一連のM個
    の命令へのアクセスに使用される取出しアドレスの下位
    アドレス・ビットを使用して、前記ブランチ・ヒストリ
    ・テーブル内の選択された点にアクセスするステップを
    含む請求項1に記載のスーパースカラ・プロセッサ・シ
    ステムのブランチ・ヒストリ予測精度を向上させる方
    法。
  4. 【請求項4】前記特定の関連命令を実行した結果、前記
    1組の実行命令中でブランチが選択されるたびに、前記
    2ビット2進カウンタを増分するステップをさらに含む
    請求項2に記載のスーパースカラ・プロセッサ・システ
    ムのブランチ・ヒストリ予測精度を向上させる方法。
  5. 【請求項5】前記特定の関連命令を実行しても、前記1
    組の実行命令中でブランチが選択されない場合、そのた
    びに前記2ビット2進カウンタを減分するステップをさ
    らに含む請求項4に記載のスーパースカラ・プロセッサ
    ・システムのブランチ・ヒストリ予測精度を向上させる
    方法。
  6. 【請求項6】最大N個の命令を同時に取り出してディス
    パッチすることのできるスーパースカラ・プロセッサ・
    システムにおいて、ブランチ・ヒストリ予測精度を向上
    させるシステムであって、 それぞれ特定の関連命令を実行したときに1組の実行命
    令中でブランチが選択される可能性を示すデータを含む
    複数の予測フィールドを含む、ブランチ・ヒストリ・テ
    ーブルを確立する手段と、 前記スーパースカラ・プロセッサ・システム内の順序付
    けられた一連のM個の命令にアクセスするために使用さ
    れる取出しアドレスの少なくとも一部分を使用して、前
    記ブランチ・ヒストリ・テーブル内の選択された点にア
    クセスする手段と、 それぞれ前記順序付けられた一連のM個の命令中の対応
    する位置にある特定の命令に関連する前記順序付けられ
    た一連のM個の予想フィールドを、前記ブランチ・ヒス
    トリ・テーブル内の前記選択された点から読み出す手段
    と、 前記M個の予測フィールドのうちの関連する1つを使用
    して、前記順序付けられた一連のM個の命令内の対応す
    る命令を実行した結果、前記1組の実行命令内のブラン
    チが選択されるか否かを判定する手段とを備え、 前記順序付けられた一連のM個の命令内の命令の相対位
    置が変化すると、代替予測フィールドが使用され、それ
    によって予測精度が向上することを特徴とするシステ
    ム。
  7. 【請求項7】複数の予測フィールドを含むブランチ・ヒ
    ストリ・テーブルを確立する前記手段が、それぞれ2ビ
    ットの2進カウンタを備える、複数の予測フィールドを
    含むブランチ・ヒストリ・テーブルを確立する手段を備
    える請求項6に記載のスーパースカラ・プロセッサ・シ
    ステムのブランチ・ヒストリ予測精度を向上させるシス
    テム。
  8. 【請求項8】前記スーパースカラ・プロセッサ・システ
    ム内で順序付けられた一連のM個の命令へのアクセスに
    使用される取出しアドレスの少なくとも一部分を使用し
    て、前記ブランチ・ヒストリ・テーブル内の選択された
    点にアクセスする前記手段が、前記スーパースカラ・プ
    ロセッサ・システム内で順序付けられた一連のM個の命
    令へのアクセスに使用される取出しアドレスの下位アド
    レス・ビットを使用して、前記ブランチ・ヒストリ・テ
    ーブル内の選択された点にアクセスする手段を備える請
    求項6に記載のスーパースカラ・プロセッサ・システム
    のブランチ・ヒストリ予測精度を向上させるシステム。
  9. 【請求項9】前記特定の関連命令を実行した結果、前記
    1組の実行命令中でブランチが選択されるたびに、前記
    2ビット2進カウンタを増分する手段をさらに含む請求
    項7に記載のスーパースカラ・プロセッサ・システムの
    ブランチ・ヒストリ予測精度を向上させるシステム。
  10. 【請求項10】前記特定の関連命令を実行しても、前記
    1組の実行命令中でブランチが選択されない場合、その
    たびに前記2ビット2進カウンタを減分する手段をさら
    に含む請求項9に記載のスーパースカラ・プロセッサ・
    システムのブランチ・ヒストリ予測精度を向上させるシ
    ステム。
JP5319303A 1993-01-08 1993-12-20 ス―パ―スカラ・プロセッサ・システムにおいてブランチ・ヒストリ予測精度を向上させる方法およびシステム Expired - Lifetime JP2531495B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US002289 1993-01-08
US08/002,289 US5367703A (en) 1993-01-08 1993-01-08 Method and system for enhanced branch history prediction accuracy in a superscalar processor system

Publications (2)

Publication Number Publication Date
JPH06236270A true JPH06236270A (ja) 1994-08-23
JP2531495B2 JP2531495B2 (ja) 1996-09-04

Family

ID=21700094

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5319303A Expired - Lifetime JP2531495B2 (ja) 1993-01-08 1993-12-20 ス―パ―スカラ・プロセッサ・システムにおいてブランチ・ヒストリ予測精度を向上させる方法およびシステム

Country Status (4)

Country Link
US (1) US5367703A (ja)
EP (1) EP0605876B1 (ja)
JP (1) JP2531495B2 (ja)
DE (1) DE69321698T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019099897A (ja) * 2017-12-08 2019-06-24 日鉄住金工材株式会社 金属箔製造装置,電極板及び金属箔の製造方法

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
DE69434669T2 (de) * 1993-10-29 2006-10-12 Advanced Micro Devices, Inc., Sunnyvale Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
US5689672A (en) * 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
JP2801135B2 (ja) * 1993-11-26 1998-09-21 富士通株式会社 パイプラインプロセッサの命令読み出し方法及び命令読み出し装置
US5604909A (en) * 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
US5537538A (en) * 1993-12-15 1996-07-16 Silicon Graphics, Inc. Debug mode for a superscalar RISC processor
ATE184407T1 (de) * 1994-01-03 1999-09-15 Intel Corp Verfahren und vorrichtung zum implementieren eines vierstufigen verzweigungsauflosungssystem in einem rechnerprozessor
US5918046A (en) * 1994-01-03 1999-06-29 Intel Corporation Method and apparatus for a branch instruction pointer table
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor
US5608886A (en) * 1994-08-31 1997-03-04 Exponential Technology, Inc. Block-based branch prediction using a target finder array storing target sub-addresses
JP3725547B2 (ja) * 1994-12-02 2005-12-14 ヒュンダイ エレクトロニクス アメリカ インコーポレイテッド 限定ラン分岐予測
US5822574A (en) * 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same
US6112019A (en) * 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US5659752A (en) * 1995-06-30 1997-08-19 International Business Machines Corporation System and method for improving branch prediction in compiled program code
JP3290567B2 (ja) * 1995-08-24 2002-06-10 富士通株式会社 プロファイル計装方法
US5764970A (en) * 1995-11-20 1998-06-09 International Business Machines Corporation Method and apparatus for supporting speculative branch and link/branch on count instructions
US5732235A (en) * 1996-01-25 1998-03-24 International Business Machines Corporation Method and system for minimizing the number of cycles required to execute semantic routines
US5742805A (en) * 1996-02-15 1998-04-21 Fujitsu Ltd. Method and apparatus for a single history register based branch predictor in a superscalar microprocessor
US5909573A (en) * 1996-03-28 1999-06-01 Intel Corporation Method of branch prediction using loop counters
US5822577A (en) * 1996-05-01 1998-10-13 International Business Machines Corporation Context oriented branch history table
US5864697A (en) * 1996-06-28 1999-01-26 Texas Instruments Incorporated Microprocessor using combined actual and speculative branch history prediction
US5774710A (en) * 1996-09-19 1998-06-30 Advanced Micro Devices, Inc. Cache line branch prediction scheme that shares among sets of a set associative cache
US5758143A (en) * 1996-10-07 1998-05-26 International Business Machines Corporation Method for updating a branch history table in a processor which resolves multiple branches in a single cycle
US5794028A (en) * 1996-10-17 1998-08-11 Advanced Micro Devices, Inc. Shared branch prediction structure
JP3641327B2 (ja) * 1996-10-18 2005-04-20 株式会社ルネサステクノロジ データプロセッサ及びデータ処理システム
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
US6253316B1 (en) * 1996-11-19 2001-06-26 Advanced Micro Devices, Inc. Three state branch history using one bit in a branch prediction mechanism
US5978906A (en) 1996-11-19 1999-11-02 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US5954816A (en) * 1996-11-19 1999-09-21 Advanced Micro Devices, Inc. Branch selector prediction
US5995749A (en) * 1996-11-19 1999-11-30 Advanced Micro Devices, Inc. Branch prediction mechanism employing branch selectors to select a branch prediction
US5857104A (en) * 1996-11-26 1999-01-05 Hewlett-Packard Company Synthetic dynamic branch prediction
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
SE520343C2 (sv) * 1997-02-12 2003-07-01 Ericsson Telefon Ab L M Förfarande, system och dator för grenprediktion
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US5822576A (en) * 1997-03-26 1998-10-13 International Business Machines Corporation Branch history table with branch pattern field
US5838962A (en) * 1997-04-09 1998-11-17 Hewlett-Packard Company Interrupt driven dynamic adjustment of branch predictions
US5941985A (en) * 1997-06-24 1999-08-24 Sun Microsystems, Inc. Branch instruction prediction method
US5857098A (en) * 1997-06-24 1999-01-05 Samsung Electronics Co., Ltd. Branch instruction prediction apparatus
US6385720B1 (en) * 1997-07-14 2002-05-07 Matsushita Electric Industrial Co., Ltd. Branch prediction method and processor using origin information, relative position information and history information
US6108774A (en) * 1997-12-19 2000-08-22 Advanced Micro Devices, Inc. Branch prediction with added selector bits to increase branch prediction capacity and flexibility with minimal added bits
US6223280B1 (en) 1998-07-16 2001-04-24 Advanced Micro Devices, Inc. Method and circuit for preloading prediction circuits in microprocessors
US6353883B1 (en) 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6367004B1 (en) * 1998-12-31 2002-04-02 Intel Corporation Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared
US6484256B1 (en) * 1999-08-09 2002-11-19 International Business Machines Corporation Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table
US6647490B2 (en) 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
US6976157B1 (en) 1999-11-04 2005-12-13 International Business Machines Corporation Circuits, systems and methods for performing branch predictions by selectively accessing bimodal and fetch-based history tables
US6502188B1 (en) 1999-11-16 2002-12-31 Advanced Micro Devices, Inc. Dynamic classification of conditional branches in global history branch prediction
US6823446B1 (en) 2000-04-13 2004-11-23 International Business Machines Corporation Apparatus and method for performing branch predictions using dual branch history tables and for updating such branch history tables
US7000096B1 (en) 2000-08-03 2006-02-14 International Business Machines Corporation Branch prediction circuits and methods and systems using the same
US6745323B1 (en) 2000-08-03 2004-06-01 International Business Machines Corporation Global history vector recovery circuits and methods and systems using the same
US6948055B1 (en) 2000-10-09 2005-09-20 Sun Microsystems, Inc. Accuracy of multiple branch prediction schemes
US8285976B2 (en) * 2000-12-28 2012-10-09 Micron Technology, Inc. Method and apparatus for predicting branches using a meta predictor
JP3738842B2 (ja) * 2002-06-04 2006-01-25 富士通株式会社 遅延分岐機能を備えた情報処理装置
US7024663B2 (en) 2002-07-10 2006-04-04 Micron Technology, Inc. Method and system for generating object code to facilitate predictive memory retrieval
US6954836B2 (en) * 2002-07-11 2005-10-11 Micron Technology, Inc. System and method for processor with predictive memory retrieval assist
US7254693B2 (en) * 2004-12-02 2007-08-07 International Business Machines Corporation Selectively prohibiting speculative execution of conditional branch type based on instruction bit
US8151092B2 (en) * 2005-01-12 2012-04-03 International Business Machines Corporation Control signal memoization in a multiple instruction issue microprocessor
US20110078425A1 (en) * 2009-09-25 2011-03-31 Shah Manish K Branch prediction mechanism for predicting indirect branch targets
JP4888618B2 (ja) * 2010-04-19 2012-02-29 日本電気株式会社 処理手順管理装置、処理手順管理方法、処理手順管理システム、および処理手順管理プログラム
WO2013101121A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Managed instruction cache prefetching
US9201658B2 (en) * 2012-09-24 2015-12-01 Apple Inc. Branch predictor for wide issue, arbitrarily aligned fetch that can cross cache line boundaries
US20140180848A1 (en) * 2012-12-20 2014-06-26 Wal-Mart Stores, Inc. Estimating Point Of Sale Wait Times
US10108423B2 (en) * 2015-03-25 2018-10-23 International Business Machines Corporation History buffer with single snoop tag for multiple-field registers
US11163577B2 (en) 2018-11-26 2021-11-02 International Business Machines Corporation Selectively supporting static branch prediction settings only in association with processor-designated types of instructions

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH038023A (ja) * 1989-06-06 1991-01-16 Mitsubishi Electric Corp ブランチ予測アルゴリズム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
EP0394624B1 (en) * 1989-04-24 1997-06-18 International Business Machines Corporation Multiple sequence processor system
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5303356A (en) * 1990-05-04 1994-04-12 International Business Machines Corporation System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
EP0586057B1 (en) * 1992-08-31 2000-03-01 Sun Microsystems, Inc. Rapid instruction (pre)fetching and dispatching using prior (pre)fetch predictive annotations

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH038023A (ja) * 1989-06-06 1991-01-16 Mitsubishi Electric Corp ブランチ予測アルゴリズム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019099897A (ja) * 2017-12-08 2019-06-24 日鉄住金工材株式会社 金属箔製造装置,電極板及び金属箔の製造方法

Also Published As

Publication number Publication date
US5367703A (en) 1994-11-22
JP2531495B2 (ja) 1996-09-04
EP0605876A1 (en) 1994-07-13
DE69321698T2 (de) 1999-06-10
DE69321698D1 (de) 1998-11-26
EP0605876B1 (en) 1998-10-21

Similar Documents

Publication Publication Date Title
JP2531495B2 (ja) ス―パ―スカラ・プロセッサ・システムにおいてブランチ・ヒストリ予測精度を向上させる方法およびシステム
US5903750A (en) Dynamic branch prediction for branch instructions with multiple targets
US5421020A (en) Counter register implementation for speculative execution of branch on count instructions
US6247124B1 (en) Branch prediction entry with target line index calculated using relative position of second operation of two step branch operation in a line of instructions
KR100411529B1 (ko) 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치
US5377336A (en) Improved method to prefetch load instruction data
US6260138B1 (en) Method and apparatus for branch instruction processing in a processor
US7734897B2 (en) Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads
US6304961B1 (en) Computer system and method for fetching a next instruction
US6081887A (en) System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction
US7266676B2 (en) Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
JPH0334024A (ja) 分岐予測の方法とそのための装置
KR20040014988A (ko) 간접 브랜치 타겟 어드레스 예측을 위한 방법, 장치 및컴파일러
US5935238A (en) Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US5964869A (en) Instruction fetch mechanism with simultaneous prediction of control-flow instructions
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
JP2006520964A5 (ja)
EP0655679B1 (en) Method and apparatus for controlling instruction in pipeline processor
US5889986A (en) Instruction fetch unit including instruction buffer and secondary or branch target buffer that transfers prefetched instructions to the instruction buffer
US5978896A (en) Method and system for increased instruction dispatch efficiency in a superscalar processor system
US7069426B1 (en) Branch predictor with saturating counter and local branch history table with algorithm for updating replacement and history fields of matching table entries
US5764970A (en) Method and apparatus for supporting speculative branch and link/branch on count instructions
US5784604A (en) Method and system for reduced run-time delay during conditional branch execution in pipelined processor systems utilizing selectively delayed sequential instruction purging
US8285976B2 (en) Method and apparatus for predicting branches using a meta predictor
US20050216713A1 (en) Instruction text controlled selectively stated branches for prediction via a branch target buffer