Anda di halaman 1dari 13

PIPELINE

PAPER ARSITEKTURAL KOMPUTER


Dosen Rachmat jaenal Abidin,MT.

Disusun Oleh :
1. ANDRI GUNAWAN - 1157050018

A. 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. Pada microprocessor
yang tidak menggunakan pipeline, satu instruksi dilakukan sampai selesai,
baru

instruksi

berikutnya

dapat

dilaksanakan.

Sedangkan

dalam

microprocessor 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 ini dapat diterapkan pada berbagai tingkatan dalam
system komputer. Bisa pada level yang tinggi, misalnya program aplikasi,
sampai pada tingkat yang rendah, seperti pada instruksi yang dijaankan oleh

microprocessor. 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.
B. Tahapan Instruksi Pipeline
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.
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

tersebut, komponen IF tidak bekerja. Dengan 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).
Contoh pengerjaan instruksi tanpa pipeline
t=

ADD AX,AX

IF

DE

IF

DE

EX

ADD BX,CX

10

IF

DE

IF

DE

EX

10

Disini instruksi baru akan dijemput jika instruksi sebelumnya telah


selesai dilaksanakan.
Contoh pengerjaan instruksi dengan pipeline
t=

ADD AX,AX

IF

DE

IF

DE

EX

IF

DE

IF

DE

EX

IF

DE

IF

DE

ADD BX,CX
ADD DX,DX

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 untuk 100 instruksi akan
dapat dikerjakan dalam 104T (CPI = 1,04). Pada kondisi ideal CPI akan
bernilai 1.
Teknik perancangan pipeline mendekomposisikan sebarisan proses ke
dalam sub-sub proses atau segmen. Setiap stadium melakukan fungsi khusus
dan menghasilkan suatu output yang dikehendaki dengan segera.
Setiap stadium akan memuat suatu input latch, atau disebut juga register
atau buffer, yang diikuti oleh satu sirkuit pemrosesan. Sinyal clock
dikoneksikan ke masing-masing input latch.

Teknik perancangan pipeline mendekomposisikan sebarisan proses ke dalam


sub-subproses atau segmen. Setiap stadium melakukan fungsi khusus dan
menghasilkan suatuoutput yang dikehendaki dengan segera.
Setiap stadium akan memuat suatu input latch, atau disebut juga register
atau buffer, yang diikuti oleh satu sirkuit pemrosesan. Sinyal clock
dikoneksikan ke masing-masing input latch.

C. Klasifikasi Pipeline
Pipeline dapat kita klasifikasikan menurut fungsi dan konfigurasinya.
Secarafungsional, pipeline dapat diklasifikasikan menjadi tiga kelompok
pokok : pipeliningaritmatika, instruksi, dan prosesor. Ramamoorthy dan Li
(1977) mengajukan tiga skemauntuk mengklasifikasikan pipeline menurut
konfigurasi dan strategi kendalinya : unifungsiatau multifungsi ; dan skalar
atau vector.
Klasifikasi Berdasarkan Fungsi

Pipelining Aritmatika
Proses segmentasi fungsi dari ALU dari sistem yang muncul dalam
kategori ini.

Pipelining Instruksi
Dalam suatu komputer non-pipeline, CPU bekerja melalui suatu siklus
yang berkesinambungan dari fetch-decode-eksekusi untuk semua
instruksinya. Proses fetchsuatu instruksi tidak akan dimulai sampai
eksekusi instruksi sebelumnya selesai.Untuk mem-pipeline fungsi ini,
instruksi-instruksi yang berdampingan di-fetch darimemori ketika instruksi
yang sebelumnya di-decode dan dijalankan. Proses pipelininginstruksi
instruction

look

ahead,

mem-fetch

instruksi

secara

berurutan.

Dengandemikian, jika suatu instruksi menyebabkan percabangan keluar


dari urutan itu maka pipe akan dikosongkan dari seluruh instruksi yang
telah di-fetch sebelumnya daninstruksi percabangan tersebut di-fetch.
Proses pipelining instruksi dikerjakan pada hampir semua komputer
berkemampuan tinggi.

Pipelining Prosesor
Sewaktu stage dari suatu pipeline, prosesor aktual dan latch-latch saling
berbagi memori di antara prosesor-prosesor tersebut, sehingga pipeline
tersebut disebut sebagai pipeline prosesor. Dalam pipeline ini, setiap
prosesor mempunyaisuatu tugas tertentu yang akan dijalankan pada
aliran data. Pipelining banyak prosesor(multiple prosesor) merupakan
konsep yang relatif baru dan belum umum.

Klasifikasi Berdasarkan Konfigurasi

Unifungsi atau multifungsi


Kemampuan suatu pipeline menjalankan hanya satu jenis pokok operasi
disebut sebagai pipeline unifungsi.
Misalnya, perkalian floating-point mensyaratkan pipeline agar juga
menjalankan operasi yang sama pada setiap kelompok input. Jika pipeline
dapat menjalankan fungsi-fungsi yang berbeda maka disebut sebagai
pipeline multifungsi. Fungsi-fungsi yang berbeda itu bisa dijalankan baik
pada waktu yang bersamaan ataupun berbeda, dengan menghubungkan
subkelompok-subkelompok stage yang berbeda dalam pipeline. Pipeline
disusun seperlunya sesuai dengan nilai input kendali tambahan.

Statis atau dinamis


Ketika instruksi-instruksi yang berjenis sama akan dijalankan secara
bersamaan waktunya, maka digunakan pipeline statis. Pipeline ini dapat
berupa pipeline fungsional maupun multifungsional tetapi mungkin
mengasumsikan hanya satu konfigurasi fungsional pada suatu waktu.
Suatu pipeline multifungsi statis dapat bekerja paling baik jika fungsi yang
akan dijalankan tidak sering berubah. Antara perubahan, pipeline terlihat
sebagai pipeline unifungsi dan mengulangi operasi yang sama berulangulang. Sebelum mengganti fungsi tersebut, kelompok input terakhir dari
fungsi sebelumnya harus benar-benar telah melewati pipeline. Kemudian
pipeline dikonfigurasikan untuk fungsi yang baru dan input yang baru
boleh masuk ke dalampipe. Dengan pipeline dinamis, beberapa
konfigurasi fungsional dapat muncul sekaligus. Hal ini berarti harus
digunakan sebuah pipeline multifungsional. Dalam kasus ini, konfigurasi
pipe berubah-ubah secara konstan, tergantung pada data manauntuk
fungsi yang mana pada stage yang mana untuk setiap penangguhan
clock. Pipeline dinamis memerlukan kendali yang sangat kompleks dan
mekanisme perangkat untuk mengkonfigurasikan pipe bagi input-input
tertentu. Untuk alasan ini, pipelining aktual tidak berada di bawah kendali
programmer melainkan dibangun kedalam arsitektur mesin tersebut.

Skalar atau vektor


Suatu pipeline skalar memproses serangkaian operasi skalar pada operand
skalar. Salah satu contoh berupa operasi ADD dalam loop FOR. Pipeline
vector dirancang untuk memproses instruksi vektor dengan menggunakan
operand vektor.Komputer yang mempunyai instruksi-instruksi vektor
disebut sebagai prosesor vektor

D. Permasalahan Di Dalam Instruksi Pipeline


1. Variasi waktu
Tidak semua tahapan memakan waktu yang sama. Artinya, kecepatan
instruksi pipelining ditentukan oleh tahap yang paling lambat.
2. Data Berbahaya ( Data Hazards)
Ketika beberapa instruksi dieksekusi secara parsial, masalah akan timbul
jika instruksi tersebut memiliki referensi data yang sama. Kita harus
memastikan bahwa instruksi selanjutnya tidak berusaha mengakses data
lebih cepat dari seharusnya.
3. Percabangan (Branch)
Masalah dalam percabangan adalah pipelining diperlambat oleh instruksi
karena kita tidak tahu cabang mana yang harus kita ikuti.
4. Jeda (Interupsi)
Interupsi harus berperan antar instruksi. Yaitu, ketika satu instruksi telah
selesai daninstruksi berikutnya belum dimulai. Dengan pipelining, instruksi
berikutnya biasanya dimulai sebelum instruksi yang sekarang telah selesai

E. Solusi Permasalahan Pipeline


1. Variasi Pemilihan Waktu (Timing Variations)

Metode sinkron = jika tahapan telah dianggap lengkap dari sejumlah siklus
waktu tertentu.Metode asinkron = lebih efisien, karena bit atau garis
sinyal harus dilewatkan maju ketahap berikutnya yang artinya data sudah
valid. Ketika data telah diterima, sinyal jugaharus melewati tahapan
berikunya.
2. Data Berbahaya (Data Hazards)
Pipeline biasanya dilengkapi dengan small associative check memory yang
dapat menyimpan alamat dan jenis operasi. Ketika ada konflik, instruksi
memasuki pipa dan alamat operand disimpan dalam memory check.
Ketika selesai, alamat ini akan dihapus.
3. Percabangan (Branching)
Menunda Percabangan
Menyusun kembali program sehingga percabangan menjadi lebih
sedikit.
Memprediksi jenis cabang.
F. 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.
1. Keuntungan dari Pipelining yaitu :

Waktu siklus prosesor berkurang, sehingga meningkatkan tingkat


instruksi dalam kebanyakan kasus ( lebih cepat selesai).

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.

Pemrosesan dapat dilakukan lebih cepat, dikarenakan beberapa


proses dilakukan secara bersamaan dalam satu waktu.

2. Kekurangan Pipelining yaitu :

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.

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.

Kinerja prosesor di pipeline jauh lebih sulit untuk meramalkan dan


dapat bervariasi lebih luas di antara program yang berbeda.

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.

G. 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/conflict 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 conclict.

H. Kesimpulan :
Pipeline adalah satu set dari elemen pemrosesan data dihubungkan
secara seri, sehingga hasil keluaran dari satu elemen adalah masukkan bagi

elemen berikutnya. Elemen - elemen dari sebuah pipeline sering dijalankan


secara paralel.
Contoh pipeline dalam komputer adalah :
1.

Pipeline instruksi.
Biasanya digunakan di unit pemroses sentral agar istruksi - instruksi
dapat dijalankan dalam satu waktu dalam satu sirkuit digital. Biasanya
sirkuitnya dibagi dalam beberapa tahap, termasuk decode instruksi,
aritmatika dan tahap - tahap penjemputan data dari register, dimana
setiap tahap melakukan satu instruksi dalam satu waktu.

2.

Pipeline grafis
Sering ditemukan dalam sebagian besar unit pemrosesan grafis, yang
terdiri dari berbagai unit aritmatik atau unit pemroses sentral lengkap,
yang menerapkan berbagai macam tahap dari operasi render yang
umum (seperti proyeksi perspektif, kalkulasi warna dan pencahayaan,
primitif gambar, dan sebagainya).

3.

Pipeline perangkat lunak.


Dimana keluaran dari suatu program langsung dipakai oleh program lain
sebagai masukkan sehingga dapat langsung diproses.
Pipeline adalah konsep alami di kehidupan sehari-hari. Umpamakan

sebuah perakitan mobil, asumsikan beberapa langkah di jalur perakitan


adalah untuk memasang mesin, memasang kap, dan memasang roda (dalam
urutan tersebut, dengan berbagai macam kemungkinan langkah - langkah
lain diantara :
Sebuah mobil di jalur perakitan hanya satu dari tiga langkah diatas dapat
selesai dalam suatu waktu. Setelah sebuah mobil telah terpasang mesinnya,
mobil tersebut pindah ke pemasangan kap, dan mobil kedua sedang dalam
tahap pemasangan mesin. Setelah mobil pertama selesai memasang kap,
mobil kedua dalam tahap pemasangan kap, mobil pertama dalam tahap

pemasangan roda, dan mobil ketiga yang baru masuk dalam tahap
pemasangan mesin. Dan begitu seterusnya.
Jika pemasangan mesin butuh 20 menit, pemasangan kap butuh 5 menit
dan pemasangan roda butuh 10 menit, maka menyelesaikan ketiga mobil
tersebut jika satu mobil dirakit dalam satu waktu akan membutuhkan waktu
105 menit. Sedangkan jika menggunakan jalur perakitan seperti yang
disebutkan diatas, waktu yang diperlukan untuk menyelesaikan ketiganya
hanya 75 menit.

Referensi :
1.

http://www.cs.ui.ac.id/~iki20210/

2.

http://blog.ub.ac.id/milan/2010/09/26/pipelining/

3.

http://id.wikipedia.org/wiki/Pipeline

Anda mungkin juga menyukai