JPS63163636A - 並列処理実行方式 - Google Patents

並列処理実行方式

Info

Publication number
JPS63163636A
JPS63163636A JP31112386A JP31112386A JPS63163636A JP S63163636 A JPS63163636 A JP S63163636A JP 31112386 A JP31112386 A JP 31112386A JP 31112386 A JP31112386 A JP 31112386A JP S63163636 A JPS63163636 A JP S63163636A
Authority
JP
Japan
Prior art keywords
parameter
function
evaluation
instruction
procedure
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
Application number
JP31112386A
Other languages
English (en)
Inventor
Koichi Yamano
山野 紘一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP31112386A priority Critical patent/JPS63163636A/ja
Publication of JPS63163636A publication Critical patent/JPS63163636A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (産業上の利用分野〕 本発明は、並列処理実行方式に関し、特に高水市プログ
ラミング言語によって記述されたプログラムを処理する
計算機において、手続きまたは関数呼び出しにおけるパ
ラメタの並列処理に好適な並列処理実行方式に関する。
〔従来の技術〕
従来の装置は、特開昭58−8358号公報。
同58−8359号公報記載のように、開数型あるいは
作用的プログラミング言語に対する結合子を用いた処理
方式においては、これらの言語の特徴の一つである遅延
評価を非常に自然な形式を用いて実現されているが、逐
次処理を基礎とする処理方式となっていた。しかし、並
列処理を基礎とする遅延評価の方式については配慮され
ていなかった。
〔発明が解決しようとする間厘点〕
上記従来技術は、基本的に逐次処理の範囲で提案されて
いるので、関数の実引数の遅延評価に対する仕掛けは実
現されているが、実引数の並列処理に対しては、配慮さ
れていない。
本発明の目的は、このような従来の配慮されていない点
に鑑み、高水準プログラミング言語によって記述された
プログラムを処理する計算機において、関数または手続
きの実引数への適用、すなわち、関数または手続き呼び
出しに対して、それらの実引数の評価を並列に実行する
と共に、遅延評価も行える並列処理実行方式を提供する
ことにある。
〔問題点を解決するための手段] 上記目的を達成するため、本発明では、高水市プログラ
ミング言語によって記述されたプログラムを処理する計
算機において、前記プログラムをコンパイルするときに
、前記プログラムに含まれるすべての関数または手続き
のパラメタに対し、各パラメタの完全/不完全の特性を
静的に解析し、その特性を示す識別−tl’ll報の記
録を、コンパイラの出力であるオブジェクト・プログラ
ムの中に、パラメタ記述子として埋め込み、実行時の関
数または手続き呼び出しの際の実引数の評価を、当該記
述子の完全/不完全情報に基づき、完全パラメタに対応
する実引数に対しては、その時点ですべてを並列に評価
し、不完全パラメタに対応する実引数に対しては、遅延
評価として残しておき、関数または手続き定義の中での
出現時に評価することに特徴がある。
r作用〕 本発明においては、完全パラメグの解析は、コンパイル
時に行い、すべての関数または手続きのすべてのパラメ
タに対し、完全か不完全かの識別情報を有するパラメタ
記述子を作成する。実引数評価命令は、プログラムの実
行オブジェクトにおいて用いられ、コンパイル時に作成
されたパラメタ記述子に基づき、実引数の並列評価を実
行する6遅延評価命令は、プログラムの実行オブジェク
トにおいて用いられ、不完全パラメタの評価を実行する
〔実施例〕
以下、本発明の一実施例を、図面により詳細に説明する
まず1本発明の原理について説明する。
例えば、 f(x、  y、  z) ==ifxthenyel
sez ユ・0)なるプログラムを考える。このプログ
ラムに対する関数呼出しをE (e H+ e @ +
 e s )とするとき、fの実引数ell  ei+
esを並列にすべて評価するとすると次の問題を生ずる
プログラム(+)においては、yが2のどちらか一方の
値を必要とするので、それらに対応するe++e、を予
め評価しておくことは無駄となる。さらに、この時、た
とえば、e、の評価を行うことにより、無限ループ、す
なわち、未定義計算を実行することになる可能性がある
としても、実際には、e、に対応するZの値は必要とし
ない場合もある。
上記の性質は、関数または手続きの定義となるプログラ
ムの特性に依存するもので、今、未定義値を土で表し、
任意の関数g(pl、p2.・・・。
pn)に対して、あるパラメタp、(1≦i≦n)が土
のとき、g (ph 、ph 、・・・+pn)=土と
なる場合、関数gは、pよにおいて完全であるといわれ
、その他の場合、gはp、において不完全であるといわ
れる。以下、前者のp、のことを完全パラメタ、後者の
p、のことを不完全パラメタと呼ぶことにする、 パラメタ評価を効率良く実現するには、完全パラメタに
対応する実引数は、関数呼び出しの時点で評価すること
とし、不完全パラメタに対応する実引数は、遅延評価、
すなわち、関数定義の本体において必要となった時点で
評価することが必要となる。
この方式を実現するために、まず、プログラムのコンパ
イル時に、プログラムテキストを静的に解析し、そのプ
ログラムで定義されている関数のすべてのパラメタに対
して、完全が不完全かの識別を行い、その情報をパラメ
タ記述子として記録する。
次に、プログラムの実行オブジェクトにおいて、次のよ
うな関数呼び出しの実引数評価命令(E eval)と
バラメグの遅延評価命令(Levai)を設ける。
コンパイル時に作成されたパラメタ記述子を参照し、完
全パラメタに対応する実引数に対しては、その時点です
べて11・2価する。この評価は、並列処理計算機構を
活用し、それぞれの実引数の評価に対して、計算処理装
置を割当てる。その結果の値は、パラメグ記述子の該当
領域に格納する。一方、不完全パラメタに対応する実引
数に対しては、遅延評価のために、実引数のアドレス情
報をパラメタ記述子に設定する。
関数定義への制御の移動は、すべての実引数の処理が終
了した後に、作成したパラメタ記述子を渡すことによっ
て実行する。
遅延評価は、関数定義の本体中で、パラメタが出現した
時点で行い、遅延評価命令の動作は、関数呼び1f3シ
において作成されたパラメタ記述子を参照して、不完全
パラメタの指示があれば、その時点で評価を実行する。
この評価は、そのパラメタが最初に出現したときのみ行
い、その後の出現に対しては、最初の評価で得られた値
を用いることができるようにする。
これよにり、パラメタの並列評価を実現することができ
る。なお、ここでの説明は、関数と同様。
手続きのパラメタに対してもそのまま当てはまるもので
ある。
第1図は、本発明の一実施例を示す並列処理装置の構成
図である。
第1図において、1は本装置の全体を制御する主プロセ
ツサユニット(MI’Ll)、2は各種データを格納す
る記憶装置(MD)、3は周辺装置(PD)、5.6は
各装置およびユニット間を接続するバスである。 7a
、7b、・・・・、7nは高木ij3プログラミング言
語の手続きまたは関数定義に対して割り当てられる関数
プbセッサ(F P : Functional Pr
ocessor)、8a、8b、・・−,8mは基本演
算処理を実行する基本演算プロセッサ(E P : E
lementary Processor)、4はMP
U 1とFP7a〜7nとMD2とを接続するバス、9
はFP7a 〜7nとEP8a〜8mとを接続するルー
プバスである。
第2図は、第1図の関数プロセッサ(FP)の詳細偶成
図である。
第2図において、関数プロセッサ7は、パラメタ、lf
i列化判定部21.パラメタ実行制御部22から11カ
成され、パラメタ並列化判定部2工は実引数が、並列実
行可能であるかどうかを判定し、並列実行が可能であれ
ば、パラメタ実行制御部22へ制御を渡す。パラメタ実
行制御部22は、パラメタ記述子に基づき、実引数の計
算を抽出し、それを端本演算装置8に渡す。このように
、パラメタ並列化判定部21によレバ複数個のパラメタ
を並列に評価できるかどうかの可否の判定を行うことに
よって、パラメタの並列処理を実行できる。
第3図は、基本演算プロセッサ(EP)の構成図である
第3図において、基本演算プロセッサ(EP)8は、制
御レジスタ、読出し専用記憶、演算回路から構成され、
和、差、積、除算などの基本演算を実行する。
なお、パラメタ並列化判定部21.パラメタ実行制御部
22は、それぞれEP8のような制御レジスタ、読出し
専用記憶を有し、さらに作業用記憶域をも有しているも
のとする。
本装置の特徴は、プログラムの実行全体を制御するため
のMPUI、関数作用を実行するEP7(第2図)と、
基本演算を実行するEP(第3図)の3階層のプロセッ
サを持つことである。この階層は、いわば、処理機能の
垂直分散処理を実現し、各階層はそれぞれの水平分散処
理を行うことで並列実行効率の向上を狙っている。
次に、上記構成を用いた計算処理方式の概略を述べる。
プログラムの例として、 f unc rac(n : integer)= =
ifn==o  then  1 else n Xfac(n −1) end fなる
関数定義を考える。この関数定義の実行は、MPU1に
制御されて、いずれかのFPが割り付けられる。FPで
関数室fifacの実行に際して必要となる基本演算=
= (equality)、 X (IIlultip
lication)。
−(+n1nus)は、後述第6図に示すパケットの形
式に展開され、EPで実行する。FPとEPとを接続す
るループバス9上のパケット(後述第6図)は、′受信
先″、゛送信元゛、°演算子°、°データ値゛で構成す
る。゛受信先゛、゛送信元′には、FPまたはEPの=
一意的番号を用いる。
F I)では、fac自体やif e、 then e
、 elsee、の内部表現関数C0nd(e++8g
+ejなどを実行する。
第4図は、EP7への指示記述子の例を示す図である。
これは、MPU1からEP7に対して出)Jされるもの
である。
第4図において、40は指示記述子を示しており、指示
記述子40は、受信先41.送イ言元112゜内部表現
関数コード44かユーザ定義関数アドレス45かを示す
状態43.内部表現関数コード44、ユーザ定義関数ア
ドレス45.パラメタリストアドレス46の情報からな
る。
関数作用指示記述子40は、手続きまたは関数呼び出し
く関数作用)時に作成し、呼び出した手続または関数の
本体に引渡すものである。このことを実行するための命
令を3つ1投ける。すなわち(1)E eval(E 
ager evaluation)命令、(2) I、
 eval(L azy evaluation)命令
、(3) A 1loc/ Wait命令である。
これらの命令は、(1)が第2図に示すFPのパラメタ
並列化判定部21 、 (2)がFPのパラメタ実行制
御部22.(3)がM I) U 1 、でそれぞれ実
行される。
第5図は、パラメタ記述子の例を示す図である。
これは、第1図に示すMD2に設定される。
第5図において、51はパラメタ記述子を示しており、
このパラメタ記述子51には、呼び出す手続きまたは関
数のもつパラメタ数、そのパラメタ中、完全であるパラ
メタの数、各パラメタに対し、完全であるか、不完全で
あるかを示すフラグとそれに対応する実引数または値の
アドレスを示す領域より構成する。
一般に、パラメタ数、完全パラメタ数、完全/不完全フ
ラグは、コンパイル時に決定され、その値は、手続きま
たは関数毎に設けるパラメタ記述子に設定されている。
第6図は、基本演算プロセッサ(EP)への命令パケッ
トの構成図である。
第6図において、61は受信先、62は送信元。
63は基本演算子、64はデータ値である。
この命令パケットは、EP7からEP8に対して出力さ
れ、EP8では設定された基本演算子に従って(′a算
を実行する。
以下、上記3つの命令について詳細に説明する。
第7図は、本実施例におけるEeval命令の構成図で
ある。
第7図において、71はEeval命令コード、72は
パラメタ記述子アドレス、73は実引数アドレスリスト
のアドレスである。
本Eeval命令は、手続きまたは関数呼び出し時にお
いて、実引数の並列評価を実行するためのものである。
実引数が完全であるか、不完全であるかのフラグは、そ
の手続きまたは関数のパラメタ記述子として保持する。
呼び出し時には、パラメタ記述子のコピーを作成し、そ
のコピーのパラメタ記述子に、本E eval命令の結
果を設定する。
Eeval命令の第1オペランドには、パラメタ記述子
のアドレス72を設定し、第2オペランドには実引数ア
ドレスリスト(後述第8図参照)のアドレス73を設定
するものとする。
第8図は、実引数アドレスリストを示す図である。この
実引数アドレスレリストは実引数アドレスがl−nまで
、MD2に格納される。この実引数アドレスリストは、
パラメタ記述子の仮パラメタに対応して並べるものとす
る。
第9図は1本実施例におけるL eval命令の構成図
である。
第9図において、91は Leval命令コード、92
はパラメタ記述子アドレス、93は仮パラメタ番号であ
る。
本Leval命令は、手続きまたは関数の本体中で。
仮パラメタの評価が必要となったとき使用する。
仮パラメタの評価が必要となったとき、L eval命
令の第1オペランドには、パラメタ記述子のアドレス9
2を設定し、第2オペランドには、評価すべき仮パラメ
タの番号93を設定する。
第10図は、本実施例におけるA 1loc/ Wai
t命令の構成図である。
第10図において、101はA I Iac/ Wai
 を命令コード、102は実引数アドレス、103はW
 a i tフラグアドレス、104は値領域アドレス
である。
木A]loc/Wait命令には、評価すべき対象の実
引数アドレス102を第1オペランドに指定し、第2オ
ペランドの”TV a i tフラグ103をオンにし
、評価結果の値を格納する領域のアドレス104を第3
オペランドに設定する。
以下、本実施例の動作を、第11図〜第14図により詳
細に説明する。
第11図は、第1図におけるEP8の処理フローチャー
トである。
まず、EP7によって設定された基本演算子の種類(和
、差、積、除算など)を識別する(ステップ1101)
。その基本演算子に従って演算を実行する(ステップ1
102)。演算結果をパケットに組立てる(ステップ1
103)。
第12図は、Eeval命令の処理実行フローチャート
である。このEeval命令は、MPU 1からの指示
によりFP7が手続きまたは関数呼び出し時において、
実行される。
まず、第1オペランドよりパラメタ記述子を求める(ス
テップ1201)。次に、各パラメタに対して完全かど
うかを調べる(ステップ1202)。
すなわち、パラメタ記述子の対応する完全/不完全フラ
グに従って、実引数の評価を行うかどうかを決定する。
完全の場合は、完全フラグをもつ完全パラメタをすべて
評価するために、本命令は、それぞれの該当実引数に対
して、A 1loc/ Wait命令(第10図参照)
を発行する(ステップ1203)。
A floe/ Wait命令のW a i tが解除
になるまで待ち(ステップ1204)、評価結果を受は
取り、パラメタ記述子の中の対応する位置に、その値の
アレトスを設定する(ステップ゛1205)。
A 1loc/ Wait命令は、完全パラメタ数の示
す数だけ並行して発行することができる。値が戻されて
きた場合には、W a i tは解除となる。すべての
W a i tが解除されてから次の処理に進む。一般
に、次の処理は5手続きまたは関数本体の呼び出しを実
行する。不完全パラメタの場合には、遅延評価となり、
実引数のアドレスをパラメタ記述子の該当する位置に設
定する(ステップ1206)。
第13図は、Leval命令の処理実行フローチャート
である。このLeval命令は、MPUIからの指示に
よりFP7が手続きまたは関数の本体内で、仮パラメタ
が必要になったとき、使用する。
まず、第2オペランドの仮パラメタ番号に対する記述子
を取出す(ステップ1301)。対応する仮パラメタが
完全フラグをもっているときには、その値を取り出して
返す(ステップ1306)。もし、不完全フラグをもっ
ているときには、この時点で、評価を実行するために、
A 1loc/ Wait命令(第10図参照)を発行
する(ステップ1303)。
その結果を受は取ったならば、その値のアドレスをパラ
メタ記述子に設定すると共に、不完全フラグを完全フラ
グに変更する(ステップ1304゜1305)。完全フ
ラグの意味は、評価法であるとも解釈することにする。
本命令の意義は、遅延評価の候補となっている仮パラメ
タの評価を実行することにある。
第14図は、A 1loc/ Wait命令の処理実行
フローチャートである。このA 1loc/ Wait
命令はFP7からM P U lに対して出力され、命
令の実行は、下記のように行われる。
まず、A 1loc/ Wait命令を受けたMPUI
は関数プロセッサ(FP)を確保し、第1オペランド(
実引数アドレス102)の実行を指示する(ステップ1
401)。次に実行結果を第3オペランド((1i1領
域アドレス104)の示すアドレスに設定する(ステッ
プ1402)。この設定後、W a i tフラグ10
3を解除する(ステップ1403)。
このように1本実施例においては、従来の逐次処理を基
礎とする処理方式に対し、パラメタを並列に評価する命
令を設けて、完全パラメタはすべて評価し、不完全パラ
メタは遅延評価として残しておき、出現時に評価する並
列処理方式を採用しているので、遅延評価を有する関数
または手続きのプログラムを並列処理するのに有効であ
る6[発明の効果] 以上説明したように1本発明によれば、高水嘔プログラ
ミング言語によって記述されたプログラムを処理する計
算機において、パラメタを並列に評価することを指示す
る命令を効率的に実現できるので、計算の並列性を最大
限に引き出し、計算機性能を向上できる。
【図面の簡単な説明】
第1図は本発明の一実施例を示す並列処理装置の構成図
、第2図は第1図の関数プロセッサ(FP)の詳細構成
図、第3図は基本演算プロセッサ(EP)の構成図、第
4図は関数プロセッサへの指示記述子を示す図、第5図
はパラメタ記述子を示す図、第6図は基本演算プロセッ
サへの命令パケットの構成図、第7図は本発明の実施例
におけるEeval命令の構成図、第8図は実引数アド
レスリストを示す図、第9図は本発明の実施例における
Leval命令の構成図、第10図はA 1loc/ 
Wait命令の構成図、第11図はEPの処理フローチ
ャート、第12図はEeval命令の処理実行フローチ
ャート、第13図はLeval命令の処理実行フローチ
ャート、第14図はA 1loe/ Wait命令の処
理実行フローチャートである。 1、主プロセツサユニット(MPU)、2:記憶袋rf
!l(M D )、3 : /7J辺装置?ff1(P
 D)、4.9:ループバス、5,6:バス、7 関数
プロセッサ(FP)、8:基本演算プロセッサ(EP)
。 第     1     図 第2図 第     3     図 第     4     図 第    6    図 第     7     図 第     8    図 第     9     図 第   l O図 第   12   図 第   13   図 第   14   図

Claims (1)

    【特許請求の範囲】
  1. 1、高水準プログラミング言語によって記述されたプロ
    グラムを処理する計算機において、前記プログラムをコ
    ンパイルするときに、前記プログラムに含まれるすべて
    の関数または手続きのパラメタに対し、各パラメタの完
    全/不完全の特性を静的に解析し、その特性を示す識別
    情報の記録を、コンパイラの出力であるオブジェクト・
    プログラムの中に、パラメタ記述子として埋め込み、実
    行時の関数または手続き呼び出しの際の実引数の評価を
    、当該記述子の完全/不完全情報に基づき、完全パラメ
    タに対応する実引数に対しては、その時点ですべてを並
    列に評価し、不完全パラメタに対応する実引数に対して
    は、遅延評価として残しておき、関数または手続き定義
    の中での出現時に評価することを特徴とする並列処理実
    行方式。
JP31112386A 1986-12-26 1986-12-26 並列処理実行方式 Pending JPS63163636A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP31112386A JPS63163636A (ja) 1986-12-26 1986-12-26 並列処理実行方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31112386A JPS63163636A (ja) 1986-12-26 1986-12-26 並列処理実行方式

Publications (1)

Publication Number Publication Date
JPS63163636A true JPS63163636A (ja) 1988-07-07

Family

ID=18013415

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31112386A Pending JPS63163636A (ja) 1986-12-26 1986-12-26 並列処理実行方式

Country Status (1)

Country Link
JP (1) JPS63163636A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7363621B2 (en) 2002-12-26 2008-04-22 International Business Machines Corporation Program converting apparatus, method, and program
JP2009528589A (ja) * 2006-02-27 2009-08-06 マイクロソフト コーポレーション 適応コンパイルコード

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7363621B2 (en) 2002-12-26 2008-04-22 International Business Machines Corporation Program converting apparatus, method, and program
US8225299B2 (en) 2002-12-26 2012-07-17 International Business Machines Corporation Program converting apparatus, method, and program
JP2009528589A (ja) * 2006-02-27 2009-08-06 マイクロソフト コーポレーション 適応コンパイルコード
US8615743B2 (en) 2006-02-27 2013-12-24 Microsoft Corporation Adaptive compiled code

Similar Documents

Publication Publication Date Title
JP3311462B2 (ja) コンパイル処理装置
JPH0475139A (ja) ループ並列化装置
DE69419036D1 (de) Datenverarbeitungssystem und betriebsverfahren
US5418919A (en) Apparatus and method for concurrently executing plural tasks in which identifiers specify steps in tasks
EP0140299A2 (en) Vector mask control system
JPH01118931A (ja) プログラム変換方式
JPS63163636A (ja) 並列処理実行方式
JP2729795B2 (ja) 並列計算機及びその制御方法
JP3006505B2 (ja) 並列プロセスを含むプログラムの修正装置、修正方法、および修正プログラムを記憶する記憶媒体
JP3004340B2 (ja) プログラム最適化装置
US5875317A (en) Boosting control method and processor apparatus having boosting control portion
JPS63138427A (ja) 配列に対する命令のスケジユ−リング処理方式
JPH08272757A (ja) マルチプロセッサシステム及びプログラム起動方法
JPH05173788A (ja) 計算機装置
JP2601541B2 (ja) Fortran入出力並び処理方式
JPH08137714A (ja) マルチタスクプログラムのデバッグ方法およびデバッグシステム
JPS61160147A (ja) 仮想計算機制御方式
JPH0448334A (ja) プロセス間コード共有方式
JPH05127945A (ja) プログラム実行状況解析方式
JPH08115220A (ja) ループ最適化方法
JPS62147545A (ja) 情報処理装置における転送命令処理方式
JPH0573335A (ja) プログラムの自動インライン展開方式
JPS62137641A (ja) 高級言語のコンパイラ
JPH0675757A (ja) 仮想空間常駐プログラムのリンク方式
JPH06282440A (ja) プログラム編集方法、プログラム編集・実行方法およびコンピュータシステム