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
Links
- 230000006870 function Effects 0.000 claims abstract description 56
- 238000011156 evaluation Methods 0.000 claims abstract description 43
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000004458 analytical method Methods 0.000 claims abstract description 3
- 230000003068 static effect Effects 0.000 claims 1
- 238000004364 calculation method Methods 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 21
- 230000003111 delayed effect Effects 0.000 description 9
- 238000003672 processing method Methods 0.000 description 5
- 230000015654 memory Effects 0.000 description 3
- 239000002689 soil Substances 0.000 description 2
- 150000001768 cations Chemical class 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
(産業上の利用分野〕
本発明は、並列処理実行方式に関し、特に高水市プログ
ラミング言語によって記述されたプログラムを処理する
計算機において、手続きまたは関数呼び出しにおけるパ
ラメタの並列処理に好適な並列処理実行方式に関する。
ラミング言語によって記述されたプログラムを処理する
計算機において、手続きまたは関数呼び出しにおけるパ
ラメタの並列処理に好適な並列処理実行方式に関する。
従来の装置は、特開昭58−8358号公報。
同58−8359号公報記載のように、開数型あるいは
作用的プログラミング言語に対する結合子を用いた処理
方式においては、これらの言語の特徴の一つである遅延
評価を非常に自然な形式を用いて実現されているが、逐
次処理を基礎とする処理方式となっていた。しかし、並
列処理を基礎とする遅延評価の方式については配慮され
ていなかった。
作用的プログラミング言語に対する結合子を用いた処理
方式においては、これらの言語の特徴の一つである遅延
評価を非常に自然な形式を用いて実現されているが、逐
次処理を基礎とする処理方式となっていた。しかし、並
列処理を基礎とする遅延評価の方式については配慮され
ていなかった。
上記従来技術は、基本的に逐次処理の範囲で提案されて
いるので、関数の実引数の遅延評価に対する仕掛けは実
現されているが、実引数の並列処理に対しては、配慮さ
れていない。
いるので、関数の実引数の遅延評価に対する仕掛けは実
現されているが、実引数の並列処理に対しては、配慮さ
れていない。
本発明の目的は、このような従来の配慮されていない点
に鑑み、高水準プログラミング言語によって記述された
プログラムを処理する計算機において、関数または手続
きの実引数への適用、すなわち、関数または手続き呼び
出しに対して、それらの実引数の評価を並列に実行する
と共に、遅延評価も行える並列処理実行方式を提供する
ことにある。
に鑑み、高水準プログラミング言語によって記述された
プログラムを処理する計算機において、関数または手続
きの実引数への適用、すなわち、関数または手続き呼び
出しに対して、それらの実引数の評価を並列に実行する
と共に、遅延評価も行える並列処理実行方式を提供する
ことにある。
〔問題点を解決するための手段]
上記目的を達成するため、本発明では、高水市プログラ
ミング言語によって記述されたプログラムを処理する計
算機において、前記プログラムをコンパイルするときに
、前記プログラムに含まれるすべての関数または手続き
のパラメタに対し、各パラメタの完全/不完全の特性を
静的に解析し、その特性を示す識別−tl’ll報の記
録を、コンパイラの出力であるオブジェクト・プログラ
ムの中に、パラメタ記述子として埋め込み、実行時の関
数または手続き呼び出しの際の実引数の評価を、当該記
述子の完全/不完全情報に基づき、完全パラメタに対応
する実引数に対しては、その時点ですべてを並列に評価
し、不完全パラメタに対応する実引数に対しては、遅延
評価として残しておき、関数または手続き定義の中での
出現時に評価することに特徴がある。
ミング言語によって記述されたプログラムを処理する計
算機において、前記プログラムをコンパイルするときに
、前記プログラムに含まれるすべての関数または手続き
のパラメタに対し、各パラメタの完全/不完全の特性を
静的に解析し、その特性を示す識別−tl’ll報の記
録を、コンパイラの出力であるオブジェクト・プログラ
ムの中に、パラメタ記述子として埋め込み、実行時の関
数または手続き呼び出しの際の実引数の評価を、当該記
述子の完全/不完全情報に基づき、完全パラメタに対応
する実引数に対しては、その時点ですべてを並列に評価
し、不完全パラメタに対応する実引数に対しては、遅延
評価として残しておき、関数または手続き定義の中での
出現時に評価することに特徴がある。
r作用〕
本発明においては、完全パラメグの解析は、コンパイル
時に行い、すべての関数または手続きのすべてのパラメ
タに対し、完全か不完全かの識別情報を有するパラメタ
記述子を作成する。実引数評価命令は、プログラムの実
行オブジェクトにおいて用いられ、コンパイル時に作成
されたパラメタ記述子に基づき、実引数の並列評価を実
行する6遅延評価命令は、プログラムの実行オブジェク
トにおいて用いられ、不完全パラメタの評価を実行する
。
時に行い、すべての関数または手続きのすべてのパラメ
タに対し、完全か不完全かの識別情報を有するパラメタ
記述子を作成する。実引数評価命令は、プログラムの実
行オブジェクトにおいて用いられ、コンパイル時に作成
されたパラメタ記述子に基づき、実引数の並列評価を実
行する6遅延評価命令は、プログラムの実行オブジェク
トにおいて用いられ、不完全パラメタの評価を実行する
。
以下、本発明の一実施例を、図面により詳細に説明する
。
。
まず1本発明の原理について説明する。
例えば、
f(x、 y、 z) ==ifxthenyel
sez ユ・0)なるプログラムを考える。このプログ
ラムに対する関数呼出しをE (e H+ e @ +
e s )とするとき、fの実引数ell ei+
esを並列にすべて評価するとすると次の問題を生ずる
。
sez ユ・0)なるプログラムを考える。このプログ
ラムに対する関数呼出しをE (e H+ e @ +
e s )とするとき、fの実引数ell ei+
esを並列にすべて評価するとすると次の問題を生ずる
。
プログラム(+)においては、yが2のどちらか一方の
値を必要とするので、それらに対応するe++e、を予
め評価しておくことは無駄となる。さらに、この時、た
とえば、e、の評価を行うことにより、無限ループ、す
なわち、未定義計算を実行することになる可能性がある
としても、実際には、e、に対応するZの値は必要とし
ない場合もある。
値を必要とするので、それらに対応するe++e、を予
め評価しておくことは無駄となる。さらに、この時、た
とえば、e、の評価を行うことにより、無限ループ、す
なわち、未定義計算を実行することになる可能性がある
としても、実際には、e、に対応するZの値は必要とし
ない場合もある。
上記の性質は、関数または手続きの定義となるプログラ
ムの特性に依存するもので、今、未定義値を土で表し、
任意の関数g(pl、p2.・・・。
ムの特性に依存するもので、今、未定義値を土で表し、
任意の関数g(pl、p2.・・・。
pn)に対して、あるパラメタp、(1≦i≦n)が土
のとき、g (ph 、ph 、・・・+pn)=土と
なる場合、関数gは、pよにおいて完全であるといわれ
、その他の場合、gはp、において不完全であるといわ
れる。以下、前者のp、のことを完全パラメタ、後者の
p、のことを不完全パラメタと呼ぶことにする、 パラメタ評価を効率良く実現するには、完全パラメタに
対応する実引数は、関数呼び出しの時点で評価すること
とし、不完全パラメタに対応する実引数は、遅延評価、
すなわち、関数定義の本体において必要となった時点で
評価することが必要となる。
のとき、g (ph 、ph 、・・・+pn)=土と
なる場合、関数gは、pよにおいて完全であるといわれ
、その他の場合、gはp、において不完全であるといわ
れる。以下、前者のp、のことを完全パラメタ、後者の
p、のことを不完全パラメタと呼ぶことにする、 パラメタ評価を効率良く実現するには、完全パラメタに
対応する実引数は、関数呼び出しの時点で評価すること
とし、不完全パラメタに対応する実引数は、遅延評価、
すなわち、関数定義の本体において必要となった時点で
評価することが必要となる。
この方式を実現するために、まず、プログラムのコンパ
イル時に、プログラムテキストを静的に解析し、そのプ
ログラムで定義されている関数のすべてのパラメタに対
して、完全が不完全かの識別を行い、その情報をパラメ
タ記述子として記録する。
イル時に、プログラムテキストを静的に解析し、そのプ
ログラムで定義されている関数のすべてのパラメタに対
して、完全が不完全かの識別を行い、その情報をパラメ
タ記述子として記録する。
次に、プログラムの実行オブジェクトにおいて、次のよ
うな関数呼び出しの実引数評価命令(E eval)と
バラメグの遅延評価命令(Levai)を設ける。
うな関数呼び出しの実引数評価命令(E eval)と
バラメグの遅延評価命令(Levai)を設ける。
コンパイル時に作成されたパラメタ記述子を参照し、完
全パラメタに対応する実引数に対しては、その時点です
べて11・2価する。この評価は、並列処理計算機構を
活用し、それぞれの実引数の評価に対して、計算処理装
置を割当てる。その結果の値は、パラメグ記述子の該当
領域に格納する。一方、不完全パラメタに対応する実引
数に対しては、遅延評価のために、実引数のアドレス情
報をパラメタ記述子に設定する。
全パラメタに対応する実引数に対しては、その時点です
べて11・2価する。この評価は、並列処理計算機構を
活用し、それぞれの実引数の評価に対して、計算処理装
置を割当てる。その結果の値は、パラメグ記述子の該当
領域に格納する。一方、不完全パラメタに対応する実引
数に対しては、遅延評価のために、実引数のアドレス情
報をパラメタ記述子に設定する。
関数定義への制御の移動は、すべての実引数の処理が終
了した後に、作成したパラメタ記述子を渡すことによっ
て実行する。
了した後に、作成したパラメタ記述子を渡すことによっ
て実行する。
遅延評価は、関数定義の本体中で、パラメタが出現した
時点で行い、遅延評価命令の動作は、関数呼び1f3シ
において作成されたパラメタ記述子を参照して、不完全
パラメタの指示があれば、その時点で評価を実行する。
時点で行い、遅延評価命令の動作は、関数呼び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とを接続するルー
プバスである。
ツサユニット(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によレバ複数個のパラメタ
を並列に評価できるかどうかの可否の判定を行うことに
よって、パラメタの並列処理を実行できる。
i列化判定部21.パラメタ実行制御部22から11カ
成され、パラメタ並列化判定部2工は実引数が、並列実
行可能であるかどうかを判定し、並列実行が可能であれ
ば、パラメタ実行制御部22へ制御を渡す。パラメタ実
行制御部22は、パラメタ記述子に基づき、実引数の計
算を抽出し、それを端本演算装置8に渡す。このように
、パラメタ並列化判定部21によレバ複数個のパラメタ
を並列に評価できるかどうかの可否の判定を行うことに
よって、パラメタの並列処理を実行できる。
第3図は、基本演算プロセッサ(EP)の構成図である
。
。
第3図において、基本演算プロセッサ(EP)8は、制
御レジスタ、読出し専用記憶、演算回路から構成され、
和、差、積、除算などの基本演算を実行する。
御レジスタ、読出し専用記憶、演算回路から構成され、
和、差、積、除算などの基本演算を実行する。
なお、パラメタ並列化判定部21.パラメタ実行制御部
22は、それぞれEP8のような制御レジスタ、読出し
専用記憶を有し、さらに作業用記憶域をも有しているも
のとする。
22は、それぞれEP8のような制御レジスタ、読出し
専用記憶を有し、さらに作業用記憶域をも有しているも
のとする。
本装置の特徴は、プログラムの実行全体を制御するため
のMPUI、関数作用を実行するEP7(第2図)と、
基本演算を実行するEP(第3図)の3階層のプロセッ
サを持つことである。この階層は、いわば、処理機能の
垂直分散処理を実現し、各階層はそれぞれの水平分散処
理を行うことで並列実行効率の向上を狙っている。
の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)。
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の=
一意的番号を用いる。
式に展開され、EPで実行する。FPとEPとを接続す
るループバス9上のパケット(後述第6図)は、′受信
先″、゛送信元゛、°演算子°、°データ値゛で構成す
る。゛受信先゛、゛送信元′には、FPまたはEPの=
一意的番号を用いる。
F I)では、fac自体やif e、 then e
、 elsee、の内部表現関数C0nd(e++8g
+ejなどを実行する。
、 elsee、の内部表現関数C0nd(e++8g
+ejなどを実行する。
第4図は、EP7への指示記述子の例を示す図である。
これは、MPU1からEP7に対して出)Jされるもの
である。
である。
第4図において、40は指示記述子を示しており、指示
記述子40は、受信先41.送イ言元112゜内部表現
関数コード44かユーザ定義関数アドレス45かを示す
状態43.内部表現関数コード44、ユーザ定義関数ア
ドレス45.パラメタリストアドレス46の情報からな
る。
記述子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命令である。
く関数作用)時に作成し、呼び出した手続または関数の
本体に引渡すものである。このことを実行するための命
令を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 、でそれぞれ実
行される。
並列化判定部21 、 (2)がFPのパラメタ実行制
御部22.(3)がM I) U 1 、でそれぞれ実
行される。
第5図は、パラメタ記述子の例を示す図である。
これは、第1図に示すMD2に設定される。
第5図において、51はパラメタ記述子を示しており、
このパラメタ記述子51には、呼び出す手続きまたは関
数のもつパラメタ数、そのパラメタ中、完全であるパラ
メタの数、各パラメタに対し、完全であるか、不完全で
あるかを示すフラグとそれに対応する実引数または値の
アドレスを示す領域より構成する。
このパラメタ記述子51には、呼び出す手続きまたは関
数のもつパラメタ数、そのパラメタ中、完全であるパラ
メタの数、各パラメタに対し、完全であるか、不完全で
あるかを示すフラグとそれに対応する実引数または値の
アドレスを示す領域より構成する。
一般に、パラメタ数、完全パラメタ数、完全/不完全フ
ラグは、コンパイル時に決定され、その値は、手続きま
たは関数毎に設けるパラメタ記述子に設定されている。
ラグは、コンパイル時に決定され、その値は、手続きま
たは関数毎に設けるパラメタ記述子に設定されている。
第6図は、基本演算プロセッサ(EP)への命令パケッ
トの構成図である。
トの構成図である。
第6図において、61は受信先、62は送信元。
63は基本演算子、64はデータ値である。
この命令パケットは、EP7からEP8に対して出力さ
れ、EP8では設定された基本演算子に従って(′a算
を実行する。
れ、EP8では設定された基本演算子に従って(′a算
を実行する。
以下、上記3つの命令について詳細に説明する。
第7図は、本実施例におけるEeval命令の構成図で
ある。
ある。
第7図において、71はEeval命令コード、72は
パラメタ記述子アドレス、73は実引数アドレスリスト
のアドレスである。
パラメタ記述子アドレス、73は実引数アドレスリスト
のアドレスである。
本Eeval命令は、手続きまたは関数呼び出し時にお
いて、実引数の並列評価を実行するためのものである。
いて、実引数の並列評価を実行するためのものである。
実引数が完全であるか、不完全であるかのフラグは、そ
の手続きまたは関数のパラメタ記述子として保持する。
の手続きまたは関数のパラメタ記述子として保持する。
呼び出し時には、パラメタ記述子のコピーを作成し、そ
のコピーのパラメタ記述子に、本E eval命令の結
果を設定する。
のコピーのパラメタ記述子に、本E eval命令の結
果を設定する。
Eeval命令の第1オペランドには、パラメタ記述子
のアドレス72を設定し、第2オペランドには実引数ア
ドレスリスト(後述第8図参照)のアドレス73を設定
するものとする。
のアドレス72を設定し、第2オペランドには実引数ア
ドレスリスト(後述第8図参照)のアドレス73を設定
するものとする。
第8図は、実引数アドレスリストを示す図である。この
実引数アドレスレリストは実引数アドレスがl−nまで
、MD2に格納される。この実引数アドレスリストは、
パラメタ記述子の仮パラメタに対応して並べるものとす
る。
実引数アドレスレリストは実引数アドレスがl−nまで
、MD2に格納される。この実引数アドレスリストは、
パラメタ記述子の仮パラメタに対応して並べるものとす
る。
第9図は1本実施例におけるL eval命令の構成図
である。
である。
第9図において、91は Leval命令コード、92
はパラメタ記述子アドレス、93は仮パラメタ番号であ
る。
はパラメタ記述子アドレス、93は仮パラメタ番号であ
る。
本Leval命令は、手続きまたは関数の本体中で。
仮パラメタの評価が必要となったとき使用する。
仮パラメタの評価が必要となったとき、L eval命
令の第1オペランドには、パラメタ記述子のアドレス9
2を設定し、第2オペランドには、評価すべき仮パラメ
タの番号93を設定する。
令の第1オペランドには、パラメタ記述子のアドレス9
2を設定し、第2オペランドには、評価すべき仮パラメ
タの番号93を設定する。
第10図は、本実施例におけるA 1loc/ Wai
t命令の構成図である。
t命令の構成図である。
第10図において、101はA I Iac/ Wai
を命令コード、102は実引数アドレス、103はW
a i tフラグアドレス、104は値領域アドレス
である。
を命令コード、102は実引数アドレス、103はW
a i tフラグアドレス、104は値領域アドレス
である。
木A]loc/Wait命令には、評価すべき対象の実
引数アドレス102を第1オペランドに指定し、第2オ
ペランドの”TV a i tフラグ103をオンにし
、評価結果の値を格納する領域のアドレス104を第3
オペランドに設定する。
引数アドレス102を第1オペランドに指定し、第2オ
ペランドの”TV a i tフラグ103をオンにし
、評価結果の値を格納する領域のアドレス104を第3
オペランドに設定する。
以下、本実施例の動作を、第11図〜第14図により詳
細に説明する。
細に説明する。
第11図は、第1図におけるEP8の処理フローチャー
トである。
トである。
まず、EP7によって設定された基本演算子の種類(和
、差、積、除算など)を識別する(ステップ1101)
。その基本演算子に従って演算を実行する(ステップ1
102)。演算結果をパケットに組立てる(ステップ1
103)。
、差、積、除算など)を識別する(ステップ1101)
。その基本演算子に従って演算を実行する(ステップ1
102)。演算結果をパケットに組立てる(ステップ1
103)。
第12図は、Eeval命令の処理実行フローチャート
である。このEeval命令は、MPU 1からの指示
によりFP7が手続きまたは関数呼び出し時において、
実行される。
である。このEeval命令は、MPU 1からの指示
によりFP7が手続きまたは関数呼び出し時において、
実行される。
まず、第1オペランドよりパラメタ記述子を求める(ス
テップ1201)。次に、各パラメタに対して完全かど
うかを調べる(ステップ1202)。
テップ1201)。次に、各パラメタに対して完全かど
うかを調べる(ステップ1202)。
すなわち、パラメタ記述子の対応する完全/不完全フラ
グに従って、実引数の評価を行うかどうかを決定する。
グに従って、実引数の評価を行うかどうかを決定する。
完全の場合は、完全フラグをもつ完全パラメタをすべて
評価するために、本命令は、それぞれの該当実引数に対
して、A 1loc/ Wait命令(第10図参照)
を発行する(ステップ1203)。
評価するために、本命令は、それぞれの該当実引数に対
して、A 1loc/ Wait命令(第10図参照)
を発行する(ステップ1203)。
A floe/ Wait命令のW a i tが解除
になるまで待ち(ステップ1204)、評価結果を受は
取り、パラメタ記述子の中の対応する位置に、その値の
アレトスを設定する(ステップ゛1205)。
になるまで待ち(ステップ1204)、評価結果を受は
取り、パラメタ記述子の中の対応する位置に、その値の
アレトスを設定する(ステップ゛1205)。
A 1loc/ Wait命令は、完全パラメタ数の示
す数だけ並行して発行することができる。値が戻されて
きた場合には、W a i tは解除となる。すべての
W a i tが解除されてから次の処理に進む。一般
に、次の処理は5手続きまたは関数本体の呼び出しを実
行する。不完全パラメタの場合には、遅延評価となり、
実引数のアドレスをパラメタ記述子の該当する位置に設
定する(ステップ1206)。
す数だけ並行して発行することができる。値が戻されて
きた場合には、W a i tは解除となる。すべての
W a i tが解除されてから次の処理に進む。一般
に、次の処理は5手続きまたは関数本体の呼び出しを実
行する。不完全パラメタの場合には、遅延評価となり、
実引数のアドレスをパラメタ記述子の該当する位置に設
定する(ステップ1206)。
第13図は、Leval命令の処理実行フローチャート
である。このLeval命令は、MPUIからの指示に
よりFP7が手続きまたは関数の本体内で、仮パラメタ
が必要になったとき、使用する。
である。このLeval命令は、MPUIからの指示に
よりFP7が手続きまたは関数の本体内で、仮パラメタ
が必要になったとき、使用する。
まず、第2オペランドの仮パラメタ番号に対する記述子
を取出す(ステップ1301)。対応する仮パラメタが
完全フラグをもっているときには、その値を取り出して
返す(ステップ1306)。もし、不完全フラグをもっ
ているときには、この時点で、評価を実行するために、
A 1loc/ Wait命令(第10図参照)を発行
する(ステップ1303)。
を取出す(ステップ1301)。対応する仮パラメタが
完全フラグをもっているときには、その値を取り出して
返す(ステップ1306)。もし、不完全フラグをもっ
ているときには、この時点で、評価を実行するために、
A 1loc/ Wait命令(第10図参照)を発行
する(ステップ1303)。
その結果を受は取ったならば、その値のアドレスをパラ
メタ記述子に設定すると共に、不完全フラグを完全フラ
グに変更する(ステップ1304゜1305)。完全フ
ラグの意味は、評価法であるとも解釈することにする。
メタ記述子に設定すると共に、不完全フラグを完全フラ
グに変更する(ステップ1304゜1305)。完全フ
ラグの意味は、評価法であるとも解釈することにする。
本命令の意義は、遅延評価の候補となっている仮パラメ
タの評価を実行することにある。
タの評価を実行することにある。
第14図は、A 1loc/ Wait命令の処理実行
フローチャートである。このA 1loc/ Wait
命令はFP7からM P U lに対して出力され、命
令の実行は、下記のように行われる。
フローチャートである。この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)。
は関数プロセッサ(FP)を確保し、第1オペランド(
実引数アドレス102)の実行を指示する(ステップ1
401)。次に実行結果を第3オペランド((1i1領
域アドレス104)の示すアドレスに設定する(ステッ
プ1402)。この設定後、W a i tフラグ10
3を解除する(ステップ1403)。
このように1本実施例においては、従来の逐次処理を基
礎とする処理方式に対し、パラメタを並列に評価する命
令を設けて、完全パラメタはすべて評価し、不完全パラ
メタは遅延評価として残しておき、出現時に評価する並
列処理方式を採用しているので、遅延評価を有する関数
または手続きのプログラムを並列処理するのに有効であ
る6[発明の効果] 以上説明したように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 図
、第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、高水準プログラミング言語によって記述されたプロ
グラムを処理する計算機において、前記プログラムをコ
ンパイルするときに、前記プログラムに含まれるすべて
の関数または手続きのパラメタに対し、各パラメタの完
全/不完全の特性を静的に解析し、その特性を示す識別
情報の記録を、コンパイラの出力であるオブジェクト・
プログラムの中に、パラメタ記述子として埋め込み、実
行時の関数または手続き呼び出しの際の実引数の評価を
、当該記述子の完全/不完全情報に基づき、完全パラメ
タに対応する実引数に対しては、その時点ですべてを並
列に評価し、不完全パラメタに対応する実引数に対して
は、遅延評価として残しておき、関数または手続き定義
の中での出現時に評価することを特徴とする並列処理実
行方式。
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)
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 | マイクロソフト コーポレーション | 適応コンパイルコード |
-
1986
- 1986-12-26 JP JP31112386A patent/JPS63163636A/ja active Pending
Cited By (4)
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) | プログラム編集方法、プログラム編集・実行方法およびコンピュータシステム |