Get Things Right

My English blog is here http://getthingsright.blogspot.com/

コンピューターサイエンス理論の証明は社会的実験の側面がある

経済学は理論(Theory)を扱うが、数学や物理学は法則(Law)を扱う。理論と法則の違いは、前者は仮説であり、物語や嘘でもかまわない。後者は真実であり、実験や観測を通して証明済みでなければならない。経済学は対象が人間社会であり、マルクス理論を証明するために共産主義国家を樹立し、社会の仕組みや行動を規制するなど、実験の規模がとてつもなく大きくなるために、証明のための実験が難しい。だから経済学では基本的に理論が法則になることはない。

コンピューターサイエンスは最近ムーアの法則(moore’s law)に陰りが見えきたように、法則といえども、所詮人間の世界。法則が頼りない。ムーアの法則、N年後のトランジスタ数=2^(n/1.5)に対して、”anything exponential growth does not continue” (指数関数的爆発的増加は続かない)という裏法則のほうが、より真実味がある。しかし、トランジスタ販売会社としては過去の製品との違いを出すマーケティング戦略として、ムーアの法則には意味がある。

コンピューターサイエンスの神学論争にCISC(Complex Instruction Set Computer) vs RISC(Reduced Instruction Set Computer)論争がある。CPU命令群の数は多いのがCISC。単純な命令だけを含み、命令数を抑えているのがRISC。ヘネパタ、ヘネパタと呼ばれるコンピューターアーキテクチャーの教科書を読んで「とうとう神学論争に決着がついた。RISCが勝ったのだ」と信じたあと、坂村健教授の本の中に、IEEE学会でRISCの重鎮が自説に対するチャレンジに怒鳴って応戦したとあり、なぜ科学に於いて、ロジックでなく感情で反応する必要があるのだと疑問をもった。

上記教科書の著者、ヘネシー氏はMIPSという会社を設立し,1989年にはIPOを済ましているようにRISCが優れていなければ、彼のリサーチプロジェクト、彼の会社の未来はないことになる。1990年にその教科書は初版が出されたところを見ると、ビジネスでインテルとの競争に勝つため、RISC信者を増やす動機があったのではないか。

その教科書の構造は:
1)CPUの良し悪しの定義をクロック(時間)あたり、多く命令を実行できるCPUが良いCPUとする
2)時間のかかる複雑な命令を含まないRISCは、平均的に少ないクロック(時間)で多く命令を実行できる
3)だからRISCは良いCPU。

と定義自体がRISCに有利なものとなっている。しかしアップルがモトローラ社製のRISCからインテル製のCISCx86)移行したように、現実はCISCが選ばれた。

実行速度のボトルネックはCPUがメモリから命令やデータを取得する時間にあり、それをノイマンボトルネックという。CISCの複雑な命令は命令の解釈や実行に時間が掛かるが、複数のRISC的命令に相当するCISC的命令をメモリから一回で取得できるなら、メモリアクセスの時間が減るため、CISCの命令実行はトータルでは速くすることができる(内部ではRISC的に変換しパイプライン処理をおこなう)。

最近Google I/O (23:27)でヘネシー氏がMeltdown and Spectre に関して” definition of architecture is…..I don’t tell you how fast they run, all I tell you is what the right answer is” (意訳:アーキテクチャの定義はプログラム速度ではなく、プログラムの正しい挙動)と、速度をアーキテクチャの対象としない発言に驚いた。(命令セット集合をアーキテクチャの定義とすれば正しいのだが)。

アップルのA11 Bionicチップセットは8Mと巨大なL2 キャッシュをCPUの近いところに搭載することで優れたパフォーマンスを実現している。RISCは命令数が少なく、使用するトランジスタの量を節約でき、その分キャッシュメモリトランジスタを回したのではと推測する。

最近RISCが盛り返してきており、それと同時にRISC-V、ARM版と上記教科書がアップデートされている。ヘネシー氏にはRISC(RISV-V,ARM,MIPS,IBM SPARC,PowerPC連合軍)がCISCインテルx86)をビジネス的に隅に追いやる未来が見えているのでは。

ここでCISCRISC論争を持ち出して、言いたいことは1960代にRISCの優位性理論が提言されてから、まだ結論がでていないということ。そして今現在、パソコンはX86CISCであり、RISCの優位性理論はCISCを駆逐するまで証明されない。すなわち、コンピューターサイエンス理論の証明はビジネス競争の結果に依存しているのだ。

プログラム言語で、どの言語が一番か。SNSアプリやブラウザ。マックとウインドウズ。iPhoneとアンドロイド。コンピュータの分野での「どれが優れているか」議論は多分に神学論争的だ。それでも優れたアイデアは真似されるため意見の差異が収束していく分野も多い。

1969年にトニー・ホーアがホーア理論をプログラム言語に適用することで、バグが少なくなる優れたアイデアを提示したが、プログラム言語に組み込まれ、受け入れられるには相当の時間がかかかる。プログラマがそのアイデアを吸収して、自分の物にし、またその成果が広く認識され、共有されるには時間が必要だからだ。ビントサーフによるTCP/IPプロトコルの策定は1970年代に行われたが、実際に広がったのはウインドウズ95が発売された、20年後のこと。

コンピューターサイエンス(CS)は理論が発表されたとしても、実際に世にでて人々に使われ初めて、優位性・有用性が確認されるため、多くの時間を必要としている。コンピューター技術の変化が激しく見えるのは、「プログラマの生産性向上が確認される」や「実行速度向上が現実の環境で確認される」など、理論の証明と確立手段が、社会の浸透を通して行われる、社会的実験の側面があるから。その意味でCSは数学や工学、そして社会やビジネスにまたがる非常に学際的な分野。

CS理論を証明・確立するための社会実験は実験環境の変数要素が多すぎて、なかなか証明できない。そのことがより多くの社会実験を必要とする原因となり、結果としてコンピュータ技術の変化が激しくなる。言い換えれば、CS理論は対象がコンピュータという人工物を基礎として構築されているため、社会の淘汰圧を原動力としてTheory(理論)からLaw(法則)に変換される側面がある。だからコンピューター技術の変化は激しくし、またプログラマ35歳定年説に繋がっていると考える。逆に言うならば、CS理論を学ぶことは、その淘汰圧や社会的実験の由来や背景を知ることに繋がり、新しい技術が出てきたときの見極めの指針となりえる。

参考:
https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%83%BB%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB%E3%83%BB%E3%82%B9%E3%82%A4%E3%83%BC%E3%83%88
https://en.wikipedia.org/wiki/Design_by_contract
https://en.wikipedia.org/wiki/Hoare_logic#Hoare_triple
https://www.cs.cmu.edu/~crary/819-f09/Hoare69.pdf
https://en.wikipedia.org/wiki/Moore%27s_law
https://ja.wikipedia.org/wiki/%E3%83%A0%E3%83%BC%E3%82%A2%E3%81%AE%E6%B3%95%E5%89%87
http://www.atmarkit.co.jp/fsys/zunouhoudan/027zunou/end_of_risc.html
https://ja.wikipedia.org/wiki/IEEE
https://www.youtube.com/watch?v=Azt8Nc-mtKM
https://en.wikipedia.org/wiki/MIPS_Technologies
https://en.wikipedia.org/wiki/Apple_A11
https://en.wikipedia.org/wiki/Java_(programming_language)
https://www.youtube.com/watch?v=GQi-6-d5ooQ
https://www.youtube.com/watch?v=tAl6wzDTrJA