JPS6074040A - 述語論理型言語処理装置 - Google Patents
述語論理型言語処理装置Info
- Publication number
- JPS6074040A JPS6074040A JP16344783A JP16344783A JPS6074040A JP S6074040 A JPS6074040 A JP S6074040A JP 16344783 A JP16344783 A JP 16344783A JP 16344783 A JP16344783 A JP 16344783A JP S6074040 A JPS6074040 A JP S6074040A
- Authority
- JP
- Japan
- Prior art keywords
- clause
- predicate
- buffer
- selection circuit
- variable
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
本発明は述語論理型言語処理装置に関する。
述語論理型言語処理装置とは述語名とその引数よシなる
述語の連なりから成る節の集合として書き下す述語論理
型言Mを処理する装置であるが。
述語の連なりから成る節の集合として書き下す述語論理
型言Mを処理する装置であるが。
以下プログラミング言語であるプロログ言@全例にと9
説明する。
説明する。
プロログにおいては表現すべき事象を述語名とその引数
の結合から成る「述語」によって表現し、更に述語間の
関係を記述する。例えば、「太部は果物金好む」という
事象は下記のように記述できる。
の結合から成る「述語」によって表現し、更に述語間の
関係を記述する。例えば、「太部は果物金好む」という
事象は下記のように記述できる。
好む(太部、*物)←果物(*物)
本例で「好む」と「果物」を述語名、「太部」。
「*物」を引数と称し、*印はぞの引数が変数であるこ
とを表わす。即ち、上側は「太部」は「果物」、という
述語名で表記された述語の引数として書かれている事物
を「好む」ことを表現している。従って。
とを表わす。即ち、上側は「太部」は「果物」、という
述語名で表記された述語の引数として書かれている事物
を「好む」ことを表現している。従って。
果物(いちご)。という文が他に書かれていれば、三段
論法の推論によって、[太部はいちごを好む」という結
論が得られる。
論法の推論によって、[太部はいちごを好む」という結
論が得られる。
前記のプロログは述語論理型言語としてその利用領域が
拡大している。しかし、更に利用領域を拡大するために
は、プログラムの処理効率を高める必要がある。
拡大している。しかし、更に利用領域を拡大するために
は、プログラムの処理効率を高める必要がある。
従来、このプロログの処理は汎用計算機で実現されてい
る。しかしながら、汎用計算機のハードウェア構成によ
る制約を受け高速にプロログプログラムを処理すること
ができなかった。
る。しかしながら、汎用計算機のハードウェア構成によ
る制約を受け高速にプロログプログラムを処理すること
ができなかった。
プロログプログラムの実行は述語間の一致を比較する処
理が基本になっている。例えば、前記の[・・・←果物
(*物)。」と「果物(いちご)。」とを比較して両述
語間の一致を調べる処理が基本である。この処理を高速
に実現するためには双方の述語を同時に読み出して述語
名およびそれに続く引数の一致を順次調べる必要がある
。
理が基本になっている。例えば、前記の[・・・←果物
(*物)。」と「果物(いちご)。」とを比較して両述
語間の一致を調べる処理が基本である。この処理を高速
に実現するためには双方の述語を同時に読み出して述語
名およびそれに続く引数の一致を順次調べる必要がある
。
しかしながら、従来の計算機では記憶装置からの読出し
は一時には一語あるいは一つのまとまった領域からのみ
可能であり、別個の領域から同時の計算機で高速バッフ
ァ機能を実現しているキャッジ−メモリでも同様で、処
理装置側からのキャッシュメモリへのお照は一語あるい
は−りの領域からのみ可能である。このハードウェア構
成が従来の計算機でプロログプログラムを高速に処理す
る際の制約となっている。
は一時には一語あるいは一つのまとまった領域からのみ
可能であり、別個の領域から同時の計算機で高速バッフ
ァ機能を実現しているキャッジ−メモリでも同様で、処
理装置側からのキャッシュメモリへのお照は一語あるい
は−りの領域からのみ可能である。このハードウェア構
成が従来の計算機でプロログプログラムを高速に処理す
る際の制約となっている。
さらに従来の計算機では、述語間の一致を調べる処理を
複数個同時に並列処理できない。例えば[−・・←果物
(*物)。」と果物(いちご)。」および「果物(少ん
ご)。」とを比較して 物を満足するものとして「いち
ご」と「pんご」を得ようとする場合である。従来計算
機では、 「果物(*物)」と[果物(いちご月との一
致を調べた後に「果物(*物)」と「果物゛(シんご〕
」との一致を調べる。これらの一致を調べる処理を同時
に並列処理することはできない。
複数個同時に並列処理できない。例えば[−・・←果物
(*物)。」と果物(いちご)。」および「果物(少ん
ご)。」とを比較して 物を満足するものとして「いち
ご」と「pんご」を得ようとする場合である。従来計算
機では、 「果物(*物)」と[果物(いちご月との一
致を調べた後に「果物(*物)」と「果物゛(シんご〕
」との一致を調べる。これらの一致を調べる処理を同時
に並列処理することはできない。
本発明はプロログに代表される述語論理型言語のだめの
処理装置として、同時に読出し可能な複数のバッファメ
モリと述語間の比較を並行して処理できる複数の一致検
出器を備えることによシ、前記述語と述語との比較を並
列に処理できるようにしfC装置を提供するものである
。
処理装置として、同時に読出し可能な複数のバッファメ
モリと述語間の比較を並行して処理できる複数の一致検
出器を備えることによシ、前記述語と述語との比較を並
列に処理できるようにしfC装置を提供するものである
。
本発明によると述語名とその引数よ構成る述語の連らな
シから成る節の集合として書き下す述語論理を言語を処
理する装置に−おいて、前記節の内部表現全格納する記
憶装置と、前記記憶装置から読み出された節の内部表*
1−一時的に格納する複数のバッファメモリと、前記複
数のバッファメモリから読み出された2つの前記述語の
間の一致を調べる複数の一致検出器と、前記述語間の関
係を次々にたどる道筋を保持するためのスタック機構お
よび複数個の内部レジスタおよびバッファメモリの管理
機能を含む制御装置とを備え、前記制御装置の制御の下
に前記複数の一致検出器で述語間の一致検出を複数個同
時に検出できるようにしたことを特徴とする述語論理型
言語処理装置が得られる。
シから成る節の集合として書き下す述語論理を言語を処
理する装置に−おいて、前記節の内部表現全格納する記
憶装置と、前記記憶装置から読み出された節の内部表*
1−一時的に格納する複数のバッファメモリと、前記複
数のバッファメモリから読み出された2つの前記述語の
間の一致を調べる複数の一致検出器と、前記述語間の関
係を次々にたどる道筋を保持するためのスタック機構お
よび複数個の内部レジスタおよびバッファメモリの管理
機能を含む制御装置とを備え、前記制御装置の制御の下
に前記複数の一致検出器で述語間の一致検出を複数個同
時に検出できるようにしたことを特徴とする述語論理型
言語処理装置が得られる。
以下本発明の一実施例を図面を用いて詳細に説明する。
本実施例では、プロログの述語を次の形式で表現する。
述語名(引数1.引数2.・・り
引数は定数または変数であシ、変数引数の先頭には*印
を付けて区別する。プロログの一文を節と呼び、一般形
式は以下のとおりである。
を付けて区別する。プロログの一文を節と呼び、一般形
式は以下のとおりである。
述語1←述語2.述語3.・・・、述語n。
←印は論理記号であシ、その左側に存在し得る述語は高
々−箇である。これをヘッド部と呼び。
々−箇である。これをヘッド部と呼び。
←印の右側をボディ部と呼ぶが、ボディ側の述語を区切
る“、′印は述語間の論理積を表わす。上記の一般形式
杜述語2.述語3.・・・、述語nの論理積が成立する
とき、述語lが成立することを表現しておシ、この形式
を規則節と呼ぶ。
る“、′印は述語間の論理積を表わす。上記の一般形式
杜述語2.述語3.・・・、述語nの論理積が成立する
とき、述語lが成立することを表現しておシ、この形式
を規則節と呼ぶ。
一般形式の特殊形として、ヘツ゛ド部のみから成る節を
宣言節、ボディ部のみから成る節を間合わせ節と呼ぶ。
宣言節、ボディ部のみから成る節を間合わせ節と呼ぶ。
プFCIグのプログラム実行は、以下のステップで行わ
れる。
れる。
(1)節のボディ部に現われる述語と同一の述語金、ラ
ド部に持つ節を見出す。ここで双方の述語の引数同士を
その並び順に比較し、一致t−調べる操作を行う。ここ
ですべての引数が一致するとステップ(2)l: Py
3゜夕すべでの引数が一致して囚なければステップ(
1〕の処理を繰シ返す。
ド部に持つ節を見出す。ここで双方の述語の引数同士を
その並び順に比較し、一致t−調べる操作を行う。ここ
ですべての引数が一致するとステップ(2)l: Py
3゜夕すべでの引数が一致して囚なければステップ(
1〕の処理を繰シ返す。
引数同士の比較において、一方が変数、他方が定数であ
れば、変数に定数の値がバインドされる。また双方共に
変数であれば同一値を採るべく、一方が他方へのボイ/
りに書き換えられる。この二連シの処理も一致条件を満
たすものである。
れば、変数に定数の値がバインドされる。また双方共に
変数であれば同一値を採るべく、一方が他方へのボイ/
りに書き換えられる。この二連シの処理も一致条件を満
たすものである。
(2)ステップ+1)で比較の結果述語同士の一致が確
認された節のボディ部の処理へと制御が移り、ステップ
(1)へ戻る。もしその節が宣言節であれば、ステップ
(1)の最初に参照された節のボディ部の引き続く述語
の処理へ移る。もし引続く述語が無ければ全処理を終了
する。
認された節のボディ部の処理へと制御が移り、ステップ
(1)へ戻る。もしその節が宣言節であれば、ステップ
(1)の最初に参照された節のボディ部の引き続く述語
の処理へ移る。もし引続く述語が無ければ全処理を終了
する。
第1図はプcLログのプログラム例を示す。図中。
“Pl“、“P2“は述語名、“A“ t+B″。
“C“、“D“、“E“は定数引数、“*X“。
“*y″、“*2“は変数引数である。節lは規則節で
あシ、節29節3は宣言節1節4は間合わせ節である。
あシ、節29節3は宣言節1節4は間合わせ節である。
以下、このプログラムの処理の流れを説F!Aする。
プログラムの実行は間合わせ節から始まる。第1図の例
では節4の最初の述語“P 1 (*x、* y )“
の処理から始まシ、ステップ(1)によって節lが見出
され、すべての引数が一致することからステップ(2)
へ進む。ここで変数“*X“には節1の定数値“A“が
バインドされ、変数“*y“には変数“*2″がバイン
ドされて“*y″と“*2”の値が等しいことが示され
る。
では節4の最初の述語“P 1 (*x、* y )“
の処理から始まシ、ステップ(1)によって節lが見出
され、すべての引数が一致することからステップ(2)
へ進む。ここで変数“*X“には節1の定数値“A“が
バインドされ、変数“*y“には変数“*2″がバイン
ドされて“*y″と“*2”の値が等しいことが示され
る。
ステップ(2)では節1のボディ部“P2(B、C。
*z)“の処理へ進み、ステップ(1)へ戻って述語名
“P2”をヘッド部として持つ節2との一致fc調べ不
一致であることから、次に述語名“P2“をヘッド部と
して持つ節3との一致を調べる。節1のボディ部と節3
のヘッド部とは一致して、ステップ(2)の処理へと進
む。ここで変数“*2−には節3の定数値“A”がバイ
ンドされる。前記処理の結果、変数“*y0と変数“*
2“の饋が等しい関係にあることから変数“*y”の値
も定数値“A“になる。
“P2”をヘッド部として持つ節2との一致fc調べ不
一致であることから、次に述語名“P2“をヘッド部と
して持つ節3との一致を調べる。節1のボディ部と節3
のヘッド部とは一致して、ステップ(2)の処理へと進
む。ここで変数“*2−には節3の定数値“A”がバイ
ンドされる。前記処理の結果、変数“*y0と変数“*
2“の饋が等しい関係にあることから変数“*y”の値
も定数値“A“になる。
前記ステップ(2)において節3が宣言節であることか
ら5節1の処理へ制御が戻る。節lのボディ部には述語
“P2 (B、C,*z )″に続く述語はないので1
節lの処理は終了し、節1の処理に制M−渡した節4の
処理へ制御が戻る。これまでの処理結果として、節4の
変数“*X″には定数値“A“がバインドされ、変数“
*y°にも同じく定数値“A“がバインドされる。
ら5節1の処理へ制御が戻る。節lのボディ部には述語
“P2 (B、C,*z )″に続く述語はないので1
節lの処理は終了し、節1の処理に制M−渡した節4の
処理へ制御が戻る。これまでの処理結果として、節4の
変数“*X″には定数値“A“がバインドされ、変数“
*y°にも同じく定数値“A“がバインドされる。
次に、節4の2番目の述語“P 1 (* x、* x
fが処理対象となシ、ステップ(1)によって節lが
見出され、引数を比較した結果、述語の一致が認められ
る。この引数の一致検査において、変数“*X“の値は
前記の処理によシ得られた定数値“A“である。また、
節1の変数“*2“の値も変数“*X“と同一の値にな
ることから、定数値“A“となる。変数“*2“は節4
の1番目の述語“Pl(*x、*y)“の処理では定数
値“A“にバインドされたが5節4の2番目の述語″P
I(*x、*x)“の処理では5節lは新たな処理対象
である。このときには変数“*2“は特定の値がバイン
ドされていない変数であり、前記ステップ(1)の処理
で初めて変数“*X“が値“A“にバインドされる。
fが処理対象となシ、ステップ(1)によって節lが
見出され、引数を比較した結果、述語の一致が認められ
る。この引数の一致検査において、変数“*X“の値は
前記の処理によシ得られた定数値“A“である。また、
節1の変数“*2“の値も変数“*X“と同一の値にな
ることから、定数値“A“となる。変数“*2“は節4
の1番目の述語“Pl(*x、*y)“の処理では定数
値“A“にバインドされたが5節4の2番目の述語″P
I(*x、*x)“の処理では5節lは新たな処理対象
である。このときには変数“*2“は特定の値がバイン
ドされていない変数であり、前記ステップ(1)の処理
で初めて変数“*X“が値“A“にバインドされる。
以下、ステップ(2)で節1のボディ部を処理し。
ステップ(1)の処理を進める。節1のボディ部と節2
は不一致となるが、節3とは一致する。次にステップ(
2)により、節402番目の述語の処理として一致した
ことを節4に返し、すべての処理を終了する。
は不一致となるが、節3とは一致する。次にステップ(
2)により、節402番目の述語の処理として一致した
ことを節4に返し、すべての処理を終了する。
本実施例の装置においては、プロログの節の内部表現と
して、第2図の例に示す形式を用いる。
して、第2図の例に示す形式を用いる。
第2図は第1図に示したプロログプログラムの節lに対
応する内部表現を示す例である。本実施例の装置では5
節毎に第2図に示すようなひとまとまシの領域で記述さ
れる内部表現を持つ。この節毎の内部表現を「コード」
と呼ぶ。第2図の各行を語と呼び、1語はタグフィール
ドと値フィールドから構成される。タグフィールドには
、その語の属性情報が保持され、値フィールドにはタグ
で示される属性に対応する値が保持されてbる。
応する内部表現を示す例である。本実施例の装置では5
節毎に第2図に示すようなひとまとまシの領域で記述さ
れる内部表現を持つ。この節毎の内部表現を「コード」
と呼ぶ。第2図の各行を語と呼び、1語はタグフィール
ドと値フィールドから構成される。タグフィールドには
、その語の属性情報が保持され、値フィールドにはタグ
で示される属性に対応する値が保持されてbる。
コードの先頭の語「ヘッダ」はコード全体に係る情報を
保持する。すなわち規則節、宣言節1間合わせ節のいず
れに対応するコードであるかを示す情報1節の中にある
ユニークな変数の数に係る情報などを保持する。
保持する。すなわち規則節、宣言節1間合わせ節のいず
れに対応するコードであるかを示す情報1節の中にある
ユニークな変数の数に係る情報などを保持する。
コードの第2語である「ポインタ」はそのコードと同一
の述語名をヘッド部として持つ節へのリンク情報を保持
する。
の述語名をヘッド部として持つ節へのリンク情報を保持
する。
第3語は、節1の述語名“Pl“に対応して、述語名を
饋として持つことを示すタグフィールドと、その述語名
は具体的に“Pl“であることを示す値フィールドを持
つ。第4語では述語″P1(A、*z)“の第1引数“
A″の属性が定数であることをタグフィールドで示し、
その直が“A“であることを値フィールドで示す。第5
語では述語“P 1 (A、 * z )“の第2引数
である変数“*2“の属性が変数であることをタグフィ
ールドで示し、その変数が節1の中に現われる最初の変
数であることを示す番号(0) ′fr、値フィ一フイ
ールドして持つ。
饋として持つことを示すタグフィールドと、その述語名
は具体的に“Pl“であることを示す値フィールドを持
つ。第4語では述語″P1(A、*z)“の第1引数“
A″の属性が定数であることをタグフィールドで示し、
その直が“A“であることを値フィールドで示す。第5
語では述語“P 1 (A、 * z )“の第2引数
である変数“*2“の属性が変数であることをタグフィ
ールドで示し、その変数が節1の中に現われる最初の変
数であることを示す番号(0) ′fr、値フィ一フイ
ールドして持つ。
以下5節1のボディ部の述語名°゛P2“、引数“B′
、“C″、′*2“にそれぞれ第2図の第6語〜第9語
が対応する。こCで、第9語の変数“*2“と第5@の
変数“*2“とが同一の変数であることはこれらの語の
値フィールドが同一変数番号(0)であることで示され
る。
、“C″、′*2“にそれぞれ第2図の第6語〜第9語
が対応する。こCで、第9語の変数“*2“と第5@の
変数“*2“とが同一の変数であることはこれらの語の
値フィールドが同一変数番号(0)であることで示され
る。
第3図は以上説明した内部表現によって第1図のプログ
ラム例を表現した図である。図中値フィールド中の“n
ull ”はメモリリンクの終端であることを示す。節
1. 2. 3. 4に対応して4つのコードが表現さ
れている。
ラム例を表現した図である。図中値フィールド中の“n
ull ”はメモリリンクの終端であることを示す。節
1. 2. 3. 4に対応して4つのコードが表現さ
れている。
ボディ部の述語の述語名と同一の述語名をヘッドとして
持つ述語との一致を調べるときに比較対象となる節を指
定するために、ボディ部の述語名にはヘッド部に同一述
語名を持つ節に対すする内部表現のアドレスが格納され
ている。これらの関係は図中の破線で示す。
持つ述語との一致を調べるときに比較対象となる節を指
定するために、ボディ部の述語名にはヘッド部に同一述
語名を持つ節に対すする内部表現のアドレスが格納され
ている。これらの関係は図中の破線で示す。
同一の述語名をヘッド部に持つ節はコードの第2語であ
るポインタによってリンクされる。例えば、節2と節3
とは同一の述語名をヘッド部に有する節であるので、節
2から節3にリンクされる。
るポインタによってリンクされる。例えば、節2と節3
とは同一の述語名をヘッド部に有する節であるので、節
2から節3にリンクされる。
第4図は本発明の装置の一実施例を示すブロック図であ
る。図中100は第3図の説明で述べた内部表現をその
ままの形で格納する記憶装置、101は記憶装置100
に格納されているコードを読出すだめのアドレスレジス
タ、102,104゜106.108は記憶装置100
から読出されたコードを一時的に格納するバッファメモ
リA、バッファメモリB、バッファメモリClバッファ
メモリD、103,105,107,109は夫々バッ
ファメモリ102,104,106,108の語を示す
ためのバッファポインタA、バッファポインタB 、/
(ッ7アポインタC,バッ7アポイ7りり。
る。図中100は第3図の説明で述べた内部表現をその
ままの形で格納する記憶装置、101は記憶装置100
に格納されているコードを読出すだめのアドレスレジス
タ、102,104゜106.108は記憶装置100
から読出されたコードを一時的に格納するバッファメモ
リA、バッファメモリB、バッファメモリClバッファ
メモリD、103,105,107,109は夫々バッ
ファメモリ102,104,106,108の語を示す
ためのバッファポインタA、バッファポインタB 、/
(ッ7アポインタC,バッ7アポイ7りり。
110は前記の4箇のバッファメモリ102,104゜
106.108の出力およびデータ線218を介して送
られる制御部113の内部データの中のlっの出力を選
択する選択回路A、111は前記の4箇のバッファメモ
リ102,104,106,108の出力およびデータ
線218の中の1つの出力を選択する選択回路B、11
2は選択回路All0と選択回路B111によって選択
された語を比較して一致を検出するための比較器へであ
る。比較器A112は入力される2語のビットパターン
が一致していることを検出するだけでなく、変数を示す
語と定数を示す語との比較におして一致を検出する。
106.108の出力およびデータ線218を介して送
られる制御部113の内部データの中のlっの出力を選
択する選択回路A、111は前記の4箇のバッファメモ
リ102,104,106,108の出力およびデータ
線218の中の1つの出力を選択する選択回路B、11
2は選択回路All0と選択回路B111によって選択
された語を比較して一致を検出するための比較器へであ
る。比較器A112は入力される2語のビットパターン
が一致していることを検出するだけでなく、変数を示す
語と定数を示す語との比較におして一致を検出する。
113はスタック機構および内部レジスタおよび各バッ
ファメモリ102,104,106,108および記憶
装置100の管理を含み、比較器A112からの一致検
出信号に基づいて他の構成要素の動作を制御する制御部
である。制御部113は従来型のプロセッサと同様の構
成で実現できるので、その内部機構については特に述べ
ない。
ファメモリ102,104,106,108および記憶
装置100の管理を含み、比較器A112からの一致検
出信号に基づいて他の構成要素の動作を制御する制御部
である。制御部113は従来型のプロセッサと同様の構
成で実現できるので、その内部機構については特に述べ
ない。
114は前記の4箇のバッファメモ!J102゜104
.106,108の出力およびデータ線218の出力の
中の1つを選択する選択回路C,115は前記の4箇の
バッファメモ!J102,104゜106,108の出
力およびデータ線21Bの出力の中のIQk選択する選
択回路り、116は選択回路C114と選択回路D11
5によって選択された語を比較して一致を検出するため
の比較器Cである。
.106,108の出力およびデータ線218の出力の
中の1つを選択する選択回路C,115は前記の4箇の
バッファメモ!J102,104゜106,108の出
力およびデータ線21Bの出力の中のIQk選択する選
択回路り、116は選択回路C114と選択回路D11
5によって選択された語を比較して一致を検出するため
の比較器Cである。
117は選択回路A110と選択回路B111と比較器
A112とで構成する一致検出器A。
A112とで構成する一致検出器A。
118は選択回路C114と選択回W&D115と比較
器0116とで構成する一致検出器Cである。
器0116とで構成する一致検出器Cである。
第4図で、アドレスレジスタ101で指定するアドレス
がアドレス線201を介して記憶装置1oOに送られる
と、出力がバス202を介して各バッファメモリ102
,104,106,108に送られる。バス202のデ
ータは前記4箇の/<ラフアメモリ102,104,1
06,108のいずれかに格納される。0の格納先の選
定は制御部113によって行われる。バッファメモリA
lO2,B104、C106,B108からの出力はそ
れぞれデータ線203,204,205,206を介し
て選択回路All0.選択回路B111 、選択回路C
114および選択回路D115に送られる。選択回路A
Itoおよび選択回路Bll 1では前記のデータ線2
03,204,205,206および制御部113から
のデータを出力するデータ線218の中の出力の1つを
出力として選択し、それぞれデータ線207,208に
出力する。選択回路A110および選択回路B111に
対する選択指示は信号線210,211を介して制御部
113によって行われる。データ線207,208は共
に比較器A112および制御部113への入力線となる
。
がアドレス線201を介して記憶装置1oOに送られる
と、出力がバス202を介して各バッファメモリ102
,104,106,108に送られる。バス202のデ
ータは前記4箇の/<ラフアメモリ102,104,1
06,108のいずれかに格納される。0の格納先の選
定は制御部113によって行われる。バッファメモリA
lO2,B104、C106,B108からの出力はそ
れぞれデータ線203,204,205,206を介し
て選択回路All0.選択回路B111 、選択回路C
114および選択回路D115に送られる。選択回路A
Itoおよび選択回路Bll 1では前記のデータ線2
03,204,205,206および制御部113から
のデータを出力するデータ線218の中の出力の1つを
出力として選択し、それぞれデータ線207,208に
出力する。選択回路A110および選択回路B111に
対する選択指示は信号線210,211を介して制御部
113によって行われる。データ線207,208は共
に比較器A112および制御部113への入力線となる
。
比較器A112で比較された結果は信号線209を介し
て制御部113に送られる。
て制御部113に送られる。
選択回路C114および選択回路D115では前記のデ
ータ線203,204,205,206および制御部1
13からのデータを出力するデータ線218の出力の中
の1つを出力として選択し、それぞれデータ線212,
213に出力する。選択回路C114および選択回路D
115に対する選択指示は信号線215,216ffi
介し人制御部113によって行われる。データ線212
,213は共に比較器C116および制御部113への
入力線である。比較器C116で比較された結果である
一致信号は信号線214を介して制御部113に送られ
る。
ータ線203,204,205,206および制御部1
13からのデータを出力するデータ線218の出力の中
の1つを出力として選択し、それぞれデータ線212,
213に出力する。選択回路C114および選択回路D
115に対する選択指示は信号線215,216ffi
介し人制御部113によって行われる。データ線212
,213は共に比較器C116および制御部113への
入力線である。比較器C116で比較された結果である
一致信号は信号線214を介して制御部113に送られ
る。
制御部113では信号線209,214の一致信号およ
びデータ線207,208,212,213を入力して
、制御部113の中に備えるスタック機構およびレジス
タ全操作する。更に制御部113は、信号線217′f
t介して記憶装置lOOへの参照を制御するためにアド
レスレジスタ101の内容を更新する信号、記憶装置l
OOから読み出されたデータを格納する先として4箇の
バッファメモリAlO2,B104.C106,B10
8の1つを選択する信号、これらのバッファメモリ参照
を制御するためにバッ7アボインメAlO3,バッファ
ポインタB105. バッファポインタC107゜バッ
ファポインタD109を更新する信号を送出し、且つ、
バッファメモリ102,104,106゜108の中に
記憶装置100から転送が必要なデータが既に格納され
ているか否かをチェックしてデータ転送の要/不要を判
定し、選択回路All0゜選択回路B111.選択回路
C114および選択回路D115への選択指示を行う。
びデータ線207,208,212,213を入力して
、制御部113の中に備えるスタック機構およびレジス
タ全操作する。更に制御部113は、信号線217′f
t介して記憶装置lOOへの参照を制御するためにアド
レスレジスタ101の内容を更新する信号、記憶装置l
OOから読み出されたデータを格納する先として4箇の
バッファメモリAlO2,B104.C106,B10
8の1つを選択する信号、これらのバッファメモリ参照
を制御するためにバッ7アボインメAlO3,バッファ
ポインタB105. バッファポインタC107゜バッ
ファポインタD109を更新する信号を送出し、且つ、
バッファメモリ102,104,106゜108の中に
記憶装置100から転送が必要なデータが既に格納され
ているか否かをチェックしてデータ転送の要/不要を判
定し、選択回路All0゜選択回路B111.選択回路
C114および選択回路D115への選択指示を行う。
以下、第3図、第4図、第5図および第6図を用いて第
4図に示した例題プログラムの本実施例における実行動
作を説明する。
4図に示した例題プログラムの本実施例における実行動
作を説明する。
記憶装置100には第3図に示す形式で第1図に示すプ
ロログプログラムが格納されている。記憶装置100の
データはプログラムの実行に伴って各バッファメモリ1
02,104,106,108に格納される。第5図f
a)(b)(C)(d)には、第1図のプロログプログ
ラムの処理が終了した時の各バッファメモリ102,1
04,106,108の記憶状態を示す。
ロログプログラムが格納されている。記憶装置100の
データはプログラムの実行に伴って各バッファメモリ1
02,104,106,108に格納される。第5図f
a)(b)(C)(d)には、第1図のプロログプログ
ラムの処理が終了した時の各バッファメモリ102,1
04,106,108の記憶状態を示す。
第6図は第1図に示したプログラムの実行ステップを説
明するための図を示す。第6図(alは一致検出器A1
17の処理を中心に実行時のステップ番号9遺択回路A
ll0が選択するバッファメモリおよび選択されたバッ
ファメモリの中で参照σれている語のアドレス、選択回
路B111が選択するバッファメモリおよび選択された
バッファメモリの中で1照されている語のアドレス、選
択回路A110の出力、選択回路B111の出力、制御
部113の内部レジスタ情報およびスタック情報、その
実行ステップでの動作、の順に記述しである。
明するための図を示す。第6図(alは一致検出器A1
17の処理を中心に実行時のステップ番号9遺択回路A
ll0が選択するバッファメモリおよび選択されたバッ
ファメモリの中で参照σれている語のアドレス、選択回
路B111が選択するバッファメモリおよび選択された
バッファメモリの中で1照されている語のアドレス、選
択回路A110の出力、選択回路B111の出力、制御
部113の内部レジスタ情報およびスタック情報、その
実行ステップでの動作、の順に記述しである。
更に第6図(b)では、第6図(a)で示した情報の他
。
。
一致検出器C118が一致検出器A117と並列に動作
していることを示すため、選択回路C114および選択
回路D115に関する情報を追加している。
していることを示すため、選択回路C114および選択
回路D115に関する情報を追加している。
第1図において、節4はプロログにおける問合わせの命
令を表わしている。すなわち5節4の如くボディ部のみ
から成る間合わせ節によって実行が始まる。
令を表わしている。すなわち5節4の如くボディ部のみ
から成る間合わせ節によって実行が始まる。
節4の内部表現は第3図に示す形式で記憶装置100の
アドレスCL4番地から順次格納されている。制御部1
13はアドレスレジスタ101 KCL4番地を格納し
、その内容を読出すことにょって実行を開始する。初期
状態では、各バッファメモリ102,104,106,
108は空であり。
アドレスCL4番地から順次格納されている。制御部1
13はアドレスレジスタ101 KCL4番地を格納し
、その内容を読出すことにょって実行を開始する。初期
状態では、各バッファメモリ102,104,106,
108は空であり。
節4のコードは格納されてぃなり0このため、バッファ
メモリAlO2に節4に対応するコードを格納する。こ
の結果、第5図に示すようにバッファメモ!JA102
の20番地から27番地までに節4に対応する内部表現
8語が格納される。
メモリAlO2に節4に対応するコードを格納する。こ
の結果、第5図に示すようにバッファメモ!JA102
の20番地から27番地までに節4に対応する内部表現
8語が格納される。
制御部113はバッファポインタAlO3に節4のコー
ドの先頭番地2oを格納して節4の「ヘッダ」、「ポイ
ンタ」を順次読出し、次に1番目の述語に対応する語を
読出す。この語は同じ述語名をヘッダ部に持つ節lへの
アドレスを値として持ち、記憶装置100から節IK対
応するコードを読出す。節1のコードは制御部113の
指示によって1バツクアメモリB 104’に格納され
る。
ドの先頭番地2oを格納して節4の「ヘッダ」、「ポイ
ンタ」を順次読出し、次に1番目の述語に対応する語を
読出す。この語は同じ述語名をヘッダ部に持つ節lへの
アドレスを値として持ち、記憶装置100から節IK対
応するコードを読出す。節1のコードは制御部113の
指示によって1バツクアメモリB 104’に格納され
る。
以下、第6図(a)に示すステップlの処理を開始する
。
。
ステップ1では、バッファポインタAlO3には節4の
1番目の述語“PI(*x、*y)”に対応するコード
の格納先を指示するアドレス22が格納され、バッファ
ポインタB105には節1の「ヘッダ」語の格納先番地
を示す120が格納されている。それぞれのアドレスに
対応してバッファメモリAlO2からは節4の述語名“
Pl“をデータ線203に出力し、バッファメモIJB
104からは節】の1ヘツダ」をデータ線204に出力
する。選択回路All0は制御部113の選択指示信号
210でバッファメモ!JA102の出力を選択するよ
うに指示される。この結果、データ線207には節4の
述語名“Pl“が出力される。選択回路B111は制御
部113の選択指示信号211でバッファメモリB10
4の出力を選択するように指示される。この結果、デー
タ線208には節1の「ヘッダ」が出力される。Cのヘ
ッダに含まれる情報はコードの属性に係るものであり、
それ自体が実行制御に影響を及ばずものではなくバッフ
ァポインタB105を歩進して。
1番目の述語“PI(*x、*y)”に対応するコード
の格納先を指示するアドレス22が格納され、バッファ
ポインタB105には節1の「ヘッダ」語の格納先番地
を示す120が格納されている。それぞれのアドレスに
対応してバッファメモリAlO2からは節4の述語名“
Pl“をデータ線203に出力し、バッファメモIJB
104からは節】の1ヘツダ」をデータ線204に出力
する。選択回路All0は制御部113の選択指示信号
210でバッファメモ!JA102の出力を選択するよ
うに指示される。この結果、データ線207には節4の
述語名“Pl“が出力される。選択回路B111は制御
部113の選択指示信号211でバッファメモリB10
4の出力を選択するように指示される。この結果、デー
タ線208には節1の「ヘッダ」が出力される。Cのヘ
ッダに含まれる情報はコードの属性に係るものであり、
それ自体が実行制御に影響を及ばずものではなくバッフ
ァポインタB105を歩進して。
次の実行ステップ状態となる。
第6図のステップ2ではバッファポインタB105は節
1の「ヘッダ」に続く「ポインタ」を指示し、その結果
バッファメモ!JB104はデータ線204に「ポイン
タ」の値を出力する。この「ポインタ」はヘッダ部に同
一の述語名を持つ節へのリンク情報であるが、リンクの
最終であるときにはその値はnulll−となっている
。節4のような間合わせ節では常に「ポインタ」は“n
ull ”″である。バッファポインタB105は引き
続き歩進する。
1の「ヘッダ」に続く「ポインタ」を指示し、その結果
バッファメモ!JB104はデータ線204に「ポイン
タ」の値を出力する。この「ポインタ」はヘッダ部に同
一の述語名を持つ節へのリンク情報であるが、リンクの
最終であるときにはその値はnulll−となっている
。節4のような間合わせ節では常に「ポインタ」は“n
ull ”″である。バッファポインタB105は引き
続き歩進する。
ステップ3ではバッファポインタB105はバッファメ
モリB104の122番地全指示し、バッファメモリB
104の出力として節1の述語名″Pl″をデータ線2
04に出力する。ここで、バッファメモリAlO2の出
力は節4め最初の述語名であシ、バッファメモリB10
4の出力と同様にPI”である。
モリB104の122番地全指示し、バッファメモリB
104の出力として節1の述語名″Pl″をデータ線2
04に出力する。ここで、バッファメモリAlO2の出
力は節4め最初の述語名であシ、バッファメモリB10
4の出力と同様にPI”である。
選択回路All0ではデータ線203のデータを選択す
るので5節4の述語名“Pl”がデータIIi!207
に出力される。選択回路B111ではデータ線204の
データを選択するので、節1の述語名“pl−がデータ
線208に出力される。前記2つの選択回路110,1
11の出力が比較器A112への入力となって、入力さ
れたデータが双方共に述語名“Pl”であることから、
比較器A112では一致を検出する。この結果、一致検
出器A117の出力として一致信号を信号線209を介
して制御部113に出力する。
るので5節4の述語名“Pl”がデータIIi!207
に出力される。選択回路B111ではデータ線204の
データを選択するので、節1の述語名“pl−がデータ
線208に出力される。前記2つの選択回路110,1
11の出力が比較器A112への入力となって、入力さ
れたデータが双方共に述語名“Pl”であることから、
比較器A112では一致を検出する。この結果、一致検
出器A117の出力として一致信号を信号線209を介
して制御部113に出力する。
111111部113では、節4と節1の現在比較対象
になっている語に続く語を次ステツプにおける比較対象
にするため、バッファポインタAlO3゜バッファポイ
ンタB105 ’iそれぞれ歩進する。
になっている語に続く語を次ステツプにおける比較対象
にするため、バッファポインタAlO3゜バッファポイ
ンタB105 ’iそれぞれ歩進する。
ステップ4では、バッファメモリAlO2の出力は節4
の第1の述語名“P1″に続く第1の引数である“*X
″となシ、この“*X“が選択回路AItoの出力とな
る。バックアメモリB1040出力は節1の述語名“P
1″に続く第1の引数の値“A“となシ、この“A“が
選択回路B111の出力となる。各々の出力はデータ線
207,208を介して比較器A I 1.2に送られ
る。変数“*X”と″へ°とは一致条件を満たしておル
、比較器A112は信号線209を介して一致信号を制
御部113に送る。制御部113ではスタックの先頭0
番地に変数“*X”の語を確保して、その値を“八“に
する。この処理によシ、変数“*X“に“A“がバイン
ドされる。バッフアポインクAlO3およびバッファポ
インタB105はそれぞれ歩進される。
の第1の述語名“P1″に続く第1の引数である“*X
″となシ、この“*X“が選択回路AItoの出力とな
る。バックアメモリB1040出力は節1の述語名“P
1″に続く第1の引数の値“A“となシ、この“A“が
選択回路B111の出力となる。各々の出力はデータ線
207,208を介して比較器A I 1.2に送られ
る。変数“*X”と″へ°とは一致条件を満たしておル
、比較器A112は信号線209を介して一致信号を制
御部113に送る。制御部113ではスタックの先頭0
番地に変数“*X”の語を確保して、その値を“八“に
する。この処理によシ、変数“*X“に“A“がバイン
ドされる。バッフアポインクAlO3およびバッファポ
インタB105はそれぞれ歩進される。
ステップ5では節4の変数“*x′″に続く第2の引数
である変数“*y“がバッファメモリAlO2の出力と
なり選択回路A110の出力となる。また、節4の“A
“に続く第2の引数である変数“*2“がバッファメモ
リB104の出力とな勺1選択回路B111の出力とな
る。比較器A112では、変数“*y“と変数“*2″
は一致条件を満足していることを検出し、制御部113
に信号線209を介して一致信号を出力する。制御部1
13では、スタックの1番目の語を変数“*y“の語と
し、2番目の語を変数“*2”の語として格納する。変
数“*y“と変数“*2”が等しい値を持つべきことを
示すために変数“*2″の語には変数“*y“へのポイ
ンタ値を格納して、変数“*2″を参照するときには、
変数“*y“の値を参照することにする。そしてバッフ
ァポインタAIO”s バッファポインタB 105検
出した処理によシ、節4の第1述語と節1のヘッダ部の
述語とは一致することが判明する。これによって制御は
節1のボディ部と、そのボディ部の述語名と同一の述語
名をヘッド部に持つ節との一致検出に進む。
である変数“*y“がバッファメモリAlO2の出力と
なり選択回路A110の出力となる。また、節4の“A
“に続く第2の引数である変数“*2“がバッファメモ
リB104の出力とな勺1選択回路B111の出力とな
る。比較器A112では、変数“*y“と変数“*2″
は一致条件を満足していることを検出し、制御部113
に信号線209を介して一致信号を出力する。制御部1
13では、スタックの1番目の語を変数“*y“の語と
し、2番目の語を変数“*2”の語として格納する。変
数“*y“と変数“*2”が等しい値を持つべきことを
示すために変数“*2″の語には変数“*y“へのポイ
ンタ値を格納して、変数“*2″を参照するときには、
変数“*y“の値を参照することにする。そしてバッフ
ァポインタAIO”s バッファポインタB 105検
出した処理によシ、節4の第1述語と節1のヘッダ部の
述語とは一致することが判明する。これによって制御は
節1のボディ部と、そのボディ部の述語名と同一の述語
名をヘッド部に持つ節との一致検出に進む。
ステップ6では節1のボディ部の述語名はバッファメモ
リB104の出力“P2”″であシ、制御部113は“
P2“をヘッド部に持つ節2へのアドレスを得る。
リB104の出力“P2”″であシ、制御部113は“
P2“をヘッド部に持つ節2へのアドレスを得る。
制御を述語名“P2″の一致検出に移す前に、節4の2
番目の述語名“P1″を指示するアドレスを制御部11
3のNEXT レジスタに格納する。
番目の述語名“P1″を指示するアドレスを制御部11
3のNEXT レジスタに格納する。
これは以降での述語“P2 (B、 C,*z )“の
比較処理で、述語の一致を検出したとき制御を節4の第
2述語“PI (*x、 *x ) ”の一致検出処理
に進めるだめのものである。にでN EXTレジスタに
格納されるアドレスは記憶装置100に格納されている
前記述語名″Pl″に対すするアドレスである。各バッ
ファメモリ102,104゜106.108のアドレス
と記憶装置100のアドレスとの対応づけは制御部11
3のバッファ管理機能を利用して実現する。
比較処理で、述語の一致を検出したとき制御を節4の第
2述語“PI (*x、 *x ) ”の一致検出処理
に進めるだめのものである。にでN EXTレジスタに
格納されるアドレスは記憶装置100に格納されている
前記述語名″Pl″に対すするアドレスである。各バッ
ファメモリ102,104゜106.108のアドレス
と記憶装置100のアドレスとの対応づけは制御部11
3のバッファ管理機能を利用して実現する。
ステップ7では節2のコードの先頭にあるヘッダーを参
照する。節2はバッファメモリに格納されていないので
記憶装置100からバッファメモリ0106に読込む。
照する。節2はバッファメモリに格納されていないので
記憶装置100からバッファメモリ0106に読込む。
バッファメモ!JC106に格納した後、バッファポイ
ンタC107の値は節2のヘッダーを指示する“150
”番地となる。
ンタC107の値は節2のヘッダーを指示する“150
”番地となる。
続くステップ8以降を第6図(b)に示す。
ステップ8では節2のポインタを参照する。このポイン
タの値は“null″ではなく2節2のヘッダと同一の
述語名を持つ節3のヘッドを指示している。このポイン
タで指示された節3はバッファメモリには格納されてい
ないので、バッファメモリD108に格納する。このと
きのバッ77メモリの状態を第5図に示す。
タの値は“null″ではなく2節2のヘッダと同一の
述語名を持つ節3のヘッドを指示している。このポイン
タで指示された節3はバッファメモリには格納されてい
ないので、バッファメモリD108に格納する。このと
きのバッ77メモリの状態を第5図に示す。
ステップ8までの処理においては一致検出器A117の
みを用いて述語の一致を検出した。以後の処理では、一
致検出器A117と一致検出器C118と金層いて一致
検査を行う。ステップ8において、バッファポインタD
109には節3のヘッダを指示するアドレス“200°
を格納する。
みを用いて述語の一致を検出した。以後の処理では、一
致検出器A117と一致検出器C118と金層いて一致
検査を行う。ステップ8において、バッファポインタD
109には節3のヘッダを指示するアドレス“200°
を格納する。
ステップ9では選択回路C114の出力として選択した
節3のヘッダを読出し、バッファポインタD109を歩
進する。ステップ10では選択回路C114の出力とし
て選択した節3のポインタを読出し、バッフアポインク
D109 ’e歩進する。
節3のヘッダを読出し、バッファポインタD109を歩
進する。ステップ10では選択回路C114の出力とし
て選択した節3のポインタを読出し、バッフアポインク
D109 ’e歩進する。
ステップ11以降では、一致検出器A117と一致検出
器0118とを並列に動作させ、節1の述語“P2 (
B、C,*z ) ”と節2の述語“P2(B、D、E
)”との一致検査および節10述語“P2(B、C,*
z)”と節3の述語“P2(B、C,A)“との一致検
査を同時に行う。ステップ11では4箇の選択回路11
0,111゜114.115の出力はすべて述語名“P
2“であシ、一致検出器A117と一致検出器C118
は一致信号を制御回路113に送る。続いて両一致検出
器A、C,117,118で第1引数の一致検査処理の
ために、バックアポインpB、c、I)。
器0118とを並列に動作させ、節1の述語“P2 (
B、C,*z ) ”と節2の述語“P2(B、D、E
)”との一致検査および節10述語“P2(B、C,*
z)”と節3の述語“P2(B、C,A)“との一致検
査を同時に行う。ステップ11では4箇の選択回路11
0,111゜114.115の出力はすべて述語名“P
2“であシ、一致検出器A117と一致検出器C118
は一致信号を制御回路113に送る。続いて両一致検出
器A、C,117,118で第1引数の一致検査処理の
ために、バックアポインpB、c、I)。
105.107,109 を歩進する。
ステップ12では4箇の選択回路110.Ill。
114.115が述語名“P2“を持つ述語の第1引数
としてすべて“B″を出力する。この結果一致検出器A
117と一致検出器0118は一致信号を制御部113
に送る。バッファポインタB。
としてすべて“B″を出力する。この結果一致検出器A
117と一致検出器0118は一致信号を制御部113
に送る。バッファポインタB。
C,D、105,107,109 を歩進する。
ステップ13では、一致検出器A117では不一致を検
出する。つまシ、選択回路All0は節2の述語名’P
2″の第2引数“D″を出力し、選択回路B111では
節1の述語名“P2“の第2引数“C″を出力する。こ
の結果比較器A 112は不一致信号を制御部113に
出力し、制?i11部113では、節1の述語“P2
(B、C,*z )″と節2の述語“P2’(B、D、
E)“とけ一致しないことを検出する。他方、一致検出
器C118でけ一致を検出する。つ[L選択回路C11
4は節3の述語名“P2“の第2引数″C“を出力し、
選択回路D115は節1の述語名“P2″の第2引数“
C′を出力するので、比較器C116で一致を検出する
。バッファボイ/りB105およびバッファポインタD
109を歩進し、第3引数の一致検査に備える。
出する。つまシ、選択回路All0は節2の述語名’P
2″の第2引数“D″を出力し、選択回路B111では
節1の述語名“P2“の第2引数“C″を出力する。こ
の結果比較器A 112は不一致信号を制御部113に
出力し、制?i11部113では、節1の述語“P2
(B、C,*z )″と節2の述語“P2’(B、D、
E)“とけ一致しないことを検出する。他方、一致検出
器C118でけ一致を検出する。つ[L選択回路C11
4は節3の述語名“P2“の第2引数″C“を出力し、
選択回路D115は節1の述語名“P2″の第2引数“
C′を出力するので、比較器C116で一致を検出する
。バッファボイ/りB105およびバッファポインタD
109を歩進し、第3引数の一致検査に備える。
ステップ14では、節1と節3の述語“P2(・・−)
″の一致を検査する。選択回路C114は節3の述語名
“P2”の第3引数“八〇を出力し、選択回路D115
は節4の述語名″P2°の第3引数“*2″を出力する
。これは、定数と変数の組合わせとして、比較器C11
6では一致を検出し、信号線214を介して制御部11
3に一致信号を出力する。この結果、制御部113内の
スタックでは、変数“*Z″にA“を結合する処理を施
す。この処理では、スタック中の変数“*z′″の領域
からポイントされている変数“*y″の領域に“A゛が
格納される。
″の一致を検査する。選択回路C114は節3の述語名
“P2”の第3引数“八〇を出力し、選択回路D115
は節4の述語名″P2°の第3引数“*2″を出力する
。これは、定数と変数の組合わせとして、比較器C11
6では一致を検出し、信号線214を介して制御部11
3に一致信号を出力する。この結果、制御部113内の
スタックでは、変数“*Z″にA“を結合する処理を施
す。この処理では、スタック中の変数“*z′″の領域
からポイントされている変数“*y″の領域に“A゛が
格納される。
以上の処理によ1節4の第1述語“Pl(*x、*y)
“に関する処理が終了して、次に節4の第2述語である
“PI(*X、*X)”の処理に進む。第2述語は第1
述語同様述語名が“P1″であるので節lとの一致を調
べる。節lは既にバッファメモ”JB104に格納され
ているので記憶装置100からの読出しは行う必要はな
い。以降の処理では、節1の述語″PI(A、*z)”
’との一致が検出される。更に、節lの述語” P 2
(B、C,*z )“と節2および節3との一致を前
記並列処理で調べる。節2との比較は不一致で節3との
比較は一致することで5節4の第2述語の処理が終了す
る。節4には続く述語がないので、節4の処理全体が終
了する。
“に関する処理が終了して、次に節4の第2述語である
“PI(*X、*X)”の処理に進む。第2述語は第1
述語同様述語名が“P1″であるので節lとの一致を調
べる。節lは既にバッファメモ”JB104に格納され
ているので記憶装置100からの読出しは行う必要はな
い。以降の処理では、節1の述語″PI(A、*z)”
’との一致が検出される。更に、節lの述語” P 2
(B、C,*z )“と節2および節3との一致を前
記並列処理で調べる。節2との比較は不一致で節3との
比較は一致することで5節4の第2述語の処理が終了す
る。節4には続く述語がないので、節4の処理全体が終
了する。
本発明における前記の一実施例では5節を表現する内部
表現形式として、先頭にヘッダ情報9次にポインタ情報
が配置される例で処理を説明した。
表現形式として、先頭にヘッダ情報9次にポインタ情報
が配置される例で処理を説明した。
ここで、並列動作を効率よく行うために、ポインタ情報
をできるだけ早い機会に得て、並列処理の可否を早く検
出するためには、ポインタ情報を先頭にする方が効果的
な場合がある。本発明はボインタ情報を節の内部表現の
先頭に配置する表現形式の場合にも適用される。
をできるだけ早い機会に得て、並列処理の可否を早く検
出するためには、ポインタ情報を先頭にする方が効果的
な場合がある。本発明はボインタ情報を節の内部表現の
先頭に配置する表現形式の場合にも適用される。
以上の説明で明らかなように、本発明によシ。
プロログに代表される述語論理型言語の処理を高速に実
行することができる。
行することができる。
第1図はプロログのプログラム例を示す図、第2図はこ
の例における内部形式を示す図、第3図は第1図のプロ
グラム例を内部形式に変換したときの記憶装置イメージ
を示す図、第4図は本発明の装置の一実施例を示すブロ
ック図、第5図(a)(b)(C)(d)は第1図のプ
ログラム例を処理するために記憶装置からバッファメモ
リに格納された内部表現のイメージを示す図、第6図(
a)(b)は第1図のプログラム例を第4図に示した実
施例によって実行するときの実行ステップを示す図であ
る。 100・・・・・・記憶装置、101・・・・・・アド
レスレジスJ、102・・・・・・バッファメモリAb
103・・・・・・バッファポインタ人、104・・・
・−・バッファメモリB、105・・・・・・バッファ
ポインJB、106・・・・・・バッファメモ!JC,
107・・・・・・バッファポインタC,108・・・
・−・バッファメモ!JD、109・・・・・・バッフ
ァポインタD、110・・・・・・選択回路A、111
・・・・・・選択回路Btl12・・・・・・比較器A
bl13・・・・・・制御部、114・・・・・・選択
回路C,115・・・・・・選択回路り、116・・・
・・・比較器C0神 I P/ を乙 ;*z)←P2
(B、c、;rz)−沖 2 β2 (B、v、b
)。 吟、づ rz (B、 c、y+ハ 管“p4 =tn;*χ、末l)、f”Nネχ1オχ九
茅1 広 ¥−z’s (0−) (a) 卒S珂
の例における内部形式を示す図、第3図は第1図のプロ
グラム例を内部形式に変換したときの記憶装置イメージ
を示す図、第4図は本発明の装置の一実施例を示すブロ
ック図、第5図(a)(b)(C)(d)は第1図のプ
ログラム例を処理するために記憶装置からバッファメモ
リに格納された内部表現のイメージを示す図、第6図(
a)(b)は第1図のプログラム例を第4図に示した実
施例によって実行するときの実行ステップを示す図であ
る。 100・・・・・・記憶装置、101・・・・・・アド
レスレジスJ、102・・・・・・バッファメモリAb
103・・・・・・バッファポインタ人、104・・・
・−・バッファメモリB、105・・・・・・バッファ
ポインJB、106・・・・・・バッファメモ!JC,
107・・・・・・バッファポインタC,108・・・
・−・バッファメモ!JD、109・・・・・・バッフ
ァポインタD、110・・・・・・選択回路A、111
・・・・・・選択回路Btl12・・・・・・比較器A
bl13・・・・・・制御部、114・・・・・・選択
回路C,115・・・・・・選択回路り、116・・・
・・・比較器C0神 I P/ を乙 ;*z)←P2
(B、c、;rz)−沖 2 β2 (B、v、b
)。 吟、づ rz (B、 c、y+ハ 管“p4 =tn;*χ、末l)、f”Nネχ1オχ九
茅1 広 ¥−z’s (0−) (a) 卒S珂
Claims (1)
- 述語名とその引数よシ成る述語の連らなりから成る節の
集合として書き下す述語論理型言語を処理する装置にお
いて、前記節の内部表現を格納する記憶装置と、前記記
憶装置から読み出された節の内部表現を一時的に格納す
る複数のバッファメモリと、前記複数のバッファメモリ
から読み出された2つの前記述語の間の一致を調べる複
数の一致検出器と、前記述語間の関係を次々にたどる道
筋を保持するためのスタック機構および複数個の内部レ
ジスタおよびバッファメモリの管理機能を含む制御装置
とを備え、前記制御装置の制御の下に前記複数の一致検
出器で述語間の一致検出を複数筒同時に検出できるよう
にしたことを特徴とする述語論理型言語処理装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP16344783A JPS6074040A (ja) | 1983-09-06 | 1983-09-06 | 述語論理型言語処理装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP16344783A JPS6074040A (ja) | 1983-09-06 | 1983-09-06 | 述語論理型言語処理装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPS6074040A true JPS6074040A (ja) | 1985-04-26 |
Family
ID=15774051
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP16344783A Pending JPS6074040A (ja) | 1983-09-06 | 1983-09-06 | 述語論理型言語処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS6074040A (ja) |
-
1983
- 1983-09-06 JP JP16344783A patent/JPS6074040A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5116794B2 (ja) | マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法 | |
| JPH04505818A (ja) | 並列多重糸データ処理システム | |
| CN110705302A (zh) | 命名实体的识别方法、电子设备及计算机存储介质 | |
| Bailey et al. | A formal model and specification language for procedure calling conventions | |
| JPS5941064A (ja) | プロログ処理装置 | |
| He et al. | Reasoning about fences and relaxed atomics | |
| JP2574985B2 (ja) | ディジタルデータ処理システムとエラー処理方法 | |
| JPS6074040A (ja) | 述語論理型言語処理装置 | |
| US4212058A (en) | Computer store mechanism | |
| JPS607539A (ja) | 述語論理型言語処理装置 | |
| JPS60540A (ja) | 述語論理型言語処理装置 | |
| JP3461185B2 (ja) | ロードモジュールへのソースコード行番号登録方法および装置 | |
| JP3180336B2 (ja) | 多層バッファを用いるデータアクセス方法 | |
| US11334627B2 (en) | Data processing | |
| JPS5831471A (ja) | ベクトル命令処理装置におけるコンフリクト・チエツク回路 | |
| JPH01187636A (ja) | ユニフィケーション処理装置 | |
| JPS6155736A (ja) | プロロ−グマシン | |
| JPS62113240A (ja) | プロログ処理装置 | |
| RU2631158C1 (ru) | Блок унификации с параллельным сопоставлением термов | |
| JPH0442330A (ja) | 分岐ヒストリテーブルを用いたデバッグ方式 | |
| JPS602692B2 (ja) | デ−タ処理システム | |
| JP2798492B2 (ja) | リストベクトル処理装置 | |
| JP2702356B2 (ja) | デバッグ情報アクセス方式 | |
| Botha et al. | StateComparator: Detecting Unbounded Variables Using JPF | |
| JP3098501B2 (ja) | ソースステップ実行方法およびその装置 |