コンピュータハードウェアの構成(3)

アナログデータの扱い

音のようなアナログ量 (無段階に変化する量) のデータをコンピュータに入力するには、 アナログ量をデジタル量に変換して入力しないといけない。

デジタル量とは有限の精度の数値で表された量で、精度が有限のため、 とびとびの(段階的な)量しか表せない。

アナログ量からデジタル量への変換を量子化と言っている。 それには、AD変換器 (AD converter, AD=Analog-Digital)を用いる。

「量子」というのは、もともと物理学の用語。quantize=量子化する

音の場合であれば、一定時間ごとに音の電気信号の電圧を取り出し、 アナログからデジタルに変換している。 一般に、アナログ信号の強さを一定の時間おきに採取することを サンプリングと言っている。 1秒間あたり採取する回数のことをサンプリング周波数と言っており、 その単位はHz(ヘルツ)である。 オーディオ CD の場合、サンプリング周波数は 44kHz である。 つまり、1秒間に44000回サンプリングしている。

567x354(17456bytes)
量子化
567x354(20463bytes)
デジタル化された信号

量子化によって当然誤差が発生する。例えば音の場合なら、 その誤差は量子化ノイズとなって表れる。 しかし、デジタル化の際の精度が高ければ、あまり気にならない。 逆に、デジタル化したことによって、 デジタル信号になった後に入ってくるノイズに対しては影響を受けにくくなる。 また、デジタル量は単なる数値なので、コピーしても全く変化しない。 (これに対して、カセットテープにはアナログ的に音を記録しているので、 コピーすると音がかなり劣化する。) 記録・読み出しによっても変化しないし、 伝送によっても変化しない(伝送時に強力なノイズが入ったりしない限り)。 CD 等のメリットもこのあたりにある。

デジタル化にはこのようなメリットがある反面、 著作権に関係した問題が発生している。 品質を下げずにコピーできるので、 違法コピーによる著作権侵害事件の多発が心配されるわけである。

サンプリングについては、有名なサンプリング定理というものがある。 これは、 「サンプリング周波数が f Hz なら、 元の信号の f/2 Hz 以下の周波数成分は完全に再現できる」というものである。 人間の耳には 20000 Hz より高い音は聞こえないと言われているので、 サンプリング定理によれば、20000 * 2 = 40000 Hz 以上のサンプリング周波数でサンプリングすれば、 人間に聞こえる音は完全に再現できることになる。 とは言っても、これはサンプリングの際に誤差が全くないとしての計算である。 実際には量子化の際に誤差が発生するため、 完全には再現できない。オーディオ CD では、 誤差なしの場合の理論値よりも少し高めの 44000 Hz を選んだわけである。

量子化とは逆にデジタル量をアナログ量に変換するには、 DA変換器 (DA converter) を用いる。 コンピュータから音を出す時などはこれを用いる。

デジタル化の最大の利点は、 数学が使えるようになることだというのが小林の意見である。 もちろん、アナログ量に対しても微分・積分などの数学は使えるし、 実際に使われている。 例えば、オーディオ関係の電子回路の設計に微積分が使われている。 しかし、アナログの場合はどうしても信号が狂うので、 数学を適用しても、理論通りの結果にならずに少しずれた結果になる。 しかし、デジタル化してしまうと、数学が厳密に適用できる。

通信

コンピュータと周辺機器の間、 またはコンピュータとコンピュータの間でデータのやりとりをするには、 通信のための仕掛が必要である。 (そもそも通信とは何かというとデータのやりとりだとしか言いようがないかも…)

通信には、シリアル通信パラレル通信がある。

シリアル通信では、1 ビットずつデータを送受信する。 (例えば、8ビット送るには、少なくとも8ステップかかる。 実際には、データの開始を表す信号とか、データの終了を表す信号も送るので、 8ステップで済むわけではない。)

パラレル通信では、 データ送受信のための線を複数(例えば8本とか16本)用意して、 一度に何ビットかを送受信する。

シリアル通信でも、ケーブルの端子が1つしかないわけではない。 送信用の端子と受信用の端子が別ならそれだけで2本だし、 コントロール用の端子がまた別にあるかも知れない。 ケーブルの先につながる機器に電源を送れるように、 電源線が入っている場合もある。

シリアルの元々の意味は直列、パラレルは並列。 シリアル=serial, パラレル=parallel

原理的にはパラレル通信のほうが速いように思えるが、 線が多くなるため、ケーブルが太くなる (ケーブルの被覆の中には複数の線が入っている)。 ケーブルが太くなると、引き回しがしにくく、接続端子も大きくなり、 接続が面倒になる。 また、複数の信号線の間で信号伝達の遅れのバラつきが出ると正確にデータが送れないのだが、 線が長くなるほど遅れのバラつきが表面化してくるので、 長い距離の信号伝送ではシリアルより不利になることもある。 (SCSI バスの例だと、最初の規格では何と3mしか伝送できない。 その後の規格でもこの距離はあまりのびていない。)

最近はシリアル通信でも高速な方式が開発されてきたので、 従来パラレル通信を使っていたところでもシリアル通信を使うケースがよく見られる。

例えば、USB (Universal Serial Bus) という規格が普及しているが、 これはシリアル通信の規格である。 かつてプリンタはパラレル接続 (パラレル通信による接続のこと) が多かったが、 最近は USB 接続のものが多い。 USB がプリンタ接続などの用途には十分高速だからである。 また、USB 1.1 という規格をさらに高速化した USB 2.0 という規格が普及したため、 さらに高速性を要求される場面でも USB が使われるようになった。

プリンタ接続などよりもずっと高速性が要求されるハードディスクなどの接続にも、 IEEE 1394 というシリアルバスが使えるようになった。 IEEE 1394 はデジタルビデオカメラに多く搭載される形で普及してきたので、 パソコン向けにも普及してきている。 (細かいことを言うと、デジタルビデオカメラ向けの IEEE 1394 では、 ケーブル内の線が少し省略されている。) また、USB 2.0 で接続するハードディスクもある。

IEEE 1394 という規格は米Apple社が中心となって制定した規格で、 Apple は FireWire と呼んでいる。また、Sony は i.Link と呼んでいる。 コンピュータ機器に限らず、 ありとあらゆる家電機器も接続することを考えて作られた規格である。 DV接続とかDV端子という言葉もよく使われている。 (名前が多過ぎる!)

ハードディスクや MO などを接続するのによく使われている (しかし次第に使われなくなってきた) SCSI バスはパラレル接続である。 SCSIは今でも非常に高速性が要求されるようなサーバ用途などでは使われている。 (CPU に負荷をあまりかけないというメリットがある。) しかし、市場全体で見ると、 大半のハードディスクは ATA あるいは、シリアル ATA (SATA) と呼ばれる方式になっている。 シリアルATA方式は高速なシリアル接続方式である。

SCSI バスの場合、コンピュータの使用中にバスから機器(SCSIデバイス)をはずしたり、 逆に使用中にバスに新しく機器をつないだりしてはいけない (最悪の場合、コンピュータが壊れる)。 しかし、USB や IEEE 1394 の場合は、 コンピュータの使用中にデバイスを抜き刺し可能。 (そうしてもコンピュータやデバイスはこわれない。) とは言っても、書き込みの途中で抜くと、中途半端に書いた状態になるの で望ましくない。

ネットワーク

コンピュータどうしが通信できるように、通信路を張りめぐらしたものを、 「(コンピュータ)ネットワーク」という。 同じ建物の中、大学の1つのキャンパスの中などのように、 比較的狭い範囲に張られたネットワークを LAN (ラン, Local Area Network) という。 それに対して、広いエリアに張られたものを WAN (ワン, Wide Area Network) という (遠く離れた2つのキャンパスや支社を含めたネットワークなど)。 LAN にはイーサネット(Ethernet) と呼ばれる規格のネットワークが用いられることが多い。 (規格は、ケーブルの形状や電気的な特性、コネクタ形状、 通信規約などを定めている。)

イーサネットも古い規格のものは一種のシリアルバスであった。 他に、 高速性が要求されるところで光ファイバによるネットワークもよく用いられている。

クロック

コンピュータの内部には色々な回路があるが、 それらがうまく歩調を合わせて動作しないと、全体としてコンピュータはうまく動かない。 そこで、 クロックと呼ばれるものが使われている。

クロックは、一定の時間間隔で発生する電気的なパルスである。 このパルスが回路のあちこちに送られていて、 パルスが入るたびに、 全回路が歩調を合わせて処理を一段階先に進めるようになっている。


        ↑電圧

            ┌─┐  ┌─┐  ┌─┐  ┌─┐  ┌─┐
            │  │  │  │  │  │  │  │  │  │
            │  │  │  │  │  │  │  │  │  │
            │  │  │  │  │  │  │  │  │  │
            ┘  └─┘  └─┘  └─┘  └─┘  └─

                                                    → 時間

クロックの速さは1秒間あたりのパルス数で表し、単位は Hz (ヘルツ)である。 1 Hz とは、1秒間あたりに1つのパルスを出す速度をいう。 実際には MHz (メガヘルツ)とか GHz (ギガヘルツ) という単位を用いることがほとんどである。 1 MHz = 100万Hzである。 この場合の「メガ」は、1024*1024=2^20 ではなく、 国際単位系の「メガ」である。つまり、本当の100万である。 もちろん、ギガヘルツの G についても同様で、本当の10億である。

CPU のクロック(CPU 内部の回路の歩調を合わせるためのもの)と バスのクロック(バスの処理の歩調を合わせるもの) は別になっていることが多い。 例えば、CPU のクロックが 500MHz, バスのクロックが 100MHz といった具合である。

最近の高速なCPUのクロックは、3GHz 近辺になっている。

クロックと高速化

同一設計の CPU なら、クロックの速い CPU のほうが高速と考えてよい。 例えば、クロックが 400MHz の CPU より 500MHz の CPU のほうが高速である。 しかし、実際のコンピュータの性能は CPU のクロックにぴったり比例するわけではない。 例えばメモリが低速なら、それに足を引っ張られるため、 CPU だけを速くしても性能は上がらない。 また、バスの速度にも影響される。バスの速度によっては、 CPU のクロックの高いほうがかえって全体の処理速度が下がるという怪現象も起きる。

さらに、OS (オペレーティングシステム)の出来が悪いと実際の使用において効率が上がらない。 例えば、コンピュータの実際の使用においては、 ハードディスクに頻繁にアクセスするが、 ハードディスクはメインメモリに比べてはるかに遅い記憶装置なので、 ハードディスクへのアクセス回数が無駄に多かったりすると、 非常に処理速度が下がってしまう。 ハードディスクへのアクセスは OS が管理しているので、 OS の出来が悪いと全体の速度が上がらないことになる。 また、メモリが少ないと、 メモリに入り切らないプログラムやデータをディスク上に移さねばならなくなることがあり、 それが頻繁になると速度がガタ落ちになる。 少しくらい速い CPU を買うより、メモリをたっぷり積んで、 容量の大きい高速なディスクを積んだほうがコンピュータは速くなる、 とよく言われる。

また、設計の異なるCPUの場合、 クロック周波数の速い CPU のほうが速いとは言えない。 1クロックごとに実行される処理の内容が全く異なるからである。 同系統の設計の CPU でも、 ある1つの命令を実行するのに 3 クロック分の時間がかかるのと 2 クロックしかかからないのとでは当然処理速度が違ってくる。