Selamat
siang semua , terasa sangat panas ya siang ini, di akhir tahun tetep semangat
ya
Mungkin
beberapa pembaca sedang liburan , atau masih sedang ujian.
Kali
Ini saya akan membahas sebuah bidang komputer dan programan yaitu Pipeline
Berikut ini ada beberapa ilustrasi agar memudahkan
pembaca untuk memahami tentang pipeline, jadi misalkan , sebuah perakitan mobil, Kita anggap saja beberapa langkah di jalur
perakitan pabrik mobil untuk memasang mesin, memasang kap, dan memasang roda (dalam
urutan tersebut, dengan berbagai macam kemungkinan langkah - langkah lain di
antara langkah - langkah tersebut).
Sebuah
mobil di jalur perakitan hanya satu dari tiga langkah di atas 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 seumpama 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 di atas, waktu yang
diperlukan untuk menyelesaikan ketiganya hanya 75 menit.
Jadi , pada pengertian yang sebenernya pipeline adalah suatu teknik implementasi
dengan mana berbagai instruksi dapat dilaksanakan secara tumpang tindih
(overlapped; hal ini mengambil keuntungan paralelisme yang ada di antara
tindakan yang diperlukan untuk mengeksekusi suatu instruksi.
Teknik pipeline ini dapat diterapkan pada berbagai
tingkatan dalam sistem komputer. 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 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 mikroprosesor akan didapatkan peningkatan kinerja Mikroprosesor.
Hal ini terjadi karena beberapa instruksi dapat dilakukan secara parallel dalam
waktu yang bersamaan. diharapkan akan didapatkan peningkatan
sebesar K kali dibandingkan dengan mikroprosesor yang tidak
menggunakan Pipeline ,
apabila tahapan yang ada dalam satu kali pemrosesan instruksi adalah K tahap.
Karena beberapa instruksi
diproses secara bersamaan banyak kemungkinan instruksi tersebut sama-sama
memerlukan sumber yang sama, sehingga diperlukan adanya pengaturan yang tepat
agar proses tetap berjalan dengan benar dan lancar. 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 mikroprosesor, dapat dikatakan sebuah arsitektur
khusus. Ada perbedaan khusus antara model mikroprosesor yang tidak
menggunakan arsitektur Pipeline dengan mikroprosesor yang menerapkan teknik ini.
Pada mikroprosesor yang
tidak menggunakan Pipeline , satu
instruksi dilakukan sampai selesai, baru instruksi berikutnya dapat
dilaksanakan. Sedangkan dalam mikroprosesor 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. Misalnya sebuah mikroprosesor 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 pun seterusnya, ketika instruksi pertama masuk ke langkah 3, instruksi
kedua masuk ke langkah 2 dan instruksi ketiga masuk ke langkah 1.
Teknik Pipeline ini
menyebabkan ada sejumlah hal yang harus diperhatikan sehingga ketika diterapkan
dapat berjalan dengan baik.
Tiga kesulitan yang sering dihadapi ketika menggunakan
teknik Pipeline ini
adalah :
- Terjadinya penggunaan sumber yang bersamaan
- Ketergantungan terhadap data, dan Pengaturan Jump ke suatu lokasi memori.
Tahapan
dan cara kerja pipeline
- Mengambil instruksi dan membuffferkannya
- Ketika tahapan 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
Disini
saya tidak menjelaskan bagaimana cara menghitung teknik pipeline pada suatu
data , namun saya juga akan membahas kelebihan dan kekurangan pipeline :
Keuntungan dari Pipeline
- Waktu siklus prosesor berkurang, sehingga
meningkatkan tingkat instruksi-isu dalam kebanyakan kasus.
- Beberapa combinational sirkuit seperti penambah
atau pengganda dapat dibuat lebih cepat dengan menambahkan lebih banyak
sirkuit.
3. Pemrosesan dapat dilakukan lebih cepat, dikarenakan proses dilakukan secara bersamaan dalam satu waktu.
Jika pipeline digunakan
sebagai pengganti, hal itu dapat menghemat sirkuit yang lebih
kompleks.
Kerugian dari Pipeline
- Prossesor non-pipeline hanya menjalankan
satu instruksi pada satu waktu. Hal ini untuk mencegah penundaan cabang
(yang berlaku, setiap cabang tertunda) dan masalah dengan serial instruksi
dieksekusi secara bersamaan. Akibatnya desain lebih sederhana dan lebih
murah untuk diproduksi.
- Instruksi latency di prossesor non-pipeline
sedikit lebih rendah daripada dalam pipeline setara. Hal ini disebabkan
oleh fakta bahwa sandal jepit ekstra harus ditambahkan ke jalur data dari
prossesor pipeline.
- Prossesor non-pipeline akan memiliki instruksi
bandwidth yang stabil. Kinerja prossesor yang 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.
Komentar
Posting Komentar