Pipeline adalah teknik untuk memecah proses eksekusi menjadi beberapa sub-proses yang akan
dieksekusi dalam segmen khusus dan dalam waktu yang bersamaan sehingga akan
menghemat waktu pemrosesan.
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.
Apabila dianalogikan, konsep pipeline mirip dengan alur
perakitan mobil, dimana saat bagian body memasang perlengkapan body pada mobil
pertama maka pada bagian pengecatan akan menunggu mobil pertama. Saat mobil pertama masuk ke pengecatan, maka bagian
body akan melanjutkan dengan mobil kedua tanpa menunggu mobil pertama selesai
dirakit dan selanjutnya ke tahap mesin dan yang lainnya dengan konsep yang sama.
Tiga kesulitan yang sering dihadapi ketika menggunakan
teknik pipeline ini adalah :
1.
Terjadinya penggunaan resource yang bersamaan
2.
Pengaturan Jump ke suatu lokasi memori.
3.
Sebagai perbandingan dapat melihat grafik
berikut
1.
Mengambil instruksi pertama dan menjalankannya
2.
Ketika tahap 1 selesai maka lanjut ke tahap 2
3.
Ketika tahap 2 dijalankan, maka tahap 1
dijalankan menggunakan resource memory yang tersedia
4.
Dan menjalankan tahap selanjutnya sampai resource
memory digunakan secara maksimal
Contoh pengerjaan instruksi dengan pipeline
Untuk menghitung efisiensi dalam sebuah pipeline dapat
digunakan rumus sebagai berikut
Non-pipeline : n.k.T
Pipeline : nT + (k-1).T
Peningkatan kecepatan = n.k / (k +
n - 1), dimana n >> 1
Masalah yang muncul dalam system pipeline
Dalam pipeline ada situasi dimana ada instruksi yang gagal
dilaksanakan, sehingga instruksi berikutnya tidak bisa dilaksanakan, situasi
ini disebut Hazards
Ada 3 jenis Hazards
1.
Structural Hazards muncul dari konflik resource sistem yaitu
ketika hardware tidak dapat mensuport semua kemungkinan kombinasi pelaksanaan
instruksi
2.
Data Hazards muncul ketika data untuk
suatu instruksi tergantung pada hasil instruksi sebelumnya
3.
Control Hazards muncul pada saat pelaksanaan instruksi yang
mengubah PC
Keuntungan dari Pipeline
1.Waktu siklus
prosesor berkurang, sehingga meningkatkan tingkat instruksi-isu dalam
kebanyakan kasus.
2.Beberapa combinational sirkuit seperti penambah atau
pengganda dapat dibuat lebih cepat dengan menambahkan lebih banyak sirkuit.
3.Pemrosesan dapat dilakukan lebih cepat, dikarenakan
beberapa proses dilakukan secara bersamaan dalam satu waktu. Jika pipeline digunakan sebagai pengganti, hal itu
dapat menghemat sirkuit vs combinational yang lebih kompleks sirkuit.
Kerugian dari Pipeline
1.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.
2.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.
3.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.
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.
0 comments:
Post a Comment
please write your comment