JP2006520964A5 - - Google Patents
Download PDFInfo
- Publication number
- JP2006520964A5 JP2006520964A5 JP2006507365A JP2006507365A JP2006520964A5 JP 2006520964 A5 JP2006520964 A5 JP 2006520964A5 JP 2006507365 A JP2006507365 A JP 2006507365A JP 2006507365 A JP2006507365 A JP 2006507365A JP 2006520964 A5 JP2006520964 A5 JP 2006520964A5
- Authority
- JP
- Japan
- Prior art keywords
- branch
- address
- instruction
- branch instruction
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000000875 corresponding Effects 0.000 claims description 26
- 238000004364 calculation method Methods 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 11
- 241001442055 Vipera berus Species 0.000 description 9
- 238000000034 method Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 2
- 238000006011 modification reaction Methods 0.000 description 2
- 230000002902 bimodal Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
Description
本発明はデジタルプロセッサに関し、より具体的には、分岐ターゲットに基づいて分岐予測をすることによって、デジタルプロセッサの処理能力を向上させるための方法および装置に関する。
発明の背景
デジタルシグナルコンピュータ、つまりデジタルシグナルプロセッサ(DSP)は、特別の用途向けのコンピュータであり、たとえば高速フーリエ変換、デジタルフィルタ、画像処理、ワイヤレスシステムにおける信号処理、および音声認識などのデジタル信号処理を行うための処理能力を最適化するように設計される。デジタルシグナルプロセッサの適用は、通常、リアルタイムオペレーション、インタラプトレート(interrupt rate)および数値演算の集中(intensive numeric computation)によって特徴づけられる。さらに、デジタルシグナルプロセッサの適用は、メモリにアクセスする動作が集中し、大量のデータの入出力が必要となることが多い。デジタルシグナルプロセッサ構造は、典型的には、これらの演算を効率的に実行するために最適化される。デジタルシグナルプロセッサの適用に加えて、DSPは、マイクロコントローラの動作の実行を要することが多い。マイクロコントローラの動作はデータの受け渡しを伴うが、数値演算の集中を通常必要としない。
デジタルシグナルコンピュータ、つまりデジタルシグナルプロセッサ(DSP)は、特別の用途向けのコンピュータであり、たとえば高速フーリエ変換、デジタルフィルタ、画像処理、ワイヤレスシステムにおける信号処理、および音声認識などのデジタル信号処理を行うための処理能力を最適化するように設計される。デジタルシグナルプロセッサの適用は、通常、リアルタイムオペレーション、インタラプトレート(interrupt rate)および数値演算の集中(intensive numeric computation)によって特徴づけられる。さらに、デジタルシグナルプロセッサの適用は、メモリにアクセスする動作が集中し、大量のデータの入出力が必要となることが多い。デジタルシグナルプロセッサ構造は、典型的には、これらの演算を効率的に実行するために最適化される。デジタルシグナルプロセッサの適用に加えて、DSPは、マイクロコントローラの動作の実行を要することが多い。マイクロコントローラの動作はデータの受け渡しを伴うが、数値演算の集中を通常必要としない。
デジタルシグナルプロセッサは、パイプライン化されたアーキテクチャを利用して高い処理能力を実現している。この技術分野で知られているように、パイプライン化されたアーキテクチャは、複数のパイプラインステージを含んでおり、これらは、命令のフェッチ、命令の複合化、アドレスの生成、計算処理などの指定された動作をそれぞれ実行する。プログラム命令は、連続的なクロックサイクルでパイプラインステージに進み、いくつかの命令は、種々の完了ステージ(stage of completion)に同時に入ることができる。
処理能力は、多数のパイプラインステージを与えることで向上し得る。プロセッサにおけるパイプラインステージの数は、パイプラインの深さ(pipeline depth)と呼ばれることがある。パイプライン化されたアーキテクチャにより処理能力が向上するにもかかわらず、特定のプログラム条件においては処理能力が低下することもある。このようなプログラム条件の一例は、分岐命令である。分岐命令は、大多数のコンピュータプログラムに広く用いられており、これらにはたとえばデジタルシグナルプロセッサおよびマイクロコントローラへの適用が含まれる。分岐命令がパイプライン化されたプロセッサに進み、分岐予測をしない場合には、次の命令が分岐命令に続いてパイプラインに入る。分岐が成立した場合、そのときパイプライン内にある全ての命令を中止し、分岐ターゲットからの命令を再実行することによって、パイプラインを空の状態にしなければならない。分岐処理能力へのペナルティ(branch performance penalty)は、パイプラインの深さに比例する。深くパイプライン化されたアーキテクチャおよびプログラムであって、頻繁に分岐命令を有するものにとって、処理能力のペナルティは深刻である。
分岐予測技術は当該技術分野で知られている。典型的な従来技術の手法において、分岐キャッシュは、分岐命令および対応する予測情報のアドレスを含んでいる。分岐命令がフェッチされると、分岐が成立するかどうかを推測するためにこの予測情報が使われる。
従来技術の分岐予測技術においては、これらに限定されないが、過度の複雑さおよび電力消費が生じ、また、処理能力に限られた影響しか与えないといった欠点および不都合が生じていた。そこで、デジタルプロセッサにおいて分岐予測をするための改善された方法および装置が必要とされている。
従来技術の分岐予測技術においては、これらに限定されないが、過度の複雑さおよび電力消費が生じ、また、処理能力に限られた影響しか与えないといった欠点および不都合が生じていた。そこで、デジタルプロセッサにおいて分岐予測をするための改善された方法および装置が必要とされている。
発明の概要
本発明の第一の側面によれば、デジタルプロセッサにおいて分岐予測をするための方法が提供される。本発明の方法は、タグアレイおよびデータアレイを有する分岐ターゲットバッファであって、前記タグアレイのエントリー(entry)は、前記データアレイの対応するエントリーに指標を与える、前記分岐ターゲットバッファを与えること、現在の分岐命令の分岐ターゲットを表す情報を、前記タグアレイの選択されたエントリーに記憶すること、次の分岐命令の分岐ターゲットを表す情報を、前記データアレイの対応するエントリーに記憶すること、および前記タグアレイのエントリーに対する適合に応答して、前記次の分岐命令の分岐ターゲットを表す情報を与えること、を含む。
本発明の第一の側面によれば、デジタルプロセッサにおいて分岐予測をするための方法が提供される。本発明の方法は、タグアレイおよびデータアレイを有する分岐ターゲットバッファであって、前記タグアレイのエントリー(entry)は、前記データアレイの対応するエントリーに指標を与える、前記分岐ターゲットバッファを与えること、現在の分岐命令の分岐ターゲットを表す情報を、前記タグアレイの選択されたエントリーに記憶すること、次の分岐命令の分岐ターゲットを表す情報を、前記データアレイの対応するエントリーに記憶すること、および前記タグアレイのエントリーに対する適合に応答して、前記次の分岐命令の分岐ターゲットを表す情報を与えること、を含む。
現在の分岐命令の分岐ターゲットを表す情報を記憶するステップは、分岐成立の場合に、現在の分岐命令の成立分岐ターゲットアドレスを記憶することを含んでもよい。現在の分岐命令の分岐ターゲットを表す情報を記憶するステップは、分岐不成立の場合に、現在の分岐命令に続く次の順番の命令のアドレスを記憶することを含んでもよい。
次の分岐命令の分岐ターゲットを表す情報を記憶するステップは、次の分岐命令の成立分岐ターゲットアドレスおよび非成立分岐ターゲットアドレスを記憶することを含んでもよい。非成立分岐ターゲットアドレスは、次の分岐命令に続く次の順番の命令のアドレスを表すオフセット値を含んでもよい。
本発明の方法は、オフセット値と現在のフェッチアドレスとの差が所定の値よりも小さい場合に、オフセット値を現在のフェッチアドレスから減算すること、および命令のフェッチを分岐ターゲットバッファにリダイレクトすることによって、ブロックサイズ計算を実行することをさらに含んでもよい。所定の値は、フェッチバッファの長さを表すものでもよい。
本発明の方法は、オフセット値と現在のフェッチアドレスとの差が所定の値よりも小さい場合に、オフセット値を現在のフェッチアドレスから減算すること、および命令のフェッチを分岐ターゲットバッファにリダイレクトすることによって、ブロックサイズ計算を実行することをさらに含んでもよい。所定の値は、フェッチバッファの長さを表すものでもよい。
次の分岐命令の分岐ターゲットを表す情報を記憶するステップは、次の分岐命令に対応する予測情報を記憶することをさらに含んでもよい。該予測情報は、次の分岐命令の実行に続いて更新されてもよい。予測情報に応答して、次の分岐命令の成立分岐ターゲットアドレスか、または次の順番のアドレスが選択されてもよい。
本発明の別の側面によれば、デジタルプロセッサで実行されるプログラムにおける分岐を予測するための装置が提供される。本発明の装置は、タグアレイおよびデータアレイを有する分岐ターゲットバッファであって、前記タグアレイのエントリーは、前記データアレイの対応するエントリーに指標を与える、前記分岐ターゲットバッファと、現在の分岐命令の分岐ターゲットを表す情報を、前記タグアレイの選択されたエントリーに記憶する手段と、次の分岐命令の分岐ターゲットを表す情報を、前記データアレイの対応するエントリーに記憶する手段と、前記タグアレイのエントリーに対する適合に応答して、前記次の分岐命令の分岐ターゲットを表す情報を、前記分岐ターゲットバッファから与える手段を含む。
さらに本発明の一側面によれば、デジタルプロセッサで実行されるプログラムにおいて分岐を予測するための装置が提供される。本発明の装置は、タグアレイおよびデータアレイを有する分岐ターゲットバッファであって、前記タグアレイのエントリーは、前記データアレイの対応するエントリーに指標を与え、前記タグアレイの選択されたエントリーは、現在の分岐命令の分岐ターゲットを表す情報を記憶し、前記データアレイの対応するエントリーは、次の分岐命令の成立分岐ターゲットアドレス、次の分岐命令の非成立分岐ターゲットアドレス、および該次の分岐命令に対応する予測情報を記憶する、前記分岐ターゲットバッファと、前記予測情報に応答して、前記成立分岐ターゲットか、または非成立分岐ターゲットアドレスを選択する、アドレスセレクタと、前記非成立分岐ターゲットアドレスと現在のフェッチアドレスとの差が所定の値より小さい場合に、命令のフェッチを前記分岐ターゲットバッファにリダイレクトする、ブロックサイズ計算ユニットを含む。
詳細な説明
デジタルシグナルプロセッサ(DSP)の一態様のブロック図を図1に示す。デジタルシグナルプロセッサは、演算コア10およびメモリ12を含む。演算コアは、DSPの中央処理機である。コア10およびメモリ12は、後で説明するようにパイプライン化されたアーキテクチャを有することがある。この態様において、コア10は、命令フェッチユニット20、命令復号ユニット22、ロード/ストアユニット24、実行ユニット30および分岐レゾリューションユニット(branch resolution unit)を含み得るシステムユニット32を含む。
デジタルシグナルプロセッサ(DSP)の一態様のブロック図を図1に示す。デジタルシグナルプロセッサは、演算コア10およびメモリ12を含む。演算コアは、DSPの中央処理機である。コア10およびメモリ12は、後で説明するようにパイプライン化されたアーキテクチャを有することがある。この態様において、コア10は、命令フェッチユニット20、命令復号ユニット22、ロード/ストアユニット24、実行ユニット30および分岐レゾリューションユニット(branch resolution unit)を含み得るシステムユニット32を含む。
命令フェッチユニット20および命令復号ユニット22については後述する。ロード/ストアユニット24は、メモリ12へのアクセスを制御する。メモリリードデータ(memory read data)は、メモリ12から実行ユニット30内のレジスタファイルに送られてもよい。メモリライトデータ(memory write data)は、実行ユニット30内のレジスタファイルからメモリ12に送られてもよい。命令フェッチユニット20は、フェッチユニット20において命令キャッシュミスがある場合に、メモリ12にアクセスすることができる。後述するように、システムユニット32は、分岐レゾリューション情報を命令フェッチユニット20に提供する。実行ユニット30は、命令実行の必要に応じて、加算器、乗算器、アキュムレータ、シフタなどを含んでもよい。
命令フェッチユニット20および命令復号ユニット22の簡略ブロック図を図2に示す。命令フェッチユニット20は、PC(プログラムカウンタ)リダイレクションユニット40、命令キャッシュ42、命令キュー44、命令配列ユニット(instruction alignment unit)46および分岐予測器50を含み得る。PCリダイレクションユニット40は、フェッチされる命令のアドレスを決定する。プログラム命令は、命令キャッシュ42からフェッチされて命令キュー44に移動され、配列ユニット46によって整列させられる。整列された命令は、命令復号器22によって複合化され、複合化された命令は、ロード/ストアユニット24(図1)まで送られる。命令キャッシュミスがある事象では、要求された命令は、メモリ12(図1)内でアクセスされる。通常のプログラムフローの間、プログラムカウンタが増加して、次の命令アドレスを生成する。分岐予測器50は、後で詳細に述べるように、分岐命令を予測し、命令フェッチをリダイレクトして、処理能力に与える悪影響を制限するように動作する。分岐命令が実行された後は、分岐レゾリューション情報がシステムユニット32(図1)から提供される。
演算コア10は、好ましくはパイプライン化されたアーキテクチャを有する。このパイプライン化されたアーキテクチャは、公知のアーキテクチャであって、コアが同期動作する一連の関連ステージ(connected stage)を含み、命令実行が、連続したクロックサイクルで連続したパイプラインステージにおいて実行される一連の動作に分割されるものである。したがって、たとえば第一のステージが命令フェッチを実行し、第二のステージが命令復号を実行し、第三のステージがデータアドレス生成を実行し、第四のステージがデータメモリアクセスを実行し、第五のステージが特定の演算を実行するようにすることができる。パイプライン化されたアーキテクチャの利点は、動作速度が増すことである。これは、複数の命令が同時に処理され、異なる命令は異なる完了ステージにあるからである。図1に示されたユニットの各々は、1または2以上のパイプラインステージを含んでもよいことを理解されたい。例示にすぎないが、演算コア10は30ステージまで含んでもよい。
分岐予測器50を図3により詳細に示す。リダイレクトされたPCアドレスは、第一の予測器60および第二の予測器62に供給される。予測器60、62は、対応する分岐命令が実行されるときに、各々の分岐が成立するか、または成立しないかを示す予測情報をそれぞれ含むことができる。予測器60、62の予測情報は、異なる基準に基づいていてもよい。予測器60、62の出力は、予測器セレクタ64に供給される。また、予測器62は、ターゲットアドレスをターゲット選択ユニット70に供給する。ターゲット選択ユニット70は、さらに次の順番のアドレスを受け取り、リターンアドレスをリターンスタック72から受け取る。フェッチアドレスは、PCリダイレクションユニット40および予測されたアドレスFIFO74の入力に供給される。FIFO74の出力は、PCリダイレクションユニット40に供給される。FIFO74は、分岐リゾリューションユニット32(図1)からのリダイレクション信号によって制御される。
図4Aは、分岐命令を含むプログラム断片の一例を示す概略図である。各々のプログラム断片は、一連の命令および対応する命令アドレスを含む。プログラム断片100は、アドレスA〜A+32において命令1〜5をそれぞれ含んでいる。アドレスAでの命令1は、前の分岐命令のターゲットである。プログラム断片100は、アドレスA+24で分岐命令4を含む。プログラム断片102は、アドレスB〜B+16において命令24〜26をそれぞれ含んでいる。プログラム断片102は、アドレスB+16で分岐命令26を含む。プログラム断片104は、アドレスC〜C+16において命令27〜29をそれぞれ含んでいる。プログラム断片104は、アドレスC+8で分岐命令28を含む。プログラム断片100の分岐命令4は、プログラム断片102のアドレスBにおける命令24をターゲットにする。プログラム102の分岐命令26は、アドレスEにおける命令40をターゲットにする。プログラム断片104の分岐命令28は、アドレスDにおける命令(図示せず)をターゲットにする。
図4Aの各分岐命令は条件分岐である。この分岐命令によって定めた条件を満たす場合、分岐が成立して、「成立分岐ターゲット(taken branch target)」と呼ばれるターゲット命令がフェッチされる。上記条件を満たさない場合には、「非成立分岐ターゲット(not taken branch target)」と呼ばれる、この分岐命令に続く次の順番の命令がフェッチされる。「成立分岐ターゲットアドレス」は、上記成立分岐ターゲットに対応し「非成立分岐ターゲットアドレス」は、上記非成立分岐ターゲットに対応する。
本発明の一側面によれば、図2に示される分岐予測器50は、分岐ターゲットバッファを含む。分岐ターゲットバッファ(BTB)は、キャッシュメモリと類似の構造を有し、タグアレイおよびデータアレイを含む。BTBの各エントリーは、タグエントリーおよび対応するデータエントリーを含む。タグエントリーおよびデータエントリーは、それぞれ1または2以上のフィールドを含む。各タグエントリーは、命令アドレスの上位オーダーのビットに対応するタグアドレスを含む。このタグアドレスは、対応するデータエントリーの指標として役立つ。入力命令アドレスがタグアドレスに適合するとき、BTBヒットが生じ、対応するデータエントリーがアクセスされる。
本発明の一態様によれば、BTBの各エントリーは、下記のフィールドを含んでもよい。タグエントリーは、後述する予測情報に基づいて、現在の分岐命令のターゲット命令のアドレスを含むタグアドレスフィールドを含んでいてもよい。成立分岐の場合、タグアドレスが現在の分岐命令の成立分岐ターゲットアドレスである。非成立分岐の場合、タグアドレスは、現在の分岐命令に続く命令のアドレスである。またタグエントリーは、有効フィールドおよびLRU(最長未使用時間)フィールドを含む。一例では、タグアドレスフィールドは、23ビット(アドレスのビット31:9)を含み、有効なフィールドは、1ビットおよびLRUフィールドは、6ビットを含む。これらのフィールドおよびフィールドサイズは例示のためだけに与えられるものであって、本発明の範囲を限定するものではない。他のタグエントリーフィールドおよびフィールドサイズも本発明の範囲内で利用され得る。
対応するデータエントリーは、次の分岐命令の分岐ターゲットを表す情報を含んでもよい。上記した次の分岐命令は、現在の分岐命令に続くものであって、任意の数からなる続きの命令によって現在の分岐命令から隔離されてもよい。データエントリーは、ターゲットアドレスフィールド、オフセットフィールドおよび予測フィールドを含んでもよい。ターゲットアドレスフィールドは、次の分岐命令の成立分岐ターゲットアドレスを含んでもよい。オフセットフィールドは、上記次の命令に続く次の順番の低オーダーアドレスビットを含んでもよい。一態様において、予測フィールドは、2つのバイモーダル予測ビット(bimodal prediction bit)を含んでもよく、これは、強い成立(strongly taken)、弱い成立(weakly taken)、強い非成立(strongly not taken)または弱い非成立(weakly not taken)の値を有し得る。種々の異なる予測が利用され得ることを理解されたい。
各データエントリーの追加のフィールドは、オーバーフローフィールド、分岐タイプフィールド、およびユーザ/スーパーバイザフィールドを含んでもよい。オーバーフローフィールドは、オフセット値の次の命令キャッシュページへのオーバーフローを示すオフセットオーバーフロービットを含んでもよい。分岐タイプフィールドは、分岐タイプビットを含んでもよく、これは、コール、リターン、無条件分岐または条件付き分岐を表してもよい。一例では、ターゲットアドレスフィールドは31ビットを含み、オフセットフィールドは6ビットを含み、オーバーフローフィールドは1ビットを含み、予測フィールドは2ビットを含み、ユーザ/スーパーバイザフィールドは1ビットを含み、分岐タイプフィールドは2ビットを含む。これらのフィールドおよびフィールドサイズは、例示のために与えられるにすぎず、本発明を限定するものではないことを理解されたい。他のデータエントリーフィールドおよびフィールドサイズも本発明の範囲内で利用され得る。
BTBのサイズは、命令キャッシュのサイズに基づいてもよい。好ましくは、BTBは命令キャッシュの全ての分岐のための予測を提供すべきである。一態様において、BTBは、32Kバイトの命令キャッシュサイズのために1Kのエントリーを有する。他のBTBサイズおよびBTBサイズを決定する技術は、本発明の範囲内で利用され得る。
ここで、図4Bを参照して分岐ターゲットバッファ110の一部を示す。BTB110は、タグアレイ112およびデータアレイ114を含む。BTB110のエントリー120は、ターゲットアドレスAをタグアレイ112のタグアドレスフィールドに、ターゲットアドレスBをデータアレイ114のターゲットアドレスフィールドに、命令5のアドレスをデータアレイ114のオフセットフィールドに、「条件付き」をデータアレイ114の分岐タイプフィールドに、「成立」をデータアレイ114の予測フィールドに含む。同様に、BTB100のエントリー122は、ターゲットアドレスBをタグアレイ112のタグアドレスフィールドに、ターゲットアドレスEをデータアレイ114のターゲットアドレスフィールドに含む。さらに、エントリー122は、命令27のアドレスをオフセットフィールドに、「条件付き」を分岐タイプフィールドに、「非成立」をデータアレイ114の予測フィールドに含む。命令4が成立分岐である場合、命令アドレスBは、エントリー120の次のターゲットアドレスであり、かつエントリー122の現在のターゲットアドレスであることがわかる。BTB110のエントリー124は、分岐命令26が非成立分岐である場合、タグアレイ112のタグアドレスフィールドに、分岐命令に続く次の順番のアドレスCを含む。またエントリー124は、データアレイ114のターゲットアドレスフィールドに分岐命令28のターゲットアドレスDを含み、データアレイ114のオフセットフィールドに命令29のアドレスを含む。それぞれの場合において、データアレイ114のターゲットアドレスフィールドは、次の分岐命令の成立分岐ターゲットアドレスを含み、データアレイ114のオフセットフィールドは、次の分岐命令の非成立分岐ターゲットアドレスを含む。
分岐予測器50の一態様のブロック図を図5に示す。パイプラインアーキテクチャを示している。特に、パイプライン化されたプロセッサのステージ2、3、4を示す。ステージ1(図示せず)は、仮想アドレスから物理アドレスに変換するためにトランスレーション・ルックアサイド・バッファ(TLB)を含んでもよい。ステージ2は、加算器150、アドレスセレクタ152、およびステージ2ラッチ154を含んでもよい。加算器150は、連続した命令フェッチの際に、連続した命令アドレスをアドレスセレクタ152に供給する。アドレスセレクタ152は、FIFO74から命令アドレスを受け取り、分岐ターゲットバッファ110から予測されたフェッチアドレスを受け取り、分岐レゾリューションユニット32(図1)からリダイレクションアドレスを受け取る。リダイレクトされたPCアドレスは、アドレスセレクタ152から出力され、ステージ2ラッチ154に保持される。
ステージ2ラッチ154の出力は、ステージ3に出力される。ステージ3は、予測器選択アレイ160、分岐履歴テーブル(branch history table)(予測器2)、分岐ターゲットバッファ110、加算器170、およびリターンスタック174を含む。上述したように、分岐ターゲットバッファ110は、タグアレイ112およびデータアレイ114(予測器1)を含む。ステージ3は、さらにアドレスセレクタ176を含み、これは、オフセットオーバーフロービットに応答して、ラッチ154の出力か、または加算器170の出力を選択する。予測器選択アレイ160および分岐履歴テーブル162の出力は、ステージ3ラッチ180に保持される。BTBデータアレイ114の出力は、ステージ3ラッチ182に保持され、BTBタグアレイ112の出力はステージ3ラッチ184に保持される。アドレスセレクタ176の出力は、ステージ3ラッチ186に保持され、リターンスタック174の出力は、ステージ3ラッチ188に保持される。ラッチ154からの現在のPCアドレスは、ステージ3ラッチ190に保持される。
ステージ3ラッチ180、182、184、186、188の出力は、ステージ4に供給される。ステージ4は、予測器セレクタ200、制御ロジック210、データエントリーセレクタ220、アドレスセレクタ230、およびブロックサイズ計算ユニット240を含む。
ステージ3ラッチ180、182、184、186、188の出力は、ステージ4に供給される。ステージ4は、予測器セレクタ200、制御ロジック210、データエントリーセレクタ220、アドレスセレクタ230、およびブロックサイズ計算ユニット240を含む。
図5の例では、分岐ターゲットバッファ110は、4つのルートを含むキャッシュ構造を有している。タグアレイ112への入力アドレスは、タグアレイエントリーの1つと適合してもよいし、適合しなくてもよい。この入力アドレスがタグアレイエントリーと適合しないとき、BTBミスが生じ、連続したフェッチがレジュームする。入力アドレスがタグアレイエントリーとルートの1つで適合するとき、BTBヒットが生じ、タグアレイ112が適合信号をラッチ184を介してデータエントリーセレクタ220の選択入力に供給する。データエントリーセレクタ220は、ラッチ182を介してデータアレイ114のルートの出力を受け取り、タグアレイ112からの適合信号によって制御され、BTB110のデータアレイ114からデータエントリーを提供する。
セレクタ220によるデータエントリー出力(data entry output)は、アドレスセレクタ230の入力に供給されるターゲットアドレス、予測器セレクタ200の第一の出力オフセットおよび予測ビット、並びに制御ロジック210に供給される分岐タイプを含む。アドレスセレクタ230は、データ入力セレクタ220からターゲットアドレスを、ステージ3ラッチ190から現在のPCアドレスを、ステージ3ラッチ186から次の順番のアドレス(NSA)を、ステージ3ラッチ188からリターンアドレスを受け取る。
分岐履歴テーブル162からの予測ビットは、ラッチ180を介して予測器セレクタ200の第二の入力に供給され、予測器選択アレイ160からの予測選択信号は、ラッチ180を介して予測器セレクタ200の選択入力に供給される。セレクタ200は、データアレイ114(予測器1)から、または分岐履歴テーブル162(予測器2)から予測ビットを選択し、分岐成立/非成立信号を制御ロジック210に出力する。
分岐履歴テーブル162からの予測ビットは、ラッチ180を介して予測器セレクタ200の第二の入力に供給され、予測器選択アレイ160からの予測選択信号は、ラッチ180を介して予測器セレクタ200の選択入力に供給される。セレクタ200は、データアレイ114(予測器1)から、または分岐履歴テーブル162(予測器2)から予測ビットを選択し、分岐成立/非成立信号を制御ロジック210に出力する。
制御ロジック210は、分岐成立/非成立信号および分岐タイプ信号を受信し、選択信号をアドレスセレクタ230に提供する。条件付き分岐の場合、制御ロジック210は、ターゲットアドレスまたは次の順番のアドレスを分岐成立/非成立信号に応じて選択する。リターン命令の場合、リターンアドレスが選択される。連続した命令フェッチの場合、現在のPCアドレスが選択される。
アドレスセレクタ230の出力は、ステージ4ラッチ250およびブロックサイズ計算ユニット240に供給される。また、ブロックサイズ計算ユニット240は、現在のPCアドレスをステージ3ラッチ190から受け取る。ブロックサイズ計算ユニット240の出力は、ステージ4ラッチ252に供給される。ステージ4ラッチ252の出力は、制御入力をステージ2のアドレスセレクタ152に提供する。
ステージ4ラッチ250の出力は、ステージ5の一部であるFIFO74に供給される。FIFO74は、パイプライン内で未処理の各分岐命令のためにデータアレイ114のデータ入力を保持する。分岐レゾリューションの際、FIFO74の情報がBTB110を更新するために用いられる。分岐レゾリューションに続いてBTB110が更新されるとき、現在のターゲット情報が分岐レゾリューションユニット(図1)によって提供され、次のターゲット情報がFIFO74によって提供される。
ステージ4ラッチ250の出力は、ステージ5の一部であるFIFO74に供給される。FIFO74は、パイプライン内で未処理の各分岐命令のためにデータアレイ114のデータ入力を保持する。分岐レゾリューションの際、FIFO74の情報がBTB110を更新するために用いられる。分岐レゾリューションに続いてBTB110が更新されるとき、現在のターゲット情報が分岐レゾリューションユニット(図1)によって提供され、次のターゲット情報がFIFO74によって提供される。
ブロックサイズ計算ユニット240は、最新のBTBアクセスからのオフセット値に基づいて、いつBTB110がアクセスされるべきかを決定する。オフセット値は、次の分岐命令の後の次の順番のアドレスの低オーダービットを含む。ブロックサイズ計算ユニット240は、現在のフェッチアドレスとオフセット値と比較して、いつBTB110がアクセスされるべきかを決定する。命令キャッシュ42への各アクセスは、4つの16ビットワードつまり8バイトのワードをフェッチする。現在のフェッチアドレスとオフセット値との差が8バイトより小さい場合、現在のフェッチアドレスは、次の分岐命令のアドレスである。したがって、現在のフェッチアドレスとオフセット値との差が8より小さい場合、分岐ターゲットバッファ110へのリダイレクションが、ブロックサイズ計算ユニット240によって開始される。
次のフェッチアドレスを生成するためのアルゴリズムの一態様を示す概略ブロック図を図6に示す。図5、図6において、同様の要素には同じ参照符号を付す。現在のフェッチアドレス300は、32ビット命令アドレスの場合にビット(31:1)を含み得る。現在のフェッチアドレス300の高オーダービット(31:7)は、加算器170の第一の入力およびアドレスセレクタ176の第一の入力に供給される。加算器170は、現在のフェッチアドレス300の上記高オーダービットに1を加算する。加算器170の出力は、アドレスセレクタ176の第二の入力に供給される。オフセットオーバーフロービットは、アドレスセレクタ176を制御する。したがって、加算器170およびアドレスセレクタ176は、オフセット値が現在のフェッチアドレスを次の命令キャッシュページにオーバーフローさせるかどうかを決定する。アドレスセレクタ176の出力は、次の分岐命令に続く次の順番のアドレス320の上位オーダービット(31:7)を構成する。次の順番のアドレス320の低オーダービット(6:1)は、BTB110からのオフセット値324から得られる。ビット(31:1)を含む次のターゲットアドレス330もまたBTB110から得られる。アドレスセレクタ230は、次の分岐命令に続く次の順番のアドレス320および次のターゲットアドレス330を第一の入力および第二の入力でそれぞれ受け取る。アドレスセレクタ230は、制御ロジック210(図5)による−分岐ターゲットバッファ110における予測、または分岐履歴テーブル162(図5)によってもよい−成立/非成立予測によって制御される。「成立」予測の場合、アドレスセレクタ230は、次のターゲットアドレス330を次のBTBアドレス350として供給する。「非成立」予測の場合、アドレスセレクタ230は、次の順番のアドレス320を次のBTBアドレス350として供給する。
図6に示すように、ブロックサイズ計算ユニット240は、減算器310および比較器360を含む。現在のフェッチアドレス300の低オーダービット(7:1)は、減算器310の第一の入力に供給される。減算器310は、オフセット値324を現在のフェッチアドレス300の低オーダービット(7:1)から減算する。比較ユニット360は、減算器310の出力が8より小さいかどうかを決定する。減算器310の出力が8より小さい場合には、命令フェッチがBTB110にリダイレクトされる。そうでない場合には、現在のフェッチアドレス300は、8バイト増大して次のフェッチアドレスを決定する。減算器310の出力と比較される8の値は、フェッチバッファのバイト数に基づくこと、および異なる所定の値もまた本発明の範囲内で使用され得ることを理解されたい。
プログラムループを含むプログラム断片を図7Aに示す。プログラム断片400は、PC1からPC6にわたって命令を含む。アドレスPC5での分岐命令は、アドレスPC1の「loop」と称する命令に分岐する。アドレスPC6の命令は、分岐命令に続く次の順番のアドレスである。
本発明の一態様によるパイプライン化されたプロセッサにおけるプログラム断片400の実行を図7Bおよび図7Cに示す。図7Bおよび図7Cに、パイプラインステージ1、2、3、4、5、n−kにおける動作を左から右に、時間進行を上から下にして示す。図7Aに示すように、アドレスPC1でのループ命令は、前の分岐命令のターゲットである。図7Bを参照して、クロックサイクル410の間、命令フェッチがステージ2のBTBアドレスPC1にリダイレクトされる。クロックサイクル412の間、BTB110は、ステージ3のアドレスPC1にインデックス化される。これがループ命令の第一の実行になるので、クロックサイクル414の間にステージ4のBTBでミスが生じ、フェッチアドレスが次の順番のアドレスとなる。クロックサイクル416の間、アドレスPC1は、ステージ5のFIFO74に書き込まれ、BTBはディセーブルとなる。数サイクルの後、クロックサイクル420の間に分岐レゾリューションユニット32(ステージn−k)が分岐予測失敗を決定し、予測失敗ペナルティを被ることになる。
本発明の一態様によるパイプライン化されたプロセッサにおけるプログラム断片400の実行を図7Bおよび図7Cに示す。図7Bおよび図7Cに、パイプラインステージ1、2、3、4、5、n−kにおける動作を左から右に、時間進行を上から下にして示す。図7Aに示すように、アドレスPC1でのループ命令は、前の分岐命令のターゲットである。図7Bを参照して、クロックサイクル410の間、命令フェッチがステージ2のBTBアドレスPC1にリダイレクトされる。クロックサイクル412の間、BTB110は、ステージ3のアドレスPC1にインデックス化される。これがループ命令の第一の実行になるので、クロックサイクル414の間にステージ4のBTBでミスが生じ、フェッチアドレスが次の順番のアドレスとなる。クロックサイクル416の間、アドレスPC1は、ステージ5のFIFO74に書き込まれ、BTBはディセーブルとなる。数サイクルの後、クロックサイクル420の間に分岐レゾリューションユニット32(ステージn−k)が分岐予測失敗を決定し、予測失敗ペナルティを被ることになる。
クロックサイクル422の間に、BTBは分岐レゾリューションユニットからのターゲットアドレスで更新され、BTB110の予測ビットは更新され、FIFO74はフラッシュされ、命令フェッチはステージ2のBTBアドレスPC1にリダイレクトされる。クロック424の間に、BTBは、ステージ3のアドレスPC1にインデックス化される。クロックサイクル426の間に、BTBでヒットが生じ、次のフェッチアドレスはステージ4のBTBからのターゲットアドレスとなる。クロックサイクル428の間に、アドレスPC1は、ステージ5のFIFO74に書き込まれる。クロックサイクル430の後の数サイクルにおいて、分岐レゾリューションユニット32(ステージn−k)は、分岐が正しく予測されたことを決定する。
クロックサイクル432の間に、BTB110の予測ビットは更新され、FIFOポインタは1つの入力によってシフトされ、命令フェッチはステージ2のBTBアドレスPC1にリダイレクトされる。クロックサイクル434の間に、BTBは、ステージ3のアドレスPC1にインデックス化される。クロックサイクル436の間に、BTBでヒットが生じ、次のフェッチアドレスは、ステージ4のBTBからのターゲットアドレス(PC1)となる。クロックサイクル438の間に、アドレスPC1はステージ5のFIFO74に書き込まれる。クロックサイクル440の後の数サイクルにおいて、分岐レゾリューションユニット32(ステージn−k)は、分岐が正しく予測されたことを決定する。このように、このループは何度も繰り返し続けられる。
プログラム断片400におけるループの最後の繰り返しを図7Cに示す。クロックサイクル450の間に、BTB110での予測ビットが更新され、FIFOポインタが1つの入力によってシフトされ、命令フェッチはステージ2のBTBアドレスPC1にリダイレクトされる。クロックサイクル452の間に、BTBは、ステージ3のアドレスPC1にインデックス化される。クロックサイクル454の間に、BTBでヒットが生じ、次のフェッチアドレスは、ステージ4のBTBからのターゲットアドレス(PC1)となる。クロックサイクル456の間に、アドレスPC1はステージ5のFIFO74に書き込まれる。クロックサイクル460の後の数サイクルにおいて、分岐レゾリューションユニット32(ステージn−k)は、ループを出た分岐予測の失敗を決定し、こうして予測失敗ペナルティが生じる。
クロックサイクル462の間に、BTB110の予測ビットは更新され、FIFO74はフラッシュされ、命令フェッチはステージ2のBTBアドレスPC1にリダイレクトされる。クロックサイクル464の間に、BTBはステージ3のアドレスPC6にインデックス化される。クロックサイクル466の間に、BTBでヒットが生じ、次のフェッチアドレスは、ステージ4の次の順番のアドレス(PC6)となる。クロックサイクル468の間に、アドレスPC6はステージ5のFIFO74に書き込まれる。クロックサイクル470の間に、分岐レゾリューションがステージn−kで生じる。
本発明の一態様にしたがって、分岐ターゲットバッファを利用した命令フェッチの簡略化したフロー図を図8に示す。ステップ500において、命令フェッチを分岐ターゲットバッファにリダイレクトすることによって、前の分岐命令のターゲットがフェッチされる。ターゲットアドレスは、BTBのタグアレイに供給される。BTBヒットがステップ502で生じない場合、フェッチアドレスFAは、ステップ504で8バイト増大し、プロセスは、分岐コミット(branch commit)(分岐レゾリューション)まで待機する。分岐レゾリューションがあると、新しいエントリーがステップ504のBTBで作られる。BTBヒットがステップ502で生じる場合、対応するデータエントリーがステップ510でBTBから読み出され、データエントリがFIFO74(図5)に書き込まれる。ステップ512において、データエントリーの予測ビットが使用され、分岐が成立するか、または非成立かを決定する。
分岐が成立する場合、ステップ514でフェッチアドレスとオフセット値との差が8バイトより小さいかどうかの決定がなされる。この差が8バイトより小さくない場合には、フェッチアドレスFAはステップ516で8バイト増大し、命令のフェッチが増大したフェッチアドレスで進行する。そして、このプロセスはステップ514に戻る。フェッチアドレスとオフセット値との差が8バイトより小さい場合、命令のフェッチは、ステップ520で成立分岐ターゲットにリダイレクトされる。そしてこのプロセスはステップ502に戻る。
ステップ512で分岐が非成立であるとの決定がなされた場合、ステップ530でフェッチアドレスとオフセット値との差が8バイトより小さいかどうかの決定がなされる。この差が8バイトより小さくない場合には、フェッチアドレスFAはステップ532で8バイト増大し、命令のフェッチが増大したフェッチアドレスで進行する。そして、このプロセスはステップ530に戻る。ステップ530で、フェッチアドレスとオフセット値との差が8バイトより小さいと決定された場合、命令のフェッチは、ステップ540で次の順番のアドレス(NSA)にリダイレクトされる。そしてこのプロセスはステップ500に戻る。
図5および図6に示し、かつ上述したように、ステップ514およびステップ530は、ブロックサイズ計算ユニット240によって行われるブロックサイズ計算に対応する。図8より明らかなように、ブロックサイズ計算ユニットによって決定され、分岐命令が実行されるプログラム上に生じるときにのみ、命令のフェッチは分岐ターゲットバッファにリダイレクトされる。これにより、各サイクル毎にアクセスされていた従来技術の分岐キャッシュに比して消費電力の節約が達成される。
本発明の少なくとも1つの態様について、そのいくつかの側面を説明した。したがって、これに対する種々の改変、変種および改良は、当業者により容易になされるであろう。かかる改変、変種および改良は、本明細書により開示されることを意図したものの一部であって、本発明の思想および範囲に包含されることを理解されたい。したがって、上記記載および図を用いた説明は、単に例示をその目的とするものである。
Claims (17)
- デジタルプロセッサにおける分岐予測のための方法であって:
タグアレイとデータアレイとを有し、タグアレイにおける各エントリー(entry)はデータアレイにおける対応するエントリーを印付け(index)するものである、分岐ターゲットバッファ(BTB:Branch Target Buffer)を用意し;
タグアレイにおけるエントリーに現在の分岐命令の分岐タ−ゲットを表す情報を格納し;
データアレイにおける対応するエントリーに次の分岐命令の分岐ターゲットを表す情報を格納し;
タグアレイにおけるエントリーが一致したことに応答して次の分岐命令の分岐ターゲットを表す情報を提供することを含む分岐予測のための方法。 - 請求項1の方法であって、現在の分岐命令の分岐ターゲットを表す情報を格納することが、分岐が成立した場合は現在の分岐命令の成立分岐ターゲットアドレスを格納し、分岐が成立しない場合は現在の分岐命令に続く次の逐次命令のアドレスを格納することを含む方法。
- 請求項1の方法であって、次の分岐命令の分岐ターゲットを表す情報を格納することが、次の分岐命令の成立分岐ターゲットアドレスと、次の分岐命令に続く次の逐次命令のアドレスを表すオフセット値とを格納することを含むものである方法。
- 請求項3の方法であって、現在のフェッチアドレスからオフセット値を減算するブロックサイズ計算を行い、オフセット値と現在のフェッチアドレスとの差があらかじめ定めた値よりも小さいときは命令フェッチを分岐ターゲットバッファにリダイレクトすることを含む方法。
- 請求項1の方法であって、次の分岐命令の分岐ターゲットアドレスを表す情報を格納することが、次の分岐命令に対応する予測情報を格納し、次の分岐命令の実行に続いて予測情報を更新することをさらに含み、予測情報に応答して次の分岐命令の成立分岐ターゲットアドレスまたは次の逐次アドレスを選択することをさらに含む方法。
- 請求項1の方法であって、次の分岐命令の分岐ターゲットを表す情報を提供することが、次の分岐命令の分岐ターゲットを表す情報に応答して、いつ次の分岐命令が実行されるかを決定することを含むものである方法。
- 請求項1の方法であって、現在の分岐命令の分岐判定(branch resorution)の際に使用するために、次の分岐命令の分岐ターゲットを表す情報をバッファに格納することをさらに含む方法。
- 請求項1の方法であって、次の分岐命令の分岐ターゲットを表す情報を格納することが、次の分岐命令の成立分岐ターゲットアドレスおよび次の分岐命令の非成立分岐ターゲットアドレスを格納することを含む方法。
- デジタルプロセッサにおいて実行されるプログラムにおける分岐を予測するための装置であって;
タグアレイにおける各エントリーがデータアレイにおける対応するエントリーを印付けするものであるタグアレイとデータアレイとを有する分岐ターゲットバッファ(BTB)と;
タグアレイ中のひとつの選択したエントリーに現在の分岐命令の分岐タ−ゲットを表す情報を格納する手段と;
データアレイ中の対応するエントリーに次の分岐命令の分岐ターゲットを表す情報を格納する手段と;
タグアレイ中のエントリーが一致したことに応答して次の分岐命令の分岐ターゲットを表す情報を分岐ターゲットバッファ(BTB)から提供する手段とを含む分岐予測のための装置。 - 請求項9の装置であって、現在の分岐命令の分岐タ−ゲットを表す情報を格納する手段が、分岐が成立した場合は現在の分岐命令の成立分岐ターゲットアドレスを格納する手段、および分岐が成立しない場合は現在の分岐命令に続く次の逐次命令のアドレスを格納する手段を含むものである装置。
- 請求項9の装置であって、次の分岐命令の分岐ターゲットを表す情報を格納する手段が、次の分岐命令の成立分岐ターゲットアドレスと、次の分岐命令に続く次の逐次命令のアドレスを表すオフセット値とを格納する手段を含むものである装置。
- 請求項9の装置であって、次の分岐命令の分岐ターゲットを表す情報を格納する手段が、次の分岐命令の成立分岐ターゲットアドレスと、次の分岐命令の非成立分岐ターゲットアドレスとを格納する手段を含むものである装置。
- 請求項12の装置であって、オフセット値を現在のフェッチアドレスから減算し、オフセット値と現在のフェッチアドレスとの差があらかじめ定めた値よりも小さいときに命令フェッチを分岐ターゲットバッファにリダイレクトするためのブロックサイズ計算ユニットをさらに含むものである装置。
- 請求項13の装置であって、ブロックサイズ計算ユニットは、現在のフェッチアドレスからオフセット値を減算する減算器と、オフセット値と現在のフェッチアドレスとの差があらかじめ定めた値よりも小さいときに命令フェッチを分岐ターゲットバッファにリダイレクトするための比較器とを含むものである装置。
- 請求項9の装置であって、次の分岐命令の分岐ターゲットを表す情報を格納する手段が、次の分岐命令に対応する予測情報を格納し、次の分岐命令の実行に続いて予測情報を更新する手段を含み、予測情報に応答して次の分岐命令の成立分岐ターゲットアドレスまたは次の逐次アドレスを選択する手段をさらに含むものである装置。
- 請求項9の装置であって、現在の分岐命令の分岐判定において用いる、次の分岐命令の分岐ターゲットを表す情報を格納するバッファをさらに含むものである装置。
- デジタルプロセッサにおいて実行されるプログラムにおける分岐を予測するための装置であって、
タグアレイにおける各エントリーがデータアレイにおける対応するエントリーを印付けするものであり、タグアレイ中のひとつの選択したエントリーに現在の分岐命令の分岐タ−ゲットを表す情報を格納し、データアレイ中の対応するエントリーには、次の分岐命令の成立分岐ターゲットアドレス、次の分岐命令の非成立分岐ターゲットアドレスおよび次の分岐命令に対応する予測情報を格納するようなタグアレイとデータアレイとを有する分岐ターゲットバッファと、
予測情報に応答して成立分岐ターゲットアドレスまたは非成立分岐ターゲットアドレスを選択するアドレス選択器と、
非分岐ターゲットアドレスと現在のフェッチアドレスとの差があらかじめ定めた値よりも小さいときに、命令フェッチを分岐ターゲットバッファにリダイレクトするためのブロックサイズ計算ユニットを含むものである装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/394,820 US7266676B2 (en) | 2003-03-21 | 2003-03-21 | Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays |
PCT/US2004/008438 WO2004086219A2 (en) | 2003-03-21 | 2004-03-19 | Method and apparatus for branch prediction based on branch targets |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006520964A JP2006520964A (ja) | 2006-09-14 |
JP2006520964A5 true JP2006520964A5 (ja) | 2007-05-10 |
Family
ID=32988465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006507365A Pending JP2006520964A (ja) | 2003-03-21 | 2004-03-19 | 分岐ターゲットに基づいて分岐予測をするための方法および装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7266676B2 (ja) |
EP (1) | EP1625493A2 (ja) |
JP (1) | JP2006520964A (ja) |
TW (1) | TWI319533B (ja) |
WO (1) | WO2004086219A2 (ja) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7386679B2 (en) * | 2004-04-15 | 2008-06-10 | International Business Machines Corporation | System, method and storage medium for memory management |
US8719837B2 (en) | 2004-05-19 | 2014-05-06 | Synopsys, Inc. | Microprocessor architecture having extendible logic |
US7328332B2 (en) * | 2004-08-30 | 2008-02-05 | Texas Instruments Incorporated | Branch prediction and other processor improvements using FIFO for bypassing certain processor pipeline stages |
US7836288B2 (en) * | 2004-09-14 | 2010-11-16 | Arm Limited | Branch prediction mechanism including a branch prediction memory and a branch prediction cache |
EP1851771A2 (en) * | 2005-02-11 | 2007-11-07 | M-Systems Flash Disk Pioneers Ltd. | Nand flash memory system architecture |
US8971461B2 (en) | 2005-06-01 | 2015-03-03 | Qualcomm Incorporated | CQI and rank prediction for list sphere decoding and ML MIMO receivers |
US20070073925A1 (en) | 2005-09-28 | 2007-03-29 | Arc International (Uk) Limited | Systems and methods for synchronizing multiple processing engines of a microprocessor |
US7827392B2 (en) * | 2006-06-05 | 2010-11-02 | Qualcomm Incorporated | Sliding-window, block-based branch target address cache |
US8935517B2 (en) * | 2006-06-29 | 2015-01-13 | Qualcomm Incorporated | System and method for selectively managing a branch target address cache of a multiple-stage predictor |
US20080097914A1 (en) * | 2006-10-24 | 2008-04-24 | Kent Dicks | Systems and methods for wireless processing and transmittal of medical data through multiple interfaces |
WO2008072178A1 (en) * | 2006-12-11 | 2008-06-19 | Nxp B.V. | Pipelined processor and compiler/scheduler for variable number branch delay slots |
US7640400B2 (en) * | 2007-04-10 | 2009-12-29 | International Business Machines Corporation | Programmable data prefetching |
US7913068B2 (en) * | 2008-02-21 | 2011-03-22 | International Business Machines Corporation | System and method for providing asynchronous dynamic millicode entry prediction |
US7941653B2 (en) * | 2008-12-04 | 2011-05-10 | Analog Devices, Inc. | Jump instruction having a reference to a pointer for accessing a branch address table |
US9946545B2 (en) * | 2010-11-16 | 2018-04-17 | Arm Limited | Buffer store with a main store and and auxiliary store |
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 |
US9250909B2 (en) * | 2012-06-12 | 2016-02-02 | International Business Machines Corporation | Fast index tree for accelerated branch prediction |
US9250912B2 (en) * | 2012-06-12 | 2016-02-02 | International Business Machines Corporation | Fast index tree for accelerated branch prediction |
US20140250289A1 (en) * | 2013-03-01 | 2014-09-04 | Mips Technologies, Inc. | Branch Target Buffer With Efficient Return Prediction Capability |
US9489204B2 (en) * | 2013-03-15 | 2016-11-08 | Qualcomm Incorporated | Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process |
JP6273718B2 (ja) * | 2013-08-13 | 2018-02-07 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US10831491B2 (en) * | 2018-06-29 | 2020-11-10 | Intel Corporation | Selective access to partitioned branch transfer buffer (BTB) content |
US11762660B2 (en) * | 2020-06-23 | 2023-09-19 | Ampere Computing Llc | Virtual 3-way decoupled prediction and fetch |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5142634A (en) * | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Branch prediction |
GB2285154B (en) * | 1993-12-24 | 1998-04-01 | Advanced Risc Mach Ltd | Branch cache |
US5608886A (en) * | 1994-08-31 | 1997-03-04 | Exponential Technology, Inc. | Block-based branch prediction using a target finder array storing target sub-addresses |
US5732253A (en) * | 1994-10-18 | 1998-03-24 | Cyrix Corporation | Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches |
US5864697A (en) * | 1996-06-28 | 1999-01-26 | Texas Instruments Incorporated | Microprocessor using combined actual and speculative branch history prediction |
US6119222A (en) * | 1996-12-23 | 2000-09-12 | Texas Instruments Incorporated | Combined branch prediction and cache prefetch in a microprocessor |
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 |
US5964870A (en) * | 1997-09-22 | 1999-10-12 | Intel Corporation | Method and apparatus for using function context to improve branch |
US6185675B1 (en) * | 1997-10-24 | 2001-02-06 | Advanced Micro Devices, Inc. | Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks |
US6446197B1 (en) * | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
-
2003
- 2003-03-21 US US10/394,820 patent/US7266676B2/en not_active Expired - Lifetime
-
2004
- 2004-03-19 WO PCT/US2004/008438 patent/WO2004086219A2/en active Application Filing
- 2004-03-19 EP EP04757879A patent/EP1625493A2/en not_active Withdrawn
- 2004-03-19 TW TW093107413A patent/TWI319533B/zh not_active IP Right Cessation
- 2004-03-19 JP JP2006507365A patent/JP2006520964A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006520964A5 (ja) | ||
US7266676B2 (en) | Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays | |
JP3599409B2 (ja) | 分岐予測装置 | |
JP4027620B2 (ja) | 分岐予測装置、プロセッサ、及び分岐予測方法 | |
US6185676B1 (en) | Method and apparatus for performing early branch prediction in a microprocessor | |
JP5255367B2 (ja) | 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法 | |
US5606682A (en) | Data processor with branch target address cache and subroutine return address cache and method of operation | |
JP2744890B2 (ja) | ブランチ予測式データ処理装置および動作方法 | |
US7203827B2 (en) | Link and fall-through address formation using a program counter portion selected by a specific branch address bit | |
JPH0334024A (ja) | 分岐予測の方法とそのための装置 | |
US6766441B2 (en) | Prefetching instructions in mis-predicted path for low confidence branches | |
EP0465322A2 (en) | In-register data manipulation in reduced instruction set processor | |
JP2002525741A (ja) | 間接分岐ターゲットを計算するための方法 | |
JP2000029701A (ja) | 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。 | |
JP2009536770A (ja) | ブロックに基づく分岐先アドレスキャッシュ | |
US7844807B2 (en) | Branch target address cache storing direct predictions | |
US5740418A (en) | Pipelined processor carrying out branch prediction by BTB | |
CN106557304B (zh) | 用于预测子程序返回指令的目标的取指单元 | |
US6332187B1 (en) | Cumulative lookahead to eliminate chained dependencies | |
US7962722B2 (en) | Branch target address cache with hashed indices | |
US7865705B2 (en) | Branch target address cache including address type tag bit | |
EP0550289A2 (en) | A mechanism to detect stores into the instruction stream | |
US6738897B1 (en) | Incorporating local branch history when predicting multiple conditional branch outcomes | |
JPH07262006A (ja) | 分岐ターゲットアドレスキャッシュを備えたデータプロセッサ | |
JPH08286913A (ja) | パイプライン・プロセッサにおいて次に完了すべき命令のアドレスを生成する方法および装置 |