Jumat, 07 Oktober 2011

Pertemuan ll (branch predection, data flow analiysis, speculative exacution)



  • Prediksi Cabang

Sebelumnya: Pipelining Berikutnya: SuperscalarUntuk membuat pipelining bekerja secara efisien, perlu untuk menjaga semua tahapan penuh. Namun, ada masalah setiap kali instruksi ditemui yang mengubah aliran sekuensial kontrol dalam program ini. Jika pernyataan, laporan loop, dan pernyataan prosedur menyebabkan masalah dengan pipa.


 
Perhatikan kode berikut,if (x> 0) {
     
a = 0;
     
b = 1;
     
c = 2;}d = 3;Siklus Fetch Decode Jalankan Simpan1 if (x> 0)2 a = 0 jika (x> 0)3 b = 1 a = 0 jika (x> 0)4 c = 2 b = 1 a = 0 jika (x> 0)5 c = 2 b = 1 a = 06 c = 2 b = 17 c = 2Jika x lebih besar dari 0, maka instruksi di dalam pipa adalah benar, karena tubuh jika pernyataan akan dieksekusi.Siklus Fetch Decode Jalankan Simpan1 if (x> 0)2 a = 0 jika (x> 0)3 b = 1 a = 0 jika (x> 0)4 d = 3 b = 1 labu labu a = 0 jika (x> 0)5 d = 3 b = 1 labu labu a = 06 d = 3 b = 1 labu7 d = 3Namun, jika x kurang dari atau sama dengan 0, maka tubuh jika tidak akan dieksekusi. Dalam hal ini, instruksi berikutnya di dalam pipa harus d = 3, dan instruksi melibatkan b,, dan c tidak harus berada dalam pipa. Dalam hal ini, akan diperlukan untuk membatalkan efffects bahwa instruksi telah di negara bagian prosesor, dan untuk menghapus instruksi dari pipa. Ini dikenal sebagai instruksi meremas. Dengan asumsi bahwa ini bisa dilakukan, maka instruksi d = 3 akan diambil pada awal siklus 4, ketika hasil dari perbandingan x> 0 adalah dikenal. Dalam kasus ini, pipa kurang efisien, karena beberapa tahap yang tidak digunakan untuk mengeksekusi instruksi yang valid. Ini akan mengambil 7 siklus untuk menyelesaikan dua instruksi.Siklus Fetch Decode Jalankan Simpan1 if (x> 0)2 d = 3 if (x> 0)3 d = 3 jika (x> 0)4 d = 3 jika (x> 0)5 d = 3Jika mungkin untuk melihat ke masa depan, dan untuk mengetahui apa hasil dari perbandingan akan, maka akan mungkin untuk menjaga pipa penuh. Sebagai contoh, jika diketahui terlebih dahulu bahwa hasil dari perbandingan akan palsu, maka komputer bisa memuat instruksi d = 3 bukan instruksi a = 0. Jika ini terjadi, maka kedua instruksi akan mengambil hanya 5 siklus.Ini adalah ide di balik prediksi cabang. Cobalah untuk menebak sebelum waktu mana instruksi cabang akan pergi. Jika menebak benar, maka pipa akan tetap penuh. Jika menebak benar, maka squashing beberapa akan berlangsung dan pipa akan kurang efisien. Hal ini dimungkinkan untuk mendapatkan 90% dari tebakan yang benar menggunakan prediksi cabang. 

  • Analisis aliran data 
adalah teknik untuk mengumpulkan informasi tentang kemungkinan himpunan nilai-nilai dihitung pada berbagai titik dalam sebuah program komputer. Kontrol aliran Sebuah program grafik (CFG) digunakan untuk menentukan bagian-bagian dari program yang nilai tertentu ditugaskan ke variabel 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 analisis data aliran 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, yaitu, fixpoint mencapai suatu. Pendekatan umum ini dikembangkan oleh Gary Kildall saat mengajar di Naval Postgraduate School. [1]





  • Eksekusi spekulatif  
dalam sistem komputer adalah melakukan pekerjaan, yang hasilnya mungkin tidak diperlukan. Teknik optimasi kinerja digunakan dalam prosesor pipelined dan sistem lainnya




Tidak ada komentar:

Posting Komentar