ক্যাশ পারফরম্যান্স — Hit/Miss রেট ও AMAT
এই পাঠে যা শিখবেন
- Hit rate ও miss rate-এর নির্ভুল সংজ্ঞা এবং কীভাবে গণনা করা হয়
- AMAT ফর্মুলা — নির্ভুলভাবে বলা, এবং এর পেছনের স্বজ্ঞা (intuition)
- একটি worked example কোড দিয়ে গণনা করে যাচাই করা (হাতে-লেখা নয়, প্রকৃত রান করা কোড থেকে)
- বিভিন্ন miss rate-এ AMAT কীভাবে বদলায় তা তুলনা করে miss rate-এর প্রভাবের মাত্রা বোঝা
- L42-এ মাল্টি-লেভেল ক্যাশে এই ফর্মুলা কীভাবে রিকার্সিভভাবে বিস্তৃত হবে তার সংক্ষিপ্ত পূর্বাভাস
১ · Hit Rate ও Miss Rate — মৌলিক সংজ্ঞা
L38-L40-এর প্রতিটি কোড সেলেই HIT ও MISS গোনা হয়েছে — এবার সেই গণনাগুলোকে একটা মানসম্মত পরিমাপে পরিণত করা যাক। Hit RateHit Rateমোট অ্যাক্সেসের মধ্যে কত ভাগ হিট হয়েছে তার অনুপাত হলো মোট অ্যাক্সেসের মধ্যে কত ভাগ হিট হয়েছে তার অনুপাত (hits ÷ total accesses), আর Miss RateMiss Rateমোট অ্যাক্সেসের মধ্যে কত ভাগ মিস হয়েছে -- 1 বিয়োগ hit rate হলো তার পরিপূরক (1 − hit rate)। এই দুটো সংখ্যাই একটা ক্যাশ ডিজাইন বাস্তবে কতটা কার্যকর তার সবচেয়ে সরাসরি পরিমাপ — ঠিক যেভাবে OS কোর্সের পেজ রিপ্লেসমেন্ট পাঠগুলোতেও হিট/মিস গোনার একই স্টাইল ব্যবহৃত হয়েছে।
২ · AMAT — গড় মেমরি অ্যাক্সেস সময়
শুধু hit rate/miss rate জানলেই পুরো ছবি পাওয়া যায় না — কারণ একটা miss-এর "খরচ" hit-এর খরচের চেয়ে ঢের বেশি। এই দুটোকে একটা একক, তুলনাযোগ্য সংখ্যায় মেলানোর মানসম্মত ফর্মুলাই হলো AMATAverage Memory Access Timeপ্রতিটি অ্যাক্সেসে গড়ে কত সময় লাগবে তার প্রত্যাশিত মান -- hit time ও miss penalty মিলিয়ে (Average Memory Access Time) —
$$AMAT = HitTime + MissRate \times MissPenalty$$
স্বজ্ঞাটা সহজ: প্রতিটি অ্যাক্সেসই কমপক্ষে HitTime সময় নেয় (ক্যাশ চেক করতেই এটুকু
সময় লাগে, হিট হোক বা মিস)। তার উপর, অ্যাক্সেসের একটা ভগ্নাংশ (MissRate) অতিরিক্তভাবে
MissPenalty সময়ও দেয় — কারণ মিস হলে মেইন মেমরি পর্যন্ত যেতে হয়। তাই AMAT আসলে একটা প্রত্যাশিত
(expected) মান — hit-এর নিশ্চিত খরচ, প্লাস miss-এর সম্ভাব্যতা-ভারিত অতিরিক্ত খরচ।
৩ · Worked Example — একটি ছোট্ট miss rate-এর বড় প্রভাব
ধরা যাক একটা ক্যাশের HitTime = 1 সাইকেল, MissPenalty = 100 সাইকেল, আর পর্যবেক্ষিত
MissRate = 0.05 (৫%)। ফর্মুলা অনুযায়ী —
$AMAT = 1 + 0.05 \times 100 = 1 + 5 = 6.0 \text{ সাইকেল}$
লক্ষ্য করুন — মাত্র ৫% অ্যাক্সেস মিস হওয়া সত্ত্বেও, গড় সময় hit time-এর (১ সাইকেল) তুলনায় ৬ গুণ বেড়ে গেছে! কারণ miss penalty (১০০ সাইকেল) hit time-এর তুলনায় এত বড় যে অল্প কিছু miss-ও গড় সময়ে বিশাল প্রভাব ফেলে — নিচের কোড সেলে এই গণনাটা প্রকৃতভাবে চালিয়ে যাচাই করা হয়েছে, এবং miss rate বদলে গেলে AMAT কতটা সংবেদনশীল তাও দেখানো হয়েছে।
def compute_amat(hit_time, miss_rate, miss_penalty):
"""AMAT = HitTime + MissRate * MissPenalty"""
return hit_time + miss_rate * miss_penalty
# মূল worked example: HitTime=1, MissRate=0.05 (5%), MissPenalty=100
hit_time = 1
miss_rate = 0.05
miss_penalty = 100
amat = compute_amat(hit_time, miss_rate, miss_penalty)
print(f"AMAT = {hit_time} + {miss_rate} * {miss_penalty} = {amat}")
assert amat == 6.0, "worked example মিলছে না!"
print("যাচাই সফল -- AMAT ঠিক 6.0 সাইকেল।")
print()
print("HitTime ও MissPenalty স্থির রেখে বিভিন্ন MissRate-এ AMAT কেমন বদলায়:")
print()
print("MissRate | AMAT (সাইকেল)")
print("-" * 26)
for mr in (0.01, 0.05, 0.10, 0.20):
a = compute_amat(hit_time, mr, miss_penalty)
print(f"{mr:>8.0%} | {a:>6.2f}")
print()
print("লক্ষ্য করুন: MissRate মাত্র 1% থেকে 20%-এ (২০ গুণ) বাড়লে, AMAT প্রায়")
low = compute_amat(hit_time, 0.01, miss_penalty)
high = compute_amat(hit_time, 0.20, miss_penalty)
print(f"{low} থেকে {high} সাইকেলে গিয়ে পৌঁছায় -- ছোট্ট একটা miss rate-এর প্রভাব কতটা বড়, তা স্পষ্ট।")
এখানে MissPenalty-কে একটা স্থির সংখ্যা ধরা হয়েছে — কিন্তু বাস্তবে আধুনিক CPU-তে একাধিক ক্যাশ
স্তর থাকে (L1, L2, কখনো L3)। L1-এর "miss penalty" আসলে হলো L2-এর নিজস্ব AMAT-এর সমান — একটা রিকার্সিভ
সম্পর্ক। এই ধারণাটাই পরের পাঠে (L42) পুরোপুরি বিস্তৃত করে দেখানো হবে।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ AMAT ফর্মুলায় শুধু miss rate-কে সরাসরি "খরচ" হিসেবে না ধরে HitTime-এর সাথে যোগ করে miss penalty-কে গুণ করা হয় কেন?
কারণ AMAT আসলে একটা প্রত্যাশিত (expected) মান হিসাব — প্রতিটি অ্যাক্সেসই নিশ্চিতভাবে HitTime "খরচ" করে (ক্যাশ প্রথমে চেক তো করতেই হয়), তাই এটা সবসময় যোগ হয়। কিন্তু MissPenalty শুধু ততটুকু ভগ্নাংশ অ্যাক্সেসের ক্ষেত্রেই প্রযোজ্য যেগুলো আসলে মিস হয় — তাই সেটাকে MissRate দিয়ে গুণ করে "সম্ভাব্যতা-ভারিত" করা হয়, ঠিক যেভাবে সম্ভাব্যতা তত্ত্বে প্রত্যাশিত মান (expected value) গণনা করা হয়।
প্র ০২ একটা ক্যাশ ডিজাইনার যদি HitTime সামান্য বাড়িয়ে (যেমন ১ থেকে ২) MissRate অনেক কমাতে (যেমন ৫% থেকে ১%) পারেন, এটা কি লাভজনক হবে?
গণনা করে দেখা যাক: আগের AMAT = 1 + 0.05×100 = 6.0। নতুন AMAT = 2 + 0.01×100 = 2 + 1 = 3.0। হ্যাঁ, এই ক্ষেত্রে স্পষ্টভাবে লাভজনক — AMAT প্রায় অর্ধেকে নেমে এসেছে, যদিও HitTime দ্বিগুণ হয়েছে। এটাই দেখায় কেন বাস্তব ক্যাশ ডিজাইনে (L39-এর বেশি associativity, L40-এর ভালো রিপ্লেসমেন্ট পলিসি) সামান্য HitTime বাড়িয়ে হলেও MissRate কমানোর প্রচেষ্টা প্রায়ই সামগ্রিকভাবে লাভজনক হয় — নির্দিষ্ট সংখ্যাগুলো গণনা করেই সিদ্ধান্ত নেওয়া উচিত, শুধু অনুমান করে নয়।
প্র ০৩ উপরের কোড সেলে MissRate=0 (অর্থাৎ কোনো মিসই হয় না) হলে AMAT-এর মান কী হবে, এবং এটা কী বোঝায়?
MissRate=0 হলে AMAT = HitTime + 0×MissPenalty = HitTime = 1 সাইকেল — অর্থাৎ MissPenalty পুরোপুরি অপ্রাসঙ্গিক হয়ে যায়, কারণ কখনোই মিস ঘটছে না। এটাই একটা আদর্শ (কিন্তু বাস্তবে অসম্ভব) পরিস্থিতি বোঝায় — যেখানে ক্যাশ সবসময় ঠিক সঠিক ডেটা ধরে রাখে। বাস্তবে MissRate কখনো ঠিক শূন্য হয় না (ক্যাশ সসীম আকারের), তাই AMAT সবসময় HitTime-এর চেয়ে সামান্য হলেও বেশি থাকে।
অনুশীলন
-
চিন্তা করুন: একটি ক্যাশের HitTime=2, MissPenalty=50, MissRate=0.10। হাতে-কলমে AMAT গণনা করুন।
AMAT = HitTime + MissRate × MissPenalty = 2 + 0.10 × 50 = 2 + 5 = 7 সাইকেল। উপরের কোড সেলের
compute_amat(2, 0.10, 50)কল করেও একই ফলাফল যাচাই করা যাবে। -
পরীক্ষা করুন: কোড সেলের লুপে যদি
miss_penalty-কে ১০০ থেকে কমিয়ে ১০ করা হতো (কোড পরিবর্তন করবেন না, শুধু ভাবুন), তাহলে MissRate 1% থেকে 20%-এ যাওয়ার প্রভাব AMAT-এ আগের মতোই বড় থাকত, নাকি কমে যেত?অনেকটাই কমে যেত। miss_penalty=10 হলে: MissRate=1% এ AMAT = 1 + 0.01×10 = 1.1, আর MissRate=20% এ AMAT = 1 + 0.20×10 = 3.0 — পরিবর্তনটা এখন মাত্র ~২.৭ গুণ, আগের (miss_penalty=100-এ ~১০.৫ গুণ) তুলনায় অনেক কম নাটকীয়। এটাই নিশ্চিত করে যে AMAT-এর miss rate-সংবেদনশীলতা সরাসরি নির্ভর করে miss penalty কত বড় তার উপর — যত বড় penalty, তত বেশি সংবেদনশীল।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পরবর্তী পাঠ: মাল্টি-লেভেল ক্যাশ (L1/L2/L3) L42 এই পাঠের AMAT ফর্মুলা রিকার্সিভভাবে বিস্তৃত করে দেখানো হবে বাস্তব একাধিক-স্তরের ক্যাশ সিস্টেমে।
- আগের পাঠ: ক্যাশ রিপ্লেসমেন্ট ও রাইট পলিসি L40 LRU ও রাইট পলিসি — যেগুলো miss rate কমাতে সরাসরি প্রভাব ফেলে, তা এই পাঠে বিস্তারিত।
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ M9-এ মেমরি টেকনোলজি (SRAM/DRAM/ROM/Flash) এবং তার পরের মডিউলগুলোতে I/O ও প্যারালাল আর্কিটেকচার কভার হবে।