見出し画像

【コンピュータの内側】第1回 「アナログからデジタルへ」

前回から始まった本連載。最初の数回は、コンピュータを語る上での布石として、最も基本的なお話をさせていただきます。

記念すべき第1回は「デジタル」と「アナログ」についてです。

「デジタル」「アナログ」とは何か

デジタルとアナログ。よく聞く言葉ですが、果たしてそれぞれの意味を説明できるでしょうか。最初に答えを出してしまいましょう。

数を連続的に表現するのが「アナログ」
数を離散的に表現するのが「デジタル」

なんだかよくわかりませんね。ここからは、体温計を例に挙げて詳しく解説します。

体温計には、アナログ式とデジタル式が存在します。最近はあまり見かけませんが、アナログ式体温計はメモリのついた管に水銀などの液体を封入し、熱膨張を利用して体温を可視化します。この時、液体は熱膨張によって滑らかに管を登っていくのがわかると思います。これが、「連続的」ということです。

対してデジタル式は、センサーで読み取った体温を小数点以下数桁まで数値化し、ディスプレイに表示させます。実際には「36.0℃」と「36.1℃」の間には無限の値が存在しますが、切り捨てられて無かったことにされます。これが、「離散的」ということです。

それぞれの数値の推移をグラフに表すと、アナログは滑らかに、デジタルは階段状になることがわかります。

数値の推移比較

デジタルで表現できる桁数を広げることで、階段のピッチをきめ細かくすることはできますが、結局どこまで行っても階段であることに変わりはないのです。

ここまでくると、なにも電気で動くものだけがデジタルではないことに気づきます。

例えば、「そろばん」はどうでしょう。 たまの上下や桁の位置によって数値を離散的に表していますので、デジタル計算機と言えるのではないでしょうか。

ノイズだらけのアナログ世界

そろばんと同様、コンピュータもデジタル計算機の一種です。なぜアナログでなくデジタルを採用したのでしょうか。答えを知るために、アナログ計算機とはどんなものか見ていきましょう。

有名なアナログ計算機として、「連立方程式求解機」があります。真鍮製のバーの角度というアナログ的な連続量を入力し、変化したテープの長さから連立方程式の解を求めたそうです。

この様なアナログコンピュータには重大な欠点があります。ズバリ、「ノイズの影響を受けやすい」のです。例えば、その日の気温によってテープの長さは変化します。熱膨張を起こすためです。角度だって、どんなに気をつけてもぴったりに調整することは不可能でしょう。ほんのわずかな誤差ですが、計算が精密になるほど、または規模が大きくなるほど見過ごせないズレが生じます。

その他にも、大気や地面の振動、重力、気温、湿度、電磁波などなど。現実世界にはノイズが多すぎるのです!

対してデジタルコンピュータは電圧の高低を「1」と「0」という数値に見立てます。なぜ0と1なのかは、今は置いておきましょう。重要なのは、アナログ的な揺らぎで電圧が0.96や0.85になろうが、0.5以上を全て四捨五入して1に見立ててしまえば何の問題も無いということです。(厳密には四捨五しているわけではないのですが、詳細は割愛します)

デジタル化によって、アナログ界のノイズを克服することができるのです。これであれば、膨大な数値の計算をしたとしても、ノイズによる誤差が問題になることは無さそうです。

素晴らしきデジタルの世界!

コラム「ノイズとの戦い」

本編が短くなってしまったので、余談としてコラムを作ってみました。
コンピュータの歴史は、ノイズやエラーとの戦いの歴史です。上で紹介した通り現実世界はノイズだらけ。おまけにコンピュータも人間が作った不完全なものであり、デジタル化したとて完璧な精度を求めることはできません。

古くは真空管コンピュータ時代。部品そのものがよく壊れるため、設計者、利用者共に大変な苦労を強いられたそうです。何より厄介なのは、一見動作するが、演算器や記憶装置の故障により出力される結果が間違っているというパターンです。これは、コンピュータの規模が大きくなるほど深刻な問題となります。

そこでリチャード・ハミングが提唱したのが、コンピュータ自身にエラーを検知・訂正させる「ハミング符号」と呼ばれるエレガントな手法でした。おそらく誤り訂正符号としては最古のものです。データに対して追加の情報を設定することで、誤りが発生したこととその位置を特定できます。

ハミング符号は、今でもECCと呼ばれる技術に利用されています。コンピュータにとって重大な脅威の一つは「宇宙線」です。宇宙船ではありません。宇宙線は宇宙から飛来する放射線のことで、これがコンピュータのメモリセルに一定の確率で衝突します。すると、セルに記憶されている値が狂ってしまうのです。

個人用のパソコンであれば問題にならないかもしれませんが、年中無休のサーバーにとっては大問題です。これを解消するため、サーバー用のコンピュータにはエラーを検知して訂正できるECCメモリが搭載されています。

ハミングの他にも、かのジョン・フォン・ノイマンは「TMR(Triple Modular Redundancy)」と呼ばれる、なんだが歌がうまそうな手法を提唱しました。演算を行う論理回路を3つ冗長に用意し、それぞれが出した解の多数決を取り結果を出力するという、MAGIシステムのようなものです。2つ以上の回路が同時に壊れない限り、正確な動作が保証されます。

耐障害性を高めるために構成要素を冗長化するような思想はフォールト・トレランスと呼ばれ、現代のシステム設計においては常識となっています。

また、ハードディスクのようなストレージで利用される技術としては、デイビッド・パターソンらが発明した「RAID」が有名です。いくつかのレベルが定義されているのですが、例えばRAID5は、パリティデータを複数のHDDに分散配置することで、1つ壊れても他のパリティからデータを復元することができます。

これ以外にも、様々な工夫がコンピュータの信頼性を支えているのです。
特にネットワーク関連はエラー対策技術の宝庫です。
興味がある方は調べてみると楽しいでしょう。

この記事が気に入ったらサポートをしてみませんか?