JPH0544687B2 - - Google Patents

Info

Publication number
JPH0544687B2
JPH0544687B2 JP62075359A JP7535987A JPH0544687B2 JP H0544687 B2 JPH0544687 B2 JP H0544687B2 JP 62075359 A JP62075359 A JP 62075359A JP 7535987 A JP7535987 A JP 7535987A JP H0544687 B2 JPH0544687 B2 JP H0544687B2
Authority
JP
Japan
Prior art keywords
argument
register
information
registers
predicate
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
JP62075359A
Other languages
English (en)
Other versions
JPS63240636A (ja
Inventor
Minoru Yokota
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.)
NEC Corp
Original Assignee
Nippon Electric Co 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 Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP62075359A priority Critical patent/JPS63240636A/ja
Publication of JPS63240636A publication Critical patent/JPS63240636A/ja
Publication of JPH0544687B2 publication Critical patent/JPH0544687B2/ja
Granted legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、論理型プログラミング言語を実行す
る計算機システムに係る復元可能なレジスタフア
イル装置に関し、特に論理型プログラミング言語
を実行する際の述語呼び出し及びバツクトラツク
処理の高速化できる復元可能なレジスタフアイル
装置に関する。
〔従来の技術〕
論理型プログラミング言語の実行における述語
の呼び出しは、従来型プログラミング言語におけ
る関数・手続きの呼び出しと同様の処理が必要と
なる。即ち、呼び出すべき述語(関数)が必要と
する引数情報を渡すこと、戻りアドレスの保有、
目的の述語コードへの分岐である。引数の引き渡
しにはスタツクを用いるのが一般的である。引数
情報は呼び出された関数の実行が完了した時点で
不要となり、消去しても良いため関数の呼び出し
時に主記憶装置にとられたスタツクの先頭に引数
情報を格納(PUSH)し、関数の実行完了時(関
数からのリターン時)に取出(POP)せば良い。
従来、この引数情報をハードウエアレジスタを
介して渡すことにより高速化する手法が採用され
てきた。レジスタを用いることにより引数情報の
書き込み及び呼び出された関数側での引数情報の
読み出しがともに高速化できる。また、呼び出さ
れた関数が非常に単純でありすぐに実行完了とな
る場合には、引数情報を主記憶装置に置いてもす
ぐに消去される。従つて、一時的にレジスタ上に
置くことにより不要なメモリアクセスを避けるこ
とが可能となりこの点でも処理の高速化が図れ
る。
このような理由から、まず関数に渡すべき引数
情報をレジスタ(引数レジスタと呼ぶ)に一担格
納する。呼び出された関数は引数レジスタ上の引
数情報をアクセスし、必要ならば主記憶上のスタ
ツク先頭に格納するという手法がこれまで実現さ
れてきた。
〔発明が解決しようとする問題点〕
従来の引数レジスタを用いる高速化手法は、論
理型プログラミング言語における述語呼び出しの
高速化にも有効であるが、以下のような問題が生
ずる。
引数レジスタを用いる方式は、主記憶装置への
アクセスをレジスタアクセスに変えることにより
高速化を図るものである。従つて、引数レジスタ
を極力長い間使用することが望ましい。例えば、
呼び出された述語が別の述語をただ1つ呼び出す
ような場合には、現在使用中の引数情報は不要と
なる訳であるので、引数レジスタを破壊して使用
すれば主記憶装置への格納を避けることが可能と
なる。
例えば“p(X,Y,Z)−q(X,Z)”という
節の実行を考えると次のようになる。述語p(X,
Y,Z)を呼び出す場合には、引数レジスタの例
えばA0,A1,A2に引数情報を設定したとす
ると、節の中の変数XはA0に、YはA1に、Z
はA2にそれぞれ対応することとなる。次に、節
の右辺の述語q(X,Z)の呼び出し処理では、
述語qのためにA0,A1に引数情報を設定する
必要があるが、この時、A0には既に変数Xの値
が格納されているので、A1に変数Zの値をセツ
トすれば良い。変数Zの値は今A2に格納されて
いるので、引数レジスタA2の内容をA1に移す
だけで述語qの引数情報が設定できたことにな
る。ここでA1が破壊使用されることになる。
コンパイラは引数レジスタの有効利用を図るた
め、このような破壊使用を多用することになる。
ところが論理型プログラミング言語ではパツクト
ラツク機能があり、与えられた引数情報とのユニ
フイケーシヨンがうまくいかなかつた場合には、
他の節を試みることが必要となる。ところがバツ
クトラツクにより再実行する場合には、初めに渡
された引数情報を復元することが必要となり、上
記のような引数レジスタの破壊作用ができなくな
る。従来、単純なハードウエアレジスタを引数レ
ジスタとして用いているため、このようなバツク
トラツクの可能性がある場合には、あらかじめ引
数レジスタの内容を主記憶装置上にとられたスタ
ツク領域に保存しておく必要があり、レジスタを
用いる効果が減少してしまうという欠点があつ
た。
本発明は、引数レジスタを用いることによる高
速化を活かすと共に、バツクトラツク発生時に引
数レジスタの内容を復元可能とすることにより、
バツクトラツク処理が発生してもハードウエアレ
ジスタによる高速化を図ることを目的とする。
〔問題点を解決するための手段〕
本発明の復元可能なレジスタフアイル装置は、
述語の呼び出しに必要な引数情報を格納するため
の第1の複数の引数レジスタと、述語の実行中に
生ずる引数レジスタへの書き込み情報を格納する
するための第2の複数レジスタと、引数レジスタ
への書き込みが行われたことを示すフラグ情報を
格納するための記憶装置と、該第1の引数レジス
タへの書き込み手段と、該第2の引数レジスタへ
の書き込み手段と、該第2の引数レジスタへのデ
ータ書き込み時に該記憶装置の対応する位置に書
き込みが行われた旨のフラグをセツトする手段
と、該記憶装置に格納された書き込みが行われた
か否かを示すフラグ情報に基づいて該第1の引数
レジスタと該第2の引数レジスタの出力のうちい
ずれかを選択する手段と、該記憶装置の内容を初
期化する手段とを具備し、述語の呼び出し時に必
要な引数情報を該第1の引数レジスタに格納し、
述語の実行中に生ずる引数レジスタへの書き込み
情報を該第2の引数レジスタに格納すると共に該
記憶装置に格納された書き込みが行われたか否か
を示すフラグ情報に従つて引数レジスタ1,2の
出力を選択することにより引数レジスタに格納さ
れた最新の情報を読み出すことを可能にすると共
に、該記憶装置の内容をリセツトすることに従つ
て最初に設定された該第1の引数レジスタの内容
を有効とすることにより最初に渡された引数情報
を復元できることを特徴とするレジスタフアイル
装置。
〔作用〕
該レジスタフアイル装置によつて、述語呼び出
しが行われると該第1の引数レジスタに必要な引
数が格納される。その後、述語の実行中に発生す
る引数レジスタへの値の代入は、すべて該第2の
引数レジスタへ格納される。この書き込みが発生
する場合、該記憶装置の対応する位置に書き込み
のあつた旨のフラグがONとなる。引数レジスタ
の読み出しは、該第1の引数レジスタと該第2の
引数レジスタとの出力を、該記憶装置に格納され
たフラグにより該2−1セレクタを制御すること
により選択する。即ち、該記憶装置のフラグが
OFFの場合は、該第1の引数レジスタの出力を
選び、フラグがONの場合、即ち既に書き込みが
発生した場合には該引数レジスタ2の出力を選択
する。これにより、常に最新の引数情報を読み出
すことが可能となる。
更に、バツクトラツクが発生した場合は該記憶
装置をクリアし、全フラグをOFFにすることに
より、すべての引数レジスタの読み出しを該第1
の引数レジスタとすることができ、最初に渡され
た引数情報を読み出すことができる。即ち、最初
の引数情報を復元できたことになる。
〔実施例〕
次に、本発明について図面を参照して説明す
る。
第1図は本発明の一実施例である復元可能なレ
ジスタフアイルのハードウエアブロツク図であ
る。
第1図において、1は引数情報を格納するため
の40bit×32個のレジスタフアイル、2は引数レ
ジスタが破壊使用されるに際して、新しく内容を
保持するための40bit×32個のレジスタフアイル、
3は引数レジスタに新たな書き込みが行われたこ
とを示す1bit×32個のフラグメモリ、4は2つの
レジスタフアイル1,2の出力を選択するための
2−1セレクタ、5はレジスタフアイル1,2へ
の入力データパス、6はレジスタフアイル1,2
及びフラグメモリ3へのアドレスパス、7はレジ
スタフアイル1からの出力データパス、8はレジ
スタフアイル2からの出力データパス、9はフラ
グメモリ3からの出力データパス、10はフラグ
メモリ3のクリア信号用パスを示す。
レジスタフアイル1,2には、32個分の引数情
報が格納できる。さらに、これには入力データパ
ス5と入力アドレスパス6とを介して、フラグ付
きの40bitのデータを書き込むことができ、第1
〜2の書き込み手段を形成している。
フラグメモリ3では、入力アドレスパス6と入
力データ“1”とを介して得られ、32個の引数情
報レジスタに対応して、それが更新されたこと示
す1bitの情報が保持され、フラグをセツトする手
段が形成される。また、フラグメモリ3では、格
納されているメモリをクリヤして、初期化する手
段として、クリヤのためのリセツト信号がクリヤ
信号用パス10を介して入力されている。
2−1セレクタ4は、出力データパス7,8を
介して得られるレジスタフアイル1,2の40bit
の出力を選択するもので、その制御は、出力デー
タパス9を介して得られる1bitのフラグメモリ3
の出力(出力データパス9)によつて行われる。
つぎに本実施例の動作を詳しく説明する。
第2図a〜cは本発明の動作の説明図で、第1
図のハードウエアブロツク図を簡単化して示して
ある。
第2図aは述語の呼び出しのために、3つの引
数情報がレジスタフアイル1に書き込まれた状態
を示している。引数レジスタを利用するマイクロ
プログラムからは0〜31のレジスタ番号でこのレ
ジスタフアイル1,2がアクセスされるので、こ
れをA0〜A31と仮に呼ぶこととする。第2図
aの状態では3つの引数レジスタA0,A1,A
2におのおの1,2,3という引数情報が格納さ
れていると見る。レジスタフアイル2及びフラグ
メモリ3は初期化されている状態にある。
第2図bは、述語の処理が進み、引数レジスタ
A2,A3に書き込みが生じた状態を示してい
る。引数レジスタへの書き込みは、レジスタフア
イル2に対して行われ、フラグメモリ3には対応
する位置に“1”がセツトされている。この状態
で、引数レジスタの読み出しが行われると、フラ
グメモリ3の内容が“0”の引数レジスタはレジ
スタフアイル1から、フラグメモリ3の内容が1
の引数レジスタはレジスタフアイル2からデータ
がそれぞれ読み出されるので、常に引数レジスタ
A0〜A31の最新の内容を読み出すことが可能
である。従つて、引数レジスタA2は3から4へ
書き直されたことになる。レジスタフアイル1又
は2への書き込みの区別は、本実施例ではマイク
ロ命令により区別しており、書き込み命令ならレ
ジスタフアイル1へ、リセツト可能な書き込み命
令ならレジスタフアイル2への書き込みとフラグ
メモリ3への書き込みを行う。
第2図cは引数レジスタのリセツトを行つた状
態を示している。レジスタフアイル1,2の内容
は変わらず、フラグメモリ3のクリアのみが、ク
リア信号用パス10の入力により行われている。
フラグメモリ3をリセツトすることにより、引数
レジスタA0,A1,A2の読み出しはすべてレ
ジスタフアイル1から行われることになり、述語
が呼び出された時に渡された引数情報1,2,3
を読み出すことができる。これで、引数レジスタ
は復元された。
本実施例によつて引数レジスタへの書き込み、
読み出しが通常のレジスタアクセスとして実現で
き、かつフラグメモリ3のクリアにより、最初に
渡された引数情報が復元可能であることが明らか
である。
なお、本発明は上記実施例に限らず多くの変形
が可能であり、例えばレジスタフアイル1,2及
びフラグメモリ3のエントリ数(即ち引数レジス
タの個数)は任意で良い。またフラグメモリ3
は、レジスタを用いて実現してもよい。フラグメ
モリ3は書き込みの行われた(すなわち使用中
の)引数レジスタ位置を示しているので、この情
報によつて、使用中の引数レジスタを保有する処
理を制御することが可能である。その場合にはフ
ラグメモリ3は、レジスタもしくはシフトレジス
タとして構成するとよい。
〔発明の効果〕
以上のごとく本発明によれば、述語の呼び出し
に必要な引数情報を主記憶装置に設けられたスタ
ツクにではなく、高速なハードウエアレジスタに
置き、引数情報へのアクセスの高速化を図ると共
に、述語の実行に失敗し他の候補節を実行すると
いうバツクトラツク時に、最初に渡された引数情
報を復元することが可能になつた。従来はバツク
トラツクに備えて引数情報を主記憶上に保有する
しかなかつたが、この主記憶装置への保存を不要
としたことが本発明の大きな特色であり、論理型
プログラミング言語を実行する計算機システム
(例えばprologマシン)の高速化ができるという
効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例である復元可能なレ
ジスタフアイルのハードウエアブロツク図、第2
図は本発明の動作の説明図。 1……レジスタフアイル、2……レジスタフア
イル、3……フラグメモリ、4……2−1セレク
タ。

Claims (1)

  1. 【特許請求の範囲】 1 述語の呼び出しに必要な引数情報を格納する
    ための第1の複数の引数レジスタと、 述語の実行中に生ずる引数レジスタへの書き込
    み情報を格納するための第2の複数の引数レジス
    タと、 引数レジスタへの書き込みが行われたことを示
    すフラグ情報を格納するための記憶装置と、 該第1の引数レジスタへの書き込み手段と、 該第2の引数レジスタへの書き込み手段と、 該第2の引数レジスタへのデータ書き込み時に
    該記憶装置の対応する位置に書き込みが行われた
    旨のフラグをセツトする手段と、 該記憶装置に格納された書き込みが行われたか
    否かを示すフラグ情報に基づいて該第1の引数レ
    ジスタと該第2の引数レジスタとの出力のうちい
    ずれかを選択する手段と、 該記憶装置の内容を初期化する手段とを具備
    し、述語の呼び出し時に必要な引数情報を該第1
    の引数レジスタに格納し、述語の実行中に生ずる
    引数レジスタへの書き込み情報を該第2の引数レ
    ジスタに格納すると共に該記憶装置に格納された
    書き込みが行われたか否かを示すフラグ情報に従
    つて引数レジスタ1,2の出力を選択することに
    より引数レジスタに格納された最新の情報を読み
    出すことを可能にすると共に、該記憶装置の内容
    をリセツトすることに従つて最初に設定された該
    第1の引数レジスタの内容を有効とすることによ
    り、最初に渡された引数情報を復元できることを
    特徴とするレジスタフアイル装置。
JP62075359A 1987-03-27 1987-03-27 復元可能なレジスタフアイル装置 Granted JPS63240636A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP62075359A JPS63240636A (ja) 1987-03-27 1987-03-27 復元可能なレジスタフアイル装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62075359A JPS63240636A (ja) 1987-03-27 1987-03-27 復元可能なレジスタフアイル装置

Publications (2)

Publication Number Publication Date
JPS63240636A JPS63240636A (ja) 1988-10-06
JPH0544687B2 true JPH0544687B2 (ja) 1993-07-07

Family

ID=13573950

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62075359A Granted JPS63240636A (ja) 1987-03-27 1987-03-27 復元可能なレジスタフアイル装置

Country Status (1)

Country Link
JP (1) JPS63240636A (ja)

Also Published As

Publication number Publication date
JPS63240636A (ja) 1988-10-06

Similar Documents

Publication Publication Date Title
KR950006616B1 (ko) 변환된 프로그램 코드에서 소스 명령 분자를 보전하기 위한 시스템 및 방법
US4187539A (en) Pipelined data processing system with centralized microprogram control
JPS59117666A (ja) ベクトル処理装置
JPH0248931B2 (ja)
JPH0414385B2 (ja)
US5179691A (en) N-byte stack-oriented CPU using a byte-selecting control for enhancing a dual-operation with an M-byte instruction word user program where M<N<2M
JPS623461B2 (ja)
JPS6212529B2 (ja)
JPH0544687B2 (ja)
JP2000284964A (ja) Vliwプロセッサにおける効率的なサブ命令エミュレーション
JPS6058487B2 (ja) デ−タ処理装置
JPS62156742A (ja) デ−タ書込み制御方式
US3290655A (en) Program control for data processing machine
JPS6032220B2 (ja) 情報処理装置
JPH02197924A (ja) 中央演算処理装置
JPS60134937A (ja) アドレス拡張装置
JPH01207824A (ja) モジュール結合制御方式
JP2763450B2 (ja) パイプライン処理データ処理装置
JPS61148536A (ja) 情報処理システム
JP2000029508A (ja) プログラマブルコントローラ
JPH04181331A (ja) 命令リトライ方式
JPS60178539A (ja) 情報処理装置におけるバイパス制御方式
JP3428253B2 (ja) シーケンサ
JPH05307483A (ja) レジスタ書き込み制御方法および回路
JPH02272654A (ja) キャッシュメモリ装置