JP2006338616A - コンパイラ装置 - Google Patents
コンパイラ装置 Download PDFInfo
- Publication number
- JP2006338616A JP2006338616A JP2005165999A JP2005165999A JP2006338616A JP 2006338616 A JP2006338616 A JP 2006338616A JP 2005165999 A JP2005165999 A JP 2005165999A JP 2005165999 A JP2005165999 A JP 2005165999A JP 2006338616 A JP2006338616 A JP 2006338616A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- circulation path
- dependence
- circuit
- program
- 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.)
- Pending
Links
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/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
- G06F8/4452—Software pipelining
-
- 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
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)
- Advance Control (AREA)
Abstract
【解決手段】 図2(a)に示す循環路のst命令に対してmov命令を挿入すると、図2(b)のようになる。すなわち、st命令の代わりに、st命令で用いられている運搬依存の媒介変数であるレジスタr1を未使用のレジスタr4に置き換えた命令「st (r4),r2」を使用し、元の媒介変数であるレジスタr1に格納された値をレジスタr4に格納する転送命令「mov r4,r1」を挿入する。このように、mov命令を循環路根に対して挿入することにより、循環路長が4サイクルの循環路を、循環路長が3サイクルの循環路と、循環路長が1サイクルの循環路との2つに分解することができ、ループ処理の開始間隔を小さくすることができる。
【選択図】 図2
Description
(1)循環路
ある命令に関するデータ依存をたどり、最終的にもとの命令に戻るデータ依存グラフの閉路を示す。ただし、同一命令を複数たどらない。
(2)循環路長
循環路におけるデータ依存のレイテンシの合計を示す。
(3)資源制約考慮循環路
資源制約(ハードウェア資源や並列実行可能な命令数)を考慮した循環路を示す。
(4)資源制約考慮循環路長
資源制約考慮循環路におけるデータ依存のレイテンシの合計を示す。
(5)Longest Path
最長の循環路を示す。
(6)資源考慮Longest Path
最長の資源制約考慮循環路を示す。
(7)循環路葉
循環路における真の依存の依存先であって、かつ逆依存の依存元となっている命令を示す。
(8)循環路根
循環路における真の依存の依存元であって、かつ逆依存の依存先となっている命令を示す。
図2は、循環路に対して転送命令を挿入した場合のデータ依存グラフの変化を示す図である。
図6は、運搬依存かつ逆依存のデータ依存を伴う循環路に対して、転送命令を挿入した場合の循環路の変化を示した図である。
図8は、運搬依存かつ出力依存のデータ依存を伴う循環路に対して、転送命令を挿入した場合の循環路の変化を示した図である。
図10は、運搬依存かつ真の依存のデータ依存を伴う循環路に対して、転送命令を挿入した場合の循環路の変化を示した図である。
次に、2つの命令からなる循環路に対して転送命令を挿入する場合について考察する。
次に、資源制約を考慮した循環路に転送命令を挿入する場合について考察する。
次に、複数のLongest Pathを含む循環路に対して転送命令を挿入する場合について考察する。
図16は、運搬依存が複数ある循環路に対して転送命令を挿入した場合の循環路の変化を示した図である。図中、真の依存を実線矢印で示し、運搬依存かつ逆依存を破線矢印で示している。
202 コンパイラ装置
203 機械語プログラム
204 構文解析部
205 最適化部
206 出力部
207 第1最適化部
208 ソフトウェアパイプライニング部
209 第2最適化部
211 循環路解析部
212 命令選択部
213 転送命令挿入部
214 従来のソフトウェアパイプライニング部
Claims (13)
- ソースプログラムを並列処理可能なプロセッサ用の機械語プログラムに変換するコンパイラ装置であって、
前記ソースプログラムを構文解析し、中間言語で記述されたプログラムである中間プログラムに変換する構文解析手段と、
前記中間プログラムを最適化する最適化手段と、
最適化された前記中間プログラムを機械語プログラムに変換する変換手段とを備え、
前記最適化手段は、前記中間プログラムに含まれるループ処理中に、オペランド間でデータを転送する命令である転送命令を挿入することによりデータ依存関係を変更し、ソフトウェアパイプライニングを行なう
ことを特徴とするコンパイラ装置。 - 前記最適化手段は、
前記中間プログラム中に存在する命令間のデータ依存グラフを作成し、当該データ依存グラフ中より、ある命令に関するデータ依存をたどり、最終的にもとの命令に戻る閉路である循環路を検出する循環路検出部と、
検出された前記循環路に含まれる運搬依存の媒介変数をオペランドの一部とする前記転送命令を挿入する挿入部と、
転送命令挿入後の前記中間プログラムに対してソフトウェアパイプライニングを施すソフトウェアパイプライニング部とを有する
ことを特徴とする請求項1に記載のコンパイラ装置。 - 前記挿入部は、
検出された前記循環路における真の依存の依存先であって、かつ、運搬依存かつ逆依存の依存元となっている命令を選択する命令選択部と、
選択された前記命令において使用されている第1のレジスタを第2のレジスタに置き換えることにより、当該命令を置換する命令置換部と、
前記第1のレジスタに格納されている値を前記第2のレジスタに転送する前記転送命令を挿入する転送命令挿入部とを有する
ことを特徴とする請求項2に記載のコンパイラ装置。 - 前記挿入部は、
検出された前記循環路における真の依存の依存元であって、かつ、運搬依存かつ逆依存の依存先となっている命令を選択する命令選択部と、
選択された前記命令において定義されている第1のレジスタを第2のレジスタに置き換えることにより、当該命令を置換する命令置換部と、
前記第2のレジスタに格納されている値を前記第1のレジスタに転送する前記転送命令を挿入する転送命令挿入部とを有する
ことを特徴とする請求項2に記載のコンパイラ装置。 - 前記循環路検出部は、前記循環路におけるデータ依存のレイテンシの合計である循環路長が最大の循環路を検出する
ことを特徴とする請求項2〜4のいずれか1項に記載のコンパイラ装置。 - 前記循環路検出部は、前記循環路におけるデータ依存のレイテンシの合計が最大の循環路を少なくとも1つ検出し、
前記命令選択部は、前記レイテンシの合計が最大の循環路が複数存在する場合には、複数の循環路の運搬依存の依存元または依存先となっている命令のうち、最も多くの循環路の運搬依存の依存元または依存先となっている命令を選択する
ことを特徴とする請求項3または4に記載のコンパイラ装置。 - 前記循環路検出部は、資源制約を考慮した前記循環路長が最大の循環路を検出する
ことを特徴とする請求項5または6に記載のコンパイラ装置。 - 前記循環路検出部は、2つの命令からなり真の依存の原因となるレジスタと運搬依存かつ逆依存の原因となるレジスタとが同一の循環路以外の循環路を検出する
ことを特徴とする請求項2〜4のいずれか1項に記載のコンパイラ装置。 - 前記循環路検出部は、真の依存の依存元であって、かつ運搬依存かつ逆依存の依存先となっている命令からのレイテンシが、前記転送命令からのレイテンシよりも大きい循環路を検出する
ことを特徴とする請求項2に記載のコンパイラ装置。 - ソースプログラムを並列処理可能なプロセッサ用の機械語プログラムに変換するコンパイル方法であって、
前記ソースプログラムを構文解析し、中間言語で記述されたプログラムである中間プログラムに変換する構文解析ステップと、
前記中間プログラムを最適化する最適化ステップと、
最適化された前記中間プログラムを機械語プログラムに変換する変換ステップとを含み、
前記最適化ステップでは、前記中間プログラムに含まれるループ処理中に、オペランド間でデータを転送する命令である転送命令を挿入することによりデータ依存関係を変更し、ソフトウェアパイプライニングを行なう
ことを特徴とするコンパイル方法。 - コンピュータに、ソースプログラムを並列処理可能なプロセッサ用の機械語プログラムに変換させるコンパイラであって、
前記ソースプログラムを構文解析し、中間言語で記述されたプログラムである中間プログラムに変換する構文解析ステップと、
前記中間プログラムを最適化する最適化ステップと、
最適化された前記中間プログラムを機械語プログラムに変換する変換ステップとをコンピュータに実行させ、
前記最適化ステップでは、前記中間プログラムに含まれるループ処理中に、オペランド間でデータを転送する命令である転送命令を挿入することによりデータ依存関係を変更し、ソフトウェアパイプライニングを行なう
ことを特徴とするコンパイラ。 - コンパイラを記録したコンピュータ読取可能な記録媒体であって、
請求項11に記載のコンパイラを記録した
ことを特徴とするコンピュータ読取可能な記録媒体。 - 並列処理可能なプロセッサ用のプログラムであって、
ループ処理の各イタレーションを並列実行させる命令と、
前記ループ処理に関する依存グラフを作成した場合に、ある命令に関するデータ依存をたどり、最終的にもとの命令に戻る閉路を形成する命令に使用されているオペランド間でデータを転送する命令である転送命令とを
プロセッサに実行させるためのプログラム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005165999A JP2006338616A (ja) | 2005-06-06 | 2005-06-06 | コンパイラ装置 |
US11/420,059 US7856629B2 (en) | 2005-06-06 | 2006-05-24 | Compiler apparatus |
CNA200610093557XA CN1877532A (zh) | 2005-06-06 | 2006-06-06 | 编译装置 |
US13/616,573 USRE45199E1 (en) | 2005-06-06 | 2012-09-14 | Compiler apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005165999A JP2006338616A (ja) | 2005-06-06 | 2005-06-06 | コンパイラ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006338616A true JP2006338616A (ja) | 2006-12-14 |
Family
ID=37495584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005165999A Pending JP2006338616A (ja) | 2005-06-06 | 2005-06-06 | コンパイラ装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US7856629B2 (ja) |
JP (1) | JP2006338616A (ja) |
CN (1) | CN1877532A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011514592A (ja) * | 2008-02-22 | 2011-05-06 | クゥアルコム・インコーポレイテッド | グラフィックス処理の命令レイテンシ減少のためのシステムおよび方法 |
CN115658079A (zh) * | 2022-10-24 | 2023-01-31 | 上海繁易信息科技股份有限公司 | 一种功能块图转换为结构化文本的方法及相关设备 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4327864B2 (ja) * | 2007-03-23 | 2009-09-09 | 株式会社東芝 | 録画予約処理装置および録画予約処理方法ならびに録画装置 |
JP5226328B2 (ja) * | 2007-03-27 | 2013-07-03 | パナソニック株式会社 | コード変換装置 |
CN101446905B (zh) * | 2008-12-29 | 2012-06-27 | 飞天诚信科技股份有限公司 | 编译方法 |
US8667474B2 (en) * | 2009-06-19 | 2014-03-04 | Microsoft Corporation | Generation of parallel code representations |
US8689191B2 (en) * | 2010-03-05 | 2014-04-01 | International Business Machines Corporation | Correct refactoring of concurrent software |
CN101944014B (zh) * | 2010-09-15 | 2013-08-21 | 复旦大学 | 一种自动流水并行的实现方法 |
JP5148674B2 (ja) * | 2010-09-27 | 2013-02-20 | 株式会社東芝 | プログラム並列化装置およびプログラム |
JP5687603B2 (ja) * | 2011-11-09 | 2015-03-18 | 株式会社東芝 | プログラム変換装置、プログラム変換方法、および変換プログラム |
US9262139B2 (en) * | 2013-01-07 | 2016-02-16 | Advanced Micro Devices, Inc. | Layered programming for heterogeneous devices |
EP3008618B1 (en) | 2013-06-14 | 2018-05-02 | Intel Corporation | Compiler optimization for complex exponential calculations |
US9588769B2 (en) | 2014-05-27 | 2017-03-07 | Via Alliance Semiconductor Co., Ltd. | Processor that leapfrogs MOV instructions |
CN104615409B (zh) * | 2014-05-27 | 2017-07-07 | 上海兆芯集成电路有限公司 | 跳越mov指令的处理器和由该处理器使用的方法 |
US9830134B2 (en) * | 2015-06-15 | 2017-11-28 | Qualcomm Incorporated | Generating object code from intermediate code that includes hierarchical sub-routine information |
US10002468B2 (en) | 2016-09-02 | 2018-06-19 | Echostar Technologies International Corporation | Systems and methods for updating non-networked autonomous devices |
US10175690B2 (en) | 2016-09-02 | 2019-01-08 | Echostar Technologies International Corporation | Systems and methods for satellite-based on-board autonomous device deactivation |
KR20180038875A (ko) * | 2016-10-07 | 2018-04-17 | 삼성전자주식회사 | 데이터 입출력 유닛, 전자 장치 및 그 제어 방법들 |
CN108958940A (zh) * | 2018-07-09 | 2018-12-07 | 苏州浪潮智能软件有限公司 | 一种计算机处理方法及装置 |
US11188656B2 (en) | 2018-07-27 | 2021-11-30 | Silicon Laboratories Inc. | Secure software system for microcontroller or the like and method therefor |
TW202022652A (zh) * | 2018-11-30 | 2020-06-16 | 財團法人工業技術研究院 | 加工參數調整系統及加工參數調整方法 |
US20230205501A1 (en) * | 2021-12-27 | 2023-06-29 | SambaNova Systems, Inc. | Compiler-based input synchronization for processor with variant stage latencies |
US11714620B1 (en) | 2022-01-14 | 2023-08-01 | Triad National Security, Llc | Decoupling loop dependencies using buffers to enable pipelining of loops |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05204659A (ja) * | 1992-01-27 | 1993-08-13 | Matsushita Electric Ind Co Ltd | スケジュール装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3218932B2 (ja) * | 1995-07-06 | 2001-10-15 | 株式会社日立製作所 | データプリフェッチコード生成方法 |
US5920724A (en) | 1996-03-28 | 1999-07-06 | Intel Corporation | Software pipelining a hyperblock loop |
JPH1097423A (ja) | 1996-09-20 | 1998-04-14 | Hitachi Ltd | ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ |
JPH10228382A (ja) * | 1997-02-14 | 1998-08-25 | Nec Corp | コンパイル方式 |
JP2000207223A (ja) * | 1999-01-12 | 2000-07-28 | Matsushita Electric Ind Co Ltd | 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体 |
US6954927B2 (en) | 1999-02-17 | 2005-10-11 | Elbrus International | Hardware supported software pipelined loop prologue optimization |
JP4041248B2 (ja) * | 1999-07-09 | 2008-01-30 | 松下電器産業株式会社 | コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法 |
JP3641997B2 (ja) * | 2000-03-30 | 2005-04-27 | 日本電気株式会社 | プログラム変換装置及び方法並びに記録媒体 |
US6941541B2 (en) * | 2002-07-19 | 2005-09-06 | Hewlett-Packard Development Company, L.P. | Efficient pipelining of synthesized synchronous circuits |
US7263692B2 (en) | 2003-06-30 | 2007-08-28 | Intel Corporation | System and method for software-pipelining of loops with sparse matrix routines |
JP4042972B2 (ja) * | 2003-09-30 | 2008-02-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 最適化コンパイラ、コンパイラプログラム、及び記録媒体 |
JP2006139553A (ja) | 2004-11-12 | 2006-06-01 | Matsushita Electric Ind Co Ltd | 命令スケジューリング方法、および装置 |
-
2005
- 2005-06-06 JP JP2005165999A patent/JP2006338616A/ja active Pending
-
2006
- 2006-05-24 US US11/420,059 patent/US7856629B2/en not_active Ceased
- 2006-06-06 CN CNA200610093557XA patent/CN1877532A/zh active Pending
-
2012
- 2012-09-14 US US13/616,573 patent/USRE45199E1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05204659A (ja) * | 1992-01-27 | 1993-08-13 | Matsushita Electric Ind Co Ltd | スケジュール装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011514592A (ja) * | 2008-02-22 | 2011-05-06 | クゥアルコム・インコーポレイテッド | グラフィックス処理の命令レイテンシ減少のためのシステムおよび方法 |
CN115658079A (zh) * | 2022-10-24 | 2023-01-31 | 上海繁易信息科技股份有限公司 | 一种功能块图转换为结构化文本的方法及相关设备 |
CN115658079B (zh) * | 2022-10-24 | 2023-10-13 | 上海繁易信息科技股份有限公司 | 一种功能块图转换为结构化文本的方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN1877532A (zh) | 2006-12-13 |
US7856629B2 (en) | 2010-12-21 |
US20060277529A1 (en) | 2006-12-07 |
USRE45199E1 (en) | 2014-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006338616A (ja) | コンパイラ装置 | |
US6760906B1 (en) | Method and system for processing program for parallel processing purposes, storage medium having stored thereon program getting program processing executed for parallel processing purposes, and storage medium having stored thereon instruction set to be executed in parallel | |
JP4979875B2 (ja) | リターゲッタブルコンパイルシステム及び方法 | |
US8572586B2 (en) | Optimized scalar promotion with load and splat SIMD instructions | |
JP4957729B2 (ja) | プログラム並列化方法、プログラム並列化装置及びプログラム | |
JP3896087B2 (ja) | コンパイラ装置およびコンパイル方法 | |
US8893080B2 (en) | Parallelization of dataflow actors with local state | |
JPH09282179A (ja) | オーバーヘッド命令を最小限にする最適化コンパイラにおける命令スケジューリングの方法および装置 | |
JP2006509275A (ja) | シストリックソルバを作成するシステムおよび方法 | |
JP2004302706A (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
Kudriavtsev et al. | Generation of permutations for SIMD processors | |
US20050257200A1 (en) | Generating code for a configurable microprocessor | |
JP2006196002A (ja) | 非同期プログラムフローのモデリングを含むソフトウェアツール | |
JP3311381B2 (ja) | コンパイラにおける命令スケジューリング処理方法 | |
US9158511B2 (en) | Scalable partial vectorization | |
JP2001125792A (ja) | 最適化促進装置 | |
JP3473391B2 (ja) | プログラム処理方法、プログラム処理装置及び記録媒体 | |
Schwarz et al. | Engineering an optimized instruction set architecture for AMIDAR processors | |
Canedo et al. | Compiling for reduced bit-width queue processors | |
Linders | Compiler Vectorization for Coarse-Grained Reconfigurable Architectures | |
JP3323147B2 (ja) | コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体 | |
JP4721975B2 (ja) | コンパイラ装置およびコンパイル方法 | |
JP4032822B2 (ja) | アセンブラプログラムのためのアドレス記述変換システム及びプログラム | |
JP6897213B2 (ja) | コード生成装置、コード生成方法及びコード生成プログラム | |
JP2000222209A (ja) | プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080602 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100129 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110118 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110314 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110628 |