メモリ

メモリ

執筆済 コンピュータアーキテクチャ

プログラムとデータを置く主記憶。DRAM。

DRAM と SRAM#

DRAM(主記憶) SRAM(キャッシュ
1 bit の構成 トランジスタ 1 + コンデンサ 1 トランジスタ 6
密度 高い(安い) 低い(高い)
速度 遅い 速い
リフレッシュ 必要(電荷が漏れる) 不要

DRAM は電荷を蓄えて記憶するので、 数ミリ秒ごとに読み直して書き戻す必要がある。 この間はアクセスできない。

メモリの壁#

CPU の性能は年 50% 以上向上した時期があったが、 DRAM のレイテンシは年 7% 程度しか改善しなかった。 差が指数的に開いたのがメモリの壁。

帯域は改善している(DDR、HBM)が、 レイテンシは物理的な制約でほとんど改善しない。 そのため

  • キャッシュ階層を深くする
  • プリフェッチで先読みする
  • 多数のスレッドで待ち時間を隠す(GPU の方式)

といった「隠す」対策が中心になる。

アドレス空間#

プロセスが見るアドレスは仮想アドレスで、 MMU が物理アドレスに変換する。

高位 ┌──────────┐
     │ スタック  │ ↓ 伸びる
     │          │
     │ ヒープ    │ ↑ 伸びる
     │ データ    │ 静的変数
     │ テキスト  │ 機械語
低位 └──────────┘

参考文献#

  • David A. Patterson, John L. Hennessy. Computer Organization and Design: RISC-V Edition, 2nd ed. Morgan Kaufmann, 2020.
  • Randal E. Bryant, David R. O’Hallaron. Computer Systems: A Programmer’s Perspective, 3rd ed. Pearson, 2016. https://csapp.cs.cmu.edu/
  • Wm. A. Wulf, Sally A. McKee. Hitting the memory wall. ACM SIGARCH Computer Architecture News 23(1), 1995. https://doi.org/10.1145/216585.216588
ノート一覧を閉じる