竹下世界塔の計算機よもやま話

アクセスカウンタ

zoom RSS 本:「Prologマシン」

<<   作成日時 : 2011/12/22 01:50   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

 Prologマシンについてはもやもやした感情がある。
 学生時代、所属していた研究室にLISPマシンであるELISとPrologマシンであるPSIが同時期に導入され、どちらを使うか非常に悩んだ。実用性からLISPの方を選んだのだが、あの時Prologも使っていれば、と今でもうなされる。当時の日記を見るとLISPの理解だけでいっぱいいっぱいだったようだが。
また、ICOT所長だった故・渕一博は高校の大先輩にあたり、講演会を二回も聴講する機会があって直接お話することも出来た。毎年、新宿で開催している高校の同窓会には毎回出席してらっしゃたのだが、私が参加する前年に亡くなられた。たいへん残念だった。

PrologマシンPrologマシン
金田 悠紀夫

森北出版 1992-04
売り上げランキング : 44979

Amazonで詳しく見る
by G-Tools


 この本は高級言語マシンとしてPrologを扱う計算機アーキテクチャをまとめたもので、前半はPrologの入門、データ構造、コンパイラとWAMについて書かれてある。私はソフトはさっぱりなので第7章のPrologマシンの実例について見てみた。なお著者は神戸大学PEKマシンの研究者。

 高級言語マシンはセマンティックギャップを埋めるためにハードウェア側からどの様にソフト側に歩み寄るかが気になるが、Prologマシンのモデルは最初のPSIを除きすべてWAM(Warren's Abstract Machine)に準拠している。
・WAM
WAM: Warren's Abstract Machine (Japanese)
 WAMはスタック、ヒープ、トレイルといった領域を使用し、実行はマイクロ命令だがパイプラインを意識したモデルになっている。

 時代背景:マイクロプロセッサの世代的には80386で数値演算コプロセッサが外付け、またはワークステーションに68030+68881が搭載されていた。CISC vs RISC論争がありRISCが普及し始める頃でもある。

 スタンドアロンはPSI,PSI-IIのみで、他はUNIXマシンなどのフロントエンドを必要とするバックエンドプロセッサである。バックエンドプロセッサはバスを共有するかメモリを共有するかでデータ幅も決まってくる。高速な処理を実現するためにすべてのPrologマシンでTAGが使用され、ハードウェアで比較できるようになっている。

 以下、各マシンを抜き出して対応する文献などを調査してみた。

□神戸大学 PEKマシン
PrologマシンPEK - コンピュータ博物館
CiNii論文 - シーケンシャル実行型PrologマシンPEK : ハードウェア構成
ホスト:MC68000(CP/M68K)
構成:TAG部とdata部30bitのメモリ空間をホストと共有
語長:34bit 14Frame+4TAG+16data
CPU:Am2909Aによるビットスライス、マイクロ命令
・インタプリタを念頭に設計されている

□バークレイ PLMマシン
ホスト:Sun-3またはNCR 9300
構成:VMEまたはMULTIBUS-IIによるメモリ共有
語長:32bit 1GC+3TAG+28data
CPU:VLSI-PLM 1.4μm

この論文よるとVAX8600のマイクロ命令に実装したみたらしい。
Implementing Prolog via Microprogramming a General Purpose Host Computer | EECS at UC Berkeley

□ICOT/三菱 PSI
MELCOM PSI - コンピュータ博物館
ホスト:スタンドアロン
構成:IEEE796バスにI/O接続
語長:40bit 2GC+6TAG+32data
CPU:DEC-10 Prolog準拠のKL0言語を直接実行。
・プログラミング言語ESPをコンパイルしてKL0にする。SIMPOSはESPで記述されたOS。
※これだけは実機を触ったことがある。→PrologマシンPSIの思い出

□ICOT/三菱 PSI-II
ホスト:スタンドアロン
構成:不明
語長:PSIと同じ
CPU:PSIの小型、高速版、WAMベースに変更。PSIの三倍速い

□ICOT/日本電気 CHI-I/CHI-II (カイ)
ホスト:PSI(CHI-I)/UNIXマシン(CHI-II)
構成:ホストプロセッサと疎結合(メモリを共有しない)
語長:36bit
CPU:マイクロ命令、パイプライン、レジスタ48本

その他SIM、PIMもあるが執筆時に存在していないためこの本には載っていなかった。

ICOTの成果はこちら:(しかしリンク切れ多数)
第五世代コンピュータプロジェクトアーカイブス

□三菱 PEGASUS RISC指向
CiNii論文 - Prologを指向したRISCプロセッサのパイプライン構成
Pegasus Prologプロセッサ −VMEbusボードによる評価−
ホスト:不明
構成:VMEバス
語長:40bit 2GC+6TAG+32data
CPU:2μm(1.5μmとも)、RISC風の固定長命令、パイプライン、72本のレジスタ / PEGASUS-IIは1.2μm
・語長とその構成についてはPSIの影響が見られる

□東芝 AIPマシン
フロントエンドのUNIXマシンAS3000はSun-3のOEM。
国立科学博物館ー産業技術の歴史
ホスト:AS3000(Sun-3)
構成:VMEバス、メモリはホストと独立
語長:32bit 4TAG+28data
CPU:IP704、RISC風の固定長命令、パイプライン、32本の汎用レジスタ、TAG処理
・コンパイル等はホストにまかせ、実行のみ担当

□日立 IPPマシン
CiNii論文 - 高速内蔵型PrologプロセッサIPPの設計
ホスト:UNIXマシン
構成:不明(メモリ共有かどうか?)
語長:32bit 4TAG+28data
CPU:ECLゲートアレイ、パイプライン、汎用レジスタ16本のプロセッサにProlog専用レジスタとTAG処理を追加


 さて、Prologマシンではどの様な構造が重要だろうか。

・例外なくTAG+データの構成
・32bit長にTAGとデータを押し込めているもの:PLM,AIP,IPP
・疎結合:CHI,AIP
・RISC風味:PEGASUS,AIP
・スタンドアロン、OS記述:PSIのみ

 1命令が高機能なので、マイクロ命令により実装されている。この実行には複数サイクルかかる。パイプラインは商用マシンでは実装されているが、実行時サイクルがまちまちでは隠蔽しきれないのではないか?
RISCを参考にしている機種は、汎用レジスタの本数と固定長命令を特徴としている。汎用レジスタの数はWAMの実現に必要。
通常の演算よりも比較と探索が重要なので、データ参照の局所性はあまり期待できないようだ。

 現在のプロセッサでPrologなどの言語をサポートするのに欠けているのはTAG付きデータ構造である。TAGの比較はプロセッサ内部で高速で行うのに都合が良い。SPARCのTAG付き演算があるが、これはTAG部が2bitしかなく、レジスタの下2bitに割り付けられている。加算器のキャリーなどをいじらなくてもいいようにしたためだろう。なおTAG付き演算は現在では使用非推奨になっている。
他にはGCサポート機能があれば。リストを渡り歩きマークを付けたり解放したり。これはGCアルゴリズムをプロセッサ内でやらせるのではなく、GCを細かいレベルでサポートする命令を用意すべきだろう。残念ながら私にはまだ想像できない。
 Prologの言語についてはこれを機会に正月にでもやってみよう。

 おまけ:インターネットにはCiNii論文や情報処理学会など昔では一般には閲覧できなかった情報が入手できる。ただしこの本がなかったらそれらに辿りつけたかどうか。特にインターネット以前の時代の記録についてはまとめ等ないので古書を求めて今日もさまようのだ。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




本:「Prologマシン」 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる