پیش‌بینی‌کننده هدف شاخه

پیش‌بینی‌کننده هدف شاخه بخشی از پردازنده است که آدرس دستوری را که پس از یک دستور شاخه شرطی یا غیرشرطی اجرا می‌شود، پیش از آنکه واحد اجرایی پردازنده آن را محاسبه کند، پیش‌بینی می‌کند.

پیش‌بینی هدف شاخه با پیش‌بینی شاخه متفاوت است؛ پیش‌بینی شاخه تنها حدس می‌زند که آیا یک شاخه شرطی اجرا می‌شود یا نه، در حالی که پیش‌بینی هدف شاخه آدرس مقصد آن را تخمین می‌زند

 اهمیت شاخه پیش‌بینی هدف 
در طراحی پردازنده‌های موازی‌تر، با افزایش تأخیر حافظه نهان دستورالعمل و پهن‌تر شدن عرض واکشی، استخراج هدف شاخه به یک گلوگاه تبدیل می‌شود. این چرخه تکراری به صورت زیر است:

 حافظه نهان دستورالعمل یک بلوک از دستورها را واکشی می‌کند.
 دستورها برای شناسایی شاخه‌ها بررسی می‌شوند.
 اولین شاخه‌ای که پیش‌بینی شده اجرا خواهد شد، شناسایی می‌شود.
 هدف آن شاخه محاسبه می‌شود.
 واکشی دستورالعمل از آدرس هدف شاخه از سر گرفته می‌شود.

در ماشین‌هایی که این چرخه دو کلاک سیکل طول می‌کشد، پردازنده پس از هر شاخه‌ای که پیش‌بینی شده اجرا می‌شود، یک سیکل کامل واکشی را از دست می‌دهد. برخی ماشین‌ها با معماری‌های خاص این مشکل را با روش‌هایی نظیر بافر هدف شاخه (BTB) کاهش می‌دهند. 
 بافر هدف شاخه (Branch Target Buffer — BTB) 
رایج‌ترین روش پیش‌بینی هدف شاخه استفاده از یک جدول BTB است. در این روش:

 آدرس دستور شاخه به عنوان کلید جستجو استفاده می‌شود.
 نتیجه جستجو، آدرس پیش‌بینی‌شده هدف است.
 اگر شاخه قبلاً اجرا شده باشد، آدرس هدف واقعی در جدول ذخیره شده و بازیابی می‌شود.

این ساختار شبیه به یک حافظه نهان کوچک عمل می‌کند که اطلاعات آخرین اجرای هر دستور شاخه را نگه می‌دارد.
 پیش‌بینی آدرس بازگشت (Return Address Prediction 

یک مورد خاص و مهم، دستورات بازگشت از تابع (return) است. در این حالت:

 هدف شاخه در زمان کامپایل مشخص نیست و به پشته وابسته است.
 پردازنده‌های مدرن از یک پشته آدرس بازگشت (RAS — Return Address Stack) استفاده می‌کنند.
 هنگام فراخوانی تابع (call)، آدرس بازگشت در RAS ذخیره می‌شود.
 هنگام return، آدرس از RAS خوانده و به عنوان هدف پیش‌بینی می‌شود.
 این روش معمولاً دقت بسیار بالایی دارد.
 تأثیر بر عملکرد پردازنده 
خطا در پیش‌بینی هدف شاخه منجر به شستن خط لوله (pipeline flush) می‌شود که چندین سیکل کلاک را هدر می‌دهد. پردازنده‌های مدرن با ترکیب روش‌های مختلف سعی می‌کنند این خطا را به حداقل برسانند.

 منابع 
رده:معماری کامپیوتر