JP2004326785A - 同時マルチスレッドのための分割分岐履歴テーブルおよびカウント・キャッシュ - Google Patents

同時マルチスレッドのための分割分岐履歴テーブルおよびカウント・キャッシュ Download PDF

Info

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
Application number
JP2004124865A
Other languages
English (en)
Other versions
JP3716415B2 (ja
Inventor
Gregory William Alexander
グレゴリー・ウイリアム・アレキサンダー
Scott Bruce Frommer
スコット・ブルース・フロマー
David Stephen Levitan
デビッド・ステファン・レビタン
Shinharoi Bararamu
バララム・シンハロイ
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 JP2004326785A publication Critical patent/JP2004326785A/ja
Application granted granted Critical
Publication of JP3716415B2 publication Critical patent/JP3716415B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】 別個の分岐履歴テーブルおよびカウント・キャッシュの使用がより良好な結果を分岐予測にもたらすことを示すある特定の条件を監視する機能を提供するように改良された分岐予測論理を提供すること。
【解決手段】 分岐予測論理は、監視された条件の出現に応答して、分岐履歴テーブルおよびカウント・キャッシュを論理的に分割し、分割によってアドレス空間の半分が第1のスレッドに割り振られ、次の半分が第2のスレッドに割り振られる。第1のスレッドに属する予測生成アドレスは、ついで、そのスレッドに割り振られるアレイの半分に向けられ、第2のスレッドに属する予測生成アドレスは、第2のスレッドに割り振られるアレイの次の半分に向けられる。アレイを分割するために、アレイ中の最上位ビットは、第1および第2のスレッドのアドレスを一義的に識別するのに使用される。
【選択図】図3

Description

本発明は、データ・プロセッシングに関し、詳細には、データ・プロセッシング・システムにおける分岐予測に関する。より詳細には、本発明は、データ・プロセッシング・システムの分岐予測機構内部での同時マルチスレッド動作を効率的に処理する方法およびシステムに関する。
プロセッシング・システム内部での分岐予測は、当該技術分野においてよく知られている。プロセッシング・ユニットでの実行のためにキャッシュまたはメモリから命令が最初に取り出されると、プロセッシング・ユニット内部の予測機構が、取り出された命令グループ中の分岐命令によって採用されるであろう経路(path)を予測する。命令はアドレス操作(address operation)であり、経路は目標アドレス(target address)と呼ばれるアドレスによって識別される。実際に命令が実行されると、予測が正しかったかどうかの検査が行われる。
プロセッサ内部の特定のハードウェアおよび/または論理構造は、分岐方向予測に続いて経路が正しく予測されていたかどうかの分析を実行する。現在のシステムには、取り出された分岐用の予測子(predictor)を格納する3つの分岐履歴テーブル(branch history table、BHT)と、取り出された分岐命令の一部のための予測された目標アドレスを格納するカウント・キャッシュとを含む、分岐予測論理を利用するものがある。「ローカル予測子」と呼ばれる1つのBHTは、部分的な分岐アドレスによってインデックス(索引付け)される。予測方向は、ローカル予測子中のアドレスに関連づけられる。他の2つのBHT、「グローバル予測子」および「セレクタ」は、部分的な分岐アドレスと実行の最近の経路とのハッシュによってインデックスされる。カウント・キャッシュは、ある特定のタイプの分岐命令用に使用される目標アドレスであって、分岐命令アドレスに関連づけることによって分岐命令自体の中の情報から直接計算することができない目標アドレスのために使用される。
アプリケーション命令のプロセッサによる実行方法およびその後の分岐予測の信頼性に影響を与えるデータ処理における改良の1つとして、同時マルチスレッド(simultaneous multi−threading、SMT)の実装が存在する。SMTを使用すると、プロセッサ上で実行中のプログラム・アプリケーションが1つまたは複数のスレッドとして実行される。それぞれのスレッドは、命令ストリームを含んでいる。複数のスレッドの情報は、任意の時点において、マシンの様々な部分に存在することができる。例えば、実行中の2つのスレッドがあるとき、両スレッドは、OSには2つの別個のプロセッサとして見える。2つのスレッドはそれぞれ、プログラムがアクセスおよび/または変更を行うことができる標準的に構築されたすべてのレジスタのスレッド独自のコピーを有する(または、有するようにOSには見える)。
システム上でのアプリケーションの処理を全体として高速にするために、また、プロセッサ資源のより効率的な使用を保証するために、しばしば同じアプリケーションの複数のコピーが同時に実行される。このような実行が行われると、それぞれのコピーは、独自のスレッドの組を提供し、それぞれのスレッドは、メモリ・サブシステム内部の類似のプログラム/命令アドレスを共有することになる。(BHTおよびカウント・キャッシュに書き込まれる)分岐予測情報も同一であり、マージすることができる。しかし、プロセッサ上で実行中の複数のスレッドが異なるアプリケーションに属し、メモリ・サブシステム内部の異なるプログラム/命令アドレスを有することもしばしば生じる。しかし、BHTおよびカウント・キャッシュ内部に格納された命令の部分的なアドレスは、BHTおよびカウント・キャッシュでの何らかの重複と分岐予測に伴う正確さの問題の結果として、類似(similar)したものとなり得る。
プロセッサのレベルでは、処理中に使用されるアドレスは一般に、有効アドレス(effective address)である。こうした有効アドレスはそれぞれ、物理メモリ空間内部の特定の実アドレス(real address)にマッピングされる。命令は、最初にメモリから取り出されると、有効アドレスを割り当てられる。通常の実行では、ある特定のアドレスで、各アプリケーションごとに、有効アドレスの下位ビットの割当てを最初に行い、プロセッサ内部の動作に必要な有効アドレスの数が大きくなり過ぎないようにする。有効アドレスの下位ビットは従って、それぞれのスレッドごとに使用され、かつ再度使用され、異なる物理アドレスを有する異なるアプリケーションのスレッドは、有効アドレスの同じ下位ビットを割り当てられることも多い。例えば、コンパイラは、ロードを始めるときに(同じまたは別のプログラムの)別のスレッドが同じ有効アドレスに割り当てられたかどうかに関わらず、常に同じ有効アドレスでプログラムを開始することができる。従って、マルチスレッド環境では、プロセッサ資源を使用する異なるアプリケーションにある異なるスレッドは、同じ有効アドレス(EA)を共有することができるが、異なる実アドレス(RA)にマッピングされるので、スレッドは、必然的に全く異なる目標(target)および方向予測(direction prediction)を提供し、ウェイ予測(way prediction)を完了させるときに同じやり方で処理されるべきではない。
一般に、BHTおよびカウント・キャッシュにインデックスするのに使用される命令アドレスの一部は下位ビットであり、この下位ビットは、単一のアプリケーションの各命令(またはスーパースカラ・マシン内の一群の命令)ごとに一義的になる傾向がある。各BHTは、予測子を格納するために、1ビットまたは2ビット幅の1アレイ分のレジスタを提供し、カウント・キャッシュは、1アレイ分のレジスタに、命令アドレスの幅をもたせる。アレイにインデックスするのに使われる下位命令アドレス・ビットの数をxと仮定すると、アレイごとの可能なレジスタ・アドレス・エントリは、すべての可能なアドレスを調整するために2となる。カウント・キャッシュにインデックスするのに使われる下位命令ビットの数は、BHTにインデックスするのに使われるビットの数と同じである必要はない。
SMTモードでは、2つのスレッドが3つのBHTおよびカウント・キャッシュを共用する。両スレッドが同一コード、すなわち同じアプリケーションのスレッドを実行しているときは、両スレッドが共通のBHTおよび共通のカウント・キャッシュを共用するという利点があり、両スレッドがBHTおよびカウント・キャッシュのエントリを共有できることが重要である。しかし、それぞれスレッドが異なるコードを実行している場合にスレッドが共通BHTおよび共通カウント・キャッシュを共用する現在のシステムでは、BHTおよびカウント・キャッシュ内部に置くことができるアドレスの重複のために、不適切な予測がされる場合がある。マルチ・アプリケーション環境では、このようなキャッシュ・ラインの共用によって、分岐予測機構の内部で、ある程度の量のスラッシングが引き起こされてしまう。現在、異なるプログラムコードのスレッド同士の間での有効アドレスの共有のために、BHTおよびカウント・キャッシュ内部からの予測が不適切とならないことをウェイ分岐予測論理によって確実に保証できる実装は存在しない。
従って、異なるプログラムコード用のSMT動作によって引き起こされる不適切な予測を実質的に排除する方法、処理システム、および分岐予測機構を提供することが望ましい。異なるアプリケーションのスレッドが下位有効アドレス・ビットを共有するが異なる実アドレスにマッピングされる際に正しいウェイ予測を可能にする方法、処理システムおよび分岐予測機構が、改良として望まれる。さらに、ハードウェアまたは論理コストを実質的に上げることなく(すなわち、現在のハードウェアを重複しないやり方で共用することによって)、SMTプロセッサ内の各スレッドに、他のスレッドにはアクセス不可能な、それ自体の専用BHTおよびカウント・キャッシュ空間の保護を提供することが有益であろう。
同じ部分有効アドレス(partial effective address)でそのいくつかをタグづけすることができる複数のスレッドを実行しているプロセッサ上のマルチスレッド動作中に、スレッド特有の分岐予測を可能にする方法、処理システム、および分岐予測機構が開示される。分岐予測は、一般的に両スレッド中のすべてのエントリを共有する統一モード(unified mode)で動作する分岐履歴テーブル(BHT)およびカウント・キャッシュを使用して実現される。別個のBHTおよびカウント・キャッシュの使用がより良好な結果を分岐予測にもたらすことを示すある特定の条件を監視する機能を提供するように、分岐予測論理が改良される。
分岐予測論理は、監視された条件の発生に応答して、BHTおよびカウント・キャッシュを論理的に分割し、分割によってアドレス空間の半分が第1のスレッドに割り振られ、次の半分が第2のスレッドに割り振られる。第1のスレッドに属する予測生成アドレスは、次にそのスレッドに割り振られるアレイの半分に向けられ、第2のスレッドに属す予測生成アドレスは、第2のスレッドに割り振られるアレイの次の半分に向けられる。アレイを分割するために、アレイ中の最上位ビットは、第1および第2のスレッドのアドレスを一義的に識別するのに使用される。
本発明の上述のおよび追加の目的、特徴、ならびに利点は、以下の詳細に書かれた説明において明らかになるであろう。
本発明それ自体ならびに本発明の好ましい使用の態様、追加の目的、および利点は、説明のための実施形態の以下の詳細な説明を参照し、あわせて添付の図面を読むことによって最もよく理解されるだろう。
本発明は、異なるアプリケーションのスレッドが同時マルチスレッド(SMT)プロセッサ上で実行されているときに、より正確な予測を提供するための分岐予測論理を可能にする方法およびシステムを提供する。本発明は、システム上で実行中の2つのスレッドが異なるアプリケーションのものであるとともに別個のBHTおよびカウント・キャッシュを有することで利益を受けるときを判定する論理を提供し、その判定に応答して、この論理は、各スレッドの予測アドレスを分離させる分割モードにおいて、BHTおよびカウント・キャッシュ両方を論理的に再構成する。
本発明は、両スレッドが異なるプログラムコードのものであるときのSMT動作中の分岐予測機構のBHTおよびカウント・キャッシュ中の冗長性および衝突の問題を解決する。具体的には、本発明は、メモリ・サブシステム中の異なる実アドレスに必然的にマッピングされる、両スレッド用の有効アドレスの共有下位ビットの問題に対処する。冗長性を回避し、BHTおよびカウント・キャッシュの衝突を防止するために、本発明は、「分割BHT」モードおよび「分割カウント・キャッシュ」モードを提供する。分割モードは、コードが共用されるか、または現在の方法が作用しているか示すある特定の条件の周期的な評価に応じて、動的に動作可能にされまたは動作不可能にされる。
ここで図面、具体的には図1を参照すると、本発明の特徴を有利に実装することができるデータ・プロセッシング・システムの主要な構成要素のブロック図が示されている。データ・プロセッシング・システム101は、相互接続(またはシステム・バス)111を介して互いに結合される、プロセッシング・ユニット103、入出力(I/O)装置121およびメモリ113を含む。
プロセッシング・ユニット103は、アプリケーション(およびOS)のプログラム命令を実行するのに使用される複数のレジスタおよび実行ユニット(図示せず)を有するSMTプロセッサ105を含む。実行ユニットに加えて、プロセッサ105は、搭載命令キャッシュ(I−キャッシュ)107およびデータ・キャッシュ(D−キャッシュ)108を含む。こうしたI−キャッシュ107およびD−キャッシュ108は、プロセッサ105のレジスタおよび実行ユニットと統合してパッケージ化されるとともにメモリ113から取り出された命令およびデータをそれぞれ含むので「搭載(on−board)」と呼ばれる。
メモリ113には、オペレーティング・システム(OS)115ならびに第1および第2のアプリケーション117(app1およびapp2)を含むソフトウェア・プログラムコードが格納される。各アプリケーション117のプログラム命令は、プロセッサ105によってスレッドとして実行され、アプリケーションの処理/タスクを完了する。アプリケーションを実行するために、特定のアプリケーションの命令の一部は、メモリから取り出され、プロセッサ105から要求されるまでI−キャッシュ107に格納される。
本発明によると、プロセッサ105は、同時マルチスレッド・プロセッサとして動作し、実行のために第1および第2のアプリケーション117両方のスレッドをスケジュールする。スレッドがスケジュールされると、プロセッサは、そのスレッドの命令に対する要求を発行し、ついで命令は、I−キャッシュ107(またはL2キャッシュ109、メモリ113)から取り出され、処理するために実行ユニットに送られる。
ここで図2を参照すると、分岐予測において使用されるSMTプロセッサ105の内部構成要素を示している。理解の容易するために、主要な構成要素を、互いとの特定の接続性ではなく、その機能・目的によって説明する。プロセッサ構成要素の他の構成も可能であり、従って図示した特定の接続性を、本発明に対する限定とみなすべきでないことが当業者には理解されよう。
図2およびアプリケーションの残りの部分を、プロセッサ105上で同時に実行中の2つのスレッド、すなわちスレッド0(Th0)およびスレッド1(Th1)を参照して説明する。スレッド0用の新しい各命令アドレスが、命令取出しアドレス・レジスタ(IFAR)0 202Aに配置される。同様に、スレッド1用の新しい各命令アドレスが、IFAR1 202Bに配置される。本実施形態では、命令アドレスは、8個の命令からなるグループ(またはキャッシュ・ライン)を指定する。マルチプレクサ(MUX)203は、「取出しセレクタ」によって制御されて、1周期ごとに「Th0 IFAR0 202A」および「Th1 IFAR1 202B」を交互に選択する。
命令アドレス(または部分アドレス(partial address))は、有効アドレス−実アドレス変換テーブル(ERAT206)、命令キャッシュのディレクトリ(I−Dir208)、L1命令キャッシュ(I−キャッシュ107)ならびに分岐予測論理204に進む。分岐予測論理204は、BHT300およびカウント・キャッシュ316を含んでいる。
キャッシュ/ERATヒット/ミス論理210は、要求された命令が現在、L1命令キャッシュ107または先取りバッファ214にあるか判定する。ない場合、「キャッシュ・ミス」が生成され、命令がL2キャッシュから(「L2から」で示す矢印によって示される)、事前復号化レジスタ216に届くまで、遅延が生じる。
要求された命令がL1I−キャッシュ107にある場合、命令のグループは、どの分岐に対しても走査され、目標アドレスは、とられると予測されていたそうした分岐に対して計算される(または予測される)。予測アドレスのこうした走査および計算は、分岐目標計算器220で完了される。予測は、命令が分岐であるか知られる前に命令それぞれに対して完了される。目標アドレスは、命令が取り出される時点で目標アドレスを計算する可能性が低い、ある特定のタイプの分岐命令に対して推測される。
8個の命令のいくつかが分岐であることを検出した後で、そうした分岐に関する情報が分岐情報キュー(BIQ)224に書き込まれる。分岐が誤って予測されていた場合、情報はBIQ224から取り出されて、分岐予測論理204およびBIQ224の状態を、分岐が正しく予測されていた場合になるはずの状態に復元する。誤って予測された分岐に続いて行われたどの命令も破棄される。誤って予測された分岐に続く分岐に関する、BIQ224中のどの情報も、同様に破棄される。プロセッサ105は多くの追加機能ブロックを備えるが、こうしたブロックは、予測に適さず、従って本明細書では図示せず、かつ説明しない。
データ・プロセッシング・システム101およびプロセッサ105の上記の実例および説明は、例示の目的のために過ぎず、本発明に対する限定は意図していない。上述した図面に示した構成要素とともに使用できるであろう他の構成要素が存在することが、当業者にはさらに理解されよう。
ここで図3および図4を参照すると、図2の分岐予測論理204の内部構成要素を示してある。本発明の特徴は、主として分岐予測論理204にある。分岐予測論理204は、(図3に示す)3つの分岐履歴テーブル(BHT)を含み、このテーブルは、(説明のための実施形態において)IFARからの命令アドレスのビット48:58を方向予測に関連づける。BHTには、ローカルBHT310、グローバルBHT312、およびセレクタBHT314がある。
図4で示されるように、分岐予測論理204はまた、ある特定のタイプの分岐用の命令アドレスに目標アドレスを関連づけるカウント・キャッシュ316を含む。カウント・キャッシュ316は、目標が別個に計算されるとともにカウント・レジスタと呼ばれる特殊なレジスタに移される、あるクラスの分岐のために使用される。しばしば、こうした計算は、目標アドレスが必要とされるときに行われていない。分岐はそれ自体を繰り返す傾向があるので、カウント・キャッシュ316は、以前見られた分岐アドレスにアドレスを関連づけることによって、目標アドレスを記憶するのに使用される。BHT310、312、314は、新しい方向を反映するように更新され、カウント・キャッシュ316が使われて誤った目標を予測していた場合、カウント・キャッシュ316は、分岐アドレスを新しい目標アドレスに関連づけるように更新される。
図3は、部分命令アドレス302、最近の実行の経路304および活動中のスレッド308の入力を受け取る、標準(統一)モードおよび分割BHTモードでのBHT310、312、314を示す。ハッシュ306は、アドレス302および最近の実行の経路304から生成される。本発明は、SMT処理用に分割BHTモードを採り入れる。分割BHTモードでは、BHTへのインデックスの最上位ビット(すなわち、下位アドレス)がスレッド識別子(ID)で置き換えられ、そうすることによって、図3に示すように、Th0の分岐がBHTの下位半分を専有し、TH1の分岐がBHT310、312、314の上位半分を専有するようになる。BHT310、312、314の特定の半分(上位または下位)の割当ては、別の実施形態では逆にすることができ、本発明の機能は、各スレッドに割り当てられる特定の実装に依存しない。こうした実装は、2つより多いスレッドを処理するようにプロセッサが拡張された場合は、インデックスの複数の上位ビットを置き換えまたは付加するように拡張することもできる。
同様に、図4で示されるように、カウント・キャッシュ316は、標準または分割モードのいずれかで存在することができる。カウント・キャッシュ316が分割カウント・キャッシュ・モードで操作されるとき、図5(後で説明する)に示すようにカウント・キャッシュへのインデックスの最上位ビットがスレッドIDで置き換えられ、そうすることによって、Th0の分岐がカウント・キャッシュ316の下位半分を専有し、TH1の分岐がカウント・キャッシュ316の上位半分を専有するようになる。分割モードのとき、最上位ビットは(2つのスレッドの例では)スレッドIDビットとして割り当てられるので、1つ下位のビットが、分岐アドレスを識別するのに使用される。
図5は、統一モードで動作している分岐予測論理の、アレイ320の「ビット」の割振りの内部ビューを提供する。アレイ320は、BHT310、312、314およびカウント・キャッシュ316のどれを表すこともできる。アレイ320は、0または1いずれかの最上位ビットをそれぞれが有する下位アドレス321によってインデックスされる。Th0の予測324は、アレイ320への入力として働く。こうした入力は、下位ビット・アドレス全体によってインデックスされ、アレイ320中のどのレジスタも専有することができる。従って、例えば、Th0の予測、Pa、Pb、およびPcは、アレイ320の最下行および最上行の近くで、下位アドレスによってインデックスされたレジスタを専有する。下位アドレスはTh0およびTh1両方によって共有することができるので、統一モードで操作されるときに統一アレイ(unified array)320中に何らかの重複が起こり得る。
図5とは対照的に、図6は、分割モード(すなわち、分割BHTおよび分割カウント・キャッシュ)で動作しているときのアレイ320の内部「ビット」ビューを提供する。図を見るとわかるように、アレイ320の最上行方向の下位アドレスの最上位ビット(すなわち、1)は、Th1の予測に対するIDを示すのに使用され、アレイ320の最下行方向の下位アドレスの最上位ビット(0)は、Th0の予測に対するIDを示すのに使用される。従って、すべてのTh0の予測322がアレイ320の下位半分に配置され、すべてのTh1の予測324がアレイ320の上位半分に配置される。各スレッドは取出しセレクタによって交互にスケジュールされるので、分岐予測論理は、所与のときにどのスレッドがスケジュールされるか、また、生成されている分岐アドレスおよび目標アドレスがどのスレッドに属すか認識している。アドレス情報は従って、そのスレッドに割り当てられたBHT310、312、314およびカウント・キャッシュ316の特定の部分/半分に向けられる。
ここで図7および8を参照すると、一実施形態による、標準(統一)BHTおよび標準(統一)カウント・キャッシュ・モードと、分割BHTおよび分割カウント・キャッシュ・モードとの間でBHTおよびカウント・キャッシュの構成を分岐制御論理が切り換えるための2つの処理を示してある。図7の処理は、ブロック401で始まり、ここで、BHTおよびカウント・キャッシュが標準モード(すなわち、分割モードではない)を実行しており、進行中の分岐予測がBHTおよびカウント・キャッシュ中のエントリを更新している。ブロック403Aに示すように、事前に設定された周期回数が経過したか、第1の検査が行われる。事前に設定される周期回数は、モードの切換えがBHTおよびカウント・キャッシュ中で起こると常に起こり得るどのスラッシングも実質的に減少させるように、予め決定され/計算される。事前に設定された周期回数が経過すると、ブロック405Aに示すように、両スレッドが同一コードを実行しているか、判定が行われる。両スレッドが同一コードを実行している場合、分岐予測ならびにBHTおよびカウント・キャッシュへの更新は、統一モードで通常通りに進む。
しかし、各スレッドが異なるコードを実行している(すなわち、監視されている条件が起きた)場合は、ブロック407に示すように、分岐制御論理は、BHTおよびカウント・キャッシュを分割モードで実行する。ついで、ブロック403Bに示すように、事前に設定された周期回数が経過したかどうか、検査が行われる。事前に設定された周期回数が経過していると、ブロック405Bに示すように、両スレッドが同一コードを実行しているか、次の判定が行われ、スレッドが同一コードを実行している場合、BHTおよびカウント・キャッシュ用の動作モードは、切り換えられて統一モードに戻る。
注目すべきことに、両スレッドが同一コードを実行しているかどうかの判定は、モード間の切換えを生じさせ、1つまたは複数の方法を使用して完了され、予め設定された特定の条件の監視を含み、その条件が発生すると、異なる(または類似の)コードが実行されているという信号が分岐予測論理に送られる。
一実施形態では、予め設定された条件は、所与の間隔(例えば、事前に設定された周期回数)における有効アドレス・ディレクトリ(EA Dir)の更新回数の追跡を含む。その間隔における更新回数はついで、事前に設定された閾値と比較される。更新回数が閾値を超えると、頻繁な交換は非共有コードのためであると仮定され、分割モードが実行される。
本実施形態を用いると、ハイパーバイザ状態にある共有コードが期待されるので、問題状態のEA Dir更新のみが考慮される。問題状態のEA Dir更新は、アプリケーションがその間で割り当てられなければならない限られた範囲のアドレスを有する、プロセッサ上で実行中のプログラム・アプリケーションから生じる更新を含む。制御論理は、EA Dir更新を調べて、命令が非共有コードを示して頻繁に交換されているか見る。ハイパーバイザ状態にある共有コードが期待され、ハイパーバイザ・モードを用いて、実行OSはどのアドレス上でも(すなわち、制限も範囲もなく)実行することが許可される。比較に続いて、閾値を超えたかどうかに応じて、分割BHTおよび分割カウント・キャッシュ・モードが動作可能にされまたは動作不能にされる。
別の実施形態では、ソフトウェア通知が生成される。セグメント・ルックアサイド(look-aside)・バッファ(SLB)中の共有ページ・ビットが監視される。ビットがセットされているとき、そのページはスレッド間で共有されており、統一モードが実行される。SLBは、仮想アドレスを実アドレスにマッピングし、(ビットのセットを介した)共有キャッシュ指示を含むより高レベルのキャッシュへのディレクトリとして動作する。
図8は、様々なイベントおよび条件をリアルタイムで追跡する性能モニタの使用を含む、第3の実施形態の処理を示す。性能モニタは、(i)正しい方向、誤った目標、(ii)正しい目標、誤った方向、などの予測を含む、予測の正確さ(正確対不正確)を追跡する。具体的には、図8に示すように、性能モニタは、P回の予測分岐ごとに予測ミスのカウントを閾値Mと比較するのに使用される。こうすることにより、除算する必要なく、予測ミス・レートがもたらされる。性能モニタから生成されたフィードバックは、分割モードまたは統一モードのどちらが最も良いか判定するのに使用される。すなわち、予測ミス・レートが閾値Mを超える場合、モードは切り換えられる。やはり注目すべきことに、こうした実装は、上述の実施形態のいずれとも組み合わせることができ、モード切換えを行う追加条件として使用することができる。
ここで図8に戻ると、ブロック411に示すように、BHTおよびカウント・キャッシュは、標準/統一モードで実行される。ついで、ブロック413Aで、分岐の設定回数Pが予測されていたか判定が行われる。分岐の設定回数が予測されていた場合、ブロック415Aで、P回の予測分岐のうち少なくともある特定のM個が誤って予測されていたか、次の判定が行われる。このように、M個以上の予測が間違っていた場合、予測は明らかに不良であり、BHTおよびカウント・キャッシュはついで、ブロック417に示すように分割モードで実行される。ついで、ブロック413Bで、事前に設定された分岐数が、モード切換え以降予測されていたか次の判定が行われる。事前に設定された分岐数が予測されていた場合、ブロック415Bで、少なくともM個の予測が誤っていたか検査が行われる。事前に設定された予測回数のうちM個以上の予測が間違っていた場合、BHTおよびカウント・キャッシュは、切り換えられて統一モードに戻される。
パラメータPおよびMを使用することにより、BHTおよびカウント・キャッシュ用にいつモードを切り換えるか判定する際に、動的な調整がある程度可能になる。こうした調整は、任意選択であり、破線ブロック412A、412Bおよび416として示してある。モードを切り換えた後で、予測ミス・レートが次のP回の分岐後に改善しない場合、モードは再度切り換えられる。ただし、PおよびM両方の値が、事前に設定されたおおよその最大値PmaxおよびMmaxまで増加される(ブロック416)。また、ある時点でレートが実際に改善する場合、PおよびM両方が、それぞれ元の値、PminおよびMminにリセットされる(ブロック412Aおよび412B)。いずれの方法もうまく働かないと思われる場合は、PおよびMの値を調整することによって、モード切換えの間隔が長くされる。こうして間隔を長くすることにより、モードを切り換えるときに被るペナルティが減少する。モード切換え処理の結果、予測ミス・レートが低下し始めると、間隔は、元の(より短い)長さに戻される。
統一モードのBHT310、312、314およびカウント・キャッシュ316に書き込まれる予測アドレスの一部は、分割モードではもはや使用可能でなく、かつ正しくないので、統一モードから分割モードへの(または分割モードから統一モードへの)切換えは、最悪の場合、分岐/目標アドレスの最大半分が不正確なものとなり得ることを意味する。分岐が行われないことが非常に頻繁にあるので、モード切換えに続く不正確な予測子へマッピングされるBHTアドレスの実際の部分は、25%未満になるはずである。ただし、テーブル中の情報は頻繁に更新され、従って不正確な情報は持続しない。動作モードの間の切換えが起こる頻度が下がると、モード切換えによる予測ミスは新しいモードによって達成される利得を損なわないようになる。説明のための実施形態では、周期的な監視および切換えは、スラッシングを回避するために約50,000周期ごとにのみ行われ、ついで、適合される動作モードは、予め設定された特定の条件の発生に基づく。
本発明を好ましい実施形態を参照して具体的に示し説明したが、本発明の精神および範囲から逸脱することなく形体および細部における様々な変更を本発明に加えることができることが当業者には理解されよう。例えば、2つのスレッドをスケジュールするSMTプロセッサを用いる実施形態によって本発明を説明したが、本発明は、3つ以上のスレッドを同時にスケジュールするように適合されたSMTプロセッサでも実施可能である。
まとめとして、本発明の構成に関して以下の事項を開示する。
(1)同時マルチスレッドを実施し、分岐履歴テーブルおよびカウント・キャッシュを有する分岐処理論理を含むプロセッサにおいて、類似した下位アドレスを共有する第1のスレッドおよび第2のスレッドを有する同時マルチスレッド環境での分岐予測を向上させる方法であって、
前記第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)に記載のデータ・プロセッシング・システム。
本発明の特徴を有利に実装することができるデータ・プロセッシング・システムを示すブロック図である。 予測アレイのモード切換えおよび本発明の他の特徴が提供される、図1のデータ・プロセッシング・システムのプロセッサ内部の分岐予測サブシステムを示すブロック図である。 本発明の一実施形態による、要求されたときにSMTを調整するための分割モードおよび統一モードでの、図2の分岐予測論理のBHTを示すブロック図である。 本発明の一実施形態による、要求されたときにSMTを調整するための分割モードおよび統一モードでの、図2の分岐予測論理のカウント・キャッシュを示すブロック図である。 本発明の一実施形態による、統一モードでのBHTおよびカウント・キャッシュ内部の1つのアレイを示すブロック図である。 本発明の一実施形態による、分割モードでのBHTおよびカウント・キャッシュ内部の1つのアレイを示すブロック図である。 本発明による、SMT実行中にBHTおよびカウント・キャッシュを操作するためのモードの選択に関わる処理を示す論理フロー図である。 本発明による、SMT実行中にBHTおよびカウント・キャッシュを操作するためのモードの選択に関わる処理を示す論理フロー図である。
符号の説明
101 データ・プロセッシング・システム
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. 同時マルチスレッドを実施し、分岐履歴テーブルおよびカウント・キャッシュを有する分岐処理論理を含むプロセッサにおいて、類似した下位アドレスを共有する第1のスレッドおよび第2のスレッドを有する同時マルチスレッド環境での分岐予測を向上させる方法であって、
    前記第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に記載のデータ・プロセッシング・システム。
JP2004124865A 2003-04-28 2004-04-20 同時マルチスレッドのための分割分岐履歴テーブルおよびカウント・キャッシュ Expired - Fee Related JP3716415B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (12)

* Cited by examiner, † Cited by third party
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