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

Branch Prediction

ব্র্যাঞ্চ প্রেডিকশন

Branch resolve হওয়ার আগেই CPU-র একটা শিক্ষিত অনুমান — নেওয়া হবে নাকি হবে না — যাতে fetch থামাতে না হয়; ভুল হলে speculatively করা কাজ বাতিল হয়।

2-bit saturating counter সবচেয়ে প্রচলিত সরল predictor — prediction বদলাতে টানা দুইবার বিপরীত ফলাফল লাগে (একবার না), যা loop-এর “মূলত এক দিকে, মাঝেমধ্যে ব্যতিক্রম” প্যাটার্নে ৯০%+ accuracy দেয়।

Misprediction penalty=(branch resolve হওয়ার pipeline stage)1\text{Misprediction penalty} = (\text{branch resolve হওয়ার pipeline stage}) - 1

গভীর pipeline (Pentium 4-এর ~২০+ stage) উচ্চ clock speed দেয়, কিন্তু misprediction-এ বিশাল penalty — একটা বাস্তব কারণ কেন Intel পরবর্তী প্রজন্মে pipeline ছোট করেছিল।

Branch Target Buffer (BTB) predicted target address আগে থেকে cache করে রাখে, তাই fetch stage-ই সঠিক জায়গা থেকে speculatively পড়া শুরু করতে পারে, decode পর্যন্ত অপেক্ষা না করে।