主記憶装置
主記憶装置(しゅきおくそうち)は、記憶装置の分類で、「補助記憶装置」が一般に外部バスなど比較的CPUから離れていて大容量だが遅い記憶装置を指すのに対し、コンピュータのメインバスなどに直接接続されている記憶装置で、レイテンシやスループットは速いが比較すると小容量である。特に、CPUが入出力命令によって外部のインタフェースを操作するのではなく、「ロード・ストア命令」や、さらには通常の加算などの命令において直接読み書きできる対象であるものを指す。メインメモリ、一次記憶装置[注釈 1]とも。
概要編集
コンピュータの初期の頃は、水銀遅延線、ブラウン管記憶装置(ウィリアムス管)(1950年代)、磁気ドラムメモリ、あるいは磁気コアメモリ(1960年代)等を利用していたが、現在は一般的に半導体メモリを利用している。
磁気コアメモリを使った主記憶装置は、電源の供給がなくなっても内容を保持できていたが、半導体メモリを使ったRAMは、ハードディスクドライブなどの補助記憶装置と比較すると高速であるものの、記憶容量が限られており、また、電源の供給がなくなると内容が消えてしまうという特徴がある。そのため、補助記憶装置に内容を退避し、必要なときに再度読み込んで利用する形を取る。
RAMには、一定時間経つとデータが消失してしまうダイナミックRAM(DRAM)と、電気を供給している限り内容を保持しているスタティックRAM(SRAM)の2種類がある。SRAMはDRAMより高速なアクセスが可能であるが、構造上、DRAMの方が集積度を高められるため、現在の多くのコンピュータにはDRAMを主記憶装置として利用している。
最近のプロセッサ(以下、特にCPUについて記述)は、CPU自体の処理速度が極めて高速化しているにもかかわらず、主記憶装置を構成するDRAMのアクセス速度の向上が追いつかないため、主記憶装置とCPUとの処理速度のアンバランスが生じている(ノイマンズ・ボトルネック参照)。そのために、両者のギャップを埋め、より高速にデータを得るため、DRAMで構成された主記憶装置へのアクセスを直接行わず、高速動作が可能なSRAMで構成されたキャッシュメモリを経由してアクセスすることが多い。「Pentium 4」や「Athlon」など、おおよそ2000年以降に出回ったCPUでは、2段階及びそれ以上の段階のキャッシュメモリを経由して主記憶装置へアクセスする構造となっている。
なお、UNIXでプログラムが異常終了したときの動作を「コアダンプ」というが、これは、主記憶装置が磁気コアメモリを利用していた時代(1960年代)の名残である。
また、パーソナルコンピュータの時代の初期(1980年代)では、8ビット、16ビットCPUを使っていたが、CPUのアドレス空間が不足したため、バンク切り換え、EMSなどの手法により、実際のCPUのアドレス空間より広い主記憶装置を利用可能にしていた。32ビットCPUになってからは、アドレス範囲が4Gバイトあったため、主記憶切り替え機能は一旦廃れたが、さらなるメモリの需要に伴い、仮想記憶機能と連動して、一部の32ビットCPUでは、32ビットのアドレス範囲以上のメモリをアクセスできるような機能が提供されている。
主記憶装置の使われ方編集
現代的な多くのコンピュータシステムでは、オペレーティングシステムとメモリ管理ハードウェア[注釈 2]の連携により、プロセスごとに保護された主記憶装置のメモリ空間を仮想的に割り当てる、仮想記憶を採用している。そのため、主記憶装置の空間を一定の単位に区切って管理しつつ利用するメモリ管理機能が利用されている。その方法には、セグメント方式やページング方式がある。
故障編集
サーバやパーソナルコンピュータのハードウェアで、故障が最も発生し易いものの一つが主記憶装置である。従ってWindows 10などのOSでは「Windowsメモリ診断」ツールが利用できる。主記憶装置が故障すると以下のような事象が発生する。
- 電源を投入してもOSが立ち上がらずブルースクリーンが表示される。
- OSの起動途中に再起動し繰り返す。
- OSが立ち上がってPCを一定時間操作している途中で、画面がスノーノイズのようになって操作不可能になる。
PCに複数の主記憶装置を装填している場合、1つでも故障した主記憶装置があると他の主記憶装置が正常でも上記のような不具合が発生する。主記憶装置を1つ1つ抜いてどの主記憶装置が故障しているかを特定する必要がある。