キャッシュメモリ

 キャッシュメモリ

以下動画のテキストです
https://youtu.be/xVdF1z7eSDI

842515eaf8fbb2dfcc75197e7797dc15?s=128

Satoru Takeuchi

June 21, 2020
Tweet

Transcript

  1. キャッシュメモリ Jun 21th, 2020 Satoru Taekcuhi Twitter: satoru_takeuchi

  2. もくじ • キャッシュメモリとは • 具体例( AMD Ryzen 5 PRO 2400GE)

    • Linuxからキャッシュメモリの情報を見る • まとめ
  3. もくじ • キャッシュメモリとは • 具体例( AMD Ryzen 5 PRO 2400GE)

    • Linuxからキャッシュメモリの情報を見る • まとめ
  4. 背景 • コンピュータは以下の処理を繰り返す装置 1. メモリからCPUのレジスタにデータをとってくる 2. レジスタ上で計算する 3. 計算結果をメモリに書き戻す •

    メモリアクセスはレジスタ上の計算に比べてはるかに遅い 1. レジスタ上の計算: 数ナノ秒オーダー 2. メモリアクセス: 100ナノ秒オーダー • 問題: CPUの計算速度をいくら上げてもメモリアクセスがボトルネックになってシス テム全体の性能が上がらない
  5. キャッシュメモリの登場 • レジスタとメモリの中間に存在する記憶領域 ◦ 一般的にCPU内に存在する 教科書でよく見る記憶階層図 メモリ キャッシュメモリ レジスタ ハードウェアの概念図

    高速アクセス、 小容量、高価 低速アクセス、 大容量、安価 CPU メモリ レジスタ キャッシュメモリ
  6. キャッシュメモリ存在時のメモリリード(1目回) • CPU メモリ レジスタ キャッシュメモリ メモリアドレス100の データを要求 アドレス100のデータ

  7. キャッシュメモリ存在時のメモリリード(1目回) • CPU メモリ レジスタ キャッシュメモリ キャッシュメモリに データを転送 アドレス100のデータ アドレス100のデータ

  8. キャッシュメモリ存在時のメモリリード(1目回) • CPU メモリ レジスタ キャッシュメモリ アドレス100のデータ レジスタに データを転送 アドレス100のデータ

    アドレス100のデータ
  9. キャッシュメモリ存在時のメモリリード(2目回) • CPU メモリ レジスタ キャッシュメモリ アドレス100のデータ メモリアドレス100の データを要求 アドレス100のデータ

  10. キャッシュメモリ存在時のメモリリード(2目回) • CPU メモリ レジスタ キャッシュメモリ アドレス100のデータ レジスタに データを転送 これで処理は終了

    アドレス100のデータ アドレス100のデータ メモリアクセスは しなくて済む
  11. キャッシュメモリ存在時のメモリライト • CPU メモリ レジスタ キャッシュメモリ アドレス100のデータ レジスタ上のデータを 書き換えて メモリアドレス100に

    書き込み アドレス100のデータ アドレス100のデータ
  12. キャッシュメモリ存在時のメモリライト • CPU メモリ レジスタ キャッシュメモリ アドレス100のデータ レジスタ上のデータを 書き換えて メモリアドレス100に

    書き込み アドレス100のデータ アドレス100のデータ
  13. キャッシュメモリ存在時のメモリライト • CPU メモリ レジスタ キャッシュメモリ アドレス100のデータ レジスタ上のデータを 書き換えて メモリアドレス100に

    書き込み アドレス100のデータ アドレス100のデータ この後のリードは キャッシュメモリ上のデータを 見ればいい
  14. キャッシュメモリ上データのメモリ上への反映 • CPU メモリ レジスタ キャッシュメモリ アドレス100のデータ アドレス100のデータ アドレス100のデータ 二つの方法がある

    • ライトバック ◦ プログラムからのデータアクセス とは非同期にバックグラウンドで 反映 • ライトスルー ◦ キャッシュメモリへの書き込みと 同時にメモリへの書き込み
  15. キャッシュメモリあれこれ • データがすべてキャッシュメモリ上におさまっている限り、見かけ上のメモリアクセス 速度はキャッシュメモリへのアクセス速度に等しくなる • キャッシュの様々な特徴 ◦ メモリへのデータ反映方法 : ライトスルー

    or ライトバック ◦ 階層構造: L1キャッシュ(一番高速)、L2キャッシュ(二番目に高速)、... ◦ キャッシュの種類: 命令用キャッシュとデータ用キャッシュに分かれることもある ◦ CPU内のコア間でのキャッシュメモリ共有の有無 • 上記特徴はCPUの種類によって異なる
  16. もくじ • キャッシュメモリとは • 具体例(AMD Ryzen 5 PRO 2400GE) •

    Linuxからキャッシュメモリの情報を見る • まとめ
  17. カタログスペック • 論理CPU ◦ 4コア8スレッド • キャッシュ ◦ L1キャッシュ合計: 384KB

    ◦ L2キャッシュ合計: 2MB ◦ L3キャッシュ合計: 4MB • 公式サイト ◦ https://www.amd.com/ja/products/apu/amd-ryzen-5-pro-2400ge
  18. 実例: AMD Ryzen 5 PRO 2400GE CPU コア0 コア2 コア3

    コア1 スレッド0 スレッド1 スレッド2 スレッド3 スレッド4 スレッド5 スレッド6 スレッド7 L1キャッシュ L2キャッシュ L1キャッシュ L2キャッシュ L1キャッシュ L2キャッシュ L1キャッシュ L2キャッシュ L3キャッシュ
  19. もくじ キャッシュメモリとは 具体例(AMD Ryzen 5 PRO 2400GE) Linuxからキャッシュメモリの情報を見る まとめ

  20. 演習 • sysfsを介してLinuxカーネルからキャッシュメモリの情報を得る • /sys/devices/system/cpu/cpu<論理CPU番号>/cache以下が該当 ◦ おもしろそうなファイル : level, type,

    size, shared_cpu_{list,map}
  21. 答え合わせ • 論理CPU ◦ 4コア8スレッド • キャッシュ ◦ L1キャッシュ合計: 384KB:

    (L1dキャッシュ32KB + L1iキャッシュ64KB) * 4コア ◦ L2キャッシュ合計: 2MB: 512KB * 4コア ◦ L3キャッシュ合計: 4MB: 全コアで共有
  22. もくじ • キャッシュメモリとは • 具体例(AMD Ryzen 5 PRO 2400GE) •

    Linuxからキャッシュメモリの情報を見る • まとめ
  23. まとめ • レジスタ上の計算速度に比べてメモリアクセス速度は遅い • その速度差を吸収するのがキャッシュメモリ • CPUによってキャッシュメモリ構成は様々 • Linuxのsysfsからキャッシュメモリの情報を得られる