JP6017586B2 - グラフィックス処理ユニットのための関連するテクスチャロード命令を有する制御フロー命令のプレディケーション - Google Patents
グラフィックス処理ユニットのための関連するテクスチャロード命令を有する制御フロー命令のプレディケーション Download PDFInfo
- Publication number
- JP6017586B2 JP6017586B2 JP2014553295A JP2014553295A JP6017586B2 JP 6017586 B2 JP6017586 B2 JP 6017586B2 JP 2014553295 A JP2014553295 A JP 2014553295A JP 2014553295 A JP2014553295 A JP 2014553295A JP 6017586 B2 JP6017586 B2 JP 6017586B2
- Authority
- JP
- Japan
- Prior art keywords
- instructions
- instruction
- texture
- texture load
- memory
- 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
- 238000012545 processing Methods 0.000 title claims description 32
- 230000015654 memory Effects 0.000 claims description 104
- 238000000034 method Methods 0.000 claims description 76
- 238000004590 computer program Methods 0.000 claims description 33
- 230000006870 function Effects 0.000 claims description 12
- 238000012546 transfer Methods 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 description 22
- 238000009877 rendering Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 230000001413 cellular effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000000844 transformation Methods 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000010454 slate Substances 0.000 description 2
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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
-
- 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/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
- Stored Programmes (AREA)
Description
[0017]概して、本開示では、1つまたは複数のテクスチャロード命令を含む制御フロー文の効率的なコンパイルのための技法について説明する。「制御フロー」という句は、概して、何らかの条件文に基づいて、コンピュータプログラムを形成する高レベル(HL)ソフトウェア命令の実行のフローを制御することを意図する、HLプログラミング言語に従って定義された命令のセットを指す。すなわち、制御フロー(CF)文の実行により、結果として、HLソフトウェア命令の2つ以上の分岐のうちのいずれが実行されるべきかに関する選定が行われ得る。いくつかの事例で、CF文は、「フロー制御」文または「条件付きフロー制御」文と呼ばれることもある。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
低レベルソフトウェア命令を生成するために高レベルソフトウェア命令をコンパイルする方法であって、
コンピューティングデバイスを用いて、1つまたは複数の関連するテクスチャロード命令を有する高レベル(HL)制御フロー(CF)命令のセットを識別することであって、HL CF命令の前記セットが1つまたは複数の分岐を備える、識別することと、
前記コンピューティングデバイスを用いて、HL CF命令の前記識別されたセットを、述語構造を有する低レベル(LL)命令に変換することと、
前記述語構造を有する前記変換された(LL)命令を出力することと
を備える、方法。
[C2]
前記1つまたは複数のテクスチャロード命令の実行が、画像データをグラフィックス処理ユニットのローカルメモリに転送させる、C1に記載の方法。
[C3]
前記HL CF命令を変換することが、前記変換された低レベル命令の無条件直列実行を可能にするために前記1つまたは複数の分岐を削除することを備える、C1に記載の方法。
[C4]
HL CF命令の前記セットを識別することは、前記1つまたは複数の関連するテクスチャロード命令がHL CF命令の前記セットに関して対称であるかどうかを識別することを備え、前記1つまたは複数の関連するテクスチャロード命令が対称でない場合、HL CF命令の前記識別されたセットを変換することを控えることをさらに備える、C1に記載の方法。
[C5]
HL CF命令の前記識別されたセットを変換することが、LL命令のセットを生成することを備え、LL命令の前記セットの実行が、選択文の結果にアドレスを割り当てさせ、前記割り当てられたアドレスからテクスチャをロードさせる、C1に記載の方法。
[C6]
HL CF命令の前記セットを識別することが、条件を有するIF−ELSE文を識別することを備え、前記条件が真である場合、HL CF命令の前記セットが第1のメモリアドレスからテクスチャをロードさせ、前記条件が偽である場合、HL CF命令の前記セットが第2のメモリアドレスから前記テクスチャをロードさせる、C1に記載の方法。
[C7]
HL CF命令の前記セットを変換することが、LL命令のセットを生成することを備え、LL命令の前記セットが、前記条件の結果に基づいてアドレスを予約させ、前記予約されたアドレスから前記テクスチャをロードさせる、C6に記載の方法。
[C8]
前記変換されたLL命令を出力することが、前記変換されたLL命令をメモリに記憶することを備える、C1に記載の方法。
[C9]
前記HL命令を変換することが、前記LL命令を生成するために前記HL命令をランタイムコンパイルすることを備え、グラフィックス処理ユニット上で前記出力されたLL命令を実行することをさらに備える、C1に記載の方法。
[C10]
前記出力されたLL命令を実行することが、前記コンパイルされた命令を、前記HL CF命令の条件と前記出力されたLL命令の座標とが依存しない命令より前に実行されるようにスケジュールすることを備える、C9に記載の方法。
[C11]
低レベルソフトウェア命令を生成するために高レベルソフトウェア命令をコンパイルするための装置であって、
1つまたは複数の関連するテクスチャロード命令を有する高レベル(HL)制御フロー(CF)命令のセットを識別することであって、HL CF命令の前記セットが1つまたは複数の分岐を備える、識別することと、
HL CF命令の前記識別されたセットを、述語構造を有する低レベル(LL)命令に変換することと、
前記述語構造を有する前記変換された(LL)命令を出力することと
を行うように構成された1つまたは複数の処理ユニットを備える、装置。
[C12]
ローカルメモリをさらに備え、前記1つまたは複数のテクスチャロード命令の実行が、画像データを前記装置のローカルメモリに転送させる、C11に記載の装置。
[C13]
前記HL CF命令を変換するために、前記1つまたは複数のプロセッサが、前記変換された低レベル命令の無条件直列実行を可能にするために前記1つまたは複数の分岐を削除するように構成された、C11に記載の装置。
[C14]
HL CF命令の前記セットを識別するために、前記1つまたは複数のプロセッサは、前記1つまたは複数の関連するテクスチャロード命令がHL CF命令の前記セットに関して対称であるかどうかを識別するように構成され、前記1つまたは複数の関連するテクスチャロード命令が対称でない場合、HL CF命令の前記識別されたセットを変換することを控えるようにさらに構成された、C11に記載の装置。
[C15]
HL CF命令の前記識別されたセットを変換するために、前記1つまたは複数のプロセッサが、LL命令のセットを生成するように構成され、LL命令の前記セットの実行が、選択文の結果にアドレスを割り当てさせ、前記割り当てられたアドレスからテクスチャをロードさせる、C11に記載の装置。
[C16]
HL CF命令の前記セットを識別するために、前記1つまたは複数のプロセッサが、条件を有するIF−ELSE文を識別するように構成され、前記条件が真である場合、HL CF命令の前記セットが第1のメモリアドレスからテクスチャをロードさせ、前記条件が偽である場合、HL CF命令の前記セットが第2のメモリアドレスから前記テクスチャをロードさせる、C11に記載の装置。
[C17]
HL CF命令の前記セットを変換するために、前記1つまたは複数のプロセッサが、LL命令のセットを生成するように構成され、LL命令の前記セットが、前記条件の結果に基づいてアドレスを予約させ、前記予約されたアドレスから前記テクスチャをロードさせる、C16に記載の装置。
[C18]
前記変換されたLL命令を出力するために、前記1つまたは複数のプロセッサが、前記変換されたLL命令をメモリに記憶するように構成された、C11に記載の装置。
[C19]
前記HL命令を変換するために、前記1つまたは複数のプロセッサが、前記LL命令を生成するために前記HL命令をランタイムコンパイルするように構成され、前記出力されたLL命令を実行するようにさらに構成された、C11に記載の装置。
[C20]
前記出力されたLL命令を実行するために、前記1つまたは複数のプロセッサが、前記コンパイルされた命令を、前記HL CF命令の条件と前記出力されたLL命令の座標とが依存しない命令より前に実行されるようにスケジュールするように構成された、C19に記載の装置。
[C21]
低レベルソフトウェア命令を生成するために高レベルソフトウェア命令をコンパイルするためのコンピュータプログラム製品であって、実行されたとき、
1つまたは複数の関連するテクスチャロード命令を有する高レベル(HL)制御フロー(CF)命令のセットを識別することであって、HL CF命令の前記セットが1つまたは複数の分岐を備える、識別することと、
HL CF命令の前記識別されたセットを、述語構造を有する低レベル(LL)命令に変換することと、
前記述語構造を有する前記変換された(LL)命令を出力することと
を1つまたは複数のプロセッサに行わせる命令を記憶する、コンピュータプログラム製品。
[C22]
前記1つまたは複数のテクスチャロード命令の実行が、画像データをグラフィックス処理ユニットのローカルメモリに転送させる、C21に記載のコンピュータプログラム製品。
[C23]
前記HL CF命令を変換することが、前記変換された低レベル命令の無条件直列実行を可能にするために前記1つまたは複数の分岐を削除することを備える、C21に記載のコンピュータプログラム製品。
[C24]
HL CF命令の前記セットを識別することは、前記1つまたは複数の関連するテクスチャロード命令がHL CF命令の前記セットに関して対称であるかどうかを識別することを備え、前記1つまたは複数の関連するテクスチャロード命令が対称でない場合、HL CF命令の前記識別されたセットを変換することを控えることをさらに備える、C21に記載のコンピュータプログラム製品。
[C25]
HL CF命令の前記識別されたセットを変換することが、LL命令のセットを生成することを備え、LL命令の前記セットの実行が、選択文の結果にアドレスを割り当てさせ、前記割り当てられたアドレスからテクスチャをロードさせる、C21に記載のコンピュータプログラム製品。
[C26]
HL CF命令の前記セットを識別することが、条件を有するIF−ELSE文を識別することを備え、前記条件が真である場合、HL CF命令の前記セットが第1のメモリアドレスからテクスチャをロードさせ、前記条件が偽である場合、HL CF命令の前記セットが第2のメモリアドレスから前記テクスチャをロードさせる、C21に記載のコンピュータプログラム製品。
[C27]
HL CF命令の前記セットを変換することが、LL命令のセットを生成することを備え、LL命令の前記セットが、前記条件の結果に基づいてアドレスを予約させ、前記予約されたアドレスから前記テクスチャをロードさせる、C26に記載のコンピュータプログラム製品。
[C28]
前記変換されたLL命令を出力することが、前記変換されたLL命令をメモリに記憶することを備える、C21に記載のコンピュータプログラム製品。
[C29]
前記HL命令を変換することが、前記LL命令を生成するために前記HL命令をランタイムコンパイルすることを備え、実行されたとき、グラフィックス処理ユニット上で前記出力されたLL命令を実行することを前記1つまたは複数のプロセッサに行わせる命令をさらに備える、C21に記載のコンピュータプログラム製品。
[C30]
前記出力されたLL命令を実行することが、前記コンパイルされた命令を、前記HL CF命令の条件と前記出力されたLL命令の座標とが依存しない命令より前に実行されるようにスケジュールすることを備える、C29に記載のコンピュータプログラム製品。
[C31]
低レベルソフトウェア命令を生成するために高レベルソフトウェア命令をコンパイルするための装置であって、
1つまたは複数の関連するテクスチャロード命令を有する高レベル(HL)制御フロー(CF)命令のセットを識別するための手段であって、HL CF命令の前記セットが1つまたは複数の分岐を備える、識別するための手段と、
HL CF命令の前記識別されたセットを、述語構造を有する低レベル(LL)命令に変換するための手段と、
前記述語構造を有する前記変換された(LL)命令を出力するための手段と
を備える、装置。
[C32]
前記1つまたは複数のテクスチャロード命令の実行が、画像データをグラフィックス処理ユニットのローカルメモリに転送させる、C31に記載の装置。
[C33]
前記HL CF命令を変換することが、前記変換された低レベル命令の無条件直列実行を可能にするために前記1つまたは複数の分岐を削除することを備える、C31に記載の装置。
[C34]
HL CF命令の前記セットを識別することは、前記1つまたは複数の関連するテクスチャロード命令がHL CF命令の前記セットに関して対称であるかどうかを識別することを備え、前記1つまたは複数の関連するテクスチャロード命令が対称でない場合、HL CF命令の前記識別されたセットを変換することを控えるための手段をさらに備える、C31に記載の装置。
[C35]
HL CF命令の前記識別されたセットを変換することが、LL命令のセットを生成することを備え、LL命令の前記セットの実行が、選択文の結果にアドレスを割り当てさせ、前記割り当てられたアドレスからテクスチャをロードさせる、C31に記載の装置。
[C36]
HL CF命令の前記セットを識別することが、条件を有するIF−ELSE文を識別することを備え、前記条件が真である場合、HL CF命令の前記セットが第1のメモリアドレスからテクスチャをロードさせ、前記条件が偽である場合、HL CF命令の前記セットが第2のメモリアドレスから前記テクスチャをロードさせる、C31に記載の装置。
[C37]
HL CF命令の前記セットを変換することが、LL命令のセットを生成することを備え、LL命令の前記セットが、前記条件の結果に基づいてアドレスを予約させ、前記予約されたアドレスから前記テクスチャをロードさせる、C36に記載の装置。
[C38]
前記変換されたLL命令を出力することが、前記変換されたLL命令をメモリに記憶することを備える、C31に記載の装置。
[C39]
前記HL命令を変換することが、前記LL命令を生成するために前記HL命令をランタイムコンパイルすることを備え、グラフィックス処理ユニット上で前記出力されたLL命令を実行することをさらに備える、C31に記載の装置。
[C40]
前記出力されたLL命令を実行することが、前記コンパイルされた命令を、前記HL CF命令の条件と前記出力されたLL命令の座標とが依存しない命令より前に実行されるようにスケジュールすることを備える、C39に記載の装置。
Claims (40)
- 低レベルソフトウェア命令を生成するために高レベルソフトウェア命令をコンパイルする方法であって、
コンピューティングデバイスを用いて、1つまたは複数の関連するテクスチャロード命令を有する高レベル(HL)制御フロー(CF)命令のセットを識別することと、ここにおいて前記1つまたは複数のテクスチャロード命令の実行がテクスチャをメモリにロードさせる、ここにおいてHL CF命令の前記セットが1つまたは複数の分岐を備える、
前記1つまたは複数の関連するテクスチャロード命令が、前記1つまたは複数の分岐に関連するテクスチャロード命令の数に関して対称であるか、ほぼ対称であるかを判断することと、
前記1つまたは複数のテクスチャロード命令が対称またはほぼ対称であるという判断結果に基づいて、前記コンピューティングデバイスを用いて、HL CF命令の前記識別されたセットを、述語構造を有する低レベル(LL)命令に変換することと、ここにおいて前記述語構造を有する前記LL命令は分岐することなしに実行可能である、
前記1つまたは複数のテクスチャロード命令が対称またはほぼ対称ではないという判断結果に基づいて、前記HL CF命令が変換されないように、HL CF命令の前記識別されたセットを変換することを控えることと、
前記述語構造を有する前記変換されたLL命令またはHL CF命令の前記変換されていないセットを出力することとを備える、方法。 - 前記1つまたは複数のテクスチャロード命令の実行が、前記テクスチャをグラフィックス処理ユニットのローカルメモリに転送させる、請求項1に記載の方法。
- 前記HL CF命令を変換することが、前記変換された低レベル命令の無条件直列実行を可能にするために前記1つまたは複数の分岐を削除することを備える、請求項1に記載の方法。
- 前記1つまたは複数の関連するテクスチャロード命令が対称であるか、ほぼ対称であるかを判断することが、前記1つまたは複数の分岐の各分岐に関連する等しい数のテクスチャロード命令を識別することを備える、請求項1に記載の方法。
- HL CF命令の前記識別されたセットを変換することが、LL命令のセットを生成することを備え、ここにおいてLL命令の前記セットの実行が、選択関数の結果に基づいてアドレスを割り当てさせ、前記割り当てられたアドレスからテクスチャをロードさせる、請求項1に記載の方法。
- HL CF命令の前記セットを識別することが、条件を有するIF−ELSE文を識別することを備え、ここにおいて前記条件が真である場合、HL CF命令の前記セットが第1のメモリアドレスからテクスチャをロードさせ、前記条件が偽である場合、HL CF命令の前記セットが第2のメモリアドレスから前記テクスチャをロードさせる、請求項1に記載の方法。
- HL CF命令の前記セットを変換することが、LL命令のセットを生成することを備え、ここにおいてLL命令の前記セットが、前記条件の結果に基づいてアドレスを予約させ、前記予約されたアドレスから前記テクスチャをロードさせる、請求項6に記載の方法。
- 前記変換されたLL命令を出力することが、前記変換されたLL命令をメモリに記憶することを備える、請求項1に記載の方法。
- 前記HL命令を変換することが、前記LL命令を生成するために前記HL命令をランタイムコンパイルすることを備え、グラフィックス処理ユニット上で前記出力されたLL命令を実行することをさらに備える、請求項1に記載の方法。
- 前記出力されたLL命令を実行することが、前記コンパイルされた命令を、前記HL CF命令の条件と前記出力されたLL命令の座標とが依存しない命令より前に実行されるようにスケジュールすることを備える、請求項9に記載の方法。
- 低レベルソフトウェア命令を生成するために高レベルソフトウェア命令をコンパイルするための装置であって、
1つまたは複数の関連するテクスチャロード命令を有する高レベル(HL)制御フロー(CF)命令のセットを識別することと、ここにおいて前記1つまたは複数のテクスチャロード命令の実行がテクスチャをメモリにロードさせる、ここにおいてHL CF命令の前記セットが1つまたは複数の分岐を備える、
前記1つまたは複数の関連するテクスチャロード命令が、前記1つまたは複数の分岐に関連するテクスチャロード命令の数に関して対称であるか、ほぼ対称であるかを判断することと、
前記1つまたは複数のテクスチャロード命令が対称またはほぼ対称であるという判断結果に基づいて、HL CF命令の前記識別されたセットを、述語構造を有する低レベル(LL)命令に変換することと、ここにおいて前記述語構造を有する前記LL命令は、分岐することなしに実行される、
前記1つまたは複数のテクスチャロード命令が対称またはほぼ対称ではないという判断結果に基づいて、前記HL CF命令が変換されないように、HL CF命令の前記識別されたセットを変換することを控えることと、
前記述語構造を有する前記変換された(LL)命令またはHL CF命令の前記変換されていないセットを出力することと
を行うように構成された1つまたは複数の処理ユニットを備える、装置。 - ローカルメモリをさらに備え、前記1つまたは複数のテクスチャロード命令の実行が、前記テクスチャを前記装置のローカルメモリに転送させる、請求項11に記載の装置。
- 前記HL CF命令を変換するために、前記1つまたは複数のプロセッサが、前記変換された低レベル命令の無条件直列実行を可能にするために前記1つまたは複数の分岐を削除するように構成された、請求項11に記載の装置。
- 前記1つまたは複数の関連するテクスチャロード命令が対称であるか、ほぼ対称であるかを判断するために、前記1つまたは複数の処理ユニットが、前記1つまたは複数の分岐の各分岐に関連する等しい数のテクスチャロード命令を識別するように構成された、請求項11に記載の装置。
- HL CF命令の前記識別されたセットを変換するために、前記1つまたは複数のプロセッサが、LL命令のセットを生成するように構成され、LL命令の前記セットの実行が、選択関数の結果に基づいてアドレスを割り当てさせ、前記割り当てられたアドレスからテクスチャをロードさせる、請求項11に記載の装置。
- HL CF命令の前記セットを識別するために、前記1つまたは複数のプロセッサが、条件を有するIF−ELSE文を識別するように構成され、前記条件が真である場合、HL CF命令の前記セットが第1のメモリアドレスからテクスチャをロードさせ、前記条件が偽である場合、HL CF命令の前記セットが第2のメモリアドレスから前記テクスチャをロードさせる、請求項11に記載の装置。
- HL CF命令の前記セットを変換するために、前記1つまたは複数のプロセッサが、LL命令のセットを生成するように構成され、LL命令の前記セットが、前記条件の結果に基づいてアドレスを予約させ、前記予約されたアドレスから前記テクスチャをロードさせる、請求項16に記載の装置。
- 前記変換されたLL命令を出力するために、前記1つまたは複数のプロセッサが、前記変換されたLL命令をメモリに記憶するように構成された、請求項11に記載の装置。
- 前記HL命令を変換するために、前記1つまたは複数のプロセッサが、前記LL命令を生成するために前記HL命令をランタイムコンパイルするように構成され、前記出力されたLL命令を実行することをさらに備える、請求項11に記載の装置。
- 前記出力されたLL命令を実行するために、前記1つまたは複数のプロセッサが、前記コンパイルされた命令を、前記HL CF命令の条件と前記出力されたLL命令の座標とが依存しない命令より前に実行されるようにスケジュールするように構成された、請求項19に記載の装置。
- 低レベルソフトウェア命令を生成するために高レベルソフトウェア命令をコンパイルするためのコンピュータプログラムであって、実行されたとき、
1つまたは複数の関連するテクスチャロード命令を有する高レベル(HL)制御フロー(CF)命令のセットを識別することと、ここにおいて前記1つまたは複数のテクスチャロード命令の実行がテクスチャをメモリにロードさせる、ここにおいてHL CF命令の前記セットが1つまたは複数の分岐を備える、
前記1つまたは複数の関連するテクスチャロード命令が、前記1つまたは複数の分岐に関連するテクスチャロード命令の数に関して対称であるか、ほぼ対称であるかを判断することと、
前記1つまたは複数のテクスチャロード命令が対称またはほぼ対称であるという判断結果に基づいて、HL CF命令の前記識別されたセットを、述語構造を有する低レベル(LL)命令に変換することと、ここにおいて前記述語構造を有する前記LL命令は分岐することなしに実行される、
前記1つまたは複数のテクスチャロード命令が対称またはほぼ対称ではないという判断結果に基づいて、前記HL CF命令が変換されないように、HL CF命令の前記識別されたセットを変換することを控えることと、
前記述語構造を有する前記変換された(LL)命令またはHL CF命令の前記変換されていないセットを出力することと
を1つまたは複数のプロセッサに行わせる命令を備える、コンピュータプログラム。 - 前記1つまたは複数のテクスチャロード命令の実行が、前記テクスチャをグラフィックス処理ユニットのローカルメモリに転送させる、請求項21に記載のコンピュータプログラム。
- 前記HL CF命令を変換することが、前記変換された低レベル命令の無条件直列実行を可能にするために前記1つまたは複数の分岐を削除することを備える、請求項21に記載のコンピュータプログラム。
- 前記1つまたは複数の関連するテクスチャロード命令が対称であるか、ほぼ対称であるかを判断することために、前記命令が、前記1つまたは複数のプロセッサに、前記1つまたは複数の分岐の各分岐に関連する等しい数のテクスチャロード命令を識別させる、請求項21に記載のコンピュータプログラム。
- HL CF命令の前記識別されたセットを変換することが、LL命令のセットを生成することを備え、ここにおいてLL命令の前記セットの実行が、選択関数の結果に基づいてアドレスを割り当てさせ、前記割り当てられたアドレスからテクスチャをロードさせる、請求項21に記載のコンピュータプログラム。
- HL CF命令の前記セットを識別することが、条件を有するIF−ELSE文を識別することを備え、ここにおいて前記条件が真である場合、HL CF命令の前記セットが第1のメモリアドレスからテクスチャをロードさせ、前記条件が偽である場合、HL CF命令の前記セットが第2のメモリアドレスから前記テクスチャをロードさせる、請求項21に記載のコンピュータプログラム。
- HL CF命令の前記セットを変換することが、LL命令のセットを生成することを備え、ここにおいてLL命令の前記セットが、前記条件の結果に基づいてアドレスを予約させ、前記予約されたアドレスから前記テクスチャをロードさせる、請求項26に記載のコンピュータプログラム。
- 前記変換されたLL命令を出力することが、前記変換されたLL命令をメモリに記憶することを備える、請求項21に記載のコンピュータプログラム。
- 前記HL命令を変換することが、前記LL命令を生成するために前記HL命令をランタイムコンパイルすることを備え、実行されたとき、グラフィックス処理ユニット上で前記出力されたLL命令を実行することを前記1つまたは複数のプロセッサに行わせる命令をさらに備える、請求項21に記載のコンピュータプログラム。
- 前記出力されたLL命令を実行することが、前記コンパイルされた命令を、前記HL CF命令の条件と前記出力されたLL命令の座標とが依存しない命令より前に実行されるようにスケジュールすることを備える、請求項29に記載のコンピュータプログラム。
- 低レベルソフトウェア命令を生成するために高レベルソフトウェア命令をコンパイルするための装置であって、
1つまたは複数の関連するテクスチャロード命令を有する高レベル(HL)制御フロー(CF)命令のセットを識別するための手段と、ここにおいて前記1つまたは複数のテクスチャロード命令の実行がテクスチャをメモリにロードさせる、ここにおいてHL CF命令の前記セットが1つまたは複数の分岐を備える、
前記1つまたは複数の関連するテクスチャロード命令が、前記1つまたは複数の分岐に関連するテクスチャロード命令の数に関して対称であるか、ほぼ対称であるかを判断するための手段と、
前記1つまたは複数のテクスチャロード命令が対称またはほぼ対称であるという判断結果に基づいて、HL CF命令の前記識別されたセットを、述語構造を有する低レベル(LL)命令に変換するための手段と、ここにおいて前記述語構造を有する前記LL命令は分岐することなしに実行可能である、
前記1つまたは複数のテクスチャロード命令が対称またはほぼ対称ではないという判断結果に基づいて、前記HL CF命令が変換されないように、HL CF命令の前記識別されたセットを変換することを控えるための手段と、
前記述語構造を有する前記変換されたLL命令またはHL CF命令の前記変換されていないセットを出力するための手段とを備える、装置。 - 前記1つまたは複数のテクスチャロード命令の実行が、前記テクスチャをグラフィックス処理ユニットのローカルメモリに転送させる、請求項31に記載の装置。
- 前記HL CF命令を変換するための前記手段が、前記変換された低レベル命令の無条件直列実行を可能にするために前記1つまたは複数の分岐を削除するための手段を備える、請求項31に記載の装置。
- 前記1つまたは複数の関連するテクスチャロード命令が対称であるか、ほぼ対称であるかを判断するための前記手段が、前記1つまたは複数の分岐の各分岐に関連する等しい数のテクスチャロード命令を識別するための手段を備える、請求項31に記載の装置。
- HL CF命令の前記識別されたセットを変換するための前記手段が、LL命令のセットを生成するための手段を備え、LL命令の前記セットの実行が、選択関数の結果に基づいてアドレスを割り当てさせ、前記割り当てられたアドレスからテクスチャをロードさせる、請求項31に記載の装置。
- HL CF命令の前記セットを識別するための前記手段が、条件を有するIF−ELSE文を識別するための手段を備え、前記条件が真である場合、HL CF命令の前記セットが第1のメモリアドレスからテクスチャをロードさせ、前記条件が偽である場合、HL CF命令の前記セットが第2のメモリアドレスから前記テクスチャをロードさせる、請求項31に記載の装置。
- HL CF命令の前記セットを変換するための前記手段が、LL命令のセットを生成するための手段を備え、LL命令の前記セットが、前記条件の結果に基づいてアドレスを予約させ、前記予約されたアドレスから前記テクスチャをロードさせる、請求項36に記載の装置。
- 前記変換されたLL命令を出力するための前記手段が、前記変換されたLL命令をメモリに記憶するための手段を備える、請求項31に記載の装置。
- 前記HL命令を変換するための前記手段が、前記LL命令を生成するために前記HL命令をランタイムコンパイルするための手段を備え、グラフィックス処理ユニット上で前記出力されたLL命令を実行することをさらに備える、請求項31に記載の装置。
- 前記出力されたLL命令を実行するための前記手段が、前記コンパイルされた命令を、前記HL CF命令の条件と前記出力されたLL命令の座標とが依存しない命令より前に実行されるようにスケジュールするための手段を備える、請求項39に記載の装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261589072P | 2012-01-20 | 2012-01-20 | |
US61/589,072 | 2012-01-20 | ||
US13/414,402 | 2012-03-07 | ||
US13/414,402 US9256408B2 (en) | 2012-01-20 | 2012-03-07 | Optimizing texture commands for graphics processing unit |
PCT/US2012/068203 WO2013109353A1 (en) | 2012-01-20 | 2012-12-06 | Predication of control flow instructions having associated texture load instructions for a graphics processing unit |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2015509249A JP2015509249A (ja) | 2015-03-26 |
JP2015509249A5 JP2015509249A5 (ja) | 2016-05-26 |
JP6017586B2 true JP6017586B2 (ja) | 2016-11-02 |
Family
ID=48798315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014553295A Expired - Fee Related JP6017586B2 (ja) | 2012-01-20 | 2012-12-06 | グラフィックス処理ユニットのための関連するテクスチャロード命令を有する制御フロー命令のプレディケーション |
Country Status (5)
Country | Link |
---|---|
US (1) | US9256408B2 (ja) |
EP (1) | EP2805232B1 (ja) |
JP (1) | JP6017586B2 (ja) |
CN (1) | CN104067225B (ja) |
WO (1) | WO2013109353A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8762972B2 (en) * | 2011-02-08 | 2014-06-24 | Nokia Corporation | Methods and apparatuses for facilitating execution of applications requiring runtime compilation |
US9665393B1 (en) * | 2012-04-17 | 2017-05-30 | Facebook, Inc. | Storage and privacy service |
US9164743B2 (en) | 2012-07-02 | 2015-10-20 | International Business Machines Corporation | Strength reduction compiler optimizations for operations with unknown strides |
CN104915180B (zh) * | 2014-03-10 | 2017-12-22 | 华为技术有限公司 | 一种数据操作的方法和设备 |
US9911175B2 (en) | 2015-09-03 | 2018-03-06 | Qualcomm Incorporated | Modification of graphical command tokens |
KR20180038793A (ko) * | 2016-10-07 | 2018-04-17 | 삼성전자주식회사 | 영상 데이터 처리 방법 및 장치 |
DE102016223484B4 (de) * | 2016-11-25 | 2021-04-15 | Fujitsu Limited | Bestimmen von Ähnlichkeiten in Computersoftwarecodes zur Leistungsanalyse |
US10235272B2 (en) * | 2017-03-06 | 2019-03-19 | Xilinx, Inc. | Debugging system and method |
US10635439B2 (en) * | 2018-06-13 | 2020-04-28 | Samsung Electronics Co., Ltd. | Efficient interface and transport mechanism for binding bindless shader programs to run-time specified graphics pipeline configurations and objects |
WO2020181670A1 (en) * | 2019-03-11 | 2020-09-17 | Huawei Technologies Co., Ltd. | Control flow optimization in graphics processing unit |
CN116048531B (zh) * | 2023-03-30 | 2023-08-08 | 南京砺算科技有限公司 | 指令编译方法及图形处理装置、存储介质、终端设备 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6453459B1 (en) * | 1998-01-21 | 2002-09-17 | Apple Computer, Inc. | Menu authoring system and method for automatically performing low-level DVD configuration functions and thereby ease an author's job |
US6745384B1 (en) * | 1998-05-29 | 2004-06-01 | Microsoft Corporation | Anticipatory optimization with composite folding |
US6662294B1 (en) | 2000-09-28 | 2003-12-09 | International Business Machines Corporation | Converting short branches to predicated instructions |
JP4044756B2 (ja) * | 2001-12-11 | 2008-02-06 | 松下電器産業株式会社 | プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラム |
JP3847672B2 (ja) * | 2002-07-03 | 2006-11-22 | 松下電器産業株式会社 | コンパイラ装置及びコンパイル方法 |
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 |
WO2004072796A2 (en) * | 2003-02-05 | 2004-08-26 | Arizona Board Of Regents | Reconfigurable processing |
US8823718B2 (en) | 2003-11-14 | 2014-09-02 | Microsoft Corporation | Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques |
US7847800B2 (en) * | 2004-04-16 | 2010-12-07 | Apple Inc. | System for emulating graphics operations |
US7793079B2 (en) | 2007-06-27 | 2010-09-07 | Qualcomm Incorporated | Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction |
US20100262813A1 (en) | 2009-04-14 | 2010-10-14 | International Business Machines Corporation | Detecting and Handling Short Forward Branch Conversion Candidates |
US10360039B2 (en) | 2009-09-28 | 2019-07-23 | Nvidia Corporation | Predicted instruction execution in parallel processors with reduced per-thread state information including choosing a minimum or maximum of two operands based on a predicate value |
US20110078424A1 (en) * | 2009-09-30 | 2011-03-31 | International Business Machines Corporation | Optimizing program code using branch elimination |
US9495136B2 (en) * | 2011-01-28 | 2016-11-15 | International Business Machines Corporation | Using aliasing information for dynamic binary optimization |
-
2012
- 2012-03-07 US US13/414,402 patent/US9256408B2/en not_active Expired - Fee Related
- 2012-12-06 JP JP2014553295A patent/JP6017586B2/ja not_active Expired - Fee Related
- 2012-12-06 EP EP12809421.6A patent/EP2805232B1/en active Active
- 2012-12-06 WO PCT/US2012/068203 patent/WO2013109353A1/en active Application Filing
- 2012-12-06 CN CN201280067461.XA patent/CN104067225B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2015509249A (ja) | 2015-03-26 |
US9256408B2 (en) | 2016-02-09 |
WO2013109353A1 (en) | 2013-07-25 |
US20130191816A1 (en) | 2013-07-25 |
CN104067225A (zh) | 2014-09-24 |
EP2805232B1 (en) | 2019-03-27 |
EP2805232A1 (en) | 2014-11-26 |
CN104067225B (zh) | 2017-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6017586B2 (ja) | グラフィックス処理ユニットのための関連するテクスチャロード命令を有する制御フロー命令のプレディケーション | |
US8935683B2 (en) | Inline function linking | |
US11941400B2 (en) | Methods and apparatus for intentional programming for heterogeneous systems | |
JP6329274B2 (ja) | コンパイラ最適化のためのメモリ参照メタデータ | |
CN107710150B (zh) | 从包含层次子例程信息的中间代码产生目标代码 | |
US8146071B2 (en) | Pipelined parallelization of multi-dimensional loops with multiple data dependencies | |
US20120297163A1 (en) | Automatic kernel migration for heterogeneous cores | |
US20160196112A1 (en) | Software Development Tool | |
US9841958B2 (en) | Extensible data parallel semantics | |
Mikushin et al. | KernelGen--The Design and Implementation of a Next Generation Compiler Platform for Accelerating Numerical Models on GPUs | |
US9134973B2 (en) | Dynamic compiling and loading at runtime | |
US20120284701A1 (en) | Efficient conditional flow control compilation | |
WO2015183851A1 (en) | Combining compute tasks for a graphics processing unit | |
Vocke et al. | Extending halide to improve software development for imaging dsps | |
CN113885877A (zh) | 编译的方法、装置、设备及介质 | |
CN109947427A (zh) | 用于将非串并行控制流图转换为数据流的方法和设备 | |
Zhu et al. | Two-phase execution of binary applications on CPU/GPU machines | |
WO2020172788A1 (en) | Workload oriented constant propagation for compiler | |
P Joseph | Accelerating Java on Embedded GPU | |
Ascott | JavaFlow: a Java DataFlow Machine | |
CN115576604A (zh) | 一种跨平台开发系统 | |
Martinez Arroyo | CU2CL: A CUDA-to-OpenCL Translator for Multi-and Many-Core Architectures | |
JP2007087132A (ja) | プロセッサ、プロセッサでのプログラム実行方法、コンパイラ装置及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20151110 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20151110 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160323 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20160323 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20160330 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160628 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160815 |
|
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: 20160830 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160928 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6017586 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |