まったり アイマス2

アイドルマスター2 超ライトユーザーのプレイ日記

4390. 論理型言語、続き^3

2024年03月23日 | 日記

 第五世代コンピュータ計画の後半ではPROLOGを並列処理化したGHC言語の検討となりました。これはホーン節の頭部を一斉に処理を開始し、マッチングが成功したら他を止める(ガード)というもので、PROLOGのカット述語が述語内の同期制御に移行しました。
 ただ、割と探したつもりと思っているのですが、GHC言語の文法書が手に入らず、もちろんどのようなCPUの設計だったかも私は把握していませんので、手元にある公式資料からの類推になります。

 並列処理と同期ですから、計算機言語ではJOB命令とLOCK命令に相当します。JOBの方は新たなプロセスの開始で、LOCKはOSの排他セマフォに相当します。前項で述べたように、トレイルスタックの動作の一部がLOCK相当になるはずです。JOBは今なら別スレッドの開始で良いでしょう。
 PROLOGの頭部の処理はそれほど大規模ではないので、低粒度の並列処理になると思います。ですから、今の後知恵だと、当時ならCPUの高速化に画期的な成果と思います。しかし、第五世代コンピュータ計画は時限で終了し、頓挫した感じになりました。
 今は分岐予測はパソコンのCPU内でやっているので、珍しくは無くなりました。両者の成立過程は微妙に異なるでしょうが。
 まあ、当時は100万トランジスタが目標でしたから、今とはCPUの規模が全く違います。分岐予測を思いついていたとしても実現できたかどうか。

 ソフト的にはデータストリームが標準言語内で作成できるので、UNIXのパイプ処理相当がやや高度なデータコンテナの感じで実現します。GHC言語の目標の一つがこれでした。私の印象では並列化と言ってもCPUのグリッド配置の図の方が思い出されます。こちらはいわゆるルーティングの高速化が鍵となります。今では組み込み用のマイコンにもそれなりの仕掛けが付いています。お試しなら普通のイーサネットのハードで十分でしょう。

 カット述語の使い方には流儀というか、配慮しないと危険な使い方になります。このことからPROLOG(及びGHC)は純粋な一階述語論理の処理では無いように見えます。ただし、FIFO相当により横型探索が可能ですから少なくともシミュレーションは可能でしょう。

 もしもうまく行っていたら、の話ですが、良い線行っていたと思います。基礎理論がしっかりしているので、今も研究する値打ちはあると思います。ただし、どのような発明でもそうですが、しっかり検証しないと役立つかどうかは分かりません。私は自分のペースで、時々思い出しては検討しているつもりです。

コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする