Branch Prediction
Dalam arsitektur komputer, sebuah Branch
Prediction adalah sirkuit digital yang mencoba untuk menebak arah mana cabang
(misalnya struktur if-then-else) akan pergi sebelum keadaannya diketahui pasti.
Tujuan dari Branch Predictor untuk meningkatkan aliran dalam pipa instruksi.
Branch Prediction penting dalam mikroprosesor pipelined untuk mencapai kinerja
tinggi.
Dua arah percabangan biasanya
diimplementasikan dengan instruksi lompat bersyarat. Melonjaknya bersyarat
dapat menjadi "tidak diambil" dan melanjutkan eksekusi dengan cabang
pertama dari kode yang mengikuti segera setelah lompat bersyarat - atau dapat
"diambil" dan melompat ke tempat yang berbeda di memori program
dimana cabang kedua kode itu disimpan.
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 yang diambil dan spekulasi
kemudian dieksekusi. Jika kemudian mendeteksi bahwa ada kesalahan menebak maka
instruksi dieksekusi spekulatif atau sebagian dieksekusi dibuang dan pipa
dimulai dari 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 makin baik.
Pertama kali instruksi lompat bersyarat
ditemui, tidak ada banyak informasi untuk dasar prediksi ini. 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 kejadian yang lalu. Branch prediction
mungkin, misalnya, mengakui bahwa lompat bersyarat diambil lebih sering
daripada tidak, atau bahwa itu diambil setiap dua kali.
branch prediction 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.
Data Flow Analysis
Adalah suatu teknik perancangan yg digunakan untuk
memperoleh modul-modul dg tingkat kohesi yg tinggi.
Data-flow analisis adalah sebuah teknik untuk mengumpulkan informasi tentang kemungkinan set nilai-nilai dihitung pada berbagai titik dalam sebuah program komputer .Sebuah program flow control grafik (CFG) digunakan untuk menentukan bagian-bagian dari sebuah program untuk mana suatu nilai tertentu yang diberikan ke variabel mungkinmerambat. Informasi yang dikumpulkan sering digunakan olehkompiler ketikamengoptimalkanprogram. Contoh kanonik dari analisis aliran data mencapai definisi . Sebuah cara sederhana untuk melakukan analisis data flow program adalah untuk mengatur persamaan data flow untuk setiap node dari grafik kontrol aliran dan menyelesaikannya dengan berulang kali menghitung output dari input secara lokal padasetiap node sampai seluruh sistem stabil, yaitu mencapai sebuah fix point.
Data-flow analisis adalah sebuah teknik untuk mengumpulkan informasi tentang kemungkinan set nilai-nilai dihitung pada berbagai titik dalam sebuah program komputer .Sebuah program flow control grafik (CFG) digunakan untuk menentukan bagian-bagian dari sebuah program untuk mana suatu nilai tertentu yang diberikan ke variabel mungkinmerambat. Informasi yang dikumpulkan sering digunakan olehkompiler ketikamengoptimalkanprogram. Contoh kanonik dari analisis aliran data mencapai definisi . Sebuah cara sederhana untuk melakukan analisis data flow program adalah untuk mengatur persamaan data flow untuk setiap node dari grafik kontrol aliran dan menyelesaikannya dengan berulang kali menghitung output dari input secara lokal padasetiap node sampai seluruh sistem stabil, yaitu mencapai sebuah fix point.
Speculative Execution
Eksekusi spekulatif dalam sistem komputer adalah
melakukan pekerjaan, yang hasilnya mungkin tidak diperlukan. Targetnya adalah untuk menyediakan konkurensi lebih jika
sumber daya tambahan yang tersedia.
Tidak ada komentar:
Posting Komentar