CADRについて
MITのLisp マシン

たけおか @ AXE


初出: 2010/MAR/20
last update: 2011/SEP/04

MIT AI Lab. とXerox PARCでは、いわゆるAI(人工知能)マシンや、ワークステー ションを開発していました。

MIT AI Lab. は、Lispを高速に実行する、Lisp専用CPUを開発し、それを使用し た「Lispマシン」を開発していました。
CONSや、CADRが有名です。

Xerox PARCは、Inter LispやSmalltalkやMESA(のコンパイルド・コード)を実 行するための、ワークステーションを開発していました。
Alto、 Dolphin, Dorada, Dandelion, Dragon などが有名です。
特に、Dragonは、Snoop Cache、今でいう、コヒーレント・キャッシュを搭載したSMP マシンで、通常のマルチ・プロセッサ・マシンとしても非常に進んでいました。

それらの機械は、LispやSmalltalkなどの高級言語を高速に実行するための専 用アーキテクチャを持っていたので、しばしば「高級言語マシン」とも呼ばれ ます。
ここで言われる、高級言語とは、データそのものに型の情報がつ いており、動的なメモリ管理を行い、ガベージ・コレクタが空き領域の回収を するような言語です。


CADRは、Lispマシン用の専用プロセッサとして開発されました。
通常、CADRを使用したLispマシン(Lispワークステーション)もCADRと呼ばれます。
Lispマシンとして完成したCADRは、ビットマップ・ディスプレイとマウスを備え、 マルチ・ウインドウの環境でLispプログラミングができました。
CADRとして開発されたシステムは、そのまま商用化され、二つの会社が創業し、 商品を作りました。
  • Symbolics社 のSymbolics
  • Lisp Machine Inc. (LMI)社のLAMBDA


Symbolicsの方が商売的に成功し、 AIマシンが人気のあった時は、たくさん売れました。
また、AIブームが沈静化した時期には、3Dアニメーションを作成するツールが Symbolics上で 動作し、その専用機としてよく売れました。

当時、クローズド・ソースは常識だったのですが…MIT AI Lab. にずっといた ストールマン(GNUの発案者で、FSFの創立者)は、 Symbolicsのクローズド・ソース精神が気に入らず、 Symbolicsが作ったコードを、リバースエンジニアリングし、その結果を LMI社に教えたりしたそうです。
(※ ハッカーズ ,スティーブン・レビー (著), 松田 信子 , 古橋 芳恵 (訳), 工学社,1987/02 に、この話が載っている。
この本の前半は、MIT AI Lab.の話で、MIT Lisp ハッカーの話が沢山出てくる。)


AIマシン(高級言語マシン)は、CISCの一つの頂点と言えます。
2010年現在、CISCは、批判されることが多いのですが…
その批判の要点は、メモリの大きさ、速さと、CPU内部の速さのバランスが、悪い ということです。
現在は、演算器のそばに高速で大容量のメモリを付けられるので、 CISCが不利、 RISCが有利だ、というものです。それは実際、1990年頃から2010年には正しいことです。

Lispマシンがさかんに開発された当初は、高速メモリが小さく、CPU内のマイクロコードで 多くの実行を行った方が、合理的で高速であったのです。 CISCが有利だったのは、そういう CPU速度とメモリのバランス関係が成り立った時代です。
また、Symbolicsは末期になるとLispのコードを直接、マイクロコードへコンパイルしてしまう、 「マイクロコード・コンパイル」ということを行いました。
マイクロ・アーキテクチャは、RISCに非常に似ているので、高速化手法は同じでしょう。

CADRのマイクロ・アーキテクチャ(マイクロプログラム用のアーキテクチャ)は、 Lispを実行するためのRISCを作るときにも、参考になるものです。
また、仮に実用性が低くとも、Lispマシンを、勉強するのは、いつの時代でも、 計算機アーキテクチャ設計の勉強に役立つだろうと思います。


高級言語マシンの具備すべき要件(と思われるもの)
  • タグ付きアーキテクチャ
    主にデータにタグを付ける
    通常、タグの近辺に、GC bit(ガーベジコレクションで使用するビット)もある
  • 多重分岐
    タグを見て、高速に手続きをディスパッチ
  • 仮想記憶
    AIアプリケーションは、大きな記憶を必要とするが、昔は、実メモリは小さかった
CADR ドキュメントなど

CADR (実は CONS ???)


Sybolics


Xerox ALTO




たけおか(竹岡尚三)のLisp インデックス

たけおか(竹岡尚三)のホームページ