NPM : 0934015031
BRANCH PREDICTION
Hal ini tidak diketahui secara pasti apakah suatu jump bersyarat akan diambil atau
tidak diambil sampai kondisi telah dihitung dan lompatan bersyarat telah melewati tahap
eksekusi dalam pipa instruksi (lihat gambar 1.).
Gambar 1: Contoh pipa 4-panggung. Kotak berwarna merupakan instruksi independen satu sama lain
Tanpa prediksi cabang, kita harus menunggu sampai instruksi jump bersyarat
telah lulus tahap sebelum mengeksekusi instruksi berikutnya bisa masuk ke tahap fetch
dalam pipa. Prediktor cabang mencoba untuk menghindari pemborosan waktu dengan
mencoba untuk menebak apakah melompat bersyarat paling mungkin diambil atau tidak
diambil. Cabang yang diduga menjadi yang paling mungkin adalah kemudian diambil
dan spekulasi dieksekusi (speculatively executed). Jika kemudian mendeteksi bahwa
salah menebak maka spekulatif dieksekusi atau sebagian instruksi dieksekusi dibuang dan
pipa dimulai atas dengan cabang yang benar.
Waktu yang terbuang dalam kasus misprediction cabang sama dengan jumlah
tahap dalam pipa dari fetch panggung ke panggung mengeksekusi. mikroprosesor modern
cenderung memiliki cukup pipa panjang sehingga penundaan misprediction adalah antara
10 dan 20 siklus clock . Semakin panjang pipa semakin tinggi kebutuhan akan prediksi
cabang yang baik.
Pertama kali sebuah instruksi jump bersyarat ditemui, tidak ada banyak informasi
untuk dasar prediksi. Tapi prediktor cabang menyimpan catatan tentang apakah cabang
diambil atau tidak diambil. Ketika ia menemukan sebuah lompatan bersyarat yang telah
melihat beberapa kali sebelum kemudian dapat mendasari prediksi pada sejarah masa
lalu. Prediktor cabang mungkin, misalnya, mengakui bahwa lompatan bersyarat diambil
lebih sering daripada tidak, atau yang diambil setiap kali kedua.
Cabang prediksi tidak sama dengan target prediksi cabang (branch target
prediction). Prediksi Cabang mencoba untuk menebak apakah lompatan bersyarat akan
diambil atau tidak. Prediksi target Cabang mencoba untuk menebak target lompatan yang
diambil tanpa syarat bersyarat sebelum dihitung oleh decoding dan melaksanakan
instruksi itu sendiri. Cabang prediksi dan prediksi target cabang sering digabungkan ke
dalam sirkuit yang sama.
Sebuah cara sederhana untuk melakukan analisis dataflow program adalah untuk
mengatur persamaan dataflow untuk setiap node dari grafik kontrol aliran dan
menyelesaikannya dengan berulang kali menghitung output dari input secara lokal pada
setiap node sampai seluruh sistem stabil, yaitu mencapai sebuah fixpoint . Pendekatan
umum yang dikembangkan oleh Gary Kildall saat mengajar di Naval Postgraduate
School .
Ini adalah proses pengumpulan informasi tentang cara variabel yang digunakan,
didefinisikan dalam program ini. analisis aliran data upaya untuk memperoleh informasi
tertentu di setiap titik dalam sebuah prosedur. Biasanya, itu sudah cukup untuk
memperoleh informasi ini pada batas blok dasar, karena dari yang mudah untuk
menghitung informasi pada titik-titik di blok dasar. Dalam analisis aliran ke depan,
negara keluar dari blok adalah fungsi dari negara masuk blok. Fungsi ini adalah
komposisi efek laporan di blok tersebut. Keadaan masuknya blok adalah fungsi dari
negara keluar dari pendahulunya.
SPECULATIVE EXECUTION
Dalam ilmu komputer , eksekusi spekulatif adalah pelaksanaan kode, hasil yang
mungkin tidak diperlukan. Dalam konteks pemrograman fungsional, istilah "spekulatif"
evaluasi digunakan sebagai gantinya.
Teknik yang digunakan untuk pipeline dan superscalar ini bisa melaksanakan
branch prediction dan speculative execution tentunya membutuhkan ekstra transistor
yang tidak sedikit untuk hal tersebut.
Secara umum, pernyataan dan definisi dalam sebuah program dapat dibagi menjadi
tiga jenis:
Fungsi eksekusi spekulatif adalah kinerja optimasi . Ini hanya berguna ketika
eksekusi awal mengkonsumsi sedikit waktu dan ruang dari eksekusi kemudian, dan
tabungan cukup untuk mengkompensasi, dalam jangka panjang, agar upaya kemungkinan
terbuang komputasi nilai yang tidak pernah digunakan.
Ref :
http://translate.google.co.id/translate?
hl=id&sl=en&u=http://en.wikipedia.org/wiki/Branch_predictor&ei=x2yTL2TCoiavAPrl
d3ABg&sa=X&oi=translate&ct=result&resnum=4&ved=0CCQQ7gEwAw&prev=/searc
h%3Fq%3Dpengertian%2Bbranch%2Bprediction%26hl%3Did%26sa%3DN
http://translate.google.co.id/translate?hl=id&sl=en&u=http://en.wikipedia.org/wiki/Data-
flow_analysis&ei=WoCyTKbnG4OsvgOrzMXvDg&sa=X&oi=translate&ct=result&resn
um=1&ved=0CB0Q7gEwAA&prev=/search%3Fq%3Ddata%2Bflow%2Banalysis%26hl
%3Did%26prmd%3Db
http://translate.google.co.id/translate?
hl=id&sl=en&u=http://en.wikipedia.org/wiki/Speculative_execution&ei=b4KyTM7iIoK
mvQPO6eSyBg&sa=X&oi=translate&ct=result&resnum=1&ved=0CB4Q7gEwAA&pre
v=/search%3Fq%3DSPECULATIVE%2BEXECUTION%26hl%3Did%26sa%3DG