コンピュータの基本はアセンブラではない件

その人が,最初に触れたコンピュータがどういうものかは,その人のコンピュータ観に大きく影響します.それは,その人のコンピュータに対する発想に影響するし,最近ではプログラミング教育の基本はどこにあるか,というところにまで影響するので,放置しておくと結構厄介な問題に発展しそうなので,ちょっと書いておきます.

アセンブラ,これは人間に読めるようにした機械語ということですね.機械語というのはコンピュータが直接理解する言葉です.こう書いちゃうと機械語(アセンブラ)がコンピュータの基本のように思われてしまっても仕方がないですね.

ところが,この機械語というのはその先,つまりコンピュータのCPUの中身がブラックボックスにしちゃうんだったらこれを基本にならざるを得ないですが,本当はもっと下があって.どういう理由で機械語ができているかを知らないといけないと思うのですよ.

まずAND, OR, NOTといった論理回路があります.ここより下は量子力学という違う数学が必要なので,まずはここを基本と考えます.そういった論理回路を数10個組み合わせると,2進法で足し算をする装置とか,数を覚えておく装置とか,数を増やしてゆく装置とかが作れます.

たとえば,X+Y+Zという計算をしたいと思ったら,一度に3つの数の足し算はできなきので,2つの数の足し算を2回に分けてすることになります.それで,最初にX+Yの計算をしてその結果とZを足します.二進法で足し算をする回路の作り方がわかっているので,この3つの数の足し算をするには,その足し算の回路を2個用意すればよいことになります.

こうやって,計算したい式に対して何個の回路をどう組み合わせれば良いかということが見積もれます.

ところが,この回路で計算を表すと,計算が複雑になると回路がどんどん増えてしまうのと,計算を取り替えたいと思っても,そう簡単にはできないという問題があります.一方で,回路が繋がっている間はいつでも計算しているので,入力の数がどんどん変化するような場合でも,変化がほぼ即座に計算結果に反映するという利点もあります.

でも,すぐに計算結果がもとまることが嬉しいことなんてそんなになくて,少しぐらい計算が遅くても,もっと回路を減らせて,簡単に計算を切り替えられる自由度が高い方法はないのか,ということで考え出されたのがコンピュータなわけです.ざっくり言うと,どこかに計算方法が書いてあってそれに従って,回路を(半田付けをせずに)変更する仕組みということです.

例えば足し算を2回計算する必要があっても,1つの足し算回路と計算結果を取っておく回路をうまくつなぎかえれば計算できます.ということは何十回足し算を計算しても,その分時間はかかりますができるということです.

回路を繋ぎかえる方法をどうやって表したら良いのかということになりますが.ベタにスイッチをずらっと並べて表す方法もあります.スイッチを切り替えれば計算がかわります.それよりすごいのが数字と回路を対応させて,数字を並べることで回路が切り替わる方法です.このとき回路の使い方でできるだけ無駄が出ないように数字で表すとすると,回路のことがわかっている人しか数字を並べることができません.多少の無駄には目をつぶって,回路のことがわからなくても,人間にわかりやすいように数字を決めたのが機械語です.この機械語を並べてプログラムを作ります.

その後,機械語で作られたプログラムの重要度が増してきました.コンピュータが変わっても昔のプログラムはそのまま動いて欲しいということになって.機械語の方は変更せずに,それを解釈して回路に対応させる方を進化させて性能を稼いできました.ソフトウェアの発展はとても遅かったのに対して,ハードウェアが急速に発展してきた為に回路をじゃぶじゃぶ使った方が全体として性能がよかった時代です.この時代が長く続きました.

ムーアの法則というのを聞いたことがあると思います.ハードウェアの性能が3年で2倍とかそういう指数関数的に向上するという経験則です.その経験則が成り立たなくなってきました.これから先はソフトウェアを工夫しなければコンピュータの性能は頭打ちです.ソフトウェアの工夫といったのは,機械語より上を指している訳ではありません.ムーアの法則が発展させてきたのは,AND, OR, NOTという論理回路より下の性能です.それより上で頑張るしかありません.つまり,CPUの中の回路のこと,つまりCPUアーキテクチャから全部考え直して,当然機械語の表現の仕方も考え直すことが必要になります.

いま,まさにムーアの法則の終焉というコンピュータを取り巻く流れが大きく変わる転換期に,プログラミング教育が大きな話題となって,コンピュータの基礎をなんと捉えるべきなのか,考え直すいい機会になったのではないでしょうか.

シェアする

  • このエントリーをはてなブックマークに追加

フォローする