JP2004326785A - 同時マルチスレッドのための分割分岐履歴テーブルおよびカウント・キャッシュ - Google Patents
同時マルチスレッドのための分割分岐履歴テーブルおよびカウント・キャッシュ Download PDFInfo
- Publication number
- JP2004326785A JP2004326785A JP2004124865A JP2004124865A JP2004326785A JP 2004326785 A JP2004326785 A JP 2004326785A JP 2004124865 A JP2004124865 A JP 2004124865A JP 2004124865 A JP2004124865 A JP 2004124865A JP 2004326785 A JP2004326785 A JP 2004326785A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- history table
- prediction
- cache
- branch history
- 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
- 238000012545 processing Methods 0.000 claims description 47
- 238000000034 method Methods 0.000 claims description 30
- 230000000977 initiatory effect Effects 0.000 claims description 9
- 230000007246 mechanism Effects 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 5
- 238000005192 partition Methods 0.000 claims description 4
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 238000012544 monitoring process Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 9
- 235000010354 butylated hydroxytoluene Nutrition 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000000737 periodic effect Effects 0.000 description 2
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【解決手段】 分岐予測論理は、監視された条件の出現に応答して、分岐履歴テーブルおよびカウント・キャッシュを論理的に分割し、分割によってアドレス空間の半分が第1のスレッドに割り振られ、次の半分が第2のスレッドに割り振られる。第1のスレッドに属する予測生成アドレスは、ついで、そのスレッドに割り振られるアレイの半分に向けられ、第2のスレッドに属する予測生成アドレスは、第2のスレッドに割り振られるアレイの次の半分に向けられる。アレイを分割するために、アレイ中の最上位ビットは、第1および第2のスレッドのアドレスを一義的に識別するのに使用される。
【選択図】図3
Description
前記第1のスレッドおよび前記第2のスレッドがコードを共有する場合、前記分岐履歴テーブルおよび前記カウント・キャッシュを統一アレイとして更新するステップと、
前記第1のスレッドおよび前記第2のスレッドが同一コードを共有しない場合、前記分岐履歴テーブルおよび前記カウント・キャッシュの隣接する第1の半分を前記第1のスレッドに、前記分岐履歴テーブルおよび前記カウント・キャッシュの隣接する第2の半分を前記第2のスレッドに論理的に割り振るステップと、
を含む方法。
(2)前記アレイにスレッド識別子としてインデックスの最上位ビットを割り当てるステップであって、前記第1のスレッドおよび前記第2のスレッドのみを含む同時マルチスレッドの場合、前記第1のスレッドが1という識別子を割り当てられ、前記第2のスレッドが0という識別子を割り当てられるステップと、
前記分岐履歴テーブルおよび前記カウント・キャッシュを更新する前記スレッドに割り当てられた前記識別子を有する前記インデックスを参照するように、前記第1のスレッドおよび前記第2のスレッド中の各下位予測アドレスの最上位ビットをタグづけするステップと、
をさらに含む、上記(1)に記載の方法。
(3)1つ下位のビットを有するインデックスを使用して、前記分岐履歴テーブルおよび前記カウント・キャッシュを更新する前記スレッドに論理的に割り振られた前記分岐履歴テーブルおよび前記カウント・キャッシュの対応する半分を更新するステップをさらに含む、上記(2)に記載の方法。
(4)前記第1のスレッドおよび前記第2のスレッド中のどのスレッドが現在実行されているかに対応して、前記分岐履歴テーブルおよび前記カウント・キャッシュの半分に受け取った予測アドレスを割り振るステップをさらに含む、上記(2)に記載の方法。
(5)事前に設定された回数のクロック周期が経過したときを判定するステップと、
前記所定の回数のクロック周期が終了したとき、前記第1のスレッドおよび前記第2のスレッド両方が同一コードを実行しているか評価するステップと、
前記所定の回数の周期が経過した後でのみ、前記モードを統一から分割に、また、分割から統一に切り換えるステップと、
をさらに含む、上記(1)に記載の方法。
(6)前記評価するステップが、セグメント・ルックアサイド・バッファ中の共有ページ・ビットを検査するステップを含む、上記(5)に記載の方法。
(7)前記評価するステップが、
設定された間隔における、有効アドレス・ディレクトリ中の更新回数を追跡するステップと、
前記更新回数を事前に設定された閾値と比較するステップと、
前記設定された間隔における前記更新回数が前記閾値を超えると、異なるモードへの切換えを開始するステップと、
を含む、上記(5)に記載の方法。
(8)前記評価するステップが、
現在の動作モードの予測レートを追跡するステップと、
前記予測レートが事前に設定された誤り閾値を超えると、前記モードの切換えを開始するステップとを含む、上記(5)に記載の方法。
(9)前記追跡するステップが、
事前に設定された回数の予測分岐を超える予測ミスの数を追跡するステップと、
前記予測ミスの数が事前に設定された閾値未満でない場合、予測分岐の前記事前に設定される回数を最大数まで増加させるステップと、
前記予測ミスの数が前記増加させるステップの後の前記事前に設定された閾値未満の場合、予測分岐の前記事前に設定される設定回数を減少させるステップとを含む、上記(8)に記載の方法。
(10)同時マルチスレッドを実施し、分岐履歴テーブルおよび1つのカウント・キャッシュを有する分岐処理論理を含むプロセッサにおいて、同様の下位アドレスを共有する第1のスレッドおよび第2のスレッドを有する同時マルチスレッド環境での分岐予測を向上させるシステムであって、
前記第1のスレッドおよび前記第2のスレッドがコードを共有する場合、前記分岐履歴テーブルおよび前記カウント・キャッシュを統一アレイとして更新する手段と、
前記第1のスレッドおよび前記第2のスレッドが同一コードを共有しない場合、前記分岐履歴テーブルおよび前記カウント・キャッシュの隣接する第1の半分を前記第1のスレッドに、前記分岐履歴テーブルおよび前記カウント・キャッシュの隣接する第2の半分を前記第2のスレッドに論理的に割り振る手段と、
を備えるシステム。
(11)前記アレイにスレッド識別子としてインデックスの最上位ビットを割り当てるステップであって、前記第1のスレッドおよび前記第2のスレッドのみを含む同時マルチスレッドの場合、前記第1のスレッドが1という識別子を割り当てられ、前記第2のスレッドが0という識別子を割り当てられる手段と、
前記分岐履歴テーブルおよび前記カウント・キャッシュを更新する前記スレッドに割り当てられた前記識別子を有する前記インデックスを参照するように、前記第1のスレッドおよび前記第2のスレッド中の各下位予測アドレスの最上位ビットをタグづけする手段と、
をさらに備える、上記(10)に記載のシステム。
(12)1つ下位のビットを有するインデックスを使用して、前記分岐履歴テーブルおよび前記カウント・キャッシュを更新する前記スレッドに論理的に割り振られた前記分岐履歴テーブルおよび前記カウント・キャッシュの対応する半分を更新する手段とをさらに備える、上記(11)に記載のシステム。
(13)前記第1のスレッドおよび前記第2のスレッド中のどのスレッドが現在実行されているかに対応して、前記分岐履歴テーブルおよび前記カウント・キャッシュの半分に受け取った予測アドレスを割り振る手段とをさらに備える、上記(11)に記載のシステム。
(14)事前に設定された回数のクロック周期が経過したときを判定する手段と、
前記所定の回数のクロック周期が終了したとき、前記第1のスレッドおよび前記第2のスレッド両方が同一コードを実行しているか評価する手段と、
前記所定の回数の周期が経過した後でのみ、前記モードを統一から分割に、また、分割から統一に切り換える手段とをさらに備える、上記(10)に記載のシステム。
(15)前記評価する手段が、セグメント・ルックアサイド・バッファ中の共有ページ・ビットを検査する手段を備える、上記(14)に記載のシステム。
(16)前記評価する手段が、
設定された間隔における、有効アドレス・ディレクトリ中の更新回数を追跡する手段と、
前記更新回数を事前に設定された閾値と比較する手段と、
前記設定された間隔における前記更新回数が前記閾値を超えると、異なるモードへの切換えを開始する手段とを備える、上記(14)に記載のシステム。
(17)前記評価する手段が、
現在の動作モードの予測レートを追跡する手段と、
前記予測レートが事前に設定された誤り閾値を超えると、前記モードの切換えを開始する手段とを備える、上記(10)に記載のシステム。
(18)前記追跡する手段が、
事前に設定された回数の予測分岐を超える予測ミスの数を追跡する手段と、
前記予測ミスの数が事前に設定された閾値未満でない場合、予測分岐の前記事前に設定される回数を最大数まで増加させる手段と、
前記予測ミスの数が前記増加させる手段の後の前記事前に設定された閾値未満の場合、予測分岐の前記事前に設定される設定回数を減少させる手段とを備える、上記(17)に記載のシステム。
(19)第1のスレッドおよび第2のスレッドを有する同時マルチスレッド処理環境において、スレッド特有の分岐予測を提供するデータ・プロセッシング・システムであって、
分岐予測機構のために生成された予測アドレスおよび目標アドレスをそれぞれ追跡する、分岐履歴テーブルおよびカウント・キャッシュを含む同時マルチスレッドプロセッサと、
前記プロセッサに結合されるとともに、前記同時マルチスレッドプロセッサによって前記第1および第2のスレッド用のコードが取り出されるメモリと、
前記メモリを前記プロセッサに結合する手段と、
前記同時マルチスレッドプロセッサ内で、より正確な予測を達成するために前記第1および第2のスレッドの予測および目標を分離した区分において別個に追跡する、2つの論理的に分離した区分に前記分岐履歴テーブルおよび前記カウント・キャッシュのインデックスされたアレイを動的に分割する手段と、
を備えるシステム。
(20)前記プロセッサが、
前記第1のスレッドおよび前記第2のスレッドがコードを共有する場合、前記分岐履歴テーブルおよび前記カウント・キャッシュを統一アレイとして更新する手段と、
前記第1のスレッドおよび前記第2のスレッドが同一コードを共有しない場合、前記分岐履歴テーブルおよび前記カウント・キャッシュの隣接する第1の半分を前記第1のスレッドに、前記分岐履歴テーブルおよび前記カウント・キャッシュの隣接する第2の半分を前記第2のスレッドに論理的に割り振る手段とを備える、上記(19)に記載のデータ・プロセッシング・システム。
(21)前記アレイにスレッド識別子としてインデックスの最上位ビットを割り当てるステップであって、前記第1のスレッドおよび前記第2のスレッドのみを含む同時マルチスレッドの場合、前記第1のスレッドが1という識別子を割り当てられ、前記第2のスレッドが0という識別子を割り当てられる手段と、
前記分岐履歴テーブルおよび前記カウント・キャッシュを更新する前記スレッドに割り当てられた前記識別子を有する前記インデックスを参照するように、前記第1のスレッドおよび前記第2のスレッド中の各下位予測アドレスの最上位ビットをタグづけする手段とをさらに備える、上記(20)に記載のデータ・プロセッシング・システム。
(22)1つ下位のビットを有するインデックスを使用して、前記分岐履歴テーブルおよび前記カウント・キャッシュを更新する前記スレッドに論理的に割り振られた前記分岐履歴テーブルおよび前記カウント・キャッシュの対応する半分を更新する手段とをさらに備える、上記(21)に記載のデータ・プロセッシング・システム。
(23)前記第1のスレッドおよび前記第2のスレッド中のどのスレッドが現在実行されているかに対応して、前記分岐履歴テーブルおよび前記カウント・キャッシュの半分に受け取った予測アドレスを割り振る手段とをさらに備える、上記(21)に記載のデータ・プロセッシング・システム。
(24)事前に設定された回数のクロック周期が経過したときを判定する手段と、
前記所定の回数のクロック周期が終了したとき、前記第1のスレッドおよび前記第2のスレッド両方が同一コードを実行しているか評価する手段と、
前記所定の回数の周期が経過した後でのみ、前記モードを統一から分割に、また、分割から統一に切り換える手段とをさらに備える、上記(20)に記載のデータ・プロセッシング・システム。
(25)前記評価する手段が、セグメント・ルックアサイド・バッファ中の共有ページ・ビットを検査する手段を備える、上記(24)に記載のデータ・プロセッシング・システム。
(26)前記評価する手段が、
設定された間隔における、有効アドレス・ディレクトリ中の更新回数を追跡する手段と、
前記更新回数を事前に設定された閾値と比較する手段と、
前記設定された間隔における前記更新回数が前記閾値を超えると、異なるモードへの切換えを開始する手段とを備える、上記(24)に記載のデータ・プロセッシング・システム。
(27)前記評価する手段が、
現在の動作モードの予測レートを追跡する手段と、
前記予測レートが事前に設定された誤り閾値を超えると、前記モードの切換えを開始する手段とを備える、上記(20)に記載のデータ・プロセッシング・システム。
(28)前記追跡する手段が、
事前に設定された回数の予測分岐を超える予測ミスの数を追跡する手段と、
前記予測ミスの数が事前に設定された閾値未満でない場合、予測分岐の前記事前に設定される回数を最大数まで増加させる手段と、
前記予測ミスの数が前記増加させる手段の後の前記事前に設定された閾値未満の場合、予測分岐の前記事前に設定される回数を減少させる手段とを備える、上記(27)に記載のデータ・プロセッシング・システム。
103 プロセッシング・ユニット
105 SMTプロセッサ、プロセッサ
107 命令キャッシュ、I−キャッシュ、L1命令キャッシュ、L1I−キャッシュ
108 データ・キャッシュ、D−キャッシュ
109 L2キャッシュ
113 メモリ
115 オペレーティング・システム(OS)
117 第1および第2のアプリケーション、アプリケーション
121 入出力(I/O)装置
111 相互接続、システム・バス
202A 命令取出しアドレス・レジスタ(IFAR)0、Th0IFAR0
202B IFAR1、Th1IFAR1
203 マルチプレクサ(MUX)
204 分岐予測論理
206 有効アドレス−実アドレス変換テーブル(ERAT)
208 命令キャッシュのディレクトリ(I−Dir)
210 キャッシュ/ERATヒット/ミス論理
214 先取りバッファ
216 事前復号化レジスタ
220 分岐目標計算器
224 分岐情報キュー(BIQ)
300 BHT
302 部分命令アドレス、アドレス
304 最近の実行の経路
306 ハッシュ
308 活動中のスレッド
310 ローカルBHT、BHT
312 グローバルBHT、BHT
314 セレクタBHT、BHT
316 カウント・キャッシュ
320 アレイ、統一アレイ
321 下位アドレス
Claims (28)
- 同時マルチスレッドを実施し、分岐履歴テーブルおよびカウント・キャッシュを有する分岐処理論理を含むプロセッサにおいて、類似した下位アドレスを共有する第1のスレッドおよび第2のスレッドを有する同時マルチスレッド環境での分岐予測を向上させる方法であって、
前記第1のスレッドおよび前記第2のスレッドがコードを共有する場合、前記分岐履歴テーブルおよび前記カウント・キャッシュを統一アレイとして更新するステップと、
前記第1のスレッドおよび前記第2のスレッドが同一コードを共有しない場合、前記分岐履歴テーブルおよび前記カウント・キャッシュの隣接する第1の半分を前記第1のスレッドに、前記分岐履歴テーブルおよび前記カウント・キャッシュの隣接する第2の半分を前記第2のスレッドに論理的に割り振るステップと、
を含む方法。 - 前記アレイにスレッド識別子としてインデックスの最上位ビットを割り当てるステップであって、前記第1のスレッドおよび前記第2のスレッドのみを含む同時マルチスレッドの場合、前記第1のスレッドが1という識別子を割り当てられ、前記第2のスレッドが0という識別子を割り当てられるステップと、
前記分岐履歴テーブルおよび前記カウント・キャッシュを更新する前記スレッドに割り当てられた前記識別子を有する前記インデックスを参照するように、前記第1のスレッドおよび前記第2のスレッド中の各下位予測アドレスの最上位ビットをタグづけするステップと、
をさらに含む、請求項1に記載の方法。 - 1つ下位のビットを有するインデックスを使用して、前記分岐履歴テーブルおよび前記カウント・キャッシュを更新する前記スレッドに論理的に割り振られた前記分岐履歴テーブルおよび前記カウント・キャッシュの対応する半分を更新するステップをさらに含む、請求項2に記載の方法。
- 前記第1のスレッドおよび前記第2のスレッド中のどのスレッドが現在実行されているかに対応して、前記分岐履歴テーブルおよび前記カウント・キャッシュの半分に受け取った予測アドレスを割り振るステップをさらに含む、請求項2に記載の方法。
- 事前に設定された回数のクロック周期が経過したときを判定するステップと、
前記所定の回数のクロック周期が終了したとき、前記第1のスレッドおよび前記第2のスレッド両方が同一コードを実行しているか評価するステップと、
前記所定の回数の周期が経過した後でのみ、前記モードを統一から分割に、また、分割から統一に切り換えるステップと、
をさらに含む、請求項1に記載の方法。 - 前記評価するステップが、セグメント・ルックアサイド・バッファ中の共有ページ・ビットを検査するステップを含む、請求項5に記載の方法。
- 前記評価するステップが、
設定された間隔における、有効アドレス・ディレクトリ中の更新回数を追跡するステップと、
前記更新回数を事前に設定された閾値と比較するステップと、
前記設定された間隔における前記更新回数が前記閾値を超えると、異なるモードへの切換えを開始するステップと、
を含む、請求項5に記載の方法。 - 前記評価するステップが、
現在の動作モードの予測レートを追跡するステップと、
前記予測レートが事前に設定された誤り閾値を超えると、前記モードの切換えを開始するステップとを含む、請求項5に記載の方法。 - 前記追跡するステップが、
事前に設定された回数の予測分岐を超える予測ミスの数を追跡するステップと、
前記予測ミスの数が事前に設定された閾値未満でない場合、予測分岐の前記事前に設定される回数を最大数まで増加させるステップと、
前記予測ミスの数が前記増加させるステップの後の前記事前に設定された閾値未満の場合、予測分岐の前記事前に設定される設定回数を減少させるステップとを含む、請求項8に記載の方法。 - 同時マルチスレッドを実施し、分岐履歴テーブルおよび1つのカウント・キャッシュを有する分岐処理論理を含むプロセッサにおいて、同様の下位アドレスを共有する第1のスレッドおよび第2のスレッドを有する同時マルチスレッド環境での分岐予測を向上させるシステムであって、
前記第1のスレッドおよび前記第2のスレッドがコードを共有する場合、前記分岐履歴テーブルおよび前記カウント・キャッシュを統一アレイとして更新する手段と、
前記第1のスレッドおよび前記第2のスレッドが同一コードを共有しない場合、前記分岐履歴テーブルおよび前記カウント・キャッシュの隣接する第1の半分を前記第1のスレッドに、前記分岐履歴テーブルおよび前記カウント・キャッシュの隣接する第2の半分を前記第2のスレッドに論理的に割り振る手段と、
を備えるシステム。 - 前記アレイにスレッド識別子としてインデックスの最上位ビットを割り当てるステップであって、前記第1のスレッドおよび前記第2のスレッドのみを含む同時マルチスレッドの場合、前記第1のスレッドが1という識別子を割り当てられ、前記第2のスレッドが0という識別子を割り当てられる手段と、
前記分岐履歴テーブルおよび前記カウント・キャッシュを更新する前記スレッドに割り当てられた前記識別子を有する前記インデックスを参照するように、前記第1のスレッドおよび前記第2のスレッド中の各下位予測アドレスの最上位ビットをタグづけする手段と、
をさらに備える、請求項10に記載のシステム。 - 1つ下位のビットを有するインデックスを使用して、前記分岐履歴テーブルおよび前記カウント・キャッシュを更新する前記スレッドに論理的に割り振られた前記分岐履歴テーブルおよび前記カウント・キャッシュの対応する半分を更新する手段とをさらに備える、請求項11に記載のシステム。
- 前記第1のスレッドおよび前記第2のスレッド中のどのスレッドが現在実行されているかに対応して、前記分岐履歴テーブルおよび前記カウント・キャッシュの半分に受け取った予測アドレスを割り振る手段とをさらに備える、請求項11に記載のシステム。
- 事前に設定された回数のクロック周期が経過したときを判定する手段と、
前記所定の回数のクロック周期が終了したとき、前記第1のスレッドおよび前記第2のスレッド両方が同一コードを実行しているか評価する手段と、
前記所定の回数の周期が経過した後でのみ、前記モードを統一から分割に、また、分割から統一に切り換える手段とをさらに備える、請求項10に記載のシステム。 - 前記評価する手段が、セグメント・ルックアサイド・バッファ中の共有ページ・ビットを検査する手段を備える、請求項14に記載のシステム。
- 前記評価する手段が、
設定された間隔における、有効アドレス・ディレクトリ中の更新回数を追跡する手段と、
前記更新回数を事前に設定された閾値と比較する手段と、
前記設定された間隔における前記更新回数が前記閾値を超えると、異なるモードへの切換えを開始する手段とを備える、請求項14に記載のシステム。 - 前記評価する手段が、
現在の動作モードの予測レートを追跡する手段と、
前記予測レートが事前に設定された誤り閾値を超えると、前記モードの切換えを開始する手段とを備える、請求項10に記載のシステム。 - 前記追跡する手段が、
事前に設定された回数の予測分岐を超える予測ミスの数を追跡する手段と、
前記予測ミスの数が事前に設定された閾値未満でない場合、予測分岐の前記事前に設定される回数を最大数まで増加させる手段と、
前記予測ミスの数が前記増加させる手段の後の前記事前に設定された閾値未満の場合、予測分岐の前記事前に設定される設定回数を減少させる手段とを備える、請求項17に記載のシステム。 - 第1のスレッドおよび第2のスレッドを有する同時マルチスレッド処理環境において、スレッド特有の分岐予測を提供するデータ・プロセッシング・システムであって、
分岐予測機構のために生成された予測アドレスおよび目標アドレスをそれぞれ追跡する、分岐履歴テーブルおよびカウント・キャッシュを含む同時マルチスレッドプロセッサと、
前記プロセッサに結合されるとともに、前記同時マルチスレッドプロセッサによって前記第1および第2のスレッド用のコードが取り出されるメモリと、
前記メモリを前記プロセッサに結合する手段と、
前記同時マルチスレッドプロセッサ内で、より正確な予測を達成するために前記第1および第2のスレッドの予測および目標を分離した区分において別個に追跡する、2つの論理的に分離した区分に前記分岐履歴テーブルおよび前記カウント・キャッシュのインデックスされたアレイを動的に分割する手段と、
を備えるシステム。 - 前記プロセッサが、
前記第1のスレッドおよび前記第2のスレッドがコードを共有する場合、前記分岐履歴テーブルおよび前記カウント・キャッシュを統一アレイとして更新する手段と、
前記第1のスレッドおよび前記第2のスレッドが同一コードを共有しない場合、前記分岐履歴テーブルおよび前記カウント・キャッシュの隣接する第1の半分を前記第1のスレッドに、前記分岐履歴テーブルおよび前記カウント・キャッシュの隣接する第2の半分を前記第2のスレッドに論理的に割り振る手段とを備える、請求項19に記載のデータ・プロセッシング・システム。 - 前記アレイにスレッド識別子としてインデックスの最上位ビットを割り当てるステップであって、前記第1のスレッドおよび前記第2のスレッドのみを含む同時マルチスレッドの場合、前記第1のスレッドが1という識別子を割り当てられ、前記第2のスレッドが0という識別子を割り当てられる手段と、
前記分岐履歴テーブルおよび前記カウント・キャッシュを更新する前記スレッドに割り当てられた前記識別子を有する前記インデックスを参照するように、前記第1のスレッドおよび前記第2のスレッド中の各下位予測アドレスの最上位ビットをタグづけする手段とをさらに備える、請求項20に記載のデータ・プロセッシング・システム。 - 1つ下位のビットを有するインデックスを使用して、前記分岐履歴テーブルおよび前記カウント・キャッシュを更新する前記スレッドに論理的に割り振られた前記分岐履歴テーブルおよび前記カウント・キャッシュの対応する半分を更新する手段とをさらに備える、請求項21に記載のデータ・プロセッシング・システム。
- 前記第1のスレッドおよび前記第2のスレッド中のどのスレッドが現在実行されているかに対応して、前記分岐履歴テーブルおよび前記カウント・キャッシュの半分に受け取った予測アドレスを割り振る手段とをさらに備える、請求項21に記載のデータ・プロセッシング・システム。
- 事前に設定された回数のクロック周期が経過したときを判定する手段と、
前記所定の回数のクロック周期が終了したとき、前記第1のスレッドおよび前記第2のスレッド両方が同一コードを実行しているか評価する手段と、
前記所定の回数の周期が経過した後でのみ、前記モードを統一から分割に、また、分割から統一に切り換える手段とをさらに備える、請求項20に記載のデータ・プロセッシング・システム。 - 前記評価する手段が、セグメント・ルックアサイド・バッファ中の共有ページ・ビットを検査する手段を備える、請求項24に記載のデータ・プロセッシング・システム。
- 前記評価する手段が、
設定された間隔における、有効アドレス・ディレクトリ中の更新回数を追跡する手段と、
前記更新回数を事前に設定された閾値と比較する手段と、
前記設定された間隔における前記更新回数が前記閾値を超えると、異なるモードへの切換えを開始する手段とを備える、請求項24に記載のデータ・プロセッシング・システム。 - 前記評価する手段が、
現在の動作モードの予測レートを追跡する手段と、
前記予測レートが事前に設定された誤り閾値を超えると、前記モードの切換えを開始する手段とを備える、請求項20に記載のデータ・プロセッシング・システム。 - 前記追跡する手段が、
事前に設定された回数の予測分岐を超える予測ミスの数を追跡する手段と、
前記予測ミスの数が事前に設定された閾値未満でない場合、予測分岐の前記事前に設定される回数を最大数まで増加させる手段と、
前記予測ミスの数が前記増加させる手段の後の前記事前に設定された閾値未満の場合、予測分岐の前記事前に設定される回数を減少させる手段とを備える、請求項27に記載のデータ・プロセッシング・システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/425,064 US7120784B2 (en) | 2003-04-28 | 2003-04-28 | Thread-specific branch prediction by logically splitting branch history tables and predicted target address cache in a simultaneous multithreading processing environment |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004326785A true JP2004326785A (ja) | 2004-11-18 |
JP3716415B2 JP3716415B2 (ja) | 2005-11-16 |
Family
ID=33299455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004124865A Expired - Fee Related JP3716415B2 (ja) | 2003-04-28 | 2004-04-20 | 同時マルチスレッドのための分割分岐履歴テーブルおよびカウント・キャッシュ |
Country Status (2)
Country | Link |
---|---|
US (1) | US7120784B2 (ja) |
JP (1) | JP3716415B2 (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009535750A (ja) * | 2006-05-04 | 2009-10-01 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 多形的分岐予測子を実装するための方法および装置 |
JP2011521382A (ja) * | 2008-05-21 | 2011-07-21 | クゥアルコム・インコーポレイテッド | 分岐予測における使用のためのマルチモードレジスタファイル |
WO2012127589A1 (ja) * | 2011-03-18 | 2012-09-27 | 富士通株式会社 | マルチコアプロセッサシステム、および分岐予測方法 |
US8990545B2 (en) | 2010-12-27 | 2015-03-24 | International Business Machines Corporation | Method, system, and computer program for analyzing program |
JP2016525252A (ja) * | 2014-01-27 | 2016-08-22 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | オペレーティング・システム・ルーチンのための予測履歴ストレージのフラクショナルな使用 |
US9658855B2 (en) | 2014-10-10 | 2017-05-23 | Fujitsu Limited | Compile method and compiler apparatus |
KR20200110699A (ko) * | 2018-02-13 | 2020-09-24 | 룽신 테크놀로지 코퍼레이션 리미티드 | 브랜치 예측 회로 및 그 제어 방법 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006053830A (ja) * | 2004-08-13 | 2006-02-23 | Toshiba Corp | 分岐予測装置および分岐予測方法 |
DE102005001679B4 (de) * | 2005-01-13 | 2008-11-13 | Infineon Technologies Ag | Mikroprozessor-Einrichtung, und Verfahren zur Branch-Prediktion für conditional Branch-Befehle in einer Mikroprozessor-Einrichtung |
US7694114B2 (en) * | 2005-06-09 | 2010-04-06 | Qualcomm Incorporated | Software selectable adjustment of SIMD parallelism |
US7836284B2 (en) * | 2005-06-09 | 2010-11-16 | Qualcomm Incorporated | Microprocessor with automatic selection of processing parallelism mode based on width data of instructions |
US7434037B2 (en) * | 2006-04-07 | 2008-10-07 | International Business Machines Corporation | System for target branch prediction using correlation of local target histories including update inhibition for inefficient entries |
US7752425B2 (en) * | 2006-05-30 | 2010-07-06 | Arm Limited | Data processing apparatus having trace and prediction logic |
US8677104B2 (en) * | 2006-05-30 | 2014-03-18 | Arm Limited | System for efficiently tracing data in a data processing system |
US7707394B2 (en) | 2006-05-30 | 2010-04-27 | Arm Limited | Reducing the size of a data stream produced during instruction tracing |
US7877587B2 (en) * | 2006-06-09 | 2011-01-25 | Arm Limited | Branch prediction within a multithreaded processor |
US8046775B2 (en) | 2006-08-14 | 2011-10-25 | Marvell World Trade Ltd. | Event-based bandwidth allocation mode switching method and apparatus |
US8261049B1 (en) * | 2007-04-10 | 2012-09-04 | Marvell International Ltd. | Determinative branch prediction indexing |
US7805595B2 (en) * | 2007-04-20 | 2010-09-28 | Arm Limited | Data processing apparatus and method for updating prediction data based on an operation's priority level |
EP2159686B1 (en) | 2007-06-19 | 2019-01-09 | Fujitsu Limited | Information processor and method therefor |
US20090165007A1 (en) * | 2007-12-19 | 2009-06-25 | Microsoft Corporation | Task-level thread scheduling and resource allocation |
US20100031011A1 (en) * | 2008-08-04 | 2010-02-04 | International Business Machines Corporation | Method and apparatus for optimized method of bht banking and multiple updates |
KR101636377B1 (ko) * | 2009-10-23 | 2016-07-06 | 삼성전자주식회사 | 재구성 프로세서, 재구성 제어 장치 및 방법, 그리고, 스레드 모델링 방법 |
US8850410B2 (en) * | 2010-01-29 | 2014-09-30 | International Business Machines Corporation | System using a unique marker with each software code-block |
US8745362B2 (en) * | 2010-06-25 | 2014-06-03 | International Business Machines Corporation | Operating system aware branch predictor using a dynamically reconfigurable branch history table |
US8886920B2 (en) * | 2011-05-13 | 2014-11-11 | Oracle International Corporation | Associating tag to branch instruction to access array storing predicted target addresses for page crossing targets for comparison with resolved address at execution stage |
US20130007424A1 (en) * | 2011-06-29 | 2013-01-03 | Gorton Jr Richard C | Cascading indirect branch instructions |
JP5861354B2 (ja) | 2011-09-22 | 2016-02-16 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US9280351B2 (en) | 2012-06-15 | 2016-03-08 | International Business Machines Corporation | Second-level branch target buffer bulk transfer filtering |
US9298465B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Asynchronous lookahead hierarchical branch prediction |
US9430241B2 (en) | 2012-06-15 | 2016-08-30 | International Business Machines Corporation | Semi-exclusive second-level branch target buffer |
US9507597B2 (en) * | 2013-06-10 | 2016-11-29 | Via Alliance Semiconductor Co., Ltd. | Selective accumulation and use of predicting unit history |
US9442725B2 (en) * | 2013-08-21 | 2016-09-13 | Airwatch Llc | Branch trace compression |
CN104424032A (zh) * | 2013-08-29 | 2015-03-18 | 华为技术有限公司 | 多线程处理器中分支预测资源的调度方法、设备和系统 |
US9891918B2 (en) | 2014-01-27 | 2018-02-13 | Via Alliance Semiconductor Co., Ltd. | Fractional use of prediction history storage for operating system routines |
US9563430B2 (en) | 2014-03-19 | 2017-02-07 | International Business Machines Corporation | Dynamic thread sharing in branch prediction structures |
US10275256B2 (en) * | 2016-02-22 | 2019-04-30 | International Business Machines Corporation | Branch prediction in a computer processor |
US10481912B2 (en) * | 2016-06-24 | 2019-11-19 | International Business Machines Corporation | Variable branch target buffer (BTB) line size for compression |
US10540181B2 (en) * | 2018-01-19 | 2020-01-21 | Marvell World Trade Ltd. | Managing branch prediction information for different contexts |
US11481221B2 (en) * | 2018-05-02 | 2022-10-25 | Micron Technology, Inc. | Separate branch target buffers for different levels of calls |
US11238155B2 (en) * | 2018-06-28 | 2022-02-01 | Intel Corporation | Microarchitectural mechanisms for the prevention of side-channel attacks |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6658447B2 (en) * | 1997-07-08 | 2003-12-02 | Intel Corporation | Priority based simultaneous multi-threading |
US6965982B2 (en) * | 2001-06-29 | 2005-11-15 | International Business Machines Corporation | Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread |
-
2003
- 2003-04-28 US US10/425,064 patent/US7120784B2/en not_active Expired - Fee Related
-
2004
- 2004-04-20 JP JP2004124865A patent/JP3716415B2/ja not_active Expired - Fee Related
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009535750A (ja) * | 2006-05-04 | 2009-10-01 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 多形的分岐予測子を実装するための方法および装置 |
JP2011521382A (ja) * | 2008-05-21 | 2011-07-21 | クゥアルコム・インコーポレイテッド | 分岐予測における使用のためのマルチモードレジスタファイル |
US8639913B2 (en) | 2008-05-21 | 2014-01-28 | Qualcomm Incorporated | Multi-mode register file for use in branch prediction |
US8990545B2 (en) | 2010-12-27 | 2015-03-24 | International Business Machines Corporation | Method, system, and computer program for analyzing program |
WO2012127589A1 (ja) * | 2011-03-18 | 2012-09-27 | 富士通株式会社 | マルチコアプロセッサシステム、および分岐予測方法 |
JPWO2012127589A1 (ja) * | 2011-03-18 | 2014-07-24 | 富士通株式会社 | マルチコアプロセッサシステム、および分岐予測方法 |
JP2016525252A (ja) * | 2014-01-27 | 2016-08-22 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | オペレーティング・システム・ルーチンのための予測履歴ストレージのフラクショナルな使用 |
US9658855B2 (en) | 2014-10-10 | 2017-05-23 | Fujitsu Limited | Compile method and compiler apparatus |
KR20200110699A (ko) * | 2018-02-13 | 2020-09-24 | 룽신 테크놀로지 코퍼레이션 리미티드 | 브랜치 예측 회로 및 그 제어 방법 |
JP2021516384A (ja) * | 2018-02-13 | 2021-07-01 | ▲龍▼芯中科技▲術▼有限公司Loongson Technology Corporation Limited | 分岐予測回路及びその制御方法 |
JP7210600B2 (ja) | 2018-02-13 | 2023-01-23 | ▲龍▼芯中科技▲術▼有限公司 | 分岐予測回路及びその制御方法 |
KR102563682B1 (ko) | 2018-02-13 | 2023-08-07 | 룽신 테크놀로지 코퍼레이션 리미티드 | 브랜치 예측 회로 및 그 제어 방법 |
Also Published As
Publication number | Publication date |
---|---|
JP3716415B2 (ja) | 2005-11-16 |
US20040215720A1 (en) | 2004-10-28 |
US7120784B2 (en) | 2006-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3716415B2 (ja) | 同時マルチスレッドのための分割分岐履歴テーブルおよびカウント・キャッシュ | |
US8335911B2 (en) | Dynamic allocation of resources in a threaded, heterogeneous processor | |
EP1540464B1 (en) | Data processing system having external and internal instruction sets | |
JP4856100B2 (ja) | 非アラインドメモリアクセス予測 | |
US9286075B2 (en) | Optimal deallocation of instructions from a unified pick queue | |
US7634642B2 (en) | Mechanism to save and restore cache and translation trace for fast context switch | |
JP5177141B2 (ja) | 演算処理装置、演算処理方法 | |
US20010047468A1 (en) | Branch and return on blocked load or store | |
JP3716414B2 (ja) | 同時マルチスレッド化プロセッサ | |
US9740553B2 (en) | Managing potentially invalid results during runahead | |
JP6440734B2 (ja) | マルチスレッディング・コンピュータ・システムにおける利用を追跡するコンピュータ実装方法、システムおよびコンピュータ・プログラム | |
JP2004326748A (ja) | 例外条件を解消するために同時マルチスレッド・プロセッサでディスパッチ・フラッシュを使用する方法 | |
US20100095305A1 (en) | Simultaneous multithread instruction completion controller | |
CN110402434B (zh) | 缓存未命中线程平衡 | |
US10740102B2 (en) | Hardware mechanism to mitigate stalling of a processor core | |
EP4020167A1 (en) | Accessing a branch target buffer based on branch instruction information | |
EP4020187A1 (en) | Segmented branch target buffer based on branch instruction type | |
US10430342B2 (en) | Optimizing thread selection at fetch, select, and commit stages of processor core pipeline | |
US9940262B2 (en) | Immediate branch recode that handles aliasing | |
GB2392266A (en) | Using a flag in a branch target address cache to reduce latency when a branch occurs that references a call-return stack | |
US11620235B1 (en) | Validation of store coherence relative to page translation invalidation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050802 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050817 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050819 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080909 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090909 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090909 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100909 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |