PIPELINE
ARSITEKTUR
DAN ORGANISASI KOMPUTER
Dosen
: Ardy Mulya Iswardany S.Kom
OLEH
:
DWIYANTO BASKORO
120101073
SIA3
SEKOLAH
TINGGI MANAJEMEN DAN KOMPUTER
STMIK
DUTA BANGSA SURAKARTA
2014
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 1 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 =
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
ADD AX,AX
|
IF
|
DE
|
IF
|
DE
|
EX
|
|||||
ADD BX,CX
|
IF
|
DE
|
IF
|
DE
|
EX
|
Disini instruksi baru akan dijemput jika instruksi sebelumnya telah
selesai dilaksanakan.
Contoh pengerjaan instruksi dengan pipeline
t =
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
ADD AX,AX
|
IF
|
DE
|
IF
|
DE
|
EX
|
|||||
ADD BX,CX
|
IF
|
DE
|
IF
|
DE
|
EX
|
|||||
ADD DX,DX
|
IF
|
DE
|
IF
|
DE
|
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 berulang-ulang. 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.
- 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.
- 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.
Daftar Pustaka
1.
Stalling, Williams. 1998. Organisasi Dan Arsitektur
2.
Akbar Muhammad. 2012.
Pipeline Instruksi, Jurusan
Magister
Ilmu Komputer, Universitas Budi Luhur, Jakarta.
2.
Materi Arsitektur Komputer terlengkap, dapat dijumpai disini http://mycomputerarchitecture.blogspot.co.id/
BalasHapus