JP2587830B2 - マイクロプロセッサ情報処理装置および該装置における分散処理方法 - Google Patents

マイクロプロセッサ情報処理装置および該装置における分散処理方法

Info

Publication number
JP2587830B2
JP2587830B2 JP12733887A JP12733887A JP2587830B2 JP 2587830 B2 JP2587830 B2 JP 2587830B2 JP 12733887 A JP12733887 A JP 12733887A JP 12733887 A JP12733887 A JP 12733887A JP 2587830 B2 JP2587830 B2 JP 2587830B2
Authority
JP
Japan
Prior art keywords
information
load distribution
element processor
work
load
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
JP12733887A
Other languages
English (en)
Other versions
JPS63292236A (ja
Inventor
次郎 長沼
武 小倉
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP12733887A priority Critical patent/JP2587830B2/ja
Priority to DE19873741953 priority patent/DE3741953A1/de
Priority to GB8729409A priority patent/GB2199966B/en
Priority to FR8718115A priority patent/FR2608807B1/fr
Publication of JPS63292236A publication Critical patent/JPS63292236A/ja
Priority to US07/522,504 priority patent/US5053950A/en
Priority to US07/710,280 priority patent/US5241677A/en
Application granted granted Critical
Publication of JP2587830B2 publication Critical patent/JP2587830B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 「発明の利用分野」 本発明は、複数の要素プロセッサを結合して並列処理
を行なうマルチプセッサ処理装置、特に述語論理型言語
に属するプログラム言語を対象として並列処理するマル
チプロセッサ処理装置に係り、特に、負荷分散に際し
て、負荷分散する要素プロセッサの本来の処理を中断す
ることなく、高速で、しかも通信情報の極めて少ない負
荷分散を実現することにより、安価なプロセッサ結合網
で、高い並列台数効果を得ることができるようにした情
報処理装置に関する。
「従来技術」 マルチプロセッサ処理装置において、ある第1の要素
プロセッサから他の第2の要素プロセッサへ負荷分散を
行う場合、その負荷分散後に、負荷分散された第2の要
素プロセッサから第1の要素プロセッサへ、作業情報の
参照等のための通信を行うことなく、第1と第2の要素
プロセッサが独立に処理を進められることが望ましい。
ここで、作業情報とは、第1の要素プロセッサ内部で、
負荷分散までの実行過程作成された情報で、特に、述語
論理型言語の場合(Prolog)など、変数と値の結合関係
を示す情報(バインド情報)およびバックトラックなど
の実行制御のための情報(コントロール情報)である。
さらに詳細には、作業情報とは、 (1)Prologの処理における「節の起動」、すなわち、
推論木(探索木あるいは証明木ともいう、英語では、in
ference tree/search tree/proof treeなどという)の
探索経路の辿るためのコントロール情報(一般に複数の
スタックで管理する)と、 (2)Prologの処理における「引数のユニフィケーショ
ン」、すなわち、引数の対応付けによる変数の結合関係
を示すバインド情報、である。
文献により多少名称が異なるが、コントロール情報
は、述語呼出し、バックトラックを行って推論木を辿る
ための複数のスタックのポインタ類で、 4〜6ワード/ノード(各推論深さ)、 くらいを格納する。バインド情報は、引数の対応付けに
よる変数の結合関係を示す情報で、 1ワード/バインド情報(bindings) で表現され、引数の数に依存するが、ノード当たり、 数ワード/ノード、 くらいを格納する。これらのコントロール情報、バイン
ド情報は、推論木のトップからのカレントのノードのパ
スに含まれるノード数にほぼ比例して増加する。
この作業は、以下の文献、 [1]Tech.Note309,Artif.Intell.Center,SRI Interna
tional,D.H.D.Warren,“An Abstract Prolog Instructi
on Set,"Oct.1983. [2]D.H.D.Warren,“Implementing Prolog−Compilin
g predicate logic programs,"Dep.Artif.Intell.Univ.
Edinburgh,Res.Rep.39and40,1977. [3]情報処理学会、情報処理−−特集:プログラミン
グ言語Prolog−−Vol.25,No.12,Dec.1984. [4]R.コワルスキー著,“論理による問題の解法”培
風館、情報処理シリーズ8 Mar.1987.(原著 R.Kowalsk
i,“Logic for Problem Solving,"New York:North−Hol
land,1979.) [5]情報処理学会,研究会報告,記号処理32−3,長沼
他,“連想メモリを用いたPrologマシンの構成とアル
ゴリズム,"pp.1−8,JUNE1985. [6]特開昭60−191334号(特願昭59−46419号)、 [7]情報処理学会「第30回(昭和60年前期)全国大会
講演論文集(I)」久門 他,“並列推論システム−改
良型節単位処理方式,"7C−8,pp.217−218,Mar.1985. [8]Proc.the Logic Programming Conference'86(IC
OT),久門 他,“株分け並列推論方式とその評価,"p
p.193−200,June1986. [9]「bit」横田実,“Prologマシン",Vol.18,No.3,p
p.252−264,Mar.1986.情報処理学会研究会報告,信号処
理21−4, [10]中村克彦,“Associative Evaluation of Prolog
Programs,"Dec.1982. [11]情報処理学会研究会報告,マイクロコンピュータ
29−1、中村克彦,“H−Prologシステムについて,"p
p.1−8,Nov.1983. [12]K.Nakamura,“Associative Evaluation of Prolo
g Programs,"in“Implementations of Prolog,"C.A.Cam
pbell,Ed.Chichester:Ellis Horwood,1984,pp.135−14
6. [13]日経エレクトロニクス,“汎用機からパソコン用
まで出そろった商用Prolog処理系を比較する”、No.355
(11/5),pp.131−154,1984年11月. などによる、本発明の背景となる技術であり、Prologの
処理、すなわち、Prologの逐次実行(Prologの逐次処理
系)の技術として、広く世の中に知られており、一般的
なPrologの逐次処理系の実現手法を理解している当業者
であれば、極めて容易に理解できる、共通の基盤情報で
ある。
従来のマルチプロセッサ処理装置において、上記のよ
うな負荷分散の後、各要素プロセッサが独立に処理を進
められるような負荷分散を実現するためには、第2の要
素プロセッサにおいて負荷分散後の処理を進めるのに必
要な作業情報を、第1の要素プロセッサの内部における
負荷分散までの作業情報から選択し、その選択された作
業情報を第1の要素プロセッサから第2の要素プロセッ
サにすべて転送する必要があった。
この選択され、転送される作業情報は、第1の要素プ
ロセッサ内部において、負荷分散までの処理過程で生成
された情報であり、本来は第1の要素プロセッサで実行
されるべき仕事の一部を、負荷分散によって第2の要素
プロセッサで実行する場合、必要不可欠な情報である。
また、この作業情報、すなわち、これらのコントロール
情報、バインド情報は、推論木のトップからのカレント
のノードのパスに含まれるノード数に比例して増大する
情報であるので、長い処理の経過を経てから負荷分散を
行う場合、その長いパス上に含まれる膨大な作業情報を
転送しなければならない。
負荷分散を行う第1の要素プロセッサは、本来の処理
を中断し、負荷分散のために転送する作業情報の選択を
行い(以下、負荷の作成と呼ぶ)、その膨大な作業情報
を転送(通信)しなければならない。また、負荷分散さ
れる第2の要素プロセッサでは、転送された情報を受け
取り、その後の本来の処理が進められるように、転送さ
れてきた負荷を格納(以下、負荷の格納と呼ぶ)しなけ
ればならない。より詳細には、プロセッサ結合網を用い
て情報を送受するためのデータ変換も必要であるが、こ
れらは、それぞれ負荷の作成、格納の処理に含めて考え
ることができる。
これらの負荷分散に伴うオーバーヘッドを第7図に示
す。
「発明が解決しようとする問題点」 負荷分散に伴うオーバーヘッド(特に、第1の要素プ
ロセッサの処理の中断)により、各要素プロセッサは、
単位時間当りの単位時の処理性能が発揮できない。ま
た、これらの負荷分散は、各要素プロセッサ間で任意か
つ非同期に発生するため、マルチプロセッサ処理装置全
体としての並列台数効果(単体性能×稼働並列台数)が
発揮でないという問題があった。さらに、多量の情報を
任意かつ非同期に転送するような高価なプロセッサ結合
網が必要とされていた。また、多量の情報の転送のた
め、長時間にわたりプロセッサ結合網が占有され、他の
要素プロセッサ間の負荷分散が行えず、負荷の偏りが生
じるという問題もあった。
このような問題は、近年のプロセッサの処理速度の向
上に比べて、マルチプロセッサ処理装置におけるプロセ
ッサ結合網の通信速度の向上が少ない現状(処理コスト
<通信コスト)では、顕著であり、プロセッサ台数の増
加とともにその傾向は著しい。
従来のマルチプロセッサ処理装置を用いて、述語論理
型言語(Prolog)の並列処理を行う場合において、上記
問題点を具体的に説明する。
Prologの逐次的な実行過程は、第8図に示すような解
の推論木(探索木ともいう)を、上→下へかつ左→右へ
深さ優先で探索し、失敗すると後戻り(バックトラッ
ク)しながら、全部の枝を探索するものである。これに
対し、並列的な実行過程は、推論木(探索木ともいう)
のある部分、あるいは全部を、広さ優先で、複数の要素
プロセッサによって同時に探索するものである。なお、
このようなPrologの並列処理は、OR並列処理と呼ばれ
る。
OR並列処理の実現において、第1の要素プロセッサか
ら第2の要素プロセッサに負荷分散を行う場合、第1の
要素プロセッサにおいて推論木(探索木ともいう)のあ
る部分(以下、ORプロセスと呼ぶ)を分割し、第2の要
素プロセッサにその分割されたORプロセスを分け与えな
ければならない。
この場合、 単に分割されたORプロセスのみを転送する、 分割されたORプロセスのみならず、分割されたORプロ
セスを実行するのに必要な作業情報も含めて転送する の2つの方法がある。負荷分散後に、第1と第2の要素
プロセッサが独立に処理を進めるためには、上記の方
法を採用しなければならない。なぜならば、の方法で
は、負荷分散後に、第1の要素プロセッサ内部にある作
業情報への参照が必要となるからである。
しかし、の方法を実現するためには、分割されたOR
プロセスを実行するに必要な膨大な作業情報を転送しな
ければならない。Prologの実行におけるこれらの作業情
報は、変数と値の結合関係を示す情報(バインド情報)
およびPrologのバックトラック等の実行制御のための情
報(コントロール情報)である。これらの作業情報の内
容は、推論木(探索木ともいう)の探索経路に依存し、
同一の探索経路を辿れば、同一内容の作業情報が生成さ
れる。ここで、「探索経路を辿る」とは、すなわち、Pr
ologの実行過程を表す推論木上で、トップから各推論深
さのノードで、どの枝を選択するか、ということであ
る。
Prologの実行過程は、ゴール置き換え操作(またはゴ
ールリダクション)と見なすことができ、それは、ノー
ドがトップからボトムへ枝によって結合された木構造
(推論木)を辿ることと等価である。PRologに特有の処
理である、述語呼出し(これは通常プログラミング言語
の関数呼出しと同じ)やバックトラック(ユニフィーケ
ーション失敗時の後戻り)など、全て、この推論木の辿
り方(traverse)を示している。Prologの逐次実行で
は、この推論木をdepth−firstで逐次的に辿る(探索す
る)。並列実行では、推論木の部分木を同時に並列的に
辿る。
よって、「探索経路を辿る」とは、Prologの処理(実
行)そのものであるから、通常のPrologの実行の場合と
同様に、同一の推論木の同一のパスを再度辿れば、最初
の時とまったく同一の作業情報が得られる。すなわち、
初期ゴールが与えられたトップから、各推論深さで、同
一の枝を選択して実行すれば、同一の計算結果(作業情
報)が得られるのは、Prologの実行と推論木の関係から
明らかである。一度した計算結果(作業情報)は、同一
のパスを再度辿れば、同一の計算結果(作業情報)が得
られる(このため本発明は再計算法とも呼ばれてい
る)。
ただし、本発明などのようなOR並列処理では、負荷分
散に際して必要な作業情報は、トップから負荷分散する
推論深さのノードまでのパス上の作業情報であり、dept
h−firstの探索過程のそれまでの部分、すなわち、対象
のパスの左側は不要である。これは逐次処理系でも、カ
レントのパス上の作業情報(コトロール情報とバインド
情報)以外は以降の処理で参照されないので破棄され
る。
このように、「探索経路を辿る」、また、「探索経路
を辿る」により得られる「作業情報」の生成は、先にも
示した文献による、本発明の背景となる技術となる技術
であり、Prologの処理、すなわち、Prologの逐次実行
(Prologの逐次処理系)の技術として、広く世の中に知
られており、一般的なPrologの逐次処理系の実現手法を
理解している当業者であれば、極めて容易に理解でき
る。共通の基盤情報である。
負荷分散までに第1の要素プロセッサ内で生成された
これらの情報は、負荷分散後、第2の要素プロセッサに
おいて、分割されたORプロセスを実行するのに不可欠で
ある。なぜならば、第2の要素プロセッサにおいて、分
割されたORプロセスから独立に初期ゴール(問い合わ
せ)の解を求めるためには、第1の要素プロセッサにお
いて、初期ゴールから負荷分散までに生成されたすべて
のバインド情報が必要となる可能性があるからである。
そして、これらの作業情報、すなわち、これらのコント
ロール情報、バインド情報は、推論木のトップからのカ
レントのノードのパスに含まれるノード数に比例して増
大する情報であるので、長い処理の経過を経てから負荷
分散を行う場合、その長いパス上に含まれる膨大な作業
情報を転倒しなければならない。
このような負荷分散に際して、第1の要素プロセッサ
は、負荷分散の毎に、ORプロセスを分割し(負荷の作
成)、膨大な作業情報を転送しなければならないため
に、本来の処理が中断される。また、第2の要素プロセ
ッサは、負荷分散される毎に作業情報を受け取るため、
膨大な作業情報の受信、転送された作業情報の格納(負
荷の格納)のため、本来の処理が中断される。
このため、各要素プロセッサは、単位時間をみた場
合、単体時の処理性能が発揮できず、さらに、これらの
負荷分散は各要素プロセッサ間で任意かつ非同期に発生
するため、マルチプロセッサ処理装置全体で高い並列台
数効果が発揮出ないという問題があった。
さらに、多量の情報を任意かつ非同期に転送するよう
な高価なプロセッサ結果網が必要とされていた。また、
多量の情報の転送のため長時間にわたりプロセッサ結合
網が占有され、他の要素プロセッサ間の負荷分散が行え
ず、負荷の偏りが生じるという問題もあった。
このような問題は、近年の単体の逐次型推論(Prolo
g)マシンの処理速度の向上に比べて、そのような高速
な逐次推論マシンを1000台以上の規模で並列処理するマ
ルチプロセッサ処理装置におけるプロセッサ結合網の通
信速度の向上が少ない現状では、顕著であり、特にプロ
セッサ台数の増加とともにその傾向は顕著となる。
たとえば、1MLIPS(Mega Inference Per Second)の
逐次型推論マシンでは、1秒間に約4MW〜10MW(40bit/
w)程度の作業情報が生成される。生成される作業情報
の量は、プログラムの構造や引数の数に依存するが、以
下の説明では、大まかな平均値として、5MWを用いる。
一方、このような逐次型推論マシン1000台規模のマルチ
プロセッサすべてに張り巡らせるのに現実的なプロセッ
サ結合網、たとえば隣接する要素プロセッサ毎に、10MB
PS(Mega Bit Per Second)のシリアルリンクを仮定す
ると、隣接する要素プロセッサ間で1秒間に0.25MW(10
MBPS÷40bit/W)の作業情報の転送が可能となる。
この場合、推論の処理コスト:通信コスト=1:20(20
=5MW÷0.25MW)程度となり、負荷分散、特に膨大な情
報の転送のために、逐次型推論マシン(要素プロセッ
サ)が長時間にわたって本来の推論処理を中断するた
め、単体としての逐次型推論マシンの性能が大きく低下
することになる。
また、稼働中の要素プロセッサおよびプロセッサ結合
網が、長時間にわたり占有されることにより、必要な負
荷分散が行えず、各要素プロセッサの稼働率の低下を招
く。このため、単体性能×稼働並列台数で得られる、マ
ルチプロセッサ処理装置全体としての並列台数効果は大
きく低下してしまう。
この発明は、このような背景のもとになされたもの
で、その目的は、複数の要素プロセッサを結合して並列
処理を行なうマルチプロセッサ処理装置、特に述語論理
型言語に属するプログラム言語を対象として、並列処理
するマルチプロセッサ処理装置において、負荷分散に際
して、負荷分散する要素プロセッサの本来の処理を中断
することなく、高速で通信情報の極めて少ない負荷分散
を実現することにより、安価なプロセッサ結合網で、高
い並列台数効果を得ることのできる情報処理装置を提供
することにある。
「問題点を解決するための手段」 本発明は、述語論理型言語に属するプログラム言語の
並列処理に際し、該プログラム言語で記述されたプログ
ラムを格納するプログラムメモリと該格納されたプログ
ラムに従って述語論理型言語を実行するための作業領域
を有する要素プロセッサを、プロセッサ結合網を介して
複数個結合し、該プログラム言語の実行過程で動的に生
成されるノードがトップからボトムへ枝によって結合さ
れ、負荷分散の対象となる部分木(以下、仕事と呼ぶ)
を含む推論木に基づき、必要に応じて要素プロセッサ相
互間で情報の授受を行い、あるソース側の要素プロセッ
サから他のデスティネーション側の要素プロセッサへ仕
事を割り付ける負荷分散(仕事の分割)を行いながら、
処理を進めるマルチプロセッサ処理装置において、 該要素プロセッサは、 (a)負荷分散に際して、ソース側の要素プロセッサ
の、 該負荷分散を行った推論深さを示す情報、 該負荷分散した仕事の識別子(該仕事の対象とする
特定の枝)の情報、 から構成され、負荷分散までの推論木の探索経路を示
し、過去の負荷分散の回数に応じた一定量の情報を生成
する第1の手段(一定情報生成装置)、 (b)前記負荷分散に際して、前記ソース側の要素プロ
セッサからデスティネーション側の要素プロセッサへ、
前記一定量の情報を転送する第2の手段、 (c)前記負荷分散に際して、前記デスティネーション
側の要素プロセッサで、該負荷分散された仕事の実行に
必要な、ユニフィケーションやバックトラックなどの実
行制御のための情報であり、該ソース側の要素プロセッ
サで該負荷分散までの実行過程で作成された作業情報
を、前記第2の手段によって転送された前記一定量の情
報を用いて、同一の推論木の探索経路を再度辿ることに
より、該デスティネーション側の要素プロセッサで再生
する第3の手段(作業情報生成装置)、 (d)前記負荷分散に際して、前記デスティネーション
側の要素プロセッサで、前記第3の手段で生成された前
記作業情報を用いて、該負荷分散された仕事(分割され
た仕事)を実行する第4の手段を具備することを特徴と
する。
また、他の発明は、要素プロセッサが、 (a)負荷分散に際して、ソース側の要素プロセッサ
の、 該負荷分散を行った推論深さを示す情報、 該負荷分散した仕事の識別子(該仕事の対象とする
特定の枝)の情報、 から構成され、負荷分散までの推論木の探索経路を示
し、過去の負荷分散の回数に応じた一定量の情報を生成
する第1の過程と、 (b)前記負荷分散に際して、前記ソース側の要素プロ
セッサからデスティネーション側の要素プロセッサへ、
前記一定量の情報を転送する第2の過程と、 (c)前記負荷分散に際して、前記デスティネーション
側の要素プロセッサで、該負荷分散された仕事の実行に
必要な、ユニフィケーションやバックトラックなどの実
行制御のための情報であり、該ソース側の要素プロセッ
サで該負荷分散までの実行過程で作成された作業情報
を、前記第2の手段によって転送された前記一定量の情
報を用いて、同一の推論木の探索経路を再度辿ることに
より、該デスティネーション側の要素プロセッサで再生
する第3の過程と、 (d)前記負荷分散に際して、前記デスティネーション
側の要素プロセッサで、前記第3の過程で生成された前
記作業情報を用いて、該負荷分散された仕事(分割され
た仕事)を実行する第4の過程を有することを特徴とす
る。
また、他の発明は、複数個の要素プロセッサのなかの
ある第1の要素プロセッサから他の第2の要素プロセッ
サへの負荷分散に際し、 (a)前記第1の要素プロセッサにおいて、前記第1の
要素プロセッサから前記第2の要素プロセッサへ転送す
べき、 前記第1の要素プロセッサのプロセッサ識別子の情報
並びに 過去の負荷分散の回数に応じた 負荷分散を行う推論深さの情報及び 負荷分散の仕事の識別子(すなわち該仕事の対象とす
る特定の枝)の情報 から構成された当該負荷分散までの推論木の探索経路を
示す転送情報を生成する第1の過程と、 (b)前記第1の要素プロセッサから前記第2の要素プ
ロセッサへ、前記転送情報を転送する第2の過程と、 (c)前記第2の要素プロセッサにおいて、前記第1の
要素プロセッサから転送された前記プロセッサ識別子の
情報を用いて、該第1の要素プロセッサと同一の初期負
荷分散処理を行う第3の過程と、 (d)前記第2の要素プロセッサにおいて、前記転送情
報を用いて、前記第3の過程における初期負荷分散の後
の推論深さから当該負荷分散における推論深さまで、前
記第1の要素プロセッサが処理した同一の推論木の探索
経路を再度辿ることによって、前記第2の要素プロセッ
サに負荷分散された仕事の実行に必要なユニフィケーシ
ョン、バックトラック等の実行制御のための情報であ
り、かつ、前記第1の要素プロセッサで該負荷分散まで
の実行過程で作成された作業情報を、再生する第4の過
程と、 (e)前記第2の要素プロセッサで、前記作業情報を用
いて、前記負荷分散された仕事(すなわち分散された仕
事)を実行する第5の過程を有することを特徴とする。
また、他の発明は、複数個の要素プロセッサのなかの
ある第1の要素プロセッサから他の第2の要素プロセッ
サへの負荷分散に際し、前記第1の要素プロセッサから
前記第2の要素プロセッサへ転送すべき 前記第1の要素プロセッサのプロセッサ識別子の情報
並びに 過去の負荷分散の回数に応じた 負荷分散を行う推論深さの情報及び 負荷分散の仕事の識別子(すなわち該仕事の対象とす
る特定の枝)の情報 から構成された当該負荷分散までの推論木の探索経路を
示す転送情報を、前記第1の要素プロセッサにおいて生
成する一定情報生成装置と、前記第1の要素プロセッサ
から転送されてきた前記転送情報を、推論深さの順に格
納する負荷分散履歴メモリを有し、前記第1の要素プロ
セッサから転送された前記プロセッサ識別子の情報を用
いて該第1の要素プロセッサと同一の初期負荷分散の処
理を行い、その後、前記負荷分散履歴メモリの内容を推
論深さレジスタ及び負荷分散識別子レジスタに順次取り
出し、前記推論深さレジスタが示す推論深さでは、前記
負荷分散識別子レジスタの値の示す特定の枝を選択し、
前記推論深さレジスタに含まれない推論深さでは、最も
右の枝を選択し、これらの選択した枝の実行を前記負荷
分散履歴メモリの内容が空になるまで繰り返し、前記第
1の要素プロセッサと同一の推論木の探索経路を再度辿
ることによって、前記第2の要素プロセッサで当該負荷
分散された仕事の実行に必要な、ユニフィケーション、
バックトラックなどの実行制御のための情報であり、か
つ、前記第1の要素プロセッサで当該負荷分散までの実
行過程で作成された作業情報を、前記第2の要素プロセ
ッサにおいて再生する作業情報生成手段を具備すること
を特徴とする。
「作用」 上記構成によれば、従来技術で示した負荷分散におけ
る(1)負荷の作成、(2)膨大な作業情報の転送、
(3)負荷の格納等のオーバーヘッドが以下のように解
消される。
(1)負荷分散における負荷の作成は、中央処理装置と
記憶装置で行なわれる本来の処理とは独立に、第1の手
段、第1の過程又は一定情報生成装置により生成され
る。
(2)負荷分散後、デスティネーション側の要素プロセ
ッサ又は第2の要素プロセッサで必要となる作業情報
(従来、ソース側の要素プロセッサ又は第1の要素プロ
セッサから転送されていた膨大な情報)は、負荷分散の
回数に応じた一定量の情報を用いて、第2の要素プロセ
ッサ内部の第3の手段、第3項記載の発明にあっては第
3の過程、第4項記載の発明にあっては第3および第4
の過程又は作業情報生成装置によって生成されるため、
通信しなければならない情報を激減させることができ
る。
実際の具体的な値は、処理の性質によっても異なる
が、次の実施例に示すPrologの処理に適用した例では、
従来、数十ワード〜数千ワード、すなわち、処理の経過
によって不定量の作業情報の通信が必要であったもの
が、本発明では、1+2n(n:負荷分散の回数)ワードだ
けを通信することで負荷分散を完了することができる。
一般に、各要素プロセッサにおいては、推論処理の回
数>>負荷分散の回数であるため、処理の経過に依存す
ることなく、高速に負荷分散のための通信を完了するこ
とができる。負荷分散に際して、このような膨大な作業
情報を転送するのでなく、少量の一定量の情報を転送
し、それを用いて再計算(同一パスを辿り)を行い、必
要な作業情報を再生するのが、本発明の主旨である。一
般に、 となる。一定量の情報は、負荷分散したノードのみを格
納するため、推論木とその負荷分散に依存するが、最悪
ケース、すなわち、全てのパス上のノードで負荷分散が
生じた場合、パスの情報(全ノード)と同等となる。し
かし、特願昭61−303412号で示す初期負荷分散と併用す
る場合、初期の負荷が平均化され、それ以降の負荷分散
が減少するため、パスの情報(全ノード)よりかなり少
なくなる。その効果は大きい。さらに、負荷分散の際の
情報の転送も、第1の要素プロセッサの本来の処理と独
立して、転送することが可能である。これにより、第1
の要素プロセッサは、第2の要素プロセッサへの負荷分
散によって、本来の処理を中断しなくて済む。
(3)転送された情報を用いて、第2の要素プロセッサ
の内部に設けられた第3の手段、第3項記載の発明にあ
っては第3の過程、第4項記載の発明にあっては第3お
よび第4の過程又は作業情報生成装置が、必要な作業情
報を生成するため、従来のように、負荷の格納を行う必
要はない。
このように、従来の負荷分散におけるオーバーヘッド
が、本発明によって上記のように解消されるため、従来
技術で説明した各種の問題点も解消される。
「実施例」 以下、図面を参照して、本発明の実施例を詳細に説明
する。
この発明を、PrologのOR並列処理を行うマルチプロセ
ッサ処理装置に適用した実施例を示す。すなわち、一定
情報生成装置における一定量の情報の作成方法、と、作
業情報生成装置における一定量の情報を用いて推論木
(探索木ともいう)の探索経路を如何にして辿るか、を
具体的な実施例を通して詳細に示す。
実施例の構成 第1図(a)は、この実施例によるマルチプロセッサ
処理装置の全体構成を示すブロック図である。図におい
て、31は要素プロセッサであり、各要素プロセッサ31に
は、PR0,PR1,……PRnの番号が付されている。これらの
各要素プロセッサPR0,PR1,……PRnは、プロセッサ結合
網32により結合されている。
第1図(b)は、要素プロセッサPRi(i=0.1,……
n)の構成を示すブロック図である。要素プロセッサPR
iは、中央処理装置33、記憶装置34、一定情報生成装置3
5、および作業情報生成装置36を基本構成要素としてい
る。ここで、一定情報生成装置35は、負荷分散時に転送
する、負荷分散の回数に応じた一定量の情報を生成する
装置、作業情報生成装置36は、負荷分散時に転送された
情報から、必要な作業情報を生成する装置である。
第2図は、上述した要素プロセッサPRiの機能ブロッ
ク図である。すなわち、述語論理型言語(Prolog)に属
するプログラム言語を対象として、処理を進める要素プ
ロセッサPRiの機能ブロック図である。
図において、負荷分散に際して用いる一定情報生成装
置35、および作業情報生成装置36は、マルチプロセッサ
処理装置における要素プロセッサPRiの識別子piを格納
するプロセッサ識別子レジスタRpiと、負荷分散を行う
推論深さidbを格納する推論深さレジスタRidbと、負荷
分散する仕事(ORプロセス)の識別子blpを格納する負
荷分散識別子レジスタRblpと、負荷分散の回数に応じ
て、負荷分散を行った推論深さidbならびに上記ORプロ
セスの識別子blpを格納する負荷分散履歴メモリ37と、
これらのレジスタ、メモリ間で簡単な演算を行う演算装
置38とから構成されている。
要素プロセッサ31は、また、負荷分散時点の探索枝の
数pcを数える探索枝カウンタCpcと、結合されているプ
ロセッサ台数pnを格納するプロセッサ台数レジスタRpn
と、初期負荷分散中あるいは作業情報の生成中であるこ
とを示すフラッグflagとを有している。
さらに、図中39は、対象とする術語論理型に属するプ
ログラムを格納するプログラムメモリであり、40は、プ
ログラムを実行するに際して使用する作業領域、つまり
処理の過程で生成する作業情報を格納するメモリであ
る。なお、負荷分散履歴メモリ37は、作業領域40の内部
に構築することも容易である。
実施例の動作 次に、この実施例の動作を説明する。すなわち、一定
情報生成装置における一定量の情報の作成の動作と、作
業情報生成装置における一定量の情報を用いて推論木
(探索木ともいう)の探索経路を辿る動作を詳細に説明
する。
まず、第3図に示す推論木(探索木ともいう)を参照
して、第1の要素プロセッサから第2の要素プロセッサ
へ負荷分散を行う場合、転送する負荷分散の回数に応じ
た一定量の情報を生成する手続き、およびその負荷分散
の回数に応じた一定量の情報を用いて、負荷分散後に必
要となる作業情報を生成する手続きの一例を示す。な
お、説明の便宜上、第1の要素プロセッサをPR1、第2
の要素プロセッサをPR2とする。
(1)第1の要素プロセッサPR1における一定量の情報
の生成。
第3図は、第1の要素プロセッサPR1から、推論深さ
3と7において、2回負荷分散する場合を示している。
なお、図中、既実行の枝は細線で、現在実行中の枝は太
線で、未実行の枝は点線で示されており、負荷分散にお
いては、初期ゴールにより近い未実行の枝(ORプロセ
ス)を分割する。このような推論木(探索木とも言う)
のより初期ゴール(トップ)に近いノードから順に未実
行のORプロセス(未実行の枝の最も左の枝から右方の枝
のすべて)を分割するような負荷分散のORプロセスの分
割の戦略方法は、トップモースト法と呼ばれている。
従来は、負荷分散までの(すなわち、点線で示す未実
行の枝以前の)、推論木の太線の枝で作成された(太線
のパス上に含まれる)作業情報を、第1の要素プロセッ
サPR1から第2の要素プロセッサPR2にすべて転送した
後、点線で示した未実行の枝を、第2の要素プロセッサ
PR2で実行していた。
これに対し、本実施例では、負荷分散の回数に応じた
一定量の情報(この場合1回目は3ワード、2回目は5
ワード、n回目は1+2nワードとなる)だけを転送し、
この情報を用いて、第2の要素プロセッサPR2の内部
で、通常のPrologの実行の場合と同様に、同一の推論木
(探索木ともいう)の同一のパスを再度辿ることによ
り、すなわち、同一の推論木の各推論深さで、同一の枝
を選択して実行することにより、太線の枝で生成された
(太線のパス上に含まれる)作業情報を生成する。
先ず、各要素プロセッサPRiは、初期ゴールの負荷分
散に際し、特願昭61−303412に規定された初期負荷分散
を行う。この初期負荷分散は、プロセッサ識別子レジス
タRpi、推論木(探索木ともいう)の板の数を数えるカ
ウンタCpc、プロセッサ台数レジスタRpn、フラッグfla
g、演算装置38を用いて実行されるもので、各推論木
(探索木ともいう)(ORプロセス)に要素プロセッサ31
を均等に割り付ける手続きを基本とし、これを繰り返す
ことにより実現できる。
第1の要素プロセッサPR1内では、第3図に示すよう
に、初期負荷分散の後、通常Prologの実行過程に従っ
て、推論木(探索木ともいう)を上→下へかつ左→右へ
深さ優先で探索し、何回かの失敗により後戻り(バック
トラック)しながら処理を進めている。そして、推論深
さ3と7の時点で、他の要素プロセッサに負荷分散す
る。
この場合、1回目の負荷分散に際して転送する3ワー
ドの情報は、第1の要素プロセッサPR1のプロセッサ
識別子pi、負荷分散を行う推論深さidb(1)=3、
負荷分散のORプロセスの識別子blp(1)である。
これらの情報のうち、のプロセッサ識別子piは、初
期負荷分散の過程で変化しているが、最初の初期負荷分
散に際して、第1の要素プロセッサPR1に与えられたも
のを用いる。また、,の負荷分散を行う推論深さid
b、および負荷分散のORプロセスの識別子blpは、負荷分
散の時点(推論深さ3の時点)で選択されている枝をbe
p(1)とした場合、その時点での未実行のORプロセス
を指示するポインタblp(1)(プログラムメモリのア
ドレスまたは何番目の枝かを示す情報)、およびその時
点の推論深さidb(1)を、それぞれを格納するレジス
タに待避することより得られる。
このとき、負荷分散した履歴として、その時点(推論
深さ3)の推論深さidb(1)と、選択されている枝bep
(1)を負荷分散履歴メモリ37に格納する。
2回目の負荷分散に際して転送する5ワードの情報
は、第1の要素プロセッサPR1のプロセッサ識別子p
i、1回目の負荷分散時に、負荷分散履歴メモリ37に
待避しておいた推論深さidb(1)=3、上と同様
に、1回目の負荷分散時に、負荷分散履歴メモリ37に待
避しておいた、選択されている枝bep(1)、2回目
の負荷分散を行う推論深さidb(2)=7、負荷分散
すべきORプロセスの識別子blp(2)である。
上記の負荷分散を行う推論深さidb(2)、および
の負荷分散のORプロセスの識別子blp(2)は、その
時点(推論深さ7の時点)で選択されている枝をbep
(2)とした時、未実行のORプロセスへのポインタblp
(2)、およびその時点の推論深さidb(2)を、それ
ぞれを格納するレジスタに待避することにより得られ
る。
この場合、1回目の時と同様に、負荷分散した履歴と
して、その時点の推論深さidb(2)と、選択されてい
る枝bep(2)を負荷分散履歴メモリ37に格納する。こ
れらの情報は、それ以降の負荷分散に際して転送される
情報の一部となる。
(2)第2の要素プロセッサPR2における一定量の情報
を用いて推論木(探索木ともいう)の同一の探索経路を
辿ることによる作業情報の生成。
負荷分散に際して転送された、負荷分散の回数に応じ
た一定量の情報を用いて推論木の同一の探索経路(同一
のパス)を辿ることにより、負荷分散後に必要となる作
業情報が生成される。
以下、この処理、すなわち、一定量の情報を用いて推
論木の同一の探索経路(同一のパス)を辿ることによる
作業情報の生成の処理について詳細に説明する。
まず、第1の要素プロセッサPR1から第2の要素プロ
セッサPR2へ転送される情報(一定量の情報)は、次の
通りである。
転送情報 プロセッサ識別子pi 負荷分散を行う推論深さidb 負荷分散のORプロセスの識別子blp ただし、上記,の情報量は、負荷分散の回数に比
例する 第2の要素プロセッサPR2は、これらの情報を負荷分
散履歴メモリ37に格納した後、以下のアルゴリズムに従
って、一定量の情報を用いて推論木(探索木ともいう)
の同一の探索経路(同一のパス)を辿ることによる作業
情報の生成の処理を進める。なお、以下の説明におい
て、第2の要素プロセッサPR2内での、現時点の推論深
さをidcとする。
作業情報の生成アルゴリズム 第2の要素プロセッサPR2で実行される作業情報の生
成は、次の手順で行われる。なお、現在の推論深さはid
cである。
(a)各レジスタ、メモリ、フラッグの初期設定 レジスタRpi,Rpn,Cpcの初期設定 Rpi←pi:転送されたプロセッサ識別子 Rpn←pn:結合されているプロセッサ台数 Cpc←0:その時点の推論木(探索木ともいう)の枝の数
を数えるカウンタ フラッグの初期設定 flag←on:初期負荷分散中あるいは作業情報の生成中を
示すフラッグ 負荷分散履歴メモリ37の初期設定 (idb,blp):idb:負荷分散を行う推論深さ blp:負荷分散のORプロセスの識別子 レジスタRidb,Rblpの初期設定 Ridb,Rblp:負荷分散履歴メモリ37のトップワードを格納
する。ただし、負荷分散した推論深さの若い順とする。
(b)レジスタRpi,Rpn,Cpcを用いて初期負荷分散を行
う(初期負荷分散完了まで継続) この初期負荷分散は、第4図以降に「初期負荷分散」と
して示したもので、第1の要素プロセッサのプロセッサ
識別子piを用いて行う。すなわち、第3図に示す第1の
要素プロセッサPR1の初期負荷分散と同一の処理が行わ
れる。
(c)一定量の情報を用いて推論木(探索木ともいう)
の同一の探索経路(同一のパス)を辿ることによる作業
情報の生成を次の手順で行う if idc<Ridb then ・各推論深さで最も右の枝を選択して実行する ・次の推論深さidc=idc+1としての処理を繰り返す else idc=Ridb if 負荷分散履歴メモリ37の最後である then ・Rblpの枝を実行する(右の枝はそのまま:saveと呼
ぶ) ・flagをoffとして、作業情報の生成を終了する(負荷
分散が完了) else ・Rblpの枝のみを実行する(右の枝を切る:cutと呼ぶ) ・負荷分散履歴メモリ37の次のワードをレジスタRidb,R
blpに格納し、次の推論深さidc=idc+1としての処
理を繰り返す ここで、“save"とは、右の枝を本要素プロセッサで
今後実行する可能性があるので切らないで残すという意
味であり、“cut"とは、右の枝を本要素プロセッサで今
後実行の対象としないので切るという意味である。上記
の簡単な手続きにより、第1の要素プロセッサPR1から
転送された、負荷分散の回数に応じた一定量の情報か
ら、第1の要素プロセッサPR1内の負荷分散までの作業
情報のうち、負荷分散後に第2の要素プロセッサPR2で
必要となる作業情報を、第2の要素プロセッサPR2内で
生成することができる。
第4図に、第2の要素プロセッサPR2において、転送
された3ワードの情報を用いて、負荷分散までに第1の
要素プロセッサPR1の内部で生成された作業情報(点線
以前の太線部:推論深さ3まで)を、第2の要素プロセ
ッサPR2の内部で、同一の推論木(探索木ともいう)の
同一のパスを再度辿ることにより、すなわち、同一の推
論木の各推論深さで、同一の枝を選択して実行すること
により、太線の枝で生成された(太線のパス上に含まれ
る)作業情報を生成し、負荷分散後の処理(第3図の点
線部:推論深さ3の枝)へ、処理を進めていく過程を示
す。
先ず、第1の要素プロセッサPR1のプロセッサ識別子p
iを用いて、初期負荷分散を行う。次に、負荷分散を行
う推論深さidb(1)=3まで、最も右の枝を選択して
実行する。最後に、負荷分散を行う推論深さ3で、負荷
分散のORプロセスの識別子blp(1)で示される枝を選
択し実行する。
この場合、上記ORプロセスの識別子blp(1)は、負
荷分散履歴メモリ37の最後のワードであるので、その枝
の右の枝は切らないで残しておく。これをsaveという。
右の枝をsaveするのは、今後、この枝を実行する可能性
があるからである。
これらの手続きにより、3ワード転送するだけで、推
論深さ3の時点における、第1要素プロセッサPR1から
第2の要素プロセッサPR2への負荷分散が完了する。
第5図に、第2の要素プロセッサPR2において、転送
された5ワードの情報を用いて、負荷分散までに第1の
要素プロセッサPR1の内部で生成された作業情報(点線
以前の太線部:推論深さ7まで)を、第2の要素プロセ
ッサPR2の内部で、同一の推論木(探索木ともいう)の
同一のパスを再度辿ることにより、すなわち、同一の推
論木の各推論深さで、同一の枝を選択して実行すること
により、太線の枝で生成された(太線のパス上に含まれ
る)作業情報を生成し、負荷分散後の処理(第3図の点
線部:推論深さ7の枝)へ、処理を進めていく過程を示
す。
先ず、第1の要素プロセッサPR1のプロセッサ識別子p
iを用いて初期負荷分散を行う。次に、負荷分散履歴メ
モリ37にある推論深さidb(1)=3まで、最も右の枝
を選択し実行する。負荷分散履歴メモリ37にある推論深
さ3において、負荷分散履歴メモリ37にある枝bep
(1)のみを選択し実行する。この場合、上記の枝bep
(1)は、最後のワードでないので、その枝の右の枝を
切る。これをcutという。右の枝をcutするのは、今後、
この枝を実行する可能性がないからである。
次に、負荷分散を行う推論深さidb(2)=7まで、
最も右の枝を選択し実行する。最後に、負荷分散を行う
推論深さ7で、負荷分散のORプロセスの識別子blp
(2)で示される枝を選択し実行する。この枝は、負荷
分散履歴メモリ37の最後のワードであるので、その枝の
右の枝は切らないでsaveする。
これらの手続きにより、5ワード転送するだけで、推
論深さ7の時点における、第1の要素プロセッサPR1か
ら第2の要素プロセッサPR2への負荷分散が完了する。
第6図に、より一般的な場合として、第2の要素プロ
セッサPR2において、転送された(1+2n)ワードの情
報を用いて、負荷分散までに第1の要素プロセッサPR1
の内部で生成された作業情報を、第2の要素プロセッサ
PR2の内部で、同一の推論木(探索木ともいう)の同一
のパスを再度辿ることにより、すなわち、同一の推論木
の各推論深さで、同一の枝を選択して実行することによ
り、太線の枝で生成された(太線のパス上に含まれる)
作業情報を生成し、負荷分散後の処理へ、処理を進めて
いく過程を示す。
初期負荷分散は、上と同様に第1の要素プロセッサPR
1のプロセッサ識別子piを用いて行う。
その後は、負荷分散する推論深さ(この場合、20)ま
では、負荷分散履歴メモリ37に存在する推論深さ(7,15
…)では、その推論深さで実行された枝(それぞれb2,b
1…)のみを選択し実行する。ただし、これらの枝は、
負荷分散履歴メモリ37の最後のワードでないので、その
枝の右の枝をcutする。また、それ以外の推論深さでは
最も右の枝を選択し実行する。
最後に負荷分散する推論深さ20では、負荷分散のORプ
ロセスの識別子blp=b3で示される枝を選択し実行す
る。この枝は、負荷分散履歴メモリ37の最後のワードで
あるので、その枝の右の枝は切らないでsaveする。
これらの手続きにより、負荷分散の回数に応じた一定
量の情報を転送するだけで、任意の推論深さの時点にお
ける、第1の要素プロセッサPR1から第2の要素プロセ
ッサPR2への負荷分散が完了する。すなわち、負荷分散
に際して、従来のような膨大な作業情報を転送するので
なく、少量の一定量の情報を転送し、その転送された一
定量の情報を用いて推論木の同一の探索経路(同一のパ
ス)を辿ることにより、従来転送する必要のあった膨大
な作業情報を生成し、負荷分散を実現する。
従来技術として、負荷分散に際して、膨大な実行環境
(作業情報)をコピーする方法として、文献[7]
[8]がある。「探索経路を辿る」とは、すなわち、Pr
ologの実行過程を表す推論木(探索木ともいう)上で、
トップから各推論深さのノードで、どの枝を選択する
か、ということである。
本発明では、一定量の情報は(実施例の第6図参
照)、 [プロセッサ識別子, [[推論深さ(1)],[枝識別子(1)]], [[推論深さ(2)],[枝識別子(2)]], [[推論深さ(:)],[枝識別子(:)]], [[推論深さ(n)],[枝識別子(n)]]] であり、同一パスから負荷分散した回数が(n)のと
き、ワード数は(1+2n)となる。
具体的には、第6図に示すように、 [pi, [7],[b2]], [[15],[b1]], [[20],[b3]]] となっている。この際、一定量の情報に含まれる推論深
さでは、その推論深さとペアで格納されている枝識別子
(ポインタ)の枝を実行し、すなわち、第6図では、推
論深さ(7,15,20)ではそれぞれの枝(b2,b1,b3)を実
行し、含まれない推論深さでは、最も右端の枝を実行す
る。すなわち、第6図では、推論深さ(0〜3)はpiに
基づく初期負荷分散なので、それ以降、推論深さ(3〜
6,8〜14,16〜19)では最も右端の枝を実行する。これら
の処理を負荷分散した推論深さまで繰り返す。これが、
一定量の情報を用いた探索経路の辿り方である。それ以
降は通常の推論処理を行う。
また、特願昭61−303412号で示す初期負荷分散と併用
する場合は、最初、一定量の情報に含まれるプロセッサ
識別子で初期負荷分散を行い、その後、負荷分散した推
論深さまで、上記の方法で各推論深さでの実行すべき枝
を選択する。
なお、ここでは、第2の要素プロセッサPR2におい
て、転送された情報を用いて初期ゴールからの作業情報
を生成する場合を示したが、転送されてくる情報と第2
の要素プロセッサPR2の内部の情報(それ以前の負荷分
散に用いたプロセッサ識別子piと負荷分散履歴メモリ37
の内容)を比較することにより、第2の要素プロセッサ
PR2の一部の作業情報を再利用し、途中からの作業情報
のみを生成することも可能である。
上述した実施例に示すように、述語論理型言語(Prol
og)のOR並列処理を行うマルチプロセッサ処理装置にお
いて、負荷分散に際して、第1の要素プロセッサPR1か
ら、負荷分散の回数nに応じた一定量の情報(1+2n)
だけを転送し、第2の要素プロセッサPR2で、その転送
された情報を用いて負荷分散後に必要となる作業情報
を、転送された一定量の情報を用いて、同一の推論木
(探索木ともいう)の同一のパスを再度辿ることによ
り、すなわち、同一の推論木の各推論深さで、同一の枝
を選択して実行することにより生成し、その生成された
作業情報を用いて負荷分散後の処理を進める構成とした
ことにより、「従来技術」の欄で示した、負荷分散にお
ける(1)負荷の作成、(2)膨大な作業情報の転送、
(3)負荷の格納等のオーバーヘッドが以下のように解
消される。
(1)負荷分散における負荷の作成は、各論理推論の実
行過程での情報を、複数のレジスタ、メモリに待避する
だけで実現でき、本来の処理と独立に実行できる。
(2)従来、負荷分散に際して転送されていた第1の要
素プロセッサの内部の膨大な作業情報は、負荷分散の回
数に応じた一定量の情報を用いて第2のプロセッサ内部
で生成されるため、通信しなければならない情報を激減
させることができる。従来、数ワード〜数千ワード、す
なわち、処理の経過によって不定量の作業情報の通信が
必要であったものが、本発明では、1+2nワードだけを
通信することで、極めて高速に負荷分散のための通信を
完了することができる。
一般に、各要素プロセッサにおいては、推論処理の回
数>>負荷分散の回数であるため、処理の経過に依存す
ることなく、高速に負荷分散のための通信を完了するこ
とができる。すなわち、もう少し詳細に述べると、負荷
分散に際して、従来のような膨大な作業情報を転送する
のでなく、少量の一定量の情報を転送し、それを用いて
再計算(同一パスを辿り)を行い、必要な作業情報を再
生するのが、本発明の主旨である。一般に、 となる。一定量の情報は、負荷分散したノードのみを格
納するため、推論木とその負荷分散に依存するが、最悪
ケース、すなわち、全てのパス上のノードで負荷分散が
生じた場合、パスの情報(全ノード)と同等となる。し
かし、特願昭61−303412号で示す初期負荷分散と併用す
る場合、初期の負荷が平均化され、それ以降の負荷分散
が減少するため、パスの情報(全ノード)よりかなり少
なくなる。
さらに、この負荷分散の回数に応じた一定量の情報の
転送も、第1の要素プロセッサの本来の処理と独立し
て、複数のレジスタ、メモリから転送することにより、
第1の要素プロセッサは第2の要素プロセッサの負荷分
散によって、本来の処理を中断する必要はない。特に、
Prologの実行における、節の起動とユニフィケーション
を並列化している専用ハードウェア(特願昭59−4641
9、あるいは特願昭61−303410の第2図、第3図等)で
は、負荷の作成、転送の処理は、節の起動の処理の中で
実現できるため、これらの処理は、まったく通常の処理
(ユニフィケーションの処理)の中にオーバーラップさ
れる。
(3)第2の要素プロセッサで、負荷分散後必要となる
作業情報は、自分自身のプロセッサ内部で生成したもの
であるため、従来のように、負荷の格納は不要である。
このように、従来の負荷分散におけるオーバーヘッド
が、本発明によって上記のように解消されるため、従来
技術で示したこれに基づく各種問題点も解消される。
なお、ここで述べた一定量の情報の選び方や生成の方
法、およびその一定量の情報を用いて必要な作業情報を
生成する方法等は、特に、ここで規定するところではな
い。また、各要素プロセッサの内部の詳細な構成、各要
素プロセッサを結合するプロセッサ結合網の実現手法
(たとえばバスで結合するか、メッシュ型のネットワー
クで結合するか、あるいは多段ルータを用いたネットワ
ークで結合するか等)、さらに、負荷分散を依頼する要
素プロセッサの認識の実現手法(たとえば、上記要素プ
ロセッサを結合するプロセッサ結合網に要素プロセッサ
の状態を示す情報を付加させるか、あるいは外部に要素
プロセッサの情報を管理するものを付加するか等)は、
特にここで規定するところではない。
「発明の効果」 以上、説明したように、マルチプロセッサ処理装置に
おいて、ある第1の要素プロセッサから他の第2の要素
プロセッサへ負荷分散を行うに際し、第1の要素プロセ
ッサから第2のプロセッサへ、負荷分散の回数に応じた
一定量の情報のみを転送し、第1の要素プロセッサの内
部における負荷分散までの作業情報のうち、第2の要素
プロセッサにおいて負荷分散後の処理を進めるのに必要
な作業情報を、第1の要素プロセッサより転送された情
報(一定量の情報)を用いて、第2の要素プロセッサの
内部で、同一の推論木(探索木ともいう)の同一のパス
を再度辿ることにより、すなわち、同一の推論木の各推
論深さで、同一の枝を選択して実行することにより生
成、つまり、より具体的にいうと、再生し、負荷分散後
の処理を進める構成とした新規な情報処理装置を実現す
ることにより、以下に示すような利点が生じる。
(1) 負荷分散に際して、本来の処理を中断する必要
性がなくなるため、高速で、かつ転送すべき通信情報の
極めて少ない負荷分散を行うことができ、高い並列台数
効果が達成することができる。
(2) 特に、本発明を述語論理型言語(Prolog等)の
情報処理に適用する意義は大きく、従来のマルチプロセ
ッサ処理装置で、Prologの並列処理を実現する際に特に
問題になる、負荷の作成、膨大な作業情報の転送による
通信、負荷の格納等のオーバーヘッドを解消し、極めて
高速かつ高い並列台数効果のマルチプロセッサ型の並列
Prologマシンの実現が可能となる。
(3) 処理の経過(推論処理の回数)にほぼ比例する
膨大な作業情報を転送する代わりに、極めて少ない負荷
分散の回数nに応じた一定量の情報(Prologに適用した
場合、1+2nワードの情報)を転送するだけで、負荷分
散が完了するため、負荷分散に際して転送すべき通信量
の激減化が図れる(推論処理の回数>>負荷分散の回
数)。すなわち、負荷分散に際して、従来のような膨大
な作業情報を転送するのでなく、少量の一定量の情報を
転送し、それを用いて再計算(同一パスを辿り)を行
い、必要な作業情報を再生するのが、本発明の主旨であ
る。一般に、 となる。一定量の情報は、負荷分散したノードのみを格
納するため、推論木とその負荷分散に依存するが、最悪
ケース、すなわち、全てのパス上のノードで負荷分散が
生じた場合、パスの情報(全ノード)と同等となる。し
かし、特願昭61−303412号で示す初期負荷分散と併用す
る場合、初期の負荷が平均化され、それ以降の負荷分散
が減少するため、パスの情報(全ノード)よりかなり少
なくなる。、負荷分散に伴う総通信量は、1/30〜1/100
に低減化され、その効果は大きい。
これにより、本発明を適用したマルチプロセッサ処理
装置のプロセッサ結合網(ネットワーク)おいては、ネ
ットワークの通信容量(速度、転送量等)が、従来のマ
ルチプロセッサ処理装置と比べて、極めて低く抑えられ
るため、安価で小型のネットワークで従来と同様の並列
台数効果が得られる。また、従来と同等のネットワーク
を仮定するならば、より高い並列台数効果を発揮するマ
ルチプロセッサ処理装置の実現が可能となる。
(4) また、この発明は、既存の逐次型推論マシン
(Prologマシン)に数個のレジスタ、メモリ等を付加
し、簡単なプロセッサ結合網で、複数個のPrologマシン
を接続し、上述した手続きにより、負荷分散で転送すべ
き情報の生成、および必要となる作業情報の生成を行う
だけで、高速な負荷分散が実現でき、高速かつ高い並列
台数効果のマルチプロセッサ型の並列Prologマシンの実
現が可能となるため、その意義は大きい。
【図面の簡単な説明】
第1図は、本発明の一実施例によるマルチプロセッサ処
理装置の全体構成を示すブロック図、 第2図は、上記実施例による要素プロセッサの機能ブロ
ック図、 第3図は、同実施例における述語論理型言語の探索枝を
示し、第1の要素プロセッサにおいて、負荷分散に際し
て転送する情報(負荷分散の回数に応じた一定量の情
報、この場合3ワードと5ワード)を生成する過程を示
した図面、 第4図は、同実施例の第2の要素プロセッサにおいて、
転送された情報(負荷分散の回数に応じた一定量の情
報、この場合3ワード)を用いて、必要な作業情報を、
同一の探索木の同一のパスを再度辿ることにより、すな
わち、同一の探索木の各推論深さで、同一の枝を選択し
て実行することにより生成する過程を示した図面、 第5図は、同実施例の第2の要素プロセッサにおいて、
転送された情報(負荷分散の回数に応じた一定量の情
報、この場合5ワード)を用いて、必要な作業情報を、
同一の探索木の同一のパスを再度辿ることにより、すな
わち、同一の探索木の各推論深さで、同一の枝を選択し
て実行することにより生成する過程を示した図面、 第6図は、同実施例の第2の要素プロセッサにおいて、
転送された負荷分散の回数nに応じた一定量の情報(1
+2n)ワードを用いて、必要な作業情報を、同一の探索
木の同一のパスを再度辿ることにより、すなわち、同一
の探索木の各推論深さで、同一の枝を選択して実行する
ことにより生成する過程を示した図面で、 第7図は、負荷分散にともなうオーバーヘッドを説明す
るための図、 第8図は、Prologの解の探索木の一例を示す図である。 31……要素プロセッサ、32……プロセッサ結合網、33…
…中央処理装置、34……記憶装置、35……一定情報生成
装置、36……作業情報生成装置、37……負荷分散履歴メ
モリ、38……演算装置、39……プログラムメモリ、40…
…作業領域、pi……要素プロセッサ識別子、idb……推
論深さ、blp……負荷分散識子。

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】述語論理型言語に属するプログラム言語の
    並列処理に際し、該プログラム言語で記述されたプログ
    ラムを格納するプログラムメモリと該格納されたプログ
    ラムに従って述語論理型言語を実行するための作業領域
    を有する要素プロセッサを、プロセッサ結合網を介して
    複数個結合し、該プログラム言語の実行過程で動的に生
    成されるノードがトップからボトムへ枝によって結合さ
    れ、負荷分散の対象となる部分木(以下、仕事と呼ぶ)
    を含む推論木に基づき、必要に応じて要素プロセッサ相
    互間で情報の授受を行い、あるソース側の要素プロセッ
    サから他のデスティネーション側の要素プロセッサへ仕
    事を割り付ける負荷分散(仕事の分割)を行いながら、
    処理を進めるマルチプロセッサ処理装置において、 該要素プロセッサは、 (a)負荷分散に際して、ソース側の要素プロセッサ
    の、 該負荷分散を行った推論深さを示す情報、 該負荷分散した仕事の識別子(該仕事の対象とする
    特定の枝)の情報、 から構成され、負荷分散までの推論木の探索経路を示
    し、過去の負荷分散の回数に応じた一定量の情報を生成
    する第1の手段(一定情報生成装置)、 (b)前記負荷分散に際して、前記ソース側の要素プロ
    セッサからデスティネーション側の要素プロセッサへ、
    前記一定量の情報を転送する第2の手段、 (c)前記負荷分散に際して、前記デスティネーション
    側の要素プロセッサで、該負荷分散された仕事の実行に
    必要な、ユニフィケーションやバックトラックなどの実
    行制御のための情報であり、該ソース側の要素プロセッ
    サで該負荷分散までの実行過程で作成された作業情報
    を、前記第2の手段によって転送された前記一定量の情
    報を用いて、同一の推論木の探索経路を再度辿ることに
    より、該デスティネーション側の要素プロセッサで再生
    する第3の手段(作業情報生成装置)、 (d)前記負荷分散に際して、前記デスティネーション
    側の要素プロセッサで、前記第3の手段で生成された前
    記作業情報を用いて、該負荷分散された仕事(分割され
    た仕事)を実行する第4の手段、 を具備することを特徴とするマルチプロセッサ情報処理
    装置。
  2. 【請求項2】特許請求の範囲第1項記載のマルチプロセ
    ッサ情報処理装置において、 該要素プロセッサはさらに、 前記第1の手段として、 (a)新たな負荷分散の毎に負荷分散した推論深さの情
    報を推論深さレジスタに格納する第5の手段、 (b)新たな負荷分散の毎に負荷分散した仕事の識別子
    の情報を負荷分散識別子レジスタに格納する第6の手
    段、 (c)過去の負荷分散の際の負荷分散を行った推論深さ
    と、該負荷分散した仕事の識別子を負荷分散履歴メモリ
    に格納する第7の手段、 (d)前記第7の手段により格納された情報、前記第5
    の手段により格納された値、前記第6の手段で格納され
    た値、を収集する第8の手段、 を具備し、 前記第2の手段として、 (e)負荷分散に際して、ソース側の要素プロセッサで
    前記第8の手段で収集された情報をデスティネーション
    側の要素プロセッサの負荷分散履歴メモリ格納する第9
    の手段、 を具備し、 前記第3の手段として、 (f)前記第9の手段で格納された該負荷分散履歴メモ
    リの内容をそれぞれ、推論深さレジスタ、負荷分散識別
    子レジスタに順次取り出し、推論深さレジスタを示す推
    論深さでは、負荷分散識別子レジスタの値の示す特定の
    枝を選択し、推論深さレジスタに含まれない推論深さで
    は、最も右の枝を選択し、これらの選択した枝の実行
    を、該負荷分散履歴メモリの内容が空になるまで繰り返
    すことにより、該負荷分散された仕事の実行に必要な該
    作業情報を生成する第10の手段、 を具備することを特徴とするマルチプロセッサ情報処理
    装置。
  3. 【請求項3】述語論理型言語に属するプログラム言語の
    並列処理に際し、該プログラム言語で記述されたプログ
    ラムを格納するプログラムメモリと該格納されたプログ
    ラムに従って述語論理型言語を実行するための作業領域
    を有する要素プロセッサを、プロセッサ結合網を介して
    複数個結合し、該プログラム言語の実行過程で動的に生
    成されるノードがトップからボトムへ枝によって結合さ
    れ、負荷分散の対象となる部分木(以下、仕事と呼ぶ)
    を含む推論木に基づき、必要に応じて要素プロセッサ相
    互間で情報の授受を行い、あるソース側の要素プロセッ
    サから他のデスティネーション側の要素プロセッサへ仕
    事を割り付ける負荷分散(仕事の分割)を行いながら、
    処理を進めるマルチプロセッサ処理装置において、 該要素プロセッサは、 (a)負荷分散に際して、ソース側の要素プロセッサ
    の、 該負荷分散を行った推論深さを示す情報、 該負荷分散した仕事の識別子(該仕事の対象とする
    特定の枝)の情報、 から構成され、負荷分散までの推論木の探索経路を示
    し、過去の負荷分散の回数に応じた一定量の情報を生成
    する第1の過程と、 (b)前記負荷分散に際して、前記ソース側の要素プロ
    セッサからデスティネーション側の要素プロセッサへ、
    前記一定量の情報を転送する第2の過程と、 (c)前記負荷分散に際して、前記デスティネーション
    側の要素プロセッサで、該負荷分散された仕事の実行に
    必要な、ユニフィケーションやバックトラックなどの実
    行制御のための情報であり、該ソース側の要素プロセッ
    サで該負荷分散までの実行過程で作成された作業情報
    を、前記第2の過程によって転送された前記一定量の情
    報を用いて、同一の推論木の探索経路を再度辿ることに
    より、該デスティネーション側の要素プロセッサで再生
    する第3の過程と、 (d)前記負荷分散に際して、前記デスティネーション
    側の要素プロセッサで、前記第3の手段で生成された前
    記作業情報を用いて、該負荷分散された仕事(分割され
    た仕事)を実行する第4の過程 を有することを特徴とするマルチプロセッサ情報処理装
    置における分散処理方法。
  4. 【請求項4】述語論理型言語に属するプログラム言語の
    並列処理に際し、該プログラム言語で記述されたプログ
    ラムを格納するプログラムメモリと該格納されたプログ
    ラムに従って述語論理型言語を実行するための作業領域
    を有する要素プロセッサを、プロセッサ結合網を介して
    複数個結合し、該プログラム言語の実行過程で動的に生
    成されるノードがトップからボトムへ枝によって結合さ
    れ、負荷分散の対象となる部分木(以下、仕事と呼ぶ)
    を含む推論木に基づき、必要に応じて要素プロセッサ相
    互間で情報の授受を行い、仕事を割り付ける負荷分散
    (すなわち仕事の分割)を行いながら処理を進めるマル
    チプロセッサ処理装置において、 前記複数個の要素プロセッサのなかのある第1の要素プ
    ロセッサから他の第2の要素プロセッサへの負荷分散に
    際し、 (a)前記第1の要素プロセッサにおいて、前記第1の
    要素プロセッサから前記第2の要素プロセッサへ転送す
    べき、 前記第1の要素プロセッサのプロセッサ識別子の情報
    並びに 過去の負荷分散の回数に応じた 負荷分散を行う推論深さの情報及び 負荷分散の仕事の識別子(すなわち該仕事の対象とす
    る特定の枝)の情報 から構成された当該負荷分散までの推論木の探索経路を
    示す転送情報を生成する第1の過程と、 (b)前記第1の要素プロセッサから前記第2の要素プ
    ロセッサへ、前記転送情報を転送する第2の過程と、 (c)前記第2の要素プロセッサにおいて、前記第1の
    要素プロセッサから転送された前記プロセッサ識別子の
    情報を用いて、該第1の要素プロセッサと同一の初期負
    荷分散処理を行う第3の過程と、 (d)前記第2の要素プロセッサにおいて、前記転送情
    報を用いて、前記第3の過程における初期負荷分散の後
    の推論深さから当該負荷分散における推論深さまで、前
    記第1の要素プロセッサが処理した同一の推論木の探索
    経路を再度辿ることによって、前記第2の要素プロセッ
    サに負荷分散された仕事の実行に必要なユニフィケーシ
    ョン、バックトラック等の実行制御のための情報であ
    り、かつ、前記第1の要素プロセッサで該負荷分散まで
    の実行過程で作成された作業情報を、再生する第4の過
    程と、 (e)前記第2の要素プロセッサで、前記作業情報を用
    いて、前記負荷分散された仕事(すなわち分散された仕
    事)を実行する第5の過程 を有することを特徴とするマルチプロセッサ情報処理装
    置における分散処理方法。
  5. 【請求項5】述語論理型言語に属するプログラム言語の
    並列処理に際し、該プログラム言語で記述されたプログ
    ラムを格納するプログラムメモリと該格納されたプログ
    ラムに従って述語論理型言語を実行するための作業領域
    を有する要素プロセッサを、プロセッサ結合網を介して
    複数個結合し、該プログラム言語の実行過程で動的に生
    成されるノードがトップからボトムへ枝によって結合さ
    れ、負荷分散の対象となる部分木(以下、仕事と呼ぶ)
    を含む推論木に基づき、必要に応じて要素プロセッサ相
    互間で情報の授受を行い、前記複数の要素プロセッサ間
    で仕事を割り付ける負荷分散(すなわち仕事の分割)を
    行いながら処理を進めるマルチプロセッサ処理装置にお
    いて、 (a)前記複数個の要素プロセッサのなかのある第1の
    要素プロセッサから他の第2の要素プロセッサへの負荷
    分散に際し、前記第1の要素プロセッサから前記第2の
    要素プロセッサへ転送すべき 前記第1の要素プロセッサのプロセッサ識別子の情報
    並びに 過去の負荷分散の回数に応じた 負荷分散を行う推論深さの情報及び 負荷分散の仕事の識別子(すなわち該仕事の対象とす
    る特定の枝)の情報 から構成された当該負荷分散までの推論木の探索経路を
    示す転送情報を、前記第1の要素プロセッサにおいて生
    成する一定情報生成装置と、 (b)前記第1の要素プロセッサから転送されてきた前
    記転送情報を、推論深さの順に格納する負荷分散履歴メ
    モリを有し、前記第1の要素プロセッサから転送された
    前記プロセッサ識別子の情報を用いて該第1の要素プロ
    セッサと同一の初期負荷分散の処理を行い、その後、前
    記負荷分散履歴メモリの内容を推論深さレジスタ及び負
    荷分散識別子レジスタに順次取り出し、前記推論深さレ
    ジスタが示す推論深さでは、前記負荷分散識別子レジス
    タの値の示す特定の枝を選択し、前記推論深さレジスタ
    に含まれない推論深さでは、最も右の枝を選択し、これ
    らの選択した枝の実行を前記負荷分散履歴メモリの内容
    が空になるまで繰り返し、前記第1の要素プロセッサと
    同一の推論木の探索経路を再度辿ることによって、前記
    第2の要素プロセッサで当該負荷分散された仕事の実行
    に必要な、ユニフィケーション、バックトラックなどの
    実行制御のための情報であり、かつ、前記第1の要素プ
    ロセッサで当該負荷分散までの実行過程で作成された作
    業情報を、前記第2の要素プロセッサにおいて再生する
    作業情報生成手段 を具備することを特徴とするマルチプロセッサ情報処理
    装置。
JP12733887A 1986-12-19 1987-05-25 マイクロプロセッサ情報処理装置および該装置における分散処理方法 Expired - Lifetime JP2587830B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP12733887A JP2587830B2 (ja) 1987-05-25 1987-05-25 マイクロプロセッサ情報処理装置および該装置における分散処理方法
DE19873741953 DE3741953A1 (de) 1986-12-19 1987-12-10 Multiprozessorsystem und verfahren zur arbeitslastverteilung bei einem solchen
GB8729409A GB2199966B (en) 1986-12-19 1987-12-17 Multiprocessor system and a method of load balancing thereof
FR8718115A FR2608807B1 (fr) 1986-12-19 1987-12-18 Systeme multiprocesseur et procede d'equilibrage de charge pour ledit systeme
US07/522,504 US5053950A (en) 1986-12-19 1990-05-11 Multiprocessor system and a method of load balancing thereof
US07/710,280 US5241677A (en) 1986-12-19 1991-07-10 Multiprocessor system and a method of load balancing thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP12733887A JP2587830B2 (ja) 1987-05-25 1987-05-25 マイクロプロセッサ情報処理装置および該装置における分散処理方法

Publications (2)

Publication Number Publication Date
JPS63292236A JPS63292236A (ja) 1988-11-29
JP2587830B2 true JP2587830B2 (ja) 1997-03-05

Family

ID=14957448

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12733887A Expired - Lifetime JP2587830B2 (ja) 1986-12-19 1987-05-25 マイクロプロセッサ情報処理装置および該装置における分散処理方法

Country Status (1)

Country Link
JP (1) JP2587830B2 (ja)

Also Published As

Publication number Publication date
JPS63292236A (ja) 1988-11-29

Similar Documents

Publication Publication Date Title
US11392398B2 (en) Parallel processing of data
CN101443733B (zh) 用于执行基于图的计算的方法和系统
US5241677A (en) Multiprocessor system and a method of load balancing thereof
US5659701A (en) Apparatus and method for distributed program stack
US5053950A (en) Multiprocessor system and a method of load balancing thereof
RU2597556C2 (ru) Структура компьютерного кластера для выполнения вычислительных задач и способ функционирования указанного кластера
Ali OR-parallel execution of Prolog on a multi-sequential machine
CN116302574B (zh) 一种基于MapReduce的并发处理方法
CN107204998B (zh) 处理数据的方法和装置
JPH01261772A (ja) コンピュータ及びその動作方法
JP2587830B2 (ja) マイクロプロセッサ情報処理装置および該装置における分散処理方法
EP0373130A2 (en) Method for maintaining the integrity of ties in a layered communications system
JPS6150359B2 (ja)
Onai et al. Architecture and evaluation of a Reduction-based Parallel Inference Machine: PIM-R
EP0509946A2 (en) Apparatus and method for implementing a distributed program stack
CN113328951B (zh) 节点设备、路由方法及互联系统
Johnsson et al. Binary cube emulation of butterfly networks encoded by gray code
Shekhar et al. Linda sub system on transputers
Kumar et al. Finite state machine verification on MIMD machines
Frieder et al. Query Scheduling and Site Selection Algorithms for a Cube-Connected Multicomputer System.
Reinefeld Parallel search in discrete optimization problems
SU866560A1 (ru) Устройство дл распределени за вок по процессорам
Ali OR-Parallel Multi-Sequential
JP2001092679A (ja) 並列実行制御装置
Attiya et al. Hybrid Algorithm for Mapping Parallel Applications in Distributed Systems

Legal Events

Date Code Title Description
EXPY Cancellation because of completion of term
FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071205

Year of fee payment: 11