【発明の詳細な説明】リダクションプロセッサにおける能動記憶装置発明の背景コンピュータは1940年代に発明された。それ以来、革命的なスピードで発達してきた。それにもかかわらず、今日のコンピュータは初期のものとほとんど同じ構造を育している。
多くの改良がハードウェアにおいてなされた。VLSIの導入とりソグラフィ技術の改善によって、はんの5年前にはスーパコンピュータと呼ばれたものが1チツプで製造できるようになった。線幅は指数関数的に細くなり、今や1ミクロン以下である。能動トランジスタの数やクロック速度は数桁増大した。しかし、物理的な制約から線幅は多分0.2ミクロンに#限されるだろう。
同じ期間を通じて、コンピュータアーキテクチャはシリコンの使用においては変更がなかった。それどころか、多くのコンピュータはより高速を目指して最適量以上のシリコンを用いてきた。
これら両方の事実のために今後5年間のシングル・プロセッサの演算速度の発展は停止するだろう。パラレル(並列)プロセッサが導入されているが、増大する複雑さのためにハードウェアコストが増大し、多くのプログラムに対してはプログラミングコストが桁はずれに増大する。
お互いの関係をみると、ハードウェアコストは減少しているが新しいシステムのプログラミングコストはかなり増大し、やがて禁止的レベルに達するであろう。
コンピュータはソフトウェア、ハードウェア両面で種種のユニットの複雑な組立体である。発展段階における種々のわく組、段階によりシステムに(その場かぎりの、および確立された)発展した基準が創造された。この不規則性のために多くのインターフェースが存在する。
異なった性質、形式のこれら全ての、インタフェースおよびわく組のために、ユーザまたはプログラマはマシンを用いるのが困難になり(多くの知識を必要とする)、また複雑さのために思わぬエラーを導入するかもしれなかった。
しかし、最近、いわゆるリダクシヨン(簡約)プロセッサが発達してきている。
リダクションプロセッサは算術式を含む一定の構造を有するプログラムを実行する。
そしてこの構造は多くのりダクションステップに簡約される。従って、プログラムは他の種類のコンピュータのように所定の順序では実行されない。
限定されたサイズを越えるリダクションプロセッサを開発するにはいくつかの困難が存在した。
プログラミング言語の発展初期のコンピュータの開発は、この形式のコンピュータに適合するいくつかのプログラミング言語(たとえば、フォートラン、コボル、アルガル、ベーシック、パスカルなど)の開発を伴なった。これらの言語は命令型言語と呼ばれ、以下では、主に、従来のコンピュータ(すなわちジョン・フォノ・ノイマンによって開発された原理に基づいて設計されたコンピュータ)によって順番に実行されるべき一連のコマンド又はインストラフシコン(命令)からなるプログラムを通常与えるという事実のために、従来言語と呼ばれる。これらの言語の増大する不便さのために、他の一連の言語(LISP、 ISWIM。
5chene (LISPの一種) 、ML、 Hope、 5ASLなど)が開発された。これらの言語の開発を推進したのは単純化という概念であり、どのマシンも設計に影響を与えていない。
関数型言語が注目を浴びるには少し時間がかかった。関数型言語の実行が遅かったのが一つの理由である。
これらの関数プログラムがこの形式のコンピュータによって実行されるようになっていなくとも最近の発展により、いくつかのケースにおいて、実行速度は、従来のコンピュータによって実行される従来の(命令型)言語プログラムに対するものに近いかそれと同じとなってき関数型言語を開発するのに多大の努力を要したのは命令的形式言語の増大する不便さのためであった。人々は1970年頃ソフトウェア危機について語り始めた。プログラムは増々複雑になり、しばしば多くのエラーを含み、読みにくく、理解しにくく、また特に修正しにくかった。一つの理由は、高水準命令型言語はプログラミングを簡単にするであろうという期待が高かったにもかかわらず、これらの言語が思った程高水準でなかったということである。命令型言語は今だに初期のコンピュータ概念、すなわちフすン・ノイマン型コンピュータに適合するようになっており、プログラミングのレベルは今だにマシンレベルにかなり近い。関数型プログラミング言語は、従来のプログラミング言語の欠点のい(つかを緩和するいくつかの特徴を有している。
追加的な情報、理解のために、“FunctionalProgramming Llsing 5tandard ML”人ke WikstroOm。
Prentice Hall、 I 987を参照。
本発明の目的および利点を完全に理解するためには、計算の際、関数的アプローチを含むものを理解することが重要である。特に、歴史的に主流であった命令的アプローチとの比較において理解することか重要である。
「関数的アプローチ」という用語は、プログラムが関数型言語で書かれ、記憶され、このような言語に特に適したハードウェアを含むコンピュータで実行されることを意味する。等価的に、「命令的アプローチ」という用語は、プログラムが命令型言語で書かれ、記憶され、命令型言語に適したハードウェアを含むコンピュータで実行されることを意味する。
しかしながら、関数型言語で書かれたプログラムを従来のコンピュータで記憶、実行することも可能である。
逆に、命令型言語で書かれたプログラムを、関数型言語で書かれたプログラムを実行するのに適したコンピュータで実行することも可能である。
的)の特性の−組みの定義および計算規則とみることができる。定義は宣言部であり、計算規則(すなわち簡約または書換規則)は、コンピュータが実行中に用いる演算部である関数型言語はコンピュータに高水準のインタフェースを与え、それによってプログラマはコンピュータのハードウェア関連の細部から抽出できるようになる。
付加的な効果として、関数型プログラムはしばしば短かくなり、従来の命令型プログラムより理解しやすい。関数型言語の主たる欠点の一つは、関数型プログラムを従来のコンピュータで実行するためには従来言語に翻訳しなければならないことである。これはコンI(イラ又はインタープリタ−プログラムで行われてきた。関数的アブーチのいくつかの利点が、関数型プログラムを効果的な方法で記憶、実行するタスクのための専用の/%−ドウエアが存在しないという事実によって阻害されてしまうことは明らかであろう。
定義本明細書で用いられる用語とその意味のリストを次に示す。
要 素・・・データ構造においてより大きいものの一部リスト・・・要素(各要素はリストであり得る)の指示された順序挿入リスト・・・リストの一部であって、その全体が1クロージヤ(閉包)に記憶されるのに十分小さい。任意の長リストを表現することを可能にする。
閉 包・・・プロセスを定義する階層的に構成された実体。
全ての閉包は閉包を一義的に定義する根(ルーート)を育する。
リダクションマシーンにおけるリダクシヨン(簡約)作業は閉包上でなされる。
マシンの全体の状態はりダクションによって変換される。
オブジェクト記憶・・・オブジェクトを記憶する記憶セルを含むメモリ。たとえば、連想メモリ。
記憶セル・・・オブジェクト記憶内のセル。セル閉包を記憶し、他の記憶セルに記憶された他のセル閉包を指すこともある。
セル閉包・・・記憶セル内の内容、記憶セルフイールド・・・記憶セル内のフィールド閉包要素・・・記憶セルフイールドに記憶されたデータ要素閉包識別子−・・閉包を一義的に指す閉包セル要素基準閉包・・・さらに簡約できない閉包、すなわち、当該セル閉包が簡約されるべき態様で簡約されるかもしれない他のいくつかのセル閉包を指す閉包識別子を含まないセル閉包。
ゴール・・・実行すなわち簡約されるべき閉包父 親・・・価/指定フィールドにおいて少なくとも1つの閉包識別子を有する閉包息 子・・・閉包識別子を介して他の閉包と結びついた閉包で、息子を指定する。
息子は父親ともなり、また父親は息子ともなり得る。息子は2Å以上の父親を有することがあり、また父親は2Å以上の息子を育することがある。
閉包位置・・・当該閉包が根か節かどうかを表わす。
根・・・閉包木における最上の閉包セル節・・−閉包木における根ではない閉包セルホエア(where)−・・閉包位置を含む記憶セルフイールド型・・・セル閉包における型コード、すなわち目的の性質を表わすビットパターン。たとえば命令コード。
レイジー・・・実行可能か、延期された評価か、不活性であるかを示すセル閉包の要素識別子・・・記憶セルに記憶された目的を示すのに用いられる特別の種類の閉包要素。
環 境・・・目的はそれに同一の環境を与えることによって分類できる価/指定・・・単純な値(すなわち、直接表現)、無、別の閉包に対する指示(すなわち間接表現)のいずれかを記憶する閉包要素コアセル・・・本発明による構造的演算装置。コアセルは閉包簡約化を含む構造演算を実行できる。
数値ALU・・・基本的な数値・論理演算を実行できる数値ALU、コアセルは数値演算用の数値ALUを利用する。
フル・レジスタ・・・コアセル内で全てのブレーンを通って延びるレジスタ。
コア・ワード・・・コアセル内のフル・レジスタの内容制限レジスタ・・・価/指定型の閉包セル要素を含むような寸法の制限された量のブレーンを介して延びるコアセル内のレジスタ。
要素ワード・・・制限レジスタの内容またはその制限レジスタと同じ波長を有するフルレジスタの一部の内容ナム(num)ワード・・・一つの値または指定を表わす要素ワードの部分タグ(tag)ワード・・・ナムヮードにおける表現の特徴を示すタグを有する要素ワードの部分リダクション(簡約)・・・利用される特定のプログラミング言語の規則に従って閉包を書換え/再構築すること。
ビヘービア(行動)・・・系列または一点で統一された系列の代案のような時間構造。“1″は原則として行動でありうるというような集合理論における数学的用Mr空集合Jとの類似において変質して用いられる。
発明の目的本発明の目的は宣言的プログラミング言語を存する計算装置を提供することである。
本発明の他の目的はりダクシタンプロセッサとして働く計算装置を提供することである。
本発明の更に他の目的は、簡単で、プログラマに、全てのハードウェア関連の細部から抽出させ、書くのに時間がかからず、エラーも少ない、プログラミング言語を有する計算装置を提供することである。
本発明の更に他の目的は、プログラミング言語のような一つの言語、オペレーティングシステムおよび通信プロトコルを有する計算装置を提供することである。
本発明の更に他の目的は、その結合方法として単一化を存する関数型言語を実行できる計算装置を提供することである。
上記目的は、計算装置を構成することによって実質的に達成され、その計算装置は以下のものを含む。
イ) 各演算性能の向上を与えることができる情報を各各が育する複数の記憶セル手段を含む能動記憶手段、口) 前記能動記憶装置に接続された少なくとも1個のボート手段、およびハ) 前記少なくとも1個のボート手段に接続された少なくとも1個の環境手段。
好ましくは、上記計算装置は、ボート手段に与えられた信号系列と能動記憶手段内の少なくとも1個の記憶セルに記憶された系列(記憶系列は未定義の系列要素を育する)を比較する手段、および、比較の結果が明らかな差異を示す場合は比較系列を「無Jすなわち矛盾を表わす何かに書換え、他の場合には、上記比較系列を特定の系列に書換える手段を含むのが望ましい。比較手段は一定数のリスト要素のうち少なくとも2つの要素を含むグループについて比較をなすくことができるであろう。
信号系列は、個々のサンプリング期間を有する時間とともに変化するサンプリングされた信号として与えられるのが望ましく、その信号系列は要素のグループのリストであり、各グループは持続時間とその時間の間の少なくとも一つの信号量を含む。各グループにおける所定の数のリスト要素は、各対が時間と信号量の組合せを含む、対を2つ与えるのが適当である。
上記ボート手段の1つを少なくとも他のものと同期させ、各持続時間の間に上記ボートからの信号量の並列表示をなす手段を備えることができる。別々のボート上の信号量は同時に取出してお互いに比較できる。
記憶セル手段は、抽象構文の明示または暗示の符号化の形式でコンピュータプログラムを記憶するようになっている能動記憶構造に備えるのが望ましい。この場合、構文は式の助けを借りていくつかの抽象オブジェクトを表現し、各記憶セル手段は、適当なデータおよび/またはプログラム構造の形式で一度に前記1つの構文式の少なくとも一部を記憶できる。
各種の式はまた、それがプログラム形式であることを示す、それに対応する種類の式を存することができる。
この場合、全てのプログラム形式はそれ自身に簡約されるようになっており、従ってそのままになっている式である。これによって、任意の種類の他の言語に対してインタプリタおよびコンパイラを書くことが可能になる。
構文式を含む上記記憶セルと協同する書換え手段は所定の書換え規則に従がって構文式を書換える。
発明の要約本発明による計算装置は、ハードウェアで作られた、機械語でもある宣言型プログラミング言語を有するコンピュータであることが望ましい。しかし、全ての電子装置と同様、今日では本発明による計算装置の配線もまた、インタプリタまたはコンパイラを備えた一般型のコンピュータでシミュレートできた。このような機械の例は、M68000プロセツサ(たとえば5un3)を基礎とした機械である。しかし、本発明に従がって、その機械は単一化(ユニフィケーション)能力が備わっているボートを存する。
リダクションの実行実行されるプログラムは閉包の方向グラフによって表現できる(この場合、プログラムの各部は閉包によって表現される)。実行の間に、閉包の方向グラフは用いられる言語のりダクション規則に従って徐々に簡約(リダクション)される。
実行可能な閉包がなくなったとき、プログラムの実行が終了する。閉包の方向グラフは本構造とみなすことができる(木の各節点が閉包で、最上の節は根と呼ばれる)。この場合、リダクションの実行は通常、逆さの木構造を簡約すること、すなわち根から最も遠く離れ、かつ根に向かって働く木の部分を簡約することによって遂行される。この種の実行は、要求駆動実行と呼ばれる。すなわち、プログラムの他の部分の実行結果に依存するある部分の実行はその結果が得られるまで延期される。
図面の簡単な説明本発明のより完全な理解、および本発明の他の目的、利点のために、添付図面に関連した次の既述を参照する。
第1図は、本発明による計算装置の概略図である。
第2図は、ボートでの信号列を示す図である。
第3図は、本発明による計算装置の一実施例の概略ブロック図を示す。
第4図は、第3図に示された実施例におけるオブジェクト記憶の記憶セル内の種々のフィールドの使用態様を概略的に示す。
第5図は、オブジェクト記憶の記憶セル内で関数を記憶する方法の例を示す。
第6図は、環境に至るボートの一実施例を示す。
第7図は、いわゆるH−ボートの一実施例を示す。
第8A図、8B図および80図は、第3図に示された計算装置の実施例における構造演算装置内の種々のレジスタを示す。
第8D図は、構造演算装置の一実施例を示す。
第9A図〜9F図は構造演算装置における種々のデータ記憶形式を示す。
第10A図〜IOH図、IIA図〜IIG図および12図図〜128図は本発明による計算装置の動作の例を第1図に概略的に示された本発明による計算装置は以下では能動オブジェクト記憶と呼ぶ能動メモリU1を含む。複数の記憶セルを含むのでその記憶は能動的であり、各記憶セルは演算性能を向上する機会を存する。各オブジェクト記憶セルはいくつかの記憶フィールドに分割されていることが望ましく、オブジェクト記憶を介したの連想サーチが記憶フィールドの内容についてなされてもよい。1つの記憶セルは1つのセル閉包を記憶できる。
1つのセル閉包は閉包要素として他のセル閉包に対する指定を記憶できる。関数は、互いを指定するいくつかのセル閉包を含む閉包(トリー)木として記憶されることができる。これらの特徴を以下にさらに示す。
オブジェクト(目的)記憶は本発明による計算装置の内部行動を与える。オブジェクト記憶において、各ボートに対するいくつかの内部動作PRI、PR2,・・・PRnが異なった場所、すなわち異なった記憶セルに記憶される。多数のボートU2〜USが能動オブジェクト記憶U1に接続されている。複数のボートU2に対する入力信号RW、2〜RWIIsはセンサによって提供され、あるいは情報は計算装置の外部の装置すなわち実世界の環境にある装置によって与えることができるであろう。
ビヘービア(行動)ビヘービアは時間とともに変化することがある基本要素の構造である。従って、ビヘービアは時間構造であるが構造が変化する理由を示すものではない。時間構造は組立てられたプロセスの状態と考えてもよい。本発明による計算装置は特に宣言型プログラミング言語以下(Hという)に適合する。宣言型言語は命令型言語と同様、状態および遷移の明示の特定はない。代りに、全てのビヘービアは表現によって特定される。従って、ビヘービアという用語は、時間構造、すなわち系列または系列の代替物である。それはまた、数学的集合理論における空集合の使用法と比較して、全ての可能な値に対して、変質した形質で用いられる。
ボートは入力信号を能動オブジェクト記憶に適合した形式、たとえばディジタル形式に変換し、能動オブジェクト記憶内の情報と比較できる形式で、入力信号を提供する。この情報は問題としているボートに対してはローカルであり、1個または数個の代替的なビヘービアPR1、PR2−=PRnを含む。
ボートUi (iは2〜5)はビヘービアとして与えられた実世界の環境の各部を見ており、そのビヘービアは値の果しない時間的系列によって構成される。系列は、以下に述べるように、計算装置内に木構造形式で記憶可能である。このような系列の例が第2図に示されている。
サンプリングされた信号の系列は時間とともに変化しつる。すなわち、サンプリング期間は、第2図から明らかなように、コンピュータプログラムによって選択された場合でも、周辺物又は環境によって与えられた場合でも、別々でありうる。信号系列はここでは要素対のリストとして与えられる。各要素対は持続時間とその間の信号量からなる。時間間隔あたり2個以上の信号量を有することも可能である。これはたとえば、持続時間あたり2個以上の信号量を扱う可能性のあるボートまたは持続時間あたり1個の信号量を扱う可能性を各々が有する複数個の並列ボートによって実現できる。この場合、各ボートは互いに同期している。
ビヘービアの単一化(統一化)本発明によれば、ボートを介しての周辺物又は環境に至る入力および出力はその両側すなわち計算装置内での内部ビヘービアおよびその周辺物又は環境での外部ビヘービアに与えられたプロセスの単一化によって遂行される。能動オブジェクト記憶内に与えられた関数型言語Hで書かれたプログラムは局部ビヘービアを生成する。実世界のビヘービアは実時間で1プロトコルを記述する。
従って、周辺物へ向う計算装置のボートはその計算装置から見える周辺物の実際の行動(ビヘービア)を登録する。それがコンピュータ内で記述されたプロトコルで単一化される。これが本発明による計算装置内でどのようになされかを以下に説明する。計算装置の内部ビヘービアおよび外部ビヘービアの両方がこうして同様の態様でモデル化される。従って、この方法は、計算装置を実時間動作をなすのに極めて適したものにする動作の非常に秀れたやり方である。
こうして、計算装置は、周辺物へ向うボート上に与えられた信号系列を、能動オブジェクト記憶内の少な(とも1つの記憶セル(たいていの場合、複数個の記憶セル)に記憶された系列と比較するための少なくとも1つの比較可能性を含む。
単一化動作の際、実世界の環境のビヘービアと合致しない代替的内部ビヘービアは削除される。正しいプログラムは、単一化動作の後桟された代替ビヘービアのうちの1つだけを有すべきであり、このビヘービアは問題にしているボートでのビヘービアと一致しなければならない。代替的内部ビヘービアのいずれもが、問題のボートでの実世界環境と対応しない場合、単一化動作はその結果として何も与えず、プログラミングエラーと見なされる。
Hボート上記人力/出力ボートの記述は、デユアリング(during)構造以外のデータ構造の入力および出力を扱うことが可能なように一般化できる。この場合、持続時間と信号量を統一することによって内部ビヘービアを外部ビヘービアで統一する代りに、ビットパターンの単一化をなすことか可能である。入力信号はディジタル信号でよい。また、入力信号は、H言語プログラムのような、データ構造またはプログラム構造を表現できる。たとえば、1ボートの記憶セル内の記憶セルフイールドをそのボートの入力でのビットパターンに統一できる。
例:内部構造、アプライ(apply)($ 1と$2)はその入力でのビットパターンで統一できるので、最終の単一化された内部構造はアプライ(apply) (+ 1ist (12))となる(これは第11A図および第11B図に示された構造である。ここで$1および$2は任意のビットパターンを表わす。$1は“+”に対する命令コードを表わすビットパターンと統一され、$2は”1ist (12)“を表わすビットパターンと統一される。
Hボート(これはH言語コードを受けるものである)を介して、プログラムをオブジェクト記憶にロードできる。Hポートはまたプロセッサ間で用いることができるので、プロセッサはプログラムまたはデータまたはその両方を転送できる。
転送プログラムコードは最初にデータとして識別され、それの即時実行が防止される。Hボートはまた、本発明による計算装置と従来から公知で、従って従来のものでもよい他の種類の計算装置との間のインタフェースとしても利用できる。
オブジェクト記憶第3図に示された計算装置の実施例において、オブジェクト記憶lは、以下に説明するように、各々がいくつかの記憶フィールドに分割された多数の記憶セル2を含む。オブジェクト記憶の正確な構造は実際の発明の一部ではないので、詳細には説明しない。オブジェクト記憶lとして与えることのできるオブジェクト記憶は同時係属のPCT/SE 91100513に記載されている。
構造演算装置オブジェクト記憶の各記憶セルはいくつかの閉包要素を含むセル閉包を記憶できる。l記憶セル内の各ビットセルを構造演算装置3に接続するために十分な輻をもったメモリバス配列BUS、−BUS、を介して、上記オブジェクト記憶1は上記構造演算装置3に接続されている。各記憶セルの各ビットは、バス配列を介して他の全ての記憶セルの対応ビットに接続されている。構造演算装置3は、簡約されるべき閉包がリダクション(簡約)動作の間に一時的に移動させられるオブジェクト記憶1の特定の一部でもよい。しかし、以下に説明するように演算装置3の特定の構造をもつことも可能であり、それによって高速かつ直接のりダクション動作が可能となる。
演算装置3の正確な構造は実際の発明の一部ではないので、詳細には説明しない。演算装置3として与えるのが望ましい装置は同時係属出願PCT/SE 91100514に記載されている。
第3図に示された計算装置はメモリバス配列BUS。
〜BUS、の周囲に形成されるので、実際上は全てのデータ演算装置がその計算装置に直接アクセスできる。このようにして、演算装置3とボートは能動オブジェクト記憶に属するものとして、すなわちその内部の特別のセルとして見なすことができる。
中央制御装置中央制御装置CUはオブジェクト記憶および装置3の両方を制御する。同様に中央制御装置CUによって制御されるいくつかのボート4,5.6および11は装置3に接続されている。ボート4,502つは、環境に接続された単一化ボートとして示されている。センサすなわち計算装置によって11111E+され、および/またはそれを制御する装置のような外部装置7,8はそれぞれ各ボートに接続されている。ボート6は別の計算装置9に接続されたH−ボートであり、その計算装置に導入されるべきプログラムを転送する。ボート11は、別の計算装置12(たとえば、連絡されている計算装置1〜6.10゜11、CUと同一種類)に接続されたHボートである。
第3図に示された種類のいくつかの計算装置は、そのメモリバス装置と各装置内の一時的記憶閉包(図示せず)の間の伝送に直接内部接続され、多並列計算装置を構成することができる。このようにして、全体的探索可能性を維持できる。しかし、適用分野によっては、2,3個の計算装置または多並列計算装置をHボート11によって接続して、各計算装置が個別の計算装置として働き、かつ個別の処理の間にそれらの間でプログラムおよび/またはデータを交換するようにするのが便利である。Hボー)11は別の種類のプロセッサに対するインタフェースとして用いることもできる。Hポートがプログラムを伝送するとき、その伝送はデータ伝送と同一であり、計算装置はそれらを同一の態様で扱う。
数値ALU特別の種類の特別の動作をなすための余分の装置IOを装置3に接続することもできる。このような装置の例は、数値演算装置で、以下では数値ALUと呼ぶ。
しかし、余分の装置は比較目的その他にも利用できる。数値ALUは技術的には一般的なほとんど任意のALUでよいが、本発明による計算装置に特に適した数値ALUは同時係属出願PCT/SE 91100515に記載され装置3を含む能動記憶3は、ボートの1つ(たとえば4)に与えられた信号系列と他のボートの少なくとも1つ(たとえば6)に与えられた少なくとも1つの系列を比較する少なくとも1つの比較可能性を有する。この比較可能性は、持続時間(デユアリングタイム)と信号量の形式の値を有する間隔対のような値を存する閉包を備えることによって記憶またはボートが直接備えることができる。しかし、余分の装置10において単なる比較をなすことも可能である。また、2つの外部ビヘービアを比較するとき、その比較が差を与える場合(すなわち環境へのボートでの持続時間または信号量が等しくない場合)比較系列はnothing (無)に書換られる。他の場合には、比較系列はillでかつ同一の特定系列に書換えられる。
こうして、能動オブジェクト記憶】、3は、抽象構文の明示または暗示の符号化形式のコンピュータプログラムを記憶、実行できる構造を有することになる。構文は表現の助けを借りて多数の異なった抽象オブジェクトを記述する。各記憶セルは、適当なデータおよび/またはプログラム構造の形式で構文表現の少なくとも一部を一度に記憶できる。構文について以下でより詳細に説明する。
オブジェクト記憶能力オブジェクト記憶1は通常のRAM型メモリよりかなり秀れた知能を育する。それは連想的であって、通常のRAM型メモリによって与えられる「読み」、r書き1以上のサービスを与えることを可能にする。
上述したように、オブジェクト記憶は、各々が数個の記憶フィールドを含む記憶セル2に分割されている。与えられたサービスは高水準にある。たとえば、特定のデータ要素が個々の記憶セルのどこにあってもそれの全ての出現を発見し、その発見された特定のデータ要素を全体的に(すなわちオブジェクト記憶全体の内部で)、唯一のメモリ命令を用いた新しい値に書換えることが可能である。オブジェクト記憶は連想的であるから、この書換え動作は影響を受ける記憶セルの数に関係なく、2つの物理的メモリサイクルで実行できるだろう。
記憶セル記憶セル2の実施例が第4図に概略的に示されている。
それは2種類の要素を記憶でき、記憶されるべき要素に特に適合した記憶フィールドを含む。第4図においてこれらのフィールドは記憶されるべき要素と同じ名前が与えられている。
各記憶セルは、次のリストの性質のうち少なくともいくつかを記憶するようになっている。
・ 上記セルの表現(式)が簡約されるべきかどうかを示すマーク。
・ その表現が、それの種々の性質を表わす木のメンバであるかどうかを示すマーク。
・ その表現がいかに生成されるかを示すマーク。
・ その表現が多数の繰返しビヘービアとなるかどうかを示すマーク。
・ その表現だけが、別の記憶セルに記憶された他のりストメンバを有するリストの一部であるかどうかを示すマーク。
最初の種類の要素(以下、属性要素と呼ぶ)は記憶セルの異なった状態を記述する。この種類の1つの要素は、LASYでセルが「遊んでいる」 (この場合、セルの内容の残りは受動的な情報とみなされ、すなわち実行可能な状態にある)か、それとも「待っている」 (セルの評価が延期され、実行可能前の結果を待っている)ことを示す。
他の属性要素はTYPEで、UD−ド(par、 seq、 apply。
1ist、 unifYなど)を含む。
第2番目の種類の要素(以下、オブジェクト要素と呼ぶ)は、識別子、環境または値を記述する。すなわち1、mtLラノ!素+tlDENTIFIER,ENVIRONMENT、 VALUE/DESテある。これらのオブジェクト要素は、プレーンHEADおよびNUMに備えられたコアレジスタ(第7B図、7C図参照)の部分に記憶されるようになっている。これらの要素の各々は要素ワード(これはナム(unm)ワードとタグ(tag)ワードに分割される)を含む。
タグワード第2の種類の閉包要素はナムワードの特徴を示すタグワードを有する。タグには間接タグと直接クダの2種類あり、間接タグは識別子および環境用に用いられ、直接タグは単純な値などのために用いられる。
間接タグの例は、cls canonおよびopenである。タグワードがclsならば、ナムワードが、簡約可能であるかもしれない閉包を表わすことを意味する。タグワード場合、ナムワードが、挿入リストである閉包を表わすことを意味する。
直接タグの例はdisCr、C0nt、1」nuSedおよびnothingである。タグワードがdiscrである場合、ナムワードが整数であることを意味する。タグワードがcontである場合、ナムワードが浮動小数点値であることを意味する。
タグワードがunusedである場合、ナムワードが意味を欠いていることを意味する。タグワードがnothingである場合、ナムワードが何も表わさない、すなわち記憶セル内の識別子フィールドが識別子要素を含む場合、その記憶セルの状態は構造演算装置3(以下、コアセルと呼ぶ)に転送できる。記憶セルフイールドVALUE/DESの各々は別のセル閉包を示す識別子を含み、この他のセル閉包へのリンクを与えることができる。環境フィールドは、閉包の環境を与える綱部すなわち木の根閉包を示す識別子を含むことができる。しかし、環境フィールドはまた、他の使用も可能である。環境は、生成された全てのセル閉包の環境における生成子の識別子を記憶することによって、構造の生成子を追跡できる。
たとえば、副木(サブツリー)(ここでは同一の名前を育する全ての記号は同じ事を表わす)の全ての閉包セルは同じ環境をもつことによって分類可能である。
このようにして、全体の構造が、根を介して、たった−回の操作で木の1つの閉包からアクセス可能となる。
指定機能は父親から息子への指揮されたリンクとみなすことができる。すなわち、閉包要素はセル閉包を一義的に表わす。こうして、連想型の目的記憶を有するマシンの動作は閉包の方向性グラフとして表わすことができる。
従って、1つの閉包の環境が与えられると、この環境内の根閉包を見つけることができる。環境の根閉包は、その記憶セルのフィールドWHE REにおいて特定のマーク(たとえば“1“)を備えている。環境の節点閉包はフィールドWHEREに別のマーク(たとえば“0”)を備えている。
例2つの並列の値組合である表現、idt =list(par(123)par(456)を記憶する記憶セルの例が第5図に示されている。第1の並列組合せpar(123)はアイデンティティ(識別子) xdzを存し、第2の並列組合せpar(456)はアイデンティティid、を有する。水内でアイデンティティld2を有するセル閉包を包む根記憶セルはclsがタッグされており、LASYフィールドに表示eXeCを存し、WHE REフィールドに設定されたl″を存し、TYPEフィールドに表示1istを育し、最初の2つのVALUE/D E Sフィールドにidtおよびxdsを育する。これらのフィールドのタグは、それらの内容が正規的(canonjcal)閉包セルと間接的にリンクされているか故にcanonマークである。アイデンティティid、を有するセル閉包を含む節点記憶セルは、WHEREフィールドに設定された“0”を存しTYPEフィールドに表示parを存し、最初の3つのVALUE/DESフィールドに記憶された別々の値1.2および3を有する。従って、これらのフィールドのタグはdiserマークである。
アイデンティティtdsを有するセル閉包を含む節点記憶セルは、WHEREフィールドに設定された“0”を有し、TYPEフィールドに表示parを有し、最初の3つのVALUE/DESフィールドに記憶された別々の値4.5および6を有する。従って、これらのフィールドのタグもまたdiscrマークである。
外界へのインタフェイスとしてのボート上述したように、本発明による処理装置は、それに対するデータ入力/IOH力用の1個または数個のボートを備えている。各ボートは、処理装置の外部環境への連絡を与える装置である。ボートはオブジェクト記憶1(第3図参照)における変換インタフェース(図示せず)に接続されていることが望ましい。ボートは、それが望ましくは機能が似た4個の記憶セルを含み、かつオブジェクト記憶セル2(第4図参照)と両立し、故に、オブジェクト記憶の延長とみることができる。ボートは統一化を通して入力/出力動作を実行する。
内部ビヘービアオブジェクト記憶は、各ボートに1個のビヘービアが与えられている、プロセッサの内部ビヘービアを与える。
ビヘービアは時間構造の意味論的意味で、閉包構造で表わすことができる。時間構造は、終りのない時間系列の値によって構成されたプロセスの状態とみてもよい。
外部ビヘービアボートに対する入力信号はセンサまたは、プロセッサの外部すなわち現実の環境にある装置によって与えることができる。ボートは入力信号をオブジェクト記憶フォーマットに適応したディジタル形式、すなわち閉包表示に変換する。この閉包表示はプロセッサの内部ビヘービアと共通性のある時間構造すなわちビヘービアである。
従かって、プロセッサの観点からは、この時間構造は外部ビヘービアと見ることができる。
ボートを介しての入力および出力は、その両側に与えられたプロセス、すなわちプロセッサの内部ビヘービアおよびその環境の外部ビヘービアの統一化によって遂行される。内部ビヘービ了、外部ビヘービアの両方とも同じ態様でモデル化される。これは、プロセッサを実時間動作させるのに極めて適したものにする非常に秀れた方法である。
外部ビヘービア、すなわち時間系列の例か第2図に示されている。抽出された信号系列は時間とともに変化しつる。すなわちサンプリング周期は第2図から明らかなように異なることがあり得る。ここで信号系列は、要素対のリストとして与えられる。各対は持続時間とその間の信号量を含む。信号量はgiで表示され、持続時間はtiで表示される(ここでiは1〜6の数である)。
第3図のボート4のような環境へのボートはたとえばセンサ7に接続できる。このボートでのインタフェースは一般的な観点から全ての形式の信号を扱うことができる。しかし、このような種類のインタフェースは複雑で、しばしばシステムに外乱をもたらす。したがって、望ましいインタフェースは次の性質を有しているべきである。
1、信号は一定時間間隔で測定される。測定された信号は次の測定まで一定であるとみなされる。
2、 ボートによって決定される一定周期、マシンのプログラムによって決定される一定周期、プログラムまたは外部信号によって決定される一定間隔で時間を与えることができる。
3、 測定信号はマシンにディジタル形式で与えられる。
4、 ディジタル化信号は論理であるか、整数か浮動小数点数を示すことのできるディジタル形式に符号化される。
こうして、本発明による計算装置は、通常のプロセッサと同様、値を挿入も出力もしない。本発明のプロセッサにおいては、ボートはプロセッサ内のプログラムとプロセッサに対する環境とみなされる。計算装置は関数型言MHに適合する。
インタフェースは、その一方側で信号として他方側でプロセッサプログラムのH構造として現われる一連の事象が与えられるようなものである。環境は物理的ピクチャの一部を設定し、プロセッサもその一部を設定する。これはボートまたはインタフェースの両側から同時になされるので両方とも同じ事象のピクチャとなって、計算装置は、接近することか可能な正確な実時間に近い程、実時間を描くことになる。
プログラムは能動オブジェクト記憶に記憶され、内部ビヘービアを生成する。プログラムの実行は、計算装置内のプログラム、および環境の両方とも、インタフェースにおける同じ実時間系列の事象を見ることに基づいている。
プログラムは、値と持続時間の対の終りのない長いリスト(すなわち各信号値は持続時間の間継続する)としてインタフェースを記述する。従って、各間隔の間に、1対の信号値と持続時間を含みながら、インタフェースはその持続時間長とその信号値を記述する。これら全ての対が連続的に与えられ、ボートは実時間ビヘービアを同じ形式のリストに変換する。
計算装置に対する入力および出力は統一化によって遂行される。このことは、各間隔内の持続時間と信号値はボートの両側で同様に作られることを意味する。
プログラムは特定の信号量値を特定することができる。
さもなければ、全ての可能な値を示す特定の記号、たとえば$を用いることによってその信号量値を特定しないままにすることができる。
正しいプログラムは、統一化動作の後に残された代替ビヘービアのうちのたった1つを育すべきであり、このビヘービアは問題にしているボートでのビヘービアと一致しなければならない。代り内部ビヘービアのいずれもか当該ボートでの実世界の環境と対応しない場合、統一化動作はその結果としてnothing(無)を与え、これはプログラミングエラーとみなされる(nothingは矛盾を意味するため)。統一化動作の後、2個以上の代替ビヘービアが残される場合も、プログラミングエラーとみなされる。
内部ビヘービアが特定の信号値(信号量とも呼ばれる)を特定するとき、この特定信号値は環境に出力される。内部ビヘービアが信号値を未特定のまま、特定の信号値は環境から入力される。
内部ビヘービアが間隔内の特定の持続時間を特定する場合、環境は任意の持続時間長を許容する。内部ビヘービアが持続時間を不特定のままにするとき、環境は持続時間を決定する。
こうして仕組みは対称的になる。
量を含む。
ラムに記述される。
3、環境はこのような間隔を上記したように種々の態様で記載してもよい。
4、 ボートはその両側で信号量を画定する。このことは、信号量が決定されなければならないことを意味する。
計算装置のプログラムは計算装置に向けられたボート側で持続時間または信号量を設定する。出力は一定の持続時間の間になされ、かつ(または)信号量が環境の方に向いた側でボートの導体に送られる。
環境へのボートの実施例間隔の入力および/または出力用のボートの一実施例が第6図に示されている。
ボートは、バス配列DUを用いて、構造演算装置3またはオブジェクト記憶lへ直接に接続される。バス配列DUの各バスはたとえば38本のワイヤを育するバスを表わす。ボートは中実装置CUによって制御される。ボートは識別子レジスタP IDを含む。レジスタP+oに記憶された識別子はオブジェクト記憶l内の識別子として用いることができる。すなわち、ボートをオブジェクト記憶内のセル閉包にリンクするために用いることができる。この識別子は、プロセッサ内で内部的に用いられるだけである。ボートはまた、レジスタPIDと同様に用いることができる識別子レジスタCE、。を含む。ボートはまた、各々本来的に構成されオブジェクト記憶l内の記憶セルと同様に動作するいくつかの記憶セルCE ou、 CE L−IT、CE、1.tTおよびCEIDを含む。
各記憶セルは、少なくとも3つの閉包要素(たとえば、during、持続時間および信号量)を記憶するための少なくとも3つの記憶フィールドを記憶できる。
少なくとも上記最後2つの閉包要素はVALUE/DES(値/指定)型の記憶フィールドに記憶できる。表−ルドは省略できる。
しかし、第6図に示された実施例では、duringは、所定の機能名(duringコード)とともにTYPEフィールドにあるTYPE ’apply (’@)の形式になっている。機能名はボート記憶セルの最初のVALUE/DESフィールドに記憶される(全ての機能名(たとえば+−*1)はTYPE ’apptyに属する) o duringコードは機能定義を示す識別子であり得、それはオブジェクト記憶に記憶される。
識別子idはVALUE/DESフィールドにも記憶することができる。この識別子はボート構造をオブジェクト記憶内のdur ing構造にリンクする。
識別子を含むフィールドが必要でない場合、3つの■ALUE/DESフィールドのみが第6@の実施例において必要となる。しかし、unusedとマークされた第4のVALUE/DESフィールドを与えてボートレジスタを計算装置の他の記憶セルと両立させることができる。
しかし、VALUE lN10UT用の余分の装置を第4のVALUE/DESレジスタを接続することもできる。これによって、1グループの値すなわち持続時間と2種類の信号量に対するボート−ボートが形成される。
ボート内の各記憶セルはまた属性フィールドも存する。
少なくともLAS前記憶セルはバスW@+ 、 Wll、 WTIW vl、 Walを内部接続できる(各バスは、たとえば38本のワイアを存し、各レジスタのビットセルにビット態様で接続される)。指標■はレジスタのduringコードフィールドに接続可能なバスを示し、指標Tはレジスタの接続時間VALUE/DESフィールドに接続可能なバスを示し、指標Vはレジスタの信号量VALUE/DESフィールドに接続可能なバスを示し、指ffEはレジスタの余分のVALUE/DESフィールドに接続可能なバスを示す。指標2は環境へ向かって接続されたバスを示し、指標lは場合によっては変換インタフェース(図示せず)を介して能動オブジェクト記憶1.3に接続されたバスを示す。
′9を含むTMPHフィールドおよび実際は省略されるduringコードを含む第1のVALUE/DESフィールドをもつことが可能であることに注意すべきである(それらの情報は常に同一で、この事実は中央制御装置CUで実現されるから)。従って、2つのVALUE/DBSフィールド(1個は持続時間用およびもう1個は信号量用(図示せず)を含むだけの記憶セルを有するボートを備えることが可能である。
ボートの図示された実施例の4個の記憶セルは、次の先行閉包、実際の閉包、次の閉包および将来の閉包に対する識別子を記憶する。記憶セルは所定の場所を占めることが可能で、その場合、それらの全体の内容はそれらの間で転送可能である。レジスタ内の各ビットセルの適当な構造は構造3のビットセルと同一の構造をもつことか可能で、同時係属出願PCT/SE91100512およびPCT/SE 911005 I 3に示されている。
しかし、3個の第1記憶セルをそれらの名前を変更すること(これは中央制御装置CUからの制御によってなされる)によってお互いに位置を変えることができるように配列することも可能である。
前記ボートはいくつかの記憶セル(たとえば1個)を備えることができる。
タイムカウンタおよびタイムコンパレータボートはタイムカウンタT0゜1を含む。それは中央制御装置CUからのクロック信号CLOCK、によって制御され、時間を測定するものである。それは外部リセット信号、制御装置CUからのリセット信号のいずれかによってリセットできる。タイムカウンタTool、、lTは第1のセレクタ5ELIに接続され、その第1セレクタは中央制御装置CUによって制御されて、タイムカウンタT coいアの出力を記憶セルの時間記憶フィールドに接続可能なバスWTtに直接接続するかタイムコンパレータT campの第1人力に接続する。タイムコンパレータT COMFの第2人力は外部時間出力である。タイムコンパレータの出力は1iIfrIIJ装置CUにも転送される。
前記ボートはまた、外部値入力出力ボートビンVALUE lN10UTを存する。そのビンは出力信号用の変換器C0NV、、(たとえばディジタル/アナログ変換器)に接続される。ビンVALUE lN10UTビンは入力信号用の変換器(たとえば、入力信号のサンプリングをなすアナログ/ディジタル変換器)にも接続される。サンプリング時刻は、タイムコンパレータT eOMFの出力またはタイムカウンタT 0OLIN? (図示せず)へのリセット信号によって与えることができる。記憶セルCEDu1CEL1.T、およびCENtXTの信号量レジスタにflilB可能に接続可能なバスWVIに接続されたセレクタSEL、は、信号量がボートとの間で出入れされるべき場合、中央制御装置CUの制御の下に選択動作をなす。制御装置CUは最初に、環境に接続されるべきレジスタを含む記憶セル内のレジスタの内容を読み、それがレジスタ内の値が随意で、任意の可能な値と交換できるということを意味する特定の記号$を含むかどうかを確認する。
その場合、制御装置CUはそれに応じてレジスタに結合されたボートセレクタを制御する。
より複雑なボートを形成することも可能である。たとえばVALUE lN10UTの信号量は、入力値用の変換回路C0NV、、および出力値用の変換回路C0NVOυ丁に記憶された表現によって変換できる。変換機能は、たとえば、各々が別の種類の信号量信号値その他に対するいくつかの積分であり得る。
各持続時間内に2つの値(1つは持続時間の最初でもう1つはその最後)を取り、その1つをVALUE/DESフィールドに直接記憶し、傾斜計算装置(図示せず)に2つの測定値と持続時間を供給することも可能である。傾斜計算装置の出力は、たとえば、余分のVALUE/DESフ(−A、ド(図示せず)すなt)ちVALUE lN10UT用の余分のセレクタ装置に記憶できる。
信号量の出力取出されるべき情報が記憶セルCE、、に与えられている。従って、セルは情報during 持続時間、信号量を有する。このレジスタ内の信号量は周知であり、従って取出されるべきである。その信号量は記憶セル内の信号量レジスタから取出され、かつ駆動ステージとして作用するセレクタSEL、および変換器C0NV、、Tを介して出力される。
信号量の入力記憶セルCEDI+の情報は、during 持続時間、iである。このレジスタの信号量はまだ知られておらず、そのレジスタは信号量を受ける用意がなされている。信号量は入力/出力のボート信号量から取られ、A/D変換器C0NV、IIにおいてディジタル化され、記憶セルCE: DUの信号量レジスタに供給される。
持続時間は計算装置プログラムによって設定される記憶セルCE、、内の情報は、during 持続時間、信号量である。従って、持続時間は既知である。タイムカウンタT couアは持続時間の始めに中央制御装置tcUによってリセットされる。カウンタT Co1t?の連続的に上昇する時間が、記憶セルCE、、内の時間レジスタ内の時間とタイムコンパレータT co□と比較される。持続時間はこれらの時間が同じ時に終了する。
記憶セルCEい、は空になり、記憶セルCEsmxtはこの持続時間の間に満たされる。次の期間へ移行する際、記憶セルCEDI+の内容は記憶セルCELAITへ移され、記憶セルCE□。内の信号量は記憶セルCEI、oに移される。
持続時間は環境によって設定される記憶セルCE□の情報はduring $、信号量である。従って、持続時間は未知であり、環境がこれを決定する。タイムカウンタT C0ff1lアは持続時間の最初に外部11mによってリセットされる。
タイムカウンタT coい、内の連続的に上昇する時間は記憶セルCEDl、の時間レジスタに供給される。環境が次の外部リセットを与えるとき、持続時間が終了する。従って、外部リセット信号はセレクタSEL+を制御しながら、タイムカウンタへの接続を直接にまたはタイムカウンタからのゼロ信号によって分離する。
この持続時間の間に、記憶セルCE LA、アは空になり、記憶セルCE□1は満たされる。次の期間へ移行する際、記憶セルCE0の内容は記憶セルCELAITへ移され、記憶セルCE□、アの内容は記憶セルCHD、へ移される。
簡単な例ボートの動作を説明するために、簡単な例を以下に示す。我々が今、2つの異なった系列、(第1の系列は秒毎の所定の信号量(たとえば値″17″)および全て所定の持続時間(たとえば1秒)を有し、第2の系列は全て所定の信号量(たとえば1.2,3.4など)を有するが所定の持続時間を有しない)を検出するものとする。
利用されるボートは、ボート1と呼ばれる。閉包表示はunify (port、 r内部ビヘービア」)ここで「内部ビヘービア」は全ての代替系列を示すatt動作すなわちaft (seq (during (is 17) during (Is $) during形式の大きなデータ構造である。
今、入力信号系列が上記構造と統一できる場合、その入力が受取られ、適当な動作を取ることができる。受取られた系列の一つの例は((Is 17)(IS 0)(Is 17)(Is 99)(Is 17))で、これは上記内部ビヘービアの第1系列と統一できる系列である。受取られる別の系列は((2S 1)(4S 2)(Is 3))で、これは内部ビヘービアの第2の系列と統一される。受取られない系列の例は、(Is 2)・・・・・・である。その理由は、信号量、すなわち2か内部ビヘービアの2つの系列に与えられた信号量と統一できないからである。
Hポートの実施例第7図に示されたHボートの実施例は、本発明による2つの別々に計算を行なう計算装置を互いに結合するものである。IIfの計算装置に属するHポートの半分はTYPE]イールドTYPE11.4個(7)VA L U E/D ESフィールドV/ D z、V/ D I!、V/ D 11 V/ D I<および識別子レジスタID−++を含む。第2の計算装置に属するHボートの半分はTYPEフィールドTYP E!!、4個(7)VALUE/DESフィールドV/D、、。
V/Dtt、V/D、*、V/D、4および識別子レジスタ■Dpz+を含む。
第7図に示された実施例において、2つのボート半分部のTYPEフィールドとVALUE/DESフィールドはバスで互いに内部接続されている。伝送は連続バスを通して行なわれる。
物理的内部接続はできなるだけ少ないのが便利であるから、最も秀れた動作態様は、ただ一本の連続バスを通じてボート半分部間でデータを転送することであろう。
しかし、このような転送方法は、記憶フィールド当り1本のバスを用いて転送を行なう場合よりも、中央制御装置tCU内の内部制御回路が複雑になってしまう。並列データを直列データに(またはその逆)変換するインタフェースは第7図には示されていない。それは当業者にとってごくなじみのものと思われるのでここでは説明を省略する。
Hボートの各半分は、自己が属する計算装置を制御する制御装置CU、およびCU、にそれぞれ接続されている。一方の制御装置CUIは他方の制御装置CU、と同期する同期信号5YNCを与える。伝送がなされるべきときは、Hボートの一方の半分は識別子レジスタ以外の全てのレジスタに特定の信号$を含み、それは制御装置によって示される。その場合0.その信号は他方の半分部の対応レジスタの内容を引継ぐ。
一方の計算装置から他方の計算装置へHポートを介して大容量のプログラムデータを転送する際、識別子は、同じ番号の二重使用を避けるために、識別子番号の内部割当てに適合するようになっている受信計算装置内で変更しなければならない。従って、転送された閉包の各識別子を新しいものに交換し、それを目的記憶内に記憶しながら、木が根から葉へ(これが望ましい)か、または葉から根へ転送される。
H言語ビヘービアプログラミング言MHは形式pta(p、t、aは3個の別々のモデリング変数)の3つのアスペクトを存するビヘービアを利用する。パラメータp、t、aはそれぞれ、並列性、遂次時間、代替動作を形成する。それらは、それぞれ、異なった並列動作、異なった事情および代替ビヘービアを表示する指標とみなすことができる。これら3個のアスペクトは、命令型言語の特別な構成体によって記述された数種のビヘービアを遂行するのに存益である。それらはともに、H言語ビヘービアの中心概念、すなわち核となる。こうして、本発明による計算装置の構成は、これら3個のアスペクトを有するビヘービアを処理するようになる。応用分野によっては、モデリング変数aは、2個以上の値でもよい。すなわち数個の代替事象が同時に起こることがあることに注意すべきである。
構造演算装置(コアセル)上述したように、リダクションがなされるべきに限られた木のセル閉包が転送される特定の構造演算装置3で、リダクション動作を行なうのが望ましい。
構造演算装置3(コアセル)の実施例を簡単に説明する。目的記憶内に表現および値が記憶されるどのように記憶されるかコアセル3内のレジスタに対応物を有しオブジェクト記憶1とコアセルの間には協同がある。
コアセル内のレジスタコアセルの実施例において用いることのできるレジスタが、第8A図〜第8C図に示されており、そのレジスタの構造が第8D図に示されている。
第8A図にレジスタが示されている。レジスタはいくつかのレジスタセルから構成され、各セルは1ビツト情報を記憶できることを図は示している。レジスタが描かれている態様は、レジスタがコアセル内の別々のプレーンを通って延び、各レジスタセルが1ブレーンに位置していることを示す。
第8図はコアセルの全てのブレーンを通って延びるレジスタすなわちフルレジスタを示す。この種のレジスタは、コアセルのNUMブレーンおよびHEADブレーンに位置したレジスタセル内に識別子または値を保持できる。また、コアセルのTYPE、WHERE、LASYおよびCLOS/S IMPLEブレーンに位置するレジスタセル内に上述した状態を保持できる。
第8C図は、コアセルのNUMブレーンおよびHEADブレーンのみを通って延びるレジスタ、すなわち制限レジスタを示す。
第8D図はコアセルの実施例におけるレジスタの可能な構造を示す。コアセルは、ペースレジスタマトリックスと呼ばれる、望ましくは四角に配列されたペースレジスタを有する。ペースレジスタはその側面の1つに沿う主たる行(メインレジスタという)を有する。各々が底部に1個のメインレジスタを有する、ペースレジスタの列は、従属レジスタと呼ばれる。コアセルはまた、識別子レジスタおよび環境レジスタを備えることもできる。
−列の補助レジスタがペースレジスタマトリックスの側面に配置される。
コアセルの実施例において、従属レジスタは第8C図に示されたもの、すなわち制限レジスタでよい。残りのレジスタは第8B図に示されたもの、すなわちフルレジスタでよい。
コアセルのハードウェア構造のより詳細な記述は同時係属出願PCT/SE 9 Ilo O514にある。第9A図〜第9F図を参照して種々のデータ記憶形式で簡単に・ 説明する。動作のいくつかの例を第10A図〜第10H図、第11A図〜第11G図および第12A図〜第12G図を参照して説明する。
単純値第9図に示されるように、リダクションの結果である単純値25がメインレジスタのうちの特定のレジスタに存在する。この結果はセル閉包の一部分であり得る。
ルベル構造ゴールは簡約されるためにコアセルにロードされるものである。第9B図に示されるように、ルベルだけを含むゴール(典型的には他のセル閉包と関係のないセル閉包)がメインレジスタに記憶されている。例は、簡単な数値動作、すなわち、値1.2および3の加算を示している。数値命令(+)が第1のメインレジスタに記憶され、処理されるべき要素は他のメインレジスタに記憶されている。
2レベル構造第9図に示されているように、2レベル構造を含む木は、メインレジスタに水平方向に記憶された父親である根リスト、およびペースレジスタに垂直方向に記憶された息子であるリストを存してよい。この例では、リスト表現((12)(34))を有する構造がペースレジスタマトリックスに記憶されている。根リストすなわちサブリストの第1要素である1、3がメインレジスタに記憶され、息子リストすなわち(12)および(34)が従属レジスタに垂直方向に記憶されている。この形式の記憶を用いる例を以下に示す(第9A図〜第9H図参第9E図に示されるように、3レベル構造を有するゴール木は補助レジスタの1つに記憶された根を有し、その唯一の息子がメインレジスタに記憶されている。第9D図において、ゴール本の根(置換命令)が補助レジスタの1つに記憶され、その息子(リスト(id 1. id 2゜id 7))がメインレジスタに記憶されている。このリストの各要素が今度は息子を有する父親となる。第9E図において、これらの息子はペースレジスタに垂直方向にロードされる。ここでは、id lはそれが表わすリスト(123)と置換えられ、id 2はそれが表わすリスト(11゜12.13)と置換えられ、id 7はそれが表わすリスト(21,22,23)と置換えられる。
パイプラインモード第9F図に示されるように、パイプラインモードで記憶された木は、メインレジスタのゴールリストでロードされ、補助レジスタのゴールの父親でロードされる。両種類のレジスタに記憶された命令と処理されるべき要素を存する。パイプラインモードの動作は数値的表現を簡約するときに用いるのが望ましい。一つの利点は、中間の結果が、目的記憶でなくコアセルに一時的に記憶できることである。
従って、ゴール木の根リストは、木構造のレベルおよび遂行されるべき動作に依存して、コアセルのレジスタの別々の場所に記憶するのが望ましい。
H言語構成および関連ハードウェア本発明による計算装置に特に適応した言語はH言語と呼ばれる。複雑さの問題に伝統的な解答は、全ての複雑な事項を隠すことによって複雑さを増大することおよび簡単な事項を見えるようにすることであった。本発明による計算装置は逆の方法を用いる。全ての不要なソフトウェアレベルは除去されている。H言語は、マシンにおける全てのために、マシン言語、プログラミング言語、オペレーティング・システムおよび通信プロトコルとして用いられる。しかし、全ての電子装置と同様、今日では、本発明による計算装置の配線は、ある程度までインタプリタまたはコンパイラを備えたコンピュータにおいてシミュレートできる。このようなマシンの例は5un3である。しかし、このマシンは統一化可能性が与えられるボートを育していなければならない。
従来の論理プログラミング言語は主たる意味論的特性として解像度と統一化を有している。H言語を備えた本発明による計算装置は、解像度および自由変数に対するパターンマツチングおよびリダクション言語における統一化に対するパターンマツチングを利用する。記憶セルのフィールドに記憶されたH言語における目的は、並列的存在、直列的存在および代替的存在という特性を育している。
ゴール木の根は、unity、 att、 appl)’ 、ある意味ではpar−および虱(これらはしばしば「無」に簡約可能である)のような簡約可能な種類の閉包である。関数適用apply (@とも呼ばれる)において、第1の要素はハードウェアに直接解釈された命令(+ −* /during)か関数定義として用いられた閉包構造を間接的に指示する識別子であり、要素の残りは命令/関数定義に対する引数である。上述したように、本発明による計算装置は、抽象構文および意味論によって定義されたHと呼ばれる宣言型言語を処理するようになっている。
構文は、表現の助けを借りていくつかの異なった抽象オブジェクトを記述する。
次の基本的な表現、すなわちport、 nothing、 alt(list)、 par(list)、 5eq(list)、unify (list) 、during (list) 、cont (v) 、perid(V)(ここで(1ist)は、それが属する式を含む目的記憶セルにおけるデータ要素(el、・・・e、)の形式で特定され、■は実数を表わす)を用いることができる。
本発明のワイヤード適用における各記憶セルは制限された数のVALUE/DESフィールドを育するから、リストはいくつかの記憶セルに記憶できる。オブジェクト記憶の構造が一般型のコンピュータにおけるプログラムによってシミュレートされる場合、シミュレートされた記憶セルは変化する数の記憶フィールドを有することかできることに注意すべきである。
Port ・・・物理的ポート、すなわち一連のduringを表わし、特別の種類の間接要素である。
NOthirlg・・・矛盾を表わす特別の種類の値。
Alt ・・・この式を含む記憶セルは代替要素と考えられるリスト要素を含む。
Par −−−この式を含む記憶セルは並列要素と考えられるリスト要素を含む。
≦3− ・・・この式を含む記憶セルは直列要素と考えられるリスト要素を含む。
[Jnify ・・・この式を含む記憶セルは統一化されるべき要素と考えられるリスト要素を含む。
Duringまたは@・・・この式を含む記憶セルは、その間に何何かが起る持続時間を与えるリスト要素を含む。
cont ・・・長さVを有する距離に沿って無限定の数の極小ビヘービアを有する空間量を示す。
perid ・・・持続時間Vを有する期間の間のいくつかの極短ビヘービアを有する持続時間を示す。
上記リストの要素はVALUE/Dll:Sフィールドに値として記憶される。
書換え機能は記憶セルと協同する中央制御装置CUに組込まれている。従って、この制御装置が書換え規則を具現する。それは、所定の書換え規則に従がって上記構文式を書換える。
中央制御装置は論理ゲートアレイが望ましく、それは記憶された式を読むために、そして組み込み規則に従がって書換え動作を与えるために接続される。その場合、木の一部のみが必要となるにすぎない。組合せ入力に作用して組込みプロトコルに従がって組合せ出力を与える論理ゲートアレイの構造は、Carver Mead 、 LynnConway ’ Introduction to VLSI Systems″AddisonWesley Publishing Company 、1980に記載されている。
書換え規則書換え規則は次のとおりである。
(すなわち値nothingは省略)C@ −−e@ )ずれかかnothingならばnothing別のやり方でずれかがflothil’1gならばnothingseq ce、、、em ) −+ seq cel、、 e、 )別のやり方でか同一ならばelunify (el 、、、、em ) −el 〜e++のいずれかが他と異なるならばnothingunify(e + e t e a、、−e −) −unify (el ex)es、。
ずれかがnothingならばnothingオブジェクト記憶に記憶された木構造のりダクションがなされる際、その木構造の少なくとも一部が演算装置3に転送される。装置3において本構造を処理する他の可能性については第3図の配列の特定の実施例に関連して次に示す。
制御装置CUは装置3に記憶されたセル閉包のTYPEフィールドを読み、上記した書換え規則に従がって装置3内のセル閉包の内容を書換え(すなわち再配置し)、書換え結果をオブジェクト記憶1に再び記憶されるように転送する。書換え結果がある値またはnothing (無)に簡約されるとき、制御装置CUはオブジェクト記憶の全体的な探索をなし、簡約された構造の父親を示す記憶フィールドの内容をリダクションが生じた値と交換する。
これらの構文規則を用いた動作の方法を以下例証する。
以下に示す例に示されない構文規則は、例示されたものと極めて似ているからそれらを参照することによって当業者にとっては容易に理解できるであろう。
例 1第10A図〜第10H図に示された第1の例は、簡約可能な閉包unify(par(l par(1) 3) par(t par(1’) 2)1(これはいくつかの並列の統一化がなされるべき簡約可能な閉包である)として与えられた並列値の統一化である。この簡約可能な閉包は統一化の並列構造として書換えられるべきである。
第10A図は最初の簡約可能閉包を示す。第10B図は、この簡約可能な閉包がオブジェクト記憶に記憶される様子を示す。簡約可能な閉包の種々の部分が記憶される記憶セルが第10A図にマークされている。要素閉包とセル閉包のとのつながりが第10B図にマークされている。識別子ld、を育するセル閉包はclsがタグされている(付けられている)。TYPEフィールドにTYPEコードunifyを育し、識別子idz 、+dj、 j(Lを育するセル閉包はそのTYPEフィールドにTYPEコードparを存する。識別子id+を育するセル閉包はその最初の2つのVALUE/Dll:S閉包要素として識別子id、およびid4を有するセル閉包を育する。これらのセル閉包はcanonがタグされている。識別子1d2を有するセル閉包は、タグdjscrを存する別々の値を備えた第1、第3のVALUE /DES閉包要素および識別子idsを有しcanonがタグされたセル閉包を示す第2のVALUE/DES閉包要素を含む。識別子xdxを有するセル閉包は整数を備え、従って、discrがタグされている第1のVALUE/DES閉包要素を存する。識別子id4を有するセル閉包はタグdiscrを有する別々の値を備えた第1、第3のVALUE/DES閉包要素と、識別子idsを育し、従がってcanonでタグされたセル閉包を示す第2のVALUE/DES閉包要素を含む。
第10c図に示されるように、識別子id+を存するセル閉包をもった記憶セルの内容が最初にコアセルにロードされ、その結果第1動作段階においてその識別子を閉包のTYPEコードunifyを含むidl として識別子レジスタに置かれ、ゴールとしてのVALUE/DES要素がメインレジスタに置かれる。
第10D図に示されるように、識別子idzとid4を有する息子はペースレジスタに垂直方向にロードされ、その第1のVALUE/DBS要素は識別子でマークされたメインレジスタに置かれ、残りのVALIJE/DES要素は垂直方向の列のレジスタに配置される。これらの息子のTYPEコ−Fparもメインレジスタにロードされる。TYPEコードはTYPEブレーンに位置したレジスタセルにロードされる。
第10Efflに示されるように、ペースレジスタの内容が90°置換され、その結果ペースレジスタの第1垂直方向列かメインレジスタに配置され、第2垂直方向列がメインレジスタに平行なペースレジスタの行に配置される。識別レジスタおよびメインレジスタにあるTYPEコードparとunifyかこれによって交換される。これは、制御装置によって自動的に行なわれる。こうして、ペースレジスタは列に置かれた3人(個)の息子を存する父を含むことになる。
各息子は命令makeを用いてオブジェクト記憶に再びロードされる。そのオブジェクト記憶からの応答として、記憶された息子の識別子が与えられ、メインレジスタに記憶される。一種のゲートアレイである制御装置CUか特にCLOS/ S IMPLE −TYPEプレーンにあるレジスタの内容を検知し、そこで発見された情報に従がって命令を与えている(すなわちスイッチおよびゲートを制御する)ことに注意すべきである。息子はidlの後、一連の順序で名付けられ、既に占育された名前は使用されない。名前の順序は重要でないから任意でよい。
第10F図に示されるように、第1の息子は識別子id2を得、識別子id8を占める要素閉包を含む第2の息子は識別子xd4を得、第3の息子は識別子idしを得る。
識別子1dz 、ida 、ldaを有するセル閉包と結びついた要素閉包を有する父親はその識別子xd+を維持したままで、オブジェクト記憶に記憶される。
第10G図は、簡約可能な閉包par(un if y(11)un 1fy(par(1) par(1)) un 1fy(2,3))を記憶する記憶セルを図示する。
簡約可能な閉包自身は第10H図に示されている。第10G図、第10H図は第10A図、第10B図と同じ態様で示されているから、説明を要しないであろう。
第10G図においては、TYPEコードunifyを育するセル閉包unifYを育するセル閉包はLAZYフィールドにeXec表記が与えられ、識別子id+を有するセル閉包はwait表記が与えられていることも示されている。そしてこのことは、114XeCでマークされたセル閉包は、識別子id+のりいたセル閉包の前に実行してその内容を値に簡約すべきであることを意味する。
第10H図の閉包は、後の時点で、さらなる処理のためにコアセルに再びロードできる。たとえば、識別子idzを有するセル閉包は、それのVALUE!/DBS表示の値1と1が同一であるが故に値IJf−育することになり、識別子jdsを育するセル閉包は、それのVALUE/DBS要素の値2と3が同一でないからnothingとなる。
好適実施例における各統一化は、コンパレータの値を比較し、その比較結果を制御装置CUに与える数値ALUにおいて行なわれる。従って、その際、制御装置はコアセル第1メインレジスタの情報を与えるようその論理ゲートアレイを設定する。リダクションが正規表示(単純値)または無になったとき、それは、第2の種類の要素閉包を記憶するよう動作可能なオブジェクト記憶の全ての記憶フィールドに全体的に分配され、簡約された閉包に対する各間接表示が上記値の直接表示に変更されるよこの例は、セル閉包が挿入リストを含むことを意味するハードウェア命令1iSt eXpansiorlである。この種の命令は他のりダクションでは補助ステップである。
マシンはex、 typeと呼ばれる実証命令のりダクションを行なう。この命令は次の形式%式%)))を有する、値とリストを含む任意の種類の命令でよい。
この形式は第11A図に示されており、そのセル閉包は第11B図に示されている。第11A図、第11B図は第10A図、第10B図と同様の態様で表示がなされているから、自明であろう。
第11c図に示されているように、識別子id1を有するセル閉包はその識別子を育するコアセルのメインレジスタにロードされ、TYPEコードは識別子レジスタにロードされる。第2のメインレジスタの内容は間接要素openでマークされているから、それがリンクしているセル閉包idzは、第11D図から明らかなようにペースレジスタに垂直方向に息子としてロードされる。
ハードウェア命令1ist expandは次に第3メインレジスタの個別の値7を第3ベース列のid4のそばの位置に移動させ、第2のメインレジスタの上の第2列のリストの部分を第3列に移しその最下位要素(値3)を第3メインレジスタに置き、それにTYPEコードtistを与える(第11E図)。第2メインレジスタの内容は個別の値を存するからタグdiscrを有する。
次に新たなリスト拡大が実行され、第3メインレジスタ上の第3列の内容を第4列に移してそれに1istをタイプする。個別の値である、第3メインレジスタの内容は、第11F図から明らかなようにdiscrとタグされる。
次に、第4列のリストがハードウェア命令makeを用いてオブジェクト記憶に記憶される。それは、遊びになっているから識別子id2を有する記憶セルに記憶され、識別子idzの供給は、第11G図に示されるように、第4メインレジスタに記憶されるようにコアセルに戻される。
以後、ex、 typeについてさらにリダクションが行なわれ、正規の結果が与えられるとき、リダクション結果がオブジェクト記憶に再ロードされる。
実際例−第1の方法第3図に戻って、ボートで動作に対する本発明の基本的な考え方は、各持続時間の信号量が単一の定義値を共通に得るということになる統一化として環境7,8と能動オブジェクト記憶1.3の相互動作を見ることである。
動作の態様を理解するために、次の例を与える。入力ポートと出力ポートを存する機械は、二乗された入力信号量を出力に与えるものである。従って、この機械に記憶されるべきプログラムはア”)ここで“マシーンビヘービア′とは入力と出力の考え得る対の全ての連続、すなわち次の種類の大データ構造を示すalt動作を指す。
C以■血ム凹(is 3)血ム題(Is 9))・・・)(瓜(剋ム凹(ig 2)剋ム騙(lsa 4))入力ポートがその値を転送し始めると、コアセルで行なわれるリダクション動作は、nothingに変る代替動作における全てのブランチ、すなわち適合しないブランチを連続的に削除する。
次のりダクション規則がコアセルで実行される。すなわち次のような形式の式(2症(血ム凹(qkl t)0・・・血麩匹(qkn tk)・・・・)環境からの信号とその表現の比較に応じて、nothingまたは側温(店と(史匡社環((ill tl)・1.虫匡幻迫((Zl□t1])C以1血ム皿1qkl tk)・・・虫仄ぶ瓜(qkn tkl・・・・)同一の時間を取る。全てのduring動作を同時に開始、停止させるためには同期が必要である。上記式の書換えをなす別の方法は、環境からの信号とその式の比較に応じて、nothingまたはMMC血ム匹(sm(qll−・・qxn) tl)(血ム凹(以匡(qkl・・・q)cn) tk)・・・・)に書換えるものである・上記例の第1の書換え規則を用いることによって次のりダクシジン規則が関係するニー>Ic式出奴@工h1) ・・・1立@n%)およびseqの対応物。
入力値がマシン(機械)の対応値と統一化されない。すなわち同一でない場合、結果はnothing (無)である。
これがalt動作まで全ての道程を伝搬し、ブランチ全体がalt式から削除される。
外界との連絡外部信号が定義されているかどうかまたはマシン値が定義されているかいないか(値$を存する)に応じてマシンとの間で値をやりとりできるようにボートを構成することの利点は、マシンが上記した単純な入力ボート・出力ボートシステムに限定されないことである。従って、その機械に対してボートを交互に読み、書きできるようプログラムを書くことができる。これについての例は次のプログラムである。
凹」上(port−マシンビヘービア0)すなわち(射1(自−1し一四t l (鈎」11冗tpot l (由仄−扉津t l (虫広ム逗output rこのマシンビヘービアにおいて、環境は1つの値を与え、次の間隔の間にマシンはその二乗を与えることによって応答する。この方法によって、データを簡単な手段で流す完全な制御が得られる。
装置3はボートと連絡し、オブジェクト記憶のボートからの入力を連続的に記憶するようになっている。入力は次のような式%式%)として与えられる。この式が簡約されるとき、中央制御装置CUのプロトコルはこの式を、それと環境からの信号との比較に応じてnothiogまたは式%式%)に書換える。式rlew t+は新持続時間、ne!Wq+は値対の連続(第2図参照)おけるi番目の間隔の新信号量である。
ボートでの信号が第2図に示された形式を有する場合において、信号の値q、がunify式中の対応量q、と異なるか、または信号の値tlがunify式中の対応t1と異なるならば、上記式は装置t3でnothingに書換えられる。そうでないならば、unify式seq式に書換えられる。
上記したように特定の信号$をunify式に与えることができ、それは値が任意であることを示す。
式中の値t、またはq+ (iは任意の整数)が$ならば、対応するnewt+ またはneWq+は測定値を挿入して書換えられる。
これに対応して、環境からの信号が未定義で、他方、unify式の値t1およびq、が特定の値ならば、信号強度は時間t、の間のボート(第6図参照)のディジタル/アナログ変換器Contestによってq、として与えられ、他方5eq一式のneJf+および口e!Wq+lよunify式の値1、およびq、と同じになる。
付加的H言語構成存在可能な全てのビヘービアを上述したシステムに従がって記述することが可能である。残念ながら、プログラムが極めて大きくなることがある。このような事態を処理するために、さらに大きな言語構成を挿入することがある。それらのうちで最も重要なのは、symb、 lambda。
およびapptyである。
H言語に宵月な完全構文は次の構文式:%式%)らの構文式は記憶セルのTYPEフィールドに符号化形式で演算子として与えられる。
従がって、各式はオブジェクト記憶セルに式として記憶された演算子であり、(list)における各要素はビヘービアを示すリスト要素、nは整数、■は実数である。各要素は当該リストが属する上記式を含む記憶セル内の記憶フィールドに記憶可能である。
式cont(v) (vは実数)は、長さVを有する距離に沿った無限の数の微少のビヘービアを有する空間量を示す。
式period(v) (vは実数)は、持続時間Vの期間の無限の数の極短のビヘービアを有する持続時間である。
式deltaは空間的に極小(原子)の拡大と無限の持続時間を有するビヘービアを示す。式aettatは時間的に極小(原子)の拡大と無限の空間的拡大を有する。
組合せとして量を表現すること空間の整数的拡大はdeltaのparとして次の方法で符号化できる。
0l−z()21Xz(delta dslta)5%(delta1 delta deltat delta delta)時間の整数的拡大はdefeatの凹として同様に符号化できる。
こうして、整数(diser(n))は一種の原子単位deltaの一律の組合せとして表現される。
量の非常に重要な用法はduring動作における要素としてである。この動作において、量は時間と空間の両方を指すために用いられる。従って、deltatと呼ばれるdeltaの時間対応が用いられる。
deltaは空間的には原子的だが時間的には無限、deltatは空間的には無限だが、時間的には原子的、である。
上記式が構文式と同様の態様でオブジェクト記憶に記憶される。
「言語」としてのプログラム、a′を有する式機械は挿入されている全ての表現をほとんどIlr/!I的にその値に簡約する。たとえば、式apply (*par(24) )は直接、値6に簡約される。このため、プログラムがインストールされるとすぐにそれにアクセフすることができない。そのプログラムをいくつかの部分に分解して、その部分について計算をなすことができない。
このような方策を可能にするために、基本言語に対応する受動構文が導入される。これらはプログラム形式と呼ばれる。それらは自身に簡約され(正規的)で、従ってそのままである。従って、いくつかの部分に分解できし る 。
関数p1usrevargは次のように定義できる。
(上記プログラムに対応するプログラム形式で与えられれば、’ appxy (+par (24) )は逆順序par(42)で設定された十の引数を与える)。
記憶されたプログラム形式を対応するプログラムに変換するために、標準的な関数evalが用いられる。こうして、プログラムがコピーされ、ブリップ(blip)が除去される。それからプログラムは自然にその値にさらに簡約される。
1匹1!(1!墓h(eval)’J4u!(+ m(24)))亀息逃1y(十W(24)))−6プログラム形式を分解する可能性のために、プログラムを“reason over”する(筋道だでる)のを簡単にし、これによって、その基本言語としてH−言語を有する機械を用いて任意の種類の他の言語に対するインタプリタおよびコンパイラを書くのが簡単になる。
一般的規則として、全ての生成関数(constructor )(たとえば、delta 、 par )はプログラム形式を特定する1つの語い的要素(たとえばdeca 、 ’ par )として4″が先立つ第2の形式を有する。
実際の構成物だけがプログラム形式であり、木全体がそうでないことは重要である。木全体をプログラム形式として特定するためには、全ての生成関数を“”でマークする必要がある。
プログラム形式(having a ’ )のリストがnothingを含むならば、式はnothingに変換される。
プログラムを形成することsqrの定義のような定義をするのに必要な仕組みは上述したとおりである。しかし、小さな定義の組合せとしてプログラムを形成する都合のよい仕組みが必要である。
我々はいくつかの補助定義を有する主たる式としてプログラムを確立したい。これはcan (list)を助けを借りて行なわれる。
■とnの同の整数)Coil (Yet ex es 、、、e、 )この構造は第1の要素Vに等しい値を有している。しかし、リストが空か、そのリストの要素のいずれかが不可視要素が、自由変数に対する結合値、nothingに対する統−値のいずれかの強制するものとして使用できる。
canに対する書換え規則は、全ての規則に関してもこの規則が能動記憶1.3と中央#1!lI装置CUの間の協同として組込まれる。
な[他の何かが前動でない(nothingである)ならば何かが前動であることを示すためには、上記いずれの構成も利用できない、式の「消極的」態様はしばしば式の「積極的」態様よりずっと単純だから、式の「消極的」態様に対する構成priが加えられる。
priに対する簡約規則は、程ツエの値はnothingとは異なる第1の要素であるというものである。このような要素がない場合、匹はnothingである。従ってpri (nothing nothing 9 nothing 78)=pri (e+ ex)という構成は、elが前動でない場合は、e、が用いられることになると解釈できる。
pri構成はalt構成に似ている。それは−組みのビヘービアであるが、しかし肛りではビヘービアは順序づけられた組の中にある。第1のビヘービアはリストの第1であり、第2のビヘービアは第2、その他のものである。
プロセルスケジューリング用の従来の言語および機械において用いられる優先順位という概念と同様priはnothingを有することに注目することが重要である。その代りに、失敗によって否定を履行するのに用いられる。
prfに対する書換え規則は次のとおりである。
凪0 −>ru3tMng匡(閲thij19z −−−nothing、) −>nothin9凪(nothingl−−−n13thij19に−1@に、 、 、@n) −>@に全ての規則に関しても、この規則が能動記憶1.3と中央制卸装置CUの間の協同として組込まれる。
範囲(スコープ)規則範囲は、同一の記号の全ての出現が同一の意味論的実体を表わす文字環境である。範囲規則は、ある生成関数が新範囲を導入するかどうか、導入する場合はその方法を記述する。H−言語は次のような範囲規則を有する。
1、 生成関数par 、 seq 、 alt 、 @およびunifyは新範囲を導入しない。これは、ある式における同じ記号の全ての出現が同じ実体を表わすことを意味する。
2、 生成関数lambda (代替パターン)は新従属範囲を導入する。上位範囲において言及されない、その規則における記号の全ての出現は新範囲に属する。
は、hide生成関数を取り巻く規則生成関数において同じ記号が出現することと同じ実体を表わす。
ide拡大プログラムが生じるときには、異なった意味で同一の記号を用いることが必要になる。これは、分離範囲を導入する生成関数(hide)を与えることによって実現される。
hiding (隠蔽)の最も重要な概念は主に、目的の使用とその目的の定義を分離するために用いられる。本発明による計算装置のユーザは、このことをプログラムパッケージ、ライブラリおよび履行の概念に見出すであろう。
H言語はhide生成関数hide (e )を定義する。それはビヘービアを定義する。その関数の内外で用いられる自由関数は分離される。すなわちお互いから見えないようになる。H言語のこの特徴は、一般にデータ形式といくつかの記号名を輸出する他の種類の言語と異なる。このような名前はパッケージ内では使用できない。このことは、広範囲の記号領域は全てのパッケージにとって実際に広範囲であって、完全なまたは限定されたセットのそれら内部で見える。
典型的なプログラムパッケージはm(ILJkqS S ) 、―(、、、l0cJII 坤1amntation、 、 、 ) ;のように特定される。それはpkgで始まるパターンを育する規則を定義し、残りは未定義のままにしておく。これは、代替規則に対して局部的な記号が未知である規則の定義にすぎない。
ライブラリは1個または数個の規則を選択するパラメータを用いるH言語概念におけるパッケージである。それは、次のように実行される。すなわち、h裏は空(塁上1(laaida −rule a−、a−speclauabda ”rulm b−−b−specライブラリは規則を含む代替物である。パターン“rulea”がプログラムa 5peCを選択するのに用いられる。それは任意の生成関数として定義してもよいが、一般には、抽象化また規則である。
上で実証したように、H言語は必要なソフトウェア・エンジニアリング概念を特定するための洗練された方法である。H言語はこの目的で新しい言語生成関数を導入する必要はない。
“旧de″のみが範囲の扱い方に影響を与えることに注意すべきである。
ambda式lambda (e g e pi ・・・e p−)は要素e、がep+”・・e、、に取って代ることを表現する規則である。e。
(e r e mrgl ” ” ” e mrgl)は、各ep+が対応するe 、、、、と統一するならば簡約動作においてe、によって置換えられ、さもなければnothingによって置換えられる適用である。
数値的命令が実行されるものとする。数値的命令は+。
−、*、 /、 duringなどである。命令の後に引数が続く。
この例では、リストにおける数の加算がなされる。
マシンはapply (+1ist (12) )という形式をapply (適用)というリダクション行なう。
その適用は第12A図に示され、そのセル閉包は第12B図に示されている。第12A図および第12B図は第10A図および第10B図と同じ態様で描かれているから説明を要しないだろう。
第12C図に示されるように、識別子id+を有するセル閉包はその識別子を有するコアセルのメインレジスタにコードされ、TYPEコードは識別子レジスタにロードされる。数値命令(+)は1nstructionがマークされている。第2のメインレジスタの内容は間接要素凹としてタグされているので、それがリンクされているセル閉包は、第12D図から明らかなようにペースレジスタに垂直方向に息子としてロードされる。
次にリスト拡大がなされ、第2メインレジスタの個別は、識別子idtを育するリストが2.3.4個いずれの要素を有しても同じ動作を機械がするからである。新しいリストには、ただ1個の要素があるから、機械はマーク1istを、第12F図に示されるように、disrである値をメインレジスタが含むという指示で置換える。
そのとき、メインレジスタは命令マーク(+)と2つの別々の値を有し、これによって、命令が記憶されている制御装置が数値ALUを制御して命令(加算)を行ない、数値動作の結果を、第12G図に示されるように第1のメインレジスタに正規値として転送する。TYPEコードフィールドの表記apptyは関数適用がなされることをマークしていることに注意すべきである。結果値、今の場合は単純値3が、識別子id+の各出現とこの値を交換するために、全体的に分配される。
書換え規則書換え規則は同じある式を特定する。書換え方向はこれらの規則と関連がある。
より簡単な式は書換え方向に続くときに生じる。式がより簡単な式に書換えることができないとき、それは正規的なものである。こうして、本発明による計算装置は、式をより正規的な形式に書換えるために書換え規則を用いることになる。
上記書換え規則の他に、中央処理装置CUは次のような書換え規則も具体化する。
ストについての式を表わし・el、、 emはリスト要素である。
type cel、、、 aH(Ci−−、ck )−、、L ) →alt (匣Cer−−−Cr−−−em )−9,匣(el、、、 C,、、、e、 ))ここで匣はpar (list)からunity (list) (alt (list)を除く)までのリストについての式でe 1. e 、、 c l+ c 。
はりスト要素である。
式である場合)set (alt (el、、、 em )) −+ ’alt (e、 、、、e、 )ここで、el、、 e、は任意の特定順序で与えられた要素で、el−earは割当順序で与えられる。
lambda(el、、、e、 ) ” par (el、、、e、 )apply (’att (bl、、、 b、)a=、、a、 )→ apply (吐11.t・ 凹(bl、、、b、 )ag、、、a、 )apply (par (bl、、、 b、 )at、、a、 )−+ nothing、上記式IJ ス)において全てのblおよびあり、n#mまたは任意のat g bl (illに対して)の場合appxy (par <bl、−ha )am、、a、 )→ bl、上記式リストにおいて全てのす、およびalが肌(list)からappxy(list)に至る式であり、n’sまたは全てa、=b。
(i〉1に対して)の場合appty (seq (t)+、、、 b、 )a=、、a、 )において全てのblおよびあり、n#mまたは任意のat # bl (i>1に対して)の場合appty (seq cbl、、、b、 )am、、a、 )→ bl、上記式リストにおいて全てのす、およびalがpar (list)から’appxy(list)に至る式であり、n#mまたは全てal=I)1(i〉1に対して)の場合えている)の式を値形式(“′”がない)に変換する。
最も高い構造のみが ′を除去される。
eval−*+、’type(a) →type(a)、ここでtypeはpar (list)からunifY(list)に至る(alt(list)を除いて)上記リストについての式を表わす要素Sを含み、その要素Sは上記記憶セルの異なった記憶セルに属する記憶フィールドに記憶されている可能性を有し、その記憶セルは種々の範囲に配列され、全ての識別子Sが同じビヘービアを示す各範囲内にある。
Discr pulsesnが整数である式discr (n)はn個の原子的ビヘービアを有する並列ビヘービアを示す。nが整数である式pulses(n)はn個の原子的ビヘービアの時間的連鎖を示す。
次のような書換え規則が用いられるべきである。
拡張構文を用いることができる方法を実証するために、同じボートでの代替的な読み・書き用のプログラムをより簡単な形で与えることができる。始めに、個別の値l。
2および3についての表記5quar(sqr)は次の短かいプログラムによって定義される。
1息(肛嘘(aqr)虱以n瞼ム(113L!嘘包(42)−嘘包(93] ](オブジェクト記憶1の閉包の木に記憶されている)。
”マシンビヘービア”は唯一のseqとして書くことができる。
!41;!(”””9(” ”)”””;(” 鮎吃匠(symb(sqr) ”)(during(is x)during(Is 藝躯衣(8ymb(8qr) り 、 、 、 )このseq動作は実行中に上記alt動作に書換えられる。
こめプログラムでさえ入力データと同じ長さである。これを洗練された態様で扱う方法は、い(つかの関数および標準的な代替手段をハードウェアにおいて、または問題のプログラムとともにロードされたソフトウェアとして備えることである。
例は乗算(X)で、この標準的な動作の助けを借りて値aの二乗が簡単なプログラムとして書くことができる。
unify(syo+b(sqr) lambda(symb(a) apply(z par(symb(a)symb(a)))))このプログラムはハードウェアによって定義された全ての数を二乗する。
リダクション規則に従った書換えの間に上記大きな1見構成に展開される小さな回帰的プログラムを書くために上記規則を用いてもよい。ハードウェアは不必要な展開は省略されるようになっている。これは同時係属出願PCT/SE 91100514に記載された形式の1 コアセルを用いることによって行なうのがよい。
記載された書換え規則を実行する機会を育し、ビヘービアの統一化を用いることによる宣言的方法を伴なう計算装置のビヘービアは明示的に特定する経過時間順序によって特定される。時間的記述はいくぶん記号言語のようだ。
プログラムをより読みやすくすること抽象構文は極めて簡単である。しかし残念なからこれで特に読み易くなるわけではない。プログラムを読み易くするために、より複雑な構文が導入される(人間はあまりにも低い複雑さを欲している訳ではないから)。
この変換は多くの方法で行なうことができる。しかし、文字かつ図示的な形式をもつのが自然である。
aultハードウェアが、ある値が正しくないことを、たとえば、計算値のパリティピットその他をチェックすることによって検出する時、誤り指示が与えられる。その場合、式backupが用いられる。
このような要素がそこにない場合、bachupはnothing(無)となる。
backupに対する書換え規則は、−曲四□ −>fault−儲四(faultl −−−fault、) −>fault雇ハ凹(faultl−−−fault k−1ek””n) −>ek全ての規則に関しても、これらの規則か能動記憶l。
3と中央制御装置11CUの協同として組込まれる。
種々の言語表示上述したところから明らかなように、H言語はいくつかの表示を有している。−集合の表示が用いられる抽象言語であるコアHa k aをH言語は存している。主な言語表示は次のとおりである。
H158・・・この言語表示は正式な定義外で利用できる最も基本的なものである。これは完全に宣言的である。しかし、ユーザが読むことの可能な構文を育しない。
HI a s l l・・・この言語表示は、計算装置におけるハードウェア誤りを形成する構成によって拡大されたH a b aである。この言語表示は宣言的でない。
その代わりに、結果は確率的な値であるこの表示は他の残りの全ての言語表示が基礎とする根言語表示である。ユーザが可読の構文を有しない。
Hs m a r ・・・この言語表示は、整数かつ現実の演算に対しては確立されたセットで、かつ数値かつ構造の演算に対してはオペレータで増強されたH Tam11である。言語表示Hw s * rはユーザが可読の構文を育していない。この表示は、ユーザに見える抽象言語である。
Ha a e l 1・・・挿入構文を用いた最も一般的な式以外の全ての構文に対して通常のアスキー文字および接題辞表記を用いた言語表示である。
本発明は特定の実施例について説明したけれども、本発明の真の精神、IX[から逸脱することなく、種々の変更が可能であり、等漬物でその要素を置換ることが可能であるということが当業者に理解されるであろう。また、本発明の主たる教示内容から離れることなしに変形をなしてもよい。
FIG2 ”FIG、8A全レジスタ FIG、8BII@レジスタ FIG、8C単純Iまたは機械l刺子 ルベルII 2L、ベル構造FIG、 6FIG、7FIG、10BFIG、10CFIG、10DFl(3,10E Fl(3,10Fし[[−FIG、 10GF旧11BFIG 11CFIG、11Dオブジエクト配憧へ/lうFIG、 12AFIG、 12B要 約 書本発明は、各々が動作の実行を生じさせることのできる情報を育する複数個の記憶セル手段(2)を含む能動記憶手段(cu、1)、前記能動記憶手段に接続された少なくとも1個のボート装置(4,5,6)および前記少なくとも1個のポート手段に接続された少なくとも1個の環境手段(7,8,9)を備えた計算装置。
国際調査報告l”−−A−−−に・ PCT/SE 91100517I、lkr*mr−^−1―、動PCT/SE 9110O517