# 2022/02/15


https://parksb.github.io/article/29.html

ケイシーって何?


テクノロジーの発展に伴い、プロセッサの速度は急速に増加しましたが、メモリの速度は十分ではありません.システムでは、プロセッサの処理速度がどんなに速くても、メモリの処理速度が遅くなると、総じて遅くなるため、キャッシュが発生します.
キャッシュはCPU内部に入る小さなメモリです.
プロセッサがデータを必要とするたびにプライマリメモリにアクセスして受信する場合は、時間がかかります.
キャッシュには、主メモリではなくキャッシュにアクセスしてデータを処理する頻繁に使用されるデータが含まれます.
キャッシュは反応速度の速いSRAMであり,アドレスにキー値を与えるとすぐにその空間にアクセスできる.
SRAMではなく、電力供給を維持している場合にのみデータを格納できます.
また、キャッシュは概念的に使用されるデータが変化することが予想されるため、データは揮発性に優れている.
アドレスにキー値がある場合、すぐにアクセスできる概念はハッシュテーブルと同様であり、ハードウェア実装のハッシュテーブルと呼ぶことができる.

キャッシュされた真実の姿



上の写真はCPUの写真です.キャッシュのタイプは3種類あり、それぞれの目的と役割を果たします.
  • L 1キャッシュ:プロセッサに最も近いキャッシュ.速度のために、IとD、DとDに分けます.
  • インストールキャッシュ(I$):メモリ内のTEXT領域データを処理するキャッシュ.
  • データキャッシュ(D$):TEXT領域以外のすべてのデータを処理するためのキャッシュ.
  • L 2キャッシュ:大容量キャッシュ.L 1キャッシュのようにサイズ分割は行われません.
  • L 3キャッシュ:マルチコアシステム内の複数のコアが共有するキャッシュ.
  • Latency


    CPUが要求するデータがキャッシュに存在する場合はHit、存在しない場合はMissと呼ぶ.
    ヒートシンクは熱く、メモリ→CPUの時間を表します.
    missの場合、親キャッシュからデータをインポート(L 1→L 2→メモリ...)
    これは、メモリからデータを取得するのに要する時間を意味します.
    平均近接時間は次のとおりです.


    キャッシュの区別方法


    キャッシュには、プロセッサが予想するデータが必要です.では、予想の仕方は何でしょうか.
    領域性原理は時間領域性と空間領域性に分けることができる.
    時間的地域性は、以下の例として理解される.
    loopでは、iは短時間で複数回のアクセスを実現します.
    for(i in 1..10){
    		Log.d("TEST","${i}")
    }
    空間領域性とは、最近アクセスしたデータの周囲に再アクセスすることを意味します.

    横軸は時間、縦軸はメモリアドレスです.すなわち、水平接続の参照レコードは、時間領域性と垂直接続の
    参照レコードは空間領域性を意味する.
    このように、キャッシュは、次のプロセッサがアクセスするデータを予測し、キャッシュの準備をします.