DRAM
DRAM / Dynamic Random Access Memory
概要(サマリー)
DRAM(ディーラム / Dynamic Random Access Memory)は、パソコンやスマートフォン、サーバーなどの「メインメモリ(主記憶装置)」として広く使われている半導体メモリ(記憶素子)の一種である。
コンピュータが実行中のプログラムや一時的なデータを一時的に置いておく場所として使われる。構造がシンプルで安価に大容量化できるメリットがある一方で、電気を流し続けないとデータが消えてしまう(揮発性)という特徴と、時間の経過とともにデータが自然に消えていくため一定時間ごとに「電気の入れ直し(リフレッシュ)」が必要であるという性質(Dynamic=動的)を持っている。
詳細解説
DRAMとは何か
DRAMは、半導体基板の上に「トランジスタ(スイッチ)」と「コンデンサ(電荷を貯める極小のバケツ)」を1つのペア(1セル)として構成されたメモリである。
コンデンサに電気が貯まっている状態を 1、空の状態を 0 としてデータを表現する。非常にシンプルな構造のため、小さなチップの中に数十億個ものセルを詰め込むことができ、大容量のメモリカードを安価に大量生産できる。
Dynamic(動的)と呼ばれる理由と「リフレッシュ」
DRAMの「バケツ(コンデンサ)」は非常に小さいため、電気を貯めても時間が経つと勝手に自然放電して(漏れ出して)電気が消えてしまう。
そのため、DRAMは動作中、常に「データが消えてしまう前に読み出して、もう一度同じデータを新しく書き直す」という作業を1秒間に何十回も繰り返している。この延命措置のような書き直し動作を「リフレッシュ(Refresh)動作」と呼び、この動きが必要であるために「Dynamic(動的)」という名前がついている。
SRAMとの違い
コンピュータに使われるもう一つの重要なメモリである「SRAM(Static RAM / エスラム)」と比較すると、DRAMの性質がよくわかる。
- DRAM (Dynamic RAM):
- 構造が単純(1素子+1コンデンサ)で安く大容量にできる。
- 自然放電するためリフレッシュ動作が必要。速度はSRAMより遅い。
- 主な用途: パソコンやスマホのメインメモリ(8GB, 16GBなど)。
- SRAM (Static RAM):
- 構造が複雑(4〜6個のトランジスタでスイッチのループを作る)で高価。大容量化には向かない。
- 電気が流れている限りデータは安定して保持され、リフレッシュが不要。動作速度が極めて高速。
- 主な用途: CPU の内部に組み込まれている「キャッシュメモリ(数MB〜数十MB程度)」。
電源を切るとデータはどうなる?
DRAMは「揮発性(きはつせい)メモリ」である。電源を切ると完全にデータが消失する。
そのため、パソコンの電源を切る前に、必要なデータは電源を切ってもデータが消えない「不揮発性(ふきはつせい)」のストレージ(SSDやHDD)に保存(書き出し)しておく必要がある。
AIコーディングとの関係
プログラミングやシステム設計において、DRAMの物理的な特性(速度は高速だが有限であり、ストレージよりはるかに容量制限が厳しいこと)を理解していると、AIを使ったプログラムの効率化(メモリ使用量の削減)がスムーズに行える。
AIにメモリの最適化を依頼する際は、以下のようにリソースを意識したプロンプトを提示するとよい。
Node.jsで巨大なテキストファイル(数GB)を読み込んでデータを処理するスクリプトを書いています。
ファイルを一度にすべてメモリ(DRAM)に読み込んでしまうと、サーバーのメモリ不足(Out of Memory)エラーでプログラムがクラッシュしてしまいます。
ストリーム(Stream)機能を使って、メモリをほとんど消費せずに少しずつファイルを読み込んで順次処理するコードに書き換えてください。
AIはメモリへの負荷を最小限に抑えるストリームAPI(fs.createReadStream など)を用いた非同期処理のプログラムを正確に書き出し、限られたメモリ容量の中で最も効率よくデータを処理するコードを提示してくれる。
よくある勘違い
スマホの「ストレージ128GB」と「メモリ8GB」はどちらも同じメモリ?
役割が全く異なる。
- メモリ 8GB (DRAM): アプリを起動して一時的に動かすための「作業机の広さ」。電源を切ると中身は片付けられて(消えて)しまう。
- ストレージ 128GB (NANDフラッシュなど): アプリや写真、音楽ファイルをしまっておくための「引き出しや倉庫」。電源を切っても中身は消えない。
どちらも「ギガバイト(GB)」という同じ容量単位で表示されるため混同しやすいが、DRAMの方がはるかに読み書きの速度が高速で、価格も高価である。
リフレッシュ動作の最中はメモリが使えない?
リフレッシュ動作は非常に高速で、CPUがメモリにアクセスしていない隙間時間などを狙って自動的に実行されるため、人間がパソコンを操作している最中に待たされるような遅延を感じることはない。ただし、リフレッシュの最中も電力を消費するため、ノートパソコンのバッテリー持ちなどに多少の影響を与える。
DRAMを増やせば必ずパソコンが速くなる?
DRAMを増やすと、同時に開けるアプリやブラウザタブの数に余裕が出るため、メモリ不足による遅さは改善しやすい。
ただし、すでに十分な容量がある場合は、DRAMを増やしても体感速度が大きく変わらないことがある。処理速度はCPU、ストレージ、GPU、ネットワークなど複数の要素で決まるため、DRAMだけを増やせば常に高速化するわけではない。
まとめ
- DRAMは、パソコンやスマホのメインメモリとして使われる一時的なデータ置き場である。
- トランジスタとコンデンサというシンプルな構造で、安く大容量にしやすい。
- 自然放電を防ぐため、動作中は「リフレッシュ(書き直し)」が常時実行されている。
- 揮発性メモリのため、電源を切ると中身はすべて消滅する。
情報ソース
より詳しくAIに聞いてみよう
- DRAM(Dynamic RAM)の進化の歴史(SDRからDDR, DDR2, DDR3, DDR4, DDR5など)と、世代間で速度や電圧がどのように改善されたかを詳しく教えてください。
- コンピュータの起動時に、不揮発性ストレージ(SSDなど)から揮発性メモリ(DRAM)へOSのプログラムがコピーされて実行される「ブート(起動)」のプロセスを教えてください。
- C言語などのメモリ管理を手動で行う言語において、メモリ解放(
free関数など)を忘れることでDRAMの空き容量が減り続ける「メモリリーク」の仕組みと対策方法を教えてください。 - DRAMのリフレッシュ動作を狙ってメモリ内のデータを不正に書き換えるサイバー攻撃手法「Rowhammer(ロウハンマー)」の仕組みと対策について教えてください。
- AIに「Pythonで大量のオブジェクトを生成する際に、メモリリークを監視してDRAM使用量をグラフ化してボトルネックを突き止めるプロファイルコード」を書いてもらうためのプロンプトを教えてください。