このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

インストラクションモノイドの合成法が4つもある

インストラクションセットから作られた自由モノイドが、メモリの状態空間に作用している、というのがノイマン型コンピュータの素直な定式化だろう。

自由モノイドを A* のようなクリーネスターで書くとする。A*×B* が自由モノイドの直積、A*#B* が自由積=直和だとする。自由積に星印を使うとクリーネスターと紛らわしいのでシャープにした。この2つはモノイドの圏Monのなかの積と余積だから自然なものだが、実は他にも“積”がある。

  • (A×B)*
  • (A*×B*)*

(A×B)*は完全にクロック同期したマシンによる実行。(A*×B*)* は最も一般的な並列プログラムで、非同期実行と同期待ち合わせが混じっている。

  1. A*×B* -- 完全に独立(分離)したプログラム実行
  2. A*#B* -- インターリービング。タイムシェアリング、コルーチン制御など。
  3. (A×B)* -- 単一クロックで完全同期した実行
  4. (A*×B*)* -- 一般並列実行協調制御

以前から数珠暖簾や梯子形の紐とかを考えてきたが、モノイドのなかで考えると以上のようになる。梯子のシェープを考えるとタイルの定式化がいいのかもしれない。梯子の横線の射が二重圏の水平射(か垂直射)となるのだろうが、水平圏は単なる完全グラフのような気がする。

しかしなー、一番簡単な例でも積が4種類(もっとかも)あるってのは、ちょっと愕然としますわ。ABCシステムと例外を入れて混ぜなくてはならない。うううう、複雑だー。生きている間にどこまでわかるのか -- ほんとに微々たる部分しか理解出来ないだろう。うううう。