Pipelining
Arsitektur
Disusun
Oleh :
PUTRI
MEILUKI
16101963
Prodi
:TI-KAB
Program
Studi Teknik Informatika
STMIK
STIKOM Indonesia
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.
Tidak ada komentar:
Posting Komentar