JPS585852A - 関数型情報処理装置 - Google Patents
関数型情報処理装置Info
- Publication number
- JPS585852A JPS585852A JP56104017A JP10401781A JPS585852A JP S585852 A JPS585852 A JP S585852A JP 56104017 A JP56104017 A JP 56104017A JP 10401781 A JP10401781 A JP 10401781A JP S585852 A JPS585852 A JP S585852A
- Authority
- JP
- Japan
- Prior art keywords
- variable
- function
- value
- list
- name
- 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
本発明は、数値ではなく記号を処理するりスズ(Lls
pすなわちLlmt Procomsor )のような
関数層、言絣用の関数層情報処理装置に係9、とくに、
関数が実行される環境(変数の値として何をっがうかと
いうこと)をコンピュータ内部の記憶回路にスタ、り構
造的に格納するにあたって、そのスタックに格納された
変数の検索時間を短縮するために上記スタックメモリの
外部に連想バッファを設けることを特徴とする関数型情
報処理装置に関する。
pすなわちLlmt Procomsor )のような
関数層、言絣用の関数層情報処理装置に係9、とくに、
関数が実行される環境(変数の値として何をっがうかと
いうこと)をコンピュータ内部の記憶回路にスタ、り構
造的に格納するにあたって、そのスタックに格納された
変数の検索時間を短縮するために上記スタックメモリの
外部に連想バッファを設けることを特徴とする関数型情
報処理装置に関する。
リスfld第1図に示すような2道木リストすなわち記
号のつながりを閉路を含まない動点と枝の集合である木
構造(シ1図(&))で、あられし九ものを扱うもので
ある。すなわち、第11CI(a)のような木構蓬であ
られされる記号のつながりを第1図(it)のように各
ノードからでる枝が2本づつである2進木表現に直した
形で第1図(a) K示されるような主記憶装置に格納
する。すなわち、各リストセルは主記憶装置の1論また
は2語からなりその各セルは左、右2つの部分からなる
。各セルの左の部分懺昔通はある記号、九とえばムとい
う文字の記号のピットパターンが格納され、右の部分は
その記号とつながるべき、次の記号を格納しているセル
の帯地を格納するこ、とにようて2つセルが連結してい
ることを表現する。従って、藤1図(@)のリストセル
のつながりは、wk1図(b)の2進木リストを記憶回
路上で実現しているものである。リスプは、このような
リスト構造をリスプ言語を実行することによって、デロ
セ、すを使って動的に変換し、目的のリスト構造を得る
装置である。
号のつながりを閉路を含まない動点と枝の集合である木
構造(シ1図(&))で、あられし九ものを扱うもので
ある。すなわち、第11CI(a)のような木構蓬であ
られされる記号のつながりを第1図(it)のように各
ノードからでる枝が2本づつである2進木表現に直した
形で第1図(a) K示されるような主記憶装置に格納
する。すなわち、各リストセルは主記憶装置の1論また
は2語からなりその各セルは左、右2つの部分からなる
。各セルの左の部分懺昔通はある記号、九とえばムとい
う文字の記号のピットパターンが格納され、右の部分は
その記号とつながるべき、次の記号を格納しているセル
の帯地を格納するこ、とにようて2つセルが連結してい
ることを表現する。従って、藤1図(@)のリストセル
のつながりは、wk1図(b)の2進木リストを記憶回
路上で実現しているものである。リスプは、このような
リスト構造をリスプ言語を実行することによって、デロ
セ、すを使って動的に変換し、目的のリスト構造を得る
装置である。
リスプにおいてfaダラムするということは、2道木リ
ストを変換するために必要な以下の5つの基本関数を組
み合せて形成される関数を定義し、その値を求めること
である。
ストを変換するために必要な以下の5つの基本関数を組
み合せて形成される関数を定義し、その値を求めること
である。
5つの基本関数とは、
イ) car(Xlカール
2進水リス)Xの左の枝の先にある2進木リストを値と
する。
する。
口) edr[X)クダー
2道木リス)X゛の右の枝の先にある2進木リストを値
とする。
とする。
ハ) @oms[:X:Y] :ff y x新しいリ
スト・セルを般社、その左の枝を2進本リストXとし右
の枝を2進本リストYとするような新たな2進木リスト
を作ってそれを値とする・ 工) at@m[X] 7トム Xがアトムの時、真という値(@T″や1本T11で示
めす)を取り、そうでないとき、偽(@NIL″という
アトムで示す)とする。
スト・セルを般社、その左の枝を2進本リストXとし右
の枝を2進本リストYとするような新たな2進木リスト
を作ってそれを値とする・ 工) at@m[X] 7トム Xがアトムの時、真という値(@T″や1本T11で示
めす)を取り、そうでないとき、偽(@NIL″という
アトムで示す)とする。
ホ)・q[X:Y]イク
XとYが同じ2進木リストの時、真の値(”T”や−丁
*#)を取り、そうでない時、偽の値(”NIL”)を
取る。
*#)を取り、そうでない時、偽の値(”NIL”)を
取る。
例えば、/(x−y) −x’ + y”の定義性/=
2((x、y):x’+Yx) ト表b t コトr
c x v、/(2,3)ノ値ハ、λo:x、y+:X
1+yx〕〔z、5)−z’+s2トナり、変数の対応
関係を明確に規定することができる。
2((x、y):x’+Yx) ト表b t コトr
c x v、/(2,3)ノ値ハ、λo:x、y+:X
1+yx〕〔z、5)−z’+s2トナり、変数の対応
関係を明確に規定することができる。
ここで%(X$Y)は仮引数と呼ばれる変数であって(
2,3)は(x、y)のそOときの値である実引数と呼
ばれるものである。そして、この実引数(2,3)を仮
引数(x、y)に代入することを束縛(bindllg
)すると呼び、実引数を仮引数に束縛するととKよっ
て関数の値、この場合2’ + 82という目的のりス
Fをつくることがリスプを実行することである。し友が
りて、リスプすなわち関数蓋情報処理装[Kありては、
仮引数と実引数をどのように束縛するかが問題となる。
2,3)は(x、y)のそOときの値である実引数と呼
ばれるものである。そして、この実引数(2,3)を仮
引数(x、y)に代入することを束縛(bindllg
)すると呼び、実引数を仮引数に束縛するととKよっ
て関数の値、この場合2’ + 82という目的のりス
Fをつくることがリスプを実行することである。し友が
りて、リスプすなわち関数蓋情報処理装[Kありては、
仮引数と実引数をどのように束縛するかが問題となる。
本発明においては、変数の束縛値(引ndValu・)
が線形リスト(環境リスト)すなわちFILO(Flr
st I!I La5t Out tたはPu5h d
own Pop up)置スタ、クヘ変数名と値の対で
格納される。ここでFILO’Iliスタ、スタは前記
記憶回路上で2進本リスト構造でデータを間接アドレス
方式(すなわち、あるセルに次につながるセルのアドレ
スを格納しておく方式)で格納していくことである。こ
の変数名と値との対を格納していく順序は、引数変数の
関係が呼ばれ九と11に実引数を値とする願書になる、
いわゆる〆イナミ、クスコーピング(Dymamle
8@すbag)l!の環境をもつ関am言語であうて、
その変数の値がなにであるかを参照する手Illは、基
本的には上記環境リスト(又はスタ、夕)を先頭からシ
ーケンシャルに検索して最初に見つかうた値を使う、い
わゆるガイ−ジノ肴インド(D・すBlmd)ml変数
束縛を行なう場合に、入城変数(@数の引数Oように、
関数を起動するときに束縛値が決定されている局所変数
とIIi異なり、それ以前からその値が決められている
変数)を捜し出すアクセスタイムを短縮するために主記
憶装置の他に連想バッファを設けることが本発明の特徴
である。
が線形リスト(環境リスト)すなわちFILO(Flr
st I!I La5t Out tたはPu5h d
own Pop up)置スタ、クヘ変数名と値の対で
格納される。ここでFILO’Iliスタ、スタは前記
記憶回路上で2進本リスト構造でデータを間接アドレス
方式(すなわち、あるセルに次につながるセルのアドレ
スを格納しておく方式)で格納していくことである。こ
の変数名と値との対を格納していく順序は、引数変数の
関係が呼ばれ九と11に実引数を値とする願書になる、
いわゆる〆イナミ、クスコーピング(Dymamle
8@すbag)l!の環境をもつ関am言語であうて、
その変数の値がなにであるかを参照する手Illは、基
本的には上記環境リスト(又はスタ、夕)を先頭からシ
ーケンシャルに検索して最初に見つかうた値を使う、い
わゆるガイ−ジノ肴インド(D・すBlmd)ml変数
束縛を行なう場合に、入城変数(@数の引数Oように、
関数を起動するときに束縛値が決定されている局所変数
とIIi異なり、それ以前からその値が決められている
変数)を捜し出すアクセスタイムを短縮するために主記
憶装置の他に連想バッファを設けることが本発明の特徴
である。
一般に1第2図に示すように関数型とは、そのプログラ
ム構造中実性形態が呼ぶべき関数すなわち実行するぺ*
IIa/−λ((X、Y) :X”+Y”) O[引a
(x、y)へ実引数(2,3)を結合すなわち束縛(バ
インド)シ、呼ばれた(起動され九)II!数扛、渡さ
れ九すなわち代入されるべき実引数や大域変数を参照し
て所定の手続きを実行し、その関数の値N+32を呼び
側へ返し、それ以外の副作用(1111境を変更するこ
と)はないものを言う、副作用については、本発明の要
旨からみて、説明を省略する。
ム構造中実性形態が呼ぶべき関数すなわち実行するぺ*
IIa/−λ((X、Y) :X”+Y”) O[引a
(x、y)へ実引数(2,3)を結合すなわち束縛(バ
インド)シ、呼ばれた(起動され九)II!数扛、渡さ
れ九すなわち代入されるべき実引数や大域変数を参照し
て所定の手続きを実行し、その関数の値N+32を呼び
側へ返し、それ以外の副作用(1111境を変更するこ
と)はないものを言う、副作用については、本発明の要
旨からみて、説明を省略する。
関数を呼び出す(Call)場合、その仮引数への実引
数の束縛の方法に社、ディープバインド法とシャp−バ
インド法(8hallov 1lind )がある。
数の束縛の方法に社、ディープバインド法とシャp−バ
インド法(8hallov 1lind )がある。
ディープバインド法は前述したように、束縛されa変a
名(X、Y) と[(2,3)の対(−eア、すなわち
、Xは2、Yは3の対)を線型リストやス最俵に束縛さ
れた方向からシーケンシャルにたどり、最初に発見した
その変数の値を使うという環境の構成である。
名(X、Y) と[(2,3)の対(−eア、すなわち
、Xは2、Yは3の対)を線型リストやス最俵に束縛さ
れた方向からシーケンシャルにたどり、最初に発見した
その変数の値を使うという環境の構成である。
すなわち、ディープバインド法は、第3図(a)に示す
ように、主記憶装置の記憶単位である語の構成が左、右
2つの部分に分かれ、1つのセルになっていて、左1l
lK変数名を格納し、右部はそのセルが接続する次のセ
ルのアドレスを格納することKよって次のセルのその変
数の値を知ることができ、沢山の変数がある場合は、j
I3図(、)のように連結し、等価的に第3図(b)の
ようなFILO型のスタ、りを構成するものである。
ように、主記憶装置の記憶単位である語の構成が左、右
2つの部分に分かれ、1つのセルになっていて、左1l
lK変数名を格納し、右部はそのセルが接続する次のセ
ルのアドレスを格納することKよって次のセルのその変
数の値を知ることができ、沢山の変数がある場合は、j
I3図(、)のように連結し、等価的に第3図(b)の
ようなFILO型のスタ、りを構成するものである。
関数コール(Call)の時に、引数変数に値をバイン
ドするときKは、環境リスト(または環境スタック)の
検索出発点の方向から、その名前と値の対をつなげ、検
索出発点ポインタを新たに付加した項目の先頭へ更新す
る。すなわち、第3図(1)の主記憶装置上では、先頭
に1つのセルn + 1を設けることに対応し、そのセ
ルがつながる次のセルがlであることに対応する。これ
は%−II 31ill(b)においては、スタVりの
プツシ&(シ箇−h)動作五に対応し、その変数名が富
+l″eTo−)て、その値が(m+1)であるセルを
スタックの最下段にプVシ、して入れることに対応する
―関数のリターン(R@tur醜)時には、その関数が
コールされたときの状態に検索出発点ポインタを罠す、
すなわち、總3図(1)の主記憶回路上で社、先頭のセ
ル亀+1を1つとって、セル1′を先頭にすることに対
応し、第3図(1,)では1+1とその値(m+1)を
−ツブ動作3で外に出すことを意味する。ディープバイ
ンド法の長所は、スタックのプ、シ、ポ、f動作が簡単
であるO″eIIII#J1.:y−ル時の引数変数の
バインド処理、関数リターン時の引数変数のアンパイノ
ド(Umblmd) m理のオーバーへ、ドが比軟的少
ないことであり、短所は、大域変数(自由変数とも呼ぶ
°)のように、かなり以前にバインドされた変数すなわ
ちスタックO央07FKある変数の参照に時間がかかあ
ことである。
ドするときKは、環境リスト(または環境スタック)の
検索出発点の方向から、その名前と値の対をつなげ、検
索出発点ポインタを新たに付加した項目の先頭へ更新す
る。すなわち、第3図(1)の主記憶装置上では、先頭
に1つのセルn + 1を設けることに対応し、そのセ
ルがつながる次のセルがlであることに対応する。これ
は%−II 31ill(b)においては、スタVりの
プツシ&(シ箇−h)動作五に対応し、その変数名が富
+l″eTo−)て、その値が(m+1)であるセルを
スタックの最下段にプVシ、して入れることに対応する
―関数のリターン(R@tur醜)時には、その関数が
コールされたときの状態に検索出発点ポインタを罠す、
すなわち、總3図(1)の主記憶回路上で社、先頭のセ
ル亀+1を1つとって、セル1′を先頭にすることに対
応し、第3図(1,)では1+1とその値(m+1)を
−ツブ動作3で外に出すことを意味する。ディープバイ
ンド法の長所は、スタックのプ、シ、ポ、f動作が簡単
であるO″eIIII#J1.:y−ル時の引数変数の
バインド処理、関数リターン時の引数変数のアンパイノ
ド(Umblmd) m理のオーバーへ、ドが比軟的少
ないことであり、短所は、大域変数(自由変数とも呼ぶ
°)のように、かなり以前にバインドされた変数すなわ
ちスタックO央07FKある変数の参照に時間がかかあ
ことである。
yヤローバインド法嬬、缶変歇毎に、その値を保持する
ツンメムアクセス域(Valu@C@llと呼ぶ)を設
け、関数コール時には引数変数のパリ。
ツンメムアクセス域(Valu@C@llと呼ぶ)を設
け、関数コール時には引数変数のパリ。
−セルへその実引数を格納し、バリューセルに以前から
存在し友値を、線形リスト(またはスタック)へ名前と
旧懐の対として格納し、変数参照は対応するパリ、−セ
ルを読むだけでよく、関数リターン時には、その引数変
数のバリューセルへ線形リスト(またはスタ、り)へ格
納してめった旧懐を戻す、シャp−バインド法の長所は
、変数参照時間が短かいことであり、短所は関数コール
時の引数変数のバインド処理、関数のリターン時のアン
バインド処理のオーバーヘッドが大きいことである。
存在し友値を、線形リスト(またはスタック)へ名前と
旧懐の対として格納し、変数参照は対応するパリ、−セ
ルを読むだけでよく、関数リターン時には、その引数変
数のバリューセルへ線形リスト(またはスタ、り)へ格
納してめった旧懐を戻す、シャp−バインド法の長所は
、変数参照時間が短かいことであり、短所は関数コール
時の引数変数のバインド処理、関数のリターン時のアン
バインド処理のオーバーヘッドが大きいことである。
以上のようにディープバインド法はシャp−バインド法
に比べて、引数のバインド/ア/ノ苛インド処理につい
ては高速であるが、変数の参照とくに大域変数の#凧が
遅い。゛この点を数置するのが本発明の方式である。
に比べて、引数のバインド/ア/ノ苛インド処理につい
ては高速であるが、変数の参照とくに大域変数の#凧が
遅い。゛この点を数置するのが本発明の方式である。
本発明の目的は、上述したような関数臘情報処理装置に
おいて、ディープバインド法式に従うてスタ、クメ篭り
内に格納される変数を参照するアクセスタイムを短縮す
るために主記憶装置の外部に連想バッファを設けた関数
型情報処理装置を提供することKToる・ 本発明の特徴とするところは、デ四ダラムの構造及び実
行形態が仮引数としての変数名と実引数としての変数値
の対として環境リストであるFirst−In−Los
t−Out II Oスタックメモリへ格納することに
よって、呼ぶべき関数の仮引数変数へ実引数を束縛し、
呼ばれ九関数は変数の値を参照する場合、上記環境、リ
ストの最近の束縛値を使って処理を行い、その関数の値
が得られれば、関数の仮引数変数を上記環境リストから
削除して上記関数値をリターンするという一連の処理を
繰返す関数蓋情報処理装置において、変数名と環境リス
ト上のその変数の束縛位置アドレス情報を対として、各
エントリを構成する連想バッファメモリを有し、変数を
参照する場合には、まず前記バッファを、変数名をキー
として検索し、存在すれば上記束縛位置アドレスを用い
て環境リストからランダムアクセスして変数値を取得し
、存在しなければ上記環境リストを変数名をキーとして
連想検索し、最初にみつかった値を使うとともに、上記
バッファへ変数名と環境リスト上でのアドレスを対とし
て格納し、関数を呼ぶ際に1その引数を束縛する場合に
は、上記環境リストへ名前と値の対を格納するとともに
、引数変数名と名前が一致する前記パ、ファエントリを
削除し、関数がその呼び側に復帰する場合には、その引
数基と束縛値の値を上記環境リストから社ずすとともK
、その時の環境リスト上の位置アドレスを有する前記バ
ッファ中のエントリを削除する関数型情報処理装置を提
供する。
おいて、ディープバインド法式に従うてスタ、クメ篭り
内に格納される変数を参照するアクセスタイムを短縮す
るために主記憶装置の外部に連想バッファを設けた関数
型情報処理装置を提供することKToる・ 本発明の特徴とするところは、デ四ダラムの構造及び実
行形態が仮引数としての変数名と実引数としての変数値
の対として環境リストであるFirst−In−Los
t−Out II Oスタックメモリへ格納することに
よって、呼ぶべき関数の仮引数変数へ実引数を束縛し、
呼ばれ九関数は変数の値を参照する場合、上記環境、リ
ストの最近の束縛値を使って処理を行い、その関数の値
が得られれば、関数の仮引数変数を上記環境リストから
削除して上記関数値をリターンするという一連の処理を
繰返す関数蓋情報処理装置において、変数名と環境リス
ト上のその変数の束縛位置アドレス情報を対として、各
エントリを構成する連想バッファメモリを有し、変数を
参照する場合には、まず前記バッファを、変数名をキー
として検索し、存在すれば上記束縛位置アドレスを用い
て環境リストからランダムアクセスして変数値を取得し
、存在しなければ上記環境リストを変数名をキーとして
連想検索し、最初にみつかった値を使うとともに、上記
バッファへ変数名と環境リスト上でのアドレスを対とし
て格納し、関数を呼ぶ際に1その引数を束縛する場合に
は、上記環境リストへ名前と値の対を格納するとともに
、引数変数名と名前が一致する前記パ、ファエントリを
削除し、関数がその呼び側に復帰する場合には、その引
数基と束縛値の値を上記環境リストから社ずすとともK
、その時の環境リスト上の位置アドレスを有する前記バ
ッファ中のエントリを削除する関数型情報処理装置を提
供する。
以下、図面を参照して本発明の一実施例をit明する。
まず、スタック上のディープバインド方式では次のよう
tmiiiが行なわれる。関数呼び出しが起こる手前で
実引数がそろうとスタックは第4図(a)のようkなる
。こζで8TPはスタ、クトッf4インタである。関数
が呼び出されると呼び出された関数側で第4図(b)
(Dような形になる。
tmiiiが行なわれる。関数呼び出しが起こる手前で
実引数がそろうとスタックは第4図(a)のようkなる
。こζで8TPはスタ、クトッf4インタである。関数
が呼び出されると呼び出された関数側で第4図(b)
(Dような形になる。
以上のような処理によって第4図(@)のようにスタ、
り中O関数毎の情報間は、1日Flによってリンクされ
る。ここでFPは7レーム4インタすなわち現在実行し
ている関数の制御情報の先頭を指すものである。このリ
ンクによりて変数の参照があったときそれをたどりて変
数名をサーチすることによってその値を得ることができ
る。
り中O関数毎の情報間は、1日Flによってリンクされ
る。ここでFPは7レーム4インタすなわち現在実行し
ている関数の制御情報の先頭を指すものである。このリ
ンクによりて変数の参照があったときそれをたどりて変
数名をサーチすることによってその値を得ることができ
る。
たとえば
F 1 (Z )−Z”+F2(10)FZ(! )−
x +X+F3(7) F B (x )−x +1+Z という関係にある3つの関数において、Fl(3)の値
を求める場合を説明する。関数Pi(Z)をコールする
時点で仮引数2は3に束縛されて、環境リスト上にその
束縛関係が格納される。しかし、Fl(Z)の計算には
関数F2(X)の値F2(10)が必要であるので、関
数F2(x)をコールする。このコール時において、仮
引数Xは10に束縛されて環境リスY上にその束縛関係
が格納される。しかし、ti、F2(1G)の計算には
関@ F 3 (x )の値F3(?)が必要であるの
で、関数FB(x)をコールする。このコール時におい
て、仮引数!は7に束縛されて環境リスト上にその束縛
関係が格納される・しかし、FB(x)の値F3(7)
を求めるOK F3 (x )mx’+t+z 、 ノ
zは大域変数、fなわち、その時点で束縛されない変数
であるが、2aF1(Z)をプールする時点でZ−3に
束縛されているので、環境リスト上をさかのぼって2が
3であることをサーチするわけである。そしてはじめて
F3(7)=7 +1+3が求tp、IF5(X)Kリ
ターンL? F2(10)s−10+10+F3 (7
) カ求t9、Fl(Z)にすp −y t、テ、Fl
(3) = 3”+F2(10)となり、Fl(3)と
いう値が求まるのである。
x +X+F3(7) F B (x )−x +1+Z という関係にある3つの関数において、Fl(3)の値
を求める場合を説明する。関数Pi(Z)をコールする
時点で仮引数2は3に束縛されて、環境リスト上にその
束縛関係が格納される。しかし、Fl(Z)の計算には
関数F2(X)の値F2(10)が必要であるので、関
数F2(x)をコールする。このコール時において、仮
引数Xは10に束縛されて環境リスY上にその束縛関係
が格納される。しかし、ti、F2(1G)の計算には
関@ F 3 (x )の値F3(?)が必要であるの
で、関数FB(x)をコールする。このコール時におい
て、仮引数!は7に束縛されて環境リスト上にその束縛
関係が格納される・しかし、FB(x)の値F3(7)
を求めるOK F3 (x )mx’+t+z 、 ノ
zは大域変数、fなわち、その時点で束縛されない変数
であるが、2aF1(Z)をプールする時点でZ−3に
束縛されているので、環境リスト上をさかのぼって2が
3であることをサーチするわけである。そしてはじめて
F3(7)=7 +1+3が求tp、IF5(X)Kリ
ターンL? F2(10)s−10+10+F3 (7
) カ求t9、Fl(Z)にすp −y t、テ、Fl
(3) = 3”+F2(10)となり、Fl(3)と
いう値が求まるのである。
一般に関数型情報処理装置において、大域変数は束縛さ
れた局所変数(または仮引数)に比べその数嬬少いが少
数の大域変数が多数回参照される場合が多い、そζで本
発明の関数型情報処理装置においては新しく連想バッフ
ァを設け、ある関数が大域変数を参照し九場合、前記バ
ッファにその変数がない場合は、環境リスト(まえ祉ス
タ、り)をシーケンシャルに検索し、得た値をその変数
名と対にして前記高速な連想d、ファメモリに格納して
おき、以後その変数が参照され九場合には、変数名でバ
ッフγを連想アクセスしてアクセス時間の大幅な短縮を
することができるのである。
れた局所変数(または仮引数)に比べその数嬬少いが少
数の大域変数が多数回参照される場合が多い、そζで本
発明の関数型情報処理装置においては新しく連想バッフ
ァを設け、ある関数が大域変数を参照し九場合、前記バ
ッファにその変数がない場合は、環境リスト(まえ祉ス
タ、り)をシーケンシャルに検索し、得た値をその変数
名と対にして前記高速な連想d、ファメモリに格納して
おき、以後その変数が参照され九場合には、変数名でバ
ッフγを連想アクセスしてアクセス時間の大幅な短縮を
することができるのである。
第5図(a)の環境リストにおいて、関数F1はF2を
、F2はF3を、F3はF4を、F4FiF5を、そし
てF5はF6をコールするようになっているとする。こ
のとき関数F6を ! F 6 (N ) −N +x+Z+Z ”であると仮
定する。すなわち、Nは局所変数で、Xと2は大域変数
である。大域変数であるXは関数F2(xmy)をコー
ルする時点でz xm 5であるように束縛されてお9
、zは関数F3(Z) をコールする時点でZ−Sであ
るように束縛されている。
、F2はF3を、F3はF4を、F4FiF5を、そし
てF5はF6をコールするようになっているとする。こ
のとき関数F6を ! F 6 (N ) −N +x+Z+Z ”であると仮
定する。すなわち、Nは局所変数で、Xと2は大域変数
である。大域変数であるXは関数F2(xmy)をコー
ルする時点でz xm 5であるように束縛されてお9
、zは関数F3(Z) をコールする時点でZ−Sであ
るように束縛されている。
F6(N)C)値を計算するために、NとXそして2の
各変数を参照するため、まず環境リスト上をサーチする
が、局所変数Nに対して拡即座にその値(例えばN−1
0)をみつけることができるが、X中z紘最初は環境リ
スト上をさかのぼうてサーチする必要があp%! 諺5
、 Z wx gであることがわかる・しかし、もし
、この最初のサーチにおいて、見つけ九z wm 5
、 g■8を嬉5図(b)のように連想A、フチに対と
して格納しておけば、2度目の同じ変数名の参照紘連l
aAッ7アをまずアクセスすることkよりてなされ、高
速化されることになる。
各変数を参照するため、まず環境リスト上をサーチする
が、局所変数Nに対して拡即座にその値(例えばN−1
0)をみつけることができるが、X中z紘最初は環境リ
スト上をさかのぼうてサーチする必要があp%! 諺5
、 Z wx gであることがわかる・しかし、もし
、この最初のサーチにおいて、見つけ九z wm 5
、 g■8を嬉5図(b)のように連想A、フチに対と
して格納しておけば、2度目の同じ変数名の参照紘連l
aAッ7アをまずアクセスすることkよりてなされ、高
速化されることになる。
スナわち、Fll(N)−N”+x+Z+Z2o最後o
項z!は連層パラフチにZ−aSという対が格納されて
いて変数zt着−として連想検索すれば2m8であるこ
とが良だちに拠t)Z”K代入すればよいことKなる。
項z!は連層パラフチにZ−aSという対が格納されて
いて変数zt着−として連想検索すれば2m8であるこ
とが良だちに拠t)Z”K代入すればよいことKなる。
このバッファメモリの持つべき機能祉以下のものである
。tk訃、Δ、ファメ峰りの具体的構成は5saaを参
照して後述する。
。tk訃、Δ、ファメ峰りの具体的構成は5saaを参
照して後述する。
(1) ある大域変数を初めてアクセスし*、場合、
その変数をA 、 7丁へ登鍮しておき、以後のアクセ
スの高連化をはかる・この場合、IRWR名と、そのパ
イン2m1011境リスト(又はスタック)上での位置
情味(スタック内アドレス)も岡崎に格納して、変数値
はスタック内アtレスを参照してランダムアクセス的に
スタックから引自出す。
その変数をA 、 7丁へ登鍮しておき、以後のアクセ
スの高連化をはかる・この場合、IRWR名と、そのパ
イン2m1011境リスト(又はスタック)上での位置
情味(スタック内アドレス)も岡崎に格納して、変数値
はスタック内アtレスを参照してランダムアクセス的に
スタックから引自出す。
(2)与えられた変数名が内部格納変数名と一致するか
どうかをハード的に行ない、一致がとれればその変数4
に対応するスタッタアドレスを読むことがで自ゐこと、
す表わち、変数1をキーとしてΔツ7アを連想検索して
、アタックアドレスをリードする機能をもつことである
。これは、変数を参照する場合に必要である。
どうかをハード的に行ない、一致がとれればその変数4
に対応するスタッタアドレスを読むことがで自ゐこと、
す表わち、変数1をキーとしてΔツ7アを連想検索して
、アタックアドレスをリードする機能をもつことである
。これは、変数を参照する場合に必要である。
(3)変数名をキーとして、Av7アメモリ上でその変
数と同一名の変数の有効表示ビットvをす七ットする機
能を持つことである。これは参照されてバッフγに存在
する大域変数と同一名O仮引数名をもつ関数をコールす
る場合、パ、ファ上のその大域f数を191除するため
に必要である。この処理をおこたると同一変数名の参照
の場合に、大域変数より局所変数を優先するスコービン
ダの原則がくずれゐ。
数と同一名の変数の有効表示ビットvをす七ットする機
能を持つことである。これは参照されてバッフγに存在
する大域変数と同一名O仮引数名をもつ関数をコールす
る場合、パ、ファ上のその大域f数を191除するため
に必要である。この処理をおこたると同一変数名の参照
の場合に、大域変数より局所変数を優先するスコービン
ダの原則がくずれゐ。
(4) リスト上の位置情報をキーとして、それが一
致するすべてO項目の有効表示Cツ)Yを9竜ツトする
機能を有する。これは関数が呼び儒の関数ヘリターンす
る時に、そのリターンする関数の引数変数を全てパッツ
ァから除去するのに必要である。この部層をおこたると
、もしこの関数の仮引数変数と同一40変数がこの関数
以前にバインドされておや、そ0Ill!ml管参照す
ると、既に環境から除去され九はずの値が娯壕うて使わ
れるととになる。
致するすべてO項目の有効表示Cツ)Yを9竜ツトする
機能を有する。これは関数が呼び儒の関数ヘリターンす
る時に、そのリターンする関数の引数変数を全てパッツ
ァから除去するのに必要である。この部層をおこたると
、もしこの関数の仮引数変数と同一40変数がこの関数
以前にバインドされておや、そ0Ill!ml管参照す
ると、既に環境から除去され九はずの値が娯壕うて使わ
れるととになる。
上述しえように、各変数を環境上での位置情報付でバッ
フ丁に格納していないと、リターンする関数の各仮引数
堪をキーとして、それぞれバッフ丁を検索して除去する
か、バッフ丁のオールクリアを行なう必要がある。前者
では、時間がかかり、後者では大域変数のパ、7ア内で
の寿命は、初めて参照した#数がリターンするまでとな
9、Δツ7アの効果はほとんどなくなる。
フ丁に格納していないと、リターンする関数の各仮引数
堪をキーとして、それぞれバッフ丁を検索して除去する
か、バッフ丁のオールクリアを行なう必要がある。前者
では、時間がかかり、後者では大域変数のパ、7ア内で
の寿命は、初めて参照した#数がリターンするまでとな
9、Δツ7アの効果はほとんどなくなる。
II6■轄、前述OΔツ7アメ毫りの必要機能(1)を
説−する−であLiesは第1番O関数の引数のバイン
ドデー、夕、riは第1番の関数のツレーム、IPはエ
ンパイロンメントーイン!(環境すストポインタ)であ
る、今、関数第4香がある変数MARを参照したとし、
IPから鳶42、葬3;E2と環境を検索し、12でそ
の変数WARが見っかつ九とすると、バッフγに格納す
る環境リスト上の位置情報とti12パイン11.り0
スタ。
説−する−であLiesは第1番O関数の引数のバイン
ドデー、夕、riは第1番の関数のツレーム、IPはエ
ンパイロンメントーイン!(環境すストポインタ)であ
る、今、関数第4香がある変数MARを参照したとし、
IPから鳶42、葬3;E2と環境を検索し、12でそ
の変数WARが見っかつ九とすると、バッフγに格納す
る環境リスト上の位置情報とti12パイン11.り0
スタ。
り内アドレスFム2のことであゐ。
第7図(1) 、 Cb)はパックアメ毫りの前述の必
要機能(3)を説明するものである0%/hi、関数第
4香が仮引数塩WARをもつ関数第5誉を;−ルしよう
としているとする。このときバインドプロ、りに変数W
ARとその実引数値が対として格納され、*K。
要機能(3)を説明するものである0%/hi、関数第
4香が仮引数塩WARをもつ関数第5誉を;−ルしよう
としているとする。このときバインドプロ、りに変数W
ARとその実引数値が対として格納され、*K。
記数バッファに変数名WARをもつa■がもし存在すれ
ば、それのベリラドビットをリセットする。
ば、それのベリラドビットをリセットする。
第8図は、前述のバッファメモリの必要機m (4)を
説明するものである。関数第4香が大域変数WARを参
照し、それがN2内で見つかり、バッファに格納されて
いる。いずれ、関数第4番、纂3番とリターンしてゆき
、関#L纂2書がリターンする場合を考える。関数籐2
番がリターンすれば、そO引数VA鼠のΣ2バインドツ
ロ、りでの束縛も解itsれるので、パフフチメモリ中
の変数vARも削除され為必要がある。そこで、そのと
きのmpownム2を中−としてバッファからスタック
内アドレスの一部が一致する項目を削除する。
説明するものである。関数第4香が大域変数WARを参
照し、それがN2内で見つかり、バッファに格納されて
いる。いずれ、関数第4番、纂3番とリターンしてゆき
、関#L纂2書がリターンする場合を考える。関数籐2
番がリターンすれば、そO引数VA鼠のΣ2バインドツ
ロ、りでの束縛も解itsれるので、パフフチメモリ中
の変数vARも削除され為必要がある。そこで、そのと
きのmpownム2を中−としてバッファからスタック
内アドレスの一部が一致する項目を削除する。
JIII図絋、本鉱明の連想バッファメモリの具体的構
成図である。すなわち、!ロダラムの構造および奥行形
態が変数名と変数値の対として、環境リストへ格納する
ことによりて、呼ぶべき関数の仮引数変数Ell引数を
束縛し、呼ばれた関数は、変数の値を参照する場合、上
記環境リストの最近O束縛値を使って処理を行ない、関
数の値が得られれば、関数の仮引数変数を上記環境リス
トから削除して、上記関数値をリターンするという一連
oie、wiを繰p返す関数層情報処理装置の内部に連
想バッファメモリを新たに加えてなる構成図である・前
記連想パ、7アメモリの持つべき機能社、前記(1)
# (2) # (3) e (4)である。
成図である。すなわち、!ロダラムの構造および奥行形
態が変数名と変数値の対として、環境リストへ格納する
ことによりて、呼ぶべき関数の仮引数変数Ell引数を
束縛し、呼ばれた関数は、変数の値を参照する場合、上
記環境リストの最近O束縛値を使って処理を行ない、関
数の値が得られれば、関数の仮引数変数を上記環境リス
トから削除して、上記関数値をリターンするという一連
oie、wiを繰p返す関数層情報処理装置の内部に連
想バッファメモリを新たに加えてなる構成図である・前
記連想パ、7アメモリの持つべき機能社、前記(1)
# (2) # (3) e (4)である。
上記実施例には、まず変数名メモ910.アドレスメq
930が設けられ、それぞれが1〜!Iのレジスタで構
成される。メモリ10は変数名ネームを格納するもので
あり、3Gはスタ、り内アドレスを格納するものである
。前記メモリ10゜30の1番目(i ;1 # 2
e =・n )のレジスタはそれぞれが対応し、1つの
ワードを形成している。
930が設けられ、それぞれが1〜!Iのレジスタで構
成される。メモリ10は変数名ネームを格納するもので
あり、3Gはスタ、り内アドレスを格納するものである
。前記メモリ10゜30の1番目(i ;1 # 2
e =・n )のレジスタはそれぞれが対応し、1つの
ワードを形成している。
これが第1の機能である。関数型情報処理装置の環境リ
スト内のある大域変数をはじめてアクセスした場合、そ
の大域変数とスタック内アドレスを前記連想バッファの
前記メモリ10.30にそれぞれ登録していき、以後の
アクセスの高速化を図る。連想ノ肴、7アへの登録は変
数名ネームに対しては入力線101.103を変数名1
のセルに書込み14ルス信号靜1を活性化して書き込む
。このとき同時に、スタック内アドレスは入力線301
からアタ、り内アドレスの1番目のセルに前記書込み信
号面1を活性化して書込む、前記票20機能を行なうた
めに、連想バッファは、与えられた変数名が、あらかじ
め内部メモリ10に格納しておいた変数名と一致回路4
0で一致するかどうかを検出し、−歇がとれれば出力l
[401のn本のうちのどれか一本が活性化されて、選
択回路60を制御して、対応するセル3pの内容、すな
わち対応するスタック内アドレスを出方9601に出力
する。すなわち、変数名をキーとして、連想検索してス
タック内アドレスを読出すことができる機能をもつ・し
かも、スタ、り内アドレスを格納するメモリ30は、書
き込みも行えるので、変数名に対応するアドレスを読出
したシ、書込んだりすることができる。これは、アドレ
スを参照した夛変更したりするときに必要である。
スト内のある大域変数をはじめてアクセスした場合、そ
の大域変数とスタック内アドレスを前記連想バッファの
前記メモリ10.30にそれぞれ登録していき、以後の
アクセスの高速化を図る。連想ノ肴、7アへの登録は変
数名ネームに対しては入力線101.103を変数名1
のセルに書込み14ルス信号靜1を活性化して書き込む
。このとき同時に、スタック内アドレスは入力線301
からアタ、り内アドレスの1番目のセルに前記書込み信
号面1を活性化して書込む、前記票20機能を行なうた
めに、連想バッファは、与えられた変数名が、あらかじ
め内部メモリ10に格納しておいた変数名と一致回路4
0で一致するかどうかを検出し、−歇がとれれば出力l
[401のn本のうちのどれか一本が活性化されて、選
択回路60を制御して、対応するセル3pの内容、すな
わち対応するスタック内アドレスを出方9601に出力
する。すなわち、変数名をキーとして、連想検索してス
タック内アドレスを読出すことができる機能をもつ・し
かも、スタ、り内アドレスを格納するメモリ30は、書
き込みも行えるので、変数名に対応するアドレスを読出
したシ、書込んだりすることができる。これは、アドレ
スを参照した夛変更したりするときに必要である。
第3及び第4の機能である、変数名から同一名の項目の
有効表示ビy)Vをリセットする機能を実現するれめ、
本実施例には、有効表示ビット格納セル評80および選
択回路90が含まれる。
有効表示ビy)Vをリセットする機能を実現するれめ、
本実施例には、有効表示ビット格納セル評80および選
択回路90が含まれる。
有効表示ピッ)Vを格納するセル群のうち、kiミセル
前記変数名1、アドレス1を書き込むときの前記書込み
信号WE1によってセットする。
前記変数名1、アドレス1を書き込むときの前記書込み
信号WE1によってセットする。
変数名をキーとする場合は、リセット信号1001が論
illのとき、−回路100によって出力10024D
うち一致回路40で内部変数基量番目と入力された変数
名1番目の一致がとれたとき、選択回路70を介して対
応する有効表示ビ、)Vl−b1リセ、トされる。
illのとき、−回路100によって出力10024D
うち一致回路40で内部変数基量番目と入力された変数
名1番目の一致がとれたとき、選択回路70を介して対
応する有効表示ビ、)Vl−b1リセ、トされる。
アドレスをキーとする場合は、リセット信号1001が
論理1のとき、AND回路100によって、出力100
2のうち一致回路50で内部アドレス1番目と信号11
301,302を介して入力されたアドレス1111の
一致がとれたとき、選択回路70を介して対応する有効
表示ビットVBがリセットされる。なお、−数回路50
で比較に使うアドレスは全アドレスビットの一部である
。ここで選択回路70は変数名キーによる一致信号40
1力為アドレスをキーとする一致信号501かを切替選
択するものである。
論理1のとき、AND回路100によって、出力100
2のうち一致回路50で内部アドレス1番目と信号11
301,302を介して入力されたアドレス1111の
一致がとれたとき、選択回路70を介して対応する有効
表示ビットVBがリセットされる。なお、−数回路50
で比較に使うアドレスは全アドレスビットの一部である
。ここで選択回路70は変数名キーによる一致信号40
1力為アドレスをキーとする一致信号501かを切替選
択するものである。
有効表示ビ、)セル群の出力は選択回路90に入力され
、−数回路40の出力401C)1i113御をうけて
選択されるので、出力901には変数名と格納f数名が
一致がとれている対応する有効表示ビ、トが選択回路9
0の出力901に出力される。
、−数回路40の出力401C)1i113御をうけて
選択されるので、出力901には変数名と格納f数名が
一致がとれている対応する有効表示ビ、トが選択回路9
0の出力901に出力される。
以上説明したように、本発明によれば、ディーシバイン
ド方式に従9て実行していく関数部情報アクセスが、前
記連想パ、フ7を使うことによって高速に行なうことが
できる。
ド方式に従9て実行していく関数部情報アクセスが、前
記連想パ、フ7を使うことによって高速に行なうことが
できる。
第1図(a) 、 (b) 、 (・)は2進木リスト
を説明するための図、第2図は関数型情報処理を説明す
るための図、第3図(a) 、 (b)はディープバイ
ンド法を説明する図、第4図(a) 、 (b) 、
(e)はスタ、り上のディープバインド法を説明する図
、第5図(a) l (b)はディープバインド法を具
体的に説明する図、第6図は本発明のバッファメモリの
機能を説明する図、第7図(a) 、 (b)は本発明
のバッファメモリの他の機能をa明する図、第8図は本
発明Oバッファメモリのさらに他の機能を説明する図、
第9図は本発明の一実施例のブロック図である。 10−・変数名メモリ、30・・・アドレスメモリ、4
0.50・・・−数回路、60,70.90・・・選択
回路。 實4図 (a) (b) (C
)青5図 (a) (b) 實7 (a) 図 (b) 」 □−一■■Lノ
を説明するための図、第2図は関数型情報処理を説明す
るための図、第3図(a) 、 (b)はディープバイ
ンド法を説明する図、第4図(a) 、 (b) 、
(e)はスタ、り上のディープバインド法を説明する図
、第5図(a) l (b)はディープバインド法を具
体的に説明する図、第6図は本発明のバッファメモリの
機能を説明する図、第7図(a) 、 (b)は本発明
のバッファメモリの他の機能をa明する図、第8図は本
発明Oバッファメモリのさらに他の機能を説明する図、
第9図は本発明の一実施例のブロック図である。 10−・変数名メモリ、30・・・アドレスメモリ、4
0.50・・・−数回路、60,70.90・・・選択
回路。 實4図 (a) (b) (C
)青5図 (a) (b) 實7 (a) 図 (b) 」 □−一■■Lノ
Claims (1)
- 【特許請求の範囲】 f四プラ4の構造及び実行形態が仮引数としての変数名
と実引数としての変数値の対として環境リストであるF
irst−In−Last−Out型のスタックメモリ
へ格納することによりて呼ぶべき関数の仮引数変数へ実
゛引数を束縛し、呼ばれた関数は変数の値を参照する場
合、前記埠°境リストの最近の束縛値を使って処理を行
い、その関数の値が得られれば、関数の仮引数変乾を前
記環境リストから削除して前記関数値をリターンすると
いう一連の処理を繰返す関数麗情報処理装置において、
変数名と環境リスト上のその変数の束縛位置アドレス情
報を対とし゛て、各エントリを構成する連想バッファメ
そりを有し、変数を参照する場合には、まず前記パ、フ
ァを、変数名をキーとして検索し、存在すれば、上記束
縛位置アドレスを用いて環境リストからランダムアクセ
スして変数値を11R碧し、存在しなければ、上記環境
リストを変数名をキーとして連想検索し、最初に見つか
った値を使うとともに1上記パ、ファへ変数名と環境リ
スト上でのアドレスを対として格納し、関数を呼ぶ際に
、そ。 の引数を束縛する場合には、上記環境リストへ名前と値
の対を格納するとともに、引数変数名と名前が一致する
鹸記パ、ファエントリを削除し、関数がその呼び側へ復
帰する場合には、その引数基と束縛値の対を上記環境リ
ストからはずすとと°もに、その時の環境リスト上の位
置アドレスを有する前記バッファ中のエントリを削除す
ることを特徴とする関数璽情報処理装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP56104017A JPS585852A (ja) | 1981-07-03 | 1981-07-03 | 関数型情報処理装置 |
DE8282303394T DE3270597D1 (en) | 1981-06-30 | 1982-06-29 | Data processing system |
EP82303394A EP0069525B1 (en) | 1981-06-30 | 1982-06-29 | Data processing system |
US06/393,533 US4517640A (en) | 1981-06-30 | 1982-06-30 | Stack machine with improved cache memory for variables |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP56104017A JPS585852A (ja) | 1981-07-03 | 1981-07-03 | 関数型情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPS585852A true JPS585852A (ja) | 1983-01-13 |
Family
ID=14369484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP56104017A Pending JPS585852A (ja) | 1981-06-30 | 1981-07-03 | 関数型情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS585852A (ja) |
-
1981
- 1981-07-03 JP JP56104017A patent/JPS585852A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5762878B2 (ja) | key−valueストアを有するメモリシステム | |
JP2009289273A (ja) | ソフトウェアオブジェクトを実現する方法 | |
JPH03266039A (ja) | フリーフォーマットデータリンク処理方式 | |
CN103765381B (zh) | 对b+树的并行操作 | |
US20180300330A1 (en) | Proactive spilling of probe records in hybrid hash join | |
US4517640A (en) | Stack machine with improved cache memory for variables | |
CN106133706A (zh) | 用于多级存储器系统中的存储器分配的系统和方法 | |
CN110442826B (zh) | 基于页面标识的跨层级页面跳转方法、装置和系统 | |
US9418089B2 (en) | Merging of sorted lists using array pair | |
JPH08129551A (ja) | ハッシュ方式 | |
JPS585852A (ja) | 関数型情報処理装置 | |
CN113641872B (zh) | 一种散列方法、装置、设备及介质 | |
WO2010095004A1 (en) | Priority search trees | |
JP5992577B2 (ja) | メモリ、データ処理方法、及びメモリシステム | |
CN110162531B (zh) | 一种分布式并发数据处理任务决策方法 | |
JPH0126092B2 (ja) | ||
JPS6367691B2 (ja) | ||
CN112068948A (zh) | 数据散列方法、可读存储介质和电子设备 | |
CN110286894A (zh) | 脚本生成方法、装置、计算机设备和存储介质 | |
CN113641871A (zh) | 一种无锁散列方法、装置、设备及介质 | |
CN118193032B (zh) | 消除无效依赖库的方法、装置、设备、介质和程序产品 | |
JPS584451A (ja) | 関数型情報処理装置 | |
CN115390785A (zh) | 电子设备及其数据的处理方法和介质 | |
KR20220068123A (ko) | 시계열 공간정보 다중 모델링을 통한 시간 및 위치 기반 질의 성능 향상 방법과 이를 이용하는 시계열 공간 정보 관리 시스템 | |
CN114860652A (zh) | 基于非易失性内存与Java虚拟机的文件系统及其设计方法 |