SlideShare a Scribd company logo
1 of 34
Pipeline 
Paper 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 ISI 
1. Pengertian Pipeline..........................................................................................2 
2. Instruksi Pipeline ............................................................................................4 
3. Permasalahan di (dalam) Instruksi Pipelining ...............................................11 
4. Implementasi Pipeline ...................................................................................17 
5. Beberapa Solusi Pipeline ...............................................................................22 
6. Keuntungan dan kerugian pipeline ................................................................32 
7. Daftar Pustaka ...............................................................................................34 
Pipeline Computer 
Page 2
1. Pengertian Pipeline 
Pipelining 
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 sama-sama 
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 
 Flyn’s 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 2 3 4 5 6 7 8 9 10 
IF DE IF DE EX 
IF DE IF DE EX 
Disini instruksi baru akan dijemput jika instruksi sebelumnya telah selesai dilaksanakan. 
t = 
ADD AX,AX 
ADD BX,CX 
ADD DX,DX 
pipeline 
1 2 3 4 5 6 7 8 9 10 
IF DE IF DE EX 
IF DE IF DE EX 
IF DE IF DE EX 
Contoh 
pengerjaan 
instruksi 
dengan 
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 penjumlahan 
Pipeline 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 pipeline 
Pipeline Computer 
Page 6
Gambar 5 Diagram Ruang-Waktu Alternatif 
Diagram Ruang-Waktu Pipeline Tipe 2 
Gambar 6 Pemrosesan pipeline 10 elemen data 
Pipeline 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 bentuk 
right_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 <= sqrt_n; i++)/* for each number */ 
if (prime[i] == 1) /* identified as prime */ 
for (j = i + i; j < n; j = j + i)/*strike multiples */ 
prime[j] = 0; /* includes already done */ 
Loop sederhana mengakses array untuk mencari bilangan prima. 
Kode Sekuensial Waktu Sekuensial 
Jumlah iterasi sangat tergantung dari bilangan prima tersebut. Ada [n/2-1] kelipatan dua, [n/3-1] 
kelipatan tiga, dan seterusnya. Sehingga total waktu sekuensial yang dibutuhkan: 
Dengan asumsi komputasi pada tiap iterasi sam dengan satu langkah komputasional. 
Kompleksitas waktu sekuensial adalah O(n2 ). 
Implementasi Pipeline 
Gambar 5.17 Pipeline untuk bilangan prima 
Pipeline Computer 
Page 16
Kode untuk proses, Pi , berdasarkan atas 
recv(&x, P i-1 ); 
/* repeat following for each number */ 
recv(&number, P i-1 ); 
if ((number % x) != 0) send(&number, P i+1 ); 
Setiap proses tidak akan menerima jumlah angka yang sama dan tidak diketahui sebelumnya. 
Menggunakan message “terminator, yang dikirim pada akhir urutan. 
recv(&x, P i-1 ); 
for (i = 0; i < n; i++) { 
recv(&number, P i-1 ); 
if (number == terminator) break; 
if (number % x) != 0) send(&number, P i+1 ); 
} 
Menyelesaikan Sistem Persamaan Linier Kasus Khusus 
Contoh tipe 3 – proses dapat melanjutkan pekerjaan lain setelah mem-passing informasi 
Untuk menyelesaikan persamaan linier dalam bentuk upper triangular: 
Dimana a dan b adalah konstanta dan x adalah yang akan dicari 
Pipeline Computer 
Page 17
Subtitusi Balik 
Pertama, x0 dapat dilihat dari persamaan terakhir 
Nilai untuk x0 disubtitusi ke persamaan berikutnya untuk mendapatkan x1 
Nilai x0 dan x1 disubtitusi ke persamaan berikutnya untuk mendapatkan x2: 
Begitu seterusnya sampai seluruhnya diketahui 
Pipeline Computer 
Page 18
Pipeline Computer 
Page 19
Pipeline Computer 
Page 20
Pipeline Computer 
Page 21
Pipeline Computer 
Page 22
Pipeline Computer 
Page 23
Pipeline Computer 
Page 24
Pipeline Computer 
Page 25
Pipeline Computer 
Page 26
Pipeline Computer 
Page 27
5. Beberapa Solusi 
Strategi pemecahan masalah diatas adalah sebagai berikut : 
 VARIASI PEMILIHAN WAKTU (TIMING VARIATIONS) 
Untuk memaksimalkan kecepatan, untuk menyeragam, tahap pertama yang harus dilakukan 
adalah mekanisme waktu yang diperlukan. Sebuah metode sinkron dapat digunakan,jika tahapan 
telah dianggap lengkap dari sejumlah tertentu siklus waktu. Namun, teknik asynchronous secara 
umum lebih efisien. Bit atau garis sinyal dilewatkan maju ke tahap berikutnya menunjukkan data 
Pipeline Computer 
Page 28
sudah valid. Sebuah sinyal juga harus lulus kembali dari tahap berikutnya ketika data telah 
diterima. 
Dalam semua kasus harus ada sebuah penyangga antar tahap untuk menyimpan data, kadang-kadang 
penyangga ini diperluas ke memori yang dapat menyimpan beberapa item data. Setiap 
tahap harus berhati-hati untuk tidak menerima input data sampai berlaku, dan tidak untuk 
menghasilkan data output sampai ada ruang dalam penyangga (buffer). 
 DATA BERBAHAYA (DATA HAZARDS) 
Untuk melindungi dari data yang berbahaya, perlu untuk menyadari setiap tahap yang digunakan 
oleh tahap pipelining yang lebih jauh . Jenis penggunaan juga harus diketahui, dua pembacaan 
yang terurut tidak boleh bertentangan dan tidak boleh menyebabkan perlambatan pada pipeline. 
Namun akan ada kemungkinan konflik jika terjadi penulisan. 
Pipeline biasanya dilengkapi dengan small associative check memory yang dapat menyimpan 
alamat dan jenis operasi (read atau write) untuk setiap instruksi yang ada di pipeline. Konsep 
“alamat(address)” harus diperluas untuk mengidentifikasi register. Setiap instruksi hanya dapat 
mempengaruhi sejumlah kecil dari operand, tapi efek yang tidak langsung addressing tidak 
boleh diabaikan. 
Ketika instruksi bersiap memasuki pipa, alamat operan telah disimpan.Jika ada konflik, instruksi 
(dan yang di belakangnya) harus menunggu. Ketika ada konflik, instruksi memasuki pipa dan 
alamat operan disimpan dalam memori cek. Ketika instruksi selesai, alamat ini akan dihapus. 
memori harus bisa untuk menangani proses pencarian berkecepatan tinggi yangdiperlukan. 
 PERCABANGAN (BRANCHING) 
Masalah dalam percabangan adalah pipelining diperlambat oleh instruksi karena kita tidak tahu 
cabang yang mana yang harus kita ikuti. Dengan tidak adanya bantuan spesial dalam masalah 
ini, perlu menunda pemrosesan instruksi selanjutnya sampai tujuan percabangan diselesaikan. 
Karena cabang sangat sering, penundaan ini bersifat tidak dapat diterima. 
Salah satu solusi yang banyak digunakan, terutama di RISC, adalah menunda percabangan. 
Dalam metode ini, rangkaian instruksi ini dirangkai sedemikian rupa, sehingga setelah 
suatuinstruksi, instruksi berikutnya bisa selalu di ekskusi, dan kemudian cabang di hapus. 
Dengan begitu tiap-tiap cabang harus diikuti oleh satu instruksi yang secara logika 
mendahuluinya dan diharapkan untuk dieksekusi dalam semua kasus. Hal ini akan memberikan 
ruang bernafas (istirahat) bagi pipeline. Jika perlu, instruksi ini bisa merupakan suatu no-op, tapi, 
seringnya penggunaan no-op akan merusak fungsi kecepatan. 
Penggunaan teknik ini memerlukan metode pengkodean yang membingungkan bagi progammer, 
tetapi tidak terlalu sulit bagi generator kode compiler. 
Pipeline Computer 
Page 29
Kebanyakan teknik lain menggunakan ekskusi spekulatif, di mana instruksi yang diproses yang 
tidak dikenal dengan pasti, dianggap sebagai benar. Hal ini harus dihindari, harus dibuang dan 
tidak di simpan. 
Solusi yang biasa digunakan adalah dengan mengikuti cabang yang jelas, yaitu instruksi 
sekuensial berikutnya, berhati-hati untuk tidak melakukan tindakan yang tidak bisa dirubah. 
Operan mungkin diambil dan di proses, tetapi tidak akan ada hasil sampai cabang di 
terjemahkan. Jika pilihan itu salah, dapat di tinggalkan dan cabang alternatif dapat di proses. 
Metode ini bekerja dengan cukup baik jika cabang jelas dan benar. Ketika coding menggunakan 
pipelined CPU, perawatan harus dilakukan untuk kode cabang (terutama transfer error) sehingga 
jalur luruslah yang biasanya diambil. Tentu saja, bercabang yang tidak di perlukan harus 
dihindari. 
Kemungkinan lain adalah untuk menyusun kembali program sehingga cabang ada lebih sedikit, 
misalnya dengan tidak mengikuti jenis loop tertentu. Ini dapat dilakukan dengan 
mengoptimalkan kompiler atau, dalam beberapa kasus, dengan perangkat keras itu sendiri. 
Sebuah strategi yang pada umumya di gunakan oleh banyak arsitektur saat ini beberapa jenis 
prediksi cabang. Hal ini mungkin berdasarkan informasi yang diberikan oleh kompilator atau 
pada statistik yang dikumpulkan oleh perangkat keras. Tujuaannya adalah membuat perkiraan 
terbaik apakah cabang tertentu akan diambil atau tidak, dan menggunakan perkiraan ini untuk 
melanjutkan pipelining. 
Solusi yang membutuhkan harga yang lebih, kadang-kadang digunakan untuk memisahkan 
pipeline dan memulai memproses kedua cabang. Gagasan ini mendapat perhatian baru dalam 
beberapa prosesor terbaru. 
Solusi Pipeline 
Gambar 5.18 Menyelesaikan set persamaan linier upper triangular menggunakan pipeline. 
Pipeline tahap pertama menghitung x0 dan di pass ke tahap kedua, yang menghitung x1 dari x0 
dan mem-pass kedua x0 dan x1 ke tahap berikutnya, untuk menghitung x2 from x0 and x1 , dan 
seterusnya. 
Pipeline Computer 
Page 30
Proses ke i (0 < i < n) menerima nilai x0 , x1 , x2 , …, xI-1 dan menghitung xidari persamaan : 
Kode Sekuensial 
Konstanta a i,j dan b k disimpan dalam array a[] dan b[], dan nilai untuk yang dicari disimpan 
dalam array, x[], kode sekuensialnya: 
x[0] = b[0]/a[0][0]; /* x[0] computed separately */ 
for (i = 1; i < n; i++) { /* for remaining unknowns */ 
sum = 0; 
for (j = 0; j < i; j++ 
sum = sum + a[i][j]*x[j]; 
x[i] = (b[i] - sum)/a[i][i]; 
} 
Kode Paralel 
Pseudocode proses P i (1 < i < n) dari satu versi pipeline adalah: 
for (j = 0; j < i; j++) { 
recv(&x[j], P i-1 ); 
send(&x[j], P i+1 ); 
} 
sum = 0; 
for (j = 0; j < i; j++) 
sum = sum + a[i][j]*x[j]; 
x[i] = (b[i] - sum)/a[i][i]; 
send(&x[i], P i+1 ); 
Ada komputasi tambahan yang dilakukan setelah menerima dan mengirim ulang nilai. 
Pipeline Computer 
Page 31
Analisa 
Gambar 5.19 Pemrosesan Pipeline menggunakan Subtitusi Balik. 
Tidak dapat diasumsikan usaha komputasional tiap tahap sama 
Proses pertama, P0 , melakukan satu pembagian dan satu send(). 
Proses ke i (0 < i < n - 1) melakukan i recv()s, i send()s, i 
perkalian/penjumlahan, satu 
pembagian/pengurangan,dan akhirnya send(), total 2i + 1 waktu komunikasi dan 2i + 2 langkah 
komputasional diasumsikan bahwa, perkalian, penjumlahan, pembagian dan pengurangan tiap 
satu langkah. 
Proses terakhir, Pn-1 , melakukan n - 1 recv()s, n - 1 perkalian/penjumlahan dan satu 
pembagian/pengurangan, total n - 1 waktu komunikasi dan 2n - 1 langkah komputasional 
6. Keuntungan dan Kerugian 
Pipelining tidak membantu dalam semua kasus. Ada beberapa kemungkinan kerugian. Pipa 
instruksi dikatakan sepenuhnya pipelined jika dapat menerima instruksi baru setiap clock cycle. 
Sebuah pipa yang tidak sepenuhnya pipelined telah menunggu siklus yang menunda kemajuan 
pipa. 
Keuntungan dari Pipelining: 
1. Waktu siklus prosesor berkurang, sehingga meningkatkan tingkat instruksi dalam 
kebanyakan kasus( lebih cepat selesai). 
2. Beberapa combinational sirkuit seperti penambah atau pengganda dapat dibuat lebih 
cepat dengan menambahkan lebih banyak sirkuit. Jika pipelining digunakan sebagai 
pengganti, hal itu dapat menghemat sirkuit & combinational yang lebih kompleks. 
Pipeline Computer 
Page 32
3. Pemrosesan dapat dilakukan lebih cepat, dikarenakan beberapa proses dilakukan secara 
bersamaan dalam satu waktu. 
Kekurangan Pipelining: 
1. Pipelined prosesor menjalankan beberapa instruksi pada satu waktu. Jika ada beberapa 
cabang yang mengalami penundaan cabang (penundaan memproses data) dan akibatnya 
proses yang dilakukan cenderung lebih lama. 
2. Instruksi latency di non-pipelined prosesor sedikit lebih rendah daripada dalam pipelined 
setara. Hal ini disebabkan oleh fakta bahwa intruksi ekstra harus ditambahkan ke jalur 
data dari prosesor pipeline. 
3. Kinerja prosesor di pipeline jauh lebih sulit untuk meramalkan dan dapat bervariasi lebih 
luas di antara program yang berbeda. 
4. Karena beberapa instruksi diproses secara bersamaan ada kemungkinan instruksi tersebut 
sama-sama memerlukan resource yang sama, sehingga diperlukan adanya pengaturan 
yang tepat agar proses tetap berjalan dengan benar. 
5. Sedangkan ketergantungan terhadap data, bisa muncul, misalnya instruksi yang berurutan 
memerlukan data dari instruksi yang sebelumnya. 
6. 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. 
7. Kesulitan dalam Pipeline 
Untuk menerapkan prinsip multi-stage atau mulai saat ini kita namakan pipelining di prosesor, 
diperlukan organisasi prosesor khusus. Pada dasarnya, prosesor dipartisi menjadi sejumlah unit-unit 
kecil dengan fungsi spesifik. Setiap unit berperan untuk menyelesaikan sebagian dari 
instruksi-intruksi berikut : 
Instruction fetch, decode, operand address calculation, operand fetch, execute dan store result. 
Dalam proses di atas terkadang sering terjadi kendala/ konflik seperti: 
 Terjadinya pause (Pi), karena adanya data conflict dalam program tersebut 
 Terjadinya data error dikarenakan banyaknya proses yang dilakukan bersamaan 
 Terjadinya pengambilan data secara bersamaan, sehingga salah satu proses tertunda 
 Terjadinya penumpukan data di salah satu intruksi sehingga ada beberapa proses yg di 
tunda 
 Dengan terjadinya conflict tadi, speed-up yang diperoleh menjadi lebih kecil (lambat) 
dibandingkan dengan tanpa konflik. 
Pipeline Computer 
Page 33
Daftar Pustaka 
Stalling William, 2010 “Computer Organization and Architecture : Designing Fpr Performance “ 8th 
edition. Prentice Hall 
http://elearning.gunadarma.ac.id/docmodul/organisasi_sistem_komputer/bab9-komputer_pipeline.pdf 
Pipeline Computer 
Page 34

More Related Content

What's hot

Sistem Komputer Kelas 8
Sistem Komputer Kelas 8Sistem Komputer Kelas 8
Sistem Komputer Kelas 8Farichah Riha
 
Tik bab 4 - Sistem Komputer
Tik bab 4 - Sistem Komputer Tik bab 4 - Sistem Komputer
Tik bab 4 - Sistem Komputer RaelinaSalmahira
 
Hirarki memori
Hirarki memoriHirarki memori
Hirarki memorimmrifai
 
Pertemuan 11-aritmatika
Pertemuan 11-aritmatikaPertemuan 11-aritmatika
Pertemuan 11-aritmatikaFrance Rhezhek
 
aritmatika komputer
aritmatika komputeraritmatika komputer
aritmatika komputerdewi2093
 
Mode Pengalamatan & Permasalahan Desain Pengalamatan
Mode Pengalamatan & Permasalahan Desain PengalamatanMode Pengalamatan & Permasalahan Desain Pengalamatan
Mode Pengalamatan & Permasalahan Desain Pengalamatanlailalutfi
 
Makalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
Makalah Peranan Semaphore Sistem Operasi - Universitas WidyatamaMakalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
Makalah Peranan Semaphore Sistem Operasi - Universitas WidyatamaDEDE IRYAWAN
 
Ch 04 (Siklus Instruksi dan Interrupt)
Ch 04 (Siklus Instruksi dan Interrupt)Ch 04 (Siklus Instruksi dan Interrupt)
Ch 04 (Siklus Instruksi dan Interrupt)Tri Sugihartono
 
Local Area Network
Local Area NetworkLocal Area Network
Local Area NetworkAfdan Rojabi
 
Evolusi dan kinerja komputer
Evolusi dan kinerja komputerEvolusi dan kinerja komputer
Evolusi dan kinerja komputerAnzhor Muhajir
 
Organisasi Komputer- representasi informasi
Organisasi Komputer- representasi informasiOrganisasi Komputer- representasi informasi
Organisasi Komputer- representasi informasidaru2501
 
Jenis dan proses interupsi
Jenis dan proses interupsiJenis dan proses interupsi
Jenis dan proses interupsilaurensius08
 

What's hot (20)

Pertemuan 10 memory
Pertemuan 10 memoryPertemuan 10 memory
Pertemuan 10 memory
 
Sistem Komputer Kelas 8
Sistem Komputer Kelas 8Sistem Komputer Kelas 8
Sistem Komputer Kelas 8
 
Tik bab 4 - Sistem Komputer
Tik bab 4 - Sistem Komputer Tik bab 4 - Sistem Komputer
Tik bab 4 - Sistem Komputer
 
Hirarki memori
Hirarki memoriHirarki memori
Hirarki memori
 
Bab 1 pengantar komputer
Bab 1 pengantar komputerBab 1 pengantar komputer
Bab 1 pengantar komputer
 
Pertemuan 11-aritmatika
Pertemuan 11-aritmatikaPertemuan 11-aritmatika
Pertemuan 11-aritmatika
 
Sistem Pendukung Keputusan
Sistem Pendukung KeputusanSistem Pendukung Keputusan
Sistem Pendukung Keputusan
 
aritmatika komputer
aritmatika komputeraritmatika komputer
aritmatika komputer
 
Mode Pengalamatan & Permasalahan Desain Pengalamatan
Mode Pengalamatan & Permasalahan Desain PengalamatanMode Pengalamatan & Permasalahan Desain Pengalamatan
Mode Pengalamatan & Permasalahan Desain Pengalamatan
 
Tugas makalah komunikasi data
Tugas makalah komunikasi dataTugas makalah komunikasi data
Tugas makalah komunikasi data
 
Makalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
Makalah Peranan Semaphore Sistem Operasi - Universitas WidyatamaMakalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
Makalah Peranan Semaphore Sistem Operasi - Universitas Widyatama
 
Rangkuman buku informatika bab 4
Rangkuman buku informatika bab 4Rangkuman buku informatika bab 4
Rangkuman buku informatika bab 4
 
UNIT CONTROL Tgs.ppt
 UNIT CONTROL  Tgs.ppt UNIT CONTROL  Tgs.ppt
UNIT CONTROL Tgs.ppt
 
Ch 04 (Siklus Instruksi dan Interrupt)
Ch 04 (Siklus Instruksi dan Interrupt)Ch 04 (Siklus Instruksi dan Interrupt)
Ch 04 (Siklus Instruksi dan Interrupt)
 
Local Area Network
Local Area NetworkLocal Area Network
Local Area Network
 
Perangkat Peripheral Komputer
Perangkat Peripheral KomputerPerangkat Peripheral Komputer
Perangkat Peripheral Komputer
 
Evolusi dan kinerja komputer
Evolusi dan kinerja komputerEvolusi dan kinerja komputer
Evolusi dan kinerja komputer
 
Organisasi Komputer- representasi informasi
Organisasi Komputer- representasi informasiOrganisasi Komputer- representasi informasi
Organisasi Komputer- representasi informasi
 
Struktur cpu
Struktur cpu Struktur cpu
Struktur cpu
 
Jenis dan proses interupsi
Jenis dan proses interupsiJenis dan proses interupsi
Jenis dan proses interupsi
 

Similar to Pipeline Komputer

Nurrohmah - Sinkronisasi Proses
Nurrohmah - Sinkronisasi ProsesNurrohmah - Sinkronisasi Proses
Nurrohmah - Sinkronisasi Prosesbelajarkomputer
 
Pekerjaan rumah bab3
Pekerjaan rumah bab3Pekerjaan rumah bab3
Pekerjaan rumah bab3Daudi Lazarus
 
Novita Duri - Poses - proses Sistem Operasi
Novita Duri - Poses - proses Sistem OperasiNovita Duri - Poses - proses Sistem Operasi
Novita Duri - Poses - proses Sistem Operasibelajarkomputer
 
Tipe dan format instruksi 1
Tipe dan format instruksi 1Tipe dan format instruksi 1
Tipe dan format instruksi 1Rosyid Ridlo
 
Muhammad Arifin - Proses pada Sistem Operasi
Muhammad Arifin - Proses pada Sistem OperasiMuhammad Arifin - Proses pada Sistem Operasi
Muhammad Arifin - Proses pada Sistem Operasibelajarkomputer
 
Pertemuan 12-pipelining1
Pertemuan 12-pipelining1Pertemuan 12-pipelining1
Pertemuan 12-pipelining1France Rhezhek
 
42519051 Bab V Penjadwalan CPU
42519051 Bab V Penjadwalan CPU 42519051 Bab V Penjadwalan CPU
42519051 Bab V Penjadwalan CPU AbdulRahman1543
 
Pertemuan 9 pipelining
Pertemuan 9 pipeliningPertemuan 9 pipelining
Pertemuan 9 pipeliningjumiathyasiz
 
Pertemuan 13-prosessor-super-skalar1
Pertemuan 13-prosessor-super-skalar1Pertemuan 13-prosessor-super-skalar1
Pertemuan 13-prosessor-super-skalar1France Rhezhek
 
Penjadwalan-Proses.ppt
Penjadwalan-Proses.pptPenjadwalan-Proses.ppt
Penjadwalan-Proses.pptMuhamadMuslih7
 
Pertemuan 8 unit pengolahan dasar
Pertemuan 8 unit pengolahan dasarPertemuan 8 unit pengolahan dasar
Pertemuan 8 unit pengolahan dasarjumiathyasiz
 
Diktat penuntun praktikum fortran
Diktat penuntun praktikum fortranDiktat penuntun praktikum fortran
Diktat penuntun praktikum fortranradikaljakas
 

Similar to Pipeline Komputer (20)

tugas kelompok
tugas kelompoktugas kelompok
tugas kelompok
 
Minggu ketiga
Minggu ketigaMinggu ketiga
Minggu ketiga
 
ZAMZAM SAPUTRA.pdf
ZAMZAM SAPUTRA.pdfZAMZAM SAPUTRA.pdf
ZAMZAM SAPUTRA.pdf
 
Arkom6
Arkom6Arkom6
Arkom6
 
Nurrohmah - Sinkronisasi Proses
Nurrohmah - Sinkronisasi ProsesNurrohmah - Sinkronisasi Proses
Nurrohmah - Sinkronisasi Proses
 
Pekerjaan rumah bab3
Pekerjaan rumah bab3Pekerjaan rumah bab3
Pekerjaan rumah bab3
 
Novita Duri - Poses - proses Sistem Operasi
Novita Duri - Poses - proses Sistem OperasiNovita Duri - Poses - proses Sistem Operasi
Novita Duri - Poses - proses Sistem Operasi
 
tif306 M4 kls.krywn
tif306 M4 kls.krywntif306 M4 kls.krywn
tif306 M4 kls.krywn
 
Bab xxiii
Bab xxiiiBab xxiii
Bab xxiii
 
Tipe dan format instruksi 1
Tipe dan format instruksi 1Tipe dan format instruksi 1
Tipe dan format instruksi 1
 
Muhammad Arifin - Proses pada Sistem Operasi
Muhammad Arifin - Proses pada Sistem OperasiMuhammad Arifin - Proses pada Sistem Operasi
Muhammad Arifin - Proses pada Sistem Operasi
 
Pertemuan 12-pipelining1
Pertemuan 12-pipelining1Pertemuan 12-pipelining1
Pertemuan 12-pipelining1
 
42519051 Bab V Penjadwalan CPU
42519051 Bab V Penjadwalan CPU 42519051 Bab V Penjadwalan CPU
42519051 Bab V Penjadwalan CPU
 
Pertemuan 9 pipelining
Pertemuan 9 pipeliningPertemuan 9 pipelining
Pertemuan 9 pipelining
 
Pert.11 pipelining
Pert.11 pipeliningPert.11 pipelining
Pert.11 pipelining
 
Pertemuan 13-prosessor-super-skalar1
Pertemuan 13-prosessor-super-skalar1Pertemuan 13-prosessor-super-skalar1
Pertemuan 13-prosessor-super-skalar1
 
Penjadwalan-Proses.ppt
Penjadwalan-Proses.pptPenjadwalan-Proses.ppt
Penjadwalan-Proses.ppt
 
Pertemuan 8 unit pengolahan dasar
Pertemuan 8 unit pengolahan dasarPertemuan 8 unit pengolahan dasar
Pertemuan 8 unit pengolahan dasar
 
Diktat penuntun praktikum fortran
Diktat penuntun praktikum fortranDiktat penuntun praktikum fortran
Diktat penuntun praktikum fortran
 
Bab3
Bab3Bab3
Bab3
 

Pipeline Komputer

  • 1. Pipeline Paper Organisasi Komputer Kelompok 3 : 1. Asep Wahyudi Zein ( 1111600084 ) 2. Dian Parikesit ( 1111600092 ) 3. Hasto Gesang W ( 1111600100 ) Magister Komputer - Universitas Budi Luhur 2011
  • 2. DAFTAR ISI 1. Pengertian Pipeline..........................................................................................2 2. Instruksi Pipeline ............................................................................................4 3. Permasalahan di (dalam) Instruksi Pipelining ...............................................11 4. Implementasi Pipeline ...................................................................................17 5. Beberapa Solusi Pipeline ...............................................................................22 6. Keuntungan dan kerugian pipeline ................................................................32 7. Daftar Pustaka ...............................................................................................34 Pipeline Computer Page 2
  • 3. 1. Pengertian Pipeline Pipelining 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 sama-sama 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
  • 4. 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  Flyn’s 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
  • 5. Contoh pengerjaan instruksi tanpa pipeline t = ADD AX,AX ADD BX,CX 1 2 3 4 5 6 7 8 9 10 IF DE IF DE EX IF DE IF DE EX Disini instruksi baru akan dijemput jika instruksi sebelumnya telah selesai dilaksanakan. t = ADD AX,AX ADD BX,CX ADD DX,DX pipeline 1 2 3 4 5 6 7 8 9 10 IF DE IF DE EX IF DE IF DE EX IF DE IF DE EX Contoh pengerjaan instruksi dengan 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 penjumlahan Pipeline Computer Page 5
  • 6. 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 pipeline Pipeline Computer Page 6
  • 7. Gambar 5 Diagram Ruang-Waktu Alternatif Diagram Ruang-Waktu Pipeline Tipe 2 Gambar 6 Pemrosesan pipeline 10 elemen data Pipeline Computer Page 7
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 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 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
  • 13. 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
  • 14. 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 bentuk right_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
  • 15. 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
  • 16. 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 <= sqrt_n; i++)/* for each number */ if (prime[i] == 1) /* identified as prime */ for (j = i + i; j < n; j = j + i)/*strike multiples */ prime[j] = 0; /* includes already done */ Loop sederhana mengakses array untuk mencari bilangan prima. Kode Sekuensial Waktu Sekuensial Jumlah iterasi sangat tergantung dari bilangan prima tersebut. Ada [n/2-1] kelipatan dua, [n/3-1] kelipatan tiga, dan seterusnya. Sehingga total waktu sekuensial yang dibutuhkan: Dengan asumsi komputasi pada tiap iterasi sam dengan satu langkah komputasional. Kompleksitas waktu sekuensial adalah O(n2 ). Implementasi Pipeline Gambar 5.17 Pipeline untuk bilangan prima Pipeline Computer Page 16
  • 17. Kode untuk proses, Pi , berdasarkan atas recv(&x, P i-1 ); /* repeat following for each number */ recv(&number, P i-1 ); if ((number % x) != 0) send(&number, P i+1 ); Setiap proses tidak akan menerima jumlah angka yang sama dan tidak diketahui sebelumnya. Menggunakan message “terminator, yang dikirim pada akhir urutan. recv(&x, P i-1 ); for (i = 0; i < n; i++) { recv(&number, P i-1 ); if (number == terminator) break; if (number % x) != 0) send(&number, P i+1 ); } Menyelesaikan Sistem Persamaan Linier Kasus Khusus Contoh tipe 3 – proses dapat melanjutkan pekerjaan lain setelah mem-passing informasi Untuk menyelesaikan persamaan linier dalam bentuk upper triangular: Dimana a dan b adalah konstanta dan x adalah yang akan dicari Pipeline Computer Page 17
  • 18. Subtitusi Balik Pertama, x0 dapat dilihat dari persamaan terakhir Nilai untuk x0 disubtitusi ke persamaan berikutnya untuk mendapatkan x1 Nilai x0 dan x1 disubtitusi ke persamaan berikutnya untuk mendapatkan x2: Begitu seterusnya sampai seluruhnya diketahui Pipeline Computer Page 18
  • 28. 5. Beberapa Solusi Strategi pemecahan masalah diatas adalah sebagai berikut :  VARIASI PEMILIHAN WAKTU (TIMING VARIATIONS) Untuk memaksimalkan kecepatan, untuk menyeragam, tahap pertama yang harus dilakukan adalah mekanisme waktu yang diperlukan. Sebuah metode sinkron dapat digunakan,jika tahapan telah dianggap lengkap dari sejumlah tertentu siklus waktu. Namun, teknik asynchronous secara umum lebih efisien. Bit atau garis sinyal dilewatkan maju ke tahap berikutnya menunjukkan data Pipeline Computer Page 28
  • 29. sudah valid. Sebuah sinyal juga harus lulus kembali dari tahap berikutnya ketika data telah diterima. Dalam semua kasus harus ada sebuah penyangga antar tahap untuk menyimpan data, kadang-kadang penyangga ini diperluas ke memori yang dapat menyimpan beberapa item data. Setiap tahap harus berhati-hati untuk tidak menerima input data sampai berlaku, dan tidak untuk menghasilkan data output sampai ada ruang dalam penyangga (buffer).  DATA BERBAHAYA (DATA HAZARDS) Untuk melindungi dari data yang berbahaya, perlu untuk menyadari setiap tahap yang digunakan oleh tahap pipelining yang lebih jauh . Jenis penggunaan juga harus diketahui, dua pembacaan yang terurut tidak boleh bertentangan dan tidak boleh menyebabkan perlambatan pada pipeline. Namun akan ada kemungkinan konflik jika terjadi penulisan. Pipeline biasanya dilengkapi dengan small associative check memory yang dapat menyimpan alamat dan jenis operasi (read atau write) untuk setiap instruksi yang ada di pipeline. Konsep “alamat(address)” harus diperluas untuk mengidentifikasi register. Setiap instruksi hanya dapat mempengaruhi sejumlah kecil dari operand, tapi efek yang tidak langsung addressing tidak boleh diabaikan. Ketika instruksi bersiap memasuki pipa, alamat operan telah disimpan.Jika ada konflik, instruksi (dan yang di belakangnya) harus menunggu. Ketika ada konflik, instruksi memasuki pipa dan alamat operan disimpan dalam memori cek. Ketika instruksi selesai, alamat ini akan dihapus. memori harus bisa untuk menangani proses pencarian berkecepatan tinggi yangdiperlukan.  PERCABANGAN (BRANCHING) Masalah dalam percabangan adalah pipelining diperlambat oleh instruksi karena kita tidak tahu cabang yang mana yang harus kita ikuti. Dengan tidak adanya bantuan spesial dalam masalah ini, perlu menunda pemrosesan instruksi selanjutnya sampai tujuan percabangan diselesaikan. Karena cabang sangat sering, penundaan ini bersifat tidak dapat diterima. Salah satu solusi yang banyak digunakan, terutama di RISC, adalah menunda percabangan. Dalam metode ini, rangkaian instruksi ini dirangkai sedemikian rupa, sehingga setelah suatuinstruksi, instruksi berikutnya bisa selalu di ekskusi, dan kemudian cabang di hapus. Dengan begitu tiap-tiap cabang harus diikuti oleh satu instruksi yang secara logika mendahuluinya dan diharapkan untuk dieksekusi dalam semua kasus. Hal ini akan memberikan ruang bernafas (istirahat) bagi pipeline. Jika perlu, instruksi ini bisa merupakan suatu no-op, tapi, seringnya penggunaan no-op akan merusak fungsi kecepatan. Penggunaan teknik ini memerlukan metode pengkodean yang membingungkan bagi progammer, tetapi tidak terlalu sulit bagi generator kode compiler. Pipeline Computer Page 29
  • 30. Kebanyakan teknik lain menggunakan ekskusi spekulatif, di mana instruksi yang diproses yang tidak dikenal dengan pasti, dianggap sebagai benar. Hal ini harus dihindari, harus dibuang dan tidak di simpan. Solusi yang biasa digunakan adalah dengan mengikuti cabang yang jelas, yaitu instruksi sekuensial berikutnya, berhati-hati untuk tidak melakukan tindakan yang tidak bisa dirubah. Operan mungkin diambil dan di proses, tetapi tidak akan ada hasil sampai cabang di terjemahkan. Jika pilihan itu salah, dapat di tinggalkan dan cabang alternatif dapat di proses. Metode ini bekerja dengan cukup baik jika cabang jelas dan benar. Ketika coding menggunakan pipelined CPU, perawatan harus dilakukan untuk kode cabang (terutama transfer error) sehingga jalur luruslah yang biasanya diambil. Tentu saja, bercabang yang tidak di perlukan harus dihindari. Kemungkinan lain adalah untuk menyusun kembali program sehingga cabang ada lebih sedikit, misalnya dengan tidak mengikuti jenis loop tertentu. Ini dapat dilakukan dengan mengoptimalkan kompiler atau, dalam beberapa kasus, dengan perangkat keras itu sendiri. Sebuah strategi yang pada umumya di gunakan oleh banyak arsitektur saat ini beberapa jenis prediksi cabang. Hal ini mungkin berdasarkan informasi yang diberikan oleh kompilator atau pada statistik yang dikumpulkan oleh perangkat keras. Tujuaannya adalah membuat perkiraan terbaik apakah cabang tertentu akan diambil atau tidak, dan menggunakan perkiraan ini untuk melanjutkan pipelining. Solusi yang membutuhkan harga yang lebih, kadang-kadang digunakan untuk memisahkan pipeline dan memulai memproses kedua cabang. Gagasan ini mendapat perhatian baru dalam beberapa prosesor terbaru. Solusi Pipeline Gambar 5.18 Menyelesaikan set persamaan linier upper triangular menggunakan pipeline. Pipeline tahap pertama menghitung x0 dan di pass ke tahap kedua, yang menghitung x1 dari x0 dan mem-pass kedua x0 dan x1 ke tahap berikutnya, untuk menghitung x2 from x0 and x1 , dan seterusnya. Pipeline Computer Page 30
  • 31. Proses ke i (0 < i < n) menerima nilai x0 , x1 , x2 , …, xI-1 dan menghitung xidari persamaan : Kode Sekuensial Konstanta a i,j dan b k disimpan dalam array a[] dan b[], dan nilai untuk yang dicari disimpan dalam array, x[], kode sekuensialnya: x[0] = b[0]/a[0][0]; /* x[0] computed separately */ for (i = 1; i < n; i++) { /* for remaining unknowns */ sum = 0; for (j = 0; j < i; j++ sum = sum + a[i][j]*x[j]; x[i] = (b[i] - sum)/a[i][i]; } Kode Paralel Pseudocode proses P i (1 < i < n) dari satu versi pipeline adalah: for (j = 0; j < i; j++) { recv(&x[j], P i-1 ); send(&x[j], P i+1 ); } sum = 0; for (j = 0; j < i; j++) sum = sum + a[i][j]*x[j]; x[i] = (b[i] - sum)/a[i][i]; send(&x[i], P i+1 ); Ada komputasi tambahan yang dilakukan setelah menerima dan mengirim ulang nilai. Pipeline Computer Page 31
  • 32. Analisa Gambar 5.19 Pemrosesan Pipeline menggunakan Subtitusi Balik. Tidak dapat diasumsikan usaha komputasional tiap tahap sama Proses pertama, P0 , melakukan satu pembagian dan satu send(). Proses ke i (0 < i < n - 1) melakukan i recv()s, i send()s, i perkalian/penjumlahan, satu pembagian/pengurangan,dan akhirnya send(), total 2i + 1 waktu komunikasi dan 2i + 2 langkah komputasional diasumsikan bahwa, perkalian, penjumlahan, pembagian dan pengurangan tiap satu langkah. Proses terakhir, Pn-1 , melakukan n - 1 recv()s, n - 1 perkalian/penjumlahan dan satu pembagian/pengurangan, total n - 1 waktu komunikasi dan 2n - 1 langkah komputasional 6. Keuntungan dan Kerugian Pipelining tidak membantu dalam semua kasus. Ada beberapa kemungkinan kerugian. Pipa instruksi dikatakan sepenuhnya pipelined jika dapat menerima instruksi baru setiap clock cycle. Sebuah pipa yang tidak sepenuhnya pipelined telah menunggu siklus yang menunda kemajuan pipa. Keuntungan dari Pipelining: 1. Waktu siklus prosesor berkurang, sehingga meningkatkan tingkat instruksi dalam kebanyakan kasus( lebih cepat selesai). 2. Beberapa combinational sirkuit seperti penambah atau pengganda dapat dibuat lebih cepat dengan menambahkan lebih banyak sirkuit. Jika pipelining digunakan sebagai pengganti, hal itu dapat menghemat sirkuit & combinational yang lebih kompleks. Pipeline Computer Page 32
  • 33. 3. Pemrosesan dapat dilakukan lebih cepat, dikarenakan beberapa proses dilakukan secara bersamaan dalam satu waktu. Kekurangan Pipelining: 1. Pipelined prosesor menjalankan beberapa instruksi pada satu waktu. Jika ada beberapa cabang yang mengalami penundaan cabang (penundaan memproses data) dan akibatnya proses yang dilakukan cenderung lebih lama. 2. Instruksi latency di non-pipelined prosesor sedikit lebih rendah daripada dalam pipelined setara. Hal ini disebabkan oleh fakta bahwa intruksi ekstra harus ditambahkan ke jalur data dari prosesor pipeline. 3. Kinerja prosesor di pipeline jauh lebih sulit untuk meramalkan dan dapat bervariasi lebih luas di antara program yang berbeda. 4. Karena beberapa instruksi diproses secara bersamaan ada kemungkinan instruksi tersebut sama-sama memerlukan resource yang sama, sehingga diperlukan adanya pengaturan yang tepat agar proses tetap berjalan dengan benar. 5. Sedangkan ketergantungan terhadap data, bisa muncul, misalnya instruksi yang berurutan memerlukan data dari instruksi yang sebelumnya. 6. 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. 7. Kesulitan dalam Pipeline Untuk menerapkan prinsip multi-stage atau mulai saat ini kita namakan pipelining di prosesor, diperlukan organisasi prosesor khusus. Pada dasarnya, prosesor dipartisi menjadi sejumlah unit-unit kecil dengan fungsi spesifik. Setiap unit berperan untuk menyelesaikan sebagian dari instruksi-intruksi berikut : Instruction fetch, decode, operand address calculation, operand fetch, execute dan store result. Dalam proses di atas terkadang sering terjadi kendala/ konflik seperti:  Terjadinya pause (Pi), karena adanya data conflict dalam program tersebut  Terjadinya data error dikarenakan banyaknya proses yang dilakukan bersamaan  Terjadinya pengambilan data secara bersamaan, sehingga salah satu proses tertunda  Terjadinya penumpukan data di salah satu intruksi sehingga ada beberapa proses yg di tunda  Dengan terjadinya conflict tadi, speed-up yang diperoleh menjadi lebih kecil (lambat) dibandingkan dengan tanpa konflik. Pipeline Computer Page 33
  • 34. Daftar Pustaka Stalling William, 2010 “Computer Organization and Architecture : Designing Fpr Performance “ 8th edition. Prentice Hall http://elearning.gunadarma.ac.id/docmodul/organisasi_sistem_komputer/bab9-komputer_pipeline.pdf Pipeline Computer Page 34