Papeline

Embed Size (px)

DESCRIPTION

tentang pipeline

Citation preview

  • 1. PipelinePaper Organisasi KomputerKelompok 3 :1. Asep Wahyudi Zein ( 1111600084 )2. Dian Parikesit ( 1111600092 )3. Hasto Gesang W ( 1111600100 )Magister Komputer - Universitas Budi Luhur2011

2. DAFTAR ISI1. Pengertian Pipeline..........................................................................................22. Instruksi Pipeline ............................................................................................43. Permasalahan di (dalam) Instruksi Pipelining ...............................................114. Implementasi Pipeline ...................................................................................175. Beberapa Solusi Pipeline ...............................................................................226. Keuntungan dan kerugian pipeline ................................................................327. Daftar Pustaka ...............................................................................................34Pipeline ComputerPage 2 3. 1. Pengertian PipelinePipeliningPipeline adalah suatu cara yang digunakan untuk melakukan sejumlah kerja secara bersamatetapi dalam tahap yang berbeda yang dialirkan secara kontinu pada unit pemrosesan. Dengancara ini, maka unit pemrosesan selalu bekerja.Teknik pipeline ini dapat diterapkan pada berbagai tingkatan dalam sistemkomputer. Bisa padalevel yang tinggi, misalnya program aplikasi, sampai pada tingkat yang rendah, seperti padainstruksi yang dijaankan oleh microprocessor.Pada microprocessor yang tidak menggunakan pipeline, satu instruksi dilakukan sampai selesai,baru instruksi berikutnya dapat dilaksanakan. Sedangkan dalam mikroprocessor yangmenggunakan teknik pipeline, ketika satu instruksi sedangkan diproses, maka instruksi yangberikutnya juga dapat diproses dalam waktu yang bersamaan. Tetapi, instruksi yang diprosessecara bersamaan ini, ada dalam tahap proses yang berbeda. Jadi, ada sejumlah tahapan yangakan dilewati oleh sebuah instruksi.Dengan penerapan pipeline ini pada microprocessor akan didapatkan peningkatan dalam unjukkerja microprocessor. Hal ini terjadi karena beberapa instruksi dapat dilakukan secara paralleldalam waktu yang bersamaan. Secara kasarnya diharapkan akan didapatkan peningkatan sebesarX kali dibandingkan dengan microprocessor yang tidak menggunakan pipeline, apabila tahapanyang ada dalam satu kali pemrosesan instruksi adalah X tahap.Karena beberapa instruksi diproses secara bersamaan ada kemungkinan instruksi tersebut sama-samamemerlukan resource yang sama, sehingga diperlukan adanya pengaturan yang tepat agarproses tetap berjalan dengan benar. Sedangkan ketergantungan terhadap data, bisa muncul,misalnya instruksi yang berurutan memerlukan data dari instruksi yang sebelumnya. KasusJump, juga perlu perhatian, karena ketika sebuah instruksi meminta untuk melompat ke suatulokasi memori tertentu, akan terjadi perubahan program counter, sedangkan instruksi yangsedang berada dalam salah satu tahap proses yang berikutnya mungkin tidak mengharapkanterjadinya perubahan program counter.Teknik pipeline yang diterapkan pada microprocessor, dapat dikatakan sebuah arsitektur khusus.Ada perbedaan khusus antara model microprocessor yang tidak menggunakan arsitektur pipelinedengan microprocessor yang menerapkan teknik ini.Pada microprocessor yang tidak menggunakan pipeline, satu instruksi dilakukan sampai selesai,baru instruksi berikutnya dapat dilaksanakan. Sedangkan dalam microprocessoryangmenggunakan teknik pipeline, ketika satu instruksi sedangkan diproses, maka instruksi yangberikutnya juga dapat diproses dalam waktu yang bersamaan. Tetapi, instruksi yang diprosessecara bersamaan ini, ada dalam tahap proses yang berbeda.Pipeline ComputerPage 3 4. Jadi, ada sejumlah tahapan yang akan dilewati oleh sebuah instruksi.Misalnya sebuah microprocessor menyelesaikan sebuah instruksi dalam 4 langkah. Ketikainstruksi pertama masuk ke langkah 2, maka instruksi berikutnya diambil untuk diproses padalangkah 1 instruksi tersebut. Begitu seterusnya, ketika instruksi pertama masuk ke langkah 3,instruksi kedua masuk ke langkah 2 dan instruksi ketiga masuk ke langkah 1.2. Kenapa komputer menggunakan teknik Pipelining?? Drive for computing speed never ends. Improvements from architecture or organization point of view are limited Clock speed enhancement is done, but more improvement should be sought from instruction execution perspective, instead of hardware design Flyns Taxonomy : SISD (Single Instruction Single stream of Data), SIMD (Single Instruction Multiple stream of data) or MIMD Parallel Parallel Processor : may be a solution Use two processors (or more, instead of one) in a computer system How do it runs the code ? (program) Suppose, we have a problem :C = (A2+ B2)3. Intruksi pipelineTahapan pipeline Mengambil instruksi dan membuffferkannya Ketika tahapn kedua bebas tahapan pertama mengirimkan instruksi yang dibufferkantersebut Pada saat tahapan kedua sedang mengeksekusi instruksi, tahapan pertama memanfaatkansiklus memori yang tidak dipakai untuk mengambil dan membuffferkan instruksiberikutnya .Instuksi pipeline:Karena untuk setiap tahap pengerjaan instruksi, komponen yang bekerja berbeda, makadimungkinkan untuk mengisi kekosongan kerja di komponen tersebut. Sebagai contoh :Instruksi 1: ADD AX, AXInstruksi 2: ADD EX, CXSetelah CU menjemput instruksi 1 dari memori (IF), CU akan menerjemahkan instruksitersebut(ID). Pada menerjemahkan instruksi 1 tersebut, komponen IF tidak bekerja. Adanyateknologi pipeline menyebabkan IF akan menjemput instruksi 2 pada saat ID menerjemahkaninstruksi 1. Demikian seterusnya pada saat CU menjalankan instruksi 1 (EX), instruksi 2diterjemahkan (ID).Pipeline ComputerPage 4 5. Contoh pengerjaan instruksi tanpa pipelinet =ADD AX,AXADD BX,CX1 2 3 4 5 6 7 8 9 10IF DE IF DE EXIF DE IF DE EXDisini instruksi baru akan dijemput jika instruksi sebelumnya telah selesai dilaksanakan.t =ADD AX,AXADD BX,CXADD DX,DXpipeline1 2 3 4 5 6 7 8 9 10IF DE IF DE EXIF DE IF DE EXIF DE IF DE EXContohpengerjaaninstruksidenganDisini instruksi baru akan dipanggil setelah tahap IF menganggur (t2).Dengan adanya pipeline dua instruksi selesai dilaksanakan pada detik keenam (sedangkan padakasus tanpa pipeline baru selesai pada detik kesepuluh). Dengan demikian telah terjadipercepatan sebanyak 1,67x dari 10T menjadi hanya 6T. Sedangkan untuk pengerjaan 3 buahinstruksi terjadi percepatan sebanyak 2, 14 dari 15T menjadi hanya 7T.Untuk kasus pipeline sendiri, 2 instruksi dapat dikerjakan dalam 6T(CPI = 3) dan instruksi dapatdikerjakan dalam 7T (CPT = 2,3) dan untuk 4 instruksi dapat dikerjakan dalam 8T (CPI =2). Iniberarti utnuk 100 instruksi akan dapat dikerjakan dalam 104T (CPI = 1,04). Pada kondisi idealCPI akan harga 1.Dalam teknik pipeline, problem dibagi menjadi deretan yang harus dilaksanakan satu setelahlainnya. Setiap tugas nantinya akan dieksekusi oleh proses atau prosesor yang berbeda.Gambar 1 Proses pipelineGambar 2 Pipeline untuk penjumlahanPipeline ComputerPage 5 6. Filter frekuensi - Menghilangkan frekuensi tertentu ( katakan f0, f1, f2, f3, dst) signal, f(t). Signaldapat dilewati pipeline dari kiri.Gambar 3. Pipeline untuk filter frekuensiPipeline dapat meningkatkan kecepatan untuk problem yang sekuensial, dalam tiga tipekomputasi:1. Jika lebih dari satu instance dari problem yang akan dieksekusi2. Jika ada deretan item data yang harus diproses, masing-masing membutuhkan operasi ganda3. Jika informasi untuk memulai proses berikutnya dpt diberikan sebelum proses selesaimelaksanakan operasi internalnya.Diagram Ruang-Waktu Pipeline Tipe 1Gambar 4. Diagram ruang waktu pipelinePipeline ComputerPage 6 7. Gambar 5 Diagram Ruang-Waktu AlternatifDiagram Ruang-Waktu Pipeline Tipe 2Gambar 6 Pemrosesan pipeline 10 elemen dataPipeline ComputerPage 7 8. Diagram Ruang-Waktu Pipeline Tipe 3Gambar 7 Pemrosesan pipeline, informasi di-pass sebelum proses selesaiJika jumlah tahap lebih besar dari jumlah prosesor dalam pipeline, kelompok tahap dapatdiassign untuk tiap prosesor.Gambar 8 Partitioning processes onto processors.Pipeline ComputerPage 8 9. Platform Komputisai untuk Aplikasi Pipelinegambar 9 Sistem multiprosesor dengan konfigurasiContoh Program Penjumlahan AngkaGambar 10 Penjumlahan PipelineKode dasar untuk proses Pi :recv(&accumulation, P i-1 );accumulation = accumulation + number;send(&accumulation, P i+1 );Kecuali untuk proses pertama, P0 , yaitusend(&number, P 1 );Dan proses terakhir , Pn-1 , yaiturecv(&number, P n-2 );accumulation = accumulation + number;Pipeline ComputerPage 9 10. Program SPMDif (process > 0) {recv(&accumulation, P i-1 );accumulation = accumulation + number;}if (process < n-1) send(&accumulation, P i+1 );Hasil akhir ada di proses terakhir.Selain penjumlahan, operasi aritmatika lainnya dapat dilakukan juga.Gambar 11 Penjumlahan angka pipeline dengan proses master dan konfigurasi cincin.Gambar 12 Penjumlahan angka pipeline denganakses langsung ke proses slave.Pipeline ComputerPage 10 11. AnalisaContoh pertama adalah Tipe 1. Dengan asumsi bahwa tiap proses melakukan aksi serupa dalamtiap siklus pipeline. Kemudian akan dilakukan komputasi dan komunikasi yang dibutuhkandalam siklus pipelineWaktu total eksekusit total = (waktu untuk satu siklus pipeline)(jumlah siklus)t total = (t comp + t comm )(m + p - 1)Dimana ada m instances problem dan p tahap pipeline (proses)Waktu rata-rata untuk komputasi diberikan oleh:t a = t total /m4. Permasalahan di (dalam) Instruksi Pipelining VARIASI WAKTU:Tidak semua tahap memakan waktu yang sama. Ini berarti untuk mendapatkan kecepatan dalamintruksi pipelining sangat ditentukan oleh tahap yang paling lambat. Masalah ini sangat akutdalam memproses instruksi, sejak instruksi yang berbeda memiliki persyaratanoperand waktu proses yang berbeda. Selain itu, diperlukan mekanisme sinkronisasi untukmemastikan bahwa data lewat dari stage ke stage hanya ketika kedua stage siap. DATA BERBAHAYA (DATA HAZARDS):Ketika beberapa instruksi di eksekusi secara parsial, masalah timbul jika mereka referensi datayang sama. Kita harus memastikan bahwa instruksi selanjutnya tidak berusaha untuk mengaksesdata lebih cepat dari instruksi sebelumnya, jika ini terjadi akan menyebabkan hasil yang salah.Sebagai contoh, instruksi N +1 tidak harus diperbolehkan untuk mengambil sebuah operand yangbelum disimpan oleh instruksi N. PERCABANGAN (BRANCH):untuk mengambil instruksi berikutnya, kita harus tahu mana saja yang dibutuhkan, Jika instruksiini adalah cabang bersyarat (conditional branch) instruksi berikutnya mungkin tidak diketahuisampai saat diproses. JEDA(INTERUPTSI):Pipeline ComputerPage 11 12. interupsi membuat instruksi extra yang tidak terencana untuk masuk kedalam aliran intruksi.jeda(Interrupt) harus berperan antar instruksi. yaitu, ketika satu instruksi telah selesai danberikutnya belum dimulai. Dengan pipelining, instruksi berikutnya biasanya dimulai sebelumyang sekarang telah selesai.Semua masalah ini harus diselesaikan dalam konteks kebutuhan kita untuk mendaatkan kinerjadengan kecepatan tinggi. Jika kita tidak dapat mencapai kecepatan yang cukup, pipeliningmungkin tidak sepadan.Instance Tunggal Problemt comp = 1t comm = 2(t startup + t data )t total = (2(t startup + t data ) + 1)nKompleksitas waktu = O(n).Instances Ganda Problemt total = (2(t startup + t data ) + 1)(m + n - 1)t a = t total /m 2(t startup + t data ) + 1Yaitu, satu siklus pipeline.Mem-partisi Data dengan Instances Gande Problemt comp = dt comm = 2(t startup + t data )t total = (2(t startup + t data ) + d)(m + n/d - 1)Dengan menaikkan d, partisi data, pengaruh komunikasi dihilangkan. Akan tetapi naiknya partisidata menurunkan paralelisme dan terkadang menaikkan waktu eksekusi.Pipeline ComputerPage 12 13. Mengurutkan AngkaVersi paralel dari insertion sort. (versi sekuensialnya adalah menempatka kartu yang dimainkanberurut dgn memindahkan kartu untuk menyisipkannya dalam posisi-nya).Gambar 13 Langkah dalam insertion sort dengan lima angkaAlgortima dasar untuk proses Pi adalahrecv(&number, P i-1 );if (number > x) {send(&x, P i+1 );x = number;} else send(&number, P i+1 );Dengan n angka, berapa banyak proses ke yang akan diterima diketahui, diberikan oleh n - i.Berapa banyak yang di pass kedepan juga diketahui; diberikan oleh n - i - 1 karena satu darijumlah yang diterima tidak di pass kedepan. Maka loop sederhana dapat digunakan.Pipeline ComputerPage 13 14. Gambar 14 Pipeline untuk sorting menggunakan insertion sort.Gambar 15 Insertion sort dengan hasil kembali ke proses master m,enggunakan konfigurasi barisdua arahDengan mengembalikan hasilnya, proses i dapat ditulis dalam bentukright_procno = n - i - 1; /*no of processes to the right */recv(&x, P i-1 );for (j = 0; j < right_procno; j++) {recv(&number, P i-1 );if (number > x) {send(&x, P i+1 );x = number;} else send(&number, P i+1 );}send(&number, P i-1 ); /* send number held */for (j = 0; j < right_procno; j++) {/*pass on other nos */recv(&x, P i+1 );send(&x, P i-1 );}Pipeline ComputerPage 14 15. SekuensialJelas merupakan algoritma sorting yang buruk dan tidak cocok kecuali untuk jumlah n yangsangat kecilts = (n - 1) + (n - 2) + + 2 + 1 = n (n + 1) / 2ParalelSetiap siklus pipeline membutuhkan paling tidakt comp = 1t comm = 2(t startup + t data )Waktu eksekusi total, t total , diberikan oleht total = (t comp + t comm )(2n - 1) = (1 + 2(t startup + t data ))(2n - 1)Gambar 16 Insertion sort dengan hasil dikembalikanPembangkit Bilangan PrimaDeretan integer dibangkitkan dari 2 Bilangan pertama, 2 adalah prima dan disimpan. Seluruhkelipatan bilangan ini dihilangkan karena bukan merupakan bilangan prima. Proses dilakukansecara berulang untuk bilangan berikutnya. Algoritma membuang nonprima, dan menginggalkanhanya bilangan prima.Pipeline ComputerPage 15 16. Kode SekuensialUmumnya menggunakan array dengan nilai awal 1 (TRUE) dan diset 0 (FALSE) jika indekselemen bukan bilangan prima.Dengan menyatakan angka terakhir adalah n maka dapat ditulis:for (i = 2; i < n; i++)prime[i] = 1; /* Initialize array */for (i = 2; i