JPS62159236A - 論理型言語処理装置 - Google Patents

論理型言語処理装置

Info

Publication number
JPS62159236A
JPS62159236A JP56086A JP56086A JPS62159236A JP S62159236 A JPS62159236 A JP S62159236A JP 56086 A JP56086 A JP 56086A JP 56086 A JP56086 A JP 56086A JP S62159236 A JPS62159236 A JP S62159236A
Authority
JP
Japan
Prior art keywords
register
array
vector
instruction
execution
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
JP56086A
Other languages
English (en)
Inventor
Yasushi Kaneda
泰 金田
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 JP56086A priority Critical patent/JPS62159236A/ja
Publication of JPS62159236A publication Critical patent/JPS62159236A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔発明の利用分野〕 本発明は、Prologで代表される電子計算機用論理
型言語で記述されたプログラムの実行方式にかかわり、
特にベクトル計算機による高速実行に好適な装置に関す
る。
〔発明の背景〕
先に特許出wa(特願昭59−186321号)した方
式(以後rQRベクトル方式」と呼ぶ)においては。
論理型言語プログラムのQR並列実行のために、部分解
からなる配列(QRベクトル)をもちいる。
ところが、その要素数はプログラムの実行にともなって
動的に変化する。したがって、複数のQRベクトルを使
用するプログラムにおいては、充分多数のスタックを用
意しないかぎりはメモリねりあてがきわめて困難だとい
う欠点があった。
〔発明の目的〕
本発明の目的は、上記のメモリをねりあて上の重大な困
憇を生じずに論理型言語をパイプライン型ベクトル計算
機で高速実行させることができる装置をあたえることに
ある。
〔発明の概要〕
論理型言語プログラムの実行には通常2〜4本のスタッ
クを使用する。論理型言語プログラムの逐次実行におい
ては、ひとつの述語(いいかえれば手続き)の実行が開
始されるごとに、ひとつのスタック上に、その述語の実
行環境をふくむ領域(スタック・フレーム)がひとつ確
保される。そして、しかるべき時点でスタック・フレー
ムが解放される。
プログラムの複数の選択枝を並列に実行するQRi列実
行の場合には、このスタック・フレームを並列度の数だ
け配列化して確保するようにすればよい。この配列をl
a境配列とよぶ、環境配列は複数個使用してもよいが、
要素数がかわりうる部分環境はひとつの環境配列のなか
にまとめる。これにより、QRベクトル方式においては
複数の可変長配列(QRベクトル)を必要とするプログ
ラムでも、ひとつの述語実行につきひとつの可変長配列
(環境配列)を使用するだけですみ、メモリねりあて上
の困、難をさけることができる6第1図にしめすのがこ
の発明における論理型言語処理装置の概要である。環境
配列1および1゜は記憶装置中にあり、それぞれポイン
タ・レジスタ2および9で指示されている。計算のなが
れはつぎのようになる。環境配列1にふくまれる配列デ
ータが、ポインタ・レジスタ2を使用することによって
ロード・パイプライン3によってベクトル・レジスタ4
にロードされる。同様にして他の配列データが環境配列
1からベクトル・レジスタ5にロードされる。これらの
データは演算装置6によって統一(ユニファイ)され、
その結果がベクトル・レジスタ7に格納される。そして
、さらにストア・パイプライン8により、ポインタ・レ
ジスタ9が指示している環境配列10内に結果がストア
される。部分解の数が統一などによって変化すると、′
lA境配列配列10素数は変化する。しかし、環境配列
1は上記の処理においてはよみだされるだけであるから
、その要素数は変化しない。
〔発明の実施例〕
以下、本発明の実施例を図面をもちいて説明する。プロ
グラムの例としては第2図のようなものをもちいる。
まず、第2図のプログラムについて説明する。
このプログラムは述語5electを定義している。述
語5electは、第131数としてわたされるリスト
から1要素をえらびとり、その要素とのこりの要素から
なるリストとを、それぞれ第231数、第331数とし
てかえすという機能をもっている。
節21はつぎのような解をもとめる:(XIY)すなわ
ち頭部がXで尾部(頭部をのぞいたリスト)がYである
リストがあたえられたとき、要素Xをえらびとり、のこ
りの要素のリストをYとする。
節22は節21とはことなる解をもとめる。すなわち、
リスト(X ! Y)があたえられたとき、5elec
tを再帰的に適用してリストYから要素をえらびとった
結果をZとWとする(Zが要素、Wがのこりのリスト)
と、Zと(X I Y)とが解となる。
たとえば5elect((1+ 2e 3) + X+
 Y)を実行させると、解はつぎの3とおりになり、こ
の順序で出力される。
(1)X=1.Y=  (2,3)  。
(2)X=2.Y=  (1,3)  。
(3)X=3.Y=  (1,2)  。
つぎに、論理型言語処理装置について補足する。
第3図に示すこの実施例におけるハードウェアば発明の
概要でのべた機構をふくんでいるが、第1図にしめした
各装置のほかにつぎのような装置をもつ。
(1)主マスク・レジスタ 主マスク・レジスタ31は各ベクトル・レジスタ32と
ひとしい要素数をもち、各要素は論理値(trueまた
はfalse)をとる。この値がtrueであれば各ベ
クトル・レジスタの対応する要素は有効とみなされる。
逆に、この値がfalseであれば各ベクトル・レジス
タの対応する要素は無効とみなされる。この論理型言語
処理装置は、後述するように統一(ユニフィケーション
)ヲおこなう命令をもつが、統一に失敗した要素に゛対
応する主マスク・レジスタの要素にはfalseが設定
される。すなわち、対応するベクトル・レジスタ要素は
無効にされる− (2)補助マスク・レジスタ 補助マスク・レジスタ33は主マスク・レジスタ31と
同一の構造をしているが、統一命令の動作に影響をあた
えることもなく、その結果に影響をうけることもない。
補助マスク・レジスタは主マスク・レジスタをバックア
ップするために使用される。
(3)ベクトル長レジスタ ベクトル長レジスタ34は、ベクトル・レジスタ32.
主マスク・レジスタ31などがふくむベクトルの有効長
をふくむレジスタである。
これらのレジスタの有効長はすべてひとしい。
すなわち、ベクトル長レジスタがふくむ値をQとすると
、各ベクトル・レジスタおよびマスク・レジスタのa+
を番め以降の要素は無効であり。
各命令の演算対象とはならない。
また、ポインタ・レジスタ35は2本あり、それぞれ実
行開始時の31.数の値をふくむ環境配列36と、実行
終了時の引数の値をふくむべき環境配列37とをさす(
環境配列36の値は実行終了後もかわらない)、前者を
IEP、後者をQEPとよぶ。そして、各環境配列の先
頭にはその終端をさすポインタ38がある。(実際には
終端ポインタ以外にも各環境配列の先頭に管理情報をお
く必要があるが、それらはこの発明の本質に関係がない
ため省略しである)。
つぎに、手続きsel、ectの実行直前の状態につい
て説明する0手続き5electは3つの引数をもつ。
これらをao、al、A2とする。5eloctの実行
前にQEPがさす環境配列37は空、すなわち要素をも
たないものとする。また、ベクトル長レジスタ34はI
EPがさす環境配列36の要素数をふくむものとする。
第3図は、第2図のプログラムにおいてつぎのような環
境配列を入力した場合の初期状態をあられしている。
(1) g2境配列の要素数・・・2 (2)各要素における引数の値 第1要素のaO・・・(1,2,,3)第2要素のaO
・・・(b、c) 各要素のal、A2・・・具体化(instantia
te)されていない変数。
つぎに、5electの目的プログラムとその実行につ
いて説明する。5electは第4図のようにコンパイ
ルされるとする。コンパイルの方法はこの発明とは直接
関係がないので省略する。第4図でAol。
A 11. A 2 + 、 X t 、 Y i (
0≦i≦1)および21゜Wlはベクトル・レジスタを
あられす。
Load命令41は(ロード・パイプライン4をとおし
て)環境配列の各要素がもつ引数aOの値をレジスタA
Ooにロードする一AOaは各要素の先頭から引数aO
までの変位である。同様にLoad命令42および43
は引数al、a2の値をレジスタにロードする。
SetMask命令44は主マスク・レジスタおよび補
助マスク・レジスタの内容をすべてtureにする。
従ってこの段階ではA Oo、 A lo、 A 2o
のすべての要素は有効である。
UnifyCons命令45は、引数aOと(X I 
Y)とを統一する。より具体的にはつぎのようにする。
第1オペランド(傘tX1)および第2オペランド(*
、Yz)にあられれる拳は、この命令の実行前にXおよ
びYが具体化されていない (uninstantiated)変数であることをあ
られしている。すなわち、XおよびYは任意のバタンと
統一されうる。実行前に引数aOの値はレジスタAOo
にふくまれているので、第3オペランド前半ではAOo
を指定している。統一の結果はレジスタXI、Y1およ
びA O1ニ出力される(X、Y。
AOの値が出力される)。統一に失敗した要素に対応す
る主マスク・レジスタの要素の値はfalseとなる。
なお、行頭のLはJuw+pOnMask命令60のと
びさきをあられす。
Unify命令46は引数a1とXとを統一する。
実行前のXの値はXz、alの値はAloにふくまれま
れる。また、実行後のXの値はXz、alの値はA12
に格納される。命令46の実行開始時には主マスク・レ
ジスタがfalseをふくんでいる可能性があり、その
場合は有効な要素についてだけ統一がおこなわれる。す
なわち、主マスク・レジスタの対応する要素がfals
eであるようなベクトル・レジスタ要素については統一
はおこなわれず、その内容は変化しない。Unify命
令47も同様にして引数a2とYとを統一する。
5tore命令48は(ストア・パイプライン9をとお
して)レジスタA Osの内容を引数aOの値として、
環境配列37を仮に拡張してストアする。
すなわち、より具体的にはつぎのようにする。環境配列
の終端ポインタ38以降にさらに環境配列要素があるも
のとみなして、そこにストアする。
同様に5tore命令49.50は引数のal、a2の
値を環境配列の上記拡張部分にストアする。
5tore命令48〜50はA O1、A l t 、
 A 21の有効な要素だけをストアする。したがって
、命令50の実行後には環境配列の拡張部にすきまなく
引数の値がつめられている。
5ucceed命令51は、QEPがさす環境配列37
を、主マスク・レジスタのtureである要素の数だけ
、真に拡張する。すなわち、5tora命令48〜50
がストアした範囲の最終を終端ポインタ36がさすよう
に、終端ポインタをかきかえる。
MoveMask命令52は補助マスク・レジスタの内
容をすべて主マスク・レジスタへ転送する。これにより
、命令45〜47で失敗したA Oo、 A ]、 o
A2oの要素が復活する。
UnifyCons命令53は引数aOと〔X I Y
)とを統一する。この命令は命令45とほぼおなしだが
、この命令のあとではaOの値を使用しないため、第3
オペランドの後半部は串となっている。
すなわち、aOの統一結果は出力されない(すてられる
)。
Unify命令54は引数の81とZとを統一する。
この命令の実行前にはZは具体化されていないし、実行
後にはalの統一結果はレジスタAloの内容をZlに
移動(コピー)するだけである。
UnifyCons命令55は引数a2と(XIW)と
を統一する。この命令は引数の値をふくむレジスタA 
1 oと命令53で値があたえられたレジスタXzとの
内容を入力し、レジスタWtにWの統一結果を出力する
命令57〜60は5electの再帰よびだしをコンパ
イラの末尾再帰最適化によってくりかえしにした部分で
ある(末尾再帰最適化とは、手続きの最後だけにある再
帰よびだしをくりかえしに変換する最適化技法である)
。つぎのくりかえしにおいてはレジスタyl、Zxp 
Wlがふくむ値がそれぞれ引数ao、al、a2の値と
なる。したがって命令17〜19においてYl、Zl、
Wtの内容をそれぞれA Oo + A 1. o g
 A 2 oと統一している。
JumpOnMask命令60は、主マスク・レジスタ
がtrueを要素としてふくんでいなければなにもしな
い(したがって命令60の実行完了後は命令61を実行
する)一方、主マスク・レジスタ31がtrueをふく
んでいれば、主マスク・レジスタの内容をすべて補助マ
スク・レジスタ33へ転送するとともに、ラベルLのつ
いた命令(命令45)へ分岐する。したがって、命令5
3〜59で統一に成功する要素があるあいだ、命令45
〜6oがくりかえし実行され、命令45〜51で統一に
成功した要素はQEPでさされる環境配列37のもとに
出力される。
最後に、第3図に対応する実行後の処理装置の状態を第
5図にしめす。第2図のプログラムは複数の解をもつの
で、環境配列の要素数は2から5へとふえている(すな
わち、環境配列36の要素数は2だが、環境配列37の
要素数は5となっている)。
〔発明の効果〕
この発明の論理型言語処理装置においては、ひとつの述
語実行につきひとつの可変長配列(上記実施例ではQE
Pがさす環境配列)を使用するだけですみ、パイプライ
ン化による論理型言語の高速実行を、メモリねりあて上
の困難なく実現することができる。
【図面の簡単な説明】
第1図がこの発明における論理型言語処理装置の概要で
ある。第2図は実施例の説明のために論理型言語による
プログラムである。第3図は実施例における論理型言語
処理装置の述語5eLest実行直前の状態をあられす
。第4図は第2図のプログラムに対応する目的プログラ
ムである。第5図は猜  j 国 第2図 5e1ed (EX / YJ、X、  Y)、   
      〜ztselect(CX I YJ、Z
、  CX I W )ノ −一5e(ect (Y、
Z 、  W〕          〜Z2vJ 4 
図 ■ 3 回

Claims (1)

    【特許請求の範囲】
  1. Prologで代表される論理型言語のことなる部分解
    を並列に計算する装置において、(1)各部分解に対応
    する実行環境を要素とする1つまたは複数の配列のそれ
    ぞれを指示する1つまたは複数のポインタ・レジスタと
    、(2)上記の実行環境配列の各要素がふくむ対応する
    データをベクトル・レジスタにロードするロード・パイ
    プラインと、(3)上記データおよび下記統一(ユニフ
    ィケーション)結果を保持するベクトル・レジスタと、
    (4)ベクトル・レジスタがふくむベクトル・データの
    統一を行うパイプライン演算装置と、(5)ベクトル・
    レジスタに保持される上記統一結果を上記の実行環境配
    列にストアするストア・パイプラインとから構成される
    ことを特徴とする論理型言語処理装置。
JP56086A 1986-01-08 1986-01-08 論理型言語処理装置 Pending JPS62159236A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP56086A JPS62159236A (ja) 1986-01-08 1986-01-08 論理型言語処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP56086A JPS62159236A (ja) 1986-01-08 1986-01-08 論理型言語処理装置

Publications (1)

Publication Number Publication Date
JPS62159236A true JPS62159236A (ja) 1987-07-15

Family

ID=11477105

Family Applications (1)

Application Number Title Priority Date Filing Date
JP56086A Pending JPS62159236A (ja) 1986-01-08 1986-01-08 論理型言語処理装置

Country Status (1)

Country Link
JP (1) JPS62159236A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0552611B2 (en) 1992-01-08 2003-05-07 Fuji Photo Film Co., Ltd. Magnetic recording medium

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0552611B2 (en) 1992-01-08 2003-05-07 Fuji Photo Film Co., Ltd. Magnetic recording medium

Similar Documents

Publication Publication Date Title
Rumbaugh A data flow multiprocessor
US5499349A (en) Pipelined processor with fork, join, and start instructions using tokens to indicate the next instruction for each of multiple threads of execution
US4101960A (en) Scientific processor
Kuehn et al. The Horizon supercomputing system: architecture and software
EP0132158B1 (en) Method of performing a sequence of related activities in multiple independent digital processors
US5353418A (en) System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
US5680338A (en) Method and system for vector processing utilizing selected vector elements
CN111381880B (zh) 一种处理器、介质和处理器的操作方法
US4771380A (en) Virtual vector registers for vector processing system
US4819155A (en) Apparatus for reading to and writing from memory streams of data while concurrently executing a plurality of data processing operations
US5465372A (en) Dataflow computer for following data dependent path processes
Traub et al. Overview of the Monsoon Project.
Bic A process-oriented model for efficient execution of dataflow programs
EP0240108A2 (en) A data processing system
JP4465081B2 (ja) Vliwプロセッサにおける効率的なサブ命令エミュレーション
JPS62159236A (ja) 論理型言語処理装置
Treleaven et al. A multi-processor reduction machine for user-defined reduction languages.
US11650817B2 (en) System and method to implement masked vector instructions
EP0448127B1 (en) Microprogram sequence controller
US7107478B2 (en) Data processing system having a Cartesian Controller
Zehendner A module-based assembly language with parallel processing constructs and its implementation in the ASTOR architecture
JP3014605B2 (ja) ファジィ・コンピュータ
Spertus et al. Experiments with Dataflow on a General-Purpose Parallel Computer
JP3278441B2 (ja) ベクトル処理装置
Dai et al. A basic architecture supporting LGDG computation