# ヒントによる高速化
## 定義
ヒント(hint)とは、キャッシュエントリと同様に「以前の計算結果を保存しておき再計算を避ける」仕組みでありながら、キャッシュとは2点で異なるものとして Lampson (1983) が定式化した概念である。第一に、ヒントは**間違っている可能性がある**(キャッシュエントリも非関数的な計算では無効化が必要だが、ヒントは「そもそも間違っていてもよい」ことを前提に設計される点がより積極的)。第二に、ヒントは連想検索(associative lookup)によって取得されるとは限らない。ヒントを安全に使うには、それを使って何か取り返しのつかない(unrecoverable)行動を取る前に、必ず「truth」——常に正しいが、ヒントほど効率的なアクセスには最適化されていない情報源——と照合して正しさを検証する経路が必要になる。(Source: [[@1983__SOSP__Hints for Computer System Design]] "3. Speed" "Use hints to speed up normal execution")
## 横断的知見
- 単一ソース(Lampson 1983)からの導入段階であり、現時点では他ソースとの突き合わせによる横断的知見はまだない。今後、[[メモリ階層とキャッシュ]]・[[分散キャッシュ]]・[[ページキャッシュカスタマイズ]]等、正当性検証を伴う高速パス最適化を扱う他ソースが ingest されたら、ヒントとキャッシュの区別がどこまで踏襲・再発明されているかを突き合わせる。
## 未解決の問い
- Lampson が挙げる具体例(Alto/Pilot のディスクページラベル、Arpanet の store-and-forward ルーティングテーブル、Ethernet のキャリア検知、Smalltalk のインラインキャッシュの lastType/lastProc)は、いずれも「truth」への安価なフォールバック経路を持つ。truth への検証コストが高い、あるいは検証自体が非現実的な現代システム(例: 大規模言語モデルの推論キャッシュ、投機的実行のブランチ予測)では、この「ヒント」の定義はどこまで拡張・再解釈されているか。
- 「キャッシュ」と「ヒント」の区別は、現代の分散システム文献(例: DNS のTTLベースキャッシュ、CDNのstale-while-revalidate、楽観的並行性制御)でどのような語彙に対応づけられるか。同じ概念を指す別名(stale data tolerance、best-effort caching 等)が存在するなら横断的知見として統合したい。
## 関連
- ソース: [[@1983__SOSP__Hints for Computer System Design]]("3. Speed" "Use hints to speed up normal execution")
- 概念: [[エンドツーエンド論]](truth による検証は、エンドツーエンドの正しさ保証の一種と位置づけられる) / [[メモリ階層とキャッシュ]](キャッシュとの対比)
## 出典
- [[@1983__SOSP__Hints for Computer System Design]]("3. Speed" "Use hints to speed up normal execution")