ふくふくHukuhuku LLC
EP.05CS Basics対象: 中2以上 9分公開: 更新:

メモリと記憶階層:レジスタ・キャッシュ・RAM・SSD

CPU の隣にあるレジスタ (1ns) から、ハードディスク (10ms) まで、コンピュータの記憶装置は 1000 万倍の速度差がある。なぜ階層構造になっているか、各層の役割と容量・速度のトレードオフ。

#メモリ#RAM#SSD#キャッシュ#情報I
執筆 / 監修
松尾 亮合同会社ふくふく 代表社員

データ基盤・データパイプライン構築 / BI / 生成 AI 活用支援を専門とするエンジニア (28 年)。 本記事は AI 利用ポリシーに基づき、生成 AI の補助で執筆 → 人間が監修・編集して公開しています。

プロフィール詳細
CO📔 Google Colab で開く(上から順にセルを実行)
シェア

コンピュータの記憶装置は 1 種類ではない。CPU の隣にある超高速だが小さい記憶から、TB クラスだが遅い HDD まで、5-7 段階の階層構造になっています。

1. 記憶階層のピラミッド

階層アクセス速度容量コスト/GB揮発/不揮発
レジスタ1 サイクル (0.3ns)数 KB(計算不能)揮発
L1 キャッシュ4 サイクル (1ns)32-64KB10 万円揮発
L2 キャッシュ12 サイクル (3ns)256KB-1MB1 万円揮発
L3 キャッシュ40 サイクル (10ns)8-32MB1000 円揮発
RAM (DRAM)100ns8-128GB100 円揮発
NVMe SSD10-100μs0.5-8TB10 円不揮発
SATA SSD100μs0.5-4TB8 円不揮発
HDD5-10ms1-20TB2 円不揮発
テープ (LTO)数十秒〜分12-45TB0.5 円不揮発

速度差は 5000 万倍、コスト差は 20 万倍。これが階層化の理由。

2. キャッシュの役割

「同じデータを近くに繰り返し使うことが多い」 (時間的局所性) と 「あるデータの近くにあるデータも使うことが多い」 (空間的局所性) という性質を利用して、頻繁に使うデータを CPU の隣に置く。これが キャッシュ。

キャッシュ友好的なコード vs 非友好的なコード
Python
import numpy as np
# 連続メモリ配置 (キャッシュ友好的)arr = np.arange(10_000_000)%timeit arr.sum()  # 速い
# ランダムアクセス (キャッシュ非友好的)indices = np.random.permutation(10_000_000)%timeit arr[indices].sum()  # 遅い (10 倍以上)

3. RAM の容量目安

用途推奨 RAM理由
メールと Web ブラウジング8GBChrome 数タブ + Office 程度
プログラミング (Python・Web)16GBIDE + ブラウザ + Docker
動画編集 / 機械学習32-64GB大きな画像/動画/モデル
仮想マシン / 大規模データ64GB+VM 同時起動、メモリ DB

4. SSD と HDD の使い分け

  • OS とアプリは SSD: 起動・読込みが劇的に速い
  • データ保管は HDD or 大容量 SSD: コスト次第
  • 最近は SSD のみ: 価格が下がり HDD は撤退方向 (デスクトップ用途)
  • バックアップ: 別の物理ドライブ + クラウドの 2 重化

5. メモリ不足のサイン

  • アプリ切替時に「待ち」が頻発する
  • ディスクアクセス LED が常時点灯
  • ファンが常時高速回転 (スワップで CPU が忙しい)
  • 「メモリが不足しています」のシステム警告
  • 対処: 不要なアプリを閉じる → メモリ増設 → SSD 化 (HDD ならスワップが地獄)

6. 次の話

EP.06 では OS の役割 へ。CPU・メモリ・ディスクという物理的な資源を、複数のアプリでどう共有して動かすかの仕組みを覗きます。

よくある質問

なぜメモリは階層になっている?
**速い記憶装置は高価で容量が小さい、安い記憶装置は遅い** という物理制約があるから。レジスタ (超速・極小) → キャッシュ → RAM → SSD → HDD と階層化することで、よく使うデータは速い場所、長期保管は遅くて安い場所、という最適化を実現している。
RAM と SSD の違いは?
**RAM (Random Access Memory)** は揮発性 (電源切ると消える)、超高速 (100ns 程度)、容量小さめ (16-64GB)。**SSD** は不揮発性、中速 (100μs 程度、RAM の 1000 倍遅い)、容量大きい (1-4TB)。プログラム実行中は RAM、保存は SSD という分担。
キャッシュって何のためにある?
**RAM (100ns) は CPU (1ns) より 100 倍遅い**。CPU が RAM を待つ時間がもったいないので、よく使うデータを CPU の隣の高速な小さい記憶 (キャッシュ) に置いて、RAM アクセスを減らす。L1/L2/L3 と階層化されている。
SSD はなぜ HDD より速い?
**HDD は物理的に円盤を回転させて磁気で読み書き** (ヘッド移動時間 = 数 ms 単位)。**SSD はフラッシュメモリで電気的に読み書き** (1ms 以下)。HDD の最大の弱点は「ランダムアクセス」(連続読みは速いが、ファイル散在時に遅い)。
メモリ不足になるとどうなる?
OS が「使ってないメモリ領域を SSD に逃がす」(スワップ) を始める。SSD は RAM の 1000 倍遅いので、スワップが頻発するとシステム全体が極端に遅くなる (「メモリ swap 地獄」)。8GB → 16GB のメモリ増設で劇的に改善するケースが多い。
シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp