Dua arah percabangan biasanya diimplementasikan dengan instruksi
lompat bersyarat. Sebuah lompat bersyarat dapat menjadi "tidak diambil"
dan melanjutkan eksekusi dengan cabangpertama dari kode yang
mengikuti segera setelah lompat bersyarat - atau dapat "diambil" dan
melompat ke tempat yang berbeda di memori program dimana cabang kedua
ode adalahdisimpan. Hal ini tidak diketahui secara pasti apakah lompat
bersyarat akan diambil atau tidak diambil sampai kondisi telah dihitung
dan lompat bersyarat telah lulus tahap eksekusi dalam pipa instruksi
(lihat gambar. 1).
Tanpa
prediksi cabang, prosesor harus menunggu sampai instruksi lompat
bersyarat telah melewati tahap mengeksekusi sebelum instruksi berikutnya
dapat memasuki tahap fetch dalam pipa. Prediktor cabang upaya untuk
menghindari pemborosan waktu dengan mencoba untuk menebak apakah lompat
bersyarat yang paling mungkin diambil atau tidak diambil. Cabang yang
diduga sebagai yang paling mungkin adalah kemudian diambil dan spekulasi
dieksekusi. Jika kemudian mendeteksi bahwa salah menebak maka
instruksi dieksekusi spekulatif atau sebagian dieksekusi dibuang dan
pipa dimulai atas dengan cabang yang benar.
Waktu yang terbuang dalam kasus misprediction cabang sama dengan
jumlah tahap dalam pipa dari tahap ke tahap fetch
mengeksekusi. Mikroprosesor modern cenderung memiliki pipa yang cukup
panjang sehingga penundaan misprediction adalah antara 10 dan 20 siklus
clock. Semakin lama pipa tinggi kebutuhan untuk prediksi cabang yang
baik. Pertama kali instruksi lompat bersyarat ditemui, tidak ada banyak
informasi untuk dasar prediksi di. Tapi prediksi cabang menyimpan
catatan dari apakah cabang diambil atau tidak diambil. Ketika bertemu
dengan lompat bersyarat yang telah melihat beberapa kali sebelum
kemudian dapat dasar prediksi pada sejarah masa lalu. Prediktor cabang
mungkin, misalnya, mengakui bahwa lompat bersyarat diambil lebih sering
daripada tidak, atau bahwa itu adalah diambil setiap kali kedua.
Prediksi cabang tidak sama dengan prediksi cabang target.Prediksi
cabang upaya untuk menebak apakah lompatan bersyarat akan diambil atau
tidak. Cabang prediksi target yang mencoba untuk menebak target lompatan
bersyarat atau tanpa syarat diambil sebelum dihitung oleh decoding dan
mengeksekusi instruksi itu sendiri. Cabang cabang prediksi dan
prediksi target sering dikombinasikan ke dalam sirkuit yang sama.
source : david-chromaticscale.blogspot.com/p/branch-prediction.html
Tidak ada komentar:
Posting Komentar