Inclusive Cache
ইনক্লুসিভ ক্যাশ
একটা multi-level hierarchy-তে outer level (L2/L3) সবসময় inner level-এর (L1/L2) সব line-এর copy ধরে রাখে — capacity নষ্ট হয়, কিন্তু coherence snoop checking সহজ হয়।
also: exclusive cache, cache inclusion policy
তিনটা সম্ভাব্য নীতি একটা multi-level cache hierarchy-তে:
| নীতি | নিয়ম | সুবিধা | দাম |
|---|---|---|---|
| Inclusive | L1 ⊆ L2 ⊆ L3 | coherence-এ শুধু L3 চেক করলেই যথেষ্ট | capacity duplicate, তাই নষ্ট |
| Exclusive | প্রতিটা line ঠিক এক level-এ | পূর্ণ capacity কার্যকর | eviction-এ move করতে হয়, জটিল |
| Non-inclusive | কোনো গ্যারান্টি নেই | কিছুটা capacity বাঁচে | আলাদা snoop filter লাগে |
কেন coherence-এ গুরুত্বপূর্ণ: যদি L3 inclusive হয়, “X L3-তে নেই” থেকে সরাসরি বলা যায় “X কোনো core-এর L1/L2-তেও নেই” — broadcast snoop এড়ানো যায়। প্রতি L3 line-এ presence bits রাখলে (কোন core-এর কাছে কপি আছে) targeted invalidate পাঠানো যায়, সবাইকে জিজ্ঞেস না করে।
দাম উদাহরণ: ৮ core, প্রতিটার L2 = ১ MB, L3 = ৩২ MB। Inclusive-এ worst-case L3-এর কার্যকর অনন্য capacity মাত্র ২৪ MB (৮ MB duplicate)। Exclusive-এ মোট usable = ১ + ৩২ = ৪০ MB — ৮ MB বেশি, একই hardware আকারে।
দাম-এর আরেক দিক: inclusive L3 evict করলে সব core-এর L1/L2-তে সেই line-ও back-invalidate হতে বাধ্য, এমনকি সক্রিয়ভাবে ব্যবহৃত হলেও।
বাস্তবে: Intel client CPU (Sandy Bridge-Skylake) inclusive ব্যবহার করেছে বহু বছর, coherence-সরলতার জন্য। Intel server (Skylake-SP+) non-inclusive-এ সরে গেছে (core সংখ্যা বেশি হলে duplication-এর দাম অসহনীয়)। AMD Zen mostly-exclusive/victim ধাঁচের L2/L3 রাখে, 3D V-Cache-এর পূর্ণ সুবিধা পেতে।