Pertemuan 12 (PIPELINING) PENDAHULUAN Pipelining, yang digunakan dalam komputer modern untuk mencapai performa tinggi. Kita mulai dengan menjelaskan dasar pipelining dan bagaimana pengaruhnya terhadap peningkatan performa. Kemudian kami akan menganalisis fitur instruksi mesin yang memfasilitasi eksekusi pipelined, dan kita menunjukkan bahwa pilihan instruksi akan memberikan pengaruh yang signifikan pada performa. Organisasi pipelined memerlukan teknik kompilasi yang canggih, dan compiler optimizing telah di kembangkan untuk tujuan ini. Fungsi utama compiler tersebut adalah menagtur ulang urutan operasi untuk memaksimalkan keuntungan eksekusi pipelined. Group 4 PTIK 09
8.1 Konsep Dasar Kecepatan eksekusi program dipengaruhi oleh banyak factor. Suatu cara untuk meningkatkan performa adalah dengan menggunakan teknologi sirkuit yang lebihcepat untuk membangun prosesor dan memori utama. Kemungkinan lain adalah dengan mengatur hardware sehingga lebih dari satu operasi dapat dilakukan pada saat yang sama. Dengan cara ini, jumlah operasi yang dilakukan perdetik ditingkatkan sekalipun elapsed time yang diperlukan untuk melakukan tiap satu operasi tidak di ubah. Group 4 PTIK 09
- Ide pipelining dapat digunakan pada computer - Ide pipelining dapat digunakan pada computer. Prosesor mengeksekusi suatu program dengan mengambil dan mengeksekusi instruksi, satu demi satu. - Misalkan Fi dan Ei mengacu ke langkah pengambilan dan eksekusi untuk instruksi Ii. Eksekusi program terdiri dari rangkaian langkah pengambilan dan eksekusi. Group 4 PTIK 09
8.1.1 Peranan Memori Cache Tiap stage dalam pipeline diharapkan menyelesaikan operasinya dalam suatu clock cycle. Karenanya, periode clock harus cukup lama untuk menyelesaikannya tugas yang sedang dilakukaan pada tiap stage. Jika unit yang berbeda memerlukan jumlah waktu yang berbeda, maka periode clock harus memungkinkan tugas terlama dapat diselesaikan. Suatu unit yang menyelesaikan tugasnya lebih awal akan idle selama sisa periode clock. Group 4 PTIK 09
Suatu unit yang menyelesaikan tugasnya lebih awal akan ide selama sisa periode clock. Karenanya, pipeline paling efektif dalam meningkatkan performa jika tugas yang sedang dilakukan dalam stage yan berbedaa memerlukan jumlah waktu yang sama. Group 4 PTIK 09
8.1.2 Performa Pipeline Prosesor pipeline menyesaikan pengolahan satu instruksi pada tiap clock cycccle,yang berate kecepatan pegolahan instruksi tersabut empat kali lebih besar dari oparesi berurutan. Peningkatan potensi dalam performa yang dihasilkan dari pipelining proporsional dengan jumlah pipeline stage. Akan tetapi, peningkatan ini hanya akan dicapai jika operasi pipelined dapat di pertahankan tanpa interupsi melalui eksekusi program. Sayangnya, ini bukanlah masalahnya. Group 4 PTIK 09
8.2 DATA HAZARD Data hazard adalah situasi dimana pipeline di-stall karena data yang akan dikenai opersi di tunda dengan beberapa alasan, seperti yang diilustrasikan. kita sekarang akan menganalisa persoalan ketersediaan data dalam beberapa detil. Group 4 PTIK 09
8.2.1 Operand Forwarding Data hazard yang baru saja dideskripsikan muncul karena satu instruksi.instruksi I2 menunggu data dituliskan dalam register file. Akan tetapi, data tersebut tersedia pada autput ALU pada saat Execute stage menyelesaikan langkah E1 di-forwading stage menyelesaikan langkah E1 karenanya jeda dapat dikurangi,atau mungkin dihilangkan , jika kita mengatur agar hasil instruksi I1 di forward langsung untuk digunakan pada langkah E2. Group 4 PTIK 09
8.2.2 Menangani Data Hazard dalam Software Penyerahan tugas seperti penyisipan instruksi NOP ke compiler menghasilkan hardwere yang lebih sederhana.Dengan menyadari kebutuhan terhadap jeda,maka compiler dapat mencoba menyusun ulang instruksi untuk melakukan tugas yang berguna dalam slot NOP menghasilkan ukuran kode yang lebih besar. Group 4 PTIK 09
8.2.3 Efek Samping Adapun efek samping lain yang melibatkan condition code flag,adalah yang digunakan oleh instruksi seperti conditional branch dan add-with – carry.Misalkan register R1 dan R2 menyimpan bilangan integer double –precision yang akan kita tambahkan ke bilangan double – precision yang lain dalam register R3 dan R4. Group 4 PTIK 09
8.3 INSTRUCTION HAZARD Tujuan unit pengambilan instruksi fetch adalah untuk menyediakan arus instruksi tetap bagi unit eksekusi.kapanpun arus ini diinterupsi,maka pipeline stall,seperti pada gambar 8.4 yang mengilustrasikan kasus cache miss.Instruksi branch dapat pula menyebapkan pipeline menjadi stall. Sekarang kita akan menganalisa efek instruksi branch dan teknik yang dapat digunakan untuk mengurangi pengaruhnya. Group 4 PTIK 09
8.3.1 Unconditional Branch Waktu yang hilang karena instruksi branch sering disebut Branch penalty.Branch penalty adalah satu clock cycle. Untuk pipeline yang lebih panjang,branch penalty bias lebih tinggi Group 4 PTIK 09
Queue dan Prefetching Instruksi Cache miss atau instruksi branch men-stall pipeline selama satu clock cycle atau lebih untuk mengurangi efek interupsi tersebut , bayak processor menggunakan unit pengambilan canggih yang dapat mengambil instruksi sebelum diperlukan dan meletakkannya dalam Queue. Group 4 PTIK 09
8.3.2 Conditional Branch dan Branch Prediction Instruksi conditional branch menimbulkan hazard tambahan yabg disebabkan oleh ketergantungan kondisi branch pada hasil instruksi sebelumnya. Keputusan untuk branch tidak dapat dibuat hingga eksekusi instruksi tersebut telah selesai. Group 4 PTIK 09
Delayed Branch Keefektifan pendekatan delayed branch tergantung pada seberapa sering pengaturan ulang instruksi dimungkinkan. Data eksperiment yang dikumpulkan dari banyak program mengindikasikan bahwa teknik kompilasi yang rumit dapat menggunakan satu branch delay slot pada maksimal 85 persen kasus. Untuk prosessor dengan dua branch delay slot, compiler mencoba menemukan dua instruksi sebelum instruksi branch yang dapat dipindahkannya ke delay slot tanpa menimbulkan eror logika. Group 4 PTIK 09
Prediksi Branch Jika keluaran branch random, maka setengah branch akan dilakukan. Jadi pendekatan sederhana dengan mengasumsikan bahwa branch branch tidak akan dilakukan akan menghemat 50 persen waktu yang dibuang untuk melakukan conditional branch. Akan tetapi, performa lebih baik dapat dicapai jika kita mengatur beberapa instruksi branch yang akan diprediksikan untuk dilakukan dan yang lain untuk tidak dilakukan, tergantung pada kelakuan program yang diharapkan. Group 4 PTIK 09
Prediksi Branch Dinamik Tujuan algoritma prediksi branch adalah untuk mengurangi kemungkinan membuat keputusan yang salah, untuk menghindari mengambil instruksi yang pada akhirnya harus dibuang. Dalam skema predisk branch, hardware prosessor memperkirakan kemiripan suatu branch yang dilakukan dengan mencatat keputusan branchsetiap kali instruksi tersebut dieksekusi. Group 4 PTIK 09
8.4 PENGARUH PADA SET INSTRUKSI Kita telah melihat bahwa beberapa instruksi lebih sesuai untuk eksekusi pipelined dari pada yang lain. Misalnya, efek samping instruksi dapat menyebabkan data dependency yang tidak diinginkan. Dalam bagian ini, kita menganalisis hubungan antara fitur eksekusi pipelined dan instruksi mesin. Kita membahas dua aspek utama instruksi mesin-mode pengalaman dan conditioan code flag. Group 4 PTIK 09
8.4.1 Mode Pengelamatan Mode pengelamatan sebaiknya menyediakan sarana untuk mengakses berbagai struktur data secara mudah dan efisien. Mode pengalamatan yang baik antara indeks , indirect, autoincrement, dan autodecrement. Banyak prosessor menyediakan berbagai kombinasimode tersebut untuk meningkatkan fleksibilitas set instruksinya. Mode pengelamatan complex, misalnya melibatkan double indexing, sering sekali ditemui. Group 4 PTIK 09
8.4.2 Condition Code Condition code flag disimpan dalam processor status register. Flag tersebut diset atau dikosongkan oleh banyak intruksi,sehingga dapat diuji oleh instruksi conditional branch yang berurutan untuk mengubah aliran eksekusi program. Cara pengamanan condition code. Pertama, untuk menyediakan fleksibilitas dalam penyusunan ulang intruksi, condition-code flag sebaiknya dipengaruhi oleh sesedikit mungkin intruksi. Kedua, compiler harus mampu menentukan bagian mana dari intruksi program yang dipengaruhi oleh condition code dan bagian mana yang tidak. Set intruksi yang didesain dengan pepeling biasanya menyediakan fleksibilitas yang diinginkan. Group 4 PTIK 09