キャッシュメモリ
キャッシュメモリからレジスタへのアクセス速度は、メモリからレジスタへのアクセス速度に比べると数倍から十数倍高速 ハードの話
キャッシュメモリからレジスタに読み出し、書き込みのサイズはCPUごとに定められている「キャッシュラインサイズ」
メモリ→レジスタに読み出す時
メモリ→キャッシュメモリ→レジスタという順に読み出す
再びレジスタが同じデータを読み出したいときはキャッシュメモリ上のものを使う
メモリ←レジスタに書き戻すとき
レジスタ上で計算してその結果を返すときなど
まず変更したデータをキャッシュメモリへ書き込む(単位はキャッシュラインサイズ)
このときまだメモリへは反映されていないことを示すためにキャッシュライン上に「ダーティ」という印を付けておく
ダーティが付けられたデータはその後の所定のタイミングでカーネルによってバックグラウンドでメモリに書き戻される
キャッシュメモリが一杯になった時
キャッシュメモリ上のデータの一つを破棄して続行
ダーティが付いている場合はメモリに囲んだ後に破棄
全てのキャッシュラインがダーティだと↑この操作が繰り返され、キャッシュライン内のデータが激しく入れ替わってしまう
階層型のキャッシュメモリ
x86_64アーキテクチャのCPUはキャッシュメモリが階層化構造
L1, L2, L3キャッシュメモリ
LはLevelのL
最もレジスタに近く、高速で、サイズが小さいのがL1
サイズ、レイテンシ、どの論理CPUの間で共有するかなどが異なる
/sys/devices/system/cpu/cpu0/cache/index0/などにあるファイルを見ると情報を見れる