主記憶装置とは
主記憶装置(メインメモリ、または単にメモリ)とは、コンピュータが現在実行しているプログラムや処理中のデータを一時的に記憶しておくための装置です。CPU(中央処理装置)は主記憶装置と直接データをやり取りしながら命令を実行します。データを読み書きする速度が非常に速いという特徴がありますが、コンピュータの電源を切ると記憶していたデータがすべて消えてしまう「揮発性(きはつせい)」という性質を持っています。そのため、長期間保存したいデータやファイルは、電源を切っても消えないハードディスクやSSDなどの補助記憶装置に保存しておく必要があります。
具体例
パソコンの作業環境に例えると、主記憶装置(メインメモリ)は作業をする「机の上の広さ」にあたります。机が広ければ広いほど、辞書やノート、筆記用具(プログラムやデータ)を同時にたくさん広げて、効率よく並行して作業を進めることができます。逆に机が狭いと、一度に使わない本を本棚(補助記憶装置)に戻さなければならず、作業が遅くなってしまいます。プログラム内では、実行時に以下のように変数を定義して値を保持する場所としてメインメモリが使われます。
// メモリ上に変数dataの領域が確保され、値が一時的に保存されます
int data = 100;
System.out.println(data);
もう少し詳しく
コンピュータのアーキテクチャ(ノイマン型コンピュータ)において、主記憶装置は非常に中心的な役割を担っています。ノイマン型コンピュータの最大の特徴は「プログラム内蔵方式」を採用している点にあります。これは、実行すべきプログラムの命令群と処理対象のデータの両方を、あらかじめ補助記憶装置(HDDやSSDなど)から主記憶装置に読み込んで配置し、CPUが主記憶装置から順番に命令を取り出し(フェッチし)ながら実行していくという仕組みです。つまり、主記憶装置が存在しなければ、CPUはどのような計算も始めることができません。
主記憶装置を構成する半導体メモリとしては、大容量化が容易で安価に製造できる「DRAM(Dynamic Random Access Memory)」が一般的に使用されています。DRAMはコンデンサに電気の電荷を蓄えることで「0」と「1」のデータを表現しますが、時間の経過とともに自然に放電してしまうという特性があります。そのため、記憶内容を維持し続けるためには、定期的にデータを読み出して再度書き直す「リフレッシュ」という動作をミリ秒単位で繰り返す必要があります。このリフレッシュ動作が必要なため、主記憶装置はSRAMを使用するキャッシュメモリなどに比べると動作速度がやや遅くなります。
また、主記憶装置の内部は、データを区別するために「アドレス(番地)」と呼ばれる一意の番号が1バイトごとに割り振られています。CPUが主記憶装置から特定のデータを読み出したり、計算結果を書き込んだりする際には、必ずこのアドレスを指定してアクセスを行います。現代のコンピュータでは、主記憶装置の容量が不足した場合に、補助記憶装置の一部をあたかも主記憶装置の延長線上の領域として扱う「仮想記憶(バーチャルメモリ)」という技術も組み合わせて利用されています。
試験でのポイント
基本情報技術者試験では、主記憶装置の性質や、他の記憶装置との比較についての問題が頻出します。絶対に押さえておくべきポイントは、主記憶装置の「揮発性」です。電源を切ると内容が失われるという特性は、ROM(不揮発性)や補助記憶装置(磁気ディスクやSSD)との明確な違いとして、正誤判定問題で頻繁に問われます。
また、記憶階層の中での位置づけも重要です。「レジスタ > キャッシュメモリ > 主記憶装置 > 補助記憶装置」という順序において、左に行くほどアクセス速度は高速になりますが記憶容量は小さく、価格(ビットあたりのコスト)は高くなります。この関係性を並べ替える問題がよく出題されます。
さらに、ノイマン型コンピュータの「プログラム内蔵方式」に関する記述問題として、「プログラムを実行する前に、必ず主記憶装置上にプログラムをロード(読み込み)しておかなければならない」という前提知識を問う問題も出ます。補助記憶装置から直接プログラムを実行することはできない点に注意しましょう。
関連する用語
主記憶装置に関連する重要な用語として、主記憶装置に採用されている半導体メモリであるDRAMや、主記憶装置とCPUの速度差を埋めるために配置されるキャッシュメモリ、そして主記憶装置の容量不足を補うために補助記憶装置を利用する仮想記憶などが挙げられます。