この記事では、RAMとROMについて、初心者にも分かりやすく、図解付きで丁寧に解説しています!
記憶装置の分類
- 記憶装置にはRAMとROMがある。
- RAMは電源を切ると記録している情報が消え(揮発性)、ROMは電源を切っても記録している情報が消えない(不揮発性)。
RAM
- RAMにはDRAMとSRAMがある。
- DRAMは主記憶装置に使われており、コンデンサ回路から構成される。低価格・低速・大容量。リフレッシュが必要。
- SRAMはキャッシュメモリに使われており、フリップフロップ回路から構成される。高価格・高速・低容量。リフレッシュが不要。
記憶装置にはRAMとROMがある
記憶装置はそれぞれの性質によってRAMとROMの大きく2種類に分類できます。

RAMはRandom Access Memoryの略で、情報の読出し・書込みの両方出来ます。
が、電源を切ると記録している情報が消えてしまいます。この性質を揮発性と呼びます。
一方、ROMはRead Only Memoryの略で、基本的に情報の読出ししか出来ません。
が、電源を切っても記録している情報が消えません。この性質を不揮発性と呼びます。
「基本的に情報の読出ししか出来ない」と言ってますが、PROMは書込みも出来ます。
フラッシュメモリの一種であるUSBやSDカードは書込み可能ですからね!
一般的にROMと言うと、マスクROMのことを指し、製造時にデータを書込んだら、それ以降変更することがありません。ゲームソフトがマスクROMの例ですね。
DRAMとSRAMの違い
RAMにはDRAMとSRAMがあります。DRAMとSRAMにはこんな違いがあります。

DRAMに使われるコンデンサ回路は構造が単純であるため、少ない面積で沢山の情報を記録出来ます。そのため集積度が高く、低コストなんです。
しかし、コンデンサ回路は放置していると記録している情報を忘れてしまいます。そのため、定期的に情報の再書込みをする必要があり、これをリフレッシュと呼びます。リフレッシュする必要があるため、低速になってしまうんですね。
一方、SRAMに使われるフリップフロップ回路は構造が複雑であるため、集積度が低く、高コストになります。
しかし、コンデンサ回路と違い、電源に繋がっている限りは情報を忘れることがありません。そのため、リフレッシュが不要で高速になります。
もう少し詳しく、コンデンサ回路とフリップフロップ回路の違いを見てみましょう。
コンピュータを情報を電気のある・なしで扱う
コンピュータは電子機器です。なので、電気を使って様々な情報を記録します。
電気が溜まっていたら「1」、電気が溜まっていなかったら「0」を記録する、みたいな感じで情報を記録しているんですね。
コンデンサとフリップフロップ回路では、記録の仕方が違うんです。


コンデンサは小さいけど忘れっぽい(DRAM)
コンデンサは電気を通さない絶縁体を金属で挟んだ構造をしています。
コンデンサに電流を流してみると、真ん中に絶縁体が挟まっているので、金属の部分で電流が止まってしまいます。この時、金属に電気が溜まるんですね。
コンデンサでは、金属に電気が溜まっている=1、電気が溜まっていない=0として記録します。

コンデンサに記録されたデータを読取る時は、コンデンサに電気が溜まっているかどうかで「1」か「0」かを判断します。
コンデンサに電気が溜まっていれば、電流が流れるので「1」、
電気が溜まっていなければ、電流が流れないので「0」と読取ります。

コンデンサに溜まった電気をそのまま放置していると、徐々に漏れ出してしまうので、
トランジスタと呼ばれる部品を使って電流の流れを制御します。
DRAMはコンデンサとトランジスタのたった2つの部品を使った単純な構造で1bitの情報を記録出来るため、集積度が高く、コストが安いという特徴を持てるんですね。
トランジスタで電流の流れを制御しているとは言え、コンデンサに溜まった電気は少しずつ漏れてしまいます。そのため、同じ内容を定期的に何回も記録させる必要があります。これがリフレッシュですね。
フリップフロップ回路は大きいけど忘れない(SRAM)
フリップフロップ回路は否定と否定論理積で構成される回路です。

Setにだけ電流を流す(Set=1、Reset=0)と、Qには1が出力され、
Resetにだけ電流を流す(Set=0、Reset=1)と、Qには0が出力され、
その状態からSet、Resetの電流を止める(Set=0、Reset=0)と、Qの出力値が維持されます。こんな感じで情報を保持し続けるのがフリップフロップ回路です。
(ちなみに、Set=1、Reset=1は入力禁止になっています)

例えば、Set=1、Reset=0にしてからSet=0、Reset=0にすると値を記録出来ます。

フリップフロップ回路はSet=0、Reset=0のとき、安定して値を保持し続けることが可能です。そのため、リフレッシュが不要で、高速での処理が出来るんですね。
ただ、回路を見れば分かる通り、コンデンサ回路より必要な部品が多く、構造が複雑です。
そのため、集積度が低く、コストが高くなってしまうんですね。

主記憶装置とキャッシュメモリ
では、なぜ、DRAMが主記憶装置でSRAMがキャッシュメモリなんでしょうか?
そもそも、私たちが使うプログラムは、普段、補助記憶装置に記録されており、プログラムを実行する時は主記憶装置へロードしてから実行します。

CPUは主記憶装置と命令やデータをやり取りしながらプログラムを実行していきます。
この手順を命令実行サイクルと言います。詳しくはこちらの記事で解説しています。

しかし、CPUに比べて主記憶装置は処理速度が遅いんですね。
折角CPUの性能が高くても、CPUと命令やデータをやり取りする主記憶装置が遅かったら微妙な感じしますよね。そこで、キャッシュメモリが主記憶装置とCPUの間に入ってやり取りをするようになったんですね。

ただ、キャッシュメモリは小容量で、コストが高い記憶装置です。
なので、基本的に大容量でコストが低い主記憶装置に色々記憶させておいて、キャッシュメモリはCPUとのやり取りを補助するみたいな使い方をするんですね。
- DRAMは大容量でコストが低いから、メインで使う記憶装置にしたい!
しかし、処理速度が遅いのでCPUと直接やり取りさせるのは微妙。
⇒ 主記憶装置として使うのが向いている - SRAMは小容量でコストが高いから、補助的に使う記憶装置に向いている!
処理速度が速いのでCPUとやり取りさせる使い方が合っている。
⇒ キャッシュメモリとして使うのが向いている
キャッシュメモリについてはこちらの記事でもっと詳しく解説しています。

基本情報技術者試験での出題例
サンプル問題問19、令和元年度秋期問20
基本情報技術者
科目A サンプル問題問19、午前試験 令和元年度秋期問20
DRAMの特徴はどれか。
ア 書込み及び消去を一括又はブロック単位で行う。
イ データを保持するためのリフレッシュ操作又はアクセス操作が不要である。
ウ 電源が遮断された状態でも,記憶した情報を保持することができる。
エ メモリセル構造が単純なので高集積化することができ,ビット単価を安くできる。
正解は”エ”
RAMは電源を切ると記録している情報が消える、揮発性でした。
また、DRAMはリフレッシュが必要ですが、セル構造が単純で集積度が高く、単価が安いんでしたね。よって、答えはエです。
平成31年度春期問21
基本情報技術者 午前試験
平成31年度春期問21
メモリセルにフリップフロップ回路を利用したものはどれか。
ア DRAM イ EEPROM ウ SDRAM エ SRAM
正解は”エ”
フリップフロップ回路を使っているのはSRAMです。
平成30年度秋期問21
基本情報技術者 午前試験
平成30年度秋期問21
DRAMの説明として,適切なものはどれか。
ア 1バイト単位でデータの消去及び書込みが可能な不揮発性のメモリであり,電源遮断時もデータ保持が必要な用途に用いられる。
イ 不揮発性のメモリでNAND型又はNOR型があり,SSDに用いられる。
ウ メモリセルはフリップフロップで構成され,キャッシュメモリに用いられる。
エ リフレッシュ動作が必要なメモリであり,PCの主記憶として用いられる。
正解は”エ”
DRAMはリフレッシュが必要で、主記憶装置として使われます。
平成29年度秋期問21
基本情報技術者 午前試験
平成29年度秋期問21
コンデンサに蓄えた電荷の有無で情報を記憶するメモリはどれか。
ア EEPROM イ SDRAM
ウ SRAM エ フラッシュメモリ
正解は”イ”
コンデンサ回路を使って情報を記録するのはDRAMです。
この中でDRAMはSDRAMだけなので、答えはエですね。