Teknik yang dikembangkan untuk meningkatkan kinerja komputer...
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
Data-Flow
Analysis adalah teknik untuk mengumpulkan informasi tentang kemungkinan
himpunan nilai-nilai dihitung di berbagai titik di sebuah program
komputer. Kontrol aliran Sebuah program grafik (CFG) digunakan untuk
menentukan bagian-bagian dari program dimana nilai tertentu ditugaskan
ke variabel yang mungkin merambat. Informasi yang dikumpulkan sering
digunakan oleh compiler ketika mengoptimalkan program. Sebuah contoh
kanonik dari analisis data-aliran mencapai definisi.
Sebuah cara
sederhana untuk melakukan Data-Flow Analysis program adalah untuk
mengatur aliran data persamaan untuk setiap node dari grafik kontrol
aliran dan menyelesaikannya dengan berulang kali menghitung output dari
input lokal di setiap node sampai seluruh sistem stabil,sampai mencapai
sebuah fixpoint. Pendekatan umum ini dikembangkan oleh Gary Kildall saat
mengajar di Naval Postgraduate School.
Speculative Execution
Eksekusi
spekulatif dalam sistem komputer adalah melakukan pekerjaan, yang
hasilnya mungkin tidak diperlukan. Teknik optimasi kinerja digunakan
dalam prosesor pipelined dan systems.
Eksekusi
spekulatif adalah optimasi kinerja. Ide utama adalah untuk melakukan
pekerjaan yang mungkin tidak diperlukan. Targetnya adalah untuk
menyediakan konkurensi lebih jika sumber daya tambahan yang tersedia.
Tidak ada komentar:
Posting Komentar