TL

メモリ階層図 ─ レジスタからストレージまでの遅延と容量

なぜメモリは1種類で済まないのか。レジスタからHDDまで容量とレイテンシが桁で変わる事実を階層図として整理し、局所性で速さと大きさを両立させる設計の勘所を掴めます。

応用メモリ階層レイテンシ局所性DRAMキャッシュ最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.メモリは速くて小さく高価な層と、遅くて大きく安価な層をピラミッド状に積み、上ほど速度・下ほど容量を担当する。容量とレイテンシは層ごとに桁(10倍以上)で変わる。
  • 2.レジスタ約0.3ns、L1約1ns、L3約10ns、DRAM約80ns、SSD約100µs、HDD約10msと、隣接層でも数倍〜千倍の段差があり、対数スケールで初めて全体が一望できる。
  • 3.局所性により上位層のヒット率を高く保てるので、平均アクセス時間は最速層に近づきつつ実効容量は最下層を使える。これが階層化の唯一の正当化理由。

なぜ1種類のメモリで済まないのか

理想は「CPUのレジスタと同じ速さで、ディスクと同じ容量で、しかも安い」メモリです。しかし物理と経済がこれを許しません。速い記憶素子(SRAM)はトランジスタを多く使い、面積あたりの容量が小さく高価です。大容量素子(DRAM、NAND、磁性体)は安いが遅い。1種類で全要求を満たせないので、速度の異なる記憶を階層に積み、上位ほど小容量・高速、下位ほど大容量・低速とする。これがメモリ階層です。

階層が成立する前提は参照の局所性です。プログラムは直近に触ったアドレス(時間的局所性)とその近傍(空間的局所性)を高頻度で再利用します。だから少量の高速層に最近使ったデータを置くだけで、大半のアクセスを上位で完結できます。局所性がなければ階層は無意味で、毎回最下層まで降りる羽目になります。

階層を数字で見る ─ 容量・レイテンシ・帯域・コスト

各層の代表値を並べます。実装・世代で変動するため桁の感覚を掴むための概数です。

代表容量レイテンシ帯域(目安)相対コスト
レジスタ数百バイト約0.3ns(1サイクル)TB/s級最高
L1キャッシュ32〜64KB/コア約1ns(4サイクル)数TB/s非常に高
L2キャッシュ256KB〜2MB/コア約3〜4nsTB/s級
L3キャッシュ数MB〜数十MB約10〜20ns数百GB/s
DRAM(主記憶)8〜128GB約80〜100ns数十GB/s
NVMe SSD数百GB〜数TB約20〜100µs数GB/s
HDD数TB〜十数TB約5〜10ms100〜250MB/s最低

注目すべきは段差の大きさです。L1からDRAMまでで約100倍、DRAMからSSDで約1000倍、SSDからHDDでさらに約100倍。HDDの10msはL1の1nsに対して約1000万倍であり、ナノ秒とミリ秒の差は「1秒対116日」に相当します。線形軸ではレジスタ〜L3が原点に潰れて見えないため、可視化は必ず対数スケールを使います。

階層をピラミッドとして読む

容量とコストの関係を、上が尖り下が広い三角形(ピラミッド)として擬似的に描くと次のようになります。幅は容量、高さ位置は速度の順位を表します。

            ┌──────────┐         速い・小さい・高価
            │ レジスタ │   数百B   ← CPUコア内、1サイクル
            ├──────────┤
            │   L1     │  〜64KB
          ┌─┴──────────┴─┐
          │     L2       │  〜2MB
        ┌─┴──────────────┴─┐
        │       L3         │  〜数十MB   ← ここまでSRAM(オンチップ)
      ┌─┴──────────────────┴─┐
      │     DRAM (主記憶)     │  〜128GB  ← ここから別チップ
    ┌─┴──────────────────────┴─┐
    │      SSD (NVMe)          │  〜数TB
  ┌─┴──────────────────────────┴─┐
  │         HDD / オブジェクト   │  〜数十TB  遅い・大きい・安価
  └──────────────────────────────┘

横方向の境界が重要です。レジスタ〜L3まではCPUダイ上のSRAM、DRAM以下は別チップやデバイスです。この境界を越えるたびにアクセスは物理的に遠くなり、信号の往復・プロトコル変換・媒体特性が加わってレイテンシが跳ね上がります。さらにレジスタとキャッシュはハードウェアが透過的に管理しますが、DRAMとSSD/HDDの境界はOS(ページング、ファイルシステム)がソフトウェアで管理する、という運用上の断層もここにあります。

なぜ階層化で速さと大きさを両立できるのか

鍵は**平均アクセス時間(AMAT)**です。2層に単純化すると次式で表せます。

AMAT = ヒット時間 + ミス率 × 下位層アクセス時間

これを階層全体へ再帰的に適用します。下位層のアクセス時間自体が、さらに下の層を含むAMATになる、という入れ子です。

AMAT(L1) = HitL1 + MissL1 × AMAT(L2)
AMAT(L2) = HitL2 + MissL2 × AMAT(L3)
AMAT(L3) = HitL3 + MissL3 × 主記憶アクセス

局所性のおかげで各層のミス率を低く(例: L1ミス率が数%)保てるため、AMATは最上位層の速度に近づきながら、実効容量は最下位層になります。たとえばL1ヒット時間1ns・L1ミス率5%・以降を平してミス時20nsとすると、平均は 1 + 0.05 × 20 = 2ns 程度に収まる。128GBの主記憶を持ちながら平均2nsで読める、という両立はこうして成立します。逆に局所性が崩れる(ランダムアクセスが大半)と各層のミス率が上がり、AMATは下位層の生レイテンシへ近づき、階層の利得が消えます。

包含関係と転送単位

上位層は下位層の部分集合を保持します。転送単位は層で異なり、キャッシュは64バイトのライン、DRAM⇔SSD/HDD間はOSが扱う4KBページ(あるいはより大きなブロック)です。下位層ほど往復コストが高いので、まとめて大きな単位で運び固定オーバーヘッドを償却します。HDDのシーク(数ms)を1回払うなら、数バイトでなく数十KB以上を一度に読むのが合理的です。

帯域とレイテンシは別物

階層を語るときレイテンシ(1回の往復時間)帯域(単位時間あたりの転送量)を混同しないことが重要です。両者は独立に効きます。レイテンシが効くのは依存連鎖のある逐次アクセス(ポインタ追跡など、次のアドレスが前の結果に依存する場合)で、待ち時間がそのまま律速になります。帯域が効くのは独立な大量アクセス(連続走査、ストリーミング)で、複数の要求を並列に飛ばしてレイテンシを隠せます。

レイテンシは隠せる、容量と帯域は隠せない

レイテンシは並列実行やプリフェッチで「待っている間に別の仕事をする」ことで隠蔽できます。アウトオブオーダ実行が複数のロードを同時に進めるのも、GPUのワープ切り替えが待機中に別スレッドを走らせるのも本質は同じ隠蔽です。一方、容量の不足と帯域の飽和は隠せず、アルゴリズム側で参照量そのものを減らす(ブロッキング等)しかありません。

設計と実装への含意

階層の存在は、性能チューニングの指針を直接与えます。

  • 作業集合を上位層に収める: ホットなデータ構造のサイズをL2/L3容量内に収めると、AMATが劇的に下がる。行列演算のタイル分割(キャッシュブロッキング)が典型。
  • アクセスを連続化する: 配列を行優先で走査する、構造体配列の代わりに配列構造体(SoA)を使うなど、空間的局所性を高めて1ライン/1ページの利用率を上げる。
  • 境界をまたぐ回数を減らす: DRAM⇔SSDのページフォルトやSSD⇔HDDの段差は数桁重い。ランダムな小アクセスを避け、まとめ読み・まとめ書きで固定コストを償却する。
試験のポイント

「上位ほど高速・小容量・高価、下位ほど低速・大容量・安価」という単調な向き、「レジスタ<キャッシュ<主記憶<補助記憶」の速度順、AMAT=ヒット時間+ミス率×ミスペナルティの式、そして階層が成り立つ根拠が局所性である点は頻出です。レイテンシの桁(ns/µs/ms)と層の対応(キャッシュ=ns、SSD=µs、HDD=ms)を即答できると応用に強くなります。

まとめ

  • メモリ階層は、速度と容量と価格を1素子で両立できない物理的・経済的制約への解で、上位ほど高速・小容量、下位ほど低速・大容量に積む。
  • 隣接層でも容量・レイテンシは桁で変わり、レジスタ(0.3ns)からHDD(10ms)まで約1000万倍の幅があるため、可視化は対数スケールとピラミッドで行う。
  • 階層が機能するのは局所性ゆえで、各層のミス率を低く保てるからAMATは最上位の速度に近づき、実効容量は最下位を使える。
  • レイテンシは並列・プリフェッチで隠せるが容量と帯域は隠せない。チューニングは作業集合を上位層に収め、アクセスを連続化し、境界をまたぐ回数を減らすのが筋。

各層の中身は別記事が掘り下げます。SRAMキャッシュの連想方式と置換はキャッシュメモリの原理、最下層SSDの内部制約はNANDフラッシュとSSDの内部を参照してください。

CPU/メモリ/ディスク Article

メモリ階層図 ─ レジスタからストレージまでの遅延と容量を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

メモリ階層

比較で見る軸

難易度: advanced / カテゴリ: CPU/メモリ/ディスク / タグ数: 5

導入後に効く点

レジスタ約0.3ns、L1約1ns、L3約10ns、DRAM約80ns、SSD約100µs、HDD約10msと、隣接層でも数倍〜千倍の段差があり、対数スケールで初めて全体が一望できる。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
CPU/メモリ/ディスク
タグ数
5

判断チェックリスト

  • 自社の用途が「メモリ階層 / レイテンシ」に近いか確認する。
  • 強みである「メモリは速くて小さく高価な層と、遅くて大きく安価な層をピラミッド状に積み、上ほど速度・下ほど容量を担当する。容量とレイテンシは層ごとに桁(10倍以上)で変わる。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

メモリ階層レイテンシ局所性DRAMキャッシュメモリ階層レイテンシ局所性
参考: 公式情報