JP2013534004A - 統合分岐先・述語予測 - Google Patents

統合分岐先・述語予測 Download PDF

Info

Publication number
JP2013534004A
JP2013534004A JP2013515312A JP2013515312A JP2013534004A JP 2013534004 A JP2013534004 A JP 2013534004A JP 2013515312 A JP2013515312 A JP 2013515312A JP 2013515312 A JP2013515312 A JP 2013515312A JP 2013534004 A JP2013534004 A JP 2013534004A
Authority
JP
Japan
Prior art keywords
predicate
predicted
prediction
branch destination
instruction
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
JP2013515312A
Other languages
English (en)
Other versions
JP5707011B2 (ja
Inventor
シー. バーガー ダグラス
ダブリュー. ケックラー ステファン
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.)
University of Texas System
Original Assignee
University of Texas System
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 University of Texas System filed Critical University of Texas System
Publication of JP2013534004A publication Critical patent/JP2013534004A/ja
Application granted granted Critical
Publication of JP5707011B2 publication Critical patent/JP5707011B2/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 or 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

実施形態は、統合分岐先・述語予測を使用する、プログラムの実行中の述語および分岐先の予測に関連付けられる方法、装置、システム、およびコンピュータ可読媒体を提供する。予測は、プログラム内の命令ブロック内の述語およびブロック間の分岐を表す1つまたは複数の予測制御フローグラフを使用してなされ得る。予測制御フローグラフは、ツリーとして構築されることができ、それによって、グラフ内の各ノードは述語命令に関連付けられ、各葉は別のブロックにジャンプする分岐先に関連付けられる。ブロックの実行中、予測生成器は制御点履歴をとって予測を生成することができる。ツリーを通じて予測によって示唆される経路を追って、述語値および分岐先の両方が予測されることができる。他の実施形態が説明および特許請求され得る。

Description

実行中に条件コンピュータ命令の動的予測を改善するために様々な技法が利用可能である。条件命令の予測は多くの場合、その実行が当該条件命令の結果に依存している場合がある将来の命令をより良好に選択するために、またはそれらの将来の命令の実行を加速させるために使用される。予測技法の中でも、分岐予測および述語化が使用されることがある。分岐予測は多くの場合、プログラム内の条件命令が2つの可能性のある分岐ロケーション(または「ターゲット」)につながるようにコンパイルされる場合に使用される。分岐予測器において使用される分岐先予測は、非条件的ジャンプ先を特定するために使用される場合もある。この技法において、現在の条件命令の実行前にとられた分岐選択の履歴が、一方の分岐または他方の分岐が実行のためにスケジューリングされるべきかを予測するために検査され得る。
予測に際して、1つの条件命令に関連付けられる命令のセットは、ブール値のような述語値に関連付けられるようにコンパイルされ、この述語が一般的には別個に評価される。この技法においては、(条件の値に基づく)2つのセットの命令が別個に評価され、その関連付けられる述語値が評価後の結果でなかった命令からの結果が捨てられる、または破棄され得る。述語値の履歴を入力として使用して予測技法を操作することによって、述語値自体が予測される場合がある。
しかしながら、これらの技法を使用する現行のシステム、特に命令を組織化して命令ブロックにするシステムには複数の問題がある。分岐の結果またはジャンプ先のいずれを予測するときにおいても、分岐予測を単独で使用することでは、多くの場合述語化の形態をとる、命令のブロック内の制御命令を同時予測するための機能を提供することはできない。逆に、述語化は、ブロック境界を越えるジャンプに適していない。述語の述語化を順次処理し得る既存の述語化技法には、後に続く述語を有する命令が先行して発生する述語を待つように強制されるため、オーバヘッドが追加されるという問題がある。これらの技法を統合しようと試みるシステムでは、分岐予測および述語予測を使用することによって、複数のデータ構造が必要とされ、相当の実行オーバヘッドが発生する。さらに、現行のシステムでは、分岐は述語を介在させるという知識なしにブロック間で予測され、より疎な命令履歴を用いて予測されるこれらの分岐には、予測精度が乏しいという問題がある可能性がある。
一実施形態では、コンピュータ命令の実行時間予測のためのコンピュータ実装方法は、コンピューティングデバイス上で、制御点履歴に少なくとも部分的に基づいて統合述語・分岐先予測を生成することと、コンピューティングデバイス上で、統合述語・分岐先予測に少なくとも部分的に基づいて、1つまたは複数の予測述語付き命令を実行することとを含むことができる。本方法は、コンピューティングデバイス上で、統合述語・分岐先予測に少なくとも部分的に基づいて、予測分岐先ロケーションにおいて実行を進行することをさらに含むことができる。
別の実施形態では、コンピュータ命令の予測ランタイム実行のためのシステムは、1つまたは複数のコンピュータプロセッサと、述語および/または分岐の履歴を入力として受け入れるとともに、1つまたは複数のプロセッサによる動作に応答して、受け入れられた履歴に基づいて統合述語・分岐先予測を生成するように構成される統合予測生成器とを含むことができる。システムは、1つまたは複数のプロセッサによる動作に応答して、1つまたは複数のプロセッサを制御し、統合述語・分岐先予測から取得される予測述語値に基づいて1つまたは複数の述語付き命令を実行するとともに、予測分岐先ロケーションにおいてフェッチされた命令の実行を進行するように構成される命令フェッチ・実行制御部をも含むことができる。予測分岐先ロケーションは、予測述語値に少なくとも部分的に基づくことができる。
別の実施形態では、製造品は、有形コンピュータ可読媒体と、有形コンピュータ可読媒体上に記憶される複数のコンピュータ実行可能命令を含むことができる。コンピュータ実行可能命令は、装置による実行に応答して、装置に、述語付き命令および1つまたは複数の分岐先を有する第1のコードブロックに対して命令の実行をスケジューリングするための動作を実行させることができる。動作は、以前に実行された1つまたは複数の命令に少なくとも部分的に基づいて、統合述語・分岐先予測を特定することを含むことができる。予測は、第1のコードブロック内の述語付き命令に対する1つまたは複数の予測述語値を含むことができる。動作は、コンピューティングデバイス上で、予測述語値に少なくとも部分的に基づいて、ブロック内の述語付き命令の中から1つまたは複数の予測述語付き命令を実行することをも含むことができる。動作は、予測述語付き命令に基づいて、第2のコードブロックを指示する予測分岐先ロケーションを予測することと、第2のコードブロックでの実行を継続することとをも含むことができる。
上記の概要は例示のみを目的とし、決して限定を意図するものではない。上述の例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴が図面および以下の詳細な説明を参照することによって明らかとなろう。
統合分岐先・述語予測システムの選択される構成要素のブロック図である。 統合分岐先・述語予測に基づく命令予測のブロック図である。 プログラムコードからの命令ブロックの生成の連続するレベルのブロック図である。 コードブロックに対する予測制御フローグラフのブロック図である。 統合分岐先・述語予測を利用するプログラムを生成するためのプロセスを示す図である。 統合分岐先・述語予測を使用して分岐先および述語を予測するためのプロセスを示す図である。 統合分岐先・述語予測を生成するためのプロセスを示す図である。 統合分岐先・述語予測に基づいて命令をスケジューリングするためのプロセスを示す図である。 上記で説明された方法の様々な態様を実施するように構成される例示的なコンピューティングデバイスを示す図である。 すべて本開示の様々な実施形態にしたがって分類される、上記で説明された方法の様々な態様を装置が実践することを可能にするように構成される命令を有する、例示的な製造品を示す図である。
以下の詳細な説明において、本記載の一部を形成する添付の図面を参照する。図面において、文脈が別途指示しない限り、同様の参照符号は一般的に、同様の構成要素を識別する。詳細な説明、図面、および特許請求の範囲において説明される例示的な実施形態は限定であるようには意図されない。他の実施形態を利用することができ、本明細書において提示される主題の精神または範囲から逸脱することなく、他の変更をなすことができる。本明細書において全般的に説明されており、図面において例示されているような本開示の態様は、広範な種々の構成において構成、置換、統合、分離、および設計されることができ、それらのすべてが本明細書において明確に予期されることは容易に理解されよう。
本開示は、とりわけ、統合分岐先・述語予測を使用した述語および分岐先の予測に関する方法、装置、システム、およびコンピュータ可読媒体を対象とする。
説明される実施形態は、コンピューティングデバイスによるプログラムの実行を促進するための、分岐先および述語の両方の予測のための統合された構造を使用することに関連付けられ得る技法、方法、装置、および製造品を含む。様々な実施形態において、これらの予測は、ブロック不可分アーキテクチャにおいて、またはプログラムを述語付き基本命令ブロックに分割する他のアーキテクチャにおいてなされ得る。他の実施形態では、本明細書において説明される技法は、分岐と述語とを混合する他のアーキテクチャにおいて利用され得る。様々な実施形態において、予測は、命令ブロック内の述語およびブロック間の分岐を表す1つまたは複数の制御フローグラフを使用してなされ得る。コンパイル中、プログラムは複数のブロックに分割され得、1つまたは複数の予測制御フローグラフが各ブロックに関連付けられるように作成される。予測制御フローグラフは、ツリーとして構築され得、それによって、グラフ内の各ノードが述語に関連付けられ、各エッジが述語付き命令に関連付けられ、各葉が別のブロックにジャンプする制御命令に関連付けられる。したがって、ブロックの実行中、予測生成器は、最新のn個の述語のような制御点履歴をとり、予測を生成することができる。予測は、様々な実施形態において、制御フローグラフの様々なレベルに対する述語値のセットとして生成されることができ、したがって、予測はブロックの述語命令に対する予測を含むことができる。
これらの予測述語値を使用することによって、命令フェッチ・実行制御部は、いずれの述語に対して予測が適用されるかを判定するために、ツリーのトラバースにしたがった実行のために述語付き命令を予測およびスケジューリングすることができる。説明される実施形態は、予測述語値に沿ったグラフのトラバースが葉、それゆえ分岐先に通じるように、制御フローグラフを利用することもできる。様々な実施形態において、分岐先とは、ターゲット命令アドレスを生成する条件付き分岐および/または無条件分岐を指し得る。このトラバースを実行することによって、命令フェッチ・実行制御部は、分岐先、それゆえ、実行されるべき次のコードブロックを予測することができる。このように、本明細書において説明される実施形態は、単一の融合された予測を生成することを通じて、述語および分岐先の予測を統合することができる。これによって、従来技術のシステムおよび技法と比較してより低い電力および/またはより高い予測精度が提供され得る。
様々な実施形態において、予測生成は、並列予測生成技法を使用することを通じてより効率的になされ得る。並列予測生成は、同時期により低いレベルに対する可能な値も生成しながら、制御点履歴に基づいて第1の述語レベルに対する述語値を生成することによって実行されることができる。適切な数のレベルが操作された後、より高いレベルからの値が、より低いレベルに対する可能な値を絞り込むために使用されることができる。
一例として、予測生成器が10の述語制御点履歴長を有し、1つのブロックに対して3レベルの述語の予測を課せられるものと仮定する。予測生成器は、様々な実施形態において、第1の予測に対して10ビットの履歴を使用して検索を行うことができる。同時に、予測生成器は、第2のレベルの述語値を得るために、第1の検索の結果に対する2つの可能性とともに、最近の9ビットの履歴を使用して2つの検索を実行することができる。同時に、予測生成器は、第3の値に対する4つの検索を実行することができる。この同時生成の後、予測生成器は次いで、上位レベルの結果に基づいて特定の下位レベルの結果を選択し、残りを破棄することができる。この技法は、逐次化された生成システムよりも多くの予測値の検索を必要とする場合があるが、個々の述語値の生成が長い待ち時間を有するシナリオにおいては、この並列化技法は速度の向上を可能にすることができる。
図1は、様々な実施形態による、統合分岐先・述語予測システムの選択される構成要素のブロック図を示す。図1の図解において、コンパイラ110は、1つまたは複数の実行可能プログラムにコンパイルするために、1つまたは複数のプログラムファイル105を受信することができる。様々な実施形態において、コンパイラ110は、ブロック120のような、実行可能コード(以下、単に「コード」とも称される)の1つまたは複数のブロックを生成するように動作することができ、これらのブロックは、予測制御フローグラフ125のような、述語付き命令を表す制御フローグラフ、および、分岐129のような、グラフを接続する分岐に関連付けられている場合がある。様々な実施形態において、これらのブロックは不可分ブロックであり得る。
その後、これらのコードブロックは、ランタイム環境140内で実行されることができ、このランタイム環境は、下記により詳細に説明されることになる、統合分岐先・述語予測を使用して述語値および分岐先の予測を実行するように構成されることができる。示されているように、ランタイム環境140の一部として実行されることになる予測生成器150は、統合予測155のような統合分岐先・述語予測を生成するために、制御点履歴145のような制御点履歴を操作するように構成されることができる。様々な実施形態において、これらの制御点履歴は、過去の述語値、過去の分岐先値、またはその両方の組み合わせを含み得る。様々な実施形態において、予測生成器150は、全体的にまたは部分的に、制御点履歴に基づいて1つまたは複数の予測値を検索するルックアップテーブルとして実装され得る。加えて、予測生成器150は、予測生成のパフォーマンスを向上させるために、1つまたは複数の並列化検索(または他の述語値生成技法)を実行することができる。
その後、生成された統合予測155は、命令ブロック157に関する情報とともに、実行のために述語付き命令をマーキングするために、また、分岐コードブロックの実行をスケジューリングするために分岐先を予測するために、命令フェッチ・実行制御部160によって使用されることができる。様々な実施形態において、命令フェッチ・実行制御部160は、統合予測155に基づいて述語付き命令をスケジューリングするための命令スケジューラを備えることができる。様々な実施形態において、命令フェッチ・実行制御部160は、統合予測155に基づいてターゲットを予測し、そのターゲットに基づいて実行のために命令をフェッチするためのフェッチ制御ロジックを備えることができる。この予測生成および命令予測の具体例を下記にさらに説明する。様々な実施形態において、ランタイム環境140は、それ自体がコンパイラ110によって生成され得る、ランタイムマネージャまたは他の適切なソフトウェアによって提供され得る。
図2は、様々な実施形態による、統合分岐先・述語予測に基づく命令予測のブロック図を示す。図示されるように、示されている実施形態について、プログラムの実行は、分岐先210のような分岐先に通じる、述語付き命令200のような1つまたは複数の述語付き命令の実行の形態をとることができる。したがって、これらの分岐先は、関連付けられる述語付き命令とともに、実行されるべき次の命令ブロックを示す。様々な実施形態において、本発明において利用される統合分岐先・述語予測は、命令ブロックに対して、ブロック全体の述語値の相当量に関する値、およびそのブロックから出る分岐先を予測することが可能である。この予測のセットは、点線220が境界となっている領域内の例示的な命令およびターゲットによって示されている。この例示的な命令およびターゲットは、3つの予測述語値(3つの影付きの円)、それに続く分岐先(影付きの三角形)を含む。これらの予測を実行するための特定の技法を下記に説明する。
図3は、様々な実施形態による、プログラムコードからの命令ブロックの生成の連続するレベルのブロック図を示す。図3の部分(a)は、例示的なC言語型コードスニペットを示す。スニペットは2つの可能性、すなわち命令:1)「y++」および2)「y−−」に通じる「if(x>0)」のような条件を含む。コードは、「goto B2」のような、明白な分岐命令も含む。これらの分岐命令は、その分岐命令が実行される場合に分岐がとられるべきであることを示す。
図3の部分(b)は、コンパイル後のコードの中間表現を示す。特に、部分3(b)は、ブロック内の条件文がどのように述語付き命令として表現されているかを示す。このように、示されている例では、上記で論じられた「if(x>0)」条件の結果は、行「Pgt p0,r0,0」において述語p0として表現されている。この行において、レジスタr0内の値が0よりも大きいか否かを見るために比較され、その比較の真偽の結果が述語p0の値として保持される。
次に、2つの命令がこの述語に依存している可能性がある。第1は、「add_t<p0>r1,1」命令であり、これは、p0の値において述語化され、p0が「真」である場合に実行される加算演算である。同様に、「sub_f<p0>r1,1」は、p0述語が偽の値をとる場合にr1レジスタから1を減算する。換言すれば、本明細書において説明される技法およびシステムは、述語の実際の値が分かる前に述語付き命令のうちの1つがスケジューリングされることを可能にする、p0のような述語に対する予測値を提供し、それによって、可能性としてブロックの実行が加速される。
図3の部分(c)は、部分(b)の中間表現から、コンパイラ110のようなコンパイラによって生成され得る例示的な命令ブロックのセットを示す。特にブロック1によって示されているように、各ブロックは、分岐に通じ、したがって実行に別のブロックへジャンプするよう指示する、述語付き命令の分岐したセットを含み得る。したがって、ブロック1が実行されると、もう1つの述語付き命令が実行され、次いで、別のブロックへの分岐がとられる。分岐B3がとられる場合、実行はブロック3へジャンプする。様々な実施形態において、分岐はブロックが再び実行されるようにする場合があり、たとえば、分岐B1はブロック1の実行を改めて開始する。本明細書において説明されるように、様々な実施形態において、命令ブロックは予測制御フローグラフに関連付けられている。予測制御フローグラフは、命令フェッチ・実行制御部が、ブロック内でいずれの述語付き命令が予測され、実行のためにスケジューリングされるべきかだけでなく、いずれの分岐がとられる可能性が高いか、それゆえ、現在実行しているブロックを出たときにいずれのブロックの実行に進行すべきかを予測することも可能にする。
図4は、様々な実施形態による、コードブロックに対する予測制御フローグラフのブロック図を示す。論じられるように、様々な実施形態において、コンパイラは、或るブロックに対して、特定の命令ブロックに対する述語付き命令および分岐先を示す予測制御フローグラフを生成するように構成されることができる。示されているように、予測制御フローグラフは、グラフ410のノードp0、p1、およびp5のようなノードによって述語を表し、分岐先b100、b101およびb110のような分岐先を葉として表すツリーとして実装されることができる。加えて、ツリー内のエッジは予測される命令を表すことができ、したがって、述語p0の値が「真」である場合、p0からp4へのエッジによって表される命令が実行されることができる。本明細書において論じられるように、本明細書において説明される技法は、予測値のセットを特定する統合分岐先・述語予測を生成することによって述語値および分岐先の両方を予測するためにこれらの予測制御フローグラフを利用する。グラフを通じて値を追うことによって、ランタイム環境140、特に命令フェッチ・実行制御部160は、a)いずれの述語付き命令が実行のために必要とされる可能性が高いか、およびb)それらの値が何であるかを特定することができる。加えて、経路を追うことによって、命令フェッチ・実行制御部160は、次の命令ブロックをスケジューリングするための分岐先を特定することができる。与えられている制御フローグラフは、ブロックの内部構造に応じて異なる長さの経路を含むことができる。したがって、様々な実施形態において、命令フェッチ・実行制御部160は、葉ノードにあるその終端まで経路を追うことができ、一方でいくつかの実施形態では、命令フェッチ・実行制御部160は、経路を終端まで行かずに追うこと、またはその実際の終端を過ぎて経路を追うことに基づいて、分岐先を予測してもよい。
様々な実施形態において、予測制御フローグラフは、述語ごとに分岐する、グラフ410におけるように、述語値ごとに異なる経路を含むことができる。しかしながら、いくつかのシナリオにおいては、ブロックは、グラフ420におけるように、p0の値にかかわりなくグラフによって表されるブロックに対する制御が次にp1の値に依存することになる、特定の述語では分岐しない場合がある。しかしながら、ツリー内に異なるエッジ423および425が存在するため、これは、そのブロック内で同じ命令が実行されることになることを意味しない。異なるエッジ423および425の各々は異なる述語付き命令を表し得る。加えて、p0の値は将来の命令を完全に決定するものではない場合があるが、様々な実施形態において、その値は依然として特定の将来の述語または分岐先の値と相関し得る。したがって、p0の値は、予測生成のために依然として制御点履歴内に維持され得る。この例は、図3に関連して上記で論じられた、述語p0がとった値にかかわりなくブロック1の実行が述語p1に進行したコードに見ることができる。また、様々な実施形態において、予測制御フローグラフは、グラフ内のレベルの数または分岐の度合いのような、グラフの形状に関する情報に関連付けられている場合がある。この形状情報は、予測生成、特に並列化予測生成の実行に有用であり得る。
図5は、様々な実施形態による、統合分岐先・述語予測を利用するプログラムを生成するためのプロセス500を示す。示されているように、プロセス500は動作510において開始することができる(「プログラムコードを受信する」)。動作510において、コンパイラ110などによって、コンパイルするためのプログラムコードが受信されることができる。上記で論じられたように、様々な実施形態において、プログラムコードは1つまたは複数のコードファイルを含むことができ、様々な既知のコンピューティング言語において実装されることができる。加えて、様々な実施形態において、プログラムコードは、本明細書において説明されている予測技法を利用するコード生成においてコンパイラを補助する1つまたは複数の命令または情報を有することができる。説明を容易にするために、プロセス500の活動はコンパイラ110のような単一のコンパイラを参照して説明されているが、代替的な実施形態では、1つもしくは複数のコンパイラまたは他のコード解析モジュールがこれらの活動を実行するために利用されてもよい。
動作510から、プロセス500は動作520に進むことができる(「述語付き命令を生成する」)。動作520において、コンパイラは、たとえば、図3を参照して上記で論じられた命令のような、述語付き命令を生成することができる。上記で論じられたように、これらの述語付き命令は、少なくとも部分的に、コンパイラ110が条件文を識別し、これらの文に基づいて述語を生成することを通じて生成されることができる。動作520から、プロセス500は動作530に進むことができる(「分岐命令を生成する」)。動作530において、コンパイラ110は、たとえば、図3を参照して上記で論じられた命令のような、分岐命令を生成することができる。動作530から、プロセス500は動作540に進むことができる(「ブロック命令を生成する」)。動作540において、コンパイラ110は予測を目的として命令ブロックを生成することができる。様々な実施形態において、コンパイラは、上記で示されたもののような、明示的なジャンプの呼び出しに基づいて分岐命令を生成し、かつ/またはブロックを生成することができる。他の実施形態では、コンパイラは元のプログラムコード内に存在するブロックを識別して、本来ジャンプがコードされていなかった場合であってもこれらの識別されたブロック間に分岐を生成することができる。ブロックは、図3に図示されている例におけるように明示的に識別されることができるか、または、或る単位として実行されることになる可能性が高い命令のセットとしてコンパイラによって認識されることができる。
動作540から、プロセス500は動作550に進むことができる(「ブロック内のツリー情報を符号化する」)。動作550において、コンパイラは、予測制御フローグラフに関するツリー情報(またはおおよそのツリー情報)を、それらの予測制御フローグラフに関連付けられる命令ブロックのそれぞれのヘッダ内に符号化することができる。たとえば、上記のように、ツリーは、根と、葉としての様々な無条件ジャンプとの間の様々な経路上の多数の述語を表すことができる。このようなツリーにおいて、述語はブロック内でノードとして、述語結果/値はエッジとして、分岐先は葉として使用されることになる。他の実施形態では、コンパイラはツリーの深さまたはツリーの形状に関係する情報を符号化することができ、それによって、予測生成の間、予測生成器150は適切な長さの予測をより容易に生成することができる。
図6は、様々な実施形態による、統合分岐先・述語予測を使用して分岐先および述語を予測するためのプロセス600を示す。示されている実施形態に関して、プロセス600は、示されている例が単一のブロックのみに対する予測を示している場合であっても、ブロックごとに実行されることができる。代替の実施形態では、予測は実行中に必要に応じて複数のブロックに対して実行されてもよい。
したがって、それらの実施形態に関して、プロセス600は動作610によって開始することができる(「制御点履歴を検索する」)。動作610において、ランタイム環境140、特に予測生成器150は、制御点履歴を検索することができる。様々な実施形態において、制御点履歴は、過去に評価された述語値の履歴を含むことができ、履歴は、2進列の形態をとり、かつ/または事前定義の長さを有することができる。一例は、図1に示されている制御点履歴145であり得る。様々な実施形態において、制御点履歴はとられた分岐先の1つまたは複数の記録をも含むことができる。
動作610から、プロセス600は動作620に進むことができる(「予測を生成する」)。動作620において、予測生成器150は制御点履歴145を使用して、命令のスケジューリングに使用するための、統合予測155のような予測を生成することができる。この活動の特定の実施形態は、図7を参照して下記に説明される。動作620から、プロセス600は動作630に進むことができる。動作630において、命令フェッチ・実行制御部160は、統合予測155およびブロック情報157を使用して、実行のために命令をスケジューリングすることができる。この活動の特定の実施形態は、図8を参照して下記に説明される。
図7は、様々な実施形態による、統合分岐先・述語予測を生成するためのプロセス700を示す図である。図6に関する上記の論述と同様に、プロセス700はブロックごとに実行されることができ、したがって、示されている例は、単一のブロックに対する予測を示す。示されている例は、統合予測を効率的に生成するための並列化技法を示している。様々な実施形態において、示されていないが、予測生成器150は、述語値を受信するルックアップテーブル内などに制御点履歴を入力することによって、一度に1つの値の予測を生成し得る。その後、予測生成器150は、次の述語値を検索するために、新たに生成された述語値とともに制御点履歴内の最も古い値を除くすべての値を使用して第2の検索に進むことができ、以下同様である。検索は、十分な値が見つかり、そのブロックに対する統合分岐先・述語予測が生成されるまで継続することができる。
示されているように、プロセス700は、動作710において開始することができる(「レベルnに対する予測述語付き値を生成する」)。動作710において、予測生成器150は、レベルnに対する予測述語値を生成することができる。上記で論じられたように、これは、ルックアップテーブルを含む様々な生成方法を使用して実行されることができる。動作710から、プロセス700は動作720に進むことができる(「レベルn+1に対する2つの予測述語化値を生成する」)。動作720において、予測生成器150は、制御点履歴内のレベルnに対する両方の可能な述語値を使用してレベルn+1に対する2つの予測述語値を生成することができる。示されているように、このブロックの動作は、動作710の結果に直接依拠しないため、動作710の動作と並列に実行されることができる。動作720から、プロセス700は動作730に進むことができる(「レベルn+2に対する4つの予測述語化値を生成する」)。動作720において、同様の動作が実行されることができ、ここで、予測生成器がレベルn+2に対する4つの予測述語化値を生成する。レベルn+2に対する4つの予測述語値は、動作710および720の結果に対する可能な値のすべてを使用して生成されることができる。
以下は、説明されている実施形態による、統合分岐先・述語予測を生成するための一例である。動作710において、予測生成器が長さ5の命令履歴に対して動作しており、現在の制御点履歴が11011である場合、予測生成器150は履歴11011を使用してレベルnに対する予測値を検索することができる。その動作と同時に(または少なくとも同時期に)、予測生成器150は、命令履歴10110および10111を使用してレベルn+1に対する検索も実行することができる。命令履歴は、履歴内の4つの最近の履歴値を表すことができる。加えて、命令履歴は、動作710における生成動作からの2つの可能な結果に関連付けられ得る。同様に、動作730において、履歴01100、01101、01110、および01111を使用して検索が実行され得る。
動作710、720または730から、プロセス700は動作740に進むことができる(「述語値を決定する」)。動作740において、動作710、720、および730の結果が分かった後、述語値が決定されることができる。したがって、動作710からの値が0であると求められた場合、10110を入力として使用した動作720からの結果が維持され得る。動作720からの他の結果は破棄され得る。同様に、1つの結果が動作730からとられ得る。示されている例は3つのレベルの並列述語予測を利用しているが、代替的な実施形態では、異なる数のレベルが使用されてもよいことが認識されるべきである。
動作740から、プロセス700は動作745に進むことができる(「予測される述語の数がブロックの数以上であるか」)。動作745において、予測生成器150は、予測が少なくとも、現在の命令ブロック内のすべての述語に対してなされたか否かを判定することができる。そうでない場合、プロセス700は動作710、720、および730に戻り、n=n+3で進行することができる。予測がブロック内のすべての述語に対してなされている場合、動作750において(「余分な述語予測を廃棄する」)。動作750において、余分な予測が廃棄されることができる。たとえば、上記で論じられた3レベル並列化予測を使用するとき、5つのレベルの述語がブロック内に存在する場合、プロセスはループを2回反復して実行し、6つの予測述語値を生成することができる。その場合、第6の値が破棄され得る。加えて、いくつかの実施形態では、ブロックがそれらの予測制御フローグラフ内に不均衡なツリー(または他の複雑なツリー形状)を含む場合、予測生成器150は、与えられたツリー内の最長経路を満たすのに十分な予測述語値を生成するように構成されることができる。結果として、予測生成器150は、複雑である可能性のあるツリー記述子を見て計算資源の消費を回避または低減することができる。これは、動作750において述語予測を破棄する結果にもなり得る。
図8は、様々な実施形態による、統合分岐先・述語予測に基づいて命令をスケジューリングするためのプロセス800を示す。この実施形態について、プロセス800は、動作810において開始することができる(「統合予測に基づいてツリーをトラバースする」)。動作810において、命令フェッチ・実行制御部160は、統合予測155に基づいて予測制御フローグラフのツリーをトラバースすることができる。動作810から、プロセス800は動作820に進むことができる(「ツリーのトラバースに基づいて述語を予測する」)。動作820において、命令フェッチ・実行制御部は、ツリーを通る経路に基づいて、いずれの述語が評価されることになるかを予測することができる。動作820から、プロセス800は動作830に進むことができる(「予測される述語に基づいて述語付き命令を実行のためにスケジューリングする」)。動作830から、命令フェッチ・実行制御部160は、これらの予測に基づいて、述語付き命令を実行のためにスケジューリングすることができる。動作830から、プロセス800は動作840に進むことができる(「トラバースの終端におけるツリーの葉に基づいて分岐先を予測する」)。動作840から、命令フェッチ・実行制御部は、ツリーのトラバースに基づいて分岐先を予測することができる。様々な実施形態において、命令フェッチ・実行制御部は、トラバースが葉ノードに通じる場合、ツリーのトラバースの終端に位置するツリーの葉に基づいて分岐先を予測することができ、他の実施形態では、予測は非終端トラバースに基づいてもよい。動作840から、プロセス800は動作850に進むことができる(「分岐先によって指示されるコードブロックを実行のためにスケジューリングする」)。動作850から、命令フェッチ・実行制御部160は、この分岐先によって指示される1つまたは複数の命令を、現在のコードブロックの後の次の実行のためにフェッチすることができる。上記で論じられたように、プロセス800の下で、統合予測155のような単一の統合予測は、或る命令ブロックに関して述語付き命令および分岐先の両方をスケジューリングするのに十分な情報を提供し得る。フェッチされた命令が続いて実行されることができる。
図9は、本開示にしたがって構成される例示的なコンピューティングデバイスを示すブロック図である。基本構成901内で、コンピューティングデバイス900は一般的に、1つまたは複数のプロセッサ910およびシステムメモリ920を含む。プロセッサ910とシステムメモリ920との間の通信のためにメモリバス930が使用されることができる。
所望の構成に応じて、プロセッサ910は、限定ではないがマイクロプロセッサ(μP)、マイクロコントローラ(μC)、デジタル信号プロセッサ(DSP)、またはそれらの任意の組み合わせを含む任意のタイプのものであり得る。プロセッサ910は、レベル1キャッシュ911およびレベル2キャッシュ912のような、1つ多いレベルのキャッシング、プロセッサコア913、およびレジスタ914を含むことができる。例示的なプロセッサコア913は、算術論理演算ユニット(ALU)、浮動小数点演算ユニット(FPU)、デジタル信号処理コア(DSPコア)、またはそれらの任意の組み合わせを含むことができる。例示的なメモリコントローラ915は、プロセッサ910によって使用されることもでき、または、いくつかの実施態様では、メモリコントローラ915はプロセッサ910の内部部品であってもよい。
所望の構成に応じて、システムメモリ920は、限定ではないが揮発性メモリ(RAMなど)、不揮発性メモリ(ROM、フラッシュメモリ他など)、またはそれらの任意の組み合わせを含む任意のタイプのものであり得る。システムメモリ920は、オペレーティングシステム921、1つまたは複数のアプリケーション922、およびプログラムデータ924を含むことができる。アプリケーション922は、上記で説明された統合分岐先・述語予測生成および命令予測を実施するためのロジック923を提供するプログラミング命令を含むことができる。プログラムデータ924は、統合分岐先・述語予測、制御点履歴、およびコードブロック情報のようなデータ925を含むことができる。
コンピューティングデバイス900は、追加の特徴または機能、ならびに、基本構成901と任意の必要とされるデバイスおよびインタフェースとの間の通信を促進するための追加のインタフェースを有することができる。たとえば、ストレージ・インタフェース・バス941を介する、基本構成901と1つまたは複数のデータ記憶デバイス950との間の通信を促進するためにバス/インタフェースコントローラ940が使用されることができる。データ記憶デバイス950は、取り外し可能記憶デバイス951、固定記憶デバイス952、またはそれらの組み合わせであり得る。取り外し可能記憶デバイスおよび固定記憶デバイスの例は、いくつか挙げると、フレキシブル・ディスク・ドライブおよびハードディスクドライブ(HDD)のような磁気ディスクデバイス、コンパクトディスク(CD)ドライブまたはデジタル多用途ディスク(DVD)ドライブのような光ディスクドライブ、ソリッド・ステート・ドライブ(SSD)、ならびにテープドライブを含む。例示的なコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータのような情報の記憶のための任意の方法または技術において実装される揮発性および不揮発性、取り外し可能および固定の媒体を含むことができる。
システムメモリ920、取り外し可能ストレージ951および固定ストレージ952はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、限定ではないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気的記憶デバイス、または、所望の情報を記憶するのに使用されることができるとともに、コンピューティングデバイス900によってアクセスされることができる任意の他の媒体を含む。任意のこのようなコンピュータ記憶媒体はデバイス900の一部であることができる。
コンピューティングデバイス900は、様々なインタフェースデバイス(たとえば、出力インタフェース、周辺インタフェース、および通信インタフェース)からバス/インタフェースコントローラ940を介して基本構成901への通信を促進するための、インタフェースバス942をも含むことができる。例示的な出力デバイス960は、グラフィックス処理ユニット961およびオーディオ処理ユニット962を含み、これらは、1つまたは複数のA/Vポート963を介してディスプレイまたはスピーカのような様々な外部デバイスと通信するように構成されることができる。例示的な周辺インタフェース970は、直列インタフェースコントローラ971または並列インタフェースコントローラ972を含み、これらは、1つまたは複数のI/Oポート973を介して入力デバイス(たとえば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス他)または他の周辺デバイス(たとえば、プリンタ、スキャナ他)のような外部デバイスと通信するように構成されることができる。例示的な通信デバイス980はネットワークコントローラ981を含み、これは、1つまたは複数の通信ポート982を介するネットワーク通信リンクにわたる1つまたは複数の他のコンピューティングデバイス990との通信を促進するように構成されることができる。
ネットワーク通信リンクは、通信媒体の1つの例であり得る。通信媒体は、一般的には、コンピュータ可読命令、データ構造、プログラムモジュール、または、搬送波もしくは他の伝送メカニズムのような、変調データ信号内の他のデータによって具現化されることができ、任意の情報配信媒体を含むことができる。「変調データ信号」は、その特性のうちの1つまたは複数が、当該信号内に情報を符号化するように設定または変更されている信号であり得る。限定ではなく例として、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体、ならびに、音響、無線周波数(RF)、マイクロ波、赤外線(IR)および他の無線媒体のような無線媒体を含むことができる。本明細書において使用されているものとしてのコンピュータ可読媒体という用語は、有形記憶媒体および通信媒体の両方を含み得る。
コンピューティングデバイス900は、携帯電話、携帯情報端末(PDA)、パーソナル・メディア・プレーヤ・デバイス、無線ウェブ閲覧デバイス、パーソナル・ヘッドセット・デバイス、特定用途向けデバイス、または、上記の機能のいずれかを含むハイブリッドデバイスのような、小型フォームファクタ可搬(またはモバイル)電子デバイスの一部として実装されることができる。コンピューティングデバイス900は、ラップトップコンピュータ構成および非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとして実装されることもできる。
本明細書において論じられている1つまたは複数の方法を実行するための製造品および/またはシステムが用いられ得る。図10は、本開示の様々な実施形態による、集積回路の構成要素の使用量を計測するためのコンピュータプログラム製品1000を有する例示的な製造品のブロック図を示す。コンピュータプログラム製品1000は、持続性コンピュータ可読記憶媒体1002、およびコンピュータ可読記憶媒体1002内に記憶される複数のプログラミング命令1004を含むことができる。
これらの様々な実施形態において、プログラミング命令1004は、装置による実行に応答して、装置が、以前に実行された1つまたは複数の命令に少なくとも部分的に基づいて統合述語・分岐先予測を特定することであって、予測は、第1のコードブロック内の述語付き命令に対する1つまたは複数の予測述語値を含む、特定することと、
コンピューティングデバイス上で、予測述語値に少なくとも部分的に基づいて、ブロック内の述語付き命令の中から1つまたは複数の予測述語付き命令を実行することと、
予測述語付き命令に基づいて、第2のブロックコードを指示する予測分岐先ロケーションを予測することと、
第2のブロックコードで実行を継続することと
を含む動作を実行することを可能にするように構成されることができる。
コンピュータ可読記憶媒体1002は、限定ではないがコンパクトディスク読み出し専用メモリ(CDROM)およびフラッシュメモリのような、不揮発性かつ永続性のメモリを含むがこれには限定されない様々な形態をとることができる。
本明細書において説明されている主題は時として、異なる他の構成要素または要素内に含まれるか、またはそれらと接続される種々の構成要素または要素を示している。このように描写されているアーキテクチャは例に過ぎないこと、および、事実、同じ機能を達成する多くの他のアーキテクチャが実装されてもよいことは理解されたい。概念的な意味において、この同じ機能を達成するための構成要素の任意の構成は、所望の機能を達成するように効果的に「関連付けられる」。したがって、本明細書において、特定の機能を達成するために組み合わされている任意の2つの構成要素は、アーキテクチャまたは内部構成要素にかかわりなく、所望の機能が達成されるように互いに「関連付けられている」とみなされることができる。同様に、このように関連付けられている任意の2つの構成要素は、所望の機能を達成するために互いに「動作可能に接続されている」または「動作可能に結合されている」とみなされることもでき、このように関連付けられることが可能な任意の2つの構成要素は、所望の機能を達成するために互いに「動作可能に結合可能である」とみなされることもできる。動作可能に結合可能な具体例は、限定ではないが、物理的に接合可能および/もしくは物理的に相互作用する構成要素ならびに/または無線相互作用可能および/もしくは無線相互作用する構成要素ならびに/または論理的に相互作用するおよび/もしくは論理的に相互作用可能な構成要素を含む。
本明細書において説明されている主題の様々な態様は、当業者によって、それらの働きの要旨を他の当業者に伝達するために一般的に用いられる用語を使用して説明されている。しかしながら、これらの説明されている態様のいくらかのみを用いて代替の実施態様が実施されてもよいことが当業者には明らかなはずである。説明を目的として、説明例の完全な理解を提供するために、具体的な数、材料、および構成が記載されている。しかしながら、代替の実施形態はこれらの具体的な詳細なしに実施されることができることが当業者には明らかなはずである。他の事例において、例示的な実施形態を曖昧にしないために、既知の特徴は省略または簡略化されている。
本明細書において相当に任意の複数形および/または単数形の用語が使用されていることに関して、当業者は、文脈および/または用途にとって適切であるように、複数形から単数形に、かつ/または単数形から複数形に読み換えてもよい。様々な単数形/複数形の置換は、明瞭にする目的で本明細書において明示的に記載されている場合がある。
一般的に、本明細書において、特に添付の特許請求の範囲(たとえば、添付の特許請求項の特徴記載部)において使用されている用語は概して、「オープンな」用語として意図されている(たとえば、「含む(including)」という用語は、「含むが限定されない(including but not limited to)」として解釈されるべきであり、「有する(having)」という用語は「少なくとも有する(having at least)」として解釈されるべきであり、「含む(includes)」という用語は、「含むが限定されない(includes but not limited to)」として解釈されるべきである、など)ことが当業者には理解されよう。具体的な数の特許請求項の列挙の導入が意図されている場合、そのような意図は特許請求項において明示的に記載されており、そのような列挙がない場合、そのような意図は存在しないことが当業者にはさらに理解されよう。たとえば、理解を助けるものとして、以下の添付の特許請求項は、特許請求項の列挙を導入するために前置きの語句「少なくとも1つ」および「1つまたは複数」の使用を含む場合がある。しかしながら、このような語句を使用することは、不定冠詞「a」または「an」による特許請求項の列挙の導入が、たとえ同じ特許請求項が前置きの語句「1つまたは複数」または「少なくとも1つ」および「a」または「an」のような不定冠詞を含む場合であっても、このように導入される特許請求項の列挙を含む任意の特定の特許請求項がただ1つのこのような列挙を含む発明に限定することを暗示するものとして解釈されるべきではなく(たとえば、「a」および/または「an」は一般的には「少なくとも1つ」または「1つまたは複数」を意味するように解釈されるべきである)、同じことが、特許請求項の列挙を導入するために使用される定冠詞の使用にも当てはまる。加えて、たとえ導入される特許請求項の列挙の具体的な数が明示的に記載されている場合であっても、このような列挙は一般的には少なくとも記載されている数を意味するように解釈されるべきである(たとえば、他に変更するものがなくただ「2つの列挙」が記載されているとき、これは一般的には少なくとも2つの列挙または2つ以上の列挙を意味する)ことを当業者は認識しよう。さらに、「A、B、およびCなどのうちの少なくとも1つ」に類似の慣例が使用されている事例においては、一般的に、このような構造は、当業者がこの慣習を理解するであろう意味において意図される(たとえば、「A、B、およびeのうちの少なくとも1つを有するシステム」は、限定ではないが、A単独、B単独、C単独、AおよびBをともに、Aおよびeをともに、Bおよびeをともに、ならびに/またはA、B、およびCをともに、などを有するシステムを含むことになる)。「A、B、またはCなどのうちの少なくとも1つ」に類似の慣例が使用されている事例においては、一般的に、このような構造は、当業者がこの慣習を理解するであろう意味において意図される(たとえば、「A、B、またはCのうちの少なくとも1つを有するシステム」は、限定ではないが、A単独、B単独、C単独、AおよびBをともに、AおよびCをともに、BおよびCをともに、ならびに/またはA、B、およびCをともに、などを有するシステムを含むことになる)。事実上、2つ以上の代替的な用語を表す任意の離接語および/または句は、それが明細書、特許請求の範囲、または図面のいずれの中にあろうと、それらの用語のうちの1つ、それらの用語のいずれか、または両方の用語を含む可能性があることを企図するものと理解されるべきであることが当業者にはさらに理解されよう。たとえば、「AまたはB」という語句は、「A」もしくは「B」または「AおよびB」の可能性を含むように理解されることになる。
様々な動作が、実施形態の理解に有用であり得るように順に複数の別個の動作として記載されている場合があるが、記載の順序はこれらの動作が順序依存であることを暗示するように解釈されるべきではない。また、実施形態は記載されているよりも少ない動作を含んでもよい。複数の別個の動作の記載は、すべての動作が必要であることを暗示するように解釈されるべきではない。また、実施形態は記載されているよりも少ない動作を含んでもよい。複数の別個の動作の記載は、すべての動作が必要であることを暗示するように解釈されるべきではない。
本明細書において、好ましい実施形態の説明を目的として特定の実施形態が例示および説明されているが、本開示の範囲から逸脱することなく、同じ目的を達成するように計算される広範な代替および/または均等な実施形態または実施態様が、図示および記載されている実施形態と置換されてもよいことが当業者には理解されよう。本開示の実施形態は非常に広範な方法で実装されることができることを当業者は容易に理解しよう。本開示は、本明細書において論じられている実施形態の任意の適合形態または変形形態を包含するように意図される。それゆえ、本開示の実施形態は特許請求の範囲およびその均等物のみによって限定されることが明白に意図されている。

Claims (24)

  1. コンピュータ命令の実行時間予測のためのコンピュータ実装方法であって、該方法は、
    コンピューティングデバイス上で、制御点履歴(145)に少なくとも部分的に基づいて統合述語・分岐先予測(155)を生成すること(620)と、
    前記コンピューティングデバイス上で、前記統合述語・分岐先予測に少なくとも部分的に基づいて、1つまたは複数の予測述語付き命令を実行すること(830)と、
    前記コンピューティングデバイス上で、前記統合述語・分岐先予測に少なくとも部分的に基づいて、予測分岐先ロケーションにおいて実行を進行すること(850)と
    を含む、方法。
  2. 生成することは、1つまたは複数の述語付き命令に対する1つまたは複数の予測述語値を生成することを含む、請求項1に記載の方法。
  3. 実行を進行することは、前記1つまたは複数の予測述語値に基づいて前記予測分岐先ロケーションを予測することを含む、請求項2に記載の方法。
  4. 前記1つまたは複数の予測述語値に基づいて前記予測分岐先ロケーションを予測することは、前記1つまたは複数の予測述語値に少なくとも部分的に基づいて予測制御フローグラフを通じて経路を追うことを含む、請求項3に記載の方法。
  5. 前記コンピュータ命令はブロック不可分アーキテクチャ内にあり、
    前記方法は、前記コンピューティングデバイスによって、命令ブロックに対する前記予測制御フローグラフを生成することをさらに含み、
    前記命令ブロック内の述語は前記予測制御フローグラフ内でノードとして表され、
    分岐先は前記予測制御フローグラフ内で葉として表される、
    請求項4に記載の方法。
  6. 前記予測制御フローグラフを通じて経路を追うことは、前記1つまたは複数の予測述語値に少なくとも部分的に基づいて述語間のエッジを追うことを含む、請求項4に記載の方法。
  7. 1つまたは複数の予測述語値を生成することは、複数のレベルの予測述語値を並列に生成することを含む、請求項2に記載の方法。
  8. 複数のレベルの予測述語値を並列に生成することは、レベルn、および、長さkの述語履歴を含む前記制御点履歴に関して、
    最新のk個の述語に基づいてレベルnに対する予測述語値を生成することと、
    最新のk−1個の述語およびレベルnに対する2つの可能な述語値に基づいてレベルn+1に対する2つの予測述語値を生成することと、
    レベルnに対する前記予測述語値に基づいてレベルn+1に対する前記2つの予測述語値のうちのいずれが使用されるべきかを決定することと
    を含む、請求項7に記載の方法。
  9. 複数のレベルの予測述語値を並列に生成することは、命令ブロック内の最大で所定のレベル数jに対して予測述語値を生成することを含む、請求項7に記載の方法。
  10. 内部にjよりも大きい数の述語レベルを含む命令ブロックに対して予測述語値が生成されるとき、複数のレベルの予測述語値を並列に生成することは、
    前記ブロック内の前記述語レベルの数を超えるまで、jの倍数単位で予測述語値を繰り返し生成することと、
    前記ブロック内の前記述語レベルの数を超える述語値を破棄することと
    を含む、請求項9に記載の方法。
  11. 複数のレベルの予測述語値を並列に生成することは、前記命令ブロックに関連付けられるとともに前記ブロック内の前記述語レベルの数を表す、記憶されている値にアクセスすることをさらに含む、請求項10に記載の方法。
  12. 前記制御点履歴は述語履歴を含み、
    前記1つまたは複数の予測述語値を生成することは、述語履歴をインデックスとして使用することに基づいて、予測述語の検索を実行することを含む、
    請求項2に記載の方法。
  13. 前記制御点履歴は、進行中の実行の間に、以前に実行された1つまたは複数の命令を含む、請求項1に記載の方法。
  14. コンピュータ命令の予測ランタイム実行のためのシステムであって、該システムは、
    1つまたは複数のコンピュータプロセッサ(910)と、
    述語および/または分岐の履歴(145)を入力として受け入れるとともに、前記1つまたは複数のプロセッサによる動作に応答して、前記受け入れられた履歴に基づいて統合述語・分岐先予測(155)を生成する(620)ように構成される統合予測生成器(150)と、
    前記1つまたは複数のプロセッサによる動作に応答して、
    前記統合述語・分岐先予測から取得される予測述語値に基づいて1つまたは複数の述語付き命令を実行する(830)とともに、
    予測分岐先ロケーションにおいてフェッチされた命令の実行を進行する(850)ように、前記1つまたは複数のプロセッサを制御するように構成される命令フェッチ・実行制御部(160)と
    を備え、前記予測分岐先ロケーションは、前記予測述語値に少なくとも部分的に基づく、システム。
  15. 前記命令フェッチ・実行制御部は、前記1つまたは複数のプロセッサによる動作に応答して、前記予測述語値に少なくとも部分的に基づいて前記予測分岐先ロケーションを予測するようにさらに構成される、請求項14に記載のシステム。
  16. 前記1つまたは複数のコンピュータプロセッサに結合される記憶媒体、
    前記記憶媒体上の1つまたは複数の予測制御フローグラフ
    をさらに備え、それぞれの前記予測制御フローグラフは、それぞれのコードブロックに関して、前記コードブロック内の述語を内部ノードとして表し、他のコードブロックに対する分岐を葉として表す、請求項15に記載のシステム。
  17. 前記命令フェッチ・実行制御部は、
    前記予測述語値にしたがって前記予測制御フローグラフを通る経路を追うとともに、
    前記経路を追うことによって葉に達すると、前記葉に向かって分岐するコードブロックのロケーションを前記予測分岐先ロケーションとして予測することによって、前記予測分岐先ロケーションを予測するように構成される、請求項16に記載のシステム。
  18. 前記統合予測生成器は、前記1つまたは複数のプロセッサによる動作に応答して、予測述語値を特定するために述語の履歴を検索インデックスとして使用することによって統合述語・分岐先予測を生成するように構成される、請求項14に記載のシステム。
  19. 前記統合予測生成器は、前記1つまたは複数のプロセッサによる動作に応答して、複数の検索を並列に実行することによって統合述語・分岐先予測を生成するようにさらに構成される、請求項18に記載のシステム。
  20. 製造品であって、
    有形コンピュータ可読媒体(1002)と、
    前記有形コンピュータ可読媒体上に記憶される複数のコンピュータ実行可能命令(1004)とを備え、前記コンピュータ実行可能命令は、装置による実行に応答して、該装置に、述語付き命令および1つまたは複数の分岐先を有する第1のコードブロックに対して命令の実行をスケジューリングするための動作を実行させ、該動作は、
    以前に実行された1つまたは複数の命令(145)に少なくとも部分的に基づいて、統合述語・分岐先予測(155)を特定すること(620)であって、該予測は、前記第1のコードブロック内の前記述語付き命令に対する1つまたは複数の予測述語値を含む、特定することと、
    前記コンピューティングデバイス上で、前記予測述語値に少なくとも部分的に基づいて、前記ブロック内の前記述語付き命令の中から1つまたは複数の予測述語付き命令を実行すること(830)と、
    前記予測述語付き命令に基づいて、第2のコードブロックを指す予測分岐先ロケーションを予測すること(840)と、
    前記第2のコードブロックでの実行を継続すること(850)と
    を含む、製造品。
  21. 予測分岐先ロケーションを予測することは、前記予測分岐先ロケーションを特定するために前記第1のコードブロックに関して予測制御フローグラフを通じて経路を追うことを含む、請求項20に記載の製造品。
  22. 前記動作は、コンピュータプログラム内のそれぞれのコードブロックについて、それぞれの予測制御フローグラフを生成することをさらに含む、請求項21に記載の製造品。
  23. 前記統合述語・分岐先予測を特定することは過去の述語値の履歴に基づいて予測述語値のセットの検索を実行することを含む、請求項20に記載の製造品。
  24. 述語化された述語のセットの検索を実行することは、
    可能性のある予測述語値の複数の検索を並列に実行することと、
    レベルnにおける可能性のある予測述語値に関して、レベルn−1における予測述語値を使用して前記可能性のある予測述語値を決定することと
    を含む、請求項23に記載の製造品。
JP2013515312A 2010-06-18 2010-06-18 統合分岐先・述語予測 Active JP5707011B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2010/039162 WO2011159309A1 (en) 2010-06-18 2010-06-18 Combined branch target and predicate prediction

Publications (2)

Publication Number Publication Date
JP2013534004A true JP2013534004A (ja) 2013-08-29
JP5707011B2 JP5707011B2 (ja) 2015-04-22

Family

ID=45348486

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013515312A Active JP5707011B2 (ja) 2010-06-18 2010-06-18 統合分岐先・述語予測

Country Status (4)

Country Link
US (2) US9021241B2 (ja)
JP (1) JP5707011B2 (ja)
KR (3) KR101731742B1 (ja)
WO (1) WO2011159309A1 (ja)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
US9934035B2 (en) 2013-03-21 2018-04-03 Nxp Usa, Inc. Device and method for tracing updated predicate values
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
US9507594B2 (en) * 2013-07-02 2016-11-29 Intel Corporation Method and system of compiling program code into predicated instructions for execution on a processor without a program counter
US20160179538A1 (en) * 2014-12-19 2016-06-23 Intel Corporation Method and apparatus for implementing and maintaining a stack of predicate values with stack synchronization instructions in an out of order hardware software co-designed processor
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US9940136B2 (en) 2015-06-26 2018-04-10 Microsoft Technology Licensing, Llc Reuse of decoded instructions
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US9720693B2 (en) 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US9921814B2 (en) * 2015-08-24 2018-03-20 International Business Machines Corporation Control flow graph analysis
US10379858B2 (en) * 2015-09-14 2019-08-13 Spreadtrum Hong Kong Limited Method and apparatus for executing conditional instruction predicated on execution result of predicate instruction
US20170083320A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Predicated read instructions
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10061584B2 (en) 2015-09-19 2018-08-28 Microsoft Technology Licensing, Llc Store nullification in the target field
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US10095519B2 (en) 2015-09-19 2018-10-09 Microsoft Technology Licensing, Llc Instruction block address register
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US10936316B2 (en) 2015-09-19 2021-03-02 Microsoft Technology Licensing, Llc Dense read encoding for dataflow ISA
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US10031756B2 (en) 2015-09-19 2018-07-24 Microsoft Technology Licensing, Llc Multi-nullification
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US11106467B2 (en) 2016-04-28 2021-08-31 Microsoft Technology Licensing, Llc Incremental scheduler for out-of-order block ISA processors
US11531552B2 (en) 2017-02-06 2022-12-20 Microsoft Technology Licensing, Llc Executing multiple programs simultaneously on a processor core
US10963379B2 (en) 2018-01-30 2021-03-30 Microsoft Technology Licensing, Llc Coupling wide memory interface to wide write back paths
US10824429B2 (en) 2018-09-19 2020-11-03 Microsoft Technology Licensing, Llc Commit logic and precise exceptions in explicit dataflow graph execution architectures
US12026518B2 (en) 2021-10-14 2024-07-02 Braingines SA Dynamic, low-latency, dependency-aware scheduling on SIMD-like devices for processing of recurring and non-recurring executions of time-series data
US11977896B2 (en) * 2022-09-12 2024-05-07 Arm Limited Issuing a sequence of instructions including a condition-dependent instruction

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5903750A (en) * 1996-11-20 1999-05-11 Institute For The Development Of Emerging Architectures, L.L.P. Dynamic branch prediction for branch instructions with multiple targets
JP2001175473A (ja) * 1999-08-31 2001-06-29 Internatl Business Mach Corp <Ibm> コンピュータ処理システムにおいて実行述語を実現する方法及び装置
US6353883B1 (en) * 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
JP2002149401A (ja) * 2000-09-28 2002-05-24 Internatl Business Mach Corp <Ibm> マイクロプロセッサ内の命令処理法方、マイクロプロセッサ及び情報処理システム
JP2013500539A (ja) * 2009-09-09 2013-01-07 ボード オブ リージエンツ,ユニバーシテイ オブ テキサス システム 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体

Family Cites Families (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317734A (en) 1989-08-29 1994-05-31 North American Philips Corporation Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies
US5666506A (en) 1994-10-24 1997-09-09 International Business Machines Corporation Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle
US5669001A (en) 1995-03-23 1997-09-16 International Business Machines Corporation Object code compatible representation of very long instruction word programs
US5729228A (en) 1995-07-06 1998-03-17 International Business Machines Corp. Parallel compression and decompression using a cooperative dictionary
US5790822A (en) 1996-03-21 1998-08-04 Intel Corporation Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor
US5920724A (en) 1996-03-28 1999-07-06 Intel Corporation Software pipelining a hyperblock loop
US8583895B2 (en) 1996-05-15 2013-11-12 Nytell Software LLC Compressed instruction format for use in a VLIW processor
US5796997A (en) 1996-05-15 1998-08-18 Hewlett-Packard Company Fast nullify system and method for transforming a nullify function into a select function
US5905893A (en) 1996-06-10 1999-05-18 Lsi Logic Corporation Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set
US5845103A (en) 1997-06-13 1998-12-01 Wisconsin Alumni Research Foundation Computer with dynamic instruction reuse
US5943501A (en) 1997-06-27 1999-08-24 Wisconsin Alumni Research Foundation Multiple processor, distributed memory computer with out-of-order processing
US5930158A (en) 1997-07-02 1999-07-27 Creative Technology, Ltd Processor with instruction set for audio effects
US6182210B1 (en) 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6178498B1 (en) 1997-12-18 2001-01-23 Idea Corporation Storing predicted branch target address in different storage according to importance hint in branch prediction instruction
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
TW440793B (en) 1998-02-25 2001-06-16 Koninkl Philips Electronics Nv A method for structuring a multi-instruction computer program from basic blocks that compose from internal instructions and external jumps in an internal directed acyclic graph, and a processor loaded with such program
US6164841A (en) 1998-05-04 2000-12-26 Hewlett-Packard Company Method, apparatus, and product for dynamic software code translation system
US6988183B1 (en) 1998-06-26 2006-01-17 Derek Chi-Lan Wong Methods for increasing instruction-level parallelism in microprocessors and digital system
US6240510B1 (en) * 1998-08-06 2001-05-29 Intel Corporation System for processing a cluster of instructions where the instructions are issued to the execution units having a priority order according to a template associated with the cluster of instructions
US6367004B1 (en) 1998-12-31 2002-04-02 Intel Corporation Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared
US7430670B1 (en) 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6477637B1 (en) 1999-09-30 2002-11-05 International Business Machines Corporation Method and apparatus for transporting store requests between functional units within a processor
US6918032B1 (en) 2000-07-06 2005-07-12 Intel Corporation Hardware predication for conditional instruction path branching
JP3664473B2 (ja) 2000-10-04 2005-06-29 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの最適化方法及びこれを用いたコンパイラ
US20030023959A1 (en) * 2001-02-07 2003-01-30 Park Joseph C.H. General and efficient method for transforming predicated execution to static speculation
US7032217B2 (en) 2001-03-26 2006-04-18 Intel Corporation Method and system for collaborative profiling for continuous detection of profile phase transitions
US7095343B2 (en) 2001-10-09 2006-08-22 Trustees Of Princeton University code compression algorithms and architectures for embedded systems
AU2002363142A1 (en) 2001-10-31 2003-05-12 Doug Burger A scalable processing architecture
US7114059B2 (en) * 2001-11-05 2006-09-26 Intel Corporation System and method to bypass execution of instructions involving unreliable data during speculative execution
US6892292B2 (en) 2002-01-09 2005-05-10 Nec Corporation Apparatus for one-cycle decompression of compressed data and methods of operation thereof
JP2005522773A (ja) 2002-04-08 2005-07-28 ユニバーシティー・オブ・テキサス・システム 非均等型キャッシュ装置、システム及び方法
WO2004001584A2 (en) 2002-06-24 2003-12-31 Ante Vista Gmbh A method for executing structured symbolic machine code on a microprocessor
JP3804941B2 (ja) 2002-06-28 2006-08-02 富士通株式会社 命令フェッチ制御装置
JP4196614B2 (ja) 2002-08-22 2008-12-17 パナソニック株式会社 命令スケジューリング方法、命令スケジューリング装置、及びプログラム
US7299458B2 (en) 2002-10-31 2007-11-20 Src Computers, Inc. System and method for converting control flow graph representations to control-dataflow graph representations
US7308682B2 (en) 2003-04-25 2007-12-11 Intel Corporation Method and apparatus for recovering data values in dynamic runtime systems
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
EP1731998A1 (en) 2004-03-29 2006-12-13 Kyoto University Data processing device, data processing program, and recording medium containing the data processing program
US7424482B2 (en) 2004-04-26 2008-09-09 Storwize Inc. Method and system for compression of data for block mode access storage
JP4296996B2 (ja) 2004-06-15 2009-07-15 富士通株式会社 マルチコアプロセサ制御方式
US7302543B2 (en) 2004-06-16 2007-11-27 Nec Laboratories America, Inc. Compressed memory architecture for embedded systems
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US7624386B2 (en) 2004-12-16 2009-11-24 Intel Corporation Fast tree-based generation of a dependence graph
US7552318B2 (en) 2004-12-17 2009-06-23 International Business Machines Corporation Branch lookahead prefetch for microprocessors
US7380038B2 (en) 2005-02-04 2008-05-27 Microsoft Corporation Priority registers for biasing access to shared resources
US7853777B2 (en) 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US8312452B2 (en) 2005-06-30 2012-11-13 Intel Corporation Method and apparatus for a guest to access a privileged register
US8266413B2 (en) 2006-03-14 2012-09-11 The Board Of Trustees Of The University Of Illinois Processor architecture for multipass processing of instructions downstream of a stalled instruction
TW200739419A (en) * 2006-04-07 2007-10-16 Univ Feng Chia Prediction mechanism of a program backward jump instruction
US7487340B2 (en) 2006-06-08 2009-02-03 International Business Machines Corporation Local and global branch prediction information storage
US20070288733A1 (en) 2006-06-08 2007-12-13 Luick David A Early Conditional Branch Resolution
KR100817056B1 (ko) 2006-08-25 2008-03-26 삼성전자주식회사 분기이력 길이표시기, 분기예측 시스템 및 분기 예측 방법
US7809926B2 (en) 2006-11-03 2010-10-05 Cornell Research Foundation, Inc. Systems and methods for reconfiguring on-chip multiprocessors
EP2527972A3 (en) 2006-11-14 2014-08-06 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US8291400B1 (en) 2007-02-07 2012-10-16 Tilera Corporation Communication scheduling for parallel processing architectures
US8180997B2 (en) 2007-07-05 2012-05-15 Board Of Regents, University Of Texas System Dynamically composing processor cores to form logical processors
US8447911B2 (en) 2007-07-05 2013-05-21 Board Of Regents, University Of Texas System Unordered load/store queue
JP2009026106A (ja) 2007-07-20 2009-02-05 Oki Electric Ind Co Ltd 命令コード圧縮方法と命令フェッチ回路
US7516365B2 (en) 2007-07-27 2009-04-07 Sun Microsystems, Inc. System and method for split hardware transactions
JP5043560B2 (ja) * 2007-08-24 2012-10-10 パナソニック株式会社 プログラム実行制御装置
US9384003B2 (en) 2007-10-23 2016-07-05 Texas Instruments Incorporated Determining whether a branch instruction is predicted based on a capture range of a second instruction
US7870371B2 (en) 2007-12-17 2011-01-11 Microsoft Corporation Target-frequency based indirect jump prediction for high-performance processors
US7818551B2 (en) 2007-12-31 2010-10-19 Microsoft Corporation Feedback mechanism for dynamic predication of indirect jumps
US8321850B2 (en) 2008-06-06 2012-11-27 Vmware, Inc. Sharing and persisting code caches
US20100146209A1 (en) 2008-12-05 2010-06-10 Intellectual Ventures Management, Llc Method and apparatus for combining independent data caches
US8127119B2 (en) 2008-12-05 2012-02-28 The Board Of Regents Of The University Of Texas System Control-flow prediction using multiple independent predictors
US20100191943A1 (en) * 2009-01-26 2010-07-29 Agere Systems Inc. Coordination between a branch-target-buffer circuit and an instruction cache
US20100325395A1 (en) 2009-06-19 2010-12-23 Doug Burger Dependence prediction in a memory system
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
US20110078424A1 (en) 2009-09-30 2011-03-31 International Business Machines Corporation Optimizing program code using branch elimination
US8464002B2 (en) 2009-10-14 2013-06-11 Board Of Regents Of The University Of Texas System Burst-based cache dead block prediction
WO2011067896A1 (en) 2009-12-02 2011-06-09 Mush-A Co., Ltd. Data processing apparatus, data processing system, packet, recording medium, storage device, and data processing method
JP5057256B2 (ja) 2009-12-02 2012-10-24 株式会社Mush−A データ処理装置、データ処理システムおよびデータ処理方法
EP2519876A1 (en) 2009-12-28 2012-11-07 Hyperion Core, Inc. Optimisation of loops and data flow sections
GB201001621D0 (en) 2010-02-01 2010-03-17 Univ Catholique Louvain A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms
KR101603751B1 (ko) 2010-02-18 2016-03-16 삼성전자주식회사 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법
US8201024B2 (en) 2010-05-17 2012-06-12 Microsoft Corporation Managing memory faults
US20120158647A1 (en) 2010-12-20 2012-06-21 Vmware, Inc. Block Compression in File System
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9304776B2 (en) 2012-01-31 2016-04-05 Oracle International Corporation System and method for mitigating the impact of branch misprediction when exiting spin loops

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5903750A (en) * 1996-11-20 1999-05-11 Institute For The Development Of Emerging Architectures, L.L.P. Dynamic branch prediction for branch instructions with multiple targets
US6353883B1 (en) * 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
JP2001175473A (ja) * 1999-08-31 2001-06-29 Internatl Business Mach Corp <Ibm> コンピュータ処理システムにおいて実行述語を実現する方法及び装置
JP2002149401A (ja) * 2000-09-28 2002-05-24 Internatl Business Mach Corp <Ibm> マイクロプロセッサ内の命令処理法方、マイクロプロセッサ及び情報処理システム
JP2013500539A (ja) * 2009-09-09 2013-01-07 ボード オブ リージエンツ,ユニバーシテイ オブ テキサス システム 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JPN6014007361; David I. August et al.: '"Architectural Support for Compiler-Synthesized Dynamic Branch Prediction Strategies: Rationale and' Third International Symposium on High-Performance Computer Architecture, 1997. , 19970205, IEEE *
JPN6014007362; Beth Simon et al.: '"Incorporating Predicate Information Into Branch Predictors"' Proceedings. The Ninth International Symposium on High-Performance Computer Architecture, 2003. HPCA , 20030212, IEEE *
JPN6014007363; Nitya Ranganathan: '"Control flow speculation for distributed architectures"' Dissertation Presented to the Faculty of the Graduate School of The University of Texas at Austin , 200905, pages: i-ix,157-177,237-246, The University of Texas at Austin *

Also Published As

Publication number Publication date
WO2011159309A1 (en) 2011-12-22
US9021241B2 (en) 2015-04-28
US9703565B2 (en) 2017-07-11
JP5707011B2 (ja) 2015-04-22
KR101523020B1 (ko) 2015-05-26
US20150199199A1 (en) 2015-07-16
KR20130031896A (ko) 2013-03-29
KR20150052350A (ko) 2015-05-13
KR101731752B1 (ko) 2017-04-28
KR20150132884A (ko) 2015-11-26
KR101731742B1 (ko) 2017-04-28
US20130086370A1 (en) 2013-04-04

Similar Documents

Publication Publication Date Title
JP5707011B2 (ja) 統合分岐先・述語予測
US9619298B2 (en) Scheduling computing tasks for multi-processor systems based on resource requirements
US7401329B2 (en) Compiling computer programs to exploit parallelism without exceeding available processing resources
US9990186B2 (en) Determination of branch convergence in a sequence of program instruction
US6675380B1 (en) Path speculating instruction scheduler
JP2004302706A (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
Ogilvie et al. Fast automatic heuristic construction using active learning
US20200387382A1 (en) Mechanism for instruction fusion using tags
US11288047B2 (en) Heterogenous computer system optimization
US8458679B2 (en) May-constant propagation
JP2015201119A (ja) コンパイルプログラム、コンパイル方法およびコンパイル装置
US20180004627A1 (en) Sequential monitoring and management of code segments for run-time parallelization
CN111061485A (zh) 任务处理方法、编译器、调度服务器和介质
US20090178054A1 (en) Concomitance scheduling commensal threads in a multi-threading computer system
KR102161055B1 (ko) 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치
US20170115973A1 (en) Operating method of semiconductor device and semiconductor system
JP2014228891A (ja) コンパイラおよびコンパイル方法
US20120089823A1 (en) Processing apparatus, compiling apparatus, and dynamic conditional branch processing method
Kumar et al. An approach for compiler optimization to exploit instruction level parallelism
US8549508B2 (en) Mechanism for performing instruction scheduling based on register pressure sensitivity
JP6254352B2 (ja) ループのプロローグまたはエピローグの無効演算を処理する装置及び方法
KR100829167B1 (ko) 소프트웨어 파이프라이닝의 데이터 의존도 완화 방법
Keckler et al. Combined branch target and predicate prediction for instruction blocks
WO2020172788A1 (en) Workload oriented constant propagation for compiler
Keckler et al. Combined branch target and predicate prediction

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140508

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140911

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20141007

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150113

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150228

R150 Certificate of patent or registration of utility model

Ref document number: 5707011

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

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