در معماری کامپیوتر، پیش بینی پرش یک مدار دیجیتال است که تلاش می کند حدس بزند که یک پرش چه راهی ( برای مثال ساختار if - then - else ) می رود قبل از اینکه به طور قطعی شناخته شود. مقصود از پیش بینی پرش بهبود جریان در دستورات خط لوله است. پیش بینی های پرش نقش اساسی در دست یابی به کارایی مؤثر بالا در خیلی از معماری های ریزپردازنده های جدید مثل x86 ایفا می کند.
پرش دوراهه معمولاً با دستور پرش شرطی پیاده سازی می شود. شرط پرش می تواند هم "not - taken” باشد و اجرا را با اولین پرش کد بلافاصله بعد از پرش شرطی است ادامه دهد یا می تواند "taken " شود و به مکان متفاوتی در حافظه برنامه پرش کند، جایی که دومین پرش کد ذخیره شده است. به طور دقیق مشخص نیست که آیا پرش شرطی taken یا not - taken خواهد شد تا وقتی که محاسبه شود و پرش شرطی از قسمت اجرا در خط لوله عبور می کند. ( شکل یک ) بدون پیش بینی پرش، پردازنده باید تا زمانی که دستور پرش شرطی از حالت اجرا عبور کند، قبل از اینکه دستور بعدی بتواند وارد حالت fetch در خط لوله شود، صبر کند. پیش بینی پرش تلاش می کند تا از اتلاف زمان اجتناب کند با تلاش کردن اینکه حدس بزند که آیا پرش شرطی احتمال دارد taken یا not taken شود. پرش که حدس زده شود به احتمال زیاد fetch می شود و به صورت حدسی اجرا می شود. اگر بعداً مشخص شود که حدس غلط بوده سپس اجرای حدسی یا اجرای بخشی از دستورات اجرا شده نادیده گرفته می شوند و خط لوله دوباره شروع می کند با پرش صحیح، تحمیل تأخیر
زمانی که در رابطه با پیش بینی غلط به هدر می رود برابر است با تعدادی از مراحل در خط لوله. از مرحلهٔ fetch تا مرحلهٔ اجرا. ریزپردازنده های جدید تمایل دارند که خط لوله های نسبتاً طولانی داشته باشند به طوری که پیش بینی غلط تأخیر بین ۱۰ تا ۲۰ دوره ساعتی اتفاق می افتد. در نتیجه، درست کردن خط لوله طولانی تر، نیاز پیش بینی پرش پیشرفته تر را افزایش می دهد.
اولین زمان که اجرای پرش شرطی مواجه شد، اطلاعات زیادی بر پایهٔ پیش بینی نیست. اما پیش بینی پرش اطلاعات را نگهداری می کند چه پرش ها taken شوند یا نشوند. وقتی که با یک پرش شرطی که چندین بار با آن برخورد کرده مواجه می شود می تواند پیش بینی را بر پایهٔ تاریخ قرار دهد. پیش بینی پرش ممکنه برای مثال، تشخیص دهد که پرش شرطی اغلب انجام شده یا خیر، یا اینکه یک در میان انجام شده.
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفپرش دوراهه معمولاً با دستور پرش شرطی پیاده سازی می شود. شرط پرش می تواند هم "not - taken” باشد و اجرا را با اولین پرش کد بلافاصله بعد از پرش شرطی است ادامه دهد یا می تواند "taken " شود و به مکان متفاوتی در حافظه برنامه پرش کند، جایی که دومین پرش کد ذخیره شده است. به طور دقیق مشخص نیست که آیا پرش شرطی taken یا not - taken خواهد شد تا وقتی که محاسبه شود و پرش شرطی از قسمت اجرا در خط لوله عبور می کند. ( شکل یک ) بدون پیش بینی پرش، پردازنده باید تا زمانی که دستور پرش شرطی از حالت اجرا عبور کند، قبل از اینکه دستور بعدی بتواند وارد حالت fetch در خط لوله شود، صبر کند. پیش بینی پرش تلاش می کند تا از اتلاف زمان اجتناب کند با تلاش کردن اینکه حدس بزند که آیا پرش شرطی احتمال دارد taken یا not taken شود. پرش که حدس زده شود به احتمال زیاد fetch می شود و به صورت حدسی اجرا می شود. اگر بعداً مشخص شود که حدس غلط بوده سپس اجرای حدسی یا اجرای بخشی از دستورات اجرا شده نادیده گرفته می شوند و خط لوله دوباره شروع می کند با پرش صحیح، تحمیل تأخیر
زمانی که در رابطه با پیش بینی غلط به هدر می رود برابر است با تعدادی از مراحل در خط لوله. از مرحلهٔ fetch تا مرحلهٔ اجرا. ریزپردازنده های جدید تمایل دارند که خط لوله های نسبتاً طولانی داشته باشند به طوری که پیش بینی غلط تأخیر بین ۱۰ تا ۲۰ دوره ساعتی اتفاق می افتد. در نتیجه، درست کردن خط لوله طولانی تر، نیاز پیش بینی پرش پیشرفته تر را افزایش می دهد.
اولین زمان که اجرای پرش شرطی مواجه شد، اطلاعات زیادی بر پایهٔ پیش بینی نیست. اما پیش بینی پرش اطلاعات را نگهداری می کند چه پرش ها taken شوند یا نشوند. وقتی که با یک پرش شرطی که چندین بار با آن برخورد کرده مواجه می شود می تواند پیش بینی را بر پایهٔ تاریخ قرار دهد. پیش بینی پرش ممکنه برای مثال، تشخیص دهد که پرش شرطی اغلب انجام شده یا خیر، یا اینکه یک در میان انجام شده.
wiki: پیش بینی کننده پرش