JPH11259437A - 不要バリア命令の削減方式 - Google Patents
不要バリア命令の削減方式Info
- Publication number
- JPH11259437A JPH11259437A JP10061508A JP6150898A JPH11259437A JP H11259437 A JPH11259437 A JP H11259437A JP 10061508 A JP10061508 A JP 10061508A JP 6150898 A JP6150898 A JP 6150898A JP H11259437 A JPH11259437 A JP H11259437A
- Authority
- JP
- Japan
- Prior art keywords
- barrier
- instruction
- parallel processing
- processing object
- parameter
- 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
- 230000004888 barrier function Effects 0.000 title claims abstract description 106
- 238000012545 processing Methods 0.000 claims abstract description 52
- 230000007246 mechanism Effects 0.000 claims abstract description 5
- 238000000034 method Methods 0.000 claims description 15
- 230000009467 reduction Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000008030 elimination Effects 0.000 description 5
- 238000003379 elimination reaction Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 2
- YASYVMFAVPKPKE-UHFFFAOYSA-N acephate Chemical compound COP(=O)(SC)NC(C)=O YASYVMFAVPKPKE-UHFFFAOYSA-N 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000002542 deteriorative effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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/458—Synchronisation, e.g. post-wait, barriers, locks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
(57)【要約】
【課題】 コンパイル時に依存解析不可能な参照に対す
る不要バリア命令を動的に削減してマルチプロセッサシ
ステムのオブジェクト実行の性能向上を図る。 【解決手段】 コンパイラ12は、ソースプログラム1
1を並列処理オブジェクト13に分割する際、並列処理
オブジェクトの直前にバリア要否判定のためのパラメー
タ134〜136をハードウェアに渡すプリ動的バリア
命令131を発行し、また、並列処理オブジェクト後に
参照される変数・配列のバリア要否判定のための情報を
パラメータに持つポスト動的バリア命令133を参照位
置の直前に発行する。並列処理オブジェクトを実行する
図示しない装置は、データ依存の有無を判定するハード
ウェア機構を使用し、前記プリ動的バリア命令とポスト
動的バリア命令とのパラメータに基づいて不要バリア命
令を動的に削減する
る不要バリア命令を動的に削減してマルチプロセッサシ
ステムのオブジェクト実行の性能向上を図る。 【解決手段】 コンパイラ12は、ソースプログラム1
1を並列処理オブジェクト13に分割する際、並列処理
オブジェクトの直前にバリア要否判定のためのパラメー
タ134〜136をハードウェアに渡すプリ動的バリア
命令131を発行し、また、並列処理オブジェクト後に
参照される変数・配列のバリア要否判定のための情報を
パラメータに持つポスト動的バリア命令133を参照位
置の直前に発行する。並列処理オブジェクトを実行する
図示しない装置は、データ依存の有無を判定するハード
ウェア機構を使用し、前記プリ動的バリア命令とポスト
動的バリア命令とのパラメータに基づいて不要バリア命
令を動的に削減する
Description
【0001】
【発明の属する技術分野】本発明は、不要バリア命令の
削減方式に係り、特に、マルチプロセッサシステムにお
ける並列処理オブジェクトの実行性能の向上を図るため
の不要バリア命令の削減方式に関する。
削減方式に係り、特に、マルチプロセッサシステムにお
ける並列処理オブジェクトの実行性能の向上を図るため
の不要バリア命令の削減方式に関する。
【0002】
【従来の技術】マルチプロセッサシステムにおける一般
的なバリア命令発行条件は、「データ参照とその後続の
データ参照との間に依存が存在するか、依存関係が、不
明であること」であり、この依存の有無が命令の実行時
にしか判定することができない場合、すなわち、コンパ
イラによる依存解析が不可能な場合、並列処理オブジェ
クトにおいてバリア命令が常に出力され、実行されてい
た。
的なバリア命令発行条件は、「データ参照とその後続の
データ参照との間に依存が存在するか、依存関係が、不
明であること」であり、この依存の有無が命令の実行時
にしか判定することができない場合、すなわち、コンパ
イラによる依存解析が不可能な場合、並列処理オブジェ
クトにおいてバリア命令が常に出力され、実行されてい
た。
【0003】このバリア命令のうち不要なものを削減す
るための従来技術として、ユーザー指示文によるコンパ
イラに対するバリア命令削減指示文、または、データ依
存解消指示文をソースに挿入するという方法が知られて
いる。
るための従来技術として、ユーザー指示文によるコンパ
イラに対するバリア命令削減指示文、または、データ依
存解消指示文をソースに挿入するという方法が知られて
いる。
【0004】図3は不要なバリア命令を削減するための
指示文を挿入したソースプログラムの例を説明する図で
あり、このソースプログラムは、並列化機能実装用に拡
張されたフォートラン(FORTRAN)言語により記述した
ものである。以下、これについて説明する。
指示文を挿入したソースプログラムの例を説明する図で
あり、このソースプログラムは、並列化機能実装用に拡
張されたフォートラン(FORTRAN)言語により記述した
ものである。以下、これについて説明する。
【0005】図3に示す例のソースプログラムは、i=
1〜nの値を順次a(i)で示される配列に代入して繰返
し処理を実行するDOループ31を含んで構成されてい
る。そして、このDOループ31における配列aの参照
範囲と後続の配列33の参照との重なりがコンパイル時
に判らずに命令の実行時にしか判らない場合、ユーザの
手により、ユーザー指示文によるコンパイラに対するバ
リア命令削減指示文32を挿入するしか方法がなかっ
た。なお、この指示文32は、データ依存解消指示文で
あってもよい。また、バリア命令削減指示文32におけ
る“POPTION”は、並列化機能実装FORTRAN処理
系が自動並列化できない部分に対して、ユーザーが並列
化の指示を与える指示文を示す識別子である。
1〜nの値を順次a(i)で示される配列に代入して繰返
し処理を実行するDOループ31を含んで構成されてい
る。そして、このDOループ31における配列aの参照
範囲と後続の配列33の参照との重なりがコンパイル時
に判らずに命令の実行時にしか判らない場合、ユーザの
手により、ユーザー指示文によるコンパイラに対するバ
リア命令削減指示文32を挿入するしか方法がなかっ
た。なお、この指示文32は、データ依存解消指示文で
あってもよい。また、バリア命令削減指示文32におけ
る“POPTION”は、並列化機能実装FORTRAN処理
系が自動並列化できない部分に対して、ユーザーが並列
化の指示を与える指示文を示す識別子である。
【0006】
【発明が解決しようとする課題】一般に、バリア命令の
実行は、実行に伴うオーバーヘッドが常に生じることに
なり、そのため、不要なバリア命令の実行分だけ、オー
バーヘッドによる処理システムの実行性能を低下させて
しまうことになる。
実行は、実行に伴うオーバーヘッドが常に生じることに
なり、そのため、不要なバリア命令の実行分だけ、オー
バーヘッドによる処理システムの実行性能を低下させて
しまうことになる。
【0007】前述した従来技術は、不要なバリア命令を
削減して処理システムの実行性能の低下を防止するもの
であるが、ユーザーが並列化プログラムの挙動を熟知し
ていないと全ての不要バリア命令を摘出することができ
ず、全ての不要なバリア命令を削減することが困難であ
るという問題点を有している。
削減して処理システムの実行性能の低下を防止するもの
であるが、ユーザーが並列化プログラムの挙動を熟知し
ていないと全ての不要バリア命令を摘出することができ
ず、全ての不要なバリア命令を削減することが困難であ
るという問題点を有している。
【0008】本発明の目的は、前記従来技術の問題点を
解決し、人手を要することなく不要なバリア命令を動的
に削減してオブジェクトの実行性能を向上させることを
可能とした不要バリア命令の削減方式を提供することに
ある。
解決し、人手を要することなく不要なバリア命令を動的
に削減してオブジェクトの実行性能を向上させることを
可能とした不要バリア命令の削減方式を提供することに
ある。
【0009】
【課題を解決するための手段】本発明によれば前記目的
は、ソースプログラムから並列処理オブジェクトを生成
するコンパイラにおける不要バリア命令の削減方式にお
いて、前記コンパイラが、ソースプログラムを並列処理
オブジェクトに変換する際、並列処理実行部の直前にバ
リア要否判定のためのパラメータを持つプリ動的バリア
命令を発行し、また、並列処理実行部の後に参照される
変数・配列のバリア要否判定のための情報をパラメータ
に持つポスト動的バリア命令を後続参照位置の直前に発
行し、並列処理オブジェクトを実行する装置が、データ
依存の有無を判定するハードウェア機構を使用し、前記
プリ動的バリア命令とポスト動的バリア命令とのパラメ
ータに基づいて不要バリア命令を動的に削減することに
より達成される。
は、ソースプログラムから並列処理オブジェクトを生成
するコンパイラにおける不要バリア命令の削減方式にお
いて、前記コンパイラが、ソースプログラムを並列処理
オブジェクトに変換する際、並列処理実行部の直前にバ
リア要否判定のためのパラメータを持つプリ動的バリア
命令を発行し、また、並列処理実行部の後に参照される
変数・配列のバリア要否判定のための情報をパラメータ
に持つポスト動的バリア命令を後続参照位置の直前に発
行し、並列処理オブジェクトを実行する装置が、データ
依存の有無を判定するハードウェア機構を使用し、前記
プリ動的バリア命令とポスト動的バリア命令とのパラメ
ータに基づいて不要バリア命令を動的に削減することに
より達成される。
【0010】また、前記目的は、前記コンパイラが、ソ
ースプログラムを並列処理オブジェクトに変換する際、
バリア要否判定のためのパラメータと、並列処理実行部
の後に参照される変数・配列のバリア要否判定のための
パラメータとを生成し、これらのパラメータに基づくデ
ータ依存の有無を実行時に判定し、バリア命令の実行、
非実行を動的に切り替えることにより達成される。
ースプログラムを並列処理オブジェクトに変換する際、
バリア要否判定のためのパラメータと、並列処理実行部
の後に参照される変数・配列のバリア要否判定のための
パラメータとを生成し、これらのパラメータに基づくデ
ータ依存の有無を実行時に判定し、バリア命令の実行、
非実行を動的に切り替えることにより達成される。
【0011】さらに具体的には、前記目的は、以下に説
明する〜のバリア命令削除可能条件のいずれかを満
たすか否かを、ハードウェアにパラメタを渡すことによ
りチェックし、バリア動作の要否を動的に決定する手段
を並列処理オブジェクトを実行する装置に備え、コンパ
イラが前記手段が使用する命令列を生成することによ
り、あるいは、コンパイラが、、のバリア命令削除
可能条件を判定式とする分岐命令によりバリア命令の実
行、非実行を切り替えるコードを生成する手段を備える
ことにより達成される。
明する〜のバリア命令削除可能条件のいずれかを満
たすか否かを、ハードウェアにパラメタを渡すことによ
りチェックし、バリア動作の要否を動的に決定する手段
を並列処理オブジェクトを実行する装置に備え、コンパ
イラが前記手段が使用する命令列を生成することによ
り、あるいは、コンパイラが、、のバリア命令削除
可能条件を判定式とする分岐命令によりバリア命令の実
行、非実行を切り替えるコードを生成する手段を備える
ことにより達成される。
【0012】バリア命令削除可能条件は、 各PE(プロセッサエレメント)間で、変数または配
列の参照とその後続の参照間とに依存が存在しない場合
と、 各PE間で、変数または配列参照とその後続の参照と
の間に依存があっても、同一PE上のみの依存であり、
他のPEとの間での依存が無い場合と、 ハードウェア上、PE間で依存関係が生じるメモリ位
置におけるメモリコヒーレンス処理が完了している場合
とである。
列の参照とその後続の参照間とに依存が存在しない場合
と、 各PE間で、変数または配列参照とその後続の参照と
の間に依存があっても、同一PE上のみの依存であり、
他のPEとの間での依存が無い場合と、 ハードウェア上、PE間で依存関係が生じるメモリ位
置におけるメモリコヒーレンス処理が完了している場合
とである。
【0013】
【発明の実施の形態】以下、本発明による不要バリア命
令の削減方式の一実施形態を図面を参照して説明する。
令の削減方式の一実施形態を図面を参照して説明する。
【0014】図1は本発明の一実施形態によるハードウ
ェア機構を利用した不要バリア削減方式を説明する擬似
FORTRAN言語コード及びシステムの概略構成を示
す図、図2は本発明が適用されるマルチプロセッサの構
成例を示すブロック図である。図1、図2において、1
1はソースプログラム、12はコンパイラ、13は並列
処理オブジェクト、14はプログラム読み込み装置、1
5はプログラム格納媒体、21はマルチプロセッサシス
テム、22はCPU、23はプロセッサエレメント(P
E)である。
ェア機構を利用した不要バリア削減方式を説明する擬似
FORTRAN言語コード及びシステムの概略構成を示
す図、図2は本発明が適用されるマルチプロセッサの構
成例を示すブロック図である。図1、図2において、1
1はソースプログラム、12はコンパイラ、13は並列
処理オブジェクト、14はプログラム読み込み装置、1
5はプログラム格納媒体、21はマルチプロセッサシス
テム、22はCPU、23はプロセッサエレメント(P
E)である。
【0015】本発明が適用されるマルチプロセッサシス
テム21は、図2に示すように、プログラム格納媒体1
5に格納されているプログラムを読み込むプログラム読
み込み装置14と、プログラムを各PE23に分配する
CPU22と、分配されたプログラムを並列に実行する
複数のPE24とにより構成される。そして、図示シス
テム21は、図1を参照して後述するコンパイラ12に
より並列化されたプログラムである並列処理オブジェク
トをプログラム格納媒体15を介して、あるいは、コン
パイラ12から直接プログラム読み込み装置14で受け
取り、CPU23が、並列化されている各プログラムを
複数のPE23のそれぞれに分配して処理を実行する。
テム21は、図2に示すように、プログラム格納媒体1
5に格納されているプログラムを読み込むプログラム読
み込み装置14と、プログラムを各PE23に分配する
CPU22と、分配されたプログラムを並列に実行する
複数のPE24とにより構成される。そして、図示シス
テム21は、図1を参照して後述するコンパイラ12に
より並列化されたプログラムである並列処理オブジェク
トをプログラム格納媒体15を介して、あるいは、コン
パイラ12から直接プログラム読み込み装置14で受け
取り、CPU23が、並列化されている各プログラムを
複数のPE23のそれぞれに分配して処理を実行する。
【0016】次に、図1を参照して本発明の一実施形態
による不要バリアの削減の方法を説明する。
による不要バリアの削減の方法を説明する。
【0017】図1において、ソースプログラム11は、
図3により説明した従来技術におけるDOループ31と
同一のDOループ111を有するものとする。コンパイ
ラ12は、このソースプログラム11を、並列処理オブ
ジェクト13に変換する。並列処理オブジェクト13
は、並列処理対象であるソースプログラム11のDOル
ープ111を、図2に示すマルチプロセッサシステム2
1の各PE上で並列実行される並列処理ループ132を
含むコードである。
図3により説明した従来技術におけるDOループ31と
同一のDOループ111を有するものとする。コンパイ
ラ12は、このソースプログラム11を、並列処理オブ
ジェクト13に変換する。並列処理オブジェクト13
は、並列処理対象であるソースプログラム11のDOル
ープ111を、図2に示すマルチプロセッサシステム2
1の各PE上で並列実行される並列処理ループ132を
含むコードである。
【0018】そして、本発明の一実施形態は、ソースプ
ログラム11のDOループ111を並列処理ループ13
2に変換する際、バリア要否判定のためのパラメータを
ハードウェアに渡すプリ動的バリア命令131とポスト
動的バリア命令133とをそれぞれ挿入する。プリ動的
バリア命令131は、並列処理ループ132の内部で参
照される変数・配列バリア要否判定のための情報をパラ
メータに持ち、並列処理ループ132の直前に発行され
る。また、ポスト動的バリア命令133は、並列処理ル
ープ132後に参照される変数・配列のバリア要否判定
のための情報をパラメータに持ち、参照位置の直前に発
行される。これらの命令は、引数として、変数・配列の
ベースアドレス134、ストライド幅135、要素長1
36を指定する。
ログラム11のDOループ111を並列処理ループ13
2に変換する際、バリア要否判定のためのパラメータを
ハードウェアに渡すプリ動的バリア命令131とポスト
動的バリア命令133とをそれぞれ挿入する。プリ動的
バリア命令131は、並列処理ループ132の内部で参
照される変数・配列バリア要否判定のための情報をパラ
メータに持ち、並列処理ループ132の直前に発行され
る。また、ポスト動的バリア命令133は、並列処理ル
ープ132後に参照される変数・配列のバリア要否判定
のための情報をパラメータに持ち、参照位置の直前に発
行される。これらの命令は、引数として、変数・配列の
ベースアドレス134、ストライド幅135、要素長1
36を指定する。
【0019】コンパイラ12により前述のようにして作
成された並列処理オブジェクト13によるプログラム
は、プログラム読み込み装置14によりプログラム記憶
媒体15に格納され、マルチプロセッサシステムに渡さ
れる。プログラム記憶媒体15としては、DAT,CM
T,FD,CD−ROM,MO等を使用することができ
る。
成された並列処理オブジェクト13によるプログラム
は、プログラム読み込み装置14によりプログラム記憶
媒体15に格納され、マルチプロセッサシステムに渡さ
れる。プログラム記憶媒体15としては、DAT,CM
T,FD,CD−ROM,MO等を使用することができ
る。
【0020】図4は各PE上におけるプリ動的バリア命
令、ポスト動的バリア命令の挙動を説明する図、図5は
動的バリア実行装置によるバリアを要するデータ依存の
有無判定、及び、その命令の実行が完了しているか否か
の判定の処理動作を説明するフローチャートである。
令、ポスト動的バリア命令の挙動を説明する図、図5は
動的バリア実行装置によるバリアを要するデータ依存の
有無判定、及び、その命令の実行が完了しているか否か
の判定の処理動作を説明するフローチャートである。
【0021】まず、図4を参照して各PE上におけるプ
リ動的バリア命令、ポスト動的バリア命令の挙動につい
て説明する。各PEは、プリ動的バリア命令41を実行
した時点で、引数内容であるベースアドレス411、ス
トライド幅412、要素長413の各情報を、図2に示
すシステム21内に設けられる図示しないコミュニケー
ションレジスタ42の各PEのフィールドに格納する。
また、図2に示すシステム21内に設けられる図示しな
いハードによる動的バリア実行装置(DBED)44
は、ポスト動的バリア命令43が発行されたとき、ポス
ト動的バリア命令43に指定された引数内容であるベー
スアドレス431、ストライド幅432、要素長433
の各情報とプリ動的バリア命令41の実行時コミュニケ
ーションレジスタ42に格納された情報とを用いて、バ
リアを要するデータ依存の有無判定、及び、その命令の
実行が完了している(メモリコヒーレンス処理が完了し
ている)か否かの判定45を行う。
リ動的バリア命令、ポスト動的バリア命令の挙動につい
て説明する。各PEは、プリ動的バリア命令41を実行
した時点で、引数内容であるベースアドレス411、ス
トライド幅412、要素長413の各情報を、図2に示
すシステム21内に設けられる図示しないコミュニケー
ションレジスタ42の各PEのフィールドに格納する。
また、図2に示すシステム21内に設けられる図示しな
いハードによる動的バリア実行装置(DBED)44
は、ポスト動的バリア命令43が発行されたとき、ポス
ト動的バリア命令43に指定された引数内容であるベー
スアドレス431、ストライド幅432、要素長433
の各情報とプリ動的バリア命令41の実行時コミュニケ
ーションレジスタ42に格納された情報とを用いて、バ
リアを要するデータ依存の有無判定、及び、その命令の
実行が完了している(メモリコヒーレンス処理が完了し
ている)か否かの判定45を行う。
【0022】次に、図5を参照して、動的バリア実行装
置(DBED)が行う前述の判定処理を説明する。
置(DBED)が行う前述の判定処理を説明する。
【0023】(1)まず、バリア命令を要するデータ依
存が存在するか否かチェックし、バリア命令を要するデ
ータ依存がないと判定された場合、NOP(空命令)を
発行する(ステップ51、512)。
存が存在するか否かチェックし、バリア命令を要するデ
ータ依存がないと判定された場合、NOP(空命令)を
発行する(ステップ51、512)。
【0024】(2)ステップ51のチェックで、バリア
命令を要するデータ依存があると判定された場合、デー
タ依存に対応する並列ループ中のメモリアクセス命令が
発行済みか否かをチェックし、メモリアクセス命令が未
発行であると判定された場合、BARRIER(バリア
命令)を発行する(ステップ52、521)。
命令を要するデータ依存があると判定された場合、デー
タ依存に対応する並列ループ中のメモリアクセス命令が
発行済みか否かをチェックし、メモリアクセス命令が未
発行であると判定された場合、BARRIER(バリア
命令)を発行する(ステップ52、521)。
【0025】(3)ステップ52のチェックで、メモリ
アクセス命令が発行済であると判定された場合、その命
令の実行が完了している(コヒーレンス処理が完了して
いる)か否かをチェックし、メモリアクセス命令の実行
が完了していると判定された場合、NOP(空命令)を
発行する(ステップ53、532)。
アクセス命令が発行済であると判定された場合、その命
令の実行が完了している(コヒーレンス処理が完了して
いる)か否かをチェックし、メモリアクセス命令の実行
が完了していると判定された場合、NOP(空命令)を
発行する(ステップ53、532)。
【0026】(4)ステップ53のチェックで、メモリ
アクセス命令の実行が完了していないと判定された場
合、BARRIER(バリア命令)を発行する(ステッ
プ531)。
アクセス命令の実行が完了していないと判定された場
合、BARRIER(バリア命令)を発行する(ステッ
プ531)。
【0027】前述した処理フローにおいて、バリア命令
を要するデータ依存が存在するか否かのチェックを行う
ステップ51の処理は、具体的には以下のチェックを行
うことにより実現される。
を要するデータ依存が存在するか否かのチェックを行う
ステップ51の処理は、具体的には以下のチェックを行
うことにより実現される。
【0028】すなわち、図4で説明した各PEi(0≦i
≦maxIPno,maxIPno:最大PE番号)が、プリ動的バリ
ア命令によってコミュニケーションレジスタ42に格納
した変数・配列参照のベースアドレス、ストライド幅、
要素長のそれぞれを、BAj,Swi,LEiとし、ま
た、各PEj(0≦j≦maxIPno,maxIPno:最大PE番号)
が、ポスト動的バリア命令によってコミュニケーション
レジスタ42に格納した変数・配列参照のベースアドレ
ス、ストライド幅、要素長のそれぞれを、BAj,S
wj,LEj とした場合、集合Wi=BAi+Swi*ni
{0≦ni≦(LEi−BAi)/SWi}と、集合Rj=
BAj+Swj*nj{0≦nj≦(LEj−BAj)/SW
j}とに対して、 Wi Rj≠φ{0≦∃i≠∃j≦maxIPno} ……(式1) となる場合、バリアを要するデータ依存有りと判定す
る。
≦maxIPno,maxIPno:最大PE番号)が、プリ動的バリ
ア命令によってコミュニケーションレジスタ42に格納
した変数・配列参照のベースアドレス、ストライド幅、
要素長のそれぞれを、BAj,Swi,LEiとし、ま
た、各PEj(0≦j≦maxIPno,maxIPno:最大PE番号)
が、ポスト動的バリア命令によってコミュニケーション
レジスタ42に格納した変数・配列参照のベースアドレ
ス、ストライド幅、要素長のそれぞれを、BAj,S
wj,LEj とした場合、集合Wi=BAi+Swi*ni
{0≦ni≦(LEi−BAi)/SWi}と、集合Rj=
BAj+Swj*nj{0≦nj≦(LEj−BAj)/SW
j}とに対して、 Wi Rj≠φ{0≦∃i≠∃j≦maxIPno} ……(式1) となる場合、バリアを要するデータ依存有りと判定す
る。
【0029】図6は本発明の他の実施形態によるソフト
ウェアを利用した不要バリア削減方式を説明する擬似F
ORTRAN言語コード及びシステムの概略構成を示す
図であり、次に、図6を参照して、前述したバリアを要
するデータ依存の有無を判別するステップ51の処理を
説明する。図6に示す例は、ソースプログラム61、変
換される並列処理オブジェクトである並列分割ループ6
2の形式が、図1により説明した場合と相違するだけ
で、その他は図1の構成と同一である。
ウェアを利用した不要バリア削減方式を説明する擬似F
ORTRAN言語コード及びシステムの概略構成を示す
図であり、次に、図6を参照して、前述したバリアを要
するデータ依存の有無を判別するステップ51の処理を
説明する。図6に示す例は、ソースプログラム61、変
換される並列処理オブジェクトである並列分割ループ6
2の形式が、図1により説明した場合と相違するだけ
で、その他は図1の構成と同一である。
【0030】すなわち、前述した式1の判定は、図6に
示すように、ソースプログラム61をコンパイラ12
が、if文621の判定式を含む並列処理オブジェクト
62に変換することによって行うことができる。このi
f文621に前述した式1を適用することにより、バリ
ア命令622の、実行、非実行を切り替える目的コード
としての分岐命令を生成することができる。そして、並
列処理オブジェクトを実行する装置は、この分岐命令を
実行することによりバリア命令の、実行、非実行を切り
替えることができ、不要バリア命令を削減することがで
きる。
示すように、ソースプログラム61をコンパイラ12
が、if文621の判定式を含む並列処理オブジェクト
62に変換することによって行うことができる。このi
f文621に前述した式1を適用することにより、バリ
ア命令622の、実行、非実行を切り替える目的コード
としての分岐命令を生成することができる。そして、並
列処理オブジェクトを実行する装置は、この分岐命令を
実行することによりバリア命令の、実行、非実行を切り
替えることができ、不要バリア命令を削減することがで
きる。
【0031】前述した本発明の実施形態によれば、 各PE間で、変数または配列の参照とその後続の参照
との間に依存が存在しない場合、 各PE間で、変数または配列の参照とその後続の参照
との間に依存があっても、同一PE上のみの依存であ
り、他のPEとの間での依存が無い場合、 ハードウェア上、PE間で依存関係が生じるメモリ位
置におけるメモリコヒーレンス処理が完了している場
合、 の3つをバリア命令削除可能条件とし、この条件〜
のいずれか少なくとも1つを満たすか否かを、コンパイ
ラが、のバリア命令削除可能条件を判定式とする分
岐命令によりバリア命令の実行、非実行を切り替えるコ
ードを生成することにより、バリア動作の要否を動的に
決定することができ、これにより、不要バリア命令を一
定の条件下で動的に削除することが可能となり、結果と
してマルチプロセッサシステムの実行性能の向上を図る
ことができる。
との間に依存が存在しない場合、 各PE間で、変数または配列の参照とその後続の参照
との間に依存があっても、同一PE上のみの依存であ
り、他のPEとの間での依存が無い場合、 ハードウェア上、PE間で依存関係が生じるメモリ位
置におけるメモリコヒーレンス処理が完了している場
合、 の3つをバリア命令削除可能条件とし、この条件〜
のいずれか少なくとも1つを満たすか否かを、コンパイ
ラが、のバリア命令削除可能条件を判定式とする分
岐命令によりバリア命令の実行、非実行を切り替えるコ
ードを生成することにより、バリア動作の要否を動的に
決定することができ、これにより、不要バリア命令を一
定の条件下で動的に削除することが可能となり、結果と
してマルチプロセッサシステムの実行性能の向上を図る
ことができる。
【0032】
【発明の効果】以上説明したように本発明によれば、命
令の実行時にしか判らない依存関係がある並列処理プロ
グラム中の不要バリア命令を、一定の条件下で動的に削
除することが可能となり、これにより、結果としてマル
チプロセッサシステムの実行性能の向上を図ることがで
きる。
令の実行時にしか判らない依存関係がある並列処理プロ
グラム中の不要バリア命令を、一定の条件下で動的に削
除することが可能となり、これにより、結果としてマル
チプロセッサシステムの実行性能の向上を図ることがで
きる。
【図1】本発明の一実施形態によるハードウェア機構を
利用した不要バリア削減方式を説明する擬似FORTR
AN言語コード及びシステムの概略構成を示す図であ
る。
利用した不要バリア削減方式を説明する擬似FORTR
AN言語コード及びシステムの概略構成を示す図であ
る。
【図2】本発明が適用されるマルチプロセッサの構成例
を示すブロック図である。
を示すブロック図である。
【図3】不要なバリア命令を削減するための指示文を挿
入したソースプログラムの例を説明する図である。
入したソースプログラムの例を説明する図である。
【図4】各PE上におけるプリ動的バリア命令、ポスト
動的バリア命令の挙動を説明する図である。
動的バリア命令の挙動を説明する図である。
【図5】動的バリア実行装置によるバリアを要するデー
タ依存の有無判定、及び、その命令の実行が完了してい
るか否かの判定の処理動作を説明するフローチャートで
ある。
タ依存の有無判定、及び、その命令の実行が完了してい
るか否かの判定の処理動作を説明するフローチャートで
ある。
【図6】本発明の他の実施形態によるソフトウェアを利
用した不要バリア削減方式を説明する擬似FORTRA
N言語コード及びシステムの概略構成を示す図である。
用した不要バリア削減方式を説明する擬似FORTRA
N言語コード及びシステムの概略構成を示す図である。
11 ソースプログラム 12 コンパイラ 13 並列処理オブジェクト 14 プログラム読み込み装置 15 プログラム格納媒体 21 プログラム読み込み装置 22 CPU 23 プロセッサエレメント(PE)
Claims (3)
- 【請求項1】 ソースプログラムから並列処理オブジェ
クトを生成するコンパイラにおける不要バリア命令の削
減方式において、前記コンパイラは、ソースプログラム
を並列処理オブジェクトに変換する際、並列処理実行部
の直前にバリア要否判定のためのパラメータを持つプリ
動的バリア命令を発行し、また、並列処理実行部の後に
参照される変数・配列のバリア要否判定のための情報を
パラメータに持つポスト動的バリア命令を参照位置の直
前に発行し、並列処理オブジェクトを実行する装置は、
データ依存の有無を判定するハードウェア機構を使用
し、前記プリ動的バリア命令とポスト動的バリア命令と
のパラメータに基づいて不要バリア命令を動的に削減す
ることを特徴とする不要バリア命令の削減方式。 - 【請求項2】 ソースプログラムから並列処理オブジェ
クトを生成するコンパイラにおける不要バリア命令の削
減方式において、前記コンパイラは、ソースプログラム
を並列処理オブジェクトに変換する際、バリア要否判定
のためのパラメータと、並列処理オブジェクト後に参照
される変数・配列のバリア要否判定のためのパラメータ
とに基づくデータ依存の有無を実行的に判定する分岐命
令を発行し、並列処理オブジェクトを実行する装置は、
この分岐命令の実行により、バリア命令の実行、非実行
を動的に切り替えることを特徴とする不要バリア命令の
削減方式。 - 【請求項3】 ソースプログラムを並列処理オブジェク
トに変換し、その際、バリア要否判定のためのパラメー
タと並列処理実行部の後に参照される変数・配列のバリ
ア要否判定のためのパラメータとを持つプリ動的バリア
命令とポスト動的バリア命令とを発行するコンパイラ、
または、前記パラメータに基づくデータ依存の有無を実
行的に判定する分岐命令を生成するコンパイラとを格納
したことを特徴とする記憶媒体。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10061508A JPH11259437A (ja) | 1998-03-12 | 1998-03-12 | 不要バリア命令の削減方式 |
US09/266,634 US6292939B1 (en) | 1998-03-12 | 1999-03-11 | Method of reducing unnecessary barrier instructions |
US09/924,580 US20010047511A1 (en) | 1998-03-12 | 2001-08-09 | Method of reducing unnecessary barrier instructions |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10061508A JPH11259437A (ja) | 1998-03-12 | 1998-03-12 | 不要バリア命令の削減方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH11259437A true JPH11259437A (ja) | 1999-09-24 |
Family
ID=13173113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10061508A Pending JPH11259437A (ja) | 1998-03-12 | 1998-03-12 | 不要バリア命令の削減方式 |
Country Status (2)
Country | Link |
---|---|
US (2) | US6292939B1 (ja) |
JP (1) | JPH11259437A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007042134A (ja) * | 2002-09-17 | 2007-02-15 | Internatl Business Mach Corp <Ibm> | マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法 |
US7844446B2 (en) | 2002-09-17 | 2010-11-30 | International Business Machines Corporation | Method and system for multiprocessor emulation on a multiprocessor host system |
US8108843B2 (en) | 2002-09-17 | 2012-01-31 | International Business Machines Corporation | Hybrid mechanism for more efficient emulation and method therefor |
JP2014182795A (ja) * | 2013-03-15 | 2014-09-29 | Intel Corp | 共有メモリへのアクセスの同期を緩和するプロセッサ、方法及びシステム |
JP2016515262A (ja) * | 2013-03-14 | 2016-05-26 | クアルコム,インコーポレイテッド | 命令処理回路における冗長同期バリアの削除と、関連プロセッサシステム、方法、およびコンピュータ可読媒体 |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3641997B2 (ja) * | 2000-03-30 | 2005-04-27 | 日本電気株式会社 | プログラム変換装置及び方法並びに記録媒体 |
US7487330B2 (en) * | 2001-05-02 | 2009-02-03 | International Business Machines Corporations | Method and apparatus for transferring control in a computer system with dynamic compilation capability |
KR20030042319A (ko) * | 2001-11-22 | 2003-05-28 | 한국전자통신연구원 | 병렬 프로그램 수행중 경합 탐지를 위한 병렬 루프 변형방법 |
US7200738B2 (en) * | 2002-04-18 | 2007-04-03 | Micron Technology, Inc. | Reducing data hazards in pipelined processors to provide high processor utilization |
US7000095B2 (en) * | 2002-09-06 | 2006-02-14 | Mips Technologies, Inc. | Method and apparatus for clearing hazards using jump instructions |
US8224636B2 (en) * | 2002-12-17 | 2012-07-17 | Cadence Design Systems, Inc. | Method and system for implementing parallel execution in a computing system and in a circuit simulator |
US7185215B2 (en) | 2003-02-24 | 2007-02-27 | International Business Machines Corporation | Machine code builder derived power consumption reduction |
CA2434280A1 (en) * | 2003-07-03 | 2005-01-03 | Zhong L. Wang | Method and apparatus to guarantee type and initialization safety in multihreaded programs |
CA2442803A1 (en) * | 2003-09-26 | 2005-03-26 | Ibm Canada Limited - Ibm Canada Limitee | Structure and method for managing workshares in a parallel region |
JPWO2005078579A1 (ja) * | 2004-02-12 | 2007-10-18 | 松下電器産業株式会社 | プログラム変換装置およびプログラム変換方法 |
US8392900B1 (en) * | 2005-03-17 | 2013-03-05 | Hewlett-Packard Development Company, L.P. | Methods and systems for barrier reduction in parallel processing systems |
JP4372043B2 (ja) * | 2005-05-12 | 2009-11-25 | 株式会社ソニー・コンピュータエンタテインメント | コマンド実行制御装置、コマンド実行指示装置およびコマンド実行制御方法 |
JP4784827B2 (ja) * | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
US8375368B2 (en) * | 2006-06-20 | 2013-02-12 | Google Inc. | Systems and methods for profiling an application running on a parallel-processing computer system |
US8146066B2 (en) | 2006-06-20 | 2012-03-27 | Google Inc. | Systems and methods for caching compute kernels for an application running on a parallel-processing computer system |
US8108844B2 (en) | 2006-06-20 | 2012-01-31 | Google Inc. | Systems and methods for dynamically choosing a processing element for a compute kernel |
US8136102B2 (en) | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for compiling an application for a parallel-processing computer system |
US8381202B2 (en) * | 2006-06-20 | 2013-02-19 | Google Inc. | Runtime system for executing an application in a parallel-processing computer system |
US8261270B2 (en) | 2006-06-20 | 2012-09-04 | Google Inc. | Systems and methods for generating reference results using a parallel-processing computer system |
US7814486B2 (en) * | 2006-06-20 | 2010-10-12 | Google Inc. | Multi-thread runtime system |
US8443348B2 (en) | 2006-06-20 | 2013-05-14 | Google Inc. | Application program interface of a parallel-processing computer system that supports multiple programming languages |
US8136104B2 (en) | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for determining compute kernels for an application in a parallel-processing computer system |
US8024708B2 (en) | 2006-06-20 | 2011-09-20 | Google Inc. | Systems and methods for debugging an application running on a parallel-processing computer system |
EP2093667A4 (en) * | 2006-12-14 | 2012-03-28 | Fujitsu Ltd | COMPILATION METHOD AND COMPILER |
US8782627B2 (en) * | 2007-11-29 | 2014-07-15 | Microsoft Corporation | Path specializations for runtime code with phase behavior |
US8078843B2 (en) | 2008-01-31 | 2011-12-13 | International Business Machines Corporation | Facilitating processing in a computing environment using an extended drain instruction |
US8635437B2 (en) * | 2009-02-12 | 2014-01-21 | Via Technologies, Inc. | Pipelined microprocessor with fast conditional branch instructions based on static exception state |
US8521996B2 (en) * | 2009-02-12 | 2013-08-27 | Via Technologies, Inc. | Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution |
US9146741B2 (en) | 2012-04-26 | 2015-09-29 | Qualcomm Incorporated | Eliminating redundant masking operations instruction processing circuits, and related processor systems, methods, and computer-readable media |
US20140143755A1 (en) * | 2012-11-20 | 2014-05-22 | Nvidia Corporation | System and method for inserting synchronization statements into a program file to mitigate race conditions |
US9698791B2 (en) | 2013-11-15 | 2017-07-04 | Scientific Concepts International Corporation | Programmable forwarding plane |
US9294097B1 (en) | 2013-11-15 | 2016-03-22 | Scientific Concepts International Corporation | Device array topology configuration and source code partitioning for device arrays |
US10326448B2 (en) | 2013-11-15 | 2019-06-18 | Scientific Concepts International Corporation | Code partitioning for the array of devices |
DE102017209697A1 (de) * | 2016-06-13 | 2017-12-14 | Denso Corporation | Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung |
JP2017228029A (ja) * | 2016-06-21 | 2017-12-28 | 株式会社デンソー | 並列化方法、並列化ツール、車載装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE68927946T2 (de) * | 1988-08-02 | 1997-10-16 | Philips Electronics Nv | Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre |
US5778423A (en) * | 1990-06-29 | 1998-07-07 | Digital Equipment Corporation | Prefetch instruction for improving performance in reduced instruction set processor |
CA2078315A1 (en) * | 1991-09-20 | 1993-03-21 | Christopher L. Reeve | Parallel processing apparatus and method for utilizing tiling |
JP3573546B2 (ja) * | 1995-10-27 | 2004-10-06 | 富士通株式会社 | 並列計算機における並列プロセススケジューリング方法および並列計算機用処理装置 |
US6016505A (en) * | 1996-04-30 | 2000-01-18 | International Business Machines Corporation | Program product to effect barrier synchronization in a distributed computing environment |
US6098089A (en) * | 1997-04-23 | 2000-08-01 | Sun Microsystems, Inc. | Generation isolation system and method for garbage collection |
US5953736A (en) * | 1997-04-23 | 1999-09-14 | Sun Microsystems, Inc. | Write barrier system and method including pointer-specific instruction variant replacement mechanism |
US5873105A (en) * | 1997-06-26 | 1999-02-16 | Sun Microsystems, Inc. | Bounded-pause time garbage collection system and method including write barrier associated with a source instance of a partially relocated object |
US6314562B1 (en) * | 1997-09-12 | 2001-11-06 | Microsoft Corporation | Method and system for anticipatory optimization of computer programs |
US6505296B2 (en) * | 1997-10-13 | 2003-01-07 | Hewlett-Packard Company | Emulated branch effected by trampoline mechanism |
US6081665A (en) * | 1997-12-19 | 2000-06-27 | Newmonics Inc. | Method for efficient soft real-time execution of portable byte code computer programs |
US6106575A (en) * | 1998-05-13 | 2000-08-22 | Microsoft Corporation | Nested parallel language preprocessor for converting parallel language programs into sequential code |
US6292822B1 (en) * | 1998-05-13 | 2001-09-18 | Microsoft Corporation | Dynamic load balancing among processors in a parallel computer |
US6216174B1 (en) * | 1998-09-29 | 2001-04-10 | Silicon Graphics, Inc. | System and method for fast barrier synchronization |
JP3551353B2 (ja) * | 1998-10-02 | 2004-08-04 | 株式会社日立製作所 | データ再配置方法 |
-
1998
- 1998-03-12 JP JP10061508A patent/JPH11259437A/ja active Pending
-
1999
- 1999-03-11 US US09/266,634 patent/US6292939B1/en not_active Expired - Fee Related
-
2001
- 2001-08-09 US US09/924,580 patent/US20010047511A1/en not_active Abandoned
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007042134A (ja) * | 2002-09-17 | 2007-02-15 | Internatl Business Mach Corp <Ibm> | マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法 |
US7844446B2 (en) | 2002-09-17 | 2010-11-30 | International Business Machines Corporation | Method and system for multiprocessor emulation on a multiprocessor host system |
US8108843B2 (en) | 2002-09-17 | 2012-01-31 | International Business Machines Corporation | Hybrid mechanism for more efficient emulation and method therefor |
US8578351B2 (en) | 2002-09-17 | 2013-11-05 | International Business Machines Corporation | Hybrid mechanism for more efficient emulation and method therefor |
US9043194B2 (en) | 2002-09-17 | 2015-05-26 | International Business Machines Corporation | Method and system for efficient emulation of multiprocessor memory consistency |
JP2016515262A (ja) * | 2013-03-14 | 2016-05-26 | クアルコム,インコーポレイテッド | 命令処理回路における冗長同期バリアの削除と、関連プロセッサシステム、方法、およびコンピュータ可読媒体 |
JP2014182795A (ja) * | 2013-03-15 | 2014-09-29 | Intel Corp | 共有メモリへのアクセスの同期を緩和するプロセッサ、方法及びシステム |
US9304940B2 (en) | 2013-03-15 | 2016-04-05 | Intel Corporation | Processors, methods, and systems to relax synchronization of accesses to shared memory |
JP2016207232A (ja) * | 2013-03-15 | 2016-12-08 | インテル・コーポレーション | 共有メモリへのアクセスの同期を緩和するプロセッサ、方法、システム、及びプログラム |
US10235175B2 (en) | 2013-03-15 | 2019-03-19 | Intel Corporation | Processors, methods, and systems to relax synchronization of accesses to shared memory |
Also Published As
Publication number | Publication date |
---|---|
US20010047511A1 (en) | 2001-11-29 |
US6292939B1 (en) | 2001-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH11259437A (ja) | 不要バリア命令の削減方式 | |
US20020056078A1 (en) | Program optimization | |
US8336038B2 (en) | System and method for parallel execution of a program | |
JPH05257709A (ja) | 並列化判別方法およびそれを用いた並列化支援方法 | |
JP2000315160A (ja) | コード書き換えカーネルモジュールを使用したコンピュータプログラムの動的最適化 | |
JPH06314203A (ja) | コンパイラの最適化方法および装置 | |
JP3539613B2 (ja) | ループ飛び出し文を含むループに対する配列サマリ解析方法 | |
JP2001125792A (ja) | 最適化促進装置 | |
JP7040187B2 (ja) | コンパイラ | |
JP2005352894A (ja) | 性能解析プログラム及び性能解析プログラムの生成方法 | |
JP3566602B2 (ja) | コンパイル方法、および、コンパイル用プログラムを記録した記録媒体 | |
JPH09282173A (ja) | プログラムの静的解析方法 | |
JP3018783B2 (ja) | コンパイル方式 | |
JP2003131888A (ja) | 手続き間命令スケジューリング方法 | |
JPH11149380A (ja) | コンパイラとプログラム最適化方法およびその処理プログラムを記録した記録媒体 | |
JP2001154850A (ja) | コンピュータプログラムのコンパイル方法 | |
JP2682215B2 (ja) | 並列処理時の手続き呼出し方式 | |
JP2002099424A (ja) | レジスタを格納領域に利用するコンパイル方法 | |
JPH11120151A (ja) | 不要通信を抑止するプログラム並列化方法 | |
JP3604936B2 (ja) | 最適化方法,最適化装置及び記録媒体 | |
JPH0573335A (ja) | プログラムの自動インライン展開方式 | |
JPH08263300A (ja) | インライン展開方式 | |
JPH11250035A (ja) | 編集方式及び方法 | |
JPH0512033A (ja) | 並列化コンパイル方式 | |
JPH0962512A (ja) | 低級言語から高級言語への記述言語変換機能を有するプログラム変換装置及び方法 |