JPH0731619B2 - 変数を含まない関数型言語コードを用いる2進有向グラフとしてストアされたプログラムを評価する縮小プロセッサのためのシステムアロケータ - Google Patents

変数を含まない関数型言語コードを用いる2進有向グラフとしてストアされたプログラムを評価する縮小プロセッサのためのシステムアロケータ

Info

Publication number
JPH0731619B2
JPH0731619B2 JP61500657A JP50065786A JPH0731619B2 JP H0731619 B2 JPH0731619 B2 JP H0731619B2 JP 61500657 A JP61500657 A JP 61500657A JP 50065786 A JP50065786 A JP 50065786A JP H0731619 B2 JPH0731619 B2 JP H0731619B2
Authority
JP
Japan
Prior art keywords
mark
memory
vector
bit
node
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
JP61500657A
Other languages
English (en)
Other versions
JPS62501455A (ja
Inventor
ログスドン,ゲイリー・エル
シーヴエル,マーク・アール
ウインチエル,マイケル・エイ
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.)
Unisys Corp
Original Assignee
Unisys 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 Unisys Corp filed Critical Unisys Corp
Publication of JPS62501455A publication Critical patent/JPS62501455A/ja
Publication of JPH0731619B2 publication Critical patent/JPH0731619B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)

Description

【発明の詳細な説明】 関連した米国特許出願 掲題の出願に直接的または間接的に関連した米国特許出
願は以下のとおりである。
Gary E. Logsdon等によって1984年6月5日出願された
「変数を含まない関数型言語コードを用いる2分有向グ
ラフとしてストアされたプログラムを評価する縮小プロ
セッサのためのグラフマネージャ(Graph Manager for
a Reduction Processor Evaluating Programs Stored a
s Binary Directed Graphs Employing Variable−Free
Applicative Language Codes)」と題される、連続番号
第617,526号。
Gary E. Logsdon等によって1984年6月5日に出願され
た「変数を含まない関数型言語コードを用いる2分有向
グラフとしてストアされたプログラムを評価する縮小プ
ロセッサのための並列レジスタ転送機構(Parallel Reg
ister Transfer Mechanism for a Reduction Processor
Evaluating Programs Stored as Binary Directed Gra
phs Employing Variable−Free Applicative Language
Codes)」と題される、連続番号第617,531号。
Gary E. Logsdon等によって1984年6月5日出願された
「変数を含まない関数型言語コードを用いる2分有向グ
ラフとしてストアされたプログラムを評価する縮小プロ
セッサのための条件コンセントレータおよび中央記憶
(Condition Concentrator Central Store for a Reduc
tion Processor Evaluating Programs Stored as Binar
y Directed Graphs Employing Variable Free Applicat
ive Language Codes)」と題される連続番号第617,532
号。
Gary E. Logsdon等によって1985年1月11日に出願され
た「変数を含まない関数型言語コードを用いる2分有向
グラフとしてストアされたプログラムを評価する縮小プ
ロセッサのためのアロケータ(Allocator for a Reduct
ion Processor Evaluating Programs Stored as Binary
Directed Graphs Employing Variable−Free Applicat
ive Language Codes)」と題される連続番号第690,846
号。
発明の背景 発明の分野 この発明は2分有向グラフとして表わされたプログラム
を評価するようにされたデジタルプロセッサのためのシ
ステムメモリおよびアロケータに関するものであって、
特にグラフを等価なグラフに順次置換えることによって
そのようなグラフを評価するプロセッサに関するもので
ある。
先行技術の説明 今日、市場におけるほとんどのデジタルコンピュータは
未だにJohn Von Neumannによって最初に仮定された型で
あり、指令をシーケンシャルに実行する。フォートラン
およびコボルのようなコンピュータをプログラムするた
めの高レベル言語の初期のものは、この編成を反映して
コンピュータによって実行されるアルゴリズムの設計と
同様、記憶管理および制御フローの管理の責任をプログ
ラムに任せた。Pure LISPのような純粋な関数型言語
は、命令言語とは異なり、プログラマからこれらの管理
責任を取り除く。
Pure LISPに代わるものはセイントアンドリューススタ
ティック言語(Saint Andrews Static Language)、す
なわちSASLで、これはDavid A.Turnerによって開発され
た(SASL言語マニュアル(SASL Language Manual)、19
76年、セイント アンドリュース大学)。「結合子(co
mbinator)」と呼ばれる多数の定数を導入することによ
って、この言語は変数を含まない表示に変換できる(D.
A.Turner、「関数型言語のための新実現化例技術(A Ne
w Implementation Technique for Applicative Languag
es)」ソフトウェアー実践および経験(Software−Prac
tice and Experience)第9巻、31−49頁、1979年)。
この表示は(引数として関数を、結果としてリターン関
数をとることができる)より高次の関数および(仮に1
個または2個以上の引数が規定されていなくても結果を
返してもよい)非厳密関数(non−strict functions)
を取扱うのに特に有利である。
Tunerによって開発された実現化例技術は、プラス、マ
イナスなどのような1組の原始的関数(primitive func
tions)およびより高次の非厳密関数である1組の結合
子を採用する。これらのオペレータは置換規則によって
正式に規定され、それらのいくつかの具体例は以下の通
りである。
S f g x=f x (g x) K x y=x I x=x Y h=h (Y h) C f x y=f y x B f g x=f (g x) cond p x y=x,ただしpが真の場合 y,ただしpが偽の場合 plus m n=r,ただしmとnとは既に数にまで還元さ
れ(reduced)ていなくてはならず、rはmとnの合計
である。
他の結合子およびそれらの定義は上に引用されたTurner
の著書の中に見られるはずである。
この結合子表示は便宜上2分有向グラフとして表わすこ
とができる。その場合、各ノードは関数を引数に作用さ
せることを表わす。(これらのグラフは最初の2つの結
合子の名前からSK−グラフとして知られる。)置換規則
はそのためグラフ変換規則として解釈することができ、
これらのグラフ(およびそれゆえ、それらが表わすプロ
グラム)は縮小として知られる処理中にかなり単純な性
質のプロセッサによって評価することができる。そのよ
うな縮小プロセッサは「変数を含まない関数型言語コー
ドを用いる樹形のグラフとしてストアされたプログラム
を実行するための縮小プロセッサ(Reduction Processo
r for Executing Programs Stored as Treelike Graphs
Employing Variable−Free Applicative Language Cod
es)」と題されるBolton等のアメリカ特許番号第4,447,
875号で開示される。
縮小処理の詳細はTurnerの書類で見られるが、簡単に具
体例をあげておくことも有用である。第1A図ないし第1D
図はSASLプログラムを表わすグラフの縮小を例示する。
(successor x=1+xである場合) successor2 このプログラムは第1A図のグラフで表わされる結合子の
表現 C I 2(plus 1) に解釈(コンパイル)される。このグラフをさらに変換
することで以下が得られる。
I(plus 1)2 C規則を用いる(第1B図) plus 1 2 I規則を用いる(第1C図) 3 plus規則を用いる(第1D図) グラフを縮小させるために行なわれる置換は、ポインタ
および結合子コードのような多数の異なるデータの操作
を必要とし、これらのデータはレジスタファイル内の1
つのロケーションからさらに別のロケーションにシフト
される。上に引用されたBolton等の出願で開示された実
施例では、各グラフ縮小段階はレジスタファイル転送の
シーケンスを必要とした。しかし多くの場合、レジスタ
間の必要な転送は同時に行なうことができ、その結果速
度を増大できるであろう。
これらの変形の1つを行なった後、プロセッサは次の変
換位置(「リデックス(redex)」と呼ばれる)を求め
てグラフ上を検索しなければならない。この検索の間、
ノードの検査が行われ、ノードの左側がポインタを示す
かまたは結合子を示すかを判定するといった様々な検査
が行なわれる。再び、Bolton等の出願で説明された機械
では、これらの検査はシーケンシャルに行なわれなくて
はならないが、多くの場合これらの検査は同時に行なわ
れ得るであろう。
そこでこの発明の目的は、一連の置換を通して2分有向
グラフを評価するための、改良された処理システムを提
供することである。
この発明の別の目的は、レジスタ転送を同時に多数行う
ことによって、各置換をより速く達成することができる
プロセッサを提供することである。
この発明のさらに別の目的は、アロケータが、それぞれ
のグラフを評価する際に用いられる縮小プロセッサへ転
送するための新しいノードのアドレスを選択するよう
な、縮小プロセッサのためのアロケータおよびシステム
メモリを提供することである。
発明の要約 上で確認された目的を達成するために、この発明は関数
型言語縮小(reduction)プロセッサに用いるためのア
ロケータおよびシステムメモリにある。アロケータはシ
ステムメモリに結合され、関数の置換に必要なシステム
メモリ上の新しいノードのアドレスを選択する。
この発明の特徴は2分有向グラフで表わされた関数型言
語プログラムを評価するように意図された縮小プロセッ
サのためのアロケータおよびシステムメモリにある。
図面の簡単な説明 この発明の上記およびその他の目的、利点および特徴は
図面に関連して以下の明細書を検討することで容易に明
らかとなるであろう。
第1A、B、C、およびD図はこの発明が意図される型の
2分有向グラフを示す。
第2図はこの発明を採用するシステムを例示する。
第3図はこの発明のグラフマネージャセクションの図で
ある。
第4図はこの発明のデータセクションの図である。
第5図はこの発明の条件コンセントレータの図である。
第6図はグラフが形成されるような型のノードのフォー
マットの図である。
第7A図ないし第7C図はこの発明のアロケータを詳細に示
す図である。
第8A図および第8B図はこの発明のシステムメモリの図で
ある。
発明の概略説明 この発明を用いるシステムを第2図に例示する。主たる
要素はグラフマネージャ10である。グラフマネージャ10
はデータセクションを含む。データセクションは、縮小
すべきグラフのいくつかのノードをキャッシュし、グラ
フ縮小に必要な一連の置換を行なうためにそれらのノー
ドを操作することを可能にする。システムはグラフのノ
ードの全てに対する記憶領域を提供するシステムメモリ
11と、使用されていないワードを求めてシステムメモリ
を走査し、グラフマネージャに使用可能なようにそれら
のアドレスを待行列につぐなうためのアロケータ12とを
含む。アロケータはまた、待行列につながれたアドレス
の数のカウントを維持する。サービスプロセッサ13はホ
ストプロセッサ(図示されていない)への非常に様々な
データ転送を提供し、また、浮動少数点演算設備も備え
る。
先行技術のシステムのグラフ縮小技術に関して何が特に
問題となるかは、第1A図ないし第1D図を再び参照すれば
よりよく説明出来るだろう。第1A図のグラフから第1D図
への変換において、ノードbの右のセルの内容物をノー
ドaの右のセルに転換しなければならず、ノードcの右
のセルをノードfの左のセルに転送しなければならず、
ノードaの右のセルはノードfの右のセルに転送しなけ
ればならない。先行技術の縮小プロセッサでは、この一
連の転送はシーケンシャルに行なわれ、第1B図のグラフ
を第1C図のそれに縮小し、また同様にさらにグラフを第
1C図のそれに縮小し、また同様にさらにグラフを縮小し
ていくために、同様の一連の転送が行なわれた。この発
明の目的は並列レジスタ転送機構を提供し、それによっ
てレジスタ転送の各シーケンスを同時に行なうように
し、そのようにして縮小処理の速度を上げることであ
る。
先行技術のシステムに関するさらに別の問題は、縮小処
理の道筋を定める条件(condition)の検査に関する。
第1A図のリデックスが変換され得る前には、プロセッサ
は、いくつかの条件が成立するか否かを判定しなくては
ならない。先行技術のプロセッサでは、これらの条件は
シーケンシャルに検査され、各検査の結果は2方向の分
岐のうちの1つの経路を選択するのに用いられる。この
発明のさらに別の目的は、多方向の分岐の中から1つの
経路を選択するためにいくつかの条件を同時に検査でき
るような条件検査機構を提供することである。
発明の詳細な説明 第2図のグラフマネージャ10を、そのアロケータ12との
交信を含めて、第3図にわずかであるがより詳しく示
す。このグラフマネージャはデータセクション20、条件
コンセントレータ21および制御セクション22を含む。
データセクション20は縮小されるグラフの一部分をスト
アし、その内部の種々のレジスタの間をフィールドが同
時に転送されることを可能にする。これらのフィールド
のいくつかの値は下に説明される理由で条件コンセント
レータ21に送られる。このデータセクションは第4図に
より詳細に示される。
制御セクション22は書込可能制御記憶22bを有する簡単
な状態機械であり、状態機械のためのマイクロプログラ
ムをストアする。マイクロ命令アドレスは、条件コンセ
ントレータ21から受取られた置換フィールドを制御レジ
スタ22aの次のアドレスフィールドとつなぎ合わせるこ
とによって発生される。その制御レジスタ22aは、選択
されたマイクロ命令を受取る。
第4図に例示される第3図のデータセクション20の機構
は、グラフの置換を行なうためにレジスタ間を並列転送
するための主要な機構であるレジスタファイル30を含
む。経路バッファ50もまた第4図に示され、これはレジ
スタファイル30にストアされたノードの「先祖」をスト
アするために用いられるスタックメモリである。第4図
の演算論理装置32は簡単な算術演算子を実行し、バスイ
ンターフェースユニット31はシステムメモリおよびシス
テムの他のユニットと交信する。
第3図の条件コンセントレータ21を、第5図により詳細
に説明する。条件コンセントレータ21は演算論理装置3
2、アロケータ12およびサービスプロセッサ13から入力
を受け、さらにレジスタファイル30からの入力を受取
る。これらの入力は13個の「条件グループ」に分類され
る。各ガード発生器40aないし40mは、1組のガードに条
件グループを写像する。これは以下により詳細に説明さ
れる。検査サイクルの間、各ガード発生器はそのガード
のサブセットをガードバス41に向ける。このバスは優先
順位エンコーダ42への入力である16線のオープンコレク
タバスである。優先順位エンコーダの出力は4ビット幅
で、最高位の「真」の優先順位のガードを特定する。こ
の場合ライン0のガードが最高位の優先順位を有し、ラ
イン15のガードが最低位の優先順位を有するものとす
る。この出力は変位値として用いられ、これは第3図の
制御レジスタ22aからのベースアドレスとつなぎ合わさ
れて、制御記憶22b内の次のマイクロ命令アドレスを発
生する。
ノードのフォーマット 上に示されるように、第6図はシステムメモリ11、レジ
スタファイル30の種々のレジスタおよび経路バッファ50
内にあるSK−グラフのノードのフォーマットを例示す
る。各ノードは4ビットのノード型フィールド(NT)、
マークビットおよび各々が30ビットの左と右のセルのフ
ィールド(LCおよびRC)を含む。左および右のセルフィ
ールドはさらに、2ビットのセル型フィールド(CT)、
4ビットのサブ型フィールド(ST)および24ビットの内
容物フィールド(C)に細分される。種々のSK演算子お
よび値が、これらのフィールドの特別な値の組合わせで
コード化される。
アロケータおよびシステムメモリ 第2図のシステムメモリ11はノードのイメージおよびそ
れらに関連したマークビットをストアするために特に設
計されている。SK縮小の間、グラフにはノードが加えら
れ、捨てられる。グラフに加えられるノードは新しいノ
ードと呼ばれ、グラフから捨てられるノードはガーベッ
ジノードと呼ばれる。ガーベッジコレクションとは、ガ
ーベッジノードを集めて新しいノードとして再利用可能
とする処理である。この発明は2つの明確な段階、すな
わちマーク段階とその後の走査段階とからなるマーク走
査(Mark−Scan)アルゴリズムを用いる。
メモリの各ノードは上述したように、関連付けされたマ
ークビットを有する。マーク段階の間、アクティブなグ
ラフ全体が検索され、各ノードが検査されるたびに各ノ
ードのマークビットがセットされる。それゆえ、マーク
段階の終了時には、そのグラフのノードと関連付けられ
たマークビットはセットされ、その他のマークビットは
リセットされていることになる。走査段階の間、メモリ
内の全てのノードに対するマークビットがシーケンシャ
ルに走査される。各マークビットが一度検査されると、
以下の2つのうち1つの処置がとられる。
(1)もしマークビットがセットされているなら、関連
したノードはそのグラフ内にあり、再使用することはで
きない。マークビットは次のマーキング段階の準備とし
てリセットする。
(2)もしマークビットがリセットされているなら、関
連したノードは縮小器(reducer)によって再使用でき
る。この場合このノードのアドレスを「セーブ」してお
き、将来縮小器が新しいノードを要求した場合にすぐ発
行できるようにしておかなければならない。これらの
「セーブされた」アドレスを新ノードアドレス(NNA)
と名付ける。
従来例では、縮小はすべてのマークビットが調べられた
後に再び始められる。
この発明では、マーク段階は縮小を行なうのと同じプロ
セッサ、すなわち第2図のグラフマネージャ10によって
行なわれる。しかし、走査段階は専用プロセッサのアロ
ケータ12によって行なわれる。走査機能を果たすために
はグラフマネージャ10が必要ではないので、グラフマネ
ージャ10は、マーク段階を完了するとすぐに縮小を再び
始めることができる。同時に、アロケータ12はマークさ
れていないノードを捜してメモリを走査し始め、そうし
たノードをグラフマネージャ10が使用できるように待行
列につなぐ。
走査段階が縮小と同時に行なわれるので、この実施例に
おけるガーベッジコレクションの中断の実際の長さは単
にマーク段階で費される時間のみであり、従来例におけ
るよりも大いに短く、しかも(メモリのサイズではな
く)グラフのサイズのみに依存する。
上で述べたように、アロケータ12の目的は、縮小の間
に、再使用可能なノードのアドレスをグラフマネージャ
10に供給することのみである。アロケータ12は、メモリ
を走査して、関連付けされたマークビットがリセットさ
れたノードを求めることによりこれらのノードの位置を
特定する。これらのノードのアドレスは、グラフマネー
ジャに新ノードアドレスを供給するための待行列(ノー
ドキュー)に置かれる。
縮小の間は、アロケータ12およびグラフマネージャ10の
双方ともシステムメモリ11にアクセスする。アロケータ
12はマークビットを読出しそしてリセットするためであ
り、グラフマネージャ10はノードにアクセスするためで
ある。メモリ競合を減じるため、メモリ動作の特別なセ
ットがアロケータ12に利用可能である。これらの動作
は、アロケータ12がマークビットのみに関連があり、ノ
ードの内容物には関連がないので可能なのであるが、マ
ークベクトルのアクセスを可能にする。マークベクトル
は8個のシーケンシャルなアドレスに存在するノードの
マークビットを含むビットベクトルである。マークベク
トルは通常のメモリアクセスにおける2クロック期間で
はなく、1クロック期間でアクセスできる。したがっ
て、この特別な動作を用いれば、アロケータは、8個の
マークビットに、16クロック期間ではなく1クロック期
間でアクセスすることができる。
第2図のアロケータ12は第7A図に、より詳細に例示され
る。アロケータ12は3つの機能ユニット、すなわち、ベ
クトルフェッチャ70と、ベクトル検査器71と、ノードキ
ュー72とからなる。ベクトルフェッチャ70は第7B図に、
より詳細に例示される。
ベクトルフェッチャ70は、ベクトル検査器71に処理のた
めのマークベクトルを供給する。ベクトル検査器71がベ
クトルを要求するときはいつでも、ベクトルフェッチャ
70は第2図のシステムメモリ11からベクトルを読出し、
ベクトル検査器71に転送する。次にベクトルフェッチャ
70は、システムメモリ11の、読出されたばかりのマーク
ベクトルに対するマークビットをリセットするメモリ動
作を開始する。これにより、走査段階が終わると、走査
されたすべてのマークビットが確実にリセットされてい
ることになる。ベクトルフェッチャ70は第7B図に、より
詳細に例示される。
マーク段階の間、第2図のサービスプロセッサ13は、一
旦走査段階が始まった場合に走査されるべきマークベク
トルの数を第7B図の走査カウントレジスタ73にロードす
る。マークベクトルが処理されるたびに、走査カウント
レジスタ73デクリメントされる。レジスタの値が0に等
しくなると、マークベクトルのフェッチングは終了し、
走査完了信号がアサートされる。このレジスタは21ビッ
ト長である。また、マーク段階の間、第2図のサービス
プロセッサ13は、一旦走査段階が始まった場合に走査さ
れるべき第1のマークベクトルのアドレスをMVアドレス
レジスタ74にロードする。このレジスタはアドレスの最
上位の21ビットを含み、(最下位の3ビットは常に零に
等しい。)、新しい各マークベクトルがメモリから読出
される前にインクリメントされる。
ベクトルフェッチャ状態機械75はベクトルフェッチャの
動作を制御する。上に述べたように、走査段階が始まる
前に、MVアドレスレジスタ74および走査カウントレジス
タ73にはそれらの初期値がロードされる。走査段階が一
旦始まると、ベクトルフェッチャ状態機械はMVアドレス
レジスタ74によってアドレスされたマークベクトルを読
出す。ベクトルフェッチャ状態機械75はメモリのインタ
ーフェース信号を操作することによってこの読出しを行
なう。マークベクトルがデータバスDB(7:0)上に存在
するとき、状態機械75はBEGIN CHECK信号をアサートし
て第7A図のベクトル検査器71に知らせる。
一旦マークベクトルがベクトル検査器71によって受取ら
れると、状態機械75はメモリインターフェース信号を用
いて、MVアドレスレジスタ74によってアドレスされたマ
ークベクトル内のマークビットをリセットするという、
さらに別のメモリ動作を実行する。リセット動作が完了
すると、状態機械75はベクトル検査器71からのCHECK OV
ER信号がアサートされて、ベクトル検査器71がさらに別
のマークベクトルを必要としていることを示すまで、ア
イドルのままである。リセット動作と同時に、状態機械
75はMVアドレスレジスタ74をインクリメントし、走査カ
ウントレジスタ73をデクリメントする。もし走査カウン
トレジスタ73が零でないなら、さらに別のマークベクト
ルが以前に説明されたようにフェッチされる。もし走査
カウントレジスタ73が零なら、走査完了信号がグラフマ
ネージャにアサートされる。もし走査完了信号がアサー
トされ、ENOUGH NODES信号がアサートされないなら、グ
ラフマネージャはガーベッジコレクションを開始する。
ベクトル検査器71は受取られた各ベクトルから8個まで
のノードアドレスを発生する。これらのアドレスは発生
されると第7A図のノードキューに加えられる。ベクトル
検査器71はもしノードキュー72からのFULL信号がアサー
トされないなら、ベクトルフェッチャ70からマークベク
トルを要求する。第7A図のベクトル検査器71は第7C図に
より詳細に例示される。
第7C図において、アドレスカウンタ76は新ノードアドレ
ス(NNA)の最上位の21ビットを格納する。単なるアッ
プカウンタである。走査段階が始まる前に、アドレスカ
ウンタ76には第7B図のMVアドレスレジスタ74より1つ少
ない値に等しい値がロードされる。一旦走査段階が始ま
ると、第7A図のベクトルフェッチャがBEGIN CHECK信号
をアサートするごとに、アドレスカウンタ76はインクリ
メントされ、新しいマークベクトルがベクトルレジスタ
77にロードされる。ベクトルレジスタ77は8ビット幅の
レジスタである。セット論理80の出力がこのレジスタへ
の入力で、出力はエンコーダ78に行く。エンコーダ78は
ベクトルレジスタ77の値に基づいて3ビット変位を発生
する。変位はベクトルのマークされていないビットのう
ち最下位のものの順番位置に対応する。たとえば、ベク
トル 10010111 は3の変位を発生する。ベクトルに少なくとも1つのマ
ークされていないビットがある限り、新ノードアドレス
VALID信号かアサートされ、ベクトル検査器71からの新
ノードアドレスが有効で、かつキュー72にロードされる
べきことを第7A図のノードキュー72に示す。もしベクト
ルレジスタ77の出力がすべて1なら、エンコーダ78はCH
ECK OVER信号をアサートし、新しいマークベクトルがベ
クトルレジスタ77にロードされてもよいことをベクトル
フェッチャに示す。
変位レジスタ79は新ノードアサートの最下位の3ビット
を格納するレジスタである。変位レジスタ79は、エンコ
ーダ78が新しい変位を発生するごとにロードされる。24
ビットの新ノードアサートは3ビット変位レジスタと21
ビットアドレスカウンタ76とを単に連結したものであ
る。
セット論理80はBEGIN CHECK信号の状態に依存して2つ
のうち1つの方法で動作する。もしBEGIN CHECK信号が
アサートされていれば、ベクトルレジスタ77にロードさ
れるべきマークベクトルがデータバスDB(7:0)上に存
在する。ゆえに、セット論理80はベクトルレジスタ77に
ロードするべく、マークベクトルを変化させず単に通過
させる。
もしBEGIN CHECK信号がアサートされていないなら、セ
ット論理80はベクトルレジスタ77の出力を選択し、最下
位の0のビットに1にセットし、新しい値をベクトルレ
ジスタの入力に供給する。たとえば、ベクトルレジスタ
77が値 10010111 を含むなら、次のクロック信号によりベクトルレジスタ
77にロードされるべきセット論理80の出力は 10011111 となる。要するに、ベクトルレジスタ77の値は、レジス
タ内に少なくとも1つのマークされていないビット
(0)がある限り、各クロックごとにセット論理80によ
って変化させられる。ベクトルレジスタ77の値の各々に
対して、エンコーダ78は変位レジスタ79にロードされる
新しい変位を発生する。
第7A図のノードキュー72は第2図のグラフマネージャ10
により将来使用できるようにするために、新ノードアド
レスをストアするために用いられる。ノードキュー72は
幅が24ビットで、深さが256エントリである。新ノード
アドレスが発生されると、それらはベクトル検査器71に
よってキューにロードされ、必要となるごとに、グラフ
マネージャによってキューから取り除かれる。
ノードキュー72と関連したカウンタが、キューの中のノ
ード数を監視し、また、2つの信号を発生するために用
いられる。FULL信号はキューがそれ以上いかなる新ノー
ドアドレスをも受取ることができないときにアサートさ
れる。ベクトルフェッチャ70はFULL信号がアサートされ
るまでマークベクトルをフェッチし続け、FULL信号がア
サートされるとメモリからマークベクトルを要求される
ことを停止する。その場合アロケータ12は一時的にアイ
ドルになり、再開するために十分な余裕がノードキュー
に生じるまで待機する。
ENOUGH NODES信号はキュー72に9個以上のノードがある
ときにアサートされる。グラフマネージャ10が結合子を
実行する前には、この結合子の実行を完了するのに十分
な新ノードアドレスが存在するか否かを確かめるため
に、この信号を検査する。
第2図のシステムメモリ11は、要求を発生する3つの回
路要素、すなわちグラフマネージャ10、アロケータ12、
および第8A図のリフレッシュ論理、のための様々な演算
をサポートする。各メモリアクセスに必要とされるクロ
ック数は、行なわれる動作の型により異なる。利用可能
なメモリ動作は以下のとおりである。すなわち、ノード
およびマークビットを読出す(Read Node and Mark Bi
t)。ノードおよびマークビットを読出し、次にマーク
ビットをセットする(Read Node and Mark Bit,then Se
t Mark Bit)。ノードおよびマークビットを読出し、次
にマークビットをリセットする(Read Node and Mark B
it,then Reset Mark Bit)。ノードを書込む(Write No
de)。マークベクトルを読出す(Read Mark Vector)。
マークベクトルをリセットする(Reset Mark Vecto
r)。リフレッシュする(Refresh)。要求なし(No Req
uest)。
バスアービタ86の目的はシステムバスへのアクセスを制
御することである。バスは実際にはデータバスとアドレ
スバスの2つのバスからなる。このバスは第2図の4つ
の主要機能ユニットの間でデータを転送するために用い
られる。バス上の転送の大部分にシステムメモリ11が関
係する。それゆえ、単純にするために、バスへのアクセ
スはシステムメモリ11が次の動作を実行する準備ができ
ているとき(すなわちそれがアイドルであるとき)のみ
に可能とされている。バスアービタはバス利用可能(BU
SAVL)信号をアサートすることによってバスが利用可能
であることを示す。
メモリタイミングおよび制御81は以下に説明される2個
の記憶アレイに制御情報およびタイミング信号を提供す
る。タイミングおよび制御信号の発生は選択された動作
に依存する。
ノードのためのマークビットは、マークメモリ83にスト
アされる。これらのマークビットは行なわれている動作
の型に基づいて、2つの方法の内の1つによってアクセ
スされ得る。マークメモリ83のマークメモリアレイ90を
第8B図により詳細に示す。マークメモリアレイ90は、16
K×1の複数のスタティックRAMから形成される。各スタ
ティックRAMは、14のアドレス入力と、チップ可能化入
力と、書込可能化入力と、データ入力と、データ出力と
を有する。もしチップが選択され(すなわちチップ可能
化信号がアサートされ)、書込可能化信号がアサートさ
れると、データ入力の値が、アドレスされたロケーショ
ンにストアされる。チップが選択され、書込可能化がア
サートされないなら、アドレスロケーションにストアさ
れた値がデータ出力に出力される。チップが可能化され
ないなら、データ出力はトライステート素子により高イ
ンピーダンス状態とされ、RAMの内容物は変化しないま
まである。
第8B図は、ボード分割の様な付随的な複雑さを無視し
て、マークメモリがどのように構成されているかを機能
的に例示している。アドレスバスAB(17:3)からの14ビ
ットおよびMARK BIT IN信号がメモリアレイのすべてのR
AMに送られる。8個のRAMの各行は独自のチップ可能化
信号を有する。RAMの8列の各々は独自の書込可能化信
号を有し、かつデータ出力ラインを共有する。
デコーダ91は2進の重みが付けられた7つの入力AB(2
3:17)を受取り、可能化されると、128個の相互に排他
的なアクティブロー出力(0−127)を与える。デコー
ダ91はMARK MEMORY ENABLE信号がアサートされると可能
化される。デコーダ91が不能化されると、すべての出力
がアサートされない。たとえば、もしデコーダ91へのAB
(23:17)入力が 0000010 と等しく、MARK MEMORY ENABLEがアサートされると、デ
コーダの3番目に下位の出力(2)がアサート(LOW)
され、その他すべてはアサートされない。
書込可能化発生器92は5つの入力信号の関数である8個
のアクティブローの書込可能化信号を与える。発生器は
MARK VECTOR OPERATION信号の状態に状態に依存して、
2つの方法のうち1つで動作する。MARK VECTOR OPERAT
ION信号がアサートされている場合、書込可能化発生器7
2はAB(2:0)入力を無視し、MARK MEMORY WRITE信号が
アサートされたときに、すべての8個の書込可能をアサ
ートする。MARK VECTOR OPERATION信号がアサートされ
ていない場合、書込可能化発生器92はMARK MEMORY WRIT
E信号がアサートされたときには、8個の書込可能化の
うち1つだけをアサートする。AB(2:0)ラインをデコ
ーダすることで、8個の書込可能化のどれがアサートさ
れるかが決定される。
マルチプレクサ93はデータ出力ラインの1つからMARK B
IT OUTPUT信号の値を選択する。AB(2:0)ラインは8個
の出力ラインのどれが選択されるかを決定するために用
いられる。
駆動ブロック94はMARK VECTOR READ信号によって制御さ
れる8個のトライステートドライバを含む。MARK VECTO
R READ信号がアサートされている場合、トライステート
ドライバが可能化され、8個のデータ出力ラインの値を
データバスDB(7:0)に出力する。MARK VECTOR READ信
号がアサートされていない場合、ドライバは高インピー
ダンス状態とされる。
第8A図のシステムメモリをアクセスするとき、グラフマ
ネージャ10は、各マークビットが、その関連したノード
とともに(概念的にはそのノードの65番目のビットとし
て)直接にストアされているものとみなす。マークメモ
リ83へのグラフマネージャのアクセスを可能にする2つ
のシステムメモリ動作がある。両方ともマークビットを
まず最初に読出し、そして次にマークビットをセットす
るか、リセットする。これらは単一のシステムメモリ動
作であると考えられるが、実際には2つのマークメモリ
動作が行なわれる。マークビットは動作の第1のクロッ
クの間に読出されてストアされ、次に第2のクロックの
間にセットまたはリセットされる。マークメモリ83によ
って行なわれる、1つのマークビットのみにアクセスす
る動作を単一ビット動作と呼ぶ。すべての単一ビット動
作に対して、MARK VECTOR OPERATION信号はアサートさ
れない。
マークメモリアドレスAB(23:17)の最上位の7ビット
は、メモリアレイ90のRAMの1行を選択するために第8B
図のデコーダ91によって用いられる。アドレスAB(16:
3)の次の下位14ビットは、選択された各RAM内の単一ビ
ットをアドレスするのに用いられる。MARK MEMORY WRIT
E信号はアサートされず、メモリアレイ90の、アドレス
された8ビットをデータ出力ラインに転送することを可
能にする。メモリアドレスAB(2:0)の最下位3ビット
は、MARK BIT OUTPUT信号のソースとしての8個の出力
ラインのうちの1つを選択するためにマルチプレクサに
よって用いられる。MARK BIT OUTPUT信号はグラフマネ
ージャに与えられ、ストアされる。
単一ビット書込みは、マークメモリの単一ビットのセッ
トおよびリセット動作を実行するのに用いられる。メモ
リアドレスAB(23:17)の最上位の7ビットは、メモリ
アレイ90のRAMの1行を選択するためにデコーダ91によ
って用いられる。アドレスAB(16:3)の次の下位14ビッ
トは、選択された8個のRAMの各々の単一ビットをアド
レスするために用いられる。MARK BIT IN信号はセット
動作に対しては1、リセット動作に対しては0である。
MARK MEMORY WRITE信号がアサートされると、8個の書
込可能化信号のうちの1つが強制的にアサートされ、ア
ドレスされたビットのうちの1つのみにMARK BIT IN信
号の値が書込まれる。アドレスAB(2:0)の最下位の3
ビットが、書込可能化信号のどれがアサートされている
かを決定する。
第2図のシステムメモリ11にアクセスするとき、アロケ
ータ12は、各マークビットが8ビットマークベクトルの
メモリにストアされているものとみなす。アロケータ12
はこれらのマークベクトルを読出しまたはリセットする
ことができる。アロケータ12によって与えられるアドレ
スは、最下位の3ビットが常に0であるので、8の倍数
である。第8A図のマークメモリ83によって行なわれる、
マークベクトルにアクセスする動作をマークベクトル動
作と呼ぶ。MARK VECTOR OPERATION信号はすべてのマー
クベクトル動作に対してアサートされる。
メモリアドレスAB(23:17)の最上位7ビットは、メモ
リアレイ90のRAMの1行を選択するためにデコーダ91に
よって用いられる。アドレスAB(16:3)の次の下位14ビ
ットは、選択された各RAM内の単一ビットをアドレスす
るために用いられる。MARK MEMORY WRITE信号はアサー
トされず、アドレスされた8ビットをメモリアレイ90の
データ出力ラインへ転送可能にする。MARK VECTOR READ
信号はアサートされ、8個のデータ出力ラインの値を、
ドライバ94を介してデータバスDB(7:0)の最下位の8
個のライン上に出力する。アロケータは第7A図のベクト
ル検査器71内で、データバス上のデータをラッチする。
マークベクトル書込は、マークメモリリセット動作を行
なうのに用いられる。メモリアドレスAB(23:16)の最
上位の7ビットは、メモリアレイ90のRAMの1行を選択
するためにデコーダ91によって用いられる。アドレスAB
(16:3)の次の下位14ビットは、選択された8個の各RA
M内の単一のビットをアドレスするのに用いられる。MAR
K BIT IN信号はリセット動作に対しては0である。MARK
MEMORY WRITE信号がアサートされ、8個の書込可能化
信号のすべてが強制的にアサートされるようにし、アド
レスされた8ビットのすべてにMARK BIT IN信号の値が
書込まれる様にする。これによりアドレスされたマーク
ベクトルがリセットされる。
第8A図のノードメモリ84は従来のメモリで、1ノード幅
である。ノードメモリ84はまた、エラー修正のための1
個のノードにつき8個の検査ビットを含む。エラー検出
および訂正器(EDC)85はノードメモリ84で発生する可
能性のあるいかなるエラーも検出し訂正するためのもの
である。これは64ビットワード毎に8個の検査ビットを
ストアすることによって行なわれる。これらの検査ビッ
トを用いて、すべての単一ビットエラーを訂正でき、す
べての2ビットエラーおよびいくつかの多数ビットのエ
ラーを検出することもできる。
エラー訂正は性能を最大とするために「脇で(on the s
ide)」なされる。これは、修正前のデータが直接に要
求を発生した回路に戻され、それと同時にEDCによって
検査されることを意味する。エラーが検出された場合、
データ修正ができるようにメモリサイクルが延ばされ
る。エラーの起こる可能性はわずかであるので、サイク
ルが延ばされることはほとんどなく、メモリは、訂正機
能を持たないメモリと同じ速度で働く。
結語 以上、変数を含まない関数型言語コードを用いる2進の
グラフとしてストアされるプログラムを評価する縮小プ
ロセッサのためのアロケータおよびシステムメモリを説
明してきた。これらのグラフはノードからなる。ノード
は物理的にはシステムメモリ内の記憶ロケーションであ
る。縮小処理の間、縮小プロセッサは新しいノードを要
求し、ノードまたは記憶ロケーションを捨てる。メモリ
内に存在する時、各ノードはその最上位ビットとしてマ
ークビットを含む。マークビットは、セットされている
と、そのノードがグラフに用いられていることを示し、
リセットされていると、そのノードまたは記憶ロケーシ
ョンがグラフマネージャにより将来使用することが可能
であることを示す。
グラフマネージャおよびアロケータは連携して動作す
る。グラフマネージャは、縮小処理において使用するた
めに、メモリにストアされる種々のノードをマークし、
一方アロケータは、未使用の記憶ロケーションがあるか
どうかを見るために記憶ロケーションの選択されたグル
ープを走査し、次にこれらがグラフマネージャに使用で
きるように、キュー内にそれらの未使用記憶ロケーショ
ンのアドレスを置く。多数の記憶ロケーションを並列に
走査できるようにするために、システムメモリはノード
メモリおよびマークビットメモリに分割される。これに
より、どのノードロケーションがグラフマネージャによ
り使用可能かを決定するために、一連の記憶ロケーショ
ンのマークビットが並列に検査される。
この発明の1つの実施例だけを開示したが、特許請求の
範囲に記載の発明の精神および範囲から逸脱することな
しに種々の変形および修正ができることは当業者にとっ
て明らかであろう。
フロントページの続き (72)発明者 ウインチエル,マイケル・エイ アメリカ合衆国、78759 テキサス州、オ ーステインアンブルサイド・ドライヴ、 3500 (56)参考文献 特開 昭57−111872(JP,A) 特開 昭58−66157(JP,A) ソフトウェア基礎論研究会試料7.ソフ トウェア基礎論7−4「関数型言語VUL CANの処理系とその評価」高野明彦,山 野紘一,社団法人上方処理学会.1984. 1.20

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】複数個の記憶ロケーションを有する記憶ロ
    ケーションメモリと; 複数個のマークビット位置を有するマークビットメモリ
    とを含み、前記マークビット位置の各々は前記記憶ロケ
    ーションメモリの記憶ロケーションのひとつに対応し、
    マークビットがセットされている場合にはそのロケーシ
    ョンが割り当て済であることを示し、マークビットがリ
    セットされている場合には対応する記憶ロケーションが
    使用可能であることを示し; 前記記憶ロケーションメモリのシーケンシャルな複数個
    の記憶ロケーションを表わす複数個のマークビットを並
    行にアクセスする並行アドレス手段をさらに含む、処理
    システム。
  2. 【請求項2】前記マークビットメモリの単一のマークビ
    ット位置にアクセスするための手段をさらに含み、請求
    の範囲第1項に記載のシステム。
  3. 【請求項3】複数個の記憶ロケーションを有する記憶ロ
    ケーションメモリと; 複数個のマークビット位置を有するマークビットメモリ
    とを含み、前記マークビット位置の各々は、前記記憶ロ
    ケーションメモリの前記記憶ロケーションの1つに対応
    し、そのマークビット位置はセットされている場合には
    対応する記憶ロケーションが割り当て済であることを示
    し、リセットされている場合には対応する記憶ロケーシ
    ョンが使用可能であることを示し; 前記記憶ロケーションメモリと前記マークビットメモリ
    の両方に結合される処理手段と; 前記マークビットメモリおよび前記処理手段に結合さ
    れ、使用可能な記憶ロケーションの探索のために前記マ
    ークビット位置を検査し、それらのアドレスを前記処理
    手段に転送するための割当手段と; 前記記憶ロケーションメモリのシーケンシャルな複数個
    の記憶ロケーションを表わす複数個のマークビットに並
    行にアクセスするための並行アドレス手段を含む、処理
    システム。
  4. 【請求項4】前記マークビットメモリの単一のマークビ
    ット位置にアクセスするための手段をさらに含む、請求
    の範囲第3項に記載のシステム。
JP61500657A 1985-01-11 1986-01-13 変数を含まない関数型言語コードを用いる2進有向グラフとしてストアされたプログラムを評価する縮小プロセッサのためのシステムアロケータ Expired - Lifetime JPH0731619B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US690842 1985-01-11
US06/690,842 US4616315A (en) 1985-01-11 1985-01-11 System memory for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes
PCT/US1986/000044 WO1986004168A1 (en) 1985-01-11 1986-01-13 System memory for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes

Publications (2)

Publication Number Publication Date
JPS62501455A JPS62501455A (ja) 1987-06-11
JPH0731619B2 true JPH0731619B2 (ja) 1995-04-10

Family

ID=24774180

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61500657A Expired - Lifetime JPH0731619B2 (ja) 1985-01-11 1986-01-13 変数を含まない関数型言語コードを用いる2進有向グラフとしてストアされたプログラムを評価する縮小プロセッサのためのシステムアロケータ

Country Status (6)

Country Link
US (1) US4616315A (ja)
EP (1) EP0187713B1 (ja)
JP (1) JPH0731619B2 (ja)
CA (1) CA1264200A (ja)
DE (1) DE3687277T2 (ja)
WO (1) WO1986004168A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8515482D0 (en) * 1985-06-19 1985-07-24 Int Computers Ltd Search apparatus
NL9001262A (nl) * 1990-06-05 1992-01-02 Oce Nederland Bv Werkwijze voor het in een logisch georganiseerd systeem, van door digrafen te representeren groepen van met elkaar in relatie staande entiteiten, distribueren van status-informatie betreffende een digraaf en een inrichting voor het toepassen van een dergelijke werkwijze.
SE9002558D0 (sv) * 1990-08-02 1990-08-02 Carlstedt Elektronik Ab Processor
CA2166420C (en) * 1993-07-01 2006-03-28 James R. Woodhill System and method for distributed storage management on networked computer systems
US5794254A (en) * 1996-12-03 1998-08-11 Fairbanks Systems Group Incremental computer file backup using a two-step comparison of first two characters in the block and a signature with pre-stored character and signature sets
US6038665A (en) * 1996-12-03 2000-03-14 Fairbanks Systems Group System and method for backing up computer files over a wide area computer network
US8316345B2 (en) * 2007-06-01 2012-11-20 Microsoft Corporation Program abstraction based on program control

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57111872A (en) * 1980-12-27 1982-07-12 Fujitsu Ltd List processing system
JPS5866157A (ja) * 1981-10-16 1983-04-20 Nec Corp 記憶セル

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3469239A (en) * 1965-12-02 1969-09-23 Hughes Aircraft Co Interlocking means for a multi-processor system
CH553450A (de) * 1972-12-19 1974-08-30 Hasler Ag Einrichtung zur buchfuehrung ueber die belegung von speicherzellen in einer datenverarbeitenden anlage.
NL7600816A (nl) * 1975-02-10 1976-08-12 Siemens Ag Geheugeninrichting.
GB1548401A (en) * 1975-10-08 1979-07-11 Plessey Co Ltd Data processing memory space allocation and deallocation arrangements

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57111872A (en) * 1980-12-27 1982-07-12 Fujitsu Ltd List processing system
JPS5866157A (ja) * 1981-10-16 1983-04-20 Nec Corp 記憶セル

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ソフトウェア基礎論研究会試料7.ソフトウェア基礎論7−4「関数型言語VULCANの処理系とその評価」高野明彦,山野紘一,社団法人上方処理学会.1984.1.20

Also Published As

Publication number Publication date
CA1264200A (en) 1990-01-02
WO1986004168A1 (en) 1986-07-17
DE3687277T2 (de) 1993-04-15
EP0187713A3 (en) 1989-08-30
US4616315A (en) 1986-10-07
EP0187713A2 (en) 1986-07-16
DE3687277D1 (de) 1993-01-28
EP0187713B1 (en) 1992-12-16
JPS62501455A (ja) 1987-06-11

Similar Documents

Publication Publication Date Title
JP2776132B2 (ja) オペランド内の情報のスタティックおよびダイナミック・マスキングを兼ね備えるデータ処理システム
US5408626A (en) One clock address pipelining in segmentation unit
US6266755B1 (en) Translation lookaside buffer with virtual address conflict prevention
US4079453A (en) Method and apparatus to test address formulation in an advanced computer system
US6009509A (en) Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
JPH0778738B2 (ja) ディジタル・コンピュータ・システム
JPS61276031A (ja) デ−タ処理装置
JPS60179851A (ja) デ−タ処理装置
TW201730751A (zh) 切換影堆疊指標的硬體設備以及方法
US5097407A (en) Artificial intelligence processor
US5761467A (en) System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field
US3624616A (en) Dynamic allocation of multidimensional array memory space
US5226132A (en) Multiple virtual addressing using/comparing translation pairs of addresses comprising a space address and an origin address (sto) while using space registers as storage devices for a data processing system
IE970146A1 (en) A data processing system having a self-aligning stack¹pointed and method therefor
JPH0731619B2 (ja) 変数を含まない関数型言語コードを用いる2進有向グラフとしてストアされたプログラムを評価する縮小プロセッサのためのシステムアロケータ
US4028670A (en) Fetch instruction for operand address calculation
US7886205B2 (en) Verification of a data processing system using overlapping address ranges
US4598361A (en) Allocator for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes
US5951676A (en) Apparatus and method for direct loading of offset register during pointer load operation
US5732005A (en) Single-precision, floating-point register array for floating-point units performing double-precision operations by emulation
EP0061586A2 (en) Data processing apparatus with extended general purpose registers
JPH0192856A (ja) アクセス及び欠陥論理信号を用いて主メモリユニットを保護する装置及び方法
WO1996038789A2 (en) Programmable instruction trap system and method
US5822607A (en) Method for fast validation checking for code and data segment descriptor loads
US5815729A (en) Method and apparatus for on the fly descriptor validation