コンピュータパート9
メモリ
コンピュータのメモリは、数値を格納したり読み込んだりできるセルのリストと考えることができます。各セルには番号付きの「アドレス」があり、1つの数値を格納できます。コンピュータに「1357番のセルに123を格納」したり、「1357番のセルにある数値と2468番のセルにある数値を加算し、その結果を1595番のセルに格納」するように指示することができます。メモリに格納される情報は、実質的にあらゆるものを表現できます。文字、数字、さらにはコンピュータ命令でさえ、同じように簡単にメモリに格納できます。CPUは異なる種類の情報を区別しないため、メモリが単なる数値の列として認識しているものに意味を与えるのはソフトウェアの役割です。
ほとんどすべての現代のコンピュータでは、各メモリセルは8ビット(バイトと呼ばれる)のグループで2進数を格納するように設定されています。各バイトは256種類の数値(2の8乗 = 256)を表現できます。 0から255、または-128から+127までの範囲で数値を格納します。より大きな数値を格納する場合は、連続する複数のバイト(通常は2、4、または8バイト)を使用します。負の数が必要な場合は、通常、2の補数表記で格納されます。他の配列も可能ですが、特殊なアプリケーションや歴史的な背景以外では、通常は見られません。コンピュータは、数値で表現できるあらゆる情報をメモリに格納できます。現代のコンピュータは、数十億バイト、あるいは数兆バイトものメモリを搭載しています。
CPUには、レジスタと呼ばれる特殊なメモリセルセットが搭載されており、メインメモリ領域よりもはるかに高速に読み書きできます。CPUの種類に応じて、通常2~100個のレジスタが存在します。レジスタは、最も頻繁に使用されるデータ項目に使用され、データが必要になるたびにメインメモリにアクセスする手間を省きます。データは絶えず処理されているため、メインメモリ(ALUや制御ユニットに比べて遅いことが多い)へのアクセスの必要性が減ることで、コンピュータの速度が大幅に向上します。
コンピュータのメインメモリには、主に以下の2種類があります。
ランダムアクセスメモリ(RAM)
読み取り専用メモリ(ROM)
RAMはCPUからの命令があればいつでも読み書きできますが、ROMには変更されないデータとソフトウェアが事前にロードされているため、CPUは読み取りのみ可能です。ROMは通常、コンピュータの初期起動命令を保存するために使用されます。一般的に、RAMの内容はコンピュータの電源を切ると消去されますが、ROMはデータを無期限に保持します。PCの場合、ROMにはBIOSと呼ばれる専用のプログラムが含まれており、コンピュータの電源投入時またはリセット時に、ハードディスクドライブからコンピュータのオペレーティングシステムをRAMにロードする処理を制御します。組み込みコンピュータでは、ディスクドライブが搭載されていないことが多く、必要なソフトウェアはすべてROMに保存されている場合があります。ROMに保存されるソフトウェアは、概念的にソフトウェアというよりハードウェアに近いため、ファームウェアと呼ばれることがよくあります。フラッシュメモリは、電源を切ってもデータを保持し、書き換えも可能なため、ROMとRAMの区別が曖昧です。ただし、通常、従来のROMやRAMよりもはるかに低速であるため、高速性が不要なアプリケーションにのみ使用されます。
より高度なコンピュータには、レジスタよりも低速ですがメインメモリよりも高速なRAMキャッシュメモリが1つ以上搭載されている場合があります。一般的に、この種のキャッシュを搭載したコンピュータは、頻繁に必要となるデータを自動的にキャッシュに移動するように設計されており、多くの場合、プログラマによる介入は必要ありません。
入出力(I/O)
I/Oは、コンピュータが外部と情報を交換するための手段です。コンピュータに入力または出力を提供するデバイスは、周辺機器と呼ばれます。一般的なパーソナルコンピュータでは、周辺機器には、キーボードやマウスなどの入力デバイスと、ディスプレイやプリンタなどの出力デバイスが含まれます。ハードディスクドライブ、フロッピーディスクドライブ、光ディスクドライブは、入出力デバイスの両方として機能します。コンピュータネットワークもI/Oの別の形態です。I/Oデバイスは、多くの場合、独自のCPUとメモリを備えた複雑なコンピュータです。グラフィックス処理装置(GPU)には、3Dグラフィックスの表示に必要な計算を実行する50台以上の小型コンピュータが搭載されている場合があります。現代のデスクトップコンピューターには、メインCPUのI/O処理を補助する多数の小型コンピューターが搭載されています。2016年頃のフラットスクリーンディスプレイには、独自のコンピューター回路が搭載されています。