Cache Missの削減方法
今回の実験でcache miss には read cache miss と write cache missがあることを理解した。メモリアクセスコストを削減するにはどちらのcache missも減らさなければいけないのだけど、感覚でいうとwrite cache missを減らしてもたいして性能向上にはつながらない(この項は後に厳密に検証しないといけないけど)。read cache missを減らすほうが性能向上にとってもつながりそうな感じである。この感覚を裏付けるデータをどうやって取得したらいいんだろうか?これも課題として記しておく。今回はcache pollutionを削減することによってread cache missを削減できたので性能向上に寄与したと考えている。
latencyを削減するテクニックとしてprefetchが古くから知られているがprefetchはcache missを削減するにはまったくというかほとんど寄与しない。アクセスされる前にキャッシュに乗せようと試みるだけなので、タイミングが悪ければ、利用される前にキャッシュから追い出されるし、キャッシュに乗せるタイミングが遅ければ待ちが発生して性能向上には役立たない。
cache pollutionが発生している状況ではprefetchは全然役に立たないだろう。多分。
prefetchはread cache missのlatencyを削減するために主に利用されるが、write cache missを削減するために利用できないだろうか?いいベンチマークがあれば試してみたい。時間的局所性のあるwrite cache miss。copy_to_user()あたりかな。と思い付きを記して今日の日記を閉じる。