JP7416448B2 - プログラム、情報変換装置及び情報変換方法 - Google Patents
プログラム、情報変換装置及び情報変換方法 Download PDFInfo
- Publication number
- JP7416448B2 JP7416448B2 JP2021520832A JP2021520832A JP7416448B2 JP 7416448 B2 JP7416448 B2 JP 7416448B2 JP 2021520832 A JP2021520832 A JP 2021520832A JP 2021520832 A JP2021520832 A JP 2021520832A JP 7416448 B2 JP7416448 B2 JP 7416448B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- phi
- register
- inter
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 50
- 238000006243 chemical reaction Methods 0.000 title claims description 22
- 230000006870 function Effects 0.000 claims description 163
- 238000012545 processing Methods 0.000 claims description 120
- 238000012546 transfer Methods 0.000 claims description 92
- 238000004458 analytical method Methods 0.000 claims description 72
- 230000010076 replication Effects 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 15
- 230000010365 information processing Effects 0.000 description 5
- 230000015654 memory Effects 0.000 description 5
- 230000003936 working memory Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- APTZNLHMIGJTEW-UHFFFAOYSA-N pyraflufen-ethyl Chemical compound C1=C(Cl)C(OCC(=O)OCC)=CC(C=2C(=C(OC(F)F)N(C)N=2)Cl)=C1F APTZNLHMIGJTEW-UHFFFAOYSA-N 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/44—Encoding
-
- 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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
- G06F8/452—Loops
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
記憶部2は、様々な情報を記憶する揮発性または不揮発性の記憶媒体である。これは、例えばソリッドステートドライブ(Solid State Drive:SSD)やハードディスクドライブ(Hard Disk Drive)のストレージデバイスとして、あるいは、プログラムの演算に係る一時的に必要な情報(引数、配列等)を記憶するランダムアクセスメモリ(Random Access Memory:RAM)等のメモリとして実施されうる。また、これらの組合せであってもよい。
通信部3は、外部の情報処理装置、USBメモリなどの外付け記憶デバイス、キーボード、マウス、ディスプレイなどの入出力デバイスとの間で情報の授受を行なうものである。USB、IEEE1394、Thunderbolt、有線LANネットワーク通信等といった有線型の通信手段や、WiFiなどの無線LANネットワーク通信、5G/LTE/3G等のモバイル通信、Bluetooth(登録商標)通信等を必要に応じて含めてもよい。これらは一例であり、専用の通信規格を採用してもよい。すなわち、これら複数の通信手段の集合として実施することがより好ましい。
制御部4は、コンパイル装置に関連する全体動作の処理・制御を行う。制御部4は、例えば不図示である中央処理装置(Central Processing Unit:CPU)である。このコンパイル装置1においては、必ずしもCPUがリネームレス・アウトオブオーダー実行プロセッサである必要はなく、記憶部2に記憶されているソフトウェアを実行可能なものであれば、RISC(Reduced Instruction Set Computer)やCISC(Complex Instruction Set Computer)どちらであっても構わないし、CPUとしての処理能力に関わる動作周波数やコアの数さらにはキャッシュサイズなどCPUの構成パラメータも限定されない。
作業メモリ5部は制御部4がコンパイル処理やリンク処理を行う際の一時的な作業領域として使用するメモリで、ランダムアクセスメモリ(Random Access Memory:RAM)が一般に使われるが、DRAM(Dynamic RAM)、SDRAM(Synchronous Dynamic RAM)、SRAM(Static RAM)など種類は限定されない。
第3章では、本発明の実施形態に係るコンパイラ21について、図面を用いて説明する。図2は本実施形態に係るコンパイラ21の機能ブロック図である。コンパイラはプログラム言語で記述されたソースプログラム20を、対象とするプロセッサが処理可能な命令を用いたオブジェクトコード22に変換するものである。ここで、プログラム言語は、C、C++、C#、Javaなど種類は限定されない。
(A)1つの基本ブロックに存在する複数のphi関数から参照される命令が存在する箇所を特定し、当該命令箇所にレジスタ間転送命令を挿入する、複製必要性解析処理部、
(B)phi関数の参照が循環している閉路を特定し、当該閉路に対してレジスタ間転送命令を挿入する、ループ内定数解析処理部、
(C)複数のphi関数の参照先となる各命令間にデータ依存がある箇所を特定し、当該箇所にレジスタ間転送命令を挿入する、命令間依存解析処理部
(D)複数の実行経路で分岐前の同一命令の結果を参照しているphi関数がある箇所を特定し、当該実行経路にレジスタ間転送命令を挿入する、同一命令参照解析処理部、
(E)ループ処理内に存在するレジスタ間転送命令が対象とする変数の値を、ループ処理開始前に汎用レジスタ以外の記憶素子にストアし、当該値をループ処理終了後にロードし、前記レジスタ間転送命令を削除する、スピルアウト有効性解析処理部、
を具備するコンパイラである。
図4A、図4Bを用いて、(A)複製必要性解析処理機能について説明する。図4Aでは左側の制御フローにおいて、命令I101にラベル(1)があり、命令I102にて合流地点“.join”にジャンプしている。一方、右側の制御フローでは命令I103にラベル(2)、命令I104にラベル(3)があり、命令I105で合流地点“.join”にジャンプしている。合流後の命令I106ではphi関数でラベル(1)とラベル(2)を参照し、命令I107ではphi関数でラベル(1)とラベル(3)を参照している。すなわち、ラベル(1)を定義する命令I101は、同一基本ブロックに存在する2つのphi関数(I106,I107)から参照されている。このような場合に、ラベル(1)と(2)およびラベル(1)と(3)の距離を同時に合わせることは、ラベル(2)とラベル(3)が同一の基本ブロックに存在する異なる命令であることから不可能である。
3.2 (B)ループ内定数解析処理機能
図5A、図5Bを用いて、(B)ループ内定数解析処理機能について説明する。図5Aでは命令I201のphi関数と命令I204のphi関数で、それぞれを参照しあっており、参照が循環した閉路(ループ)となっている。なお、命令I202と命令I205は閉路構成には直接関係しない複数命令、命令I203,I206は相手側のphi関数(それぞれI204とI201)にジャンプする命令である。このようにphi関数の閉路が循環している場合、その閉路上には本来参照すべき命令が存在しない。
図5Aの状態を解決するために、レジスタ間転送命令(RMOV)を挿入したアセンブリコードフロー図を図5Bに示す。ジャンプ命令I203の直前にRMOV命令I207を挿入し、ラベルを(3)とするとともに、図5A中命令I204で参照していたラベル(2)をラベル(3)に変更したものを命令I208としている。換言すると、phi関数の参照が循環している閉路を特定し、当該閉路に対してレジスタ間転送命令RMOVを挿入する処理である。
図6A、図6Bを用いて、(C)命令間依存解析処理機能について説明する。図6A左上の基本ブロックでは、命令I301でロードした値を、命令I302および命令I303で使用しており、右上の基本ブロックでは、命令I305および命令I306それぞれでロードした値を命令I307で使用している。一方、命令I304および命令I308でジャンプした後は命令I309で合流するが、命令I309、命令I310および命令I311のphi関数がそれぞれ、“ラベル(3)とラベル(4)”、“ラベル(2)とラベル(5)”および“ラベル(1)とラベル(6)”を参照しており、制約を満たせない。このように複数のphi関数の参照先となる各命令間に依存関係がある場合、全ての経路で同じ順序になるように配置することが出来ないという問題がある。
図7A、図7Bを用いて、(D)同一命令参照解析処理機能について説明する。図7Aでは、命令I401~I404の処理後に、分岐があり、その後phi関数I410で合流している。このときphi関数I410,I411では、それぞれ“ラベル(1)とラベル(1)”および“ラベル(2)とラベル(2)”と、同一命令の結果を参照している。この場合、その距離調整が他のphi関数の距離調整と競合する場合がある。通常のphi関数は二つの独立な命令を参照するのに対し、この場合は同じ命令を参照しており命令移動の自由度が低下していることや、二つの異なる命令を同じ位置に配置することはできないことが原因である。
・複数の実行経路で分岐前の同一命令の結果を参照しているphi関数がある箇所(I410)を特定し、当該phi関数をphi関数α、phi関数β、phi関数γに分類する。
・phi関数αとは、2つの実行経路で同じ命令の結果を参照しているphi関数であり、図7AではI410およびI411である。
・phi関数βとは、2つの実行経路で異なる命令の結果を参照し、そのうち片方だけが分岐より前の命令を参照しているphi関数であり、図7AではI412である。
・phi関数γとは、2つの実行経路で異なる命令の結果を参照し、その両方が分岐より前の命令を参照しているphi関数である。
・phi関数αとphi関数βが同時に存在する場合は、レジスタ間転送命令(RMOV)を1つ追加する。図7B(I413)がこれに相当する。
・phi関数αとphi関数γが同時に存在する場合は、レジスタ間転送命令(RMOV)を2つ追加する。ここでは具体例を省略する。
リネームレス・アウトオブオーダー実行プロセッサではループ処理の中で定数の値を保持することを目的としたレジスタ間転送命令(RMOV)を配置するケースが多くある。この処置は、リネームレス・アウトオブオーダー実行プロセッサにおいて必要なものであり、レジスタリネーミング型のプロセッサでは不要である。
本発明の実施形態に係るコンパイル方法のフローチャートを図11に示す。図11に示す例ではコンパイル開始後に以下のステップを実行している。
ソースプログラムに対して字句解析、構文解析、意味解析を実行し、中間コードを生成する。
1つの基本ブロックにおける複数のphi関数から参照される命令が存在する箇所を特定し、当該命令箇所にレジスタ間転送命令(RMOV)を挿入する。詳細は3.1節を参照されたい。
phi関数の参照が循環している閉路を特定し、当該閉路に対してレジスタ間転送命令(RMOV)を挿入する。詳細は3.2節を参照されたい。
複数のphi関数の参照先となる各命令間にデータ依存がある箇所を特定し、当該箇所にレジスタ間転送命令(RMOV)を挿入する。詳細は3.3節を参照されたい。
複数の実行経路で分岐前の同一命令の結果を参照しているphi関数がある箇所を特定し、当該実行経路にレジスタ間転送命令(RMOV)を挿入する。詳細は3.4節を参照されたい。
ループ処理内に存在するレジスタ間転送命令が対象とする変数の値を、ループ処理開始前に汎用レジスタ以外の記憶素子にストアし、当該値をループ処理終了後にロードし、前記レジスタ間転送命令を削除する。詳細は3.5節を参照されたい。
ここでは説明を省略している一般的な最適化処理も行った後、ターゲットとするリネームレス・アウトオブオーダー実行プロセッサに対応したオブジェクトコードを生成する。
前述の実施形態では、情報変換装置の一例として、ソースプログラムからプロセッサに対応するオブジェクトコードを生成するコンパイル装置を説明したが、オブジェクトコードからさらに高効率のオブジェクトコードに変換する情報変換装置が実施されてもよい。また、コンピュータをこのような情報変換装置として機能させるためのプログラムが頒布されてもよいし、このような情報変換方法が実施されてもよい。
前記プログラムにおいて前記情報変換装置は、前記(B)ループ内定数解析処理部、を具備するプログラム。
前記プログラムにおいて、前記(A)複製必要性解析処理部では、複数のphi関数から参照される命令が存在する箇所を特定し、当該命令をオペランドとするレジスタ間転送命令を、(参照数-1)個、当該命令の後方に追加し、参照している複数phi関数のオペランドを相互に異なる命令となるように変更する、プログラム。
前記プログラムにおいて、前記(B)ループ内定数解析処理部では、phi関数の参照が循環している閉路を特定し、phi関数を頂点、phi関数からphi関数への参照を有向辺とした有向グラフを作成し、この有向グラフに有向閉路が存在した場合に、辺の始点となるphi関数と辺の終点となるphi関数の間にレジスタ間転送命令を追加する、プログラム。
前記プログラムにおいて、前記(C)命令間依存解析処理部では、複数のphi関数の参照先となる各命令間にデータ依存がある箇所を特定し、phi関数を頂点、phi関数が参照する命令間のデータ依存を有向辺とした有向グラフを作成し、前記有向グラフ内における有向閉路の有無を判定し、有向閉路が存在しない場合は、トポロジカルソートの各経路が等距離となるようNOP命令を追加し、有向閉路が存在する場合は、レジスタ間転送命令を追加し、有向閉路を除去することでトポロジカルソートを可能とする、プログラム。
前記プログラムにおいて、前記(D)同一命令参照解析処理部では、複数の実行経路で分岐前の同一命令の結果を参照しているphi関数がある箇所を特定し、当該phi関数をphi関数α、phi関数β、phi関数γに分類し、ここで、phi関数αとは、2つの実行経路で同じ命令の結果を参照しているphi関数であり、phi関数βとは、2つの実行経路で異なる命令の結果を参照し、そのうち片方だけが分岐より前の命令を参照しているphi関数であり、phi関数γとは、2つの実行経路で異なる命令の結果を参照し、その両方が分岐より前の命令を参照しているphi関数であり、phi関数αとphi関数βが同時に存在する場合は、レジスタ間転送命令を1つ追加し、phi関数αとphi関数γが同時に存在する場合は、レジスタ間転送命令を2つ追加する、プログラム。
前記プログラムにおいて、前記(E)スピルアウト有効性解析処理部では、ループ処理内に挿入されたレジスタ間転送命令が扱う変数の値に関して、その変数の値を生成する生産者命令と、当該値を参照する消費者命令の位置を確認し、前記全ての消費者命令が当該ループ処理内に存在しない場合に、前記生産者命令の後かつ当該ループ処理前に前記変数の値を汎用レジスタ以外の記憶素子にストアし、当該ループ処理後かつ前記全ての消費者命令の前に前記変数の値をロードし、前記レジスタ間転送命令を削除する、プログラム。
前記プログラムにおいて、前記プログラムは、コンパイラであり、前記情報変換装置は、ソースプログラムからプロセッサに対応するオブジェクトコードを生成するコンパイル装置であり、ここで前記プロセッサは、過去の実行結果を参照する相対位置をオペランドとする命令コードを実行可能な機能を具備する、プログラム。
情報変換装置であって、(A)~(E)の何れか1つ以上の構成要素;(A)1つの基本ブロックに存在する複数のphi関数から参照される命令が存在する箇所を特定し、当該命令箇所にレジスタ間転送命令を挿入する、複製必要性解析処理部、(B)phi関数の参照が循環している閉路を特定し、当該閉路に対してレジスタ間転送命令を挿入する、ループ内定数解析処理部、(C)複数のphi関数の参照先となる各命令間にデータ依存がある箇所を特定し、当該箇所にレジスタ間転送命令を挿入する、命令間依存解析処理部、(D)複数の実行経路で分岐前の同一命令の結果を参照しているphi関数がある箇所を特定し、当該実行経路にレジスタ間転送命令を挿入する、同一命令参照解析処理部、(E)ループ処理内に存在するレジスタ間転送命令が対象とする変数の値を、ループ処理開始前に汎用レジスタ以外の記憶素子にストアし、当該値をループ処理終了後にロードし、前記レジスタ間転送命令を削除する、スピルアウト有効性解析処理部、を具備する情報変換装置。
情報変換方法であって、(A)~(E)の何れか1つ以上の処理ステップ;(A)1つの基本ブロックにおける複数のphi関数から参照される命令が存在する箇所を特定し、当該命令箇所にレジスタ間転送命令を挿入する、複製必要性解析処理ステップ、(B)phi関数の参照が循環している閉路を特定し、当該閉路に対してレジスタ間転送命令を挿入する、ループ内定数解析処理ステップ、(C)複数のphi関数の参照先となる各命令間にデータ依存がある箇所を特定し、当該箇所にレジスタ間転送命令を挿入する、命令間依存解析処理ステップ、(D)複数の実行経路で分岐前の同一命令の結果を参照しているphi関数がある箇所を特定し、当該実行経路にレジスタ間転送命令を挿入する、同一命令参照解析処理ステップ、(E)ループ処理内に存在するレジスタ間転送命令が対象とする変数の値を、ループ処理開始前に汎用レジスタ以外の記憶素子にストアし、当該値をループ処理終了後にロードし、前記レジスタ間転送命令を削除する、スピルアウト有効性解析処理ステップ、を有する情報変換方法。
もちろん、この限りではない。
2 :記憶部
20 :ソースプログラム
21 :コンパイラ
22 :オブジェクトコード
23 :リンカ
24 :実行形式ファイル
3 :通信部
4 :制御部
5 :作業メモリ部
10 :通信バス
Claims (10)
- プログラムであって、コンピュータを情報変換装置として機能させ、
前記情報変換装置は、(A)~(E)の何れか1つ以上の構成要素;
(A)1つの基本ブロックに存在する複数のphi関数から参照される命令が存在する箇所を特定し、当該命令箇所にレジスタ間転送命令を挿入する、複製必要性解析処理部、
(B)phi関数の参照が循環している閉路を特定し、当該閉路に対してレジスタ間転送命令を挿入する、ループ内定数解析処理部、
(C)複数のphi関数の参照先となる各命令間にデータ依存がある箇所を特定し、当該箇所にレジスタ間転送命令を挿入する、命令間依存解析処理部、
(D)複数の実行経路で分岐前の同一命令の結果を参照しているphi関数がある箇所を特定し、当該実行経路にレジスタ間転送命令を挿入する、同一命令参照解析処理部、
(E)ループ処理内に存在するレジスタ間転送命令が対象とする変数の値を、当該ループ処理開始前に汎用レジスタ以外の記憶素子にストアし、当該値をループ処理終了後にロードし、前記レジスタ間転送命令を削除する、スピルアウト有効性解析処理部、
を具備する
プログラム。 - 請求項1記載のプログラムにおいて
前記情報変換装置は、
前記(B)ループ内定数解析処理部、
を具備する
プログラム。 - 請求項1または請求項2記載のプログラムにおいて、
前記(A)複製必要性解析処理部では、
複数のphi関数から参照される命令が存在する箇所を特定し、
当該命令をオペランドとするレジスタ間転送命令を、(参照数-1)個、当該命令の後方に追加し、
参照している複数phi関数のオペランドを相互に異なる命令となるように変更する、
プログラム。 - 請求項1~請求項3の何れか1つに記載のプログラムにおいて、
前記(B)ループ内定数解析処理部では、
phi関数の参照が循環している閉路を特定し、
phi関数を頂点、phi関数からphi関数への参照を有向辺とした有向グラフを作成し、
この有向グラフに有向閉路が存在した場合に、
辺の始点となるphi関数と辺の終点となるphi関数の間にレジスタ間転送命令を追加する、
プログラム。 - 請求項1~請求項4の何れか1つに記載のプログラムにおいて、
前記(C)命令間依存解析処理部では、
複数のphi関数の参照先となる各命令間にデータ依存がある箇所を特定し、
phi関数を頂点、phi関数が参照する命令間のデータ依存を有向辺とした有向グラフを作成し、
前記有向グラフ内における有向閉路の有無を判定し、
有向閉路が存在しない場合は、トポロジカルソートの各経路が等距離となるようNOP命令を追加し、
有向閉路が存在する場合は、レジスタ間転送命令を追加し、有向閉路を除去することでトポロジカルソートを可能とする、
プログラム。 - 請求項1~請求項5の何れか1つに記載のプログラムにおいて、
前記(D)同一命令参照解析処理部では、
複数の実行経路で分岐前の同一命令の結果を参照しているphi関数がある箇所を特定し、
当該phi関数をphi関数α、phi関数β、phi関数γに分類し、
ここで、phi関数αとは、2つの実行経路で同じ命令の結果を参照しているphi関数であり、
phi関数βとは、2つの実行経路で異なる命令の結果を参照し、そのうち片方だけが分岐より前の命令を参照しているphi関数であり、
phi関数γとは、2つの実行経路で異なる命令の結果を参照し、その両方が分岐より前の命令を参照しているphi関数であり、
phi関数αとphi関数βが同時に存在する場合は、レジスタ間転送命令を1つ追加し、
phi関数αとphi関数γが同時に存在する場合は、レジスタ間転送命令を2つ追加する、
プログラム。 - 請求項1~請求項6の何れか1つに記載のプログラムにおいて、
前記(E)スピルアウト有効性解析処理部では、
ループ処理内に挿入されたレジスタ間転送命令が扱う変数の値に関して、その変数の値を生成する生産者命令と、当該値を参照する消費者命令の位置を確認し、前記全ての消費者命令が当該ループ処理内に存在しない場合に、
前記生産者命令の後かつ当該ループ処理前に前記変数の値を汎用レジスタ以外の記憶素子にストアし、
当該ループ処理後かつ前記全ての消費者命令の前に前記変数の値をロードし、
前記レジスタ間転送命令を削除する、
プログラム。 - 請求項1~請求項7の何れか1つに記載のプログラムにおいて、
前記プログラムは、コンパイラであり、
前記情報変換装置は、ソースプログラムからプロセッサに対応するオブジェクトコードを生成するコンパイル装置であり、ここで前記プロセッサは、過去の実行結果を参照する相対位置をオペランドとする命令コードを実行可能な機能を具備する、
プログラム。 - 情報変換装置であって、
(A)~(E)の何れか1つ以上の構成要素;
(A)1つの基本ブロックに存在する複数のphi関数から参照される命令が存在する箇所を特定し、当該命令箇所にレジスタ間転送命令を挿入する、複製必要性解析処理部、
(B)phi関数の参照が循環している閉路を特定し、当該閉路に対してレジスタ間転送命令を挿入する、ループ内定数解析処理部、
(C)複数のphi関数の参照先となる各命令間にデータ依存がある箇所を特定し、当該箇所にレジスタ間転送命令を挿入する、命令間依存解析処理部、
(D)複数の実行経路で分岐前の同一命令の結果を参照しているphi関数がある箇所を特定し、当該実行経路にレジスタ間転送命令を挿入する、同一命令参照解析処理部、
(E)ループ処理内に存在するレジスタ間転送命令が対象とする変数の値を、ループ処理開始前に汎用レジスタ以外の記憶素子にストアし、当該値をループ処理終了後にロードし、前記レジスタ間転送命令を削除する、スピルアウト有効性解析処理部、
を具備する
情報変換装置。 - 情報変換方法であって、
(A)~(E)の何れか1つ以上の処理ステップ;
(A)1つの基本ブロックにおける複数のphi関数から参照される命令が存在する箇所を特定し、当該命令箇所にレジスタ間転送命令を挿入する、複製必要性解析処理ステップ、
(B)phi関数の参照が循環している閉路を特定し、当該閉路に対してレジスタ間転送命令を挿入する、ループ内定数解析処理ステップ、
(C)複数のphi関数の参照先となる各命令間にデータ依存がある箇所を特定し、当該箇所にレジスタ間転送命令を挿入する、命令間依存解析処理ステップ、
(D)複数の実行経路で分岐前の同一命令の結果を参照しているphi関数がある箇所を特定し、当該実行経路にレジスタ間転送命令を挿入する、同一命令参照解析処理ステップ、
(E)ループ処理内に存在するレジスタ間転送命令が対象とする変数の値を、ループ処理開始前に汎用レジスタ以外の記憶素子にストアし、当該値をループ処理終了後にロードし、前記レジスタ間転送命令を削除する、スピルアウト有効性解析処理ステップ及び
を有する
情報変換方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019095442 | 2019-05-21 | ||
JP2019095442 | 2019-05-21 | ||
PCT/JP2020/020033 WO2020235616A1 (ja) | 2019-05-21 | 2020-05-21 | プログラム、情報変換装置及び情報変換方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2020235616A1 JPWO2020235616A1 (ja) | 2020-11-26 |
JP7416448B2 true JP7416448B2 (ja) | 2024-01-17 |
Family
ID=73458807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021520832A Active JP7416448B2 (ja) | 2019-05-21 | 2020-05-21 | プログラム、情報変換装置及び情報変換方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11762640B2 (ja) |
JP (1) | JP7416448B2 (ja) |
WO (1) | WO2020235616A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578979B (zh) * | 2023-05-15 | 2024-05-31 | 软安科技有限公司 | 一种基于代码特征的跨平台二进制代码匹配方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000284968A (ja) | 1999-03-31 | 2000-10-13 | Toshiba Corp | コンパイル方法及びコンパイラ装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6182284B1 (en) * | 1998-09-30 | 2001-01-30 | Hewlett-Packard Company | Method and system for eliminating phi instruction resource interferences and redundant copy instructions from static-single-assignment-form computer code |
JP2000259411A (ja) | 1999-03-09 | 2000-09-22 | Hitachi Ltd | プロセッサ |
US9875101B1 (en) * | 2015-08-17 | 2018-01-23 | Marvell International Ltd. | Induction variable identification |
-
2020
- 2020-05-21 WO PCT/JP2020/020033 patent/WO2020235616A1/ja active Application Filing
- 2020-05-21 US US17/612,734 patent/US11762640B2/en active Active
- 2020-05-21 JP JP2021520832A patent/JP7416448B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000284968A (ja) | 1999-03-31 | 2000-10-13 | Toshiba Corp | コンパイル方法及びコンパイラ装置 |
Non-Patent Citations (2)
Title |
---|
松崎秀則 ほか,レジスタリネーミング機構なしで高速にout-of-order実行するためのレジスタ割り当て手法,2000年記念並列処理シンポジウム,日本,社団法人情報処理学会,2000年05月30日,Vol.2000, No.6,pp.301-308 |
酒井一憲 ほか,STRAIGHTにおける投機メモリフォワーディングの実装の検討,情報処理学会 研究報告 [online],日本,情報処理学会,2017年01月16日,2017-ARC-224, 34号,pp.1-6 |
Also Published As
Publication number | Publication date |
---|---|
US11762640B2 (en) | 2023-09-19 |
WO2020235616A1 (ja) | 2020-11-26 |
JPWO2020235616A1 (ja) | 2020-11-26 |
US20220236970A1 (en) | 2022-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7197747B2 (en) | Compiling method, apparatus, and program | |
JP4806060B2 (ja) | コンパイラ・プログラム、コンパイル方法及びコンピュータ・システム | |
JP2004234126A (ja) | コンパイラ装置およびコンパイル方法 | |
Ramsey et al. | Hoopl: a modular, reusable library for dataflow analysis and transformation | |
Rul et al. | Function level parallelism driven by data dependencies | |
Triantafyllis et al. | A framework for unrestricted whole-program optimization | |
JP2013206291A (ja) | プログラム、コード生成方法および情報処理装置 | |
JP7416448B2 (ja) | プログラム、情報変換装置及び情報変換方法 | |
JP4830108B2 (ja) | プログラム処理装置、プログラム処理方法、並列処理プログラム用コンパイラおよび並列処理プログラム用コンパイラを格納した記録媒体 | |
US9665354B2 (en) | Apparatus and method for translating multithread program code | |
Gupta et al. | Optimizing recursive task parallel programs | |
Alle et al. | Compiling techniques for coarse grained runtime reconfigurable architectures | |
JP2017091070A (ja) | 実行可能コード生成プログラムおよび実行可能コード生成装置 | |
Nobre et al. | Impact of compiler phase ordering when targeting GPUs | |
JP6897213B2 (ja) | コード生成装置、コード生成方法及びコード生成プログラム | |
Kirchhoff et al. | Increasing efficiency in data flow oriented model driven software development for softcore processors | |
US11556357B1 (en) | Systems, media, and methods for identifying loops of or implementing loops for a unit of computation | |
Jordan et al. | Boosting simd benefits through a run-time and energy efficient dlp detection | |
Bharadwaj et al. | Compiler optimization for superscalar and pipelined processors | |
Pickett et al. | Compiler analyses for improved return value prediction | |
Kumar et al. | Exploiting Parallelism Available in Loops Using Abstract Syntax Tree | |
RU2406112C2 (ru) | Способ построения программы | |
JP3634712B2 (ja) | コンパイラ装置 | |
Jordan et al. | Runtime Vectorization of Conditional Code and Dynamic Range Loops to ARM NEON Engine | |
Li et al. | Domain specific compiler for coordinated signal processing in 5G testbed |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20211029 |
|
A80 | Written request to apply exceptions to lack of novelty of invention |
Free format text: JAPANESE INTERMEDIATE CODE: A80 Effective date: 20211029 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20221205 |
|
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: 20231205 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231222 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7416448 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |