Rekursiv は、 1980 年代半ばにHi-FiメーカーLinn Productsの一部門でDavid M. Harlandが設計したコンピュータ プロセッサです。オブジェクト指向の概念をハードウェアに直接実装することを目的とした数少ないコンピュータ アーキテクチャの 1 つで、高級言語コンピュータ アーキテクチャの一種です。Rekursiv は、ビット、ニブル、バイト、ワードではなく、オブジェクトを直接操作しました。仮想メモリが永続的なオブジェクト ストアとして使用され、プロセッサの命令セットが再帰をサポートしていた(これが名前の由来です)。
プロジェクトが最初の実装を完了した頃には、Sun SPARCやIntel 486などの新しいプロセッサがそのパフォーマンスを上回っていたため、1988 年に開発は中止されました。
歴史
Rekursiv プロジェクトは、スコットランドのグラスゴーにある Linn の工場の組立ライン制御を改善する取り組みとして始まりました。ラインはVAX-11システムを使用して自動化されていましたが、速度が遅く、Linn の創設者であるIvor Tiefenbrunが望んでいた柔軟性を備えたプログラミングが非常に困難でした。1980 年代初頭までに、Tiefenbrun はオブジェクト指向プログラミングがこれらの問題の解決策になると確信していました。[1]
1981年、ティーフェンブルンは数人のプログラマーを雇い、ALGOLからいくつかの構文を借用してVAXシステム用のSmalltalk言語のバージョンを作成した。LINGOとして知られるこのシステムはVAXプラットフォーム上では動作したが、非常に低速であった。ティーフェンブルンは、パフォーマンス問題の解決策はVAX上の言語を改良することではなく、オブジェクトプログラムの実行に特化したまったく新しいCPUを開発することであると結論付けた。[1]
1984年、ティーフェンブルンはストラスクライド大学のデイビッド・ハーランド教授の指揮の下、全額出資子会社のリン・スマート・コンピューティングを設立し、Rekursivプロジェクトが誕生した。システムの最初のバージョンは1988年に登場した。[1]これらの4つのチップと80MBのRAMで構成される、 Hadesと呼ばれる少数のプロトタイプVMEbusボードが製造された。これらは、 Sun-3ワークステーションなどのホストシステムにインストールすることを目的としていた。Rekursivは完全に開発されることはなく、商業的に成功しなかったが、いくつかのHadesボードは英国の学術研究プロジェクトで使用された。Rekursivコンピューターの最後のコピーは、グラスゴーのフォース・アンド・クライド運河の底に沈んだ。[2]
ストラスクライド大学の研究者の投稿によると、Rekursiv システムが開発されていた頃、当時登場したSun SPARCシステム用に LINGO 言語の新しいバージョンが書かれていた。このバージョンは Rekursiv ハードウェアの 2 倍の速度で動作したため、この努力は無駄になった。 [3]その後しばらくして、同社は閉鎖された。[a]
説明
基本概念
Rekursiv プラットフォームの基本的な概念は、ハードウェア支援による永続オブジェクト ストアを提供することで、オペレーティング システムやユーザー プログラムの介入なしに、メモリ状態を継続的に目に見えない形でディスクに書き込むことです。あるレビュアーはこれを「永続オブジェクトを作成および管理するためのオブジェクト データベース エンジン」と表現しました。[5]
このようなシステムを複雑なプログラムを実行しながら妥当なパフォーマンスで動作させるために、Rekursiv はプログラマが使用している言語専用の命令セットアーキテクチャ(ISA) を独自に作成できるように設計されました。マイクロコード命令セットは静的 RAMに格納されました。[6]デフォルトの ISA はありませんでしたが、Linn はC プログラミング言語でプログラムを実行するために ISA を提供しました。[7]
メモリ処理
システムは、その上で実行されるプログラムにメモリ アドレスに相当するものを提供しませんでした。代わりに、オブジェクトには 40 ビットの識別子が与えられ、Objekt チップがそれをハッシュし、物理メモリへのポインタとして使用しました。[8] Objekt は、オブジェクト メモリをハード ディスクにマッピングして永続的に保存する処理も処理し、仮想メモリシステムを実装しました。ガベージ コレクションを処理するために、Objekt は提供されたダイナミック RAM (メイン メモリ) を 2 つに分割し、一方を新しいオブジェクトの作成に使用し、もう一方は未使用のままにしました。新しいオブジェクトが、使用済み部分の空き容量よりも多くのメモリを必要とする場合、Objekt はシステムを一時停止し、有効なポインタを持つオブジェクトを未使用の半分のメモリにコピーし、以前未使用だった半分をアクティブな部分に切り替えました。メモリが極端に制限されている場合、Objekt は最初にいくつかのオブジェクトをディスクにスプールしようとし、十分なスペースを解放できなかった場合は、メモリの両方の半分を使用しました。[9]
オブジェクトは複数の値を持つ複合構造で、ほとんどのシステムでは、値を保持するメモリ位置への一連のポインタとして実装されています。Rekursiv では、アドレスは、Objekt によって割り当てられたメモリのセクションを指す 40 ビットのオブジェクト ID に置き換えられます。40ビット ポインタの最上位ビット(MSB) は、値がオブジェクト識別子の場合は 1 に設定され、型指定のないバイナリ値の場合は 0 に設定されました。後者は、デジタル画像のデータのような大きなフォーマットされていないデータを格納するために使用され、オブジェクト内でのみ使用できました。[9]
フルオブジェクトの場合、さらに簡略化して、短いフィールドをポインター自体の中に値として保存することができました。これは、2 番目の MSB も 0 に設定することで示されました。この場合、次の 5 ビットは、プログラムの ISA によって定義されたタイプを示し、これは「整数」または「文字列フラグメント」である可能性があります。この「コンパクトオブジェクト」の実際の値は、ポインターの下位 32 ビットに配置されました。これにより、このような単純な値は、物理的な場所へのポインターをたどる必要がなく、プロセッサにすぐに提示され、メモリが節約され、パフォーマンスが向上しました。[9] [b]
40ビットのポインタの上位2ビットはステータスフラグに使用されていたため、Objektは合計で238個のオブジェクトしか識別できませんでした。オブジェクトは常にガベージコレクションされていたため、これらの値の多くは存在しないオブジェクトを指している可能性があり、システムの実際の使用時には識別子が不足する可能性があります。この問題に対処するために、システムイメージ全体が定期的にディスクに書き込まれ、その間にすべてのポインタが連続するように再番号付けされました。[9]
マイクロコード
プロセッサの命令セットは、「コントロール ストア」と呼ばれる静的 RAM の専用領域に格納されていました。これは、それぞれ 128 ビットの 16,384 ワードとして編成された専用の 16 ビット バスを介してアクセスされました。SRAM の別の「コントロール ストア マップ」セクションには、マイクロコード化されたルーチンへのエントリ ポイントの番号付きテーブルが保持され、10 ビットのオペコードを2,048 のエンティティの 1 つにマッピングします。[説明が必要]従来のプロセッサでは、マップは通常、オペコード デコーダのハードワイヤード ロジックで実装されます。[10]
オペコードはオブジェクトの一部となり、Objekt を使用する他のデータと同じ方法で保存できます。パフォーマンス上の理由から、NAM (および NAMARG) と呼ばれる別のメモリ バンクが 524,288 個の 40 ビット ワードを予約し、10 ビットのオペコードと 30 ビットの引数を格納します。NAM は独自のバスを介してプロセッサに直接接続されるため、現代のアーキテクチャではキャッシュのように動作します。[10]
実際には、プログラミング言語の開発者は、まず、最大 2,048 個の命令を持つ言語の基礎となる構文となる、必要なアセンブラ言語の概要を作成します。次に、C のstdlibにあるようなよく使用されるルーチンを、そのアセンブラ言語を使用してコード化し、NAM に書き込みます。シミュレーションでは、このスタイルを使用して記述されたLispルーチンは、 Symbolics Lisp マシンよりも約 20 倍高速に動作することが示されました。同社は Smalltalk と Prolog 用の同様のマイクロコード システムも作成しており、後者は Prolog の複雑な統合操作を単一のオペコードに削減しました。[10]
物理的なパッケージ
Rekursivプロセッサは、Numerik(32ビットALU)、Logik(命令シーケンサー)、Objekt(オブジェクト指向メモリ管理ユニット)、Klock (プロセッサクロックとサポートロジック)という4つのゲートアレイチップで構成されていました。元のバージョンのクロックは10MHzでした。[10]
Linn は Rekursiv チップセットをベンダーに販売するとともに、それを使用して独自のワークステーションを生産するつもりでした。当初、唯一の製品は「HADES」(「ダイナミック エキスパート システム用ハードウェア アクセラレータ」) で、 Sun-3またはSun-4ワークステーションに差し込むことができるVMEbusカードで構成されていました。HADES には 4 つのメイン チップ、2 MB の 45 ナノ秒 (22 MHz) SRAM、5 MB の 100 ns (10 MHz) DRAM が含まれていました。ディスク アクセスは、基盤となる Sun システムで実行されるプログラムによって処理され、パフォーマンスが大幅に低下しました。[10]
注記
- ^ 当時同社で働いていた人物によると、リン社のトラックがハーランド氏のポルシェに損傷を与え、ハーランド氏がオフィスに来なくなったのが最後の一撃だったという。[4]
- ^ 33 番目のビットはどのソースにも記載されておらず、未使用のようです。
参考文献
引用
- ^ abc パウンテン1988年、341ページ。
- ^ セブ、ローズ (2011 年 4 月 19 日)。 「レクシヴ」。スライドシェア.ネット。スライドシェア。2017 年2 月 27 日に取得。
- ^ リン・レクシヴ物語 - 再投稿
- ^ ロージアン 1993年。
- ^ パウンテイン1988年、348ページ。
- ^ パウンテイン1988年、342ページ。
- ^ パウンテン1988年、348-349頁。
- ^ パウンテイン1988年、346ページ。
- ^ abcd パウンテン1988年、347ページ。
- ^ abcde Pountain 1988、p. 349.
文献
- ディック・パウンテン(1988年11月)。 「Rekursiv: オブジェクト指向 CPU」(PDF)。バイト。13 (12): 341–349。
- ジェイムズ・ロージアン(1993年3月15日)。 「Re:Rekursivチップ(かなり長い)」。ニュースグループ: comp.arch.ユーズネット: 33000@castle.ed.ac.uk。
さらに読む
- ジム・オースティン・コンピュータ博物館 Rekursiv ページ
- CPU Shack: 奇妙で革新的なチップ
- Harland, David M. (1988 年 8 月)。Rekursiv : オブジェクト指向コンピュータ アーキテクチャ (Ellis Horwood コンピュータとその応用シリーズ)。Ellis Horwood Ltd. ISBN 0-13-771965-5。
- Baines, Rupert (1990年3 月)。「RISC の採用」。Personal Computer World。13 ( 3): 136–140。
- ハーランド、デビッド M.アイオワ州ハミッシュ州ガン。プリングル、イアン A.ブルーノ・ベロフ(1986年9月)。 「Rekursiv: 人工知能のためのアーキテクチャ」。手順AIヨーロッパ。
- Harland, David M .; Beloff, Bruno (1986 年 12 月)。「オブジェクト指向命令セットのマイクロコーディング」。ACM SIGARCH Computer Architecture News。14 ( 5)。Association for Computing Machinery : 3。doi : 10.1145 /18981.18982。S2CID 17125054。
- Harland, David M.; Beloff, Bruno (1987年4 月)。「Objekt: 統合ガベージ コレクターを備えた永続オブジェクト ストア」。ACM SIGPLAN通知。22 (4)。Association for Computing Machinery : 70。doi : 10.1145 /24714.24723。S2CID 14704178 。
- ローズ、セブ。「Rekursiv」。
- Harland、David M.「オブジェクト指向コンピュータ アーキテクチャ: - 概念と問題 - REKURSIV オブジェクト指向コンピュータ アーキテクチャ」(PDF)。
