JP6008265B2 - パイプライン化されたスケジュールにおけるエイリアスレジスタ割り当て - Google Patents

パイプライン化されたスケジュールにおけるエイリアスレジスタ割り当て Download PDF

Info

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
Application number
JP2015520204A
Other languages
English (en)
Other versions
JP2015520905A5 (ja
JP2015520905A (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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2015520905A publication Critical patent/JP2015520905A/ja
Publication of JP2015520905A5 publication Critical patent/JP2015520905A5/ja
Application granted granted Critical
Publication of JP6008265B2 publication Critical patent/JP6008265B2/ja
Expired - Fee Related 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • 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
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1615Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • 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/3017Runtime instruction translation, e.g. macros
    • 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
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • G06F8/434Pointers; Aliasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

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

実施形態は、パイプライン化されたスケジュールされたオペレーションに関する。
コンパイラが通常処理するタスクは、メモリ明確化(memory disambiguation)であり、これには、エイリアス解除された(unaliased)メモリアクセス(例えば、異なるメモリ位置を訪れるロード又はストア)の検出を含んで良い。これらのオペレーションは、より良い命令レベルの並列性のために、アウトオブオーダでスケジュールされてよい。これとは対照的に、同じメモリ位置を訪れるメモリオペレーションは、「エイリアス」と称され、アウトオブオーダでスケジュールすることができない。
メモリ明確化はしばしば、コンパイラ最適化(例えばソフトウェアパイプライニング)に含まれている。ソフトウェアパイプライニングは、連続したイタレーションの重複した実行によってループのための命令レベルの並列化を利用することができる。しかし、連続したイタレーションのオペレーションの実行の重複は、エイリアスを生成する場合がある。
本発明の実施形態における、エイリアスレジスタをスケジュールするためのシステムのブロック図である。
本発明の実施形態におけるエイリアスレジスタ割り当てスキームを示す。 本発明の実施形態におけるエイリアスレジスタ割り当てスキームを示す。 本発明の実施形態におけるエイリアスレジスタ割り当てスキームを示す。
本発明の別の実施形態におけるエイリアスレジスタ割り当てスキームを示す。
本発明の別の実施形態におけるエイリアスレジスタをスケジュールする方法のフローチャートを示す。
本発明の実施形態におけるプロセッサのブロック図である。
本発明の実施形態における複数のコアを含むプロセッサの実施形態を示す。
本発明の実施形態におけるシステムのブロック図である。
ランタイムで実行される最適化のために、メモリ明確化を実現するために、ハードウェアサポートが利用される場合がある。本発明の実施形態では、ハードウェアサポートは、複数のイタレーションのための実行される複数のオペレーションを含むループ等の循環コードに適用されてよい、複数のメモリアクセスレジスタ(「エイリアスレジスタ」)を含むレジスタファイル(例えばローテーションレジスタファイル)を含みうる。実施形態において、エイリアスレジスタは、メモリ明確化を実行して、ランタイムでエイリアスを実行するためにループのソフトウェアパイプライン化されたスケジュールに適用されてよい。
例えばスケジュールフェーズ中には、ループ内のメモリアクセス(例えば、オペレーションをロードしたり、又は、オペレーションをストアしたりする、ここでは「オペレーション」)が、エイリアスする(「データ投機」)ことができないと仮定することができる、例えば、メモリアクセス間に依存関係(例えば順序関係)がないと仮定することができる。
データ投機によって、より並列性が可能となり(例えば、オペレーションのアウトオブオーダ処理による計算リソースの効率的な利用)が可能となるが、一方で、エラーにつながりうる。例えば、メモリアクセスが互いにエイリアスを生じる場合(例えば、メモリアクセスが、重複するメモリ位置を対象とする場合)、又は、実行スケジュールのメモリアクセスの順序が、元のループにおけるその順序と異なっている場合には、データ投機が誤っていたことになる(例えばデータ投機が失敗する)。エイリアスを生じさせるようなこのケースをキャッチするために、各メモリアクセスは、アクセスが実行されたときの、アクセスのアドレスのメモリ範囲を記録するエイリアスレジスタを割り当てられることができる(例えば、アドレスから始まり、アクセスされたメモリ範囲)。アクセスのメモリ範囲は、全ての潜在的にエイリアスされる可能性のあるアクセスのエイリアスレジスタと比較され、マッチするものがある場合に、エイリアスが特定される(例えばデータ投機の失敗)。そのような失敗は、例えば復帰コードの実行によって処理されてよい。幾つかの実施形態では、復帰コードの実行は、ループの前のイタレーションにロールバックしてしまうこともあり、及び/又は、オペレーションを順序づけ直して、エイリアスを取り除いてしまうこともある。
概して、静的とローテーションという、2つの種類のエイリアスレジスタがある。静的なエイリアスレジスタは、ローテーションエイリアスレジスタと異なるよう利用される(例えば、命令にどのようにレジスタの比較がエンコードされるかについて)。静的なエイリアスレジスタとの比較を実行するために、静的なエイリアスレジスタのレジスタ数を明示的にエンコードしてよい。静的なレジスタとは対照的に、ローテーションエイリアスレジスタは通常、個々と比較されない。その代わりに、唯一のレジスタ数のみがエンコードされ、エンコードされたレジスタから始まり、最大番号のレジスタまでの、全てのレジスタが比較される。この技術は、エンコードを解決するが、偽の正を生じる可能性がある、例えば、レジスタが適切に割り当てられていないような場合に。
ローテーションエイリアスレジスタファイルについては、比較は「一方向」であってよい、例えば、比較が、最大番号のレジスタに向かって「下方向」ではなくて、「上方向チェック」であってよい。エイリアスレジスタファイルを指すベースポインタが存在していてよい。「ローテーション」では、ベースポインタが、上に移動し、元のものからベースポインタが指し示している現在のレジスタまで、全てのレジスタが一掃される。
本発明の実施形態は、ソフトウェアパイプライニングにおけるローテーションエイリアスレジスタを利用してよい。本明細書では、「レジスタ」又は「エイリアスレジスタ」は、「ローテーションエイリアスレジスタ」のことを指す。
図1は、本発明の実施形態におけるエイリアスレジスタをスケジュールするためのシステム100のブロック図である。システム100は、ダイナミックランダムアクセスメモリ(DRAM)180に連結されたプロセッサ110を含む。プロセッサ110は、命令を実行するための複数のコア1120, 1121…112nを含んで良い。プロセッサ110は、レジスタ割り当て論理114、命令スケジュール論理116、ローテーションレジスタファイル118、エイリアス検出論理120、及び、キャッシュ122を含む1又は複数のキャッシュメモリを含んで良い。実施形態では、レジスタ割り当て論理114、命令スケジュール論理116、及びエイリアス検出論理120の1又は複数が、ソフトウェア、ハードウェア、ファームウェア、又はこれらの組み合わせであってよい。例えば、レジスタ割り当て論理114は、実行ハードウェア又は専用ファームウェア又は専用回路又はこれらの組み合わせにより実行されるソフトウェアを含んで良い。命令スケジュール論理116は、ソフトウェア、ハードウェア、ファームウェア、又はこれらの組み合わせを含んでよい。例えば命令割り当て論理114は、実行ハードウェア又は専用ファームウェア又は専用回路又はこれらの組み合わせにより実行されるソフトウェアを含んで良い。
オペレーションにおいて、命令スケジュール論理116は、ループ(例えば、複数のN個のイタレーションのためにイタレーション実行される定義されたオペレーションのグループ)の実行のためのオペレーションのスケジュールを作成してよい。命令スケジュール論理116は、利用可能な計算リソースの効率利用を達成するために、オペレーション(例えばソフトウェアパイプライニング)をスケジュールしてよい。
ソフトウェアパイプライニングの結果として、命令スケジュール論理が生成する実行スケジュールによって、ループで指定されるオペレーションの実行の順序と比較して異なる実行の順序となる場合がある。例えば、2つのオペレーションのループ、オペレーションaとその後のオペレーションbが、命令スケジュール論理116によってスケジュールされてよく、これにより、利用可能な計算リソースを効率的に利用するために、各イタレーションにおいて、オペレーションbが行われた後にオペレーションaが行われるようになる。
レジスタ割り当て論理114は、ループの複数のイタレーションそれぞれについて、ローテーションレジスタファイル118の1セットのエイリアスレジスタの各エイリアスレジスタを、ループの対応するオペレーションに割り当ててよい。或る実施形態においては、2つのオペレーションに同時にエイリアスレジスタが割り当てられていない場合に、ローテーションレジスタファイル118の各エイリアスレジスタが、一度を超える回数割り当てられて良い、例えばエイリアスレジスタは、複数のエイリアスレジスタ(例えば有限数)をローテーションする、連続したオペレーションに割り当てられてよい。
各エイリアスレジスタは、メモリアクセスデータ、例えば、ループの対応するオペレーションがアクセスするDRAM180内の又はキャッシュ122の1又は複数のメモリ位置のメモリアドレス範囲をストアするために利用されてよい。或る実施形態では、エイリアス検出論理120によって、エイリアスレジスタの1つのコンテンツが、ローテーションレジスタファイル118のエイリアスレジスタの幾つかの他のもののコンテンツと比較されてよく、これにより、エイリアスが存在するか、例えば、同じ時間フレーム内の共通のメモリ位置へのアクセス(例えばロードオペレーション又はストアオペレーションにより)決定されてよい。
図2A、図2B、図2Cは、本発明の或る実施形態におけるレジスタ割り当てスキームを示す。図2Aで、例示的なループとして、擬似コードループ210が、オペレーションa及びオペレーションbを含む。オペレーションa及びbは両方とも、メモリアクセス、例えば、ロード又はストアオペレーション(ここでは「オペレーション」)である。
N=3について、ループ210は、3つのイタレーションを実行する(i=0, 1, 2)。擬似コード210が記載するループにおいて、オペレーションaは、同じイタレーションのなかでオペレーションbより前に実行され、オペレーションaは更に、後続するイタレーションにおいて全てのaオペレーション及び全てのbオペレーションの前に実行される。
図2Bでは、ループについてソフトウェアパイプライン化されたスケジュール220が示されている。ソフトウェアパイプライン化されたスケジュール220では、イタレーション0のなかで、オペレーションaが、オペレーションbが実行された後に実行をスケジュールされる。イタレーション1において、オペレーションaは、オペレーションbが実行された後に実行されるようにスケジュールされる。イタレーション2では、オペレーションaが、オペレーションbが実行された後に実行されるようにスケジュールされる。ループ210と比較してオペレーションの順序づけ直しによってエイリアスが生じてよく、これは、ランタイムエイリアスモニタリングによって検出されてよい。エイリアスレジスタは、ランタイムエイリアスモニタリングが達成されるよう割り当てられて良い。
図2Cでは、エイリアスレジスタ割り当てスキーム230が、本発明の或る実施形態における解決方法を表している。X軸232は時間を示し、Y軸234は対応するエイリアスレジスタに関するレジスタ番号を示す。バー242から250は、オペレーションの「ライフタイム」を表す。第1のオペレーションのライフタイムは、第1のオペレーション(「生成オペレーション」)の実行から始まり、第2のオペレーションの実行で終わる期間として定義されてよく、第2のオペレーションの終了前に第1のオペレーションとエイリアスしてよい。各ライフタイムは、対応する生成オペレーションと称されている。例えば、ライフタイム244は、オペレーションbの実行が開始される時点t=1において始まり、オペレーションaの実行が終了するt=5で終了する(例えばイタレーション0における命令bが関連するライフタイム244をもつ)。
割り当てスキーム230は、各イタレーション内のループの各オペレーションにエイリアスレジスタを割り当てる(N=3についてイタレーションi = 0, 1, 2)。ループのイタレーションiについて、a及びbのライフタイムがレジスタ2*i 及び2*i +1にそれぞれ割り当てられる。
例えば、イタレーション236(i=0, イタレーション 0)において、時間軸232の上の時間=4において、オペレーションaが実行を開始する。エイリアスレジスタ0にストアされるべき、オペレーションaのメモリアクセスアドレス範囲は、レジスタ1から、アクティブオペレーションに関連づけられている最大番号のレジスタまで(例えば第1のイタレーション236及び第2のイタレーション238のオペレーションbに割り当てられているレジスタ1及び3)、より高い番号のエイリアスレジスタのそれぞれのストアされているアクセス範囲と比較される。(レジスタ2は、イタレーション238のオペレーションaに割り当てられ、これは、イタレーション236のオペレーションaのライフタイム242の完了に続いて実行されるので、考慮しない)。このようにして、エイリアスは、後続する割り当てられたエイリアスレジスタにストアされているストアされているメモリアクセス範囲とともに、第1の割り当てられているエイリアスレジスタにストアされているメモリアクセス範囲の比較により動的にキャッチすることができる。
時間t=5において、イタレーション236(「イタレーション0」)のライフタイム242及び244が期限切れになっているので、t=5からは、第1のイタレーション236のライフタイム242及び244の間に割り当てられたレジスタの更なる内容の比較されない。この結果、レジスタ0及び1が、イタレーション240(「イタレーション2」)で再利用されてよく、これはt=5から始まる。
エイリアスレジスタ割り当てスキーム230の例では、例えばループ210のメモリ位置の重複する利用のために、4つのローテーションレジスタ(番号0から3)のセットで、エイリアスのインスタンスを検出するためには十分である。パイプライン化されたスケジュール220に従って実行されるループ210は、イタレーション間隔(224、更に226)Δt=2を持ち、これは、連続したイタレーションの開始の間の期間である。レジスタ割り当てスキーム230のイタレーション間隔(260、更に262も)もΔt=2である。
エイリアスレジスタは、エイリアスを検出するためと比較を実行するために全部で4つのローテーションレジスタで十分なように割り当てることができる。より複雑なソフトウェアパイプライニングスキームをもつ2を超える数のオペレーションを含むループのためには、エイリアスの各インスタンスを検出するために、ローテーションレジスタのより大きなセットが必要となる場合がある。Nのいずれの値についても、ローテーションベースで有限数のセットのエイリアスレジスタ(Nより小さい数)が割り当てられてよく(例えば、第1のエイリアスレジスタから始まり、最大番号のエイリアスレジスタまでであり、循環的に繰り返されて良い)、これにより、エイリアスの検出が可能となる。
図3は、本発明の別の実施形態におけるレジスタ割り当てスキーム300を示す。レジスタ割り当て300は、ソフトウェアパイプライン化されたスケジュールを変更することなく、エイリアスレジスタの数を低減させることを目的とする。
時間軸302は、各オペレーションa及びbのライフタイムを測定してよい。レジスタ軸304は、各オペレーションのための対応するメモリアクセス範囲(例えば図1のDRAM180等のメモリ内のアドレス範囲)をストアするためにどのエイリアスレジスタが割り当てられているかを示して良い。例えば、イタレーション306(0番目のイタレーション)において、レジスタ0が、ライフタイム312をもつオペレーションaに関連するメモリアクセス範囲をストアして、レジスタ1が、ライフタイム314をもつオペレーションbに関連するメモリアクセス範囲をストアする。図2AからCの擬似コード210に示されているオペレーションaは、オペレーションbの前に行われることが意図されている。
エイリアスが第1のイタレーションのオペレーションa及びbの間に存在しないと保証するために、図3のスキーム300において、オペレーションbのライフタイム314が、オペレーションaのライフタイム312の最後まで延長されて、エイリアスレジスタ1がライフタイム314のためのオペレーションbに割り当てられる。レジスタ割り当て300において、あるイタレーションにおけるオペレーションaのライフタイムは同じイタレーション及び次のイタレーションにおいてオペレーションbのライフタイムを超えており、エイリアスのチェックは、エイリアスレジスタ0からエイリアスレジスタ1までを含む(ローテーションエイリアスレジスタの数値的順序における「上方向」)。更に、イタレーション306(「イタレーション0」)におけるオペレーションaのライフタイム312は、イタレーション308(「イタレーション1」)のオペレーションbのライフタイム318の間に生じるので、レジスタ0の内容は、レジスタ2の内容と比較されて、エイリアスが、ライフタイム312の間のオペレーションaとライフタイム318の間のオペレーションbとの間に存在するか、決定されてよい。
ライフタイム314は、t=5で完了することに留意されたい。イタレーション308(「イタレーション1」)を見ると、ライフタイム314が完了しており、ライフタイム314を超えるレジスタ1が有用ではないために、エイリアスレジスタ1を、ライフタイム316をもつイタレーション308の中に含まれるオペレーションaの関連するメモリアクセス範囲をストアするために利用することができることに気づくだろう。破線324及び326は、ライフタイム318及び割り当てられたレジスタ2をもつオペレーションbを実行して、ライフタイム316及び割り当てられたレジスタ1をもつオペレーションaを実行することを含むイタレーションの308(イタレーション1)の境界を示す。
従ってレジスタは、循環的に割り当てることができ、例えばレジスタ1を利用して、ライフタイム314の間にイタレーション306のオペレーションbのメモリアクセス範囲をストアすることができ(例えば期間Δt = 1→5)、レジスタ1を更にイタレーション308で利用して、ライフタイム316(Δt= 6→7)中にオペレーションaのためのメモリアクセス範囲をストアしてよい。
イタレーション310(「イタレーション2」)は、破線326及び328によって境界を隔てられてよく、オペレーションbのメモリアクセス範囲をストアするためのレジスタ0を利用したライフタイム322(Δt= 5→9)を持つオペレーションbの実行と、イタレーション310のオペレーションaのメモリアクセス範囲をストアするためのレジスタ2を利用したライフタイム320(Δt= 8→9)を持つオペレーションaの実行とを含むが、これは、ライフタイム318が、t=7で期限切れとなり、これによりイタレーション310で再利用されるレジスタ2が使い尽くされるからである。従って、レジスタ2が連続したイタレーション(例えばオペレーションbのライフタイム318中のイタレーション308、更には、オペレーションaのライフタイム320中のイタレーション310においても)において再利用される(「レジスタ再利用」)。連続したイタレーションにおける、このレジスタの再利用技術は、図2AからCのループ210等のループの実行中にエイリアスを検出するために利用されるレジスタの総数を低減させることができる。更にレジスタ割り当て300において、レジスタ0、1、2のセットが循環的に利用されて(例えばレジスタ0がライフタイム312(Δt = 4→5)中のイタレーション306で利用され(「イタレーション0」)、再度、ライフタイム322 (Δt = 5→9)中にイタレーション310(「イタレーション2」)が利用される)。
ループのソフトウェアパイプライン化されたスケジュールのためのエイリアスレジスタのローテーション割り当ての利用は、レジスタ割り当て問題を循環スケジュール問題に変換することと考えることができる。各依存関係(オペレーションの実行順序に基づくオペレーション間の関係)は、依存距離を持つと考えることができる(例えば依存オペレーション間のイタレーション数)。例えば図2AからC及び図3に示すように、2つの依存関係がある。
1)a→b:(例えば同じイタレーション)ゼロの距離(例えばイタレーションの間の距離)である、これは、同じイタレーションにおけるオペレーションaのライフタイムが、オペレーションbのライフタイムと同じ又はこれより小さな数のレジスタを割り当てられることを意味する。2)a→b:(隣接するイタレーション)1の距離である、これは、或るイタレーションにおけるオペレーションaのライフタイムが、隣接するイタレーションのオペレーションbのライフタイムと同じ又はこれより小さな数のレジスタを割り当てられ、ローテーションエイリアスレジスタが、ローテーションレジスタの数値的に「上方向」の順序でチェックされることを意味する。
本発明の実施形態では、依存関係のグラフに基づいて、「ライフタイムのためのソフトウェアパイプライン化されたスケジュール」を、ライフタイムをオペレーションとして取り扱うことにより作成することができ、ライフタイムをスケジュールするために、ソフトウェアパイプライニングアルゴリズムを適用することができる。
スケジューリングアプローチを形式化(formalized)することができ、これにより、ライフタイムをレジスタに「スケジュール」するレジスタ割り当て問題が定式化される(formulate)。例えばa(i)を、ループのイタレーションiのオペレーションaとして、r(a, i)を、スケジュールによりそれに割り当てられたレジスタとする。
スケジュールは、以下の制約を配慮する。
(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つのオペレーションのライフタイムが時間的に重複している場合、これらには同じレジスタを割り当てることができない。
伝統的なソフトウェアパイプライニングは、リソースと時間という2つの次元をもつ。一定期間における時間に対するオペレーション(開始期間「II」)をスケジュールして、全ての依存関係及びリソース制約を配慮する。ここで提示するレジスタ割り当てにおいては、レジスタが、「時間」と同じように取り扱われてよく、時間は、「リソース」と同じように取り扱われてよく、ライフタイムは、「オペレーション」と同じように取り扱われてよく、エイリアスチェックは「依存関係」と同じように取り扱われてよい。
オペレーションにおいては、本発明の実施形態においては、以下の考慮点を考慮に入れて、スケジュールに到達するようことができてよい。
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個の数の死んだライフタイムを「一掃」することができる。
図4は、本発明の実施形態におけるエイリアスレジスタを割り当てる方法のフローチャート400である。ブロック402で、依存関係がライフタイム間に構築されてよい。ブロック404に進み、構築された依存関係とリソース制約とに従ってレジスタにライフタイムをスケジュールすることを含み、循環スケジュールを実行する。ブロック406に進み、ブロック402で考慮されなかった依存関係を処理してよい(例えば静的なエイリアスレジスタを利用することによって)。ブロック408に進み、複数のエイリアスレジスタをループのオペレーションに割り当ててよい(例えば、エイリアスレジスタは、各イタレーションのループの各オペレーションに割り当てられてよい)。エイリアスレジスタは、循環的に割り当てられてよく、ここで各レジスタは、各オペレーションのライフタイムに割り当てられ、各レジスタは、各オペレーションがアクセスするメモリアドレスのインディケーションをストアしてよい。幾つかの実施形態では、第1のイタレーションの第1のオペレーションに割り当てられた少なくとも1つのレジスタが、第1のオペレーションの関連するライフタイムが期限切れになった後から始まる連続したイタレーションの別のオペレーションにより再利用されてよい。従って、2つの連続するループのイタレーションのライフタイムは、イタレーションの間のレジスタを再利用してよいコンパクトなスケジュールを生じさせる場合がある。ブロック410に進み、ローテーション一掃命令が、スケジュールに追加され、完了したライフタイムに関するエイリアスレジスタを一掃(例えば削除)するべく実行されてよい。
図5を参照すると、本発明の実施形態におけるプロセッサのブロック図が示されている。図5に示すように、プロセッサ500は、複数のコア510aから510nをコアドメイン510内に含む、マルチコアプロセッサであってよい。コアの1又は複数は、本発明の実施形態において、エイリアスレジスタをループのオペレーションに割り当てるための、命令スケジュール論理、エイリアスレジスタ(例えばローテーションレジスタファイル)、及びレジスタ割り当て論理を含んでよい。
コアは、様々なコンポーネントを含むシステムエージェント又はアンコア520に、インターコネクト515を介して連結されてよい。分かるように、アンコア520は、最終レベルキャッシュであってよく、キャッシュコントローラ532を含む共有キャッシュ530を含んでよい。加えて、アンコアは、統合されたメモリコントローラ540と様々なインタフェース550とを含んでよい。
図5を更に参照して、プロセッサ500は、例えばメモリバスを介して、システムメモリ560と通信してよい。加えて、インタフェース550によって、周辺機器、大容量記憶装置等の様々なオフチップのコンポーネントに対して接続を行うことができる。図5の実施形態はこの特定の実装例で示されているが、本発明の範囲はこの点に限定はされない。
図6を参照すると、複数のコアを含むプロセッサの実施形態が示されている。プロセッサ600は、マイクロプロセッサ、エンベデッドプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンチップ(SOC)、又はコードを実行するその他のデバイス等の任意のプロセッサ又は処理デバイスを含む。一実施形態では、プロセッサ600が、少なくとも2つのコア、つまりコア601と602、を含み、これらは、非対称コア又は対称コア(例示されている実施形態)を含んでよい。しかし、プロセッサ600は、対称であっても非対称であってもよい任意の数の処理エレメントを含んでよい。
一実施形態では、処理エレメントは、ソフトウェアスレッドをサポートするハードウェア又は論理である。ハードウェア処理エレメントの例には、実行状態又はアーキテクチャ状態等のプロセッサの状態を保持することができる、スレッドユニット、スレッドスロット、スレッド、処理ユニット、コンテキスト、コンテキストユニット、論理プロセッサ、ハードウェアスレッド、コア、及び/又は任意の他のエレメントが含まれる。言い換えると、処理エレメントは、一実施形態では、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、又はその他のコード等の、コードと独立して関連することができる任意のハードウェアのことを指す。物理プロセッサは、通常、コア又はハードウェアスレッド等の任意の数の他の処理エレメントを潜在的に含む集積回路のことを指す。
コアはしばしば、独立したアーキテクチャ状態を維持することができる集積回路上に位置している論理であって、各独立して維持されるアーキテクチャ状態は、少なくとも幾つかの専用実行リソースと関連付けられている論理のことを指す。コアとは対照的に、ハードウェアスレッドとは、通常、独立したアーキテクチャ状態を維持することができる集積回路の上に位置する任意の論理であって、独立して維持されるアーキテクチャ状態は、実行リソースに対するアクセスを共有する論理のことを指す。分かるように、特定のリソースが共有され、他のものがアーキテクチャ状態に専用のとき、ハードウェアスレッドとコアとの間の命名の間の境界線は重なる。しかししばしば、コアとハードウェアスレッドは、オペレーティングシステムによって、個々の論理プロセッサとして見られ、ここでオペレーティングシステムは、各論理プロセッサ上のオペレーションを個々にスケジュールすることができる。
図6に示すように、物理プロセッサ600は、2つのコア、つまりコア601及び602を含む。ここでコア601及び602は、対称コアとして考えられる(つまり、同じ構成、機能ユニット、及び/又は論理をもつコア)。他の実施形態では、コア601は、アウトオブオーダプロセッサコアを含み、コア602は、インオーダプロセッサコアを含む。しかし、コア601及び602は、任意のタイプのコア、例えばネーティブコア、ソフトウェア管理されたコア、ネーティブ命令セットアーキテクチャ(ISA)を実行するよう適合されたコア、変換されたISAを実行するよう適合されたコア、共同設計されたコア、又は他の公知のコアから個々に選択されてよい。説明を更に進めるために、コア601に示す機能ユニットを更に詳細に説明する(コア602のユニットは同様にオペレーションするので)。
図示されているように、コア601は、2つのハードウェアスレッド601a及び601bを含み、これらは更に、ハードウェアスレッドスロット601a及び601bと称されてもよい。従って、一実施形態では、ソフトウェア実体(例えばオペレーティングシステム等)が、潜在的にプロセッサ600を、4つのソフトウェアスレッドを同時に実行することができる、4つの別個のプロセッサ、つまり、4つの論理プロセッサ又は処理エレメントとして見る。上でほのめかしたように、第1のスレッドは、アーキテクチャ状態レジスタ601aに関連付けられており、第2のスレッドは、アーキテクチャ状態レジスタ601bに関連付けられており、第3のスレッドは、アーキテクチャ状態レジスタ602aに関連付けられており、第4のスレッドは、アーキテクチャ状態レジスタ602bに関連付けられ得る。
ここで、上述したように、アーキテクチャ状態レジスタ(601a, 601b, 602a, 及び602b)は、処理エレメント、スレッドスロット、又はスレッドユニットと称されて良い。例示したように、アーキテクチャ状態レジスタ601aは、アーキテクチャ状態レジスタ601bに複製され、これにより個々のアーキテクチャ状態/コンテキストが、論理プロセッサ601a及び論理プロセッサ601bのためにストアすることができる。コア601では、他のより小さいリソース、例えばアロケータ及びリネーマブロック630における命令ポインタ及びリネーム論理等も、更に、スレッド601a及び601bのために複製されてよい。幾つかのリソース、例えばリオーダ/リタイヤユニット635、ILTB620、ロード/ストアバッファ、及びキュー等も、パーティショニングによって共有されてよい。他のリソース、例えば汎用内部レジスタ、ページテーブルベースレジスタ、低レベルデータキャッシュ及びデータTLB615、実行ユニット640、及びアウトオブオーダユニット635の部分も、潜在的に完全に共有される。
プロセッサ600はしばしば、完全に共有されてよい、パーティショニングにより共有されてよい、又は、処理エレメントによって又は処理エレメントに専用される、他のリソースを含んで良い。図6には、プロセッサの例示的な論理ユニット/リソースをもつ純粋に例示的なプロセッサの実施形態が示されている。プロセッサは、これらの機能ユニットのいずれかを含んでも省いてもよく、又、図示されていない任意の他の機能ユニット、論理、又はファームウェアを含んでもよい。図示しているように、コア601は、簡略化され、代表的なアウトオブオーダ(OOO)プロセッサコアを含む。しかし、インオーダプロセッサは、様々な異なる実施形態で利用されてよい。OOOコアは、実行され/取られる分岐を予測する分岐対象バッファ620と、命令のためのアドレス変換エントリをストアする命令変換バッファ(I-TLB)620とを含む。
コア601は更に、フェッチされたエレメントをデコードするための、フェッチユニット620に連結されたデコードモジュール625を含む。フェッチ論理は、一実施形態においては、それぞれ、スレッドスロット601a、601bに関連付けられた個々のシーケンサを含む。通常コア601は、第1のISAに関連付けられており、これは、プロセッサ600上に実行可能な命令を定義/特定する。しばしば第1のISAの一部分である機械コード命令は、命令の一部分(オペコードと称される)を含み、これは、実行される命令又はオペレーションを参照/指定する。デコード論理625は、これら命令を、これらのオペコードから認識し、デコードされた命令を、第1のISAが定義するように処理するためにパイプラインへと渡す回路を含む。例えば一実施形態ではデコーダ625が、トランザクション命令等の特定の命令を認識するよう設計又は適合された論理を含む。デコーダ625による認識の結果、アーキテクチャ又はコア601は特定の、所定のアクションをとり、適切な命令に関連付けられたタスクを実行する。ここに記載したタスク、ブロック、オペレーション、及び方法のいずれかを、単一又は複数の命令に呼応して実行することができ、その幾つかが新たな又は古い命令であってよいことは留意に値する。
一例では、アロケータ及びリネーマブロック630は、命令処理結果をストアするためのレジスタファイル等のリソースをリザーブするためのアロケータを含む。しかし、スレッド601a及び601bは潜在的に、アウトオブオーダ実行が可能であり、アロケータ及びリネーマブロック630は更に、他のリソース、例えば命令の結果等をトラッキングするためのリオーダ・バッファをもリザーブする。ユニット630は、更に、プロセッサ600の内部の他のレジスタにプログラム/命令参照レジスタをリネームするためのレジスタリネーマを含んで良い。リオーダ/リタイヤユニット635は、例えば上述したリオーダ・バッファ、ロードバッファ、及びストアバッファ等のコンポーネントを含み、これにより、アウトオブオーダ実行及びアウトオブオーダを実行した命令の後でのインオーダリタイヤをサポートする。
スケジューラ及び実行ユニットブロック640は、一実施形態では、実行ユニット上で命令/オペレーションをスケジュールするためのスケジューラユニットを含む。例えばスケジューラユニットは、パイプライン化されたスケジュールに従ってループのオペレーションをスケジュールしてよい。その実行ユニットに関連付けられたレジスタファイルが更に含まれ、情報命令処理結果をストアする。例示的な実行ユニットは、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、ストア実行ユニット、及びその他の公知の実行ユニットを含む。
コア601及び602の1つ又は両方が、本発明の実施形態においてループの複数のオペレーションのそれぞれに対応するエイリアスレジスタファイル(642又は646)のエイリアスレジスタを割り当てる、対応するエイリアスレジスタファイル(642又は646)及び対応するレジスタ割り当て論理(644又は648)を含んでよい。エイリアスレジスタは、本発明の実施形態においてエイリアスを特定するために利用されてよい。
より低いレベルのデータキャッシュ及びデータ変換バッファ(D-TLB)651が、実行ユニット640に連結される。D-TLB 651は、最近の仮想/線形から物理アドレス変換をストアするためのものである。具体的な例として、プロセッサは、物理メモリを複数の仮想ページに分割するためのページテーブル構造を含んで良い。
ここでコア601及び602は、より高いレベル又は更に外側の(further-out)キャッシュ610へのアクセスを共有し、これは、最近フェッチされたエレメントをキャッシュするためのものである。より高いレベル又は更に外側とは、増加する、又は実行ユニットから更に離れる方向のキャッシュレベルのことを示す。一実施形態では、より高いレベルのキャッシュ610が、最終レベルのデータキャッシュであり、プロセッサ600においてメモリ階層で最終キャッシュ、例えば第2又は第3レベルのデータキャッシュである。しかし、より高いレベルのキャッシュ610は、そのように限定はされず、命令キャッシュに関連づけられても、これを含んでも良い。トレースキャッシュ、つまり、命令キャッシュの一種類、は、その代わりに、最近デコードされたトレースをストアするためのデコーダ625の後に連結してもよい。
示されている構成では、プロセッサ600も、バスインタフェースモジュール605を含む。歴史的には、コントローラ670が、プロセッサ600の外部のコンピューティングシステムに含まれている。このシナリオでは、バスインタフェース605が、プロセッサ600外のデバイス、例えばシステムメモリ675、チップセット(しばしば、メモリ675及びI/Oコントローラハブに接続して周辺機器に接続するためのメモリコントローラハブを含む)、メモリコントローラハブ、ノースブリッジ、又はその他の集積回路等を含む、と通信する。このシナリオでは、バス605が、マルチドロップバス、ポイントツーポイントインターコネクト、シリアルインターコネクト、パラレルバス、コヒーレントな(例えばキャッシュコヒーレントな)バス、階層状の(layered)プロトコルアーキテクチャ、差動バス(differential bus)、及びGTLバス等の任意の公知のインターコネクトを含んで良い。
メモリ675は、プロセッサ600に専用であっても、システムの他のデバイスと共有されてもよい。メモリ675の様々なタイプに共通の例は、DRAM、SRAM、不揮発性メモリ(NVメモリ)、及びその他の公知のストレージデバイスを含む。デバイス680は、グラフィックアクセラレータ、プロセッサ、又は、メモリコントローラハブに連結されたカード、I/Oコントローラハブに連結されたデータストレージ、無線トランシーバ、フラッシュデバイス、オーディオコントローラ、ネットワークコントローラ、又はその他の公知のデバイスを含んでよい。
しかし、図示した実施形態では、コントローラ670がプロセッサ600の一部分として示されていることに留意されたい。近年、SOC等の単一のダイに、より多くの論理及びデバイスが集積されるようになるにつれて、これらデバイスのそれぞれがプロセッサ600に組み込まれ得るようになっている。例えば一実施形態では、メモリコントローラハブ670が、プロセッサ600と同じパッケージ及び/又はダイに存在する。ここでは、コアの一部分(オンコアの部分)が、メモリ675又はグラフィックデバイス680等の他のデバイスとインタフェースするための1又は複数のコントローラ670を含む。これらデバイスとインタフェースするためのインターコネクト及びコントローラを含む構成は、しばしば、オンコアと称される(あるいはアンコア構成)。ある例として、バスインタフェース605は、メモリ675とインタフェースするためのメモリコントローラと、グラフィックデバイス680とインタフェースするためのグラフィックコントローラとを有するリングインターコネクトを含む。しかし、SOC環境では、更により多くのデバイス、例えばネットワークインタフェース、コプロセッサ、メモリ675、グラフィックデバイス680、及び、任意の他の公知のコンピュータデバイス/インタフェース等、を、単一のダイ又は集積回路に集積して、高い機能と低い電力消費とを持つ、スモールフォームファクタを提供してもよい。
実施形態は、多くの異なるシステムタイプに実装されてもよい。図7を参照すると、本発明の実施形態におけるシステムのブロック図が示されている。図7に示すように、マルチプロセッサシステム700は、ポイントツーポイントインターコネクトシステムであり、ポイントツーポイントインターコネクト750を介して連結された第1のプロセッサ770と第2のプロセッサ780とを含む。図7に示すように、プロセッサ770及び780のそれぞれはマルチコアプロセッサであってよく、第1及び第2のプロセッサコア(つまりプロセッサコア774a及び774b及びプロセッサコア784a及び784b)を含んでよいが、潜在的に、より多くのコアがプロセッサ内に存在してもよい。
図7を依然参照すると、第1のプロセッサ770は更に、メモリコントローラハブ(MCH)772及びポイントツーポイント(P-P)インタフェース776及び778を含む。同様に、第2のプロセッサ780は、MCH782とP‐Pインタフェース786及び788とを含む。図7に示すように、MCH772及び782は、プロセッサを、それぞれのメモリ、つまり、メモリ732及びメモリ734に連結するが、これらは、それぞれのプロセッサにローカルに接続されたシステムメモリの部分(例えばDRAM)であってよい。プロセッサ770及び780のそれぞれは、本発明の実施形態において、レジスタファイルのエイリアスレジスタ(不図示)及びレジスタ割り当て論理(不図示)を含んでよく、これにより、エイリアスレジスタを、ループの複数のメモリアクセスオペレーションのそれぞれに割り当ててよい。エイリアスレジスタは、本発明の実施形態において、ループのオペレーションのパイプライン化されたスケジュールにより生じうるエイリアスを検出するために利用されてよい。
第1のプロセッサ770及び第2のプロセッサ780は、それぞれP−Pインターコネクト762及び754を介してチップセット790に連結されてよい。図7に示すように、チップセット790はP−Pインタフェース794及び798を含む。
更に、チップセット790は、P−Pインターコネクト739によって高いパフォーマンスのグラフィックエンジン738とチップセット790を連結するためのインタフェース792を含む。この代わりに、チップセット790が、インタフェース796を介して第1のバス716に連結されてよい。図7に示すように、様々な入出力(I/O)デバイス714が、第1のバス716を第2のバス720に連結するバスブリッジ718とともに、第1のバス716に連結されてよい。一実施形態では、例えばキーボード/マウス722、通信デバイス726、及びデータストアユニット728、例えばコード730を含んでよいディスクドライブ又はその他の大容量記憶装置等の様々なデバイスが第2のバス720に連結されてよい。更に、オーディオI/O724が第2のバス720に連結されてよい。実施形態は、スマートセルラーテレフォン、Ultrabook(登録商標)、タブレットコンピュータ、ネットブック等のモバイルデバイスを含む他のタイプのシステムに組み込むことができる。
以下の例が更なる実施形態に関している。
第1の例では、システムが、1又は複数のコアを含むプロセッサを含む。プロセッサは更に、ループの複数のオペレーションに関するメモリ範囲情報をストアするための複数のエイリアスレジスタを含むレジスタファイルも含む。メモリ範囲情報は、メモリ内の1又は複数のメモリ位置を参照する。プロセッサは更に、エイリアスレジスタそれぞれをループの対応するオペレーションに割り当てるためのレジスタ割り当て論理も含む。割り当ては、ローテーションスケジュールに従って行われてよく、エイリアスレジスタの少なくとも1つがループの第1のイタレーションの第1のオペレーション及びループの後続するイタレーションの第2のオペレーションに割り当てられる。
システムは更にプロセッサに連結されたメモリを含む。任意で、プロセッサは更に、パイプライン化されたスケジュールに従ってループのオペレーションをスケジュールするための命令スケジュール論理を含み、ここでループの少なくとも1つのオペレーションが、ループのオペレーションの順序とは異なる実行スケジュールに従って実行される。任意で、1又は複数のコアの1つが、第1のエイリアスレジスタにストアされているデータを、エイリアスレジスタの少なくとも他の1つにストアされているデータと比較することを実行して、エイリアスが存在するかを決定してよい。任意で、第1のエイリアスレジスタが、第1のライフタイムの間は第1のオペレーションに割り当てられてよく、第1のエイリアスレジスタが、第2のライフタイムの間は第2のオペレーションに割り当てられてよく、第1のライフタイム及び第2のライフタイムが、重ならない期間であってよい。任意で、第1のライフタイムがループの第1のイタレーションの範囲内であり、第2のライフタイムが、第1のイタレーションに連続する次のイタレーションであるループの第2のイタレーションの範囲内である。任意で、レジスタ割り当て論理が、ローテーション一掃命令を実行して、関連するライフタイムが期限切れになった各エイリアスレジスタの内容を削除してよい。
第2の例では、少なくとも1つのコンピュータ可読媒体が、実行されると、システムに、ローテーションレジスタファイルの複数のエイリアスレジスタのそれぞれを、ループの複数のイタレーションのためのローテーションシーケンスに従って連続してループの対応するオペレーションに割り当てる手順であって、各エイリアスレジスタが、対応するオペレーションがアクセスする1又は複数のメモリ位置のインディケーションをストアし、複数のエイリアスレジスタの1つは、ループの第1のイタレーションの第1のオペレーションと、ループの後続するイタレーションの第2のオペレーションとに割り当てられる、割り当てる手順を実行させる命令を含む。少なくとも1つのコンピュータ可読媒体は更に、割り当てられた複数のエイリアスレジスタの少なくとも1つの内容を、1又は複数の他の割り当てられたエイリアスレジスタの内容と比較することで、エイリアス条件が存在するかを決定するための命令も含む。第1のエイリアスレジスタを、第1のライフタイムの間は第1のオペレーションに割り当て、第1のエイリアスレジスタを、第2のライフタイムの間は第2のオペレーションに割り当て、第1のライフタイム及び第2のライフタイムは、重ならない期間であってよい。任意で、第1のライフタイム及び第2のライフタイムは、ループの連続した隣の複数のイタレーションのなかにある。
任意で、第1のライフタイム及び第2のライフタイムは、ループの隣り合わないイタレーションのなかにある。任意で、少なくとも1つのコンピュータ可読媒体は、実行されるとシステムに、順序関係に基づくオペレーションに対するライフタイムを、同じ又は異なるイタレーション内の別のオペレーションに割り当てさせ、対応するエイリアスレジスタを、ライフタイムの期間の間はオペレーションに割り当てさせる更なる命令を含む。任意で、少なくとも1つのコンピュータ可読媒体は、実行されるとシステムに、期間が期限切れになると、対応するエイリアスレジスタを、別のイタレーションの別のオペレーションに割り当て直させる命令を更に含む。任意で、少なくとも1つのコンピュータ可読媒体は、実行されるとシステムに、順序関係の存在に応じてエイリアスをチェックさせる命令を更に含み、順序関係は、パイプライン化されたスケジュールに従って、ループの第2のオペレーションの後に実行するようスケジュールされたループの第1のオペレーションと、ループの第1のオペレーションがループの第2のオペレーションの前に実行可能であるというループのインディケーションとに呼応して示される。
第3の例では、方法が、レジスタファイルの複数のエイリアスレジスタのそれぞれを、ループの複数のイタレーションのためのローテーションシーケンスに従って連続してループの対応するオペレーションに割り当てる段階であって、複数のエイリアスレジスタの1つを、ループの第1のイタレーションの第1のオペレーションと、ループの後続するイタレーションの第2のオペレーションとに割り当てることを含み、各エイリアスレジスタは、対応するオペレーションによりアクセスされる複数のメモリ位置のインディケーションをストアする、割り当てる段階を含む。e方法は更に、割り当てられた複数のエイリアスレジスタの少なくとも1つの内容を、1又は複数の他の割り当てられたエイリアスレジスタの内容と比較することで、エイリアス条件が存在するかを決定する段階を含む。任意で、方法は、第1のエイリアスレジスタを、第1のライフタイムの間は第1のオペレーションに割り当て、第1のエイリアスレジスタを、第2のライフタイムの間は第2のオペレーションに割り当てる段階を含み、第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のオペレーションの前に実行可能であるというループのインディケーションとに呼応して示される。
第4の例では、装置が、選択肢のうち1又は複数を含む、第3の例の方法を実行するよう構成されている。
第5の例では、プロセッサが、1又は複数のコアと、ループの複数のオペレーションに関連するメモリ範囲情報をストアするために複数のエイリアスレジスタを含むレジスタファイルであって、メモリ範囲情報は、メモリ内の1又は複数のメモリ位置を参照する、レジスタファイルと、複数のエイリアスレジスタのそれぞれをループの対応するオペレーションに割り当てるレジスタ割り当て論理とを含む。
割り当ては、ローテーションスケジュールに従って作成され、複数のエイリアスレジスタの少なくとも1つは、ループの第1のイタレーションの第1のオペレーションと、ループの後続するイタレーションの第2のオペレーションとに割り当てられる。システムは更に、プロセッサに連結されたメモリを含む。任意で、プロセッサは、パイプライン化されたスケジュールに従ってループの複数のオペレーションをスケジュールするための命令スケジュール論理を更に含み、ループの少なくとも1つのオペレーションは、ループの複数のオペレーションの順序と異なる実行スケジュールに従って実行される。任意で、1又は複数のコアの1つは、エイリアスが存在するかを決定するために、複数のエイリアスレジスタの他の少なくとも1つにストアされているデータに対する、第1のエイリアスレジスタにストアされているデータの比較を実行する。任意で、第1のエイリアスレジスタは、第1のライフタイムの間は第1のオペレーションに割り当てられ、第1のエイリアスレジスタは、第2のライフタイムの間は第2のオペレーションに割り当てられ、第1のライフタイム及び第2のライフタイムは、重ならない期間である。任意で、第1のライフタイムは、ループの第1のイタレーションの範囲内であり、第2のライフタイムが、第1のイタレーションに連続する次のイタレーションであるループの第2のイタレーションの範囲内である。任意で、レジスタ割り当て論理は、関連するライフタイムが期限切れになった各エイリアスレジスタの内容を削除するためのローテーション一掃命令を更に実行する。
実施形態は、多くの異なるタイプのシステムで利用してよい。例えば一実施形態では、通信デバイスは、ここに記載される様々な方法及び技術を実行するよう構成されてよい。もちろん、本発明の範囲は通信デバイスに限定はされず、他の実施形態が、命令を処理するための他のタイプの装置、又は、コンピューティングデバイス上で実行されることに呼応して、デバイスに、ここで記載される方法及び技術の1又は複数を実行させる命令を含む1又は複数の機械可読媒体を対象としていてよい。
実施形態はコードで実装されてよく、及び、システムを命令を実行するようプログラムするために利用することができる命令をストアした持続性記憶媒体にストアされてよい。ストア媒体は、これらに限定はされないが、フロッピー(登録商標)ディスク、光ディスク、固体ドライブ(SSD)、CD−ROM(コンパクトディスクリードオンリメモリ),CD−RW(コンパクトディスクリライタブル)、及び磁気光ディスク、リードオンリーメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)等のランダムアクセスメモリ(RAM)、消去可能プログラマブルROM(EPROM)、フラッシュメモリ、電気的消去可能プログラマブルROM(EEPROM(登録商標))、磁気又は光カード等の半導体素子、又は、電子命令をストアするのに適した任意の他のタイプの媒体を含んでよい任意のタイプのディスクを含んでよい。
本発明は、限定された数の実施形態に関して記載されたが、当業者であれば、様々な変形形態及び変形例を思いつくだろう。添付請求項はこれらの変形形態及び変形例を全て、本発明の真の精神及び範囲内に含まれるものとしてカバーすることを意図している。

Claims (24)

  1. プロセッサと、
    前記プロセッサに連結されたメモリと
    を備え、
    前記プロセッサは、
    1又は複数のコアと、
    ループの複数のオペレーションに関連するメモリ範囲情報をストアするために複数のエイリアスレジスタを含むレジスタファイルであって、前記メモリ範囲情報は、メモリ内の1又は複数のメモリ位置を参照する、前記レジスタファイルと、
    前記複数のエイリアスレジスタのそれぞれを前記ループの対応するオペレーションに割り当てるレジスタ割り当て手段であって、前記割り当ては、ローテーションスケジュールに従って作成され、前記複数のエイリアスレジスタの少なくとも1つは、前記ループの第1のイタレーションの第1のオペレーションと、前記ループの後続するイタレーションの第2のオペレーションとに割り当てられる、前記レジスタ割り当て手段と
    を有し、
    前記1又は複数のコアの少なくとも1つは、エイリアスが存在するかを決定するために、前記複数のエイリアスレジスタの他の少なくとも1つにストアされているデータに対する、第1のエイリアスレジスタにストアされているデータの比較を実行する、システム。
  2. 前記プロセッサは更に、
    パイプライン化されたスケジュールに従って前記ループの前記複数のオペレーションをスケジュールするための命令スケジュール手段を有し、
    前記ループの少なくとも1つのオペレーションは、前記ループの前記複数のオペレーションの順序と異なる実行スケジュールに従って実行される、請求項1に記載のシステム。
  3. 第1のエイリアスレジスタは、第1のライフタイムの間は前記第1のオペレーションに割り当てられ、前記第1のエイリアスレジスタは、第2のライフタイムの間は第2のオペレーションに割り当てられ、前記第1のライフタイム及び前記第2のライフタイムは、重ならない期間である、請求項1に記載のシステム。
  4. 前記第1のライフタイムは、前記ループの第1のイタレーションの範囲内であり、前記第2のライフタイムが、前記第1のイタレーションに連続する次のイタレーションである前記ループの第2のイタレーションの範囲内である、請求項に記載のシステム。
  5. 前記レジスタ割り当て手段は、関連するライフタイムが期限切れになった各エイリアスレジスタの内容を削除するためのローテーション一掃命令を実行する、請求項1からのいずれか一項に記載のシステム。
  6. ローテーションレジスタファイルの複数のエイリアスレジスタのそれぞれを、ループの複数のイタレーションのためのローテーションシーケンスに従って連続して前記ループの対応するオペレーションに割り当てる手順であって、各エイリアスレジスタが、前記対応するオペレーションに基づきアクセスする1又は複数のメモリ位置のインディケーションをストアし、前記複数のエイリアスレジスタの1つは、前記ループの第1のイタレーションの第1のオペレーションと、前記ループの後続するイタレーションの第2のオペレーションとに割り当てられる、前記割り当てる手順と、
    前記割り当てられた複数のエイリアスレジスタの少なくとも1つの内容を、1又は複数の他の割り当てられたエイリアスレジスタの内容と比較することで、エイリアス条件が存在するかを決定する手順と
    をシステムに実行させる、プログラム。
  7. 第1のエイリアスレジスタは、第1のライフタイムの間は前記第1のオペレーションに割り当てられ、前記第1のエイリアスレジスタは、第2のライフタイムの間は前記第2のオペレーションに割り当てられ、前記第1のライフタイム及び前記第2のライフタイムは、重ならない期間である、請求項に記載のプログラム。
  8. 前記第1のライフタイム及び前記第2のライフタイムは、前記ループの連続した隣り合う複数のイタレーション内に含まれる、請求項に記載のプログラム。
  9. 前記第1のライフタイム及び前記第2のライフタイムは、前記ループの隣り合わないイタレーションのなかにある、請求項に記載のプログラム。
  10. 前記システムに更に、
    同じ又は異なるイタレーションにある別のオペレーションに対する順序関係に基づいてオペレーションに対してライフタイムを割り当てる手順と、
    対応するエイリアスレジスタを、前記ライフタイムの期間前記オペレーションに割り当てる手順と
    を実行させる、請求項に記載のプログラム。
  11. 前記システムに、前記期間が期限切れになると、前記対応するエイリアスレジスタを、別のイタレーションの別のオペレーションに割り当て直す手順を実行させる、請求項10に記載のプログラム。
  12. 前記システムに更に、順序関係の存在に応じて前記エイリアス条件が存在するかを決定する手順を実行させ、
    前記順序関係は、
    パイプライン化されたスケジュールに従って、前記ループの前記第2のオペレーションの後に実行するようスケジュールされた前記ループの前記第1のオペレーションと、
    前記ループの第1のオペレーションが前記ループの前記第2のオペレーションの前に実行可能であるという前記ループ指定
    に呼応して存在が示される、
    請求項から11のいずれか一項に記載のプログラム。
  13. レジスタファイルの複数のエイリアスレジスタのそれぞれを、ループの複数のイタレーションのためのローテーションシーケンスに従って連続して前記ループの対応するオペレーションに割り当てる段階であって、前記複数のエイリアスレジスタの1つを、前記ループの第1のイタレーションの第1のオペレーションと、前記ループの後続するイタレーションの第2のオペレーションとに割り当てることを含み、各エイリアスレジスタは、前記対応するオペレーションによりアクセスされる複数のメモリ位置のインディケーションをストアする、前記割り当てる段階と、
    前記割り当てられた複数のエイリアスレジスタの少なくとも1つの内容を、1又は複数の他の割り当てられたエイリアスレジスタの内容と比較することで、エイリアス条件が存在するかを決定する段階と
    を備える方法。
  14. 第1のエイリアスレジスタを、第1のライフタイムの間は前記第1のオペレーションに割り当て、前記第1のエイリアスレジスタを、第2のライフタイムの間は前記第2のオペレーションに割り当てる段階を更に備え、
    前記第1のライフタイム及び前記第2のライフタイムは、重ならない期間である、請求項13に記載の方法。
  15. 前記第1のライフタイム及び前記第2のライフタイムは、前記ループの連続した隣り合う複数のイタレーション内に含まれる、請求項14に記載の方法。
  16. 第1のエイリアスレジスタを、第1のライフタイムの間は前記ループの第1のイタレーションの前記第2のオペレーションに割り当て、前記第1のエイリアスレジスタを、第2のライフタイムの間は前記ループの第2のイタレーションの前記第1のオペレーションに割り当てる段階を更に備え、
    前記第1のライフタイム及び前記第2のライフタイムは、重ならない期間である、請求項13に記載の方法。
  17. 同じイタレーション又は異なるイタレーションにある別のオペレーションに対する順序関係に基づいてオペレーションに対してライフタイムを割り当てる段階と、
    対応するエイリアスレジスタを、前記ライフタイムの期間前記オペレーションに割り当てる段階と
    を更に備える、請求項13に記載の方法。
  18. 前記期間が期限切れになると、前記対応するエイリアスレジスタを、別のイタレーションの別のオペレーションに割り当て直す段階を更に備える、請求項17に記載の方法。
  19. 前記ループの前記第1のオペレーションに割り当てられた第1のエイリアスレジスタの内容を、前記第2のオペレーションに関する第2のライフタイムの間、前記第2のオペレーションに割り当てられた第2のエイリアスレジスタの内容と比較することにより、前記ループの第1のイタレーションにエイリアスが存在するかを決定する段階を更に備え、
    前記第2のライフタイムは、前記第2のオペレーションの第2のスケジュールされた実行時間に対する前記第1のオペレーションの第1のスケジュールされた実行時間により決定される、請求項13に記載の方法。
  20. 前記エイリアス条件が存在するかを決定する段階は、順序関係の存在に応じて実行され
    前記順序関係は、
    パイプライン化されたスケジュールに従って、前記ループの前記第2のオペレーションの後に実行するようスケジュールされた前記ループの前記第1のオペレーションと、
    前記ループの第1のオペレーションが前記ループの前記第2のオペレーションの前に実行可能であるという前記ループ指定
    に呼応して存在が示される、請求項13に記載の方法。
  21. 請求項13から20のいずれか一項の方法を実行するための手段を備える装置。
  22. 請求項13から20のいずれか一項の方法を実行する装置。
  23. 1又は複数のコアと、
    ループの複数のオペレーションに関連するメモリ範囲情報をストアするために複数のエイリアスレジスタを含むレジスタファイルであって、前記メモリ範囲情報は、メモリ内の1又は複数のメモリ位置を参照する、前記レジスタファイルと、
    前記複数のエイリアスレジスタのそれぞれを前記ループの対応するオペレーションに割り当てるためのレジスタ割り当て論理であって、前記割り当ては、ローテーションスケジュールに従って作成され、前記複数のエイリアスレジスタの少なくとも1つは、前記ループの第1のイタレーションの第1のオペレーションと、前記ループの後続するイタレーションの第2のオペレーションとに割り当てられる、前記レジスタ割り当て論理
    を備え
    前記1又は複数のコアの少なくとも1つは、エイリアスが存在するかを決定するために、前記複数のエイリアスレジスタの他の少なくとも1つにストアされているデータに対する、第1のエイリアスレジスタにストアされているデータの比較を実行する、
    プロセッサ。
  24. パイプライン化されたスケジュールに従って前記ループの前記複数のオペレーションをスケジュールするための命令スケジュール論理を更に備え、
    前記ループの少なくとも1つのオペレーションは、前記ループの前記複数のオペレーションの順序と異なる実行スケジュールに従って実行される、
    請求項23に記載のプロセッサ。
JP2015520204A 2013-05-30 2013-05-30 パイプライン化されたスケジュールにおけるエイリアスレジスタ割り当て Expired - Fee Related JP6008265B2 (ja)

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)

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

* Cited by examiner, † Cited by third party
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 英特尔公司 加快执行时存储器别名使用检查

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