JPH0743652B2 - 並列実行プログラム翻訳処理方式 - Google Patents

並列実行プログラム翻訳処理方式

Info

Publication number
JPH0743652B2
JPH0743652B2 JP1287582A JP28758289A JPH0743652B2 JP H0743652 B2 JPH0743652 B2 JP H0743652B2 JP 1287582 A JP1287582 A JP 1287582A JP 28758289 A JP28758289 A JP 28758289A JP H0743652 B2 JPH0743652 B2 JP H0743652B2
Authority
JP
Japan
Prior art keywords
program
execution
parallel
procedure
translation processing
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 - Lifetime
Application number
JP1287582A
Other languages
English (en)
Other versions
JPH03148729A (ja
Inventor
浩士 長倉
Original Assignee
工業技術院長
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 工業技術院長 filed Critical 工業技術院長
Priority to JP1287582A priority Critical patent/JPH0743652B2/ja
Publication of JPH03148729A publication Critical patent/JPH03148729A/ja
Publication of JPH0743652B2 publication Critical patent/JPH0743652B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔概要〕 計算機のコンパイラ、特に並列実行可能な目的プログラ
ムを生成するコンパイラに関し、 並列実行可能な複数の部分から呼び出される可能性のあ
る部分がある場合に、多重呼出による矛盾発生の可能性
を避ける処置を、コンパイラが自動的に行うようにした
並列実行プログラム翻訳処理方式を目的とし、 解析処理部と、排他制御部と、翻訳処理部を有し、該解
析処理部は所与の原始プログラムを解析して、該原始プ
ログラムを所定の並列実行可能な部分に分割し、該排他
制御部は、手続きが、並列実行可能な複数の該部分から
呼び出されることを検出し、該手続きに所定の排他制御
命令を追加して、排他的実行状態を獲得した後、該手続
きを実行し、該実行後該状態を解除するように修正し、
該翻訳処理部は、該修正結果を翻訳処理して目的プログ
ラムを生成するように構成する。
〔産業上の利用分野〕
本発明は、計算機のコンパイラ、特に並列実行可能な目
的プログラムを生成するコンパイラの並列実行プログラ
ム翻訳処理方式に関する。
〔従来の技術〕
第3図は計算機において、所定のプログラミング言語、
例えばFORTRAN言語、で記述された原始プログラムか
ら、並列実行可能な目的プログラムを生成するコンパイ
ラの構成例を示すブロック図である。
コンパイラ1の解析処理部5は原始プログラム2を解析
して、解析結果を所定の中間テキストとし、翻訳処理部
6はこの中間テキストから所定の機械語の目的プログラ
ム4を生成する。
こゝでコンパイラ1は、並列実行可能な目的プログラム
を生成することができるように、例えばFORTRAN言語に
追加された並列実行指定文を解析して、指定の複数の部
分を、それぞれ個別のいわゆるタスクとして実行できる
ように目的プログラムを生成する。
例えば第4図(a)は、そのような並列実行指定文を含
む原始プログラムの例であって、並列実行指定文とし
て、PAR BLOCK、BLOCK、END BLOCK文があり、PAR BLOCK
文とEND BLOCK文で挟まれたプログラムの中の、BLOCK文
で区切られている各部分(この例では、中央部のBLOCK
文で2部分に区切られている)が、プログラムの論理上
互いに並行実行可能なプログラムの部分であって、それ
らを個別のタスクとして同時に実行できるように目的プ
ログラムを生成すべきことを指定する意味を持つ。
翻訳処理部6は、解析処理部5の解析結果に従って、そ
れらの複数の並列実行部分が、例えば複数の処理装置に
分配されて、並行して処理できるように分割し、且つそ
れらが実行を終わった後に、次のシーケンシャルに実行
すべき部分へ進むように、必要な同期制御が行われるよ
うに目的プログラムを生成する。
〔発明が解決しようとする課題〕
このように並列実行可能な部分が、並列に実行された場
合に、第4図(a)の例のように、複数の並列に実行す
るプログラムが同じ手続きSQ4を呼び出す場合には、誤
った処理結果を生じる場合がある。そのような結果は、
手続きについて、実行時にただ1組の実体(変数等に割
り当てるいわゆる局所領域)しか生成しないように翻訳
する場合に生じ得、多くの場合にそのような翻訳が行わ
れる。即ち、第4図(a)の例で、例えば変数Xの値を
3、変数Aの値を5としてプログラムの両部分がそれぞ
れサブルーチンを実行したとすると、サブルーチンの局
所変数W等の領域は1領域しか無いから、第1の部分の
呼び出しによるSQ4(Y,X)の実行で、W=3×3=9が
代入された直後に、第2の部分の呼び出しによるSQ4
(B,A)の実行によってWが5×5=25に書き換えられ
る可能性があり、この場合には、両呼び出しに対して、
Y=B=25×25=625が結果として返され、一方は正し
くない結果を得る。
従って、このような可能性がある場合には、並列実行を
断念して、通常のシーケンシャルなプログラムに書き直
すか、又は前記例で言えばSQ4の呼び出しを並列実行指
定部分の外に出して、シーケンシャルに実行するように
した第4図(b)のようなプログラムに書き直す必要が
ある。
本発明は、並列実行可能な複数の部分から呼び出される
手続きがある場合に、多重呼出による矛盾発生の可能性
を避ける処置を、コンパイラが自動的に行うようにした
並列実行プログラム翻訳処理方式を目的とする。
〔課題を解決するための手段〕
第1図は、本発明の構成を示すブロック図である。
図は並列実行プログラム翻訳処理方式を構成するコンパ
イラ10であって、解析処理部11と、排他制御部12と、翻
訳処理部13を有し、解析処理部11が所与の原始プログラ
ム2を解析して、原始プログラム2を並列実行を行う所
定の各部分ごとのブロックに分割し、翻訳処理部13が該
解析結果に基づいて並列実行可能な目的プログラム14を
生成する並列実行プログラム翻訳処理方式において、排
他制御部12を設ける。
排他制御部12は、解析処理部11の解析結果について、互
いに並列実行される複数の該ブロックが同一の手続きの
呼出しを行うことを検出した場合に、当該手続きに所定
の排他制御プログラムを追加することにより、排他的実
行状態を獲得した後に該手続きを実行し、該手続き実行
の終了後に該排他的実行状態を解除するように、該手続
きを修正して、翻訳処理部13に渡す。
〔作用〕
以上の処理方式により、プログラム中に並列実行可能に
すべき複数の部分から同一の手続きの呼び出しがあり、
実行時に手続きに局所領域を1組しか設けないために、
多重呼出があると結果に矛盾発生の可能性がある場合
に、そのような矛盾発生を避ける処置を、コンパイラが
自動的に行うので、そのような場合のプログラムの書き
直しを不要とし、且つコンパイラは問題の手続きの実行
のみを直列化するように修正するので、並列実行を可能
な限り生かすことができる。
〔実施例〕
第1図において、解析処理部11は処理結果を排他制御部
12に渡す他は前記従来の解析処理部5と同様であり、又
翻訳処理部13は排他制御部12が修正したテキストについ
て処理する他は、前記従来の翻訳処理部13と同様であ
る。
第2図は、排他制御部12の処理の流れの一例を示す図で
あり、排他制御部12は、解析処理部11の処理結果の中間
テキストを受け取ると、処理ステップ20でテキストを走
査して、前記従来の説明で述べたような並列実行指定文
で指定された並列実行部分を検索する。
並列実行する部分のグループがあると、処理ステップ21
でそのグループの中の複数の部分で同一の手続き呼び出
しがあるか識別し、そのような呼び出しがある場合に
は、それぞれの対象にする共通の手続きをすべてリスト
アップする。
処理ステップ22で、決定したすべての手続きについて、
各手続きごとに排他制御化する修正を行う。この修正
は、例えばこのプログラムを実行するシステムがいわゆ
るセマフォの制御機能を持つ場合には、該当手続きの実
行文の前にセマフォのいわゆるP命令を挿入して、P命
令により公知のように例えばセマフォの値を検査して0
であれば1減じて次の命令に進み、負であれば1減じて
次の命令へ進むのを待ち合わせるようにし、又その手続
きの実行を終わる時にセマフォのV命令を置き、V命令
によりセマフォの値を1増加して、待ちにある1タスク
の実行を進めるようにする。
処理ステップ22で該当手続きをすべて修正するか、又は
処理ステップ21で複数の部分の同一の手続き呼び出しが
無いと識別した場合は、処理ステップ20に戻って次のグ
ループを走査し、このようなグループをすべて処理すれ
ば、排他制御部12の処理を終わる。
以上のようにして、第4図(a)に例示したプログラム
の手続きを修正した例を、第4図(c)に示す。この図
で、「SEMAPHORE SEM」は変数SEMをセマフォの領域とす
る宣言文であり、これによって変数SEMの領域が設けら
れ、所定の初期値(例えば0)に設定される。又、実行
文の最初に挿入されている「CALL P(SEM)」文、及び
最後に挿入されている「CALL V(SEM)」文が、セマフ
ォの変数SEMについて、それぞれセマフォのP命令及び
V命令を実行するように関数を呼び出す文である。
このように手続きを修正することにより、並列実行部分
の何れかでこの手続きSQ4が呼ばれて、実行開始する
と、その実行が終わって、最後のV命令が実行されるま
でに、他の並列実行している部分から手続きSQ4の呼び
出しがあっても、その実行はP命令の実行で待ち状態と
なり、先に実行中の結果を妨害することが無い。即ち、
手続きの呼び出し側には何も手を加える必要無しに、正
常な並列実行結果が保証される。
〔発明の効果〕
以上の説明から明らかなように本発明によれば、計算機
の並列実行可能な目的プログラムを生成するコンパイラ
において、並列実行可能な複数の部分から呼び出される
可能性のある部分の、多重呼出による矛盾発生の可能性
を、コンパイラが自動的に避けるように処理するので、
プログラムの開発効率を改善し、且つ並列実行機能の利
用性を向上するという著しい工業的効果がある。
【図面の簡単な説明】
第1図は本発明の構成を示すブロック図、 第2図は本発明の処理の流れ図、 第3図は従来の構成例を示すブロック図、 第4図はプログラム例の説明図 である。 図において、 1、10はコンパイラ、2は原始プログラム、4、14は目
的プログラム、5、11は解析処理部、6、13は翻訳処理
部、12は排他制御部、20〜22は処理ステップを示す。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】解析処理部が所与の原始プログラムを解析
    して、該原始プログラムを並列実行を行う所定の各部分
    ごとのブロックに分割し、翻訳処理部が該解析結果に基
    づいて並列実行可能な目的プログラムを生成する並列実
    行プログラム翻訳処理方式において、 排他制御部を設け、 該排他制御部は、該解析処理部の解析結果について、互
    いに並列実行される複数の該ブロックが同一の手続きの
    呼出しを行うことを検出した場合に、当該手続きに所定
    の排他制御プログラムを追加することにより、排他的実
    行状態を獲得した後に該手続きを実行し、該手続き実行
    の終了後に該排他的実行状態を解除するように、該手続
    きを修正して、該翻訳処理部に渡すように構成されてい
    ることを特徴とする並列実行プログラム翻訳処理方式。
JP1287582A 1989-11-06 1989-11-06 並列実行プログラム翻訳処理方式 Expired - Lifetime JPH0743652B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1287582A JPH0743652B2 (ja) 1989-11-06 1989-11-06 並列実行プログラム翻訳処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1287582A JPH0743652B2 (ja) 1989-11-06 1989-11-06 並列実行プログラム翻訳処理方式

Publications (2)

Publication Number Publication Date
JPH03148729A JPH03148729A (ja) 1991-06-25
JPH0743652B2 true JPH0743652B2 (ja) 1995-05-15

Family

ID=17719177

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1287582A Expired - Lifetime JPH0743652B2 (ja) 1989-11-06 1989-11-06 並列実行プログラム翻訳処理方式

Country Status (1)

Country Link
JP (1) JPH0743652B2 (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01108638A (ja) * 1987-10-21 1989-04-25 Hitachi Ltd 並列化コンパイル方式

Also Published As

Publication number Publication date
JPH03148729A (ja) 1991-06-25

Similar Documents

Publication Publication Date Title
JP2001147819A (ja) 最適化装置および記録媒体
JPH0743652B2 (ja) 並列実行プログラム翻訳処理方式
JPS6378231A (ja) 部分的プログラム結合方式
JP2560491B2 (ja) 並列化手続き実行方式
JPH0581069A (ja) プログラムのデバツグ方法
JP3372387B2 (ja) プログラム検査方法
JP3019330B2 (ja) コンパイル装置
JPH01240934A (ja) 自動再コンパイル方法
JPH03164835A (ja) インタプリタ型言語処理系における大域変数処理のコンパイル方法
JP2852402B2 (ja) プログラム開発装置
JPH04107605A (ja) 制御プログラム用言語処理装置
JPS61213928A (ja) プログラム変更方式
JPH04205430A (ja) プログラム実行制御装置
JPS62212734A (ja) 中間コ−ドプログラムの実行方式
JPS63259736A (ja) デバツグ用セグメント分割方式
JPH05298117A (ja) 定数を引数とする手続きの最適化方式
JPH0447337B2 (ja)
JPH04333146A (ja) デバッグにおけるプログラムの実行制御方式
JPS63292338A (ja) 最適化プログラムデバツグ方式
JPH03233703A (ja) シーケンス制御装置
JPS63163543A (ja) 情報処理装置
JPH02285425A (ja) 実行時オプション処理方式
JPS63298531A (ja) オブジェクトプログラムの部分削除方式
JPH041829A (ja) データ処理装置
JPH04107638A (ja) リテラル定数割り付け方式

Legal Events

Date Code Title Description
EXPY Cancellation because of completion of term