Dal tahmini (branch prediction)
Kısaca: Dal tahmini, bir programın bir dallanmada hangi yola gideceğini tahmin eder; böylece CPU boru hattı sonucu beklemek zorunda kalmaz.
Biraz daha ayrıntılı: Modern CPU’lar komutları, koşulun sonucu belli olmadan çok önce getirir ve başlatır. Tahmin doğruysa yürütme duraksamadan sürer. Yanlışsa iş atılır ve bu yaklaşık 10–20 döngüye mal olur.
Ayrıntılı
- En basit biçim: Dal başına bir sayaç, son seferde alınıp alınmadığını hatırlar.
- Daha iyisi: Geçmişe dayalı tahminciler son dal sonuçlarını bir desen olarak kullanır. Modern CPU’lar dalların %95’inden fazlasını isabet ettirir.
- Görünür etki: Bir dizideki 128’in üzerindeki değerleri toplamak, dizi sıralıysa daha hızlıdır; çünkü dal deseni öngörülebilir olur.
- Koddaki karşı önlemler: Dalsız ifadeler (koşullu atamalar), sıralı veriler, nadir durumları sıcak döngüden çıkarmak.
- Güvenlik: Spekülatif yürütme, yazılım ve mikrokod önlemleri gerektiren Spectre gibi açıklara yol açtı.
- Bağlam: Sırasız yürütme yanında spekülasyonun parçası.
Ayrıca bak: CPU yapısı