خط لوله کلاسیک
خطرها را کنترل کنید

خطرهای کنترلی ناشی از شعاب مشروط و بدون قید و شرط است. خط لوله کلاسیک RISC شاخه‌ها را در مرحله رمزگشایی حل می‌کند، که به این معنی است که تکرار تفکیک شاخه دو چرخه طول می‌کشد. سه مفهوم وجود دارد:
تکرار تفکیک شعاب از مدارهای کمی عبور می‌کند: خودن کش دستورالعمل، خودن فایل ثبت، محاسبه شرایط شعاب (که شامل یک مقایسه ۳۲ بیتی در CPUهای MIPS است)، و مالتی پلکسر آدرس دستورالعمل بعدی.
از آنجایی که اهداف شاخه و پرش به موازات رجیستر خوده شده محاسبه می‌شوند، ISAهای RISC معمولاً دستورالعمل‌هایی ندارند که به آدرس register+offset منشعب می‌شوند. پرش به ثبت نام پشتیبی می‌شود.
در هر شاخه ای که گرفته می‌شود، دستورالعمل بلافاصله پس از شاخه همیشه از کش دستورالعمل واکشی می‌شود. اگر این دستورالعمل نادیده گرفته شود، یک جریمه IPC برای هر شاخه گرفته شده یک چرخه وجود دارد که به دازه کافی بزرگ است.
چهار طرح برای حل این مشکل کارایی با شاخه‌ها وجود دارد:
Predict Not Taken: همیشه دستور بعد از شاخه را از کش دستورالعمل واکشی کنید، اما فقط در صورتی آن را اجرا کنید که شاخه گرفته نشده باشد. اگر شعاب گرفته نشود، خط لوله پر می مد. اگر شعاب گرفته شود، دستورالعمل فلاش می‌شود (به گونه ای علامت گذاری می‌شود که گویی یک NOP است)، و فرصت یک چرخه برای اتمام یک دستورالعمل از بین می‌رود.
Branch Likely: همیشه دستورالعمل را بعد از شاخه از کش دستورالعمل واکشی کنید، اما فقط در صورتی آن را اجرا کنید که شاخه گرفته شده باشد. کامپایلر همیشه می‌تود شکاف تأخیر شاخه‌ای را در چنین شاخه‌ای پر کند، و از آنجایی که شعبه‌ها اغلب گرفته می‌شوند، چنین شاخه‌هایی جریمه IPC کمتری نسبت به نوع قبلی دارند.
شکاف تأخیر شعبه: همیشه دستورالعمل را بعد از شاخه از کش دستورالعمل واکشی کنید و همیشه آن را اجرا کنید، حتی اگر شاخه گرفته شده باشد. به جای دریافت جریمه IPC برای بخشی از شاخه‌هایی که گرفته شده (شاید ۶۰٪) یا گرفته نشده است (شاید ۴۰٪)، شکاف‌های تأخیر شعبه برای شاخه‌هایی که کامپایلر نمی تود شکاف تأخیر شعاب را برنامه‌ریزی کند، جریمه IPC می‌گیرد. طراح SPARC, MIPS و MC88K یک شکاف تأخیر شعاب را در ISA خود طراحی کردند.
پیش‌بینی شاخه: به موازات واکشی هر دستورالعمل، حدس بزنید که آیا دستورالعمل یک شاخه است یا پرش، و اگر چنین است، هدف را حدس بزنید. در چرخه پس از شاخه یا پرش، دستورالعمل را در هدف حدس زده شده بیاورید. هنگامی که حدس اشتباه است، هدف نادرست واکشی شده را شستشو دهید.
اولاً، شاخه‌های تأخیری بحث برگیز بودند، زیرا معنای آنها پیچیده است. یک شاخه تأخیری مشخص می‌کند که پرش به مک جدید پس از دستور بعدی اتفاق می‌افتد. دستور بعدی دستوری است که به‌طور اجتناب ناپذیری توسط کش دستورالعمل پس از شاخه بارگیری می‌شود.
شاخه‌های تأخیری مورد تقاد قرار گرفته است به عنو یک تخاب کوتاه مدت ضعیف در طراحی ISA:
کامپایلرها معمولاً در یافتن دستورالعمل‌های مستقل منطقی برای قرار دادن بعد از شاخه مشکل دارند (دستورالعمل بعد از شاخه، شکاف تأخیر نامیده می‌شود)، بنابراین باید NOPها را در شکاف‌های تأخیر وارد کنند.
پردازنده‌های Superscalar که چندین دستورالعمل را در هر چرخه دریافت می‌کنند و باید نوعی پیش‌بینی شاخه داشته باشند، از شاخه‌های تأخیری بهره نمی‌برند. Alpha ISA شاخه‌های تأخیری را کنار گذاشت، زیرا برای پردازنده‌های فوق اسکالر در نظر گرفته شده بود.
جدی‌ترین اشکال برای شاخه‌های تأخیری پیچیدگی کنترل اضافی آنهاست. اگر دستور شکاف تأخیر استثنا داشته باشد، پردازنده باید به جای دستورالعمل بعدی، در شاخه راه دازی مجدد شود. پس استثناها اساساً دارای دو آدرس هستند، آدرس استثنا و آدرس راه‌دازی مجدد، و ایجاد و تمایز صحیح بین این دو در همه موارد منبع اشکال برای طراحی‌های بعدی بوده است.