Skip to content
oraccha edited this page Jan 15, 2013 · 1 revision

言語マシン

70年代ごろから開発されていたLisp専用マシン. OS,言語処理系,プログラム開発環境といったすべてが Lisp で記述され,統一した環境が提供されることが特徴である. . 日本では,ICOT,電総研あたりが中心に研究していた.

Lisp マシンはマイクロプログラミングを利用した CISC 的なアプローチが主流だったが,80年代に入ってからは RISC にタグ操作などを必要最小限の機能を追加した Lisp マシンが研究され始めた.

  • つまり,初期の Lisp マシンは,Lisp 言語の命令セットに近い命令セットを提供していたが,コンパイラ技術の発展などによって,Lisp 言語の各機能を実現するために必要なプリミティブとなる命令セットを提供した方が,性能が出るようになったらしい.

しかし,汎用プロセッサの高速化が目覚しく,最近はこのような研究はあまり聞かなかったけど,Javaチップなんかはその流れを継承しているのかなぁ.

Sat Jun 23 07:31:28 JST 2001 . 今日は,この辺のことを調べてるうちに夜が明けたって感じだが,自分が知らないだけってのもあるけど,面白い技術や考え方がいっぱい残っている気がする. . このまま歴史の闇に消え去ってしまうのはもったいない. いまさら Lisp マシン作っても個人的にはうれしくないけど,このような考え方と今的な技術を組み合わせたアーキテクチャ,システムソフトウェアって考えてみたいな. . そういう意味でも Java って偉大だったかも.


ハードウェア的特徴

  • ハードウェアスタック . スタックへのアクセスを高速化するために,主記憶上のスタック領域の先頭部分をプロセッサ内部の高速メモリに割り付ける.これはスタックトップキャッシュと呼ばれる方式である. . 最近のマシンはキャッシュをいっぱい積んでいるし,スタックをハードウェア化することのアドバンテージはどれくらいあるのかな.
    • これ、いつごろの話ですか。はっきりはいえないけど、ここ2,3年またホットな話題です。
    • [http://www.loveruby.net/ja/hack/words.html#regwin レジスタウィンドウ(中略)ようするに用途を(スタックに)絞ったキャッシュメモリ]…との事ですが本当?
  • タグアーキテクチャ . Lisp は generic function が使えるので,実行時の型判定が必要である. これを高速化するためにデータやポインタにタグを付加し,データ型によるマルチウェイ分岐,条件分岐や,タグ部とデータ部の並列処理などをサポートしている.
    • そういえば,Java の言語仕様にも generic function が追加されるらしいけど,VM レベルでの仕様変更はあるのかな? → GenericJava
    • SPARCにこれようの命令がある?けど、使ってるソフト、みたことない。
  • 水平型マイクロ命令 . 処理の並列度を上げる.例えば,演算と同時にスタックアクセスやポインタの更新を行なったりと,VLIWに通じるものがある.
  • メモリ管理(GC)のサポート . 実時間 GC としては,copying 方式が有効だが,GC の際にすべてのオブジェクトのリストを辿る必要があるが,これを高速化する Symbolics360 の Barrier などのサポートが考えられる.

実現例

  • MIT の Lispマシン . 1974年に開発された CONS マシンが Lisp マシンの原点である. . FlavorsというLispのオブジェクト指向拡張も Lispマシン上で開発されたらしい.

    • 例えば,70年代当時,MIT AI Lab で使われていた PDP-10 上で MacLisp を動かすより,CADR マシン(1976年)の方が約 3 倍高速に動作したらしい.
    • [http://www.andromeda.com/people/ddyer/lisp/ A Brief History of Lisp Machines]
    • [http://www.heeltoe.com/retro/mit/mit_cadr_lmss.html MIT CADR Lisp Machine Source code] (MIT) . CADR マシンのソースコード(1980 年ごろのスナップショット)が公開された.
      • [http://fukumori.org/diary/20051005.html MIT CADR Lisp Machineのソースコードが公開] (やさぐれ日記 2005-10-05) . StevenLevy の Hackers.本棚にあったな(笑)
    • MIT CADR Lispマシンのフォントが公開された.LinuxのコンソールやX-Windowで使う方法も書かれている.[http://www.eurogaran.com/downloads/lispmfont/ M.I.T. "CADR LispMachine" font]
    • [http://common-lisp.net/project/bknr/static/lmman/frontpage.html Lisp Machine Manual]
  • XEROX の InterLisp マシン. . Dorphine,Dorado と言ったいわゆる D マシン.

  • Symbolics 社の Lispマシン . Symbolics 36000,Ivory.

    • [http://kogs-www.informatik.uni-hamburg.de/~moeller/symbolics-info/symbolics.html Symbolics Lisp Machine Museum]
    • Lispマシンに直接関係ないんだけど, 「[http://www.pfu.co.jp/hhkeyboard/pfutechreview/ けん盤配列にも大いなる関心を]」によるとSymbolics 社の Lispマシンのキーボードにはいっぱいキーがあったみたい(スペースカデットキーボードって言うんだって).しかし,みんなキーボード談議がすきだなぁ.
    • [http://www.jottings.com/100-oldest-dot-com-domains.htm THE 100 OLDEST CURRENTLY-REGISTERED .COM DOMAINS] によると symbolics.com は 1985-03-15 に登録された現存するもっとも古い .com ドメインなんだね.
  • NTT 通研の TAO/ELIS と SILENT

    • [http://www.ipsj.or.jp/katsudou/museum/computer/NTT-ELIS.html 通研ELIS(電電公社)] (IPSJ)
  • Lispマシンってスタックマシンと同義語でしたっけ?--ma2tak

    • Lispマシン < スタックマシンでしょうけど,レジスタマシンなLispマシンってあるのかな?
  • M.Flatt, at el.: Programming Languages as Operating Systems (or, Revenge of the Son of the Lisp Machine), In Proceedings of ICFP 99, 1999. ([http://www.cs.rice.edu/CS/PLT/Publications/icfp99-ffkf.pdf PDF])

    • DrScheme という Scheme 方言の実行環境を提供する MrEd(Scheme 仮想マシン)の話.
    • 要は Scheme で Smalltalk みたいな実行環境を作るってことだよな.

関連リンク

  • [http://fare.tunes.org/LispM.html A few things I know about LISP Machines]
Clone this wiki locally