JP4727491B2 - 分岐予測コントロール - Google Patents

分岐予測コントロール Download PDF

Info

Publication number
JP4727491B2
JP4727491B2 JP2006114589A JP2006114589A JP4727491B2 JP 4727491 B2 JP4727491 B2 JP 4727491B2 JP 2006114589 A JP2006114589 A JP 2006114589A JP 2006114589 A JP2006114589 A JP 2006114589A JP 4727491 B2 JP4727491 B2 JP 4727491B2
Authority
JP
Japan
Prior art keywords
branch
instruction
type
branch instruction
predicted
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.)
Active
Application number
JP2006114589A
Other languages
English (en)
Other versions
JP2006338656A (ja
JP2006338656A5 (ja
Inventor
デビッド・ジェームズ・ウィリアムソン
アンドリュー・ジェームズ・ブッカー
デビッド・ジョン・ブッチャー
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2006338656A publication Critical patent/JP2006338656A/ja
Publication of JP2006338656A5 publication Critical patent/JP2006338656A5/ja
Application granted granted Critical
Publication of JP4727491B2 publication Critical patent/JP4727491B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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/3842Speculative instruction execution
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

本発明は、データ処理システムの分野に関する。特に、本発明は、分岐予測メカニズムおよびその分岐予測メカニズムの制御を具備するデータ処理システムに関する。
プログラム命令のシーケンス内の分岐命令が、結果として分岐処理(プログラムフローにおけるジャンプ)を生じるか否か、それとも、分岐処理を生じるかどうかに関する予測をするために様々な方法で動作する分岐予測メカニズムを具備するプロセッサを提供することが知られている。分岐命令が分岐処理を生じるかどうかを正確に予測することは、その分岐が実際に分岐処理を生じるかどうか、例えば、分岐がその条件コードを通過するかどうか、または、以前の間接的な分岐またはこれと同様の場合に同じ位置に分岐する結果となるかどうかが分かる前に、予測される分岐結果に従って、記憶領域からフェッチするプログラム命令が開始される可能性がある。そのような分岐予測メカニズムに関連する回路および複雑さのオーバーヘッドは、それらが著しい性能増加をもたらすことにより容認される。特に、正確に分岐結果を予測することは、要求された命令を正しいシーケンスでパイプラインフラッシュおよび再フェッチした結果、分岐命令を実行する前に推測的にフェッチされる妥当でないプログラム命令の可能性を減少させる。
分岐予測メカニズムの精度および効果を高めることが可能な技術は、プロセッサ性能の向上において非常に有利である。
一態様から見ると、本発明は、プログラム命令のシーケンスの制御の下にデータを処理するための装置であって、
複数の異なってエンコードされたタイプの分岐プログラム命令をデコードすることができる命令デコーダと、
前記プログラム命令のシーケンス内の分岐命令を検出し、且つ、分岐処理が、検出された分岐命令から生じるかどうかを予測することができる分岐予測部と、
を具備し、
前記複数の異なってエンコードされたタイプの分岐プログラム命令は、前記分岐予測部が予測する少なくとも1つの予測されるタイプの分岐命令と、前記分岐予測部による予測の対象とならないこと以外は、前記予測されるタイプの分岐命令の1つと同じ機能を提供する少なくとも1つの予測されないタイプの分岐命令とを有することを特徴とする装置を提供する。
前述した本技術は、いくつかの環境においては、不正確な予測に関する性能の不利益は、所定の分岐プログラム命令の予測を行わないことに関する性能の不利益より望ましくないと認識されている。また、現在の技術は、そのような状況は、プログラムがコード化されるとともに、分岐予測メカニズムによって予測されないタイプの分岐プログラム命令を提供する時より前に、しばしば予め認識される可能性があることを認めている。従って、システムは、分岐予測メカニズムによって検出されるとともに予測されるいくつかの分岐プログラム命令エンコーディングと、分岐予測メカニズムによって予測されないその他の分岐プログラム命令エンコーディングとを提供する。従って、プログラマまたはコンパイラは、どんな予測も、予測をしないよりも悪い不利益の結果となる予測誤りとなりそうな状況においては、予測されないタイプの分岐プログラム命令の使用を選択して良い。特定の分岐処理は、分岐予測メカニズムの仮定に反するランダムなふるまい、または系統的なふるまいのせいで、予測が困難な可能性がある。そのような状況における分岐予測をしないことの利点は様々であり、且つ、他の場合に有効に使用できる分岐予測メカニズム資源を単純に消費しないということを含む。他の例として、予測に不適当であることが分かっている分岐処理の予測を試みる分岐予測メカニズムの結果として、他の分岐処理に適用される予測は不正確であるということが挙げられる。
いくつかの好ましい実施形態では、分岐予測部は、過去のふるまいが格納された履歴に基づいて、所定の分岐が行われるかどうかを示す分岐履歴データを格納することができる分岐履歴バッファを具備する。そのようなメカニズムは、不規則であると分かっている分岐処理の予測および追跡を試みることによる有効性が無く(例えば、分岐結果のパターンを正確に特定することができない)、従って、本技術は、分岐履歴バッファが、予測されないタイプの分岐処理に関連するデータを格納しないように、動作しても良い。
他の好ましい実施形態は、以前に遭遇した分岐処理の分岐ターゲットアドレスを格納するための分岐ターゲットバッファメモリを用いる。そのような分岐ターゲットバッファメモリの容量は有限であり、不正確に予測されることが分かっているタイプの分岐処理にこの容量を消費することは、正確に予測される他の分岐処理のためにそのような容量を使用することを不可能にする。従って、分岐ターゲットバッファメモリは、予測されない分岐処理に関連するデータを格納しないように配置される。
分岐ターゲットバッファメモリの持つアクセスポートは典型的に有限数であるということ、および、予測されない方が良いタイプの分岐の関連データへのアクセスを試みるこれらのアクセスポートの1つを消費することは、その時フェッチされる可能性があり且つ有効にそのような予測の対象となる可能性がある他の分岐命令が、このアクセスポートを使用することを不可能にするという、分岐ターゲットバッファメモリの更なる制約となる。
予測されるタイプおよび予測されないタイプへ落とし込まれた異なるタイプの分岐命令は、様々な異なる形式である可能性があるということが理解される。しかしながら、予測されない分岐命令の形式は、命令セットにおける変化を補足的に示すものであることが好ましい。変更が示されている補足的な命令セットが存在しない時、この分岐命令の区別された特徴は、それ以外の点では冗長であるとともに、分岐予測メカニズムがそのようなタイプの分岐命令に使用されるべきでないと伝えるために効果的に再利用されうるので、そのような分岐命令における非予測特性が、このタイプの命令に載ることによって利益をもたらす。
好ましい実施形態では、予測されないタイプの分岐命令は、そのターゲットアドレスを格納するレジスタへの間接参照を使用して、そのターゲットアドレスを指定するタイプの分岐命令を含む。分岐ターゲットへの間接参照を使用することは、ターゲットアドレスへの直接表現を利用する命令と比較して、正確に予測する確率が低くなる傾向を示す。分岐ターゲットが変化しそうであり、それゆえ、これが、まさに正確な予測がされそうにない状況のタイプである時には、典型的に間接参照が使われる。
他の態様から見ると、本発明は、プログラム命令のシーケンスの制御の下にデータを処理するための装置であって、
複数の異なってエンコードされたタイプの分岐プログラム命令をデコードすることができる命令デコーダ手段と、
前記プログラム命令のシーケンス内の分岐命令を検出し、且つ、分岐処理が、検出された分岐命令から生じるかどうかを予測することができる分岐予測手段と、
を具備し、
前記複数の異なってエンコードされたタイプの分岐プログラム命令は、前記分岐予測手段が予測する少なくとも1つの予測されるタイプの分岐命令と、前記分岐予測手段による予測の対象とならないこと以外は、前記予測されるタイプの分岐命令の1つと同じ機能を提供する少なくとも1つの予測されないタイプの分岐命令とを有することを特徴とする装置を提供する。
更なる態様から見ると、本発明は、プログラム命令のシーケンスで制御されるデータ処理のための方法であって、
複数の異なるタイプのエンコードされた分岐プログラム命令をデコードするステップと、
分岐予測部を用いて前記プログラム命令のシーケンス内の分岐命令を検出し、且つ、分岐処理が、検出された分岐命令から生じるかどうかを予測するステップと、
を具備し、
前記複数の異なるタイプのエンコードされた分岐プログラム命令は、前記分岐予測部が予測する少なくとも1つの予測されるタイプの分岐命令と、前記分岐予測部による予測の対象とならないこと以外は、前記予測されるタイプの分岐命令の1つと同じ機能を提供する少なくとも1つの予測されないタイプの分岐命令とを有することを特徴とする方法を提供する。
更なる態様から見ると、本発明は、プログラム命令のシーケンスの制御の下にデータを処理するためのデータ処理装置を制御することができるコンピュータプログラムを運搬するコンピュータプログラムキャリアであって、前記データ処理装置は、前記プログラム命令のシーケンス内の分岐命令を検出するとともに、分岐処理が、検出された分岐命令に起因するかどうかを予測することができる分岐予測部を具備し、
前記コンピュータプログラムは、
複数の異なってエンコードされたタイプの分岐プログラム命令と、
前記分岐予測部が予測する少なくとも1つの予測されるタイプの分岐命令と、
前記分岐予測手段による予測の対象とならないこと以外は、前記予測されるタイプの分岐命令の1つと同じ機能を提供する少なくとも1つの予測されないタイプの分岐命令とを含むことを特徴とするコンピュータプログラムキャリアを提供する。
補足的な態様から見ると、本発明は、複数の異なってエンコードされたタイプの分岐プログラム命令を有するプログラム命令のシーケンスの制御の下にデータを処理するためのデータ処理装置を制御するコンピュータプログラムをコンパイルするためのコンパイラであって、前記データ処理装置は、前記プログラム命令のシーケンス内の分岐命令を検出するとともに、分岐処理が、検出された分岐命令に起因するかどうかを予測することができる分岐予測部を具備し、
前記分岐予測部が予測をする少なくとも1つの予測されるタイプの分岐命令と、
前記分岐予測手段による予測の対象とならないこと以外は、前記予測されるタイプの分岐命令の1つと同じ機能を提供する少なくとも1つの予測されないタイプの分岐命令と、
を生成することができることを特徴とするコンパイラを提供する。
コンピュータプログラムをコンパイルするためのコンパイラは、自身で、プログラマによって提供された情報を、識別するまたは使用することによって、本技術を有益に利用しても良いことが理解される。ここで、それらの分岐処理は、それらの正確な予測を生じない傾向があり、それゆえ、それらが生成するコード内にそれらの分岐処理を表す、予測されるタイプの分岐命令よりむしろ予測されないタイプの分岐命令が使用される。
本発明の上述およびその他の目的、特徴、および利点は、添付図面と関連して読まれる例示的な実施形態である以下の詳細な説明から明らかになる。
図1は、分岐予測メカニズムを組み込んだプロセッサの概要図である。
図2は予測される分岐命令タイプと予測されない分岐命令タイプとを有し、異なってエンコードされた多くの分岐命令の概要図である。
図3は、予測データでの分岐予測メカニズムのポピュレーションを図式的に説明するフローチャートである。
図1は、所望のデータ処理動作を行うためにデコーダ12によって生じる制御信号の制御下で動作するレジスタファイル4と乗算器6とシフタ8と加算器10とのような標準的なデータ処理要素を具備するプロセッサ2を示す。命令フェッチユニット14によってメモリ(図示せず)からフェッチされた命令は、命令パイプライン16に供給され、それに沿って進行することにより、標準パイプライン処理原理に従って、デコードされるとともに実行される。
前記プロセッサ2は、分岐予測メカニズムを具備し、例示的な本実施形態において、以前遭遇した予測されるタイプの分岐命令の結果となるパターンと、ならないパターンとを格納するための分岐履歴バッファ18を具備する。また、前記分岐予測メカニズムは、処理されたことがある、以前に遭遇した予測されるタイプの分岐命令に関連する分岐ターゲットアドレスを格納するための分岐ターゲットバッファ20を具備する。前記命令フェッチユニット14は、命令を受信する時に、以前に遭遇したことのある分岐ターゲットアドレスが格納された配列にインデックスを付けるために用いられる分岐ターゲットバッファ20へ、命令アドレスを送信する。コンテントアドレサブルメモリは、以前に遭遇した分岐命令のアドレスを格納するのに用いられ、現在フェッチされた命令からのアドレスが適用される時に、もし、現在フェッチされた命令のアドレスが、分岐命令が以前見つかった格納されたアドレスに対応するならば、1ヒットが生成される。そのようなヒットが発生すると、分岐ターゲットバッファは、前記フェッチユニット14へ、その分岐命令の分岐ターゲットアドレスを返す。また、この時、分岐履歴バッファ18は、以前に処理された分岐または処理されなかった分岐の検出されたパターンに従い、以前に見られたふるまいに従って、たった今認識された分岐命令は、これまで検出されてきた結果、処理されるかどうかを決定するためにアクセスされる。もし、分岐履歴バッファが、遭遇している分岐命令が処理されるという予測を示す場合、その後、分岐ターゲットバッファ20によって返された分岐ターゲットアドレスは、分岐ターゲットバッファ20によって示されたアドレスからの分岐予測に従うフェッチング命令を開始するために、命令フェッチユニット14によって使用されても良い。
これらの分岐予測メカニズムそれ自身は既知であり、且つ、本技術に従う異なったタイプの分岐予測メカニズムが使われても良いことは、十分に理解される。
分岐命令が、命令パイプラインの末端に達するとともに、そこから廃棄されるべきである時に、分岐予測アップデート回路22は、今、適切に実行されている分岐命令の実際の結果に従って、分岐予測メカニズム14,18,20をアップデートするように動作する。命令デコーダ12は、複数の異なるエンコードされたタイプの分岐プログラム命令に応答する。これらのタイプの分岐プログラム命令の中には、分岐予測メカニズム14,18,20による予測の対象となる予測される命令も存在する。加えて、実行される分岐処理が、分岐予測メカニズム14,18,20による予測の対象とならない時、且つ、分岐結果情報で分岐履歴バッファ18または分岐ターゲットバッファ20のどちらのアップデート動作も行わない時に動作する間の分岐命令のエンコーディングもまた存在する。命令ストリーム内で出現し、且つ、予測の対象とならない時、そのような予測されない分岐命令は、分岐予測メカニズム14,18,20によって格納された予測データをアップデートしないので、分岐予測メカニズムに検出されることがない。予測を誤る可能性があると分かっている分岐命令の予測を試みない方が良い理由の一例は、分岐ターゲットバッファ20には単一のアクセスポートしかなく、それゆえ、もし、このアクセスポートが、予測を誤りそうな分岐の関連情報へアクセスを試みて不必要に占有されているならば、このことは首尾よく正確に予測できる分岐命令のための別のアクセスの妨害となる可能性がある、ということにおいて説明される。さらに、それらが、首尾よく予測されそうにない分岐命令の関連情報を格納するために使用されるのであれば、分岐予測メカニズムの有限な格納資源の浪費である。その誤った予測は、前述の履歴データを混乱させるとともに、全体的な予測の精度を下げる可能性があるという更なる要因となるので、データから除去される、例えば、分岐履歴バッファ18の、処理された/処理されなかった分岐履歴データから除去される方が良い。
図2は、ARM Limited Cambridge Englandによって設計されたARMプロセッサのARM命令セット構造に従う、5つの異なるエンコーディングタイプの分岐命令を説明している。これらの異なってエンコードされたタイプの分岐命令のうち最初の4つが、分岐予測対象となる予測される分岐命令である。最後のタイプは、予測されない分岐命令タイプであるとともに、予測を誤りそうな状況において、(明らかにプログラマの制御下であるか、または、コンパイラによって自動生成されるかどちらかの)プログラム内で使用できる。この予測されない分岐命令タイプは、予測の対象とならず、それゆえ、不必要に分岐予測メカニズムの性能を落とすことがない。予測されない分岐命令タイプは、レジスタRmを介して分岐ターゲットへの間接参照を使用している本実施形態におけるものであることが理解される。分岐ターゲットへのそのような間接参照は、高いレベルの予測誤りが発生する状況において、適当に使用される傾向がある。この例における予測されない分岐命令BXJは、予測されないヒント情報と異なり、予測されるBX命令と同じ機能を提供する。図2において説明される特定の命令は、本技術の対象となる分岐命令の一例にすぎず、異なる命令が、異なるプロセッサ構造においてまたはARMプロセッサ構造内において使用される可能性があることが理解される。
図3は、格納された予測データのアップデートを図式的に示すフローチャートである。ステップ22において、命令はパイプラインから廃棄される。そして、ステップ24において、回収された分岐命令が予測されるタイプであるかどうかを決定する。もし、分岐命令が予測されるタイプでないならば処理を終了する。もし、分岐命令が予測されるタイプであるならば、ステップ26において、分岐履歴バッファをアップデートするとともに、ステップ28において、分岐ターゲットバッファをアップデートする。予測されないタイプの分岐命令は、分岐予測メカニズム14,18,20にどんなアップデートも生じさせないので、それらは、遭遇した時に、これらのメカニズムによって無視されるとともに、分岐予測メカニズムによる分岐予測の対象とならない。これらの難しい分岐のふるまいを予測するのに有効な能力を持ち、それゆえ前述の有用な両立経路を提供する分岐予測メカニズムを伴ったプロセッサによって、将来、予測されないヒント情報を無視することができる。
前述のように、予測されないタイプの分岐命令は、特定の分岐処理が予測誤りを発生する傾向があることを知っているプログラマによって、手動でプログラムコード内に挿入されても良い。あるいは、これらの予測されないタイプの分岐命令は、本技術に従うコンパイラによっては自動的または半自動的に展開されても良い。プログラマは、情報が、特定の分岐処理が予測を誤る傾向があることを示す情報で高レベルコードに注釈を付けるとともに、コンパイラが、このヒント情報に応答することにより、その分岐処理のために予測されないタイプの分岐命令を使用しても良い。代替手段として、または加えて、コンパイラが、分岐予測誤りがしばしば発生することを示す傾向がある特性を提示する高レベルプログラム命令コードのシーケンスを自動的に検出しても良い。そのような特性の例は、入れ子になったDLLか、オブジェクト指向言語内の未解決の手続き的コールかで発生する可能性があるような、多くの間接的な分岐参照である。コンパイラが、そのような特性を検出すると、分岐予測メカニズム14,18,20によって無視される、予測されないタイプの分岐命令を使用しても良い。コンパイラ内で使用することができる更なる技術は、それが生成するコンパイルされたコードをエミュレート実行し、そのコードのふるまいの分析表をまとめることにより、ある分岐が比較的多くの予測誤りを生じているかどうかを特定することでも良い。もし、そのような予測を誤る分岐が発生しているならば、それらの分岐を表現するプログラム命令を、予測されないタイプのプログラム命令に置き換えても良い。
本発明を例示する実施形態は、添付図面を参照してここに詳細に説明されているが、本発明は、添付の特許請求の範囲によって定義されるように、それらの厳密な実施形態に限定されず、且つ、当業者によって本発明の範囲と趣旨から逸脱することのない様々な変化および変更がもたらされることが可能であることが理解されるものでなければならない。
分岐予測メカニズムを組み込んだプロセッサの概要図である。 予測される分岐命令タイプと予測されない分岐命令タイプとを有し、異なってエンコードされた多くの分岐命令の概要図である。 予測データでの分岐予測メカニズムのポピュレーションを図式的に説明するフローチャートである。
符号の説明
2 プロセッサ
4 レジスタファイル
6 乗算器
8 シフタ
10 加算器
12 デコーダ
14 命令フェッチユニット(分岐予測メカニズム)
16 命令パイプライン
18 分岐履歴バッファ(分岐予測メカニズム)
20 分岐ターゲットバッファ(分岐予測メカニズム)
22 分岐予測アップデート回路

Claims (8)

  1. プログラム命令のシーケンスの制御の下にデータを処理するための装置であって、
    複数の異なってエンコードされたタイプの分岐プログラム命令をデコードすることができる命令デコーダと、
    前記プログラム命令のシーケンス内の分岐命令を検出し、且つ、分岐処理が、検出された分岐命令から生じるかどうかを予測することができる分岐予測部と、
    を具備し、
    前記複数の異なってエンコードされたタイプの分岐プログラム命令は、前記分岐予測部が予測する少なくとも1つの予測されるタイプの分岐命令と、前記分岐予測部による予測の対象とならないこと以外は、前記予測されるタイプの分岐命令の1つと同じ機能を提供する少なくとも1つの予測されないタイプの分岐命令とを有し、
    前記分岐予測部は、以前に遭遇した所定の分岐命令が、分岐処理を生じる時か生じない時かの、予測されるタイプの前記所定の分岐命令を示す分岐履歴データを格納することができる分岐履歴バッファを具備し、
    前記分岐予測部は、予測されないタイプの分岐命令のための分岐履歴データを格納せず、
    前記少なくとも1つの予測されないタイプの分岐命令は、分岐処理に加えて、実行される命令セットから前記装置にサポートされない命令セットへの命令セットの変更を示すタイプの分岐命令を含み、前記命令セットの変更を示す分岐命令は、前記分岐予測部が前記タイプの分岐命令に使用されるべきでないことを示すことに再利用されることを特徴とする装置。
  2. 前記分岐予測部は、予測されるタイプの分岐命令のうち以前に遭遇した分岐命令の分岐ターゲットアドレスを格納することができる分岐ターゲットバッファメモリを具備し、
    前記装置は、前記分岐ターゲットバッファメモリに、予測されないタイプの分岐命令のうち以前に遭遇した分岐命令の分岐ターゲットアドレスを格納しない、ように構成されていることを特徴とする請求項1に記載の装置。
  3. 前記少なくとも1つの予測されないタイプの分岐命令は、前記分岐ターゲットアドレスを格納するレジスタへの間接参照を使用して前記分岐ターゲットアドレスを指定するタイプの分岐命令を含むことを特徴とする請求項1に記載の装置。
  4. プログラム命令のシーケンスの制御の下にデータを処理するための装置であって、
    複数の異なってエンコードされたタイプの分岐プログラム命令をデコードすることができる命令デコーダ手段と、
    前記プログラム命令のシーケンス内の分岐命令を検出し、且つ、分岐処理が、検出された分岐命令から生じるかどうかを予測することができる分岐予測手段と、
    を具備し、
    前記複数の異なってエンコードされたタイプの分岐プログラム命令は、前記分岐予測手段が予測する少なくとも1つの予測されるタイプの分岐命令と、前記分岐予測手段による予測の対象とならないこと以外は、前記予測されるタイプの分岐命令の1つと同じ機能を提供する少なくとも1つの予測されないタイプの分岐命令とを有し、
    前記分岐予測手段は、以前に遭遇した所定の分岐命令が、分岐処理を生じる時か生じない時かの、予測されるタイプの前記所定の分岐命令を示す分岐履歴データを格納することができる分岐履歴バッファ手段を具備し、
    前記分岐予測手段は、予測されないタイプの分岐命令のための分岐履歴データを格納せず、
    前記少なくとも1つの予測されないタイプの分岐命令は、分岐処理に加えて、実行される命令セットから前記装置にサポートされない命令セットへの命令セットの変更を示すタイプの分岐命令を含み、前記命令セットの変更を示す分岐命令は、前記分岐予測手段が前記タイプの分岐命令に使用されるべきでないことを示すことに再利用されることを特徴とする装置。
  5. プログラム命令のシーケンスの制御の下に装置内でデータを処理するための方法であって、
    複数の異なってエンコードされたタイプの分岐プログラム命令をデコードするステップと、
    分岐予測部を用いて前記プログラム命令のシーケンス内の分岐命令を検出し、且つ、分岐処理が、検出された分岐命令から生じるかどうかを予測するステップと、
    を具備し、
    前記複数の異なってエンコードされたタイプの分岐プログラム命令は、前記分岐予測部が予測する少なくとも1つの予測されるタイプの分岐命令と、前記分岐予測部による予測の対象とならないこと以外は、前記予測されるタイプの分岐命令の1つと同じ機能を提供する少なくとも1つの予測されないタイプの分岐命令とを有し、
    前記分岐予測部は、以前に遭遇した所定の分岐命令が、分岐処理を生じる時か生じない時かの、予測されるタイプの前記所定の分岐命令を示す分岐履歴データを格納することができる分岐履歴バッファを具備し、
    前記分岐予測部は、予測されないタイプの分岐命令のための分岐履歴データを格納せず、
    前記少なくとも1つの予測されないタイプの分岐命令は、分岐処理に加えて、実行される命令セットから前記装置にサポートされない命令セットへの命令セットの変更を示すタイプの分岐命令を含み、前記命令セットの変更を示す分岐命令は、前記分岐予測部が前記タイプの分岐命令に使用されるべきでないことを示すことに再利用されることを特徴とする方法。
  6. プログラム命令のシーケンスの制御の下にデータを処理するためのデータ処理装置を制御することができるコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
    前記データ処理装置は、前記プログラム命令のシーケンス内の分岐命令を検出するとともに、分岐処理が、検出された分岐命令に起因するかどうかを予測することができる分岐予測部を具備し、
    前記コンピュータプログラムは、
    複数の異なってエンコードされたタイプの分岐プログラム命令と、
    前記分岐予測部が予測する少なくとも1つの予測されるタイプの分岐命令と、
    前記分岐予測部による予測の対象とならないこと以外は、前記予測されるタイプの分岐命令の1つと同じ機能を提供する少なくとも1つの予測されないタイプの分岐命令と、
    以前に遭遇した所定の分岐命令が、分岐処理を生じる時か生じない時かの、予測されるタイプの前記所定の分岐命令を示す分岐履歴データを分岐履歴バッファに格納するとともに、予測されないタイプの分岐命令のための分岐履歴データを分岐履歴バッファに格納しないようにするための1つ以上の命令と、
    を含み、
    前記少なくとも1つの予測されないタイプの分岐命令は、分岐処理に加えて、実行される命令セットから前記データ処理装置にサポートされない命令セットへの命令セットの変更を示すタイプの分岐命令を含み、前記命令セットの変更を示す分岐命令は、前記分岐予測部が前記タイプの分岐命令に使用されるべきでないことを示すことに再利用されることを特徴とする記録媒体。
  7. 複数の異なってエンコードされたタイプの分岐プログラム命令を有するプログラム命令のシーケンスの制御の下にデータを処理するためのデータ処理装置を制御するコンピュータプログラムをコンパイルするためのコンパイラであって、
    前記データ処理装置は、前記プログラム命令のシーケンス内の分岐命令を検出するとともに、分岐処理が、検出された分岐命令に起因するかどうかを予測することができる分岐予測部を具備し、
    前記分岐予測部が予測をする少なくとも1つの予測されるタイプの分岐命令と、
    前記分岐予測部による予測の対象とならないこと以外は、前記予測されるタイプの分岐命令の1つと同じ機能を提供する少なくとも1つの予測されないタイプの分岐命令と、
    を生成することができ、
    前記分岐予測部は、以前に遭遇した所定の分岐命令が、分岐処理を生じる時か生じない時かの、予測されるタイプの前記所定の分岐命令を示す分岐履歴データを格納することができる分岐履歴バッファを具備し、
    前記分岐予測部は、予測されないタイプの分岐命令のための分岐履歴データを格納せず、
    前記少なくとも1つの予測されないタイプの分岐命令は、分岐処理に加えて、実行される命令セットから前記データ処理装置にサポートされない命令セットへの命令セットの変更を示すタイプの分岐命令を含み、前記命令セットの変更を示す分岐命令は、前記分岐予測部が前記タイプの分岐命令に使用されるべきでないことを示すことに再利用されることを特徴とするコンパイラ。
  8. 前記コンパイラは、分岐処理が前記分岐予測部によって正しく予測されないことを示す指示に応答して、前記分岐予測部が予測をしない、前記予測されないタイプの分岐命令を使用して前記分岐処理をコンパイルすることを特徴とする請求項に記載のコンパイラ。
JP2006114589A 2005-05-31 2006-04-18 分岐予測コントロール Active JP4727491B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/139,984 2005-05-31
US11/139,984 US7725695B2 (en) 2005-05-31 2005-05-31 Branch prediction apparatus for repurposing a branch to instruction set as a non-predicted branch

Publications (3)

Publication Number Publication Date
JP2006338656A JP2006338656A (ja) 2006-12-14
JP2006338656A5 JP2006338656A5 (ja) 2010-05-13
JP4727491B2 true JP4727491B2 (ja) 2011-07-20

Family

ID=36425044

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006114589A Active JP4727491B2 (ja) 2005-05-31 2006-04-18 分岐予測コントロール

Country Status (4)

Country Link
US (1) US7725695B2 (ja)
JP (1) JP4727491B2 (ja)
CN (1) CN100530081C (ja)
GB (1) GB2426842B (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8521996B2 (en) * 2009-02-12 2013-08-27 Via Technologies, Inc. Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution
US8131984B2 (en) * 2009-02-12 2012-03-06 Via Technologies, Inc. Pipelined microprocessor with fast conditional branch instructions based on static serializing instruction state
US9891922B2 (en) 2012-06-15 2018-02-13 International Business Machines Corporation Selectively blocking branch prediction for a predetermined number of instructions
US20140115257A1 (en) * 2012-10-22 2014-04-24 Advanced Micro Devices, Inc. Prefetching using branch information from an instruction cache
GB2506462B (en) * 2013-03-13 2014-08-13 Imagination Tech Ltd Indirect branch prediction
US9639370B1 (en) * 2015-12-15 2017-05-02 International Business Machines Corporation Software instructed dynamic branch history pattern adjustment
US10423510B2 (en) * 2017-10-04 2019-09-24 Arm Limited Apparatus and method for predicting a redundancy period
US11822923B1 (en) * 2018-06-26 2023-11-21 Advanced Micro Devices, Inc. Performing store-to-load forwarding of a return address for a return instruction
US11513801B2 (en) * 2018-09-10 2022-11-29 Advanced Micro Devices, Inc. Controlling accesses to a branch prediction unit for sequences of fetch groups
US20210149676A1 (en) * 2019-11-14 2021-05-20 Higon Austin R&D Center Corporation Branch Prediction Method, Branch Prediction Unit and Processor Core

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08320788A (ja) * 1995-05-24 1996-12-03 Mitsubishi Electric Corp パイプライン方式プロセッサ
US20020073301A1 (en) * 2000-12-07 2002-06-13 International Business Machines Corporation Hardware for use with compiler generated branch information
US20040003218A1 (en) * 2002-06-28 2004-01-01 Fujitsu Limited Branch prediction apparatus and branch prediction method

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2603626B2 (ja) * 1987-01-16 1997-04-23 三菱電機株式会社 データ処理装置
US5228131A (en) 1988-02-24 1993-07-13 Mitsubishi Denki Kabushiki Kaisha Data processor with selectively enabled and disabled branch prediction operation
US5333283A (en) 1991-10-29 1994-07-26 International Business Machines Corporation Case block table for predicting the outcome of blocks of conditional branches having a common operand
US5608886A (en) * 1994-08-31 1997-03-04 Exponential Technology, Inc. Block-based branch prediction using a target finder array storing target sub-addresses
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5721893A (en) 1996-05-14 1998-02-24 Hewlett-Packard Company Exploiting untagged branch prediction cache by relocating branches
US6282663B1 (en) * 1997-01-22 2001-08-28 Intel Corporation Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor
US6601161B2 (en) * 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US6859875B1 (en) 2000-06-12 2005-02-22 Freescale Semiconductor, Inc. Processor having selective branch prediction
US6823447B2 (en) * 2001-03-01 2004-11-23 International Business Machines Corporation Software hint to improve the branch target prediction accuracy
US7000095B2 (en) 2002-09-06 2006-02-14 Mips Technologies, Inc. Method and apparatus for clearing hazards using jump instructions
US7595752B2 (en) * 2002-10-02 2009-09-29 Global Locate, Inc. Method and apparatus for enhanced autonomous GPS
JP2005078234A (ja) * 2003-08-29 2005-03-24 Renesas Technology Corp 情報処理装置
US20050216713A1 (en) * 2004-03-25 2005-09-29 International Business Machines Corporation Instruction text controlled selectively stated branches for prediction via a branch target buffer

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08320788A (ja) * 1995-05-24 1996-12-03 Mitsubishi Electric Corp パイプライン方式プロセッサ
US5740418A (en) * 1995-05-24 1998-04-14 Mitsubishi Denki Kabushiki Kaisha Pipelined processor carrying out branch prediction by BTB
US20020073301A1 (en) * 2000-12-07 2002-06-13 International Business Machines Corporation Hardware for use with compiler generated branch information
US20040003218A1 (en) * 2002-06-28 2004-01-01 Fujitsu Limited Branch prediction apparatus and branch prediction method
JP2004038323A (ja) * 2002-06-28 2004-02-05 Fujitsu Ltd 分岐予測装置および分岐予測方法

Also Published As

Publication number Publication date
GB2426842B (en) 2009-07-29
CN1873611A (zh) 2006-12-06
GB2426842A (en) 2006-12-06
GB0606560D0 (en) 2006-05-10
US7725695B2 (en) 2010-05-25
US20060271770A1 (en) 2006-11-30
CN100530081C (zh) 2009-08-19
JP2006338656A (ja) 2006-12-14

Similar Documents

Publication Publication Date Title
JP4727491B2 (ja) 分岐予測コントロール
EP3306466B1 (en) An instruction sequence buffer to store branches having reliably predictable instruction sequences
TWI386850B (zh) 用於主動式分支目標位址快取記憶體管理之方法以及裝置
EP0938044B1 (en) Method and apparatus for reducing interference in a branch history table of a microprocessor
CN101815984B (zh) 错误的推测性更新的链接栈修复
KR970029034A (ko) 프로세서내 인스트럭션 실행 방법 및 시스템과 데이타 처리 시스템
JP5579694B2 (ja) 復帰スタックを管理する方法および装置
WO2019236294A1 (en) Storing incidental branch predictions to reduce latency of misprediction recovery
EP3887942B1 (en) Loop exit predictor
US20040117606A1 (en) Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information
JP5154763B2 (ja) 複数の命令セットデータ処理システム内の条件付分岐命令エンコーディング
JP4213181B2 (ja) 分岐予測装置、その方法、及びプロセサ
US8521999B2 (en) Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history
US7747845B2 (en) State machine based filtering of non-dominant branches to use a modified gshare scheme
US10108419B2 (en) Dependency-prediction of instructions
US20030204705A1 (en) Prediction of branch instructions in a data processing apparatus
US7130991B1 (en) Method and apparatus for loop detection utilizing multiple loop counters and a branch promotion scheme
CN113076090B (zh) 一种面向边信道安全防护的循环语句执行方法及装置
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
US11334495B2 (en) Cache eviction
US20060112262A1 (en) Branch prediction of unconditionally executed branch instructions
JP4113227B2 (ja) 分岐予測機構を有する情報処理装置
JP2006004234A (ja) マイクロプロセッサにおける命令実行制御方式
JP2014059665A (ja) マイクロコンピュータ及びマイクロコンピュータにおける命令処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100331

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20100331

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20100406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100518

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110127

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: 20110405

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110413

R150 Certificate of patent or registration of utility model

Ref document number: 4727491

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140422

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250