« 作品集 | メイン | 身の丈にあった生活 »

2010年03月16日

計算機の危機?

最近どうも気になってしょうがないこと。
現在の計算機は、本当に決定論的システムなのか?

もちろん決定論的システムなのだが、そのプログラムの設計者が、すべての動作を把握することができているのか?という意味での疑問。

例えば電源が切れた状態で、トレイを開けるボタンを押すと、30秒後にトレイが空くDVDレコーダがある。起動に30秒かかっているわけだが、どう考えても、この時間は非常識なほどに長い。
組み込みシステムの開発者が、この30秒という時間をどう捉えているか(もっと早くしたいのか、しょうがないとあきらめているのか)は、現場の方々に聞いてみないとわからないが、その点は、いまは気にしない。

問題は、電源を入れてPowerOnResetがかかったあと、動作が始まるまでの、ステートマシンとしての計算機の動作が、どの程度まで理解されているのか?ということだ。
もちろん1命令ずつトレースしていけば、トレイが開くところにいきつくはずだが、現実的な組み込みシステムのプログラム開発においては、インスタンスの初期化など、かなり抽象度の高いブラックボックスが多く、プログラム開発者がその中身のすべてをトレースすることは、ほとんど不可能に近い。
組み込みシステムのSW/HW協調設計のCADでは、SW/HW分割の最適化を支援するために、分割時の実行サイクル数の見積もりを行う機能があるそうだが、それが実際の実効サイクル数とどの程度あうか、がCADとしての技術開発のキモらしい。

いや待て。「どの程度あうか」は、果たして決定論的なシステムである計算機においてありうる(あるいは許される)ことなのか?
もちろん1命令ずつ毎回トレースすれば、厳密に実行サイクル数を見積もることができるはずだが、それでは時間がかかりすぎるので、ある程度の近似や予測を混ぜて、実行サイクル数の見積もりの精度をあげる、という努力なので、やはり決定論的なシステムであることには変わりないはず。

しかし、これがツールになってしまうと、それ自体がブラックボックスになってしまい、それを使うシステム開発者は、厳密な実行サイクル数を求める、ということは、ほとんど行わなくなるだろう。
そして時代が流れ、そのツールの中身のことを理解している人がいなくなってしまうと、計算機の実行サイクル数は「およそこれぐらい」というようにみなされ、それを前提に組み込みシステムが構築されていく。はたして、この組み込みシステムは、決定論的なシステムと呼べるのか?

例えば、原子をくみあわせてタンパク質やDNAをつくることは、現在でもできる。しかし、それらを組み合わせて生きた細胞を作ることはできていない。つまり原子から多細胞生物までのつながりにおいて、タンパク質と細胞の間に、越えられないギャップが、少なくとも現在はある。

一方、計算機は、本来は、原子レベルの電子の挙動、半導体・トランジスタ、論理ゲート、ステートマシン、プロセッサ、計算機システム、マシン語、高級言語、OS、コンピュータネットワーク、というつながりは、すべてつながっているはず。
しかし、少なくともすべてを完全に理解している人は、現在の世の中にいるのだろうか?
自分が小学生のころは、トランジスタからマシン語(や、簡単な高級言語)までは、自分の中でつながっていて、相互に移動ができて、遊べた。しかし現在ほど計算機が複雑化すると、トランジスタを組み合わせてWindowsマシンを作ることは非現実的だし、そもそもそんな幅広い分野にまたがる興味を持つこと自体が非常に困難かもしれない。

そして、計算機システムは、階層構造になり、いわゆるハード屋とソフト屋の分業となってきているわけだが、その両者のお互いが、相手のことをブラックボックスとみなさざるを得ない。それほどまでに計算機システムは複雑化している。
うまくシステムが動いているうちはいいが、トラブルがあった場合はどうするか?両者が自分の守備範囲の中で原因をつきとめられないときには、ソフト屋はハードの問題だといい、ハード屋はソフトの問題だという。お互い相手はブラックボックスなのだから、入っていって限界をつきとめようにも、どうしても限度がある。
現在ならば、まだトランジスタから高級言語までつながっている経験をもつ人がいるから、まだなんとかソフトとハードをまたがって原因究明ができるのだろうが、そういう人がいなくなってしまったら、どうなるか?考えるだけで恐ろしい。

非常に高度に発達した計算機システムと、それにもとづく社会において、計算機システムが人類に反乱を起こす、というSF的な世界というのは、必ずしも人工知能のような上のレベルからの反乱だけではなく、下のレベルからくるのもあるのではないだろうか。例えば微細化しすぎて、電流がとまらなくなるMOSトランジスタのように。

・・・さて、このような問題をどうやって解決していくか。

投稿者 akita : 2010年03月16日 17:50

コメント

1人でレフトからライトまで守るのは難しいんじゃないでしょうか?
ただボールがどこにあるのか、全員把握できるようにはしておかないといけませんね。

投稿者 zzz : 2010年03月16日 18:56

難しい問題です…。
1ソフトウェアであるOSでさえ細かい挙動が把握しきれないのに…。

野球の例おもしろいですね。
ポジションがそれぞれの専門分野、
守備範囲がそのまま守備範囲、
フィールドの広さが積み重なった歴史、
問題の複雑さが打球の強さ
ってところでしょうか。

昔はフィールドがせまく、打球も弱く遅かったから、
例えばピッチャー一人で数ポジション分もの守備範囲をカバーできた。
でも、フィールドが広くなり、打球も強くなることで、
守備範囲はせいぜい隣接するポジションくらいまでになる。
それでも、
例えば左中間ならレフトでもセンターでもどちらでもカバーでき、
お互い協力することができた。
すごく俊敏で守備がうまく広範囲をカバーする人も稀にいた。
しかし、さらにフィールドが広大になり、打球も強くなると、
9人では守れない範囲が存在するようになり、
また、誰も拾えない球が飛んでくるようになる。
全員が球の位置を把握することさえ困難となってしまう。
こうなったらどうするのがいいのか。
ポジションを増やし人を増やせばなんとかボールを取れるようになるだろうか。
しかし、その状態で端から端まですべての人が
ボールの位置を把握するにはどうすればいいのか。
身振り手振りや声で周りの人伝に繋げていけばいいのだろうか。

後ろのほうは自問自答ぽいよくわからない流れで書いてしまいました(・・;

全員が定位置で動かなければいくら人を増やしてもキリがないので、
時とともに相対的にはせまくなってしまうにしても、
一人一人がなるべく広い守備範囲をもつことが必要になりますね。

投稿者 mmb : 2010年03月17日 02:41

zzzさん、mmbさん、コメントありがとうございます。
たしかに一人でレフトからライトを守るのは難しいですが、監督やコーチが全体を把握できていれば、チームとしてはうまく機能するはずです。
現在の計算機で、監督やコーチがいるのか?ということが気になるのです。

投稿者 akita : 2010年03月17日 08:00

コメントしてください




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)