JP6008265B2 - パイプライン化されたスケジュールにおけるエイリアスレジスタ割り当て - Google Patents
パイプライン化されたスケジュールにおけるエイリアスレジスタ割り当て Download PDFInfo
- Publication number
- JP6008265B2 JP6008265B2 JP2015520204A JP2015520204A JP6008265B2 JP 6008265 B2 JP6008265 B2 JP 6008265B2 JP 2015520204 A JP2015520204 A JP 2015520204A JP 2015520204 A JP2015520204 A JP 2015520204A JP 6008265 B2 JP6008265 B2 JP 6008265B2
- Authority
- JP
- Japan
- Prior art keywords
- alias
- loop
- lifetime
- register
- iteration
- 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.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 claims description 92
- 238000000034 method Methods 0.000 claims description 32
- 230000004044 response Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 description 15
- 239000000872 buffer Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000003068 static effect Effects 0.000 description 8
- 238000001514 detection method Methods 0.000 description 5
- 238000005352 clarification Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1615—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
- G06F9/30127—Register windows
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
- G06F8/434—Pointers; Aliasing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/441—Register allocation; Assignment of physical memory space to logical memory space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
データ投機によって、より並列性が可能となり(例えば、オペレーションのアウトオブオーダ処理による計算リソースの効率的な利用)が可能となるが、一方で、エラーにつながりうる。例えば、メモリアクセスが互いにエイリアスを生じる場合(例えば、メモリアクセスが、重複するメモリ位置を対象とする場合)、又は、実行スケジュールのメモリアクセスの順序が、元のループにおけるその順序と異なっている場合には、データ投機が誤っていたことになる(例えばデータ投機が失敗する)。エイリアスを生じさせるようなこのケースをキャッチするために、各メモリアクセスは、アクセスが実行されたときの、アクセスのアドレスのメモリ範囲を記録するエイリアスレジスタを割り当てられることができる(例えば、アドレスから始まり、アクセスされたメモリ範囲)。アクセスのメモリ範囲は、全ての潜在的にエイリアスされる可能性のあるアクセスのエイリアスレジスタと比較され、マッチするものがある場合に、エイリアスが特定される(例えばデータ投機の失敗)。そのような失敗は、例えば復帰コードの実行によって処理されてよい。幾つかの実施形態では、復帰コードの実行は、ループの前のイタレーションにロールバックしてしまうこともあり、及び/又は、オペレーションを順序づけ直して、エイリアスを取り除いてしまうこともある。
1)a→b:(例えば同じイタレーション)ゼロの距離(例えばイタレーションの間の距離)である、これは、同じイタレーションにおけるオペレーションaのライフタイムが、オペレーションbのライフタイムと同じ又はこれより小さな数のレジスタを割り当てられることを意味する。2)a→b:(隣接するイタレーション)1の距離である、これは、或るイタレーションにおけるオペレーションaのライフタイムが、隣接するイタレーションのオペレーションbのライフタイムと同じ又はこれより小さな数のレジスタを割り当てられ、ローテーションエイリアスレジスタが、ローテーションレジスタの数値的に「上方向」の順序でチェックされることを意味する。
(1)全てのiについて、モジュロ制約:r(a, i) = r(a, 0) + i * CここでCは、スケジューラが決定する定数である。つまり、スケジュールのレジスタとして、オペレーションのライフタイムが一定期間に現れる。例えば図2AからCのブロック230では、オペレーションaのライフタイムが、図3の一定期間C=2に現れ(レジスタ0及び2)、オペレーションaのライフタイムが、一定期間C=1に現れる(レジスタ0及び1)。
(2)依存関係の制約:d ≧ 0であるとき、a(i)及びb(i+d)がエイリアスされるとすると、元の実行順序ではa(i)がb(i+d)の前であるが、これらは、ループのソフトウェアパイプライン化されたスケジュールでは順序付け直される。どのエイリアスもランタイム中に確実にキャッチされるよう、我々は全てのiについてr(a, i) ≦r(b, i+d)とする。つまり、a(i)は、b(i+d)と同じレジスタを割り当てられ、又は、これより小さい数のレジスタを割り当てられることで、a(i)のメモリアドレス範囲を、b(i+d)のメモリアドレス範囲と比較させる。これは、ローテーションレジスタファイルの一方向比較特徴のためである。この制約は、距離がdに等しく、待ち時間(レジスタについて)が0である依存関係a→bによりモデリングすることができる。
(3)リソース制約:2つのオペレーションのライフタイムが時間的に重複している場合、これらには同じレジスタを割り当てることができない。
1.依存関係の構築
距離dの(a及びbの間のイタレーション数)を持つ依存関係a→bが、d=0であるときを除き上述した依存関係の制約に従って依存関係のグラフに追加されるが、元の実行順序の同じイタレーションにおいてaは、bの後にある。更に、依存関係のグラフにおいてローカルサイクルを完了させない限りにおいて、以下の依存関係を、偽の正を回避するために追加することができ、ここで、ローカルサイクルとは、距離が全て0である依存関係からなる。d≧ 0である場合にa(i)及びb(i+d)がエイリアスされうると仮定すると、元の実行順序においても更にループのソフトウェアパイプライン化されたスケジュールにおいても、a(i)がb(i+d)の前である。この場合、b(i+d)が実行されているとき、a(i)をエイリアスを求めてチェックすべきではない。 これは、b(i+d)を確実にa (i)より大きな数のレジスタに割り当てるようにすることで実施することができる。つまり、全てのiについて、r(a, i) < r(b, i+d)である。これは、距離がdに等しく1の待ち時間をもつ依存関係a →bを追加することで行うことができる。偽の正は、更に、依存関係のグラフにおけるローカルサイクルを完了させない限り、以下の種類の依存関係を追加することで最小限に抑えることができる。同じイタレーションからのオペレーションa及びbにおいては、aがbを決してチェックしない場合が存在しうる。距離がゼロに等しく、待ち時間が1である依存関係b→aを追加することができる。
2.循環スケジュール
1)ローカル依存関係のみに基づいてライフタイムをスケジュールする。つまり、距離が0である依存関係のみを考慮して、全ての他のものを無視する。これにより、単一のループのイタレーションのライフタイムのためのスケジュールが生成される。様々な戦略が利用されて、スケジュールされるライフタイムに優先度をつけることができる。或る実施形態では、「ファーストフィット」と称されるシンプルなスケジュール戦略を用いてよい。つまり、1を超えるライフタイムのスケジュールの準備ができている場合、これを最も早い開始時間で優先させることができる。
2)全てのループのイタレーションのライフタイムは同じスケジュールを持つと仮定する。無視された依存関係を考慮して、2つの連続するループのイタレーションのライフタイムのスケジュールを重複させる。これにより、イタレーション間のレジスタの再利用が可能となる、よりコンパクトなスケジュールが生成される。ローカルスケジューリング及びコンパクト化するアプローチは、ファーストフィット戦略と一緒に利用されることで、効果的に偽の正を低減させることができる。
3.(上の)依存関係の構築でサイクル形成を回避するべく追加されなかった依存関係の処理省かれた依存関係a→bのそれぞれについて、スケジュールによって配慮されたか決定するべくチェックする。されなかった場合には、bを静的なエイリアスレジスタに移動させる。
4.レジスタ割り当てとローテーションレジスタ割り当ては、無限の数のレジスタを持つフラットな時空ダイアグラムを仮定することができる。ローテーションレジスタファイルのものにダイアグラムのレジスタ番号をマッピングする。更にローテーション命令を、各IIサイクルについてループのソフトウェアパイプライン化されたスケジュールに挿入することができ、これにより、各IIサイクルごとにC個の数の死んだライフタイムを「一掃」することができる。
ここで、上述したように、アーキテクチャ状態レジスタ(601a, 601b, 602a, 及び602b)は、処理エレメント、スレッドスロット、又はスレッドユニットと称されて良い。例示したように、アーキテクチャ状態レジスタ601aは、アーキテクチャ状態レジスタ601bに複製され、これにより個々のアーキテクチャ状態/コンテキストが、論理プロセッサ601a及び論理プロセッサ601bのためにストアすることができる。コア601では、他のより小さいリソース、例えばアロケータ及びリネーマブロック630における命令ポインタ及びリネーム論理等も、更に、スレッド601a及び601bのために複製されてよい。幾つかのリソース、例えばリオーダ/リタイヤユニット635、ILTB620、ロード/ストアバッファ、及びキュー等も、パーティショニングによって共有されてよい。他のリソース、例えば汎用内部レジスタ、ページテーブルベースレジスタ、低レベルデータキャッシュ及びデータTLB615、実行ユニット640、及びアウトオブオーダユニット635の部分も、潜在的に完全に共有される。
システムは更にプロセッサに連結されたメモリを含む。任意で、プロセッサは更に、パイプライン化されたスケジュールに従ってループのオペレーションをスケジュールするための命令スケジュール論理を含み、ここでループの少なくとも1つのオペレーションが、ループのオペレーションの順序とは異なる実行スケジュールに従って実行される。任意で、1又は複数のコアの1つが、第1のエイリアスレジスタにストアされているデータを、エイリアスレジスタの少なくとも他の1つにストアされているデータと比較することを実行して、エイリアスが存在するかを決定してよい。任意で、第1のエイリアスレジスタが、第1のライフタイムの間は第1のオペレーションに割り当てられてよく、第1のエイリアスレジスタが、第2のライフタイムの間は第2のオペレーションに割り当てられてよく、第1のライフタイム及び第2のライフタイムが、重ならない期間であってよい。任意で、第1のライフタイムがループの第1のイタレーションの範囲内であり、第2のライフタイムが、第1のイタレーションに連続する次のイタレーションであるループの第2のイタレーションの範囲内である。任意で、レジスタ割り当て論理が、ローテーション一掃命令を実行して、関連するライフタイムが期限切れになった各エイリアスレジスタの内容を削除してよい。
任意で、第1のライフタイム及び第2のライフタイムは、ループの隣り合わないイタレーションのなかにある。任意で、少なくとも1つのコンピュータ可読媒体は、実行されるとシステムに、順序関係に基づくオペレーションに対するライフタイムを、同じ又は異なるイタレーション内の別のオペレーションに割り当てさせ、対応するエイリアスレジスタを、ライフタイムの期間の間はオペレーションに割り当てさせる更なる命令を含む。任意で、少なくとも1つのコンピュータ可読媒体は、実行されるとシステムに、期間が期限切れになると、対応するエイリアスレジスタを、別のイタレーションの別のオペレーションに割り当て直させる命令を更に含む。任意で、少なくとも1つのコンピュータ可読媒体は、実行されるとシステムに、順序関係の存在に応じてエイリアスをチェックさせる命令を更に含み、順序関係は、パイプライン化されたスケジュールに従って、ループの第2のオペレーションの後に実行するようスケジュールされたループの第1のオペレーションと、ループの第1のオペレーションがループの第2のオペレーションの前に実行可能であるというループのインディケーションとに呼応して示される。
任意で、第1のライフタイム及び第2のライフタイムは、ループの連続した隣の複数のイタレーションのなかにある任意で、方法は、第1のエイリアスレジスタを、第1のライフタイムの間はループの第1のイタレーションの第2のオペレーションに割り当て、第1のエイリアスレジスタを、第2のライフタイムの間はループの第2のイタレーションの第1のオペレーションに割り当てる段階を含み、第1のライフタイム及び第2のライフタイムは、重ならない期間である。任意で、方法は、同じ板レーション又は異なるイタレーション内で別のオペレーションに対する順序関係に基づいてオペレーションに対してライフタイムを割り当てる段階と、対応するエイリアスレジスタを、ライフタイムの期間の間はオペレーションに割り当てる段階とを含む。任意で、方法は、期間が期限切れになると、対応するエイリアスレジスタを、別のイタレーションの別のオペレーションに割り当て直す段階を含む。任意で、方法は、ループの第1のオペレーションに割り当てられた第1のエイリアスレジスタの内容を、第2のオペレーションに関する第2のライフタイムの間、第2のオペレーションに割り当てられた第2のエイリアスレジスタの内容と比較することにより、ループの第1のイタレーションにエイリアスが存在するかを決定することを含み、第2のライフタイムは、第2のオペレーションの第2のスケジュールされた実行時間に対する第1のオペレーションの第1のスケジュールされた実行時間により決定される。
任意で、方法は、順序関係の存在に応じてエイリアスをチェックする段階を含み、順序関係は、パイプライン化されたスケジュールに従って、ループの第2のイタレーションの後に実行するようスケジュールされたループの第1のオペレーションと、ループの第1のオペレーションがループの第2のオペレーションの前に実行可能であるというループのインディケーションとに呼応して示される。
割り当ては、ローテーションスケジュールに従って作成され、複数のエイリアスレジスタの少なくとも1つは、ループの第1のイタレーションの第1のオペレーションと、ループの後続するイタレーションの第2のオペレーションとに割り当てられる。システムは更に、プロセッサに連結されたメモリを含む。任意で、プロセッサは、パイプライン化されたスケジュールに従ってループの複数のオペレーションをスケジュールするための命令スケジュール論理を更に含み、ループの少なくとも1つのオペレーションは、ループの複数のオペレーションの順序と異なる実行スケジュールに従って実行される。任意で、1又は複数のコアの1つは、エイリアスが存在するかを決定するために、複数のエイリアスレジスタの他の少なくとも1つにストアされているデータに対する、第1のエイリアスレジスタにストアされているデータの比較を実行する。任意で、第1のエイリアスレジスタは、第1のライフタイムの間は第1のオペレーションに割り当てられ、第1のエイリアスレジスタは、第2のライフタイムの間は第2のオペレーションに割り当てられ、第1のライフタイム及び第2のライフタイムは、重ならない期間である。任意で、第1のライフタイムは、ループの第1のイタレーションの範囲内であり、第2のライフタイムが、第1のイタレーションに連続する次のイタレーションであるループの第2のイタレーションの範囲内である。任意で、レジスタ割り当て論理は、関連するライフタイムが期限切れになった各エイリアスレジスタの内容を削除するためのローテーション一掃命令を更に実行する。
Claims (24)
- プロセッサと、
前記プロセッサに連結されたメモリと
を備え、
前記プロセッサは、
1又は複数のコアと、
ループの複数のオペレーションに関連するメモリ範囲情報をストアするために複数のエイリアスレジスタを含むレジスタファイルであって、前記メモリ範囲情報は、メモリ内の1又は複数のメモリ位置を参照する、前記レジスタファイルと、
前記複数のエイリアスレジスタのそれぞれを前記ループの対応するオペレーションに割り当てるレジスタ割り当て手段であって、前記割り当ては、ローテーションスケジュールに従って作成され、前記複数のエイリアスレジスタの少なくとも1つは、前記ループの第1のイタレーションの第1のオペレーションと、前記ループの後続するイタレーションの第2のオペレーションとに割り当てられる、前記レジスタ割り当て手段と
を有し、
前記1又は複数のコアの少なくとも1つは、エイリアスが存在するかを決定するために、前記複数のエイリアスレジスタの他の少なくとも1つにストアされているデータに対する、第1のエイリアスレジスタにストアされているデータの比較を実行する、システム。 - 前記プロセッサは更に、
パイプライン化されたスケジュールに従って前記ループの前記複数のオペレーションをスケジュールするための命令スケジュール手段を有し、
前記ループの少なくとも1つのオペレーションは、前記ループの前記複数のオペレーションの順序と異なる実行スケジュールに従って実行される、請求項1に記載のシステム。 - 第1のエイリアスレジスタは、第1のライフタイムの間は前記第1のオペレーションに割り当てられ、前記第1のエイリアスレジスタは、第2のライフタイムの間は第2のオペレーションに割り当てられ、前記第1のライフタイム及び前記第2のライフタイムは、重ならない期間である、請求項1に記載のシステム。
- 前記第1のライフタイムは、前記ループの第1のイタレーションの範囲内であり、前記第2のライフタイムが、前記第1のイタレーションに連続する次のイタレーションである前記ループの第2のイタレーションの範囲内である、請求項3に記載のシステム。
- 前記レジスタ割り当て手段は、関連するライフタイムが期限切れになった各エイリアスレジスタの内容を削除するためのローテーション一掃命令を実行する、請求項1から4のいずれか一項に記載のシステム。
- ローテーションレジスタファイルの複数のエイリアスレジスタのそれぞれを、ループの複数のイタレーションのためのローテーションシーケンスに従って連続して前記ループの対応するオペレーションに割り当てる手順であって、各エイリアスレジスタが、前記対応するオペレーションに基づきアクセスする1又は複数のメモリ位置のインディケーションをストアし、前記複数のエイリアスレジスタの1つは、前記ループの第1のイタレーションの第1のオペレーションと、前記ループの後続するイタレーションの第2のオペレーションとに割り当てられる、前記割り当てる手順と、
前記割り当てられた複数のエイリアスレジスタの少なくとも1つの内容を、1又は複数の他の割り当てられたエイリアスレジスタの内容と比較することで、エイリアス条件が存在するかを決定する手順と
をシステムに実行させる、プログラム。 - 第1のエイリアスレジスタは、第1のライフタイムの間は前記第1のオペレーションに割り当てられ、前記第1のエイリアスレジスタは、第2のライフタイムの間は前記第2のオペレーションに割り当てられ、前記第1のライフタイム及び前記第2のライフタイムは、重ならない期間である、請求項6に記載のプログラム。
- 前記第1のライフタイム及び前記第2のライフタイムは、前記ループの連続した隣り合う複数のイタレーション内に含まれる、請求項7に記載のプログラム。
- 前記第1のライフタイム及び前記第2のライフタイムは、前記ループの隣り合わないイタレーションのなかにある、請求項7に記載のプログラム。
- 前記システムに更に、
同じ又は異なるイタレーションにある別のオペレーションに対する順序関係に基づいてオペレーションに対してライフタイムを割り当てる手順と、
対応するエイリアスレジスタを、前記ライフタイムの期間は前記オペレーションに割り当てる手順と
を実行させる、請求項6に記載のプログラム。 - 前記システムに、前記期間が期限切れになると、前記対応するエイリアスレジスタを、別のイタレーションの別のオペレーションに割り当て直す手順を実行させる、請求項10に記載のプログラム。
- 前記システムに更に、順序関係の存在に応じて前記エイリアス条件が存在するかを決定する手順を実行させ、
前記順序関係は、
パイプライン化されたスケジュールに従って、前記ループの前記第2のオペレーションの後に実行するようスケジュールされた前記ループの前記第1のオペレーションと、
前記ループの第1のオペレーションが前記ループの前記第2のオペレーションの前に実行可能であるという前記ループでの指定と
に呼応して存在が示される、
請求項6から11のいずれか一項に記載のプログラム。 - レジスタファイルの複数のエイリアスレジスタのそれぞれを、ループの複数のイタレーションのためのローテーションシーケンスに従って連続して前記ループの対応するオペレーションに割り当てる段階であって、前記複数のエイリアスレジスタの1つを、前記ループの第1のイタレーションの第1のオペレーションと、前記ループの後続するイタレーションの第2のオペレーションとに割り当てることを含み、各エイリアスレジスタは、前記対応するオペレーションによりアクセスされる複数のメモリ位置のインディケーションをストアする、前記割り当てる段階と、
前記割り当てられた複数のエイリアスレジスタの少なくとも1つの内容を、1又は複数の他の割り当てられたエイリアスレジスタの内容と比較することで、エイリアス条件が存在するかを決定する段階と
を備える方法。 - 第1のエイリアスレジスタを、第1のライフタイムの間は前記第1のオペレーションに割り当て、前記第1のエイリアスレジスタを、第2のライフタイムの間は前記第2のオペレーションに割り当てる段階を更に備え、
前記第1のライフタイム及び前記第2のライフタイムは、重ならない期間である、請求項13に記載の方法。 - 前記第1のライフタイム及び前記第2のライフタイムは、前記ループの連続した隣り合う複数のイタレーション内に含まれる、請求項14に記載の方法。
- 第1のエイリアスレジスタを、第1のライフタイムの間は前記ループの第1のイタレーションの前記第2のオペレーションに割り当て、前記第1のエイリアスレジスタを、第2のライフタイムの間は前記ループの第2のイタレーションの前記第1のオペレーションに割り当てる段階を更に備え、
前記第1のライフタイム及び前記第2のライフタイムは、重ならない期間である、請求項13に記載の方法。 - 同じイタレーション又は異なるイタレーションにある別のオペレーションに対する順序関係に基づいてオペレーションに対してライフタイムを割り当てる段階と、
対応するエイリアスレジスタを、前記ライフタイムの期間は前記オペレーションに割り当てる段階と
を更に備える、請求項13に記載の方法。 - 前記期間が期限切れになると、前記対応するエイリアスレジスタを、別のイタレーションの別のオペレーションに割り当て直す段階を更に備える、請求項17に記載の方法。
- 前記ループの前記第1のオペレーションに割り当てられた第1のエイリアスレジスタの内容を、前記第2のオペレーションに関する第2のライフタイムの間、前記第2のオペレーションに割り当てられた第2のエイリアスレジスタの内容と比較することにより、前記ループの第1のイタレーションにエイリアスが存在するかを決定する段階を更に備え、
前記第2のライフタイムは、前記第2のオペレーションの第2のスケジュールされた実行時間に対する前記第1のオペレーションの第1のスケジュールされた実行時間により決定される、請求項13に記載の方法。 - 前記エイリアス条件が存在するかを決定する段階は、順序関係の存在に応じて実行され、
前記順序関係は、
パイプライン化されたスケジュールに従って、前記ループの前記第2のオペレーションの後に実行するようスケジュールされた前記ループの前記第1のオペレーションと、
前記ループの第1のオペレーションが前記ループの前記第2のオペレーションの前に実行可能であるという前記ループでの指定と
に呼応して存在が示される、請求項13に記載の方法。 - 請求項13から20のいずれか一項の方法を実行するための手段を備える装置。
- 請求項13から20のいずれか一項の方法を実行する装置。
- 1又は複数のコアと、
ループの複数のオペレーションに関連するメモリ範囲情報をストアするために複数のエイリアスレジスタを含むレジスタファイルであって、前記メモリ範囲情報は、メモリ内の1又は複数のメモリ位置を参照する、前記レジスタファイルと、
前記複数のエイリアスレジスタのそれぞれを前記ループの対応するオペレーションに割り当てるためのレジスタ割り当て論理であって、前記割り当ては、ローテーションスケジュールに従って作成され、前記複数のエイリアスレジスタの少なくとも1つは、前記ループの第1のイタレーションの第1のオペレーションと、前記ループの後続するイタレーションの第2のオペレーションとに割り当てられる、前記レジスタ割り当て論理と
を備え、
前記1又は複数のコアの少なくとも1つは、エイリアスが存在するかを決定するために、前記複数のエイリアスレジスタの他の少なくとも1つにストアされているデータに対する、第1のエイリアスレジスタにストアされているデータの比較を実行する、
プロセッサ。 - パイプライン化されたスケジュールに従って前記ループの前記複数のオペレーションをスケジュールするための命令スケジュール論理を更に備え、
前記ループの少なくとも1つのオペレーションは、前記ループの前記複数のオペレーションの順序と異なる実行スケジュールに従って実行される、
請求項23に記載のプロセッサ。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/043224 WO2014193375A1 (en) | 2013-05-30 | 2013-05-30 | Allocation of alias registers in a pipelined schedule |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2015520905A JP2015520905A (ja) | 2015-07-23 |
JP2015520905A5 JP2015520905A5 (ja) | 2016-05-26 |
JP6008265B2 true JP6008265B2 (ja) | 2016-10-19 |
Family
ID=51989239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015520204A Expired - Fee Related JP6008265B2 (ja) | 2013-05-30 | 2013-05-30 | パイプライン化されたスケジュールにおけるエイリアスレジスタ割り当て |
Country Status (7)
Country | Link |
---|---|
US (1) | US9495168B2 (ja) |
EP (1) | EP2875427B1 (ja) |
JP (1) | JP6008265B2 (ja) |
KR (1) | KR101752042B1 (ja) |
CN (1) | CN104412233B (ja) |
AU (1) | AU2013387185B2 (ja) |
WO (1) | WO2014193375A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105164637B (zh) * | 2013-05-30 | 2017-12-19 | 英特尔公司 | 用于执行循环的方法、系统、装置和处理器以及机器可读介质 |
US20170192789A1 (en) * | 2015-12-30 | 2017-07-06 | Rama Kishnan V. Malladi | Systems, Methods, and Apparatuses for Improving Vector Throughput |
US10169010B2 (en) | 2016-06-01 | 2019-01-01 | International Business Machines Corporation | Performing register promotion optimizations in a computer program in regions where memory aliasing may occur and executing the computer program on processor hardware that detects memory aliasing |
US9934009B2 (en) * | 2016-06-01 | 2018-04-03 | International Business Machines Corporation | Processor that includes a special store instruction used in regions of a computer program where memory aliasing may occur |
US10169009B2 (en) * | 2016-06-01 | 2019-01-01 | International Business Machines Corporation | Processor that detects memory aliasing in hardware and assures correct operation when memory aliasing occurs |
US10228921B2 (en) * | 2016-06-01 | 2019-03-12 | International Business Machines Corporation | Compiler that performs register promotion optimizations in regions of code where memory aliasing may occur |
CN108038002B (zh) * | 2017-12-15 | 2021-11-02 | 天津津航计算技术研究所 | 一种嵌入式软件内存管理方法 |
CN108132842B (zh) * | 2017-12-15 | 2021-11-02 | 天津津航计算技术研究所 | 一种嵌入式软件内存管理系统 |
US10798053B2 (en) * | 2017-12-30 | 2020-10-06 | Intel Corporation | Alias-based time-limited lease addressing for internet of things devices |
US11435987B2 (en) * | 2019-12-24 | 2022-09-06 | Advanced Micro Devices, Inc | Optimizing runtime alias checks |
JP7147808B2 (ja) | 2020-06-30 | 2022-10-05 | 株式会社安川電機 | エンジニアリング装置、エンジニアリング方法、及びプログラム |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2786574B2 (ja) * | 1992-05-06 | 1998-08-13 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置 |
WO1998006039A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Disambiguation memory circuit and operating method |
US5958048A (en) * | 1996-08-07 | 1999-09-28 | Elbrus International Ltd. | Architectural support for software pipelining of nested loops |
KR100273759B1 (ko) | 1997-12-26 | 2000-12-15 | 윤종용 | 제어 레지스터를 가지는 특정 용도 전용 하드웨어를 위한제어값 라이트회로 |
US6954927B2 (en) | 1999-02-17 | 2005-10-11 | Elbrus International | Hardware supported software pipelined loop prologue optimization |
US7634635B1 (en) * | 1999-06-14 | 2009-12-15 | Brian Holscher | Systems and methods for reordering processor instructions |
GB0002848D0 (en) * | 2000-02-08 | 2000-03-29 | Siroyan Limited | Communicating instruction results in processors and compiling methods for processors |
GB2367406B (en) * | 2000-06-13 | 2002-06-05 | Siroyan Ltd | Predicated execution of instructions in processors |
US6880154B2 (en) * | 2001-06-29 | 2005-04-12 | Intel Corporation | Alias-free test for dynamic array structures |
US20030154363A1 (en) * | 2002-02-11 | 2003-08-14 | Soltis Donald C. | Stacked register aliasing in data hazard detection to reduce circuit |
US20030237080A1 (en) | 2002-06-19 | 2003-12-25 | Carol Thompson | System and method for improved register allocation in an optimizing compiler |
US20040025153A1 (en) * | 2002-07-30 | 2004-02-05 | Johnson Teresa L. | System and method for software pipelining loops with multiple control flow paths |
US8312331B2 (en) * | 2009-04-16 | 2012-11-13 | Freescale Semiconductor, Inc. | Memory testing with snoop capabilities in a data processing system |
US9405547B2 (en) * | 2011-04-07 | 2016-08-02 | Intel Corporation | Register allocation for rotation based alias protection register |
CN103827816B (zh) * | 2011-09-27 | 2016-11-09 | 英特尔公司 | 加快执行时存储器别名使用检查 |
-
2013
- 2013-05-30 JP JP2015520204A patent/JP6008265B2/ja not_active Expired - Fee Related
- 2013-05-30 CN CN201380033509.XA patent/CN104412233B/zh active Active
- 2013-05-30 AU AU2013387185A patent/AU2013387185B2/en not_active Ceased
- 2013-05-30 KR KR1020147036540A patent/KR101752042B1/ko active IP Right Grant
- 2013-05-30 US US14/126,466 patent/US9495168B2/en active Active
- 2013-05-30 EP EP13885974.9A patent/EP2875427B1/en active Active
- 2013-05-30 WO PCT/US2013/043224 patent/WO2014193375A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
CN104412233A (zh) | 2015-03-11 |
AU2013387185A1 (en) | 2014-12-18 |
EP2875427A4 (en) | 2016-07-13 |
JP2015520905A (ja) | 2015-07-23 |
EP2875427B1 (en) | 2020-08-26 |
CN104412233B (zh) | 2019-05-14 |
US9495168B2 (en) | 2016-11-15 |
AU2013387185B2 (en) | 2016-08-04 |
KR101752042B1 (ko) | 2017-06-28 |
KR20150016599A (ko) | 2015-02-12 |
US20150039861A1 (en) | 2015-02-05 |
EP2875427A1 (en) | 2015-05-27 |
WO2014193375A1 (en) | 2014-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6008265B2 (ja) | パイプライン化されたスケジュールにおけるエイリアスレジスタ割り当て | |
US8438568B2 (en) | Speculative thread execution with hardware transactional memory | |
TWI516908B (zh) | 藉由耦合第一核心類型與第二核心類型來改善電力效能效率之設備、方法及系統 | |
JP4553936B2 (ja) | アウト・オブ・オーダーのdmaコマンドキューにおけるコマンド順序の設定に関する技術 | |
KR101775569B1 (ko) | 가상 재시도 큐 | |
US9405687B2 (en) | Method, apparatus and system for handling cache misses in a processor | |
US20100312850A1 (en) | Extended virtual memory system and method in a computer cluster | |
US11656908B2 (en) | Allocation of memory resources to SIMD workgroups | |
US10152436B2 (en) | Mutual exclusion in a non-coherent memory hierarchy | |
CN106663471B (zh) | 用于反向存储器备份的方法和装置 | |
CN106293894B (zh) | 执行事务性功率管理的硬件设备和方法 | |
KR101697038B1 (ko) | 파이프라이닝된 소프트웨어의 동적 최적화 | |
US7617338B2 (en) | Memory with combined line and word access | |
JP2015520905A5 (ja) | ||
US20140095814A1 (en) | Memory Renaming Mechanism in Microarchitecture | |
US7721145B2 (en) | System, apparatus and computer program product for performing functional validation testing | |
Orosa et al. | Flexsig: Implementing flexible hardware signatures | |
US10289330B2 (en) | Allocating shared memory among multiple tasks in a multiprocessor environment | |
Lee et al. | High-performance and low-energy buffer mapping method for multiprocessor DSP systems | |
CN115756641A (zh) | 类加载方法、系统、设备、芯片、芯片模组及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20141107 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20151127 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160105 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20160328 |
|
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: 20160816 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160901 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6008265 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |