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
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000010586 diagram Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative 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プロセッサは、スーパースカラ実施態様を使
用する。すなわち、複数の命令が同時に発行され実行さ
れる。
は、絶えずそのようなシステムの性能面の向上に努めて
いる。データ処理システムの効率を向上させる1つの技
法は、サイクル・タイムを短くし、1命令当たりサイク
ル(CPI)率を下げることである。このような技法を
拡張データ処理システムに巧みに応用した例に、インタ
ーナショナル・ビジネス・マシーンズ・コーポレーショ
ン(IBM)のRISCシステム/6000(RS/6
000)コンピュータがある。RS/6000システム
は、数値中心の科学技術の応用分野およびマルチユーザ
商業環境でうまく機能するように設計されている。RS
/6000プロセッサは、スーパースカラ実施態様を使
用する。すなわち、複数の命令が同時に発行され実行さ
れる。
【0003】複数の命令を同時に発行して実行するに
は、高命令帯域幅で同時に実行できる独立した機能ユニ
ットが必要である。RS/6000システムは、本来的
にパイプライン式の別々のブランチ処理ユニット、固定
小数点処理ユニット、および浮動小数点処理ユニットを
使ってこれを実現している。そのようなシステムでいわ
ゆる「条件付きブランチ」命令を実行すると、重大なパ
イプライン遅延が発生することがある。条件付きブラン
チ命令とは、他の1つまたは複数の命令の処理の特定の
結果に応じて、アプリケーション内の指定された条件付
きブランチをとることを指令する命令である。したがっ
て、条件付きブランチ命令がパイプラン待ち行列中を待
ち行列内の実行位置まで伝播するまでに、条件付きブラ
ンチを解決する前に条件付きブランチ命令の後にある待
ち行列に命令をロードしておき、実行時遅延を避ける必
要がある。
は、高命令帯域幅で同時に実行できる独立した機能ユニ
ットが必要である。RS/6000システムは、本来的
にパイプライン式の別々のブランチ処理ユニット、固定
小数点処理ユニット、および浮動小数点処理ユニットを
使ってこれを実現している。そのようなシステムでいわ
ゆる「条件付きブランチ」命令を実行すると、重大なパ
イプライン遅延が発生することがある。条件付きブラン
チ命令とは、他の1つまたは複数の命令の処理の特定の
結果に応じて、アプリケーション内の指定された条件付
きブランチをとることを指令する命令である。したがっ
て、条件付きブランチ命令がパイプラン待ち行列中を待
ち行列内の実行位置まで伝播するまでに、条件付きブラ
ンチを解決する前に条件付きブランチ命令の後にある待
ち行列に命令をロードしておき、実行時遅延を避ける必
要がある。
【0004】パイプライン式プロセッサ・システムにお
けるこの実行時遅延を最小限にする1つの試みは、代替
命令待ち行列を設けるものである。主命令待ち行列内で
条件付きブランチ命令が検出されると、待ち行列内の条
件付きブランチ命令の次の順次命令がただちにパージさ
れて、代替命令待ち行列にロードされる。次に、予測さ
れた条件付きブランチのターゲット命令が取り出され
て、主命令待ち行列にロードされる。予測された条件付
きブランチが発生しない場合、代替命令待ち行列から順
次命令が取り出され、主命令待ち行列にロードされる。
この技法では実行時遅延が最小限になるが、代替命令待
ち行列を設ける必要があり、それに伴ってハードウェア
資源を増設する必要もある。
けるこの実行時遅延を最小限にする1つの試みは、代替
命令待ち行列を設けるものである。主命令待ち行列内で
条件付きブランチ命令が検出されると、待ち行列内の条
件付きブランチ命令の次の順次命令がただちにパージさ
れて、代替命令待ち行列にロードされる。次に、予測さ
れた条件付きブランチのターゲット命令が取り出され
て、主命令待ち行列にロードされる。予測された条件付
きブランチが発生しない場合、代替命令待ち行列から順
次命令が取り出され、主命令待ち行列にロードされる。
この技法では実行時遅延が最小限になるが、代替命令待
ち行列を設ける必要があり、それに伴ってハードウェア
資源を増設する必要もある。
【0005】パイプライン式プロセッサ・システムの実
行時遅延を最小限にする他の試みは、コンパイラを使用
して、条件付きブランチ命令と、条件付きブランチを開
始する結果を生成する命令との間の待ち行列に多数の命
令を挿入するものである。この技法では、条件付きブラ
ンチ命令を実行する前に、条件付きブランチを開始する
結果を発生させる命令を実行してから条件付きブランチ
命令を実行するまでの間の遅延中に、条件付きブランチ
を解決し、ターゲット命令または順次命令を命令待ち行
列に入れようと試みる。理論上、この技法は、代替命令
待ち行列を設けなくても実行時遅延を最小限にする。し
かし、必要な遅延を実現するのに十分な数の命令を待ち
行列に挿入するのは困難である場合が多い。
行時遅延を最小限にする他の試みは、コンパイラを使用
して、条件付きブランチ命令と、条件付きブランチを開
始する結果を生成する命令との間の待ち行列に多数の命
令を挿入するものである。この技法では、条件付きブラ
ンチ命令を実行する前に、条件付きブランチを開始する
結果を発生させる命令を実行してから条件付きブランチ
命令を実行するまでの間の遅延中に、条件付きブランチ
を解決し、ターゲット命令または順次命令を命令待ち行
列に入れようと試みる。理論上、この技法は、代替命令
待ち行列を設けなくても実行時遅延を最小限にする。し
かし、必要な遅延を実現するのに十分な数の命令を待ち
行列に挿入するのは困難である場合が多い。
【0006】したがって、アプリケーションが、ブラン
チ命令の発生に応じて、指定された条件付きブランチに
分岐するか否かを正確に予測することにより、データ処
理システムの効率を上げることができる。特定のブラン
チが「選択される」か「選択されない」かを予測する1
つの技法は、いわゆる「ブランチ・ヒストリ・テーブル
(BHT)」を使用することである。ブランチ・ヒスト
リ・テーブルは、特定のブランチ命令を実行した場合
に、1組の命令内にブランチが生じるか否かを正確に予
測するために、その命令の最近のヒストリを記憶するの
に使用される。ブランチ・ヒストリ・テーブルを設ける
と、実行時遅延を最小限にする比較的単純な技法が提供
されるが、1回のアクセスで複数の命令が取り出され
る、スーパースカラ・プロセッサ・システムでは問題が
ある。すなわち、そのようなシステムのパイプラインに
応じて、ターゲット・アドレスを計算するまでブランチ
・アドレスを知ることができない。ターゲット・アドレ
スを計算するまでブランチ・アドレスが分からず、かつ
ブランチ予測がアドレスの計算と並列に行われる場合、
ブランチ・ヒストリ・テーブルへのアクセスが極めて困
難になる。
チ命令の発生に応じて、指定された条件付きブランチに
分岐するか否かを正確に予測することにより、データ処
理システムの効率を上げることができる。特定のブラン
チが「選択される」か「選択されない」かを予測する1
つの技法は、いわゆる「ブランチ・ヒストリ・テーブル
(BHT)」を使用することである。ブランチ・ヒスト
リ・テーブルは、特定のブランチ命令を実行した場合
に、1組の命令内にブランチが生じるか否かを正確に予
測するために、その命令の最近のヒストリを記憶するの
に使用される。ブランチ・ヒストリ・テーブルを設ける
と、実行時遅延を最小限にする比較的単純な技法が提供
されるが、1回のアクセスで複数の命令が取り出され
る、スーパースカラ・プロセッサ・システムでは問題が
ある。すなわち、そのようなシステムのパイプラインに
応じて、ターゲット・アドレスを計算するまでブランチ
・アドレスを知ることができない。ターゲット・アドレ
スを計算するまでブランチ・アドレスが分からず、かつ
ブランチ予測がアドレスの計算と並列に行われる場合、
ブランチ・ヒストリ・テーブルへのアクセスが極めて困
難になる。
【0007】したがって、ブランチ・ヒストリ・テーブ
ルを使用してブランチ命令の結果を予測する改良された
方法およびシステムが必要なことは明らかである。
ルを使用してブランチ命令の結果を予測する改良された
方法およびシステムが必要なことは明らかである。
【0008】
【発明が解決しようとする課題】本発明の一目的は、改
良されたデータ処理システムを提供することである。
良されたデータ処理システムを提供することである。
【0009】本発明の他の目的は、データ処理システム
における改良されたブランチ・ヒストリ予測の方法およ
びシステムを提供することである。
における改良されたブランチ・ヒストリ予測の方法およ
びシステムを提供することである。
【0010】本発明の他の目的は、複数の命令を同時に
ディスパッチすることのできるスーパースカラ・データ
処理システムにおいて、ブランチ・ヒストリ予測を改善
する改良された方法およびシステムを提供することであ
る。
ディスパッチすることのできるスーパースカラ・データ
処理システムにおいて、ブランチ・ヒストリ予測を改善
する改良された方法およびシステムを提供することであ
る。
【0011】
【課題を解決するための手段】前述の目的は、以下のよ
うにして達成される。本発明の方法およびシステムを使
用すると、複数命令アクセス内の各命令取出し位置ごと
に別々のブランチ・ヒストリを含むブランチ・ヒストリ
・テーブルを維持することによって、スーパースカラ・
プロセッサ・システムにおけるブランチ・ヒストリ予測
精度を向上させることができる。複数の命令に同時にア
クセスすることのできるスーパースカラ・プロセッサ・
システムにおいて、複数命令アクセス中の可能な各命令
取出し位置用の予測フィールドを含むブランチ・ヒスト
リ・テーブルを確立する。ブランチ・ヒストリ・テーブ
ル内で下位アドレス・ビットなど命令取出しアドレスの
一部分を使用して各予測フィールド・グループにアクセ
スする。次に、命令取出し中のブランチ命令の位置に対
応する、グループ内の特定の予測フィールドを選択す
る。次に、選択した予測フィールドの内容を使用して、
対応するブランチ命令についてブランチが選択されるか
否かを予測する。各予測フィールドは、ブランチが「選
択される」か、それとも「選択されない」かに応じて増
分または減分された後、ブランチ・ヒストリ・テーブル
に再び記憶される、2ビットの2進カウンタを備えるこ
とが好ましい。
うにして達成される。本発明の方法およびシステムを使
用すると、複数命令アクセス内の各命令取出し位置ごと
に別々のブランチ・ヒストリを含むブランチ・ヒストリ
・テーブルを維持することによって、スーパースカラ・
プロセッサ・システムにおけるブランチ・ヒストリ予測
精度を向上させることができる。複数の命令に同時にア
クセスすることのできるスーパースカラ・プロセッサ・
システムにおいて、複数命令アクセス中の可能な各命令
取出し位置用の予測フィールドを含むブランチ・ヒスト
リ・テーブルを確立する。ブランチ・ヒストリ・テーブ
ル内で下位アドレス・ビットなど命令取出しアドレスの
一部分を使用して各予測フィールド・グループにアクセ
スする。次に、命令取出し中のブランチ命令の位置に対
応する、グループ内の特定の予測フィールドを選択す
る。次に、選択した予測フィールドの内容を使用して、
対応するブランチ命令についてブランチが選択されるか
否かを予測する。各予測フィールドは、ブランチが「選
択される」か、それとも「選択されない」かに応じて増
分または減分された後、ブランチ・ヒストリ・テーブル
に再び記憶される、2ビットの2進カウンタを備えるこ
とが好ましい。
【0012】前記その他の目的、特徴、および利点は、
以下の詳細な説明で明らかになろう。
以下の詳細な説明で明らかになろう。
【0013】
【実施例】図面、特に図1を参照すると、本発明の方法
およびシステムを実施するために使用できるスーパース
カラ・コンピュータ・システム10の高水準ブロック図
が示されている。図のように、スーパースカラ・コンピ
ュータ・システム10は、データ、命令などを記憶する
ために使用されるメモリ18を含むことが好ましい。メ
モリ18内に記憶されるデータまたは命令は、当業者に
周知の方法でキャッシュ/メモリ・インタフェース20
を使用してアクセスすることが好ましい。キャッシュ・
メモリ・システムのサイズ設定および使用法は、データ
処理技術分野内の周知の一部門であり、本発明では取り
上げない。しかし、最新の連想式キャッシュ技術を使用
すれば、キャッシュ/メモリ・インタフェース20内に
一時的に記憶されたデータを使用して高率のメモリ・ア
クセスを実現できることが、当業者には理解されよう。
およびシステムを実施するために使用できるスーパース
カラ・コンピュータ・システム10の高水準ブロック図
が示されている。図のように、スーパースカラ・コンピ
ュータ・システム10は、データ、命令などを記憶する
ために使用されるメモリ18を含むことが好ましい。メ
モリ18内に記憶されるデータまたは命令は、当業者に
周知の方法でキャッシュ/メモリ・インタフェース20
を使用してアクセスすることが好ましい。キャッシュ・
メモリ・システムのサイズ設定および使用法は、データ
処理技術分野内の周知の一部門であり、本発明では取り
上げない。しかし、最新の連想式キャッシュ技術を使用
すれば、キャッシュ/メモリ・インタフェース20内に
一時的に記憶されたデータを使用して高率のメモリ・ア
クセスを実現できることが、当業者には理解されよう。
【0014】キャッシュ/メモリ・インタフェース20
からの命令は通常、好ましくは複数の待ち行列位置を含
む命令待ち行列22にロードされる。スーパースカラ・
コンピュータ・システムの典型的な実施例では、命令待
ち行列は8個の待ち行列位置を含むことができ、したが
って所与のサイクル中に、キャッシュ/メモリ・インタ
フェース20によって渡される有効な命令の数と、命令
待ち行列22内で利用可能な空間の量に応じて、命令待
ち行列22に0ないし8個の命令をロードすることがで
きる。
からの命令は通常、好ましくは複数の待ち行列位置を含
む命令待ち行列22にロードされる。スーパースカラ・
コンピュータ・システムの典型的な実施例では、命令待
ち行列は8個の待ち行列位置を含むことができ、したが
って所与のサイクル中に、キャッシュ/メモリ・インタ
フェース20によって渡される有効な命令の数と、命令
待ち行列22内で利用可能な空間の量に応じて、命令待
ち行列22に0ないし8個の命令をロードすることがで
きる。
【0015】そのようなスーパースカラ・コンピュータ
・システムは普通であるが、命令待ち行列22は、複数
の実行ユニットに命令をディスパッチするために使用さ
れる。図1に示すように、コンピュータ・システム10
は、浮動小数点処理ユニット24、固定小数点処理ユニ
ット26、およびブランチ処理ユニット28を含む。し
たがって、命令待ち行列22は、単一のサイクル中に、
0ないし3個の命令を各実行ユニットに1個ずつディス
パッチすることができる。
・システムは普通であるが、命令待ち行列22は、複数
の実行ユニットに命令をディスパッチするために使用さ
れる。図1に示すように、コンピュータ・システム10
は、浮動小数点処理ユニット24、固定小数点処理ユニ
ット26、およびブランチ処理ユニット28を含む。し
たがって、命令待ち行列22は、単一のサイクル中に、
0ないし3個の命令を各実行ユニットに1個ずつディス
パッチすることができる。
【0016】命令待ち行列22からディスパッチされた
順次命令だけでなく、いわゆる「条件付きブランチ命
令」も、ブランチ・プロセッサで実行するために、命令
待ち行列22にロードすることができる。条件付き命令
とは、1つまたは複数の順次命令の処理の特定の結果に
応じて、アプリケーション内で選択される関連する条件
付きブランチを指定する命令である。スーパースカラ・
コンピュータ・システム10などのパイプライン式プロ
セッサ・システムの実行時遅延を最小限にするために、
命令待ち行列内の条件付きブランチ命令の存在を検出
し、条件付きブランチの結果を予測する。当業者には明
らかなように、条件付きブランチが「選択されない」と
予測されると、命令待ち行列内の順次命令は単に現経路
に沿って継続し、命令は変更されない。しかし、ブラン
チの発生に関する予測が誤っている場合、プログラムの
順序で条件付きブランチ命令の次にくる順次命令を命令
待ち行列からパージし、ターゲット命令を取り出す必要
がある。あるいは、条件付きブランチが「選択される」
と予測され、予測が正しいことがわかった場合は、ター
ゲット命令を取り出し、それらの命令を使用して条件付
きブランチをたどる。言うまでもなく、「選択される」
という予測が誤っている場合は、ターゲット命令をパー
ジし、プログラムの順序で条件付きブランチ命令の次に
くる順次命令を取り出す必要がある。
順次命令だけでなく、いわゆる「条件付きブランチ命
令」も、ブランチ・プロセッサで実行するために、命令
待ち行列22にロードすることができる。条件付き命令
とは、1つまたは複数の順次命令の処理の特定の結果に
応じて、アプリケーション内で選択される関連する条件
付きブランチを指定する命令である。スーパースカラ・
コンピュータ・システム10などのパイプライン式プロ
セッサ・システムの実行時遅延を最小限にするために、
命令待ち行列内の条件付きブランチ命令の存在を検出
し、条件付きブランチの結果を予測する。当業者には明
らかなように、条件付きブランチが「選択されない」と
予測されると、命令待ち行列内の順次命令は単に現経路
に沿って継続し、命令は変更されない。しかし、ブラン
チの発生に関する予測が誤っている場合、プログラムの
順序で条件付きブランチ命令の次にくる順次命令を命令
待ち行列からパージし、ターゲット命令を取り出す必要
がある。あるいは、条件付きブランチが「選択される」
と予測され、予測が正しいことがわかった場合は、ター
ゲット命令を取り出し、それらの命令を使用して条件付
きブランチをたどる。言うまでもなく、「選択される」
という予測が誤っている場合は、ターゲット命令をパー
ジし、プログラムの順序で条件付きブランチ命令の次に
くる順次命令を取り出す必要がある。
【0017】図示したように、スーパースカラ・コンピ
ュータ・システム10はまた、条件レジスタ32を含む
ことが好ましい。条件レジスタ32は、コンピュータ・
システム10内で処理される順次命令の結果を使用して
行われる様々な比較の結果を一時的に記憶するために使
用される。したがって、浮動小数点処理ユニット24、
固定小数点処理ユニット26、およびブランチ処理ユニ
ット28はすべて、条件レジスタ32に結合される。条
件レジスタ32内の特定の条件の状況を検出し、それを
ブランチ処理ユニット28に結合して、ターゲット・ア
ドレスを生成することができる。次いでこのターゲット
・アドレスを使用して、ブランチを開始する条件の発生
に応じて、ターゲット命令を取り出す。
ュータ・システム10はまた、条件レジスタ32を含む
ことが好ましい。条件レジスタ32は、コンピュータ・
システム10内で処理される順次命令の結果を使用して
行われる様々な比較の結果を一時的に記憶するために使
用される。したがって、浮動小数点処理ユニット24、
固定小数点処理ユニット26、およびブランチ処理ユニ
ット28はすべて、条件レジスタ32に結合される。条
件レジスタ32内の特定の条件の状況を検出し、それを
ブランチ処理ユニット28に結合して、ターゲット・ア
ドレスを生成することができる。次いでこのターゲット
・アドレスを使用して、ブランチを開始する条件の発生
に応じて、ターゲット命令を取り出す。
【0018】次に、ブランチ処理ユニット28は、ター
ゲット・アドレスを取出し機構30に結合する。取出し
機構30は、条件付きブランチをたどるのに必要なター
ゲット命令の取出しアドレスを計算し、それらの取出し
アドレスをキャッシュ/メモリ・インタフェース20に
結合する。当業者には明らかなように、それらの取出し
アドレスと関連するターゲット命令がキャッシュ/メモ
リ・インタフェース20内に存在する場合、それらのタ
ーゲット命令は命令待ち行列22にロードされる。ある
いは、ターゲット命令をメモリ18から取り出し、それ
らのターゲット命令の取出しに必要な遅延の後、キャッ
シュ/メモリ・インタフェース20から命令待ち行列2
2にロードすることもできる。
ゲット・アドレスを取出し機構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にロードすることができる。
およびシステムによる複数の命令の同時取出しを示す、
命令待ち行列の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にロードされることがわかる。
使用する複数命令取出しにより、順序付けられた一連の
命令が命令キャッシュ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個の命令
のグループ内の対応する位置にある命令に関連する。
は、図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がアクセスされる。
ドレスを使用すると、完全に異なる一群の予測フィール
ドがアクセスされる。すなわち、ブランチ・ヒストリ・
テーブル60内の位置70、72、74、76から予測
フィールドL、M、N、Oがアクセスされる。
【0024】本明細書で説明するようにして、ブランチ
・ヒストリ・テーブル60内の各エントリは一群の予測
フィールドを含み、図2および3に示すように、各予測
フィールドは、複数命令アクセス中の特定の命令位置に
対応する。このようにして、各命令ごとに、複数命令ア
クセス中の命令の位置と相関する別々のブランチ・ヒス
トリを維持することができる。というのは、複数命令ア
クセス中の命令の相対位置は、その命令のもっともらし
いブランチ予測の重要な機能を示すことが多いからであ
る。
・ヒストリ・テーブル60内の各エントリは一群の予測
フィールドを含み、図2および3に示すように、各予測
フィールドは、複数命令アクセス中の特定の命令位置に
対応する。このようにして、各命令ごとに、複数命令ア
クセス中の命令の位置と相関する別々のブランチ・ヒス
トリを維持することができる。というのは、複数命令ア
クセス中の命令の相対位置は、その命令のもっともらし
いブランチ予測の重要な機能を示すことが多いからであ
る。
【0025】図5を参照すると、図4のブランチ・ヒス
トリ・テーブル60内の各予測フィールドの内容を示す
表が示されている。図示した本発明の実施例では、図4
のブランチ・ヒストリ・テーブル内の一群の予測フィー
ルド内の各予測フィールドは、当技術分野で普通のやり
方で、条件付きブランチ命令の実行によりブランチが
「選択される」か「選択されない」かに応じて選択的に
増分または減分される、2ビット・カウンタを備えるこ
とができる。欄92に示すように、可能な予測フィール
ドの内容が4つある。予測フィールドが2進値"00"を
含む場合、予測は、ブランチが「選択されない」という
強い予測である。予測フィールドの内容が2進値の"0
1"である場合、これは、ブランチ命令を実行しても、
ブランチが「選択されない」という弱い予測である。欄
92を先に進むと、予測フィールド内の2進内容の"1
0"は、ブランチ命令の結果ブランチが「選択される」
という弱い予測であり、2進値の"11"は、ブランチ命
令を実行すると、ブランチが「選択される」という強い
予測である。
トリ・テーブル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内の一群の予測
フィールドから下位取出しアドレス・ビットで示される
点で読取りを行う。
およびシステムによるブランチ予測のプロセスを示す論
理フローチャートが示されている。図示したように、プ
ロセスはブロック100から開始し、次にブロック10
2に進む。ブロック102で、命令の取出しが行われた
か否か判定する。行われていない場合は、たとえば命令
の取出しが行われる時まで、プロセスが単に繰り返され
る。次に、再度ブロック102を参照すると、複数命令
取出しが行われた場合、ブロック104に進む。ブロッ
ク104で、下位取出しアドレス・ビットを使用してブ
ランチ・ヒストリ・テーブル60(図4参照)にアクセ
スする。次にブロック106に進む。ブロック106
で、ブランチ・ヒストリ・テーブル60内の一群の予測
フィールドから下位取出しアドレス・ビットで示される
点で読取りを行う。
【0028】次にブロック108に進む。ブロック10
8では、下位取出しアドレス・ビットを使用してアクセ
スされる一群の予測フィールドから特定の予測フィール
ドを選択する。前述のように、選択される予測フィール
ドは、命令待ち行列内の複数の命令中のブランチ命令の
相対位置に対応する予測フィールドである。したがっ
て、たとえば、ブランチ命令が命令待ち行列内の最初の
位置に取り出されている場合は、第1の予測フィールド
が使用される。同様に、ブランチ命令が命令待ち行列内
の第3の位置に取り出されている場合は、第3の予測フ
ィールドが使用される。
8では、下位取出しアドレス・ビットを使用してアクセ
スされる一群の予測フィールドから特定の予測フィール
ドを選択する。前述のように、選択される予測フィール
ドは、命令待ち行列内の複数の命令中のブランチ命令の
相対位置に対応する予測フィールドである。したがっ
て、たとえば、ブランチ命令が命令待ち行列内の最初の
位置に取り出されている場合は、第1の予測フィールド
が使用される。同様に、ブランチ命令が命令待ち行列内
の第3の位置に取り出されている場合は、第3の予測フ
ィールドが使用される。
【0029】次に、ブロック110に進んでブランチの
予測を行う。ブランチの予測は、図5に示すように、予
測フィールドの内容に関連する予測を使用して、ブラン
チ命令を実行するとブランチが「選択される」かそれと
も「選択されない」かに対して予測を割り当てることに
よって行う。次にブロック112に進む。ブロック11
2で、ブランチ命令の実行によってブランチが実際に
「選択された」か否か判定する。実際に選択された場
合、ブロック114に進む。ブロック114で、予測フ
ィールド値を増分し、ブランチ・ヒストリ・テーブルに
予測フィールドの新規の値を書き込む。あるいは、ブラ
ンチ命令を実行してもブランチが「選択されなかった」
場合は、ブロック116に進む。ブロック116で、予
測フィールド値を減分し、ブランチ・ヒストリ・テーブ
ルに予測フィールドの新規の値を書き込む。次に、また
は予測フィールド値を増分した後に、ブロック118に
進み、リターンして次の命令取出しを待つ。言うまでも
なく、予測フィールド値を増分または減分しても、その
フィールドの内容がすでに最大値または最小値である場
合は、影響がない。
予測を行う。ブランチの予測は、図5に示すように、予
測フィールドの内容に関連する予測を使用して、ブラン
チ命令を実行するとブランチが「選択される」かそれと
も「選択されない」かに対して予測を割り当てることに
よって行う。次にブロック112に進む。ブロック11
2で、ブランチ命令の実行によってブランチが実際に
「選択された」か否か判定する。実際に選択された場
合、ブロック114に進む。ブロック114で、予測フ
ィールド値を増分し、ブランチ・ヒストリ・テーブルに
予測フィールドの新規の値を書き込む。あるいは、ブラ
ンチ命令を実行してもブランチが「選択されなかった」
場合は、ブロック116に進む。ブロック116で、予
測フィールド値を減分し、ブランチ・ヒストリ・テーブ
ルに予測フィールドの新規の値を書き込む。次に、また
は予測フィールド値を増分した後に、ブロック118に
進み、リターンして次の命令取出しを待つ。言うまでも
なく、予測フィールド値を増分または減分しても、その
フィールドの内容がすでに最大値または最小値である場
合は、影響がない。
【0030】前述の内容を参照すれば、ブランチが「選
択される」可能性は、複数命令アクセス中のブランチ命
令の相対位置を変更する状況の影響を受けるという本発
明者の発見にかんがみ、複数命令取出し中の各相対命令
位置に関連する別々の予測フィールドを提供することに
よって、ブランチ・ヒストリ予測の精度を大幅に向上で
きることが、当業者には理解されよう。
択される」可能性は、複数命令アクセス中のブランチ命
令の相対位置を変更する状況の影響を受けるという本発
明者の発見にかんがみ、複数命令取出し中の各相対命令
位置に関連する別々の予測フィールドを提供することに
よって、ブランチ・ヒストリ予測の精度を大幅に向上で
きることが、当業者には理解されよう。
【図1】本発明の方法およびシステムを実施するために
使用できるスーパースカラ・データ処理システムの高水
準ブロック図である。
使用できるスーパースカラ・データ処理システムの高水
準ブロック図である。
【図2】本発明の方法およびシステムによる複数の命令
の同時取出しの2つの例を示す命令待ち行列の概略図で
ある。
の同時取出しの2つの例を示す命令待ち行列の概略図で
ある。
【図3】本発明の方法およびシステムによる複数の命令
の同時取出しの2つの例を示す命令待ち行列の概略図で
ある。
の同時取出しの2つの例を示す命令待ち行列の概略図で
ある。
【図4】本発明の方法およびシステムによる、各エント
リが複数の予測フィールドを含むブランチ・ヒストリ・
テーブルの概略図である。
リが複数の予測フィールドを含むブランチ・ヒストリ・
テーブルの概略図である。
【図5】図4のブランチ・ヒストリ・テーブル内の可能
な各予測フィールドの内容および関連する予測を示す表
である。
な各予測フィールドの内容および関連する予測を示す表
である。
【図6】本発明の方法およびシステムによるブランチ予
測のプロセスを示す論理フローチャートである。
測のプロセスを示す論理フローチャートである。
10 スーパースカラ・データ処理システム 18 メモリ 20 キャッシュ/メモリ・インタフェース 22 命令待ち行列 24 浮動小数点処理ユニット 26 固定小数点処理ユニット 28 ブランチ処理ユニット 32 条件レジスタ 38 取出しアドレス 40 命令キャッシュ 42 命令待ち行列 56 取出しアドレス・ビット 60 ブランチ・ヒストリ・テーブル
Claims (10)
- 【請求項1】最大N個の命令を同時にフェッチし且つデ
ィスパッチすることのできるスーパースカラ・プロセッ
サ・システムにおいて、ブランチ・ヒストリ予測精度を
向上させる方法であって、 それぞれ特定の関連命令を実行したときに1組の実行命
令中でブランチが選択される可能性を示すデータを含む
複数の予測フィールドを含む、ブランチ・ヒストリ・テ
ーブルを確立するステップと、 前記スーパースカラ・プロセッサ・システム内の順序付
けられた一連のM個の命令にアクセスするために使用さ
れる取出しアドレスの少なくとも一部分を使用して、前
記ブランチ・ヒストリ・テーブル内の選択された点にア
クセスするステップと、 それぞれ前記順序付けられた一連のM個の命令中の対応
する位置にある特定の命令に関連する前記順序付けられ
た一連のM個の予想フィールドを、前記ブランチ・ヒス
トリ・テーブル内の前記選択された点から読み出すステ
ップと、 前記M個の予測フィールドのうちの関連する1つを使用
して、前記順序付けられた一連のM個の命令内の対応す
る命令を実行した結果、前記1組の実行命令中でブラン
チが選択されるか否かを判定するステップとを含み、 前記順序付けられた一連のM個の命令内の命令の相対位
置が変化すると、代替予測フィールドが使用され、それ
によって予測精度が向上することを特徴とする方法。 - 【請求項2】複数の予測フィールドを含むブランチ・ヒ
ストリ・テーブルを確立する前記ステップが、それぞれ
2ビットの2進カウンタを備える、複数の予測フィール
ドを含むブランチ・ヒストリ・テーブルを確立するステ
ップを含む請求項1に記載のスーパースカラ・プロセッ
サ・システムのブランチ・ヒストリ予測精度を向上させ
る方法。 - 【請求項3】前記スーパースカラ・プロセッサ・システ
ム内で順序付けられた一連のM個の命令へのアクセスに
使用される取出しアドレスの少なくとも一部分を使用し
て、前記ブランチ・ヒストリ・テーブル内の選択された
点にアクセスする前記ステップが、前記スーパースカラ
・プロセッサ・システム内で順序付けられた一連のM個
の命令へのアクセスに使用される取出しアドレスの下位
アドレス・ビットを使用して、前記ブランチ・ヒストリ
・テーブル内の選択された点にアクセスするステップを
含む請求項1に記載のスーパースカラ・プロセッサ・シ
ステムのブランチ・ヒストリ予測精度を向上させる方
法。 - 【請求項4】前記特定の関連命令を実行した結果、前記
1組の実行命令中でブランチが選択されるたびに、前記
2ビット2進カウンタを増分するステップをさらに含む
請求項2に記載のスーパースカラ・プロセッサ・システ
ムのブランチ・ヒストリ予測精度を向上させる方法。 - 【請求項5】前記特定の関連命令を実行しても、前記1
組の実行命令中でブランチが選択されない場合、そのた
びに前記2ビット2進カウンタを減分するステップをさ
らに含む請求項4に記載のスーパースカラ・プロセッサ
・システムのブランチ・ヒストリ予測精度を向上させる
方法。 - 【請求項6】最大N個の命令を同時に取り出してディス
パッチすることのできるスーパースカラ・プロセッサ・
システムにおいて、ブランチ・ヒストリ予測精度を向上
させるシステムであって、 それぞれ特定の関連命令を実行したときに1組の実行命
令中でブランチが選択される可能性を示すデータを含む
複数の予測フィールドを含む、ブランチ・ヒストリ・テ
ーブルを確立する手段と、 前記スーパースカラ・プロセッサ・システム内の順序付
けられた一連のM個の命令にアクセスするために使用さ
れる取出しアドレスの少なくとも一部分を使用して、前
記ブランチ・ヒストリ・テーブル内の選択された点にア
クセスする手段と、 それぞれ前記順序付けられた一連のM個の命令中の対応
する位置にある特定の命令に関連する前記順序付けられ
た一連のM個の予想フィールドを、前記ブランチ・ヒス
トリ・テーブル内の前記選択された点から読み出す手段
と、 前記M個の予測フィールドのうちの関連する1つを使用
して、前記順序付けられた一連のM個の命令内の対応す
る命令を実行した結果、前記1組の実行命令内のブラン
チが選択されるか否かを判定する手段とを備え、 前記順序付けられた一連のM個の命令内の命令の相対位
置が変化すると、代替予測フィールドが使用され、それ
によって予測精度が向上することを特徴とするシステ
ム。 - 【請求項7】複数の予測フィールドを含むブランチ・ヒ
ストリ・テーブルを確立する前記手段が、それぞれ2ビ
ットの2進カウンタを備える、複数の予測フィールドを
含むブランチ・ヒストリ・テーブルを確立する手段を備
える請求項6に記載のスーパースカラ・プロセッサ・シ
ステムのブランチ・ヒストリ予測精度を向上させるシス
テム。 - 【請求項8】前記スーパースカラ・プロセッサ・システ
ム内で順序付けられた一連のM個の命令へのアクセスに
使用される取出しアドレスの少なくとも一部分を使用し
て、前記ブランチ・ヒストリ・テーブル内の選択された
点にアクセスする前記手段が、前記スーパースカラ・プ
ロセッサ・システム内で順序付けられた一連のM個の命
令へのアクセスに使用される取出しアドレスの下位アド
レス・ビットを使用して、前記ブランチ・ヒストリ・テ
ーブル内の選択された点にアクセスする手段を備える請
求項6に記載のスーパースカラ・プロセッサ・システム
のブランチ・ヒストリ予測精度を向上させるシステム。 - 【請求項9】前記特定の関連命令を実行した結果、前記
1組の実行命令中でブランチが選択されるたびに、前記
2ビット2進カウンタを増分する手段をさらに含む請求
項7に記載のスーパースカラ・プロセッサ・システムの
ブランチ・ヒストリ予測精度を向上させるシステム。 - 【請求項10】前記特定の関連命令を実行しても、前記
1組の実行命令中でブランチが選択されない場合、その
たびに前記2ビット2進カウンタを減分する手段をさら
に含む請求項9に記載のスーパースカラ・プロセッサ・
システムのブランチ・ヒストリ予測精度を向上させるシ
ステム。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019099897A (ja) * | 2017-12-08 | 2019-06-24 | 日鉄住金工材株式会社 | 金属箔製造装置,電極板及び金属箔の製造方法 |
Families Citing this family (67)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH038023A (ja) * | 1989-06-06 | 1991-01-16 | Mitsubishi Electric Corp | ブランチ予測アルゴリズム |
Family Cites Families (7)
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 |
-
1993
- 1993-01-08 US US08/002,289 patent/US5367703A/en not_active Expired - Fee Related
- 1993-12-20 JP JP5319303A patent/JP2531495B2/ja not_active Expired - Lifetime
- 1993-12-27 EP EP93120944A patent/EP0605876B1/en not_active Expired - Lifetime
- 1993-12-27 DE DE69321698T patent/DE69321698T2/de not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH038023A (ja) * | 1989-06-06 | 1991-01-16 | Mitsubishi Electric Corp | ブランチ予測アルゴリズム |
Cited By (1)
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 |