JPS63240636A - 復元可能なレジスタフアイル装置 - Google Patents

復元可能なレジスタフアイル装置

Info

Publication number
JPS63240636A
JPS63240636A JP62075359A JP7535987A JPS63240636A JP S63240636 A JPS63240636 A JP S63240636A JP 62075359 A JP62075359 A JP 62075359A JP 7535987 A JP7535987 A JP 7535987A JP S63240636 A JPS63240636 A JP S63240636A
Authority
JP
Japan
Prior art keywords
argument
register
information
predicate
registers
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.)
Granted
Application number
JP62075359A
Other languages
English (en)
Other versions
JPH0544687B2 (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
NEC 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 NEC Corp filed Critical NEC Corp
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)

Abstract

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

Description

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

Claims (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 true JPS63240636A (ja) 1988-10-06
JPH0544687B2 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
JPH0544687B2 (ja) 1993-07-07

Similar Documents

Publication Publication Date Title
US4187539A (en) Pipelined data processing system with centralized microprogram control
CA2082408C (en) System and method for preserving source instruction atomicity in translated program code
US3949379A (en) Pipeline data processing apparatus with high speed slave store
US4587632A (en) Lookahead stack oriented computer
JPS6298440A (ja) プログラマブルアクセスメモリ
WO2002048887A2 (en) Single-step processing
US5097407A (en) Artificial intelligence processor
JPH0248931B2 (ja)
KR102658600B1 (ko) 디바이스를 디버깅할 때 메타데이터에 액세스하기 위한 장치 및 방법
EP0062658A4 (en) STACK STORAGE FOR A DATA PROCESSING SYSTEM.
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
US3618042A (en) Error detection and instruction reexecution device in a data-processing apparatus
JPS63240636A (ja) 復元可能なレジスタフアイル装置
US20080313428A1 (en) Microprocessor
US3290655A (en) Program control for data processing machine
US5815729A (en) Method and apparatus for on the fly descriptor validation
JPS6032220B2 (ja) 情報処理装置
JPH0222413B2 (ja)
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
JPS60134957A (ja) 並列型演算処理装置
JP2883488B2 (ja) 命令処理装置
JPS61148536A (ja) 情報処理システム
JPH01207824A (ja) モジュール結合制御方式
Nordmann Jr ILLIAC III COMPUTER SYSTEM MANUAL: TAXICRINIC PROCESSOR. VOLUME 2. Report No. 475.
JPH0385636A (ja) 命令先行制御装置