Foundationপ্রথম নীতি থেকে
LEVEL 3 · CPU Architecture

Cache

ক্যাশ

CPU-র কাছে বসানো একটা ছোট, দ্রুত SRAM array যেটা main memory-র একটা অংশের কপি ধরে রাখে — locality of reference exploit করে গড় access time কমায়।

কোনো নতুন প্রযুক্তি না — একই [[sram]] cell, শুধু ছোট আকারে CPU-র কাছাকাছি বসানো। “ক্যাশিং” নিজেই কোনো বিশেষ hardware trick না, বরং একটা প্যাটার্ন — বড়-ধীর storage-এর সামনে ছোট-দ্রুত storage বসিয়ে সাম্প্রতিক/ঘনঘন-ব্যবহৃত subset রাখা।

কেন কাজ করে: [[locality-of-reference]]। যদি access সত্যিই random হতো, cache কোনো সুবিধা দিত না — প্রতিটা access-ই miss হতো।

Address কীভাবে map হয়: tag + index + offset বিভাজন। Direct-mapped (index সরাসরি এক line নির্ধারণ করে, সস্তা কিন্তু conflict-prone), fully-associative (যেকোনো line, কিন্তু সব line সমান্তরাল তুলনা করতে হয় — N line-এ N-টা comparator), set-associative (N-way — মাঝামাঝি, বাস্তবে সবচেয়ে বেশি ব্যবহৃত)। Direct-mapped আসলে 1-way, fully-associative আসলে N-way যেখানে N = মোট line সংখ্যা — তিনটা একই spectrum-এর বিন্দু।

32-বিট address, 4KB cache, 64B line (direct-mapped):
  tag(20) | index(6) | offset(6)   →  20+6+6 = 32 ✓

দুইটা নীতিগত সিদ্ধান্ত যা cache-এর behavior ঠিক করে: set পূর্ণ হলে কে বিদায় হবে (replacement policy — LRU, FIFO, random), আর write কখন memory-তে পৌঁছাবে (write-through বনাম write-back)।

Performance-এর সংক্ষিপ্তসার এক সূত্রে: AMAT = hit_time + miss_rate × miss_penalty — miss penalty বিশাল বলে (L1 ~4 cycle বনাম DRAM ~200 cycle) miss rate-এর সামান্য পরিবর্তনও গড় গতিতে বড় প্রভাব ফেলে।