pipeline kelompok 3

Upload: balqissahirah

Post on 20-Jul-2015

1.077 views

Category:

Documents


5 download

TRANSCRIPT

PipelinePaper Organisasi Komputer

Kelompok 3 : 1. Asep Wahyudi Zein ( 1111600084 ) 2. Dian Parikesit ( 1111600092 ) 3. Hasto Gesang W ( 1111600100 )

Magister Komputer - Universitas Budi Luhur 2011

DAFTAR ISI1. 2. 3. 4. 5. 6. 7. Pengertian Pipeline..........................................................................................2 Instruksi Pipeline ............................................................................................4 Permasalahan di (dalam) Instruksi Pipelining ...............................................11 Implementasi Pipeline ...................................................................................17 Beberapa Solusi Pipeline ...............................................................................22 Keuntungan dan kerugian pipeline ................................................................32 Daftar Pustaka ...............................................................................................34

Pipeline Computer

Page 2

Pipelining1. Pengertian Pipeline Pipeline adalah suatu cara yang digunakan untuk melakukan sejumlah kerja secara bersama tetapi dalam tahap yang berbeda yang dialirkan secara kontinu pada unit pemrosesan. Dengan cara ini, maka unit pemrosesan selalu bekerja. Teknik pipeline ini dapat diterapkan pada berbagai tingkatan dalam sistemkomputer. Bisa pada level yang tinggi, misalnya program aplikasi, sampai pada tingkat yang rendah, seperti pada instruksi yang dijaankan oleh microprocessor. Pada microprocessor yang tidak menggunakan pipeline, satu instruksi dilakukan sampai selesai, baru instruksi berikutnya dapat dilaksanakan. Sedangkan dalam mikroprocessor yang menggunakan teknik pipeline, ketika satu instruksi sedangkan diproses, maka instruksi yang berikutnya juga dapat diproses dalam waktu yang bersamaan. Tetapi, instruksi yang diproses secara bersamaan ini, ada dalam tahap proses yang berbeda. Jadi, ada sejumlah tahapan yang akan dilewati oleh sebuah instruksi. Dengan penerapan pipeline ini pada microprocessor akan didapatkan peningkatan dalam unjuk kerja microprocessor. Hal ini terjadi karena beberapa instruksi dapat dilakukan secara parallel dalam waktu yang bersamaan. Secara kasarnya diharapkan akan didapatkan peningkatan sebesar X kali dibandingkan dengan microprocessor yang tidak menggunakan pipeline, apabila tahapan yang ada dalam satu kali pemrosesan instruksi adalah X tahap. Karena beberapa instruksi diproses secara bersamaan ada kemungkinan instruksi tersebut samasama memerlukan resource yang sama, sehingga diperlukan adanya pengaturan yang tepat agar proses tetap berjalan dengan benar. Sedangkan ketergantungan terhadap data, bisa muncul, misalnya instruksi yang berurutan memerlukan data dari instruksi yang sebelumnya. Kasus Jump, juga perlu perhatian, karena ketika sebuah instruksi meminta untuk melompat ke suatu lokasi memori tertentu, akan terjadi perubahan program counter, sedangkan instruksi yang sedang berada dalam salah satu tahap proses yang berikutnya mungkin tidak mengharapkan terjadinya perubahan program counter. Teknik pipeline yang diterapkan pada microprocessor, dapat dikatakan sebuah arsitektur khusus. Ada perbedaan khusus antara model microprocessor yang tidak menggunakan arsitektur pipeline dengan microprocessor yang menerapkan teknik ini. Pada microprocessor yang tidak menggunakan pipeline, satu instruksi dilakukan sampai selesai, baru instruksi berikutnya dapat dilaksanakan. Sedangkan dalam microprocessoryang menggunakan teknik pipeline, ketika satu instruksi sedangkan diproses, maka instruksi yang berikutnya juga dapat diproses dalam waktu yang bersamaan. Tetapi, instruksi yang diproses secara bersamaan ini, ada dalam tahap proses yang berbeda.Pipeline Computer Page 3

Jadi, ada sejumlah tahapan yang akan dilewati oleh sebuah instruksi. Misalnya sebuah microprocessor menyelesaikan sebuah instruksi dalam 4 langkah. Ketika instruksi pertama masuk ke langkah 2, maka instruksi berikutnya diambil untuk diproses pada langkah 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 pipeline Tahapan pipeline

Mengambil instruksi dan membuffferkannya Ketika tahapn kedua bebas tahapan pertama mengirimkan instruksi yang dibufferkan tersebut Pada saat tahapan kedua sedang mengeksekusi instruksi, tahapan pertama memanfaatkan siklus memori yang tidak dipakai untuk mengambil dan membuffferkan instruksi berikutnya .

Instuksi pipeline: Karena untuk setiap tahap pengerjaan instruksi, komponen yang bekerja berbeda, maka dimungkinkan untuk mengisi kekosongan kerja di komponen tersebut. Sebagai contoh : Instruksi 1: ADD AX, AX Instruksi 2: ADD EX, CX Setelah CU menjemput instruksi 1 dari memori (IF), CU akan menerjemahkan instruksi tersebut(ID). Pada menerjemahkan instruksi 1 tersebut, komponen IF tidak bekerja. Adanya teknologi pipeline menyebabkan IF akan menjemput instruksi 2 pada saat ID menerjemahkan instruksi 1. Demikian seterusnya pada saat CU menjalankan instruksi 1 (EX), instruksi 2 diterjemahkan (ID).Pipeline Computer Page 4

Contoh pengerjaan instruksi tanpa pipeline t= ADD AX,AX ADD BX,CX 1 IF 2 DE 3 IF 4 DE 5 EX 6 IF 7 DE 8 IF 9 DE 10 EX

Disini instruksi baru akan dijemput jika instruksi sebelumnya telah selesai dilaksanakan. t= ADD AX,AX ADD BX,CX ADD DX,DX pipeline 1 IF 2 DE IF 3 IF DE IF 4 DE IF DE 5 EX DE IF 6 EX DE 7 8 9 10 Contoh pengerjaan instruksi dengan

EX

Disini instruksi baru akan dipanggil setelah tahap IF menganggur (t2). Dengan adanya pipeline dua instruksi selesai dilaksanakan pada detik keenam (sedangkan pada kasus tanpa pipeline baru selesai pada detik kesepuluh). Dengan demikian telah terjadi percepatan sebanyak 1,67x dari 10T menjadi hanya 6T. Sedangkan untuk pengerjaan 3 buah instruksi terjadi percepatan sebanyak 2, 14 dari 15T menjadi hanya 7T. Untuk kasus pipeline sendiri, 2 instruksi dapat dikerjakan dalam 6T(CPI = 3) dan instruksi dapat dikerjakan dalam 7T (CPT = 2,3) dan untuk 4 instruksi dapat dikerjakan dalam 8T (CPI =2). Ini berarti utnuk 100 instruksi akan dapat dikerjakan dalam 104T (CPI = 1,04). Pada kondisi ideal CPI akan harga 1. Dalam teknik pipeline, problem dibagi menjadi deretan yang harus dilaksanakan satu setelah lainnya. Setiap tugas nantinya akan dieksekusi oleh proses atau prosesor yang berbeda.

Gambar 1 Proses pipeline

Gambar 2 Pipeline untuk penjumlahanPipeline Computer Page 5

Filter frekuensi - Menghilangkan frekuensi tertentu ( katakan f0, f1, f2, f3, dst) signal, f(t). Signal dapat dilewati pipeline dari kiri.

Gambar 3. Pipeline untuk filter frekuensi Pipeline dapat meningkatkan kecepatan untuk problem yang sekuensial, dalam tiga tipe komputasi: 1. Jika lebih dari satu instance dari problem yang akan dieksekusi 2. Jika ada deretan item data yang harus diproses, masing-masing membutuhkan operasi ganda 3. Jika informasi untuk memulai proses berikutnya dpt diberikan sebelum proses selesai melaksanakan operasi internalnya. Diagram Ruang-Waktu Pipeline Tipe 1

Gambar 4. Diagram ruang waktu pipelinePipeline Computer Page 6

Gambar 5 Diagram Ruang-Waktu Alternatif Diagram Ruang-Waktu Pipeline Tipe 2

Gambar 6 Pemrosesan pipeline 10 elemen dataPipeline Computer Page 7

Diagram Ruang-Waktu Pipeline Tipe 3

Gambar 7 Pemrosesan pipeline, informasi di-pass sebelum proses selesai Jika jumlah tahap lebih besar dari jumlah prosesor dalam pipeline, kelompok tahap dapat diassign untuk tiap prosesor.

Gambar 8 Partitioning processes onto processors.

Pipeline Computer

Page 8

Platform Komputisai untuk Aplikasi Pipeline

gambar 9 Sistem multiprosesor dengan konfigurasi Contoh Program Penjumlahan Angka

Gambar 10 Penjumlahan Pipeline Kode dasar untuk proses Pi : recv(&accumulation, P i-1 ); accumulation = accumulation + number; send(&accumulation, P i+1 ); Kecuali untuk proses pertama, P0 , yaitu send(&number, P 1 ); Dan proses terakhir , Pn-1 , yaitu recv(&number, P n-2 ); accumulation = accumulation + number;

Pipeline Computer

Page 9

Program SPMD if (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 Computer

Page 10

Analisa Contoh pertama adalah Tipe 1. Dengan asumsi bahwa tiap proses melakukan aksi serupa dalam tiap siklus pipeline. Kemudian akan dilakukan komputasi dan komunikasi yang dibutuhkan dalam siklus pipeline Waktu total eksekusi t 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 /m 4. Permasalahan di (dalam) Instruksi Pipelining

VARIASI WAKTU:

Tidak semua tahap memakan waktu yang sama. Ini berarti untuk mendapatkan kecepatan dalam intruksi pipelining sangat ditentukan oleh tahap yang paling lambat. Masalah ini sangat akut dalam memproses instruksi, sejak instruksi yang berbeda memiliki persyaratan operand waktu proses yang berbeda. Selain itu, diperlukan mekanisme sinkronisasi untuk memastikan 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 data yang sama. Kita harus memastikan bahwa instruksi selanjutnya tidak berusaha untuk mengakses data 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 yang belum disimpan oleh instruksi N.

PERCABANGAN (BRANCH):

untuk mengambil instruksi berikutnya, kita harus tahu mana saja yang dibutuhkan, Jika instruksi ini adalah cabang bersyarat (conditional branch) instruksi berikutnya mungkin tidak diketahui sampai saat diproses.

JEDA(INTERUPTSI):

Pipeline Computer

Page 11

interupsi membuat instruksi extra yang tidak terencana untuk masuk kedalam aliran intruksi. jeda(Interrupt) harus berperan antar instruksi. yaitu, ketika satu instruksi telah selesai dan berikutnya belum dimulai. Dengan pipelining, instruksi berikutnya biasanya dimulai sebelum yang sekarang telah selesai. Semua masalah ini harus diselesaikan dalam konteks kebutuhan kita untuk mendaatkan kinerja dengan kecepatan tinggi. Jika kita tidak dapat mencapai kecepatan yang cukup, pipelining mungkin tidak sepadan. Instance Tunggal Problem t comp = 1 t comm = 2(t startup + t data ) t total = (2(t startup + t data ) + 1)n Kompleksitas waktu = O(n).

Instances Ganda Problem t total = (2(t startup + t data ) + 1)(m + n - 1) t a = t total /m 2(t startup + t data ) + 1 Yaitu, satu siklus pipeline.

Mem-partisi Data dengan Instances Gande Problem t comp = d t 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 partisi data menurunkan paralelisme dan terkadang menaikkan waktu eksekusi.

Pipeline Computer

Page 12

Mengurutkan Angka Versi paralel dari insertion sort. (versi sekuensialnya adalah menempatka kartu yang dimainkan berurut dgn memindahkan kartu untuk menyisipkannya dalam posisi-nya).

Gambar 13 Langkah dalam insertion sort dengan lima angka Algortima dasar untuk proses Pi adalah recv(&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 dari jumlah yang diterima tidak di pass kedepan. Maka loop sederhana dapat digunakan.

Pipeline Computer

Page 13

Gambar 14 Pipeline untuk sorting menggunakan insertion sort.

Gambar 15 Insertion sort dengan hasil kembali ke proses master m,enggunakan konfigurasi baris dua arah Dengan 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 Computer

Page 14

Sekuensial Jelas merupakan algoritma sorting yang buruk dan tidak cocok kecuali untuk jumlah n yang sangat kecil ts = (n - 1) + (n - 2) + + 2 + 1 = n (n + 1) / 2 Paralel Setiap siklus pipeline membutuhkan paling tidak t comp = 1 t comm = 2(t startup + t data ) Waktu eksekusi total, t total , diberikan oleh t total = (t comp + t comm )(2n - 1) = (1 + 2(t startup + t data ))(2n - 1)

Gambar 16 Insertion sort dengan hasil dikembalikan

Pembangkit Bilangan Prima Deretan integer dibangkitkan dari 2 Bilangan pertama, 2 adalah prima dan disimpan. Seluruh kelipatan bilangan ini dihilangkan karena bukan merupakan bilangan prima. Proses dilakukan secara berulang untuk bilangan berikutnya. Algoritma membuang nonprima, dan menginggalkan hanya bilangan prima.

Pipeline Computer

Page 15

Kode Sekuensial Umumnya menggunakan array dengan nilai awal 1 (TRUE) dan diset 0 (FALSE) jika indeks elemen 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